sparql - university of belgrade

48
SPARQL NIKOLA MILIKI Ć EMAIL: [email protected] URL: http://nikola.milikic.info

Upload: others

Post on 02-Oct-2021

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: SPARQL - University of Belgrade

SPARQLNIKOLA MILIKIĆ

EMAIL: [email protected]

URL: http://nikola.milikic.info

Page 2: SPARQL - University of Belgrade

Semantic Web Layer Cake

Page 3: SPARQL - University of Belgrade

Šta je SPARQL?

• SPARQL - SPARQL Protocol and RDF Query Language

• Omogućava izvršenje upita nad RDF bazom podataka (ili triple store)

• SPARQL ≈ SQL

Page 4: SPARQL - University of Belgrade

Šta je SPARQL?

Omogućava:

• Izvlaćenje vrednosti iz strukturiranih i polu-strukturiranih podataka

• Istraživanje strukture podataka

• Spajanja podataka koji dolaze iz različitih baza, a uz pomoć jednog, prostog upita

• Transformaciju RDF podataka iz jednog vokabulara u drugi

Page 5: SPARQL - University of Belgrade

SPARQL u akciji

SPARQL upit definiše obrazac (šablon) rezultujućih tripleta koji se zovegraf patern

Page 6: SPARQL - University of Belgrade

Varijable graf paterna

SPARQL varijable počinju sa ? ili $ i mogu predstavljati bilo koji deo tripleta.

Graf paterni su kao RDF tripleti s tim što neki delovi tripleta mogu biti zamenjeni varijablom.

RDF triplet:

ex:John schema:name “John” .

Graph pattern:

?person schema:name “John” .

Page 7: SPARQL - University of Belgrade

Vrste SPARQL upita

SELECT

ASK

CONSTRUCT

DESCRIBE

Page 8: SPARQL - University of Belgrade

Struktura upita

# definisanje prefiksaPREFIX foo: <http://example.com/resources/>...

# ako se izvršava nad eksternim izvorimaFROM ...

# vrednosti koje će biti rezultat upitaSELECT ...

# graf paternWHERE {

…}

# modifikatori upitaORDER BY ...

Page 9: SPARQL - University of Belgrade

Primer – Graf 1

schema:Person ex:TallPerson

personSusan personBob personCatherine

book1

“Susan” 175 “Bob” 190 “Catherine”

schema:Book

rdf:type rdf:typerdf:type

rdf:type

schema:name schema:name schema:nameschema:height schema:height

rdf:type

schema:creator

Page 10: SPARQL - University of Belgrade

Primer – Graf 1 – tekstualni oblik

personSusan rdf:type schema:Person .

personSusan schema:name “Susan” .

personSusan schema:height 175 .

personSusan schema:autor book1 .

personBob rdf:type schema:Person .

personBob schema:name “Bob” .

personBob schema:height 190.

personCatherine rdf:type schema:Person .

personCatherine rdf:type ex:TallPerson .

personCatherine schema:name “Catherine” .

book1 rdf:type schema:Book .

Page 11: SPARQL - University of Belgrade

Pretpostavke

U primerima ćemo koristiti sledeće prefikse:

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

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

PREFIX ex: <http://example.com/schema#>

Page 12: SPARQL - University of Belgrade

Q1: Vrati sve osobe

SELECT ?person

WHERE {

?person rdf:type schema:Person .

}

Page 13: SPARQL - University of Belgrade

Q1 – Graf

schema:Person ex:TallPerson

personSusan personBob personCatherine

book1

“Susan” 175 “Bob” 190 “Catherine”

schema:Book

rdf:type rdf:typerdf:type rdf:type

schema:name schema:name schema:nameschema:height schema:height

rdf:type

schema:creator

Page 14: SPARQL - University of Belgrade

Rezulat upita Q1 nad podacima Graf 1

personpersonSusanpersonBobpersonCatherine

Page 15: SPARQL - University of Belgrade

Q2: osobe i njihova imena

SELECT ?person ?name

WHERE {

?person rdf:type schema:Person .

?person schema:name ?name .

}

