Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

76
ICWE 2012 Tutorial An Introduction to SPARQL and Queries over Linked Data ● ● ● Chapter 2: SPARQL Olaf Hartig http://olafhartig.de/foaf.rdf#olaf @olafhartig Database and Information Systems Research Group Humboldt-Universität zu Berlin

description

These are the slides from my ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data"

Transcript of Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

Page 1: Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

ICWE 2012 Tutorial

An Introduction to SPARQL and Queries over Linked Data

● ● ●

Chapter 2: SPARQL

Olaf Hartighttp://olafhartig.de/foaf.rdf#olaf

@olafhartig

Database and Information Systems Research GroupHumboldt-Universität zu Berlin

Page 2: Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 2

SPARQL in General

● A family of W3C recommendations

● SPARQL Query● Declarative query language for RDF data● Our focus today

● SPARQL Update● Declarative update language for RDF data

● SPARQL Protocol● Communication between SPARQL processing

services (a.k.a. SPARQL endpoints) and clients

● SPARQL Query Results XML Format● XML format for serializing query results

Page 3: Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 3

Main Idea of SPARQL Queries

● Pattern matching:● Describe subgraphs of the queried RDF graph● Subgraphs that match your description contribute an answer● Mean: graph patterns (i.e. RDF graphs with variables)

?vumbel-sc:Volcano

rdf:type

Page 4: Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 4

Queried RDF graph:

Main Idea of SPARQL Queries

?vumbel-sc:Volcano

rdf:type

dbpedia:Mount_Baker umbel-sc:Volcanordf:type

"1880"

p:lastEruption

dbpedia:Mount_Etna

rdf:type

Page 5: Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 5

Queried RDF graph:

Main Idea of SPARQL Queries

?vumbel-sc:Volcano

rdf:type

dbpedia:Mount_Baker umbel-sc:Volcanordf:type

"1880"

p:lastEruption

dbpedia:Mount_Etna

rdf:type

?v

dbpedia:Mount_Bakerdbpedia:Mount_Etna

Result:

Page 6: Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 6

Components of SPARQL Queries

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

PREFIX umbel-sc: <http://umbel.org/umbel/sc/>

SELECT ?v

FROM <http://example.org/myGeoData>

WHERE {

?v rdf:type umbel-sc:Volcano .

}

ORDER BY ?name

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

PREFIX umbel-sc: <http://umbel.org/umbel/sc/>

SELECT ?v

FROM <http://example.org/myGeoData>

WHERE {

?v rdf:type umbel-sc:Volcano .

}

ORDER BY ?name

Page 7: Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 7

Components of SPARQL Queries

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

PREFIX umbel-sc: <http://umbel.org/umbel/sc/>

SELECT ?v

FROM <http://example.org/myGeoData>

WHERE {

?v rdf:type umbel-sc:Volcano .

}

ORDER BY ?name

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

PREFIX umbel-sc: <http://umbel.org/umbel/sc/>

SELECT ?v

FROM <http://example.org/myGeoData>

WHERE {

?v rdf:type umbel-sc:Volcano .

}

ORDER BY ?name

● Prologue:● Prefix definitions for using compact URIs (CURIEs)● Attention (difference to Turtle): No period (“.”) character as

separator

Page 8: Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 8

Components of SPARQL Queries

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

PREFIX umbel-sc: <http://umbel.org/umbel/sc/>

SELECT ?v

FROM <http://example.org/myGeoData>

WHERE {

?v rdf:type umbel-sc:Volcano .

}

ORDER BY ?name

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

PREFIX umbel-sc: <http://umbel.org/umbel/sc/>

SELECT ?v

FROM <http://example.org/myGeoData>

WHERE {

?v rdf:type umbel-sc:Volcano .

}

ORDER BY ?name

● Result form specification:● SELECT, DESCRIBE, CONSTRUCT, or ASK

(more about that later)

Page 9: Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 9

Components of SPARQL Queries

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

PREFIX umbel-sc: <http://umbel.org/umbel/sc/>

SELECT ?v

FROM <http://example.org/myGeoData>

WHERE {

?v rdf:type umbel-sc:Volcano .

}

ORDER BY ?name

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

PREFIX umbel-sc: <http://umbel.org/umbel/sc/>

SELECT ?v

FROM <http://example.org/myGeoData>

WHERE {

?v rdf:type umbel-sc:Volcano .

}

ORDER BY ?name

● Dataset specification:● Specify the RDF dataset to be queried

(more about that later)

Page 10: Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 10

Components of SPARQL Queries

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

PREFIX umbel-sc: <http://umbel.org/umbel/sc/>

SELECT ?v

FROM <http://example.org/myGeoData>

WHERE {

?v rdf:type umbel-sc:Volcano .

}

ORDER BY ?name

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

PREFIX umbel-sc: <http://umbel.org/umbel/sc/>

SELECT ?v

FROM <http://example.org/myGeoData>

WHERE {

?v rdf:type umbel-sc:Volcano .

}

ORDER BY ?name

● Query Pattern:● WHERE clause specifies the graph pattern to be matched

Page 11: Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 11

Graph Patterns

● Different types of graph patterns for the query pattern (WHERE clause):● Basic graph pattern (BGP)● Group graph pattern● Optional graph pattern● Union graph pattern● Graph graph pattern● (Constraints)

Page 12: Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 12

Basic Graph Patterns

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

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

PREFIX umbel-sc: <http://umbel.org/umbel/sc/>

SELECT ?name

WHERE {

?v rdf:type umbel-sc:Volcano .

?v rdfs:label ?name .

}

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

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

PREFIX umbel-sc: <http://umbel.org/umbel/sc/>

SELECT ?name

WHERE {

?v rdf:type umbel-sc:Volcano .

?v rdfs:label ?name .

}

● Set of triple patterns (i.e. RDF triples with variables)● Variable names prefixed with “?” or “$” (e.g. ?v, $v)● Turtle syntax

● Including syntactical sugar (e.g. property and object lists)

Page 13: Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 13

Basic Graph Patterns

● Set of triple patterns (i.e. RDF triples with variables)● Variable names prefixed with “?” or “$” (e.g. ?v, $v)● Turtle syntax

● Including syntactical sugar (e.g. property and object lists)

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

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

PREFIX umbel-sc: <http://umbel.org/umbel/sc/>

SELECT ?name

WHERE {

?v rdf:type umbel-sc:Volcano ;

rdfs:label ?name .

}

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

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

PREFIX umbel-sc: <http://umbel.org/umbel/sc/>

SELECT ?name

WHERE {

?v rdf:type umbel-sc:Volcano ;

rdfs:label ?name .

}

Page 14: Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 14

Basic Graph Patterns (Example)

dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ;

rdfs:label "Etna" .

dbpedia:Mount_Baker rdf:type umbel-sc:Volcano.

dbpedia:Beerenberg rdf:type umbel-sc:Volcano,

umbel-sc:NaturalElevation ;

rdfs:label "Beerenberg"@en ;

rdfs:label "Бееренберг"@ru .

dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ;

rdfs:label "Etna" .

dbpedia:Mount_Baker rdf:type umbel-sc:Volcano.

dbpedia:Beerenberg rdf:type umbel-sc:Volcano,

umbel-sc:NaturalElevation ;

rdfs:label "Beerenberg"@en ;

rdfs:label "Бееренберг"@ru .

Data*

*Prefix definitions omitted

Page 15: Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 15

Basic Graph Patterns (Example)

*Prefix definitions omitted

