RDF-Schema Seminar: „Semantic Web“ André Rosin, Humboldt-Universität zu Berlin, Fakultät der Informatik, Wintersemester 2002/2003
Inhalt Einleitung Das Klassenkonzept Syntax von RDF-Schema Beispielanwendung Ausblick Vergleich mit anderen Metamodellen Einleitung Das Klassenkonzept Syntax von RDF-Schema Beispielanwendung Einleitung Das Klassenkonzept Vererbung Constraints RDF-Schema objektorientiert? I. Einleitung Was ist RDF-Schema? Schema Definition Language Einleitung Das Klassenkonzept Syntax von RDF-Schema Kern-Klassen und –Properties Container-Klassen und –Properties Utility-Klassen und -Properties
I. Einleitung Was ist RDF-Schema? RDF bietet keine Möglichkeit: Eigenschaften und Beziehungen zwischen Eigenschaften und Ressourcen zu beschreiben. Ressourcenbeschreibungen benötigen die Fähigkeit bestimmte Dinge über Ressourcen zu sagen
RDF-Schema kein Schema? RDF-Schema definiert einen Mechanismus, um die eigentlichen Schemata zu entwerfen: Die Vocabulary Defintion Language ist eine Reihe von Klassen und Eigenschaften zur Beschreibung anderer Klassen und Eigenschaften Die RDF-Schema-Spezifikation ist unter: http://www.w3.org/TR/rdf-schema/ zu finden und working draft des W3C.
RDF-Schema Spezifikation Ein Schema legt für jede Eigenschaft fest: welche Werte erlaubt sind welche Ressource sie besitzen darf welche Beziehung sie zu anderen Eigenschaften hat RDF-Schema definiert die Semantik von Aussagen mittels RDF-Syntax
II. Das Klassenkonzept Einzug objektorientierter Paradigmen Klassensystem vergleichbar zu OO-Programmiersprachen wie Java und C++ Instanziierung von Klassen, Typisierung Vererbung, Mehrfachvererbung, Spezialisierung Aber: Klassen von Objekten sind auch ohne spezielle Eigenschaften identifizierbar
III. Syntax von RDF-Schema Kernvokabular der Vocabulary Description Language wird mit „rdfs“ bezeichnet und ist definiert im Namensraum: http://www.w3.org/2000/01/rdf-schema# Definition der Kernklassen: rdfs:Resource - Alle in RDF beschriebenen Dinge sind Instanz dieser Klasse rdfs:Literal und rdfs:XMLLiteral - Klasse aller (XML-)Literale, z.B. Strings und Integers
Kernklassen rdfs:Class - Konzept der Klassen, jede Klasse hat rdf:type Eigenschaft mit dem Wert rdfs:Class, Unterklasse von rdfs:Resource, Anwendung mit: <rdfs:Class rdf:ID=“Klasse“> … </rdfs:Class > rdfs:DataType - Klasse aller Ressourcen, die RDF-Datentypen sind
Kernklassen (cont.) rdfs:Property - Konzept der Eigenschaften analog zu rdfs:Class, Anwendung mit: <rdfs:Property rdf:ID=“Property“> … </rdfs:Property> rdf:type - Eigenschaft besagt, dass Ressource Instanz einer Klasse ist, Anwendung mit: <rdf:type resource=“http://www.w3.org/ … 2000/01/rdf-schema#Class“/>
Kernproperties rdfs:subClassOf - Unterklassenrelation ermöglicht Vererbungsmechanismus und Modularisierung von Schemata, Anwendung: <rdfs:subClassOf rdf:resource=“#Basisklasse“/> rdfs:subPropertyOf - Spezialisierung von Eigenschaften analog zu rdfs:subClassOf <rdfs:subPropertyOf rdf:resource=“#Basisproperty“/>
Kernproperties (cont.) rdfs:range - legt den Wertebereich einer Property fest und ermöglicht so Constraints rdfs:domain - legt den Definitionsbereich einer Eigenschaft fest – auf welche Klassen kann eine Eigenschaft angewandt werden? Jede Eigenschaft hat höchstens eine rdfs:range und rdfs:domain-Eigenschaft!
Beispiel (aus Spezifikation) <rdf:Property rdf:about="http://www.w3. org/2000/01/rdf-schema#subPropertyOf"> <rdfs:isDefinedBy rdf:resource="http://www.w3.org/ 2000/01/rdf-schema#"/> <rdfs:range rdf:resource="http:// www.w3.org/1999/02/22-rdf-syntax- ns#Property"/> <rdfs:domain rdf:resource="http:// </rdf:Property>
rdfs:range und rdfs:domain
Kernproperties (cont.) rdfs:label - Eigenschaft definiert die menschlesbare Version des Namens einer Ressource rdfs:comment - Eigenschaft enthält die menschlesbare Beschreibung einer Ressource, Anwendung: <rdfs:comment> Kommentar… </rdfs:comment>
Containerklassen Containervokabular wird optional von RDF zur Verfügung gestellt. rdfs:Container - Superklasse für RDF-Container rdfs:ContainerMembershipProperty - Unterklasse von rdfs:Property, hat als Instanzen rdfs:member und _1, _2, ..., _n rdf:List - Klasse der RDF-Listen, wird mit rdf:first, rdf:rest und rdf:nil benutzt
Container (cont.) rdf:Bag - Klasse ungeordneter Listen rdf:Seq - Klasse sequentieller Listen rdf:Alt - Klasse alternativer Listen Containerproperties: rdfs:member – Element eines Containers rdf:first, rdf:rest, rdf:nil – erstes Element einer Liste, Restliste und leere Liste
Statik von RDF-Schema Schemata sind statisch, Änderungen ziehen in der Regel Anpassungen vieler Dokumente nach sich Sind Änderungen erforderlich, wird ein neues Schema erforderlich, welches das alte erweitert, dies geschieht mit: <rdf:Description rdf:ID=”XY” rdfs:subClassOf= ”http://example.org/oldschema_XY”/>
Utitityklassen und -properties Utilityklassen und –properties modellieren RDF-Statements. rdf:Statement - Klasse repräsentiert Statements über Eigenschaften von Ressourcen und ist einzige Utilityklasse rdfs:seeAlso und rdfs:isDefinedBy – spezifizieren jeweils eine Ressource, die zusätzliche RDF-Informationen über ein Subjekt bereitstellt, rdfs:seeAlso ist allgemeiner als rdfs:isDefinedBy
Utilityproperties rdf:value – identifiziert den Wert einer Ressource rdf:subject – Eigenschaft repräsentiert das Subjekt eines Statements rdf:object – Eigenschaft repräsentiert das Objekt eines Statements rdf:predicate – Eigenschaft repräsentiert das Prädikat eines Statements Statement = {subject, object, predicate}
Hierarchien
IV. Beispiel #1 <rdf:RDF xml:lang=“de“ xmlns:rdf= “http://www.w3.org/1999/02/22-rdf-syntax-ns#“ xmlns:rdfs=“http://www.w3.org/2000/01/rdf-schema#“> <rdfs:Class rdf:ID=“Person“> <rdfs:comment> Die Klasse aller Personen. </rdfs:comment> <rdfs:subClassOf rdf:resource= “http://www.classtypes.org/useful_classes#Animal“/> </rdfs:Class>
Beispiel #1 (cont.) <rdf:Property ID=“Geburtsdatum“> <rdfs:range rdf:resource= “http://www.w3.org/2000/01/rdf-schema#Literal“/> <rdfs:domain rdf:resource=“#Person“/> </rdf:Property> <rdf:Property ID=“Alter“> <rdfs:subPropertyOf rdf:resource=“#Geburtsdatum“> “http://www.datatypes.org/useful_types#Integer“/>
Beispiel #1 (cont.) <rdf:Property ID=“statusPerson“> <rdfs:range rdf:resource=“#Status“/> <rdfs:domain rdf:resource=“#Person“/> </rdf:Property> <rdfs:Class rdf:ID=“Status“/> <Status rdf:ID=“Student“/> <Status rdf:ID=“Leiter“/> <Status rdf:ID=“Assistent“/> </rdf:RDF>
Beispiel #2 (Auszug) … <rdf:Description ID=“Fahrzeug“> <rdf:type resource=“http://www.w3.org/2000/01/... … rdf-schema#Class“/> <rdfs:subClassOf rdf:resource= “http://www.w3.org/2000/01/rdf-schema#Resource“/> </rdf:Description> <rdf:Description ID=“Personenkraftwagen“> rdf-schema#Class“/> <rdfs:subClassOf rdf:resource=“#Fahrzeug“/>
V. Ausblick Vorteile von RDF-Schema: RDF-Schema ist ein mächtiges Mittel des Semantic Web um strukturierte Informationen über Webseiten zu liefern RDF-Schema stellt zur Verfügung: Einschränkung von Eigenschaften Aggregation durch Container Emulation von Schnittstellen, Methoden Kardinalitäten von Klassen und mehr
Ausblick (cont.) Nachteile von RDF-Schema: Keine strikte Trennung der Abstraktionsschichten Problematische Rekursion zwischen rdfs:Class und rdfs:Resource Keine logischen Operatoren möglich RDF-Schema wird unübersichtlich -> Verwendung konkurrierender Metamodelle wie UML oder Topic Maps sollte in Betracht gezogen werden
Danke für die Aufmerksamkeit! Gibt es noch Fragen? Ende Danke für die Aufmerksamkeit! Gibt es noch Fragen?