21
Verknüpfte Daten abfragen mit SPARQL Thomas Tikwinski, W3C.DE/AT

Verknüpfte Daten abfragen mit SPARQL - W3C-Tag 2008 · T. Tikwinski, W3C Tag 2008 4 SPARQL im Zusammenhang RDF: die Faktenbasis SPARQL: die Abfragesprache Triple-Store: speichert

Embed Size (px)

Citation preview

Page 1: Verknüpfte Daten abfragen mit SPARQL - W3C-Tag 2008 · T. Tikwinski, W3C Tag 2008 4 SPARQL im Zusammenhang RDF: die Faktenbasis SPARQL: die Abfragesprache Triple-Store: speichert

Verknüpfte Daten abfragenmit SPARQL

Thomas Tikwinski, W3C.DE/AT

Page 2: Verknüpfte Daten abfragen mit SPARQL - W3C-Tag 2008 · T. Tikwinski, W3C Tag 2008 4 SPARQL im Zusammenhang RDF: die Faktenbasis SPARQL: die Abfragesprache Triple-Store: speichert

T. Tikwinski, W3C Tag 2008

2

Agenda

SPARQL – Eine Anfragesprache für RDF

Was ist eine SPARQL-Abfrage?

Beispiel

Arbeiten mit Variablen

Komplexere Anfragen

Filtern und sortieren

Ergebnisse

Page 3: Verknüpfte Daten abfragen mit SPARQL - W3C-Tag 2008 · T. Tikwinski, W3C Tag 2008 4 SPARQL im Zusammenhang RDF: die Faktenbasis SPARQL: die Abfragesprache Triple-Store: speichert

T. Tikwinski, W3C Tag 2008

3

SPARQL – Eine Abfragesprache für RDF

Abkürzung:

SPARQL Protocol And RDF Query Language

SPARQL besteht aus zwei Teilen:

- Abfragesprache

- WSDL-Interface

SPARQL kann aus einem RDF-Graph eine oder mehrere Teilmengen nach bestimmten Bedingungen suchen

Page 4: Verknüpfte Daten abfragen mit SPARQL - W3C-Tag 2008 · T. Tikwinski, W3C Tag 2008 4 SPARQL im Zusammenhang RDF: die Faktenbasis SPARQL: die Abfragesprache Triple-Store: speichert

T. Tikwinski, W3C Tag 2008

4

SPARQL im Zusammenhang

RDF: die Faktenbasis

SPARQL: die Abfragesprache

Triple-Store: speichert RDF-Daten

SPARQL-Server: führt die SPARQL-Anfragen aus

HTTP-Binding: SPARQL-Anfragen aus dem Web stellen

Page 5: Verknüpfte Daten abfragen mit SPARQL - W3C-Tag 2008 · T. Tikwinski, W3C Tag 2008 4 SPARQL im Zusammenhang RDF: die Faktenbasis SPARQL: die Abfragesprache Triple-Store: speichert

T. Tikwinski, W3C Tag 2008

5

Was ist eine SPARQL-Anfrage?

Eine SPARQL-Anfrage beschreibt eine Schablone für RDF-Fakten, eine Art „Steckbrief“ für Teilgraphen aus dem semantischen Netz.

Innerhalb der Anfrage können Bedingungen für Subjekt, Prädikat und Objekt spezifiziert werden.

Ergebnise der Anfrage sind gebundene Variablen und deren Werte.

Page 6: Verknüpfte Daten abfragen mit SPARQL - W3C-Tag 2008 · T. Tikwinski, W3C Tag 2008 4 SPARQL im Zusammenhang RDF: die Faktenbasis SPARQL: die Abfragesprache Triple-Store: speichert

T. Tikwinski, W3C Tag 2008

6

Beispiel

„Ich suche eine Seite, die den W3C-Tag beschreibt.“

Subjekt: x vom Typ „Seite“

Prädikat: „über“

Objekt „W3C-Tag“

SUCHE ?xWOBEI {

?x ist eine Seite .?x über „W3C-Tag“

}

Seite

über

W3C-Tag

Page 7: Verknüpfte Daten abfragen mit SPARQL - W3C-Tag 2008 · T. Tikwinski, W3C Tag 2008 4 SPARQL im Zusammenhang RDF: die Faktenbasis SPARQL: die Abfragesprache Triple-Store: speichert

T. Tikwinski, W3C Tag 2008

7

Beispiel (2)

Ergebnis:

=====================

X

=====================

<http://www.w3c-tag.de/>

=====================

Page 8: Verknüpfte Daten abfragen mit SPARQL - W3C-Tag 2008 · T. Tikwinski, W3C Tag 2008 4 SPARQL im Zusammenhang RDF: die Faktenbasis SPARQL: die Abfragesprache Triple-Store: speichert