Page 16: SPARQL - University of Belgrade

Q2 – Graf

schema:Person ex:TallPerson

personSusan personBob personCatherine

book1

“Susan” 175 “Bob” 190 “Catherine”

schema:Book

rdf:type rdf:typerdf:type

rdf:type

schema:name schema:name schema:nameschema:height schema:height

rdf:type

schema:creator

Page 17: SPARQL - University of Belgrade

Rezulat upita Q1 nad podacima Graf 1

person namepersonSusan “Susan”personBob “Bob”personCatherine “Catherine”

Page 18: SPARQL - University of Belgrade

FILTER

• Definisanje ograničenja vrednosti u graf paternu (npr. numeričkaograničenja X>180 )

• Mogu se koristiti boolean operatori, kao i regularni izrazi (regex)

Page 19: SPARQL - University of Belgrade

Q2: Osobe više od 180 cm

SELECT ?person ?name

WHERE {

?person rdf:type schema:Person .

?person schema:name ?name .

?person schema:height ?height .

FILTER ( ?height > 180 )

}

Page 20: SPARQL - University of Belgrade

Primer – Graf 1

schema:Person ex:TallPerson

personSusan personBob personCatherine

book1

“Susan” 175 “Bob” 190 “Catherine”

schema:Book

rdf:type rdf:typerdf:type

rdf:type

schema:name schema:name schema:nameschema:height schema:height

rdf:type

schema:creator

Page 21: SPARQL - University of Belgrade

Rezulat upita Q2 nad podacima Graf 1

person namepersonBob “Bob”

Page 22: SPARQL - University of Belgrade

OPTIONAL

• Deo graf paterna se može definisati kao opcioni koristeći ključnu rečOPTIONAL.

Page 23: SPARQL - University of Belgrade

SELECT ?person ?name ?height

WHERE {

?person rdf:type schema:Person .?person schema:name ?name .

OPTIONAL { ?person schema:height ?height }}

Q3: Vratiti visinu ako postojipodatak o njoj

Page 24: SPARQL - University of Belgrade

Primer – Graf 1

schema:Person ex:TallPerson

personSusan personBob personCatherine

book1

“Susan” 175 “Bob” 190 “Catherine”

schema:Book

rdf:type rdf:typerdf:type

rdf:type

schema:name schema:name schema:nameschema:height schema:height

rdf:type

schema:creator

Page 25: SPARQL - University of Belgrade

Rezulat upita Q3 nad podacima Graf 1

person name heightpersonSusan “Susan” 175personBob “Bob” 190personCatherine “Catherine”

Page 26: SPARQL - University of Belgrade

UNION

• Definiše alternative u graf paternu. Rezultat upita su rešenja svihispunjenih alternativa.

Page 27: SPARQL - University of Belgrade

Q4: Visoke osobe definisaneeksplicitno ili implicitnoSELECT ?person ?nameWHERE {

?person rdf:type schema:Person .?person schema:name ?name .{

{ ?person rdf:type ex:TallPerson

.}UNION{

?person schema:height ?height .FILTER ( ?height > 180 )

}}

}

Page 28: SPARQL - University of Belgrade

Primer – Graf 1

schema:Person ex:TallPerson

personSusan personBob personCatherine

book1

“Susan” 175 “Bob” 190 “Catherine”

schema:Book

rdf:type rdf:typerdf:type

rdf:type

schema:name schema:name schema:nameschema:height schema:height

rdf:type

schema:creator

Page 29: SPARQL - University of Belgrade

Rezulat upita Q4 nad podacima Graf 1

person namepersonBob “Bob”personCatherine “Catherine”

Page 30: SPARQL - University of Belgrade

Sortiranje i paginacija

ORDER BY za sortiranje

LIMIT broj rezultata

OFFSET pomeraj prvog rezultata

Page 31: SPARQL - University of Belgrade

Q5: Rezultati od pozicije 21 do 30 sortiranipo imenu

SELECT ?person ?name

WHERE {

?person rdf:type schema:Person .

?person schema:name ?name .}

