RDF – Die Sprache des Web of Data

Nach unserem kurzen Ausflug ins Web of Data, wollen wir nun die Sprache näher betrachten, die diese Daten beschreibt. Was HTML im „normalen“ Web ist, ist hier RDF. RDF beschreibt Ressourcen und steht deshalb – oh Wunder – für Resource Description Framework.

Wir erinnern uns: Im Datenweb gibt es nicht nur Dokumente, sondern alle möglichen Dinge über die wir Daten hinterlegen können, z.B. Städte, Personen, Medikamente, Bücher, Ereignisse, … Diese Dinge nennt man im Datenweb Ressourcen. Die Grammatik von RDF ist einfach: Eine Ressource beschreibt man in der Form Subjekt – Prädikat – Objekt. Dieses Dreigespann heißt RDF-Tripel. Subjekt ist die Ressource, die beschrieben wird, Prädikat ist die Aussage die wir über diese Ressource treffen und Objekt ist der Wert oder Gegenstand dieser Aussage.

Wir können zum Beispiel sagen „Angelo Veltens interessiert sich für Linked Data“ Ich bin in diesem Fall das Subjekt, also die Ressource die wir beschreiben, „interessiert sich“ ist Prädikat und „Linked Data“ das Objekt. Soweit ist es erstmal ein gewöhnlicher deutscher Satz. In RDF-XML sieht der gleiche Sachverhalt folgendermaßen aus:

<rdf:RDF
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:foaf="http://xmlns.com/foaf/0.1/">

  <foaf:Person rdf:about="http://data.kontroversen.de/foaf.rdf#me">
    <foaf:interest rdf:resource="http://dbpedia.org/resource/Linked_Data"/>
  </foaf:Person>
</rdf:RDF>

http://data.kontroversen.de/foaf.rdf#me ist die URI die mich identifiziert und das Subjekt dieser Aussage. Durch die Verwendung des Tags <foaf:Person> wird zusätzlich noch ausgedrückt, dass die beschriebene Ressource vom Typ foaf:Person ist. Das Tag <foaf:interest> ist ein Prädikat, welches Interesse an einem Themengebiet formal beschreibt. Das Attribut rdf:resource verweist auf das Objekt dieser Aussage. Ich habe hier einen Link in die Dbpedia genutzt um das Themengebiet Linked Data zu identifizieren.

Achtung: RDF ist nicht das selbe wie RDF-XML! XML ist lediglich eine Darstellungsform von RDF. Andere Darstellungsformen sind Notation 3 (N3) oder ein RDF-Graph. In Notation 3 sieht unser Beispiel folgendermaßen aus:

@prefix foaf: <http://xmlns.com/foaf/0.1/>
<http://data.kontroversen.de/foaf.rdf#me>
  foaf:interest
    <http://dbpedia.org/resource/Linked_Data>.

Und hier als RDF-Graph:

simple_rdf_graph

Die eigentliche Herausforderung beim Beschreiben von Ressourcen mittels RDF liegt nicht in der Grammatik, die wie ihr seht wirklich mehr als einfach ist, sondern bei der Wahl und ggf. Neudefinition von Vokabularen, auch Ontologien genannt. Auf einige dieser Ontologien, z.B. das in diesem Beispiel verwendeten FOAF, werde ich in kommenden Artikeln näher eingehen. Zur Definition von Ontologien haben sich zwei Sprachen etabliert: Die Web Ontology Language (kurz OWL) und RDF-Schema. Auch der Eigendefinition von Vokabularen werde ich noch einen Beitrag widmen. Allerdings sollte man damit sehr sparsam umgehen und nach Möglichkeit eine bestehende Ontologie wiederverwerten oder bei Bedarf ergänzen, damit wir ihm Datenweb nicht enden wie beim Turmbau zu Babel und niemand mehr den anderen versteht.

Weiterführende Links:

Gedenktag

Am 9. November ist in der Vergangenheit schon so einiges passiert – Positives wie Negatives. Nicht umsonst wird dieser Tag auch als Schicksalstag der Deutschen bezeichnet. Während insbesondere an den Mauerfall schon hinreichend oft erinnert wurde, möchte ich an dieser Stelle noch ein anderes Ereignis ins Gedächtnis rufen: Den Beschluss der Vorratsdatenspeicherung.

Am 09. November 2007 haben 366 deutsche Abgeordnete für ein Gesetz gestimmt, das alle Bürger unter Generalverdacht stellt und ohne Anlass überwacht. Von uns allen wird gespeichert, wann wir mit wem telefonieren, wie lange das Gespräch dauert, wo wir uns bei Mobilfunkgesprächen und SMS aufhalten, wem wir E-Mails schicken und wann wir uns ins Internet einwählen. Für ein halbes Jahr werden diese Daten anlasslos festgehalten!

