Verknüpfte Daten abfragen mit SPARQL - W3C

Werbung
Verknüpfte Daten abfragen
mit SPARQL
Thomas Tikwinski, W3C.DE/AT
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
2
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
3
SPARQL im Zusammenhang
RDF: die Faktenbasis
SPARQL: die Abfragesprache
Triple-Store: speichert RDF-Daten
SPARQL-Server: führt die SPARQLAnfragen aus
HTTP-Binding: SPARQL-Anfragen aus
dem Web stellen
T. Tikwinski, W3C Tag 2008
4
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
5
Beispiel
„Ich suche eine Seite, die den W3C-Tag
beschreibt.“
über
Subjekt: x vom Typ „Seite“
Prädikat: „über“
Objekt „W3C-Tag“
SUCHE ?x
WOBEI
{
?x ist eine Seite .
?x über „W3C-Tag“
}
Seite
W3C-Tag
T. Tikwinski, W3C Tag 2008
6
Beispiel (2)
Ergebnis:
=====================
X
=====================
<http://www.w3c-tag.de/>
=====================
T. Tikwinski, W3C Tag 2008
7
Beispiel – jetzt mit SPARQL
„Ich suche eine Seite, die den W3C-Tag
beschreibt.“
about
Subjekt: x vom Typ „Page“
Prädikat: „about“
Objekt „W3C-Tag“
SELECT ?x
WHERE
{
?x a page .
?x about „W3C-Tag“ .
}
Page
W3C-Tag
T. Tikwinski, W3C Tag 2008
8
Beispiel – jetzt mit SPARQL (2)
Result:
=====================
X
=====================
<http://www.w3c-tag.de/>
=====================
T. Tikwinski, W3C Tag 2008
9
Arbeiten mit Variablen
„Ich suche eine Seite, die den W3C-Tag
beschreibt und will wissen, wann der
stattfindet.“
SELECT ?x ?y
WHERE
{
?x a page .
?x about „W3C-Tag“ .
?x date ?y .
}
T. Tikwinski, W3C Tag 2008
10
Arbeiten mit Variablen
Result:
=====================
X
=====================
<http://www.w3c-tag.de/>
=====================
Y
=====================
24.09.08
=====================
T. Tikwinski, W3C Tag 2008
11
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 ?z
WHERE
{
?x a page .
?x about „W3C-Tag“ .
?x date ?y .
OPTIONAL ( ?x topic ?z . )
}
T. Tikwinski, W3C Tag 2008
12
Abfragen mehrerer Graphen
http://example.com/graph1
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
}
T. Tikwinski, W3C Tag 2008
13
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
14
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
15
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
16
Filtern
„Ich suche eine Seite, die den W3C-Tag
beschreibt und will wissen, wann der
in 2008 stattfindet.“
SELECT ?x ?y
WHERE
{
?x a page .
?x about „W3C-Tag“ .
?x date ?y .
FILTER ( ?y >= 01.01.2008 &&
?y < 01.01.2009 )
}
T. Tikwinski, W3C Tag 2008
17
Sortieren
„Ich suche alle Seiten, die einen W3C-Tag
beschreiben und will sie nach Datum
sortiert haben.“
SELECT ?x ?y
WHERE
{
?x a page .
?x about „W3C-Tag“ .
?x date ?y .
}
ORDER BY ?y
T. Tikwinski, W3C Tag 2008
18
Sortieren (2)
„Ich suche alle Seiten, die einen W3C-Tag
beschreiben und will sie nach Datum
absteigend sortiert haben.“
SELECT ?x ?y
WHERE
{
?x a page .
?x about „W3C-Tag“ .
?x date ?y .
}
ORDER BY DESC(?y)
T. Tikwinski, W3C Tag 2008
19
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
20
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
T. Tikwinski, W3C Tag 2008
21
Herunterladen