SELECT ?name WHERE {

?v rdf:type umbel-sc:Volcano ;

rdfs:label ?name . }

SELECT ?name WHERE {

?v rdf:type umbel-sc:Volcano ;

rdfs:label ?name . }

Query*

dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ;

rdfs:label "Etna" .

dbpedia:Mount_Baker rdf:type umbel-sc:Volcano.

dbpedia:Beerenberg rdf:type umbel-sc:Volcano,

umbel-sc:NaturalElevation ;

rdfs:label "Beerenberg"@en ;

rdfs:label "Бееренберг"@ru .

dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ;

rdfs:label "Etna" .

dbpedia:Mount_Baker rdf:type umbel-sc:Volcano.

dbpedia:Beerenberg rdf:type umbel-sc:Volcano,

umbel-sc:NaturalElevation ;

rdfs:label "Beerenberg"@en ;

rdfs:label "Бееренберг"@ru .

Data*

● Question: What are the names of all (known) volcanos?

Page 16: Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 16

Basic Graph Patterns (Example)

*Prefix definitions omitted

SELECT ?name WHERE {

?v rdf:type umbel-sc:Volcano ;

rdfs:label ?name . }

SELECT ?name WHERE {

?v rdf:type umbel-sc:Volcano ;

rdfs:label ?name . }

Query*

dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ;

rdfs:label "Etna" .

dbpedia:Mount_Baker rdf:type umbel-sc:Volcano.

dbpedia:Beerenberg rdf:type umbel-sc:Volcano,

umbel-sc:NaturalElevation ;

rdfs:label "Beerenberg"@en ;

rdfs:label "Бееренберг"@ru .

dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ;

rdfs:label "Etna" .

dbpedia:Mount_Baker rdf:type umbel-sc:Volcano.

dbpedia:Beerenberg rdf:type umbel-sc:Volcano,

umbel-sc:NaturalElevation ;

rdfs:label "Beerenberg"@en ;

rdfs:label "Бееренберг"@ru .

Data*

?name

"Etna""Бееренберг"@ru"Beerenberg"@en

Result:● Question: What are the names of all (known) volcanos?

Page 17: Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 17

Basic Graph Patterns (Example)

?typeSELECT ?type WHERE {

?v rdf:type ?type ;

rdfs:label "Beerenberg" .

}

SELECT ?type WHERE {

?v rdf:type ?type ;

rdfs:label "Beerenberg" .

}

Query

dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ;

rdfs:label "Etna" .

dbpedia:Mount_Baker rdf:type umbel-sc:Volcano.

dbpedia:Beerenberg rdf:type umbel-sc:Volcano,

umbel-sc:NaturalElevation ;

rdfs:label "Beerenberg"@en ;

rdfs:label "Бееренберг"@ru .

dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ;

rdfs:label "Etna" .

dbpedia:Mount_Baker rdf:type umbel-sc:Volcano.

dbpedia:Beerenberg rdf:type umbel-sc:Volcano,

umbel-sc:NaturalElevation ;

rdfs:label "Beerenberg"@en ;

rdfs:label "Бееренберг"@ru .

Data

● Question: List all types of the volcano called “Beerenberg”

Empty!

Page 18: Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 18

Basic Graph Patterns (Example)

SELECT ?type WHERE {

?v rdf:type ?type ;

rdfs:label "Beerenberg"@en .

}

SELECT ?type WHERE {

?v rdf:type ?type ;

rdfs:label "Beerenberg"@en .

}

Query

● Question: List all types of the volcano called “Beerenberg”

?type

umbel-sc:Volcanoumbel-sc:NaturalElevation

dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ;

rdfs:label "Etna" .

dbpedia:Mount_Baker rdf:type umbel-sc:Volcano.

dbpedia:Beerenberg rdf:type umbel-sc:Volcano,

umbel-sc:NaturalElevation ;

rdfs:label "Beerenberg"@en ;

rdfs:label "Бееренберг"@ru .

dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ;

rdfs:label "Etna" .

dbpedia:Mount_Baker rdf:type umbel-sc:Volcano.

dbpedia:Beerenberg rdf:type umbel-sc:Volcano,

umbel-sc:NaturalElevation ;

rdfs:label "Beerenberg"@en ;

rdfs:label "Бееренберг"@ru .

Data

Page 19: Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 19

Basic Graph Patterns (Example)

dbpedia:Mount_Baker rdf:type umbel-sc:Volcano ;

p:location dbpedia:United_States .

dbpedia:United_States rdfs:label "United States" .

dbpedia:Mount_Baker rdf:type umbel-sc:Volcano ;

p:location dbpedia:United_States .

dbpedia:United_States rdfs:label "United States" .

Data

● Question: Where are all (known) volcanos located? (List the names of these locations)

Page 20: Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 20

Basic Graph Patterns (Example)

● Blank nodes in SPARQL queries● As subject or object of a triple pattern● “Non-selectable” variables

dbpedia:Mount_Baker rdf:type umbel-sc:Volcano ;

p:location dbpedia:United_States .

dbpedia:United_States rdfs:label "United States" .

dbpedia:Mount_Baker rdf:type umbel-sc:Volcano ;

p:location dbpedia:United_States .

dbpedia:United_States rdfs:label "United States" .

Data

SELECT ?name WHERE {

_:x rdf:type umbel-sc:Volcano ;

p:location [ rdfs:label ?name ] . }

SELECT ?name WHERE {

_:x rdf:type umbel-sc:Volcano ;

p:location [ rdfs:label ?name ] . }

Query?name

"United States"

● Question: Where are all (known) volcanos located? (List the names of these locations)

Page 21: Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 21

Basic Graph Patterns (Example)

● Blank nodes in the queried data

dbpedia:Mount_Baker rdf:type umbel-sc:Volcano ;

p:location [ rdfs:label "United States"@en ,

"États-Unis"@fr ] .

dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ;

p:location [ rdfs:label "Italy" ] .

dbpedia:Mount_Baker rdf:type umbel-sc:Volcano ;

p:location [ rdfs:label "United States"@en ,

"États-Unis"@fr ] .

dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ;

p:location [ rdfs:label "Italy" ] .

Data

Page 22: Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 22

Basic Graph Patterns (Example)

● Blank nodes in the queried data➔ Blank node identifiers may occur in the results

dbpedia:Mount_Baker rdf:type umbel-sc:Volcano ;

p:location [ rdfs:label "United States"@en ,

"États-Unis"@fr ] .

dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ;

p:location [ rdfs:label "Italy" ] .

dbpedia:Mount_Baker rdf:type umbel-sc:Volcano ;

p:location [ rdfs:label "United States"@en ,

"États-Unis"@fr ] .

dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ;

p:location [ rdfs:label "Italy" ] .

Data

SELECT ?l ?name WHERE {

?v rdf:type umbel-sc:Volcano ;

p:location ?l .

?l rdfs:label ?name .

}

SELECT ?l ?name WHERE {

?v rdf:type umbel-sc:Volcano ;

p:location ?l .

?l rdfs:label ?name .

}

Query?name

"United States"@en"États-Unis"@fr"Italy"

_:x_:x_:y

?l

Page 23: Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 23

Optional Graph Patterns

SELECT ?v ?name WHERE {

?v rdf:type umbel-sc:Volcano ;

rdfs:label ?name . }

SELECT ?v ?name WHERE {

?v rdf:type umbel-sc:Volcano ;

rdfs:label ?name . }

Query

dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ;

rdfs:label "Etna" .

