RDF und RDF Schema

Kirsten Albrecht <3albrech@informatik.uni-hamburg.de>

Roland Illig <1illig@informatik.uni-hamburg.de>

Zusammenfassung

RDF in Verbindung mit RDF-Schema ist eine Möglichkeit, Informationen zwischen beliebigen Dingen darzustellen. Es basiert auf einer einfachen Aussagenform. Mehrere Aussagen können zu komplexen Gebilden zusammengefaßt werden. Das Ziel ist, eine maschinelle Verarbeitung von Informationen im Internet zu ermöglichen.

Probleme des HTML-basierten Webs

Das heutige World Wide Web (WWW) besteht größtenteils aus Textdokumenten und Bildern, die lose zu Webseiten zusammengefügt sind. Es ist eine riesige Datensammlung, die von Menschen genutzt wird, um aus diesen Daten Informationen zu interpretieren und zu verarbeiten. Dies ist eine sehr zeitaufwendige Arbeit, die bei der aktuellen Datenmenge des Internets nicht mehr durch Menschen zu bewältigen ist. Da nur der Aufbau von Dokumenten, nicht aber ihr Inhalt durch die Sprache HTML beschrieben wird, kann der Inhalt nicht machinell verarbeitet werden, ohne daß sehr viele Fehler dabei auftreten.

Lösungsversuch durch XML

Da sich mit HTML nur wohlstrukturierte, einfache Dokumente vernünftig beschreiben lassen, ist ein erster Schritt, eine allgemeinere Beschreibungssprache zu wählen. Hier bietet sich XML an, da sich damit nicht nur Dokumente in eine schriftliche Form bringen lassen, sondern prinzipiell „alles“ beschreiben. Da XML erstmal nicht auf die Darstellung von Textdokumenten ausgerichtet ist, kann man hier leichter den Text des Dokuments von der Darstellung trennen. Das ist mit traditionellem HTML nur schwer möglich und wird praktisch auch nur selten so streng getrennt, wie es wünschenswert wäre.

Eine große Einschränkung von HTML ist, daß es nur wenige definierte Tags gibt, und daß der Benutzer die Sprache nicht einfach erweitern kann. Die Einschränkung gibt es bei XML nicht. Allerdings führt dies auch wieder zu einem Nachteil: Es kann durchaus vorkommen, daß zwei XML-Dokumente die gleiche Bedeutung haben, dies aber für eine Maschine nicht ersichtlich ist. Dafür kann es mehrere Gründe geben:

Die Dokumente können in verschiedenen Sprachen formuliert sein,

Tags können in einem Fall Attribute enthalten, im anderen Fall Untertags,

Tags mit gleicher Semantik können unterschiedlich benannt sein, z. B. <Buch> und <buch>, da XML zwischen Groß­ und Kleinschreibung unterscheidet.

Dazu kommt, daß man mit XML nur Sachverhalte ausdrücken kann, die sich hierarchisch anordnen lassen. Querbezüge aller Art sind von XML nicht vorgesehen. Sie müssten vom interpretierenden Programm zuerst als solche erkannt und dann verarbeitet werden. Das wäre aber eine Zusatzfunktion, die sich nicht im XML-Standard wiederfindet.

Klärung der Syntax durch XML­Schema

Damit die XML-Dokumente verschiedener Organisationen untereinander ausgetauscht und korrekt interpretiert werden können, bedarf es also einer Einigung über das Datenformat. Diese Einigung wird von XML-Schema bereitgestellt. (Über den Inhalt definieren sowohl XML als auch XML-Schema nichts, er bleibt also weiterhin unklar.) Ein XML­Schema-Dokument definiert, welche Tags in einem XML-Dokument erlaubt sind, welche Attribute sie haben dürfen und welche Tags innerhalb dieser Tags erlaubt sind.

Was XML­Schema allerdings nicht leistet, ist eine Definition der Bedeutung. Nehmen wir als Beispiel das Element <preis>. Es soll ein Attribut vom Typ „Währung“ und eins vom Typ „Zahl“ enthalten. Es stellt sich nun die Frage, zu welcher Zeit dieser Preis gültig war und was genau er enthält. Bei einem Buch in einem Internetshop ist zum Beispiel relevant, ob die Versandkosten enthalten sind, ob irgendwelche Zölle den Preis erhöhen, u. s. w.

Deﬁnition der Semantik durch RDF

