sparql query language for rdf
DESCRIPTION
SPARQL Query Language for RDF. Agenda. Introduction Graph Patterns Query Execution and Ordering Query Forms Testing Values SPARQL Support. The XML approach is to "wrap" each data item in start/end tags. 14.8 meters - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: SPARQL Query Language for RDF](https://reader035.vdocuments.mx/reader035/viewer/2022062804/56814bf3550346895db8e485/html5/thumbnails/1.jpg)
SPARQLQUERY LANGUAGE FOR RDF
![Page 2: SPARQL Query Language for RDF](https://reader035.vdocuments.mx/reader035/viewer/2022062804/56814bf3550346895db8e485/html5/thumbnails/2.jpg)
Agenda
• Introduction
• Graph Patterns
• Query Execution and Ordering
• Query Forms
• Testing Values
• SPARQL Support
![Page 3: SPARQL Query Language for RDF](https://reader035.vdocuments.mx/reader035/viewer/2022062804/56814bf3550346895db8e485/html5/thumbnails/3.jpg)
The XML approach is to "wrap" each data item in start/end tags
<Aircraft> <wingspan>14.8 meters</wingspan> <weight>512 kilograms</weight> <cruise-speed>70 knots</cruise-speed> <range>400 nautical miles</range> <description> medium-altitude, long-endurance unmanned aerial vehicle </description></Aircraft>
RQ-1.xml
![Page 4: SPARQL Query Language for RDF](https://reader035.vdocuments.mx/reader035/viewer/2022062804/56814bf3550346895db8e485/html5/thumbnails/4.jpg)
Why use OWL?
![Page 5: SPARQL Query Language for RDF](https://reader035.vdocuments.mx/reader035/viewer/2022062804/56814bf3550346895db8e485/html5/thumbnails/5.jpg)
Why use OWL?
• The purpose of this document is to describe the role that OWL plays in data interoperability. [Note: this is not the only use of OWL, but it is an important one.]
• Contents:– Understanding Syntax versus Semantics– An example that shows why standardizing syntax is
necessary but not sufficient– Migrating from defining semantics on a per-
application basis to standardized semantics
![Page 6: SPARQL Query Language for RDF](https://reader035.vdocuments.mx/reader035/viewer/2022062804/56814bf3550346895db8e485/html5/thumbnails/6.jpg)
Syntax versus Semantics
• Syntax: the structure of your data– e.g., XML mandates that you structure your data by "wrapping"
each data item within a start tag and an end tag pair, with the end tag being preceded by / and both tags in <…> brackets.
– That is, XML specifies the syntax of your data. • Semantics: the meaning of your data
• Two conditions necessary for interoperability:
1. Adopt a common syntax: this enables applications to parse the data. XML provides a common syntax, and thus is a critical first step. 2. Adopt a means for understanding the semantics: this enables applications to use the data. OWL provides a standard way of expressing the semantics.
![Page 7: SPARQL Query Language for RDF](https://reader035.vdocuments.mx/reader035/viewer/2022062804/56814bf3550346895db8e485/html5/thumbnails/7.jpg)
What is this XML snippet talking about, i.e., what are the semantics?
<Predator> …</Predator>
What is a Predator?
![Page 8: SPARQL Query Language for RDF](https://reader035.vdocuments.mx/reader035/viewer/2022062804/56814bf3550346895db8e485/html5/thumbnails/8.jpg)
Predator - which one?
• Predator: a medium-altitude, long-endurance unmanned aerial vehicle system.
• Predator : one that victimizes, plunders, or destroys, especially for one's own gain.
• Predator : an organism that lives by preying on other organisms.• Predator: a company which specializes in camouflage attire.• Predator: a video game.• Predator: software for machine networking.• Predator: a chain of paintball stores.
![Page 9: SPARQL Query Language for RDF](https://reader035.vdocuments.mx/reader035/viewer/2022062804/56814bf3550346895db8e485/html5/thumbnails/9.jpg)
Meaning (semantics) applied on a per-application basis
<Predator> …</Predator>
application
Semantics: A Predator is type ofAircraft.Actions: These actions must be performed on the Predator data: - identify ground control station. - determine onboard sensors. - determine ordnance.
![Page 10: SPARQL Query Language for RDF](https://reader035.vdocuments.mx/reader035/viewer/2022062804/56814bf3550346895db8e485/html5/thumbnails/10.jpg)
Meaning (semantics) applied on a per-application basis
XML
app#1Semantics: Code to interpret the dataAction: Code to process the data
app#2Semantics: Code to interpret the dataAction: Code to process the data
![Page 11: SPARQL Query Language for RDF](https://reader035.vdocuments.mx/reader035/viewer/2022062804/56814bf3550346895db8e485/html5/thumbnails/11.jpg)
Problem with attaching semantics on a per-application basis
applicationSemantics: Code to interpret the dataAction: Code to process the data
Problems with burying semantic definitionswithin each application:- Duplicate effort - Each application must express the semantics- Variability of interpretation - Each application can take its own interpretation - Example: Mars probe disaster - one application interpreted the data in inches, another application interpreted the data in centimeters.- No ad-hoc discovery and exploitation - Applications have the semantics pre-wired. Thus, when new data (e.g., new type of aircraft) is encountered an application may not be able to effectively process it. This makes for brittle applications.
What's a better approach?
![Page 12: SPARQL Query Language for RDF](https://reader035.vdocuments.mx/reader035/viewer/2022062804/56814bf3550346895db8e485/html5/thumbnails/12.jpg)
Better approach:(1) Extricate semantic definitions from applications (2) Express semantic definitions in a standard vocabulary XML
app#1Action: Code to process the data
app#2Action: Code to process the data
OWL DocumentSemantic Definitions
![Page 13: SPARQL Query Language for RDF](https://reader035.vdocuments.mx/reader035/viewer/2022062804/56814bf3550346895db8e485/html5/thumbnails/13.jpg)
OWL provides an agreed-upon vocabulary for expressing semantics
A Sampling of the OWL Vocabulary:
subClassOf: this OWL element is used to assert that one class of items is a subset of another class of items. Example: Predator is a subClassOf Aircraft.
FunctionalProperty: this OWL element is used to assert that a property has a unique value. Example: sensorID is a FunctionalProperty, i.e., sensorID has a unique value.
equivalentClass: this OWL element is used to assert that one Class is equivalent to another Class. Example: Platform is an equivalentClass to Aircraft.
![Page 14: SPARQL Query Language for RDF](https://reader035.vdocuments.mx/reader035/viewer/2022062804/56814bf3550346895db8e485/html5/thumbnails/14.jpg)
OWL Enables Machines to Understand Data!
XML/DTD/XML Schemas
OWL
Syntax
Semantics
OWL enables machine-processable semantics!
![Page 15: SPARQL Query Language for RDF](https://reader035.vdocuments.mx/reader035/viewer/2022062804/56814bf3550346895db8e485/html5/thumbnails/15.jpg)
Ontology (definition)
• An Ontology is the collection of semantic definitions for a domain.
• Example: an Aircraft Ontology is the set of semantic definitions for the Aircraft domain, e.g.,– Predator is a subClassOf Aircraft.– sensorID is a FunctionalProperty.
– Platform is an equivalentClass to Aircraft.
![Page 16: SPARQL Query Language for RDF](https://reader035.vdocuments.mx/reader035/viewer/2022062804/56814bf3550346895db8e485/html5/thumbnails/16.jpg)
Why use OWL?
• Benefits to application developers:– Less code to write (save $$$).
– Less chance of misinterpretation (save $$$).
• Benefits to community at large:– Everyone can understand each other's data's semantics,
since they are in a common language.
– OWL uses the XML syntax to express semantics, i.e., it builds on an existing technology.
• Don't have to learn new syntax.
• Common XML tools (e.g., parsers) can work on OWL.
– OWL will soon be a W3C recommendation.
![Page 17: SPARQL Query Language for RDF](https://reader035.vdocuments.mx/reader035/viewer/2022062804/56814bf3550346895db8e485/html5/thumbnails/17.jpg)
XQuery Databases
• XQuery is an XML query language. • It can be used to efficiently and easily extract information
from Native XML Databases (NXD).• It can be used to query XML views of relational data.
![Page 18: SPARQL Query Language for RDF](https://reader035.vdocuments.mx/reader035/viewer/2022062804/56814bf3550346895db8e485/html5/thumbnails/18.jpg)
Database Systems supporting XQuery
• The following database systems offer XQuery support: – Native XML Databases:
• Berkeley DB XML• eXist• MarkLogic• Software AG Tamino• Raining Data TigerLogic• Documentum xDb (X-Hive/DB)
– Relational Databases: • IBM DB2• Microsoft SQL Server• Oracle
![Page 19: SPARQL Query Language for RDF](https://reader035.vdocuments.mx/reader035/viewer/2022062804/56814bf3550346895db8e485/html5/thumbnails/19.jpg)
Native XML Database (NXD)
• Native XML databases have an XML-based internal model, i.e., their fundamental unit of storage is XML.
![Page 20: SPARQL Query Language for RDF](https://reader035.vdocuments.mx/reader035/viewer/2022062804/56814bf3550346895db8e485/html5/thumbnails/20.jpg)
Copyright 2004 Digital Enterprise Research Institute. All rights reserved.
www.deri.org
OWL Tutorial
![Page 21: SPARQL Query Language for RDF](https://reader035.vdocuments.mx/reader035/viewer/2022062804/56814bf3550346895db8e485/html5/thumbnails/21.jpg)
Introduction
• RDF – flexible and extensible way to represent information about WWW resources
• SPARQL - query language for getting information from RDF graphs. It provides facilities to:– extract information in the form of URIs, blank nodes, plain and typed
literals.
– extract RDF subgraphs.
– construct new RDF graphs based on information in the queried graphs
• matching graph patterns • variables – global scope; indicated by ‘?‘ or ‘$‘ • query terms – based on Turtle syntax• terms delimited by "<>" are relative URI references • data description format - Turtle
![Page 22: SPARQL Query Language for RDF](https://reader035.vdocuments.mx/reader035/viewer/2022062804/56814bf3550346895db8e485/html5/thumbnails/22.jpg)
Graph Patterns
Basic Graph Pattern – set of Triple Patterns
Group Pattern - a set of graph patterns must all match
Value Constraints - restrict RDF terms in a solution
Optional Graph Patterns .- additional patterns may extend the solution
Alternative Graph Pattern – two or more possible patterns are tried
Patterns on Named Graphs - patterns are matched against named graphs
![Page 23: SPARQL Query Language for RDF](https://reader035.vdocuments.mx/reader035/viewer/2022062804/56814bf3550346895db8e485/html5/thumbnails/23.jpg)
Basic Graph Pattern
• Set of Triple Patterns– Triple Pattern – similar to an RDF Triple (subject, predicate,
object), but any component can be a query variable; literal subjects are allowed
– Matching a triple pattern to a graph: bindings between variables and RDF Terms
• Matching of Basic Graph Patterns– A Pattern Solution of Graph Pattern GP on graph G is any
substitution S such that S(GP) is a subgraph of G.
x v
rdf:type rdf:Property
rdf:type rdf:type rdf:PropertySELECT ?x ?v WHERE { ?x ?x ?v }
?book dc:title ?title
![Page 24: SPARQL Query Language for RDF](https://reader035.vdocuments.mx/reader035/viewer/2022062804/56814bf3550346895db8e485/html5/thumbnails/24.jpg)
Basic Graph Pattern - Multiple Matches
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT ?name ?mbox
WHERE
{ ?x foaf:name ?name .
?x foaf:mbox ?mbox }
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
_:a foaf:name "Johnny Lee Outlaw" .
_:a foaf:mbox <mailto:[email protected]> .
_:b foaf:name "Peter Goodguy" .
_:b foaf:mbox <mailto:[email protected]> .
name mbox
"Johnny Lee Outlaw"
<mailto:[email protected]>
"Peter Goodguy" <mailto:[email protected]>
Group Graph Pattern (set of graph patterns) also!
Data
Query
Query Result
![Page 25: SPARQL Query Language for RDF](https://reader035.vdocuments.mx/reader035/viewer/2022062804/56814bf3550346895db8e485/html5/thumbnails/25.jpg)
Basic Graph Pattern - Blank Nodes
PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT ?x ?name
WHERE { ?x foaf:name ?name }
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
_:a foaf:name "Alice" .
_:b foaf:name "Bob" .
x name
_:c “Alice“
_:d “Bob”
Data
Query
Query Result
![Page 26: SPARQL Query Language for RDF](https://reader035.vdocuments.mx/reader035/viewer/2022062804/56814bf3550346895db8e485/html5/thumbnails/26.jpg)
Graph Patterns
Basic Graph Pattern – set of Triple Patterns
Group Pattern - a set of graph patterns must all match
Value Constraints - restrict RDF terms in a solution
Optional Graph Patterns .- additional patterns may extend the solution
Alternative Graph Pattern – two or more possible patterns are tried
Patterns on Named Graphs - patterns are matched against named graphs
![Page 27: SPARQL Query Language for RDF](https://reader035.vdocuments.mx/reader035/viewer/2022062804/56814bf3550346895db8e485/html5/thumbnails/27.jpg)
Group Pattern
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT ?name ?mbox
WHERE
{ ?x foaf:name ?name .
?x foaf:mbox ?mbox }
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT ?name ?mbox
WHERE
{ {?x foaf:name ?name;
foaf:mbox ?mbox }
}
![Page 28: SPARQL Query Language for RDF](https://reader035.vdocuments.mx/reader035/viewer/2022062804/56814bf3550346895db8e485/html5/thumbnails/28.jpg)
Graph Patterns
Basic Graph Pattern – set of Triple Patterns
Group Pattern - a set of graph patterns must all match
Value Constraints - restrict RDF terms in a solution
Optional Graph Patterns .- additional patterns may extend the solution
Alternative Graph Pattern – two or more possible patterns are tried
Patterns on Named Graphs - patterns are matched against named graphs
![Page 29: SPARQL Query Language for RDF](https://reader035.vdocuments.mx/reader035/viewer/2022062804/56814bf3550346895db8e485/html5/thumbnails/29.jpg)
Value Constraints
PREFIX dc: <http://purl.org/dc/elements/1.1/>
PREFIX ns: <http://example.org/ns#>
SELECT ?title ?price
WHERE { ?x ns:price ?price .
FILTER ?price < 30 .
?x dc:title ?title . }
@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 .
title price
"The Semantic Web" 23
Data
Query
Query Result
![Page 30: SPARQL Query Language for RDF](https://reader035.vdocuments.mx/reader035/viewer/2022062804/56814bf3550346895db8e485/html5/thumbnails/30.jpg)
Graph Patterns
Basic Graph Pattern – set of Triple Patterns
Group Pattern - a set of graph patterns must all match
Value Constraints - restrict RDF terms in a solution
Optional Graph Patterns .- additional patterns may extend the solution
Alternative Graph Pattern – two or more possible patterns are tried
Patterns on Named Graphs - patterns are matched against named graphs
![Page 31: SPARQL Query Language for RDF](https://reader035.vdocuments.mx/reader035/viewer/2022062804/56814bf3550346895db8e485/html5/thumbnails/31.jpg)
Optional graph patterns
PREFIX dc: <http://purl.org/dc/elements/1.1/>
PREFIX ns: <http://example.org/ns#>
SELECT ?title ?price
WHERE { ?x dc:title ?title .
OPTIONAL { ?x ns:price ?price .
FILTER ?price < 30 }}
@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 .
title price
“SPARQL Tutorial“
"The Semantic Web" 23
Data
Query
Query Result
![Page 32: SPARQL Query Language for RDF](https://reader035.vdocuments.mx/reader035/viewer/2022062804/56814bf3550346895db8e485/html5/thumbnails/32.jpg)
Multiple Optional Blocks
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT ?name ?mbox ?hpage
WHERE { ?x foaf:name ?name .
OPTIONAL { ?x foaf:mbox ?mbox }. OPTIONAL { ?x foaf:homepage ?hpage } }
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
_:a foaf:name "Alice" .
_:a foaf:homepage <http://work.example.org/alice/> .
_:b foaf:name "Bob" .
_:b foaf:mbox <mailto:[email protected]> .
Data
Query
Query Result
name Mbox hpage
“Alice“ <http://work.example.org/alice/>
“Bob“ <mailto:[email protected]>
![Page 33: SPARQL Query Language for RDF](https://reader035.vdocuments.mx/reader035/viewer/2022062804/56814bf3550346895db8e485/html5/thumbnails/33.jpg)
Graph Patterns
Basic Graph Patterns – set of Triple Patterns
Group Patterns - a set of graph patterns must all match
Value Constraints - restrict RDF terms in a solution
Optional Graph Patterns .- additional patterns may extend the solution
Alternative Graph Patterns – two or more possible patterns are tried
Patterns on Named Graphs - patterns are matched against named graphs
![Page 34: SPARQL Query Language for RDF](https://reader035.vdocuments.mx/reader035/viewer/2022062804/56814bf3550346895db8e485/html5/thumbnails/34.jpg)
Alternative Graph Patterns
PREFIX dc10: <http://purl.org/dc/elements/1.0/>
PREFIX dc11: <http://purl.org/dc/elements/1.1/>
SELECT ?x ?y
WHERE { { ?book dc10:title ?x } UNION { ?book dc11:title ?y } }
@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" .
_:b dc11:title "SPARQL Protocol Tutorial" .
_:c dc10:title "SPARQL" .
_:c dc11:title "SPARQL (updated)" .
Data
Query
Query Result
x y
"SPARQL (updated)"
"SPARQL Protocol Tutorial"
"SPARQL"
"SPARQL Query Language Tutorial"
![Page 35: SPARQL Query Language for RDF](https://reader035.vdocuments.mx/reader035/viewer/2022062804/56814bf3550346895db8e485/html5/thumbnails/35.jpg)
Graph Patterns
Basic Graph Pattern – set of Triple Patterns
Group Pattern - a set of graph patterns must all match
Value Constraints - restrict RDF terms in a solution
Optional Graph Patterns .- additional patterns may extend the solution
Alternative Graph Pattern – two or more possible patterns are tried
Patterns on Named Graphs - patterns are matched against named graphs
![Page 36: SPARQL Query Language for RDF](https://reader035.vdocuments.mx/reader035/viewer/2022062804/56814bf3550346895db8e485/html5/thumbnails/36.jpg)
RDF Dataset
• RDF data stores may hold multiple RDF graphs:– record information about each graph– queries that involve information from more than one graph – RDF Dataset in SPARQL terminology– the background graph, which does not have a name, and zero or
more named graphs, identified by URI reference
• the relationship between named and background graphs:– (i) to have information in the background graph that includes
provenance information about the named graphs (the application is not directly trusting the information in the named graphs )
– (ii) to include the information in the named graphs in the background graph as well.
![Page 37: SPARQL Query Language for RDF](https://reader035.vdocuments.mx/reader035/viewer/2022062804/56814bf3550346895db8e485/html5/thumbnails/37.jpg)
RDF Dataset- The Relationship between Named and Background Graphs (I)
# Background graph
@prefix dc: <http://purl.org/dc/elements/1.1/> .
<http://example.org/bob> dc:publisher "Bob" .
<http://example.org/alice> dc:publisher "Alice" .
# Graph: http://example.org/bob
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
_:a foaf:name "Bob" .
_:a foaf:mbox <mailto:[email protected]> .
# Graph: http://example.org/alice
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
_:a foaf:name "Alice" .
_:a foaf:mbox <mailto:[email protected]> .
![Page 38: SPARQL Query Language for RDF](https://reader035.vdocuments.mx/reader035/viewer/2022062804/56814bf3550346895db8e485/html5/thumbnails/38.jpg)
RDF Dataset- The Relationship between Named and Background Graphs (II)
# Background graph
@prefix foaf: <http://xmlns.com/foaf/0.1/> . _:x foaf:name "Bob" .
_:x foaf:mbox <mailto:[email protected]> .
_:y foaf:name "Alice" .
_:y foaf:mbox <mailto:[email protected]> .
# Graph: http://example.org/bob
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
_:a foaf:name "Bob" .
_:a foaf:mbox <mailto:[email protected]> .
# Graph: http://example.org/alice
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
_:a foaf:name "Alice" .
_:a foaf:mbox <mailto:[email protected]> .
![Page 39: SPARQL Query Language for RDF](https://reader035.vdocuments.mx/reader035/viewer/2022062804/56814bf3550346895db8e485/html5/thumbnails/39.jpg)
Querying the Dataset
# Graph: http://example.org/foaf/aliceFoaf
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
_:a foaf:name "Alice" .
_:a foaf:mbox <mailto:[email protected]> .
_:a foaf:knows _:b .
_:b rdfs:seeAlso <http://example.org/foaf/bobFoaf> .
<http://example.org/foaf/bobFoaf> rdf:type foaf:PersonalProfileDocument .
_:b foaf:name "Bob" .
_:b foaf:mbox <mailto:[email protected]> .
_:b foaf:age 32 . # Graph: http://example.org/foaf/bobFoaf
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
_:1 foaf:mbox <mailto:[email protected]> .
_:1 rdfs:seeAlso <http://example.org/foaf/bobFoaf> .
_:1 foaf:age 35 .
<http://example.org/foaf/bobFoaf> rdf:type foaf:PersonalProfileDocument .
![Page 40: SPARQL Query Language for RDF](https://reader035.vdocuments.mx/reader035/viewer/2022062804/56814bf3550346895db8e485/html5/thumbnails/40.jpg)
Querying the Dataset - Accessing Graph Labels
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT ?src ?bobAge
WHERE { GRAPH ?src
{ ?x foaf:mbox <mailto:[email protected]> .
?x foaf:age ?bobAge }
}
src bobAge
<http://example.org/foaf/aliceFoaf> 32
<http://example.org/foaf/bobFoaf> 35
![Page 41: SPARQL Query Language for RDF](https://reader035.vdocuments.mx/reader035/viewer/2022062804/56814bf3550346895db8e485/html5/thumbnails/41.jpg)
Querying the Dataset - Restricting by Graph Label
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX data: <http://example.org/foaf/>
SELECT ?age
WHERE
{
GRAPH data:bobFoaf {
?x foaf:mbox <mailto:[email protected]> .
?x foaf:age ?age }
}
age
35
![Page 42: SPARQL Query Language for RDF](https://reader035.vdocuments.mx/reader035/viewer/2022062804/56814bf3550346895db8e485/html5/thumbnails/42.jpg)
Querying the Dataset - Restricting via Query Pattern
PREFIX data: <http://example.org/foaf/>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT ?mbox ?age ?ppd
WHERE
{ GRAPH data:aliceFoaf
{ ?alice foaf:mbox <mailto:[email protected]> ;
foaf:knows ?whom .
?whom foaf:mbox ?mbox ;
rdfs:seeAlso ?ppd .
?ppd a foaf:PersonalProfileDocument . } .
GRAPH ?ppd { ?w foaf:mbox ?mbox ;
foaf:age ?age } }
mbox age ppd
<mailto:[email protected]> 35 <http://example.org/foaf/bobFoaf>
![Page 43: SPARQL Query Language for RDF](https://reader035.vdocuments.mx/reader035/viewer/2022062804/56814bf3550346895db8e485/html5/thumbnails/43.jpg)
Query Execution and Ordering
• Optional-1: an optional pattern that has a common variable with a(more) basic graph pattern(s) must be executed after the basic graph pattern(s)
• Optional-2: there can't be two optionals with a common variable, if that variable does not occur in a basic graph pattern as well
• Constraint: constraints are evaluated after variables are assigned values
![Page 44: SPARQL Query Language for RDF](https://reader035.vdocuments.mx/reader035/viewer/2022062804/56814bf3550346895db8e485/html5/thumbnails/44.jpg)
Query forms:
– SELECT
• returns all, or a subset of the variables bound in a query pattern match
• formats : XML or RDF/XML
– CONSTRUCT • returns an RDF graph constructed by substituting variables in a
set of triple templates
– DESCRIBE• returns an RDF graph that describes the resources found.
– ASK• returns whether a query pattern matches or not.
![Page 45: SPARQL Query Language for RDF](https://reader035.vdocuments.mx/reader035/viewer/2022062804/56814bf3550346895db8e485/html5/thumbnails/45.jpg)
CONSTRUCT Examples(I)
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
_:a foaf:name "Alice" .
_:a foaf:mbox <mailto:[email protected]> .
@prefix vcard: <http://www.w3.org/2001/vcard-rdf/3.0#>.
<http://example.org/person#Alice> vcard:FN "Alice" .
PREFIX foaf: <http://xmlns.com/foaf/0.1/> PREFIX vcard: <http://www.w3.org/2001/vcard-rdf/3.0#> CONSTRUCT { <http://example.org/person#Alice> vcard:FN ?name } WHERE { ?x foaf:name ?name }
#extracting a whole graph from the target RDF dataset
CONSTRUCT { ?s ?p ?o }
WHERE { GRAPH <http://example.org/myGraph> { ?s ?p ?o } . }
![Page 46: SPARQL Query Language for RDF](https://reader035.vdocuments.mx/reader035/viewer/2022062804/56814bf3550346895db8e485/html5/thumbnails/46.jpg)
CONSTRUCT Examples(II)
PREFIX dc: <http://purl.org/dc/elements/1.1/>
PREFIX app: <http://example.org/ns#>
CONSTRUCT { ?s ?p ?o }
WHERE { GRAPH ?g { ?s ?p ?o } .
{ ?g dc:publisher <http://www.w3.org/> } .
{ ?g dc:date ?date } .
FILTER app:myDate(?date) > "2005-02-8T00:00:00Z"^^xsd:dateTime. }
accesing a graph conditional on other information contained in the metadata about named graphs in the dataset
![Page 47: SPARQL Query Language for RDF](https://reader035.vdocuments.mx/reader035/viewer/2022062804/56814bf3550346895db8e485/html5/thumbnails/47.jpg)
DESCRIBE
PREFIX ent: <http://myorg.example/employees#> DESCRIBE ?x
WHERE { ?x ent:employeeId "1234" }
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix vcard: <http://www.w3.org/2001/vcard-rdf/3.0> .
@prefix myOrg: <http://myorg.example/employees#> .
_:a myOrg:employeeId "1234" ;
foaf:mbox_sha1sum "ABCD1234" ;
vcard:N [ vcard:Family "Smith" ;
vcard:Given "John" ] .
foaf:mbox_sha1sum rdf:type owl:InverseFunctionalProperty .
![Page 48: SPARQL Query Language for RDF](https://reader035.vdocuments.mx/reader035/viewer/2022062804/56814bf3550346895db8e485/html5/thumbnails/48.jpg)
ASK
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
_:a foaf:name "Alice" .
_:a foaf:homepage <http://work.example.org/alice/> .
_:b foaf:name "Bob" .
_:b foaf:mbox <mailto:[email protected]> .
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
ASK { ?x foaf:name "Alice" } .
![Page 49: SPARQL Query Language for RDF](https://reader035.vdocuments.mx/reader035/viewer/2022062804/56814bf3550346895db8e485/html5/thumbnails/49.jpg)
Testing Values
• Named functions and syntactically constructed operations: – operands: subset of XML Schema DataTypes {xsd:string,
xsd:decimal, xsd:double, xsd:dateTime} and types derived from xsd:decimal.
• Subset of XPath functions and operators– Operands: xs:string, xs:double, xs:float, xs:decimal, xs:integer, xs:dateTime – additional operators: sop:RDFterm-equal, sop:bound , sop:isURI,
sop:isBlank, sop:isLiteral, sop:str , sop:lang, sop:datatype, sop:logical-or, sop:logical-and
• Type Promotion : xs:double, xs:float, xs:decimal– each of the numeric types is promoted to any type higher in the
above list when used as an argument to function expecting that higher type.
![Page 50: SPARQL Query Language for RDF](https://reader035.vdocuments.mx/reader035/viewer/2022062804/56814bf3550346895db8e485/html5/thumbnails/50.jpg)
Support for SPARQL
• SPARQL and Jena– module called ARQ that implements SPARQL; also parses
queries expressed in RDQL or its own internal language.– not yet part of the standard Jena distribution; availbale from
either Jena‘s CVS repository or as a self-contained download
• Twinkle – simple Java interface that wraps the ARQ SPARQL Processor
library (the add-on to Jena).
• Redland– set of free software packages that provide support for RDF,
including querying with RDQL and SPARQL using the Rasqal RDF Query Library. .