dbpedia:Mount_Baker rdf:type umbel-sc:Volcano .

dbpedia:Beerenberg rdf:type umbel-sc:Volcano ;

rdfs:label "Beerenberg"@en .

dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ;

rdfs:label "Etna" .

dbpedia:Mount_Baker rdf:type umbel-sc:Volcano .

dbpedia:Beerenberg rdf:type umbel-sc:Volcano ;

rdfs:label "Beerenberg"@en .

Data

?name

"Etna""Beerenberg"@en

?v

dbpedia:Mount_Etnadbpedia:Beerenberg

● Problem: Mount Baker missing (it has no name)

● Question: What are all (known) volcanos and their names?

Page 24: Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 24

Optional Graph Patterns

● Keyword OPTIONAL allows for optional patterns

● Optional patterns may result in unbound variables

SELECT ?v ?name WHERE {

?v rdf:type umbel-sc:Volcano .

OPTIONAL { ?v rdfs:label ?name }

}

SELECT ?v ?name WHERE {

?v rdf:type umbel-sc:Volcano .

OPTIONAL { ?v rdfs:label ?name }

}

Query

?name

"Etna"

"Beerenberg"@en

?v

dbpedia:Mount_Etnadbpedia:Mount_Bakerdbpedia:Beerenberg

Page 25: Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 25

Union Graph Patterns

SELECT ?v WHERE {

?v rdf:type umbel-sc:Volcano ;

p:location ? . }

SELECT ?v WHERE {

?v rdf:type umbel-sc:Volcano ;

p:location ? . }

Query

dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ;

rdfs:label "Etna" ;

p:location dbpedia:Italy .

dbpedia:Mount_Baker rdf:type umbel-sc:Volcano ;

p:location dbpedia:United_States .

dbpedia:Beerenberg rdf:type umbel-sc:Volcano ;

rdfs:label "Beerenberg"@en ;

p:location dbpedia:Norway .

dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ;

rdfs:label "Etna" ;

p:location dbpedia:Italy .

dbpedia:Mount_Baker rdf:type umbel-sc:Volcano ;

p:location dbpedia:United_States .

dbpedia:Beerenberg rdf:type umbel-sc:Volcano ;

rdfs:label "Beerenberg"@en ;

p:location dbpedia:Norway .

Data

● Question: What volcanos are located in Italy or in Norway?

Page 26: Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 26

Union Graph Patterns

● Union graph patterns allow for alternatives

SELECT ?v WHERE { ?v rdf:type umbel-sc:Volcano .

{ ?v p:location dbpedia:Italy }

UNION

{ ?v p:location dbpedia:Norway }

}

SELECT ?v WHERE { ?v rdf:type umbel-sc:Volcano .

{ ?v p:location dbpedia:Italy }

UNION

{ ?v p:location dbpedia:Norway }

} Query

Page 27: Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 27

Union Graph Patterns

● Union graph patterns allow for alternatives

SELECT ?v WHERE { ?v rdf:type umbel-sc:Volcano .

{ ?v p:location dbpedia:Italy }

UNION

{ ?v p:location dbpedia:Norway }

}

SELECT ?v WHERE { ?v rdf:type umbel-sc:Volcano .

{ ?v p:location dbpedia:Italy }

UNION

{ ?v p:location dbpedia:Norway }

} Query

Semanticallyequivalent

SELECT ?v WHERE {

{ ?v rdf:type umbel-sc:Volcano ;

p:location dbpedia:Italy }

UNION

{ ?v rdf:type umbel-sc:Volcano ;

p:location dbpedia:Norway }

}

SELECT ?v WHERE {

{ ?v rdf:type umbel-sc:Volcano ;

p:location dbpedia:Italy }

UNION

{ ?v rdf:type umbel-sc:Volcano ;

p:location dbpedia:Norway }

}

Query

Page 28: Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 28

Group Graph Patterns

SELECT ?v WHERE { ?v rdf:type umbel-sc:Volcano .

{ ?v p:location dbpedia:Italy }

UNION

{ ?v p:location dbpedia:Norway }

}

SELECT ?v WHERE { ?v rdf:type umbel-sc:Volcano .

{ ?v p:location dbpedia:Italy }

UNION

{ ?v p:location dbpedia:Norway }

} Query

SELECT ?v WHERE { { ?v rdf:type umbel-sc:Volcano }

{ { ?v p:location dbpedia:Italy }

UNION

{ ?v p:location dbpedia:Norway } }

}

SELECT ?v WHERE { { ?v rdf:type umbel-sc:Volcano }

{ { ?v p:location dbpedia:Italy }

UNION

{ ?v p:location dbpedia:Norway } }

} Query

Semantically equivalent

Page 29: Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 29

Constraints on Solutions

● Syntax: Keyword FILTER followed by filter expression

● Filter expressions contain operators and functions● Operators and functions operate on RDF terms

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

PREFIX umbel-sc: <http://umbel.org/umbel/sc/>

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

SELECT ?v

WHERE {

?v rdf:type umbel-sc:Volcano ;

p:lastEruption ?le .

FILTER ( ?le > 1900 )

}

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

PREFIX umbel-sc: <http://umbel.org/umbel/sc/>

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

SELECT ?v

WHERE {

?v rdf:type umbel-sc:Volcano ;

p:lastEruption ?le .

FILTER ( ?le > 1900 )

}

Page 30: Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 30

Constraints (Truth Table)

● Filter expressions evaluate to true, false, or error● Truth table:

A B A || B A && BT T T TT F T FF T T FF F F FT E T EE T T EF E E FE F E FE E E E

Page 31: Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 31

Unary Operators in Constraints

Operator Type(A) Result type ! A xsd:boolean xsd:boolean + A numeric numeric - A numeric numericBOUND(A) variable xsd:booleanisURI(A) RDF term xsd:booleanisBLANK(A) RDF term xsd:booleanisLITERAL(A) RDF term xsd:booleanSTR(A) literal / URI simple literalLANG(A) literal simple literalDATATYPE(A) literal simple literal

Page 32: Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 32

Constraints (Example)

SELECT ?type WHERE {

?v rdf:type ?type ;

rdfs:label ?name .

FILTER ( STR(?name) = "Beerenberg" )

}

SELECT ?type WHERE {

?v rdf:type ?type ;

rdfs:label ?name .

FILTER ( STR(?name) = "Beerenberg" )

}

Query

● Question: List all types of the volcano called “Beerenberg”

dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ;

rdfs:label "Etna" .

dbpedia:Beerenberg rdf:type umbel-sc:Volcano,

umbel-sc:NaturalElevation ;

rdfs:label "Beerenberg"@en ;

rdfs:label "Бееренберг"@ru .

dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ;

rdfs:label "Etna" .

dbpedia:Beerenberg rdf:type umbel-sc:Volcano,

umbel-sc:NaturalElevation ;

rdfs:label "Beerenberg"@en ;

rdfs:label "Бееренберг"@ru .

Data

Page 33: Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 33

Constraints (Example)

SELECT ?type WHERE {

?v rdf:type ?type ;

rdfs:label ?name .

FILTER ( STR(?name) = "Beerenberg" )

}

SELECT ?type WHERE {

?v rdf:type ?type ;

rdfs:label ?name .

FILTER ( STR(?name) = "Beerenberg" )

}

Query

● Question: List all types of the volcano called “Beerenberg”

?type

umbel-sc:Volcanoumbel-sc:NaturalElevation

dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ;

rdfs:label "Etna" .

dbpedia:Beerenberg rdf:type umbel-sc:Volcano,

