Aufsatz Tagungsband#
Diese Seite: Eine frühe Fassung der Publikation “Terminologie und Ontologie. WordNet trifft SKOS” auf dem DTT Symposion März 2023, Mannheim. Die überarbeitete finale Fassung findet sich im Tagungsband:
Busse, Johannes: Terminologie und Ontologie: WordNet trifft SKOS. In: Petra Drewer, Felix Mayer, Donatella Pulitano (Hrsg.)(2023): Terminologie: Tools und Technologien. Akten des Symposions des Deutschen Terminologie-Tags e.V. (DTT). Mannheim, 2.–4. März 2023. München, Köln, Bern: DTT e.V., S. 31-42.
docs/Symp-DTT-Akten-2023-Busse.pdf
Einleitung#
Als exemplarisches Eingangsbeispiel sei eine kleiner Thesaurus zur Schnitzelkunde gegeben:
Einführendes Beispiel
Mini-Terminologie zur exemplarischen Domäne “Schnitzel”:
prefix cpt: <http://jbusse.de/dtt2023/cpt.html#term->
cpt:Schnitzel
"escalope"@en
"cutlet"@en
"шни́цель"@ru
<Schnitzel BY hat_Herkunft>
cpt:Schweineschnitzel
"pork cutlet"@en
"свино́й шни́цель"@ru
cpt:Kalbschnitzel
"veal cutlet"@en
<Schnitzel BY hat_Zielgruppe>
cpt:Kinderschnitzel
In der ersten Zeile wird cpt:
als Kürzel für http://jbusse.de/dtt2023/cpt.html#term-
definiert. Durch Ersetzung wird aus cpt:Schnitzel
die URI http://jbusse.de/dtt2023/cpt.html#term-Schnitzel.
Wären wir Köche, würden wir diese Terminologie vielleicht zu einer voll axiomatisierten Schnitzel-Ontologie ausbauen wollen. Auf unserem Workshop des Deutschen Terminologietags sind wir allerdings nicht als Köche, sondern als Terminologen unterwegs. Als solche reden wir im einführenden Schnitzel-Beispiel nicht über einzelne Schnitzel oder das Schnitzel an sich, sondern über Benennungen und Begriffe (und später auch Synsets). Uns interessiert die Struktur, wie wir über eine Domäne reden.
Das ist auch die Perspektive des vorliegenden Aufsatzes: Wie kann man als Terminologe über Begriffe (und Benennungen und Terminologien etc.) reden – und zwar insbesondere in Zusammenhang mit der Ontologie SKOS und der lexikalischen Ressource WordNet? Was sind die Grundstrukturen einer Ontologie der Terminologie? Wie können wir mit diesem Wissen für unsere existierenden Terminologien einen Mehrwert schaffen?
SKOS#
Mit einer Ontologie können wir sehr, sehr genau vereinbaren, wie wir über Dinge reden und sie unterscheiden wollen. Exemplarisch modellieren wir die grundlegende Struktur von SKOS nach. Dazu arbeiten wir die Struktur heraus, die wir im einleitenden Schnitzel-Beispiel angelegt haben.
Unsere Terminologie-Ontologie wird nicht über Dinge selbst (z.B. Schnitzel) und ihre Beziehungen (z.B. Kalbsschnitzel hat_herkunft Kalb
) Auskuft geben. Denn als Terminologen interessiert “Schnitzel” nicht als einzelnes Schnitzel oder als Klasse Schnitzel in einer Nahrungsmittel-Ontologie, sondern als Bedeutungseinheit, als Begriff.
Damit sind zwei grundlegend unterschiedliche Ebenen schon angesprochen:
Die Ebene der Meta-Terminologie verwenden wir, um die Domänen-Terminologie aufzubauen. Falls diese Meta-Terminologie mit formal-logischen Mitteln voll axiomatisiert vorliegt, spricht man hier von einer Ontologie (technisch terminology box, TBox). SKOS ist eine solche Ontologie.
Die Ebene der Domänen-Terminologie verwenden wir, um Terminologien für einen Gegenstandsbereich wie z.B. Schnitzelkunde aufzubauen. Weil hier i.A. keine formal-logische Axiomatisierung vorliegt, spricht man hier gerne auch von einem Semantischen Netz oder einem Knowledge Graph. Weil dieser Knowledge Graph im wesentlichen aus Behauptungen und Sach-Aussagen besteht, spricht man hier auch von einer Assertion Box (ABox).
Diese zwei Ebenen spiegeln sich auch in den Visualisierungen des SKOS Core Guide (2005) wieder. Die Domänen-Terminologie – die typischerweise aus einem Netz von hunderten oder tausenden einzelnen Knoten (Objekten, Begriffen) besteht, die sich z.B. als Thesaurus hierarchisch und assoziativ vielfältig vernetzen lassen, und für die es verschiedene lexikalische Repräsentationen (Labels, Benennungen) gibt – wird im SKOS Core Guide mit runden, violett eingefärbten Knoten visualisiert:
Wie wir das auch schon aus dem Terminologiewesen kennen, lässt sich auch in SKOS das Verhältnis von Benennung und Begriff als eine m:n-Relation denken: Die gleiche Benennung kann für verschiedene Begriffe stehen, und jeder Begriff kann verschiedene Benennungen haben.
Dass ein bestimmter rund-violetter Knoten als ein Begriff verstanden werden soll, wird in dem SKOS Core Guide so visualisiert:
In diesem Beispiel ist also ex:love
ein Objekt aus der Domänen-Terminologie, und skos:concept
ein Objekt aus der Meta-Terminologie, hier der Ontologie SKOS.
Die Struktur von SKOS#
Als Terminologen interessieren uns die Strukturen, mit denen sich Terminologien aufbauen lassen, hier also die Strukur von SKOS. Eine erste Frage lautet: Welche Typen von Objekten können wir in der (Meta-) Terminologie der (Domänen-) Terminologie überhaupt unterscheiden?
Auf grundlegender Ebene unterscheiden wir in den SKOS-Visualisierungen zunächst die zwei Grundtypen von Daten in RDF, nämlich
sogenannte Literale, hier in der Form von RDF-language tagged strings: Mit solchen Literalen werden in SKOS Labels modelliert;
sogenannte RDF-Resources, die in der weitverbreiteten Notation RDF turtle (2014) als IRIs meist in der Form
prefix:local_part
notiert werden: Damit werden Objekte hier insbesondere vom Typ skos:Concept notiert.
In unserem einleitenden Schnitzel-Beispiel kommen Ressourcen von verschiedenem Typ vor:
Resources vom Typ
Concept
: Schnitzel, Schweineschnitzel, Kinderschnitzel etc.; im Terminologie-Umfeld entspricht dies Begriffen.Resources vom Typ
Collection
: <Schnitzel BY hat_Herkunft>;Resources vom Typ
ConceptScheme
: der Kasten selbst des einleitenden Schnitzel-Beispiele, also der Thesaurus an sich.
Solche Typen wollen wir Klassen nennen, mit denen wir in unserer Schnitzel-Terminologie dann auch einzelne Exemplare von Begriffen definieren können. (Siehe Beispiel online.)
— online BEGINN —
OWL
In der derzeit am weitesten verbreiteten Ontologiesprache Web Ontology Language (OWL)* definiert man Klassen in der auf leichte Lesbarkeit ausgerichteten Notation Turtle so:
## Klassen der Ontologie SKOS, TBox
skos:Concept
rdf:type owl:Class .
skos:Collection
rdf:type owl:Class .
skos:ConceptScheme
rdf:type owl:Class .
## Exemplare eines Knowledge Graphs, ABox
ex:Schnitzel
rdf:type skos:Concept .
(Wer genau hinschaut erkennt noch eine Meta-Meta-Ebene, in der es offensichtlich eine Klasse owl:Class
gibt: Das ist eine Klasse der Ontologiesprache OWL selbst, welch letztere sujet-typisch natürlich selbst als Ontologie modelliert ist. Eine Domäne formal-logisch als (RDFS- oder wie hier OWL-) Ontologie zu axiomatisieren bedeutet u.A., sich adäquat auf die spezifischen Klassen und Relationen der Ontologie der Ontologiesprache OWL zu beziehen. Eine Vertiefung in Formaler Logik in einem Mathematik- oder Informatik-Studium ist hier sicherlich hilfreich.)
— online ENDE —
Ähnlich, wie man Klassen unterscheiden kann, werden in Ontologien typischerweise auch Relationen unterschieden. In einem Thesaurus sind das z.B. die Relationen BT
(broader term, in SKOS: skos:broader) oder NT
(narrower term, in SKOS: skos:broader). Diese Relationen verhalten sich, wie man leicht sieht, invers zueinander: Wenn “Schweineschnitzel” als breiteren Begriff “Schnitzel” hat, dann hat umgekehrt auch “Schnitzel” als engeren Begriff “Schweineschnitzel”.
Eine Ontologie dient nun dazu, solche Zusammenhänge sehr exakt festzuhalten. Dazu axiomatisiert man sie, um darauf aufbauend logische Schlüsse ziehen zu können. (Siehe Beispiel online.)
— online BEGINN —
OWL
In unserem Beispiel könnte ein Axiom lauten: Immer dann, wenn x BT y
zutrifft, trifft automatisch auch y NT x
zu. In OWL definiert man das so:
skos:broader
rdf:type owl:ObjectProperty ;
owl:inverseOf skos:narrower .
skos:narrower
rdf:type owl:ObjectProperty ;
owl:inverseOf skos:broader.
Der Vollständigkeit halber sei noch mitgeteilt, wie man die obigen Benennungen definiert:
skos:prefLabel
rdf:type owl:AnnotationProperty
rdfs:domain skos:Concept ;
skos:altLabel
rdf:type owl:AnnotationProperty
rdfs:domain skos:Concept ;
— online ENDE —
In Axiomatisierungen liegt die Stärke von Ontologien, dafür werden sie entwickelt. Aus unserem Beispiel BT
lässt sich auch noch mehr ablesen: Immer dann, wenn zwei Entitäten A und B mit BT in Beziehung gesetzt (z.B. Schweineschnitzel BT Schnitzel
) sind, kann man daraus ableiten, dass A und B Entitäten vom Typ concept
sind. (Siehe Bespiel online.)
— online BEGINN —
— online ENDE —
Bei Lesern mit einem fachlichen Hintergrund in Datenbanken könnte an dieser Stelle folgendes Vorwissen aktiviert werden: “Wenn A und B mit skos:broader verbunden sind: Dann wäre es ein Fehler, wenn A und B nicht vom Typ skos:Concept sind!”. In dieser Lesart würde man Definitions- und Wertbereich (Domain und Range) einer Relation als Integritätsbedingung behandeln: Wo immer ein skos:broader zwischen einem A und einem B behauptet wird, für die nicht auch Typ concept explizit angegeben ist, müsste eine Datenbank-Engine einen fehlerhaften Datensatz melden.
Warnung: Die aus der Datenbanktechnik bekannte Interpretation eines Schemas als Integritätsbedingung ist in unserem Kontext nicht zutreffend! Fast so etwas wie das Gegenteil ist der Fall: Gerade dann, wenn die fragliche Typ-Information eben nicht explizit deklariert wurde, dient die Angabe von Domain und Range dazu, diese Information ableiten, schlussfolgern zu können. (Durch eine solche Logik wird übrigens kein neues Wissen erzeugt, sondern lediglich implizites Wissen explizit gemacht: Kreativ ist diese Logik nicht.)
WordNet#
Während in SKOS vor allem zwischen Label (technisch als Literal realisiert) und skos:Concept unterschieden wird, kommt im (nur auf EN verfügbaren) Princeton WordNet noch die Idee des Synsets hinzu. Dieses steht in engem Zusammenhang mit Polysemie, also Wörtern mit ähnlichen, aber im Detail doch verschiedenen Bedeutungen. Wir betrachten den folgenden Satz:
“Our gas station around the corner is open seven days a week, day and night.”
In diesem Satz haben die verschiedenen Vorkommen der Zeichenkette day offensichtlich verschiedene Bedeutungen. Wir schlagen day im Web-Frontend des Princeton WordNet nach und untersuchen die im Beispielsatz relevanten Bedeutungen genauer. Die ersten vier Einträge von Princeton WordNet -> Use Wordnet Online > “day” lauten so:
In diesem Beispiel ist die Zeichenkette “day” offensichtlich eine lexikalische Entität, und die technisch anmutenden Zeichenketten wie z.B. day#1 (resp. day%1:28:00::) sind sense numbers (resp. sense keys) und damit offensichtlich so etwa wie semantische Entitäten. Was in SKOS mit einem language-tagged string notiert wird, wird in WordNet word genannt. Ein word kann mehrere Bedeutungen haben, die durch eine laufende sense number (resp. sense key) voneinander unterschieden werden.
Wir betrachten den Eintrag für day#1 genauer. Ergänzend zur Erklärung “time for Earth to make a complete rotation on its axis” werden bei day#1 auch noch andere Sense Numbers aufgezählt, u.A. twenty-four hours#1, 24-hour interval#1 und auch mean solar day#1. Überrascht bemerken wir, dass day#1 und mean solar day#1 die selbe Definition und die selbe Database Location {15180180}
aufweisen! Tatsächlich ist die Erklärung time for Earth to make a complete rotation on its axis nicht einer bestimmten Sense Number (resp. einem Sense Key), sondern einer ganzen Gruppe von Sense Numbers zugeordnet.
WordNet unterscheidet sich von SKOS darin, dass Bedeutungen in Synsets zusammengefasst sind, und Bedeutungs-Definitionen nicht Senses, sondern Synsets zugeordnet sind. Die 2006 publizierte W3C WordNet erläutert unter der Überschrift Introduction to the WordNet datamodel die Idee eines Synsets wie folgt:
The core concept in WordNet is the synset. A synset groups words with a synonymous meaning, such as {car, auto, automobile, machine, motorcar}. Another sense of the word “car” is recorded in the synset {car, railcar, railway car, railroad car}. Although both synsets contain the word “car”, they are different entities in WordNet because they have a different meaning.
More precisely: a synset contains one or more word senses and each word sense belongs to exactly one synset. In turn, each word sense has exactly one word that represents it lexically, and one word can be related to one or more word senses.
Mit dem Unterschied von Word Sense und SynSet begegnen wir in WordNet einer Differenzierung, die wir in SKOS so nicht kennen. Einerseits besteht die Synonym- und Antonym-Relation zwischen Word Senses; andererseits bestehen für Thesauri typische hierarchische Relationen wie Hypernym (Oberbegriff, skos:broader) oder Meronym (Teil-Ganzes, in SKOS nicht enthalten) nicht zwischen Word Senses, sondern zwischen Synsets. Auch die normalsprachliche Erklärung eines Begriffs sowie exemplarische Verwendungszusammenhänge sind, wie wir gesehen haben, in WordNet auf Synset-Ebene untergebracht. (Siehe Beispiel online.)
— online BEGINN —
XML-Beispiel aus OdeNet
Im Folgenden Beispiel aus dem Open German WordNet OdeNet (Siegel 2021; im folgenden Slide 29 aus Siegel 2018) erkennt man diese Struktur recht gut: Die entsprechenden Lemmata aus den XML-Elementen LexicalEntry von “Mobilität”, “Unabhängigkeit” und “Beweglichkeit” gehören alle zum selben Synset “odenet-9784-n”, zu dem in dem XML-Element Synset dann die Definition und das Hypernym angegen sind.
<LexicalEntry id="w39185">
<Lemma writtenForm="Mobilität" partOfSpeech="n"/>
<Sense id="w39185_9784-n" synset="odenet-9784-n"></Sense>
</LexicalEntry>
<LexicalEntry id="w35624">
<Lemma writtenForm="Unabhängigkeit" partOfSpeech="n"/>
<Sense id="w35624_9784-n" synset="odenet-9784-n"></Sense>
</LexicalEntry>
<LexicalEntry id="w33556">
<Lemma writtenForm="Beweglichkeit" partOfSpeech="n"/>
<Sense id="w33556__9784-n" synset="odenet-9784-n"></Sense>
</LexicalEntry>
<Synset id="odenet-9784-n" ili="i62097“ partOfSpeech="n"
dc:description="the quality of moving freely">
<SynsetRelation target='odenet-23172-n' relType='hypernym'/>
</Synset>
— online ENDE —
Wordnets gibt es in vielen Sprachen, siehe GWA WordNets. Während das kostenpflichtige Tübinger GermaNet seit Mitte 1990ger Jahre manuell (!) stetig erweitert wurde und so eine sehr hohe Qualität besitzt, wird das frei verfügbare OdeNet durch Datenintegration aus Open Source Quellen weitgehend automatisch aufgebaut. Die Pluralität verschiedener Wordnets ist dabei kein Problem: Auch die Daten des Princeton WordNet sind als RDF-Datensatz (WordNet RDF) erhältlich. Und ja, natürlich wird die Semantik der dort enthaltenen Relationen durch einen Verweis auf eine Ontologie geklärt, in diesem Fall auf die Ontologie OntoLex-Lemon, deren wichtigste Konzepte sich wie in OntoLex Lemon visualisieren lassen.
Quelle: https://www.w3.org/2016/05/ontolex/Lemon_OntoLex_Core.png
OntoLex-Lemon ist ein schönes Beispiel für den Mehrwert einer Ontologie: Solange die verschiedenen Wordnets die selbe Ontologie nutzen, kann das jeweils genutzte spezifische Format vergleichsweise frei gewählt werden.
Was ist eine Ontologie?#
Mit SKOS haben wir exemplarisch eine Ontologie kennengelernt, mit der Klassen wie skos:Concept, skos:ConceptGroup und skos:ConceptScheme axiomatisiert werden. Die Ontologie SKOS schafft eine axiomatisierte begriffliche Grundlage, um den Aufbau und Austausch eines Thesaurus zu ermöglichen. Tom Gruber beschreibt den Begriff der Ontologie so:
An ontology is an explicit specification of a conceptualization. […] In such an ontology, definitions associate the names of entities in the universe of discourse (e.g., classes, relations, functions, or other objects) with human-readable text describing what the names mean, and formal axioms that constrain the interpretation and well-formed use of these terms. Formally, an ontology is the statement of a logical theory. (Gruber 1995)
Ontologies are typically specified in languages that allow abstraction away from data structures and implementation strategies; in practice, the languages of ontologies are closer in expressive power to first-order logic than languages used to model databases. (Gruber 2008)
Wir wollen Gruber folgen und als Konzeptualisierung ein formal-logisches Modell der Klassen und Relationen verstehen, mit deren Hilfe wir in einer “Domain of Interest” unser Wissen modellieren. Solange wir es als Terminologen primär mit Begriffen und Benennungen zu tun haben, bietet uns SKOS die gesuchte Konzeptualisierung von Begriffen wie “Begriff” oder “Benennung”. Sind wir außerdem auch noch lexikalisch unterwegs, wird OntoLex-Lemon interessant.
Es stellt sich die Frage, ob auch Wissensrepräsentationen, die keine formal-logisch axiomatisierten Begriffe enthalten, Ontologien sind? Relevant ist die Frage natürlich insbesondere für unseren SKOS-Thesaurus selbst, aber auch für Semantische Netze, viele diagramm-basierte Wissensrepräsentationen, allgemein für alle mehr oder weniger differenzierte Wissensdatenbanken, insbesondere auch Terminologien. Weitgehend Konsens besteht darin, dass insbesondere “Glossar”, “Thesaurus” und “axiomatische Theorie” eine Ordnung von ontologisch zunehmend präziseren Wissensrepräsentationen bildet (hier z.B. Guarino 2006, entnommen aus ISKO Biagetti 2021, siehe TBD ):
Gemäß dieser Ordnung ist die TBox von SKOS selbst eine Ontologie, eine SKOS ABox jedoch lediglich ein Thesaurus. SKOS konzeptualisiert die Begriffe, mit denen wir einen Thesaurus bauen, aber nicht die Konzepte aus der Domänen-Terminologie selbst.
Exkurs: Was ist eine Konzeptualisierung?#
Es stellt sich sofort die Frage, was unter einer Konzeptualisierung zu verstehen ist. Sowohl textimmanent in den zitierten Aufsätzen wie auch aus dem Verständnis der Forschungshistorie heraus lässt lässt sich feststellen, dass Ontologien in formaler Logik notiert und durch Reasoner oder Inferencing Systeme in Verbindung mit einer Logik-Programmiersprache – früher oft Prolog, heute z.B. RDF(S) oder OWL, andere spielen derzeit kaum keine Rolle – auswertbar sein müssen, also durch logisches Schlussfolgern Wissen implizites Wissen explizit gemacht werden kann.
Die Axiomatisierung kann, wie oben gezeigt, über Axiome aus RDF(S) wie z.B. rdfs:domain
und rdfs:range
erfolgen. Für komplexere Axiomatisierungen verwendet man heute OWL2 Elemente aus verschiedenen OWL language profiles, darunter insbesondere Axiome vom Typ Restriction. OWL2 ist eine mächtige Logiksprache, die zu beherrschen allerdings einen erhebliches formal-logisches Hintergrundwissen voraussetzt.
Will man eine Ontologie selber bauen?#
In OWL eine Ontologie zu formulieren und mit anderen Ontologien zu vernetzen ist “rocket science”. Schon SKOS zu bauen (und mit SKOS-XL vorsichtig zu erweitern) hat sich in den 2005er Jahren lange hingezogen und viel Expertise erfordert. Eine große Herausforderung jeder neuen Ontologie besteht darin, die Interoperabilität und Komplementarität mit existierenden Ontologien aufrecht zu erhalten. Selbst wenn existierende Ontologien die eigene Weltsicht nur teilweise abbilden: Will man die eigene Weltsicht wirklich mit einer eigenen Ontologie konkurrierend an den Markt bringen?
Vor allem aber verkörpern Ontologien auch philosophische Sichtweisen auf die Welt – insbesondere auch solche, die nicht kompatibel, sondern konkurrierend sind. Die Recherche nach geeigneten Bezugs-Ontologien ist mühsam, da der formale OWL-Code von Ontologien ohne eine gute – und das heiß auch: anschauliche – Dokumentation kaum verständlich ist. Existierende Ontologien als Bezugspunkt auszuwählen erfordert insbesondere auch ein Verständnis der philosophischen Ontologie der jeweiligen Bezüge. Der vorliegende Aufsatz versucht, zu einem solchen Verständnis mit Bezug auf SKOS und WordNet beizutragen, die für Terminologen wichtige Bezugspunkte sind.
Das Verzeichnis Linked Open Vocabularies (LOV) verzeichnet knapp 800 (Stand Nov 2022) als Ontologie axiomatisierte Vokabulare, u.A. auch SKOS. Hier werden tausende von Begriffen und Relationen z.T. rudimentär, z.T. sehr komplex axiomatisiert. Damit liegt de facto eine modularisierte und verteilte, oft überraschend durchdachte, nicht immer leicht verständliche und nicht immer konsistente Open-Source Terminologie bereits vor.
Wozu Ontologien?#
Auch wenn man keine eigene Ontologie herstellen will bietet das Ökosystem “Semantic Web” einiges an Mehrwert. Wenn man ein firmen-internes Datenschemata auf die TBox existierender Ontologien mappt, und/oder die eigenen (hier: Termonologie-) Daten als Instanzen von Klassen aus existierenden Ontologien anlegt, macht man diese Daten für Zweit- und Mehrfachnutzungen nutzbar. Ist man zusätzlich an Interoperabilität interessiert, nimmt man idealerweise auf kleine, benutzbare, anerkannte Ontologien Bezug.
Wann immer man in einem Knowledge Graph über den Typ eines Knotens (z.B. “Schnitzel”: Das Schnitzel “an sich”? Eine Klasse in einer Nahrungsmittel-Ontologie? Ein Begriff in einem Vokabular? Ein mehrdeutiges Wort in einem Text?) oder die ableitbare Domain und Range einer Relation Auskunft geben will, kann man diesen Knoten zu einer öffentlichen Ontologie in Bezug setzen – falls man damit leben kann, wie der fragliche Begriff in der jeweiligen Ontologie axiomatisiert wurde. Alternativ zur anspruchsvollen Strategie, auf einen in einer Ontologie axiomatisierten Begriff zu verweisen bietet sich auch die schwächere Strategie an, lediglich auf Begriffe aus einer nicht formal axiomatierten Terminologie, sondern z.B. in SKOS formulierten Terminologie zu verweisen.
SKOS bietet sich insbesondere auch dann als erste Wahl an, wenn man in der Praxis eine eigene Terminologie erstellen will: Anders als in OWL formulierte Axiomatisierungen sind in SKOS formulierte Terminologien fehlertolerant und einfach genug, um von Nicht-Logikern aufgebaut und adäquat gepflegt werden zu können – eben weil ein SKOS-Thesaurus keine Ontologie ist, sondern “nur” ein Wissensgraph auf Instanzebene.
Quellen#
siehe Quellen
Der vorliegende Aufsatz liegt unter http://jbusse.de/dtt2023/ auch in einer erweiterten und aktualisierten Web-Fassung vor, die auch weitere Quellen, ein Glossar sowie vertiefende Diskussionen enthält.
Prof. Dr. Johannes Busse | HAW Landshut, Am Lurzenhof 1, 84036 Landshut | busse@haw-landshut.de | http://www.jbusse.de