Das Web als Social Network

Linked Data eignet sich hervorragend um Soziale Netzwerke im Web abzubilden, die genauso dezentral funktionieren wir das altbekannte WWW. Wie ich bereits erklärt habe, gibt es im „Web of Data“ nicht nur Dokumente, sondern alle möglichen „Dinge“ können durch URIs identifiziert werden. Zu diesen „Dingen“ gehören auch Personen und ihre Beziehungen.

Zunächst müssen wir uns dazu noch einmal ins Gedächtnis rufen, dass Personen und die Dokumente, die sie beschreiben, zwei völlig unterschiedliche Dinge sind: You are not your Website!

Folgende URI identifiziert mich als Person: http://data.kontroversen.de/foaf.rdf#me

Man beachte das #me am Ende! Diese URI ist eine andere URI als http://data.kontroversen.de/foaf.rdf (ohne #me). Beide URIs führen im Web-Browser zwar zum gleichen RDF-Dokument, nur die letztere jedoch identifizert das RDF-Dokument, während http://data.kontroversen.de/foaf.rdf#me die Person „Angelo Veltens“ identifiziert.

Das abgerufene Dokument enthält RDF-Daten über die Resource http://data.kontroversen.de/foaf.rdf#me (mich), unter anderem meinen Namen und ein Verweis auf ein Bild von mir. Die Datei ist damit so etwas ähnliches wie ein Social-Network-Profil und legt damit den Grundstein für ein dezentrales soziales Netzwerk mit Hilfe von Linked Data.

Aber wie zur Hölle kann ich jetzt Freundschaften schließen, Status-Updates senden, Bilder sharen, Sachen liken, kommentieren, anstupsen, retweeten?! Eins nach dem anderen.

Beziehungen zwischen Personen sind sehr leicht über RDF-Tripel zum Ausdruck zu bringen. Die FOAF-Ontologie bietet zum Beispiel das Prädikat foaf:knows um zu sagen „A kennt B“. (Da FOAF sich prima für Social Networks eignet, ist auch häufig vom „FOAF-Profil“ die Rede, auch wenn natürlich weitere Ontologien im Profil verwendet werden können) Ein Beispiel aus meinem Profil:

<http://data.kontroversen.de/foaf.rdf#me>
  <foaf:knows>
    <http://fcns.eu/people/andrei/card#me>

Hinter http://fcns.eu/people/andrei/card#me verbirgt sich Andrei Sambra, was ein einfacher Abruf der URI verrät. Dank Content-Negotiation liefert ein normaler Webbrowser bei seiner URI sogar eine menschenlesbare HTML-Datei aus. Das habe ich für mein Profil leider noch nicht eingerichtet, kommt aber noch!

Jetzt mag das alles für Laien noch etwas kompliziert erscheinen, aber genausowenig wie man heute nicht mehr manuell an HTML-Dateien herumeditieren muss um ein Blog zu betreiben, wird man schon bald kein RDF mehr verstehen müssen um sein eigenes Profil im Social Web zu hosten. Es wird Anbieter geben, bei denen man mit wenigen Klicks ein Profil anlegen kann und wer mag installiert sich eine kleine Software auf seinem eigenen Webspace / Server um sein Profil zu hosten. Der Knackpunkt ist: Egal wo auch immer euer Profil liegt und wo die eurer Freunde liegen: Ihr könnt euch miteinander vernetzen. Ihr könnt euch nennen wie ihr möchtet. Ihr allein könnt bestimmen wem ihr welche Daten preisgebt. Ihr seid nicht von der Willkür einzelner Anbieter wie Google und Facebook abhängig. Das Web wird zum Social Network. Das gesamte Web mit all seinen Inhalten und Möglichkeiten!

Damit sind wir beim nächsten Punkt: Alles im Web lässt sich über Linked Data verknüpfen. Fotos, Videos, Blogartikel… Alles was im Web ist, hat auch eine URI und ich kann damit Aussagen treffen wie z.B.

<http://data.kontroversen.de/foaf.rdf#me>
  <ex:likes>
    <http://datenwissen.de/2011/09/das-web-als-social-network/>

