Einführung und Syntax
Die Abkürzung RDF steht für “Resource Description Framework” und behebt Unzulänglichkeiten bei XML.
Während XML als Baumstruktur organisiert ist, ist RDF nicht als Baumstruktur anzusehen, sondern als gerichteter
Graph.
Mit der Beschreibung von RDF können Daten intuitiv beschrieben werden. Zusätzlich können Informationen leicht an beliebigen Stellen integriert werden.
Ausdrucksmöglichkeiten
RDF lässt sich in verschiedenen Varianten Darstellen. So ist es möglich RDF in XML einzubetten (“RDF/XML”). Es ist jedoch auch möglich auf eine Einbettung in andere Markup-Sprachen zu verzichten und RDF in einer kompakten Schreibweise darzustellen, wie z.B. der Notation3(N3)
Während in XML die Darstellung von Aussagen wie, “John mag Marmorkuchen” (verhältnismäßig) schwierig durch die Baum-Struktur sind. Ist eine solche Aussage in RDF verhältnismäßig leicht dargestellt:
exampel.org/John
example.org/mag
example.org/Marmorkuchen
Die einzelnen Zeilen entsprechen dabei jeweils Subjekt, Prädikat und Objekt. Der gesamte Ausdruck wird als RDF-Tripel bezeichnet.
Ein Subjekt kann dabei eine URI sein oder leer, das Prädikat kann ausschließlich eine URI sein, ein Objekt hingegen kann aus einer URI bestehen oder leer sein oder einen speziellen Wert besitzen, einem sogenannten Literal (siehe bitloeffel.de).
Die Darstellung des Codes entspricht die eines einfachen gerichteten Graphens, Subjekt und Prädikat sind dabei Knoten, das Prädikat die Kante die die beiden Knoten verbindet.
Beispiele
Es gibt auch einige Konstrukte um die Notation abzukürzen, z.B. durch sogenannte Präfixe:
@prefix prfx: .
prfx:Fabian prfx:mag prfx:Marmorkuchen.
Ein Präfix wird definiert durch @prefix gefolgt von dem Präfixbezeichner einem Doppelpunkt und der entsprechenden URI. Wobei die URI in eckigen Klammern steht. Die Aussage wird mit einem Punkt abgeschlossen.
Danach kann der definierte Präfix beliebig oft verwendet werden. Um den Präfix zu verwenden wird einfach der Präfix gefolgt von einem Doppelpunkt und dem Rest der URI verwendet. Um diesen Ausdruck brauchen keine eckigen Klammern mehr gesetzt werden.
RDF-Tripel können nicht nur durch Präfixe vereinfacht werden. So ist es auch denkbar, dass in einem RDF-Dokument ein Subjekt öfter als einmal benötigt wird. In diesem Fall ließen sich verschiedene RDF-Tripel mit einem Subjekt zusammenfassen.
@prefix prfx: .
prfx:John prfx:mag prfx:Marmorkuchen;
prfx:studiertIn prfx:Passau;
prfx:mag prfx:Blaubeerpfannkuchen .
Statt der ausgeschriebenen Version:
@prefix prfx: .
prfx:John prfx:mag prfx:Marmorkuchen .
prfx:John prfx:studiertIn prfx:Passau .
prfx:John prfx:mag prfx:Blaubeerpfannkuchen.
Die Unterschiede zwischen den Fassungen sind marginal. So wird nur bei dem ersten RDF-Tripel das Subjekt genannt. Statt die Aussage jetzt mit einem Punkt zu beenden wird das Semikolon eingeführt. Die Aussage wird erst mit dem letzten RDF-Tripel beendet. Die Zeilen-Einrückungen der verkürzten Fassung sind nur zur Verdeutlichung und können ebenso weggelassen werden, ohne einen Semantikverlust zur Folge zur haben.
Auch komplexere Sachverhalte lassen sich mittels RDF ausdrücken. So ist es gegeben falls nicht immer gewünscht an die Form von “Subjekt”, “Prädikat” und “Objekt” gebunden zu sein. Bei Rezepten ist es beispielsweise nötig zu jedem Rezept eine Zutat mit einer bestimmten Menge zuzuordnen. In RDF kann man diesen Sachverhalt ausdrücken in dem man leere Knoten einführt.
@prefix prfx: .
@prefix xmls: .
prfx:Blaubeerpfannkuchen prfx:bestehtAus
( _:exn1 _:exn2 _:exn3 _:exn4) .
_:exn1 prfx:istZutat prfx:Milch;
prfx:mengeInMl "250"^^xmls:integer .
_:exn2 prfx:istZutat prfx:Mehl;
prfx:mengeInG "150"^^xmls:integer .
_:exn3 prfx:istZutat prfx:Blaubeeren;
prfx:mengeInG "350"^^xmls:integer .
_:exn4 prfx:istZutat prfx:Eier;
prfx:mengeInStk "4"^^xmls:integer .
prfx:Blaubeeren
prfx:Saison "Sommer, Herbst";
prfx:Region "Mitteleuropa".
Leere Knoten können mit _:bezeichner “erstellt” werden. Durch
prfx:Blaubeerpfannkuchen prfx:bestehtAus
( _:exn1 _:exn2 _:exn3 _:exn4) .
wird der Sachverhalt
prfx:Blaubeerpfannkuchen prfx:bestehtAus _:exn1 .
prfx:Blaubeerpfannkuchen prfx:bestehtAus _:exn2 .
(...)
abgekürzt.
Zusätzlich werden hier Literale verwendet, wie sie im XML-Schema des W3Cs vorgesehen wurden. Dazu wird der Wert an entsprechender Stelle in doppelte Anführungszeichen gesetzt. Falls der Datentyp ein einfacher String seien soll muss nun kein Datentyp angegeben werden. Andernfalls empfiehlt sich die explizite Angabe des Datentyps.
Aussagen lassen sich wie zuvor erwähnt auch als RDF/XML darstellen:
Für diese Darstellung wird im Vergleich zur Notation3 erheblich mehr Quelltext benötigt. Jedoch lässt sich RDF/XML aufgrund der breiten Softwareunterstützung verhältnismäßig leicht verarbeiten.