65
SPARQL - SPARQL Protocol and RDF Query Language These slides are partly inspired from the tutorial ARQ : h7p://jena.apache.org/tutorials/sparql.html 1 Philippe Genoud, UFR IM2AG, UGA Manuel Atencia Arcas, UFR SHS, UGA

SPARQL - SPARQL Protocol and RDF Query Languageimss-atenciam/SWXO/3-sparql.pdf · Querying RDF data: SPARQL 2% SPARQL'Protocol'And'RDF'Query'Language Linked Data : 3rd Principe When

  • Upload
    others

  • View
    17

  • Download
    0

Embed Size (px)

Citation preview

Page 1: SPARQL - SPARQL Protocol and RDF Query Languageimss-atenciam/SWXO/3-sparql.pdf · Querying RDF data: SPARQL 2% SPARQL'Protocol'And'RDF'Query'Language Linked Data : 3rd Principe When

SPARQL - SPARQL Protocol and RDF Query Language

These%slides%are%partly%inspired%from%the%tutorial%ARQ%:%h7p://jena.apache.org/tutorials/sparql.html%

%

1%

Philippe%Genoud,%UFR%IM2AG,%UGA%Manuel%Atencia%Arcas,%UFR%SHS,%UGA%

Page 2: SPARQL - SPARQL Protocol and RDF Query Languageimss-atenciam/SWXO/3-sparql.pdf · Querying RDF data: SPARQL 2% SPARQL'Protocol'And'RDF'Query'Language Linked Data : 3rd Principe When

Querying RDF data: SPARQL

2%

SPARQL'Protocol'And'RDF'Query'Language

Linked Data : 3rd Principe When someone looks up a URI, provide useful

information, using the standards (RDF, SPARQL).

Page 3: SPARQL - SPARQL Protocol and RDF Query Languageimss-atenciam/SWXO/3-sparql.pdf · Querying RDF data: SPARQL 2% SPARQL'Protocol'And'RDF'Query'Language Linked Data : 3rd Principe When

SPARQL : Introduction

•  RDF:%Resource%DescripIon%Framework%–  it%provides%a%flexible%and%extensible%way%to%represent%informaIon%about%

resources%of%the%web%

•  SPARQL:%SPARQL%Protocol%And%RDF%Query%Language%–  a%query%language%to%access%RDF%graphs%(SPARQL%Query%Language%

SpecificaIon)%inspired%from%SQL%–  a%protocol%to%submit%requests%through%HTTP%GET,%HTTP%POST%or%SOAP%

(SPARQL%Protocol%for%RDF%SpecificaIon)%–  an%XML%format%for%the%results%(SPARQL%Query%XML%Results%Format),%and%

now%JSON%–  a%W3C%standard%

•  SPARQL%1.0%recommendaIon%–%January%2008%•  SPARQL%1.1%recommendaIon%–%March%2013%

3%

h7p://www.w3.org/TR/2013/REC`sparql11`overview`20130321/%

Page 4: SPARQL - SPARQL Protocol and RDF Query Languageimss-atenciam/SWXO/3-sparql.pdf · Querying RDF data: SPARQL 2% SPARQL'Protocol'And'RDF'Query'Language Linked Data : 3rd Principe When

SPARQL Protocol And RDF Query Language overview

4%

HTTP!

SPARQL)Protocol)Layer!

Client% Serveur%

SPARQL' Endpoint

interface'u;lisateur

a'request'language'to'query'RDF'graphs'(SPARQL'RDF'Query'Language)

a'protocol'to'submit'SPARQL'requests'over'HTTP (SPARQL'protocol'for'RDF'Specifica;on)