Das Gesetz ist immer noch da. Und es ist nicht weniger schlimm geworden, in den zwei Jahren seit Beschluss. Auch die neue Regierung mit der ach so liberalen FDP hat dieses Gesetz nicht wieder abgeschafft. Die Daten werden nach wie vor gespeichert. So lange dieses Gesetz existiert müssen wir dagegen protestieren. Nichts rechtfertigt die anlasslose Überwachung der eigenen Bürger!

Data-Browsing – Ein kurzer Ausflug ins Web of Data

Wie versprochen, werden wir das Thema Linked Data nun etwas praktischer angehen. Wenn man mal selbst durch das Datenweb gesurft ist, versteht man viel eher worum es eigentlich geht. Wir brauchen:

  1. Einen Datenbrowser
  2. Einen Einstiegspunkt
  3. Neugier

Es gibt gibt schon einige Datenbrowser, allerdings scheinen die mehr Proof-of-Concept zu sein, als nutzbare Tools. Ich persönlich komme aktuell immer noch am besten mit Tabulator zurecht, obwohl der nicht sonderlich intuitiv zu bedienen ist. Das schöne an Tabulator ist aber, dass es dafür ein Firefox-Addon gibt, das schnell installiert ist. Außerdem lädt Tabulator automatisch „sameAs-Links“ nach, d.h. Daten die unter einer anderen URI verfügbar sind, aber das gleiche Objekt beschreiben werden gleich mitgeladen. Ich werde unsere kleine Erkundungstour durch das Datenweb anhand von Tabulator beschreiben. Wer erstmal nichts installieren mag, kann aber auch einen der Online-Browser verwenden, z.B. den OpenLink Data Explorer, Disco oder Marbles.

Teilweise geht es sogar ganz ohne Datenbrowser, nämlich dann wenn die Datenquellen ihre Daten auch gleich in einer HTML-Variante bereitstellen. Das ist zum Beispiel bei dbpedia.org der Fall. DBpedia ist das Abbild der Wikipedia im Web of Data. Das Projekt liest systematisch Daten aus der Wikipedia aus und veröffentlicht sie als RDF. Unter der URI http://dbpedia.org/resource/Karlsruhe finden sich zum Beispiel Daten zur Stadt Karlsruhe. Ruft man diese URI mit einem normalen Web-Browser ab, werden die Daten als HTML-Dokument angezeigt. Das passiert sogar, wenn man die Tabulator-Erweiterung installiert hat, weil Firefox immer noch primär ein HTML-Browser ist. Wie man das ändern kann erkläre ich in einem späteren Artikel (Tipp für Neugierige: Spielt mal mit Modify Headers am Accept-Header herum). Für den Moment reicht es, explizit die URI http://dbpedia.org/data/Karlsruhe abzurufen, um an die Rohdaten zu kommen [1]. Wir erfahren so tolle Sachen wie die Einwohnerzahl, die Telefonvorwahl und das Bundesland.

Mit Linked Data hat das alles aber noch recht wenig zu tun. Aufgrund der Informationsfülle wird zwar sehr gerne in die DBpedia hinein verlinkt, aber nur sehr wenige Links führen wieder hinaus. Wir suchen uns deshalb einen anderen Startpunkt, am besten von jemandem der sich auskennt: Tim Berners-Lee. Ja, klickt ruhig auf den Link, er führt direkt zu Daten über die Person Tim Berners-Lee, mitsamt einer ganzen Menge Links zu weiterführenden Daten, irgendwo in den Weiten des Webs. Wir erfahren zum Beispiel, dass er der Organisation „World Wide Web Consortium“ angehört und wenn ihr auf den kleinen grauen Pfeil daneben klickt, klappen zusätzliche Infos zu dieser Organisation aus. Wir erfahren auch, dass Berners-Lee der Autor von „Weaving the Web“ ist. Wenn man Shift gedrückt hält, wenn man auf den Pfeil klickt, werden die Daten zu diesem Buch im kompletten Browser-Tab geladen, statt nur ausgeklappt.

