# Resource Description Framework

Das Resource Description Framework (RDF, engl. sinngemäß „System zur Beschreibung von Ressourcen“) bezeichnet eine technische Herangehensweise im Internet zur Formulierung logischer Aussagen über beliebige Dinge (Ressourcen). Ursprünglich wurde RDF vom World Wide Web Consortium (W3C) als Standard zur Beschreibung von Metadaten konzipiert. Mittlerweile gilt RDF als ein grundlegender Baustein des Semantischen Webs. RDF ähnelt den klassischen Methoden zur Modellierung von Konzepten, wie UML-Klassendiagramm und Entity-Relationship-Modell. Im RDF-Modell besteht jede Aussage aus den drei Einheiten Subjekt, Prädikat und Objekt, wobei eine Ressource als Subjekt mit einer anderen Ressource oder einem Wert (Literal) als Objekt näher beschrieben wird. Mit einer weiteren Ressource als Prädikat bilden diese drei Einheiten ein Tripel („3-Tupel“). Um global eindeutige Bezeichner für Ressourcen zu haben, werden diese dafür nach Konvention analog zu URL geformt. URL für allgemein häufig benutzte Beschreibungen, wie z. B. für Metadaten, sind RDF-Entwicklern bekannt, und können so weltweit für den gleichen Zweck verwendet werden, was u. a. Programmen ermöglicht, die Daten wiederum für den Menschen sinnvoll darzustellen.

## RDF-Modell

Das RDF-Modell ist ein Datenmodell mit einer wohldefinierten formalen Semantik, das auf gerichteten Graphen basiert. Daten in RDF sind Aussagen über Ressourcen. Diese Aussagen werden dabei als Tripel modelliert. Die Menge der Tripel bildet einen (mathematischen) Graphen und wird als RDF-Modell bezeichnet. Das Tripel im RDF-Modell ist eine Aussage, die aus Subjekt, Prädikat und Objekt besteht.

### Beispiel

Das Tripel stellt eine Aussage dar, in der Subjekt und Objekt miteinander in Beziehung (Relation) gesetzt sind. Beziehungen sind vom Subjekt zum Objekt gerichtet und mit dem Prädikat benannt. Tripel, die sich auf dieselben Subjekte bzw. Objekte beziehen, bilden ein semantisches Netz, das häufig tabellarisch oder graphisch dargestellt wird. Anschaulich gesprochen ist jede Aussage in RDF ein einfacher Satz. Etwa:
    „ACME produziert Batterien“
Übertragen auf die Modellierung mittels RDF:
* Subjekt = ACME
* Prädikat = produziert
* Objekt = Batterien
In folgender Beispieltabelle (ergänzt um weitere Aussagen) bildet jede Zeile ein Tripel:
| Subjekt | Prädikat | Objekt |
| ACME | produziert | Batterien |
| Batterien | enthalten | Säure |
| Batterien | enthalten | Zink |
| ACME | ist | eine Firma |

### Ressource, URI und Literal

Eine Ressource ist etwas, das eindeutig bezeichnet ist und worüber man etwas aussagen möchte. Subjekt und Prädikat sind immer Ressourcen. Das Objekt kann entweder eine Ressource oder nur ein Literal sein. Literale sind dabei Zeichenketten, die unter Umständen noch anhand eines angegebenen Datentyps interpretiert werden. Als Literale lassen sich z. B. Wahrheitswerte, Zahlen oder Datumsangaben spezifizieren. RDF-Ressourcen werden durch eindeutige Bezeichner (URIs) identifiziert. Die URIs erlauben es, Aussagen aus verschiedenen Quellen zu verbinden. Meist werden die Ressourcen mit einer URI bezeichnet, die von der Form her einer URL ähnelt. URLs sind spezielle URIs, die dazu dienen, Webseiten eindeutig zu bezeichnen. URIs müssen nicht zwangsläufig im Netzwerk erreichbar sein.
Beispiele:
* URI der Webseite zu diesem Artikel: http://de.wikipedia.org/wiki/Resource_Description_Framework
* URI einer Mailadresse: mailto:123@example.com
* URI eines Buches: urn:isbn:978-3898530194
Über die als Prädikat verwendeten Ressourcen lassen sich wiederum in RDF Aussagen treffen und als Metadatenformat ablegen. Andere RDF-Autoren können diese Vokabulare durch Referenzierung weiterverwenden. Ein prominentes Beispiel dafür ist die Repräsentation von Dublin Core in RDF. Zum anderen bilden RDF-Statements selbst Ressourcen, auf die mit weiteren Aussagen verwiesen werden kann. Diese Technik der Aussagen über Aussagen wird als Reifikation bezeichnet.
Zusätzlich hält RDF vordefinierte Datentypen für Listen und Mengen bereit, um Gruppen von Ressourcen zusammenzufassen. Ressourcen, die keinen expliziten URI haben, sondern nur zur Gruppierung von anderen Objekten dienen, werden in der Regel durch sogenannte „blank nodes“ modelliert. Ein Beispiel dafür ist die Zuweisung eines Namens, der aus separaten Zeichenketten für Vor- und Nachnamen besteht.