umbel-sc:NaturalElevation ;

rdfs:label "Beerenberg"@en ;

rdfs:label "Бееренберг"@ru .

dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ;

rdfs:label "Etna" .

dbpedia:Beerenberg rdf:type umbel-sc:Volcano,

umbel-sc:NaturalElevation ;

rdfs:label "Beerenberg"@en ;

rdfs:label "Бееренберг"@ru .

Data

Page 34: Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 34

Constraints (Further Operators)

● Binary operators:● Logical connectives && and || for xsd:boolean● Comparison operators =, !=, <, >, <=, and >= for numeric

datatypes, xsd:dateTime, xsd:string, and xsd:boolean● Comparison operators = and != for other datatypes● Arithmetic operators +, -, *, and / for numeric datatypes

● Furthermore:● REGEX(String,Pattern) or REGEX(String,Pattern,Flags)● sameTERM(A,B)● langMATCHES(A,B)

Page 35: Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 35

Constraints (Example)

SELECT ?v WHERE {

?v rdf:type umbel-sc:Volcano ;

rdfs:label ?name .

FILTER( REGEX(STR(?name),"e") )

}

SELECT ?v WHERE {

?v rdf:type umbel-sc:Volcano ;

rdfs:label ?name .

FILTER( REGEX(STR(?name),"e") )

}

Query?v

dbpedia:Beerenbergdbpedia:Beerenberg

dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ;

rdfs:label "Etna" .

dbpedia:Beerenberg rdf:type umbel-sc:Volcano,

umbel-sc:NaturalElevation ;

rdfs:label "Beerenberg"@en ;

rdfs:label "Бееренберг"@ru .

dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ;

rdfs:label "Etna" .

dbpedia:Beerenberg rdf:type umbel-sc:Volcano,

umbel-sc:NaturalElevation ;

rdfs:label "Beerenberg"@en ;

rdfs:label "Бееренберг"@ru .

Data

● Question: What volcanos have an “e” in their name?

Page 36: Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 36

Constraints (Example)

SELECT ?v WHERE {

?v rdf:type umbel-sc:Volcano ;

rdfs:label ?name .

FILTER( REGEX(STR(?name),"e","i") )

}

SELECT ?v WHERE {

?v rdf:type umbel-sc:Volcano ;

rdfs:label ?name .

FILTER( REGEX(STR(?name),"e","i") )

}

Query?v

dbpedia:Mount_Etnadbpedia:Beerenbergdbpedia:Beerenberg

dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ;

rdfs:label "Etna" .

dbpedia:Beerenberg rdf:type umbel-sc:Volcano,

umbel-sc:NaturalElevation ;

rdfs:label "Beerenberg"@en ;

rdfs:label "Бееренберг"@ru .

dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ;

rdfs:label "Etna" .

dbpedia:Beerenberg rdf:type umbel-sc:Volcano,

umbel-sc:NaturalElevation ;

rdfs:label "Beerenberg"@en ;

rdfs:label "Бееренберг"@ru .

Data

● Question: What volcanos have an “e” in their name?

Page 37: Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 37

Graph Graph Patterns

● SPARQL queriesare executed overan RDF dataset:● One default graph and● Zero or more named graphs (identified by an URI)

Page 38: Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 38

Graph Graph Patterns

dbpedia:Mount_Etna rdfs:seeAlso <http://example.org/d1>.

dbpedia:Mount_Baker rdfs:seeAlso <http://example.org/d2>.

dbpedia:Mount_Etna rdfs:seeAlso <http://example.org/d1>.

dbpedia:Mount_Baker rdfs:seeAlso <http://example.org/d2>.

dbpedia:Mount_Etna

rdf:type umbel-sc:Volcano ;

rdfs:label "Etna" .

dbpedia:Mount_Etna

rdf:type umbel-sc:Volcano ;

rdfs:label "Etna" .

http://example.org/d1

dbpedia:Mount_Baker

rdf:type umbel-sc:Volcano .

dbpedia:Mount_Baker

rdf:type umbel-sc:Volcano .

http://example.org/d2

dbpedia:Beerenberg

rdf:type umbel-sc:Volcano ;

rdfs:label "Beerenberg"@en .

dbpedia:Beerenberg

rdf:type umbel-sc:Volcano ;

rdfs:label "Beerenberg"@en .

http://example.org/d3

DefaultGraph

● SPARQL queriesare executed overan RDF dataset:● One default graph and● Zero or more named graphs (identified by an URI)

Page 39: Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 39

Components of SPARQL Queries

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

PREFIX umbel-sc: <http://umbel.org/umbel/sc/>

SELECT ?v

FROM <http://example.org/myGeoData>

WHERE {

?v rdf:type umbel-sc:Volcano .

}

ORDER BY ?name

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

PREFIX umbel-sc: <http://umbel.org/umbel/sc/>

SELECT ?v

FROM <http://example.org/myGeoData>

WHERE {

?v rdf:type umbel-sc:Volcano .

}

ORDER BY ?name

● Dataset specification:● Specify the RDF dataset to be queried

(more about that later)

Page 40: Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 40

Components of SPARQL Queries

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

PREFIX umbel-sc: <http://umbel.org/umbel/sc/>

SELECT ?v

FROM <http://example.org/myGeoData>

WHERE {

?v rdf:type umbel-sc:Volcano .

}

ORDER BY ?name

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

PREFIX umbel-sc: <http://umbel.org/umbel/sc/>

SELECT ?v

FROM <http://example.org/myGeoData>

WHERE {

?v rdf:type umbel-sc:Volcano .

}

ORDER BY ?name

● Dataset specification:● Specify the RDF dataset to be queried

(more about that later) here ...● Specification using FROM and FROM NAMED

Page 41: Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 41

Graph Graph Patterns

dbpedia:Mount_Etna rdfs:seeAlso <http://example.org/d1>.

dbpedia:Mount_Baker rdfs:seeAlso <http://example.org/d2>.

dbpedia:Mount_Etna rdfs:seeAlso <http://example.org/d1>.

dbpedia:Mount_Baker rdfs:seeAlso <http://example.org/d2>.

dbpedia:Mount_Etna

rdf:type umbel-sc:Volcano ;

rdfs:label "Etna" .

dbpedia:Mount_Etna

rdf:type umbel-sc:Volcano ;

rdfs:label "Etna" .

http://example.org/d1

dbpedia:Mount_Baker

rdf:type umbel-sc:Volcano .

dbpedia:Mount_Baker

rdf:type umbel-sc:Volcano .

http://example.org/d2

dbpedia:Beerenberg

rdf:type umbel-sc:Volcano ;

rdfs:label "Beerenberg"@en .

dbpedia:Beerenberg

rdf:type umbel-sc:Volcano ;

rdfs:label "Beerenberg"@en .

http://example.org/d3

DefaultGraph

Page 42: Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 42

Graph Graph Patterns

dbpedia:Mount_Etna rdfs:seeAlso <http://example.org/d1>.

dbpedia:Mount_Baker rdfs:seeAlso <http://example.org/d2>.

dbpedia:Mount_Etna rdfs:seeAlso <http://example.org/d1>.

dbpedia:Mount_Baker rdfs:seeAlso <http://example.org/d2>.

dbpedia:Mount_Etna

rdf:type umbel-sc:Volcano ;

rdfs:label "Etna" .

dbpedia:Mount_Etna

rdf:type umbel-sc:Volcano ;

rdfs:label "Etna" .

http://example.org/d1

