Verknüpfte Daten abfragen mit SPARQL - W3C-Tag 2008 · T. Tikwinski, W3C Tag 2008 4 SPARQL im...

Preview:

Citation preview

Verknüpfte Daten abfragenmit SPARQL

Thomas Tikwinski, W3C.DE/AT

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

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

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

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.

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

T. Tikwinski, W3C Tag 2008

7

Beispiel (2)

Ergebnis:

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

X

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

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

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

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

T. Tikwinski, W3C Tag 2008

9

Beispiel – jetzt mit SPARQL (2)

Result:

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

X

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

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

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

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 .

}

T. Tikwinski, W3C Tag 2008

11

Arbeiten mit Variablen

Result:

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

X

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

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

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

Y

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

24.09.08

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

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

}

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

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

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

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

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 )}

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

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)

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

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

Recommended