An Overview onLinked Data Management and SPARQL Querying                                       Olaf Hartig                ...
Outline  Part 1 Introduction to SPARQL  Part 2 Storage Solutions         for RDF Data  Part 3 Querying the         Web of ...
Outline  Part 1 Introduction to SPARQL  Part 2 Storage do express               How Solutions              declarative que...
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         ...
Components of SPARQL Queries PREFIX PREFIX        rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>               rdf: <h...
Components of SPARQL Queries PREFIX PREFIX        rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>               rdf: <h...
Components of SPARQL Queries PREFIX PREFIX        rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>               rdf: <h...
Components of SPARQL Queries PREFIX PREFIX        rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>               rdf: <h...
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_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.w3...
Constraints (Truth Table) ●   Filter expressions evaluate to true, false, or error ●   Truth table:                       ...
Unary Operators in Constraints                    Operator                          Type(A)      Result type              ...
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 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: <h...
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 ;                    ...
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: <h...
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 ●   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: <h...
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 ●   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    ...
Further Reading ●   W3C SPARQL Working Group                      http://www.w3.org/2001/sw/DataAccess/ ●   J. Pérez, M. A...
Outline  Part 1 Introduction to SPARQL  Part 2 Storage Solutions         for RDF Data  Part 3 Querying the         Web of ...
Outline  Part 1 Introduction to SPARQL  Part 2 Storage Solutions         for RDF Data                                 How ...
Outline  Part 1 Introduction to SPARQL  Part 2 Storage Solutions         for RDF Data                                     ...
Overview on RDF in RDBMS ●   Idea: Use a specific relational schema for RDF data and     benefit from 40 years of research...
Triple Table (Basic Idea) ●   Store all                                   S         P   O     RDF triples     in a single ...
Triple Table (Basic Idea) ●   Store all                                   S             P               O     RDF triples ...
Triple Table (Querying) ●   Store all                                   S         P          O     RDF triples            ...
ID-based Triple Table                                                 S                    P               O              ...
ID-based Triple Table                                                 S                   P           O                   ...
Quad Table                   G                             S                    P             O            100            ...
Pros and Cons of Triple Tables             ●   Pros:                 ●   Easy to implement                 ●   If predicat...
Property Tables (Basic Idea) ●   Combining all (or some) properties     of similar subjects in n-ary tables               ...
Pros and Cons of Property Tables            ●   Pros:                ●   Fewer joins                ●   If the data is str...
Binary Tables (Basic Idea) ●   Also called vertical partitioning ●   n two column tables                        (n is the ...
Row Store vs. Column Store ●   Different physical storage models for relational DBs ●   Row based storage:     ●   Tuples ...
Performance Comparison                                                           Copied from:                             ...
Pros and Cons of Binary Tables              ●   Pros:                  ●   Supports multi-value properties                ...
Summary (RDF in RDBMS) ●   Relational schemas for RDF:                                                                 S  ...
Outline  Part 1 Introduction to SPARQL  Part 2 Storage Solutions         for RDF Data  Part 3 Querying the         Web of ...
Outline  Part 1 Introduction to SPARQL                                              Interesting …                         ...
Can we query the Web of Linked Data as if it were a single (gigantic) database?                    SELECT DISTINCT ?i ?lab...
Warehousing Based Approach Traditional approach 1:    Data centralization (e.g. data warehouse) ●   Querying a collection ...
Query Federation Approach Traditional approach 2:   Federated query processing                                        ? ● ...
Main Drawback                                You have to know the relevant                                  data sources i...
A Novel Approach                                                                             *  Link Traversal Based Query...
Main Idea ●   Intertwine query evaluation with traversal of data links ●   We alternate between:     ●   Evaluate parts of...
Main Idea ●   Intertwine query evaluation with traversal of data links ●   We alternate between:     ●   Evaluate parts of...
Main Idea ●   Intertwine query evaluation with traversal of data links     We alternate between:                          ...
Main Idea ●   Intertwine query evaluation with traversal of data links     We alternate between:                          ...
Main Idea ●   Intertwine query evaluation with traversal of data links     We alternate between:                          ...
Main Idea ●   Intertwine query evaluation with traversal of data links ●   We alternate between:     ●   Evaluate parts of...
Main Idea ●   Intertwine query evaluation with traversal of data links ●   We alternate between:     ●   Evaluate parts of...
Main Idea ●   Intertwine query evaluation with traversal of data links                                                    ...
Main Idea ●   Intertwine query evaluation with traversal of data links                                                    ...
Main Idea ●   Intertwine query evaluation with traversal of data links                                                    ...
Main Idea ●   Intertwine query evaluation with traversal of data links                                                    ...
(An Overview on) Linked Data Management and SPARQL Querying (ISSLOD2011)
(An Overview on) Linked Data Management and SPARQL Querying (ISSLOD2011)
(An Overview on) Linked Data Management and SPARQL Querying (ISSLOD2011)
(An Overview on) Linked Data Management and SPARQL Querying (ISSLOD2011)
(An Overview on) Linked Data Management and SPARQL Querying (ISSLOD2011)
(An Overview on) Linked Data Management and SPARQL Querying (ISSLOD2011)
(An Overview on) Linked Data Management and SPARQL Querying (ISSLOD2011)
(An Overview on) Linked Data Management and SPARQL Querying (ISSLOD2011)
Upcoming SlideShare
Loading in...5
×

(An Overview on) Linked Data Management and SPARQL Querying (ISSLOD2011)

3,455

Published on

These are the slides I used for my lecture at the Indian-Summer School on Linked Data (ISSLOD) in Leipzig, Germany, Sep.14, 2011.

Published in: Technology, Education
0 Comments
8 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,455
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
220
Comments
0
Likes
8
Embeds 0
No embeds

No notes for slide

Transcript of "(An Overview on) Linked Data Management and SPARQL Querying (ISSLOD2011)"

  1. 1. An Overview onLinked Data Management and SPARQL Querying Olaf Hartig http://olafhartig.de/foaf.rdf#olaf @olafhartig Database and Information Systems Research Group Humboldt-Universität zu Berlin
  2. 2. Outline Part 1 Introduction to SPARQL Part 2 Storage Solutions for RDF Data Part 3 Querying the Web of Linked DataOlaf Hartig - Linked Data Management and SPARQL Querying 2
  3. 3. Outline Part 1 Introduction to SPARQL Part 2 Storage do express How Solutions declarative queries for RDF Data over RDF data? (A user perspective) Part 3 Querying the Web of Linked DataOlaf Hartig - Linked Data Management and SPARQL Querying 3
  4. 4. 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 - Linked Data Management and SPARQL Querying 4
  5. 5. 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 - Linked Data Management and SPARQL Querying 5
  6. 6. 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 - Linked Data Management and SPARQL Querying 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 - Linked Data Management and SPARQL Querying 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 - Linked Data Management and SPARQL Querying 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 - Linked Data Management and SPARQL Querying 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 - Linked Data Management and SPARQL Querying 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 - Linked Data Management and SPARQL Querying 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 - Linked Data Management and SPARQL Querying 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 - Linked Data Management and SPARQL Querying 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 . ● 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 - Linked Data Management and SPARQL Querying 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? 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 - Linked Data Management and SPARQL Querying 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: 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 - Linked Data Management and SPARQL Querying 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 ?v rdf:type ?type ; ?v rdf:type ?type ; ?type rdfs:label "Beerenberg"@en . rdfs:label "Beerenberg"@en . umbel-sc:Volcano } } umbel-sc:NaturalElevationOlaf Hartig - Linked Data Management and SPARQL Querying 17
  18. 18. 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 - Linked Data Management and SPARQL Querying 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 [ 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 - Linked Data Management and SPARQL Querying 19
  20. 20. 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 - Linked Data Management and SPARQL Querying 20
  21. 21. 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 - Linked Data Management and SPARQL Querying 21
  22. 22. 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 - Linked Data Management and SPARQL Querying 22
  23. 23. 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 - Linked Data Management and SPARQL Querying 23
  24. 24. 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 - Linked Data Management and SPARQL Querying 24
  25. 25. 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 - Linked Data Management and SPARQL Querying 25
  26. 26. 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 - Linked Data Management and SPARQL Querying 26
  27. 27. 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 - Linked Data Management and SPARQL Querying 27
  28. 28. 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 - Linked Data Management and SPARQL Querying 28
  29. 29. 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 - Linked Data Management and SPARQL Querying 29
  30. 30. 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 - Linked Data Management and SPARQL Querying 30
  31. 31. 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 - Linked Data Management and SPARQL Querying 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: 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 - Linked Data Management and SPARQL Querying 32
  33. 33. 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 - Linked Data Management and SPARQL Querying 33
  34. 34. 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 - Linked Data Management and SPARQL Querying 34
  35. 35. 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 - Linked Data Management and SPARQL Querying 35
  36. 36. 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 - Linked Data Management and SPARQL Querying 36
  37. 37. 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 - Linked Data Management and SPARQL Querying 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 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 - Linked Data Management and SPARQL Querying 38
  39. 39. 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 - Linked Data Management and SPARQL Querying 39
  40. 40. 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 - Linked Data Management and SPARQL Querying 40
  41. 41. 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 - Linked Data Management and SPARQL Querying dbpedia:Beerenberg 41
  42. 42. 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 - Linked Data Management and SPARQL Querying 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 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 - Linked Data Management and SPARQL Querying 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 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 - Linked Data Management and SPARQL Querying 44
  45. 45. 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 - Linked Data Management and SPARQL Querying 45
  46. 46. 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 - Linked Data Management and SPARQL Querying 46
  47. 47. 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 - Linked Data Management and SPARQL Querying 47
  48. 48. 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 - Linked Data Management and SPARQL Querying 48
  49. 49. 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 - Linked Data Management and SPARQL Querying 49
  50. 50. 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 - Linked Data Management and SPARQL Querying 50
  51. 51. 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 - Linked Data Management and SPARQL Querying 51
  52. 52. 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 - Linked Data Management and SPARQL Querying 52
  53. 53. 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 - Linked Data Management and SPARQL Querying 53
  54. 54. 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 - Linked Data Management and SPARQL Querying 54
  55. 55. 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 - Linked Data Management and SPARQL Querying 55
  56. 56. 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 - Linked Data Management and SPARQL Querying 56
  57. 57. Further Reading ● W3C SPARQL Working Group http://www.w3.org/2001/sw/DataAccess/ ● J. Pérez, M. Arenas, and C. Gutierrez: Semantics and Complexity of SPARQL. ACM Transactions on Database Systems 34(3), September 2009 ● SPARQL interface for DBpedia: http://dbpedia.org/snorql/Olaf Hartig - Linked Data Management and SPARQL Querying 57
  58. 58. Outline Part 1 Introduction to SPARQL Part 2 Storage Solutions for RDF Data Part 3 Querying the Web of Linked DataOlaf Hartig - Linked Data Management and SPARQL Querying 58
  59. 59. Outline Part 1 Introduction to SPARQL Part 2 Storage Solutions for RDF Data How can we manage RDF data in Part 3 Querying the an efficient and scalable way? Web of (relational) DBMS, or Use existing Linked Data ● ● Create a new, native DBMS for RDFOlaf Hartig - Linked Data Management and SPARQL Querying 59
  60. 60. Outline Part 1 Introduction to SPARQL Part 2 Storage Solutions for RDF Data (RDF in a RDBMS) Part 3 Querying the Web of Linked DataOlaf Hartig - Linked Data Management and SPARQL Querying 60
  61. 61. Overview on RDF in RDBMS ● Idea: Use a specific relational schema for RDF data and benefit from 40 years of research in the DB community ● 3 steps for SPARQL query processing: 1. Convert SPARQL query to SQL query (w.r.t. the schema) 2. Use RDBMS to answer the SQL query S P O 3. Generate SPARQL query result from the SQL query result S P1 ... Pi ... Pn ● Relational schemas for RDF: ● Triple table ● Property tables P1 ... Pi ... Pn ● Binary tables S O S O S O ● HybridOlaf Hartig - Linked Data Management and SPARQL Querying 61
  62. 62. Triple Table (Basic Idea) ● Store all S P O RDF triples in a single tableOlaf Hartig - Linked Data Management and SPARQL Querying 62
  63. 63. Triple Table (Basic Idea) ● Store all S P O RDF triples dbpedia:Mount_Etna rdf:type umbel-sc:Volcano in a single dbpedia:Mount_Etna rdfs:label "Etna" table dbpedia:Mount_Baker rdf:type umbel-sc:Volcano dbpedia:Beerenberg rdf:type umbel-sc:Volcano dbpedia:Beerenberg rdfs:label "Beerenberg"@en ● Create indexes on combinations of S, P, and O dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ; dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ; RDF 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 .Olaf Hartig - Linked Data Management and SPARQL Querying 63
  64. 64. Triple Table (Querying) ● Store all S P O RDF triples dbpedia:Mount_Etna rdf:type umbel-sc:Volcano in a single dbpedia:Mount_Etna rdfs:label "Etna" table dbpedia:Mount_Baker rdf:type umbel-sc:Volcano dbpedia:Beerenberg rdf:type umbel-sc:VolcanoSELECT ?name WHERE { SPARQL Query dbpedia:BeerenbergSELECT ?name WHERE { rdfs:label "Beerenberg"@en ?v rdf:type umbel-sc:Volcano ; ?v rdf:type umbel-sc:Volcano ; ● Create indexes on combinations of S, P, and O rdfs:label ?name . rdfs:label ?name .}} SELECT umbel-sc:Volcano ; SQL Query SELECT t2.o AS namedbpedia:Mount_Etna rdf:type t2.o AS name dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ; RDF Data FROM triples AS t1, triples AS t2 FROM triples AS t1, triples AS t2 rdfs:label "Etna" . rdfs:label "Etna" . WHERE t1.p = rdf:type ANDdbpedia:Mount_Baker rdf:type umbel-sc:VolcanoAND WHERE t1.p = rdf:type . dbpedia:Mount_Baker rdf:type umbel-sc:Volcano . SPARQL t1.o = "umbel-sc:Volcano" ANDdbpedia:Beerenberg rdf:typet1.o = "umbel-sc:Volcano" AND dbpedia:Beerenberg rdf:type umbel-sc:Volcano ; to SQL umbel-sc:Volcano ; t2.p = rdfs:label AND rdfs:label "Beerenberg"@en .AND t2.p = rdfs:label rdfs:label "Beerenberg"@en . t1.s = t2.s t1.s = t2.sOlaf Hartig - Linked Data Management and SPARQL Querying 64
  65. 65. ID-based Triple Table S P O dbpedia:Mount_Etna rdf:type umbel-sc:Volcano dbpedia:Mount_Etna rdfs:label "Etna" dbpedia:Mount_Baker rdf:type umbel-sc:Volcano dbpedia:Beerenberg rdf:type umbel-sc:Volcano RDF Term dbpedia:Beerenberg ID rdfs:label "Beerenberg"@en ● Use numerical identifier for each RDF term in the dataset ● Advantages: ● Saves space ● Enhances efficiencyOlaf Hartig - Linked Data Management and SPARQL Querying 65
  66. 66. ID-based Triple Table S P O 1 4 6 1 5 7 2 4 6 3 4 6 RDF Term ID 3 5 8 dbpedia:Mount_Etna 1 dbpedia:Mount_Baker 2 ● Use numerical identifier for dbpedia:Beerenberg 3 each RDF term in the dataset rdf:type 4 ● Advantages: rdfs:label 5 ● Saves space umbel-sc:Volcano 6 "Etna" 7 ● Enhances efficiency "Beerenberg"@en 8Olaf Hartig - Linked Data Management and SPARQL Querying 66
  67. 67. Quad Table G S P O 100 1 4 6 100 1 5 7 101 2 4 6 102 3 4 6 RDF Term 100 ID 3 5 8 dbpedia:Mount_Etna 1 dbpedia:Mount_Baker 2 ● Storing multiple RDF graphs dbpedia:Beerenberg 3 ● Use Cases: rdf:type 4 rdfs:label 5 ● Provenance umbel-sc:Volcano 6 ● Versioning (multiple snapshots) "Etna" 7 ● Contexts "Beerenberg"@en 8Olaf Hartig - Linked Data Management and SPARQL Querying 67
  68. 68. Pros and Cons of Triple Tables ● Pros: ● Easy to implement ● If predicates are selective, not expensive ● Cons: ● Many self joins are needed ● If predicates are not selective, very expensiveOlaf Hartig - Linked Data Management and SPARQL Querying 68
  69. 69. Property Tables (Basic Idea) ● Combining all (or some) properties of similar subjects in n-ary tables S rdf:type rdfs:label dbpedia:Mount_Etna umbel-sc:Volcano "Etna" dbpedia:Mount_Baker umbel-sc:Volcano NULL dbpedia:Beerenberg umbel-sc:Volcano "Beerenberg"@en ● Also uses ID based encoding dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ; dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ; RDF 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 .Olaf Hartig - Linked Data Management and SPARQL Querying 69
  70. 70. Pros and Cons of Property Tables ● Pros: ● Fewer joins ● If the data is structured, we have a relational DB ● Cons: ● Potentially a lot of NULLs ● Clustering is not trivial ● Multi-value properties are complicatedOlaf Hartig - Linked Data Management and SPARQL Querying 70
  71. 71. Binary Tables (Basic Idea) ● Also called vertical partitioning ● n two column tables (n is the number of unique properties in the data) ● Also combined with rdf:type ID based encoding S O of RDF terms dbpedia:Mount_Etna umbel-sc:Volcano dbpedia:Mount_Baker umbel-sc:Volcano dbpedia:Beerenberg umbel-sc:Volcano rdfs:label S O dbpedia:Mount_Etna "Etna" dbpedia:Beerenberg "Beerenberg"@enOlaf Hartig - Linked Data Management and SPARQL Querying 71
  72. 72. Row Store vs. Column Store ● Different physical storage models for relational DBs ● Row based storage: ● Tuples (i.e. DB records) are stored consecutively ● Entire row needs to be read even if few attributes are projected ● Column based storage: ● Read columns relevant to the 1 2 1 2 1 2 query → projection is free 3 3 3 ● Inserts are expensive ● Column based storage model fit binary tables very wellOlaf Hartig - Linked Data Management and SPARQL Querying 72
  73. 73. Performance Comparison Copied from: D.J. Abadi, A. Marcus, S.R. Madden, and K. Hollenbach. Scalable Semantic Web Data Management Using Vertical Partitioning. In Proc. of VLDB 2007 ● However: property tables may outperform triple table and binary tables for RDF data with regular structure* *J.J. Levandoski and M.F. Mokbel. RDF data-centric storage. ICWS 2009Olaf Hartig - Linked Data Management and SPARQL Querying 73
  74. 74. Pros and Cons of Binary Tables ● Pros: ● Supports multi-value properties ● No NULLs ● Read only needed attributes (i.e. less I/O) ● No clustering ● Excellent performance (if number of properties is small, queries with bounded properties) ● Cons: ● Expensive inserts ● Bad performance (large number of properties, queries with unbounded properties)Olaf Hartig - Linked Data Management and SPARQL Querying 74
  75. 75. Summary (RDF in RDBMS) ● Relational schemas for RDF: S P O ● Triple table S P1 ... Pi ... Pn ● Property tables ● Binary tables ● Hybrid P1 ... Pi ... Pn S O S O S O ● None of these approaches can compete with a purely relational model: “... there is still room for optimization in the proposed generic relational RDF storage schemes and thus new techniques for storing and querying RDF data are still required ...”* * S. Sakr and G. Al-Naymat. Relational Processing of RDF Queries: A Survey. SIGMOD Record 38(4), 2009Olaf Hartig - Linked Data Management and SPARQL Querying 75
  76. 76. Outline Part 1 Introduction to SPARQL Part 2 Storage Solutions for RDF Data Part 3 Querying the Web of Linked DataOlaf Hartig - Linked Data Management and SPARQL Querying 76
  77. 77. Outline Part 1 Introduction to SPARQL Interesting … but, that was only about (local) RDF data. Part 2 Storage Solutions Web? Whats about Linked Data on the for RDF Data Part 3 Querying the Web of Linked DataOlaf Hartig - Linked Data Management and SPARQL Querying 77
  78. 78. Can we query the Web of Linked Data as if it were a single (gigantic) database? SELECT DISTINCT ?i ?label WHERE { ?prof rdf:type <http://res ... data/dbprofs#DBProfessor> ; foaf:topic_interest ?i . } OPTIONAL { } ?i rdfs:label ?label FILTER( LANG(?label)="en" || LANG(?label)="") ORDER BY ?label ?Olaf Hartig - The Impact of Data Caching on Query Execution for Linked Data 78
  79. 79. Warehousing Based Approach Traditional approach 1: Data centralization (e.g. data warehouse) ● Querying a collection of copies from all relevant datasets + Most efficient – Misses unknown or new sources – Collection possibly out of dateOlaf Hartig - A Novel Approach to Query the Web of Linked Data
  80. 80. Query Federation Approach Traditional approach 2: Federated query processing ? ● Mediator distributes subqueries to relevant sources and integrates the results ? + Current data ? ? – Sources must provide a query service – Misses unknown or new sourcesOlaf Hartig - A Novel Approach to Query the Web of Linked Data
  81. 81. Main Drawback You have to know the relevant data sources in advance. You restrict yourself to the selected sources. You do not tap the full potential of the Web !Olaf Hartig - A Novel Approach to Query the Web of Linked Data
  82. 82. A Novel Approach * Link Traversal Based Query Execution * First Publication: O. Hartig, C. Bizer, and J.-C. Freytag. Executing SPARQL Queries over the Web of Linked Data. In Proc. of ISWC 2009Olaf Hartig - A Novel Approach to Query the Web of Linked Data
  83. 83. Main Idea ● Intertwine query evaluation with traversal of data links ● We alternate between: ● Evaluate parts of the query (triple patterns) on a continuously augmented set of data ● Look up URIs in intermediate solutions and add retrieved data to the query-local dataset Queried dataOlaf Hartig - A Novel Approach to Query the Web of Linked Data
  84. 84. Main Idea ● Intertwine query evaluation with traversal of data links ● We alternate between: ● Evaluate parts of the query (triple patterns) on a continuously augmented set of data ● Look up URIs in intermediate solutions and add retrieved data to the query-local dataset Query http://.../movie2449 film ing n r_i Lo ca to t io ac n lives_in ?actor ?loc Queried dataOlaf Hartig - A Novel Approach to Query the Web of Linked Data
  85. 85. Main Idea ● Intertwine query evaluation with traversal of data links We alternate between: htt ● p:/ /. Evaluate parts of the query (triple patterns) ../m ? ● on a continuously augmented set of data ov ie2 44 ● Look up URIs in intermediate 9 solutions and add retrieved data to the query-local dataset Query http://.../movie2449 film ing n r_i Lo ca to t io ac n lives_in ?actor ?loc Queried dataOlaf Hartig - A Novel Approach to Query the Web of Linked Data
  86. 86. Main Idea ● Intertwine query evaluation with traversal of data links We alternate between: htt ● p:/ /. Evaluate parts of the query (triple patterns) ../m ? ● on a continuously augmented set of data ov ie2 44 ● Look up URIs in intermediate 9 solutions and add retrieved data to the query-local dataset Query http://.../movie2449 film ing n r_i Lo ca to t io ac n lives_in ?actor ?loc Queried dataOlaf Hartig - A Novel Approach to Query the Web of Linked Data
  87. 87. Main Idea ● Intertwine query evaluation with traversal of data links We alternate between: htt ● p:/ /. Evaluate parts of the query (triple patterns) ../m ? ● on a continuously augmented set of data ov ie2 44 ● Look up URIs in intermediate 9 solutions and add retrieved data to the query-local dataset Query http://.../movie2449 film ing n r_i Lo ca to t io ac n lives_in ?actor ?loc Queried dataOlaf Hartig - A Novel Approach to Query the Web of Linked Data
  88. 88. Main Idea ● Intertwine query evaluation with traversal of data links ● We alternate between: ● Evaluate parts of the query (triple patterns) on a continuously augmented set of data ● Look up URIs in intermediate solutions and add retrieved data to the query-local dataset Query http://.../movie2449 film ing n r_i Lo ca to t io ac n lives_in ?actor ?loc Queried dataOlaf Hartig - A Novel Approach to Query the Web of Linked Data
  89. 89. Main Idea ● Intertwine query evaluation with traversal of data links ● We alternate between: ● Evaluate parts of the query (triple patterns) on a continuously augmented set of data ● Look up URIs in intermediate solutions and add retrieved data to the query-local dataset http://.../movie2449 Query http://.../movie2449 in t or_ film http://mdb.../Paul ac ing n r_i Lo ca to t io ac n lives_in ?actor ?loc Queried dataOlaf Hartig - A Novel Approach to Query the Web of Linked Data
  90. 90. Main Idea ● Intertwine query evaluation with traversal of data links ?actor ● We alternate between: http://mdb.../Paul ● Evaluate parts of the query (triple patterns) on a continuously augmented set of data ● Look up URIs in intermediate solutions and add retrieved data to the query-local dataset http://.../movie2449 Query http://.../movie2449 in t or_ film http://mdb.../Paul ac ing n r_i Lo ca to t io ac n lives_in ?actor ?loc Queried dataOlaf Hartig - A Novel Approach to Query the Web of Linked Data
  91. 91. Main Idea ● Intertwine query evaluation with traversal of data links ?actor ● We alternate between: http://mdb.../Paul ● Evaluate parts of the query (triple patterns) ? aul P on a continuously augmented set of data .../ db /m Look up URIs in intermediate p:/ ● htt solutions and add retrieved data to the query-local dataset Query http://.../movie2449 film ing n r_i Lo ca to t io ac n lives_in ?actor ?loc Queried dataOlaf Hartig - A Novel Approach to Query the Web of Linked Data
  92. 92. Main Idea ● Intertwine query evaluation with traversal of data links ?actor ● We alternate between: http://mdb.../Paul ● Evaluate parts of the query (triple patterns) ? aul P on a continuously augmented set of data .../ db /m Look up URIs in intermediate p:/ ● htt solutions and add retrieved data to the query-local dataset Query http://.../movie2449 film ing n r_i Lo ca to t io ac n lives_in ?actor ?loc Queried dataOlaf Hartig - A Novel Approach to Query the Web of Linked Data
  93. 93. Main Idea ● Intertwine query evaluation with traversal of data links ?actor ● We alternate between: http://mdb.../Paul ● Evaluate parts of the query (triple patterns) ? aul P on a continuously augmented set of data .../ db /m Look up URIs in intermediate p:/ ● htt solutions and add retrieved data to the query-local dataset Query http://.../movie2449 film ing n r_i Lo ca to t io ac n lives_in ?actor ?loc Queried dataOlaf Hartig - A Novel Approach to Query the Web of Linked Data
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×