dbpedia:Mount_Baker

rdf:type umbel-sc:Volcano .

dbpedia:Mount_Baker

rdf:type umbel-sc:Volcano .

http://example.org/d2

dbpedia:Beerenberg

rdf:type umbel-sc:Volcano ;

rdfs:label "Beerenberg"@en .

dbpedia:Beerenberg

rdf:type umbel-sc:Volcano ;

rdfs:label "Beerenberg"@en .

http://example.org/d3

DefaultGraph

● Evaluation of patterns w.r.t. active graph● GRAPH clause for making a named graph the active graph

Page 43: Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 43

Graph Graph Patterns

dbpedia:Mount_Etna rdfs:seeAlso <http://example.org/d1>.

dbpedia:Mount_Baker rdfs:seeAlso <http://example.org/d2>.

dbpedia:Mount_Etna rdfs:seeAlso <http://example.org/d1>.

dbpedia:Mount_Baker rdfs:seeAlso <http://example.org/d2>.

dbpedia:Mount_Etna

rdf:type umbel-sc:Volcano ;

rdfs:label "Etna" .

dbpedia:Mount_Etna

rdf:type umbel-sc:Volcano ;

rdfs:label "Etna" .

http://example.org/d1

dbpedia:Mount_Baker

rdf:type umbel-sc:Volcano .

dbpedia:Mount_Baker

rdf:type umbel-sc:Volcano .

http://example.org/d2

dbpedia:Beerenberg

rdf:type umbel-sc:Volcano ;

rdfs:label "Beerenberg"@en .

dbpedia:Beerenberg

rdf:type umbel-sc:Volcano ;

rdfs:label "Beerenberg"@en .

http://example.org/d3SELECT ?v WHERE {

GRAPH <http://example.org/d1> {

?v rdf:type umbel-sc:Volcano .

}

}

SELECT ?v WHERE {

GRAPH <http://example.org/d1> {

?v rdf:type umbel-sc:Volcano .

}

}

?v

dbpedia:Mount_Etna

DefaultGraph

Page 44: Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 44

Graph Graph Patterns

dbpedia:Mount_Etna rdfs:seeAlso <http://example.org/d1>.

dbpedia:Mount_Baker rdfs:seeAlso <http://example.org/d2>.

dbpedia:Mount_Etna rdfs:seeAlso <http://example.org/d1>.

dbpedia:Mount_Baker rdfs:seeAlso <http://example.org/d2>.

dbpedia:Mount_Etna

rdf:type umbel-sc:Volcano ;

rdfs:label "Etna" .

dbpedia:Mount_Etna

rdf:type umbel-sc:Volcano ;

rdfs:label "Etna" .

http://example.org/d1

dbpedia:Mount_Baker

rdf:type umbel-sc:Volcano .

dbpedia:Mount_Baker

rdf:type umbel-sc:Volcano .

http://example.org/d2

dbpedia:Beerenberg

rdf:type umbel-sc:Volcano ;

rdfs:label "Beerenberg"@en .

dbpedia:Beerenberg

rdf:type umbel-sc:Volcano ;

rdfs:label "Beerenberg"@en .

http://example.org/d3SELECT ?v WHERE {

GRAPH ?g {

?v rdf:type umbel-sc:Volcano .

}

}

SELECT ?v WHERE {

GRAPH ?g {

?v rdf:type umbel-sc:Volcano .

}

}

?v

dbpedia:Mount_Etnadbpedia:Mount_Bakerdbpedia:Beerenberg

DefaultGraph

Page 45: Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 45

Graph Graph Patterns

dbpedia:Mount_Etna rdfs:seeAlso <http://example.org/d1>.

dbpedia:Mount_Baker rdfs:seeAlso <http://example.org/d2>.

dbpedia:Mount_Etna rdfs:seeAlso <http://example.org/d1>.

dbpedia:Mount_Baker rdfs:seeAlso <http://example.org/d2>.

dbpedia:Mount_Etna

rdf:type umbel-sc:Volcano ;

rdfs:label "Etna" .

dbpedia:Mount_Etna

rdf:type umbel-sc:Volcano ;

rdfs:label "Etna" .

http://example.org/d1

dbpedia:Mount_Baker

rdf:type umbel-sc:Volcano .

dbpedia:Mount_Baker

rdf:type umbel-sc:Volcano .

http://example.org/d2

dbpedia:Beerenberg

rdf:type umbel-sc:Volcano ;

rdfs:label "Beerenberg"@en .

dbpedia:Beerenberg

rdf:type umbel-sc:Volcano ;

rdfs:label "Beerenberg"@en .

http://example.org/d3SELECT ?v ?g WHERE {

GRAPH ?g {

?v rdf:type umbel-sc:Volcano .

}

}

SELECT ?v ?g WHERE {

GRAPH ?g {

?v rdf:type umbel-sc:Volcano .

}

}

?g

<http://example.org/d1><http://example.org/d2><http://example.org/d3>

?v

dbpedia:Mount_Etnadbpedia:Mount_Bakerdbpedia:Beerenberg

DefaultGraph

Page 46: Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 46

Graph Graph Patterns

dbpedia:Mount_Etna rdfs:seeAlso <http://example.org/d1>.

dbpedia:Mount_Baker rdfs:seeAlso <http://example.org/d2>.

dbpedia:Mount_Etna rdfs:seeAlso <http://example.org/d1>.

dbpedia:Mount_Baker rdfs:seeAlso <http://example.org/d2>.

dbpedia:Mount_Etna

rdf:type umbel-sc:Volcano ;

rdfs:label "Etna" .

dbpedia:Mount_Etna

rdf:type umbel-sc:Volcano ;

rdfs:label "Etna" .

http://example.org/d1

dbpedia:Mount_Baker

rdf:type umbel-sc:Volcano .

dbpedia:Mount_Baker

rdf:type umbel-sc:Volcano .

http://example.org/d2

dbpedia:Beerenberg

rdf:type umbel-sc:Volcano ;

rdfs:label "Beerenberg"@en .

dbpedia:Beerenberg

rdf:type umbel-sc:Volcano ;

rdfs:label "Beerenberg"@en .

http://example.org/d3SELECT ?v WHERE {

_:x rdfs:seeAlso ?g

GRAPH ?g {

?v rdf:type umbel-sc:Volcano .

}

}

SELECT ?v WHERE {

_:x rdfs:seeAlso ?g

GRAPH ?g {

?v rdf:type umbel-sc:Volcano .

}

}

?v

dbpedia:Mount_Etnadbpedia:Mount_Baker

DefaultGraph

Page 47: Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 47

Negation

dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ;

rdfs:label "Etna" .

dbpedia:Mount_Baker rdf:type umbel-sc:Volcano .

dbpedia:Beerenberg rdf:type umbel-sc:Volcano ;

rdfs:label "Beerenberg"@en ;

rdfs:label "Бееренберг"@ru .

dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ;

rdfs:label "Etna" .

dbpedia:Mount_Baker rdf:type umbel-sc:Volcano .

dbpedia:Beerenberg rdf:type umbel-sc:Volcano ;

rdfs:label "Beerenberg"@en ;

rdfs:label "Бееренберг"@ru .

Data

● Question: What volcanos do not have a name in our data?

Page 48: Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 48

Negation

SELECT ?v WHERE {

?v rdf:type umbel-sc:Volcano .

OPTIONAL { ?v rdfs:label ?name }

FILTER( ! BOUND(?name) )

}