um kenntlich zu machen, dass ich diesen Blogartikel „mag“. Ich kann Bilder hochladen wo immer ich möchte und sie mit meinem Profil verknüpfen. Ich kann Sie auf meinen eigenen Server laden. Oder bei Flickr. Das Social Web ist vollkommen dezentral. Nicht nur sind die einzelnen Profile auf viele verschiedenen Server verteilt, auch die Daten meines Profils kann ich beliebig im Web verteilen. Ein paar Bilder auf Flickr, ein paar in meinem Blog, Status-Updates bei Anbieter A, Social Bookmarks bei Anbieter B. Und das alles mit nur einem einzigen Profil, dass sich unter meiner Kontrolle befindet.

Um dies technisch zu ermöglichen muss ich mich in irgendeiner Form auf anderen Servern, bzw. bei den unterschiedlichen Anbietern mit meinem Profil „einloggen“ können. Erfreulicherweise arbeitet das W3C gerade an WebID, einem Protokoll, welches bereits heute mit allen Browsern funktioniert, da es auf SSL-Zertifikaten basiert, welche schon seit Jahrzehnten unterstützt werden. Mit WebID ist ein Login per Mausklick, ohne Username und Passwort, möglich. Ich werde das aber in einem späteren Artikel erklären, für heute soll es erst einmal reichen.

Ich hoffe es ist ungefähr klar geworden, wie ein dezentrales Social Web mit Hilfe von Linked Data möglich wird. Ansonsten zögert nicht Rückfragen zu stellen! Wer gleich ausprobieren möchte, was heute bereits möglich ist, der kann sich bei http://foaf.me/ oder http://webid.fcns.eu/ ein FOAF-Profil anlegen und sich mit mir verlinken. Egal wo ihr eurer Profil eingerichtet habt, könnt ihr dann hier etwas an die Wall posten.

Dezentrale Soziale Netzwerke – Ein grober Überblick

Ich habe mir die Tage mal ein paar Varianten von dezentralen sozialen Netzwerken angeschaut, auf die ich hier kurz eingehen möchte. Habe mich mit keinem davon tiefergehend befasst und es folgt auch keine Evaluation oder sowas. Ist vielmehr ein grober Überblick für mich selbst und wen auch immer es noch interessiert, was es im weiten Web in diese Richtung schon gibt:

Noserub

Einer der ersten mir bekannten Ansätze für dezentrale soziale Netzwerke. Gabs vor Jahren mal einen Beitrag im Elektrischen Reporter zu. Scheint aber auch leider nicht mehr aktiv voran getrieben zu werden. Letzte sichtbare Aktivitäten sind aus 2009.

One Social Web

Die Entwicklung wurde wohl erstmal eingestellt, weil man sich auf die Spezifikation konzentrieren möchte. Diese ist immerhin Stand Juli 2011. Basiert technologisch auf XMPP, vCard und Activity Streams.

Buddycloud

Macht einen vielverprechenden Eindruck, auch wenn leider noch keine Demo online ist. Dafür scheint die Entwicklung gut voran zu gehen. Setzt technologisch ebenfalls auf XMPP, aber man antwortete mir erfreulich zügig via Twitter, dass man FOAF und andere Semantic Web Standards / Technologien zumindest im Hinterkopf hat und diese in späteren Versionen zu erwarten sind. Ich bin gespannt!

The v0.1 release won’t see any semantic web technology but expect FOAF and other features to be included starting with v0.2

Lorea

So ganz klar wurde mir das Konzept auf der grausigen Website leider nicht. Gibt zwar zahlreiche Server die scheinbar ein Login via OpenID und sogar WebID unterstützen, aber leider gelang mir bei keinem ein Login auf diese Weisen. Fehlermeldung bei WebID-Login:

Couldnt login with the certificate:No Client Certificate Supplied

Fehlermeldung bei OpenID:

OpenID authentication failed: is not a valid OpenID URL.)

Diaspora

