(04) Semantic Web Technologies - SPARQL
-
Upload
harald-sack -
Category
Education
-
view
3.015 -
download
2
description
Transcript of (04) Semantic Web Technologies - SPARQL
Semantic Web Technologies
LectureDr. Harald Sack
Hasso-Plattner-Institut für IT Systems EngineeringUniversity of Potsdam
Winter Semester 2012/13
Lecture Blog: http://semweb2013.blogspot.com/This file is licensed under the Creative Commons Attribution-NonCommercial 3.0 (CC BY-NC 3.0)
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
2 1. Introduction 2. Semantic Web - Basic Architecture
Languages of the Semantic Web - Part 1
3. Knowledge Representation and LogicsLanguages of the Semantic Web - Part 2
4. Applications in the ,Web of Data‘
Semantic Web Technologies Content
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
3
SO ... WE NEED A WAY TO DEFINE RDF SCHEMATA FORCLASSES AND RELATIONS ?!
RDFS
Last lecture...
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
4
Semantic Web Technologies Content
2. Semantic Web Basic ArchitectureThe Languages of the Semantic Web - Part 1
2.1.Uniform Resource Identifier - URI2.2.Recapitulation: XML and XMLSchema2.3.Resource Description Framework - RDF2.4.RDF Schema2.5.How Do We Get Semantics into WWW?2.6.Query Language SPARQL2.7.Why RDF(S) is not enough
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
5
via http://www.snee.com/bobdc.blog/2008/10/learning-more-about-sparql.html
SPARQL
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
6
2. Semantic Web Basic ArchitectureThe Languages of the Semantic Web - Part 1
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
7 A Query Language for RDF• How do we get to the knowledge from RDF/RDFS Knowledge Bases? • Manual Parsing/Reading and Combination of RDF-Triple is complex
• Can you imagine a relational database without SQL?
2. Semantic Web Basic Architecture2.6 Query Language SPARQL
• SPARQL Protocol and RDF Query Language ist• a Query Language for RDF Graph TRaversal
(SPARQL Query Language Specification)• a Protocol Layer, to use SPARQL via http
(SPARQL Protocol for RDF Specification)• an XML Output Format Specification for SPARQL Queries
(SPARQL Query XML Results Format)• W3C Standard (SPARQL 1.0 since Januar 2008) • inspired by SQL
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
8 •SPARQL 1.0 allows
•Extraction of data from structured or semi structures Data as
•URIs, Blank Nodes, typed and untyped Literals.
•RDF Subgraphs
•Exploration of Data via Query for unknown relations
•Execution of complex Join Operations on heterogeneous databases in a single query
•Transformation of RDF Data from one vocabulary into another
•Construction of new RDF Graphs based on RDF Query Graphs
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
9 •SPARQL 1.1 (in progress) allows
•additional query features
•aggregate functions, subqueries, negations, project expressions, property paths, basic federated queries
•enables logical Entailment for
•RDF, RDFS, OWL Direct and RDF-Based Semantics entailment, and RIF Core entailment.
•enables Update of RDF Graphs as a full data manipulation language
•enables the Discovery of information about the SPARQL service
•enables Federated Queries distributed over different SPARQL
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
10
SPARQL 1.0 firstDienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
11 • SPARQL Variables are bound to RDF terms• e.g. ?journal, ?disease, ?price
• In the same way as in SQL a Query for variables is performed via SELECT statement• e.g. SELECT ?title ?author ?published
• A SELECT statement returns Query Results as a table
?title ?author ?published
1984 George Orwell 1948
Brave New World Aldous Huxley 1932
Fahrenheid 451 Ray Bradbury 1953
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
12
?title ?author ?published
1984 George Orwell 1948
Brave New World Aldous Huxley 1932
Fahrenheid 451 Ray Bradbury 1953
SELECT ?title ?author ?published
SPARQL Query
SPARQL Endpoint
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
13 Graph Pattern• SPARQL is based on RDF Turtle serialization and
basic graph pattern matching.• A Graph Pattern (Triple Pattern) is a RDF Triple that contains
variables at any arbitrary place (Subject, Predicate, Object).• (Graph) Triple Pattern = Turtle + Variables• Examples:• Look for countries and their capitals:
•?country geo:capital ?capital .• Given a FOAF URI, find the name of a person:
•<http://hpi-web.de/id#haraldsack> foaf:name ?surname .• Which persons have the family name „Schmidt“?
•?person pers:familyName “Schmidt“ .
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
14
?country geo:capital ?capital .Triple Pattern
RDF Graphdbpedia:Venezuela rdf:type dbpedia-owl:Country .dbpedia:Venezuela geo:capital “Caracas“ .dbpedia:Venezuela dbprop:language “Spanish“ .dbpedia:Germany rdf:type dbpedia-owl:Country .dbpedia:Germany geo:capital “Berlin“ .dbpedia:Germany dbprop:language “German“ ....
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
15 Simple Query Pattern• Graph Pattern can be combined to form complex (conjunctive)
queries for RDF graph traversal.• Find countries, their capitals and their population:
•?country geo:capital ?capital .?country geo:population ?population .
• Given a FOAF URI, find the name of a person and her friends:•<http://hpi-web.de/id#haraldsack> foaf:name ?surname ; foaf:knows ?friend .?friend foaf:name ?friend_surname .
• Find all superiors of the 3. management level:•?emp hr:managedBy ?first_line .?first_line hr:managedBy ?second_line .?second_line hr:managedBy ?third_line .
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
16 SPARQL Query Format• inspired by SQL
• Triple in „WHERE“ part defines graph query with variables ?p and ?o• Query returns table with matching ?p, ?o pairs
SELECT ?p, ?oWHERE { subject ?p ?o. }
?o
?o
?o
?p
?o
?p
?p
?p
subject
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
17SPARQL Query Format• Search all lectures and their managers:
• WHERE - specifies graph pattern to be matched• PREFIX - specifies one or more namespaces for using compact URIs (CURIEs)• FROM - specifies one or more RDF source graphs• BASE - defines a base URI
PREFIX hpi: <http://hpi-web.de/swt1213#>PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>SELECT ?lecture ?managerFROM <...>WHERE { ?x rdf:type hpi:Lecture . ?x rdfs:label ?lecture . ?y rdf:type hpi:Staff . ?y rdfs:label ?manager ?x hpi:isManagedBy ?y .}
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
18 SPARQL Query Format• Search all lectures and their managers ordered by managers in
descending order and limit the results to the first 10 starting the list at position 10:
PREFIX hpi: <http://hpi-web.de/swt1213#>PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>SELECT ?lecture ?managerFROM <...>WHERE { ?x rdf:type hpi:Lecture ; rdfs:label ?lecture . ?y rdf:type hpi:Staff ; rdfs:label ?manager ?x hpi:isManagedBy ?y .}ORDER BY DESC (?manager)LIMIT 10OFFSET 10
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
19
Blank Nodes in SPARQL Queries• as subject or object of a triple pattern• „non selectable“ variables
• blank node identifier might also occur in the results
PREFIX hpi: <http://hpi-web.de/swt1213#>PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>SELECT ?nameWHERE { _:x rdf:type hpi:Lecture ; hpi:isManagedBy [ rdfs:label ?name] .}
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
20
How should I know all those prefixes?
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
21 SPARQL Query Format• The keyword FILTER specifies constraints for the results
• FILTER expressionscontain operatorsand functions
• FILTERs can NOT assign/create new values
# Default Graph (stored at http://example.org/book) @prefix dc: <http://purl.org/dc/elements/1.1/> .@prefix : <http://example.org/book/> .@prefix ns: <http://example.org/ns#> .
:book1 dc:title "SPARQL Tutorial" .:book1 ns:price 42 .:book2 dc:title "The Semantic Web" .:book2 ns:price 23 .
PREFIX dc: <http://purl.org/dc/elements/1.1/>PREFIX ns: <http://example.org/ns#>SELECT ?title ?priceFROM <http://example.org/book> WHERE { ?x ns:price ?price . FILTER (?price < 30.5) ?x dc:title ?title . }
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
22 SPARQL 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 URI
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
23 More SPARQL 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
• and in addition:• REGEX(String,Pattern) or REGEX(String,Pattern,Flags)• sameTERM(A,B) • langMATCHES(A,B)
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
24 Filter Constraints are Evaluated in 3-valued Logic• true, false, and error
A !AT FF TE E
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 E
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
25 SPARQL Query Format• The keyword OPTIONAL selects optional elements from the RDF graph• complies to a Left Outer Join
# Default Graph (stored at http://example.org/addresses) @prefix foaf: <http://xmlns.com/foaf/0.1/> .@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
_:a rdf:type foaf:Person ._:a foaf:name "Alice" ._:a foaf:mbox <mailto:[email protected]> ._:a foaf:mbox <mailto:[email protected]> .
_:b rdf:type foaf:Person ._:b foaf:name "Bob" .
PREFIX foaf: <http://xmlns.com/foaf/0.1/>SELECT ?name ?mboxFROM <http://example.org/addresses>WHERE { ?x foaf:name ?name . OPTIONAL { ?x foaf:mbox ?mbox }}
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
26
SPARQL Query Format• The keyword UNION allows for alternatives (logical disjunction)
# Default Graph (stored at http://example.org/book) @prefix dc10: <http://purl.org/dc/elements/1.0/> .@prefix dc11: <http://purl.org/dc/elements/1.1/> .
_:a dc10:title "SPARQL Query Language Tutorial" ._:a dc10:creator "Alice" .
_:b dc11:title "SPARQL Protocol Tutorial" ._:b dc11:creator "Bob" .
_:c dc10:title "SPARQL" ._:c dc11:title "SPARQL (updated)" .
PREFIX dc10: <http://purl.org/dc/elements/1.0/>PREFIX dc11: <http://purl.org/dc/elements/1.1/>
SELECT ?titleFROM <http://example.org/books>WHERE { { ?book dc10:title ?title } UNION { ?book dc11:title ?title } }
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
27 SPARQL Query Format• Negation in SPARQL• (complies to ,NOT EXISTS‘ in SQL)
@prefix foaf: <http://xmlns.com/foaf/0.1/> .@prefix dc: <http://purl.org/dc/elements/1.1/> .@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
_:a foaf:givenName "Alice".
_:b foaf:givenName "Bob" ._:b dc:date "2005-04-04T04:04:04Z"^^xsd:dateTime .
PREFIX foaf: <http://xmlns.com/foaf/0.1/>PREFIX dc: <http://purl.org/dc/elements/1.1/>SELECT ?name WHERE { ?x foaf:givenName ?name . OPTIONAL { ?x dc:date ?date } . FILTER (!bound(?date)) }
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
28 SPARQL Query Format•SPARQL queries are executed over an RDF dataset•one (or more) default RDF graph•zero or more named RDF graphs
•Named Graphs can explicitely addressed via keyword GRAPH and the URI of the named graph
GRAPH <http://example.org/graph1.rdf> { ?x foaf:mbox ?mbox }
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
29PREFIX hpi: ...SELECT ...FROM hpi:g1FROM hpi:g4FROM NAMED hpi:g1FROM NAMED hpi:g2FROM NAMED hpi:g3WHERE { ... A ... GRAPH hpi:g3 { ... B ... } GRAPH ?g { ... C ... }}
hpi:g1
hpi:g4
Default Graph
hpi:g1
hpi:g2
hpi:g3
Default Graph
Named Graphs
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
30 SPARQL Query Format• Example for Named Graphs
@prefix dc: <http://purl.org/dc/elements/1.1/> .
<http://example.org/bob> dc:publisher "Bob Hacker" .<http://example.org/alice> dc:publisher "Alice Hacker" .
Default Graph (stored at http://example.org/dft.ttl)
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
_:a foaf:name "Bob" ._:a foaf:mbox <mailto:[email protected]> .
Named Graph: http://example.org/bob
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
_:a foaf:name "Alice" ._:a foaf:mbox <mailto:[email protected]> .
Named Graph: http://example.org/alice
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
31 SPARQL Query Format• Example for Named Graphs
PREFIX foaf: <http://xmlns.com/foaf/0.1/>PREFIX dc: <http://purl.org/dc/elements/1.1/>
SELECT ?who ?g ?mboxFROM <http://example.org/dft.ttl>FROM NAMED <http://example.org/alice>FROM NAMED <http://example.org/bob>WHERE{ ?g dc:publisher ?who . GRAPH ?g { ?x foaf:mbox ?mbox }}
Default Graph
Named Graph
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
32 SPARQL Result Format• SPARQL results are given as well formed and valid XML documents
• In a <head> element all variables of the SPARQL query are listed
<?xml version="1.0"?><sparql xmlns="http://www.w3.org/2005/sparql-results#"> ...</sparql>
<head> <variable name="x"/> <variable name="hpage"/> <variable name="name"/> <variable name="mbox"/> <variable name="blurb"/> </head>
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
33 SPARQL Result Format• For each SPARQL Query result exists a <result> element
<?xml version="1.0"?><sparql xmlns="http://www.w3.org/2005/sparql-results#"> <head> <variable name="x"/> ... </head> <results> <result> <binding name="x"> ... </binding> <binding name="hpage"> ... </binding> </result>
<result> ... </result> ... </results></sparql>
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
34 SPARQL Result Format• Within a <binding> element a <head> variable is bound to a result
<result> <binding name="x"> <bnode>r2</bnode> </binding> <binding name="hpage"> <uri>http://work.example.org/bob/</uri> </binding> <binding name="name"> <literal xml:lang="en">Bob</literal> </binding> <binding name="age"> <literal datatype="http://www.w3.org/2001/XMLSchema#integer">30</literal> </binding> <binding name="mbox"> <uri>mailto:[email protected]</uri> </binding> </result>
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
35 SPARQL Query Format (continued)• In addition to SELECT queries SPARQL allows:
•ASK•Check whether there is at least one result •Result: true or false•Result is delivered as XML or JSON
•CONSTRUCT•Result: an RDF graph constructed from a template•Template: graph pattern with variables from the query pattern•Result is RDF/XML or Turtle
•DESCRIBE•Result: an RDF graph with data about resources•Result is RDF/XML or Turtle
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
36 SPARQL Construction of RDF Graphs• CONSTRUCT defines a template for the construction of new RDF Graphs
@prefix org: <http://example.com/ns#> .
_:a org:employeeName "Alice" ._:a org:employeeId 12345 .
_:b org:employeeName "Bob" ._:b org:employeeId 67890 .
data
PREFIX foaf: <http://xmlns.com/foaf/0.1/>PREFIX org: <http://example.com/ns#>
CONSTRUCT { ?x foaf:name ?name }WHERE { ?x org:employeeName ?name }
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
37 SPARQL Construction of RDF Graphs• Result of a CONSTRUCT query as serialized RDF/XML
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:foaf="http://xmlns.com/foaf/0.1/"> <rdf:Description> <foaf:name>Alice</foaf:name> </rdf:Description> <rdf:Description> <foaf:name>Bob</foaf:name> </rdf:Description></rdf:RDF>
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
38 SPARQL Protocol• Method to query/respond of SPARQL queries via http• A SPARQL URI consists out of 3 parts:1.URL of a SPARQL endpoint
(e.g. http://example.org/sparql)2.RDF Graph(s) to be queried
(optional, part of the query string, z.B. named-graph-uri=http://example.org/testrdf.rdf)
3.Query string (part of the query string, e.g. query=SELECT...)
http://example.org/sparql?named-graph-uri=http%3A%2F%2Fexample.org%2Ftestrdf&query=SELECT+%3Freview_graph+WHERE+%7B%0D%0A++GRAPH+%3Freview_graph+%7B%0D%0A+++++%3Freview+rev%3Arating+10+.%0D%0A++%7D%0D%0A%7D
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
39 SPARQL Protocol -- Example• Simple SPARQL Query
• HTTP Trace of the SPARQL Query
PREFIX dc: <http://purl.org/dc/elements/1.1/> SELECT ?book ?who WHERE { ?book dc:creator ?who }
GET /sparql/?query=EncodedQuery&default-graph-uri=http://www.other.example/books HTTP/1.1Host: www.other.exampleUser-agent: my-sparql-client/0.1
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
40 • HTTP Trace of the SPARQL Response
HTTP/1.1 200 OKDate: Fri, 06 May 2008 20:55:12 GMTServer: Apache/1.3.29 (Unix) PHP/4.3.4 DAV/1.0.3Connection: closeContent-Type: application/sparql-results+xml<?xml version="1.0"?><sparql xmlns="http://www.w3.org/2005/sparql-results#"> <head> <variable name="book"/> <variable name="who"/> </head> <results ordered="false" distinct="false"> <result> <binding name="who"> <literal>Bob Hacker</literal> </binding> <binding name=“book"> <literal>The Art of Hacking</literal> </binding> ...</sparql>
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
41 • some popular SPARQL (1.0) Endpoints• http://sparql.org/sparql.html --
General Purpose SPARQL Endpoint• http://dbpedia.org/sparql --
DBpedia SPARQL Endpoint• http://www4.wiwiss.fu-berlin.de/dblp/sparql --
DBLP (Computer Science Bibliographies) SPARQL Endpoint• http://linkedmdb.org/sparql --
Linked Movie Database SPARQL Endpoint• http://www4.wiwiss.fu-berlin.de/factbook/sparql --
CIA World Factbook SPARQL Endpoint• ...
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
42
SPARQL 1.1 nextAtt
ention
: There
might
occur
chang
es in
syntax
and
semant
ics be
cause
this i
s stil
l a wo
rking
draft.
..
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
43
SPARQL 1.1 -- New Features• SPARQL 1.1 Query:
• Assignments (e.g. BIND, SELECT expressions) • Aggregate functions (e.g. COUNT, SUM, AVG) • Subqueries• Negation (EXISTS, NOT EXISTS, MINUS) • 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)
• SPARQL 1.1 Entailment for RDF, RDFS, OWL, RIF• SPARQL 1.1 Service Descriptions
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
44 SPARQL 1.1 -- Assignments• SPARQL 1.1 allows the creation of new values in a query
PREFIX ex: <http://example.org/> SELECT ?Item (?Pr * 1.1 AS ?NewP )WHERE { ?Item ex:price ?Pr }
@prefix ex: <http://example.org/> .
ex:lemonade1 ex:price 3 .ex:beer1 ex:price 3.ex:wine1 ex:price 3.50 .ex:liqueur1 ex:price "n/a".
?Item ?NewP
lemonade1 3.3
beer1 3.3
wine1 3.85
liqueur1
Data
Result
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
45 SPARQL 1.1 -- Aggregate Functions• SPARQL 1.1 allows the use of aggregate functions in queries
?C
5
DataResult
PREFIX ex: <http://example.org/> SELECT (Count(?Item) AS ?C)WHERE { ?Item ex:price ?Pr }
@prefix ex: <http://example.org/> .
ex:lemonade1 ex:price 3 ; rdf:type ex:Softdrink.ex:beer1 ex:price 3; rdf:type ex:Beer.ex:wine1 ex:price 3.50 ; rdf:type ex:Wine.ex:wine2 ex:price 4 . rdf:type ex:Wine.ex:wine3 ex:price "n/a”; rdf:type ex:Wine.
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
46 SPARQL 1.1 -- Aggregate Functions• SPARQL 1.1 allows the use of aggregate functions in queries
?C
3
DataResult
@prefix ex: <http://example.org/> .
ex:lemonade1 ex:price 3 ; rdf:type ex:Softdrink.ex:beer1 ex:price 3; rdf:type ex:Beer.ex:wine1 ex:price 3.50 ; rdf:type ex:Wine.ex:wine2 ex:price 4 . rdf:type ex:Wine.ex:wine3 ex:price "n/a”; rdf:type ex:Wine.
PREFIX ex: <http://example.org/> SELECT (Count(DISTINCT ?T) AS ?C)WHERE { ?Item rdf:type ?T }
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
47 SPARQL 1.1 -- Aggregate Functions• SPARQL 1.1 allows the use of aggregate functions in queries
DataResult
@prefix ex: <http://example.org/> .
ex:lemonade1 ex:price 3 ; rdf:type ex:Softdrink.ex:beer1 ex:price 3; rdf:type ex:Beer.ex:wine1 ex:price 3.50 ; rdf:type ex:Wine.ex:wine2 ex:price 4 . rdf:type ex:Wine.ex:wine3 ex:price "n/a”; rdf:type ex:Wine.
PREFIX ex: <http://example.org/> SELECT ?T (Count(?Item) AS ?C)WHERE { ?Item rdf:type ?T }GROUP BY ?T
?T ?C
Softdrink 1
Beer 1
Wine 3
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
48 SPARQL 1.1 -- Aggregate Functions• SPARQL 1.1 allows the use of aggregate functions in queries
Data Result@prefix ex: <http://example.org/> .
ex:lemonade1 ex:price 3 ; rdf:type ex:Softdrink.ex:beer1 ex:price 3; rdf:type ex:Beer.ex:wine1 ex:price 3.50 ; rdf:type ex:Wine.ex:wine2 ex:price 4 . rdf:type ex:Wine.ex:wine3 ex:price "n/a”; rdf:type ex:Wine.
?T ?C
Wine 3
PREFIX ex: <http://example.org/> SELECT ?T (Count(?Item) AS ?C)WHERE { ?Item rdf:type ?T }GROUP BY ?THAVING Count(?Item) > 1
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
49 SPARQL 1.1 -- Aggregate Functions• more aggregate functions
• SUM• AVG• MIN• MAX• SAMPLE -- „pick“ one non-deterministically• GROUP_CONCAT -- concatenate values with a designated
string separator
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
50
SPARQL 1.1 -- Aggregate Functions• Example for SAMPLE, GROUP_CONCAT
Result
@prefix ex: <http://example.org/> .@prefix foaf: <http://xmlns.com/foaf/0.1/> .
ex:alice a foaf:Person; foaf:name "Alice Wonderland"; foaf:nick "Alice", "The real Alice".
ex:bob a foaf:Person; foaf:name "Robert Doe", "Robert Charles Doe", "Robert C. Doe"; foaf:nick "Bob","Bobby","RobC","BobDoe".
ex:charles a foaf:Person; foaf:name "Charles Charles"; foaf:nick "Charlie" .
Data
PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT ( SAMPLE(?N) as ?Name) ( GROUP_CONCAT(?M; SEPARATOR = ", ") AS ?Nicknames )WHERE { ?P a foaf:Person ; foaf:name ?N ; foaf:nick ?M . }GROUP BY ?P
?Name ?Nicknames
Alice Wonderland The real Alice, Alice
Charles Charles Charlie
Robert C. Doe Bob, BobDoe, RobC, Bobby
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
51
SPARQL 1.1 -- Subqueries• Subqueries are a way to embed SPARQL queries within other
queries
• returns titles for 10 persons, instead of just 10 rows• result is achieved by first evaluating the inner query
SELECT ?TWHERE { ?D foaf:maker ?P ; rdfs:label ?T . { SELECT DISTINCT ?P WHERE { ?D foaf:maker <http://dblp.l3s.de/…/authors/Harald_Sack>, ?P . FILTER ( ?P != <http://dblp.l3s.de/…/authors/Harald_Sack> ) } LIMIT 10 }}
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
52
SPARQL 1.1 -- Negation• Filtering of query solutions is done within a FILTER expression
using NOT EXISTS and EXISTS.PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT ?personWHERE { ?person rdf:type foaf:Person . FILTER NOT EXISTS { ?person foaf:name ?name }}
@prefix : <http://example/> .@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .@prefix foaf: <http://xmlns.com/foaf/0.1/> .
:alice rdf:type foaf:Person .:alice foaf:name "Alice" .:bob rdf:type foaf:Person .
Data
Result
?person
:bob
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
53
SPARQL 1.1 -- Negation• Filtering of query solutions be removing possible solutions with
MINUS.PREFIX : <http://example/>PREFIX foaf: <http://xmlns.com/foaf/0.1/>SELECT DISTINCT ?sWHERE { ?s ?p ?o . MINUS { ?s foaf:givenName "Bob" . }}
@prefix : <http://example/> .@prefix foaf: <http://xmlns.com/foaf/0.1/> .
:alice foaf:givenName "Alice" ; foaf:familyName "Smith" .
:bob foaf:givenName "Bob" ; foaf:familyName "Jones" .
:carol foaf:givenName "Carol" ; foaf:familyName "Smith" .
Data
Result
?s
:alice
:carol
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
54
SPARQL 1.1 -- Property Paths• A property path is a possible route through an RDF graph
between two graph nodes.• trivial case: property path of length 1, i.e. a triple pattern• alternatives: match one or both possibilities
• sequence: property path of length >1
• inverse property paths: reversing the direction of the triple
{ :book1 dc:title|rdfs:label ?displayString }
{ ?x foaf:mbox <mailto:alice@example> . ?x foaf:knows/foaf:knows/foaf:name ?name . }
{ ?x foaf:mbox <mailto:alice@example> }
=
{ <mailto:alice@example> ^foaf:mbox ?x }
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
55
SPARQL 1.1 -- Property Paths
• inverse path sequences paths
• arbitrary length match
• negated property paths
{ ?x foaf:knows/^foaf:knows ?y . FILTER(?x != ?y) }
{ ?x foaf:mbox <mailto:alice@example> . ?x foaf:knows+/foaf:name ?name . }
{ ?x !(rdf:type|^rdf:type) ?y }
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
56
SPARQL 1.1 -- Property Paths
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
57
SPARQL 1.1 -- Property Paths
• can be used for some ontological inference• e.g. „find all beers in the beer ontology“
PREFIX beer: <http://www.purl.org/net/ontology/beer#>PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT ?beerFROM <http://www.purl.org/net/ontology/beer>WHERE { ?beer rdf:type/rdfs:subClassOf* beer:Beer .}
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
58
SPARQL 1.1 -- New Features• SPARQL 1.1 Query:
• Assignments (e.g. BIND, SELECT expressions) • Aggregate functions (e.g. COUNT, SUM, AVG) • Subqueries• Negation (EXISTS, NOT EXISTS, MINUS) • 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)
• SPARQL 1.1 Entailment for RDF, RDFS, OWL, RIF• SPARQL 1.1 Service Descriptions
more to come...
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
59
Semantic Web Technologies Content
2. Semantic Web Basic ArchitectureThe Languages of the Semantic Web - Part 1
• Uniform Resource Identifier - URI• Recapitulation: XML and XMLSchema• Resource Description Framework - RDF
• RDF Schema• How Do We Get Semantics into WWW?
• µFormats, schema.org, RDFa and GRDDL• Query Language SPARQL• Why RDF(S) is not enough
Short Excursion:
Triple Stores
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
60 RDF in RDBMS• RDF Graph can be represented by a set of Triples (s,p,o)• Triples can simply be stored in a relational database system
• 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 SQL query(3) Generate SPARQL query result from SQL query result
How to store RDF Data?
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
61 • RDF Graph can be represented by a set of Triples (s,p,o)• Triples can simply be stored in a relational database
management system (RDBMS)
• Motivation: 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 SQL query(3) Generate SPARQL query result from SQL query result
RDF in RDBMS
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
62
Problem
• How to store RDF triples to carry out efficient SPARQLqueries?
• 4 alternatives:1.Giant Triple Storage2.Property Tables3.Vertically Partitioned Tables (Binary Tables)4.Hexastore
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
63
• Basic idea:• Store all RDF triples in a single table• performance depends on efficient indexing
Pros:• easy to implement• works for huge numbers of properties,
if indexes are chosen with care
Cons:• many self joins
Giant Triple Storage
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
64
SELECT ?university WHERE { ?v rdf:type :GradStudent; :bachelorsFrom ?university . }
SELECT t2.o AS universityFROM triples AS t1, triples AS t2WHERE t1.p=‘type‘ AND t1.o=‘GradStudent‘ AND t2.p=‘bachelorsFrom‘ AND t1.s=t2.s
SPARQL
SQL
Giant Triple Storage
• Basic idea:• Store all RDF triples in a single table• performance depends on efficient indexing
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
65 • Use numerical identifier for each RDF term in the dataset• saves space and enhances efficiency
RDF Term ID:ID1 1
rdf:type 2:FullProfessor 3
:teacherOf 4“AI“ 5
:bachelorsFrom 6“MIT“ 7
:mastersFrom 8“Cambridge 9
s p o
1 2 31 4 51 6 71 8 91 10 11
12 13 1412 15 712 4 16
ID Based Triple Storage
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
66 • Storing multiple RDF graphs• used for provenance, versioning, contexts, etc.
RDF Term ID:ID1 1
rdf:type 2:FullProfessor 3
:teacherOf 4“AI“ 5
:bachelorsFrom 6“MIT“ 7
:mastersFrom 8“Cambridge 9
g s p o
100 1 2 3100 1 4 5101 12 16 7100 1 8 9102 23 21 11100 1 6 7102 23 22 8101 12 4 16
Quad Tables
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
67 • Combining all (or some) properties of similar subjects in n-ary tables
• Use ID based encoding for efficiency
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
complicated
Property Tables
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
68 • for each unique property create a two column table• Use ID based encoding for efficiency
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)
Vertically Partitioned Tables (Binary Tables)
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
69
Olaf Hartig - Linked Data Management and SPARQL Querying 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 beread even if few attributesare projected
● Column based storage:
● Read columns relevant to thequery → projection is free
● Inserts are expensive
● Column based storage model fit binary tables very well
1 2
3
1 2
3
1 2
3
• 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 query → projection is free
• Inserts are expensive
Vertically Partitioned Tables (Binary Tables)
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
70 • Create an index for every possible combination to enable efficient processing• spo, pos, osp, sop, pso, ops
Hexastores
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
71
Pros:• fast joins (in the beginning)
Cons:• 5 times more storage• weak performance, when
disk access is necessary
Hexastores
• Create an index for every possible combination to enable efficient processing• spo, pos, osp, sop, pso, ops
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
72
Semantic Web Technologies Content
2. Semantic Web Basic ArchitectureThe Languages of the Semantic Web - Part 1
2.1.Uniform Resource Identifier - URI2.2.Recapitulation: XML and XMLSchema2.3.Resource Description Framework - RDF2.4.RDF Schema2.5.How Do We Get Semantics into WWW?2.6.Query Language SPARQL2.7.Why RDF(S) is not enough
Dienstag, 6. November 12
Vorlesung Semantic Web Technologien, Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
73
2. Semantic Web Basisarchitektur2.7 Warum RDF noch nicht ausreicht
Is there more in the World than RDF(S)?
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
74 Locality of global properties
Problem: Cows only eat vegetablesOther animals also eat meat.
2.7 Why RDF(S) is not enough
Animal eats FoodDomain Range
Vegetables
Meat
subClassOf
subClassOf
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
75Disjunctive Classes
Problem: Subclass relation cannot express disjunctive class (subclass) membership
2.7 Why RDF(S) is not enough
Human
Woman
Man
subClassOf
subClassOf
≠
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
76Class Combinations
Problem: Combination of classes define a new class.New class contains only members from given class combinations.
2.7 Why RDF(S) is not enough
Motorist
Pedestrian
Motorcyclist
Cyclist
Road User
subClassOf
subClassOf
subClassOf
subClassOf
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
77Cardinality Restrictions
Problem: Every human (usually) has two partents
2.7 Why RDF(S) is not enough
Human ParenthasParent
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
78 Special Property Constraints
• Transitivity (e.g. „is greater than“)• Uniqueness (e.g. „is mother of“) • Inversiveness (e.g. „is parent of“ and „is child of“)
We need more se
mantic express
ivity!
2.7 Why RDF(S) is not enough
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
79
2. Semantic Web Basic ArchitectureThe Languages of the Semantic Web - Part 1
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
80
Semantic Web Technologies Content
2. Semantic Web Basic ArchitectureThe Languages of the Semantic Web - Part 1
2.1.Uniform Resource Identifier - URI2.2.Recapitulation: XML and XMLSchema2.3.Resource Description Framework - RDF2.4.RDF Schema2.5.How Do We Get Semantics into WWW?2.6.Query Language SPARQL2.7.Why RDF(S) is not enough
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
81
Ontolo
gies
next Lecture:
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
82
Bibliography
• P. Hitzler, S. Roschke, Y. Sure: Semantic Web Grundlagen, Springer, 2007.
• P. Hitzler, M. Krötzsch, S. Rudolph:Foundations of Semantic Web Technologies,CRC Press, 2009.
2. Semantic Web Basic Architecture2.6 Query Language SPARQL2.7. Why RDF(S) is not enough
Dienstag, 6. November 12
Semantic Web Technologies , Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
83
• B. du Charme: Learning SPARQL,O‘Reilly Media, 2011.
Acknowledgements:Thanks a lot to Olaf Hartig and Axel Polleres, who I stole some examples from...
2. Semantic Web Basic Architecture2.6 Query Language SPARQL2.7. Why RDF(S) is not enough
Dienstag, 6. November 12
Lecture Semantic Web Technologies, Dr. Harald Sack, Hasso-Plattner-Institut, Universität Potsdam
84
□Bloghttp://semweb2013.blogspot.com/
□Webseitehttp://www.hpi.uni-potsdam.de/studium/lehrangebot/itse/veranstaltung/semantic_web_technologien-3.html
□bibsonomy - Bookmarkshttp://www.bibsonomy.org/user/lysander07/swt1213_04
2. Semantic Web Basic Architecture2.6 Query Language SPARQL2.7. Why RDF(S) is not enough
Dienstag, 6. November 12