an'XML'output'format'(JSON,'…)'for'SPARQL'query'results'(SPARQL'Query'XML'Results'Format)

Page 5: SPARQL - SPARQL Protocol and RDF Query Languageimss-atenciam/SWXO/3-sparql.pdf · Querying RDF data: SPARQL 2% SPARQL'Protocol'And'RDF'Query'Language Linked Data : 3rd Principe When

SPARQL Query Language

5%

•  find%all%restaurants%that%are%less%than%1km%away%from%Fort%Saint`Pierre%(Théâtre%de%la%Mer%–%Sète)%

Prefix!rdfs:!<http://www.w3.org/2000/01/rdf8schema#>!Prefix!ogc:!!<http://www.opengis.net/ont/geosparql#>!Prefix!geom:!<http://geovocab.org/geometry#>!Prefix!lgdo:!<http://linkedgeodata.org/ontology/>!!Select!?s,!?l!From!<http://linkedgeodata.org>!!Where!{!!!!!!!?s!!!!a!lgdo:Restaurant!;!!!!!!!!!!!!!!!!rdfs:label!?l!;!!!!!!!!!!!!!!!!!!!!geom:geometry![!!!!!!!!!!!!!!!!!!!!!ogc:asWKT!?g!!!!!!!!!!!!!!!!]!.!!!!!!!!!!!Filter(bif:st_intersects!(?g,!bif:st_point!(3.692764,!43.393794),!1))!.!}!

Page 6: SPARQL - SPARQL Protocol and RDF Query Languageimss-atenciam/SWXO/3-sparql.pdf · Querying RDF data: SPARQL 2% SPARQL'Protocol'And'RDF'Query'Language Linked Data : 3rd Principe When

SPARQL Query Language

6%

Prefix!rdfs:!<http://www.w3.org/2000/01/rdf8schema#>!Prefix!ogc:!!<http://www.opengis.net/ont/geosparql#>!Prefix!geom:!<http://geovocab.org/geometry#>!Prefix!lgdo:!<http://linkedgeodata.org/ontology/>!!Select!?s,!?l!From!<http://linkedgeodata.org>!!Where!{!!!!!!!?s!!!!a!lgdo:Restaurant!;!!!!!!!!!!!!!!!!rdfs:label!?l!;!!!!!!!!!!!!!!!!!!!!geom:geometry![!!!!!!!!!!!!!!!!!!!!!ogc:asWKT!?g!!!!!!!!!!!!!!!!]!.!!!!!!!!!!!Filter(bif:st_intersects!(?g,!bif:st_point!(3.692764,!43.393794),!1))!.!}!

s?)lgdo:Restaurant)

rdf:type)

?l)

?g)_:)

ogc:asWKT)

s?)

?l)

?g)

filter'over'the'variable'?g'which'allows'to'restrict'the'results

variable

Graph'PaQern:'RDF'triple'containing'one'or'more'variables'at'any'posi;on'(sujet,'prédicat,'objet)

•  SPARQL'based'on: –  Turtle'serializa;on'of'RDF

–  Graph'PaQern'Matching

Page 7: SPARQL - SPARQL Protocol and RDF Query Languageimss-atenciam/SWXO/3-sparql.pdf · Querying RDF data: SPARQL 2% SPARQL'Protocol'And'RDF'Query'Language Linked Data : 3rd Principe When

SPARQL Protocol

7%

HTTP!

SPARQL)Protocol)Layer!

Client% Serveur%

SPARQL)request)over)HTTP):)SPARQL)URI)

Prefix!rdfs:!<http://www.w3.org/2000/01/rdf8schema#>!Prefix!ogc:!!<http://www.opengis.net/ont/geosparql#>!Prefix!geom:!<http://geovocab.org/geometry#>!Prefix!lgdo:!<http://linkedgeodata.org/ontology/>!!Select!?s,!?l!From!<http://linkedgeodata.org>!!Where!{!!!!!!!?s!!!!a!lgdo:Restaurant!;!!!!!!!!!!!!!!!!rdfs:label!?l!;!!!!!!!!!!!!!!!!!!!!geom:geometry![!!!!!!!!!!!!!!!!!!!!!ogc:asWKT!?g!!!!!!!!!!!!!!!!]!.!!!!!!!!!!!Filter(bif:st_intersects!(?g,!bif:st_point!(3.692764,!43.393794),!1))!.!}!

SPARQL'Query Language

•  SPARQL'query'(SPARQL'URI)'has'4'components

h*p://linkedgeodata.org/sparql?default>graph>uri=h7p%3A%2F%2Flinkedgeodata.org%&query=Prefix+rdfs%3A+%3Ch7p%3A%2F%2Fwww.w3.org%2F2000%2F01%2Frdf`schema%23%3E%0D%0APrefix+ogc%3A+%3Ch7p%3A%2F%2Fwww.opengis.net%2Font%2Fgeosparql%23%3E%0D%0APrefix+geom%3A+%3Ch7p%3A%2F%2Fgeovocab.org%2Fgeometry%23%3E%0D%0APrefix+lgdo%3A+%3Ch7p%3A%2F%2Flinkedgeodata.org%2Fontology%2F%3E%0D%0A%0D%0ASelect+*%0D%0AFrom+%3Ch7p%3A%2F%2Flinkedgeodata.org%3E+%7B%0D%0A++%3Fs%0D%0A++++a+lgdo%3ARestaurant+%3B%0D%0A++++rdfs%3Alabel+%3Fl+%3B++++%0D%0A++++geom%3Ageometry+%5B%0D%0A++++++ogc%3AasWKT+%3Fg%0D%0A++++%5D+.%0D%0A%0D%0A++++Filter%28bif%3Ast_intersects+%28%3Fg%2C+bif%3Ast_point+%283.692764%2C+43.393794%29%2C+1%29%29+.%0D%0A%7D&format=applicaIon%2Fsparql`results%2Bxml%

the%SPARQL%endpoint%URL%http://linkedgeodata.org/sparql%

Output%format%format=application/sparqlHresults+xml)(text/html,%json…)%

The%RDF%graphs%to%request%(opIonal)%default8graph=http://linkedgeodata.org)named8graph8uri=...%the%query%string%

Page 8: SPARQL - SPARQL Protocol and RDF Query Languageimss-atenciam/SWXO/3-sparql.pdf · Querying RDF data: SPARQL 2% SPARQL'Protocol'And'RDF'Query'Language Linked Data : 3rd Principe When

SPARQL : Output Format (XML)

8%

HTTP!

SPARQL)Protocol)Layer!

Client% Serveur%

Prefix!rdfs:!<http://www.w3.org/2000/01/rdf8schema#>!Prefix!ogc:!!<http://www.opengis.net/ont/geosparql#>!Prefix!geom:!<http://geovocab.org/geometry#>!Prefix!lgdo:!<http://linkedgeodata.org/ontology/>!!Select!?s,!?l!From!<http://linkedgeodata.org>!!Where!{!!!!!!!?s!!!!a!lgdo:Restaurant!;!!!!!!!!!!!!!!!!rdfs:label!?l!;!!!!!!!!!!!!!!!!!!!!geom:geometry![!!!!!!!!!!!!!!!!!!!!!ogc:asWKT!?g!!!!!!!!!!!!!!!!]!.!!!!!!!!!!!Filter(bif:st_intersects!(?g,!bif:st_point!(3.692764,!43.393794),!1))!.!}!

SPARQL'Query Language

SPARQL)request)over)HTTP):)SPARQL)URI)

résultat)de)sortie)Formaté)(XML,)JSON...))

Variables'from'the'SELECT'clause

one'result'element'for'each'row'in'the'

result'set binding'of'one'of'the'variables'of'this'result'

element

Page 9: SPARQL - SPARQL Protocol and RDF Query Languageimss-atenciam/SWXO/3-sparql.pdf · Querying RDF data: SPARQL 2% SPARQL'Protocol'And'RDF'Query'Language Linked Data : 3rd Principe When

SPARQL Query Language (1.0)

Source:'Pérez,'Arenas'and'Gu;errez,'Chapter'1:'On'the'Seman;cs'of'SPARQL,'Seman;c'Web'Informa;on'Management:'A'Model'Based'Perspec;ve,'Springer'2010

9%

Page 10: SPARQL - SPARQL Protocol and RDF Query Languageimss-atenciam/SWXO/3-sparql.pdf · Querying RDF data: SPARQL 2% SPARQL'Protocol'And'RDF'Query'Language Linked Data : 3rd Principe When

A simple query with SPARQL •  the%RDF%data%graph%

10%

Page 11: SPARQL - SPARQL Protocol and RDF Query Languageimss-atenciam/SWXO/3-sparql.pdf · Querying RDF data: SPARQL 2% SPARQL'Protocol'And'RDF'Query'Language Linked Data : 3rd Principe When

A simple query with SPARQL •  the%RDF%data%graph%

11%

an'RDFS'vocabulary'corresponding'to'the'vCard'IETF'specifica;on'(RFC6350)'(http://tools.ietf.org/html/rfc6350)

http://www.w3.org/2001/vcardHrdf/3.0)

Page 12: SPARQL - SPARQL Protocol and RDF Query Languageimss-atenciam/SWXO/3-sparql.pdf · Querying RDF data: SPARQL 2% SPARQL'Protocol'And'RDF'Query'Language Linked Data : 3rd Principe When

12%

http://www.w3.org/2001/vcardHrdf/3.0#N)

hash'URI' (URI'with'fragment)

updated'in'May'2014'(RDF/OWL) http://www.w3.org/TR/vcardHrdf/)

Page 13: SPARQL - SPARQL Protocol and RDF Query Languageimss-atenciam/SWXO/3-sparql.pdf · Querying RDF data: SPARQL 2% SPARQL'Protocol'And'RDF'Query'Language Linked Data : 3rd Principe When

A simple query with SPARQL @prefix vCard: <http://www.w3.org/2001/vcard-rdf/3.0#> . @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .

<http://somewhere/MattJones/>

vCard:FN "Matt Jones" ;

vCard:N [ vCard:Family "Jones" ;

vCard:Given "Matthew"

] . <http://somewhere/RebeccaSmith/> vCard:FN "Becky Smith" ; vCard:N [ vCard:Family "Smith" ; vCard:Given "Rebecca" ] . <http://somewhere/JohnSmith/> vCard:FN "John Smith" ; vCard:N [ vCard:Family "Smith" ; vCard:Given "John" ] . <http://somewhere/SarahJones/> vCard:FN "Sarah Jones" ; vCard:N [ vCard:Family "Jones" ; vCard:Given "Sarah". ]

•  RDF%data%graph%in%Turtle%notaIon

13%

subject%

predicate% object%

blank%node%

<http://somewhere/MattJones/>

"Matt Jones" %

vCard:FNA vCard:NA

"Jones" %

vCard:FamilyA vCard:GivenA

"Matthew" %

Page 14: SPARQL - SPARQL Protocol and RDF Query Languageimss-atenciam/SWXO/3-sparql.pdf · Querying RDF data: SPARQL 2% SPARQL'Protocol'And'RDF'Query'Language Linked Data : 3rd Principe When

A simple query with SPARQL

@prefix vCard: <http://www.w3.org/2001/vcard-rdf/3.0#> . @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . <http://somewhere/MattJones/> vCard:FN "Matt Jones" . <http://somewhere/MattJones/> vCard:N _:b0 . _:b0 vCard:Family "Jones" . _:b0 vCard:Given "Matthew" . <http://somewhere/RebeccaSmith/> vCard:FN "Becky Smith" . <http://somewhere/RebeccaSmith/> vCard:N _:b1 . _:b1 vCard:Family "Smith" . _:b1 vCard:Given "Rebecca" . <http://somewhere/JohnSmith/> vCard:FN "John Smith" . <http://somewhere/JohnSmith/> vCard:N _:b2 . _:b2 vCard:Family "Smith" . _:b2 vCard:Given "John" . <http://somewhere/SarahJones/> vCard:FN "Sarah Jones" . <http://somewhere/SarahJones/> vCard:N _:b3 . _:b3 vCard:Family "Jones" . _:b3 vCard:Given "Sarah" .

•  another way to represent blank nodes:%

14%

blank%node%

Page 15: SPARQL - SPARQL Protocol and RDF Query Languageimss-atenciam/SWXO/3-sparql.pdf · Querying RDF data: SPARQL 2% SPARQL'Protocol'And'RDF'Query'Language Linked Data : 3rd Principe When

A simple query with SPARQL

SELECT ?x WHERE { ?x <http://www.w3.org/2001/vcard-rdf/3.0#FN> "John Smith" }

variable triple pattern:'RDF'triple'containing'one'ore'more'variables'in'any'posi;on'(subject,'property,'object)

15%

match'the'triple'paQern'in'the'WHERE'clause'against'the'

triples'in'the'RDF'graph

--------------------------------- | x | ================================= | <http://somewhere/JohnSmith/> | ---------------------------------

possible'bindings'for'variable'x

Page 16: SPARQL - SPARQL Protocol and RDF Query Languageimss-atenciam/SWXO/3-sparql.pdf · Querying RDF data: SPARQL 2% SPARQL'Protocol'And'RDF'Query'Language Linked Data : 3rd Principe When

---------------------------------------------------- | x | name | ==================================================== | <http://somewhere/RebeccaSmith/> | "Becky Smith" | | <http://somewhere/SarahJones/> | "Sarah Jones" | | <http://somewhere/JohnSmith/> | "John Smith" | | <http://somewhere/MattJones/> | "Matt Jones" | ----------------------------------------------------

Another simple query with SPARQL SELECT ?x ?fname WHERE { ?x <http://www.w3.org/2001/vcard-rdf/3.0#FN> ?fname }

It'is'possible'to'have'more'than'one'variable'in'the'triple'paQern

16%

Page 17: SPARQL - SPARQL Protocol and RDF Query Languageimss-atenciam/SWXO/3-sparql.pdf · Querying RDF data: SPARQL 2% SPARQL'Protocol'And'RDF'Query'Language Linked Data : 3rd Principe When

A third simple SPARQL request

SELECT ?givenName WHERE { ?y <http://www.w3.org/2001/vcard-rdf/3.0#Family> "Smith" . ?y <http://www.w3.org/2001/vcard-rdf/3.0#Given> ?givenName . }

17%

matches when the triple patterns all match with the same value used each time the variable with the same name is used

Basic pattern : set of triple patterns

------------- | givenName | ============= | "John" | | "Rebecca" | -------------

Page 18: SPARQL - SPARQL Protocol and RDF Query Languageimss-atenciam/SWXO/3-sparql.pdf · Querying RDF data: SPARQL 2% SPARQL'Protocol'And'RDF'Query'Language Linked Data : 3rd Principe When

A third simple SPARQL request SELECT)?givenName)

WHERE){))

))))?y))<http://www.w3.org/2001/vcardHrdf/3.0#Family>))"Smith").)

))))?y))<http://www.w3.org/2001/vcardHrdf/3.0#Given>))?givenName).)

})

results in XML format

------------- | givenName | ============= | "John" | | "Rebecca" | -------------

18%

<?xml version="1.0"?> <sparql xmlns="http://www.w3.org/2005/sparql-results#"> <head> <variable name="givenName"/> </head> <results> <result> <binding name="givenName"> <literal>Rebecca</literal> </binding> </result> <result> <binding name="givenName"> <literal>John</literal> </binding> </result> </results> </sparql>

Page 19: SPARQL - SPARQL Protocol and RDF Query Languageimss-atenciam/SWXO/3-sparql.pdf · Querying RDF data: SPARQL 2% SPARQL'Protocol'And'RDF'Query'Language Linked Data : 3rd Principe When

Q(ualified)Names There%is%shorthand%mechanism%for%wriIng%long%URIs%using%prefixes%

19%

%«%standards%»%prefixes%

SELECT ?givenName WHERE { ?y <http://www.w3.org/2001/vcard-rdf/3.0#Family> "Smith" . ?y <http://www.w3.org/2001/vcard-rdf/3.0#Given> ?givenName . }

PREFIX vcard: <http://www.w3.org/2001/vcard-rdf/3.0#> SELECT ?givenName WHERE { ?y vcard:Family "Smith" . ?y vcard:Given ?givenName . }

other%simplificaIons%(similar%to%Turtle)%

?x c:firstName ?y . ?x c:lastName ?z .

?x c:firstName ?y ; c:lastName ?z . ! triples%with%same%subject%

triples%with%same%subject%and%same%predicate%

?x c:name “Olivier” . ?x c:name “Laurent” .

?x c:name “Olivier” , “Laurent” . !

Prefix IRI .0 299 ::: : 1 # .0 9 .0 299 ::: : 1 # .0 -2/3 . 299 ::: : 1 # -2/3

Page 20: SPARQL - SPARQL Protocol and RDF Query Languageimss-atenciam/SWXO/3-sparql.pdf · Querying RDF data: SPARQL 2% SPARQL'Protocol'And'RDF'Query'Language Linked Data : 3rd Principe When

Exercise: Artemis' bookstore

20%

•  Artemis%owns%a%bookstore%and%she%has%been%convinced%of%the%benefits%of%using%semanIc%web%technologies.%

•  Thanks%to%a%semanIc%web%developper,%Artemis'%data%has%been%transformed%into%RDF%(see%artemisBookstoreData.7l).%

•  She%has%a%great%idea:%for%next%ValenIne's%day,%she%will%offer%a%special%discount%for%pairs%of%books%wri7en%by%married%couples%who%are%living%writers,%like%Paul%Auster%and%Siri%Hustvedt,%two%of%her%favourite%writers.%

•  Although%"being%married%with"%or%"being%alive"%is%not%informaIon%that%Artemis%can%find%in%her%local%data,%she%could%find%it%in%the%Linked%Open%Data%cloud%using%SPARQL.%Let's%see%how.%

Page 21: SPARQL - SPARQL Protocol and RDF Query Languageimss-atenciam/SWXO/3-sparql.pdf · Querying RDF data: SPARQL 2% SPARQL'Protocol'And'RDF'Query'Language Linked Data : 3rd Principe When

Exercise: Artemis' bookstore

21%

•  We%will%start%by%running%some%SPARQL%queries%at%DBpedia%SPARQL%endpoint%(h7p://dbpedia.org/sparql)%– Which%are%the%properIes%of%Paul%Auster%in%DBpedia?%– When%and%where%was%Paul%Auster%born?%– Which%are%the%classes%Paul%Auster%is%an%instance%of?%

Page 22: SPARQL - SPARQL Protocol and RDF Query Languageimss-atenciam/SWXO/3-sparql.pdf · Querying RDF data: SPARQL 2% SPARQL'Protocol'And'RDF'Query'Language Linked Data : 3rd Principe When

Filters

25%

•  Filters%:%allow%to%restrict%the%values%in%a%soluIon%–  Boolean%expression%the%request%soluIon%must%saIsfy%–  rich%expression%language%based%on%Xpath,%Xquery%and%special%operators%

defined%by%SPARQL%(see%secIon%11%of%SPARQL%specificaIon%document%%h7p://www.w3.org/TR/rdf`sparql`query/#tests)%

•  RelaIonal%operators:%<,!>,!=,!<=,!>=,!!=!•  Boolean%operators:%&&,!||,!!!•  ArithmeIc%operaIons:%+,!*,!8,!/!•  Variable%binding%tests:%%isURI(?x),!isBlank(?x),!isLiteral(?x),!!!!

bound(?x)%•  Regular%expressions:%regex(?x,!"^ali",!"i")!•  Access%to%a7ributes/values:%lang(),!datatype(),!str()!•  CasIng%(re`typing%funcIons):%xsd:integer(?x)!•  External%funcIons/extensions%

