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.
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.