SlideShare une entreprise Scribd logo
1  sur  19
SPARQL By Example:
The Cheat Sheet
Accompanies slides at:
http://www.cambridgesemantics.com/semantic-university/sparql-by-example
Comments & questions to:
Lee Feigenbaum <lee@cambridgesemantics.com>
VP Marketing & Technology, Cambridge Semantics
Co-chair, W3C SPARQL Working Group
Conventions
Red text means:
“This is a core part of the SPARQL syntax or
language.”
Blue text means:
“This is an example of query-specific text or
values that might go into a SPARQL query.”
Nuts & Bolts
Write full URIs:
<http://this.is.a/full/URI/written#out>
Abbreviate URIs with prefixes:
PREFIX foo: <http://this.is.a/URI/prefix#>
… foo:bar …
 http://this.is.a/URI/prefix#bar
Shortcuts:
a  rdf:type
URIs
Plain literals:
“a plain literal”
Plain literal with language tag:
“bonjour”@fr
Typed literal:
“13”^^xsd:integer
Shortcuts:
true  “true”^^xsd:boolean
3  “3”^^xsd:integer
4.2  “4.2”^^xsd:decimal
Literals
Variables:
?var1, ?anotherVar, ?and_one_more
Variables
Comments:
# Comments start with a „#‟ and
# continue to the end of the line
Comments
Match an exact RDF triple:
ex:myWidget ex:partNumber “XY24Z1” .
Match one variable:
?person foaf:name “Lee Feigenbaum” .
Match multiple variables:
conf:SemTech2009 ?property ?value .
Triple Patterns
Common Prefixes
More common prefixes at http://prefix.cc
prefix... …stands for
rdf: http://xmlns.com/foaf/0.1/
rdfs: http://www.w3.org/2000/01/rdf-schema#
owl: http://www.w3.org/2002/07/owl#
xsd: http://www.w3.org/2001/XMLSchema#
dc: http://purl.org/dc/elements/1.1/
foaf: http://xmlns.com/foaf/0.1/
Anatomy of a Query
PREFIX foo: <…>
PREFIX bar: <…>
…
SELECT …
FROM <…>
FROM NAMED <…>
WHERE {
…
}
GROUP BY …
HAVING …
ORDER BY …
LIMIT …
OFFSET …
VALUES …
Declare prefix
shortcuts
(optional)
Query result
clause
Query pattern
Query modifiers
(optional)
Define the
dataset (optional)
4 Types of SPARQL Queries
Project out specific variables and expressions:
SELECT ?c ?cap (1000 * ?people AS ?pop)
Project out all variables:
SELECT *
Project out distinct combinations only:
SELECT DISTINCT ?country
Results in a table of values (in XML or JSON):
SELECT queries
?c ?cap ?pop
ex:France ex:Paris 63,500,000
ex:Canada ex:Ottawa 32,900,000
ex:Italy ex:Rome 58,900,000
Construct RDF triples/graphs:
CONSTRUCT {
?country a ex:HolidayDestination ;
ex:arrive_at ?capital ;
ex:population ?population .
}
Results in RDF triples (in any RDF serialization):
ex:France a ex:HolidayDestination ;
ex:arrive_at ex:Paris ;
ex:population 635000000 .
ex:Canada a ex:HolidayDestination ;
ex:arrive_at ex:Ottawa ;
ex:population 329000000 .
CONSTRUCT queries
Ask whether or not there are any matches:
ASK
Result is either “true” or “false” (in XML or JSON):
true, false
ASK queries
Describe the resources matched by the given variables:
DESCRIBE ?country
Result is RDF triples (in any RDF serialization) :
ex:France a geo:Country ;
ex:continent geo:Europe ;
ex:flag <http://…/flag-france.png> ;
…
DESCRIBE queries
Combining SPARQL Graph Patterns
Consider A and B as graph patterns.
A Basic Graph Pattern – one or more triple patterns
A . B
 Conjunction. Join together the results of solving A and B by matching the
values of any variables in common.
Optional Graph Patterns
A OPTIONAL { B }
 Left join. Join together the results of solving A and B by matching the
values of any variables in common, if possible. Keep all solutions from A whether or
not there’s a matching solution in B
Combining SPARQL Graph Patterns
Consider A and B as graph patterns.
Either-or Graph Patterns
{ A } UNION { B }
 Disjunction. Include both the results of solving A and the results of
solving B.
“Subtracted” Graph Patterns (SPARQL 1.1)
A MINUS { B }
 Negation. Solve A. Solve B. Include only those results from solving A that