Page 23: SPARQL - SPARQL Protocol and RDF Query Languageimss-atenciam/SWXO/3-sparql.pdf · Querying RDF data: SPARQL 2% SPARQL'Protocol'And'RDF'Query'Language Linked Data : 3rd Principe When

Filters: Testing Values

26%

PREFIX info: <http://somewhere/peopleInfo#> SELECT ?resource WHERE { ?resource info:age ?age . FILTER (?age >= 24) }

--------------------------------- | resource | ================================= | <http://somewhere/JohnSmith/> | ---------------------------------

let's%add%an%age%property%to%some%persons%

The arithmetic expression must be in parentheses (round brackets)

23%

25%

>= 24 ?

<http://somewhere/RebeccaSmith/> info:age "23"^^xsd:integer ; vCard:FN "Becky Smith" ; vCard:N [ vCard:Family "Smith" ; vCard:Given "Rebecca" ].

Page 24: SPARQL - SPARQL Protocol and RDF Query Languageimss-atenciam/SWXO/3-sparql.pdf · Querying RDF data: SPARQL 2% SPARQL'Protocol'And'RDF'Query'Language Linked Data : 3rd Principe When

Filters: String matching

27%

PREFIX vcard: <http://www.w3.org/2001/vcard-rdf/3.0#> SELECT ?givenName WHERE { ?y vcard:Given ?givenName . FILTER regex(?givenName, "r", "i") }

Regular%expressions%to%test%strings%(like%LIKE%in%SQL%request)%

given%names%with%an%"r"%or%"R"%in%them% -------------

| givenName | ============= | "Rebecca" | | "Sarah" | -------------

FILTER regex(?x, "pattern" [, "flags"]) %syntax%

optional

XQuery regular expression language (similar to Perl) http://www.w3.org/TR/xpath-functions/#regex-syntax

case%insensiIve%

Page 25: SPARQL - SPARQL Protocol and RDF Query Languageimss-atenciam/SWXO/3-sparql.pdf · Querying RDF data: SPARQL 2% SPARQL'Protocol'And'RDF'Query'Language Linked Data : 3rd Principe When

Exercise: Artemis' bookstore

28%

•  Let's%conInue%querying%DBpedia%data:%– Which%are%the%relaIons%(if%there%is%any)%between%Paul%Auster%and%Siri%Hustvedt?%

–  Find%married%couples%who%are%writers%(remove%duplicates).%

Page 26: SPARQL - SPARQL Protocol and RDF Query Languageimss-atenciam/SWXO/3-sparql.pdf · Querying RDF data: SPARQL 2% SPARQL'Protocol'And'RDF'Query'Language Linked Data : 3rd Principe When

OPTIONALs •  SPARQL%has%the%ability%to%query%for%data%but%not%to%fail%when%that%data%does%not%

exist%•  the%OPTIONAL%part%of%a%query%can%extend%the%informaIon%found%in%the%query%

