Google
 

tagclud by wordle.nst

Konzeption einer abstrakten Hypertext-Maschine und Abbildung auf ein relationales Datenmodell
 

Diplomarbeit 

an der Fachhochschule für Witschaft und Technik 
Reutlingen 
Fachbereich Wirtschaftsinformatik

Bearbeiter:
Uwe Michael Priebe
Bodenstraße 12
7900 Ulm

Betreuer:  Prof. Dr. F. Laux

Abgabetermin: 10. Januar 1992


Vorwort

Das zweite Praxissemester meines Studiums der Wirtschaftsinformatik an der Fachhochschule für Technik und Wirtschaft Reutlingen absolvierte ich im Sommersemester 1990 am Forschungsinstitut für anwendungsorientierte Wissensverarbeitung (FAW) in Ulm. Dort beschäftigte ich mich im Rahmen der Aktivitäten des Bereichs Umweltinformationssysteme erstmals mit dem Themengebiet Hypertext. Hypertext ist ein Mittel zur Darstellung und Bearbeitung von nichtlinearen Informationen. Im Verlauf des Praxissemesters implementierte ich ein einfaches Hypertextsystem. Dieses System war als Prototyp für ein Informationssystem zur Unterstützung der Referentenebene in der Umweltverwaltung gedacht.

Aufbauend auf den Erfahrungen mit diesem Prototyp wurde am FAW dann ein System zur Entscheidungsvorbereitung in komplexen Problemlagen konzipiert. Dabei wurde auf den erstmals von H.J.W.Rittel und W.Kunz beschriebenen Ansatz der Issue Based Information Systems (IBIS) [kunz70] zurückgegriffen. Die Kernidee dieses Ansatzes ist die Strukturierung von Problemfeldern durch das Aufwerfen von Fragen (Issues). Diese Fragen werden beantwortet, wobei die Antworten in der Regel kontrovers sind und durch Argumente belegt werden müssen. Für die Unterstützung dieses Ansatzes wurde am FAW das (informationstechnisch) auf dem Hypertextparadigma [con87] [nel65] basierende System HyperIBIS realisiert.

Beim Design von hypertextartigen Systemen ist es sinnvoll, verschiedene Schichten zu unterscheiden. B.Campbell und J.M.Goodman [cam88] unterscheiden dabei im wesentlichen zwischen einer Benutzerschicht, die der Präsentation des Hypertext auf dem Bildschirm dient, einer Anwendungsschicht und einer Schicht zur Verwaltung des eigentlichen Hypertextes (Abstrakte Hypertext-Maschine).

In der vorliegenden Arbeit werden die Ansätze von B.Campbell und J.M.Goodman aufgegriffen, wobei das dort beschriebene Konzept der abstrakten HypertextMaschine verfeinert wird. Ein Kernpunkt ist dabei die Möglichkeit der Definition von Struktureigenschaften (wie z.B. unterschiedlichen Typen von Knoten sowie unterschiedlichen Typen von Links) für eine spezifische Anwendung (z.B. HyperIBIS). Aufbauend auf diesen Definitionen können dann Hypertexte erzeugt werden. Für die Erzeugung und die spätere Durchwanderung des Hypertextes werden verschiedene Funktionen bereitgestellt, die von der Anwendungsschicht aus aufgerufen werden. Ein weiterer Kernpunkt ist die Abbildung der Hypertextstrukturen auf das relationale Datenmodell.

In Kapitel 1 wird zunächst überblicksartig die Hypertext-Idee dargestellt sowie auf mögliche Anwendungen von Hypertext eingegangen. Neben den Vorteilen des Hypertextansatzes werden auch hypertextspezifische Probleme skizziert. Kapitel 2 beschäftigt sich mit der Architektur von Hypertextsystemen, wobei insbesondere auf die Arbeiten von B.Campbell und J.M.Goodman [cam88] und N.M.Delisle und M.D.Schwartz [del86] eingegangen wird. Darauf aufbauend werden in Kapitel 3 Forderungen an eine modifizierte abstrakte HypertextMaschine hergeleitet. Kapitel 4 geht zunächst auf Funktionen zur Definition der Struktur eines spezifischen Hypertextes ein. Im Anschluß werden Funktionen zur Erzeugung von Instanzen von Hypertextelementen und Funktionen zur Durchwanderung eines Hypertextes beschrieben. In Kapitel 6 wird die Abbildung der Hypertextstrukturen auf das Relationenmodell beschrieben. Die Grundzüge des Relationenmodells sind in Kapitel 5 erläutert. Schließlich wird in Kapitel 7 ein kurzer Ausblick gegeben.

Die Diplomarbeit entstand in den Monaten August 1991 bis Januar 1992 im Projekt ZEUS (,,Zentrales Umweltkompetenz-System'') am FAW Ulm. Die Umsetzung der in der Diplomarbeit beschriebenen Konzepte, geschah auf einer SUN SPARC Station, unter Verwendung einer ORACLE Datenbank.

Contents

1  Hypertext
    1.1  Motivation
    1.2  Das Grundkonzept von Hypertext.
        1.2.1  Knoten
        1.2.2  Links
        1.2.3  Manipulationen
        1.2.4  Hypertextsysteme
    1.3  Hypertext als Mittel der Informations -beschaffung
        1.3.1  Navigation
        1.3.2  Browsing
        1.3.3  Indizierung
    1.4  Anwendungen f ur Hypertextsysteme
        1.4.1  Hilfesysteme
        1.4.2  Informationssysteme
        1.4.3  Statische und dynamische Hypertextsysteme
        1.4.4  Informationssysteme mit aktueller Datenbasis
        1.4.5  Entscheidungsunterst utzende Systeme
        1.4.6  Unterst utzung von Kreativtechniken
    1.5  Hypertextspezifische Probleme
        1.5.1  Einbeziehung linearer Informationen
        1.5.2  Generierung linearer Informationen
        1.5.3  Lost in Hyperspace
        1.5.4  Vom Text- zum Hypertextleser.
2  Architektur von Hypertextsystemen
    2.1  Die Hypertext Abstract Machine (HAM)
    2.2  Die Funktionalit aten einer Hypertext --Maschine
    2.3  Graphenoperationen
    2.4  Knotenoperationen
    2.5  Verbindungsoperationen
    2.6  Attributoperationen
    2.7  D amonoperationen
3  Die modifizierte abstrakte Hypertext --Maschine
    3.1  Elemente und Funktionen einer abstrakten Hypertext --Maschine
    3.2  Schnittstellen einer abstrakten Hypertext --Maschine
        3.2.1  Datenverwaltung in einer Datenbank
        3.2.2  Benutzerinterface
        3.2.3  Mail
        3.2.4  Medienintegration und -steuerung
        3.2.5  Einbindung von Datenbankabfragen
4  Elemente und Funktionen einer abstrakten Hypertext --Maschine
    4.1  Definition der Elemente von Hypertext
        4.1.1  Klassen f ur Knoten und Verbindungen
        4.1.2  Erzeugung von Knoten
        4.1.3  Einrichten von Links
        4.1.4  Definition von Attributen
    4.2  Funktionen f ur Instanzen von Hypertext-Elementen
        4.2.1  Funktionen zur Definition von Attributmengen
        4.2.2  Funktionen zur Ermittlung von Informationen uber Attributmengen
        4.2.3  Funktionen zur Anderung von Standardwerten von Knotentypen und Linktypen
        4.2.4  Regelung der Verbindungsm oglichkeiten durch Linktypen.
        4.2.5  Funktionen f ur Knoten
        4.2.6  Definition der Navigationsfunktionen auf Knotenebenen
        4.2.7  Funktionen f ur Links
        4.2.8  Funktionen f ur Attribute
        4.2.9  Filter f ur Attribute von Knoten und Links
    4.3  Weitere, spezielle, Funktionen der Hypertext --Maschine
        4.3.1  Lesezeichen
        4.3.2  Historie
        4.3.3  Guided Tour