Diesen Mangel an Bedeutung soll das Resource Description Framework (RDF) beheben. RDF stellt eine Infrastruktur bereit, mit deren Hilfe man Aussagen über beliebige Objekte (in RDF Ressourcen genannt) machen kann. Diese Aussagen können das Objekt selbst betreffen oder aber auch eine Verbindung zu einem anderen Objekt herstellen.

Auch wenn RDF primär im Internet verwendet wird, sind die Ressourcen keineswegs nur auf das Internet beschränkt. Sie können wirklich alles beschreiben, was sich Menschen nur ausdenken können. (Und noch viel mehr.)

Eine Aussage in RDF wird als Statement bezeichnet. Es sieht aus wie ein einfacher Satz der Umgangssprache: Subjekt, Prädikat, Objekt. Das Subjekt ist eine zu beschreibende Ressource, das Prädikat liefert den Typ der Beschreibung und das Objekt enthält schließlich den Wert. Ein Beispiel wäre „Otto“ „hat eine Tochter“ „Mary“. „Otto“ ist in diesem Fall das Subjekt, „hat eine Tochter“ das Prädikat und „Mary“ das Objekt.

Für die einzelnen Teile eines Statements gelten Einschränkungen. Das Subjekt muß eine Ressource sein und das Objekt kann entweder eine Ressource oder ein Literal sein. Ein Literal ist so etwas wie ein unbenanntes Objekt. Es hat nur einen Wert, aber keinen Namen. Über Literale kann man keine weiteren Aussagen machen, bei Ressourcen ist dies durch weitere Statements möglich.

RDF ist zunächst ein völlig abstraktes Modell, um Dinge zu beschreiben. Es hat deswegen auch keine definierte Syntax, sonder überläßt die Wahl der Schreibweise dem Benutzer. Für verschiedene Benutzerklassen gibt es verschiedene Sprachen, um RDF zu notieren.

Die Darstellung als Graphen ist für komplizierte Gebilde und einen menschlichen Betrachter angemessen, damit er sich ein Bild von der Gesamtsituation machen kann. Wenn eine Ansammlung von Statements schriftlich festgehalten werden soll, eignet sich die Sprache N3 („Notation 3“) dafür, da sie den Schreibaufwand auf ein Minimum reduziert. Für die Verarbeitung durch Maschinen ist XML eine geeignete Sprache, da sie eine leicht interpretierbare Syntax besitzt und für die internationale Verwendung geeignet ist (durch die Verwendung von Unicode)

Wir behandeln im folgenden nur XML als Schriftsprache, da sie bei der Erstellung von Dokumenten im Internet verbreiteter ist als N3 und außerdem mit XML­Schema eine Möglichkeit bereitstellt, mit der gleichen Syntax auch die Metadokumente (also die Dokumente, die die Bedeutung der benutzten RDF-Sprachelemente genauer beschreiben) zu formulieren.

Beispiel:

<rdf:Description rdf:about="StudentenKochbuch">

<autor rdf:resource="HeinzOtto"/>

<titel>Studentenkochbuch</titel>

</rdf:Description>

Hier wird eine Ressource mit dem Namen „StudentenKochbuch“ beschrieben, die die Eigenschaft „autor“ hat. Dieser Eigenschaft ist eine weitere Ressource „HeinzOtto“ zugeordnet. Der Titel des Buches ist ein Literal, dessen Wert „Studentenkochbuch“ ist.

Weltweit eindeutige Bezeichner

Damit eine beschriebene Ressource nicht mit zwei unterschiedlichen Namen versehen werden kann, soll jede Ressource einen weltweit eindeutigen Bezeichner haben. Hierfür kann man sich verschiedene Verfahren ausdenken. Die Namen sollten nicht zu lang sein, menschenverstehbar und machinenlesbar. Ein mögliches Verfahren, das in der Praxis ausschließlich benutzt wird, sind URIs (RFC 2396). Sie bestehen im Regelfall aus einem Zugriffsschema (z. B. http, ftp), gefolgt von einem Doppelpunkt und dem Rest, der abhängig vom Zugriffsschema ist.

Für RDF werden meistens URIs der Form http://rechner/pfad verwendet, da die URLs, eine Untermenge der URIs, schon weltweit im Internet benutzt werden, um Dokumente eindeutig zu bezeichnen. Da das „Semantic Web“ möglichst viele Informationen für Maschinen bereitstellen möchte, versucht man, auf die schon vorhandene Infrastruktur des Internets aufzubauen. Ein großer Vorteil daran, URLs zu benutzen, ist, daß sie schon durch ihren Namen einen Hinweis geben, wie eine Maschine an die Daten hinter dem Name der Ressource gelangt.

Komplexere Beziehungen