soluIon%but%the%non`opIonal%informaIon%is%returned%anyway%

31%

PREFIX info: <http://somewhere/peopleInfo#> PREFIX vcard: <http://www.w3.org/2001/vcard-rdf/3.0#> SELECT ?name ?age WHERE { ?person vcard:FN ?name . ?person info:age ?age . }

PREFIX info: <http://somewhere/peopleInfo#> PREFIX vcard: <http://www.w3.org/2001/vcard-rdf/3.0#> SELECT ?name ?age WHERE { ?person vcard:FN ?name .

OPTIONAL { ?person info:age ?age } }

%the%info:age%property%must%%be%present%in%a%soluIon%

the%triple%pa7ern%for%the%age%is%opFonal,%there%is%a%pa7ern%soluIon%for%the%people%who%don't%have%age%informaIon%

------------------------ | name | age | ======================= | "Becky Smith" | 23 | | "Sarah Jones" | | | "John Smith" | 25 | | "Matt Jones" | | -----------------------

----------------------- | name | age | ======================= | "Becky Smith" | 23 | | "John Smith" | 25 | -----------------------

Page 27: SPARQL - SPARQL Protocol and RDF Query Languageimss-atenciam/SWXO/3-sparql.pdf · Querying RDF data: SPARQL 2% SPARQL'Protocol'And'RDF'Query'Language Linked Data : 3rd Principe When

PREFIX info: <http://somewhere/peopleInfo#> PREFIX vcard: <http://www.w3.org/2001/vcard-rdf/3.0#> SELECT ?name ?age WHERE { ?person vcard:FN ?name . ?person info:age ?age }

the info:age property must be

present in a solution

OPTIONALs

32%

23%

25%

----------------------- | name | age | ======================= | "Becky Smith" | 23 | | "John Smith" | 25 | -----------------------

the info:age property must now be present in a solution

Page 28: SPARQL - SPARQL Protocol and RDF Query Languageimss-atenciam/SWXO/3-sparql.pdf · Querying RDF data: SPARQL 2% SPARQL'Protocol'And'RDF'Query'Language Linked Data : 3rd Principe When

PREFIX info: <http://somewhere/peopleInfo#> PREFIX vcard: <http://www.w3.org/2001/vcard-rdf/3.0#> SELECT ?name ?age WHERE { ?person vcard:FN ?name . OPTIONAL { ?person info:age ?age } }

the triple pattern for the age is optional, there is a pattern

solution for the people who don't have age

information

OPTIONALs

33%

23%

25%

------------------------ | name | age | ======================= | "Becky Smith" | 23 | | "Sarah Jones" | | | "John Smith" | 25 | | "Matt Jones" | | -----------------------

Page 29: SPARQL - SPARQL Protocol and RDF Query Languageimss-atenciam/SWXO/3-sparql.pdf · Querying RDF data: SPARQL 2% SPARQL'Protocol'And'RDF'Query'Language Linked Data : 3rd Principe When

PREFIX info: <http://somewhere/peopleInfo#> PREFIX vcard: <http://www.w3.org/2001/vcard-rdf/3.0#> SELECT ?name ?age WHERE { ?person vcard:FN ?name . OPTIONAL { ?person info:age ?age } }

OPTIONALs

34%

------------------------ | name | age | ======================= | "Becky Smith" | 23 | | "Sarah Jones" | | | "John Smith" | 25 | | "Matt Jones" | | -----------------------

OPTIONAL'is'a'binary'operator'that'combines'two'graph'paQerns.'If'the'group'matches,'the'solu;on'is'extended,'if'not,'the'original'solu;on'is'given ?person vcard:FN ?name .

---------------------------------------------------- | person | name | ==================================================== | <http://somewhere/RebeccaSmith/> | "Becky Smith" | | <http://somewhere/SarahJones/> | "Sarah Jones" | | <http://somewhere/JohnSmith/> | "John Smith" | | <http://somewhere/MattJones/> | "Matt Jones" | ----------------------------------------------------

?person info:age ?age .

------------------------------------------ | person | age | ========================================== | <http://somewhere/JohnSmith/> | 25 | | <http://somewhere/RebeccaSmith/> | 23 | ------------------------------------------

------------------------ | name | age | ======================= | "Becky Smith" | 23 | | "Sarah Jones" | | | "John Smith" | 25 | | "Matt Jones" | | -----------------------

Page 30: SPARQL - SPARQL Protocol and RDF Query Languageimss-atenciam/SWXO/3-sparql.pdf · Querying RDF data: SPARQL 2% SPARQL'Protocol'And'RDF'Query'Language Linked Data : 3rd Principe When

OPTIONALs with FILTERs •  The%opIonal%pa7ern%can%be%any%group%pa7ern%and%may%involve%any%SPARQL%

pa7ern%types,%e.g.%you%can%use%OPTIONAL%clauses%with%filters.%

35%

23%

25%

PREFIX info: <http://somewhere/peopleInfo#> PREFIX vcard: <http://www.w3.org/2001/vcard-rdf/3.0#> SELECT ?name ?age WHERE { ?person vcard:FN ?name . OPTIONAL { ?person info:age ?age . FILTER ( ?age > 24 ) } }

?

Page 31: SPARQL - SPARQL Protocol and RDF Query Languageimss-atenciam/SWXO/3-sparql.pdf · Querying RDF data: SPARQL 2% SPARQL'Protocol'And'RDF'Query'Language Linked Data : 3rd Principe When

OPTIONALs with FILTERs •  The%opIonal%pa7ern%can%be%any%group%pa7ern%and%may%involve%any%SPARQL%

pa7ern%types,%e.g.%you%can%use%OPTIONAL%clauses%with%filters.%

36%

23%

25%

PREFIX info: <http://somewhere/peopleInfo#> PREFIX vcard: <http://www.w3.org/2001/vcard-rdf/3.0#> SELECT ?name ?age WHERE { ?person vcard:FN ?name . OPTIONAL { ?person info:age ?age . FILTER ( ?age > 24 ) } }

------------------------ | name | age | ======================= | "Becky Smith" | | | "Sarah Jones" | | | "John Smith" | 25 | | "Matt Jones" | | -----------------------

Page 32: SPARQL - SPARQL Protocol and RDF Query Languageimss-atenciam/SWXO/3-sparql.pdf · Querying RDF data: SPARQL 2% SPARQL'Protocol'And'RDF'Query'Language Linked Data : 3rd Principe When

?

OPTIONALs with FILTERs •  The%opIonal%pa7ern%can%be%any%group%pa7ern%and%may%involve%any%SPARQL%

pa7ern%types,%e.g.%you%can%use%OPTIONAL%clauses%with%filters.%

37%

PREFIX info: <http://somewhere/peopleInfo#> PREFIX vcard: <http://www.w3.org/2001/vcard-rdf/3.0#> SELECT ?name ?age WHERE { ?person vcard:FN ?name . OPTIONAL { ?person info:age ?age . FILTER ( ?age > 24 ) } }

------------------------ | name | age | ======================= | "Becky Smith" | | | "Sarah Jones" | | | "John Smith" | 25 | | "Matt Jones" | | -----------------------

OPTIONAL is a binary operator that combines two graph patterns. If the group matches, the solution is extended, if not, the original solution is given

?person vcard:FN ?name .

---------------------------------------------------- | person | name | ==================================================== | <http://somewhere/RebeccaSmith/> | "Becky Smith" | | <http://somewhere/SarahJones/> | "Sarah Jones" | | <http://somewhere/JohnSmith/> | "John Smith" | | <http://somewhere/MattJones/> | "Matt Jones" | ----------------------------------------------------

?person info:age ?age . FILTER ( ?age > 24 )

------------------------------------------ | person | age | ========================================== | <http://somewhere/JohnSmith/> | 25 | ------------------------------------------

Name of all the people and age of those older than 24

------------------------ | name | age | ======================= | "Becky Smith" | | | "Sarah Jones" | | | "John Smith" | 25 | | "Matt Jones" | | -----------------------

the%age%of%"Becky%Smith"%is%not%included%%in%the%soluIon%because%it%is%less%than%24%

Page 33: SPARQL - SPARQL Protocol and RDF Query Languageimss-atenciam/SWXO/3-sparql.pdf · Querying RDF data: SPARQL 2% SPARQL'Protocol'And'RDF'Query'Language Linked Data : 3rd Principe When

? OPTIONALs with FILTERs

38%

PREFIX info: <http://somewhere/peopleInfo#> PREFIX vcard: <http://www.w3.org/2001/vcard-rdf/3.0#> SELECT ?name ?age WHERE { ?person vcard:FN ?name . OPTIONAL { ?person info:age ?age } }

?person vcard:FN ?name .

---------------------------------------------------- | person | name | ==================================================== | <http://somewhere/RebeccaSmith/> | "Becky Smith" | | <http://somewhere/SarahJones/> | "Sarah Jones" | | <http://somewhere/JohnSmith/> | "John Smith" | | <http://somewhere/MattJones/> | "Matt Jones" | ----------------------------------------------------

?person info:age ?age .

------------------------------------------ | person | age | ========================================== | <http://somewhere/RebeccaSmith/> | 23 | | <http://somewhere/JohnSmith/> | 25 | ------------------------------------------

------------------------ | name | age | ======================= | "Becky Smith" | 23 | | "Sarah Jones" | | | "John Smith" | 25 | | "Matt Jones" | | -----------------------

. FILTER (?age > 24) }

( ?age > 24 )

FILTER is performed after the OPTIONAL

variable%age%is%unbound%%

"evaluaIon%excepIon%FAILUREA!AAA

Page 34: SPARQL - SPARQL Protocol and RDF Query Languageimss-atenciam/SWXO/3-sparql.pdf · Querying RDF data: SPARQL 2% SPARQL'Protocol'And'RDF'Query'Language Linked Data : 3rd Principe When

---------------------------------------------------- | person | name | ==================================================== | <http://somewhere/RebeccaSmith/> | "Becky Smith" | | <http://somewhere/SarahJones/> | "Sarah Jones" | | <http://somewhere/JohnSmith/> | "John Smith" | | <http://somewhere/MattJones/> | "Matt Jones" | ----------------------------------------------------

------------------------------------------ | person | age | ========================================== | <http://somewhere/RebeccaSmith/> | 23 | | <http://somewhere/JohnSmith/> | 25 | ------------------------------------------

------------------------ | name | age | ======================= | "Becky Smith" | 23 | | "Sarah Jones" | | | "John Smith" | 25 | | "Matt Jones" | | -----------------------

?

OPTIONALs with FILTERs •  bound%operator%(like%PHP%isset)%allows%the%use%of%unbound%variables%in%FILTERs%

39%

PREFIX info: <http://somewhere/peopleInfo#> PREFIX vcard: <http://www.w3.org/2001/vcard-rdf/3.0#> SELECT ?name ?age WHERE { ?person vcard:FN ?name . OPTIONAL { ?person info:age ?age .} FILTER ( ?age > 24 ) }

------------------------ | name | age | ======================= | "Sarah Jones" | | | "John Smith" | 25 | | "Matt Jones" | | -----------------------

FILTER

name%of%all%people%whose%age%is%undefined%or%older%than%24%

FILTER ( !bound(?age) || ?age > 24)

?person vcard:FN ?name .

?person info:age ?age .

!bound(?age) || ?age > 24

Page 35: SPARQL - SPARQL Protocol and RDF Query Languageimss-atenciam/SWXO/3-sparql.pdf · Querying RDF data: SPARQL 2% SPARQL'Protocol'And'RDF'Query'Language Linked Data : 3rd Principe When

PREFIX foaf: <http://xmlns.com/foaf/0.1/> PREFIX vCard: <http://www.w3.org/2001/vcard-rdf/3.0#> SELECT ?name WHERE { ?x a foaf:Person . OPTIONAL { ?x foaf:name ?name } OPTIONAL { ?x vCard:FN ?name } }

OPTIONALs and Order Dependent Queries

if%you%use%the%same%variable%in%two%or%more%opIonal%clauses%orderAisArelevantA

@prefix foaf: <http://xmlns.com/foaf/0.1/> . @prefix vcard: <http://www.w3.org/2001/vcard-rdf/3.0#> . _:a a foaf:Person ; foaf:name "Matt Jones" . _:b a foaf:Person ; foaf:name "Sarah Jones"; vcard:FN "S. Jones" . _:c a foaf:Person ; vcard:FN "Becky Smith" . _:d a foaf:Person ; vcard:FN "John Smith" .

PREFIX foaf: <http://xmlns.com/foaf/0.1/> PREFIX vCard: <http://www.w3.org/2001/vcard-rdf/3.0#> SELECT ?name WHERE { ?x a foaf:Person . OPTIONAL { ?x vCard:FN ?name } OPTIONAL { ?x foaf:name ?name } }

40%

NotAtheAsameAresultA!A

----------------- | name | ================= | "John Smith" | | "Becky Smith" | | "Sarah Jones" | | "Matt Jones" | -----------------

----------------- | name | ================= | "John Smith" | | "Becky Smith" | | "S. Jones" | | "Matt Jones" | -----------------

Page 36: SPARQL - SPARQL Protocol and RDF Query Languageimss-atenciam/SWXO/3-sparql.pdf · Querying RDF data: SPARQL 2% SPARQL'Protocol'And'RDF'Query'Language Linked Data : 3rd Principe When

-------------------------| | x | name | ========================== | A11556 | "John Smith" | --------------------------

-------------------------| | x | name | ========================== | A11556 | "John Smith" | | A11555 | "Becky Smith" | --------------------------

OPTIONALs and Order Dependent Queries

41%

-------------------------| | x | name | ========================== | A11556 | | | A11555 | | | A11554 | "Sarah Jones" | | A11553 | "Matt Jones" | --------------------------

PREFIX foaf: <http://xmlns.com/foaf/0.1/> PREFIX vCard: <http://www.w3.org/2001/vcard-rdf/3.0#> SELECT ?name WHERE { ?x a foaf:Person . }

?x a foaf:Person . OPTIONAL { ?x foaf:name ?name }

?x vCard:FN ?name

A11553 vCard:FN "Matt Jones"

A11556 vCard:FN ?name A11555 vCard:FN ?name A11554 vCard:FN "Sarah Jones"

----------------- | name | ================= | "John Smith" | | "Becky Smith" | | "Sarah Jones" | | "Matt Jones" | -----------------

OPTIONAL { ?x vCard:FN ?name } OPTIONAL { ?x foaf:name ?name }

Page 37: SPARQL - SPARQL Protocol and RDF Query Languageimss-atenciam/SWXO/3-sparql.pdf · Querying RDF data: SPARQL 2% SPARQL'Protocol'And'RDF'Query'Language Linked Data : 3rd Principe When

PREFIX foaf: <http://xmlns.com/foaf/0.1/> PREFIX vCard: <http://www.w3.org/2001/vcard-rdf/3.0#> SELECT ?name WHERE { ?x a foaf:Person . }

OPTIONAL { ?x vCard:FN ?name } OPTIONAL { ?x foaf:name ?name }

OPTIONALs and Order Dependent Queries

42%

-------------------------| | x | name | ========================== | A11556 | "John Smith" | | A11555 | "Becky Smith" | | A11554 | "S. Jones" | | A11553 | | --------------------------

?x a foaf:Person . OPTIONAL { ?x vCard:FN ?name }

?x foaf:name ?name

A11553 foaf:name ?name

A11556 foaf:name "John Smith" A11555 foaf:name "Becky Smith" A11554 foaf:name "S. Jones"

-------------------------| | x | name | ========================== | A11553 | "Matt Jones" | --------------------------

----------------- | name | ================= | "John Smith" | | "Becky Smith" | | "S. Jones" | | "Matt Jones" | -----------------

Page 38: SPARQL - SPARQL Protocol and RDF Query Languageimss-atenciam/SWXO/3-sparql.pdf · Querying RDF data: SPARQL 2% SPARQL'Protocol'And'RDF'Query'Language Linked Data : 3rd Principe When

Union

43%

----------------- | name | ================= | "Matt Jones" | | "Sarah Jones" | -----------------

[] foaf:name ?name [] vCard:FN ?name

----------------- | name | ================= | "John Smith" | | "Becky Smith" | | "S. Jones" | -----------------

----------------- | name | ================= | "Matt Jones" | | "Sarah Jones" | | "John Smith" | | "Becky Smith" | | "S. Jones" | -----------------

PREFIX foaf: <http://xmlns.com/foaf/0.1/> PREFIX vCard: <http://www.w3.org/2001/vcard-rdf/3.0#> SELECT ?name WHERE { { [] foaf:name ?name } UNION { [] vCard:FN ?name } }

provides%a%means%of%combining%graph%pa7erns%so%that%one%of%several%alternaIve%graph%pa7erns%may%match%

Page 39: SPARQL - SPARQL Protocol and RDF Query Languageimss-atenciam/SWXO/3-sparql.pdf · Querying RDF data: SPARQL 2% SPARQL'Protocol'And'RDF'Query'Language Linked Data : 3rd Principe When

--------------------------------- | name1 | name2 | ================================= | "Sarah Jones" | | | "Matt Jones" | | ---------------------------------

Union

44%

[] foaf:name ?name1 [] vCard:FN ?name2

If%different%variables%are%used%in%each%branch,%the%applicaIon%can%discover%which%sub`pa7ern%caused%the%match%