Leider stoßen wir dann schon recht schnell an die Grenzen des Datenwebs. Zum Beispiel wird der Verlag des Buches (Harper Paperbacks) zwar genannt, aber nicht verlinkt. Wir können also keine weiteren Daten zum Verlag abrufen. Es liegt an uns allen, diese Grenzen zu sprengen, so wie wir schon das WWW groß gemacht haben und täglich vergrößern. Aber schaut euch einfach mal ein bisschen um, es gibt schon einiges zu entdecken. Unter http://data.kontroversen.de/foaf.rdf#me habe ich auch ein paar Daten über mich online gestellt und mit meinem Identi.ca- sowie Twitter-Account verknüpft. (Ja, dem Thema Datenschutz und informationelle Selbstbestimmung in Bezug zu Linked Data werde ich auch noch einen Beitrag widmen)

So, ich denke das genügt erstmal als kleines, anschauliches Praxisbeispiel bzw. als Startpunkt für eigene Experimente. Bei Fragen und Problemen meldet euch einfach in den Kommentaren.

[1] Genau genommen ist das nicht ganz richtig, denn http://dbpedia.org/data/Karlsruhe verweist auf ein RDF-Dokument mit Daten über die Stadt Karlsruhe, während http://dbpedia.org/resource/Karlsruhe die Stadt selbst identifiziert. Dieser kleine aber feine Unterschied äußert sich auch in der Art wie Tabulator die Daten darstellt.

Alles bekommt eine URI

Im vorherigen Beitrag habe ich einen kurzen Vorgeschmack auf das Thema Linked Data gegeben. Doch was genau hat es damit auf sich? Wie sieht ein „Web of Data“ aus? Lässt es sich mit den heutigen Techniken überhaupt realisieren, oder müssen wir das Internet neu erfinden? Die gute Nachricht lautet: Nein müssen wir nicht. Linked Data beruht im wesentlichen auf 4 einfachen Grundprinzipien, die Tim Berners-Lee 2006 in „Linked Data: Design Issues“ beschrieben hat:

  1. Use URIs as names for things
  2. Use HTTP URIs so that people can look up those names.
  3. When someone looks up a URI, provide useful information, using the standards (RDF, SPARQL)
  4. Include links to other URIs. so that they can discover more things.

Die erste Regel fordert, dass wir alles mögliche über URIs identifizieren können. Es geht nicht mehr nur um Dokumente, wie im WWW. Wir wollen Daten bereitstellen, über Personen, Orte, Gegenstände, Organisationen, Pflanzen, Tiere, Gebäude… Daten über alles Mögliche. All diese Dinge bekommen eine URI.

Weiterhin fordert Regel 2, dass als Protokoll HTTP genutzt wird. Das stellt sicher, dass die URI über das Domain Name System auflösbar ist. Das ist keinesfalls selbstverständlich, es gibt nämlich zahlreiche weitere Typen von URIs, zum Beispiel sind auch tel:+1-816-555-1212 und mailto:John.Doe@example.com gültige URIs. Es gibt sogar URIs für ISBN. Jetzt könnte man auf die Idee kommen, dass doch letztere eine wunderbare Möglichkeit wären um Bücher im „Web of Data“ eindeutig zu identifizieren. Nur dummerweise haben solche URIs die Eigenschaft, dass sie eben nicht auflösbar sind, das heißt ich kann damit nichts im Web abrufen.

Genau das erfordert aber die dritte Regel. Hinter unserer URI müssen sich nützliche, standardisierte Informationen verbergen. Zum Beispiel könnte ein Webserver unter dieser URI ein XML-Dokument ausliefern, welches RDF-Daten enthält. RDF ist ein Standard zur Beschreibung von Informationen, sodass diese leicht automatisiert verarbeitet und ausgewertet werden können. Ich werde auf RDF noch genauer in einem späteren Artikel eingehen.

Die vierte und letzte Regel verknüpft unsere Daten miteinander: Die Informationen die wir ausliefern stehen nicht für sich alleine, sondern enthalten selbst wieder URIs und verweisen so auf weiterführende Informationen. Man stelle sich zum Beispiel vor, dass unter einer URI Daten über ein Buch abrufbar sind. Wir erhalten dann zum Beispiel die Information, wieviele Seiten das Buch hat und wann es erschienen ist. Aber anstatt nur den Namen des Autors, enthalten die Daten eine URI, die den Autor selbst identifiziert! Wenn wir diesem Link dann folgen, erhalten wir Informationen über den Autor, zum Beispiel sein Geburtsjahr und Links zu weiteren Büchern die er veröffentlicht hat. Diesen Links können wir wiederum folgen und so das „Web of Data“ erkunden.

Das wars! Vier einfache Grundprinzipien, so einfach wie genial! Praktische Beispiele und nähere Details wie man selbst Linked Data im Web veröffentlichen kann folgen demnächst.