tutorial "an introduction to sparql and queries over linked data" chapter 2 (icwe 2012...

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

Upload: olaf-hartig

Post on 10-May-2015

2.585 views

Category:

Technology


0 download

DESCRIPTION

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

TRANSCRIPT

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