Linked (Open) Data - Von der Theorie zur Praxis

Grundlegende Konzepte

  Daten und Dokumente
  Strukturierte Beschreibung von Daten mit RDF
  Abfragen von strukturierten Daten mit SPARQL
  Das semantische Web

 

 

Abfragen von strukturierten Daten mit SPARQL

 

Einleitung

SPARQL (SPARQL Protocol And RDF Query Language) definiert ein Protokoll und eine Abfragesprache für den Zugriff auf RDF-Daten.

Mit SPARQL ist es möglich, viele RDF_Datensätze nach Mustern (bestimmten Triples) zu durchsuchen und die Ergebnisse in XML oder JSON zu erhalten. Um eine SPARQL-Abfrage zu tätigen, ist ein SPARQL-Endpoint nötig, d.h. eine Software, die eine in der SPARQL-Syntax formulierte Abfrage mit Hilfe des SPARQL-Protokolls an den Server mit den betreffenden Datensätzen senden und die zurück erhaltenen Ergebnisse in geeigneter Form darstellen kann.

Für viele Anwendungsfälle genügen "von Hand" formulierte SPARQL-Abfragen, um aus den RDF-Datensätzen Erkenntnisse zu gewinnen. In komplexeren Anwendungsfällen müssen die Ergebnisse von SPARQL-Abfragen noch durch passende Computerprogramme verarbeitet und verknüpft werden.

 

SPARQL Syntax

Ein RDF-Datensatz repräsentiert immer eine Folge von Triples wie das folgende Beispiel der Beschreibung des Films "The Great Gatsby" von 1974 zeigt:

<rdf:Description rdf:about="http://example.org/movies/TheGreatGatsby1974.rdf">
    <rdf:type rdf:resource="http://schema.org/Movie"/>
    <schema:name>The Great Gatsby</schema:name>
    <schema:inLanguage>en</schema:inLanguage>
    <schema:director rdf:resource="http://www.wikidata.org/wiki/Special:EntityData/Q17887.rdf" />
    <schema:copyrightYear>1974</schema:copyrightYear>
  </rdf:Description>

Eine SPARQL-Abfrage spezifiziert die Triples, die in den abgefragten Datensätzen gefunden werden sollen. Um alle Triples eines Datensatzes zu finden und als Ergebnisse zu erhalten, ist die folgende einfache Abfrage nötig:

select distinct ?S ?p ?O 
where { 
  ?S ?p ?O}
limit 50

Die Bezeichner mit einem vorangestellten Fragezeichen (?S, ?p, ?O) stellen Variablen dar; ihnen wird das Ergebnis eines gefundenen Musters zugewiesen. In geschweiften Klammern steht das interessierende Triple-Muster ({?S ?p ?O}). Limit 50 begrenzt die Ergebnisliste.

Um aus mehreren Datensätzen nur bestimmte Triples zu finden, wird die entsprechende Komponente (Subjekt, Prädikat, Objekt) spezifiziert. Dazu muss der SPARQL-Abfrage mitgegeben werden, welcher namespace (welches Vokabular) dazu benötigt wird (PREFIX). Um beispielsweise in einer Liste von kurzen Filmbeschreibungen die RegisseurInnen zu finden und anzuzeigen, könnte folgende SPARQL-Abfrage formuliert werden:

PREFIX schema: <http://schema.org/>
select distinct ?S ?regisseurIn 
where { 
  ?S schema:director ?regisseurIn }
limit 50

Das Ergebnis sieht folgendermassen aus:

Um den Namen der RegisseurIn des Films "Die Herbstzeitlosen" zu finden, müsste noch eine SPARQL-Abfrage auf Wikidata folgen.

Die obigen Abfragen wurden mit einem öffentlichen SPARQL-Endpoint durchgeführt. Die Datensätze sind im Web an der Adresse http://bscw5.fh-htwchur.ch/pub/bscw.cgi/379616/FilmsAndDirectors.rdf zugänglich.