RDF Containers. Häufig möchte man eine Gruppe von Dingen beschreiben. Hierfür stellt RDF ein Container-Vokabular zur Verfügung.

Größe: px
Ab Seite anzeigen:

Download "RDF Containers. Häufig möchte man eine Gruppe von Dingen beschreiben. Hierfür stellt RDF ein Container-Vokabular zur Verfügung."

Transkript

1 RDF Containers Häufig möchte man eine Gruppe von Dingen beschreiben. Hierfür stellt RDF ein Container-Vokabular zur Verfügung. Ein Container ist eine Ressource, die andere Ressourcen oder Literale enthält (die Container-Elemente bzw. members). RDF kennt drei Arten an Containern: rdf:bag Stellt eine Multimenge dar, d.h. Duplikate sind erlaubt, die Reihenfolge ist nicht signifikant. rdf:seq Stellt eine Sequenz bzw. Liste dar, Duplikate sind erlaubt, die Reihenfolge ist signifikant rdf:alt Stellt eine Menge von Ressourcen dar, die als Alternativen gesehen werden können. Jedes Mitglied des Containers ist passend. Die Art des Containers wird durch ein rdf:type-element (Property) angegeben. Zur Angabe der Container-Elemente dienen die Properties rdf: 1, rdf: 2,... bzw. rdf:li. xmlns:s=" <rdf:description rdf:about=" <s:students> <rdf:bag> <rdf:li rdf:resource=" <rdf:li rdf:resource=" <rdf:li rdf:resource=" <rdf:li rdf:resource=" <rdf:li rdf:resource=" </rdf:bag> </s:students>

2 RDF Collections Container sind nicht abgeschlossen, d.h. die Verwendung eines Containers zeigt an, daß die Elemente zu dieser Ressource gehören, wir können aber nicht daraus schließen, daß es keine weiteren Elemente gibt, die ebenfalls dazu gehören. Für eine vollständige Aufzählung dient der Typ rdf:list mit den Eigenschaftenrdf:first undrdf:rest sowie der speziellen Ressource nil. Vereinfachende Schreibweise mittels rdf:parsetype="collection". xmlns:s=" <rdf:description rdf:about=" <s:students rdf:nodeid="sch1"/> <rdf:description rdf:nodeid="sch1"> <rdf:first rdf:resource=" <rdf:rest rdf:nodeid="sch2"/> <rdf:description rdf:nodeid="sch2"> <rdf:first rdf:resource=" <rdf:rest rdf:nodeid="sch3"/> <rdf:description rdf:nodeid="sch3"> <rdf:first rdf:resource=" <rdf:rest rdf:resource=" xmlns:s=" <rdf:description rdf:about=" <s:students rdf:parsetype="collection"> <rdf:description rdf:about=" <rdf:description rdf:about=" <rdf:description rdf:about=" </s:students>