ORDER BY ?nameLIMIT 10OFFSET 20

Page 32: SPARQL - University of Belgrade

BOUND

• Proverava da li varijabla ima vrednost ili ne. Može se koristiti i u negaciji.

Page 33: SPARQL - University of Belgrade

Q6: osobe koje nisu kreatori nijednogdela

SELECT ?person ?name

WHERE {

?person rdf:type schema:Person .

?person schema:name ?name .

OPTIONAL ( ?person schema:creator ?x )

FILTER ( !bound(?x) )

}

Page 34: SPARQL - University of Belgrade

Primer – Graf 1

schema:Person ex:TallPerson

personSusan personBob personCatherine

book1

“Susan” 175 “Bob” 190 “Catherine”

schema:Book

rdf:type rdf:typerdf:type

rdf:type

schema:name schema:name schema:nameschema:height schema:height

rdf:type

schema:creator

Page 35: SPARQL - University of Belgrade

Rezulat upita Q6 nad podacima Graf 1

person namepersonBob “Bob”personCatherine “Catherine”

Page 36: SPARQL - University of Belgrade

ASK

• Koristi se za proveru da li neki upit ima rezultat ili ne

• Vraća true ili false. Ne dobijaju se nikakvi podaci o mogućimrezultatima upita, već samo da li postoji rezultat ili ne

Page 37: SPARQL - University of Belgrade

Q7: Da li postoje osobe više od 180 cm?

ASK

{

?person schema:height ?height .

FILTER (?height > 180)

}

Page 38: SPARQL - University of Belgrade

Rezulat upita Q7 nad podacima Graf 1

true

Page 39: SPARQL - University of Belgrade

CONSTRUCT

• Kreira novi RDF graf na osnovu rezultata upita

• CONSTRUCT upit za RDF graf pruža slične funkcionalnosti kaoXSLT za XML podatke

Page 40: SPARQL - University of Belgrade

Q8: Vraća graf sa instancama klaseTallPerson za osobe više od 180 cm

CONSTRUCT

{

?person rdf:type ex:TallPerson .

}

WHERE

{

?person rdf:type schema:Person .

?person schema:height ?height .

FILTER (?height > 180) }

Page 41: SPARQL - University of Belgrade

Rezulat upita Q8 nad podacima Graf 1

personBob rdf:type ex:TallPerson .

Page 42: SPARQL - University of Belgrade

DESCRIBE

• Vraća graf koji sadrži sve relacije (propertije) resursa koji su opisanigraf paternom

Page 43: SPARQL - University of Belgrade

Q9: vratiti sve informacije o osobi kojase zove “Susan”DESCRIBE ?person

WHERE {

?person rdf:type schema:Person .

?person schema:name “Susan” .

}

Page 44: SPARQL - University of Belgrade

Rezulat upita Q9 nad podacima Graf 1

personSusan rdf:type schema:Person .

personSusan schema:name “Susan” .

personSusan schema:height 175 .

personSusan schema:autor book1 .

Page 45: SPARQL - University of Belgrade

Korisni linkovi

“SPARQL By Example”, Lee Feigenbaum, Eric Prud'hommeaux, http://www.cambridgesemantics.com/semantic-university/sparql-by-example

“Bee Node: A FOAF Tale”, Leigh Dodds, http://www.ldodds.com/blog/2008/01/bee-node-a-foaf-tale/

SPARQL Query Language for RDF – specification http://www.w3.org/TR/rdf-sparql-query/

Page 46: SPARQL - University of Belgrade

Zahvalnica

Deo sadržaja preuzet sa:

• “SPARQL in a nutshell”, Fabien Gandon, http://www.slideshare.net/fabien_gandon/sparql-in-a-nutshell

Page 47: SPARQL - University of Belgrade

(Anonimni) upitnik za vaše kritike, komentare, predloge:

http://goo.gl/cqdp3I

Page 48: SPARQL - University of Belgrade

Pitanja?Nikola Milikić

Email: [email protected]

URL: http://nikola.milikic.info