are not compatible with any of the results from B.
SPARQL Subqueries (SPARQL 1.1)
Consider A and B as graph patterns.
A .
{
SELECT …
WHERE {
B
}
}
C .
 Join the results of the subquery with the results of solving A and C.
SPARQL Filters
• SPARQL FILTERs eliminate solutions that do not cause an
expression to evaluate to true.
• Place FILTERs in a query inline within a basic graph pattern
A . B . FILTER ( …expr… )
Category Functions / Operators Examples
Logical &
Comparisons
!, &&, ||, =, !=, <, <=, >,
>=, IN, NOT IN
?hasPermit || ?age < 25
Conditionals
(SPARQL 1.1)
EXISTS, NOT EXISTS, IF,
COALESCE
NOT EXISTS { ?p foaf:mbox ?email }
Math
+, -, *, /, abs, round,
ceil, floor, RAND
?decimal * 10 > ?minPercent
Strings
(SPARQL 1.1)
STRLEN, SUBSTR, UCASE,
LCASE, STRSTARTS, CONCAT,
STRENDS, CONTAINS,
STRBEFORE, STRAFTER
STRLEN(?description) < 255
Date/time
(SPARQL 1.1)
now, year, month, day,
hours, minutes, seconds,
timezone, tz
month(now()) < 4
SPARQL tests
isURI, isBlank,
isLiteral, isNumeric,
bound
isURI(?person) || !bound(?person)
Constructors
(SPARQL 1.1)
URI, BNODE, STRDT,
STRLANG, UUID, STRUUID
STRLANG(?text, “en”) = “hello”@en
Accessors str, lang, datatype lang(?title) = “en”
Hashing (1.1) MD5, SHA1, SHA256, SHA512 BIND(SHA256(?email) AS ?hash)
Miscellaneous
sameTerm, langMatches,
regex, REPLACE
regex(?ssn, “d{3}-d{2}-d{4}”)
Aggregates (SPARQL 1.1)
1. Partition results into
groups based on the
expression(s) in the
GROUP BY clause
2. Evaluate projections
and aggregate functions
in SELECT clause to get
one result per group
3. Filter aggregated
results via the HAVING
clause
?key ?val ?other1
1 4 …
1 4 …
2 5 …
2 4 …
2 10 …
2 2 …
2 1 …
3 3 …
?key ?sum_of_val
1 8
2 22
3 3
?key ?sum_of_val
1 8
3 3
SPARQL 1.1 includes: COUNT, SUM, AVG, MIN, MAX, SAMPLE, GROUP_CONCAT
Property Paths (SPARQL 1.1)
• Property paths allow triple patterns to match arbitrary-
length paths through a graph
• Predicates are combined with regular-expression-like
operators:
Construct Meaning
path1/path2 Forwards path (path1 followed by path2)
^path1 Backwards path (object to subject)
path1|path2 Either path1 or path2
path1* path1, repeated zero or more times
path1+ path1, repeated one or more times
path1? path1, optionally
!uri Any predicate except uri
!^uri Any backwards (object to subject) predicate except uri
RDF Datasets
A SPARQL queries a default graph (normally) and zero or
more named graphs (when inside a GRAPH clause).
ex:g1
ex:g2
ex:g3
Default graph
(the merge of zero or more graphs)
Named graphs
ex:g1
ex:g4
PREFIX ex: <…>
SELECT …
FROM ex:g1
FROM ex:g4
FROM NAMED ex:g1
FROM NAMED ex:g2
FROM NAMED ex:g3
WHERE {
… A …
GRAPH ex:g3 {
… B …
}
GRAPH ?graph {
… C …
}
}
OR
OR
SPARQL Over HTTP (the SPARQL Protocol)
http://host.domain.com/sparql/endpoint?<parameters>
where <parameters> can include:
query=<encoded query string>
e.g. SELECT+*%0DWHERE+{…
default-graph-uri=<encoded graph URI>
e.g. http%3A%2F%2Fexmaple.com%2Ffoo…
n.b. zero of more occurrences of default-graph-uri
named-graph-uri=<encoded graph URI>
e.g. http%3A%2F%2Fexmaple.com%2Fbar…
n.b. zero of more occurrences of named-graph-uri
HTTP GET or POST. Graphs given in the protocol override graphs given in the
query.
Federated Query (SPARQL 1.1)
PREFIX ex: <…>
SELECT …
FROM ex:g1
WHERE {
… A …
SERVICE ex:s1 {
… B …
}
SERVICE ex:s2 {
… C …
}
}
ex:g1
Web
SPARQL Endpoint
ex:s2
SPARQL Endpoint
ex:s1
Local Graph Store
SPARQL 1.1 Update
SPARQL Update Language Statements
INSERT DATA { triples }
DELETE DATA {triples}
[ DELETE { template } ] [ INSERT { template } ] WHERE { pattern }
LOAD <uri> [ INTO GRAPH <uri> ]
CLEAR GRAPH <uri>
CREATE GRAPH <uri>
DROP GRAPH <uri>
[ … ] denotes optional parts of SPARQL 1.1 Update syntax
Some Public SPARQL Endpoints
Name URL What’s there?
SPARQLer http://sparql.org/sparql.html
General-purpose query
endpoint for Web-accessible
data
DBPedia http://dbpedia.org/sparql
Extensive RDF data from
Wikipedia
DBLP http://www4.wiwiss.fu-berlin.de/dblp/snorql/
Bibliographic data from
computer science journals
and conferences
LinkedMDB http://data.linkedmdb.org/sparql
Films, actors, directors,
writers, producers, etc.
World
Factbook
http://www4.wiwiss.fu-
berlin.de/factbook/snorql/
Country statistics from the
CIA World Factbook
bio2rdf http://bio2rdf.org/sparql
Bioinformatics data from
around 40 public databases
SPARQL Resources
• SPARQL Specifications Overview
– http://www.w3.org/TR/sparql11-overview/
• SPARQL implementations
– http://esw.w3.org/topic/SparqlImplementations
• SPARQL endpoints
– http://esw.w3.org/topic/SparqlEndpoints
• SPARQL Frequently Asked Questions
– http://www.thefigtrees.net/lee/sw/sparql-faq
• Common SPARQL extensions
– http://esw.w3.org/topic/SPARQL/Extensions

Contenu connexe

Tendances

RDF, SPARQL and Semantic Repositories
RDF, SPARQL and Semantic RepositoriesRDF, SPARQL and Semantic Repositories
RDF, SPARQL and Semantic RepositoriesMarin Dimitrov
 
Introduction to RDF & SPARQL
Introduction to RDF & SPARQLIntroduction to RDF & SPARQL
Introduction to RDF & SPARQLOpen Data Support
 
SPARQL in a nutshell
SPARQL in a nutshellSPARQL in a nutshell
SPARQL in a nutshellFabien Gandon
 
SPARQL introduction and training (130+ slides with exercices)
SPARQL introduction and training (130+ slides with exercices)SPARQL introduction and training (130+ slides with exercices)
SPARQL introduction and training (130+ slides with exercices)Thomas Francart
 
Introduction to Knowledge Graphs and Semantic AI
Introduction to Knowledge Graphs and Semantic AIIntroduction to Knowledge Graphs and Semantic AI
Introduction to Knowledge Graphs and Semantic AISemantic Web Company
 
Linking the world with Python and Semantics
Linking the world with Python and SemanticsLinking the world with Python and Semantics
Linking the world with Python and SemanticsTatiana Al-Chueyr
 
Knowledge Graph Introduction
Knowledge Graph IntroductionKnowledge Graph Introduction
Knowledge Graph IntroductionSören Auer
 
ESWC 2017 Tutorial Knowledge Graphs
ESWC 2017 Tutorial Knowledge GraphsESWC 2017 Tutorial Knowledge Graphs
ESWC 2017 Tutorial Knowledge GraphsPeter Haase
 
Introduction to Apache Spark
Introduction to Apache SparkIntroduction to Apache Spark
Introduction to Apache SparkRahul Jain
 
Debunking some “RDF vs. Property Graph” Alternative Facts
Debunking some “RDF vs. Property Graph” Alternative FactsDebunking some “RDF vs. Property Graph” Alternative Facts
Debunking some “RDF vs. Property Graph” Alternative FactsNeo4j
 
Property graph vs. RDF Triplestore comparison in 2020
Property graph vs. RDF Triplestore comparison in 2020Property graph vs. RDF Triplestore comparison in 2020
Property graph vs. RDF Triplestore comparison in 2020Ontotext
 
RDF 개념 및 구문 소개
RDF 개념 및 구문 소개RDF 개념 및 구문 소개
RDF 개념 및 구문 소개Dongbum Kim
 
Introducing DataFrames in Spark for Large Scale Data Science
Introducing DataFrames in Spark for Large Scale Data ScienceIntroducing DataFrames in Spark for Large Scale Data Science
Introducing DataFrames in Spark for Large Scale Data ScienceDatabricks
 

Tendances (20)

RDF, SPARQL and Semantic Repositories
RDF, SPARQL and Semantic RepositoriesRDF, SPARQL and Semantic Repositories
RDF, SPARQL and Semantic Repositories
 
RDF data validation 2017 SHACL
RDF data validation 2017 SHACLRDF data validation 2017 SHACL
RDF data validation 2017 SHACL
 
Introduction to RDF & SPARQL
Introduction to RDF & SPARQLIntroduction to RDF & SPARQL
Introduction to RDF & SPARQL
 
RDF Data Model
RDF Data ModelRDF Data Model
RDF Data Model
 
RDF and OWL
RDF and OWLRDF and OWL
RDF and OWL
 
SPARQL in a nutshell
SPARQL in a nutshellSPARQL in a nutshell
SPARQL in a nutshell
 
Introduction to SPARQL
Introduction to SPARQLIntroduction to SPARQL
Introduction to SPARQL
 
SPARQL introduction and training (130+ slides with exercices)
SPARQL introduction and training (130+ slides with exercices)SPARQL introduction and training (130+ slides with exercices)
SPARQL introduction and training (130+ slides with exercices)
 
Introduction to Knowledge Graphs and Semantic AI
Introduction to Knowledge Graphs and Semantic AIIntroduction to Knowledge Graphs and Semantic AI
Introduction to Knowledge Graphs and Semantic AI
 
Linking the world with Python and Semantics
Linking the world with Python and SemanticsLinking the world with Python and Semantics
Linking the world with Python and Semantics
 
ontop: A tutorial
ontop: A tutorialontop: A tutorial
ontop: A tutorial
 
Knowledge Graph Introduction
Knowledge Graph IntroductionKnowledge Graph Introduction
Knowledge Graph Introduction
 
RDF validation tutorial
RDF validation tutorialRDF validation tutorial
RDF validation tutorial
 
ESWC 2017 Tutorial Knowledge Graphs
ESWC 2017 Tutorial Knowledge GraphsESWC 2017 Tutorial Knowledge Graphs
ESWC 2017 Tutorial Knowledge Graphs
 
Introduction to Apache Spark
Introduction to Apache SparkIntroduction to Apache Spark
Introduction to Apache Spark
 
ShEx vs SHACL
ShEx vs SHACLShEx vs SHACL
ShEx vs SHACL
 
Debunking some “RDF vs. Property Graph” Alternative Facts
Debunking some “RDF vs. Property Graph” Alternative FactsDebunking some “RDF vs. Property Graph” Alternative Facts
Debunking some “RDF vs. Property Graph” Alternative Facts
 
Property graph vs. RDF Triplestore comparison in 2020
Property graph vs. RDF Triplestore comparison in 2020Property graph vs. RDF Triplestore comparison in 2020
Property graph vs. RDF Triplestore comparison in 2020
 
RDF 개념 및 구문 소개
RDF 개념 및 구문 소개RDF 개념 및 구문 소개
RDF 개념 및 구문 소개
 
Introducing DataFrames in Spark for Large Scale Data Science
Introducing DataFrames in Spark for Large Scale Data ScienceIntroducing DataFrames in Spark for Large Scale Data Science
Introducing DataFrames in Spark for Large Scale Data Science
 

Similaire à SPARQL Cheat Sheet

Querying the Semantic Web with SPARQL
Querying the Semantic Web with SPARQLQuerying the Semantic Web with SPARQL
Querying the Semantic Web with SPARQLEmanuele Della Valle
 
Genomic Analysis in Scala
Genomic Analysis in ScalaGenomic Analysis in Scala
Genomic Analysis in ScalaRyan Williams
 
SPARQL-DL - Theory & Practice
SPARQL-DL - Theory & PracticeSPARQL-DL - Theory & Practice
SPARQL-DL - Theory & PracticeAdriel Café
 
The Semantics of SPARQL
The Semantics of SPARQLThe Semantics of SPARQL
The Semantics of SPARQLOlaf Hartig
 
The Semantic Web #10 - SPARQL
The Semantic Web #10 - SPARQLThe Semantic Web #10 - SPARQL
The Semantic Web #10 - SPARQLMyungjin Lee
 
Notes from the Library Juice Academy courses on “SPARQL Fundamentals”: Univer...
Notes from the Library Juice Academy courses on “SPARQL Fundamentals”: Univer...Notes from the Library Juice Academy courses on “SPARQL Fundamentals”: Univer...
Notes from the Library Juice Academy courses on “SPARQL Fundamentals”: Univer...Allison Jai O'Dell
 
SPARQL Query Forms
SPARQL Query FormsSPARQL Query Forms
SPARQL Query FormsLeigh Dodds
 
Triplestore and SPARQL
Triplestore and SPARQLTriplestore and SPARQL
Triplestore and SPARQLLino Valdivia
 
SWT Lecture Session 4 - SW architectures and SPARQL
SWT Lecture Session 4 - SW architectures and SPARQLSWT Lecture Session 4 - SW architectures and SPARQL
SWT Lecture Session 4 - SW architectures and SPARQLMariano Rodriguez-Muro
 
Federation and Navigation in SPARQL 1.1
Federation and Navigation in SPARQL 1.1Federation and Navigation in SPARQL 1.1
Federation and Navigation in SPARQL 1.1net2-project
 
Transformation Processing Smackdown; Spark vs Hive vs Pig
Transformation Processing Smackdown; Spark vs Hive vs PigTransformation Processing Smackdown; Spark vs Hive vs Pig
Transformation Processing Smackdown; Spark vs Hive vs PigLester Martin
 
Towards an RDF Validation Language based on Regular Expression Derivatives
Towards an RDF Validation Language based on Regular Expression DerivativesTowards an RDF Validation Language based on Regular Expression Derivatives
Towards an RDF Validation Language based on Regular Expression DerivativesJose Emilio Labra Gayo
 
Rewriting Java In Scala
Rewriting Java In ScalaRewriting Java In Scala
Rewriting Java In ScalaSkills Matter
 
Scala Talk at FOSDEM 2009
Scala Talk at FOSDEM 2009Scala Talk at FOSDEM 2009
Scala Talk at FOSDEM 2009Martin Odersky
 

Similaire à SPARQL Cheat Sheet (20)

Sparql
SparqlSparql
Sparql
 
Querying the Semantic Web with SPARQL
Querying the Semantic Web with SPARQLQuerying the Semantic Web with SPARQL
Querying the Semantic Web with SPARQL
 
AnzoGraph DB - SPARQL 101
AnzoGraph DB - SPARQL 101AnzoGraph DB - SPARQL 101
AnzoGraph DB - SPARQL 101
 
Genomic Analysis in Scala
Genomic Analysis in ScalaGenomic Analysis in Scala
Genomic Analysis in Scala
 
SPARQL-DL - Theory & Practice
SPARQL-DL - Theory & PracticeSPARQL-DL - Theory & Practice
SPARQL-DL - Theory & Practice
 
The Semantics of SPARQL
The Semantics of SPARQLThe Semantics of SPARQL
The Semantics of SPARQL
 
The Semantic Web #10 - SPARQL
The Semantic Web #10 - SPARQLThe Semantic Web #10 - SPARQL
The Semantic Web #10 - SPARQL
 
Notes from the Library Juice Academy courses on “SPARQL Fundamentals”: Univer...
Notes from the Library Juice Academy courses on “SPARQL Fundamentals”: Univer...Notes from the Library Juice Academy courses on “SPARQL Fundamentals”: Univer...
Notes from the Library Juice Academy courses on “SPARQL Fundamentals”: Univer...
 
SWT Lecture Session 3 - SPARQL
SWT Lecture Session 3 - SPARQLSWT Lecture Session 3 - SPARQL
SWT Lecture Session 3 - SPARQL
 
SPARQL Query Forms
SPARQL Query FormsSPARQL Query Forms
SPARQL Query Forms
 
Triplestore and SPARQL
Triplestore and SPARQLTriplestore and SPARQL
Triplestore and SPARQL
 
SWT Lecture Session 4 - SW architectures and SPARQL
SWT Lecture Session 4 - SW architectures and SPARQLSWT Lecture Session 4 - SW architectures and SPARQL
SWT Lecture Session 4 - SW architectures and SPARQL
 
Java 8
Java 8Java 8
Java 8
 
Federation and Navigation in SPARQL 1.1
Federation and Navigation in SPARQL 1.1Federation and Navigation in SPARQL 1.1
Federation and Navigation in SPARQL 1.1
 
Transformation Processing Smackdown; Spark vs Hive vs Pig
Transformation Processing Smackdown; Spark vs Hive vs PigTransformation Processing Smackdown; Spark vs Hive vs Pig
Transformation Processing Smackdown; Spark vs Hive vs Pig
 
Towards an RDF Validation Language based on Regular Expression Derivatives
Towards an RDF Validation Language based on Regular Expression DerivativesTowards an RDF Validation Language based on Regular Expression Derivatives
Towards an RDF Validation Language based on Regular Expression Derivatives
 
Introduction to SPARQL
Introduction to SPARQLIntroduction to SPARQL
Introduction to SPARQL
 
Rewriting Java In Scala
Rewriting Java In ScalaRewriting Java In Scala
Rewriting Java In Scala
 
4 sw architectures and sparql
4 sw architectures and sparql4 sw architectures and sparql
4 sw architectures and sparql
 
Scala Talk at FOSDEM 2009
Scala Talk at FOSDEM 2009Scala Talk at FOSDEM 2009
Scala Talk at FOSDEM 2009
 

Plus de LeeFeigenbaum

Data Segmenting in Anzo
Data Segmenting in AnzoData Segmenting in Anzo
Data Segmenting in AnzoLeeFeigenbaum
 
Intro to the Semantic Web Landscape - 2011
Intro to the Semantic Web Landscape - 2011Intro to the Semantic Web Landscape - 2011
Intro to the Semantic Web Landscape - 2011LeeFeigenbaum
 
Evolution Towards Web 3.0: The Semantic Web
Evolution Towards Web 3.0: The Semantic WebEvolution Towards Web 3.0: The Semantic Web
Evolution Towards Web 3.0: The Semantic WebLeeFeigenbaum
 
Taking the Tech out of SemTech
Taking the Tech out of SemTechTaking the Tech out of SemTech
Taking the Tech out of SemTechLeeFeigenbaum
 
CSHALS 2010 W3C Semanic Web Tutorial
CSHALS 2010 W3C Semanic Web TutorialCSHALS 2010 W3C Semanic Web Tutorial
CSHALS 2010 W3C Semanic Web TutorialLeeFeigenbaum
 
What;s Coming In SPARQL2?
What;s Coming In SPARQL2?What;s Coming In SPARQL2?
What;s Coming In SPARQL2?LeeFeigenbaum
 
Semantic Web Landscape 2009
Semantic Web Landscape 2009Semantic Web Landscape 2009
Semantic Web Landscape 2009LeeFeigenbaum
 

Plus de LeeFeigenbaum (8)

Data Segmenting in Anzo
Data Segmenting in AnzoData Segmenting in Anzo
Data Segmenting in Anzo
 
Intro to the Semantic Web Landscape - 2011
Intro to the Semantic Web Landscape - 2011Intro to the Semantic Web Landscape - 2011
Intro to the Semantic Web Landscape - 2011
 
Evolution Towards Web 3.0: The Semantic Web
Evolution Towards Web 3.0: The Semantic WebEvolution Towards Web 3.0: The Semantic Web
Evolution Towards Web 3.0: The Semantic Web
 
Taking the Tech out of SemTech
Taking the Tech out of SemTechTaking the Tech out of SemTech
Taking the Tech out of SemTech
 
CSHALS 2010 W3C Semanic Web Tutorial
CSHALS 2010 W3C Semanic Web TutorialCSHALS 2010 W3C Semanic Web Tutorial
CSHALS 2010 W3C Semanic Web Tutorial
 
What;s Coming In SPARQL2?
What;s Coming In SPARQL2?What;s Coming In SPARQL2?
What;s Coming In SPARQL2?
 
SPARQL 1.1 Status
SPARQL 1.1 StatusSPARQL 1.1 Status
SPARQL 1.1 Status
 
Semantic Web Landscape 2009
Semantic Web Landscape 2009Semantic Web Landscape 2009
Semantic Web Landscape 2009
 

Dernier

Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Angeliki Cooney
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdfSandro Moreira
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Zilliz
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityWSO2
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusZilliz
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...apidays
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Victor Rentea
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Orbitshub
 

Dernier (20)

Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 

SPARQL Cheat Sheet

  • 1. SPARQL By Example: The Cheat Sheet Accompanies slides at: http://www.cambridgesemantics.com/semantic-university/sparql-by-example Comments & questions to: Lee Feigenbaum <lee@cambridgesemantics.com> VP Marketing & Technology, Cambridge Semantics Co-chair, W3C SPARQL Working Group
  • 2. Conventions Red text means: “This is a core part of the SPARQL syntax or language.” Blue text means: “This is an example of query-specific text or values that might go into a SPARQL query.”
  • 3. Nuts & Bolts Write full URIs: <http://this.is.a/full/URI/written#out> Abbreviate URIs with prefixes: PREFIX foo: <http://this.is.a/URI/prefix#> … foo:bar …  http://this.is.a/URI/prefix#bar Shortcuts: a  rdf:type URIs Plain literals: “a plain literal” Plain literal with language tag: “bonjour”@fr Typed literal: “13”^^xsd:integer Shortcuts: true  “true”^^xsd:boolean 3  “3”^^xsd:integer 4.2  “4.2”^^xsd:decimal Literals Variables: ?var1, ?anotherVar, ?and_one_more Variables Comments: # Comments start with a „#‟ and # continue to the end of the line Comments Match an exact RDF triple: ex:myWidget ex:partNumber “XY24Z1” . Match one variable: ?person foaf:name “Lee Feigenbaum” . Match multiple variables: conf:SemTech2009 ?property ?value . Triple Patterns
  • 4. Common Prefixes More common prefixes at http://prefix.cc prefix... …stands for rdf: http://xmlns.com/foaf/0.1/ rdfs: http://www.w3.org/2000/01/rdf-schema# owl: http://www.w3.org/2002/07/owl# xsd: http://www.w3.org/2001/XMLSchema# dc: http://purl.org/dc/elements/1.1/ foaf: http://xmlns.com/foaf/0.1/
  • 5. Anatomy of a Query PREFIX foo: <…> PREFIX bar: <…> … SELECT … FROM <…> FROM NAMED <…> WHERE { … } GROUP BY … HAVING … ORDER BY … LIMIT … OFFSET … VALUES … Declare prefix shortcuts (optional) Query result clause Query pattern Query modifiers (optional) Define the dataset (optional)
  • 6. 4 Types of SPARQL Queries Project out specific variables and expressions: SELECT ?c ?cap (1000 * ?people AS ?pop) Project out all variables: SELECT * Project out distinct combinations only: SELECT DISTINCT ?country Results in a table of values (in XML or JSON): SELECT queries ?c ?cap ?pop ex:France ex:Paris 63,500,000 ex:Canada ex:Ottawa 32,900,000 ex:Italy ex:Rome 58,900,000 Construct RDF triples/graphs: CONSTRUCT { ?country a ex:HolidayDestination ; ex:arrive_at ?capital ; ex:population ?population . } Results in RDF triples (in any RDF serialization): ex:France a ex:HolidayDestination ; ex:arrive_at ex:Paris ; ex:population 635000000 . ex:Canada a ex:HolidayDestination ; ex:arrive_at ex:Ottawa ; ex:population 329000000 . CONSTRUCT queries Ask whether or not there are any matches: ASK Result is either “true” or “false” (in XML or JSON): true, false ASK queries Describe the resources matched by the given variables: DESCRIBE ?country Result is RDF triples (in any RDF serialization) : ex:France a geo:Country ; ex:continent geo:Europe ; ex:flag <http://…/flag-france.png> ; … DESCRIBE queries
  • 7. Combining SPARQL Graph Patterns Consider A and B as graph patterns. A Basic Graph Pattern – one or more triple patterns A . B  Conjunction. Join together the results of solving A and B by matching the values of any variables in common. Optional Graph Patterns A OPTIONAL { B }  Left join. Join together the results of solving A and B by matching the values of any variables in common, if possible. Keep all solutions from A whether or not there’s a matching solution in B
  • 8. Combining SPARQL Graph Patterns Consider A and B as graph patterns. Either-or Graph Patterns { A } UNION { B }  Disjunction. Include both the results of solving A and the results of solving B. “Subtracted” Graph Patterns (SPARQL 1.1) A MINUS { B }  Negation. Solve A. Solve B. Include only those results from solving A that are not compatible with any of the results from B.
  • 9. SPARQL Subqueries (SPARQL 1.1) Consider A and B as graph patterns. A . { SELECT … WHERE { B } } C .  Join the results of the subquery with the results of solving A and C.
  • 10. SPARQL Filters • SPARQL FILTERs eliminate solutions that do not cause an expression to evaluate to true. • Place FILTERs in a query inline within a basic graph pattern A . B . FILTER ( …expr… )
  • 11. Category Functions / Operators Examples Logical & Comparisons !, &&, ||, =, !=, <, <=, >, >=, IN, NOT IN ?hasPermit || ?age < 25 Conditionals (SPARQL 1.1) EXISTS, NOT EXISTS, IF, COALESCE NOT EXISTS { ?p foaf:mbox ?email } Math +, -, *, /, abs, round, ceil, floor, RAND ?decimal * 10 > ?minPercent Strings (SPARQL 1.1) STRLEN, SUBSTR, UCASE, LCASE, STRSTARTS, CONCAT, STRENDS, CONTAINS, STRBEFORE, STRAFTER STRLEN(?description) < 255 Date/time (SPARQL 1.1) now, year, month, day, hours, minutes, seconds, timezone, tz month(now()) < 4 SPARQL tests isURI, isBlank, isLiteral, isNumeric, bound isURI(?person) || !bound(?person) Constructors (SPARQL 1.1) URI, BNODE, STRDT, STRLANG, UUID, STRUUID STRLANG(?text, “en”) = “hello”@en Accessors str, lang, datatype lang(?title) = “en” Hashing (1.1) MD5, SHA1, SHA256, SHA512 BIND(SHA256(?email) AS ?hash) Miscellaneous sameTerm, langMatches, regex, REPLACE regex(?ssn, “d{3}-d{2}-d{4}”)
  • 12. Aggregates (SPARQL 1.1) 1. Partition results into groups based on the expression(s) in the GROUP BY clause 2. Evaluate projections and aggregate functions in SELECT clause to get one result per group 3. Filter aggregated results via the HAVING clause ?key ?val ?other1 1 4 … 1 4 … 2 5 … 2 4 … 2 10 … 2 2 … 2 1 … 3 3 … ?key ?sum_of_val 1 8 2 22 3 3 ?key ?sum_of_val 1 8 3 3 SPARQL 1.1 includes: COUNT, SUM, AVG, MIN, MAX, SAMPLE, GROUP_CONCAT
  • 13. Property Paths (SPARQL 1.1) • Property paths allow triple patterns to match arbitrary- length paths through a graph • Predicates are combined with regular-expression-like operators: Construct Meaning path1/path2 Forwards path (path1 followed by path2) ^path1 Backwards path (object to subject) path1|path2 Either path1 or path2 path1* path1, repeated zero or more times path1+ path1, repeated one or more times path1? path1, optionally !uri Any predicate except uri !^uri Any backwards (object to subject) predicate except uri
  • 14. RDF Datasets A SPARQL queries a default graph (normally) and zero or more named graphs (when inside a GRAPH clause). ex:g1 ex:g2 ex:g3 Default graph (the merge of zero or more graphs) Named graphs ex:g1 ex:g4 PREFIX ex: <…> SELECT … FROM ex:g1 FROM ex:g4 FROM NAMED ex:g1 FROM NAMED ex:g2 FROM NAMED ex:g3 WHERE { … A … GRAPH ex:g3 { … B … } GRAPH ?graph { … C … } } OR OR
  • 15. SPARQL Over HTTP (the SPARQL Protocol) http://host.domain.com/sparql/endpoint?<parameters> where <parameters> can include: query=<encoded query string> e.g. SELECT+*%0DWHERE+{… default-graph-uri=<encoded graph URI> e.g. http%3A%2F%2Fexmaple.com%2Ffoo… n.b. zero of more occurrences of default-graph-uri named-graph-uri=<encoded graph URI> e.g. http%3A%2F%2Fexmaple.com%2Fbar… n.b. zero of more occurrences of named-graph-uri HTTP GET or POST. Graphs given in the protocol override graphs given in the query.
  • 16. Federated Query (SPARQL 1.1) PREFIX ex: <…> SELECT … FROM ex:g1 WHERE { … A … SERVICE ex:s1 { … B … } SERVICE ex:s2 { … C … } } ex:g1 Web SPARQL Endpoint ex:s2 SPARQL Endpoint ex:s1 Local Graph Store
  • 17. SPARQL 1.1 Update SPARQL Update Language Statements INSERT DATA { triples } DELETE DATA {triples} [ DELETE { template } ] [ INSERT { template } ] WHERE { pattern } LOAD <uri> [ INTO GRAPH <uri> ] CLEAR GRAPH <uri> CREATE GRAPH <uri> DROP GRAPH <uri> [ … ] denotes optional parts of SPARQL 1.1 Update syntax
  • 18. Some Public SPARQL Endpoints Name URL What’s there? SPARQLer http://sparql.org/sparql.html General-purpose query endpoint for Web-accessible data DBPedia http://dbpedia.org/sparql Extensive RDF data from Wikipedia DBLP http://www4.wiwiss.fu-berlin.de/dblp/snorql/ Bibliographic data from computer science journals and conferences LinkedMDB http://data.linkedmdb.org/sparql Films, actors, directors, writers, producers, etc. World Factbook http://www4.wiwiss.fu- berlin.de/factbook/snorql/ Country statistics from the CIA World Factbook bio2rdf http://bio2rdf.org/sparql Bioinformatics data from around 40 public databases
  • 19. SPARQL Resources • SPARQL Specifications Overview – http://www.w3.org/TR/sparql11-overview/ • SPARQL implementations – http://esw.w3.org/topic/SparqlImplementations • SPARQL endpoints – http://esw.w3.org/topic/SparqlEndpoints • SPARQL Frequently Asked Questions – http://www.thefigtrees.net/lee/sw/sparql-faq • Common SPARQL extensions – http://esw.w3.org/topic/SPARQL/Extensions