PREFIX foaf: <http://xmlns.com/foaf/0.1/> PREFIX vCard: <http://www.w3.org/2001/vcard-rdf/3.0#> SELECT ?name1 ?name2 WHERE { { [] foaf:name ?name1 } UNION { [] vCard:FN ?name2 } }

SELECT ?name1 ?name2 SELECT ?name1 ?name2

--------------------------------- | name1 | name2 | ================================= | | "John Smith" | | | "Becky Smith" | | | "S. Jones" | ---------------------------------

--------------------------------- | name1 | name2 | ================================= | "Sarah Jones" | | | "Matt Jones" | | | | "John Smith" | | | "Becky Smith" | | | "S. Jones" | ---------------------------------

Page 40: SPARQL - SPARQL Protocol and RDF Query Languageimss-atenciam/SWXO/3-sparql.pdf · Querying RDF data: SPARQL 2% SPARQL'Protocol'And'RDF'Query'Language Linked Data : 3rd Principe When

--------------------------------- | x | name1 | name2 | ================================== | A11556 | | | | A11555 | | | | A11554 | "Sarah Jones" | | | A11553 | "Matt Jones" | | ----------------------------------

Union ≠ OPTIONALs

45%

?x foaf:name ?name1 ?x vCard:FN ?name2

PREFIX foaf: <http://xmlns.com/foaf/0.1/> PREFIX vCard: <http://www.w3.org/2001/vcard-rdf/3.0#> SELECT ?name1 ?name2 WHERE { ?x a foaf:Person OPTIONAL { ?x foaf:name ?name1 } OPTIONAL { ?x vCard:FN ?name2 } }

OPTIONAL OPTIONAL

--------------------------------- | name1 | name2 | ================================= | | "John Smith" | | | "Becky Smith" | | "Sarah Jones" | "S. Jones" | | "Matt Jones" | | ---------------------------------

-------------------------| | x | name1 | name2 | ========================== | A11556 | | | | A11555 | | | | A11554 | | | | A11553 | | | --------------------------

?x a foaf:Person .

SELECT ?name1 ?name2

----------------------------------------- | x | name1 | name2 | ========================================= | A11556 | | "John Smith” | | A11555 | | "Becky Smith"| | A11554 | "Sarah Jones" | "S. Jones" | | A11553 | "Matt Jones" | | -----------------------------------------

Page 41: SPARQL - SPARQL Protocol and RDF Query Languageimss-atenciam/SWXO/3-sparql.pdf · Querying RDF data: SPARQL 2% SPARQL'Protocol'And'RDF'Query'Language Linked Data : 3rd Principe When

Solution Modifiers •  The%set%of%soluIons%produced%by%graph%pa7ern%matching%can%be%modified%

in%various%ways:%–  ProjecIon%`%keep%only%selected%variables%–  OFFSET/LIMIT%`%chop%the%number%soluIons%(best%used%with%ORDER%BY)%

•  OFFSET%the%start%index,%%%•  LIMIT%the%number%of%soluIons%to%be%returned.%

–  %Using%LIMIT%alone%useful%to%ensure%not%too%many%soluIons%are%returned,%to%restrict%the%effect%of%some%unexpected%situaIon%

–  ORDER%BY%`%sorted%results%–  DISTINCT%`%yield%only%one%row%for%one%combinaIon%of%variables%and%values.%

•  The%soluIon%modifiers%OFFSET/LIMIT%and%ORDER%BY%always%apply%to%all%result%forms%

46%

prefix)foaf:)<http://xmlns.com/foaf/0.1/>)

SELECT)DISTINCT)*)where){)))))?x)foaf:name)?name;)

)))))))faof:age)?age.)

}))

ORDER!BY)?name)DESC(?age))

example%

Page 42: SPARQL - SPARQL Protocol and RDF Query Languageimss-atenciam/SWXO/3-sparql.pdf · Querying RDF data: SPARQL 2% SPARQL'Protocol'And'RDF'Query'Language Linked Data : 3rd Principe When