3 Reification Manchmal möchte man Aussagen über Aussagen treffen. Man bezeichnet dies als Vergegenständlichung (reification). Damit wird die Aussage selbst zur Ressource. Element rdf:statement mit den Properties rdf:subject, rdf:predicate und rdf:object. <!DOCTYPE rdf:rdf [<!ENTITY xsd " xmlns:dc=" xmlns:exterms=" xml:base=" <rdf:description rdf:id="item10245"> <exterms:weight rdf:id="triple12345" rdf:datatype="&xsd;decimal">2.4 </exterms:weight> <rdf:description rdf:about="#triple12345"> <dc:creator rdf:resource=" <!DOCTYPE rdf:rdf [<!ENTITY xsd " xmlns:dc=" xmlns:exterms=" xml:base=" <rdf:description rdf:id="item10245"> <exterms:weight rdf:datatype="&xsd;decimal">2.4</exterms:weight> <rdf:statement rdf:about="#triple12345"> <rdf:subject rdf:resource=" <rdf:predicate rdf:resource=" <rdf:object rdf:datatype="&xsd;decimal">2.4</rdf:object> <dc:creator rdf:resource=" </rdf:statement> RDF Schema Wie lautet eigentlich unser Grundvokabular? Welche Properties dürfen wir verwenden? Welche Klassen gibt es? Wie hängen diese zusammen? Diese anwendungsspezifischen Sachverhalte werden mit Hilfe von RDF Schema beschrieben. Insbesondere definieren wir Klassen und Eigenschaften. Im Gegensatz dazu beschreiben wir mittels RDF konkrete Objekte (Ressourcen)

4 Weiterhin legen wir mit RDF Schema fest: Definitions- und Wertebereiche von Eigenschaften Beziehungen zwischen Klassen und zwischen Eigenschaften RDF Schema verlangt nicht, daß Klassen eine strikte Hierarchie definieren. Eine Klasse kann verschiedene Oberklassen haben. Untereigenschaft (subproperty) kann wie folgt definiert werden: P ist Untereigenschaft von Q wenn gilt, daß aus P(x, y) auch Q(x, y) folgt. Mit diesen Konzepten ist RDF Schema eine einfache Ontologiesprache. RDF Schema: Die Sprache Wir müssen keine neue Sprache lernen! RDF Schema benutzt RDF als Wissensrepräsentationssprache. Die Repräsentationskonstrukte von RDF Schema werden durch RDF-Tripel ausgedrückt. RDF Schema stellt dafür als wesentliche Elemente bereit: grundlegende Klassen grundlegende Properties für die Definition von Beziehungen grundlegende Properties für Einschränkungen Literal range range Namespaces id phone domain Staff Member domain RDF Schema involves range subclassof Academic Staff Member domain istaughtby domain Course range subclassof subclassof Professor Asociate Professor subclassof Assistant Professor üblicher Präfix: rdfs RDF type type RDFS Discrete Mathematics istaughtby David Billington RDF üblicher Präfix: rdf

5 Grundlegende Klassen rdfs:resource, die Klasse aller Ressourcen rdfs:class, die Klasse aller Klassen rdfs:literal, die Klasse aller Literale, der einzige Datentyp von RDFS/RDF. rdf:property, die Klasse aller Eigenschaften rdf:statement, die Klasse aller vergegenständlichten Aussagen <rdf:rdf xml:base=" xmlns:rdf=" xmlns:rdfs=" <rdf:description rdf:about="publication"> <rdf:description rdf:about="book"> <rdfs:subclassof rdf:resource="publication"/> Definition von Klassen Definition von Properties Eine Klasse ist jede Ressource, deren Eigenschaft rdf:type den Wert rdfs:class annimmt. Mit Hilfe der Property rdfs:subclassof können wir eine Klasse als Unterklasse einer anderen definieren. Eine Property ist jede Ressource, die Instanz der Klasse rdfs:property ist. Mit Hilfe der Property rdfs:subpropertyof können wir eine Spezialisierungshierarchie für Properties aufbauen. Beispiel 3.1. Definition einer Klasse und einer Unterklasse. Beispiel 3.2. Definition einer Property und einer Subproperty

6 <rdf:rdf xml:base=" xmlns:rdf=" xmlns:rdfs=" <rdf:description rdf:about="isinvolved"> <rdf:type rdf:resource=" <rdf:description rdf:about="teaches"> <rdf:type rdf:resource=" <rdfs:subpropertyof rdf:resource="isinvolved"/> Properties für Einschränkungen rdfs:domain, spezifiziert den Definitionsbereich einer Property, d.h. gibt die Klasse an, aus der das Subjekt stammt. rdfs:range, spezifiziert den Wertebereich einer Property (Objekt) rdfs:constraintresource, Klasse aller Einschränkungen (constraints) rdfs:constraintproperty, enthält alle Eigenschaften die Einschränkungen definieren: rdfs:domain und rdfs:range Properties für die Definition von Beziehungen rdf:type, ordnet eine Ressource einer Klasse zu (ist Instanz einer Klasse) Beispiel 3.3. Definition von domain und range. <rdf:description rdf:about="teaches"> <rdfs:domain rdf:resource="professor"/> <rdfs:range rdf:resource="course"/> rdfs:subclassof, Unterklassenbeziehung, eine Unterklasse kann mehrerer Oberklassen haben rdfs:subpropertyof, Spezialisierungsbeziehung für Eigenschaften rdfs:subclassof und rdfs:subpropertyof sind transitiv. rdfs:class ist eine Unterklasse von rdfs:resource und rdfs:resource ist eine Instanz von rdfs:class

7 Vergegenständlichung und Container rdf:subject, rdf:predicate und rdf:object für die Vergegenständlichung (reification) Die Containerklassen rdf:bag, rdf:seq und rdf:alt sowie rdfs:container als Oberklasse aller Container Sonstige Properties rdfs:seealso: Verweis auf eine Erläuterung rdfs:isdefinedby: Subproperty von rdfs:seealso, Verweis auf eine Ressource, die die Definition enthält, üblicherweise ein RDF- Schema-Dokument rdfs:comment: Kommentar zu einer Ressource rdfs:label: anderer Name für eine Ressource <!DOCTYPE rdf:rdf [<!ENTITY xsd " xmlns:rdfs=" xml:base=" <rdf:description rdf:id="motorvehicle"> <rdf:description rdf:id="passengervehicle"> <rdf:description rdf:id="truck">

8 <rdf:description rdf:id="van"> <rdf:description rdf:id="minivan"> <rdfs:subclassof rdf:resource="#van"/> <rdfs:subclassof rdf:resource="#passengervehicle"/> </rdfs:class> <rdfs:class rdf:id="minivan"> <rdfs:subclassof rdf:resource="#van"/> <rdfs:subclassof rdf:resource="#passengervehicle"/> </rdfs:class> <!DOCTYPE rdf:rdf [<!ENTITY xsd " <rdf:rdf xmlns:rdf=" xmlns:rdfs=" xml:base=" <rdfs:class rdf:id="motorvehicle"/> <rdfs:class rdf:id="passengervehicle"> </rdfs:class> Eine Instanz der Klasse MotorVehicle: <rdf:rdf xmlns:rdf=" xmlns:ex=" xml:base=" <ex:motorvehicle rdf:id="companycar"/> <rdfs:class rdf:id="truck"> </rdfs:class> <rdfs:class rdf:id="van">

9 Eigenschaften für die Motor Vehicle Ontologie: <rdf:property rdf:id="registeredto"> <rdfs:domain rdf:resource="#motorvehicle"/> <rdfs:range rdf:resource="#person"/> </rdf:property> <rdf:property rdf:id="rearseatlegroom"> <rdfs:domain rdf:resource="#passengervehicle"/> <rdfs:range rdf:resource="&xsd;integer"/> </rdf:property> <rdfs:class rdf:id="person"/> <rdfs:datatype rdf:about="&xsd;integer"/> Ausblick: Mächtigere Ontologiesprachen Konstrukte die wünschenswert sind, die aber nicht in RDF Schema enthalten sind: Cardinality Constraints Transitivität und Umkehrabbildung für Eigenschaften Schlüsseleigenschaften Aussage, daß zwei Klassen die gleichen Ressourcen beinhalten Spezialisierung von Eigenschaften: <rdf:property rdf:id="driver"> <rdfs:domain rdf:resource="#motorvehicle"/> </rdf:property> <rdf:property rdf:id="primarydriver"> <rdfs:subpropertyof rdf:resource="#driver"/> </rdf:property> Die Fähigkeit, Klassen als Kombination von anderen Klassen zu beschreiben, z.b. die Klasse Mutter als Durchschnitt der Klassen Frau und Personen mit mindestens einem Kind. diese Konzepte finden wir in den Beschreibungslogiken und OWL