SELECT ?v WHERE {

?v rdf:type umbel-sc:Volcano .

OPTIONAL { ?v rdfs:label ?name }

FILTER( ! BOUND(?name) )

}

Query

?v

dbpedia:Mount_Baker

dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ;

rdfs:label "Etna" .

dbpedia:Mount_Baker rdf:type umbel-sc:Volcano .

dbpedia:Beerenberg rdf:type umbel-sc:Volcano ;

rdfs:label "Beerenberg"@en ;

rdfs:label "Бееренберг"@ru .

dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ;

rdfs:label "Etna" .

dbpedia:Mount_Baker rdf:type umbel-sc:Volcano .

dbpedia:Beerenberg rdf:type umbel-sc:Volcano ;

rdfs:label "Beerenberg"@en ;

rdfs:label "Бееренберг"@ru .

Data

● Question: What volcanos do not have a name in our data?

Negation as Failure

Page 49: Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 49

Negation

dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ;

rdfs:label "Etna" .

dbpedia:Mount_Baker rdf:type umbel-sc:Volcano .

dbpedia:Beerenberg rdf:type umbel-sc:Volcano ;

rdfs:label "Beerenberg"@en ;

rdfs:label "Бееренберг"@ru .

dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ;

rdfs:label "Etna" .

dbpedia:Mount_Baker rdf:type umbel-sc:Volcano .

dbpedia:Beerenberg rdf:type umbel-sc:Volcano ;

rdfs:label "Beerenberg"@en ;

rdfs:label "Бееренберг"@ru .

Data

● Question: What volcanos are not called “Beerenberg”?

Page 50: Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 50

Negation

SELECT ?v WHERE {

?v rdf:type umbel-sc:Volcano .

rdfs:label ?name .

FILTER (STR(?name) != "Beerenberg")

}

SELECT ?v WHERE {

?v rdf:type umbel-sc:Volcano .

rdfs:label ?name .

FILTER (STR(?name) != "Beerenberg")

}

Query

dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ;

rdfs:label "Etna" .

dbpedia:Mount_Baker rdf:type umbel-sc:Volcano .

dbpedia:Beerenberg rdf:type umbel-sc:Volcano ;

rdfs:label "Beerenberg"@en ;

rdfs:label "Бееренберг"@ru .

dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ;

rdfs:label "Etna" .

dbpedia:Mount_Baker rdf:type umbel-sc:Volcano .

dbpedia:Beerenberg rdf:type umbel-sc:Volcano ;

rdfs:label "Beerenberg"@en ;

rdfs:label "Бееренберг"@ru .

Data

● Question: What volcanos are not called “Beerenberg”?

Page 51: Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 51

Negation

SELECT ?v WHERE {

?v rdf:type umbel-sc:Volcano .

rdfs:label ?name .

FILTER (STR(?name) != "Beerenberg")

}

SELECT ?v WHERE {

?v rdf:type umbel-sc:Volcano .

rdfs:label ?name .

FILTER (STR(?name) != "Beerenberg")

}

Query

dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ;

rdfs:label "Etna" .

dbpedia:Mount_Baker rdf:type umbel-sc:Volcano .

dbpedia:Beerenberg rdf:type umbel-sc:Volcano ;

rdfs:label "Beerenberg"@en ;

rdfs:label "Бееренберг"@ru .

dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ;

rdfs:label "Etna" .

dbpedia:Mount_Baker rdf:type umbel-sc:Volcano .

dbpedia:Beerenberg rdf:type umbel-sc:Volcano ;

rdfs:label "Beerenberg"@en ;

rdfs:label "Бееренберг"@ru .

Data

● Question: What volcanos are not called “Beerenberg”?

?v

dbpedia:Mount_Etnadbpedia:Mount_Bakerdbpedia:Beerenberg

Page 52: Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 52

Negation

SELECT ?v WHERE {

?v rdf:type umbel-sc:Volcano .

rdfs:label ?name .

FILTER (STR(?name) != "Beerenberg")

}

SELECT ?v WHERE {

?v rdf:type umbel-sc:Volcano .

rdfs:label ?name .

FILTER (STR(?name) != "Beerenberg")

}

Query

?v

dbpedia:Mount_Etnadbpedia:Mount_Bakerdbpedia:Beerenberg

dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ;

rdfs:label "Etna" .

dbpedia:Mount_Baker rdf:type umbel-sc:Volcano .

dbpedia:Beerenberg rdf:type umbel-sc:Volcano ;

rdfs:label "Beerenberg"@en ;

rdfs:label "Бееренберг"@ru .

dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ;

rdfs:label "Etna" .

dbpedia:Mount_Baker rdf:type umbel-sc:Volcano .

dbpedia:Beerenberg rdf:type umbel-sc:Volcano ;

rdfs:label "Beerenberg"@en ;

rdfs:label "Бееренберг"@ru .

Data

● Question: What volcanos are not called “Beerenberg”?

!=

Page 53: Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 53

Negation

SELECT ?v WHERE {

?v rdf:type umbel-sc:Volcano .

rdfs:label ?name .

FILTER (STR(?name) != "Beerenberg")

}

SELECT ?v WHERE {

?v rdf:type umbel-sc:Volcano .

rdfs:label ?name .

FILTER (STR(?name) != "Beerenberg")

}

Query

?v

dbpedia:Mount_Etnadbpedia:Mount_Bakerdbpedia:Beerenberg

dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ;

rdfs:label "Etna" .

dbpedia:Mount_Baker rdf:type umbel-sc:Volcano .

dbpedia:Beerenberg rdf:type umbel-sc:Volcano ;

rdfs:label "Beerenberg"@en ;

rdfs:label "Бееренберг"@ru .

dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ;

rdfs:label "Etna" .

dbpedia:Mount_Baker rdf:type umbel-sc:Volcano .

dbpedia:Beerenberg rdf:type umbel-sc:Volcano ;

rdfs:label "Beerenberg"@en ;

rdfs:label "Бееренберг"@ru .

Data

● Question: What volcanos are not called “Beerenberg”?

!=

Page 54: Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 54

Negation

SELECT ?v WHERE {

?v rdf:type umbel-sc:Volcano .

OPTIONAL { ?v rdfs:label ?name .

FILTER (STR(?name) = "Beerenberg") }

FILTER ( ! BOUND(?name) )

}

SELECT ?v WHERE {

?v rdf:type umbel-sc:Volcano .

OPTIONAL { ?v rdfs:label ?name .

FILTER (STR(?name) = "Beerenberg") }

FILTER ( ! BOUND(?name) )

}

Query?v

dbpedia:Mount_Etnadbpedia:Mount_Baker

dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ;

rdfs:label "Etna" .

dbpedia:Mount_Baker rdf:type umbel-sc:Volcano .

dbpedia:Beerenberg rdf:type umbel-sc:Volcano ;

rdfs:label "Beerenberg"@en ;

rdfs:label "Бееренберг"@ru .

dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ;

rdfs:label "Etna" .

dbpedia:Mount_Baker rdf:type umbel-sc:Volcano .

dbpedia:Beerenberg rdf:type umbel-sc:Volcano ;

rdfs:label "Beerenberg"@en ;

rdfs:label "Бееренберг"@ru .

Data

● Question: What volcanos are not called “Beerenberg”?

Negation as Failure

Page 55: Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 55

Graph Graph Patterns

dbpedia:Mount_Etna rdfs:seeAlso <http://example.org/d1>.

dbpedia:Mount_Baker rdfs:seeAlso <http://example.org/d2>.