SPARQL Query Language Select clause - DataSets

47%

•  The%RDF%data`store%service%can%handle%one%or%more%RDF%graphs,%the%SPARQL%query%is%executed%against%a%data%set%(RDF%Dataset)%that%represents%a%collecIon%of%one%or%more%graphs.%

Prefix!rdfs:!<http://www.w3.org/2000/01/rdf8schema#>!Prefix!ogc:!!<http://www.opengis.net/ont/geosparql#>!Prefix!geom:!<http://geovocab.org/geometry#>!Prefix!lgdo:!<http://linkedgeodata.org/ontology/>!!Select!?s,!?l!From!<http://linkedgeodata.org>!!Where!{!!!!!!!?s!!!!a!lgdo:Restaurant!;!!!!!!!!!!!!!!!!rdfs:label!?l!;!!!!!!!!!!!!!!!!!!!!geom:geometry![!!!!!!!!!!!!!!!!!!!!!ogc:asWKT!?g!!!!!!!!!!!!!!!!]!.!!!!!!!!!!!Filter(bif:st_intersects!(?g,!bif:st_point!(3.692764,!43.393794),!1))!.!}!

graph'over'which'the'query'is'executed

Page 43: SPARQL - SPARQL Protocol and RDF Query Languageimss-atenciam/SWXO/3-sparql.pdf · Querying RDF data: SPARQL 2% SPARQL'Protocol'And'RDF'Query'Language Linked Data : 3rd Principe When

48%

•  a%SPARQL%request%can%associate%different%graph%pa7erns%to%different%named%graphs.%

–  FROM%defines%the%default%graph%(this%may%be%the%result%of%merging%several%graphs)%–  FROM%NAMED%defines%graphs%which%then%can%be%explicitly%named%in%the%WHERE%part%

of%the%query%through%the%GRAPH%keyword%

PREFIX!p1:!...)SELECT!...!!FROM!p1:g1)FROM!p2:g2)FROM!NAMED!hpi:g3)FROM!NAMED!hpi:g4)WHERE!{!!!!......)!!GRAPH!hpi:g3!{!!!!!!!!......!!!!!}!!!GRAPH!?g){!!!!!......!!!!}!}!

p1:g1)

p2:g2)

hpi:g3)

hpi:g4)

DataStore%

Default)

Graph)

SPARQL Query Language Select clause - DataSets

Page 44: SPARQL - SPARQL Protocol and RDF Query Languageimss-atenciam/SWXO/3-sparql.pdf · Querying RDF data: SPARQL 2% SPARQL'Protocol'And'RDF'Query'Language Linked Data : 3rd Principe When

Datasets •  an%RDFADatasetAis%the%unit%that%is%queried%by%a%SPARQL%query.%It%consists%%

of%a%default%graph,%and%a%number%of%named%graphs.%•  graph%matching%operaIons%(basic%pa7erns,%OPTIONALs,%and%UNIONs)%work%

on%one%RDF%graph.%–  by%default%….%the%default%graph%%#%–  it%can%be%changed%by%the%GRAPH%keyword.%

49%

GRAPH!!uri!|!?var'{!...!pattern!...!}!

–  uri%:%the%pa7ern%will%be%matched%against%the%graph%in%the%dataset%with%that%name%–  ?var):%%all%the%named%graphs%(not%the%default%graph)%are%tried%

The%variable%may%be%used%elsewhere%so%that%if,%during%execuIon,%it's%value%is%already%known%for%a%soluIon,%only%the%specific%named%graph%is%tried.%

prefix)foaf:)<http://xmlns.com/foaf/0.1/>)

SELECT)*)where){)

))))?x)rdf:type)foaf:Person.)

))))GRAPH)<http://www.ujfHgrenoble.fr/data>){)

)))))))))))?x)foaf:name)?name)

))))})

))))GRAPH)?g){)?x)foaf:knows)?y)})

}))

names%must%come%from%the%graph%<h7p://www.ujf`grenoble.fr/>%

to%know%the%source%of%the%result%for%each%contact%found%

Page 45: SPARQL - SPARQL Protocol and RDF Query Languageimss-atenciam/SWXO/3-sparql.pdf · Querying RDF data: SPARQL 2% SPARQL'Protocol'And'RDF'Query'Language Linked Data : 3rd Principe When

Datasets •  a%(very%simple)%dataset%that%might%occur%for%an%RDF%aggregator%

of%book%details%–  two%small%graphs%describing%some%books%–  a%default%graph%which%records%when%these%graphs%were%last%read%

50%

@prefix)dc:)<http://purl.org/dc/elements/1.1/>).)

@prefix)xsd:)<http://www.w3.org/2001/XMLSchema#>).)

)

<dsHngH1.ttl>)dc:date)"2005H07H14T03:18:56+0100"^^xsd:dateTime).)

<dsHngH2.ttl>)dc:date)"2005H09H22T05:53:05+0100"^^xsd:dateTime).)

@prefix)dc:)<http://purl.org/dc/elements/1.1/>).)

)

[])dc:title)"Harry)Potter)and)the)Philospher's)Stone".)

[])dc:title)"Harry)Potter)and)the)Chamber)of)Secrets".))

@prefix)dc:)<http://purl.org/dc/elements/1.1/>).)

)

[])dc:title)"Harry)Potter)and)the)Sorcerer's)Stone").)

[])dc:title)"Harry)Potter)and)the)Chamber)of)Secrets".)

Harry)Potter)and)the)

Philospher's)Stone%dc:title)

Harry)Potter)and)the)

Chamber)of)Secrets%dc:title)

Named!graph!<ds8ng81.ttl>!

Harry)Potter)and)the)

Sorcerer's)Stone%dc:title)

Harry)Potter)and)the)

Chamber)of)Secrets%dc:title)

Named!graph!<ds8ng82.ttl>!

Dataset

<dsHngH1.ttl>) 2005H07H14)...%

2005H09H22)...%<dsHngH2.ttl>) dc:date)

dc:date) Default!graph

!ds8dft.ttl

!ds8ng81.ttl

ds8ng82.ttl

Page 46: SPARQL - SPARQL Protocol and RDF Query Languageimss-atenciam/SWXO/3-sparql.pdf · Querying RDF data: SPARQL 2% SPARQL'Protocol'And'RDF'Query'Language Linked Data : 3rd Principe When

Datasets

51%

PREFIX)xsd:)<http://www.w3.org/2001/

XMLSchema#>)

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

)

SELECT)*)WHERE)){)?s)?p)?o)})

<dsHngH1.ttl>) 2005H07H14)...%

2005H09H22)...%<dsHngH2.ttl>) dc:date)

dc:date)

Harry)Potter)and)the)

Philospher's)Stone%dc:title)

Harry)Potter)and)the)

Chamber)of)Secrets%dc:title)

Harry)Potter)and)the)

Sorcerer's)Stone%dc:title)

Harry)Potter)and)the)

Chamber)of)Secrets%dc:title)

Named!graph!<ds8ng81.ttl>!

Named!graph!<ds8ng82.ttl>!

Default!graph

Dataset

HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH)

|)s))))))))))))|)p)))))))|)o)))))))))))))))))))))))))))))))))))))))))|)

======================================================================)

|):dsHngH2.ttl)|)dc:date)|)"2005H09H22T05:53:05+01:00"^^xsd:dateTime)|)

|):dsHngH1.ttl)|)dc:date)|)"2005H07H14T03:18:56+01:00"^^xsd:dateTime)|)

HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH)

only the default graph is queried

Page 47: SPARQL - SPARQL Protocol and RDF Query Languageimss-atenciam/SWXO/3-sparql.pdf · Querying RDF data: SPARQL 2% SPARQL'Protocol'And'RDF'Query'Language Linked Data : 3rd Principe When

Datasets

52%

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

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

)

SELECT)*)WHERE{)

)))){)?s)?p)?o)})UNION){)GRAPH)?g){)?s)?p)?o)})})

})

<dsHngH1.ttl>) 2005H07H14)...%

2005H09H22)...%<dsHngH2.ttl>) dc:date)

dc:date)

Harry)Potter)and)the)

Philospher's)Stone%dc:title)

Harry)Potter)and)the)

Chamber)of)Secrets%dc:title)

Harry)Potter)and)the)

Sorcerer's)Stone%dc:title)

Harry)Potter)and)the)

Chamber)of)Secrets%dc:title)

Named!graph!<ds8ng81.ttl>!

Named!graph!<ds8ng82.ttl>!

Default!graph

Dataset

HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH)

|)s))))))))))))|)p))))))))|)o))))))))))))))))))))))))))))))))))))))))))|)g))))))))))))|)

=======================================================================================)

|):dsHngH2.ttl)|)dc:date))|)"2005H09H22T05:53:05+01:00"^^xsd:dateTime))|))))))))))))))|)

|):dsHngH1.ttl)|)dc:date))|)"2005H07H14T03:18:56+01:00"^^xsd:dateTime))|))))))))))))))|)

|)_:b0)))))))))|)dc:title)|)"Harry)Potter)and)the)Sorcerer's)Stone"))))|):dsHngH2.ttl)|)

|)_:b1)))))))))|)dc:title)|)"Harry)Potter)and)the)Chamber)of)Secrets"))|):dsHngH2.ttl)|)

|)_:b2)))))))))|)dc:title)|)"Harry)Potter)and)the)Chamber)of)Secrets"))|):dsHngH1.ttl)|)