T. Tikwinski, W3C Tag 2008

8

Beispiel – jetzt mit SPARQL

„Ich suche eine Seite, die den W3C-Tag beschreibt.“

Subjekt: x vom Typ „Page“

Prädikat: „about“

Objekt „W3C-Tag“

SELECT ?xWHERE {

?x a page .?x about „W3C-Tag“ .

}

Page

about

W3C-Tag

Page 9: Verknüpfte Daten abfragen mit SPARQL - W3C-Tag 2008 · T. Tikwinski, W3C Tag 2008 4 SPARQL im Zusammenhang RDF: die Faktenbasis SPARQL: die Abfragesprache Triple-Store: speichert

T. Tikwinski, W3C Tag 2008

9

Beispiel – jetzt mit SPARQL (2)

Result:

=====================

X

=====================

<http://www.w3c-tag.de/>

=====================

Page 10: Verknüpfte Daten abfragen mit SPARQL - W3C-Tag 2008 · T. Tikwinski, W3C Tag 2008 4 SPARQL im Zusammenhang RDF: die Faktenbasis SPARQL: die Abfragesprache Triple-Store: speichert

T. Tikwinski, W3C Tag 2008

10

Arbeiten mit Variablen

„Ich suche eine Seite, die den W3C-Tag beschreibt und will wissen, wann der stattfindet.“

SELECT ?x ?yWHERE {

?x a page .?x about „W3C-Tag“ .?x date ?y .

}

Page 11: Verknüpfte Daten abfragen mit SPARQL - W3C-Tag 2008 · T. Tikwinski, W3C Tag 2008 4 SPARQL im Zusammenhang RDF: die Faktenbasis SPARQL: die Abfragesprache Triple-Store: speichert

T. Tikwinski, W3C Tag 2008

11

Arbeiten mit Variablen

Result:

=====================

X

=====================

<http://www.w3c-tag.de/>

=====================

Y

=====================

24.09.08

=====================

Page 12: Verknüpfte Daten abfragen mit SPARQL - W3C-Tag 2008 · T. Tikwinski, W3C Tag 2008 4 SPARQL im Zusammenhang RDF: die Faktenbasis SPARQL: die Abfragesprache Triple-Store: speichert

T. Tikwinski, W3C Tag 2008

12

Optionale Daten

„Ich suche eine Seite, die den W3C-Tag beschreibt und will wissen, wann der stattfindet. Falls bekannt ist, was das Thema war, will ich das auch wissen.“

SELECT ?x ?y ?zWHERE {

?x a page .?x about „W3C-Tag“ .?x date ?y .OPTIONAL ( ?x topic ?z . )

}

Page 13: Verknüpfte Daten abfragen mit SPARQL - W3C-Tag 2008 · T. Tikwinski, W3C Tag 2008 4 SPARQL im Zusammenhang RDF: die Faktenbasis SPARQL: die Abfragesprache Triple-Store: speichert

T. Tikwinski, W3C Tag 2008

13

Abfragen mehrerer Graphen

SELECT ?x ?y

FROM http://example.com/graph1

FROM NAMED http://example.com/graph1

WHERE {GRAPH http://example.com/graph1{

?x a Page .}?y a Event

}

http://example.com/graph1

Page 14: Verknüpfte Daten abfragen mit SPARQL - W3C-Tag 2008 · T. Tikwinski, W3C Tag 2008 4 SPARQL im Zusammenhang RDF: die Faktenbasis SPARQL: die Abfragesprache Triple-Store: speichert

T. Tikwinski, W3C Tag 2008

14

Komplexe Anfragen

„Ich suche deutsche Musiker, die in Berlin geboren sind.“

SELECT ?name ?birth ?description ?person WHERE {

?person dbpedia2:birthPlace <http://dbpedia.org/resource/Berlin> .

?person skos:subject <http://dbpedia.org/resource/Category:German_musicians> .

?person dbpedia2:birth ?birth .

?person foaf:name ?name .

?person rdfs:comment ?description .

FILTER (LANG(?description) = 'en') .

}

ORDER BY ?name

Page 15: Verknüpfte Daten abfragen mit SPARQL - W3C-Tag 2008 · T. Tikwinski, W3C Tag 2008 4 SPARQL im Zusammenhang RDF: die Faktenbasis SPARQL: die Abfragesprache Triple-Store: speichert

T. Tikwinski, W3C Tag 2008

15

Apropos komplex… Prefixes!

Diese Anfrage verwendet eine Reihe von Prefixes:

PREFIX owl: <http://www.w3.org/2002/07/owl#>

PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>

PREFIX foaf: <http://xmlns.com/foaf/0.1/>

