No Title
|
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
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).
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.
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.
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:
- Entscheidungsfragen (,,Soll x der Fall sein?'').
- Instrumentelle Fragen (,,Wie kann x erreicht werden?'').
- Explanatorische Fragen (,,Was sind die Folgen/Ursachen von x?'').
- Faktische Fragen (,,Ist x der Fall?/ Was ist der Fall?'').
- Definitorische Fragen (,,Was ist x?'').
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:
- Der Anwender kennt die Verzweigungsmöglichkeiten des Systems nicht.
- Der Leser versteht das vom Autor erzeugte Hierachiemodel nicht.
- Durch die Benutzung ,,unbekannter Abzweigungen'' gelangt der Leser in
eine Sackgasse und kann den Weg zurück nicht oder nur mühsam verfolgen.
- Der Hypertext enthält zu viele Verbindungen (,,Spaghetti-Text'').
- Der Leser bemerkt nicht, daß er sich in einem Zirkel eingeschlossen hat.
Als Lösungsmöglichkeiten für diese Probleme ist denkbar:
- dem Anwender graphische Übersichtskarten zur Verfügung zu stellen, die
bereits besuchte Knoten kenntlich machen und
- die Gesamtheit aller Verbindungen in der Nähe des derzeitigen
Standpunktes wiedergeben.
Die Aussagekraft graphischer Darstellung sinkt jedoch mit Zunahme der
Verflechtung und kann die Orientierung noch weiter stören.
- die mit zunehmender Entfernung Knoten und Verbindungen abstrahieren,
,,Fisheye View'' [fur86], und nur herausgehobene oder häufig
benutzte Knoten/Verbindungen wiedergeben.
- die nur Verbindungen beinhalten, die gesetzte Attribute erfüllen.
- durch einen Autor des Textes erstellt wurden, auf ,,wesentliche''
Knoten und Verbindungen reduziert sind und dem Leser eine
,,guided tour'' [zell88] anbieten,
die einen
erheblichen Teil der Entscheidungsmöglichkeiten einschränkt.
- den beschrittenen Weg des Lesers wiedergeben und ihm anhand dieses
,,Fadens der Ariadne'' eine gezielte Umkehr erlauben.
- durch den Anwender erstellt wurden.
- der Anwender erhält die Möglichkeit temporäre oder fixe
,,Lesezeichen'' [bern88] zu setzen, die es
erlauben zu bekannten Knoten zurückzukehren.
- der Autor des Hypertextes setzt ,,Marken'', ,,thumb tabs'' [bern88],
die jederzeit ansteuerbar sind.
- dem Anwender wird ein ,,Faden der Ariadne'' (,,breadcrumbs'', ,,history''
[niel90]) mitgegeben, der für jede Sitzung gespeichert wird und
dem Anwender die Möglichkeit gibt, den Weg eines bestimmten
Datums zu verfolgen und dabei Zirkel und Sackgassen zu umgehen, falls
dies gewünscht ist.
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ß
- die vom Leser gewünschte Information erst durch diesen Suchprozess
entsteht und nicht explizit vorhanden ist.
- der Leser sich nicht von
einem gegebenen Start- zu einem gegebenen Zielpunkt bewegt, sondern von
einem selbstgewählten Ausgangspunkt sich auf ein u.U. unbekanntes Ziel
zubewegt.
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''.
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:
- Jeder Knoten und jeder Link hat genau einen Typ, der bei der Erzeugung
festgelegt wird und nicht geändert werden kann.
- Die Definition der Typen erfolgt global und erzeugt einen
Typidentifikator.
- Die Vergabe eines Typs an ein Hypertextelement erfolgt über einen
Typidentifikator.
- Die Struktur eines Typs ergibt sich aus einer Menge von Attributen, die
für Knoten und Links des Typs Ausprägungen beinhalten können.
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:
- Erzeuge Knoten Typ(Typname, Typbeschreibung) ® KnotentypId.
- Erzeuge Link Typ(Typname, Typbeschreibung) ® LinktypId.
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.
- Erzeuge Knoten(KnotentypId) ® KnotenId.
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.
- Etabliere Link(LinktypId, QuellknotenId, ZielknotenId)
® LinkId.
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''.
- Erzeuge Knotenattribut (Attributname, Attributstyp, minimale,
maximale Anzahl Ausprägungen) ® KnotenattributId.
- Erzeuge Linkattribut (Attributname, Attributstyp, minimale, maximale
Anzahl Ausprägungen) ® LinkattributId.
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.
- Setze Knotenattributwert(KnotenId, KnotenattributsId, Ausprägung).
- Setze Linkattributwert(LinkId, LinkattributsId, Ausprägung).
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.
- Addiere Knotentyp Attribut(KnotentypId, KnotenattributId).
- Addiere Linktyp Attribut(LinktypId, LinkattributId).
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.
- Addiere Knotentyp(ZielknotentypId, QuellknotentypId).
- Addiere Linktyp(ZiellinktypId, AusgangslinktypId).
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.
- Entferne Knotentyp Attribut (KnotentypId, KnotenattributId).
- Entferne Linktyp Attribut (LinktypId, LinkattributId).
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.
- Setze Knotentypattribut-Standardwert(KnotentypId,
KnotenattributId, Wert).
- Setze Linktypattribut-Standardwert(LinktypId, LinkattributId, Wert).
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.
- Ermittle Knotentyp Attributmenge(KnotentypId) ®
KnotenattributId1, ..., KnotenattributIdk.
- Ermittle Knotentyp Standardwert(KnotentypId, AttributId) ®
Standardwert1, ..., Standardwertl.
- Ermittle Linktyp Attributmenge(LinktypId) ®
LinkattributId1, ..., LinkattributIdm.
- Ermittle Linktyp Standardwert(LinktypId, AttributId) ®
Standardwert1, ..., Standardwertn.
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.
- Ändere Knotentyp Standardwert(KnotentypId, AttributId, alter
Standardwert, neuer Standardwert).
- Ändere Linktyp Standardwert(LinktypId, AttributId, alter
Standardwert, neuer Standardwert).
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.
- Definiere zulässiger Quelltyp(LinktypId, QuellknotentypId).
- Definiere zulässiger Zieltyp(LinktypId, ZielknotentypId).
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.
- Ermittle mögliche Verbindungstypen(Quell-KnotentypId,
Ziel-KnotentypId) ® LinktypId1, ..., LinktypIdl.
- Ermittle Zielknotentypen(Quell-KnotentypId, LinktypId) ®
Ziel-KnotentypId1, ..., Ziel-KnotentypIdm.
- Ermittle Quell-Knotentypen(Ziel-KnotentypId, LinktypId) ®
Quell-KnotentypId1, ..., Quell-KnotentypIdm.
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:
- ,,interner Text'': ein Text, der innerhalb der Datenbank gespeichert
ist, in der auch die Verwaltungsinformationen der HypertextMaschine liegen.
- ,,externer Text'': ein Text der separat verwaltet wird.
- ,,Datenbankanfrage'': der informationelle Inhalt ist das Ergebnis einer
Anfrage gegen die Datenbank, die die HypertextMaschine nutzt.
Aus dieser Auswahl ergeben sich je drei Funktionen zur Definition und zur
Änderung eines Knoteninhalts.
- Definiere internen Text(KnotenId).
- Definiere externen Text(KnotenId).
- Definiere Datenbankanfrage(KnotenId).
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.
- Lösche Knoteninhalt(KnotentypId).
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.
- Ermittle Knoteninhalt(KnotenId) ® informationeller
Knoteninhalt.
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.
- Kopiere Knoten(KnotenIdOrginal) ® KnotenIdKopie,
LinkId.
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.
- Addiere Knotenattribut(KnotenId, KnotenattributId).
- Setze Knotenattribut-Wert(KnotenId, AttributId, Wert).
- Ändere Wert(KnotenId, AttributId, alter Wert, neuer Wert).
Die möglichen Attribute und deren Ausprägungen müssen auch
ermittelt werden können.
- Ermittle Knotenattribute(KnotenId) ® KnotenattributId1,
..., KnotenattributIdm.
- Ermittle Knotenattribut-Wert(KnotenId, KnotenattributId) ®
Wert1, ..., Wertn.
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.
- Aktiviere Knoten(KnotenId) ® aktueller Knoten.
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.
- Ermittle aktuellen Knotenidentifikator ® KnotenId.
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.
- Ermittle ausgehende Links(KnotenId) ® LinkId1, ...,
LinkIdk.
- Ermittle eintreffende Links(KnotenId) ® LinkId1, ...,
LinkIdl.
- Verfolge Link(KnotenId, LinkId) ® aktueller Knoten.
- Ermittle Zielknoten(KnotenId) ® KnotenId1, ..., KnotenIdm.
- Ermittle Quellknoten(KnotenId) ® KnotenId1, ...,
KnotenIdn.
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.
- Addiere Linkattribut(LinkId, LinkattributId).
- Setze Linkattribut-Wert(LinkId, AttributId, Wert).
- Ändere Wert(LinkId, AttributId, alter Wert, neuer Wert).
- Ermittle Linkattribute(LinkId) ® LinkattributId1,
..., LinkattributIdm.
- Ermittle Linkattribut-Wert(LinkId, LinkattributId) ®
Wert1, ..., Wertn.
Wichtige Funktionen für die Navigation in einem Hypertext, sind die
Ermittlung der Quelle eines Links und seines Zieles:
- Ermittle Link-Ziel(LinkId) ® KnotenIdZiel.
- Ermittle Link-Quelle(LinkId) ® KnotenIdQuelle.
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.
- Setze Knotenattribut-Standardwert(KnotenattributId, Wert).
- Setze Linkattribut-Standardwert(LinkattributId, Wert).
- Ändere Knotenattribut-Standardwert(KnotenattributId, Wertalt,
Wertneu).
- Setze Linkattribut-Standardwert(LinkattributId, Wertalt,
Wertneu).
- Ermittle Knotenattribut-Standardwert(KnotenattributId) ®
Wert1, ..., Wertm.
- Ermittle Linkattribut-Standardwert(LinkattributId) ®
Wert1, ..., Wertn.
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.
- Setze Attributbereich(AttributId, Minimum, Maximum).
- Ändere Attributbereich(AttributId, Minimumalt, Maximumalt,
Minimumneu, Maximumneu).
- Ermittle Attributbereich(AttributId) ® Minimum1, Maximum1,
..., Minimum1, Maximumm.
- Setze Attributwert(AttributId, Wert).
- Ändere Attributwert(AttributId, Wertalt, Wertneu).
- Ermittle Attributwert(AttributId) ® Wert1, ..., Wertn.
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.
- Definiere Knoten-Filter(Knoten-AttributId, Attributwert) ®
Knoten-FilterId.
- Entferne Knoten-Filter(Knoten-FilterId).
- Definiere Link-Filter(Link-AttributId, Attributwert) ® Link-FilterId.
- Entferne Knoten-Filter(Link-FilterId).
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.
- Ermittle alle Knoten() ® KnotenId1, ...,
KnotenIdm.
- Ermittle alle Links() ® LinkId1, ..., LinkIdn.
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.
- Setze Marke(KnotenIdQuelle, Markentitel) ®
KnotenIdMarkenkommentar, LinkId.
Die Suche nach den Marken kann mit den in 4.2.9 erwähnten Filtern
erfolgen.
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.
- Ermittle Historie(Datum) ® HistorienknotenId.
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.
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.
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:
- Die Daten können redundanzfrei gespeichert werden.
- Änderungen von Daten werden zentral durchgeführt.
- Allen Benutzern der Datenbank stehen die selben Daten zur Verfügung.
- Es existiert nur ein Datenkatalog für alle Anwendungen auf der
Datenbank.
- Die Definition der Datensätze kann unabhängig von der physikalischen
Datenhaltung erfolgen.
- Durch die Definition von ,,Sichten'' können anwendungspezifische
Datensätze definiert werden, die unabhängig von der logischen Datenhaltung
der Datenbank 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:
- Bezeichnungen in der Datenbank dürfen keine Umlaute und Bindestriche
enthalten.
- Bezeichnungen dürfen keine Leerstellen enthalten.
- Bezeichnungen müssen aus weniger als 30 Zeichen bestehen.
- Bezeichnungen können aus Buchstaben, Ziffern und einem Unterstrich
,,_'' bestehen können.
- Groß- und Kleinbuchstaben werden nicht unterschieden.
- Das erste Zeichen einer Bezeichnung muß ein Buchstabe sein.
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)); |
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)); |
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); |
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:
- SQL-Begriffe werden groß geschrieben.
- Tabellen-, Spalten- und Viewbezeichnungen werden nicht hervorgehoben.
- Werte und Variable in den Anweisungen werden ,,nicht proportional''
geschrieben.
- Textuelle Werte werden zur Unterscheidung von Variablen in 'Hochkommas'
eingeschlossen.
- Variable sind Bezeichner, die zur Laufzeit der Anweisung konkrete Werte
beinhalten.
- Eine SQL-Anweisung wird immer mit einem Semikolon ( ; )
abgeschlossen.
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:
- Erzeuge Knoten Typ
- Erzeuge Knoten
- Definiere zulässigen Zielknotentyp
- Etabliere Link
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''.
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.
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
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
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
- Erzeuge Knoten Typ (Typname, Typbeschreibung) ® KnotentypId.
- Erzeuge Link Typ (Typname, Typbeschreibung) ® LinktypId.
- Addiere Knotentyp Attribut (KnotentypId, KnotenattributId).
- Addiere Knotentyp (Ziel-KnotentypId, Ausgangs-KnotentypId).
- Entferne Knotentyp Attribut (KnotentypId, KnotenattributId).
- Addiere Linktyp (Ziel-LinktypId, Ausgangs-LinktypId).
- Entferne Linktyp Attribut (Link-TypId, LinkattributId).
- Setze Knotentypattribut-Standardwert (KnotentypId, KnotenattributId,
Wert).
- Setze Linktypattribut-Standardwert (LinktypId, LinkattributId, Wert).
- Ermittle Knotentyp Attributmenge (KnotentypId) ® KnotenattributId1,
..., KnotenattributIdl.
- Ermittle Knotentyp Standardwerte (KnotentypId, AttributId) ®
Standardwert1, ..., Standardwertm.
- Ermittle Linktyp Attributmenge (LinktypId) ® LinkattributId1,
..., LinkattributIdn.
- Ermittle Linktyp Standardwerte (LinktypId, AttributId) ®
Standardwert1, ..., Standardwert1.
- Ändere Knotentyp Standardwert (KnotentypId, AttributId, alter
Standardwert, neuer Standardwert).
- Ändere Linktyp Standardwert (LinktypId, AttributId, alter Standardwert,
neuer Standardwert).
C.1.2 Funktionen für Knoten
- Erzeuge Knoten (KnotentypId) ® KnotenId.
- Setze Knotenattributwert (KnotenId, KnotenattributsId, Ausprägung).
- Definiere internen Text (KnotenId).
- Definiere externen Text (KnotenId).
- Definiere Datenbankanfrage (KnotenId).
- Lösche Knoteninhalt (KnotentypId).
- Ermittle Knoteninhalt (KnotenId) ® informationeller Knoteninhalt.
- Kopiere Knoten (KnotenIdOrginal) ® KnotenIdKopie, LinkId.
- Addiere Knotenattribut (KnotenId, KnotenattributId).
- Setze Knotenattribut-Wert (KnotenId, AttributId, Wert).
- Ändere Wert (KnotenId, AttributId, alter Wert, neuer Wert).
- Ermittle Knotenattribute (KnotenId) ® KnotenattributId1, ...,
KnotenattributIdm.
- Ermittle Knotenattribut-Werte (KnotenId, KnotenattributId) ® Wert1,
..., Wertn.
C.1.3 Funktionen für Links
- Etabliere Link (LinktypId, AusgangsknotenId, ZielknotenId) ® LinkId.
- Setze Linkattributwert (LinkId, LinkattributsId, Ausprägung).
- Addiere Linkattribut (LinkId, LinkattributId).
- Setze Linkattribut-Wert (LinkId, AttributId, Wert).
- Ändere Wert (LinkId, AttributId, alter Wert, neuer Wert).
- Ermittle Linkattribute (LinkId) ® LinkattributId1, ...,
LinkattributIdm.
- Ermittle Linkattribut-Wert (LinkId, LinkattributId) ® Wert1, ...,
Wertn.
C.1.4 Funktionen für Attribute
- Erzeuge Linkattribut (Attributname, Attributbeschreibung,
Attributstyp, minimale, maximale Anzahl Ausprägungen) ® LinkattributsId.
- Erzeuge Knotenattribut (Attributname, Attributstyp, minimale,
maximale Anzahl Ausprägungen) ® KnotenattributsId.
- Setze Knotenattribut-Standardwert (KnotenattributId, Wert).
- Setze Linkattribut-Standardwert (LinkattributId, Wert).
- Ändere Knotenattribut-Standardwert (KnotenattributId, Wertalt,
Wertneu).
- Setze Linkattribut-Standardwert (LinkattributId, Wertalt,
Wertneu).
- Ermittle Knotenattribut-Standardwert (KnotenattributId) ® Wert.
- Ermittle Linkattribut-Standardwert (LinkattributId) ® Wert.
- Setze Attributbereich (AttributId, Minimum, Maximum).
- Ändere Attributbereich (AttributId, Minimumalt, Maximumalt,
Minimumneu, Maximumneu).
- Ermittle Attributbereich (AttributId) ® Minimum1, Maximum1,
..., Minimum1, Maximumm.
- Setze Attributwert (AttributId, Wert).
- Ändere Attributwert (AttributId, Wertalt, Wertneu).
- Ermittle Attributwert (AttributId) ® Wert1, ..., Wertn.
C.1.5 Funktionen zur Unterstützung des Hypertextdesigns und der
Navigation
- Ermittle mögliche Verbindungstypen (Quell-KnotentypId, Ziel-KnotentypId)
® LinktypId1, ..., LinktypIdl.
- Ermittle Zielknotentypen (Quell-KnotentypId, LinktypId) ®
Ziel-KnotentypId1, ..., Ziel-KnotentypIdm.
- Ermittle Quell-Knotentypen (Ziel-KnotentypId, LinktypId) ®
Quell-KnotentypId1, ..., Quell-KnotentypIdm.
- Aktiviere Knoten (KnotenId) ® aktueller Knoten.
- Ermittle Knotenidentifikator ® KnotenId.
- Ermittle ausgehende Links (KnotenId) ® LinkId1, ...,
LinkIdk.
- Ermittle eintreffende Links (KnotenId) ® LinkId1, ...,
LinkIdl.
- Verfolge Link (KnotenId, LinkId) ® aktueller Knoten.
- Ermittle Zielknoten (KnoteId) ® KnotenId1, ..., KnotenIdm.
- Ermittle QuellKnoten (KnotenId) ® KnotenId1, ..., KnotenIdn.
- Ermittle Link-Ziel (LinkId) ® KnotenIdZiel.
- Ermittle Link-Quelle (LinkId) ® KnotenIdQuelle.
- Definiere Knoten-Filter (Knoten-AttributId, Attributwert) ®
Knoten-FilterId.
- Entferne Knoten-Filter (Knoten-FilterId).
- Definiere Link-Filter (Link-AttributId, Attributwert) ® Link-FilterId.
- Entferne Knoten-Filter (Link-FilterId).
- Ermittle alle Knoten ® KnotenId1, ..., KnotenIdm.
- Ermittle alle Links ® LinkId1, ..., LinkIdn.
- Setze Marke (KnotenIdQuelle, Markentitel) ®
KnotenIdMarkenkommentar, LinkId.
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.