Wir haben nun eine Sprache RDF definiert, mit der wir Aussagen über beliebige Dinge unserer Welt treffen können. Diese Dinge können wir eindeutig benennen, damit Aussagen, die sich auf die selbe Ressource beziehen, auch als solche deutlich werden. Interessant wird es aber erst, wenn wir mehrere Aussagen über Ressourcen kombinieren, um auch Beziehungen zwischen den einzelnen Ressourcen darzustellen.

http://www.books.com /isbn2938784633 http://www.autoren.de /HeinzOtto 24 € Studentenkochbuch Heinz Otto titel autor name preis

In diesem Beispiel wird ein Buch beschrieben, das durch den Name „http://www.books.com/isbn2938784633“ eindeutig benannt ist. Der Name könnte auch ein Hinweis sein, unter welcher Internetadresse man weitere Informationen zu diesem Buch findet. (In diesem Fall haben wir uns die Adresse willkürlich ausgesucht.) Über drei Statements ist es mit zwei Literalen (dem Preis „24 €“ und dem Titel „Studentenkochbuch“) und einer weiteren Ressource (dem Autor mit dem Bezeichner „http://www.autoren.de/HeinzOtto“) verbunden. Der Autor wiederum bekommt durch das vierte Statement in diesem Beispiel den Name „Heinz Otto“ zugewiesen.

In der graphischen Darstellung entspricht eine Ellipse einer Ressource, die Rechtecke stellen Literale dar. Ein Pfeil stellt ein Prädikat dar. An der Pfeilspitze ist das Objekt, am anderen Ende das Subjekt.

Grenzen von RDF

Wir haben jetzt zwischen dem „Studentenkochbuch“ und „Heinz Otto“ eine Beziehung hergestellt, aber mehr ist für eine Maschine noch nicht erkennbar. Es ist weder klar, um was für eine Art von Beziehung es sich hier handelt, noch können genauere Aussagen getroffen werden, worum es sich bei dem „Studentenkochbuch“ und „Heinz Otto“ handelt.

Hier kommt RDF-Schema ins Spiel. RDF-Schema stellt ein Standardvokabular zur Vergügung, um Ressourcen zu „typisieren“, das heißt, ihre generellen Eigenschaften genauer festzulegen. Mit RDF-Schema kann man zum Beispiel ausdrücken, daß jeder Autor auch ein Mensch ist (präziser: Man kann die Klasse der Autoren als Unterklasse der Menschen definieren).

Auch bei den Prädikaten kann man eine solche Beziehung definieren. Man kann bei Prädikaten auch festlegen, auf welche Klassen von Ressourcen es anwendbar ist und welche Werte für die Eigenschaft in Frage kommen.

Das geschieht, indem man einem Prädikat eindeutig benennt. Dann kann man über das Prädikat RDF-Statements formulieren, die den Definitions- und Wertebereich des Prädikats auf sinnvolle Bereiche einschränken. Beispielsweise kann man für das Prädikat „ist_geschrieben_von“ festlegen, daß als Objekte nur Autoren in Frage kommen und nicht etwa eine Heizung.

titel rdf:type rdf:type rdfs:domain rdfs:range rdf:type rdf:Property ist_geschrieben_von Autor Buch name ist_geschrieben_von Heinz Otto Studentenkochbuch http://www.autoren.de /HeinzOtto http://www.books.com /isbn2938784633

Hier haben wir eine graphische Darstellung eines komplexeren Sachverhalts. die grau dargestellten Elemente können mit RDF alleine dargestellt werden. Für die Beschreibung der Beziehung „ist_geschrieben_von“ benötigt man RDFS. Alle für diese Beschreibung relevanten Elemente sind in lila dargestellt.

Das Prädikat „ist_geschrieben_von“ ist vom Typ „rdf:Property“. Die Subjekte müssen vom Typ „Buch“ sein, die Objekte vom Typ „Autor“.

Beispiel für die Codierung von Statements in XML

Um die Verbindung zwischen RDF und XML nicht ganz zu vernachlässigen, kommt jetzt ein Beispiel, in dem der Graph aus dem vorherigen Beispiel in XML dargestellt wird. Es beginnt mit einem XML­Schema-Dokument, in dem die Klassen der Objekte und die Beziehungen zwischen den Klassen festgelegt werden.

<rdf:RDF 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="Mensch">

<rdfs:comment>Klasse aller Menschen</rdfs:comment>

</rdfs:Class>

<rdfs:Class rdf:ID="Autor">

<rdfs:comment>Klasse aller schreibenden Menschen</rdfs:comment>