dbpedia:Mount_Etna rdfs:seeAlso <http://example.org/d1>.

dbpedia:Mount_Baker rdfs:seeAlso <http://example.org/d2>.

dbpedia:Mount_Etna

rdf:type umbel-sc:Volcano ;

rdfs:label "Etna" .

dbpedia:Mount_Etna

rdf:type umbel-sc:Volcano ;

rdfs:label "Etna" .

http://example.org/d1

dbpedia:Mount_Baker

rdf:type umbel-sc:Volcano .

dbpedia:Mount_Baker

rdf:type umbel-sc:Volcano .

http://example.org/d2

dbpedia:Beerenberg

rdf:type umbel-sc:Volcano ;

rdfs:label "Beerenberg"@en .

dbpedia:Beerenberg

rdf:type umbel-sc:Volcano ;

rdfs:label "Beerenberg"@en .

http://example.org/d3

● Question: Which named graphs contain the name of a volcano that is not referenced in the default graph?

DefaultGraph

Page 56: Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 56

Graph Graph Patterns

dbpedia:Mount_Etna rdfs:seeAlso <http://example.org/d1>.

dbpedia:Mount_Baker rdfs:seeAlso <http://example.org/d2>.

dbpedia:Mount_Etna rdfs:seeAlso <http://example.org/d1>.

dbpedia:Mount_Baker rdfs:seeAlso <http://example.org/d2>.

dbpedia:Mount_Etna

rdf:type umbel-sc:Volcano ;

rdfs:label "Etna" .

dbpedia:Mount_Etna

rdf:type umbel-sc:Volcano ;

rdfs:label "Etna" .

http://example.org/d1

dbpedia:Mount_Baker

rdf:type umbel-sc:Volcano .

dbpedia:Mount_Baker

rdf:type umbel-sc:Volcano .

http://example.org/d2

dbpedia:Beerenberg

rdf:type umbel-sc:Volcano ;

rdfs:label "Beerenberg"@en .

dbpedia:Beerenberg

rdf:type umbel-sc:Volcano ;

rdfs:label "Beerenberg"@en .

http://example.org/d3

● Question: Which named graphs contain the name of a volcano that is not referenced in the default graph?

DefaultGraphSELECT ?g WHERE {

GRAPH ?g {

?v rdf:type umbel-sc:Volcano ;

rdfs:label ?name .

}

OPTIONAL { ?v rdfs:seeAlso ?r }

FILTER ( ! BOUND(?r) )

}

SELECT ?g WHERE {

GRAPH ?g {

?v rdf:type umbel-sc:Volcano ;

rdfs:label ?name .

}

OPTIONAL { ?v rdfs:seeAlso ?r }

FILTER ( ! BOUND(?r) )

}

Page 57: Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 57

Summary – Graph Patterns

● Different types of graph patterns for the query pattern (WHERE clause):● Basic graph pattern (BGP)● Group graph pattern● Optional graph pattern – keyword OPTIONAL ● Union graph pattern – keyword UNION● Graph graph pattern – keyword GRAPH● Constraints – keyword FILTER

Page 58: Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 58

Components of SPARQL Queries

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

PREFIX umbel-sc: <http://umbel.org/umbel/sc/>

SELECT ?v

FROM <http://example.org/myGeoData>

WHERE {

?v rdf:type umbel-sc:Volcano .

}

ORDER BY ?name

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

PREFIX umbel-sc: <http://umbel.org/umbel/sc/>

SELECT ?v

FROM <http://example.org/myGeoData>

WHERE {

?v rdf:type umbel-sc:Volcano .

}

ORDER BY ?name

● Result form specification:● SELECT, DESCRIBE, CONSTRUCT, or ASK

(more about that later)

Page 59: Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 59

Components of SPARQL Queries

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

PREFIX umbel-sc: <http://umbel.org/umbel/sc/>

SELECT ?v

FROM <http://example.org/myGeoData>

WHERE {

?v rdf:type umbel-sc:Volcano .

}

ORDER BY ?name

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

PREFIX umbel-sc: <http://umbel.org/umbel/sc/>

SELECT ?v

FROM <http://example.org/myGeoData>

WHERE {

?v rdf:type umbel-sc:Volcano .

}

ORDER BY ?name

● Result form specification:● SELECT, DESCRIBE, CONSTRUCT, or ASK

(more about that later) here ...^

Page 60: Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 60

Result Forms

● SELECT● Result: sequence of solutions (i.e. sets of variable bindings)● Selected variables separated by space (not by comma!)● Asterisk character (“*”) selects all variables in the pattern

Page 61: Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 61

Result Forms

● ASK● Check whether there is at least one result● Result: true or false● Example: Do we have data about volcanos?

ASK WHERE {

?v rdf:type umbel-sc:Volcano .

}

ASK WHERE {

?v rdf:type umbel-sc:Volcano .

}

Query

● SELECT● Result: sequence of solutions (i.e. sets of variable bindings)● Selected variables separated by space (not by comma!)● Asterisk character (“*”) selects all variables in the pattern

Page 62: Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 62

Result Forms

DESCRIBE <http://dbpedia.org/resource/Beerenberg>DESCRIBE <http://dbpedia.org/resource/Beerenberg> Query

● DESCRIBE● Result: an RDF graph with data about resources● Non-deterministic (i.e. query processor defines the actual

structure of the resulting RDF graph)● Example: just name the resource

Page 63: Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 63

Result Forms

DESCRIBE ?v WHERE {

?v rdf:type umbel-sc:Volcano ;

rdfs:label ?name . }

DESCRIBE ?v WHERE {

?v rdf:type umbel-sc:Volcano ;

rdfs:label ?name . }

Query

● Example: Specify the resource(s) with a query pattern

● Multiple variables possible or asterisk (“*”) for all

DESCRIBE <http://dbpedia.org/resource/Beerenberg>DESCRIBE <http://dbpedia.org/resource/Beerenberg> Query

● DESCRIBE● Result: an RDF graph with data about resources● Non-deterministic (i.e. query processor defines the actual

structure of the resulting RDF graph)● Example: just name the resource

Page 64: Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 64

Result Forms

● CONSTRUCT● Result: an RDF graph constructed from a template● Template: graph pattern with variables from the query pattern

Page 65: Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 65

Result Forms

CONSTRUCT { ?v rdfs:label ?name ;

rdf:type myTypes:VolcanosOutsideTheUS

}

WHERE {

?v rdf:type umbel-sc:Volcano ;

rdfs:label ?name .

OPTIONAL { ?v p:location ?l

FILTER ( ?l = dbpedia:United_States ) }

FILTER ( ! BOUND(?l) )

}

CONSTRUCT { ?v rdfs:label ?name ;

rdf:type myTypes:VolcanosOutsideTheUS

}

WHERE {

?v rdf:type umbel-sc:Volcano ;

rdfs:label ?name .

OPTIONAL { ?v p:location ?l

FILTER ( ?l = dbpedia:United_States ) }

FILTER ( ! BOUND(?l) )

}

Query

● CONSTRUCT● Result: an RDF graph constructed from a template● Template: graph pattern with variables from the query pattern

Page 66: Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 66

Result Forms

dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ;

rdfs:label "Etna" ;

p:location dbpedia:Italy .

dbpedia:Mount_Baker rdf:type umbel-sc:Volcano ;

rdfs:label "Mount Baker" ;

p:location dbpedia:United_States .

dbpedia:Beerenberg rdf:type umbel-sc:Volcano ;