Der Vollständigkeit halber erwähne ich noch Diaspora, vermutlich das bekannsteste dezentrale Netzwerk zurzeit. Das ist auch schon recht gut voran geschritten und prinzipiell praktisch nutzbar wenn auch noch im Alpha-Status. Leider entwickelt es sich für meinen Geschmack zu sehr in Richtung „dezentrales Facebook“. Ein verteiltes Datensilo quasi, statt ein großes zentrales. Ich habe den Entwicklern vorgeschlagen FOAF und WebID zu unterstützen, habe darauf aber leider noch keine Rückmeldung.

Wer weitere Ansätze für dezentrale soziale Netzwerke kennt, möge Sie in den Kommentaren posten! Wie man mit Hilfe von Linked Data das Web zum Social Network machen kann, werde ich demnächst erläutern.

RDF auf Groovy-Art

Wie bereits angekündigt arbeite ich derzeit an einer Domain-Specific-Language / Bibliothek um RDF mit Groovy zu erzeugen. Das erste Release ist nun verfügbar. Die Vorzüge erkennt man am besten an einem kleinen Code-Beispiel:

RdfData rdfData = rdfBuilder {
  "http://example.com/resource/alice" {
     a "http://example.com/vocab/Person"
    "http://example.com/vocab/name" "Alice"
  }
}

Dieser Ausdruck ist äquivalent zu folgenden RDF-Daten im TURTLE-Format:

<http://example.com/resource/alice>
  a <http://example.com/vocab/Person>;
  <http://example.com/vocab/name> "Alice".
Nett, oder? Interessant wird das ganze natürlich erst, mit ein wenig Dynamik:
def person = new Person (...)

RdfData rdfData = rdfBuilder {
  "http://example.com/resource/${person.nick}" {
     a "http://example.com/vocab/Person"
    "http://example.com/vocab/name" person.name
    "http://example.com/vocab/knows" {
      person.friends.each { friend ->
        "http://example.com/resource/${friend.nick}" {}
      }
    }
  }
}

Die ganze Sprachvielfalt von Groovy steht zur Verfügung. Die Daten lassen sich dann in beliebigen Repräsentation schreiben, z.B. RDF/XML oder TURTLE. Mehr Code-Beispiele und Erklärungen gibts im User Guide. Version 0.1 steht hier zum Download bereit und den Sourcecode gibt es bei GitHub.

Freue mich über Feedback und weitere Ideen. Wer zur weiteren Entwicklung beitragen möchte, forkt einfach das Projekt bei GitHub und sendet mir ein Pull-Request.

Aktuelle Projekte

Dieses Blog kam ja leider noch nicht so richtig in die Gänge, aber das soll sich nun ändern. Durch Landtagswahlkampf und Umzug hatte ich mich einige Monate auch fast nicht mit Linked Data und Co. befasst. Das hat sich in letzter Zeit wieder geändert und soll sich auch in diesem Blog wiederspiegeln.

Mein Hauptaugenmerk liegt derzeit auf dezentralen sozialen Netzwerken mit semantischen Technologien. Was es damit auf sich hat, werde ich demnächst mal näher erläutern. Wer es eilig hat liest sich diesen Artikel durch und googelt ein bisschen nach FOAF+SSL und WebID. Beim nächsten Braunschweiger Webmontag wird es bei Interesse auch eine kleine Präsentation dazu von mir geben.

Seit Tabulator nicht mehr in aktuellen Firefox-Versionen läuft, mangelt es mir an zufriedenstellenden RDF-Browsern, weshalb ich begonnen habe einen eigenen zu entwickeln. Falls jemand einen Tipp für einen guten Browser hat, würde ich mir die Arbeit aber gerne sparen.

Da ich mittlerweile die Sprache Groovy für mich entdeckt habe und diese die Entwicklung von Domain Specific Languages sehr einfach macht, entwickle ich derzeit eine solche DSL für die Generierung von RDF-Daten. Das ist schon ziemlich weit fortgeschritten und wird demnächst von mir veröffentlicht.

Soweit erstmal zum Stand der Dinge.

Linked Data Thesaurus