|)_:b3)))))))))|)dc:title)|)"Harry)Potter)and)the)Philospher's)Stone"))|):dsHngH1.ttl)|)

HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH)

the default graph and the named graphs are queried

Page 48: SPARQL - SPARQL Protocol and RDF Query Languageimss-atenciam/SWXO/3-sparql.pdf · Querying RDF data: SPARQL 2% SPARQL'Protocol'And'RDF'Query'Language Linked Data : 3rd Principe When

Datasets

53%

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

)

SELECT)?title)

{)

))GRAPH):dsHngH2.ttl)

)))){)?b)dc:title)?title)})

})

<dsHngH1.ttl>) 2005H07H14)...%

2005H09H22)...%<dsHngH2.ttl>) dc:date)

dc:date)

Harry)Potter)and)the)

Philospher's)Stone%dc:title)

Harry)Potter)and)the)

Chamber)of)Secrets%dc:title)

Harry)Potter)and)the)

Sorcerer's)Stone%dc:title)

Harry)Potter)and)the)

Chamber)of)Secrets%dc:title)

Named!graph!<ds8ng81.ttl>!

Named!graph!<ds8ng82.ttl>!

Default!graph

Dataset

HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH)

|)title)))))))))))))))))))))))))))))))))))))|)

=============================================)

|)"Harry)Potter)and)the)Sorcerer's)Stone")))|)

|)"Harry)Potter)and)the)Chamber)of)Secrets")|)

HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH)

only%the%named%graph%%%dsHngH2.ttl)%%is%queried%

Page 49: SPARQL - SPARQL Protocol and RDF Query Languageimss-atenciam/SWXO/3-sparql.pdf · Querying RDF data: SPARQL 2% SPARQL'Protocol'And'RDF'Query'Language Linked Data : 3rd Principe When

Datasets

54%

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

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

)

SELECT)?date)?title))WHERE){)

))?g)dc:date)?date).))

))FILTER)(?date)>)"2005H08H01T00:00:00Z"^^xsd:dateTime))

))GRAPH)?g){)?b)dc:title)?title)})

})

<dsHngH1.ttl>) 2005H07H14)...%

2005H09H22)...%<dsHngH2.ttl>) dc:date)

dc:date)

Harry)Potter)and)the)

Philospher's)Stone%dc:title)

Harry)Potter)and)the)

Chamber)of)Secrets%dc:title)

Harry)Potter)and)the)

Sorcerer's)Stone%dc:title)

Harry)Potter)and)the)

Chamber)of)Secrets%dc:title)

Named!graph!<ds8ng81.ttl>!

Named!graph!<ds8ng82.ttl>!

Default!graph

Dataset

HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH)

|)date))))))))))))))))))))))))))))))))))))))|)title)))))))))))))))))))))))))))))))))))))|)

=========================================================================================)

|)"2005H09H22T05:53:05+01:00"^^xsd:dateTime)|)"Harry)Potter)and)the)Sorcerer's)Stone")))|)

|)"2005H09H22T05:53:05+01:00"^^xsd:dateTime)|)"Harry)Potter)and)the)Chamber)of)Secrets")|)

HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH)

The%name%of%the%graph%to%be%queried%is%determined%with%the%query%itself.%

Page 50: SPARQL - SPARQL Protocol and RDF Query Languageimss-atenciam/SWXO/3-sparql.pdf · Querying RDF data: SPARQL 2% SPARQL'Protocol'And'RDF'Query'Language Linked Data : 3rd Principe When

FROM and FROM NAMED

•  FROM%and%FROM)NAMED)allow%to%describe%the%RDF%dataset%used%for%a%query%–  FROM%url)"%the%graphs%defining%the%default%data%set%

•  There%can%be%more%than%one%FROM%clause%and%the%default%graph%is%the%RDF%merge%of%the%individual%graphs%

–  FROM)NAMED)url$"%the%named%graphs%used%to%solve%the%request%•  The%graph%is%given%the%name%url%and%the%data%is%read%from%that%locaIon.%•  MulIple%FROM%NAMED%clauses%cause%mulIple%graphs%to%be%added%to%the%dataset.%

55%

prefix)foaf:)<http://xmlns.com/foaf/0.1/>)

FROM)NAMED)<http://www.ujfHgrenoble.fr/data>))

FROM)NAMED)<http://www.cnrs.fr/base>))

SELECT)*)where){)

))))GRAPH)?g){)?x)foaf:name)?name)})

}))

prefix)foaf:)<http://xmlns.com/foaf/0.1/>)

FROM)<http://www.ujfHgrenoble.fr/data>))

FROM)<http://www.cnrs.fr/base>))

SELECT)*)where){)?x)foaf:knows)?y)})

}))

RDF%1.1%provides%a%standard%way%to%name%graphs%

Page 51: SPARQL - SPARQL Protocol and RDF Query Languageimss-atenciam/SWXO/3-sparql.pdf · Querying RDF data: SPARQL 2% SPARQL'Protocol'And'RDF'Query'Language Linked Data : 3rd Principe When

SPARQL Query Language (1.0)

Source:'Pérez,'Arenas'and'Gu;errez,'Chapter'1:'On'the'Seman;cs'of'SPARQL,'Seman;c'Web'Informa;on'Management:'A'Model'Based'Perspec;ve,'Springer'2010

tests'if'there'exists'at'least'one'result

returns'an'RDF'graph'describing'found'

resources

returns'an'RDF'graph'by'subs;tu;ng'the'

variables'in'a'set'of'triple'templates

56%

Page 52: SPARQL - SPARQL Protocol and RDF Query Languageimss-atenciam/SWXO/3-sparql.pdf · Querying RDF data: SPARQL 2% SPARQL'Protocol'And'RDF'Query'Language Linked Data : 3rd Principe When

ASK

•  ASK%–%ask%a%boolean%query.%–  to%verify%that%there%is%at%least%one%response.%–  Is%there%a%student%over%30%years?%

%%

%%

57%

PREFIX)ufrimag:)<http://www.ufrimag.fr#>)

ASK){)

)?etudiant)ufrimag:inscrit)?x).)

)?x)ufrimag:siteweb)<http://www.ufrimag.fr>).)

)?etudiant)ufrimag:age)?age).)

)FILTER)(?age)>)30))

}))

<sparql)xmlns="http://www.w3.org/2005/sparqlHresults#">)

)<head>)…)</head>)

)<boolean>)true)</boolean>)</sparql>)

the%boolean%result%

Page 53: SPARQL - SPARQL Protocol and RDF Query Languageimss-atenciam/SWXO/3-sparql.pdf · Querying RDF data: SPARQL 2% SPARQL'Protocol'And'RDF'Query'Language Linked Data : 3rd Principe When

Exercise: Artemis' bookstore

58%

•  Let's%go%back%to%DBpedia%and%Paul%Auster:%–  Is%Paul%Auster%dead?%

Page 54: SPARQL - SPARQL Protocol and RDF Query Languageimss-atenciam/SWXO/3-sparql.pdf · Querying RDF data: SPARQL 2% SPARQL'Protocol'And'RDF'Query'Language Linked Data : 3rd Principe When

CONSTRUCT

•  SELECT%returns%a%flat%list%of%variables%bindings%–  the%applicaIon%program%is%in%charge%of%processing%these%bindings%

(o}en%by%converIng%soluIon%tuples%into%triples%and%adding%them%to%an%RDF%graph).%

•  CONSTRUCT%allows%you%to%directly%product%a%RDF%graph%containing%the%variables%values%–  the%WHERE%and%FILTER%clause%works%the%same%way%as%the%SELECT%form%–  bindings%of%the%variables%are%inserted%into%a%new%graph%constructed%

from%template%triples%specified%in%the%CONSTRUCT%clause%(which%replace%the%SELECT%clause).%

60%

Page 55: SPARQL - SPARQL Protocol and RDF Query Languageimss-atenciam/SWXO/3-sparql.pdf · Querying RDF data: SPARQL 2% SPARQL'Protocol'And'RDF'Query'Language Linked Data : 3rd Principe When

Construct

61%

PREFIX foaf: <http://xmlns.com/foaf/0.1/> PREFIX vcard: <http://www.w3.org/2001/vcard-rdf/3.0#> CONSTRUCT { ?x foaf:firstName ?y . ?x foaf:lastName ?z . } FROM <vca-db-1rd.rdf> WHERE { ?x vcard:N ?u . ?u vcard:Given ?y . ?u vcard:Family ?z. }

@prefix foaf: <http://xmlns.com/foaf/0.1/> . @prefix vcard: <http://www.w3.org/2001/vcard-rdf/3.0#> . <http://somewhere/RebeccaSmith/> foaf:firstName "Rebecca" ; foaf:lastName "Smith" . <http://somewhere/MattJones/> foaf:firstName "Matthew" ; foaf:lastName "Jones" . <http://somewhere/SarahJones/> foaf:firstName "Sarah" ; foaf:lastName "Jones" . <http://somewhere/JohnSmith/> foaf:firstName "John" ; foaf:lastName "Smith" .

CONSTRUCT avec un graph-gabarit à un seul sujet et deux triplets

See http://pagesperso-systeme.lip6.fr/Jean-Francois.Perrot/inalco/XML/RDF/SPARQL/IntroSPARQL.html

Page 56: SPARQL - SPARQL Protocol and RDF Query Languageimss-atenciam/SWXO/3-sparql.pdf · Querying RDF data: SPARQL 2% SPARQL'Protocol'And'RDF'Query'Language Linked Data : 3rd Principe When

Construct

62%

The%graph%we%have%