5  Das Relationenmodell
    5.1  Grundbegriffe des relationalen Datenmodells
        5.1.1  Dom anen
        5.1.2  Attribute
        5.1.3  Relationen und Tupel
        5.1.4  `Schl ussel ' f ur Relationen
    5.2  Integrit atsanforderungen des Relationenmodells
    5.3  Manipulation von Relationen
    5.4  Normalisierung von Relationen
    5.5  Architektur von Datenbanken
        5.5.1  Das Strukturschema von Datenbanken
6  Abbildung der abstrakten Hypertext --Maschine auf das Relationenmodell
    6.1  Auswahl einer Datenbank f ur die Abbildung der Hypertext --Maschine auf das Relationenmodell.
    6.2  Abbildung der Elemente der modifizierten abstrakten Hypertext --Maschine auf eine ORACLE Datenbank.
        6.2.1  SQL-Umsetzung der Tabellendefinition
        6.2.2  Knotentypen
        6.2.3  Linktypen
        6.2.4  Knoten
        6.2.5  Links
        6.2.6  Knotenattribute und Linkattribute
        6.2.7  Weitere Tabellen und Views
    6.3  Definition einiger Funktionen der abstrakten Hypertext --Maschine f ur eine ORACLE Datenbank.
        6.3.1  Erzeuge Knoten Typ
        6.3.2  Erzeuge Knoten
        6.3.3  Definiere zul assigen Zielknotentyp
        6.3.4  Etabliere Link
        6.3.5  Abbildung einer Hypertext --Maschine auf eine beliebige Datenbank
7  Ausblick
A
    A.1  Ein kleines Hypertextlexikon
    A.2  Delinearisierung eines L a T EX-Dokumentes
B
    B.1  Formale Funktionsdarstellung der Hypertext Abstract Machine
    B.2  Graphenoperationen
    B.3  Knotenoperationen
    B.4  Linkoperationen
    B.5  Attributoperationen
    B.6  D amonoperationen
C
    C.1  Grundfunktionen einer abstrakten Hy -per -text --Ma -schi -ne
        C.1.1  Funktionen f ur Knotentypen und Linktypen
        C.1.2  Funktionen f ur Knoten
        C.1.3  Funktionen f ur Links
        C.1.4  Funktionen f ur Attribute
        C.1.5  Funktionen zur Unterst utzung des Hypertextdesigns und der Navigation
D
    D.1  Zusammenfassung der Relationen

Chapter 1 
Hypertext

1.1  Motivation

Die wichtigsten Informationsmedien sind Texte und Abbildungen, die linear angeordnet sind. Diese lineare Anordnung von Informationen ist jedoch nicht aus der Motivation heraus entstanden, die Informationen in geeigneter Weise darzustellen, sondern aus den bisherigen technischen Gegebenheiten der Informationsverwaltung. Diese Linearität entspricht aber nicht immer der menschlichen Denkweise [bush45]; die Nutzung linearer Strukturen ist vielmehr trainiert.

Für die Aufnahmen neuen Wissens versucht der Mensch, zu abstrahieren oder Analogien herzuleiten. Auch will er die Größe der zu lernenden Einheiten klein halten und mit Hilfe von Sekundärliteratur sich den Zugang zu neuem Wissen erleichtern. Durch Kommentierung werden die erfaßten Informationen einfacher reproduzierbar, oder es können weitere Informationen dazu erschlossen werden. Führt dies nicht zum Erfolg, kann eine ,,Eselsbrücke'' der Schlüssel zum Gedächtnis sein.

Eine streng lineare Anordnung ist oft eher ein Hindernis als eine Hilfe auf dem Weg der Informationsbeschaffung. Um einem Leser die Möglichkeit zu bieten, sich seine Informationen auf Basis seines individuellen Wissenhorizontes in kleinen Einheiten zu erschließen, werden vielfältige Mittel eingesetzt, die Linearität zu durchbrechen. Die häufigsten Methoden dafür sind, Texte in logische Abschnitte aufzuteilen, auf Abbildungen, Erläuterungen oder auf weitere Texte oder Abschnitte zu verweisen, die die Informationsaufnahme erleichtern sollen.

Verfahren, die die Linearität der Informationsdarstellung durchbrechen sollen, wurden bereits durch Kartographen früherer Jahrhunderte entworfen, wie z.B. in der ,,Ebstorfer Weltkarte'' 1 aus dem 13. Jahrhundert, mit der der Versuch unternommen wurde, das ,,Weltwissen'' dieser Zeit zusammenzufassen. Diese Weltkarte besteht aus einer Landkarte, die an bestimmten Stellen weiterführende Informationen, wie z.B. die Erklärung ,,Was ist ein Elefant?'' mit Text und Bildern bereithält.

Vannevar Bush gilt mit seinem Konzept von Memex, dem ,,memory extender'', als Großvater des Hypertext. Das Konzept von Memex wurde in den dreißiger Jahren durch ihn entworfen, jedoch nie verwirklicht. Das System sollte eine Bücherei und ein Karteisystem darstellen, das mikroverfilmt in einem Arbeitstisch mit mehreren Lesegeräten integriert werden sollte, um einem Benutzer Einblick in mehrere Dokumente gleichzeitig zu bieten. Dabei waren Verknüpfungen zwischen diesen Dokumenten vorgesehen, die eine Semantik beinhalten [bush45] [bush67].

In den folgenden Jahrzehnten haben sich die technischen Möglichkeiten der Informationsspeicherung drastisch erweitert. Unter Berücksichtigung dieser Entwicklungen wurde Mitte der sechziger Jahre der Begriff Hypertext als Netz von Informationseinheiten durch Ted Nelson mit seinen Entwürfen zu XANADU geprägt [nel65]. Das entstandene Hypertextparadigma bietet Konzepte für die Repräsentation von Informationen und Verfahren, mit denen die Verarbeitung von Informationen verbessert werden kann.

1.2  Das Grundkonzept von Hypertext.

,,Die Grundidee von Hypertext besteht darin, daß informationelle Einheiten, in denen Objekte und Vorgänge des einschlägigen Weltausschnittes auf textuelle, grafische oder audiovisuelle Art dargestellt werden, flexibel über Verknüpfungen manipuliert werden.'' [kuh91]
Die wichtigsten Elemente dieser Definition, die einen Hypertext hinreichend beschreiben, sind informationelle Einheiten, Verknüpfungen und Manipulation.

Als Fachtermini haben sich für die ersteren Knoten oder Node und Verbindung oder Link gebildet. Dabei ist im Umfeld von Hypertext auch im deutschen Sprachgebrauch ,,Link'' der gebräuchliche Begriff für die Verbindung zweier Knoten. Diese Knoten und Links stellen die Grundelemente von Hypertexten dar (Abbildung 1.1).

1.2.1  Knoten

Unter Knoten (,,Atom''; Node; Unit) wird eine einzelne abgeschlossene2   Informationseinheit verstanden. Der Inhalt eines Knotens besteht zumeist aus einer kurzen textuellen Information. Die Knoten sind jedoch nicht auf Texte beschränkt. Sie können auch jede andere Form eines Informationsmediums (Grafik, Ton, Bild ...) beinhalten.

Die Einführung von Attributen und Klassen für Knoten erlaubt eine differenzierte Benutzung der Knoten und ermöglicht auch deren Strukturierung.

1.2.2  Links

Unter Link (Verbindung) wird die Verknüpfung zweier Knoten verstanden. Ein Link beinhaltet die Semantik zur Verbindung der Knoten. Die Gestaltung der Verbindungen ist ein zentraler Punkt beim Entwurf eines Hypertextes. Die einfachste Form der Verbindung besagt lediglich, daß eine Verbindung zwischen zwei Knoten vorhanden ist. Die nächste Stufe betrachtet die Links als gerichtet, das heißt sie haben einen Ausgangs- und einen Zielknoten und erzeugen dadurch eine Hierachie. Durch die Einführung von Attributen für Verbindungen oder die Einführung von Verbindungstypen können weitere Verfeinerungen erzielt werden. Diese sind insbesondere im Hinblick auf die Informationssuche und die Erzeugung anwenderspezifischer Verbindungen hilfreich. Die Verbindungstypen können auch zur Definition einer kontextabhängigen Gültigkeit aller Links eines Typs benutzt werden.
 
 

Abbildung 1.0: Ein kurzer (Hyper-)Text

1.2.3  Manipulationen

,,Manipulation'' wird hier als Begriff für jegliche Form der Benutzung eines Hypertextes verwendet, also nicht nur für die Änderung der Knoten und ihrer Verbindungen, sondern auch für das Lesen eines Hypertextes und die Informationssuche in einem Hypertext. Beim Lesen eines Hypertextes und der Informationssuche kann der Hypertext durchaus Änderungen unterworfen sein. Wie z.B. durch Setzen von Lesezeichen und die Einfügung von Kommentaren.

1.2.4  Hypertextsysteme

Knoten und Links sind die Grundelemente eines jeden Hypertextsystems. Hypertextsysteme unterscheiden sich untereinander durch die Arten von Knoten, die zur Verfügung gestellt werden, die Verbindungsmöglichkeiten zwischen den Knoten und die Manipulationsmöglichkeiten, die zur Verfügung stehen.

1.3  Hypertext als Mittel der Informationsbeschaffung

Hypertextsysteme werden in erster Linie zur Vermittlung von Informationen herangezogen. Die Funktionen, die dies ermöglichen werden unter ,,Browsing'' und ,,Navigation'' zusammengefaßt. Diese Formen der Informationsfindung sind auch der Hauptunterschied zu klassischen Informationssystemen und -medien, die zur Informationsfindung konkrete Anfragen erfordern.

1.3.1  Navigation

Unter Navigation wird im Zusammenhang mit Hypertext die Bewegung durch das Netz der miteinander verknüpften Informationseinheiten verstanden. Wie bei jeder Art von Bewegung gibt es im allgemeinen auch in diesem Bereich mehr als einen Weg zwischen einem Ausgangspunkt und dem gewünschten Zielpunkt. So, wie es mehr als eine Form der Bewegung gibt. Die Navigationsmittel für einen Hypertext sind abhängig von der Art der Präsentation des Hypertextes für den Anwender.

Die einfachste Präsentationsform eines Hypertextes ist ein ,,Kartenstapel''. Der Leser eines Hypertextes wählt dabei anhand eines sichtbaren Ordnungskriteriums die nächste ,,Karte'' (Informationseinheit) aus. Die Verknüpfungen zwischen den Informationseinheiten ist dabei nur in textueller Form gegeben. Eine Form der Navigation, die dem Hypertextgedanken näherkommt, ist es, dem Anwender den Zugang zu weiteren Informationseinheiten auf verbundene Knoten und in ihrer Bedeutung hervorgehobene einzuschränken. Die Handhabung kann z.B. über graphische Funktionsknöpfe oder durch Funktionstasten erfolgen. Führt dieses Vorgehen nicht zum Ziel, können, durch ein eventuell zielloses Betrachten weiterer Informationseinheiten, zusätzliche Knoten ermittelt werden, die das Informationsbedürfnis des Benutzers befriedigen.

1.3.2  Browsing

Die Suche nach Informationen in Büchern ist zumeist dadurch erschwert, daß im Stichwortverzeichnis der gesuchte Eintrag nicht vorhanden ist oder man mit einem unspezifischen Informationsbedürfnis einen Text angeht. Also versucht man, Stichworte nachzuschlagen, die im Zusammenhang mit den gewünschten Informationen stehen könnten, oder die das Interesse des Lesers erwecken. Folgt der Leser diesen Stichworten, so liest er jeweils kurze Abschnitte. Bei diesem Lesen nimmt er oft unbewußt Informationen auf, an die er sich später in einem anderen Zusammenhang erinnern kann. Beispielsweise erinnert er sich, eine gesuchte Information schon einmal gesehen zu haben und kann den Ort in etwa lokalisieren, beispielsweise ,,in den ersten Kapiteln eines Buches unterhalb einer Abbilddung''. Diese beilaüfige Aufnahme von Wissen wird als Browsing [bern88] bezeichnet.

Hypertexte beinhalten durch ihre Struktur der kleinen, vielfältig verbundenen Informationseinheiten eine ideale Voraussetzung für das Browsing. Die kurzen Informationseinheiten erlauben eine schnelle Aufnahme ihres Inhalts. Erweckt ein Inhalt eines Knotens das Interesse eines Lesers, so stehen ihm in einem Hypertext auf einfache Weise, oft eine Vielzahl von weiterführenden Informationen zur Verfügung.

Die Gefahr dieser Vorgehsweise ist sowohl beim Browsing in Hypertexten wie auch beim Browsing in einem Buch oder einer Zeitschrift, daß der Anwender sein urprüngliches Ziel aus den Augen verliert und andere Informationen verfolgt als ursprünglich geplant war. In der Literatur wird dies auch als ,,Serendipity'' - Effekt bezeichnet.

1.3.3  Indizierung

Ein mächtiges Werkzeug der Informationsbeschaffung ist der Zugang zu Informationseinheiten über Verzeichnisse. Ein Großteil der Verzeichnisse ist automatisch erstellbar. Eventuell ist noch eine Gewichtung der Verweise notwendig, wenn einzelne Stichworte mehrfach auftreten (in Büchern wird diese Gewichtung oft durch Fettdruck dargestellt). Eine wesentliche Qualifizierung der Verzeichnisse stellt eine Kommentierung der Einträge oder der Verbindungen zwischen den Verzeichniseinträgen und den zugehörigen Informationen dar. Diese Kommentierung kann beispielsweise eine Begriffsklärung beinhalten oder eine Bemerkung zu den Informationseinheiten, die das Ziel eines Index sind.

1.4  Anwendungen für Hypertextsysteme

1.4.1  Hilfesysteme

Eine typische Anwendung von Hypertext sind Hilfesysteme. Oft sind diese Hilfesyteme so aufgebaut, daß sie zu Stichworten weitere Informationen liefern oder suchen. Der Zugang zu diesen Informationen ist teilweise durch Stichwortlisten realisiert, die der Benutzer wie den Index eines Handbuches benutzen kann. Diese Art ist häufig in Textverarbeitungssystemen realisiert. In dieser Form hat der Hypertext keine wesentlichen Vorteile gegenüber klassischen Handbüchern, außer eines eventuell schnelleren Zugriffs auf die Informationen. Bei den gebräuchlichen Systemen, die die Informationen nicht parallel zur Verfügung stellen, etwa in einer Informationszeile, wird die Handhabung sehr erschwert. Will der Anwender z.B. seinen Text mit einem Beispiel der Hilfefunktion vergleichen, so muß er auf ein Handbuch zurückgreifen, wenn sein eigener Text und das Beispiel nicht gleichzeitig auf dem Bildschirm sichtbar sind.

Eine weitere verbreitete Form von Hypertexten ist eine kontextsensitive Hilfe, die z.B. bei Borlands Turbo Produkten realisert ist, dabei besteht die Möglichkeit, für im Editor stehende Begriffe über eine Funktionstaste eventuell vorhandene Informationen zu diesem Begriff zu ermitteln. Die Realisierung dieser Systeme ist zumeist so gelöst, daß Begriffe in Stichworttabellen stehen und über diese zugegriffen wird.

1.4.2  Informationssysteme

Eine für die Zukunft wachsende Verbreitung von Hypertext ist im Bereich der Informationssysteme zu erwarten. Beispiele solcher Informationssysteme sind juristische Auskunftssysteme, die zu einem Gesetzesverzeichnis auf Anfrage Kommentare und exemplarische Entscheidungen bereithalten. Ebenso existieren Advertising-Systeme, die Produktinformationen nach Wünschen des Kunden detailiert vorstellen. Speziell im Bereich solcher Informationssysteme ist es notwendig, nicht nur textuelle, sondern auch graphische Informationen anzubieten, da durch die Visualisierung von Informationen die Anforderungen an den Benutzer dieser Systeme gesenkt werden. Oft ist auch ausschließlich durch eine Visualisierung ein sinnvolles Informationssystem gegeben. So ist ein Hypertext, der ein Werkstatthandbuch repräsentiert, ohne Schaubilder unbrauchbar.

1.4.3  Statische und dynamische Hypertextsysteme

Die zuvor erwähnten Hypertextsysteme sehen eine Trennung von Autoren- und Lesermodus vor. Diese Trennung erleichtert die Datenhaltung, beschleunigt die Zugriffe und erlaubt eine unproblematische Benutzung durch mehrere Anwender. Ein gravierender Nachteil dieser Trennung ist zum einen, daß die Leser nicht in der Lage sind, den Hypertext durch Kommentierung und durch die Gestaltung eigener Subnetze ihren Bedürfnissen anzupassen. Für die Informationssysteme ist jedoch der grössere Nachteil die Invarianz der Informationen. Dies bedeutet, daß den Anwendern keine aktuellen Daten zur Verfügung gestellt werden können.

1.4.4  Informationssysteme mit aktueller Datenbasis

Zunehmende Bedeutung werden dynamische Informationssysteme erhalten, die beispielsweise durch die Aufarbeitung von Meß- und Produktionsdaten oder durch Anfragen gegen Datenbanken kurzfristige Beurteilungen von Situationen ermöglichen. Insbesondere im Produktionsbereich sind durch geeignete Informationssysteme frühzeitig Korrekturen operativer Entscheidungen möglich. Durch die Möglichkeit, daß unterschiedliche Anwender, verschiedene Präsentationsformen der Informationen erhalten können, ist keine hierachische Verteilung und Aufbereitung der Daten, mit entsprechender zeitlicher Verzögerung, notwendig. So können aktuelle Produktionsdaten gleichzeitig für ein Management-Information-System Informationen über die Kapazitätsauslastung liefern und einer Vertriebsabteilung den Produktionsstand einzelner Produkte zur Verfügung stellen.

1.4.5  Entscheidungsunterstützende Systeme

Ein neues Gebiet für den Einsatz von Hypertext sind Syteme, die Entscheidungsverfahren unterstützen und dokumentieren. Die Dokumentation ist durch die Archivierung der Diskussionsbeiträge und deren gegenseitige Verbindungen möglich sowie durch eine nachträgliche Kommentierung der Beiträge zu ihrer Gewichtung in der Entscheidungsfindung. Beispielsweise durch den Hinweis auf Ausschlußkriterien oder der Überzeugungskraft der einzelnen Beiträge.

Die Unterstützung von Entscheidungen kann durch die Vorgabe von Diskussionsmustern erfolgen, die gewährleisten, daß vorgeschriebene Bearbeitungspunkte nicht vernachläßigt werden, oder daß bestimmte Fragestellungen den Typ der Antwort festlegen und Antworten entsprechend einordnen.

Als Beispiel eines entscheidungsunterstützenden Systems dient HyperIBIS [ise91] das am Forschungsinstitut für anwendungsorientierte Wissensverarbeitung (FAW) Ulm entwickelt wurde und auf das Issue Based Information System (IBIS) von H.W.J Rittel und W.Kunz zurückgeht [kunz70], das die Vorbereitung und Koordination politischer Entscheidungen unterstützen soll.

Das Konzept des Issue Based Information System basiert auf einer Strukturierung von Fragen und deren Beantwortung bzw. deren Diskurs. Durch dieses Verfahren wird der logische Ablauf der Entscheidungsfindung gewährleistet und der gesamte Prozess dokumentiert.

Zur Umsetzung des IBIS-Konzeptes verwendet HyperIBIS textuelle Typen die zueinander in Beziehung stehen. Diese Typen sind Problembereiche (,,Topics''), Fragen (,,Issues''), Positionen/Antworten und Argumente. Die Verbindung zwischen diesen Elementen können allgemeiner Art sein, in der Form ,,hat zu tun mit'', können aber auch eine zeitliche, logische oder hierachische Einordnung darstellen.

Die Fragen oder Issues werden noch weiter unterschieden in:

Die Umsetzung des IBIS-Konzeptes beruht darauf, daß ,,Knotentypen'' existieren, zwischen denen reglementierte Verbindungen eingetragen werden können. Die Reglementierung der Verbindungen erfolgt durch die Klassifizierung der Verbindungen.

Eine erste Klasse von Verbindungen ermöglicht die Etablierung von Verbindungen zwischen: Topic und Issue, Issue und Antwort sowie zwischen Antwort und Argument.

Eine weitere Klasse von Verbindungen erlaubt die Verknüpfung von Knoten außerhalb der vorgegebenen Strukturen und ist nicht gerichtet. Diese ungerichtete Verbindungsmöglichkeit wird als ,,X-Ref'' bezeichnet. Eine solcher ,,X-Ref'' erlaubt es, Zusammenhänge abzubilden, die nicht durch die vorangegangenen Verbindungen abgedeckt werden, da sie beispielsweise die Strukturvorschriften durchbrechen oder die verbunden Knoten in andere Kontexte eingebunden sind.

1.4.6  Unterstützung von Kreativtechniken

Systeme, die Kreativtechniken unterstützen, werden derzeit zwar nicht kommerziell vertrieben, jedoch können Hypertexte diese sinnvoll unterstützen. Die Meatplan-Technik [nim] beispielsweise basiert auf einer Ideensammlung und -kommentierung mit Anonymisierung der Autoren.

Im Wesentlichen basiert diese Technik auf der Ideensammlung und -bewertung ausserhalb der hierachischen Einordnung der Teilnehmer und anschließender Ausarbeitung eines Aktionsplanes. Ein Hypertext bietet hier die Möglichkeit für die Phase der Ideensammlung, die Beiträge zeitlich unabhängig und für die Teilnehmer anonym zu sammeln. Ist diese Phase der Ideensammlung abgeschlossen, so kann die Bewertung der Vorschläge auf ähnliche Weise erfolgen. Ein weiterer Vorteil, der dem Metaplanerfahrenen sofort klar wird, ist die Möglichkeit, jederzeit einen historischen Stand abrufbar zu haben. Bei der üblichen Form der Metaplantechnik sind historische Zustände zumeist nur durch Fotos mühsam rekonstruierbar. Der Moderator des Metaplanverfahrens ist durch ein solches System nicht ersetzbar. Das System soll nur die manuellen Tätigkeiten übernehmen, die Dokumentation von der Sammlungs- bis zur Bearbeitungsphase und die Anonymisierung der Beiträge sicherstellen. Als Hauptvorteil kann die Abschwächung der Terminproblematik einer heterogen Gruppe gesehen werden, da für Ideensammlung und Ideenbewertung keine Plenumssitzungen notwendig sind.

1.5  Hypertextspezifische Probleme

1.5.1  Einbeziehung linearer Informationen

Als Beispiel für die automatische Delinearisierung von Texten wird in der Literatur immer wieder die Konvertierung des Oxford English Dictionary in eine Hypertextbasis angeführt. Dieses Beispiel ist aber nicht sinnvoll, da schon der zu konvertierende Text eine geringe Kohäsion zwischen den einzelnen Abschnitten aufweist, d.h. die Einträge jeweils eine abgeschlossene Informationseinheit bilden. Auch ist durch Verweise im ursprünglichen Text bereits eine, einem Hypertext ähnliche, Struktur vorgegeben.

Die sinnvolle Konvertierung von linearen Texten in Hypertext ist kein triviales Problem. Diese Konvertierung soll weitgehend automatisch erfolgen, was bei Texten, die mit Textverarbeitungsprogrammen erstellt wurden, die keine Rücksicht auf logische Strukturen nehmen, nur schwer möglich ist. Weitaus einfacher gestaltet sich eine automatisierte Konvertierung linearer Texte, die von Systemen stammen, die logische Strukturen vorsehen und unterstützen. Ein solches System ist beispielsweise LATEX, das formale Strukturen von Kapitel- bis Absatzebene unterstützt, Tabellen und Abbildungen verwaltet sowie Verzeichnisse und Referenzen bietet.

Die Einbeziehung eines LATEX-Textes kann durch die Erzeugung eines Knoten ,,article'' erfolgen, an dem parallel die einzelnen ,,sections'' und die Verzeichnisse gebunden sind. Mit den ,,subsections'' und ,,subsubsections''wird jeweils im Bezug auf die logisch übergeordnete Struktur analog verfahren. Die jeweils unterste Struktur besteht dann aus einer linearen Folge von Absätzen3, Abbildungen und Tabellen. Die Verzeichnisse (Inhaltsverzeichnis, Abbildungsverzeichnis, Tabellenverzeichnis) werden mit Verbindungen zu den jeweiligen Informationseinheiten eingetragen. Die Referenzen, die zwischen den Einheiten im Text festgelegt sind, werden zwischen diesen Einheiten eingetragen. Ein Beispiel dazu wird im Anhang (A.2) gegeben.

Diese Vorgehensweise würde auch dazu führen, daß die ursprüngliche Struktur erhalten wird und weitaus geringere Probleme bei der Generierung einer linearen Repräsentation des Hypertextes auftreten.

1.5.2  Generierung linearer Informationen

Trotz der Vorzüge des Hypertextkonzeptes wird es gewünscht, Informationen linear und in Papierform verfügbar zu machen. Der Wunsch nach linearen Informationen ist zwar verständlich, um den Arbeitsaufwand zur Generierung von Berichten, Handbüchern etc. gering zuhalten. Diese Forderung widerspricht jedoch dem Hypertextpardigma grundsätzlich, da es dafür entworfen wurde, von den Strukturvorschriften linearer Informationsdarstellung wegzukommen und Informationen assoziativ darzustellen.

Aufgrund der Häufigkeit der Forderung, lineare Texte zu generieren, kann diese Forderung nicht ignoriert werden. Ein Problem aller Konzepte zur automatischen Linearisierung eines Graphen stoßen schon bei gering verzweigten Netzen auf ihre Schranken. Die Linearisierung von Zirkeln sowie die Ordnung einer Vielzahl von Verzweigungen, die von einem Knoten ausgehen oder bei ihm eintreffen, sind die Kernprobleme automatischer Linearisierungsverfahren.

1.5.3  Lost in Hyperspace

Eines der zentralen Probleme von Hypertext ist das ,,lost in hyperspace'' [edw88]. ,,Lost in hyperspace'' bedeutet eine Desorientierung des Anwenders, sie kann sowohl den Leser als auch den Autor eines Hypertextes behindern.

Diese Probleme der Anwender treten zumeist nach längerer Navigation im Hyperspace auf, wenn er keine weiterführenden Informationen mehr findet, die ihn seinem Ziel näher bringen oder er versucht einen vormals beschrittenen Weg zu einem Ziel zu rekonstruieren.

Die Ursachen hierfür können auf folgende Punkte reduziert werden:

Als Lösungsmöglichkeiten für diese Probleme ist denkbar: Die schwerwiegensten Probleme enstehen durch unterschiedliche Auffassungen der logischen Zusammenhänge, von Lesern und Autoren. Eine sinnvolle Lösung stellt für diese Fälle die Erstellung weiterer Informationsnetze dar, die dem logischen Verständnis einer bestimmten Leserschaft entsprechen.

1.5.4  Vom Text- zum Hypertextleser.

Durch die Gewöhnung an lineare Informationspräsentationsformen, erfordert die Nutzung von Hypertexten ein Umdenken der Suche nach Informationen und deren Bereitstellung. Einen einfachen Zugang zu Hypertext erhält man, indem er zunächst als Fortführung gewohnter, nicht-linearer Hilfsmittel linerarer Texte betrachtet wird (Indexverzeichnisse, Register, Fußnoten, Anmerkungen, etc.). Diese Hilfsmittel sind bei allen umfangreicheren Texten üblich. Der nächste Schritt ist, den Hypertext wie eine Enzyklopädie anzugehen. Um in einer Enzyklopädie eine gewünschte Information zu erhalten, ist es erforderlich, Verweisen zu folgen, Bilder zu betrachten und eventuell tangierende Begriffe auf gleiche Art zu erschließen.

Wesentlich ist dabei, daß

Ist dieses Prinzip verstanden, kann daran gegangen werden, Hypertexte zu bearbeiten. Man wird schnell erkennen, daß die von den Autoren des Hypertextes eingerichteten Verbindungen und Hervorhebungen nicht mit dem eigenen Verständis der Problematik übereinstimmen. Sicherlich wird man damit anfagen, einzelne Knoten hervorzuheben. Der nächste Schritt wird sein, eigene Anmerkungen zu setzen und schließlich die Struktur zu ändern. Diese Strukturänderung erfolgt durch die Auslassung einzelner Knoten oder durch Einbindung einzelner Teile in neue Zusammenhänge.

Geht man weiter und plant eigenständige Hypertexte wird man schnell erkennen, daß ein planloses Vorgehen ähnlich dem ,,Spaghetti-Code'' mancher Programiersprachen, ein schwer zu durchschauendes Netz erzeugt. Die grobe Struktur eines neuen Hypertextes muß daher geplant sein.

Chapter 2 
Architektur von Hypertextsystemen

Dieses Kapitel beschäftigt sich mit den architektonischen Konzepten für Hypertextsysteme. Von den Konzepten, die in der Literatur dargestellt werden, sind insbesondere die Arbeiten von N.M.Delisle und M.D.Schwartz [del86] sowie von B.Campbell J.M.Goodman [cam88] hervorzuheben.

In dem Artikel Neptune: a Hypertext System for CAD Applications [del86] werden nicht nur abstrakt Funktionen für Hypertextsysteme angeführt, sondern auch bis auf einer formalen Ebene beschrieben. Die Funktionen haben jedoch keine Allgemeingültigkeit und bleiben in ihrer expliziten Beschreibung teilweise unklar. Aufbauend auf diesen Entwurf haben B.Campbell und J.M.Goodman [cam88] ein abstrakteres Konzept entworfen, das eine Loslösung des Hypertextsystems von der rechnerbedingten Umgebung vorsieht.

2.1  Die Hypertext Abstract Machine (HAM)

Aufbauend, auf die Arbeiten von N.M.Delisle und M.D.Schwartz haben B.Campbell und J.M.Goodmann die ,,Hypertext abstract Machine'' [cam88] (im Folgenden HAM) beschrieben. Diese HAM kann auch als ein allgemeines Speichermodell für Hypertexte betrachtet werden.
 
 

Abbildung 2.0: Hypertext Abstract Machine

Ein wesentlicher Aspekt ist die Trennung des hypertextverwaltenden Systems der HAM sowohl von der rechnerbedingten Datenhaltung, dem Host File System als auch von der Anwendungsschicht, den Application-Tools und der Präsentationsform des Hypertextes gegenüber den Anwendern, dem User Interface.

Der Aufgabenbereich der HAM wird also eingeschränkt auf die Verwaltung der Informationen über die Zusammenhänge der Knoten und die Beschaffung der in den Knoten gespeicherten Informationen und Weitergabe an die Anwendungsschicht. Diese Anwendungschicht kann die so erhaltenen Informationen weiterverarbeiten. Das Bild, das der Anwender von einem Hypertext erhält, wird durch die Benutzerschnittstelle festgelegt.

Durch diese Trennung ist es möglich, unterschiedlichen Anwendern jeweils verschiedene Manipulationsmöglichkeiten eines Hypertextes zu bieten. Weiterhin wird ermöglicht, durch unterschiedliche Benutzerschnittstellen, die Präsentationsform des Hypertextes gegenüber den Anwendern variabel zu gestalten.

Im folgenden Abschnitt wird genauer auf die Funktionalitäten einer HypertextMaschine eingegangen.

2.2  Die Funktionalitäten einer HypertextMaschine

N.M.Delisle und M.D.Schwartz haben bereits in ihrer Arbeit zu Neptune [del86] einen detailierten Anforderungskatalog von Funktionen erstellt, die ein Hypertextsystem erfüllen soll. Durch das von B.Campbell und J.M.Goodmann entworfene Modell der HAM können diese Funktionen auf der Ebene der HypertextMaschine betrachtet werden.

Hervorzuheben in der Arbeit von N.M.Delisle und M.D.Schwartz sind die Möglichkeit der Versionsverwaltung, durch die Einführung von Zeitmarken für Knoten und Links sowie die Formalisierung der Funktionen.

Zu den Grundelementen eines Hypertextes, Knoten und Links, werden noch weitere Bauelemente für einen Hypertext eingeführt.

Graph: Ein Graph umfaßt alle Verbindungen eines Hypertextes. Er legt auch den physikalischen Ursprung und die Zugriffsrechte fest.
Attribut: Die Einteilung in Knoten und Verbindungen ist zu ungenau, um komplexere Informationen über die Struktur einzelner Abschnitte zu erhalten. Die Einführung von Attributen für Knoten und Verbindungen erlaubt eine Vielzahl von Zusatzinformationen zu diesen Elementen abzulegen.
Dämon: Dämonen sind Funktionen die externe Ereignisse auslösen und keine Auswirkung auf die Struktur des Hypertextes haben.
Analog zu den verwendeten fünf Architekturelementen werden die Funktionen hinsichtlich ihrer Wirkung aufgeteilt in Graphen-, Knoten-, Verbindungs-, Attribut- und Dämonoperationen. Nachfolgend werden diese Funktionen kurz beschrieben. Die formale Beschreibung, die den folgeneden Abschnitten zugrunde liegt, ist im Anhang (del86) wiedergegeben.

2.3  Graphenoperationen

Ein Graph ist in der Arbeit von N.M.Delisle und M.D.Schwartz die physikalische Ablage der Knoten und Links eines Hypertextes. Die Graphenoperationen betreffen jeweils die Struktur des Hypertextes und haben keinen Einfluß auf die jeweiligen Knoten und Verbindungen. Diese Trennung ist von großer Bedeutung, da für die Löschung von Knoten nicht die zugehörigen Informationen, wie Knoteninhalt oder Attribute, verändert oder gelöscht werden.

Create Graph

Grundlegend für alle weiteren Operationen ist die Erzeugung eines Graphen. Als Parameter benötigt diese Funktion das Verzeichnis, in dem der Graph abgelegt werden soll und eventuelle Zugriffsbeschränkungen auf den Graphen. Das Ergebnis ist ein Projektidentifikator, die ,,ProjectId'', eine Referenz für den Graphen. Die Existenz eines Graphens erlaubt jedoch noch nicht den Zugriff auf diesen.

Destroy Graph

Der Antagonist zur Erzeugung ist die Entfernung des Graphens. Diese Funktion erhält als Parameter die ProjectId und das Verzeichnis. Die Entfernung eines Graphen kann nicht rückgängig gemacht werden.

Open Graph

Existiert ein Hypergraph, so wird dieser zur weiteren Bearbeitung unter Angabe des Projektidentifikators und des Verzeichnisses ,,geöffnet''. Dieses Öffnen eines Graphen erzeugt einen ,,Context''. Der Context stellt die Verbindung zwischen der logischen Ebene der HypertextMaschine und der physikalischen Ebene der Rechnerumgebung dar.

Add Node

Das Hinzufügen eines Knotens erzeugt einen neuen Knoten und liefert als Ergebnis einen Knotenidentifikator mit Zeitstempel. Über den Identifikator kann auf den Knoten zugegriffen werden. Dieser Knoten ist noch nicht in den Graphen eingebunden und kann ohne weitere Verbindungen nur durch seinen Identifikator erreicht werden. Die Eingabeparameter sind zum einen der ,,Context'' und zum anderen ein boolscher Wert, der festlegt, ob eine Versionsverwaltung möglich sein soll. Diese Versionsverwaltung erlaubt es, einen historischen Inhalt eines Knotens für einen gegebenen Zeitpunkt zu rekonstruieren.

Die Funktion ,,Add Node'' ist unabhängig von einem Knoteninhalt. Sie betrifft nur die Struktur des Graphen, daher ist sie auch den Graphenoperationen und nicht zu den Knotenoperationen zugeordnet.

Delete Node

Die Löschfunktion auf Graphenebene für Knoten entfernt den Knotenidentifikator unabhängig von einer eventuell aktiven Versionsverwaltung. Dies bedeutet, daß keine Version dieses Knotens mehr über den Graphen zugänglich ist.

Die Funktion ,,Delete Node'' hat wie die Funktion ,,Add Node'' nur Auswirkungen auf die Struktur des Graphen und ist deshalb ebenfalls eine Graphenoperation.

Add/Copy/Delete Link

Für die Erzeugung eines Links ist die Angabe von zwei Knotenindices notwendig, zwischen denen die Verbindung eingetragen werden soll.

Das Kopieren eines Links stellt den Eintrag einer neuen Verbindung dar, zwischen dem Ursprungsknoten einer bestehenden Verbindung und einem Knoten bzw. zwischen dem Zielknoten einer Verbindung und einem Knoten.

Das Löschen einer Verbindung benötigt als Parameter einen Linkidentifikator. Diese Funktionen betreffen wie die vorangegangenen die Struktur des Graphen und sind daher Graphenoperationen und keine Linkoperationen.

Linearize Graph

Delisle und Schwartz haben in ihrer Veröffentlichung eine Funktion zur Linearisierung eines Graphen beschrieben, die ausgehend von einem gegebenen Knotenidentifikator sowie einer Liste von Prädikaten und Attributen, einen linearen Subgraphen erzeugt.

Get Graph Query

Der resultierende Subgraph dieser Abfrage ergibt sich nicht aus den Inhalten der Knoten sondern, aus der Struktur des Graphen, das heißt ausgehend von einer Prädikaten- und Attributliste wird eine Antwort erzeugt, die diese Vorgaben erfüllen.

2.4  Knotenoperationen

Die Knotenoperationen erlauben den Zugriff auf die informationellen Inhalte der Knoten, die Versionen und die Zugriffsrechte auf Knoten. Nicht ermöglicht wird durch sie ein Zugriff auf Attribute und deren Ausprägungen. Für Zugriffe auf die Attribute ist eine eigene Funktionsklasse vorgesehen.

Open Node

Die Funktion ,,Open Node'' stellt den Inhalt eines Knotens zur Verfügung, die Werte der als Parameter angegebenen Attribute sowie die Verbindungen, die von diesem Knoten ausgehen. Wird als Parameter zusätzlich ein Datum angegeben, bezieht sich das Ergebnis der Funktion auf die zu diesem Zeitpunkt gültige Version.

Modify Node

Die Funktion ,,Modify Node'' fügt einen veränderten Knoten ein. Ist eine Versionsverwaltung aktiv, so wird ein neuer Knoten erzeugt, der mit dem ursprünglichen Knoten verbunden wird. Ist keine Versionsverwaltung aktiv, so wird der zu ändernde Knoten durch den neuen ersetzt, d.h. alle ausgehenden und eintreffenden Verbindungen beziehen sich auf den neuen Knoten.

Get Node Timestamp

Ausgehend von einem Knotenidentifikator wird durch die Funktion Get Node Timestamp das Datum der aktuellen Knotenversion ermittelt. Ist keine Versionsverwaltung vorgesehen, wird als Datum der Wert ,,Null'' ermittelt.

Get Node Versions

Ausgehend von einem aktuellen Knoten wird ein Subgraph erzeugt, der chronologisch durch alle vorhandene Versionen eines Knotens führt.

Get Node Differences

Die Funktion ,,Get Node Differences'' liefert die Unterschiede zwischen zwei Versionen eines Knotens. Als Parameter werden neben dem Knotenidentifikator zwei Daten angegeben, so daß der Vergleich nicht ausschließlich mit dem aktuellen Knoten erfolgen muß.

Change Node Protection

Diese Funktion ermöglicht die Änderung und Vergabe von Zugriffsrechten für einen aktuellen Knoten. Die Bearbeitung der Zugriffsrechte eines Knotens erfolgt über seinen Knotenidentifikator.

2.5  Verbindungsoperationen

Die Änderung von Verbindungen hat immer eine Strukturänderung des Hypergraphen zur Folge. Daher sind diese Funktionaltiäten durch die Klasse der Graphenoperationen abgedeckt. Die Attribute der Verbindungen werden äquivalent zu den Knotenattributen in der selben Funktionsklasse bewerkstelligt. Aus dieser Verteilung von Funktionen, die Verbindungen betreffen, verbleiben nur zwei Verbindungsoperationen.

Get From Node

Diese Funktion ermittelt, ausgehend von einem Verbindungsidentifikator und einem Datum, die zu diesem Zeitpunkt gültige Knotenversion, die Ausgangspunkt der Verbindung ist.

Get To Node

Diese Funktion ermittelt, ausgehend von einem Verbindungsidentifikator und einem Datum, die zu diesem Zeitpunkt gültige Knotenversion, die Ziel der Verbindung ist.

2.6  Attributoperationen

Attribute erweisen sich als mächtige Hilfsmittel zur Gestaltung eines Hypertextes und zur Steuerung der Hypertextoperationen. Deshalb wurde eine eigene Klasse von Operationen vorgesehen. Attribute erlauben es, eine Vielzahl von Informationen zu einem Knoten oder einer Verbindung festzulegen und bei der Informationssuche zu nutzen.

Die Attributfunktionen verlaufen für Knotenattribute und Linkattribute jeweils analog. Lediglich die Parameter zur Identifikation des betroffenen Knotens oder der betroffenen Verbindung unterscheiden sich.

Get Attributes

Diese Funktion ist unabhängig von Knoten und Verbindungen und erzeugt eine Liste aller im Hypergraphen möglichen Attribute und deren Attributidentifikatoren.

Get Attribute Values

Diese Funktion erzeugt ausgehend von einem Attributidentifikator und einem Datum eine Liste aller zu diesem Zeitpunkt zulässigen Ausprägungen eines Attributs.

Get Attribut Index

Die Funktion ,,Get Attribut Index'' ermittelt zu einem gegebenen Attribut den Attributidentifikator. Ist kein Attributidentifikator vorhanden, wird durch diese Funktion das Attribut als Seiteneffekt erzeugt.

Analoge Funktionen für Knoten und Links

Die folgenden Attributoperationen sind im Aufruf und in der Ergebnisstruktur für Knoten und Verbindungen identisch. Die Parameter unterscheiden sich dadurch, daß entweder ein Linkidentifikator oder Knotenidentifikator benutzt wird. Wird in den Parametern ein Attribut erwartet, so wird es durch einen Attributidentifikator angegeben.

Set Link/Node Attribut Value

Diese Funktionen legen die Ausprägungen eines Attributs für eine Verbindung oder einen Knoten fest oder verändern diese. Ein Attribut kann zu einem Zeitpunkt jeweils genau eine Ausprägung haben, daher wird bei aktiver Versionsverwaltung mit jeder Änderung eines Attributs eine neue Version erzeugt.

Delete Link/Node Attribute

Diese Funktionen entfernen ein Attribut von einer Verbindung oder einem Knoten.

Get Link/Node Attributes

Diese Funktionen erzeugen jeweils eine Liste aller zu einem gegebenen Zeitpunkt vorhandenen Attribute und deren Ausprägungen eines Links oder Knotens.

Get Link/Node Attribut Value

Die Funktionen ,,Get Link/Node Attribut Value'' ermitteln als Ergebnis, die Ausprägung eines gegebenen Attributs, zu einem gegebenen Zeitpunkt, für einen Knoten oder einen Link.

2.7  Dämonoperationen

Die Dämonoperationen dienen zur Auslösung und Steuerung externer Funktionen, die keinen Einfluss auf den Hypertext haben. Sie werden an dieser Stelle nicht weiter behandelt, da sie für die Modellierung eines Hypertextsystems zunächst von geringerer Bedeutung sind. Die formalen Vorgaben können im Anhang del86 nachgeschlagen werden.

Chapter 3 
Die modifizierte abstrakte HypertextMaschine

Die bislang entworfenen Hypertextsysteme leben zumeist in ihrer eigenen abgegrenzten Welt und verfügen über nur wenige Schnittstellen zu anderen Applikationen oder anderen Systemen. Für einen Anwender, der in erster Linie Informationskonsument und nicht -produzent sein möchte, sind diese Systeme unzureichend. Dieses Kapitel soll Ansätze aufzeigen, die es ermöglichen, ein breites Informationsangebot zu erreichen. Als Konzept hierfür wird eine HypertextMaschine vorgeschlagen, die durch geeignete Schnittstellen offen gegenüber externen Systemen ist.

In Anlehnung an die ,,Hypertext Abstract Machine'' [cam88] werden mögliche Schnittstellen einer abstrakten HypertextMaschine vorgestellt. Die konkrete Gestaltung der Schnittstellen bleibt aber im weiteren Verlauf offen.

3.1  Elemente und Funktionen einer abstrakten HypertextMaschine

Der Schwerpunkt der vorliegenden Arbeit liegt auf dem Entwurf der Elemente einer HypertextMaschine und deren Basisfunktionen. Dieser Entwurf wird in Kapitel 4 vorgestellt.

Die in den folgenden Kapiteln vorgestellte HypertextMaschine wird im Hinblick auf das in ise91 vorgestellte IBIS-Konzept gestaltet. Dieses Konzept erfordert die Definition von Problembereichen, Fragen, Antworten und Argumenten und eine Strukturierung der Verbindungen zwischen den Elementen des IBIS-Konzeptes.

Daraus ergibt sich für eine HypertextMaschine die Notwendigkeit, informationelle Einheiten einem Typ zuzuordnen. Die HypertextMaschine soll dabei so abstrakt gehalten werden, daß nicht nur die Elemente des IBIS-Konzeptes berücksichtigt werden, sondern einem Anwender der HypertextMaschine die Möglichkeit gegeben wird, beliebige Typen für die Knoten zu definieren.

Das IBIS-Konzept erlaubt nur bestimmte Verbindungen zwischen Problembereichen, Fragen, etc.. Für die HypertextMaschine folgt daraus, daß die Knoten nur in Abhängigkeit von ihrem Typ, mit anderen Knoten verbunden werden können. Die Definition beliebiger Typen für Knoten macht es auch erforderlich, daß der Anwender selbst die möglichen Verbindungen zwischen den Knotentypen definieren kann und die Einhaltung dieser Definitionen durch die HypertextMaschine gewährleistet wird. Die Einschränkung der Verbindungsmöglichkeiten wird durch typisierte Links erreicht. Bei der Etablierung eines Links zwischen zwei Knoten wird dadurch ein Linktyp benötigt. Die HypertextMaschine muß anhand des Linktypes und der Knotentypen überprüfen, ob die gewünschte Verbindung zulässig ist.

Die Ermittlung der Typen von Knoten bzw. Links erfolgt mit Hilfe von Attributen, in denen der Typ vermerkt ist. Durch die Einführung von Attributen für Knoten bzw. Links können Zusatzinformationen abgelegt werden und z.B. zum Auffinden einzelner Knoten bzw. Links genutzt werden.

3.2  Schnittstellen einer abstrakten HypertextMaschine

Ein Großteil von Infomationssystemen dient direkt (s. IBIS-Konzept ise91 [kunz70]) oder indirekt (Aufbereitung von Produktionsdaten) der Entscheidungsunterstützung. Für die Entscheidungsunterstützung ist aber ein System ungeeignet, das erfordert, daß alle für eine Entscheidung relevanten Informationen explizit für das System eingetragen werden. Die Nachteile dieser Vorgehensweise sind beispielsweise die Notwendigkeit einer mehrfachen Datenerfassung, Aktualitätsprobleme, Übertragungsfehler, etc.. Die Verfahrensweise der expliziten Eingabe aller notwendigen Informationen kann umgangen werden, wenn als Datenbasis eine Datenbank verwendet wird, die auch von anderen Applikationen benutzt wird.

Neben einer Erweiterung des Informationsangebotes muß auch in zunehmendem Maße die Einbeziehung von Informationsträgern berücksichtigt werden, die bislang in nur geringem Umfang von Computersystemen aus zugänglich waren, wie audiovisuelle Quellen.
 
 

Abbildung 3.0: Die modifizierte abstrakte Hypertext-Maschine

3.2.1  Datenverwaltung in einer Datenbank

Ein wesentlicher Gedanke dieses Entwurfs ist die Benutzung einer Datenbank zur Verwaltung eines Hypertextes. Die Verwendung einer Datenbank erlaubt, eine HypertextMaschine unabhängig von einer speziellen Hardware und unabhängig von einem speziellen Betriebssystem zu gestalten. Dabei kann die Lösung der Transaktionsprobleme bei einem Mehrbenutzerbetrieb, von der HypertextMaschine auf das Datenbanksystem übertragen werden. Die Verwendung einer Datenbank ermöglicht auch die Nutzung verteilter Datenbestände bzw. erlaubt es, Applikationen auf Computern zu benutzen, auf denen keine Datenbestände abgespeichert sind.

3.2.2  Benutzerinterface

Die Gestaltung des Benutzerinterfaces ist von der jeweiligen Systemumgebung des Anwenders abhängig. Beispielsweise unterscheidet sich die Benutzerschnittstelle in einer Macintosh-Umgebung wesentlich von der Gestaltung der Benutzerschnittstellen der MS-DOS-Welt. Für die Zukunft sind Vereinheitlichungen der Benutzerschnittstellen zu erwarten, wie z.B. durch den ,,Motif Style Guide''.

3.2.3  Mail

Mit steigender Vernetzung der Rechnersysteme nimmt auch die Kommunikation via electronic Mail zu und ersetzt oft schriftliche Mitteilungen. Die Verwaltung der Mail erfolgt zumeist kontextunabängig in einem einzelnen Bereich. Die effiziente Nutzung ist oft nur durch den Ausdruck der Mail möglich und erfordert zuweilen sogar die Neueingabe des Inhalts, wie z.B. die Übernahme von Terminen in Zeitplanungssystemen. Ein offenes Hypertextsystem muß diese Informationen einbeziehen können, da eine Mehrfacheingabe nicht erwünscht sein kann und der Akzeptanz abträglich ist. Für eine sinnvolle Einbeziehung ist es ratsam, die Mail-Handhabung aus dem Hypertext heraus zu ermöglichen, um eingehende Mails direkt in einen Hypertext zu integrieren.

3.2.4  Medienintegration und -steuerung

Die Integration audiovisueller Informationen kann mit unterschiedlicher Stärke erfolgen. In einer ersten Integrationsstufe ist die Information nur Ziel von Verweisen. Der Hypertext startet bei Auswahl des audiovisuellen Knotens das entsprechende Medium und kehrt anschließend zum Ausgangsknoten zurück. So kann der Aufruf einer Grafik einen visuellen Knoten darstellen.

Eine stärkere Einbindung dieser Informationen erfolgt, wenn sie selbst Quelle von Links sein können. Beispielweise können an Buisness Charts detailliertere Grafiken angebunden sein, oder es besteht eine Auswahl weiterführender Informationen. In einem Hypertext können auch Informationen über Ferienhäuser verwaltet werden, wobei die Knoteninhalte als Bild oder Video vorliegen. Existiert zu jedem Raum ein Knoten, so kann ähnlich einem Rundgang durch das Gebäude, jeweils eine Darstellung eines Raumes gewählt werden, der mit dem aktuellen durch eine Türe in Verbindung steht oder der über den Knoten des Grundrisses gewählt wird.

Die komplexeste Form der Integration erlaubt schließlich Links aus ablaufenden Informationen heraus. So ist denkbar, daß die Aufzeichnung einer Rede einbezogen ist und zu einzelnen Punkten weiterführende Erläuterungen gegeben sind. Wird der Ablauf der Aufzeichnung unterbrochen, so wird zunächst der als letztes aufgetretene Link angeboten.

Während die Konzepte der logischen Integration einfach skizzierbar sind, ist die physikalische Realisierung der Integration audiovisueller Knoten, die nicht innerhalb eines Computers verwaltet werden können, nicht sofort einsichtig. Selbstverständlich kann auf zukünftige Schnittstellen und Protokolle verwiesen werden, jedoch sind auch heute gebräuchliche Protokolle und Schnittstellen durchaus in der Lage, die oben genannten Anforderungen in gewissem Maße zu erfüllen. Die möglichen Hilfsmittel, die rechnergestützt verwendet werden können, sind im audiovisuellen Bereich die Infrarotsteuerungen von Audio/Video Geräten, die Datenprotokolle elektronischer Instrumente sowie die Nutzung von Einzelbildkennzeichnungen auf Video-Bändern.

3.2.5  Einbindung von Datenbankabfragen

Bereits heute liegt eine Vielzahl von Informationen in kommerziellen Datenbanken bereit und kann mit entsprechenden Verfahren abgerufen werden. Die Einbeziehung dieser Datenquellen eröffnet die Möglichkeit, den Anwendern einen großen Datenbestand zur Verfügung zu stellen.

Für die Einbindung der Datenbankabfragen bestehen je nach Aktualitätsanforderungen, Breite des Anwenderspektrums und Stabilität des Informationsbedarfes verschiedene Verfahrensweisen, die sich hinsichtlich ihrer Kosten und Zugriffszeiten sehr unterscheiden. Anfragen, die erst bei der Aktivierung eines Knotens, gegen eine Datenbank gestellt werden, erfordern mehr Rechenzeit, als Anfragen deren Ergebnis als Knoten abgelegt ist.

Für Anfragen, die eine stabile Struktur aufweisen, ist es sinnvoll die Formulierung durch einen Autor erstellen zu lassen, der mit der jeweiligen Datenbank vertraut ist. Das Ergebnis der Anfrage wird den Anwendern in einem Knoten zur Verfügung gestellt.

Instabile Anfragen, d.h. Anfragen, deren Struktur sich häufig änderen, werden nur selten von einer größeren Anzahl Anwender benötigt. Für die Erstellung dieser Anfragen wird daher entweder eine hohe Kompetenz bezüglich der Datenbanken gefordert sein oder ein Verfahren, das es einem Anwender erlaubt, unabhängig von der Zieldatenbank eine Anfrage zu erzeugen. Diese Anfrage wird dann in die jeweilige Abfragesprache der Zieldatenbank gewandelt und ausgeführt.

Für die Datenhaltung besteht zum einen die Möglichkeit für jeden Knotenaufruf eine Anfrage gegen eine Datenbank zu stellen und so den Knoteninhalt aktuell zu halten. Eine weitere Möglichkeit ist das Anfrageergebnis zu speichern und nur bei Überschreitung einer Aktualitätsanforderung erneut durchzuführen. Das erste Verfahren ist zum Beispiel für ein Informationssystem, das Börsenkurse zur Verfügung stellt, sinnvoll. Das zweite Verfahren ist bezüglich Leitungs- und Anfragekosten deutlich günstiger und kann für alle Anfragen verwendet werden, deren Ergebnisse als tages-, monats- oder quartalsgenaue Werte ausreichend sind.

Chapter 4 
Elemente und Funktionen einer abstrakten HypertextMaschine

In diesem Kapitel werden die Elemente und Strukturen einer abstrakten HypertextMaschine definiert sowie Funktionalitäten, die die im vorangegangenen Kapitel gestellten Anforderungen umsetzen. Der Schwerpunkt liegt dabei auf der Modellierung der Hypertextelemente (Knoten und Links). Die internen Strukturen der Elemente werden durch ihre Attribute und ihre Klassenzugehörigkeit definiert. Ein weiterer Schwerpunkt ist die Strukturierung der Verbindungsmöglichkeiten zwischen den Knoten.

Die folgenden Funktionen befinden sich auf der Ebene der Hypertext-Maschine. Anwender von Hypertext benutzen die Funktionen der Anwendungsschicht. Diese Funktionen können Funktionen der HypertextMaschine zusammenfasen oder ähnlich dem Filterkonzept in UNIX hintereinander ausführen, ohne daß der Anwender dies bemerkt.

Die Funktionen der modifizierten HypertextMaschine werden in diesem Kapitel  formalisiert dargestellt. Durch diese Darstellung können Parameter und Ergebnisse eindeutig bestimmt werden und die Funktionen werden im weiteren Verlauf einfacher referenzierbar. Die Parameter und Ergebnisse der Funktionen werden abstrakt definiert, da die Auswahl von konkreten Datentypen von der Arbeitsumgebung der HypertextMaschine abhängig ist.

4.1  Definition der Elemente von Hypertext

4.1.1  Klassen für Knoten und Verbindungen

Auf unterster Ebene besteht ein Hypertext aus Knoten und Links zwischen diesen. Diese Definition allein wird jedoch nicht den Anwendungen gerecht, in denen die Struktur eines Hypertextes mehr Information beinhalten soll, als: ,,Knoten X und Knoten Y haben miteinander zu tun.''

Eine einfache Form der Strukturierung kann erzielt werden, indem gerichtete Links erlaubt werden, für die je ein Quellknoten und ein Zielknoten definiert sind. Mit diesen gerichteten Links kann eine Hirachie der Informationen erzeugt werden. Werden Verbindungsmöglichkeiten mit semantischer Bedeutung zur Verfügung gestellt, können auch Aussagen über die Intention einer Verbindung gemacht werden. Eine dieser Verbindungsmöglichkeiten, kann beispielsweise bedeuten: ,,Knoten X ist eine Antwort auf Knoten Y.''

Die Verbindungsmöglichkeiten müssen im Hypertext konsistent sein, d.h. bei der Verfolgung eines Links der oben erwähnten Art muß der Zielknoten jeweils eine Antwort auf den Quellknoten sein. Aber es kann auch gefordert sein, daß eine Antwort immer mit einem Link dieser Art an einen Quellknoten gebunden ist.

Diese Anforderungen ergeben die Notwendigkeit einer Klassifizierung der Knoten und Links. Dies bedeutet für den Hypertext, daß jeder Knoten und jeder Link einer Klasse angehört. Diese Klassenzugehörigkeit oder Typisierung wird bei der Erzeugung eines Knotens oder eines Links festgelegt und soll später wieder ermittelbar sein.

Diese Typisierungen werden global definiert und bei der Erzeugung eines Knoten oder einer Verbindung nur noch referenziert. Beispielsweise würden bei einer Modellierung des in ise91 vorgestellten IBIS-Konzeptes Knoten mit dem Typ ,,Antwort'' und Knoten mit dem Typ ''Argument'' existieren. Eine Verbindung zwischen zwei Knoten dieser Typen wäre in diesem Fall z.B. vom Typ ''unterstützendes Argument einer Antwort''.

Eigenschaften der Typisierung

Die Eigenschaften der Typisierung werden zunächst wie folgt festgelegt: Für die Anwendungsschicht werden Funktionen notwendig, die Struktur der Typen sowie der Knoten und Links ermitteln können.

Definition von Knotentypen und Linktypen

Bei der Definition eines Linktyps oder Knotentyps wird ein ,,Typidentifikator'', auch ,,TypId'' erzeugt, mit dem der entstandene Typ angesprochen wird. Dieser Typidentifikator ist jedoch für einen Anwender nicht aussagekräftig. Daher wird für einen Typ ein Typname vergeben und eventuell eine kurze Typbeschreibung, die Erläuterungen zu dem Typ beinhalten kann. Die Funktionen zur Erzeugung von Knotentypen und Linktypen werden in der folgenden Form benutzt: Die HypertextMaschine dieser Arbeit soll unter anderem auch eine Versionsverwaltung und einen Mehrbenutzerbetrieb berücksichtigen. Daher enthält die Standardbeschreibung der Typen, Knoten und Links jeweils das Datum der Erzeugung, das ,,Entstehungsdatum'' und den Benutzer, der die Erzeugung des entsprechenden Elementes veranlaßt hat, den ,,Autor''. Der Autor und das Entstehungsdatum sind jeweils nicht notwendig für Hypertextsysteme, die keine Versionsverwaltung vorsehen oder es nicht ermöglichen, daß Elemente von mehreren Benutzern erzeugt werden können.

Die Standardbeschreibung der Typen für Knoten und Links beinhaltet also den Typnamen, die Typbeschreibung, das Entstehungsdatum und den Autor des Typs. Der Typname und die Typbeschreibung stammen aus den Parametern der erzeugenden Funktion. Das Entstehungsdatum und der Autor werden aus der Rechnerumgebung ermittelt. Anschaulich läßt sich ein Typ darstellen wie in Abbildung 4.1.
 
 

Abbildung 4.0: Ein erzeugter Knoten-/Link- Typ

Der Typ selbst ist durch seinen ,,Knotentypidentifikator'' bzw. ,,Linktypidentifikator'' bestimmt. Mit Hilfe dieses Identifikators können die Standardinformationen eines Typs ermittelt werden. Diese Standardinformationen sind der Typname, die Typbeschreibung, das Entstehungsdatum des Typs und der Autor, der den Typ definiert hat.

Einem so definierten Typ kann nun eine Attributmenge zugeordnet werden. Die einzelnen Attribute dieser Menge können spezifisch für diesen Typ vorbelegt werden.

Die Funktionen zur Erzeugung von Attributen und die Funktionen zur Bestimmung der Attributmenge eines Types werden für die Erzeugung eines Knotentyps oder Linktyps nicht benötigt. Die Definition dieser Funktionen erfolgt in 4.2.1.

4.1.2  Erzeugung von Knoten

Knoten sind eines der beiden Grundelemente eines Hypertextes. Ein Knoten ist durch seinen Typ definiert und umfaßt einen informationellen Inhalt, der unterschiedliche Präsentationsformen haben kann (textuell, grafisch, audiovisuell, ...). Für den Zugriff auf einen Knoten wird ein ,,Knotenidentifikator'', auch ,,KnotenId'' benutzt. Die Attributmenge eines Knotens wird durch dessen Typ bestimmt, kann aber gegebenenfalls noch ergänzt werden. Auch bei der Erzeugung eines Knotens werden das Entstehungsdatum und der Autor  des Knotens vermerkt. Autor und Entstehungsdatum werden zur Unterscheidung von unterschiedlichen Versionen eines Knotens und für Anwendungen benötigt, in denen mehrere Benutzer Knoten erzeugen können.

Unter Umständen ist es sinnvoll, einen Knoten zu erzeugen, der keinen informationellen Inhalt hat, etwa wenn dieser der Zusammenfassung weiterer Knoten dient oder der Inhalt erst zu einem späteren Zeitpunkt ermittelbar ist.

Die Erzeugung eines Knotens erfolgt daher ohne die Festlegung eines informationellen Inhalts. Die Funktion zur Zuordnung des informationellen Inhalts eines Knotens wird in 4.2.5 eingeführt.

Die Veranschaulichung eines Knoten gibt dabei Abbildung 4.2.
 

Abbildung 4.0: Ein Knoten aus Verwaltungssicht

Ein Knoten wird durch seinen Knotenidentifikator referenziert. Mit Hilfe dieses Identifikators können die Standardinformationen eines Knotens ermittelt werden. Diese Standardinformation sind der Knotentypidentifikator, das Entstehungsdatum des Knotens und der Knotenautor. Die Grundattribute eines Knotens sind durch die Attributmenge des Knotentyps bestimmt. Der Knotenidentifikator gewährleistet auch die Verbindung zu dem informationellen Inhalt des Knotens oder zu weiteren Eigenschaften wie in 4.2.5 beschrieben.

4.1.3  Einrichten von Links

Charakteristisch für einen Hypertext sind die Verbindungen zwischen den Knoten, die ,,Links''. Diese Links stellen gerichtete Verbindungen zwischen Knoten dar. Die Typen der Links können eine Semantik beinhalten. Diese Semantik kann z.B. eine Aussage repräsentieren in der Form ,,Knoten X ist ein Kommentar zu Knoten Y''. Daraus ergeben sich für die Etablierung eines Links drei Parameter. Der Quellknoten, der Zielknoten und der Linktyp. Erzeugt wird daraus ein Linkidentifikator, auch ,,LinkId'', über den auf die Verbindung zugegriffen werden kann. Für Mehrbenutzeranwendungen und Versionsverwaltung werden, wie bei der Erzeugung von Knoten, Autor und Entstehungsdatum als Standardinformation eingetragen. Die Attributmenge eines konkreten Links kann ebenfalls erweitert werden. Anschaulich hat eine eingetragene Verbindung eine Form wie in Abbildung 4.3 dargestellt.
 

Abbildung 4.0: Eine Verbindung aus Verwaltungssicht

Der eingetragene Link kann durch seinen Linkidentifikator angesprochen werden. Dieser Identifikator erlaubt auch den Zugriff auf die Standardinformationen des Links. Diese Standardinformation sind der Linktypidentifikator, über den die Grundattribute definiert werden, das Entstehungsdatum und der Benutzer, der den Link etabliert hat sowie der Quellknotenidentifikator und der Zielknotenidenitfikator, über die auf die Quell- und Zielknoten zugegriffen werden kann.

4.1.4  Definition von Attributen

Bei den vorangegangen Elementen der abstrakten HypertextMaschine wurden Attributmengen für Knoten und Links eingeführt. Die einzelnen Attribute beinhalten zusätzliche Informationen für einen konkreten Knoten bzw. Link. Diese Information kann ein numerischer Wert sein, ein kurzer Text, ein kalendarisches Datum oder ein Kennzeichen. Beispielsweise können für einen Knoten vom Typ ,,Personenbeschreibung'', Attribute wie ,,Geburtsdatum'' oder ,,Geschlecht'' vorgegeben sein. Der Wert des Attributs ,,Geburtsdatum'' ist ein kalendarisches Datum, der Wert des Attribute ,,Geschlecht'' ein Kennzeichen. Bei Linktypen sind zur Eingrenzung der Verbindungsmöglichkeiten Attribute wie ,,zulässiger Quellknotentyp'' und ,,zulässiger Zielknotentyp'' denkbar.

Attribute werden auf zwei unterschiedliche Arten betrachtet. Die erste Art betrachtet die Definition eines Attributs, die andere Form betrachtet die Werte, die Ausprägungen, die ein Attribut für einen konkreten Knoten oder Link beinhaltet.

Im definitorischen Teil eines Attributs ist ein ,,Attributname'' und eine ,,Attributbeschreibung'' enthalten, Attributname und Attributbeschreibung dienen dazu, einem Anwender Informationen über das Attribut zu geben. Z.B. kann zu einem Attribut ,,Geburtsname'' eine Beschreibung vorhanden sein: ,,der Geburtsname wird eingtragen, falls der Familienname durch Heirat oder Adoption geändert wurde.''

Weitere Standardinformationen der Attribute sind der ,,Typ der Attributwerte'', im folgenden ,,Attributstyp'' genannt. Dieser Attributstyp legt fest, ob die Ausprägungen, die dieses Attribut annehmen kann, numerisch, textuell, etc. sind. Weiterhin wird die ,,Mindestanzahl'' und ,,Maximalzahl'' möglicher Ausprägungen festgelegt. Mindestanzahl bedeutet, daß ein Knoten oder Link, für den dieses Attribut definiert ist, die Mindestanzahl an Ausprägungen haben muß. Wie z.B. Ein Attribut ,,Geschlecht'' mit mindestens einem Wert belegt sein muß. Maximalzahl von Ausprägungen bedeutet, daß ein Knoten oder eine Verbindung für dieses Attribut nicht mehr als diese Anzahl Ausprägungen haben kann. Wie z.B. ein Attribut ,,Prüfungsergebnis'' maximal drei Ausprägungen haben kann, für einen ersten und zweiten Versuch sowie für einen Härtefall.

Der beschreibende Teil eines Attributs kann außer den vorangegangenen Informationen noch Vorbelegungen der Attributausprägungen enthalten, mit Werten oder Variablen. Variable sind dabei Werte, die durch Hilfsprogramme aus der Rechnerumgebung ermittelt werden können, wie z.B. eine Benutzerkennung oder das Tagesdatum. Zusätzlich können Einschränkungen zulässiger Werte vorhanden sein, die ein Attribut als Ausprägung annehmen kann. Die Vorbelegung mit Standardwerten und die Einschränkungen der Wertemengen sind für die Erzeugung eines konkreten Attributs nicht notwendig. Die Funktionen zur Vorbelegung mit Standardwerten und zur Definition von Wertebereichen werden in 4.2.8 erläutert. Die Handhabung der Attribute erfolgt durch einen Attributidentifikator, auch ,,AttributId''.

Die zweite Betrachtungsweise der Attribute behandelt die Ausprägungen für existierende Knoten bzw. Links und benötigt eine Funktion, die für einen konkreten Knoten oder Link einen Wert als Ausprägung des Attributs einträgt. Für diese Funktion werden der Knotenidentifikator, der Attributidentifikator und der zu setzende Wert benötigt. Die Funktion zum Setzen eines Linkattributes erfordert die analogen Parameter. Sind mehrere identische Ausprägungen eines Attributs zu einem Knoten oder Link möglich, so muß es eine Unterscheidungsmöglichkeit für diese Werte geschaffen werden. Dies kann durch das Eintragungsdatum und Eintragungszeit oder durch eine Numerierung der Eintragungen erfolgen. Eine Veranschaulichung der Attribute gibt die Abbildungen 4.4.

Abbildung 4.0: Attribute aus Verwaltungssicht

Der beschreibende Teil der Attribute kann durch den Attributidentifikator ermittelt werden und beinhaltet die Standardinformationen Attributname, Attributbeschreibung, Attributstyp sowie die mögliche Ausprägungsanzahl. Unabhängig von diesen Standardinformationen können die Attribute mit Standardwerten oder Bereichseinschränkungen belegt sein, die ebenfalls durch den Attributidentifikator ermittelt werden.

Die Verwaltung der Attributausprägungen erfolgt ebenfalls über die Attributidentifikatoren. Die Ausprägungen beinhalten jeweils einen Wert und einen Knotenidentifikator bzw. Linkidentifikator, für den dieser Wert Gültigkeit hat.

4.2  Funktionen für Instanzen von Hypertext-Elementen

In diesem Abschnitt werden Funktionen für die HypertextMaschine eingeführt, die es erlauben, Attribute den Mengen für Knotentypen bzw. Linktypen zuzuordnen, typspezifische Standardwerte zu definieren und die getroffenen Festlegungen zu ermitteln.

4.2.1  Funktionen zur Definition von Attributmengen

Knotentypen und Linktypen legen Mengen von Attributen fest, die bei der Erzeugung eines konkreten Knotens bzw. Links für diesen als Standardmenge übernommen werden.

Ist ein Typ definiert, kann eine Menge von Attributen diesem Typ zugeordnet werden. Die Grundfunktion hierfür ist das Hinzufügen eines Attributs zu einem Typ. Diese Funktion benötigt als Parameter den Typidentifikator und den Attributidentifikator. Für diese ,,Addition'' eines Attributs zu einem Typ wird gefordert, daß ein Attribut für jeden Typ nur einmal vorhanden ist.

Schlägt die Funktion fehl, weil z.B. ein Knotenattribut nicht bei einem Linktyp eingetragen werden kann, wird eine geeignete Fehlermeldung erzeugt.

Bei manchen Anwendungen kann es sich ergeben, daß verschiedene Knotentypen oder Linktypen Ähnlichkeiten mit anderen Typen aufweisen bzw. Unterklassen von anderen Typen sind. Für diese Anwendungen ist es sinnvoll, Funktionen zur Verfügung zu stellen, die es erlauben die Attributmenge eines anderen Typs zu übernehmen. Dieses Hinzufügen einer Attributmenge benötigt einen Zieltypidentifikator und einen Ausgangstypidentifikator.

Nach den bei ,,Addiere Attribut'' genannten Anforderungen müßten bei ,,Addiere Typ'' die Attributmengen von Ziel- und Ausgangstyp disjunkt sein, da ansonsten bei Addition der Attribute diese mehrfach eingetragen wären. Zur Vereinfachung der Typdefinition wird hier wie folgt verfahren: Sind bei Ziel- und Ausgangstyp gleiche Attribute vorhanden, so werden diese nicht ein weiteres Mal beim Zieltyp eingetragen.

Bei der ,,Addition'' von Attributmengen kann es auch vorkommen, daß Attribute übernommen werden, die für den Zieltyp nicht erwünscht sind. Diese Attribute müssen dann entfernt werden können. Das Entfernen eines Attributs benötigt den Typidentifikator und den Attributidentifikator.

Die Knotentypen und Linktypen sollen jedoch nicht nur die Menge der Attribute für diese festlegen, sondern auch geeignet vorbelegen. Diese Vorbelegung mit Standardwerten erfordert den Knotentyp- oder Linktypidentifikator, den Attributidentifikator, für den sie gültig ist, sowie den Wert selbst. Diese Funktionen können so oft angewendet werden, bis die bei der Definition des entsprechenden Attributs angegebene Maximalzahl von Attributausprägungen erreicht ist. Danach kann entweder eine Fehlermeldung erzeugt werden, oder je nach Vereinbarung wird der älteste oder jüngste Eintrag eines Standardwertes geändert.

4.2.2  Funktionen zur Ermittlung von Informationen über Attributmengen

Aus den vorangegangen Funktionen ergibt sich der Bedarf, die dort getroffenen Festlegungen zu ermitteln. Die Ermittlung dieser Festlegung ist beispielsweise notwendig, um bei Änderungen der Typen deren bisherige Struktur zu betrachten. Wichtiger ist jedoch die Ermittlung der Attributmenge und der Standardwerte für die Erzeugung eines konkreten Knotens oder Links, da in diesem Fall alle Attribute und deren Vorbelegungen für den neu entstanden Knoten bzw. Link eingetragen werden müssen.

4.2.3  Funktionen zur Änderung von Standardwerten von Knotentypen und Linktypen

Im Laufe der Zeit können sich die Anforderungen an die Attributmengen und Standardwerte der Typen verändern. Das Ändern der Attributmenge ist bereits mit den Funktionen ,,addiere Attribut'' und ,,entferne Attribut'' möglich. Diese Änderungen der Attributmengen bergen jedoch die Gefahr, daß exisitiernde Knoten oder Links nach dem Hinzufügen eines Attributs nicht alle Attribute ihres Elementtyps beinhalten. Für diesen Fall müssen bei allen existierenden Knoten und Links des veränderten Typs die Attribute hinzugefügt werden. Beim Entfernen eines Attributs bestehen zwei Möglichkeiten der Korrektur. Die erste Möglichkeit wäre, bei allen Knoten und Links das entsprechende Attribut zu entfernen. Dieses Verfahren hat aber mit Sicherheit zur Folge, daß Informationen verloren gehen, die einzelne Anwender noch benötigen. Die andere Verfahrensweise ist, die Knoten und Links unverändert zu belassen. Die aus dem Typ entfernten Attribute wandeln sich bei den konkreten Knoten und Links nur von Typattributen zu Zusatzattributen.

Die Veränderung von Standardwerten der Attribute ist für den Anwender aufwendiger. Attribute können mehrere Standardwerte haben und eine Änderung aller Vorbelegungen eines Attributs ist sicher selten erwünscht. Daraus ergibt sich die Notwendigkeit, den gewünschten Wert zu identifizeieren. Diese Identifizierung geschieht durch die Angabe des alten Wertes.

Eine große Bedeutung hat die Vorbelegung mit Standardwerten für Regelung der Verbindungsmöglichkeiten zwischen einzelnen Knoten, die im folgenden Abschnitt erläutert wird.

4.2.4  Regelung der Verbindungsmöglichkeiten durch Linktypen.

Die Hauptaufgabe der Linktypen ist die Vorstrukturierung der Verbindungen zwischen Knoten. Es soll auch die Möglichkeit geschaffen werden, Teilnetze4 aus einem Hypertext zu lösen. Die Festlegung der Strukturen erfolgt durch Linkattribute. Diese Regelung der Verbindungsmöglichkeiten kann durch unterschiedliche Ansätze erzielt werden.

Explizite Vorgabe der Verbindungsmöglichkeiten.

Der erste Ansatz sieht eine explizite Vorgabe möglicher Verbindungen vor. Das bedeutet, es exisitert ein Attribut ,,zulässige Verbindung'', das in der Attributmenge jedes Verbindungstyps enthalten ist. Als Standardwerte sind Ausprägungen in der Form ,,(Quellknotentyp; Zielknotentyp)'' vorhanden. Dabei können mehrere Ausprägungen vorhanden sein.

Zum Beispiel werden oft Verbindungstypen benötigt, die eine Verbindung zwischen allen Knotentypen zulassen. Das Attribut ,,zulässige Verbindung'' hätte als Ausprägungen für einen derartigen Linktyp das kartesische Produkt der Knotentypen. Wird ein weiterer Knotentyp eingeführt, so muß für jeden existierenden Knotentyp ein Eintrag erfolgen.

Ein einfacheres Verfahren für Verbindungen, die zwischen allen Knotentypen möglich sind, wäre eine Festlegung in der Art: ,,Sind keine zulässigen Verbindungen eingetragen, so ist eine Verbindung zwischen allen Knotentypen möglich.''

Mengenorientierte Vorgabe der Verbindungsmöglichkeiten.

Ein weiterer Ansatz ist, daß für die Verbindungstypen Mengen von Quellknotentypen und Zielknotentypen definiert werden. D.h. es existieren zu einem konkreten Linktyp ein Attribut ,,Quellknotentyp'' und ein Attribut ,,Zielknotentyp'', die jeweils mit mehreren Standardwerten vorbelegt sein können. Als zulässige Verbindung wird dann jede Kombination eines Quellknotentyps und eines Zielknotentyps erlaubt.

Diese Vorgehensweise hat Vorteile für Verbindungstypen, die zwischen mehreren Knotentypen beliebig gesetzt weden können. Das Verfahren der expliziten Vorgabe würde für diese Fälle das Produkt der Anzahl Ausgangs- und Zielknotentypen als Anzahl Standardwerte benötigen und insbesondere bei Erweiterung der zulässigen Knotentypen einen hohen Arbeitsaufwand erfordern.

Im weiteren Verlauf der Arbeit wird das Verfahren der getrennten Verwaltung von Quell- und Zielknoten präferiert. Für dieses Verfahren werden Funktionen definiert, mit denen sich zulässige Quell- und Zielknotentypen festlegen lassen.

Für die Definition eines Hypertextes ergibt sich aus diesen Regelungen die Notwendigkeit von Funktionen, die alle Verbindungsmöglichkeiten zwischen zwei Knoten ermitteln und die ausgehend von einem Knotentyp und einem Linktyp mögliche Ziel- oder Quellknotentypen ermitteln.

4.2.5  Funktionen für Knoten

Funktionen für Knoteninhalte und der Knotenattribute

In 4.1.2 wurden Funktionen beschrieben, die es erlauben, einen Knoten zu erzeugen, ohne jedoch einen informationellen Inhalt festzulegen. Die Definition eines informationellen Inhalts für einen Knoten wird durch Funktionen bewerkstelligt, die je nach Repräsentationsform des Inhalts unterschiedlich arbeiten und einem Attribut des Knotens, ,,Typ des Knoteninhalts'', eine Information über die Repräsentationsform des informationellen Inhalts zuordnen.

Als Repräsentationsformen seien hier exemplarisch gewählt:

Aus dieser Auswahl ergeben sich je drei Funktionen zur Definition und zur Änderung eines Knoteninhalts. Die Funktionen starten jeweils einen geeigneten Editor und ordnen den entstandenen Text dem entsprechenden Knoten zu. Ein Knoten, der eine Datenbankanfrage zum Inhalt hat, ist durch ein entsprechendes Attribut gekennzeichnet. Ein solcher Knoten beinhaltet als internen Text die Syntax der Datenbankanfrage. Die Anfrage wird ausgeführt, sobald der Knoten aktiviert wird.

Die Löschung eines Knoteninhalts bedarf nicht der Unterscheidung nach Repräsentationsformen und kann durch eine einzelne Funktion bewerkstelligt werden.

Die Ermittlung eines Knoteninhalts kann ebenfalls formal durch eine Funktion erledigt werden, da der Typ des Inhalts bei dem Knoten in einem Attribut vermerkt ist, das durch die Funktion ermittelt werden kann. Eine Form der Generierung eines Knotens mit Inhalt ist das Kopieren eines Knotens. Dieses ,,Kopieren'' übernimmt nicht nur den Inhalt des Knotens und seiner Attribute, sondern erzeugt auch einen Link vom Typ ,,Kopie eines Knotens'' zwischen dem Ursprungsknoten und der Kopie. Durch diese Verbindung zu dem Ursprungsknoten können auch dessen Verbindungen genutzt werden. Zur Bearbeitung der Attribute von Knoten werden Funktionen notwendig, die zusätzliche Attribute hinzufügen, Werte für Attribute setzen und ändern. Der Aufbau der Funktionen ist ähnlich dem Aufbau der Funktionen für Knotentypen und benötigen im allgemeinen Knotenidentifikatoren und Attributidentifikatoren. Die möglichen Attribute und deren Ausprägungen müssen auch ermittelt werden können.

4.2.6  Definition der Navigationsfunktionen auf Knotenebenen

Die bisherigen Funktionen erlauben die Erzeugung von Knoten und die Etablierung von Verbindungen, jedoch noch nicht ein ,,Bewegen'' innerhalb des Hypertext. Unter Bewegung in einem Hypertext wird verstanden, daß von einem ,,aktuellen'' Knoten ausgehend ein ,,anderer'' Knoten erreicht wird.

Dieser aktuelle Knoten muß zunächst aktiviert werden. Für die Auswahl eines geeigneten Knotens wird zunächst ein Knotenidentifikator ermittelt. Diese Ermitllung kann z.B. anhand der Knotenattribute, wie in 4.2.9 beschrieben, erfolgen. Die Aktivierung eines Knotens erfordert die Angabe eines Knotenidentifikators.

Der Knotenidentifikator des aktuellen Knotens wird für alle Funktionen als Standardparameter benutzt, falls nicht explizit ein anderer Knotenidentifikator angegeben wird. Die Ermittlung des Identifikators des aktuellen Knotens erfolgt mit einer Funktion ohne Parameter. Die nachfolgenden Funktionen beziehen sich jeweils auf den ,,aktuellen'' Knoten, können aber auch unter Angabe eines Knotenidentifikators unabhängig davon benutzt werden. Daher werden auch in diesen Funktionen Knotenidentifikatoren als Parameter benutzt.

Auswahl des nächsten ,,aktuellen'' Knotens

Für die Auswahl des nächsten Knotens sind zwei Vorgehensweisen möglich. Entweder es wird wie im vorigen Abschnitt verfahren und ein Knoten über seinen Identifikator ausgewählt und aktiviert oder man verfolgt einen Link, der den aktuellen Knoten als Quelle bzw. als Ziel hat. Für die Auswahl eines geeigneten Links werden Funktionen zur Verfügung gestellt, die alle ausgehenden bzw. eintreffenden Links ermitteln und Funktionen die alle Ziel- bzw. Quellknoten ermitteln. Die Ergebnisse dieser Funktion werden häufig durch ihren Umfang unübersichtlich sein. Eine geeignete Auswahl aus den Ergebnislisten kann mit dem in 4.2.9 vorgestellten ,,Filterkonzept'' erfolgen.

4.2.7  Funktionen für Links

Die in 4.1.3 etablierten Links enthalten nur die durch die Linktypen vordefinierten Zusatzinformationen. Für die weitere Spezifizierung von Links werden analog zu den Funktionen für Knoten aus 4.2.5 Funktionen bereitgestellt, die es erlauben, Attribute zu vergeben, Werte zu belegen, zu verändern und zu ermitteln. Wichtige Funktionen für die Navigation in einem Hypertext, sind die Ermittlung der Quelle eines Links und seines Zieles:

4.2.8  Funktionen für Attribute

Die Attribute erfüllen eine wichtige Funktion zur Spezifizierung von Knoten und Verbindungen. Durch sie können aus einer Vielzahl von Knoten oder Verbindungen geeignete herausgefunden werden, ohne die informationellen Inhalte durchsuchen zu müssen.

Nach der Erzeugung von Attributen können diese ebenfalls noch genauer definiert werden. Die Vergabe von Standardwerten wurde bereits in 4.2.1 für Typen erläutert und die Funktionen sind analog auf Attributebene vorhanden.

Eine weitere Notwendigkeit für Attribute ist die Beschränkung des Gültigkeitsbereiches ihrer Ausprägungen. Diese Beschränkung kann stetig sein, z.B. für ein Attribut ,,Rabatt'' auf den numerischen Bereich zwischen 0 und 100. Die Einschränkung ist auch diskret möglich und etwa für ein Attribut ,,Prüfungsergebnis'' eingeschränkt auf die Ausprägungen ,,sehr gut'', ,,gut'', ,,befriedigend'', ,,ausreichend'' und ,,nicht bestanden" oder gemischt in der Art eines Attributs ,,Prüfungsnote'', das den Bereich 10 bis 40 und den Einzelwert 50 annehmen kann. Diese Beispiele deuten auch die dafür notwendigen Funktionen an. Die Vergabe, Änderung und Ermittlung von gültigen Bereichen und von gültigen Werten, die auch gemischt verwendet werden dürfen. Dabei verlaufen die Funktionen für jede Form eines Attributtyps analog; daher wird dieser in der Beschreibung nicht berücksichtigt.

4.2.9  Filter für Attribute von Knoten und Links

Die in den vorangegangenen Abschnitten eingeführten Funktionen haben zum Teil Listen von Knoten und Links zum Ergebnis. Für eine gezielte Auswahl eines Knotens oder einer Verbindung sind diese Listen zumeist zu umfangreich, daher werden Funktionen beschrieben, die diese Listen einschränken. Diese Einschränkung kann durch Filter für Attribute von Knoten und Links erreicht werden. Ein solcher Filter ist gegeben, wenn von einer durch eine Funktion erzeugten Liste nur die Elemente berücksichtigt werden, die zu einem gegebenen Attribut eine bestimmte Ausprägung haben. Beispielsweise werden aus einer Liste mit Knoten nur die berücksichtigt, die ein Attribut ,,Problembereich'' haben, das mit der Ausprägung ,,Wasserwirtschaft'' belegt ist.

Diese Attributfilter arbeiten parallel zu allen Funktionen, die eine Liste von Knoten oder Links zum Ergebnis haben. Dies bedeutet, daß die Ergebnislisten dem Anwender nur in der ,,gefilterten'' Form zur Verfügung stehen und für komplette Listen die Filter entfernt werden müssen.

Diese Filter existieren zunächst nur im Umfeld des Anwenders, der sie einsetzt, und nur für die Zeit, in der er mit dem Hypertext arbeitet. Der Zugriff auf die Filter erfolgt mit Hilfe eines Filteridentifikators, auch ,,FilterId''. Denkbar ist auch, daß die Filter als spezielle Knoten gespeichert werden und durch eine geeignete Funktion aktiviert werden.

Die Filter können nicht nur dazu genutzt werden, sinnvolle Einschränkungen bei den Ergebnissen der Funktionen zu treffen. Die Filter können auch dazu verwendet werden, aus der Gesamtheit aller Knoten oder Links ein einzelnes Element zu wählen. Dazu wird eine Funktion benötigt, die eine Liste aller Knoten bzw. Links erzeugt.

4.3  Weitere, spezielle, Funktionen der HypertextMaschine

In diesem Abschnitt werden noch einige für die Benuztung eines Hypertextes vorteilhafte Funktionen erläutert.

4.3.1  Lesezeichen

Das Auffinden einmal gefundener Informationen ist in Hypertexten schwierig, wenn die Umgebung des Knotens oder spezielle Attribute des Knotens nicht mehr bekannt sind. Diese Problematik ist in etwa vergleichbar mit dem Wiederfinden eines Artikels, einer Zeitschrift, ohne die genaue Ausgabe der Zeitschrift und ohne den genauen Titel des Artikels zu kennen.

Ist bei der Aufnahme der Information der Eindruck entstanden, daß diese Information in Zukunft von Interesse sein könnte, eventuell auch noch mit einem möglichen Verwendungszweck, so besteht die Möglichkeit, analog zu Lesezeichen in Zeitschriften oder Büchern, Marken oder ,,book marks'' [bern88]) zu setzen und diese zu kommentieren. Neben diesen anwenderdefinierten Fixpunkten existieren auch autorendefinierte Fixpunkte, ,,thumb tabs'' [bern88], die für alle Leser benutzbar sind. Diese Markierungen heben Knoten heraus, die der Autor eines Hypertextes als wichtig erachtete.

Von der Funktionsweise erfolgt das Setzen einer Marke durch das Hinzufügen eines Attributs ,,Marke'', das als Ausprägung einen ,,Markentitel'' erhält, den der Anwender vergeben hat. Weiterhin wird ein neuer Knoten erzeugt, mit dem Knotentyp ,,Markenkommentar''. Diese Knoten kann dann mit einer kurzen textuellen Information versehen werden. Dieser neue Knoten ist mit einem Link vom Typ ,,Markenkommentierung'' an den Quellknoten angebunden.

Die Suche nach den Marken kann mit den in 4.2.9 erwähnten Filtern erfolgen.

4.3.2  Historie

Ist bei dem zuvor erwähnten Szenario nicht daran gedacht worden, eine Marke zu vergeben, ist der Anwender auf eine Suche durch viele Knoten angewiesen. Vielleicht kann er sich aber daran erinnern, wann er die gesuchte Information gesehen hat. Ist dies bekannt, kann dem Anwender ein Faden der Aridane gegeben werden. Diese Historie seines Vorgehens für ein bestimmtes Datum wird in der Weise realisiert, daß ein Knotentyp ,,Historie'' existiert, für den bei jeder Anmeldung eines Anwenders ein Knoten erzeugt wird, der wie in 4.1.2 erläutert unter anderem Datum und Benutzer enthält. Für diesen Knotentyp exisiteren Attribute ,,besuchte Knoten'' und ,,benutzte Verbindungen''. Bewegt sich der Anwender im Hypertext, so wird für jede benutzte Verbindung und jeden erreichten Knoten ein entsprechender Attributwert bei der Historie eingetragen5. Eine Historie läßt sich darstellen wie in Abbildung 4.5.
 
 

Abbildung 4.0: Die Historie einer Sitzung

Der Knotenidentifikator der Historie wird unter Angabe eines kalendarischen Datums oder eines Anwenders ermittelt. Für einen Knoten vom Typ ,,Historie'' sind Attribute ,,Links'' und ,,Knoten''vorhanden. Die Werte dieser Attribute für den Historienknoten zeigen den ,,Weg'' durch einen Hypertext auf, den ein Anwender an einem gegebenen Datum beschritten hat.

4.3.3  Guided Tour

Für einen Anwender, der sich einen Überblick von einem Problembereich beschaffen will und den zugehörigen Hypertext nicht kennt, ist es wünschenswert, eine ,,Führung'' oder ,,guided tour'' [zell88] durch den Hypertext zu erhalten.

Eine ,,Führung'' durch einen Hypertext kann durch einen für diesen Zweck erzeugten Linktyp ,,guided tour'' erzeugt werden, der als spezielle Attribute für die Links dieses Typs einen Titel für den Themenbereich erhält sowie ein Attribut, das eine kurze Bemerkung zum nächsten Zielknoten enthalten kann.

Ein Anwender, der eine solche Führung wünscht, läßt sich mit Hilfe der Filter nur noch Verbindungen vorschlagen, die vom Typ ,,guided tour'' sind.

Chapter 5 
Das Relationenmodell

In Kapitel 3.2.1 wurden die Vorteile einer Datenbank zur Verwaltung der Daten einer HypertextMaschine erwähnt. Als konkretes Datenbankmodell wurde das Relationenmodell gewählt. Das Relationenmodell ist in der Gestaltung der Datenstrukturen sehr flexibel. Durch diese Flexibilität ist das Relationenmodell daher für konzeptionelle Arbeiten gut geeignet.

Bevor die HypertextMaschine auf das Relationenmodell abgebildet wird, erfolgt in diesem Kapitel eine kurze Darstellung des Relationenkonzeptes und dessen Begrifflichkeiten [schla83] [fink89]. Im Anschluß daran wird das Datenbankschema vorgestellt.

5.1  Grundbegriffe des relationalen Datenmodells

Relationen stellen Beziehungen zwischen verschiedenen Mengen her und werden durch Namen bezeichnet. Beispielsweise kann die Menge der Telefonnummern einer Menge von Namen in Beziehung gesetzt werden. Diese Beziehung stellt eine Relation dar, die mit dem Namen Telefonverzeichnis benannt werden kann.

5.1.1  Domänen

Eine Menge, die in einer Relation verwendet wird, kann durch eine ,,Liste von Werten'' oder durch ''Eigenschaften'', die Elemente dieser Menge erfüllen müssen, definiert werden. Elemente einer Menge ,,Beurteilung'' müssen z.B. Element der Liste mit den Elementen (,,sehr gut'', ,,gut'', ,,befriedigend'', ,,ausreichend'', ,,mangelhaft'') sein. Elemente der Menge der ,,Postleitzahlen'' müssen die Eigenschaft erfüllen, eine Zahl zu sein, die größer oder gleich 1000 ist und kleiner oder gleich 9999.

Eine Listen von Werten oder eine Eigenschaft, die eine Menge beschreibt, wird im Relationenmodell als ,,Domäne'' bezeichnet.

5.1.2  Attribute

Für die Verwendung der Domänen in Relationen, müssen die Domänen referenziert werden. Der Bezug auf eine ,,Domäne'' wird durch ,,Attribut'' erreicht. Ein Attribut ist ein ,,Name'' für eine Domäne. Eine Domäne kann mit verschiedenen Attributen referenziert werden. Die Domäne der kalendarischen Daten kann sowohl über ein Attribut ''Geburtsdatum'' als auch durch ein Attribut ,,Rechnungsdatum'' referenziert werden.

5.1.3  Relationen und Tupel

Eine Relation hat einen Namen und wird durch ihre Attribute beschrieben. Die Attribute bilden die ,,Struktur'' einer Relation. Eine Relation ist eine Teilmenge des kartesischen Produkts seiner Attribute. Für das kartesische Produkt zweier Attribute wird jedes Element eines Attributs mit jedem Element eines andern Attributs verknüpft. Je eine dieser Verknüpfungen der Attribute wird als ,,Tupel'' bezeichnet. Ein Tupel kann durch die Angabe von Attributwerten definiert werden.

Das kartesische Produkt der Attribute einer Relation bildet aber nicht die Realität ab. Daher werden nur die Tupel als einer Relation zugehörig definiert, die eine reale Gegebenheit beschreiben. Diese Tupel bilden den ,,Körper'' einer Relation. Dieser Körper einer Relation kann sich im zeitlichen Verlauf ändern.

5.1.4  ,,Schlüssel'' für Relationen

Eine Relation ist als Menge definiert. Durch diese Definition wird ausgeschlossen, daß gleiche Tupel mehrfach auftreten können. Dies bedeutet, daß jeder Tupel sich von allen anderen unterscheiden muß. Die Unterscheidung der Tupel kann durch eine Kombination aller Attributwerte erfolgen. Oft reicht für die Unterscheidung der Tupel auch eine Teilmenge der Attributwerte. Für die Unterscheidung von Tupeln einer Relation Adresse, die aus den Attributen ,,Name, Vorname, Straße, Postleitzahl, Wohnort'' besteht, ist eine Teilmenge der Attribute ausreichend. Die einzelnen Tupel können durch die Attribute ''Name, Straße, Postleitzahl'' unterschieden werden.

Die Menge der Attribute, deren Werte zur Unterscheidung der Tupel herangezogen wird, wird als ,,Relationenschlüssel'' bezeichnet. Exisitieren mehrere mögliche Attribut-Kombinationen zur Unterscheidung der Tupel, so wird eine minimale Attribut-Kombination als ,,Primärschlüssel'' der Relation bezeichnet. Dieser Primärschlüssel wird häufig durch ein eigens hierfür zugeordnetes Attribut erzielt, das keine Information einer realen Gegebenheit beinhaltet. So ist eine ,,Kundennummer'' kein Abbild aus der Realität. Sie wird ausschließlich zur Identifizierung eines Tupels mit Informationen über einen Kunden benutzt.

Die Verknüpfung mehrerer Relationen erfolgt durch sogenannte ,,Fremdschlüssel''. Diese Fremdschlüssel sind Attribute, die als Primärschlüssel auftreten und in einer anderen Relation dazu benutzt werden, auf ein Tupel der ersten Relation zuzugreifen. Ein solcher Fremdschlüssel ist z.B. die zuvor erwähnte Kundennummer in einer Relation ,,Rechnung''. Für eine Rechnung sind Informationen über den Empfänger der Rechnung notwendig wie Name, Anschrift, etc.. Diese Informationen können mit Hilfe des Fremdschlüssels ,,Kundennummer'' aus der Relation ,,Geschäftspartner'' zur Verfügung gestellt werden.

5.2  Integritätsanforderungen des Relationenmodells

Das Relationenmodell stellt Anforderungen an die ,,Integrität'' von Relationen. Dabei werden drei Formen der Integrität unterschieden.
Entitäts Integrität:
Jede Relation weist einen Primärschlüssel auf. Dies bedeutet, daß jedes Tupel eindeutig identifizierbar ist. Es existieren nicht mehrere Tupel, die für alle Attribute den gleichen Wert beinhalten.
Referentielle Integrität:
Jeder Fremdschlüssel weist auf einen Primärschlüssel. Das heißt, der Bezug auf ein Tupel einer anderen Relation muß eindeutig sein.
Benutzerdefinierte Integrität:
Die Zulässigkeit von Werten einer Domäne kann eingeschränkt werden. Das heißt, ein Benutzer kann Domänen in der Art, ,,ein Fertigstellungsdatum muß nach dem zugehörigen Auftragsdatum liegen'' einschränken.

5.3  Manipulation von Relationen

Als Manipulation auf Relationen sind im Relationenmodell definiert:
Selektion:
Aus einer Relation wird eine Teilmenge von Tupeln ausgewählt.
Projektion:
Eine Relation wird auf eine andere Relation abgebildet, die nur eine Teilmenge der Attribute beinhaltet.
Kartesisches Produkt:
Von verschiedenen Relationen wird jedes Tupel einer Relation mit jedem Tupel weiterer Relationen verknüpft.
Verbund:
Eine Kombination von kartesischem Produkt und Selektion.

5.4  Normalisierung von Relationen

Ein Problem beim Entwurf von Datenbanken ist es, die Relationen so zu gestalten, daß nach Möglichkeit keine oder nur geringe Redundanz der Daten entsteht. Um die Redundanz in Datenmodellen zu vermindern, wurde zu Beginn der siebziger Jahre von E.F.Codd die Normalisierung [codd71] entworfen. Die Normalisierung ist ein analytisches Verfahren zur Redundanzerkennung und Redundanz-Reduktion in Datenmodellen. In der Normalisierung sind verschiedene ,,Normalformen (NF)'' [schla83] [fink89] definiert, die numeriert sind.

1. Normalform (1NF)

,,Jedes Attribut einer Relation ist elementar. Alle Nicht-Schlüsselattribute sind dann funktional abhängig vom Schlüssel der Relation.''
Ein Tupel enthält für jedes Attribut genau einen Wert. Zu jedem Schlüsselwert existiert genau ein Wert für jedes Nicht-Schlüsselattribut.

2.Normalform (2NF)

,,Alle Nicht-Schlüsselattribute sind in 1NF, und sie sind voll funktional abhängig vom Gestamtschlüssel der Relation, nicht aber von Schlüsselteilen.''
Besteht der Schlüssel einer Relation aus mehreren Attributen, so fordert die zweite Normalform, daß für jedes Nicht-Schlüsselattribut der Relationenschlüssel ein Primärschlüssel ist. Dies bedeutet, daß einzelne Attribute des Relationenschlüssels, kein Schlüssel für ein Nicht-Schlüsselattribut sind.

Besteht beispielsweise der Relationenschlüssel einer Relation für Personendaten aus den Attributen Name und Geburtsdatum. Als Nicht-Schlüsselattribute sind das Sternzeichen der Person, die Postleitzahl, der Ortsname und die Straße vorhanden. Diese Relation ist in erster Normalform, nicht aber in zweiter Normalform, da für das Sternzeichen, das Geburtsdatum als Primärschlüssel ausreichend ist.

3.Normalform (3NF)

,,Alle Attribute erfüllen das 2NF-Kriterium. Kein Attribut außerhalb des Relationenschlüssels ist transitiv abhängig von einem anderen lokalen Attribut.''
Diese Definition sagt aus, daß für jedes Nicht-Schlüsselattribut kein weiterer Schlüssel exisitiert, außer dem Relationenschlüssel.

Im vorangegangen Beispiel ist eine Relation in der zweiten Normalform mit den Schlüsselattributen Name und Geburtsdatum und den Nicht-Schlüsselattributen Postleitzahl, Ortsname, Straße entstanden. Diese Relation ist nicht in dritter Normalform, da für den Ortsnamen die Postleitzahl als Primärschlüssel möglich ist.

5.5  Architektur von Datenbanken

Neben den Begriffen des relationalen Datenmodells wird im Hinblick auf die Benutzung einer Datenbank deren grundlegende Architektur erläutert.

Definition einer Datenbank

,,Eine Datenbank ist eine integrierte Ansammlung von Daten, die allen Anwendern eines Bereichs als gemeinsame Basis aktueller Informationen dient. Die Daten sind entsprechend den natürlichen Zusammenhängen strukturiert. Es kann so auch auf ungeplante Weise auf die Daten zugegriffen werden.''
Datenbanken sind dort einsetzbar, wo in großer Zahl Objekte verwaltet werden, die gleiche Merkmale aufweisen.

5.5.1  Das Strukturschema von Datenbanken

Zur Beschreibung der Struktur von Datenbanken wurde 1975 vom ANSI/X3/SPARC-Committee das 3-Ebenen-Strukturschema entworfen. Dieses Strukturschema für Datenbanken entstand aus den Überlegungen heraus, Daten in einer einzigen Datensammlung zu halten. Das heißt, daß beispielsweise nicht für jede Anwendung, die eine Adresse (Fakturierung, Korrespondenz, etc.) benötigt, eine Datensammlung mit Adressen existiert, sondern nur eine zentrale Datensammlung. Die Vorteile dieses Konzeptes sind:

Drei-Ebenen-Strukturschema

Die Ebenen, die durch das 3-Ebenen-Strukturschema vorgesehen werden, sind:
Externe Ebene:
Die Sichtweisen, die verschiedene Benutzergruppen auf Objekte haben. Z.B. Die ,,Sicht'' auf ein Objekt ,,Kunde'' besteht für eine Marketingabteilung nur aus der Kundenadresse. Für die Fakturierung sind bei der ,,Sicht'' auf einen Kunden zusätzlich Informationen notwendig, wie ,,Zahlungsbedingungen'', ,,Lieferbedingungen'', etc.. Im Relationenmodell wird dies durch einen ,,Verbund'' erzielt.
logische, konzeptionelle Ebene:
In dieser Ebene wird das Datenmodell der Objekte eindeutig und einheitlich beschrieben. Im Relationenmodell ist dies die Abbildung der Objekte auf Relationen.
interne Ebene:
Auf dieser Ebene wird eine physische Speicherstruktur für die Beschreibungen der logischen Ebene konzipiert.

Chapter 6 
Abbildung der abstrakten HypertextMaschine auf das Relationenmodell

In Kapitel 3.2.1 wurde als Datenbasis für eine HypertextMaschine eine Datenbank gewählt. In diesem Kapitel erfolgt die konzeptionelle Beschreibung einer HypertextMaschine für eine Relationale Datenbank. Im weiteren Verlauf des Kapitels werden grundlegende Funktionen einer HypertextMaschine in der ,,Structured Query Language, (SQL)'' vorgestellt. Die Structured Query Language kann bei verschiedenen Datenbanken benutzt werden. Die vorgestellten SQL-Anweisungen sind daher nicht spezifisch, für die erwähnte ORACLE Datenbank.

6.1  Auswahl einer Datenbank für die Abbildung der HypertextMaschine auf das Relationenmodell.

Die Abbildung der modifizierten abstrakten HypertextMaschine auf das Relationenmodell dient dazu, die Verwaltung der in Kapitel 4 erläuterten Elemente und Funktionen einer HypertextMaschine für eine relationale Datenbank zu realisieren.

Die Verwendung einer Datenbank als Grundlage für Verwaltung und Funktionen bietet einige Vorzüge gegenüber einer direkten Implementierung der HypertextMaschine auf Dateiebene. Ein Vorteil ist die große Unabhängigkeit von der Hardwareumgebung. Ein weiterer Vorteil sind die Zugriffs- und Transaktionsmechanismen von Datenbanken, die eine gleichzeitige Benutzung einer Datenbasis durch mehrere Anwender erlauben. Die Ablage der Daten in einer Datenbank eröffnet gleichzeitig die Möglichkeit, diese Daten in unterschiedlichen Applikationen zu verwenden bzw. Daten verschiedener Applikationen der HypertextMaschine zugänglich zu machen. Diese für Datenbanken selbstverständlichen Funktionen sind bei Entwicklungen, die auf der Dateiebene der Betriebssysteme von Computern arbeiten nur mit hohem Aufwand zu realisieren.

Als Zieldatenbank wurde für die Umsetzung der Elemente und Funktionen der HypertextMaschine eine ORACLE Datenbank gewählt. Diese beinhaltet die zuvor genannten Vorzüge und bietet insbesondere den Vorteil, daß sie in einer heterogenen Rechnerumgebung lauffähig ist. Mit einer ORACLE Datenbank ist es beispielsweise möglich, eine SQL-FORMS Applikation auf einem Personal Computer die Datenbasis einer ORACLE Datenbank einer Workstation oder eines Mainframe zu nutzen.

6.2  Abbildung der Elemente der modifizierten abstrakten HypertextMaschine auf eine ORACLE Datenbank.

In einer ORACLE Datenbank werden Daten in ,,Tabellen'' oder ,,Tables'' abgelegt. Diese Tabellen werden durch einen ,,Tabellennamen'' identifiziert und bestehen aus einer oder mehreren Spalten. Diese Spalten können durch ,,Spaltennamen'' angesprochen werden. Ein Spalte repräsentiert einen ,,Wertetyp'', d.h. alle Elemente dieser Spalte sind von diesem Typ.

Die Tabellen der Datenbank entsprechen dabei den Relationen des Relationenmodells. Die Spaltennamen sind äquivalent zu den Attributen des Relationenmodells. Die Wertetypen, die durch die Spaltennamen referenziert werden, entsprechen den Domänen.

Für die nachfolgenden Tabellen werden die folgenden vier Wertetypen verwendet:

[Number(m):] eine Ziffernfolge mit maximal m Elementen.
[Char(n):] eine Zeichenfolge mit maximal n Zeichen.
[Long:] eine Zeichenfolge mit weniger als 65536 Zeichen. Solche Zeichfolgen sind z.B. Texte bis zu ca. 20 Seiten Länge.
[Date:] ein kalendarisches Datum.
Eine Zusammenfassung der Definitionen in Relationenform, ohne Angabe der Wertetypen, wird im Anhang D.1 gegeben.

6.2.1  SQL-Umsetzung der Tabellendefinition

Die in den folgenden Abschnitten definierten Tabellen werden in der folgenden Syntax notiert:
Tabellenname: 
Spaltenname1 Wertetyp1(Breite der Spalte1)
...  ... 
Spaltennamen Wertetypn(Breite der Spalten

Die ,,Breite der Spalte'' ist dabei die Anzahl der Ziffern bzw. Buchstaben, aus der ein Wert dieser Spalte maximal bestehen darf.

Die Umsetzung der Tabellenbeschreibungen in SQL-Anweisungen zur Generierung der entsprechenden Tabellen erfolgt in der Form:
CREATE TABLE Tabellenname (  Spaltenname1 Wertetyp1,
...  ...,
Spaltennamen Wertetypn); 

Bei der Definition der SQL-Anweisungen anhand der Tabellenbeschreibungen ist Folgendes zu beachten:

Bei der Beschreibung der Tabellen wurden diese Anforderungen der ORACLE Datenbank nicht berücksichtigt, um Tabellennamen und Spaltenbezeichnungen aussagekräftiger zu gestalten. Am Ende eines Abschnittes wird jeweils eine SQL-Anweisung exemplarisch aufgeführt, die aus einer der Tabellenbeschreibungen eine Tabelle erzeugt. Für diese exemplarischen SQL-Anweisungen wurden aufgrund der zuvor genannten Bedingungen für Bezeichnungen, die in den Beschreibungen aufgeführten Namen entsprechend verändert und teilweise abgekürzt.

6.2.2  Knotentypen

Aus den Anforderungen der Typen für Knoten und Links in 4.1.1 und der Normalisierung aus Kapitel 5.4 ergeben sich für die Ablage der Informationen von Knotentypen in einer Datenbank fünf Tabellen.

Knotentypbeschreibung

Die erste Tabelle umfaßt die Grundinformationen eines Knotentyps, die bei seiner Definition festgelegt werden. Dies sind der Titel und eine Beschreibung des Knotentyps sowie das Datum der Definition und Autor, der den Knotentyp definiert hat. Der Knotenidentifikator wird als fortlaufende Nummer erzeugt und in der Tabelle abgelegt, die die Knotentypen beschreiben. In dieser Tabelle muß der Knotenidentifikator eindeutig sein.
Knotentyp: 
KnotentypId:  Number(4)
Erstellungsdatum:  Date
Autor:  Char(20)
Titel:  Char(20)
Beschreibung:  Char(120) 

Knotentyp Attribute

Die zweite Tabelle umfaßt die Zuordnung der Attribute zu den Typen. Diese Zuordnung erfolgt mit Hilfe des Attributidentifikators. Ebenfalls in dieser Tabelle befinden sich die Informationen, wann und von wem ein Attribut einem Knotentypen zugeordnet wurde. Die Kombination aus Knotentypidentifikator und Attributidentifikator muß dabei eindeutig sein.
Knotentyp Attribute: 
KnotentypId:  Number(4)
Erstellungsdatum:  Date
Autor:  Char(20)
Knoten-AttributId: Number(5) 

Standardwerte für Attribute

Für die Festlegung der Standardwerte sind je nach Ausprägungstyp der Attribute zwei Tabellen notwendig. Die erste Tabelle enthält numerische Standardwerte, die zweite enthält textuelle Standardwerte. Eine weitere Tabelle ist für die Verwaltung der Variablen notwendig. Die Variablen sind in textueller Form abgelegt und werden bei der Erzeugung eines Knotens durch Funktionen der Anwendungschicht in konkrete Werte umgesetzt. Beispielsweise indem eine Benutzerkennung oder ein Datum ermittelt wird und als Attributwert zu einem Knoten vermerkt wird. Die Einträge für Standardwerte können mehrfach vorhanden sein, jedoch dürfen nicht mehr Standardwerte vorhanden sein, als bei den Attributen als maximale Anzahl Ausprägungen vorgegeben sind.

Die mögliche Dimension von Standardwerten wird zunächst willkürlich gewählt und muß später an die Anwendungen angepaßt werden. Als Feldlänge werden zunächst für numerische Felder 20 Stellen, für textuelle Felder 120 Zeichen und für Variablen ebenfalls 120 Zeichen vorgesehen.

Es wird nur exemplarisch die Tabelle der textuellen Standardwerte aufgeführt. Die Tabellen zur Verwaltung der numerischen Standardwerte und zur Verwaltung der Variablen sind analog aufgebaut. Die Unterscheidung erfolgt durch das Feld ''Attributwert''. Dieser Attributwert ist für numerische Werte vom Typ ,,Number(20)''.

Der Attributwert für die Tabelle der Variablenverwaltung ist textuell, der Typ des Attributwertes ist Char(120). Der Eintrag dieses Attributwertes wird bei der Erzeugung eines Knotens durch eine Funktion interpretiert. Der Attributwert für einen Knoten dieses Typs ist das Ergebnis dieser Funktion.

Eine einfache Variable ist beispielsweise das kalendarische Datum. Ein Eintrag ,,Datum'' in der Variablentabelle hat zur Folge, daß bei der Erzeugung eines Knotens das Datum ermittelt wird und als Attributausprägung eingetragen wird.
Knotentyp Standardwerte textuell 
KnotentypId:  Number(4)
Erstellungsdatum:  Date
Autor:  Char(20)
Knoten-AttributId: Number(5)
Attributwert:  Char(120) 

SQL-Anweisung zur Erzeugung einer Tabelle der textuellen Standardwerte

Als Beispiel wird Erzeugung der Tabelle der textuellen Standardwerte für Knotentypen aufgeführt. Die entsprechende SQL-Anweisung lautet:
CREATE TABLE Knotentyp_Stdwert_Text (
KnotentypId number(4),
Erstellungsdatum Date,
Autor Char(20), 
KnotenattributId Number(5),
Attributwert Char(120)); 

6.2.3  Linktypen

Die Tabellen für die Linktypbeschreibung, die Linktyp-Attribute, deren Standardwerte und Variablen sind gleich gestaltet, wie die der Knotentypen und werden daher nur aufgeführt und nicht weiter erläutert.
Linktyp: 
LinktypId:  Number(4)
Erstellungsdatum:  Date
Autor:  Char(20)
Titel:  Char(20)
Beschreibung:  Char(120) 
Linktyp Attribute: 
LinktypId:  Number(4)
Erstellungsdatum:  Date
Autor:  Char(20)
Link-AttributId:  Number(5) 
Als Beispiel der Tabellen für Standardwerte und Variablen wird die Tabelle zur Verwaltung der Variablen aufgeführt. Textuelle und numerische Standardwerte unterscheiden sich wieder lediglich durch den Typ des Feldes Attributwert.
Linktyp Variable: 
LinktypId:  Number(4)
Erstellungsdatum:  Date
Autor:  Char(20)
Link-AttributId:  Number(5)
Attributwert:  Char(80) 

Reglementierung der Verbindungsmöglichkeiten

Die Regelung über die Zulässigkeit der Verbindung wird mit zwei zusätzlichen Tabellen bewerkstelligt. Diese Informationen könnten auch als Attributwerte verwaltet werden. Die Ablage dieser Informationen außerhalb der Tabellen für Link-Attributwerte hat den Vorteil, daß die Tabellen für zulässige Quell- und Zielknotentypen einfacher bearbeitet werden können.
Zulässige Quelltypen: 
LinktypId:  Number(4)
Erstellungsdatum:  Date
Autor:  Char(20)
KnotentypId:  Number(4) 
Zulässige Zieltypen: 
LinktypId:  Number(4)
Erstellungsdatum:  Date
Autor:  Char(20)
KnotentypId:  Number(4) 

SQL-Anweisung zur Erzeugung der Tabelle der zulässigen Zieltypen

Als SQL Beispiel wurde die Erzeugung der Tabelle der zulässigen Zieltypen gewählt. Die Bezeichnung ,,Zulässige Zieltypen'' ist nicht als ORACLE Tabellenname möglich. Daher wird als Tabellenname ,,Zul_Zieltypen'' gewählt.
CREATE TABLE Zul_Zieltypen (  LinktypId number(4),
Erstellungsdatum Date,
Autor Char(20),
KnotentypId Number(4)); 

6.2.4  Knoten

Knotenbeschreibung

Ein Knoten wird identifiziert durch seinen Identifikator. Die Beschreibung eines Knotens beinhaltet den Knotentyp sowie per Definition aus 4.1.2 Entstehungsdatum und Autor. Alle weiteren Informationen zu dem Knoten werden als Attribute abgelegt.
Knoten: 
KnotenId:  Number(6)
Erstellungsdatum:  Date
Autor:  Char(20)
KnotentypId:  Number(4) 

Ausprägungen von Knoten- und Link-Attributen

Bei konkreten Knoten und Links sind für die Attributwerte zwei Tabellen notwendig. Eine Tabelle für die Verwaltung der numerischen Attributwerte und eine Tabelle für die textuellen Attributwerte. Die bei den Knotentypen notwendige dritte Tabelle zur Verwaltung der Variablen wird bei konkreten Knoten nicht benötigt, da ein Attribut eines konkreten Knoten immer mit einem Wert belegt ist. In der Definition dieser Tabellen ist jeweils ein Feld ,,Wertenummer'' vorhanden. Dieses Feld beinhaltet eine fortlaufende Nummer, die für jeden Eintrag eines Attributwertes für den selben Knoten oder Link erhöht wird. Diese Numerierung der Attributwerte bei Knoten und Links erlaubt es unter anderem, daß ein gleicher Attributwert für einen Knoten oder Link mehrfach eingetragen werden kann. Als Beispiel hierfür sei ein Attribut ,,Prüfungsergebnis'' eines Knotens ,,Students'' erwähnt, das z.B. mehrfach die Bewertung ,,nicht bestanden'' enthalten kann.
Knotenattribute numerisch: 
KnotenId:  Number(6)
Erstellungsdatum:  Date
Autor:  Char(20)
Knoten-AttributId:  Number(5)
Wertenummer:  Number(4)
Ausprägung:  Number(20)
Knotenattribute textuell: 
KnotenId:  Number(6)
Erstellungsdatum:  Date
Autor:  Char(20)
Knoten-AttributId:  Number(5)
Wertenummer:  Number(4)
Ausprägung  Char(120)

Verwaltung von Texten in der Datenbank

Eine Möglichkeit Texte zu verwalten besteht darin, Texte in der Datenbank abzulegen. Die ORACLE Datenbank bietet dazu den Datentyp ,,Long'', der es erlaubt 65536 Zeichen (64KB) abzulegen. Der Zugriff auf den Text erfolgt über den Knotenidentifikator.
Textknoten: 
KnotenId:  Number(6)
Erstellungsdatum:  Date
Autor:  Char(20)
Text:  Long 

SQL-Anweisung zur Erzeugung der Tabelle Textknoten

Als Beispiel für die Erzeugung einer Knoten-Tabelle wird die Tabelle der Textknoten gewählt.
CREATE TABLE Textknoten (  KnotenId Number(6),
Erstellungsdatum Date,
Autor Char(20),
Text Long); 

6.2.5  Links

Linkbeschreibung

Wie in 4.1.3 aufgeführt, gehört zu den Standardinformationen eines Links sein Identifikator, sein Typ, sein Quellknoten, sein Zielknoten sowie das Datum der Etablierung des Links und der Autor.
Link: 
LinkId:  Number(6)
Erstellungsdatum:  Date
Autor:  Char(20)
LinktypId:  Number(4)
Quellknoten:  Number(6)
Zielknoten:  Number(6) 

Ausprägungen von Linkattributen

Die Ausprägungen von Attributen für Links ist, wie die der Knoten, auf zwei Tabellen verteilt; eine Tabelle zur Verwaltung der numerischen Werte und eine Tabelle zur Verwaltung der textuellen Werte.
Linkattribute mumerisch: 
LinkId:  Number(6)
Erstellungsdatum:  Date
Autor:  Char(20)
Link-AttributId:  Number(5)
Ausprägung  Number(20)
Linkattribute textuell: 
LinkId:  Number(6)
Erstellungsdatum:  Date
Autor:  Char(20)
Link-AttributId:  Number(5)
Ausprägung  Char(120)

SQL-Anweisung zur Erzeugung der Tabelle der Links

CREATE TABLE Links (  LinkId Number(6),
Erstellungsdatum Date,
Autor Char(20),
LinktypId Number(4), 
Quellknoten Number(6),
Zielknoten Number(6)); 

6.2.6  Knotenattribute und Linkattribute

Die Tabellen für Knotenattribute und Linkattribute sind in ihrer derzeitigen Definition identisch. Sie werden daher gemeinsam aufgeführt. Unterschiede zwischen den Tabellen ergeben sich nur in den Bezeichnungen der Tabellennamen und der Identifkatoren für Knoten und Links.
Knoten-/Link-Attribute Definition: 
Knoten-/Link-AttributId:  Number(6)
Erstellungsdatum:  Date
Autor:  Char(20)
Inhaltstyp:  Char(10)
Titel:  Char(20)
Beschreibung:  Char(120)
Mindestanzahl Werte:  Number(2)
Höchstanzahl Werte:  Number(2)
Knoten-/Link-Attributbereiche numerisch: 
Knoten-/Link-AttributId: Number(6)
Erstellungsdatum:  Date
Autor:  Char(20)
Minimum:  Number(20)
Maximum:  Number(20)
Knoten-/Link-Attributbereiche textuell: 
Knoten-/Link-AttributId: Number(6)
Erstellungsdatum:  Date
Autor:  Char(20)
Minimum:  Char(120)
Maximum:  Char(120)
Knoten-/Link-Attribut Standardwerte numerisch: 
Knoten-/Link-AttributId: Number(6)
Erstellungsdatum:  Date
Autor:  Char(20)
Standardwert:  Number(20) 
Knoten-/Link-Attribut Standardwerte textuell: 
Knoten-/Link-AttributId: Number(6)
Erstellungsdatum:  Date
Autor:  Char(20)
Standardwert:  Char(120) 
Knoten-/Link-Attribut Variable: 
Knoten-/Link-AttributId:  Number(6)
Erstellungsdatum:  Date
Autor:  Char(20)
Variable:  Char(20) 

SQL-Anweisung zur Erzeugung der Tabelle der numerischen Standardwerte für Linkattribute.

CREATE TABLE Stdwert_Num_L_Attribut (
Link_AttributId Number(6),
Erstellungsdatum Date, 
Autor Char(20),
Standardwert Number(20)); 

6.2.7  Weitere Tabellen und Views

Die zuvor definierten Tabellen reichen aus, um einen Hypertext zu definieren. Einzelne Funktionen benötigen jedoch noch zusätzliche Informationen, oder können durch zusätzliche Informationen einfacher gestaltet werden.

Eine dieser zusätzlichen Tabellen ist die Tabelle, die den jeweils höchsten Identifikator der verschiedenen Elemente speichert. Bei Bedarf wird der nächste Wert als Identifikator für einen neuen Knoten, Link, etc. benutzt.
Nummern: 
Bezeichnung: Char(20)
Zähler:  Number(20) 

Die Einträge sind als Wertepaare in der Form (,,KnotenId'', 1234) vorhanden. In diesem Beispiel würde der nächste Knoten, der erzeugt wird, den Identifikator 1235 erhalten. Diese Tabelle kann auch unabhängig von den Identifikatoren sonstige fortlaufende Nummern verwalten. Jede dieser verwalteten Zahlen muß nur mit einer Bezeichnung in Verbindung stehen. Weiter fortlaufende Nummern werden z.B. benötigt, wenn bei einer Anwendung festgestellt werden soll, wie oft ein Knoten aktiviert wurde.

ORACLE Tabelle ,,DUAL''

Eine für die Funktionen wichtige Tabelle ist die ORACLE Systemtabelle ,,DUAL''. Diese Tabelle ermöglicht z.B. die Ermittlung des Systemdatums oder der Benutzerkennung. In der Form ,,SELECT USER FROM DUAL;''.

View der möglichen Verbindungen

Zulässige Verbindungen sind als eine Kombination von zulässigem Quellknoten und zulässigem Zielknoten definiert. Soll eine gewünschte Verbindung auf Zulässigkeit überprüft werden, sind dazu mehrere Abfragen möglich. Zur Vereinfachung dieser Überprüfung wird eine ,,virtuelle Tabelle'' oder ,,View'' definiert, die alle zulässigen Verbindungen explizit enthält. Eine View über mehrere Tabellen entsteht aus dem kartesischen Produkt der Zeilen, der Tabellen.

Die View der möglichen Verbindungen ist aus den Tabellen entstanden, die die möglichen Zieltypen und die möglichen Quelltypen verwalten. Sie enthält zu jedem Linktypen alle Verbindungsmöglichkeiten, d.h. alle Kombinationen von zulässigem Quellknotentyp mit zulässigem Zielknotentyp.
Mögliche Verbindungen: 
LinktypId:  Number(4)
QuellknotentypId:  Number(4)
ZielknotentypId:  Number(4). 

SQL-Anweisung zur Erzeugung der virtuellen Tabelle der möglichen Verbindungen.

Eine View oder virtuelle Tabelle, wird aus Abfragen von Spalten einer oder mehrerer Tabellen erzeugt. Eine View über mehrere Tabellen bezieht sich auf das kartesische Produkt der Tupel. Dieses kartesische Produkt ist zumeist nicht das Ziel einer View. Die View muß daher geeignet eingeschränkt werden. Die View der möglichen Verbindungen wird durch die folgende SQL-Anweisung erzeugt:
CREATE VIEW Mgl_Verbindungen (  Linktyp,
Quellknotentyp,
Zielknotentyp) 
AS SELECT Zul_Quelltypen.LinktypId,
Zul_Quelltypen.KnotentypId, 
Zul_Zieltypen.KnotentypId 
FROM Zul_Quelltypen, Zul_Zieltypen
WHERE  Zul_Quelltypen.LinktypId = Zul_Zieltypen.LinktypId; 

Die Erläuterung dieser SQL-Anweisung erfolgt abschnittsweise. CREATE VIEW Mgl_Verbindungen (Linktyp, Quellknotentyp, Zielknotentyp)
Der erste Abschnitt bedeutet, daß eine View mit dem Namen ,,Mgl_Verbindungen'' und den Spaltenbezeichnungen ,,Linktyp'', ,,Quellknotentyp'' und ,,Zielknotentyp'' erzeugt wird. Diese Spalten enthalten keinen Wertetyp. Der Wertetyp ergibt sich aus den Typen der benutzten Spalten.

AS SELECT Zul_Quelltypen.LinktypId,
    Zul_Quelltypen.KnotentypId, Zul_Zieltypen.KnotentypId
Der zweite Teil der Anweisung definiert die Spalten, aus denen die View erzeugt wird. Der Aufbau der Bezeichnungen ,,Tabellenname.Spaltenname'' gibt an, aus welcher Tabelle welche Spalte benutzt wird.

Die folgende Zeile definiert die Tabellen, die der View zugrunde liegen. FROM Zul_Quelltypen, Zul_Zieltypen

WHERE Zul_Quelltypen.Linktyp = Zul_Zieltypen.LinktypId;
Die WHERE-Klausel ist die Einschränkung des kartesischen Produktes. In diesem Fall bedeutet sie, daß nicht jede Zeile der Quelltypen mit jeder Zeile der Zieltypen eine Zeile der View ergibt, sondern nur die Zeilen, bei den der Linktypidentifikator der zulässigen Quelltypen mit dem Linktypidentifikator der zulässigen Zieltypen identisch ist. Eine kurzes Beispiel soll dies veranschaulichen.

Die Einträge der Tabellen zulässiger Quelltypen und zulässiger Zieltypen werden verkürzt dargestellt in der Form (LinktypId, KnotentypId). Die Tabelle der zulässigen Quelltypen soll die Einträge beinhalten: (1, 11); (1, 12); (2, 12). Die Tabelle der zulässigen Zieltypen beinhaltet die Einträge (1, 11); (2, 12).

Als kartesisches Produkt entsteht unter Berücksichtigung der Spalten LinktypId und KnotentypId der Tabellen der zulässigen Quelltypen und der zulässigen Zieltypen Zeilen der Form (LinktypIdzul.Quelle, KnotentypIdzul.Quelle, LinktypIdzul.Ziel, KnotentypIdzul.Ziel): (1, 11, 1, 11); (1, 11, 2, 12); (1, 12, 1, 11); (1, 12,2, 12); (2, 12, 1, 11); (2, 12, 2, 12). Diese Einträge stellen jedoch nicht die möglichen Verbindungen dar. Ein Link hat nur einen Linktyp, daher werden nur die Einträge berücksichtigt, bei denen die Linktypen von zulässiger Quelle und zulässigem Ziel übereinstimmen. Dies sind: (1, 11, 1, 11); (1, 12, 1, 11); (2, 12, 2, 12). Diese Einträge bedeuten, mit Linktyp 1 sind Verbindungen möglich von Knotentyp 11 zu Knotentyp 11 und von Knotentyp 12 zu Knotentyp 11 und mit Linktyp 2 sind nur Verbindungen zwischen Knotentyp 12 und Knotentyp 12 möglich.

6.3  Definition einiger Funktionen der abstrakten HypertextMaschine für eine ORACLE Datenbank.

Die Funktionen der HypertextMaschine werden als SQL-Anweisungen aufgeführt. Diese SQL-Anweisungen können in der SQL-Plus Umgebung einer ORACLE Datenbank benutzt werden oder für SQL-FORMS Anwendungen als Grundlage genommen werden.

Die Schreibweise der SQL-Anweisungen richtet sich nach folgenden Regeln:

Im Folgenden werden einzelne Funktionen als SQL-Anweisungen beschrieben. Im Normalfall wird eine Funktion durch mehrere SQL-Anweisungen realisiert. Wenn jede dieser Anweisungen erfolgreich war, wird die Anweisung bestätigt, d.h. es wird ein ,,Commit Work'' ausgeführt. Ist eine der Anweisungen nicht erfolgreich, so werden die erfolgten Anweisungen durch ein ,,Rollback''6 widerrufen.

Als Funktionen wurden ausgewählt:

6.3.1  Erzeuge Knoten Typ

Hinter der Funktion
,,Erzeuge Knoten Typ(Typname, Typbeschreibung)  ®  KnotentypId''
verbergen sich folgende SQL-Anweisungen.
UPDATE Nummern SET Zaehler =
(SELECT Zaehler + 1 FROM Nummern
WHERE Bezeichnung = 'KnotentypId')
WHERE Bezeichnung = 'KnotentypId'; 

Diese Anweisung erhöht in der Tabelle ,,Nummern'' den Wert für die Knotentypidentifikatoren um eins. Dieser Wert wird später als Identifikator für den neuen Knoten benutzt.
INSERT INTO Knotentyp (KnotentypId) VALUES (0); 

In der Tabelle der Knotentypen wird eine neue Zeile erzeugt. Dabei wird der Knotentypidentifikator mit dem Wert null7 vorbelegt.
UPDATE Knotentyp SET (Erstellungsdatum, Autor) =
(SELECT SYSDATE, USER FROM DUAL)
WHERE KnotentypId = 0; 

Das Entstehungsdatum und der Autor des Knotentyps werden ermittelt und bei dem Knotentyp, der mit dem Identifikator null gekennzeichnet ist, eingetragen.
UPDATE Knotentyp SET  Titel = Typname,
Beschreibung = Typbeschreibung
WHERE KnotentypId = 0; 

Typname und die Beschreibung aus der Parameterliste werden bei dem neuen Knotentyp eingetragen.
UPDATE Knotentyp SET  KnotentypId = 
(SELECT Zaehler FROM Nummern
WHERE Bezeichnung = 'KnotentypId')
WHERE KnotentypId = 0; 

Der anfangs festgelegte Identifikator wird aus der Tabelle ,,Nummern'' ermittelt und als Knotentypidentifikator eingetragen.

6.3.2  Erzeuge Knoten

Die Funktion ,,Erzeuge Knoten(KnotentypId)  ®  KnotenId'' wird durch folgende SQL-Anweisungen bewerkstelligt. Zunächst wird ein neuer Knotenidentifikator ermittelt und in die Tabelle ,,Nummern'' eingetragen.
UPDATE Nummern SET Zaehler =
(SELECT Zaehler + 1 FROM Nummern
WHERE Bezeichnung = 'KnotenId')
WHERE Bezeichnung = 'KnotenId'; 

In der Tabelle der Knoten wird eine neue Zeile eingefügt, die mit dem Knotenidentifikator null angesprochen werden kann.
INSERT INTO Knoten (KnotenId) VALUES (0); 

Das Erstellungsdatum und der Autor werden ermittelt und in der Tabelle der Knotenbeschreibungen eingtragen.
UPDATE Knoten SET (Erstellungsdatum, Autor) =
(SELECT SYSDATE, USER FROM DUAL)
WHERE KnotenId = 0; 
UPDATE Knoten SET Knotentyp = KnotentypId
WHERE KnotenId = 0; 

Die Typdefinition für den neuen Knoten wird aus den Parametern übernommen.
UPDATE Knoten SET KnotenId = 
(SELECT Zaehler FROM Nummern
WHERE Bezeichnung = 'KnotenId')
WHERE KnotenId = 0; 

Der Identifikator, der mit Hilfe der Tabelle ,,Nummern'' ermittelt wurde, wird für den neuen Knoten eingetragen.
INSERT INTO Knoten_Att_Num (  KnotenAttributId,
Wert,
Erstellungsdatum,
Autor)
SELECT KnotenattributId,
Wert, 
Erstellungsdatum, 
Autor
FROM Knotentypen 
WHERE KnotentypId = KnotentypId

Diese SQL-Anweisung fügt in die Tabelle der numerischen Knotenattribute alle Attributidentifikatoren und Werte ein, die durch den Knotentyp festgelegt sind. Mit dieser Funktion werden Entstehungsdatum und Autoren der Werte ebenfalls aus der Knotentypdefinition übernommen. Die KnotenId der Eintragungen ist zunächst noch ,,NULL'', d.h nicht belegt.

Anschließend wird der Knotenidentifikator auf den in der Hilfstabelle ,,Nummern'' festgelegten Wert gesetzt.
UPDATE Knoten_Att_Num SET KnotenId =
(SELECT Zaehler FROM Nummern 
WHERE Bezeichnung = 'KnotenId')
WHERE KnotenId = NULL; 

Für die textuellen Attribute werden die Anweisungen analog benutzt.
Die Verwendung von Variablen erfordert Funktionen, die teilweise auf SQL-Ebene nicht durchführbar sind, daher werden sie hier nicht aufgeführt.

6.3.3  Definiere zulässigen Zielknotentyp

Die Funktion ,,Definiere zulässigen Zieltyp(LinktypId, ZielknotentypId)'' ist die einfachste der vorgestellten Funktionen. Die Definition eines zulässigen Zieltyps läßt sich mit zwei SQL-Anweisungen erreichen. Die einfachste Variante trägt lediglich die als Parameter übergebenen Werte in die Tabelle der zulässigen Zieltypen ein.
INSERT INTO Zul_Zieltypen (LinktypId, KnotentypId) 
VALUES (LinktypId, ZielknotentypId); 

Soll überprüft werden, ob die angegebenen Parameter, Linktyp und Knotentyp existieren, lautet die SQL-Anweisung:
INSERT INTO Zul_Zieltypen (LinktypId, KnotentypId)
SELECT LinktypId, Knotentypid
FROM Linktypen, Knotentypen
WHERE LinktypId = LinktypId
AND KnotentypId = ZielknotentypId

Diese zweite Variante der Eintragung erzeugt die Eintragung aus dem kartesischen Produkt aus den Tabellen der Linktypen und Knotentypen, wenn in diesem kartesischen Produkt eine Zeile vorhanden ist, die beide Parameter LinktypId und ZielknotentypId, enthält. SELECT LinktypId, Knotentypid
FROM Linktypen, Knotentypen WHERE LinktypId = LinktypId
AND KnotentypId = ZielknotentypId;
Nach der Eintragung eines zulässigen Zieltyps werden noch Erstellungsdatum und Autor in gewohnter Weise ermittelt und eingetragen.
UPDATE Zul_Zieltypen SET (Erstellungsdatum, Autor) =
(SELECT SYSDATE, USER FROM DUAL)
WHERE Autor = NULL; 

6.3.4  Etabliere Link

Die Einrichtung eines Links,
,,Etabliere Link(LinktypId, QuellknotenId, ZielknotenId)  ®  LinkId'', ist eine der aufwendigsten SQL-Anweisungen. Die Eintragung eines Links ist nur zulässig, wenn ein Quellknoten und ein Zielknoten des Links exisitiert und die Typen dieser Knoten als zulässige Verbindungsmöglichkeit des angegebenen Linktyps vorhanden sind.

Der Ablauf der Etablierung eines Links erfolgt zunächst analog der Eintragung eines Knotens. Dazu wird zunächst der Zähler der Linkidentifikatoren erhöht.
UPDATE Nummern SET Zaehler =
(SELECT Zaehler + 1 FROM Nummern
WHERE Bezeichnung = 'LinkId')
WHERE Bezeichnung = 'LinkId'; 

Als nächster Schritt erfolgt ein Eintrag in die Tabelle der Links.
INSERT INTO Links (LinkId) VALUES (0); 

Anschließend werden Erstellungsdatum und Autor ermittelt und eingetragen.
UPDATE Links SET (Erstellungsdatum, Autor) =
(SELECT SYSDATE, USER FROM DUAL)
WHERE KnotentypId = 0; 

Die entscheidende SQL-Anweisung dieser Funktion ist jedoch die Eintragung von Quellknotenidentifikator und Zielknotenidenitfikator.
UPDATE Links SET  Quellknoten = QuellknotenId
Zielknoten = ZielknotenId,
LinktypId = LinktypId
WHERE LinkId = 0
AND (SELECT KnotentypId FROM Knoten
WHERE KnotenId = QuellknotenId
IN (SELECT KnotentypId FROM Zul_Quelltypen
WHERE LinktypId = LinktypId)
AND (SELECT KnotentypId FROM Knoten
WHERE KnotenId = ZielknotenId)
IN (SELECT KnotentypId FROM Zul_Zieltypen
WHERE LinktypId = LinktypId); 

Durch die Unübersichtlichkeit der Funktion wird sie genauer erläutert.

In der Tabelle der Links wird der Eintrag verändert, der bisher den Linkidentifikator null hat.
UPDATE Links SET  Quellknoten = QuellknotenId
Zielknoten = ZielknotenId,
LinktypId = LinktypId
WHERE LinkId = 0 

Zusätzlich muß der Knotentyp des Quellknotens als zulässiger Quelltyp des angegebenen Linktyps vorhanden sein. Dazu wird der Quellknotentyp aus der Tabelle der Knoten beschafft. Diese Ermittlung des Knotentyps ist nur erfolgreich, falls ein Knoten mit dem Identifikator QuellknotenId existiert.
AND (SELECT KnotentypId FROM Knoten
WHERE KnotenId = QuellknotenId
IN (SELECT KnotentypId FROM Zul_Quelltypen 
WHERE LinktypId = LinktypId

Mit dem Zielknoten wird analog verfahren, d.h. sein Knotentyp wird beschafft, und es wird überprüft, ob dieser Typ in der Menge der zulässigen Zielknoten des angegeben Verbindungstyps ist.
AND (SELECT KnotentypId FROM Knoten
WHERE KnotenId = ZielknotenId)
IN (SELECT KnotentypId FROM Zul_Zieltypen
WHERE LinktypId = LinktypId); 

Für die Eintragung wird, der zu Beginn der Funktion der erhöhte, Zähler der Linkidentifikatoren als Identifikator übernommen.
UPDATE Links SET LinkId =
(Select Zaehler FROM Nummern
WHERE Bezeichnung = 'LinkId')
WHERE LinkId = 0; 

6.3.5  Abbildung einer HypertextMaschine auf eine beliebige Datenbank

Mit den in diesem Abschnitt vorgestellten Funktionen läßt sich auf jeder SQL-fähigen Datenbank eine HypertextMaschine installieren. Insbesondere auch die Klassifizierung von Knoten und Links und die Reglementierung der Verbindungsmöglichkeiten. Es müssen lediglich noch die Funktionen zur Erzeugung eines Linktyps und zur Definition eines zulässigen Quellknotentyps erzeugt werden, nach den Mustern ,,Erzeuge Knoten Typ'' und ,,Definiere zulässigen Zieltyp''. Werden Knoten mit informationellen Inhalten gewünscht, so kann zu einem bestehenden Knotenidentifikator ein Text eingetragen werden durch: ,,INSERT INTO Text_Knoten (KnotenId, Text) VALUES (KnotenId, Text);''

Zur Anwendung der in diesem Abschnitt eingeführten Funktionen werden diese als SQL-Scripte abgelegt. Für eine ORACLE Datenbank werden die in den Funktionen benutzten Parameter durch ,,&1'', ..., ,,&n'' ersetzt. Diese Form erlaubt beim Aufruf einer Funktion Parameter anzugeben. Dabei wird &1 durch den ersten Parameter ersetzt usw.. Der Aufruf der Funktionen erfolgt dann aus der SQL-PLUS Umgebung heraus mit ,,START Funktionsname Parameter1 ... Parameter n''.

Chapter 7 
Ausblick

Die vorliegende Arbeit hat die Grundzüge von Hypertext beschrieben und ist dabei besonders auf architektonische Konzepte für Hypertextsysteme eingegangen. Ein wesentlicher Punkt der vorgestellten Architektur ist die Trennung des hypertextverwaltenden Systems, der Hypertext-Maschine, sowohl von der Präsentationsschicht als auch von Ebene der physikalischen Datenhaltung. Ein wichtiger Punkt der vorgestellten HypertextMaschine ist die Abkehr von der unmittelbaren Benutzung des Datei-Systems. Statt dessen wird die Verwendung einer relationalen Datenbank vorgeschlagen. Die Verwendung einer Datenbank erlaubt es, eine Reihe von Problemen, wie sie z.B. beim Mehrbenutzerbetrieb oder der Nutzung verteilter Datenbestände auftreten, von der HypertextMaschine auf das Datenbanksystem zu übertragen.

Die in der Arbeit entworfene HypertextMaschine erlaubt die Strukturierung von Hypertexten, indem verschiedene Typen von Knoten und Links vordefiniert werden können. Die dafür notwendigen Funktionalitäten sowie Funktionalitäten zur Erzeugung und zur Durchwanderung von Hypertexten wurden in der Arbeit dargestellt. Die Definition von in einem Hypertext erlaubten Strukturen kann aber nur dann sinnvoll sein, wenn problemspezifische Strukturkonzepte, wie z.B. das IBIS-Konzept, für die gewünschten Anwendungen vorhanden sind.

Erweiterungsmöglichkeiten der HypertextMaschine liegen auf dem Gebiet der in Kapitel 3 skizzierten Schnittstellen zu externen Daten und Funktionen. Diese externen Daten können beispielsweise komplexe audiovisuelle Informationen sein, um dem Anwender aus dem Hypertext heraus Film- und Tonquellen anbieten zu können.

Denkbar ist eine Schnittstelle aus der HypertextMaschine heraus zu externen Datenbanken. Von einem Benutzer soll dabei nicht erwartet werden, daß er die Syntax jeder Zieldatenbank beherrscht. Die HypertextMaschine muß die Möglichkeit bieten, in Knoten Anfragen abzulegen, die bei der Aktivierung eines entsprechenden Knotens ausgeführt werden. Das Ergebnis einer solchen Anfrage könnte dann als ein neuer Knoten im Hypertext abgelegt werden.

Neben der in Kapitel 3 geforderten Möglichkeit zur Einbindung von Mails ist es auch denkbar, über die HypertextMaschine eine direkte Kommunikation mit anderen Anwendern aufzubauen.

Appendix A

Die Reihenfolge der Kapitel im Anhang entspricht der Reihenfolge der Kapitel der vorliegenden Arbeit. Wird von mehreren Kapiteln auf den Anhang verwiesen, ist der erste Verweis ausschlaggebend. Kapitel ohne Verweise zum Anhang erhalten keinen Abschnitt.

A.1  Ein kleines Hypertextlexikon

Die wichtigsten Termini im Umfeld von Hypertext werden hier zusammengefaßt. Diese Zusammenstellung soll keine erschöpfende Erläuterung sein, sondern als Gedächtnisstütze dienen. Sie bezieht sich auch nur auf die allgemein üblichen Begriffe. Hyperspace:
[
Atom:]  ®  Knoten.
[
Bookmark:] Die Hervorhebung eines Knotens durch den Leser eines Hypertextes.
[
Browsing:] Die beiläufige Aufnahme von Informationen.
[
Fisheye View:] Darstellung eines Hypertextausschnittes, die mit zunehmender Entfernung zum aktuellen Knoten stärker abstrahiert.
[
Guided Tour:] Ein durch einen ,,Autor'' vorgegebener Pfad durch einen Hypertext.
[
Hypergraph:]  ®  Hypertext.
[
Hypertext:] Ein Menge von Informationseinheiten und Verbindungen zwischen diesen.
[
Hyperspace:]  ®  Hypertext.
[
Knoten:] Abgeschlossene Informationseinheit.
[
Lesezeichen:]  ®  Bookmark.
[
Link:] Logischer Zusammenhang zwischen den Informationseinheiten, den Knoten und Zugriffsmöglichkeiten auf die Knoten.
[
Mark:]  ®  Bookmark;  ®  Thumb Tab.
[
Navigation:] Die Auswahl der nächsten Knoten.
[
Node:]  ®  Knoten.
[
Thumb Tab:] Die Hervorhebung eines Knotens durch den Autor eines Hypertextes.
[
Unit:]  ®  Knoten.
[
Verbindung:]  ®  Link.
[
View:] Sicht auf einen Hypertext; eine Einschränkung des Hypertextes auf ein Teilnetz.
[
Web:] Netz;  ®  Hypertext.

A.2  Delinearisierung eines LATEX-Dokumentes

Das nachfolgende Beispiel soll die Möglichkeit der automatisierten Einbeziehung linearer Texte in Hypertext veranschaulichen. Dabei wird auf die logischen Strukturen eines LATEX-DoKumentes gegriffen. Aus einem Text mit der Struktur
titel tableofcontents listoffigures 



section A; Absatz 1 Abbildung 1 Absatz 2



section B; subsection C; Absatz 1 Absatz 2 subsection D; Absatz 1



könnte automatisiert ein Hypergraph wie in Abbildung A.1 generiert werden. Die verwendeten LATEXBegriffe bedeuten:
tableofcontents:
das Inhaltsverzeichnis.
listoffigures:
das Abbildungsverzeichnis.
section:
ein Kapitel.
subsection:
ein Unterkapitel.
Abbildung A.0: Delinearisierung eines Dokumentes

Appendix B

B.1  Formale Funktionsdarstellung der Hypertext Abstract Machine

Bevor die formale Funktionsdarstellung der Hypertext Abstract Machine aus Kapitel cam88 erfolgt, werden die verwendeten Begriffe zusammengefaßt: Attributindex:
[
Attribut:] ein Attributname.
[
Attributindex:] Attributidentifikator.
[
Boolean:] Boole'scher Wert(Wahr oder Falsch).
[
Contents:] Inhalt eines Knotens.
[
Context:] Identifizierung für den aktuellen Graphen.
[
Demon:] Dämonen sind Funktionen die externe Ereignisse auslösen.
[
Difference:] Unterschied zwischen zwei Knoten.
[
Directory:] ein Verzeichnis.
[
Event:] Ereignis
[
Explanation:] erläuternder Text.
[
LinkIndex:] Verbindungsidentifikator.
[
Machine:] Name in einem Netzwerk.
[
NodeIndex:] Knotenidentifikator.
[
Position:] Nummer.
[
Predicate:] Zusammengefaßte Bewertung von Attributen.
[
ProjectId:] eindeutige Referenz eines Hypergraphen.
[
Protections:] Datenzugriffsrechte.
[
Time:] Datum und Uhrzeit.
[
Value:] Ausprägung eines Attributs.
Um die Länge der Operationen einzuschränken, werden noch folgende Abkürzungen verwendet. Version:
[
LinkPt:] NodeIndex ×Position ×Time ×Boolean
[
t:] Time
[
Version:] Time ×Explanation
Für die Darstellung der Funktionen wird folgende Syntax verwendet:
operation: op1 ×... ×opn \RA result1 ×... ×resultm.
Dabei werden die symbolischen Exponenten ,,*'' und ,,+'' verwendet für x* º xn für n ³ 0 und x+ º xn für n ³ 1.

B.2  Graphenoperationen

createGraph:
Directory ×Protections \RA ProjectId ×t
destroyGraph:
ProjectId ×Directory \RA
openGraph:
ProjectId ×Machine ×Directory \RA Context
addNode:
Context ×Boolean \RA NodeIndex ×t
deleteNode:
Context ×NodeIndex \RA
addLink:
Context ×LinkPt1 ×LinkPt2 \RA LinkIndex ×t
copyLink:
Context ×LinkIndex ×t1 ×Boolean ×LinkPt \RA LinkIndex ×t
deleteLink:
Context ×LinkIndex \RA
linarizeGraph:
Context ×NodeIndex ×t ×Predicate1 × Predicate2 ×AttributIndex1m × Attributindxex2n \RA (NodeIndex ×Valuem)* ×(LinkIndex ×Valuen)*
getGraphQuery:
Context ×t ×Predicate1 ×Predicate2 × AttributeIndex1m ×AttributeIndex2n \RA (NodeIndex ×Valuem)* × (LinkIndex ×Valuen)*

B.3  Knotenoperationen

openNode:
NodeIndex ×t1 ×Attributindexm \RA Contents ×LinkPt* ×Valuem ×t2
modifyNode:
NodeIndex ×t ×Contents ×LinkPointer \RA
getNodeTimeStamp:
NodeIndex \RA t
changeNodeProtection:
NodeIndex ×Protections \RA
getNodeVersions:
NodeIndex \RA Version1+ ×Version2*
getNodeDifferences:
NodeIndex ×t1 ×t2 \RA Difference*

B.4  Linkoperationen

getToNode:
LinkIndex ×t1 \RA NodeIndex ×t2
getFromNode:
LinkIndex ×t1 \RA NodeIndex ×t2

B.5  Attributoperationen

getAttributes:
Context ×t \RA (Attribute ×AttributeIndex)*
getAttributeValues:
Context ×AttributeIndex ×t \RA Value*
getAttributIndex:
Context ×Attribute \RA AttributIndex
setLinkAttributValue:
LinkIndex ×AttributeIndex ×Value \RA
setNodeAttributeValue:
NodeIndex ×AttributeIndex ×Value \RA
deleteLinkAttribute:
LinkIndex ×AttributeIndex \RA
deleteNodeAttribut:
NodeIndex ×AttributeIndex \RA
getLinkAttributValue:
LinkIndex ×AttributeIndex ×t \RA
getNodeAttributValue:
NodeIndex ×AttributeIndex ×t \RA
getLinkAttributes:
LinkIndex ×t \RA
getNodeAttributes:
NodeIndex ×t \RA (Attribute × AttributeIndex ×Value)*

B.6  Dämonoperationen

setGraphDemonValue:
Context ×Event  Demon \RA
getGraphDemons:
Context ×t \RA (Event ×Demon)*
setNodeDemon:
NodeIndex ×Event ×Demon \RA
getNodeDemons:
NodeIndex ×t \RA (Event ×Demon)* \RA

Appendix C

C.1  Grundfunktionen einer abstrakten HypertextMaschine

Die Syntax der Funktionen erfolgt nach dem Muster:
Funktionsname (Parameter1, ..., Parameterm®  Ergebniswert1, ..., Ergebniswertn.

C.1.1  Funktionen für Knotentypen und Linktypen

C.1.2  Funktionen für Knoten

C.1.3  Funktionen für Links

C.1.4  Funktionen für Attribute

C.1.5  Funktionen zur Unterstützung des Hypertextdesigns und der Navigation

Appendix D

D.1  Zusammenfassung der Relationen

Die Relationen aus Kapitel 6 werden aus Gründen der Übersichtlichkeit hier unkommentiert und ohne Feldbeschreibung in folgender Form zusammengefaßt.
[Relationenbezeichnung] (Attribut1, ..., Attributn)
Dabei sind die Attribute im Sinne des Relationenmodells benutzt.

Relationen für Knotentypen und Linktypen

Knotentyp
(KnotentypId, Erstellungsdatum, Autor, Titel, Beschreibung)
Knotentyp Attribute
(KnotentypId, Erstellungsdatum, Autor, Knoten-AttributId)
Knotentyp Standardwerte textuell
(KnotentypId, Erstellungsdatum, Autor, Knoten-AttributId, Attributwert)
Linktyp
(LinktypId, Erstellungsdatum, Autor, Titel, Beschreibung)
Linktyp Attribute
(LinktypId, Erstellungsdatum, Autor, Link-AttributId)
Linktyp Variable
(LinktypId, Erstellungsdatum, Autor, Link-AttributId, Attributwert)
Zulässige Quelltypen
(LinktypId, Erstellungsdatum, Autor, KnotentypId)
Zulässige Zieltypen
(LinktypId, Erstellungsdatum, Autor, KnotentypId)

Relationen für Knoten

Knoten
(KnotenId, Erstellungsdatum, Autor, KnotentypId)
Knotenattribute numerisch
(KnotenId, Erstellungsdatum, Autor, Knoten-AttributId, Wertenummer, Ausprägung)
Knotenattribute textuell
(KnotenId, Erstellungsdatum, Autor, Knoten-AttributId, Wertenummer, Ausprägung)
Textknoten
(KnotenId, Erstellungsdatum, Autor, Text)

Relationen für Links

Link
(LinkId, Erstellungsdatum, Autor, LinktypId, Quellknoten, Zielknoten)
Linkattribute numerisch
(LinkId, Erstellungsdatum, Autor, Link-AttributId, Wertenummer, Ausprägung)
Linkattribute textuell
(LinkId, Erstellungsdatum, Autor, Link-AttributId, Wertenummer,Ausprägung)

Relationen für Attribute von Knoten und Links

Knotenattribute Definition
(KnotenattributId, Erstellungsdatum, Autor, Inhaltstyp, Titel, Beschreibung, Mindestanzahl Werte, Höchstanzahl Werte)
Linkattribute Definition
(LinkattributId, Erstellungsdatum, Autor, Inhaltstyp, Titel, Beschreibung, Mindestanzahl Werte, Höchstanzahl Werte)
Knotenattributbereiche numerisch
(KnotenattributId, Erstellungsdatum, Autor, Minimum, Maximum)
Linkattributbereiche numerisch
(LinkattributId, Erstellungsdatum, Autor, Minimum, Maximum)
Knotenattributbereiche textuell
(KnotenattributId, Erstellungsdatum, Autor, Minimum, Maximum)
Linkattributbereiche textuell
(LinkattributId, Erstellungsdatum, Autor, Minimum, Maximum)
Knotenattribut Standardwerte numerisch
(KnotenattributId, Erstellungsdatum, Autor, Standardwert)
Linkattribut Standardwerte numerisch
(LinkattributId, Erstellungsdatum, Autor, Standardwert)
Knotenattribut Standardwerte textuell
(KnotenattributId, Erstellungsdatum, Autor, Standardwert)
Linkattribut Standardwerte textuell
(LinkattributId, Erstellungsdatum, Autor, Standardwert)
Knotenattribut Variable
(KnotenattributId, Erstellungsdatum, Autor, Variable)
Linkattribut Variable
(LinkattributId, Erstellungsdatum, Autor, Variable)

Zusätzliche Relationen

Nummern
(Bezeichnung, Zähler)

Verbund von Relationen

Mögliche Verbindungen
(LinktypId, Zulässige Quelltypen (QuellknotentypId), Zulässige Zieltypen (ZielknotentypId))

Bibliography

[bern88]
Bernstein, M.: The bookmark and the compass .- Orientation tools for hypertext users, in: SIGOIS Bulletin 9, 1988, 4, 34-45.
[bush45]
Bush, V.: As we may think; in: Atlantic monthly 176,7,1945 101-108.
[bush67]
Bush, V.: Sience is not enough / William Morrow and Co. 1967.
[cam88]
Campbell, B.; Goodman, J.M.: HAM: A general purpose hypertext abstract machine; in: Communications of the ACM31,7,1988 856-861.
[codd71]
Codd, E.F.: Normalized data base structure.- A brief tutorial, in: Proceedings of ACM SIGFIDET Workshop. 1971 1-17.
[con87]
Conklin J.: Hypertext:survey and introduction. / IEEE Computer, 20(9), 1987 17-41.
[del86]
Delisle, N.M.; Schwartz, M.D.: Neptune: A hypertext system for CAD applications; in: Proceedings of ACM SIGMOD '86. International Conference on Management of Data(Washington,D.C.,May 28-30) 132-143.
[edw88]
Edwards, D.M.; Hardmann, L.: Lost in Hyperspace .- Cognitiv mapping and navigation in a hypertext environment. in: Proceedings Aberdeen I 1988.
[fink89]
Finkenzeller, H.; Kracke U.; Unterstein M.: Systematischer Einsatz von SQL-ORACLE / Addison Wesley (Deutschland), 1989.
[fis83]
Fischer, G.: Navigationswerkzeuge in wissensbasierten Systemen; in: Scharfenberger, FBO, OFFICE MANAGEMENT, Baden-Baden 1983 49-52.
[fur86]
Furnas, G.W.: Generalized fisheye views. in: Proceedings of the ACM CHI'86, Boston 1986 16-23.
[ise91]
Isenmann S.; Reuter,W.D.; Schulz, K.P.: HyperIBIS .- Ein Informationssystem zur Umweltplanung / Ulm: FAW-TR-91008, 1991.
[karg88]
Karg, P.K.: Abstraction Mechanism in HT; in: Communications of the ACM 31,7,1988 862-870.
[kaem88]
Kämpke T.; Radermacher F.J.: Höhere Funktionalitäten in Umweltinformationssystemen / Ulm: FAW Bericht B-8804, 1988.
[kuh91]
Kuhlen, R.: Hypertext.- Ein nicht-lineares Medium zwischen Buch und Wissensbank / Berlin, Heidelberg, ... Springer, (Edition SEL-Stiftung), 1991.
[kunz70]
Kunz,W.; Rittel, H.W.J.: ISSUES as elements of information Systems: Working Paper 130; University of California 1970.
[mey88]
Meyer, P.: Hochgestapelt.- HyperCard: Macintoshs Alleskönner; in: Heise, c't 5,1988 88-94.
[nel65]
Nelson, T.H.: A file structure for the complex, the changing, and the intermediate. in: ACM 20th National Conference - Proceedings 1965 84-100.
[niel90]
Nielsen, J.:Hypertext & Hypermedia / Academic Press, Inc. 1990.
[nim]
Nimmergut, J.: Kreativtechniken / RoRoRo.
[par89]
Parsaye, K. [Parsaye, K.; Chignel, M.; Khoshafian, S.; Wong, H.]: Intelligent databases .- Objekt-oriented, deduktive, hypermedia technologies / New York: Wiley 1989.
[schla83]
Schlageter, G.; Stucky, W.: Datenbanksysteme.-Konzepte und Modelle / Teubner Studienbuch Informatik 1983.
[zell88]
Zellweger, P.T.: Active paths through multimedia documents. in: van Vliet, J.C. Document Manipulation und Typography, Cambridge University Press 1988 19-34.
Hiermit versichere ich, daß ich die vorliegende Diplomarbeit selbstständig verfaßt habe und keine anderen als die von mir angegebenen Quellen und Hilfsmittel benutzt habe. 
 

Ulm, den 10. Januar 1992 


Footnotes:

1Eine Kopie der ,,Ebstorfer Weltkarte'' befindet sich im Lüneburger Museum und enthält auf 12m2 ca. 1500 bildliche Darstellungen und kurze lateinische Texte.

2 Der Begriff ,,abgeschlossen'' wird in dieser Arbeit so benutzt, daß jeder Knoten für sich noch einen informationellen Eigenwert besitzt, d.h. nicht bis auf Satzteil oder Wortebene aufgegliedert wird. Diese Anforderung ist nicht vorgegeben und wird durchaus unterschiedlich behandelt.

3Die weitere Auflösung des Textes in Sätze und diese eventuell noch in Worte ist zwar denkbar, jedoch enthalten diese kleinsten Einheiten dann keine eigenständigen Informationen mehr.

4Ein Teilnetz ist ein Ausschnitt aus einem Hypertext, d.h. es enthält nur einen Teil der Knoten und nur einen Teil der Links zwischen diesen.

5Bei der direkten Anwahl eines Knotens über seinen Identifikator wird kein Link benutzt, daher wird für diesen Fall ein vereinbartes Kennzeichen, z.B. ,,NULL'' als Linkidentifikator eingetragen.

6Commit Work und Rollback sind Funktionen, die von der Datenbank zur Verfügung gestellt werden.

7Der Wert 0 ist bei ORACLE Datenbanken zu unterscheiden von dem Begriff ,,NULL''; 0 oder null ist ein numerischer Wert, während NULL besagt: ,,Es ist kein Wert eingetragen.''


File translated from TEX by TTH, version 2.69.
On 29 Jul 2000, 20:25.

Impressum upr