Resource Description Framework ist eine neue Sprache, die im Web und in Job-Anzeigen vermehrt auftaucht. Diese Web-Sprache haben wir uns einmal angeschaut.
Bei der Programmierung von HTML-Dateien werden sie meistens zuletzt geschrieben: META-Tags. Diese Tags haben zwar (normalerweise) auf das Aussehen und Verhalten einer Seite keine direkte Auswirkung, dienen aber Suchmaschinen als Hilfe. Der Lohn für die Mühe: die Seite wird besser platziert - oder auch nicht. Kein Wunder also, das sich schon fast eine kleine Industrie auf die Optimierung von Seiten für Suchmaschinen spezialisiert hat. Erst kürzlich hat sich ein solcher Optimierer jämmerlich beklagt, weil Google nicht einfach die Funktionsweise seiner Suchmaschine ausplaudert.
Aber auch außerhalb von Suchmaschinen ist eine genaue Beschreibung einer Seite nur vorteilhaft. Das Problem beginnt, wenn ein externes Programm die Seite auswerten möchte. Es ist schlicht unmöglich, ohne eine künstliche Intelligenz eine aussagekräftige Beschreibung zusammenzustellen. Der Computer hat eben kein Textverständnis und deswegen gibt es META-Beschreibungen, die externen Programmen eine Beschreibung liefern. Etabliert haben sich zwei Angaben:
<meta name="description" value="Eine lange Beschreibung"> <meta name="keywords" value="Atari, Jaguar, 8-Bit, XL, XE">
Damit lässt sich zwar eine Menge über eine Seite ausdrücken, aber eben nicht alles. Eine weitere Angabe ist "Author":
<meta name="author" value="st-computer">
Hier kommen schon erste Schwierigkeiten auf, denn bei einem Buch gibt es beispielsweise nicht nur den Autor, sondern auch Übersetzer, Verlag und eventuell andere Personen, die Rechte halten. Für viele Angaben, die das Urheberrecht betreffen, gibt es keine standardisierten META-Tags. Das macht die Verwendung von HTML als Archivierungssprache für elektronische Dokumente eher ungeeignet. Natürlich gibt es zahlreiche Vorschläge für erweiterte META-Tags, unter anderem von der Dublin Core-Gruppe.
Die Vorschläge von dieser Gruppe kamen zu einer Zeit, als XML schon groß im kommen war. Da die META-Tags alleine den Anforderungen nicht mehr gewachsen waren, wurde gleich eine neue Sprache aufgesetzt, auf XML basierend und erheblich flexibler: RDF.
RDF wurde entwickelt, um eine gemeinsame Basis für Meta-Beschreibungen verschiedener Sprachen zu erhalten. Die verschiedenen Dateiformate verwendeten bisher auch verschiedene Arten, Daten wie den Autor, Kurzbeschreibung etc. unterzubringen. RDF bietet in diesem Punkt eine einheitliche Syntax. Da XML modular aufgebaut ist, kann eine Beschreibung in RDF problemlos in jede andere auf XML basierende Sprache eingebettet werden. Daher kann eine Grafik im SVG-Format genauso beschrieben werden wie eine XHTML-Datei.
Damit könnte also eine Suchmaschine oder eine andere Anwendung Grafiken genauso indexieren wie ein Textdokument, eine Tabelle oder eine Datenbank. Selbst wenn es das Dateiformat nicht kennt, kann es die RDF-Beschreibung lesen.
Gleichzeitig ist es in RDF möglich, Beschreibungen für verschiedene Sprachen einzubauen.
Die erste Zeile gebührt der verwendeten XML-Version:
<? xml version="1.0" ">
Der Namespace ("Namensraum") definiert, woher die erlaubten Namen kommen. XML-Parser sind für gewöhnlich sehr streng, zudem ist es für größere Projekte nicht unpraktisch, eine Liste der erlaubten Eigenschaften zu haben.
<RDF xmlns = "http://w3.org/TR/1999/PR-rdf-syntax-19990105#" xmlns:DC = "http://purl.org/DC#">
Wenn Sie beide Adressen einmal im Browser eingeben, wird allerdings nicht irgendeine technische Definition angezeigt, sondern eine ganz normale Internet-Seite. Auf beiden Seiten werden zwar auch die erlaubten Elemente erwähnt, aber in einer für einen Computer kaum verständlichen Weise. Wie bekommt also der XML-Parser eine Liste der erlaubten Elemente? Gar nicht, denn die Namespaces sind lediglich dazu gedacht, Hinweise zu geben, wo Beschreibungen zu finden sind. Theoretisch könnte also statt purl.org/DC# auch yahoo.de, st-computer.net oder sonst irgendeine URL angegeben werden, denn der XML-Parser wird das Dokument nur auf syntaktische Korrektheit überprüfen. Die erste Namespace-Angabe zeigt auf die RDF-Spezifikation des W3C, die zweite auf die Webseite von Dublin Core.
<Description about = "http://www.st-computer.net/"> <DC:Title>st-computer</DC:Title> <DC:Creator>Redaktion st-computer</DC:Creator> <DC:Date>2000-30-01</DC:Date> <DC:Subject>Atari, st-computer, News</DC:Subject> </Description> </RDF>
<Description> gehört zur RDF-Sprache, das about-Attribut legt fest, auf welche Seite sich die Beschreibung bezieht.
Die folgenden vier Zeilen entstammen den Dublin Core-Empfehlungen. Da deren Namespace vorher mit xmlns:DC festgelegt wurde, wird immer ein "DC:" davorgehängt. Folgende Elemente gehören zu den Dublin Core-Empfehlungen:
Jetzt könnte es auch einmal nötig werden, noch detailliertere Angaben über den Rechteinhaber oder den Autor einer Datei zu machen.
<DC:Creator parseType="Resource"> <vCard:FN>Thomas Raukamp</vCard:FN> <vCard:TITLE>Chefredakteur</vCard:TITLE> <vCard:EMAIL>redaktion@st-computer.net</vCard:EMAIL> <vCard:ROLE>Chef</vCard:ROLE> </DC:Creator>
Hier wurde der "Creator" noch mal genauer beschrieben - und zwar mit den Elementen aus dem vCard-Namespace. Mit parseType="Resource" wird der Inhalt wie ein ganz RDF-Block behandelt. Dieser Block wird dann auch auf syntaktische Korrektheit überprüft. Das Gegenteil ist "literal":
<DC:Creator parseType="Literal"> <b>Text, schnell platziert.</b> </DC:Creator>
Als Autoren wurden im Beispiel die st-computer-Redaktion angegeben. Wenn diese noch einmal genauer aufgelistet werden soll, kann eine Sequenz begonnen werden. Unter einer Sequenz wird in RDF eine Liste verstanden, bei der die Reihenfolge wichtig ist. Bei der st-computer stünde der Chefredakteur ganz oben:
<DC:Creator> <Seq> <li>Thomas Raukamp</li> <li>Mia Jaap</li> </Seq> </DC:Creator>
Sequenzen legen nicht nur eine Hierarchie fest, sondern sie stellen auch sicher, das eine Sortierung wie gewünscht stattfindet. Sie sollten daher auch gewählt werden, wenn alphabetisch sortiert werden soll.
Unsortiert und wild sind die 'Bags' (Taschen) von RDF. Sie sind im Grunde genauso wie die Sequenzen aufgebaut:
<DC:Creator> <Bag> <li>Thomas Raukamp</li> <li>Mia Jaap</li> </Bag> </DC:Creator>
Obwohl hier das gleiche steht, führt die Verwendung von <bag> statt <seq> dazu, das auf die Reihenfolge kein Wert gelegt wird. Wie das Anzeigeprogramm dies verdeutlichen soll, wird nicht durch RDF festgelegt.
Die Sprache für ein Element wird mit dem Attribut xml:lang festgelegt:
<li xml:lang="en">
Statt den Namen der Sprache auszuschreiben, wird immer ein Sprachkürzel angegeben, die Kürzel sind im Web standardisiert.