The%graph%we%want%

Page 57: SPARQL - SPARQL Protocol and RDF Query Languageimss-atenciam/SWXO/3-sparql.pdf · Querying RDF data: SPARQL 2% SPARQL'Protocol'And'RDF'Query'Language Linked Data : 3rd Principe When

CONSTRUCT

63%

@prefix)vcard:)))<http://www.w3.org/2001/vcardHrdf/3.0#>).)

@prefix)dc:))))))<http://purl.org/dc/elements/1.1/>).)

@prefix)foaf:))))<http://xmlns.com/foaf/0.1/>).)

)

<http://inalco/M2HTrad/poetes#Théodore_de_BANVILLE>)

))))))foaf:firstName))"Théodore");)

))))))foaf:lastName))"de)BANVILLE");)

))))))foaf:pastProject)

))))))))))))))))))))[)dc:publisher))"Paris):)M.)Levy,)1859.");)

))))))))))))))))))))))dc:title))))))"Odes)funambulesques")

))))))))))))))))))))]).)

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

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

PREFIX)vcard:)))<http://www.w3.org/2001/vcardHrdf/3.0#>)

)

CONSTRUCT){)?auteur)foaf:pastProject)_:oeuvre).)

))))))))))))_:oeuvre)dc:title)?nom).)

))))))))))))_:oeuvre)dc:publisher)?editeur).)

))))))))))))?auteur)foaf:firstName)?p).)

))))))))))))?auteur)foaf:lastName)?n).)

))))))))))})

)

FROM)<http://pagespersoHsysteme.lip6.fr/JeanHFrancois.Perrot/inalco/XML/RDF/Frantext/RRb.rdf>)

WHERE)

){)))))))))?oe))dc:creator)?auteur).)

)))))))))))?oe))dc:title)?nom).)

)))))))))))?oe))dc:publisher)?editeur).)

)))))))))))?auteur))vcard:N)?vc).)

)))))))))))?vc)vcard:Family)?n).)

)))))))))))?vb)vcard:Given)?p).)

)})

Page 58: SPARQL - SPARQL Protocol and RDF Query Languageimss-atenciam/SWXO/3-sparql.pdf · Querying RDF data: SPARQL 2% SPARQL'Protocol'And'RDF'Query'Language Linked Data : 3rd Principe When

DESCRIBE

•  DESCRIBE%–%Returns%an%RDF%graph,%based%on%what%the%query%processor%is%configured%to%return.%–  SPARQL%specificaIon%says%:%"the%useful%informaIon%the%service%has%about%a%resource"%

–  in%theory%this%should%help%you%understand%the%context%of%the%resources%returned…%but%there%is%no%warranty.%

64%

DESCRIBE)<http://example.com/fish>)?x)WHERE){)))

))?x)?y)<http://example.com/fish>)))

})

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

PREFIX)ex:)<http://example.com/>)))

DESCRIBE)ex:karen)?friend){)))

))ex:karen)foaf:knows)?friend).)))

})

asks%for%a%descripIon%of%fish,%and%any%resource%directly%related%to%fish.%

asks%for%a%descripIon%of%karen%ad%her%friends%

Page 59: SPARQL - SPARQL Protocol and RDF Query Languageimss-atenciam/SWXO/3-sparql.pdf · Querying RDF data: SPARQL 2% SPARQL'Protocol'And'RDF'Query'Language Linked Data : 3rd Principe When

SPARQL 1.1: new functionalities

65%

•  W3C%RecommendaIon,%March%2013,%21%•  h7p://www.w3.org/TR/2013/REC`sparql11`overview`20130321/%

•  Query%–  New%aggregaIon%funcIons%for%results%(count,%min,%max,%group!by,%etc.)%–  Variable%assignment%

•  SELECT)(COUNT(DISTINCT)?s)))AS)?num%%%%number%of%dis7nct%restaurants%–  NegaIon%%

•  NOT)EXISTS,%EXISTS%:%filtering%results%depending%on%whether%a%graph%pa7ern%does,%or%does%not%match%in%the%context%of%the%query%soluIon%being%filtered%

•  MINUS%:%removing%soluIons%related%to%another%patern%

%

PREFIX)rdf:))<http://www.w3.org/1999/02/22HrdfHsyntaxHns#>)

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

)

SELECT)?person)

WHERE){))

))?person)rdf:type)foaf:Person).)

))FILTER)NOT!EXISTS!{!?person!foaf:name!?name!}!})

Persons%who%don’t%have%a%name%See:%http://www.w3.org/TR/2013/REC-sparql11-query-20130321/#negation

Page 60: SPARQL - SPARQL Protocol and RDF Query Languageimss-atenciam/SWXO/3-sparql.pdf · Querying RDF data: SPARQL 2% SPARQL'Protocol'And'RDF'Query'Language Linked Data : 3rd Principe When

Exercise: Artemis' bookstore

66%

•  Let's%go%back%to%DBpedia,%Paul%Auster%and%Siri%Hustvedt:%–  Find%married%couples%who%are%living%writers.%

Page 61: SPARQL - SPARQL Protocol and RDF Query Languageimss-atenciam/SWXO/3-sparql.pdf · Querying RDF data: SPARQL 2% SPARQL'Protocol'And'RDF'Query'Language Linked Data : 3rd Principe When

SPARQL 1.1: new functionalities

68%

•  Query…%–  subqueries:%possibility%to%embed%SPARQL%queries%within%other%queries%

•  e.g.%for%limiIng%the%number%of%results%from%some%sub`expression%within%the%query%

–  subqueries%are%evaluated%logically%first,%and%the%results%are%projected%up%to%the%outer%query%%

PREFIX):)<http://people.example/>)

SELECT)?y)?minName)

WHERE){))

)):alice):knows)?y).)

!!{)))))SELECT)?y)(MIN(?name))AS)?minName))

))))WHERE){)

))))))?y):name)?name).)

))))})GROUP)BY)?y)

))})

})

Example:%Return%a%name%(the%one%with%the%lowest%sort%order)%for%all%the%people%that%know%Alice%and%they%have%a%name%

1:%inner%query%evaluaIon%

2:%outer%query%evaluaIon%

3:%results%of%1%are%joined%with%results%of%2%

Page 62: SPARQL - SPARQL Protocol and RDF Query Languageimss-atenciam/SWXO/3-sparql.pdf · Querying RDF data: SPARQL 2% SPARQL'Protocol'And'RDF'Query'Language Linked Data : 3rd Principe When

SPARQL 1.1: new functionalities

69%

•  Query%–  Basic%federated%queries%(SERVICE,%BINDING)%

•  To%execute%requests%distributed%over%different%SPARQL%endpoints%

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

SELECT)?name)

WHERE){))

))<http://example.org/alice#name>)foaf:knows)[)foaf:name)?name)]).)

))SERVICE)<http://dbpedia.org/sparql>!{)))))<http://dbpedia.org/resource/Snoopy>)foaf:name)?name)

))})

})

Example:%Is%there%anyone%among%Alice’s%friends%with%the%same%name%as%the%resource%iden7fied%by%the%URI%<hHp://dbpedia.org/resource/Snoopy>%at%DBpedia?%

names%of%Alice’s%friends.%This%pa7ern%is%matched%against%the%local%SPARQL%service%

find%out%the%name%of%http://dbpedia.org/resource/Snoopy)the%evaluaIon%of%this%pa7ern%is%delegated%to%the%respecIve%remote%SPARQL%service%http://dbpedia.org/sparql!

See:%http://www.w3.org/TR/sparql11-overview/

Page 63: SPARQL - SPARQL Protocol and RDF Query Languageimss-atenciam/SWXO/3-sparql.pdf · Querying RDF data: SPARQL 2% SPARQL'Protocol'And'RDF'Query'Language Linked Data : 3rd Principe When

Exercise: Artemis' bookstore

70%

•  Final%query:%–  Find,%in%Artemis'%bookstore%data,%pairs%of%books%wri7en%by%married%couples%who%are%living%writers.%

•  One%way%to%do%this%is:%–  upload%Artemis'%data%in%a%fuseki%server:%

%h7ps://jena.apache.org/documentaIon/fuseki2/%–  submit%a%federated%query%to%this%SPARQL%endpoint.%

Page 64: SPARQL - SPARQL Protocol and RDF Query Languageimss-atenciam/SWXO/3-sparql.pdf · Querying RDF data: SPARQL 2% SPARQL'Protocol'And'RDF'Query'Language Linked Data : 3rd Principe When

SPARQL 1.1: new functionalities

72%

•  New%serializaIon%formats%for%query%results%(JSON…)%•  CRUD%operaIons%

–  Graph%udpate:%INSERT,%INSERT%DATA,%DELETE%DATA,%DELETE%WHERE,%LOAD,%CLEAR)%

–  Graph%management:%CREATE,%DROP,%COPY,%MOVE,%ADD%

•  Entailments%–  RDF,%RDFS,%OWL,%RIF%

•  ...%%

Page 65: SPARQL - SPARQL Protocol and RDF Query Languageimss-atenciam/SWXO/3-sparql.pdf · Querying RDF data: SPARQL 2% SPARQL'Protocol'And'RDF'Query'Language Linked Data : 3rd Principe When

SPARQL 1.1 as a unifying point

SPARQL Processor

HTML Unstructured Text XML/XHTML

Relational Database

SQL!

RD

F

Database SPA

RQ

L En

dpoi

nt

Triple store SPA

RQ

L En

dpoi

nt

RDF Graph

Application

NLP

Tec

hniq

ues

SPARQL Construct