<rdfs:subClassOf rdf:resource="#Mensch"/>

</rdfs:Class>

<rdfs:Class rdf:ID="Buch" />

<rdf:Property rdf:ID="ist_geschrieben_von">

<rdfs:domain rdf:resource="#Buch"/>

<rdfs:range rdf:resource="#Autor"/>

</rdf:Property >

<rdf:Property rdf:ID="hat_den_Titel">

<rdfs:domain rdf:resource="#Buch"/>

<rdfs:range rdfs:resource="&rdfs;Literal"/>

</rdf:Property>

<rdf:Property rdf:ID="heisst">

<rdfs:domain rdf:resource="#Autor"/>

<rdfs:range rdfs:resource="&rdfs;Literal"/>

</rdf:Property>

</rdf:RDF>

In diesem Schemadokument werden drei Klassen definiert: Mensch, Autor und Buch. Dabei ist „Autor“ eine Unterklasse von „Mensch“, d. h. jeder Autor ist automatisch ein Mensch. Weiter wird eine Beziehung zwischen einem Buch und einem Autor definiert. Eine weitere Beziehung „hat_den_Titel“ wird für ein Buch definiert, und der Wertebereich dieser Beziehung ist ein Literal, wie es im RDFS-Standard definiert ist.

Diese Definitionen kann man nun in einem Instanzdokument verwenden, um bestimmte Bücher und deren Autoren zu beschreiben.

<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#"

xmlns:lit="http://unsereseite.de/literatur.rdf#">

<lit:Buch rdf:about="http://www.books.com/isbn2938784633">

<lit:hat_den_Titel>Studentenkochbuch</lit:hat_den_Titel>

<lit:ist_geschrieben_von rdf:resource="http://unsereseite.de/Heinz"/>

</lit:Buch>

<lit:Autor rdf:about="http://unsereseite.de/Heinz">

<lit:heisst>Heinz Otto</lit:heisst>

</lit:Autor>

</rdf:RDF>

Im ersten Tag werden Informationen über dieses Dokument definiert: Die erste Zeile bedeutet, daß die Informationen in diesem Dokument auf Deutsch verfaßt sind. Danach folgen die XML-Namensräume, die in diesem Dokument benutzt werden, jeweils mit ihrer Abkürzung. Alle Tags, die im folgenden mit „lit:“ beginnen, sind also im Dokument mit dem URI „http://unsereseite.de/literatur.rdf“ definiert.

Der zweite Abschnitt beschreibt das Buch mit dem URI „http://www.books.com/isbn2938784633“. Es hat einen Titel und einen Autor, die in den folgenden Tags beschrieben werden. Der Titel ist ein Literal, der Autor ist eine Ressource.

Im dritten Abschnitt wird der Autor „Heinz“ näher definiert. Sein Name ist auch ein Literal.

Zusammenfassung

RDF und RDF-Schema sind ein Modell, in dem man einfache Beziehungen zwischen beliebigen Objekten ausdrücken kann. Zur Darstellung kann man graphische Modelle oder auch textuelle Sprachen wie XML oder N3 benutzen.

Was kann RDF mit RDF-Schema nicht?

Es gibt keine Möglichkeit, disjunkte Mengen zu formulieren. Man kann zum Beispiel nicht ausdrücken, daß ein „Buch“ kein „Mensch“ ist.

Es gibt kein Konzept der Mehrfachvererbung, das heißt, die Klasse kann nicht Unterklasse von mehr als einer Klasse sein, es sei denn, alle Oberklassen stehen selbst in der Beziehung „isSubclassOf“.

Negierte Aussagen wie „Heinz ist kein Buch“, „Mary ist nicht die Tochter von Heinz“ können nicht formuliert werden. Der Grund dafür ist, daß prinzipiell jeder Aussagen über Ressourcen zum Datenbestand hinzufügen kann.

Quellenverzeichnis

http://w3.org/

Die offizielle Webseite zu RDF und RDFS

http://sws.mcm.unisg.ch/docs/semantic_web_2205a.pdf

Eine Einführung der Universität St. Gallen in RDF und RDFS

(Irgendein Buch aus der Unibibliothek)

Enthält einen netten einführenden Artikel gleich am Anfang

Bemerkungen

Es ist uns nicht gelungen, zu sagen, welcher Teil von wem gemacht wurde, da wir uns gemeinsam vorbereitet haben und bei dieser Vorbereitung die Folien und dieses Dokument entstanden sind.

Seite 8 von 8

2003-11-04T15:57:10