Resource Description Framework
Das Resource Description Framework (RDF) ist eine Spezifikation für ein Modell zur Repräsentation von Metadaten (Informationen über Webseiten und andere Objekte), die erstmals 1999 vom World Wide Web Consortium vorgelegt wurde. Am weitesten verbreitet ist die Serialisierung von RDF in XML.
In Verbindung mit RDF-Schema und der Web Ontology Language (OWL) soll RDF als grundlegendes Format zur Repräsentation von Taxonomien und Ontologien - also formalen Vokabularen im Allgemeinen - dienen. Der Hauptanwendungsbereich von RDF ist das Semantic Web, das eine Erweiterung des bestehenden Webs mit maschineninterpretierbaren Inhalten darstellt. Konkrete Einsatzbereiche für RDF sind beispielsweise Content Syndication (RSS), Peer2Peer-Netzwerk-Applikationen (FOAF) oder auch Annotierungs-Frameworks (W3C Annotea Project).
Es kann zwischen dem RDF-Modell (RDF-Graph) und der RDF-Syntax (Serialisierung) unterschieden werden. Weiter gibt es die RDF Schema-Spezifikation, mit der eine Typisierung und Vererbung von Ressourcen und Eigenschaften definiert und die Gültigkeit von Ressourcen in Bezug auf Eigenschaften festgelegt werden kann.
RDF-Modell
Informationen sind in RDF in so genannten Statements abgelegt, das sind Aussagen in Form eines Tripel aus Subjekt, Prädikat und Objekt. Alle drei Bestandteile werden durch einen Universal Resource Identifier (URI) identifiziert und damit allgemein als Ressource (im englischen Resource) bezeichnet. Als Objekt einer Aussage sind auch Zeichenketten (Literal) möglich. Die Verknüpfung mehrerer Tripel lässt sich als ein gerichteter Graph mit Knoten- und Kantenbeschriftung verstehen, wobei Subjekt und Objekt eines Tripels Knoten und die Prädikate Kanten sind.
Folgende Grafik wurde mit dem W3C RDF Validator aus dem weiter unten angegebenen Beispiel erzeugt. Dargestellt sind zwei Tripel, mit dem selben Subjekt "http://de.wikipedia.org/RDF".
Die Besonderheit des RDF-Modells liegt zum einen darin, dass über die als Prädikat verwendeten Ressourcen (Properties) auch wiederum Aussagen getroffen werden können. Dadurch lassen sich Properties selbst mit RDF beschreiben und als Metadatenformat ablegen. Andere RDF-Angaben können diese Vokabulare durch Referenzierung weiterverwenden. Ein prominentes Beispiel dafür ist die Repräsentation von Dublin Core in RDF.
Zum anderen bilden in RDF Statements selber Ressourcen, auf die mit weiteren Statements verwiesen werden kann. Diese Technik der Aussagen über Aussagen wird als Reification bezeichnet.
Zusätzlich enthält RDF vordefinierte Datentypen für Listen und Mengen, um Gruppen von Ressourcen zusammenzufassen. Ressourcen, die keine explizite URI haben, sondern nur zur Gruppierung von anderen Objekten dienen, werden in der Regel durch so genannte "blank nodes" modelliert. Ein Beispiel dafür ist die Zuweisung eines Namens, der aus separaten Zeichenketten für Vor- und Nachnamen besteht.
RDF-Syntax
Das RDF Modell (der RDF-Graph) ist unabhängig von einer speziellen Darstellungsform. Am meisten verbreitet ist die Repräsentation in XML. Eine kürzere Syntax ist die von Tim Berners-Lee entworfene Notation 3 (N3). Für die Speicherung von RDF in Datenbanken und Datenstrukturen gibt es verschiedene Konzepte, da ein reines Ablegen der N-Tripel in einer Tabelle nicht sehr effizient ist.
Da sich die selben RDF-Aussagen in einer Syntax mitunter auf viele verschiedene Arten ausdrücken lassen, ist es sinnvoll zur Verarbeitung von RDF-Daten einen RDF-Parser zu verwenden, der auch die Validierung gegen ein RDF-Schema vornehmen kann.
Abfrage von RDF-Graphen
Zur Suche in RDF-Daten gibt es verschiedene Abfragesprachen. Ein Vergleich von diversen RDF-Abfragesprachen zeigt, dass die Standardisierung hier noch nicht sehr weit fortgeschritten ist.
Ein Vertreter einer RDF-Abfragesprache - welcher auch im Jena Framework verfügbar ist - ist die RDF Query Language (RDQL), welche der Form nach stark an SQL erinnert. Die prinzipielle Syntax ist:
SELECT {Liste von Variablen} WHERE {Vergleichsmuster zum Graphen} AND {Filter} USING {Namespace-Mappings}
Im folgenden Beispiel wird eine konkrete Abfrage gezeigt.
Beispiel
Die Aussage "http://de.wikipedia.org/RDF hat den Titel 'RDF' und den Herausgeber http://www.wikipedia.org/" (wobei Titel und Herausgeber nach Dublin Core definiert sind) wird in RDF mit zwei Tripeln ausgedrückt. In N3 (das has dient nur der besseren Lesbarkeit):
<http://de.wikipedia.org/RDF> has <http://purl.org/dc/elements/1.1/title> "RDF" . <http://de.wikipedia.org/RDF> has <http://purl.org/dc/elements/1.1/publisher> <http://www.wikipedia.org/> .
In RDF/XML lässt sich die Aussage so ausdrücken:
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/"> <rdf:Description rdf:about="http://de.wikipedia.org/RDF"> <dc:title>RDF</dc:title> <dc:publisher rdf:resource="http://www.wikipedia.org/"/> </rdf:Description> </rdf:RDF>
Nun soll auf dem oben gezeigten Graphen eine Abfrage mit RDQL durchgeführt werden, die herausfindet, wie der Titel einer vom Herausgeber http://www.wikipedia.org/ definierten Ressource lautet.
SELECT ?title WHERE (?res, <dc:publisher>, ?pub), (?res, <dc:title>, ?title) AND ?pub eq 'http://www.wikipedia.org/' USING rdf for <http://www.w3.org/1999/02/22-rdf-syntax-ns#>, dc for <http://purl.org/dc/elements/1.1/>
Im WHERE-Teil werden die Aussagen gematcht, die Herausgeber bzw. Titel-Eigenschaften besitzen. Im AND-Teil werden dann noch die Knoten herausgefiltert, deren Herausgeber-Wert eben das Literal http://www.wikipedia.org/ hat. Das Ergebnis ist eine Tabelle mit genau einem Eintrag (Bindung der Variable ?title) mit dem Wert RDF.
== Anwendung == RDF ist unter anderem eine Möglichkeit, Informationen über Dokumente im World Wide Web und andere Ressourcen zu repräsentieren. Diese Angaben über andere Informationen bezeichnet man als Metadaten. Dazu gehören beispielsweise Titel, Autor, Änderungsdatum, Casdfasdfasdfopyright und Lizenzinformationen oder die Verfügbarkeit eines Dokumentes.
Siehe auch: RSS
Weblinks
Literatur
- RDF Homepage beim W3C
- RDF Primer
- Shelley Powers: Practical RDF. O'Reilly, 2003
Siehe auch: Topic Maps