ICWE 2012 TutorialAn Introduction to SPARQL and   Queries over Linked Data                    ●●●     Chapter 2: SPARQL   ...
SPARQL in General ●   A family of W3C recommendations ●   SPARQL Query     ●   Declarative query language for RDF data    ...
Main Idea of SPARQL Queries ●   Pattern matching:     ●   Describe subgraphs of the queried RDF graph     ●   Subgraphs th...
Main Idea of SPARQL Queries Queried RDF graph:                                                              rdf:type      ...
Main Idea of SPARQL Queries Queried RDF graph:                                                              rdf:type      ...
Components of SPARQL Queries PREFIX PREFIX         rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>                rdf: ...
Components of SPARQL Queries PREFIX PREFIX         rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>                rdf: ...
Components of SPARQL Queries PREFIX PREFIX         rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>                rdf: ...
Components of SPARQL Queries PREFIX PREFIX         rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>                rdf: ...
Components of SPARQL Queries PREFIX PREFIX         rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>                rdf: ...
Graph Patterns ●   Different types of graph patterns for the query pattern     (WHERE clause):     ●   Basic graph pattern...
Basic Graph Patterns ●   Set of triple patterns (i.e. RDF triples with variables) ●   Variable names prefixed with “?” or ...
Basic Graph Patterns ●   Set of triple patterns (i.e. RDF triples with variables) ●   Variable names prefixed with “?” or ...
Basic Graph Patterns (Example) dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ; dbpedia:Mount_Etna rdf:type umbel-sc:Volcano...
Basic Graph Patterns (Example) dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ; dbpedia:Mount_Etna rdf:type umbel-sc:Volcano...
Basic Graph Patterns (Example) dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ; dbpedia:Mount_Etna rdf:type umbel-sc:Volcano...
Basic Graph Patterns (Example) dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ; dbpedia:Mount_Etna rdf:type umbel-sc:Volcano...
Basic Graph Patterns (Example) dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ; dbpedia:Mount_Etna rdf:type umbel-sc:Volcano...
Basic Graph Patterns (Example) dbpedia:Mount_Baker rdf:type umbel-sc:Volcano ; dbpedia:Mount_Baker rdf:type umbel-sc:Volca...
Basic Graph Patterns (Example) dbpedia:Mount_Baker rdf:type umbel-sc:Volcano ; dbpedia:Mount_Baker rdf:type umbel-sc:Volca...
Basic Graph Patterns (Example) dbpedia:Mount_Baker rdf:type umbel-sc:Volcano ; dbpedia:Mount_Baker rdf:type umbel-sc:Volca...
Basic Graph Patterns (Example) dbpedia:Mount_Baker rdf:type umbel-sc:Volcano ; dbpedia:Mount_Baker rdf:type umbel-sc:Volca...
Optional Graph Patterns dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ; dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ;     ...
Optional Graph Patterns ●   Keyword OPTIONAL allows for optional patterns SELECT ?v ?name WHERE { SELECT ?v ?name WHERE { ...
Union Graph Patterns dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ; dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ;        ...
Union Graph Patterns ●   Union graph patterns allow for alternatives     SELECT ?v WHERE { ?v rdf:type umbel-sc:Volcano . ...
Union Graph Patterns ●   Union graph patterns allow for alternatives     SELECT ?v WHERE { ?v rdf:type umbel-sc:Volcano . ...
Group Graph Patterns   SELECT ?v WHERE { ?v rdf:type umbel-sc:Volcano .   SELECT ?v WHERE { ?v rdf:type umbel-sc:Volcano ....
Constraints on Solutions ●   Syntax: Keyword FILTER followed by filter expression PREFIX PREFIX         rdf: <http://www.w...
Constraints (Truth Table) ●   Filter expressions evaluate to true, false, or error ●   Truth table:                       ...
Unary Operators in Constraints                     Operator                           Type(A)                   Result typ...
Constraints (Example) dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ; dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ;       ...
Constraints (Example) dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ; dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ;       ...
Constraints (Further Operators) ●   Binary operators:     ●   Logical connectives && and || for xsd:boolean     ●   Compar...
Constraints (Example) dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ; dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ;       ...
Constraints (Example) dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ; dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ;       ...
Graph Graph Patterns●   SPARQL queries    are executed over    an RDF dataset:    ●   One default graph and    ●   Zero or...
Graph Graph Patterns dbpedia:Mount_Etna rdfs:seeAlso <http://example.org/d1>. dbpedia:Mount_Etna rdfs:seeAlso <http://exam...
Components of SPARQL Queries PREFIX PREFIX         rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>                rdf: ...
Components of SPARQL Queries PREFIX PREFIX         rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>                rdf: ...
Graph Graph Patterns dbpedia:Mount_Etna rdfs:seeAlso <http://example.org/d1>. dbpedia:Mount_Etna rdfs:seeAlso <http://exam...
Graph Graph Patterns dbpedia:Mount_Etna rdfs:seeAlso <http://example.org/d1>. dbpedia:Mount_Etna rdfs:seeAlso <http://exam...
Graph Graph Patterns dbpedia:Mount_Etna rdfs:seeAlso <http://example.org/d1>. dbpedia:Mount_Etna rdfs:seeAlso <http://exam...
Graph Graph Patterns dbpedia:Mount_Etna rdfs:seeAlso <http://example.org/d1>. dbpedia:Mount_Etna rdfs:seeAlso <http://exam...
Graph Graph Patterns dbpedia:Mount_Etna rdfs:seeAlso <http://example.org/d1>. dbpedia:Mount_Etna rdfs:seeAlso <http://exam...
Graph Graph Patterns dbpedia:Mount_Etna rdfs:seeAlso <http://example.org/d1>. dbpedia:Mount_Etna rdfs:seeAlso <http://exam...
Negation dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ; dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ;                    ...
Negation dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ; dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ;                    ...
Negation dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ; dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ;                    ...
Negation dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ; dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ;                    ...
Negation dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ; dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ;                    ...
Negation dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ; dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ;                    ...
Negation dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ; dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ;                    ...
Negation dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ; dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ;                    ...
Graph Graph Patterns dbpedia:Mount_Etna rdfs:seeAlso <http://example.org/d1>. dbpedia:Mount_Etna rdfs:seeAlso <http://exam...
Graph Graph Patterns dbpedia:Mount_Etna rdfs:seeAlso <http://example.org/d1>. dbpedia:Mount_Etna rdfs:seeAlso <http://exam...
Summary – Graph Patterns ●   Different types of graph patterns for the query pattern     (WHERE clause):     ●   Basic gra...
Components of SPARQL Queries PREFIX PREFIX         rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>                rdf: ...
Components of SPARQL Queries PREFIX PREFIX         rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>                rdf: ...
Result Forms ●   SELECT     ●   Result: sequence of solutions (i.e. sets of variable bindings)     ●   Selected variables ...
Result Forms ●   SELECT     ●   Result: sequence of solutions (i.e. sets of variable bindings)     ●   Selected variables ...
Result Forms ●   DESCRIBE     ●   Result: an RDF graph with data about resources     ●   Non-deterministic (i.e. query pro...
Result Forms ●   DESCRIBE     ●   Result: an RDF graph with data about resources     ●   Non-deterministic (i.e. query pro...
Result Forms ●   CONSTRUCT     ●   Result: an RDF graph constructed from a template     ●   Template: graph pattern with v...
Result Forms ●   CONSTRUCT     ●   Result: an RDF graph constructed from a template     ●   Template: graph pattern with v...
Result Forms dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ; dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ;                ...
Components of SPARQL Queries PREFIX PREFIX         rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>                rdf: ...
Solution Modifiers ●   DISTINCT removes duplicates from the result set dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ; dbpe...
Solution Modifiers ●   DISTINCT removes duplicates from the result set dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ; dbpe...
Solution Modifiers ●   ORDER BY orders the results SELECT ?v WHERE { ?v rdf:type umbel-sc:Volcano ; SELECT ?v WHERE { ?v r...
Solution Modifiers ●   ORDER BY orders the results SELECT ?v WHERE { ?v rdf:type umbel-sc:Volcano ; SELECT ?v WHERE { ?v r...
Solution Modifiers ●   LIMIT – limits the number of results SELECT ?name WHERE { ?v rdf:type umbel-sc:Volcano ; Query SELE...
Solution Modifiers ●   LIMIT – limits the number of results SELECT ?name WHERE { ?v rdf:type umbel-sc:Volcano ; Query SELE...
SPARQL 1.1 ●   New features of SPARQL 1.1 Query:     ●   Aggregate functions (e.g. COUNT, SUM, AVG)     ●   Subqueries    ...
Outline        Chapter 1:          Linked Data and RDF                                                                 No ...
These slides have been created by                                      Olaf Hartig                                        ...
Upcoming SlideShare
Loading in...5
×

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

2,726

Published on

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

Published in: Technology, Education

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

  1. 1. ICWE 2012 TutorialAn 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
  2. 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 resultsOlaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 2
  3. 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) ?v rdf:type umbel-sc:VolcanoOlaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 3
  4. 4. Main Idea of SPARQL Queries Queried RDF graph: rdf:type dbpedia:Mount_Baker umbel-sc:Volcano p:lastEruption rdf:type "1880" dbpedia:Mount_Etna ?v rdf:type umbel-sc:VolcanoOlaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 4
  5. 5. Main Idea of SPARQL Queries Queried RDF graph: rdf:type dbpedia:Mount_Baker umbel-sc:Volcano p:lastEruption rdf:type "1880" dbpedia:Mount_Etna ?v rdf:type umbel-sc:Volcano Result: ?v dbpedia:Mount_Baker dbpedia:Mount_EtnaOlaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 5
  6. 6. Components of SPARQL Queries PREFIX PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX PREFIX umbel-sc: <http://umbel.org/umbel/sc/> umbel-sc: <http://umbel.org/umbel/sc/> SELECT ?v SELECT ?v FROM <http://example.org/myGeoData> FROM <http://example.org/myGeoData> WHERE { WHERE { ?v rdf:type umbel-sc:Volcano . ?v rdf:type umbel-sc:Volcano . } } ORDER BY ?name ORDER BY ?nameOlaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 6
  7. 7. Components of SPARQL Queries PREFIX PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX PREFIX umbel-sc: <http://umbel.org/umbel/sc/> umbel-sc: <http://umbel.org/umbel/sc/> SELECT ?v SELECT ?v FROM <http://example.org/myGeoData> FROM <http://example.org/myGeoData> WHERE { WHERE { ?v rdf:type umbel-sc:Volcano . ?v rdf:type umbel-sc:Volcano . } } ORDER BY ?name ORDER BY ?name ● Prologue: ● Prefix definitions for using compact URIs (CURIEs) ● Attention (difference to Turtle): No period (“.”) character as separatorOlaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 7
  8. 8. Components of SPARQL Queries PREFIX PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX PREFIX umbel-sc: <http://umbel.org/umbel/sc/> umbel-sc: <http://umbel.org/umbel/sc/> SELECT ?v SELECT ?v FROM <http://example.org/myGeoData> FROM <http://example.org/myGeoData> WHERE { WHERE { ?v rdf:type umbel-sc:Volcano . ?v rdf:type umbel-sc:Volcano . } } ORDER BY ?name ORDER BY ?name ● Result form specification: ● SELECT, DESCRIBE, CONSTRUCT, or ASK (more about that later)Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 8
  9. 9. Components of SPARQL Queries PREFIX PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX PREFIX umbel-sc: <http://umbel.org/umbel/sc/> umbel-sc: <http://umbel.org/umbel/sc/> SELECT ?v SELECT ?v FROM <http://example.org/myGeoData> FROM <http://example.org/myGeoData> WHERE { WHERE { ?v rdf:type umbel-sc:Volcano . ?v rdf:type umbel-sc:Volcano . } } ORDER BY ?name ORDER BY ?name ● Dataset specification: ● Specify the RDF dataset to be queried (more about that later)Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 9
  10. 10. Components of SPARQL Queries PREFIX PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX PREFIX umbel-sc: <http://umbel.org/umbel/sc/> umbel-sc: <http://umbel.org/umbel/sc/> SELECT ?v SELECT ?v FROM <http://example.org/myGeoData> FROM <http://example.org/myGeoData> WHERE { WHERE { ?v rdf:type umbel-sc:Volcano . ?v rdf:type umbel-sc:Volcano . } } ORDER BY ?name ORDER BY ?name ● Query Pattern: ● WHERE clause specifies the graph pattern to be matchedOlaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 10
  11. 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)Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 11
  12. 12. 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 PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> rdfs: <http://www.w3.org/2000/01/rdf-schema#> PREFIX PREFIX umbel-sc: <http://umbel.org/umbel/sc/> umbel-sc: <http://umbel.org/umbel/sc/> SELECT SELECT ?name ?name WHERE { WHERE { ?v rdf:type umbel-sc:Volcano . ?v rdf:type umbel-sc:Volcano . ?v rdfs:label ?name . ?v rdfs:label ?name . } }Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 12
  13. 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 PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> rdfs: <http://www.w3.org/2000/01/rdf-schema#> PREFIX PREFIX umbel-sc: <http://umbel.org/umbel/sc/> umbel-sc: <http://umbel.org/umbel/sc/> SELECT SELECT ?name ?name WHERE { WHERE { ?v rdf:type umbel-sc:Volcano ; ?v rdf:type umbel-sc:Volcano ; rdfs:label ?name . rdfs:label ?name . } }Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 13
  14. 14. Basic Graph Patterns (Example) dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ; dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ; Data* rdfs:label "Etna" . rdfs:label "Etna" . dbpedia:Mount_Baker rdf:type umbel-sc:Volcano. dbpedia:Mount_Baker rdf:type umbel-sc:Volcano. dbpedia:Beerenberg rdf:type umbel-sc:Volcano, dbpedia:Beerenberg rdf:type umbel-sc:Volcano, umbel-sc:NaturalElevation ; umbel-sc:NaturalElevation ; rdfs:label "Beerenberg"@en ; rdfs:label "Beerenberg"@en ; rdfs:label "Бееренберг"@ru . rdfs:label "Бееренберг"@ru . *Prefix definitions omittedOlaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 14
  15. 15. Basic Graph Patterns (Example) dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ; dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ; Data* rdfs:label "Etna" . rdfs:label "Etna" . dbpedia:Mount_Baker rdf:type umbel-sc:Volcano. dbpedia:Mount_Baker rdf:type umbel-sc:Volcano. dbpedia:Beerenberg rdf:type umbel-sc:Volcano, dbpedia:Beerenberg rdf:type umbel-sc:Volcano, umbel-sc:NaturalElevation ; umbel-sc:NaturalElevation ; rdfs:label "Beerenberg"@en ; rdfs:label "Beerenberg"@en ; rdfs:label "Бееренберг"@ru . rdfs:label "Бееренберг"@ru . ● Question: What are the names of all (known) volcanos? SELECT ?name WHERE { SELECT ?name WHERE { Query* ?v rdf:type umbel-sc:Volcano ; ?v rdf:type umbel-sc:Volcano ; rdfs:label ?name . } rdfs:label ?name . } *Prefix definitions omittedOlaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 15
  16. 16. Basic Graph Patterns (Example) dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ; dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ; Data* rdfs:label "Etna" . rdfs:label "Etna" . dbpedia:Mount_Baker rdf:type umbel-sc:Volcano. dbpedia:Mount_Baker rdf:type umbel-sc:Volcano. dbpedia:Beerenberg rdf:type umbel-sc:Volcano, dbpedia:Beerenberg rdf:type umbel-sc:Volcano, umbel-sc:NaturalElevation ; umbel-sc:NaturalElevation ; rdfs:label "Beerenberg"@en ; rdfs:label "Beerenberg"@en ; rdfs:label "Бееренберг"@ru . rdfs:label "Бееренберг"@ru . ●Question: What are the names of all (known) volcanos? Result: SELECT ?name WHERE { SELECT ?name WHERE { Query* ?v rdf:type umbel-sc:Volcano ; ?name ?v rdf:type umbel-sc:Volcano ; rdfs:label ?name . } rdfs:label ?name . } "Etna" "Бееренберг"@ru *Prefix definitions omitted "Beerenberg"@enOlaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 16
  17. 17. Basic Graph Patterns (Example) dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ; dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ; Data rdfs:label "Etna" . rdfs:label "Etna" . dbpedia:Mount_Baker rdf:type umbel-sc:Volcano. dbpedia:Mount_Baker rdf:type umbel-sc:Volcano. dbpedia:Beerenberg rdf:type umbel-sc:Volcano, dbpedia:Beerenberg rdf:type umbel-sc:Volcano, umbel-sc:NaturalElevation ; umbel-sc:NaturalElevation ; rdfs:label "Beerenberg"@en ; rdfs:label "Beerenberg"@en ; rdfs:label "Бееренберг"@ru . rdfs:label "Бееренберг"@ru . ● Question: List all types of the volcano called “Beerenberg” SELECT ?type WHERE { SELECT ?type WHERE { Query ?type ?v rdf:type ?type ; ?v rdf:type ?type ; rdfs:label "Beerenberg" . rdfs:label "Beerenberg" . } } Empty!Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 17
  18. 18. Basic Graph Patterns (Example) dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ; dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ; Data rdfs:label "Etna" . rdfs:label "Etna" . dbpedia:Mount_Baker rdf:type umbel-sc:Volcano. dbpedia:Mount_Baker rdf:type umbel-sc:Volcano. dbpedia:Beerenberg rdf:type umbel-sc:Volcano, dbpedia:Beerenberg rdf:type umbel-sc:Volcano, umbel-sc:NaturalElevation ; umbel-sc:NaturalElevation ; rdfs:label "Beerenberg"@en ; rdfs:label "Beerenberg"@en ; rdfs:label "Бееренберг"@ru . rdfs:label "Бееренберг"@ru . ● Question: List all types of the volcano called “Beerenberg” SELECT ?type WHERE { SELECT ?type WHERE { Query ?v rdf:type ?type ; ?v rdf:type ?type ; ?type rdfs:label "Beerenberg"@en . rdfs:label "Beerenberg"@en . umbel-sc:Volcano } } umbel-sc:NaturalElevationOlaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 18
  19. 19. Basic Graph Patterns (Example) dbpedia:Mount_Baker rdf:type umbel-sc:Volcano ; dbpedia:Mount_Baker rdf:type umbel-sc:Volcano ; Data p:location dbpedia:United_States . p:location dbpedia:United_States . dbpedia:United_States rdfs:label "United States" . dbpedia:United_States rdfs:label "United States" . ● Question: Where are all (known) volcanos located? (List the names of these locations)Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 19
  20. 20. Basic Graph Patterns (Example) dbpedia:Mount_Baker rdf:type umbel-sc:Volcano ; dbpedia:Mount_Baker rdf:type umbel-sc:Volcano ; Data p:location dbpedia:United_States . p:location dbpedia:United_States . dbpedia:United_States rdfs:label "United States" . dbpedia:United_States rdfs:label "United States" . ● Question: Where are all (known) volcanos located? (List the names of these locations) ● Blank nodes in SPARQL queries ● As subject or object of a triple pattern ● “Non-selectable” variables SELECT ?name WHERE { SELECT ?name WHERE { Query ?name _:x rdf:type umbel-sc:Volcano ; _:x rdf:type umbel-sc:Volcano ; "United States" p:location [ rdfs:label ?name ] . } p:location [ rdfs:label ?name ] . }Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 20
  21. 21. Basic Graph Patterns (Example) dbpedia:Mount_Baker rdf:type umbel-sc:Volcano ; dbpedia:Mount_Baker rdf:type umbel-sc:Volcano ; Data p:location [ rdfs:label "United States"@en , p:location [ rdfs:label "United States"@en , "États-Unis"@fr ] . "États-Unis"@fr ] . dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ; dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ; p:location [ rdfs:label "Italy" ] . p:location [ rdfs:label "Italy" ] . ● Blank nodes in the queried dataOlaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 21
  22. 22. Basic Graph Patterns (Example) dbpedia:Mount_Baker rdf:type umbel-sc:Volcano ; dbpedia:Mount_Baker rdf:type umbel-sc:Volcano ; Data p:location [ rdfs:label "United States"@en , p:location [ rdfs:label "United States"@en , "États-Unis"@fr ] . "États-Unis"@fr ] . dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ; dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ; p:location [ rdfs:label "Italy" ] . p:location [ rdfs:label "Italy" ] . ● Blank nodes in the queried data ➔ Blank node identifiers may occur in the results SELECT ?l ?name WHERE { SELECT ?l ?name WHERE { Query ?v rdf:type umbel-sc:Volcano ; ?v rdf:type umbel-sc:Volcano ; ?l ?name p:location p:location ?l . ?l . _:x "United States"@en ?l rdfs:label ?l rdfs:label ?name . ?name . _:x "États-Unis"@fr } _:y "Italy" }Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 22
  23. 23. Optional Graph Patterns dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ; dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ; Data rdfs:label "Etna" . rdfs:label "Etna" . dbpedia:Mount_Baker rdf:type umbel-sc:Volcano . dbpedia:Mount_Baker rdf:type umbel-sc:Volcano . dbpedia:Beerenberg rdf:type umbel-sc:Volcano ; dbpedia:Beerenberg rdf:type umbel-sc:Volcano ; rdfs:label "Beerenberg"@en . rdfs:label "Beerenberg"@en . ● Question: What are all (known) volcanos and their names? SELECT ?v ?name WHERE { SELECT ?v ?name WHERE { Query ?v rdf:type umbel-sc:Volcano ; ?v rdf:type umbel-sc:Volcano ; rdfs:label ?name . } rdfs:label ?name . } ?v ?name ● Problem: Mount dbpedia:Mount_Etna "Etna" Baker missing dbpedia:Beerenberg "Beerenberg"@en (it has no name)Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 23
  24. 24. Optional Graph Patterns ● Keyword OPTIONAL allows for optional patterns SELECT ?v ?name WHERE { SELECT ?v ?name WHERE { Query ?v rdf:type umbel-sc:Volcano . ?v rdf:type umbel-sc:Volcano . OPTIONAL { ?v rdfs:label ?name } OPTIONAL { ?v rdfs:label ?name } } } ?v ?name dbpedia:Mount_Etna "Etna" dbpedia:Mount_Baker dbpedia:Beerenberg "Beerenberg"@en ● Optional patterns may result in unbound variablesOlaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 24
  25. 25. Union Graph Patterns dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ; dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ; Data rdfs:label "Etna" ; rdfs:label "Etna" ; p:location dbpedia:Italy . p:location dbpedia:Italy . dbpedia:Mount_Baker rdf:type umbel-sc:Volcano ; dbpedia:Mount_Baker rdf:type umbel-sc:Volcano ; p:location dbpedia:United_States . p:location dbpedia:United_States . dbpedia:Beerenberg rdf:type umbel-sc:Volcano ; dbpedia:Beerenberg rdf:type umbel-sc:Volcano ; rdfs:label rdfs:label "Beerenberg"@en ; "Beerenberg"@en ; p:location p:location dbpedia:Norway . dbpedia:Norway . ● Question: What volcanos are located in Italy or in Norway? SELECT ?v WHERE { SELECT ?v WHERE { Query ?v rdf:type umbel-sc:Volcano ; ?v rdf:type umbel-sc:Volcano ; p:location p:location ? ? . } . }Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 25
  26. 26. Union Graph Patterns ● Union graph patterns allow for alternatives SELECT ?v WHERE { ?v rdf:type umbel-sc:Volcano . SELECT ?v WHERE { ?v rdf:type umbel-sc:Volcano . { ?v p:location dbpedia:Italy } { ?v p:location dbpedia:Italy } UNION UNION { ?v p:location dbpedia:Norway } { ?v p:location dbpedia:Norway } } } QueryOlaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 26
  27. 27. Union Graph Patterns ● Union graph patterns allow for alternatives SELECT ?v WHERE { ?v rdf:type umbel-sc:Volcano . SELECT ?v WHERE { ?v rdf:type umbel-sc:Volcano . { ?v p:location dbpedia:Italy } { ?v p:location dbpedia:Italy } UNION UNION { ?v p:location dbpedia:Norway } { ?v p:location dbpedia:Norway } } } Query SELECT SELECT ?v WHERE ?v WHERE { { Query { ?v { ?v rdf:type rdf:type umbel-sc:Volcano ; umbel-sc:Volcano ; p:location dbpedia:Italy } p:location dbpedia:Italy } Semantically UNION UNION equivalent { ?v rdf:type umbel-sc:Volcano { ?v rdf:type umbel-sc:Volcano ; ; p:location dbpedia:Norway p:location dbpedia:Norway } } } }Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 27
  28. 28. Group Graph Patterns SELECT ?v WHERE { ?v rdf:type umbel-sc:Volcano . SELECT ?v WHERE { ?v rdf:type umbel-sc:Volcano . { ?v p:location dbpedia:Italy } { ?v p:location dbpedia:Italy } UNION UNION { ?v p:location dbpedia:Norway } { ?v p:location dbpedia:Norway } } } Query Semantically equivalent SELECT ?v WHERE { { ?v rdf:type umbel-sc:Volcano } SELECT ?v WHERE { { ?v rdf:type umbel-sc:Volcano } { { ?v p:location dbpedia:Italy } { { ?v p:location dbpedia:Italy } UNION UNION { ?v p:location dbpedia:Norway } } { ?v p:location dbpedia:Norway } } } } QueryOlaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 28
  29. 29. Constraints on Solutions ● Syntax: Keyword FILTER followed by filter expression PREFIX PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX PREFIX umbel-sc: <http://umbel.org/umbel/sc/> umbel-sc: <http://umbel.org/umbel/sc/> PREFIX p: <http://dbpedia.org/property/> PREFIX p: <http://dbpedia.org/property/> SELECT ?v SELECT ?v WHERE { WHERE { ?v rdf:type umbel-sc:Volcano ; ?v rdf:type umbel-sc:Volcano ; p:lastEruption ?le . p:lastEruption ?le . FILTER ( ?le > 1900 ) FILTER ( ?le > 1900 ) } } ● Filter expressions contain operators and functions ● Operators and functions operate on RDF termsOlaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 29
  30. 30. Constraints (Truth Table) ● Filter expressions evaluate to true, false, or error ● Truth table: A B A || B A && B T T T T T F T F F T T F F F F F T E T E E T T E F E E F E F E F E E E EOlaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 30
  31. 31. Unary Operators in Constraints Operator Type(A) Result type !A xsd:boolean xsd:boolean +A numeric numeric -A numeric numeric BOUND(A) variable xsd:boolean isURI(A) RDF term xsd:boolean isBLANK(A) RDF term xsd:boolean isLITERAL(A) RDF term xsd:boolean STR(A) literal / URI simple literal LANG(A) literal simple literal DATATYPE(A) literal simple literalOlaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 31
  32. 32. Constraints (Example) dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ; dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ; Data rdfs:label "Etna" . rdfs:label "Etna" . dbpedia:Beerenberg rdf:type umbel-sc:Volcano, dbpedia:Beerenberg rdf:type umbel-sc:Volcano, umbel-sc:NaturalElevation ; umbel-sc:NaturalElevation ; rdfs:label "Beerenberg"@en ; rdfs:label "Beerenberg"@en ; rdfs:label "Бееренберг"@ru . rdfs:label "Бееренберг"@ru . ● Question: List all types of the volcano called “Beerenberg” SELECT ?type WHERE { SELECT ?type WHERE { Query ?v rdf:type ?type ; ?v rdf:type ?type ; rdfs:label ?name rdfs:label ?name . . FILTER ( STR(?name) FILTER ( STR(?name) = "Beerenberg" ) = "Beerenberg" ) } }Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 32
  33. 33. Constraints (Example) dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ; dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ; Data rdfs:label "Etna" . rdfs:label "Etna" . dbpedia:Beerenberg rdf:type umbel-sc:Volcano, dbpedia:Beerenberg rdf:type umbel-sc:Volcano, umbel-sc:NaturalElevation ; umbel-sc:NaturalElevation ; rdfs:label "Beerenberg"@en ; rdfs:label "Beerenberg"@en ; rdfs:label "Бееренберг"@ru . rdfs:label "Бееренберг"@ru . ●Question: List all types of the volcano called “Beerenberg” SELECT ?type WHERE { SELECT ?type WHERE { Query ?type ?v rdf:type ?type ; ?v rdf:type ?type ; umbel-sc:Volcano rdfs:label ?name . rdfs:label ?name . umbel-sc:NaturalElevation FILTER ( STR(?name) = "Beerenberg" ) FILTER ( STR(?name) = "Beerenberg" ) } }Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 33
  34. 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)Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 34
  35. 35. Constraints (Example) dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ; dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ; Data rdfs:label "Etna" . rdfs:label "Etna" . dbpedia:Beerenberg rdf:type umbel-sc:Volcano, dbpedia:Beerenberg rdf:type umbel-sc:Volcano, umbel-sc:NaturalElevation ; umbel-sc:NaturalElevation ; rdfs:label "Beerenberg"@en ; rdfs:label "Beerenberg"@en ; rdfs:label "Бееренберг"@ru . rdfs:label "Бееренберг"@ru . ● Question: What volcanos have an “e” in their name? SELECT ?v WHERE { SELECT ?v WHERE { Query ?v ?v rdf:type umbel-sc:Volcano ; ?v rdf:type umbel-sc:Volcano ; rdfs:label ?name . dbpedia:Beerenberg rdfs:label ?name . dbpedia:Beerenberg FILTER( REGEX(STR(?name),"e") ) FILTER( REGEX(STR(?name),"e") ) } }Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 35
  36. 36. Constraints (Example) dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ; dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ; Data rdfs:label "Etna" . rdfs:label "Etna" . dbpedia:Beerenberg rdf:type umbel-sc:Volcano, dbpedia:Beerenberg rdf:type umbel-sc:Volcano, umbel-sc:NaturalElevation ; umbel-sc:NaturalElevation ; rdfs:label "Beerenberg"@en ; rdfs:label "Beerenberg"@en ; rdfs:label "Бееренберг"@ru . rdfs:label "Бееренберг"@ru . ● Question: What volcanos have an “e” in their name? SELECT ?v WHERE { SELECT ?v WHERE { Query ?v ?v rdf:type umbel-sc:Volcano ; ?v rdf:type umbel-sc:Volcano ; rdfs:label ?name . dbpedia:Mount_Etna rdfs:label ?name . dbpedia:Beerenberg FILTER( REGEX(STR(?name),"e","i") ) FILTER( REGEX(STR(?name),"e","i") ) dbpedia:Beerenberg } }Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 36
  37. 37. Graph Graph Patterns● SPARQL queries are executed over an RDF dataset: ● One default graph and ● Zero or more named graphs (identified by an URI)Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 37
  38. 38. Graph Graph Patterns dbpedia:Mount_Etna rdfs:seeAlso <http://example.org/d1>. dbpedia:Mount_Etna rdfs:seeAlso <http://example.org/d1>. dbpedia:Mount_Baker rdfs:seeAlso <http://example.org/d2>. dbpedia:Mount_Baker rdfs:seeAlso <http://example.org/d2>. dbpedia:Mount_Etna dbpedia:Mount_Etna http://example.org/d1 rdf:type umbel-sc:Volcano ; rdf:type umbel-sc:Volcano ; Default rdfs:label "Etna" . rdfs:label "Etna" . Graph dbpedia:Mount_Baker http://example.org/d2 dbpedia:Mount_Baker rdf:type umbel-sc:Volcano . rdf:type umbel-sc:Volcano . dbpedia:Beerenberg http://example.org/d3 dbpedia:Beerenberg● SPARQL queries rdf:type umbel-sc:Volcano ; rdf:type umbel-sc:Volcano ; are executed over rdfs:label "Beerenberg"@en . rdfs:label "Beerenberg"@en . an RDF dataset: ● One default graph and ● Zero or more named graphs (identified by an URI)Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 38
  39. 39. Components of SPARQL Queries PREFIX PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX PREFIX umbel-sc: <http://umbel.org/umbel/sc/> umbel-sc: <http://umbel.org/umbel/sc/> SELECT ?v SELECT ?v FROM <http://example.org/myGeoData> FROM <http://example.org/myGeoData> WHERE { WHERE { ?v rdf:type umbel-sc:Volcano . ?v rdf:type umbel-sc:Volcano . } } ORDER BY ?name ORDER BY ?name ● Dataset specification: ● Specify the RDF dataset to be queried (more about that later)Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 39
  40. 40. Components of SPARQL Queries PREFIX PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX PREFIX umbel-sc: <http://umbel.org/umbel/sc/> umbel-sc: <http://umbel.org/umbel/sc/> SELECT ?v SELECT ?v FROM <http://example.org/myGeoData> FROM <http://example.org/myGeoData> WHERE { WHERE { ?v rdf:type umbel-sc:Volcano . ?v rdf:type umbel-sc:Volcano . } } ORDER BY ?name ORDER BY ?name ● Dataset specification: ● Specify the RDF dataset to be queried (more about that later) here ... ● Specification using FROM and FROM NAMEDOlaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 40
  41. 41. Graph Graph Patterns dbpedia:Mount_Etna rdfs:seeAlso <http://example.org/d1>. dbpedia:Mount_Etna rdfs:seeAlso <http://example.org/d1>. dbpedia:Mount_Baker rdfs:seeAlso <http://example.org/d2>. dbpedia:Mount_Baker rdfs:seeAlso <http://example.org/d2>. dbpedia:Mount_Etna dbpedia:Mount_Etna http://example.org/d1 rdf:type umbel-sc:Volcano ; rdf:type umbel-sc:Volcano ; Default rdfs:label "Etna" . rdfs:label "Etna" . Graph dbpedia:Mount_Baker http://example.org/d2 dbpedia:Mount_Baker rdf:type umbel-sc:Volcano . rdf:type umbel-sc:Volcano . dbpedia:Beerenberg dbpedia:Beerenberg http://example.org/d3 rdf:type umbel-sc:Volcano ; rdf:type umbel-sc:Volcano ; rdfs:label "Beerenberg"@en . rdfs:label "Beerenberg"@en .Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 41
  42. 42. Graph Graph Patterns dbpedia:Mount_Etna rdfs:seeAlso <http://example.org/d1>. dbpedia:Mount_Etna rdfs:seeAlso <http://example.org/d1>. dbpedia:Mount_Baker rdfs:seeAlso <http://example.org/d2>. dbpedia:Mount_Baker rdfs:seeAlso <http://example.org/d2>. dbpedia:Mount_Etna dbpedia:Mount_Etna http://example.org/d1 rdf:type umbel-sc:Volcano ; rdf:type umbel-sc:Volcano ; Default rdfs:label "Etna" . rdfs:label "Etna" . Graph dbpedia:Mount_Baker http://example.org/d2 dbpedia:Mount_Baker rdf:type umbel-sc:Volcano . rdf:type umbel-sc:Volcano . dbpedia:Beerenberg dbpedia:Beerenberg http://example.org/d3 rdf:type umbel-sc:Volcano ; rdf:type umbel-sc:Volcano ; rdfs:label "Beerenberg"@en . rdfs:label "Beerenberg"@en . ● Evaluation of patterns w.r.t. active graph ● GRAPH clause for making a named graph the active graphOlaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 42
  43. 43. Graph Graph Patterns dbpedia:Mount_Etna rdfs:seeAlso <http://example.org/d1>. dbpedia:Mount_Etna rdfs:seeAlso <http://example.org/d1>. dbpedia:Mount_Baker rdfs:seeAlso <http://example.org/d2>. dbpedia:Mount_Baker rdfs:seeAlso <http://example.org/d2>. dbpedia:Mount_Etna dbpedia:Mount_Etna http://example.org/d1 rdf:type umbel-sc:Volcano ; rdf:type umbel-sc:Volcano ; Default rdfs:label "Etna" . rdfs:label "Etna" . Graph dbpedia:Mount_Baker http://example.org/d2 dbpedia:Mount_Baker rdf:type umbel-sc:Volcano . rdf:type umbel-sc:Volcano . dbpedia:Beerenberg http://example.org/d3 SELECT ?v WHERE { dbpedia:Beerenberg SELECT ?v WHERE { rdf:type umbel-sc:Volcano ; GRAPH <http://example.org/d1> umbel-sc:Volcano ; rdf:type GRAPH <http://example.org/d1> {{ rdfs:label "Beerenberg"@en . rdfs:label "Beerenberg"@en . ?v rdf:type umbel-sc:Volcano . ?v rdf:type umbel-sc:Volcano . } } ?v } } dbpedia:Mount_EtnaOlaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 43
  44. 44. Graph Graph Patterns dbpedia:Mount_Etna rdfs:seeAlso <http://example.org/d1>. dbpedia:Mount_Etna rdfs:seeAlso <http://example.org/d1>. dbpedia:Mount_Baker rdfs:seeAlso <http://example.org/d2>. dbpedia:Mount_Baker rdfs:seeAlso <http://example.org/d2>. dbpedia:Mount_Etna dbpedia:Mount_Etna http://example.org/d1 rdf:type umbel-sc:Volcano ; rdf:type umbel-sc:Volcano ; Default rdfs:label "Etna" . rdfs:label "Etna" . Graph dbpedia:Mount_Baker http://example.org/d2 dbpedia:Mount_Baker rdf:type umbel-sc:Volcano . rdf:type umbel-sc:Volcano . dbpedia:Beerenberg http://example.org/d3 SELECT ?v WHERE { dbpedia:Beerenberg SELECT ?v WHERE { rdf:type umbel-sc:Volcano ; rdf:type umbel-sc:Volcano ; GRAPH ?g { GRAPH ?g { ?v rdfs:label "Beerenberg"@en . rdfs:label "Beerenberg"@en . ?v rdf:type umbel-sc:Volcano . ?v rdf:type umbel-sc:Volcano . dbpedia:Mount_Etna } } dbpedia:Mount_Baker } } dbpedia:BeerenbergOlaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 44
  45. 45. Graph Graph Patterns dbpedia:Mount_Etna rdfs:seeAlso <http://example.org/d1>. dbpedia:Mount_Etna rdfs:seeAlso <http://example.org/d1>. dbpedia:Mount_Baker rdfs:seeAlso <http://example.org/d2>. dbpedia:Mount_Baker rdfs:seeAlso <http://example.org/d2>. dbpedia:Mount_Etna dbpedia:Mount_Etna http://example.org/d1 rdf:type umbel-sc:Volcano ; rdf:type umbel-sc:Volcano ; Default rdfs:label "Etna" . rdfs:label "Etna" . Graph dbpedia:Mount_Baker http://example.org/d2 dbpedia:Mount_Baker rdf:type umbel-sc:Volcano . rdf:type umbel-sc:Volcano . dbpedia:Beerenberg dbpedia:Beerenberg http://example.org/d3 SELECT ?v ?g WHERE { SELECT ?v ?g WHERE { rdf:type umbel-sc:Volcano ; rdf:type umbel-sc:Volcano ; GRAPH ?g { GRAPH ?g { ?v ?g rdfs:label "Beerenberg"@en . rdfs:label "Beerenberg"@en . ?v rdf:type umbel-sc:Volcano . ?v rdf:type umbel-sc:Volcano . <http://example.org/d1> dbpedia:Mount_Etna } } dbpedia:Mount_Baker <http://example.org/d2> } } dbpedia:Beerenberg <http://example.org/d3>Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 45
  46. 46. Graph Graph Patterns dbpedia:Mount_Etna rdfs:seeAlso <http://example.org/d1>. dbpedia:Mount_Etna rdfs:seeAlso <http://example.org/d1>. dbpedia:Mount_Baker rdfs:seeAlso <http://example.org/d2>. dbpedia:Mount_Baker rdfs:seeAlso <http://example.org/d2>. dbpedia:Mount_Etna dbpedia:Mount_Etna http://example.org/d1 rdf:type umbel-sc:Volcano ; rdf:type umbel-sc:Volcano ; Default rdfs:label "Etna" . rdfs:label "Etna" . Graph dbpedia:Mount_Baker http://example.org/d2 dbpedia:Mount_Baker rdf:type umbel-sc:Volcano . rdf:type umbel-sc:Volcano . SELECT ?v WHERE { SELECT ?v WHERE { dbpedia:Beerenberg dbpedia:Beerenberg http://example.org/d3 _:x rdfs:seeAlso ?g _:x rdfs:seeAlso ?g rdf:type umbel-sc:Volcano ; rdf:type umbel-sc:Volcano ; GRAPH ?g { GRAPH ?g { rdfs:label "Beerenberg"@en . rdfs:label "Beerenberg"@en . ?v rdf:type umbel-sc:Volcano . ?v rdf:type umbel-sc:Volcano . ?v } } dbpedia:Mount_Etna } } dbpedia:Mount_BakerOlaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 46
  47. 47. Negation dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ; dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ; Data rdfs:label "Etna" . rdfs:label "Etna" . dbpedia:Mount_Baker rdf:type umbel-sc:Volcano . dbpedia:Mount_Baker rdf:type umbel-sc:Volcano . dbpedia:Beerenberg rdf:type umbel-sc:Volcano ; dbpedia:Beerenberg rdf:type umbel-sc:Volcano ; rdfs:label rdfs:label "Beerenberg"@en "Beerenberg"@en ; ; rdfs:label rdfs:label "Бееренберг"@ru "Бееренберг"@ru . . ● Question: What volcanos do not have a name in our data?Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 47
  48. 48. Negation dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ; dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ; Data rdfs:label "Etna" . rdfs:label "Etna" . dbpedia:Mount_Baker rdf:type umbel-sc:Volcano . dbpedia:Mount_Baker rdf:type umbel-sc:Volcano . dbpedia:Beerenberg rdf:type umbel-sc:Volcano ; dbpedia:Beerenberg rdf:type umbel-sc:Volcano ; rdfs:label rdfs:label "Beerenberg"@en "Beerenberg"@en ; ; rdfs:label rdfs:label "Бееренберг"@ru "Бееренберг"@ru . . ● Question: What volcanos do not have a name in our data? SELECT ?v WHERE { SELECT ?v WHERE { Query ?v rdf:type umbel-sc:Volcano . ?v rdf:type umbel-sc:Volcano . OPTIONAL { ?v rdfs:label ?name } ?v OPTIONAL { ?v rdfs:label ?name } FILTER( ! BOUND(?name) ) FILTER( ! BOUND(?name) ) dbpedia:Mount_Baker } } Negation as FailureOlaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 48
  49. 49. Negation dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ; dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ; Data rdfs:label "Etna" . rdfs:label "Etna" . dbpedia:Mount_Baker rdf:type umbel-sc:Volcano . dbpedia:Mount_Baker rdf:type umbel-sc:Volcano . dbpedia:Beerenberg rdf:type umbel-sc:Volcano ; dbpedia:Beerenberg rdf:type umbel-sc:Volcano ; rdfs:label rdfs:label "Beerenberg"@en "Beerenberg"@en ; ; rdfs:label rdfs:label "Бееренберг"@ru "Бееренберг"@ru . . ● Question: What volcanos are not called “Beerenberg”?Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 49
  50. 50. Negation dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ; dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ; Data rdfs:label "Etna" . rdfs:label "Etna" . dbpedia:Mount_Baker rdf:type umbel-sc:Volcano . dbpedia:Mount_Baker rdf:type umbel-sc:Volcano . dbpedia:Beerenberg rdf:type umbel-sc:Volcano ; dbpedia:Beerenberg rdf:type umbel-sc:Volcano ; rdfs:label rdfs:label "Beerenberg"@en "Beerenberg"@en ; ; rdfs:label rdfs:label "Бееренберг"@ru "Бееренберг"@ru . . ● Question: What volcanos are not called “Beerenberg”? SELECT ?v WHERE { SELECT ?v WHERE { Query ?v rdf:type umbel-sc:Volcano . ?v rdf:type umbel-sc:Volcano . rdfs:label ?name . rdfs:label ?name . FILTER (STR(?name) != "Beerenberg") FILTER (STR(?name) != "Beerenberg") } }Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 50
  51. 51. Negation dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ; dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ; Data rdfs:label "Etna" . rdfs:label "Etna" . dbpedia:Mount_Baker rdf:type umbel-sc:Volcano . dbpedia:Mount_Baker rdf:type umbel-sc:Volcano . dbpedia:Beerenberg rdf:type umbel-sc:Volcano ; dbpedia:Beerenberg rdf:type umbel-sc:Volcano ; rdfs:label rdfs:label "Beerenberg"@en "Beerenberg"@en ; ; rdfs:label rdfs:label "Бееренберг"@ru "Бееренберг"@ru . . ● Question: What volcanos are not called “Beerenberg”? SELECT ?v WHERE { SELECT ?v WHERE { Query ?v rdf:type umbel-sc:Volcano . ?v rdf:type umbel-sc:Volcano . rdfs:label ?name . rdfs:label ?name . FILTER (STR(?name) != "Beerenberg") ?v FILTER (STR(?name) != "Beerenberg") } } dbpedia:Mount_Etna dbpedia:Mount_BakerOlaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linkeddbpedia:Beerenberg 51 Data" - Chapter 2: SPARQL
  52. 52. Negation dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ; dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ; Data rdfs:label "Etna" . rdfs:label "Etna" . dbpedia:Mount_Baker rdf:type umbel-sc:Volcano . dbpedia:Mount_Baker rdf:type umbel-sc:Volcano . dbpedia:Beerenberg rdf:type umbel-sc:Volcano ; dbpedia:Beerenberg rdf:type umbel-sc:Volcano ; rdfs:label rdfs:label "Beerenberg"@en "Beerenberg"@en ; ; rdfs:label rdfs:label "Бееренберг"@ru "Бееренберг"@ru . . ● Question: What volcanos are not called “Beerenberg”? SELECT ?v WHERE { SELECT ?v WHERE { Query ?v rdf:type umbel-sc:Volcano . ?v rdf:type umbel-sc:Volcano . != rdfs:label ?name . rdfs:label ?name . FILTER (STR(?name) != "Beerenberg") ?v FILTER (STR(?name) != "Beerenberg") } } dbpedia:Mount_Etna dbpedia:Mount_BakerOlaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linkeddbpedia:Beerenberg 52 Data" - Chapter 2: SPARQL
  53. 53. Negation dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ; dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ; Data rdfs:label "Etna" . rdfs:label "Etna" . dbpedia:Mount_Baker rdf:type umbel-sc:Volcano . dbpedia:Mount_Baker rdf:type umbel-sc:Volcano . dbpedia:Beerenberg rdf:type umbel-sc:Volcano ; dbpedia:Beerenberg rdf:type umbel-sc:Volcano ; rdfs:label rdfs:label "Beerenberg"@en "Beerenberg"@en ; ; rdfs:label rdfs:label "Бееренберг"@ru "Бееренберг"@ru . . ● Question: What volcanos are not called “Beerenberg”? SELECT ?v WHERE { SELECT ?v WHERE { Query ?v rdf:type umbel-sc:Volcano . ?v rdf:type umbel-sc:Volcano . != rdfs:label ?name . rdfs:label ?name . FILTER (STR(?name) != "Beerenberg") ?v FILTER (STR(?name) != "Beerenberg") } } dbpedia:Mount_Etna dbpedia:Mount_BakerOlaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linkeddbpedia:Beerenberg 53 Data" - Chapter 2: SPARQL
  54. 54. Negation dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ; dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ; Data rdfs:label "Etna" . rdfs:label "Etna" . dbpedia:Mount_Baker rdf:type umbel-sc:Volcano . dbpedia:Mount_Baker rdf:type umbel-sc:Volcano . dbpedia:Beerenberg rdf:type umbel-sc:Volcano ; dbpedia:Beerenberg rdf:type umbel-sc:Volcano ; rdfs:label rdfs:label "Beerenberg"@en "Beerenberg"@en ; ; rdfs:label rdfs:label "Бееренберг"@ru "Бееренберг"@ru . . ●Question: What volcanos are not called “Beerenberg”? SELECT ?v WHERE { SELECT ?v WHERE { ?v Query ?v rdf:type umbel-sc:Volcano . ?v rdf:type umbel-sc:Volcano . dbpedia:Mount_Etna OPTIONAL { ?v rdfs:label ?name . OPTIONAL { ?v rdfs:label ?name . dbpedia:Mount_Baker FILTER (STR(?name) = "Beerenberg") } FILTER (STR(?name) = "Beerenberg") } FILTER ( ! BOUND(?name) ) FILTER ( ! BOUND(?name) ) } Negation as Failure }Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 54
  55. 55. Graph Graph Patterns dbpedia:Mount_Etna rdfs:seeAlso <http://example.org/d1>. dbpedia:Mount_Etna rdfs:seeAlso <http://example.org/d1>. dbpedia:Mount_Baker rdfs:seeAlso <http://example.org/d2>. dbpedia:Mount_Baker rdfs:seeAlso <http://example.org/d2>. dbpedia:Mount_Etna dbpedia:Mount_Etna http://example.org/d1 rdf:type umbel-sc:Volcano ; rdf:type umbel-sc:Volcano ; Default rdfs:label "Etna" . rdfs:label "Etna" . Graph dbpedia:Mount_Baker http://example.org/d2 dbpedia:Mount_Baker rdf:type umbel-sc:Volcano . rdf:type umbel-sc:Volcano . dbpedia:Beerenberg dbpedia:Beerenberg http://example.org/d3 rdf:type umbel-sc:Volcano ; rdf:type umbel-sc:Volcano ; rdfs:label "Beerenberg"@en . rdfs:label "Beerenberg"@en . ● Question: Which named graphs contain the name of a volcano that is not referenced in the default graph?Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 55
  56. 56. Graph Graph Patterns dbpedia:Mount_Etna rdfs:seeAlso <http://example.org/d1>. dbpedia:Mount_Etna rdfs:seeAlso <http://example.org/d1>. dbpedia:Mount_Baker rdfs:seeAlso <http://example.org/d2>. dbpedia:Mount_Baker rdfs:seeAlso <http://example.org/d2>. dbpedia:Mount_Etna dbpedia:Mount_Etna http://example.org/d1 rdf:type umbel-sc:Volcano ; rdf:type umbel-sc:Volcano ; Default rdfs:label "Etna" . rdfs:label "Etna" . Graph SELECT ?g WHERE SELECT ?g WHERE { dbpedia:Mount_Baker http://example.org/d2 {dbpedia:Mount_Baker GRAPH ?g { GRAPH ?g { rdf:type umbel-sc:Volcano . rdf:type umbel-sc:Volcano . ?v rdf:type umbel-sc:Volcano ; ?v rdf:type umbel-sc:Volcano ; dbpedia:Beerenberg dbpedia:Beerenberg http://example.org/d3 rdfs:label ?name . rdfs:label ?name . rdf:type umbel-sc:Volcano ; rdf:type umbel-sc:Volcano ; }} rdfs:label "Beerenberg"@en . OPTIONAL { ?v rdfs:seeAlso ?r } "Beerenberg"@en . rdfs:label OPTIONAL { ?v rdfs:seeAlso ?r } ● Question: ! BOUND(?r) ) graphs contain the name of a FILTER ( Which named FILTER ( ! BOUND(?r) ) } } volcano that is not referenced in the default graph?Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 56
  57. 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 FILTEROlaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 57
  58. 58. Components of SPARQL Queries PREFIX PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX PREFIX umbel-sc: <http://umbel.org/umbel/sc/> umbel-sc: <http://umbel.org/umbel/sc/> SELECT ?v SELECT ?v FROM <http://example.org/myGeoData> FROM <http://example.org/myGeoData> WHERE { WHERE { ?v rdf:type umbel-sc:Volcano . ?v rdf:type umbel-sc:Volcano . } } ORDER BY ?name ORDER BY ?name ● Result form specification: ● SELECT, DESCRIBE, CONSTRUCT, or ASK (more about that later)Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 58
  59. 59. Components of SPARQL Queries PREFIX PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX PREFIX umbel-sc: <http://umbel.org/umbel/sc/> umbel-sc: <http://umbel.org/umbel/sc/> SELECT ?v SELECT ?v FROM <http://example.org/myGeoData> FROM <http://example.org/myGeoData> WHERE { WHERE { ?v rdf:type umbel-sc:Volcano . ?v rdf:type umbel-sc:Volcano . } } ORDER BY ?name ORDER BY ?name ● Result form specification: ● SELECT, DESCRIBE, CONSTRUCT, or ASK (more about that later) ^ here ...Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 59
  60. 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 patternOlaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 60
  61. 61. 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 ● ASK ● Check whether there is at least one result ● Result: true or false ● Example: Do we have data about volcanos? ASK WHERE { ASK WHERE { Query ?v rdf:type umbel-sc:Volcano . ?v rdf:type umbel-sc:Volcano . } }Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 61
  62. 62. Result Forms ● 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 DESCRIBE <http://dbpedia.org/resource/Beerenberg> DESCRIBE <http://dbpedia.org/resource/Beerenberg> QueryOlaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 62
  63. 63. Result Forms ● 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 DESCRIBE <http://dbpedia.org/resource/Beerenberg> DESCRIBE <http://dbpedia.org/resource/Beerenberg> Query ● Example: Specify the resource(s) with a query pattern DESCRIBE ?v WHERE { DESCRIBE ?v WHERE { Query ?v rdf:type umbel-sc:Volcano ; ?v rdf:type umbel-sc:Volcano ; rdfs:label ?name . rdfs:label ?name . } } ● Multiple variables possible or asterisk (“*”) for allOlaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 63
  64. 64. Result Forms ● CONSTRUCT ● Result: an RDF graph constructed from a template ● Template: graph pattern with variables from the query patternOlaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 64
  65. 65. Result Forms ● CONSTRUCT ● Result: an RDF graph constructed from a template ● Template: graph pattern with variables from the query pattern CONSTRUCT { ?v rdfs:label ?name ; CONSTRUCT { ?v rdfs:label ?name ; Query rdf:type myTypes:VolcanosOutsideTheUS rdf:type myTypes:VolcanosOutsideTheUS } } WHERE { WHERE { ?v rdf:type umbel-sc:Volcano ; ?v rdf:type umbel-sc:Volcano ; rdfs:label ?name . rdfs:label ?name . OPTIONAL { ?v p:location OPTIONAL { ?v p:location ?l ?l FILTER ( ?l = FILTER ( ?l = dbpedia:United_States ) } dbpedia:United_States ) } FILTER ( ! BOUND(?l) ) FILTER ( ! BOUND(?l) ) } }Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 65
  66. 66. Result Forms dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ; dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ; Data rdfs:label "Etna" ; rdfs:label "Etna" ; p:location dbpedia:Italy . p:location dbpedia:Italy . dbpedia:Mount_Baker rdf:type umbel-sc:Volcano ; dbpedia:Mount_Baker rdf:type umbel-sc:Volcano ; rdfs:label "Mount Baker" ; rdfs:label "Mount Baker" ; p:location dbpedia:United_States . p:location dbpedia:United_States . dbpedia:Beerenberg rdf:type umbel-sc:Volcano ; dbpedia:Beerenberg rdf:type umbel-sc:Volcano ; rdfs:label "Beerenberg"@en ; rdfs:label "Beerenberg"@en ; p:location dbpedia:Norway . p:location dbpedia:Norway . dbpedia:Mount_Etna rdfs:label "Etna" ; dbpedia:Mount_Etna rdfs:label "Etna" ; Result rdf:type myTypes:VolcanosOutsideTheUS. rdf:type myTypes:VolcanosOutsideTheUS. dbpedia:Beerenberg rdf:type myTypes:VolcanosOutsideTheUS; dbpedia:Beerenberg rdf:type myTypes:VolcanosOutsideTheUS; rdfs:label "Beerenberg"@en . rdfs:label "Beerenberg"@en .Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 66
  67. 67. Components of SPARQL Queries PREFIX PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX PREFIX umbel-sc: <http://umbel.org/umbel/sc/> umbel-sc: <http://umbel.org/umbel/sc/> SELECT ?v SELECT ?v FROM <http://example.org/myGeoData> FROM <http://example.org/myGeoData> WHERE { WHERE { ?v rdf:type umbel-sc:Volcano . ?v rdf:type umbel-sc:Volcano . } } ORDER BY ?name 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 OFFSETOlaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 67
  68. 68. Solution Modifiers ● DISTINCT removes duplicates from the result set dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ; dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ; Data rdfs:label "Etna" . rdfs:label "Etna" . dbpedia:Mount_Baker rdf:type umbel-sc:Volcano. dbpedia:Mount_Baker rdf:type umbel-sc:Volcano. dbpedia:Beerenberg rdf:type umbel-sc:Volcano, dbpedia:Beerenberg rdf:type umbel-sc:Volcano, umbel-sc:NaturalElevation ; umbel-sc:NaturalElevation ; rdfs:label "Beerenberg"@en ; rdfs:label "Beerenberg"@en ; rdfs:label "Бееренберг"@ru . rdfs:label "Бееренберг"@ru . ?type SELECT ?type SELECT ?type Query umbel-sc:Volcano WHERE { _:x rdf:type ?type } WHERE { _:x rdf:type ?type } umbel-sc:Volcano umbel-sc:NaturalElevation umbel-sc:VolcanoOlaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 68
  69. 69. Solution Modifiers ● DISTINCT removes duplicates from the result set dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ; dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ; Data rdfs:label "Etna" . rdfs:label "Etna" . dbpedia:Mount_Baker rdf:type umbel-sc:Volcano. dbpedia:Mount_Baker rdf:type umbel-sc:Volcano. dbpedia:Beerenberg rdf:type umbel-sc:Volcano, dbpedia:Beerenberg rdf:type umbel-sc:Volcano, umbel-sc:NaturalElevation ; umbel-sc:NaturalElevation ; rdfs:label "Beerenberg"@en ; rdfs:label "Beerenberg"@en ; rdfs:label "Бееренберг"@ru . rdfs:label "Бееренберг"@ru . ?type SELECT DISTINCT ?type SELECT DISTINCT ?type Query umbel-sc:Volcano WHERE { _:x rdf:type ?type } WHERE { _:x rdf:type ?type } umbel-sc:NaturalElevationOlaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 69
  70. 70. Solution Modifiers ● ORDER BY orders the results SELECT ?v WHERE { ?v rdf:type umbel-sc:Volcano ; SELECT ?v WHERE { ?v rdf:type umbel-sc:Volcano ; Query rdfs:label ?name } rdfs:label ?name } ORDER BY ?name ORDER BY ?nameOlaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 70
  71. 71. Solution Modifiers ● ORDER BY orders the results SELECT ?v WHERE { ?v rdf:type umbel-sc:Volcano ; SELECT ?v WHERE { ?v rdf:type umbel-sc:Volcano ; Query rdfs:label ?name } rdfs:label ?name } ORDER BY ?name ORDER BY ?name ● 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 ; Query SELECT ?name WHERE { ?v rdf:type umbel-sc:Volcano ; p:lastEruption ?le ; p:lastEruption ?le ; rdfs:label ?name } rdfs:label ?name } ORDER BY DESC(?le), ?name ORDER BY DESC(?le), ?nameOlaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 71
  72. 72. Solution Modifiers ● LIMIT – limits the number of results SELECT ?name WHERE { ?v rdf:type umbel-sc:Volcano ; Query SELECT ?name WHERE { ?v rdf:type umbel-sc:Volcano ; rdfs:label ?name } rdfs:label ?name } ORDER ORDER BY ?name BY ?name LIMIT LIMIT 5 5Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 72
  73. 73. Solution Modifiers ● LIMIT – limits the number of results SELECT ?name WHERE { ?v rdf:type umbel-sc:Volcano ; Query SELECT ?name WHERE { ?v rdf:type umbel-sc:Volcano ; rdfs:label ?name } rdfs:label ?name } ORDER ORDER BY ?name BY ?name LIMIT LIMIT 5 5 ● OFFSET – position/index of the first reported results SELECT ?name WHERE { ?v rdf:type umbel-sc:Volcano ; Query SELECT ?name WHERE { ?v rdf:type umbel-sc:Volcano ; rdfs:label ?name } rdfs:label ?name } ORDER ORDER BY ?name BY ?name LIMIT LIMIT 5 OFFSET 10 5 OFFSET 10 ● Order of result should be predictable (i.e. combine with ORDER BY)Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 73
  74. 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)Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 74
  75. 75. Outline Chapter 1: Linked Data and RDF No w: Chapter 2: Ha nd s-o The SPARQL Query Language n Chapter 3: Querying Linked Data on the Web http://olafhartig.de/icwe.htmlOlaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 75
  76. 76. These slides have been created by Olaf Hartig http://olafhartig.de This work is licensed under a Creative Commons Attribution-Share Alike 3.0 License (http://creativecommons.org/licenses/by-sa/3.0/)Olaf Hartig - ICWE 2012 Tutorial "An Introduction to SPARQL and Queries over Linked Data" - Chapter 2: SPARQL 76
  1. ¿Le ha llamado la atención una diapositiva en particular?

    Recortar diapositivas es una manera útil de recopilar información importante para consultarla más tarde.

×