Konzeption
einer abstrakten Hypertext-Maschine
und Abbildung auf ein relationales Datenmodell
Diplomarbeit
an der Fachhochschule für Witschaft und
Technik
Reutlingen
Fachbereich Wirtschaftsinformatik
|
Bearbeiter:
Uwe Michael Priebe
Bodenstraße 12
7900 Ulm
Betreuer: Prof. Dr. F. Laux
Abgabetermin: 10. Januar 1992
Vorwort
Das zweite Praxissemester meines Studiums der Wirtschaftsinformatik an
der Fachhochschule für Technik und Wirtschaft Reutlingen
absolvierte
ich im Sommersemester 1990 am Forschungsinstitut für
anwendungsorientierte
Wissensverarbeitung (FAW) in Ulm. Dort beschäftigte ich mich
im Rahmen
der Aktivitäten des Bereichs Umweltinformationssysteme
erstmals mit
dem Themengebiet Hypertext. Hypertext ist ein Mittel zur Darstellung
und
Bearbeitung von nichtlinearen Informationen. Im Verlauf des
Praxissemesters
implementierte ich ein einfaches Hypertextsystem. Dieses System war als
Prototyp für ein Informationssystem zur Unterstützung
der Referentenebene
in der Umweltverwaltung gedacht.
Aufbauend auf den Erfahrungen mit diesem Prototyp wurde am FAW
dann
ein System zur Entscheidungsvorbereitung in komplexen Problemlagen
konzipiert.
Dabei wurde auf den erstmals von H.J.W.Rittel und W.Kunz beschriebenen
Ansatz der Issue Based Information Systems (IBIS) [kunz70]
zurückgegriffen. Die Kernidee dieses Ansatzes ist die
Strukturierung
von Problemfeldern durch das Aufwerfen von Fragen (Issues). Diese
Fragen
werden beantwortet, wobei die Antworten in der Regel kontrovers sind
und
durch Argumente belegt werden müssen. Für die
Unterstützung
dieses Ansatzes wurde am FAW das (informationstechnisch) auf dem
Hypertextparadigma
[con87]
[nel65]
basierende System HyperIBIS realisiert.
Beim Design von hypertextartigen Systemen ist es sinnvoll,
verschiedene
Schichten zu unterscheiden. B.Campbell und J.M.Goodman [cam88]
unterscheiden dabei im wesentlichen zwischen einer Benutzerschicht, die
der Präsentation des Hypertext auf dem Bildschirm dient, einer
Anwendungsschicht
und einer Schicht zur Verwaltung des eigentlichen Hypertextes
(Abstrakte
Hypertext-Maschine).
In der vorliegenden Arbeit werden die Ansätze von
B.Campbell und
J.M.Goodman aufgegriffen, wobei das dort beschriebene Konzept der
abstrakten
HypertextMaschine verfeinert wird. Ein Kernpunkt ist dabei die
Möglichkeit
der Definition von Struktureigenschaften (wie z.B. unterschiedlichen
Typen
von Knoten sowie unterschiedlichen Typen von Links) für eine
spezifische
Anwendung (z.B. HyperIBIS). Aufbauend auf diesen Definitionen
können
dann Hypertexte erzeugt werden. Für die Erzeugung und die
spätere
Durchwanderung des Hypertextes werden verschiedene Funktionen
bereitgestellt,
die von der Anwendungsschicht aus aufgerufen werden. Ein weiterer
Kernpunkt
ist die Abbildung der Hypertextstrukturen auf das relationale
Datenmodell.
In Kapitel 1 wird zunächst überblicksartig
die Hypertext-Idee
dargestellt sowie auf mögliche Anwendungen von Hypertext
eingegangen.
Neben den Vorteilen des Hypertextansatzes werden auch
hypertextspezifische
Probleme skizziert. Kapitel 2 beschäftigt sich mit der
Architektur
von Hypertextsystemen, wobei insbesondere auf die Arbeiten von
B.Campbell
und J.M.Goodman [cam88]
und N.M.Delisle und M.D.Schwartz [del86]
eingegangen wird. Darauf aufbauend werden in Kapitel 3 Forderungen an
eine
modifizierte abstrakte HypertextMaschine hergeleitet. Kapitel 4 geht
zunächst
auf Funktionen zur Definition der Struktur eines spezifischen
Hypertextes
ein. Im Anschluß werden Funktionen zur Erzeugung von
Instanzen von
Hypertextelementen und Funktionen zur Durchwanderung eines Hypertextes
beschrieben. In Kapitel 6 wird die Abbildung der Hypertextstrukturen
auf
das Relationenmodell beschrieben. Die Grundzüge des
Relationenmodells
sind in Kapitel 5 erläutert. Schließlich wird in
Kapitel 7 ein
kurzer Ausblick gegeben.
Die Diplomarbeit entstand in den Monaten August 1991 bis
Januar 1992
im Projekt ZEUS (,,Zentrales Umweltkompetenz-System'') am FAW Ulm. Die
Umsetzung der in der Diplomarbeit beschriebenen Konzepte, geschah auf
einer
SUN SPARC Station, unter Verwendung einer ORACLE Datenbank.
Contents
1 Hypertext
1.1
Motivation
1.2
Das Grundkonzept
von Hypertext.
1.2.1
Knoten
1.2.2
Links
1.2.3
Manipulationen
1.2.4
Hypertextsysteme
1.3
Hypertext als Mittel
der Informations -beschaffung
1.3.1
Navigation
1.3.2
Browsing
1.3.3
Indizierung
1.4
Anwendungen f ur
Hypertextsysteme
1.4.1
Hilfesysteme
1.4.2
Informationssysteme
1.4.3
Statische und dynamische Hypertextsysteme
1.4.4
Informationssysteme mit aktueller Datenbasis
1.4.5
Entscheidungsunterst utzende Systeme
1.4.6
Unterst utzung von Kreativtechniken
1.5
Hypertextspezifische
Probleme
1.5.1
Einbeziehung linearer Informationen
1.5.2
Generierung linearer Informationen
1.5.3
Lost in Hyperspace
1.5.4
Vom Text- zum Hypertextleser.
2 Architektur von
Hypertextsystemen
2.1
Die Hypertext Abstract
Machine (HAM)
2.2
Die Funktionalit
aten einer Hypertext --Maschine
2.3
Graphenoperationen
2.4
Knotenoperationen
2.5
Verbindungsoperationen
2.6
Attributoperationen
2.7
D amonoperationen
3 Die modifizierte
abstrakte Hypertext --Maschine
3.1
Elemente und Funktionen
einer abstrakten Hypertext --Maschine
3.2
Schnittstellen einer
abstrakten Hypertext --Maschine
3.2.1
Datenverwaltung in einer Datenbank
3.2.2
Benutzerinterface
3.2.3
Mail
3.2.4
Medienintegration und -steuerung
3.2.5
Einbindung von Datenbankabfragen
4 Elemente und Funktionen
einer abstrakten
Hypertext --Maschine
4.1
Definition der Elemente
von Hypertext
4.1.1
Klassen f ur Knoten und Verbindungen
4.1.2
Erzeugung von Knoten
4.1.3
Einrichten von Links
4.1.4
Definition von Attributen
4.2
Funktionen f ur
Instanzen von Hypertext-Elementen
4.2.1
Funktionen zur Definition von Attributmengen
4.2.2
Funktionen zur Ermittlung von Informationen uber Attributmengen
4.2.3
Funktionen zur Anderung von Standardwerten von Knotentypen und Linktypen
4.2.4
Regelung der Verbindungsm oglichkeiten durch Linktypen.
4.2.5
Funktionen f ur Knoten
4.2.6
Definition der Navigationsfunktionen auf Knotenebenen
4.2.7
Funktionen f ur Links
4.2.8
Funktionen f ur Attribute
4.2.9
Filter f ur Attribute von Knoten und Links
4.3
Weitere, spezielle,
Funktionen der Hypertext --Maschine
4.3.1
Lesezeichen
4.3.2
Historie
4.3.3
Guided Tour
5 Das Relationenmodell
5.1
Grundbegriffe des
relationalen Datenmodells
5.1.1
Dom anen
5.1.2
Attribute
5.1.3
Relationen und Tupel
5.1.4
`Schl ussel ' f ur Relationen
5.2
Integrit atsanforderungen
des Relationenmodells
5.3
Manipulation von
Relationen
5.4
Normalisierung von
Relationen
5.5
Architektur von
Datenbanken
5.5.1
Das Strukturschema von Datenbanken
6 Abbildung der abstrakten
Hypertext --Maschine
auf das Relationenmodell
6.1
Auswahl einer Datenbank
f ur die Abbildung der Hypertext --Maschine auf das Relationenmodell.
6.2
Abbildung der Elemente
der modifizierten abstrakten Hypertext --Maschine auf eine ORACLE
Datenbank.
6.2.1
SQL-Umsetzung der Tabellendefinition
6.2.2
Knotentypen
6.2.3
Linktypen
6.2.4
Knoten
6.2.5
Links
6.2.6
Knotenattribute und Linkattribute
6.2.7
Weitere Tabellen und Views
6.3
Definition einiger
Funktionen der abstrakten Hypertext --Maschine f ur eine ORACLE
Datenbank.
6.3.1
Erzeuge Knoten Typ
6.3.2
Erzeuge Knoten
6.3.3
Definiere zul assigen Zielknotentyp
6.3.4
Etabliere Link
6.3.5
Abbildung einer Hypertext --Maschine auf eine beliebige Datenbank
7 Ausblick
A
A.1
Ein kleines Hypertextlexikon
A.2
Delinearisierung
eines L a T EX-Dokumentes
B
B.1
Formale Funktionsdarstellung
der Hypertext Abstract Machine
B.2
Graphenoperationen
B.3
Knotenoperationen
B.4
Linkoperationen
B.5
Attributoperationen
B.6
D amonoperationen
C
C.1
Grundfunktionen
einer abstrakten Hy -per -text --Ma -schi -ne
C.1.1
Funktionen f ur Knotentypen und Linktypen
C.1.2
Funktionen f ur Knoten
C.1.3
Funktionen f ur Links
C.1.4
Funktionen f ur Attribute
C.1.5
Funktionen zur Unterst utzung des Hypertextdesigns und der Navigation
D
D.1
Zusammenfassung
der Relationen
Chapter 1
Hypertext
1.1
Motivation
Die wichtigsten Informationsmedien sind Texte und Abbildungen, die
linear
angeordnet sind. Diese lineare Anordnung von Informationen ist jedoch
nicht
aus der Motivation heraus entstanden, die Informationen in geeigneter
Weise
darzustellen, sondern aus den bisherigen technischen Gegebenheiten der
Informationsverwaltung. Diese Linearität entspricht aber nicht
immer
der menschlichen Denkweise [bush45];
die Nutzung linearer Strukturen ist vielmehr trainiert.
Für die Aufnahmen neuen Wissens versucht der Mensch,
zu abstrahieren
oder Analogien herzuleiten. Auch will er die Größe
der zu lernenden
Einheiten klein halten und mit Hilfe von Sekundärliteratur
sich den
Zugang zu neuem Wissen erleichtern. Durch Kommentierung werden die
erfaßten
Informationen einfacher reproduzierbar, oder es können weitere
Informationen
dazu erschlossen werden. Führt dies nicht zum Erfolg, kann
eine ,,Eselsbrücke''
der Schlüssel zum Gedächtnis sein.
Eine streng lineare Anordnung ist oft eher ein Hindernis als
eine Hilfe
auf dem Weg der Informationsbeschaffung. Um einem Leser die
Möglichkeit
zu bieten, sich seine Informationen auf Basis seines individuellen
Wissenhorizontes
in kleinen Einheiten zu erschließen, werden
vielfältige Mittel
eingesetzt, die Linearität zu durchbrechen. Die
häufigsten Methoden
dafür sind, Texte in logische Abschnitte aufzuteilen, auf
Abbildungen,
Erläuterungen oder auf weitere Texte oder Abschnitte zu
verweisen,
die die Informationsaufnahme erleichtern sollen.
Verfahren, die die Linearität der
Informationsdarstellung durchbrechen
sollen, wurden bereits durch Kartographen früherer
Jahrhunderte entworfen,
wie z.B. in der ,,Ebstorfer Weltkarte'' 1
aus dem 13. Jahrhundert, mit der der Versuch unternommen wurde, das
,,Weltwissen''
dieser Zeit zusammenzufassen. Diese Weltkarte besteht aus einer
Landkarte,
die an bestimmten Stellen weiterführende Informationen, wie
z.B. die
Erklärung ,,Was ist ein Elefant?'' mit Text und Bildern
bereithält.
Vannevar Bush gilt mit seinem Konzept von Memex, dem ,,memory
extender'',
als Großvater des Hypertext. Das Konzept von Memex wurde in
den dreißiger
Jahren durch ihn entworfen, jedoch nie verwirklicht. Das System sollte
eine Bücherei und ein Karteisystem darstellen, das
mikroverfilmt in
einem Arbeitstisch mit mehreren Lesegeräten integriert werden
sollte,
um einem Benutzer Einblick in mehrere Dokumente gleichzeitig zu bieten.
Dabei waren Verknüpfungen zwischen diesen Dokumenten
vorgesehen, die
eine Semantik beinhalten [bush45]
[bush67].
In den folgenden Jahrzehnten haben sich die technischen
Möglichkeiten
der Informationsspeicherung drastisch erweitert. Unter
Berücksichtigung
dieser Entwicklungen wurde Mitte der sechziger Jahre der Begriff
Hypertext
als Netz von Informationseinheiten durch Ted Nelson mit seinen
Entwürfen
zu XANADU geprägt [nel65].
Das entstandene Hypertextparadigma bietet Konzepte für die
Repräsentation
von Informationen und Verfahren, mit denen die Verarbeitung von
Informationen
verbessert werden kann.
1.2 Das
Grundkonzept von Hypertext.
,,Die Grundidee von Hypertext besteht darin,
daß informationelle
Einheiten, in denen Objekte und Vorgänge des
einschlägigen Weltausschnittes
auf textuelle, grafische oder audiovisuelle Art dargestellt werden,
flexibel
über Verknüpfungen manipuliert werden.'' [kuh91]
Die wichtigsten Elemente dieser Definition, die einen Hypertext
hinreichend
beschreiben, sind informationelle Einheiten, Verknüpfungen
und Manipulation.
Als Fachtermini haben sich für die ersteren Knoten
oder
Node und Verbindung oder Link
gebildet. Dabei ist
im Umfeld von Hypertext auch im deutschen Sprachgebrauch ,,Link'' der
gebräuchliche
Begriff für die Verbindung zweier Knoten. Diese Knoten und
Links stellen
die Grundelemente von Hypertexten dar (Abbildung 1.1).
1.2.1 Knoten
Unter Knoten (,,Atom''; Node;
Unit) wird eine einzelne
abgeschlossene2
Informationseinheit verstanden. Der Inhalt eines Knotens besteht
zumeist
aus einer kurzen textuellen Information. Die Knoten sind jedoch nicht
auf
Texte beschränkt. Sie können auch jede andere Form
eines Informationsmediums
(Grafik, Ton, Bild ...) beinhalten.
Die Einführung von Attributen und Klassen
für Knoten erlaubt
eine differenzierte Benutzung der Knoten und ermöglicht auch
deren
Strukturierung.
1.2.2 Links
Unter Link (Verbindung) wird die
Verknüpfung zweier
Knoten verstanden. Ein Link beinhaltet die Semantik zur Verbindung der
Knoten. Die Gestaltung der Verbindungen ist ein zentraler Punkt beim
Entwurf
eines Hypertextes. Die einfachste Form der Verbindung besagt lediglich,
daß eine Verbindung zwischen zwei Knoten vorhanden ist. Die
nächste
Stufe betrachtet die Links als gerichtet, das heißt sie haben
einen
Ausgangs- und einen Zielknoten und erzeugen dadurch eine Hierachie.
Durch
die Einführung von Attributen für Verbindungen oder
die Einführung
von Verbindungstypen können weitere Verfeinerungen erzielt
werden.
Diese sind insbesondere im Hinblick auf die Informationssuche und die
Erzeugung
anwenderspezifischer Verbindungen hilfreich. Die Verbindungstypen
können
auch zur Definition einer kontextabhängigen
Gültigkeit aller
Links eines Typs benutzt werden.
Abbildung 1.0: Ein
kurzer (Hyper-)Text
1.2.3
Manipulationen
,,Manipulation'' wird hier als Begriff für jegliche Form der
Benutzung
eines Hypertextes verwendet, also nicht nur für die
Änderung
der Knoten und ihrer Verbindungen, sondern auch für das Lesen
eines
Hypertextes und die Informationssuche in einem Hypertext. Beim Lesen
eines
Hypertextes und der Informationssuche kann der Hypertext durchaus
Änderungen
unterworfen sein. Wie z.B. durch Setzen von Lesezeichen und die
Einfügung
von Kommentaren.
1.2.4
Hypertextsysteme
Knoten und Links sind die Grundelemente eines jeden Hypertextsystems.
Hypertextsysteme
unterscheiden sich untereinander durch die Arten von Knoten, die zur
Verfügung
gestellt werden, die Verbindungsmöglichkeiten zwischen den
Knoten
und die Manipulationsmöglichkeiten, die zur Verfügung
stehen.
1.3
Hypertext als Mittel der Informationsbeschaffung
Hypertextsysteme werden in erster Linie zur Vermittlung von
Informationen
herangezogen. Die Funktionen, die dies ermöglichen werden
unter ,,Browsing''
und ,,Navigation'' zusammengefaßt. Diese Formen der
Informationsfindung
sind auch der Hauptunterschied zu klassischen Informationssystemen und
-medien, die zur Informationsfindung konkrete Anfragen erfordern.
1.3.1
Navigation
Unter Navigation wird im
Zusammenhang mit Hypertext die
Bewegung durch das Netz der miteinander verknüpften
Informationseinheiten
verstanden. Wie bei jeder Art von Bewegung gibt es im allgemeinen auch
in diesem Bereich mehr als einen Weg zwischen einem Ausgangspunkt und
dem
gewünschten Zielpunkt. So, wie es mehr als eine Form der
Bewegung
gibt. Die Navigationsmittel für einen Hypertext sind
abhängig
von der Art der Präsentation des Hypertextes für den
Anwender.
Die einfachste Präsentationsform eines Hypertextes
ist ein ,,Kartenstapel''.
Der Leser eines Hypertextes wählt dabei anhand eines
sichtbaren Ordnungskriteriums
die nächste ,,Karte'' (Informationseinheit) aus. Die
Verknüpfungen
zwischen den Informationseinheiten ist dabei nur in textueller Form
gegeben.
Eine Form der Navigation, die dem Hypertextgedanken
näherkommt, ist
es, dem Anwender den Zugang zu weiteren Informationseinheiten auf
verbundene
Knoten und in ihrer Bedeutung hervorgehobene einzuschränken.
Die Handhabung
kann z.B. über graphische Funktionsknöpfe oder durch
Funktionstasten
erfolgen. Führt dieses Vorgehen nicht zum Ziel,
können, durch
ein eventuell zielloses Betrachten weiterer Informationseinheiten,
zusätzliche
Knoten ermittelt werden, die das Informationsbedürfnis des
Benutzers
befriedigen.
1.3.2 Browsing
Die Suche nach Informationen in
Büchern ist zumeist
dadurch erschwert, daß im Stichwortverzeichnis der gesuchte
Eintrag
nicht vorhanden ist oder man mit einem unspezifischen
Informationsbedürfnis
einen Text angeht. Also versucht man, Stichworte nachzuschlagen, die im
Zusammenhang mit den gewünschten Informationen stehen
könnten,
oder die das Interesse des Lesers erwecken. Folgt der Leser diesen
Stichworten,
so liest er jeweils kurze Abschnitte. Bei diesem Lesen nimmt er oft
unbewußt
Informationen auf, an die er sich später in einem anderen
Zusammenhang
erinnern kann. Beispielsweise erinnert er sich, eine gesuchte
Information
schon einmal gesehen zu haben und kann den Ort in etwa lokalisieren,
beispielsweise
,,in den ersten Kapiteln eines Buches unterhalb einer
Abbilddung''.
Diese beilaüfige Aufnahme von Wissen wird als Browsing
[bern88]
bezeichnet.
Hypertexte beinhalten durch ihre Struktur der kleinen,
vielfältig
verbundenen Informationseinheiten eine ideale Voraussetzung
für das
Browsing. Die kurzen Informationseinheiten erlauben eine schnelle
Aufnahme
ihres Inhalts. Erweckt ein Inhalt eines Knotens das Interesse eines
Lesers,
so stehen ihm in einem Hypertext auf einfache Weise, oft eine Vielzahl
von weiterführenden Informationen zur Verfügung.
Die Gefahr dieser Vorgehsweise ist sowohl beim Browsing in
Hypertexten
wie auch beim Browsing in einem Buch oder einer Zeitschrift,
daß
der Anwender sein urprüngliches Ziel aus den Augen verliert
und andere
Informationen verfolgt als ursprünglich geplant war. In der
Literatur
wird dies auch als ,,Serendipity'' - Effekt bezeichnet.
1.3.3
Indizierung
Ein mächtiges Werkzeug der Informationsbeschaffung ist der
Zugang
zu Informationseinheiten über Verzeichnisse. Ein
Großteil der
Verzeichnisse ist automatisch erstellbar. Eventuell ist noch eine
Gewichtung
der Verweise notwendig, wenn einzelne Stichworte mehrfach auftreten (in
Büchern wird diese Gewichtung oft durch Fettdruck
dargestellt). Eine
wesentliche Qualifizierung der Verzeichnisse stellt eine Kommentierung
der Einträge oder der Verbindungen zwischen den
Verzeichniseinträgen
und den zugehörigen Informationen dar. Diese Kommentierung
kann beispielsweise
eine Begriffsklärung beinhalten oder eine Bemerkung zu den
Informationseinheiten,
die das Ziel eines Index sind.
1.4
Anwendungen für Hypertextsysteme
1.4.1
Hilfesysteme
Eine typische Anwendung von Hypertext sind Hilfesysteme. Oft sind diese
Hilfesyteme so aufgebaut, daß sie zu Stichworten weitere
Informationen
liefern oder suchen. Der Zugang zu diesen Informationen ist teilweise
durch
Stichwortlisten realisiert, die der Benutzer wie den Index eines
Handbuches
benutzen kann. Diese Art ist häufig in
Textverarbeitungssystemen realisiert.
In dieser Form hat der Hypertext keine wesentlichen Vorteile
gegenüber
klassischen Handbüchern, außer eines eventuell
schnelleren Zugriffs
auf die Informationen. Bei den gebräuchlichen Systemen, die
die Informationen
nicht parallel zur Verfügung stellen, etwa in einer
Informationszeile,
wird die Handhabung sehr erschwert. Will der Anwender z.B. seinen Text
mit einem Beispiel der Hilfefunktion vergleichen, so muß er
auf ein
Handbuch zurückgreifen, wenn sein eigener Text und das
Beispiel nicht
gleichzeitig auf dem Bildschirm sichtbar sind.
Eine weitere verbreitete Form von Hypertexten ist eine
kontextsensitive
Hilfe, die z.B. bei Borlands Turbo Produkten realisert ist, dabei
besteht
die Möglichkeit, für im Editor stehende Begriffe
über eine
Funktionstaste eventuell vorhandene Informationen zu diesem Begriff zu
ermitteln. Die Realisierung dieser Systeme ist zumeist so
gelöst,
daß Begriffe in Stichworttabellen stehen und über
diese zugegriffen
wird.
1.4.2
Informationssysteme
Eine für die Zukunft wachsende Verbreitung von Hypertext ist
im Bereich
der Informationssysteme zu erwarten. Beispiele solcher
Informationssysteme
sind juristische Auskunftssysteme, die zu einem Gesetzesverzeichnis auf
Anfrage Kommentare und exemplarische Entscheidungen bereithalten.
Ebenso
existieren Advertising-Systeme, die Produktinformationen nach
Wünschen
des Kunden detailiert vorstellen. Speziell im Bereich solcher
Informationssysteme
ist es notwendig, nicht nur textuelle, sondern auch graphische
Informationen
anzubieten, da durch die Visualisierung von Informationen die
Anforderungen
an den Benutzer dieser Systeme gesenkt werden. Oft ist auch
ausschließlich
durch eine Visualisierung ein sinnvolles Informationssystem gegeben. So
ist ein Hypertext, der ein Werkstatthandbuch repräsentiert,
ohne Schaubilder
unbrauchbar.
1.4.3
Statische und dynamische Hypertextsysteme
Die zuvor erwähnten Hypertextsysteme sehen eine Trennung von
Autoren-
und Lesermodus vor. Diese Trennung erleichtert die Datenhaltung,
beschleunigt
die Zugriffe und erlaubt eine unproblematische Benutzung durch mehrere
Anwender. Ein gravierender Nachteil dieser Trennung ist zum einen,
daß
die Leser nicht in der Lage sind, den Hypertext durch Kommentierung und
durch die Gestaltung eigener Subnetze ihren Bedürfnissen
anzupassen.
Für die Informationssysteme ist jedoch der grössere
Nachteil
die Invarianz der Informationen. Dies bedeutet, daß den
Anwendern
keine aktuellen Daten zur Verfügung gestellt werden
können.
1.4.4
Informationssysteme mit aktueller
Datenbasis
Zunehmende Bedeutung werden dynamische Informationssysteme erhalten,
die
beispielsweise durch die Aufarbeitung von Meß- und
Produktionsdaten
oder durch Anfragen gegen Datenbanken kurzfristige Beurteilungen von
Situationen
ermöglichen. Insbesondere im Produktionsbereich sind durch
geeignete
Informationssysteme frühzeitig Korrekturen operativer
Entscheidungen
möglich. Durch die Möglichkeit, daß
unterschiedliche Anwender,
verschiedene Präsentationsformen der Informationen erhalten
können,
ist keine hierachische Verteilung und Aufbereitung der Daten, mit
entsprechender
zeitlicher Verzögerung, notwendig. So können aktuelle
Produktionsdaten
gleichzeitig für ein Management-Information-System
Informationen über
die Kapazitätsauslastung liefern und einer Vertriebsabteilung
den
Produktionsstand einzelner Produkte zur Verfügung stellen.
1.4.5
Entscheidungsunterstützende
Systeme
Ein neues Gebiet für den Einsatz von Hypertext sind Syteme,
die Entscheidungsverfahren
unterstützen und dokumentieren. Die Dokumentation ist durch
die Archivierung
der Diskussionsbeiträge und deren gegenseitige Verbindungen
möglich
sowie durch eine nachträgliche Kommentierung der
Beiträge zu
ihrer Gewichtung in der Entscheidungsfindung. Beispielsweise durch den
Hinweis auf Ausschlußkriterien oder der
Überzeugungskraft der
einzelnen Beiträge.
Die Unterstützung von Entscheidungen kann durch die
Vorgabe von
Diskussionsmustern erfolgen, die gewährleisten, daß
vorgeschriebene
Bearbeitungspunkte nicht vernachläßigt werden, oder
daß
bestimmte Fragestellungen den Typ der Antwort festlegen und Antworten
entsprechend
einordnen.
Als Beispiel eines entscheidungsunterstützenden
Systems dient HyperIBIS
[ise91]
das am Forschungsinstitut für anwendungsorientierte
Wissensverarbeitung
(FAW) Ulm entwickelt wurde und auf das Issue Based
Information
System (IBIS) von H.W.J Rittel und W.Kunz
zurückgeht [kunz70],
das die Vorbereitung und Koordination politischer Entscheidungen
unterstützen
soll.
Das Konzept des Issue Based
Information System
basiert auf einer Strukturierung von Fragen und deren Beantwortung bzw.
deren Diskurs. Durch dieses Verfahren wird der logische Ablauf der
Entscheidungsfindung
gewährleistet und der gesamte Prozess dokumentiert.
Zur Umsetzung des IBIS-Konzeptes verwendet HyperIBIS textuelle
Typen
die zueinander in Beziehung stehen. Diese Typen sind Problembereiche
(,,Topics''),
Fragen (,,Issues''), Positionen/Antworten und Argumente. Die Verbindung
zwischen diesen Elementen können allgemeiner Art sein, in der
Form
,,hat zu tun mit'', können aber auch eine zeitliche, logische
oder
hierachische Einordnung darstellen.
Die Fragen oder Issues werden noch weiter unterschieden in:
- 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''.
3.2.3
Mail
Mit steigender Vernetzung der Rechnersysteme nimmt auch die
Kommunikation
via electronic Mail zu und ersetzt oft schriftliche Mitteilungen. Die
Verwaltung
der Mail erfolgt zumeist kontextunabängig in einem einzelnen
Bereich.
Die effiziente Nutzung ist oft nur durch den Ausdruck der Mail
möglich
und erfordert zuweilen sogar die Neueingabe des Inhalts, wie z.B. die
Übernahme
von Terminen in Zeitplanungssystemen. Ein offenes Hypertextsystem
muß
diese Informationen einbeziehen können, da eine
Mehrfacheingabe nicht
erwünscht sein kann und der Akzeptanz abträglich ist.
Für
eine sinnvolle Einbeziehung ist es ratsam, die Mail-Handhabung aus dem
Hypertext heraus zu ermöglichen, um eingehende Mails direkt in
einen
Hypertext zu integrieren.
3.2.4
Medienintegration und -steuerung
Die Integration audiovisueller Informationen kann mit unterschiedlicher
Stärke erfolgen. In einer ersten Integrationsstufe ist die
Information
nur Ziel von Verweisen. Der Hypertext startet bei Auswahl des
audiovisuellen
Knotens das entsprechende Medium und kehrt anschließend zum
Ausgangsknoten
zurück. So kann der Aufruf einer Grafik einen visuellen Knoten
darstellen.
Eine stärkere Einbindung dieser Informationen
erfolgt, wenn sie
selbst Quelle von Links sein können. Beispielweise
können an
Buisness Charts detailliertere Grafiken angebunden sein, oder es
besteht
eine Auswahl weiterführender Informationen. In einem Hypertext
können
auch Informationen über Ferienhäuser verwaltet
werden, wobei
die Knoteninhalte als Bild oder Video vorliegen. Existiert zu jedem
Raum
ein Knoten, so kann ähnlich einem Rundgang durch das
Gebäude,
jeweils eine Darstellung eines Raumes gewählt werden, der mit
dem
aktuellen durch eine Türe in Verbindung steht oder der
über den
Knoten des Grundrisses gewählt wird.
Die komplexeste Form der Integration erlaubt
schließlich Links
aus ablaufenden Informationen heraus. So ist denkbar, daß die
Aufzeichnung
einer Rede einbezogen ist und zu einzelnen Punkten
weiterführende
Erläuterungen gegeben sind. Wird der Ablauf der Aufzeichnung
unterbrochen,
so wird zunächst der als letztes aufgetretene Link angeboten.
Während die Konzepte der logischen Integration
einfach skizzierbar
sind, ist die physikalische Realisierung der Integration audiovisueller
Knoten, die nicht innerhalb eines Computers verwaltet werden
können,
nicht sofort einsichtig. Selbstverständlich kann auf
zukünftige
Schnittstellen und Protokolle verwiesen werden, jedoch sind auch heute
gebräuchliche Protokolle und Schnittstellen durchaus in der
Lage,
die oben genannten Anforderungen in gewissem Maße zu
erfüllen.
Die möglichen Hilfsmittel, die rechnergestützt
verwendet werden
können, sind im audiovisuellen Bereich die Infrarotsteuerungen
von
Audio/Video Geräten, die Datenprotokolle elektronischer
Instrumente
sowie die Nutzung von Einzelbildkennzeichnungen auf
Video-Bändern.
3.2.5
Einbindung von Datenbankabfragen
Bereits heute liegt eine Vielzahl von Informationen in kommerziellen
Datenbanken
bereit und kann mit entsprechenden Verfahren abgerufen werden. Die
Einbeziehung
dieser Datenquellen eröffnet die Möglichkeit, den
Anwendern einen
großen Datenbestand zur Verfügung zu stellen.
Für die Einbindung der Datenbankabfragen bestehen je
nach Aktualitätsanforderungen,
Breite des Anwenderspektrums und Stabilität des
Informationsbedarfes
verschiedene Verfahrensweisen, die sich hinsichtlich ihrer Kosten und
Zugriffszeiten
sehr unterscheiden. Anfragen, die erst bei der Aktivierung eines
Knotens,
gegen eine Datenbank gestellt werden, erfordern mehr Rechenzeit, als
Anfragen
deren Ergebnis als Knoten abgelegt ist.
Für Anfragen, die eine stabile Struktur aufweisen,
ist es sinnvoll
die Formulierung durch einen Autor erstellen zu lassen, der mit der
jeweiligen
Datenbank vertraut ist. Das Ergebnis der Anfrage wird den Anwendern in
einem Knoten zur Verfügung gestellt.
Instabile Anfragen, d.h. Anfragen, deren Struktur sich
häufig änderen,
werden nur selten von einer größeren Anzahl Anwender
benötigt.
Für die Erstellung dieser Anfragen wird daher entweder eine
hohe Kompetenz
bezüglich der Datenbanken gefordert sein oder ein Verfahren,
das es
einem Anwender erlaubt, unabhängig von der Zieldatenbank eine
Anfrage
zu erzeugen. Diese Anfrage wird dann in die jeweilige Abfragesprache
der
Zieldatenbank gewandelt und ausgeführt.
Für die Datenhaltung besteht zum einen die
Möglichkeit für
jeden Knotenaufruf eine Anfrage gegen eine Datenbank zu stellen und so
den Knoteninhalt aktuell zu halten. Eine weitere Möglichkeit
ist das
Anfrageergebnis zu speichern und nur bei Überschreitung einer
Aktualitätsanforderung
erneut durchzuführen. Das erste Verfahren ist zum Beispiel
für
ein Informationssystem, das Börsenkurse zur Verfügung
stellt,
sinnvoll. Das zweite Verfahren ist bezüglich Leitungs- und
Anfragekosten
deutlich günstiger und kann für alle Anfragen
verwendet werden,
deren Ergebnisse als tages-, monats- oder quartalsgenaue Werte
ausreichend
sind.
Chapter 4
Elemente und Funktionen einer abstrakten HypertextMaschine
In diesem Kapitel werden die Elemente und Strukturen einer
abstrakten
HypertextMaschine definiert sowie Funktionalitäten, die die im
vorangegangenen
Kapitel gestellten Anforderungen umsetzen. Der Schwerpunkt liegt dabei
auf der Modellierung der Hypertextelemente (Knoten und Links). Die
internen
Strukturen der Elemente werden durch ihre Attribute und ihre
Klassenzugehörigkeit
definiert. Ein weiterer Schwerpunkt ist die Strukturierung der
Verbindungsmöglichkeiten
zwischen den Knoten.
Die folgenden Funktionen befinden sich auf der Ebene der
Hypertext-Maschine.
Anwender von Hypertext benutzen die Funktionen der Anwendungsschicht.
Diese
Funktionen können Funktionen der HypertextMaschine
zusammenfasen oder
ähnlich dem Filterkonzept in UNIX hintereinander
ausführen, ohne
daß der Anwender dies bemerkt.
Die Funktionen der modifizierten HypertextMaschine werden in
diesem
Kapitel formalisiert dargestellt. Durch diese Darstellung
können
Parameter und Ergebnisse eindeutig bestimmt werden und die Funktionen
werden
im weiteren Verlauf einfacher referenzierbar. Die Parameter und
Ergebnisse
der Funktionen werden abstrakt definiert, da die Auswahl von konkreten
Datentypen von der Arbeitsumgebung der HypertextMaschine
abhängig
ist.
4.1 Definition
der Elemente von Hypertext
4.1.1 Klassen
für Knoten und Verbindungen
Auf unterster Ebene besteht ein
Hypertext aus Knoten
und Links zwischen diesen. Diese Definition allein wird jedoch nicht
den
Anwendungen gerecht, in denen die Struktur eines Hypertextes mehr
Information
beinhalten soll, als: ,,Knoten X und Knoten Y haben miteinander zu
tun.''
Eine einfache Form der Strukturierung kann erzielt werden,
indem gerichtete
Links erlaubt werden, für die je ein Quellknoten und ein
Zielknoten
definiert sind. Mit diesen gerichteten Links kann eine Hirachie der
Informationen
erzeugt werden. Werden Verbindungsmöglichkeiten mit
semantischer Bedeutung
zur Verfügung gestellt, können auch Aussagen
über die Intention
einer Verbindung gemacht werden. Eine dieser
Verbindungsmöglichkeiten,
kann beispielsweise bedeuten: ,,Knoten X ist eine Antwort auf Knoten
Y.''
Die Verbindungsmöglichkeiten müssen im
Hypertext konsistent
sein, d.h. bei der Verfolgung eines Links der oben erwähnten
Art muß
der Zielknoten jeweils eine Antwort auf den Quellknoten sein. Aber es
kann
auch gefordert sein, daß eine Antwort immer mit einem Link
dieser
Art an einen Quellknoten gebunden ist.
Diese Anforderungen ergeben die Notwendigkeit einer Klassifizierung
der Knoten und Links. Dies bedeutet für den Hypertext,
daß jeder
Knoten und jeder Link einer Klasse
angehört. Diese Klassenzugehörigkeit
oder Typisierung wird bei der Erzeugung eines
Knotens oder eines
Links festgelegt und soll später wieder ermittelbar sein.
Diese Typisierungen werden global definiert und bei der
Erzeugung eines
Knoten oder einer Verbindung nur noch referenziert. Beispielsweise
würden
bei einer Modellierung des in ise91
vorgestellten IBIS-Konzeptes
Knoten mit dem Typ ,,Antwort'' und Knoten mit dem Typ ''Argument''
existieren.
Eine Verbindung zwischen zwei Knoten dieser Typen wäre in
diesem Fall
z.B. vom Typ ''unterstützendes Argument einer Antwort''.
Eigenschaften der Typisierung
Die Eigenschaften der Typisierung werden zunächst wie folgt
festgelegt:
- 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.
4.3.2
Historie
Ist bei dem zuvor erwähnten Szenario nicht daran gedacht
worden, eine
Marke zu vergeben, ist der Anwender auf eine Suche durch viele Knoten
angewiesen.
Vielleicht kann er sich aber daran erinnern, wann er die gesuchte
Information
gesehen hat. Ist dies bekannt, kann dem Anwender ein Faden
der Aridane
gegeben werden. Diese Historie seines Vorgehens
für ein bestimmtes
Datum wird in der Weise realisiert, daß ein Knotentyp
,,Historie''
existiert, für den bei jeder Anmeldung eines Anwenders ein
Knoten
erzeugt wird, der wie in 4.1.2
erläutert unter
anderem Datum und Benutzer enthält. Für diesen
Knotentyp exisiteren
Attribute ,,besuchte Knoten'' und ,,benutzte Verbindungen''. Bewegt
sich
der Anwender im Hypertext, so wird für jede benutzte
Verbindung und
jeden erreichten Knoten ein entsprechender Attributwert bei der
Historie
eingetragen5.
Eine Historie läßt sich darstellen wie in Abbildung 4.5.
Abbildung 4.0: Die
Historie einer Sitzung
Der Knotenidentifikator
der Historie wird unter Angabe
eines kalendarischen Datums oder eines Anwenders ermittelt.
Für einen
Knoten vom Typ ,,Historie'' sind Attribute ,,Links'' und
,,Knoten''vorhanden.
Die Werte dieser Attribute für den Historienknoten zeigen den
,,Weg''
durch einen Hypertext auf, den ein Anwender an einem gegebenen Datum
beschritten
hat.
- 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.
5.1.1
Domänen
Eine Menge, die in einer Relation verwendet wird, kann durch eine ,,Liste
von Werten'' oder durch ''Eigenschaften'',
die Elemente dieser
Menge erfüllen müssen, definiert werden. Elemente
einer Menge
,,Beurteilung'' müssen z.B. Element der Liste mit den
Elementen (,,sehr
gut'', ,,gut'', ,,befriedigend'', ,,ausreichend'', ,,mangelhaft'')
sein.
Elemente der Menge der ,,Postleitzahlen'' müssen die
Eigenschaft erfüllen,
eine Zahl zu sein, die größer oder gleich 1000 ist
und kleiner
oder gleich 9999.
Eine Listen von Werten oder eine Eigenschaft, die eine Menge
beschreibt,
wird im Relationenmodell als ,,Domäne''
bezeichnet.
5.1.2 Attribute
Für die Verwendung der Domänen in Relationen,
müssen die
Domänen referenziert werden. Der Bezug auf eine
,,Domäne'' wird
durch ,,Attribut'' erreicht. Ein Attribut ist ein
,,Name'' für
eine Domäne. Eine Domäne kann mit verschiedenen
Attributen referenziert
werden. Die Domäne der kalendarischen Daten kann sowohl
über
ein Attribut ''Geburtsdatum'' als auch durch ein Attribut
,,Rechnungsdatum''
referenziert werden.
5.1.3
Relationen und Tupel
Eine Relation hat einen Namen und wird durch ihre Attribute
beschrieben.
Die Attribute bilden die ,,Struktur'' einer
Relation. Eine Relation
ist eine Teilmenge des kartesischen Produkts seiner
Attribute. Für
das kartesische Produkt zweier Attribute wird jedes Element eines
Attributs
mit jedem Element eines andern Attributs verknüpft. Je eine
dieser
Verknüpfungen der Attribute wird als ,,Tupel''
bezeichnet.
Ein Tupel kann durch die Angabe von Attributwerten definiert werden.
Das kartesische Produkt der Attribute einer Relation bildet
aber nicht
die Realität ab. Daher werden nur die Tupel als einer Relation
zugehörig
definiert, die eine reale Gegebenheit beschreiben. Diese Tupel bilden
den
,,Körper'' einer Relation. Dieser
Körper einer Relation
kann sich im zeitlichen Verlauf ändern.
5.1.4
,,Schlüssel'' für Relationen
Eine Relation ist als Menge definiert. Durch diese Definition wird
ausgeschlossen,
daß gleiche Tupel mehrfach auftreten können. Dies
bedeutet,
daß jeder Tupel sich von allen anderen unterscheiden
muß. Die
Unterscheidung der Tupel kann durch eine Kombination aller
Attributwerte
erfolgen. Oft reicht für die Unterscheidung der Tupel auch
eine Teilmenge
der Attributwerte. Für die Unterscheidung von Tupeln einer
Relation
Adresse, die aus den Attributen ,,Name, Vorname, Straße,
Postleitzahl,
Wohnort'' besteht, ist eine Teilmenge der Attribute ausreichend. Die
einzelnen
Tupel können durch die Attribute ''Name, Straße,
Postleitzahl''
unterschieden werden.
Die Menge der Attribute, deren Werte zur Unterscheidung der
Tupel herangezogen
wird, wird als ,,Relationenschlüssel''
bezeichnet. Exisitieren
mehrere mögliche Attribut-Kombinationen zur Unterscheidung der
Tupel,
so wird eine minimale Attribut-Kombination als ,,Primärschlüssel''
der Relation bezeichnet. Dieser Primärschlüssel wird
häufig
durch ein eigens hierfür zugeordnetes Attribut erzielt, das
keine
Information einer realen Gegebenheit beinhaltet. So ist eine
,,Kundennummer''
kein Abbild aus der Realität. Sie wird
ausschließlich zur Identifizierung
eines Tupels mit Informationen über einen Kunden benutzt.
Die Verknüpfung mehrerer Relationen erfolgt durch
sogenannte ,,Fremdschlüssel''.
Diese Fremdschlüssel sind Attribute, die als
Primärschlüssel
auftreten und in einer anderen Relation dazu benutzt werden, auf ein
Tupel
der ersten Relation zuzugreifen. Ein solcher Fremdschlüssel
ist z.B.
die zuvor erwähnte Kundennummer in einer Relation
,,Rechnung''. Für
eine Rechnung sind Informationen über den Empfänger
der Rechnung
notwendig wie Name, Anschrift, etc.. Diese Informationen
können mit
Hilfe des Fremdschlüssels ,,Kundennummer'' aus der Relation
,,Geschäftspartner''
zur Verfügung gestellt werden.
5.2
Integritätsanforderungen des Relationenmodells
Das Relationenmodell stellt Anforderungen an die ,,Integrität''
von Relationen. Dabei werden drei Formen der Integrität
unterschieden.
- Entitäts Integrität:
- Jede Relation weist einen Primärschlüssel
auf. Dies bedeutet,
daß jedes Tupel eindeutig identifizierbar ist. Es existieren
nicht
mehrere Tupel, die für alle Attribute den gleichen Wert
beinhalten.
- Referentielle Integrität:
- Jeder Fremdschlüssel weist auf einen
Primärschlüssel. Das
heißt, der Bezug auf ein Tupel einer anderen Relation
muß eindeutig
sein.
- Benutzerdefinierte Integrität:
- Die Zulässigkeit von Werten einer Domäne
kann eingeschränkt
werden. Das heißt, ein Benutzer kann Domänen in der
Art, ,,ein
Fertigstellungsdatum muß nach dem zugehörigen
Auftragsdatum
liegen'' einschränken.
5.3 Manipulation
von Relationen
Als Manipulation auf Relationen sind im Relationenmodell definiert:
- Selektion:
- Aus einer Relation wird eine Teilmenge von Tupeln
ausgewählt.
- Projektion:
- Eine Relation wird auf eine andere Relation abgebildet, die
nur eine Teilmenge
der Attribute beinhaltet.
- Kartesisches Produkt:
- Von verschiedenen Relationen wird jedes Tupel einer
Relation mit jedem
Tupel weiterer Relationen verknüpft.
- Verbund:
- Eine Kombination von kartesischem Produkt und Selektion.
5.4
Normalisierung von Relationen
Ein Problem beim Entwurf von
Datenbanken ist es, die
Relationen so zu gestalten, daß nach Möglichkeit
keine oder
nur geringe Redundanz der Daten entsteht. Um die
Redundanz in Datenmodellen
zu vermindern, wurde zu Beginn der siebziger Jahre von E.F.Codd die Normalisierung
[codd71]
entworfen. Die Normalisierung ist ein analytisches Verfahren zur
Redundanzerkennung
und Redundanz-Reduktion in Datenmodellen. In der Normalisierung sind
verschiedene
,,Normalformen (NF)'' [schla83]
[fink89]
definiert, die numeriert sind.
1. Normalform (1NF)
,,Jedes Attribut einer Relation ist
elementar. Alle Nicht-Schlüsselattribute
sind dann funktional abhängig vom Schlüssel der
Relation.''
Ein Tupel enthält für jedes Attribut genau einen
Wert. Zu jedem
Schlüsselwert existiert genau ein Wert für jedes
Nicht-Schlüsselattribut.
2.Normalform (2NF)
,,Alle Nicht-Schlüsselattribute
sind in 1NF, und sie
sind voll funktional abhängig vom Gestamtschlüssel
der Relation,
nicht aber von Schlüsselteilen.''
Besteht der Schlüssel einer Relation aus mehreren Attributen,
so fordert
die zweite Normalform, daß für jedes
Nicht-Schlüsselattribut
der Relationenschlüssel ein Primärschlüssel
ist. Dies bedeutet,
daß einzelne Attribute des Relationenschlüssels,
kein Schlüssel
für ein Nicht-Schlüsselattribut sind.
Besteht beispielsweise der Relationenschlüssel einer
Relation für
Personendaten aus den Attributen Name und Geburtsdatum. Als
Nicht-Schlüsselattribute
sind das Sternzeichen der Person, die Postleitzahl, der Ortsname und
die
Straße vorhanden. Diese Relation ist in erster Normalform,
nicht
aber in zweiter Normalform, da für das Sternzeichen, das
Geburtsdatum
als Primärschlüssel ausreichend ist.
3.Normalform (3NF)
,,Alle Attribute erfüllen das
2NF-Kriterium. Kein Attribut
außerhalb des Relationenschlüssels ist transitiv
abhängig
von einem anderen lokalen Attribut.''
Diese Definition sagt aus, daß für jedes
Nicht-Schlüsselattribut
kein weiterer Schlüssel exisitiert, außer dem
Relationenschlüssel.
Im vorangegangen Beispiel ist eine Relation in der zweiten
Normalform
mit den Schlüsselattributen Name und Geburtsdatum und den
Nicht-Schlüsselattributen
Postleitzahl, Ortsname, Straße entstanden. Diese Relation ist
nicht
in dritter Normalform, da für den Ortsnamen die Postleitzahl
als Primärschlüssel
möglich ist.
5.5 Architektur
von Datenbanken
Neben den Begriffen des relationalen Datenmodells wird im Hinblick auf
die Benutzung einer Datenbank deren grundlegende Architektur
erläutert.
Definition einer Datenbank
,,Eine Datenbank ist eine integrierte
Ansammlung von Daten,
die allen Anwendern eines Bereichs als gemeinsame Basis aktueller
Informationen
dient. Die Daten sind entsprechend den natürlichen
Zusammenhängen
strukturiert. Es kann so auch auf ungeplante Weise auf die Daten
zugegriffen
werden.''
Datenbanken sind dort einsetzbar, wo in großer Zahl Objekte
verwaltet
werden, die gleiche Merkmale aufweisen.
5.5.1
Das Strukturschema von Datenbanken
Zur Beschreibung der Struktur von Datenbanken wurde 1975 vom
ANSI/X3/SPARC-Committee
das 3-Ebenen-Strukturschema entworfen. Dieses
Strukturschema für
Datenbanken entstand aus den Überlegungen heraus, Daten in
einer einzigen
Datensammlung zu halten. Das heißt, daß
beispielsweise nicht
für jede Anwendung, die eine Adresse (Fakturierung,
Korrespondenz,
etc.) benötigt, eine Datensammlung mit Adressen existiert,
sondern
nur eine zentrale Datensammlung. Die Vorteile dieses Konzeptes sind:
- 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)); |
6.2.3 Linktypen
Die Tabellen für die Linktypbeschreibung, die
Linktyp-Attribute, deren
Standardwerte und Variablen sind gleich gestaltet, wie die der
Knotentypen
und werden daher nur aufgeführt und nicht weiter
erläutert.
Linktyp: |
|
LinktypId: |
Number(4) |
Erstellungsdatum: |
Date |
Autor: |
Char(20) |
Titel: |
Char(20) |
Beschreibung: |
Char(120) |
|
Linktyp Attribute: |
|
LinktypId: |
Number(4) |
Erstellungsdatum: |
Date |
Autor: |
Char(20) |
Link-AttributId: |
Number(5) |
|
Als Beispiel der Tabellen für Standardwerte und Variablen wird
die
Tabelle zur Verwaltung der Variablen aufgeführt. Textuelle und
numerische
Standardwerte unterscheiden sich wieder lediglich durch den Typ des
Feldes
Attributwert.
Linktyp Variable: |
|
LinktypId: |
Number(4) |
Erstellungsdatum: |
Date |
Autor: |
Char(20) |
Link-AttributId: |
Number(5) |
Attributwert: |
Char(80) |
|
Reglementierung der Verbindungsmöglichkeiten
Die Regelung über die Zulässigkeit der Verbindung
wird mit zwei
zusätzlichen Tabellen bewerkstelligt. Diese Informationen
könnten
auch als Attributwerte verwaltet werden. Die Ablage dieser
Informationen
außerhalb der Tabellen für Link-Attributwerte hat
den Vorteil,
daß die Tabellen für zulässige Quell- und
Zielknotentypen
einfacher bearbeitet werden können.
Zulässige
Quelltypen: |
|
LinktypId: |
Number(4) |
Erstellungsdatum: |
Date |
Autor: |
Char(20) |
KnotentypId: |
Number(4) |
|
Zulässige
Zieltypen: |
|
LinktypId: |
Number(4) |
Erstellungsdatum: |
Date |
Autor: |
Char(20) |
KnotentypId: |
Number(4) |
|
SQL-Anweisung zur Erzeugung der Tabelle der zulässigen
Zieltypen
Als SQL Beispiel wurde die Erzeugung der Tabelle der
zulässigen Zieltypen
gewählt. Die Bezeichnung ,,Zulässige Zieltypen'' ist
nicht als
ORACLE Tabellenname möglich. Daher wird als Tabellenname
,,Zul_Zieltypen''
gewählt.
CREATE TABLE Zul_Zieltypen
( |
LinktypId number(4), |
|
|
Erstellungsdatum Date, |
|
|
Autor Char(20), |
|
|
KnotentypId Number(4)); |
6.2.4 Knoten
Knotenbeschreibung
Ein Knoten wird identifiziert durch seinen Identifikator. Die
Beschreibung
eines Knotens beinhaltet den Knotentyp sowie per Definition aus 4.1.2
Entstehungsdatum und Autor. Alle weiteren Informationen zu dem Knoten
werden
als Attribute abgelegt.
Knoten: |
|
KnotenId: |
Number(6) |
Erstellungsdatum: |
Date |
Autor: |
Char(20) |
KnotentypId: |
Number(4) |
|
Ausprägungen von Knoten- und Link-Attributen
Bei konkreten Knoten und Links sind für die Attributwerte zwei
Tabellen
notwendig. Eine Tabelle für die Verwaltung der numerischen
Attributwerte
und eine Tabelle für die textuellen Attributwerte. Die bei den
Knotentypen
notwendige dritte Tabelle zur Verwaltung der Variablen wird bei
konkreten
Knoten nicht benötigt, da ein Attribut eines konkreten Knoten
immer
mit einem Wert belegt ist. In der Definition dieser Tabellen ist
jeweils
ein Feld ,,Wertenummer'' vorhanden. Dieses Feld
beinhaltet eine
fortlaufende Nummer, die für jeden Eintrag eines
Attributwertes für
den selben Knoten oder Link erhöht wird. Diese Numerierung der
Attributwerte
bei Knoten und Links erlaubt es unter anderem, daß ein
gleicher Attributwert
für einen Knoten oder Link mehrfach eingetragen werden kann.
Als Beispiel
hierfür sei ein Attribut ,,Prüfungsergebnis'' eines
Knotens ,,Students''
erwähnt, das z.B. mehrfach die Bewertung ,,nicht bestanden''
enthalten
kann.
Knotenattribute numerisch: |
|
KnotenId: |
Number(6) |
Erstellungsdatum: |
Date |
Autor: |
Char(20) |
Knoten-AttributId: |
Number(5) |
Wertenummer: |
Number(4) |
Ausprägung: |
Number(20) |
|
Knotenattribute textuell: |
|
KnotenId: |
Number(6) |
Erstellungsdatum: |
Date |
Autor: |
Char(20) |
Knoten-AttributId: |
Number(5) |
Wertenummer: |
Number(4) |
Ausprägung |
Char(120) |
|
Verwaltung von Texten in der Datenbank
Eine Möglichkeit Texte zu verwalten besteht darin, Texte in
der Datenbank
abzulegen. Die ORACLE Datenbank bietet dazu den Datentyp ,,Long'',
der es erlaubt 65536 Zeichen (64KB) abzulegen. Der Zugriff auf den Text
erfolgt über den Knotenidentifikator.
Textknoten: |
|
KnotenId: |
Number(6) |
Erstellungsdatum: |
Date |
Autor: |
Char(20) |
Text: |
Long |
|
SQL-Anweisung zur Erzeugung der Tabelle Textknoten
Als Beispiel für die Erzeugung einer Knoten-Tabelle wird die
Tabelle
der Textknoten gewählt.
CREATE TABLE Textknoten ( |
KnotenId Number(6), |
|
|
Erstellungsdatum Date, |
|
|
Autor Char(20), |
|
|
Text Long); |
6.2.5 Links
Linkbeschreibung
Wie in 4.1.3
aufgeführt, gehört zu den Standardinformationen
eines Links sein Identifikator, sein Typ, sein Quellknoten, sein
Zielknoten
sowie das Datum der Etablierung des Links und der Autor.
Link: |
|
LinkId: |
Number(6) |
Erstellungsdatum: |
Date |
Autor: |
Char(20) |
LinktypId: |
Number(4) |
Quellknoten: |
Number(6) |
Zielknoten: |
Number(6) |
|
Ausprägungen von Linkattributen
Die Ausprägungen von Attributen für Links ist, wie
die der Knoten,
auf zwei Tabellen verteilt; eine Tabelle zur Verwaltung der numerischen
Werte und eine Tabelle zur Verwaltung der textuellen Werte.
Linkattribute mumerisch: |
|
LinkId: |
Number(6) |
Erstellungsdatum: |
Date |
Autor: |
Char(20) |
Link-AttributId: |
Number(5) |
Ausprägung |
Number(20) |
|
Linkattribute textuell: |
|
LinkId: |
Number(6) |
Erstellungsdatum: |
Date |
Autor: |
Char(20) |
Link-AttributId: |
Number(5) |
Ausprägung |
Char(120) |
|
SQL-Anweisung zur Erzeugung der Tabelle der Links
CREATE TABLE Links ( |
LinkId Number(6), |
|
|
Erstellungsdatum Date, |
|
|
Autor Char(20), |
|
|
LinktypId Number(4), |
|
|
Quellknoten Number(6), |
|
|
Zielknoten Number(6)); |
6.2.6
Knotenattribute und Linkattribute
Die Tabellen für Knotenattribute und Linkattribute sind in
ihrer derzeitigen
Definition identisch. Sie werden daher gemeinsam aufgeführt.
Unterschiede
zwischen den Tabellen ergeben sich nur in den Bezeichnungen der
Tabellennamen
und der Identifkatoren für Knoten und Links.
Knoten-/Link-Attribute
Definition: |
|
Knoten-/Link-AttributId: |
Number(6) |
Erstellungsdatum: |
Date |
Autor: |
Char(20) |
Inhaltstyp: |
Char(10) |
Titel: |
Char(20) |
Beschreibung: |
Char(120) |
Mindestanzahl Werte: |
Number(2) |
Höchstanzahl Werte: |
Number(2) |
|
Knoten-/Link-Attributbereiche
numerisch: |
|
Knoten-/Link-AttributId: |
Number(6) |
Erstellungsdatum: |
Date |
Autor: |
Char(20) |
Minimum: |
Number(20) |
Maximum: |
Number(20) |
|
Knoten-/Link-Attributbereiche
textuell: |
|
Knoten-/Link-AttributId: |
Number(6) |
Erstellungsdatum: |
Date |
Autor: |
Char(20) |
Minimum: |
Char(120) |
Maximum: |
Char(120) |
|
Knoten-/Link-Attribut Standardwerte
numerisch: |
|
Knoten-/Link-AttributId: |
Number(6) |
Erstellungsdatum: |
Date |
Autor: |
Char(20) |
Standardwert: |
Number(20) |
|
Knoten-/Link-Attribut Standardwerte
textuell: |
|
Knoten-/Link-AttributId: |
Number(6) |
Erstellungsdatum: |
Date |
Autor: |
Char(20) |
Standardwert: |
Char(120) |
|
Knoten-/Link-Attribut
Variable: |
|
Knoten-/Link-AttributId: |
Number(6) |
Erstellungsdatum: |
Date |
Autor: |
Char(20) |
Variable: |
Char(20) |
|
SQL-Anweisung zur Erzeugung der Tabelle der numerischen Standardwerte
für
Linkattribute.
CREATE TABLE Stdwert_Num_L_Attribut ( |
|
|
Link_AttributId Number(6), |
|
|
Erstellungsdatum Date, |
|
|
Autor Char(20), |
|
|
Standardwert Number(20)); |
6.2.7 Weitere
Tabellen und Views
Die zuvor definierten Tabellen reichen aus, um einen Hypertext zu
definieren.
Einzelne Funktionen benötigen jedoch noch zusätzliche
Informationen,
oder können durch zusätzliche Informationen einfacher
gestaltet
werden.
Eine dieser zusätzlichen Tabellen ist die Tabelle,
die den jeweils
höchsten Identifikator der verschiedenen Elemente speichert.
Bei Bedarf
wird der nächste Wert als Identifikator für einen
neuen Knoten,
Link, etc. benutzt.
Nummern: |
|
Bezeichnung: |
Char(20) |
Zähler: |
Number(20) |
|
Die Einträge sind als Wertepaare in der Form
(,,KnotenId'', 1234)
vorhanden. In diesem Beispiel würde der nächste
Knoten, der erzeugt
wird, den Identifikator 1235 erhalten. Diese Tabelle kann auch
unabhängig
von den Identifikatoren sonstige fortlaufende Nummern verwalten. Jede
dieser
verwalteten Zahlen muß nur mit einer Bezeichnung in
Verbindung stehen.
Weiter fortlaufende Nummern werden z.B. benötigt, wenn bei
einer Anwendung
festgestellt werden soll, wie oft ein Knoten aktiviert wurde.
ORACLE Tabelle ,,DUAL''
Eine für die Funktionen wichtige Tabelle ist die ORACLE
Systemtabelle
,,DUAL''. Diese Tabelle ermöglicht z.B. die
Ermittlung des
Systemdatums oder der Benutzerkennung. In der Form ,,SELECT
USER FROM
DUAL;''.
View der möglichen Verbindungen
Zulässige Verbindungen sind als eine Kombination von
zulässigem
Quellknoten und zulässigem Zielknoten definiert. Soll eine
gewünschte
Verbindung auf Zulässigkeit überprüft
werden, sind dazu
mehrere Abfragen möglich. Zur Vereinfachung dieser
Überprüfung
wird eine ,,virtuelle Tabelle'' oder ,,View''
definiert,
die alle zulässigen Verbindungen explizit enthält.
Eine View
über mehrere Tabellen entsteht aus dem kartesischen Produkt
der Zeilen,
der Tabellen.
Die View der möglichen Verbindungen ist aus den
Tabellen entstanden,
die die möglichen Zieltypen und die möglichen
Quelltypen verwalten.
Sie enthält zu jedem Linktypen alle
Verbindungsmöglichkeiten,
d.h. alle Kombinationen von zulässigem Quellknotentyp mit
zulässigem
Zielknotentyp.
Mögliche
Verbindungen: |
|
LinktypId: |
Number(4) |
QuellknotentypId: |
Number(4) |
ZielknotentypId: |
Number(4). |
|
SQL-Anweisung zur Erzeugung der virtuellen Tabelle der
möglichen Verbindungen.
Eine View oder virtuelle Tabelle, wird aus Abfragen von Spalten einer
oder
mehrerer Tabellen erzeugt. Eine View über mehrere Tabellen
bezieht
sich auf das kartesische Produkt der Tupel. Dieses kartesische Produkt
ist zumeist nicht das Ziel einer View. Die View muß daher
geeignet
eingeschränkt werden. Die View der möglichen
Verbindungen wird
durch die folgende SQL-Anweisung erzeugt:
CREATE VIEW Mgl_Verbindungen
( |
Linktyp, |
|
|
Quellknotentyp, |
|
|
Zielknotentyp) |
AS SELECT Zul_Quelltypen.LinktypId, |
|
Zul_Quelltypen.KnotentypId, |
|
|
Zul_Zieltypen.KnotentypId |
|
FROM Zul_Quelltypen, Zul_Zieltypen |
WHERE |
Zul_Quelltypen.LinktypId =
Zul_Zieltypen.LinktypId; |
Die Erläuterung dieser SQL-Anweisung erfolgt
abschnittsweise. CREATE
VIEW Mgl_Verbindungen (Linktyp, Quellknotentyp, Zielknotentyp)
Der erste Abschnitt bedeutet, daß eine View mit dem Namen
,,Mgl_Verbindungen''
und den Spaltenbezeichnungen ,,Linktyp'', ,,Quellknotentyp'' und
,,Zielknotentyp''
erzeugt wird. Diese Spalten enthalten keinen Wertetyp. Der Wertetyp
ergibt
sich aus den Typen der benutzten Spalten.
AS SELECT Zul_Quelltypen.LinktypId,
Zul_Quelltypen.KnotentypId,
Zul_Zieltypen.KnotentypId
Der zweite Teil der Anweisung definiert die Spalten, aus denen die
View erzeugt wird. Der Aufbau der Bezeichnungen
,,Tabellenname.Spaltenname''
gibt an, aus welcher Tabelle welche Spalte benutzt wird.
Die folgende Zeile definiert die Tabellen, die der View
zugrunde liegen.
FROM Zul_Quelltypen, Zul_Zieltypen
WHERE Zul_Quelltypen.Linktyp =
Zul_Zieltypen.LinktypId;
Die WHERE-Klausel ist die Einschränkung des kartesischen
Produktes.
In diesem Fall bedeutet sie, daß nicht jede Zeile der
Quelltypen
mit jeder Zeile der Zieltypen eine Zeile der View ergibt, sondern nur
die
Zeilen, bei den der Linktypidentifikator der zulässigen
Quelltypen
mit dem Linktypidentifikator der zulässigen Zieltypen
identisch ist.
Eine kurzes Beispiel soll dies veranschaulichen.
Die Einträge der Tabellen zulässiger
Quelltypen und zulässiger
Zieltypen werden verkürzt dargestellt in der Form (LinktypId,
KnotentypId).
Die Tabelle der zulässigen Quelltypen soll die
Einträge beinhalten:
(1, 11); (1, 12); (2, 12). Die Tabelle der zulässigen
Zieltypen beinhaltet
die Einträge (1, 11); (2, 12).
Als kartesisches Produkt entsteht unter
Berücksichtigung der Spalten
LinktypId und KnotentypId der Tabellen der zulässigen
Quelltypen und
der zulässigen Zieltypen Zeilen der Form (LinktypIdzul.Quelle,
KnotentypIdzul.Quelle, LinktypIdzul.Ziel,
KnotentypIdzul.Ziel):
(1, 11, 1, 11); (1, 11, 2, 12); (1, 12, 1, 11); (1, 12,2, 12); (2, 12,
1, 11); (2, 12, 2, 12). Diese Einträge stellen jedoch nicht
die möglichen
Verbindungen dar. Ein Link hat nur einen Linktyp, daher werden nur die
Einträge berücksichtigt, bei denen die Linktypen von
zulässiger
Quelle und zulässigem Ziel übereinstimmen. Dies sind:
(1, 11,
1, 11); (1, 12, 1, 11); (2, 12, 2, 12). Diese Einträge
bedeuten, mit
Linktyp 1 sind Verbindungen möglich von Knotentyp 11 zu
Knotentyp
11 und von Knotentyp 12 zu Knotentyp 11 und mit Linktyp 2 sind nur
Verbindungen
zwischen Knotentyp 12 und Knotentyp 12 möglich.
6.3 Definition
einiger Funktionen der abstrakten
HypertextMaschine für eine ORACLE Datenbank.
Die Funktionen der HypertextMaschine werden als SQL-Anweisungen
aufgeführt.
Diese SQL-Anweisungen können in der SQL-Plus Umgebung einer
ORACLE
Datenbank benutzt werden oder für SQL-FORMS Anwendungen als
Grundlage
genommen werden.
Die Schreibweise der SQL-Anweisungen richtet sich nach
folgenden Regeln:
- 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''.
Chapter 7
Ausblick
Die vorliegende Arbeit hat die Grundzüge von Hypertext
beschrieben
und ist dabei besonders auf architektonische Konzepte für
Hypertextsysteme
eingegangen. Ein wesentlicher Punkt der vorgestellten Architektur ist
die
Trennung des hypertextverwaltenden Systems, der Hypertext-Maschine,
sowohl
von der Präsentationsschicht als auch von Ebene der
physikalischen
Datenhaltung. Ein wichtiger Punkt der vorgestellten HypertextMaschine
ist
die Abkehr von der unmittelbaren Benutzung des Datei-Systems. Statt
dessen
wird die Verwendung einer relationalen Datenbank vorgeschlagen. Die
Verwendung
einer Datenbank erlaubt es, eine Reihe von Problemen, wie sie z.B. beim
Mehrbenutzerbetrieb oder der Nutzung verteilter Datenbestände
auftreten,
von der HypertextMaschine auf das Datenbanksystem zu
übertragen.
Die in der Arbeit entworfene HypertextMaschine erlaubt die
Strukturierung
von Hypertexten, indem verschiedene Typen von Knoten und Links
vordefiniert
werden können. Die dafür notwendigen
Funktionalitäten sowie
Funktionalitäten zur Erzeugung und zur Durchwanderung von
Hypertexten
wurden in der Arbeit dargestellt. Die Definition von in einem Hypertext
erlaubten Strukturen kann aber nur dann sinnvoll sein, wenn
problemspezifische
Strukturkonzepte, wie z.B. das IBIS-Konzept, für die
gewünschten
Anwendungen vorhanden sind.
Erweiterungsmöglichkeiten der HypertextMaschine
liegen auf dem
Gebiet der in Kapitel 3 skizzierten Schnittstellen zu externen Daten
und
Funktionen. Diese externen Daten können beispielsweise
komplexe audiovisuelle
Informationen sein, um dem Anwender aus dem Hypertext heraus Film- und
Tonquellen anbieten zu können.
Denkbar ist eine Schnittstelle aus der HypertextMaschine
heraus zu externen
Datenbanken. Von einem Benutzer soll dabei nicht erwartet werden,
daß
er die Syntax jeder Zieldatenbank beherrscht. Die HypertextMaschine
muß
die Möglichkeit bieten, in Knoten Anfragen abzulegen, die bei
der
Aktivierung eines entsprechenden Knotens ausgeführt werden.
Das Ergebnis
einer solchen Anfrage könnte dann als ein neuer Knoten im
Hypertext
abgelegt werden.
Neben der in Kapitel 3 geforderten Möglichkeit zur
Einbindung von
Mails ist es auch denkbar, über die HypertextMaschine eine
direkte
Kommunikation mit anderen Anwendern aufzubauen.
Appendix A
Die Reihenfolge der Kapitel im Anhang entspricht der Reihenfolge der
Kapitel
der vorliegenden Arbeit. Wird von mehreren Kapiteln auf den Anhang
verwiesen,
ist der erste Verweis ausschlaggebend. Kapitel ohne Verweise zum Anhang
erhalten keinen Abschnitt.
A.1 Ein
kleines Hypertextlexikon
Die wichtigsten Termini im
Umfeld von Hypertext werden
hier zusammengefaßt. Diese Zusammenstellung soll keine
erschöpfende
Erläuterung sein, sondern als
Gedächtnisstütze dienen. Sie
bezieht sich auch nur auf die allgemein üblichen Begriffe.
Hyperspace:
- [
- Atom:] ®
Knoten.
- [
- Bookmark:] Die Hervorhebung eines Knotens durch den Leser
eines Hypertextes.
- [
- Browsing:] Die beiläufige Aufnahme von
Informationen.
- [
- Fisheye View:] Darstellung eines Hypertextausschnittes, die
mit zunehmender
Entfernung zum aktuellen Knoten stärker abstrahiert.
- [
- Guided Tour:] Ein durch einen ,,Autor'' vorgegebener Pfad
durch einen Hypertext.
- [
- Hypergraph:] ®
Hypertext.
- [
- Hypertext:] Ein Menge von Informationseinheiten und
Verbindungen zwischen
diesen.
- [
- Hyperspace:] ®
Hypertext.
- [
- Knoten:] Abgeschlossene Informationseinheit.
- [
- Lesezeichen:] ®
Bookmark.
- [
- Link:] Logischer Zusammenhang zwischen den
Informationseinheiten, den Knoten
und Zugriffsmöglichkeiten auf die Knoten.
- [
- Mark:] ®
Bookmark; ®
Thumb Tab.
- [
- Navigation:] Die Auswahl der nächsten Knoten.
- [
- Node:] ®
Knoten.
- [
- Thumb Tab:] Die Hervorhebung eines Knotens durch den Autor
eines Hypertextes.
- [
- Unit:] ®
Knoten.
- [
- Verbindung:] ®
Link.
- [
- View:] Sicht auf einen Hypertext; eine
Einschränkung des Hypertextes
auf ein Teilnetz.
- [
- Web:] Netz; ®
Hypertext.
A.2
Delinearisierung eines LATEX-Dokumentes
Das nachfolgende
Beispiel soll die Möglichkeit
der automatisierten Einbeziehung linearer Texte in Hypertext
veranschaulichen.
Dabei wird auf die logischen Strukturen eines LATEX-DoKumentes
gegriffen. Aus einem Text mit der Struktur
titel tableofcontents listoffigures
section A; Absatz 1 Abbildung 1 Absatz 2
section B; subsection C; Absatz 1 Absatz 2 subsection D; Absatz 1
könnte automatisiert ein Hypergraph wie in Abbildung A.1
generiert werden. Die verwendeten LATEXBegriffe
bedeuten:
- tableofcontents:
- das Inhaltsverzeichnis.
- listoffigures:
- das Abbildungsverzeichnis.
- section:
- ein Kapitel.
- subsection:
- ein Unterkapitel.
Abbildung A.0: Delinearisierung
eines Dokumentes
Appendix B
B.1 Formale
Funktionsdarstellung der Hypertext
Abstract Machine
Bevor die formale
Funktionsdarstellung der Hypertext
Abstract Machine aus Kapitel cam88
erfolgt, werden
die verwendeten Begriffe zusammengefaßt: Attributindex:
- [
- Attribut:] ein Attributname.
- [
- Attributindex:] Attributidentifikator.
- [
- Boolean:] Boole'scher Wert(Wahr oder Falsch).
- [
- Contents:] Inhalt eines Knotens.
- [
- Context:] Identifizierung für den aktuellen
Graphen.
- [
- Demon:] Dämonen sind Funktionen die externe
Ereignisse auslösen.
- [
- Difference:] Unterschied zwischen zwei Knoten.
- [
- Directory:] ein Verzeichnis.
- [
- Event:] Ereignis
- [
- Explanation:] erläuternder Text.
- [
- LinkIndex:] Verbindungsidentifikator.
- [
- Machine:] Name in einem Netzwerk.
- [
- NodeIndex:] Knotenidentifikator.
- [
- Position:] Nummer.
- [
- Predicate:] Zusammengefaßte Bewertung von
Attributen.
- [
- ProjectId:] eindeutige Referenz eines Hypergraphen.
- [
- Protections:] Datenzugriffsrechte.
- [
- Time:] Datum und Uhrzeit.
- [
- Value:] Ausprägung eines Attributs.
Um die Länge der Operationen einzuschränken, werden
noch folgende
Abkürzungen verwendet. Version:
- [
- LinkPt:] NodeIndex ×Position ×Time
×Boolean
- [
- t:] Time
- [
- Version:] Time ×Explanation
Für die Darstellung der Funktionen wird folgende Syntax
verwendet:
operation: op1 ×... ×opn
\RA result1
×... ×resultm.
Dabei werden die symbolischen Exponenten ,,*''
und ,,+''
verwendet für x* º
xn
für n ³
0 und x+ º
xn für n ³
1.
B.2
Graphenoperationen
- createGraph:
- Directory ×Protections \RA ProjectId ×t
- destroyGraph:
- ProjectId ×Directory \RA
- openGraph:
- ProjectId ×Machine ×Directory \RA
Context
- addNode:
- Context ×Boolean \RA NodeIndex ×t
- deleteNode:
- Context ×NodeIndex \RA
- addLink:
- Context ×LinkPt1
×LinkPt2 \RA LinkIndex
×t
- copyLink:
- Context ×LinkIndex ×t1
×Boolean ×LinkPt \RA LinkIndex
×t
- deleteLink:
- Context ×LinkIndex \RA
- linarizeGraph:
- Context ×NodeIndex ×t
×Predicate1 ×
Predicate2 ×AttributIndex1m
×
Attributindxex2n \RA
(NodeIndex ×Valuem)*
×(LinkIndex ×Valuen)*
- getGraphQuery:
- Context ×t ×Predicate1
×Predicate2
× AttributeIndex1m
×AttributeIndex2n
\RA (NodeIndex ×Valuem)*
× (LinkIndex
×Valuen)*
B.3
Knotenoperationen
- openNode:
- NodeIndex ×t1
×Attributindexm \RA Contents
×LinkPt* ×Valuem
×t2
- modifyNode:
- NodeIndex ×t ×Contents
×LinkPointer \RA
- getNodeTimeStamp:
- NodeIndex \RA t
- changeNodeProtection:
- NodeIndex ×Protections \RA
- getNodeVersions:
- NodeIndex \RA Version1+
×Version2*
- getNodeDifferences:
- NodeIndex ×t1 ×t2
\RA Difference*
B.4
Linkoperationen
- getToNode:
- LinkIndex ×t1 \RA
NodeIndex ×t2
- getFromNode:
- LinkIndex ×t1 \RA
NodeIndex ×t2
B.5
Attributoperationen
- getAttributes:
- Context ×t \RA (Attribute
×AttributeIndex)*
- getAttributeValues:
- Context ×AttributeIndex ×t \RA Value*
- getAttributIndex:
- Context ×Attribute \RA AttributIndex
- setLinkAttributValue:
- LinkIndex ×AttributeIndex ×Value \RA
- setNodeAttributeValue:
- NodeIndex ×AttributeIndex ×Value \RA
- deleteLinkAttribute:
- LinkIndex ×AttributeIndex \RA
- deleteNodeAttribut:
- NodeIndex ×AttributeIndex \RA
- getLinkAttributValue:
- LinkIndex ×AttributeIndex ×t \RA
- getNodeAttributValue:
- NodeIndex ×AttributeIndex ×t \RA
- getLinkAttributes:
- LinkIndex ×t \RA
- getNodeAttributes:
- NodeIndex ×t \RA (Attribute ×
AttributeIndex ×Value)*
B.6
Dämonoperationen
- setGraphDemonValue:
- Context ×Event Demon \RA
- getGraphDemons:
- Context ×t \RA (Event ×Demon)*
- setNodeDemon:
- NodeIndex ×Event ×Demon \RA
- getNodeDemons:
- NodeIndex ×t \RA (Event ×Demon)*
\RA
Appendix C
C.1
Grundfunktionen einer abstrakten HypertextMaschine
Die Syntax der Funktionen erfolgt nach dem Muster:
Funktionsname (Parameter1, ..., Parameterm)
®
Ergebniswert1, ..., Ergebniswertn.
C.1.1
Funktionen für Knotentypen
und Linktypen
- 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.
Appendix D
D.1
Zusammenfassung der Relationen
Die Relationen aus Kapitel 6
werden aus Gründen der Übersichtlichkeit hier
unkommentiert und
ohne Feldbeschreibung in folgender Form zusammengefaßt.
- [Relationenbezeichnung] (Attribut1,
..., Attributn)
Dabei sind die Attribute im Sinne des Relationenmodells benutzt.
Relationen für Knotentypen und Linktypen
- Knotentyp
- (KnotentypId, Erstellungsdatum, Autor, Titel, Beschreibung)
- Knotentyp Attribute
- (KnotentypId, Erstellungsdatum, Autor, Knoten-AttributId)
- Knotentyp Standardwerte textuell
- (KnotentypId, Erstellungsdatum, Autor, Knoten-AttributId,
Attributwert)
- Linktyp
- (LinktypId, Erstellungsdatum, Autor, Titel, Beschreibung)
- Linktyp Attribute
- (LinktypId, Erstellungsdatum, Autor, Link-AttributId)
- Linktyp Variable
- (LinktypId, Erstellungsdatum, Autor, Link-AttributId,
Attributwert)
- Zulässige Quelltypen
- (LinktypId, Erstellungsdatum, Autor, KnotentypId)
- Zulässige Zieltypen
- (LinktypId, Erstellungsdatum, Autor, KnotentypId)
Relationen für Knoten
- Knoten
- (KnotenId, Erstellungsdatum, Autor, KnotentypId)
- Knotenattribute numerisch
- (KnotenId, Erstellungsdatum, Autor, Knoten-AttributId,
Wertenummer, Ausprägung)
- Knotenattribute textuell
- (KnotenId, Erstellungsdatum, Autor, Knoten-AttributId,
Wertenummer, Ausprägung)
- Textknoten
- (KnotenId, Erstellungsdatum, Autor, Text)
Relationen für Links
- Link
- (LinkId, Erstellungsdatum, Autor, LinktypId, Quellknoten,
Zielknoten)
- Linkattribute numerisch
- (LinkId, Erstellungsdatum, Autor, Link-AttributId,
Wertenummer, Ausprägung)
- Linkattribute textuell
- (LinkId, Erstellungsdatum, Autor, Link-AttributId,
Wertenummer,Ausprägung)
Relationen für Attribute von Knoten und Links
- Knotenattribute Definition
- (KnotenattributId, Erstellungsdatum, Autor, Inhaltstyp,
Titel, Beschreibung,
Mindestanzahl Werte, Höchstanzahl Werte)
- Linkattribute Definition
- (LinkattributId, Erstellungsdatum, Autor, Inhaltstyp,
Titel, Beschreibung,
Mindestanzahl Werte, Höchstanzahl Werte)
- Knotenattributbereiche numerisch
- (KnotenattributId, Erstellungsdatum, Autor, Minimum,
Maximum)
- Linkattributbereiche numerisch
- (LinkattributId, Erstellungsdatum, Autor, Minimum, Maximum)
- Knotenattributbereiche textuell
- (KnotenattributId, Erstellungsdatum, Autor, Minimum,
Maximum)
- Linkattributbereiche textuell
- (LinkattributId, Erstellungsdatum, Autor, Minimum, Maximum)
- Knotenattribut Standardwerte numerisch
- (KnotenattributId, Erstellungsdatum, Autor, Standardwert)
- Linkattribut Standardwerte numerisch
- (LinkattributId, Erstellungsdatum, Autor, Standardwert)
- Knotenattribut Standardwerte textuell
- (KnotenattributId, Erstellungsdatum, Autor, Standardwert)
- Linkattribut Standardwerte textuell
- (LinkattributId, Erstellungsdatum, Autor, Standardwert)
- Knotenattribut Variable
- (KnotenattributId, Erstellungsdatum, Autor, Variable)
- Linkattribut Variable
- (LinkattributId, Erstellungsdatum, Autor, Variable)
Zusätzliche Relationen
- Nummern
- (Bezeichnung, Zähler)
Verbund von Relationen
- Mögliche Verbindungen
- (LinktypId, Zulässige Quelltypen
(QuellknotentypId), Zulässige
Zieltypen (ZielknotentypId))
Bibliography
- [bern88]
- Bernstein, M.: The bookmark and the compass .- Orientation
tools for hypertext
users, in: SIGOIS Bulletin 9, 1988, 4, 34-45.
- [bush45]
- Bush, V.: As we may think; in: Atlantic monthly 176,7,1945
101-108.
- [bush67]
- Bush, V.: Sience is not enough / William Morrow and Co.
1967.
- [cam88]
- Campbell, B.; Goodman, J.M.: HAM: A general purpose
hypertext abstract
machine; in: Communications of the ACM31,7,1988 856-861.
- [codd71]
- Codd, E.F.: Normalized data base structure.- A brief
tutorial, in: Proceedings
of ACM SIGFIDET Workshop. 1971 1-17.
- [con87]
- Conklin J.: Hypertext:survey and introduction. / IEEE
Computer, 20(9),
1987 17-41.
- [del86]
- Delisle, N.M.; Schwartz, M.D.: Neptune: A hypertext system
for CAD applications;
in: Proceedings of ACM SIGMOD '86. International Conference on
Management
of Data(Washington,D.C.,May 28-30) 132-143.
- [edw88]
- Edwards, D.M.; Hardmann, L.: Lost in Hyperspace .- Cognitiv
mapping and
navigation in a hypertext environment. in: Proceedings Aberdeen I 1988.
- [fink89]
- Finkenzeller, H.; Kracke U.; Unterstein M.: Systematischer
Einsatz von
SQL-ORACLE / Addison Wesley (Deutschland), 1989.
- [fis83]
- Fischer, G.: Navigationswerkzeuge in wissensbasierten
Systemen; in: Scharfenberger,
FBO, OFFICE MANAGEMENT, Baden-Baden 1983 49-52.
- [fur86]
- Furnas, G.W.: Generalized fisheye views. in: Proceedings of
the ACM CHI'86,
Boston 1986 16-23.
- [ise91]
- Isenmann S.; Reuter,W.D.; Schulz, K.P.: HyperIBIS .- Ein
Informationssystem
zur Umweltplanung / Ulm: FAW-TR-91008, 1991.
- [karg88]
- Karg, P.K.: Abstraction Mechanism in HT; in: Communications
of the ACM
31,7,1988 862-870.
- [kaem88]
- Kämpke T.; Radermacher F.J.: Höhere
Funktionalitäten in
Umweltinformationssystemen / Ulm: FAW Bericht B-8804, 1988.
- [kuh91]
- Kuhlen, R.: Hypertext.- Ein nicht-lineares Medium zwischen
Buch und Wissensbank
/ Berlin, Heidelberg, ... Springer, (Edition SEL-Stiftung), 1991.
- [kunz70]
- Kunz,W.; Rittel, H.W.J.: ISSUES as elements of information
Systems: Working
Paper 130; University of California 1970.
- [mey88]
- Meyer, P.: Hochgestapelt.- HyperCard: Macintoshs
Alleskönner; in:
Heise, c't 5,1988 88-94.
- [nel65]
- Nelson, T.H.: A file structure for the complex, the
changing, and the intermediate.
in: ACM 20th National Conference - Proceedings 1965 84-100.
- [niel90]
- Nielsen, J.:Hypertext & Hypermedia / Academic
Press, Inc. 1990.
- [nim]
- Nimmergut, J.: Kreativtechniken / RoRoRo.
- [par89]
- Parsaye, K. [Parsaye, K.; Chignel, M.; Khoshafian, S.;
Wong, H.]: Intelligent
databases .- Objekt-oriented, deduktive, hypermedia technologies / New
York: Wiley 1989.
- [schla83]
- Schlageter, G.; Stucky, W.: Datenbanksysteme.-Konzepte und
Modelle / Teubner
Studienbuch Informatik 1983.
- [zell88]
- Zellweger, P.T.: Active paths through multimedia documents.
in: van Vliet,
J.C. Document Manipulation und Typography, Cambridge University Press
1988
19-34.
Hiermit
versichere ich, daß ich die
vorliegende Diplomarbeit selbstständig verfaßt habe
und keine
anderen als die von mir angegebenen Quellen und Hilfsmittel benutzt
habe.
Ulm, den 10. Januar 1992
|
Footnotes:
1Eine Kopie
der ,,Ebstorfer Weltkarte'' befindet sich im Lüneburger Museum
und
enthält auf 12m2 ca. 1500 bildliche
Darstellungen und kurze
lateinische Texte.
2 Der
Begriff ,,abgeschlossen'' wird in dieser Arbeit so benutzt,
daß jeder
Knoten für sich noch einen informationellen Eigenwert besitzt,
d.h.
nicht bis auf Satzteil oder Wortebene aufgegliedert wird. Diese
Anforderung
ist nicht vorgegeben und wird durchaus unterschiedlich behandelt.
3Die weitere
Auflösung des Textes in Sätze und diese eventuell
noch in Worte
ist zwar denkbar, jedoch enthalten diese kleinsten Einheiten dann keine
eigenständigen Informationen mehr.
4Ein Teilnetz
ist ein Ausschnitt aus einem Hypertext, d.h. es enthält nur
einen
Teil der Knoten und nur einen Teil der Links zwischen diesen.
5Bei der
direkten Anwahl eines Knotens über seinen Identifikator wird
kein
Link benutzt, daher wird für diesen Fall ein vereinbartes
Kennzeichen,
z.B. ,,NULL'' als Linkidentifikator eingetragen.
6Commit
Work und Rollback sind Funktionen, die von der Datenbank zur
Verfügung
gestellt werden.
7Der Wert
0 ist bei ORACLE Datenbanken zu unterscheiden von dem Begriff ,,NULL'';
0 oder null ist ein numerischer Wert, während NULL besagt:
,,Es ist
kein Wert eingetragen.''
File translated from TEX
by TTH,
version 2.69.
On 29 Jul 2000, 20:25.
Impressum
upr