Linked Data Thesaurus ist ein kleines Projekt von mir, das die Daten von openthesaurus.de als Linked Data verfügbar macht. OpenThesaurus ist ein freies deutsches Synonymwörterbuch, welches seine Daten auch über eine offene API zur Verfügung stellt. Allerdings liefert diese API lediglich unverlinkte XML-Dokumente aus. Der Linked Data Thesaurus ergänzt den Dienst, indem die Daten zusätzlich in Form von RDF bereitgestellt werden. Ein Begriff bekommt beim Linked Data Thesaurus eine URI der folgenden Form:

http://thesaurus.datenwissen.de/Begriff#term

Synonyme zum Begriff „Daten“ sind somit unter folgender URI abrufbar:

http://thesaurus.datenwissen.de/Daten#term

Es handelt sich dabei um eine Nicht-Informationsressource. Der Fragmentbezeichner #term wird wie üblich beim Abruf per Browser abgetrennt und die Informationsressource http://thesaurus.datenwissen.de/Daten wird vom Server zurückgeliefert. Abhängig vom HTTP-Accept-Header liefert Linked Data Thesaurus entweder ein RDF/XML- (application/rdf+xml) oder Turtle-Dokument (text/turtle) aus. Im Firefox kann der Accept Header mit dem Plugin Modify Headers geändert werden. Andernfalls werden die originalen XML-Daten der OpenThesaurus-API zurückgeliefert! Im Folgenden erkläre ich den Aufbau der Daten anhand des Turtle-Formats und dem Begriff „Daten“. Der Begriff selbst ist vom Typ Label aus der SKOS-XL Ontologie. Das eigentliche Textliteral wird inklusive Sprachangabe über das Attribut skosxl:literalForm angefügt:

<Daten#term>
  a <http://www.w3.org/2008/05/skos-xl#Label>;
  <http://www.w3.org/2008/05/skos-xl#literalForm> "Daten"@de.

OpenThesaurus gruppiert Synonyme in sogenannten SynSets. Dabei handelt es sich um Gruppen von Begriffen mit der gleichen Bedeutung. Ein Begriff mit mehreren Bedeutungen kommt somit in unterschiedlichen SynSets vor, mit jeweils unterschiedlichen Synonymen die den jeweiligen Bedeutungen entsprechen. Zum Beispiel ist das Wort Schild zum einen in einem SynSet mit „Schutzwaffe“ und in einem anderen mit „Zeichen“.

Ein SynSet wird durch den Linked Data Thesaurus als skos:Concept abgebildet. Der abgefragte Begriff wird über das Attribut skosxl:prefLabel angefügt und alle Synonyme über skosxl:altLabel. Hier eines der SynSets in denen der Begriff „Daten“ vorkommt:

<#synset1>
  a <http://www.w3.org/2004/02/skos/core#Concept>;
  <http://www.w3.org/2008/05/skos-xl#altLabel>
    <Informationen#term>,
    <Angaben#term>,
    <Aussagen#term>,
    <Datensammlung#term>,
    <Unterlagen#term>;
  <http://www.w3.org/2008/05/skos-xl#prefLabel>
    <Daten#term>.

Ich freue mich über Feedback zum Linked Data Thesaurus und über die Art und Weise wie die Daten strukturiert sind. Es ist sicherlich noch nicht der Weisheit letzter Schluss, aber ein Anfang. Der OpenThesaurus stellt noch ein paar mehr Daten bereit, die ich gerne noch einbinden möchte und auch eine Verlinkung mit Lexvo.org habe ich bereits im Hinterkopf.

Wer mitarbeiten möchte kann sich gerne an mich wenden, oder einfach den Quellcode von GitHub beziehen und loslegen.

Neues Blog über Linked Data und verwandte Themen

Ab sofort blogge ich unter datenwissen.de über Linked Data und verwandte Themen. Ich habe mich dazu entschlossen, diesen Themenkomplex aus meinem ersten Blog auszugliedern, da ich mich dort hauptsächlich mit politischen Themen befasse. Eher technisch angehauchte Artikel gehen dort leicht unter und wurden zum Teil als störend empfunden.