rdfs:label "Beerenberg"@en ;

p:location dbpedia:Norway .

dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ;

rdfs:label "Etna" ;

p:location dbpedia:Italy .

dbpedia:Mount_Baker rdf:type umbel-sc:Volcano ;

rdfs:label "Mount Baker" ;

p:location dbpedia:United_States .

dbpedia:Beerenberg rdf:type umbel-sc:Volcano ;

rdfs:label "Beerenberg"@en ;

p:location dbpedia:Norway .

Data

dbpedia:Mount_Etna rdfs:label "Etna" ;

rdf:type myTypes:VolcanosOutsideTheUS.

dbpedia:Beerenberg rdf:type myTypes:VolcanosOutsideTheUS;

rdfs:label "Beerenberg"@en .

dbpedia:Mount_Etna rdfs:label "Etna" ;

rdf:type myTypes:VolcanosOutsideTheUS.

dbpedia:Beerenberg rdf:type myTypes:VolcanosOutsideTheUS;

rdfs:label "Beerenberg"@en .

Result

Page 67: Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 67

Components of SPARQL Queries

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

PREFIX umbel-sc: <http://umbel.org/umbel/sc/>

SELECT ?v

FROM <http://example.org/myGeoData>

WHERE {

?v rdf:type umbel-sc:Volcano .

}

ORDER BY ?name

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

PREFIX umbel-sc: <http://umbel.org/umbel/sc/>

SELECT ?v

FROM <http://example.org/myGeoData>

WHERE {

?v rdf:type umbel-sc:Volcano .

}

ORDER BY ?name

● Solution modifiers:● Only for SELECT queries● Modify the result set as a whole (not single solutions)● Keywords: DISTINCT, ORDER BY, LIMIT, and OFFSET

Page 68: Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 68

Solution Modifiers

SELECT ?type

WHERE { _:x rdf:type ?type }

SELECT ?type

WHERE { _:x rdf:type ?type }

Query

dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ;

rdfs:label "Etna" .

dbpedia:Mount_Baker rdf:type umbel-sc:Volcano.

dbpedia:Beerenberg rdf:type umbel-sc:Volcano,

umbel-sc:NaturalElevation ;

rdfs:label "Beerenberg"@en ;

rdfs:label "Бееренберг"@ru .

dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ;

rdfs:label "Etna" .

dbpedia:Mount_Baker rdf:type umbel-sc:Volcano.

dbpedia:Beerenberg rdf:type umbel-sc:Volcano,

umbel-sc:NaturalElevation ;

rdfs:label "Beerenberg"@en ;

rdfs:label "Бееренберг"@ru .

Data

● DISTINCT removes duplicates from the result set

?type

umbel-sc:Volcanoumbel-sc:Volcanoumbel-sc:NaturalElevationumbel-sc:Volcano

Page 69: Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 69

Solution Modifiers

SELECT DISTINCT ?type

WHERE { _:x rdf:type ?type }

SELECT DISTINCT ?type

WHERE { _:x rdf:type ?type }

Query

dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ;

rdfs:label "Etna" .

dbpedia:Mount_Baker rdf:type umbel-sc:Volcano.

dbpedia:Beerenberg rdf:type umbel-sc:Volcano,

umbel-sc:NaturalElevation ;

rdfs:label "Beerenberg"@en ;

rdfs:label "Бееренберг"@ru .

dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ;

rdfs:label "Etna" .

dbpedia:Mount_Baker rdf:type umbel-sc:Volcano.

dbpedia:Beerenberg rdf:type umbel-sc:Volcano,

umbel-sc:NaturalElevation ;

rdfs:label "Beerenberg"@en ;

rdfs:label "Бееренберг"@ru .

Data

● DISTINCT removes duplicates from the result set

?type

umbel-sc:Volcanoumbel-sc:NaturalElevation

Page 70: Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 70

Solution Modifiers

SELECT ?v WHERE { ?v rdf:type umbel-sc:Volcano ;

rdfs:label ?name }

ORDER BY ?name

SELECT ?v WHERE { ?v rdf:type umbel-sc:Volcano ;

rdfs:label ?name }

ORDER BY ?name

Query

● ORDER BY orders the results

Page 71: Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 71

Solution Modifiers

SELECT ?v WHERE { ?v rdf:type umbel-sc:Volcano ;

rdfs:label ?name }

ORDER BY ?name

SELECT ?v WHERE { ?v rdf:type umbel-sc:Volcano ;

rdfs:label ?name }

ORDER BY ?name

Query

● ORDER BY orders the results

● How do we order different kinds of elements? unbound variable < blank node < URI < literal

● ASC for ascending (default) and DESC for descending● Hierarchical order criteria:

SELECT ?name WHERE { ?v rdf:type umbel-sc:Volcano ;

p:lastEruption ?le ;

rdfs:label ?name }

ORDER BY DESC(?le), ?name

SELECT ?name WHERE { ?v rdf:type umbel-sc:Volcano ;

p:lastEruption ?le ;

rdfs:label ?name }

ORDER BY DESC(?le), ?name

Query

Page 72: Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 72

Solution Modifiers

SELECT ?name WHERE { ?v rdf:type umbel-sc:Volcano ;

rdfs:label ?name }

ORDER BY ?name

LIMIT 5

SELECT ?name WHERE { ?v rdf:type umbel-sc:Volcano ;

rdfs:label ?name }

ORDER BY ?name

LIMIT 5

Query

● LIMIT – limits the number of results

Page 73: Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 73

Solution Modifiers

SELECT ?name WHERE { ?v rdf:type umbel-sc:Volcano ;

rdfs:label ?name }

ORDER BY ?name

LIMIT 5

SELECT ?name WHERE { ?v rdf:type umbel-sc:Volcano ;

rdfs:label ?name }

ORDER BY ?name

LIMIT 5

Query

● LIMIT – limits the number of results

● OFFSET – position/index of the first reported results

● Order of result should be predictable (i.e. combine with ORDER BY)

SELECT ?name WHERE { ?v rdf:type umbel-sc:Volcano ;

rdfs:label ?name }

ORDER BY ?name

LIMIT 5 OFFSET 10

SELECT ?name WHERE { ?v rdf:type umbel-sc:Volcano ;

rdfs:label ?name }

ORDER BY ?name

LIMIT 5 OFFSET 10

Query

Page 74: Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 74

SPARQL 1.1

● New features of SPARQL 1.1 Query:● Aggregate functions (e.g. COUNT, SUM, AVG)● Subqueries● Negation (EXISTS, NOT EXISTS, MINUS)● Assignments (e.g. BIND, SELECT expressions)● Property paths● Basic query federation (SERVICE, BINDINGS)

● SPARQL 1.1 Update:● Graph update (INSERT DATA, DELETE DATA, INSERT,

DELETE, DELETE WHERE, LOAD, CLEAR)● Graph management (CREATE, DROP, COPY, MOVE, ADD)

Page 75: Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 75

Outline

Chapter 1: Linked Data and RDF

Chapter 2: The SPARQL Query Language

Chapter 3: Querying Linked Data on the Web

Now: Hands-on

http://olafhartig.de/icwe.html

Page 76: Tutorial "An Introduction to SPARQL and Queries over Linked Data" Chapter 2 (ICWE 2012 Ed.)

Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 76

These slides have been created byOlaf Hartig

http://olafhartig.de

This work is licensed under aCreative Commons Attribution-Share Alike 3.0 License

(http://creativecommons.org/licenses/by-sa/3.0/)