Die fundamentale Symbolsprache
Wir möchten nun die Symbolsprache formaler definieren. Auf der Grundlage der algebraischen Textdefinition führen wir eine formale Sprache ein, mit der Texte spezifiziert werden können.
Die Elemente der Symbolsprache sind: Satz, Segment, Vorsilbe und Bezeichner.
Grundlage
Satz
In der Symbolsprache spezifiziert ein Satz genau eine Texteinheit. Ein Satz besteht aus einem oder mehreren Segmenten in einer Reihe, die mit einem Semikolon beendet wird.
s1 s2 ... sN;
Jedes Segment besteht aus einer Vorsilbe und optional einem Bezeichner.
Vorsilbe
Die primitiven Vorsilben der Symbolsprache sind *
für Referenzart, >
für Referenzziel und =
für die Namensgebung.
Die Vorsilbe =
verknüpft den Bezeichner mit der Texteinheit, die der aktuelle Satz spezifiziert, als deren Namen.
Bezeichner
Ein Bezeichner ist eine Zeichenfolge bestehend aus einem oder mehreren Worten aus alphabetischen oder numerischen Zeichen. Ein Bezeichner identifiziert jeweils eine Texteinheit, das heißt, in der Spezifikation einer Textinstanz überall, wo derselbe Bezeichner erscheint, ist dieselbe Texteinheit gemeint.
Segment
Die Vorsilben *
und >
leiten einen Bestandteil einer Referenz ein. Wenn in einem Segment nach einer von diesen Vorsilben ein Bezeichner angegeben wird, so wird die genannte Texteinheit als Referenzart (*
) bzw. Referenzziel (>
) erfasst. Wenn nach der Vorsilbe kein Bezeichner angegeben wird, so wird die spezifiziert werdende Texteinheit selbst als Referenzart bzw. Referenzziel erfasst.
Innerhalb eines Satzes kann es kein, eins oder mehrere Benennungsegmente geben und an beliebiger Position. Die Segmente *
und >
müssen paarweise auftreten und es muss mindestens ein Paar geben.
Beispiel. Der folgende Satz besteht aus drei Segmenten:
=t *Teil von >G;
Das erste Segment bennent die spezifizierte Texteinheit als „t”. Das zweite und das dritte Segment spezifizieren, dass die Texteinheit „t” sich auf die Texteinheit „G” bezieht, und zwar unter der Referenzart „Teil von”. Der Satz führt also eine Texteinheit mit dem Namen „t” ein und besagt, „t” sei ein Bestandteil von „G”.
Semantik
Ausdrücke in der Symbolsprache können als Spezifikation von Text gedeutet werden. Die Semantik der Symbolsprache ist zu diesem Zweck die folgende.
Jeder Satz spezifziert eine Texteinheit, so wie diese definiert wird, indem er all ihre Referenzen angibt. Die Gesamtheit aller Texteinheiten, die durch Referenzen direkt oder durch transitiven Abschluss verknüpft sind, bilden eine Textinstanz (auch einen Text genannt).
Anmerkung. Die Bezeichner, die in der Symbolsprache eingesetzt werden, um Texteinheiten zu benennen, gehören nicht zum spezifizierten Text. Sie gehören zur sprachlichen Schnittstelle, aber nicht zum semantischen Inhalt.
Ausbau
Die oben beschriebene Symbolsprache ist vollständig in dem Sinne, dass damit jegliche Texte spezifiziert werden können. Man kann sie ausbauen, um den menschlichen Umgang mit den Ausdrücken zu erleichtern, indem man die Angabe von üblichen Referenzarten verkürzt und implizite Referenzziele unterstützt.
Vorsilben
Die Symbolsprache lässt sich einerseits ausbauen, indem man Vorsilben für feste Referenzarten definiert. Die Vorsilbe muss aus genau einem Sonderzeichen bestehen, also darf kein alphabetisches, numerisches oder Interpunktionzeichen sein.
Beispiel. Man definiert die Vorsilbe ^
als Referenzart Teil von
und schreibt:
=t ^G;
Auf dieser Weise wird ein Segmentpaar *Teil von >G
in einem einzigen Segment ^G
wiedergegeben.
Die Einführung von Vorsilben wird durch die Symbolsprache selbst nicht unterstützt und muss durch den Kontext geschehen.
Nebensätze: implizite Referenzziele
Die Symbolsprache lässt sich durch Nebensätze ausbauen, die implizite Referenzen darstellen. Dadurch gibt man als Referenzziel statt Bezeichner untergeordnete Nebensätze in geschweiften Klammern an.
Beispiel:
=t *Teil von >{*Typ a;};
Hier wird die übergeordnete Texteinheit nicht über einen Bezeichner identifiziert, sondern man spezifiziert diese wiederum ad hoc mit einem Nebensatz. Der gebaute Text ist derselbe, den die folgenden zwei Sätze zusammen genommen definieren:
=a1 *Typ a;
=t *Teil von >a1;
Werden mehere Sätze in einem Nebensatz aufgeführt, so wird jede von den spezifizierten Texteinheiten als eine separatene Referenz erfasst.
Beispiel. Beide Zeilen besagen dasselbe.
=e *ähnelt >{*Typ a; *Typ b;};
=e *ähnelt >{*Typ a;} *ähnelt >{*Typ b;};
Nebensätze können wiederum Nebensätze enthalten.
=t *Teil von >{*Typ >{*ähnelt >a;};};
Voreingestellte Vorsilben
Die Symbolsprache lässt sich durch implizite Vorsilben ausbauen, nämlich in jenen Stellen, in denen aufgrund der Syntax eine Vorsilbe vorkommen muss. Wenn an einer solchen Stelle keine Vorsilbe steht, sondern ein Bezeichner, lässt sich eindeutig eine voreingestellte Vorsilbe inferieren. Das ist genau an zwei Positionen der Fall: am Satzanfang und vor einem Nebensatz.
Man kann für Hauptsätze eine Vorsilbe voreinstellen. Fängt ein Satz ohne explizite Vorsilbe an, so wird diese angenommen.
Beispiel: Beide Sätze sind equivalent, im zweiten wird die Vorsilbe =
implizit angenommen.
=t *Teil von >G;
t *Teil von >G;
Man kann für Nebensätze eine Vorsilbe voreinstellen. Diese wird angenommen, wenn ein Segment mit einem Nebensatz ohne explizite Vorsilbe angegeben wird.
Beispiel: Die drei Sätze sind equivalent, im zweiten wird die Vorsilbe ≅
für *ähnelt
eingesetzt, im dritten wird ≅
implizit angenommen.
=e *ähnelt >{*Typ t;};
=e ≅{*Typ t;};
=e {*Typ t;};
Die Voreinstellungen für Haupt- und Nebensätze sind unabhängig voneinander. Vorsilben müssen durch den Kontext voreingestellt werden, da es in der Symbolsprache selbst keine Mittel dafür gibt.
Implementierte Symbolsprache
Die experimentelle Software Textengine stellt Mittel zum Lesen, Verarbeiten und Ausgeben von Ausdrücken in der Symbolsprache bereit. Allerdings ist die in der Textengine implementierte Symbolsprache nicht die fundamentale Symbolsprache im Allgemeinen, sondern in einer spezialisierten Fassung. Das ist auch die Variante der Symbolsprache, die in der hiesigen Untersuchung eingesetzt wird. Zur Disambiguierung nennen wir die eine die fundamentale, die andere die (in der Textengine) implementierte Symbolsprache. Mit der unspezifischen Rede von Symbolsprache ist (außer in diesem Kapitel) die implementierte Symbolsprache gemeint.
Formal gesehen entspricht die implementierte Symbolsprache der mit den folgenden Referenzarten ausgebauten fundamentalen Symbolsprache:
-
Rolle, aufgezeichnet mit dem Tildezeichen
~
-
Typ, aufgezeichnet mit dem Doppelpunkt
:
-
Übergeordnet, aufgezeichnet mit dem Caret-Zeichen
^
und sein reziprok Untergeordnet als implizites Referenzziel in Nebensätzen unter geschweiften Klammern{}
angenommen -
Gleichheit, aufgezeichnet mit dem Rautezeichen
#
Die Texte der implementierte Symbolsprache beschränken sich auf diese Referenzarten. Das wirkt sich durchgehend auf seine Semantik aus. Während die fundamentale Symbolsprache allein die Textstruktur beschreibt, organisiert die implementierte Symbolsprache die Texte rund um semantisch geladene Begriffe wie Typ und Bestandteil. D.h. alle Ausdrücke in der implementierten Symbolsprache basieren auf Kategorien, die nicht zur fundamentalen Symbolsprache gehören. Durch realen Einsatz gewonnene Erfahrung könnte in Zukunft dazu führen, dass man diese Kategorien präzisiert oder ersetzt, und damit die implementierte Symbolsprache ändert, ohne dass man an der Theorie der fundamentalen Symbolsprache etwas anpassen müsste. Die implementierte Symbolsprache ist ein technisches, die fundamentale ein theoretisches Artifakt.