Die Grenze lässt sich allerdings nicht so leicht ziehen, wie dies auf den ersten Blick scheint. Linked Data, das Semantische Web und natürlich das Thema Open Data haben eine beachtenswerte politische Dimension. Deshalb wird es sicher auch zu Überschneidungen und einigen Referenzen zwischen den Blogs kommen.

Mit dem Blog verfolge ich das Ziel, das Thema Linked Data in der deutschen Blogosphäre bekannter zu machen. Es gibt leider noch sehr wenige deutsche Infos zu dem Thema. Neben eher theoretischen Artikeln werde ich hier auch Projekte beschreiben, an denen ich arbeite.

Ich bin gespannt wie sich dieses Blog entwickelt und freue mich über Rückmeldungen. Alle alten Artikel zum Thema Linked Data habe ich bereits von kontroversen.de hierher kopiert. Als Einstieg in die sehr interessante Thematik empfehle ich neben diesen vor allem meinen Beitrag „Warum wir Daten verlinken müssen“.

Du bist nicht deine Website

Auf die Grundprinzipien von Linked Data bin ich bereits eingegangen. Auch einen kurzen Ausflug ins „Web of Data“ haben wir schon gewagt. Nun möchte ich die unterschiedlichen Arten von Ressourcen näher vorstellen. Das Datenweb ist mehr als ein Web aus Dokumenten. Wir können alle möglichen Dinge über URIs identifizieren und Daten über sie abrufbar machen.

Die W3C Technical Architecture Group unterscheidet zwischen Informations- und Nicht-Informationsressourcen. Im WWW ist diese Unterscheidung von untergeordneter Bedeutung, da es quasi nur Informationsressourcen gibt. Darunter fallen nämlich alle Arten von Dokumenten und das WWW ist nunmal ein Web aus Dokumenten. Im Datenweb kommen abstrakte und konkrete „Dinge“ hinzu, die ebenfalls über eine URI identifiziert werden wollen. Dabei handelt es sich dann um Nicht-Informationsressourcen. Denn die Ressourcen sind in diesem Fall keine Informationen, sondern z.B. Personen, Orte, Bücher, Produkte etc.

Die Unterscheidung zwischen Informations und Nicht-Informationsressourcen ist dabei weniger trivial, als auf den ersten Blick scheint. Ein oft gemachter Fehler ist es, die Beschreibung einer Ressource mit der Ressource selbst gleich zu setzen.

Wir wissen dass gemäß der Linked Data Grundprinzipien beim Abruf der ein Ding identizifierenden URI „nützliche Informationen“ bereitgestellt werden müssen. Dazu liefert z.B. ein Webserver ein RDF-Dokument aus. Ich möchte das kurz am Beispiel meiner eigenen FOAF-Datei demonstrieren. Ich (ja tatsächlich ich, nicht die Datei!) werde durch folgende URI im Datenweb identifiziert:

http://data.kontroversen.de/foaf.rdf#me

Beim Abruf mit einem Browser (Egal ob Web- oder Datenbrowser) wird folgende Datei ausgeliefert:

http://data.kontroversen.de/foaf.rdf