PREFIX dc: <http://purl.org/dc/elements/1.1/>

PREFIX : <http://dbpedia.org/resource/>

PREFIX dbpedia2: <http://dbpedia.org/property/>

PREFIX dbpedia: <http://dbpedia.org/>

PREFIX skos: <http://www.w3.org/2004/02/skos/core#>

Page 16: Verknüpfte Daten abfragen mit SPARQL - W3C-Tag 2008 · T. Tikwinski, W3C Tag 2008 4 SPARQL im Zusammenhang RDF: die Faktenbasis SPARQL: die Abfragesprache Triple-Store: speichert

T. Tikwinski, W3C Tag 2008

16

Prefixes

Prefixes definieren Abkürzungen für den statischen Teil von häufig verwendeten URLs, insbesondere von Vokabularien und Schemata.

Prefixes sind rein syntaktische Hilfen, um die Anfragen lesbar zu halten.

Statt des Prefixes kann auch jederzeit die komplette URL geschrieben werden:

PREFIX foaf: http://xmlns.com/foaf/0.1/?x a foaf:Person

… ist äquivalent zu …

?x a http://xmlns.com/foaf/0.1/Person

Eins von beiden ist auf Dauer besser lesbar

Page 17: Verknüpfte Daten abfragen mit SPARQL - W3C-Tag 2008 · T. Tikwinski, W3C Tag 2008 4 SPARQL im Zusammenhang RDF: die Faktenbasis SPARQL: die Abfragesprache Triple-Store: speichert

T. Tikwinski, W3C Tag 2008

17

Filtern

„Ich suche eine Seite, die den W3C-Tag beschreibt und will wissen, wann der in 2008 stattfindet.“

SELECT ?x ?yWHERE {

?x a page .?x about „W3C-Tag“ .?x date ?y .FILTER ( ?y >= 01.01.2008 &&

?y < 01.01.2009 )}

Page 18: Verknüpfte Daten abfragen mit SPARQL - W3C-Tag 2008 · T. Tikwinski, W3C Tag 2008 4 SPARQL im Zusammenhang RDF: die Faktenbasis SPARQL: die Abfragesprache Triple-Store: speichert

T. Tikwinski, W3C Tag 2008

18

Sortieren

„Ich suche alle Seiten, die einen W3C-Tag beschreiben und will sie nach Datum sortiert haben.“

SELECT ?x ?yWHERE {

?x a page .?x about „W3C-Tag“ .?x date ?y .

}ORDER BY ?y

Page 19: Verknüpfte Daten abfragen mit SPARQL - W3C-Tag 2008 · T. Tikwinski, W3C Tag 2008 4 SPARQL im Zusammenhang RDF: die Faktenbasis SPARQL: die Abfragesprache Triple-Store: speichert

T. Tikwinski, W3C Tag 2008

19

Sortieren (2)

„Ich suche alle Seiten, die einen W3C-Tag beschreiben und will sie nach Datum absteigend sortiert haben.“

SELECT ?x ?yWHERE {

?x a page .?x about „W3C-Tag“ .?x date ?y .

}ORDER BY DESC(?y)

Page 20: Verknüpfte Daten abfragen mit SPARQL - W3C-Tag 2008 · T. Tikwinski, W3C Tag 2008 4 SPARQL im Zusammenhang RDF: die Faktenbasis SPARQL: die Abfragesprache Triple-Store: speichert

T. Tikwinski, W3C Tag 2008

20

Ergebnisse steuern

SELECT – erzeugt ein Result Set (Liste)

ASK – erzeugt ein boolsches Ergebnis (yes/no)

CONSTRUCT – erzeugt RDF nach Vorlage

DESCRIBE – exportiert RDF Tripel aus dem bestehenden Graph

SELECT DISTINCT – beseitigt Dubletten

OFFSET x – lässt die ersten X Ergebnisse weg

LIMIT x – beschränkt die Liste auf X Ergebnisse

Page 21: Verknüpfte Daten abfragen mit SPARQL - W3C-Tag 2008 · T. Tikwinski, W3C Tag 2008 4 SPARQL im Zusammenhang RDF: die Faktenbasis SPARQL: die Abfragesprache Triple-Store: speichert

T. Tikwinski, W3C Tag 2008

21

Fazit

SPARQL ist eine deskriptive Anfragesprache + Protokoll für RDF-Daten

Die Syntax ist SQL recht ähnlich

Ergebnisse können als Liste oder in RDF ausgegeben werden

Effizienter Umgang mit optionalen Daten ist möglich

Mehrere Datenquellen (auch externe) können gleichzeitig abgefragt werden

Filtern und Sortieren eingebaut

Standard-Datentypen eingebaut

Leicht zu lernen, ein paar Tücken in der Lernkurve