### Repräsentation

RDF ist unabhängig von einer speziellen (textuellen) Repräsentation. Üblich ist XML sowie eine kürzere Syntax namens Notation 3 (N3). Das W3C hat im Jahr 2011 zusätzlich die Sprache Turtle definiert, die eine reduzierte Teilmenge von N3 darstellt und damit zu einer größeren Verbreitung beitragen soll.
Für die Speicherung von RDF in Datenbanken und Datenstrukturen gibt es verschiedene Konzepte (Triplestore), da ein reines Ablegen der Tripel in einer relationalen Tabelle nicht sehr effizient für viele Abfragen ist.
RDF-Tripel werden auch graphisch dargestellt: Nach Konvention werden Ressourcen, die Subjekt oder Objekt eines Tripels sind, durch Ellipsen und Literale durch Rechtecke symbolisiert. Die Verbindung zwischen einem Subjekt und einem Objekt wird durch eine gerichtete Kante, die mit dem Prädikat beschriftet ist, dargestellt. Die folgende Abbildung folgt dieser Konvention und zeigt „http://de.wikipedia.org/wiki/Resource_Description_Framework“. Der abgebildete RDF-Graph sagt aus, dass die Ressource – in diesem Fall der vorliegende Artikel – einen Titel namens „Resource Description Framework“ hat und einen Publisher, die „Wikipedia“. Diese ist in dem Beispiel lediglich als Literal modelliert und kann somit nicht weiter spezifiziert werden.

### Abfragen

Zur Suche in RDF-Daten wurden verschiedene Abfragesprachen entworfen. Die RDF Query Language (RDQL) erinnert der Form nach stark an SQL. Im Januar 2008 hat das W3C SPARQL als W3C Recommendation verabschiedet und damit quasi zum Standard für RDF-Anfragesprachen gemacht, weshalb es für SPARQL auch viele Implementierungen gibt.
Als Beispiel sei folgende Beschreibung über den aktuellen Artikel gegeben, wobei Titel und Herausgeber nach Dublin Core definiert sind: ‚http://de.wikipedia.org/wiki/Resource_Description_Framework‘ hat den Titel ‚Resource Description Framework‘ sowie den Herausgeber ‚Wikipedia – Die freie Enzyklopädie‘. In RDF (N3) wird dies mittels zwei Tripeln ausgedrückt (das has dient hier nur der besseren Lesbarkeit):
Eine Anfrage, die herausfindet, wie der Titel einer vom Herausgeber „Wikipedia – Die freie Enzyklopädie“ definierten Ressource lautet, könnte in SPARQL wie folgt aussehen:
Das Ergebnis ist eine Tabelle mit genau einem Eintrag (Bindung der Variable ?title) mit dem Wert Resource Description Framework.

## Geschichte

Als Vorläufer von RDF kann das Meta Content Framework (MCF) in XML gelten, eine Sprache, die 1995–1997 von Ramanathan V. Guha entwickelt und nach seinem Wechsel zu Netscape im Juni 1997 beim W3C eingereicht wurde. Im Rahmen der Browserkriege war MCF auch eine Reaktion auf das Channel Definition Format von Microsoft. Anstatt MCF den Vorzug zu geben, entschloss man sich beim W3C, eine allgemeine Sprache zur Formulierung von Metadaten zu entwickeln, die den Namen RDF tragen sollte. Der erste RDF-Standard wurde im August 1997 als Entwurf vorgelegt und im Februar 1999 als Empfehlung veröffentlicht. Ab 1999 wurde mit der Entwicklung von RDF-Schema begonnen.
Die Empfehlung von 1999 wurde 2004 durch eine Reihe von sechs Spezifikationen ersetzt:
* "The RDF Primer",
* "RDF Concepts and Abstract",
* "RDF/XML Syntax Specification (revised)",
* "RDF Semantics",
* "RDF Vocabulary Description Language 1.0" und
* "The RDF Test Cases".
Diese Reihe wurde 2014 durch die folgenden sechs "RDF 1.1"-Dokumente abgelöst:
* "RDF 1.1 Primer",
* "RDF 1.1 Concepts and Abstract Syntax",
* "RDF 1.1 XML Syntax",
* "RDF 1.1 Semantics",
* "RDF Schema 1.1" und
* "RDF 1.1 Test Cases".