Diese Datei ist ein RDF-Dokument, welches Informationen über mich (d.h. die Ressource http://data.kontroversen.de/foaf.rdf#me) enthält. Die Datei und ich sind jedoch zwei völlig unterschiedliche Dinge (Weshalb ich im übrigen auch eine andere URI als die Datei habe). Die Datei ist eine Informationressource identifiziert durch die URI http://data.kontroversen.de/foaf.rdf. Ich bin eine Nicht-Informationsressource identifziert durch http://data.kontroversen.de/foaf.rdf#me.

Einmal verstanden erscheint dies selbstverständlich, führt jedoch anfangs oft zu Verwirrungen und paradoxen RDF-Dokumenten. So hat zum Beispiel die New York Times (erfreulicherweise!) beachtliche Datenbestände als Linked Data verfügbar gemacht. Anfangs wurden dabei jedoch typische Fehler gemacht, die aus der Verwechslung von Informations- und Nicht-Informationsressourcen herrühren.

Die URI http://data.nytimes.com/N31738445835662083893 identifiziert den Schauspieler Paul Newman. Über diese Person finden sich in dem Datensatz leider kaum Informationen, nützlich ist hauptsächlich der Verweis auf die DBpedia. Das ist jedoch nicht wirklich schlimm. Problematisch war eine Zeit lang (mittlerweile wurde es zum Glück korrigiert) die Vermischung von Daten und Metadaten: Was zum Beispiel sagt das Prädikat „dc:creator“ in Bezug auf eine Person aus? Heitere Zeigenossen möchten dort vielleicht die Eltern der Person eintragen, oder Gott, wenn sie gläubig sind. Ganz sicher ist jedoch nicht „The New York Times Company“ der „Ersteller“ von Paul Newman.

Die New York Times hatte die Nicht-Informationsressource „Paul Newman“ mit der Informationsressource verwechselt die ihn beschreibt. Was sie eigentlich ausdrücken wollten ist, dass „The New York Times Company“ der Ersteller des RDF-Dokumentes ist. Das RDF-Dokument ist jedoch eine eigene Ressource und bekommt eine eigene URI.

Die New York Times wurde zwischenzeitlich auf den Fehler hingewiesen und hat ihn korrigiert. Die Informationsressource wird nun über http://data.nytimes.com/N31738445835662083893.rdf identifiziert und „dc:creator“ bezieht sich auf diese Ressource und nicht mehr auf Paul Newman selbst.

Ich hoffe ich konnte die Unterscheidung zwischen Informations- und Nicht-Informationsressource einigermaßen verständlich darlegen. Mir hat dabei der Merkspruch „You are not your Website“ sehr geholfen. Denn im „Web of Data“ gibt es nicht nur deine Website, sondern auch dich selbst. Und das sind natürlich zwei völlig unterschiedliche Dinge.

Chancen und Techniken von Linked Data

Instance linkages within the Linking Open Data...
Image via Wikipedia

Meine Studienarbeit zum Thema „Chancen und Techniken von Linked Data“ ist mittlerweile fertig und steht unter CC-Lizenz zum Download (PDF) bereit.

In der Studienarbeit wird das Konzept „Linked Data“ beschrieben. Dabei handelt es sich um ein Thema im Umfeld des semantischen Webs, einer erweiterten Form des World Wide Web, mit der Informationen und deren Bedeutung für Maschinen verwertbar gemacht werden sollen. Kernidee von „Linked Data“ ist es, strukturierte Daten über URIs zugänglich zu machen und untereinander zu verlinken, um so ein „Web aus Daten“ aufzubauen und verwandte Informationen auffindbar zu machen. Die Studienarbeit ordnet „Linked Data“ in das thematische Umfeld des semantischen Webs ein und erörtert den Stand der Technik. Anwendungsgebiete und Chancen werden aufgezeigt. Die Studienarbeit legt darüber hinaus praktische Anwendungsmöglichkeiten für „Linked Data“ dar und bewertet die Zukunftsaussichten.

Eigentlich wollte ich parallel zur Studienarbeit über dieses Thema regelmäßig bloggen. Leider hat mir dazu die Zeit nicht in dem Maße gereicht, wie ich mir das vorgestellt hatte. Wer möchte kann sich natürlich jetzt die komplette Studienarbeit zu Gemüte ziehen, ich werde aber nach und nach wie versprochen noch den ein oder anderen Artikel zum Thema bloggen.

Freue mich trotzdem, wenn jemand auch die Studienarbeit selbst liest und mir dazu Feedback gibt. Hätte mich gerne noch viel intensiver mit dem Thema befasst, aber drei Monate Bearbeitungszeit sind nicht viel. Unabhängig von der Studienarbeit werde ich das Thema aber weiter verfolgen, weil es mich sehr interessiert und ich viel Potential in Linked Data sehe.

Reblog this post [with Zemanta]

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:

Warum wir Daten verlinken müssen