Mit Wissen(sgraphen) anstatt Daten(banken) arbeiten
Table of Contents | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Semantik reichert Daten mit Bedeutung an. Die wird in semantischen Graph-Daten- banken gespeichert.
...
Das wird mehrere Beiträge erfordern und am Ende dieser Artikelreihe werden Sie in der Lage sein, ein semantisches Datenmodell mit Klassen und Eigenschaften zu erzeugen und in einer Ontologie mithilfe der Abfragesprache SPARQL in Node.js-Instanzen anlegen, lesen, aktualisieren und löschen (CRUD) zu können.
Knowledge-Graphen
Semantische Graph-Datenbanken oder auch Ontologien be- stehen im Wesentlichen aus einer Klassenhierarchie, einer Taxonomie (auch als T-Box bezeichnet) und den sogenannten Individuals, also den Instanzen der Klassen (auch als A-Box bezeichnet). Hinzu kommen Dateneigenschaften mit konkre- ten Werten verschiedener Datentypen, den sogenannten Li- teralen, und die Objekteigenschaften mit Referenzen auf an- dere Individuals, den eigentlichen Verlinkungen. All diese Entitäten werden auch als Ressourcen bezeichnet.
...
Zum anderen dient er zum Validieren und zum Prüfen der Konsistenz, etwa um Widersprüche oder Regelverletzungen auszuweisen, und somit auch, um die Datenqualität sicherzu- stellen.
Begriffe und Abkürzungen
Wer sich mit dem semantischen Web beschäftigt, stößt auf eine Reihe neuer Begriffe und Abkürzungen, deren Kenntnis zum Verständnis von Modellen, Relationen und Funktionen wichtig sind. Zuerst noch einmal eine kurze Zusammenfas- sung zu den Unterschieden von URL, URI und IRI.
...
Der Namensraum ist hier http://ont.dotnetpro.de/erp#und der Localname product_1, im weiteren Verlauf dieses Artikels schlicht als Name oder Identifier bezeichnet. Im Gegensatz zum URL ist bei IRIs das Schema https nicht nur unüblich, es bewirkt aufgrund des reinen Identifikationscharakters auch keinerlei Verschlüsselung – weder des Transports noch der Inhalte.
Namensräume und Domänen
Für die Interoperabilität von Ontologien gilt es als gute Pra- xis, nur solche Namensräume zu verwenden, deren offiziel- ler Domäneninhaber Sie auch selbst sind. In der Beispiel-On- tologie zu diesem Text könnte er zum Beispiel http://ont.dot netpro.de/[...]lauten. Zwar wird die Gültigkeit der Namens- räume bei der Veröffentlichung von Ontologien bisher weder von Nameservern (DNS) noch von einer offiziellen Institu- tion geprüft, doch riskieren Sie mit Namensräumen wie etwa http://foo.bar/ Fehler in Applikationen oder bei Nutzern da- durch, dass die Ressourcen nicht mehr global eindeutig refe- renziert und deshalb in international zusammengesetzten Knowledge-Graphen nicht verwendet werden können.
Namen mit Präfixen
Würden Ressourcen in RDF/OWL-Dateien oder in SPARQL- Kommandos immer durch ihren vollen IRI referenziert – syn- taktisch sind sogar noch zusätzlich umgebende <- und >-Zei- chen nötig –, so könnten diese recht schnell unübersichtlich werden und schwer zu lesen sein. Stellen Sie sich folgendes Tripel (siehe den Abschnitt „RDF“) vor:
...
Im Rahmen von RDF, OWL und SPARQL wird diese Notation als Prefixed Name bezeichnet.
Primärschlüssel und Relationen
Neben den Konventionen zu den Namensräumen gibt es wei- tere bewährte Verfahren zu den IRIs. Da jede Ressource über einen eigenen datenbankübergreifenden und international eindeutigen IRI verfügt, sind in einem Graphen keine zusätz- lichen Primärschlüssel erforderlich; es müssen also keine spe- ziellen ID-Felder vorgesehen werden, etwa in Form von Da- teneigenschaften. Hierzu reichen die bestehenden IRIs völlig aus – de facto sind diese die globalen Primärschlüssel.
...
erp:user_1 props:hasRole erp:role_1 erp:user_1 props:hasRole erp:role_2 erp:user_2 props:hasRole erp:role_1 erp:user_2 props:hasRole erp:role_2
RDF
RDF ist die Abkürzung für Resource Description Framework [4], ein vom World-Wide-Web-Konsortium (W3C) standardi- siertes Modellierungskonzept für das semantische Web, das mithilfe von Tripeln aus Subjekt, Prädikat und Objekt einfa- che logische Aussagen ermöglicht, die sich in gerichteten Graphen formulieren lassen und leicht von Maschinen gele- sen, verstanden und visualisiert werden können. Beispiele: Max hasAge 32 (Dateneigenschaft) oder Josef hasSpouse Maria (Objekteigenschaft).
...
Erwartungsgemäß ist JSON-LD verstärkt in JavaScript- Umgebungen und RDF/XML eher im Java-Bereich zu fin- den. Semantische Graph-Datenbanken wie beispielsweise GraphDB von Ontotext verfügen aber im Sinne von Interope- rabilität über Import- und Exportfunktionen für alle wichti- gen Formate.
RDFS
Die Abkürzung RDFS steht für Resource Description Frame- work Schema [5], eine semantische Erweiterung des RDF-Vo- kabulariums speziell für die Datenmodellierung. Es enthält Mechanismen insbesondere zum Gruppieren von Ressourcen und deren Beziehungen untereinander. Es ist vergleichbar mit dem Klassensystem, wie man es von der objektorientier- ten Programmierung (OOP) kennt, jedoch mit einer wesent- lichen und wichtigen Erweiterung: Während in der OOP für eine Klasse definiert wird, welche Eigenschaften sie hat und haben darf, kann ein RDF-Schema für Eigenschaften angelancer folgen und unter Employee vielleicht Developer, Architect und Manager. Da zeigt sich schon das erste Problem: Denn selbst wenn ein Freiberufler vielleicht kein Manager werden kann, wa- rum sollte er nicht auch ein Ent- wickler oder Softwarearchitekt sein können? Warum nicht gleich- zeitig Architekt und Manager?
...
RDFS plus schließlich ist eine erweiterte Version von RDFS, die symmetrische, inverse und transitive Eigenschaften un- terstützt. Diese im Gegensatz zur OOP neuen Konzepte wer- den im Folgenden noch näher erläutert. Viele der RDFS- und RDFS-plus-Komponenten sind auch Teil der noch ausdrucks- stärkeren Web Ontology Language (OWL).
...
OWL
Die Abkürzung OWL steht für Web Ontology Language [6]. Die Sprache wurde speziell für das semantische Web entwor- fen, um das Wissen über Objekte und Klassen (als Gruppen von Objekten) und deren Beziehungen untereinander darzu- stellen. Ontologien basieren auf RDF und OWL und können mit SPARQL als Abfragesprache gelesen und verändert wer- den. Reasoner unterstützen OWL.
Klassenbäume
Die Taxonomie ist ein wesentlicher Bestandteil eines seman- tischen Datenbankmodells. Sie entspricht eher dem hierar- chischen Klassenmodell aus der objektorientierten Program- mierung als den Schemata der traditionellen SQL- und No- SQL-Datenbanken für Tabellen oder Kollektionen. Die Klas- sen in der Taxonomie sind in einer Baumtopologie organi- siert, und sie können ihre Eigenschaften auch vererben.
Unzulänglichkeit der Baumtopologie
Mit konventionellen Klassenbäumen ist es jedoch schlecht praktikabel bis unmöglich, reale komplexe Umgebungen ab- zubilden. Zwar eignen sie sich, um Vererbungen vertikal um- zusetzen. Horizontale Aspekte jedoch, also solche, die meh- rere Teilbäume betreffen, lassen sich in Baumtopologien nicht abbilden.
...
Doch nicht nur das; auch hier werden wieder zwei Konzep- te vermischt, nämlich das der Klassifizierung und das der Ei- genschaften. Geradlinig wäre, wenn ein Individual gleichzei- tig Mitglied mehrerer Klassen sein könnte, im Beispiel also beispielsweise von der Oberklasse Person abstammen und gleichzeitig Mitglied einer Rollenklasse und einer Vertrags- artenklasse sein könnte. Semantische Datenbanken unter- stützen genau das.
Lösung der Mehrfachklassifizierung
In der OOP werden Klassen vorrangig als Schema verwen- det, also als eine Art Spezifikation für Instanzen. Aus dieser Perspektive ist es naturgemäß schwierig, Schemata mit et- waigen Überschneidungen oder Widersprüchen zu vermi- schen. Gleiches gilt für die Schemata der traditionellen rela- tionalen Datenbanken.
...
sprache SPARQL auch ebenso einfach alle Mitglieder einer bestimmten Klasse abgefragt werden können. Dies macht Abfragen sehr übersichtlich und ebenso leicht lesbar.
Disjoint Classes
Nun kommt es in der Praxis häufig vor, dass eine einzige Per- son mehrere Rollen gleichzeitig innehat. Im Gegensatz dazu kann sie jedoch normalerweise nicht gleichzeitig Employee und Freelancer sein. Deswegen werden diese zwei Klassen auch als „disjoint“ (auf Deutsch disjunkt, das heißt schnitt- mengenfrei) bezeichnet.
Dies sagt aus, dass ein Individual nicht gleichzeitig Mit- glied dieser beiden Klassen sein kann. Den Versuch, dieses so festzulegen, würde der Reasoner als Regelverletzung er- kennen und als Inkonsistenz in der Datenbank ausweisen.
Schemata
Ein Entwickler aus der OOP-Welt wäre zunächst versucht, Klassen in einer Ontologie als Schema anzusehen. Und tat- sächlich kann eine Graph-Datenbank auch in diesem Sinne genutzt werden. Für jede Klasse werden hierzu Daten- und Objekteigenschaften spezifiziert, und alle Individuals dieser Klasse können dann Werte oder IRI-Referenzen für diese Ei- genschaften erhalten.
...
Theoretisch können in einer Graph-Datenbank also alle In- dividuals beliebige Eigenschaften verwenden. Auch müssen Individuals nicht zwangsläufig über eine oder mehrere Klas- sifizierungen verfügen. Mit anderen Worten: Eine Graph-Da- tenbank ist zunächst einmal schemalos. Dennoch ist die Zu- ordnung eines Individuals zu einer Klasse natürlich sinnvoll, etwa um in einer ERP-Applikation unterschiedliche Arten von Individuals wie Kunden, Produkte oder Rechnungen un- terscheiden zu können.
Explizite und implizite Klassifizierung
Eine explizite Zuordnung eines Individuals zu einer oder mehreren Klassen erfolgt über Typ-Statements. Hier legen entsprechende Aussagen pro Individual dessen Mitglied- schaften fest:
...
Um die Verwaltung dieser Angaben brauchen Sie sich aber nicht zu kümmern, dies übernimmt die Datenbank mit dem Reasoner automatisch.
Domains und Ranges
Eine weitere Besonderheit semantischer Graph-Datenban- ken ist die implizite Klassifizierung von Individuals mithilfe von Eigenschaften. Wie alle Informationen in einem Graphen werden auch Eigenschaften über RDF-Tripel abgebildet, et- wa in der folgenden Form:
...
Da der Reasoner solche semantischen Fehler nicht automa- tisch ausweist, sind sie in umfangreichen Ontologien später nur schwer zu identifizieren und zu beheben. Die auf RDF- Graphen aufsetzende Shapes Constraints Language (SHACL [7]) ist ein geeignetes Hilfsmittel, um unter anderem Typver- letzungen aufzudecken. Dies wird noch das Thema in einem weiteren Artikel der dotnetpro sein.
Eigenschaften wiederverwenden
In traditionellen SQL-Datenbanken hat jede Tabelle ihr eige- nes Schema und somit auch individuelle Bezeichner pro Spal- te. Dabei erschließt sich jedoch nicht automatisch, ob gleiche Bezeichner auch tatsächlich das Gleiche oder unterschiedli- che Bezeichner tatsächlich etwas anderes meinen.
...
Das vermeidet nicht nur Inkompatibilitäten und Inkonsis- tenzen, sondern vereinfacht auch signifikant die Lesbarkeit und das gemeinsame Verständnis von Daten zwischen ver- schiedenen Nutzern. Das Wissen über die Daten (die Meta- daten) steckt hier in der Datenbank selbst und lässt sich so- mit unabhängig von Code und Programmiersprache teilen und wiederverwenden.
Dateneigenschaften
Während es sich bei den Objekteigenschaften um Beschrei- bungen von Beziehungen zwischen Individuals handelt, be- schreiben Dateneigenschaften bestimmte Charakteristiken eines bestimmten Individuals. Sie sind vergleichbar mit ▶
...
"Ebner Media Group GmbH & Co. KG"^^xsd:String
Datentypen
Für die Dateneigenschaften steht in OWL2 eine Vielzahl von Datentypen zur Verfügung [8]. Zu den numerischen gehören die folgenden:
● Tabelle 1: Charakteristika von Eigenschaften
Charakteristik | Bedeutung, Restriktion |
functional | Die Eigenschaft darf maximal einmal pro Individual verwendet werden (Mengenbe- schränkung für die referenzierten Objekte). Beispiel hasMother: Ein Kind B kann höchstens eine Mutter A haben. |
inverse functional | Das referenzierte Objekt darf von nicht mehr als einem Subjekt referenziert werden (Mengen-Restriktion für die referenzierenden Subjekte). Beispiel isMarriedWith: Ist Person A mit Person B verheiratet, so kann B nicht auch mit C verheiratet sein (zumindest nicht im christlichen Kulturkreis). |
transitive | Verweist ein Individual A auf ein Individual B und B auf C, so kann dann auch A auf C verweisen. Beispiel hasSuccessor: Ist Person A Nachfahre von B und B Nachfahre von C, dann ist auch A Nachfahre von C. |
symmetric | Steht A in einer Beziehung zu B, so steht B in der gleichen Beziehung zu A. Beispiel hasRelative: Ist Person A verwandt mit B, so ist auch Person B verwandt mit A. |
asymmetric | Steht A in einer Beziehung zu B, kann B nicht in der gleichen Beziehung zu A stehen. Beispiel isFatherOf: Ist A der Vater von B, kann B nicht gleichzeitig Vater von A sein. |
reflexive | Legt fest, dass alle Individuals mit dieser Eigenschaft immer auch auf sich selbst verweisen. Beispiel knows: Eine Person A kennt immer auch sich selbst. |
irreflexive | Definiert, dass Individuals mit dieser Objekteigenschaft nicht auf sich selbst verweisen können. Beispiel hasSibling: Eine Person A kann nicht sich selbst als Bruder oder Schwester haben. |
inverse of | Definiert, dass die betreffende Eigenschaft das Gegenteil von einer anderen Eigenschaft ist. Beispiel: hasChild ist eine inverse Eigenschaft von hasParent, ebenso ist hasWife invers zu hasHusband. |
equivalent to | Gibt an, dass die betreffende Eigenschaft die gleichen Werte zum Beispiel für domain und range hat wie die referenzierte Eigenschaft. Beispiel: Die Eigenschaft child hat die gleichen Werte wie hasChild. |
...
In OWL ist es möglich, auch eigene Datentypen anzulegen. Auf dieses Thema und den Nutzen für Anwendungen wird ein Folgeartikel noch genauer eingehen.
Property-Charakteristika
Ein großer Vorteil semantischer Datenbanken ist die Mög- lichkeit, Eigenschaften mit umfangreichen Metaangaben zu bereichern und ihnen damit eine große Ausdrucksstärke zu verleihen, die auch standardisiert von Maschinen verstanden
● Tabelle 2: Einschränkungen von Eigenschaften in OWL
Einschränkungstyp | Bedeutung |
some | Es muss mindestens eine Eigenschaft des angegebenen Typs vorhanden sein. |
only | Alle Eigenschaften müssen vom angegebenen Typ sein, es erfolgt keine Mengenangabe. |
min (Mindestkardi- nalität) | Es muss mindestens die angegebene Anzahl an Eigenschaften des angegebenen Typs vorhanden sein. |
max (maximale Kardinalität) | Es darf maximal die angegebene Anzahl an Eigenschaften des angegebenen Typs vorhanden sein. |
exactly (genaue Kardinalität) | Es muss genau die angegebene Anzahl an Eigenschaften des angegebenen Typs geben. |
...
Im vollständigen OWL-Profil [10] sind Dateneigenschaften eine Unterklasse von Objekteigenschaften. Daher kann hier auch für Dateneigenschaften eine invers-funktionale Eigen- schaft definiert werden. Im Profil OWL-DL sind Objekteigen- schaften und Datentypeigenschaften getrennt, sodass eine invers-funktionale Eigenschaft für Datentypeigenschaften hier nicht definiert werden kann. Eine gute Übersicht vieler OWL2-Axiome und -Restriktionen stellt die Website des W3C zur Verfügung [11].
Einschränkungen von Eigenschaften
Zusätzlich zu den Charakteristika von Eigenschaften können in OWL2 sogenannte Property Restrictions definiert werden. Für Dateneigenschaften treffen diese Aussagen über Anzahl und Datentyp, für Objekteigenschaften über Anzahl und Klasse der referenzierten Individuals. Tabelle 2 zeigt die un- terstützten Einschränkungen.
...
Für Validierungszwecke von Individuals gegen Schemata eignet sich SHACL besser. Eine der nächsten Ausgaben der dotnetpro wird hierüber detailliert berichten.
Fazit
Graph-Datenbanken tragen mithilfe von Semantik und um- fangreichen Metadaten dazu bei, Wissen statt in Code in Da- tenbanken anzulegen und zu verwalten. Wissen wird dadurch leicht verständlich, maschinenlesbar und damit wie- derverwendbar. Reasoner erschließen durch Inferenz neues Wissen automatisch aus bestehendem, Datenbanken lernen maschinell und Entwickler deklarieren weniger redundant und explizit, sondern nur noch einmalig und zentral und im- plizieren dann. Das reduziert Wartungskosten und Fehler- anfälligkeit.
...