305 lines
8.1 KiB
HTML
305 lines
8.1 KiB
HTML
<h2>Introduction</h2>
|
|
|
|
<p>The queries shown here can be found in the SPARQL specifications:
|
|
<a href="https://www.w3.org/TR/sparql11-query/">https://www.w3.org/TR/sparql11-query/</a></p>
|
|
|
|
<h2>query 2.1.6 Examples of Query Syntax</h2>
|
|
|
|
<pre><code>PREFIX dc: <http://purl.org/dc/elements/1.1/>
|
|
SELECT ?title
|
|
WHERE { <http://example.org/book/book1> dc:title ?title }
|
|
</code></pre>
|
|
|
|
<h2>query 2.1.6-q1 Examples of Query Syntax</h2>
|
|
|
|
<pre><code>PREFIX dc: <http://purl.org/dc/elements/1.1/>
|
|
PREFIX : <http://example.org/book/>
|
|
SELECT $title
|
|
WHERE { :book1 dc:title $title }
|
|
</code></pre>
|
|
|
|
<h2>query 2.1.6-q2 Examples of Query Syntax</h2>
|
|
|
|
<pre><code>BASE <http://example.org/book/>
|
|
PREFIX dc: <http://purl.org/dc/elements/1.1/>
|
|
SELECT $title
|
|
WHERE { <book1> dc:title ?title }
|
|
</code></pre>
|
|
|
|
<h2>query 2.5.3 Example of Basic Graph Pattern Matching</h2>
|
|
|
|
<pre><code>PREFIX foaf: <http://xmlns.com/foaf/0.1/>
|
|
SELECT ?mbox
|
|
WHERE
|
|
{ ?x foaf:name "Johnny Lee Outlaw" .
|
|
?x foaf:mbox ?mbox }
|
|
</code></pre>
|
|
|
|
<h2>query 3.1.1 Matching Integers</h2>
|
|
|
|
<pre><code>SELECT ?v WHERE { ?v ?p 42 }</code></pre>
|
|
|
|
<h2>query 3.1.2 Matching Arbitrary Datatypes</h2>
|
|
|
|
<pre><code>SELECT ?v WHERE { ?v ?p "abc"^^<http://example.org/datatype#specialDatatype> }</code></pre>
|
|
|
|
<h2>query 3.1.3-q1 Matching Language Tags</h2>
|
|
|
|
<pre><code>SELECT ?x WHERE { ?x ?p "cat"@en }</code></pre>
|
|
|
|
<h2>query 3.2 Value Constraints</h2>
|
|
|
|
<pre><code>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 . }
|
|
</code></pre>
|
|
|
|
<h2>query 5.5 Nested Optional Graph Patterns</h2>
|
|
|
|
<pre><code>PREFIX foaf: <http://xmlns.com/foaf/0.1/>
|
|
PREFIX vcard: <http://www.w3.org/2001/vcard-rdf/3.0#>
|
|
SELECT ?foafName ?mbox ?gname ?fname
|
|
WHERE
|
|
{ ?x foaf:name ?foafName .
|
|
OPTIONAL { ?x foaf:mbox ?mbox } .
|
|
OPTIONAL { ?x vcard:N ?vc .
|
|
?vc vcard:Given ?gname .
|
|
OPTIONAL { ?vc vcard:Family ?fname }
|
|
}
|
|
}
|
|
</code></pre>
|
|
|
|
<h2>query 6.1-q2 Joining Patterns with UNION</h2>
|
|
|
|
<pre><code>PREFIX dc10: <http://purl.org/dc/elements/1.1/>
|
|
PREFIX dc11: <http://purl.org/dc/elements/1.0/>
|
|
|
|
SELECT ?title ?author
|
|
WHERE { { ?book dc10:title ?title . ?book dc10:creator ?author }
|
|
UNION
|
|
{ ?book dc11:title ?title . ?book dc11:creator ?author }
|
|
}
|
|
|
|
</code></pre>
|
|
|
|
<h2>query 8.3 Restricting by Bound Variables</h2>
|
|
|
|
<pre><code>PREFIX data: <http://example.org/foaf/>
|
|
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
|
|
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
|
|
|
|
SELECT ?mbox ?nick ?ppd
|
|
WHERE
|
|
{
|
|
GRAPH data:aliceFoaf
|
|
{
|
|
?alice foaf:mbox <mailto:alice@work.example> ;
|
|
foaf:knows ?whom .
|
|
?whom foaf:mbox ?mbox ;
|
|
rdfs:seeAlso ?ppd .
|
|
?ppd a foaf:PersonalProfileDocument .
|
|
} .
|
|
GRAPH ?ppd
|
|
{
|
|
?w foaf:mbox ?mbox ;
|
|
foaf:nick ?nick
|
|
}
|
|
}
|
|
</code></pre>
|
|
|
|
<h2>query 9.3 Combining FROM and FROM NAMED</h2>
|
|
|
|
<pre><code>PREFIX foaf: <http://xmlns.com/foaf/0.1/>
|
|
PREFIX dc: <http://purl.org/dc/elements/1.1/>
|
|
|
|
SELECT ?who ?g ?mbox
|
|
FROM <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 }
|
|
}
|
|
</code></pre>
|
|
|
|
<h2>query 10.1.2 DISTINCT</h2>
|
|
|
|
<pre><code>
|
|
PREFIX foaf: <http://xmlns.com/foaf/0.1//>
|
|
SELECT DISTINCT ?name WHERE { ?x foaf:name ?name }
|
|
</code></pre>
|
|
|
|
<h2>query 10.1.3-q2 ORDER BY</h2>
|
|
|
|
<pre><code>PREFIX foaf: <http://xmlns.com/foaf/0.1/>
|
|
|
|
SELECT ?name
|
|
WHERE { ?x foaf:name ?name ; :empId ?emp }
|
|
ORDER BY ?name DESC(?emp)
|
|
</code></pre>
|
|
|
|
<h2>query 10.1.5 OFFSET</h2>
|
|
|
|
<pre><code>PREFIX foaf: <http://xmlns.com/foaf/0.1/>
|
|
|
|
SELECT ?name
|
|
WHERE { ?x foaf:name ?name }
|
|
ORDER BY ?name
|
|
LIMIT 5
|
|
OFFSET 10
|
|
</code></pre>
|
|
|
|
<h2>query 10.3.1 Templates with Blank Nodes</h2>
|
|
|
|
<pre><code>PREFIX foaf: <http://xmlns.com/foaf/0.1/>
|
|
PREFIX vcard: <http://www.w3.org/2001/vcard-rdf/3.0#>
|
|
|
|
CONSTRUCT { ?x vcard:N _:v .
|
|
_:v vcard:givenName ?gname .
|
|
_:v vcard:familyName ?fname }
|
|
WHERE
|
|
{
|
|
{ ?x foaf:firstname ?gname } UNION { ?x foaf:givenname ?gname } .
|
|
{ ?x foaf:surname ?fname } UNION { ?x foaf:family_name ?fname } .
|
|
}
|
|
</code></pre>
|
|
|
|
<h2>query 10.3.3 Solution Modifiers and CONSTRUCT</h2>
|
|
|
|
<pre><code>PREFIX foaf: <http://xmlns.com/foaf/0.1/>
|
|
PREFIX site: <http://example.org/stats#>
|
|
|
|
CONSTRUCT { [] foaf:name ?name }
|
|
WHERE
|
|
{ [] foaf:name ?name ;
|
|
site:hits ?hits .
|
|
}
|
|
ORDER BY desc(?hits)
|
|
LIMIT 2</code></pre>
|
|
|
|
<h2>query 10.4.3 Descriptions of Resources</h2>
|
|
|
|
<pre><code>PREFIX ent: <http://org.example.com/employees#>
|
|
DESCRIBE ?x WHERE { ?x ent:employeeId "1234" }
|
|
</code></pre>
|
|
|
|
<h2>query 10.5-q1 Asking "yes or no" questions</h2>
|
|
|
|
<pre><code>PREFIX foaf: <http://xmlns.com/foaf/0.1/>
|
|
ASK { ?x foaf:name "Alice" ;
|
|
foaf:mbox <mailto:alice@work.example> }
|
|
</code></pre>
|
|
|
|
<h2>query 11.4.1 bound</h2>
|
|
|
|
<pre><code>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#>
|
|
SELECT ?name
|
|
WHERE { ?x foaf:givenName ?givenName .
|
|
OPTIONAL { ?x dc:date ?date } .
|
|
FILTER ( bound(?date) ) }</code></pre>
|
|
|
|
<h2>query 11.4.3 isBlank</h2>
|
|
|
|
<pre><code>
|
|
PREFIX a: <http://www.w3.org/2000/10/annotation-ns#>
|
|
PREFIX dc: <http://purl.org/dc/elements/1.1/>
|
|
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
|
|
|
|
SELECT ?given ?family
|
|
WHERE { ?annot a:annotates <http://www.w3.org/TR/rdf-sparql-query/> .
|
|
?annot dc:creator ?c .
|
|
OPTIONAL { ?c foaf:given ?given ; foaf:family ?family } .
|
|
FILTER isBlank(?c)
|
|
}</code></pre>
|
|
|
|
<h2>query 11.4.5 str</h2>
|
|
|
|
<pre><code>
|
|
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
|
|
SELECT ?name ?mbox
|
|
WHERE { ?x foaf:name ?name ;
|
|
foaf:mbox ?mbox .
|
|
FILTER regex(str(?mbox), "@work.example") }
|
|
</code></pre>
|
|
|
|
<h2>query 11.4.7 datatype</h2>
|
|
|
|
<pre><code>
|
|
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
|
|
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
|
|
PREFIX eg: <http://biometrics.example/ns#>
|
|
SELECT ?name ?shoeSize
|
|
WHERE { ?x foaf:name ?name ; eg:shoeSize ?shoeSize .
|
|
FILTER ( datatype(?shoeSize) = xsd:integer ) }
|
|
</code></pre>
|
|
|
|
<h2>query 11.4.10-q1 RDFterm-equal</h2>
|
|
|
|
<pre><code>
|
|
PREFIX a: <http://www.w3.org/2000/10/annotation-ns#>
|
|
PREFIX dc: <http://purl.org/dc/elements/1.1/>
|
|
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
|
|
|
|
SELECT ?annotates
|
|
WHERE { ?annot a:annotates ?annotates .
|
|
?annot dc:date ?date .
|
|
FILTER ( ?date = xsd:dateTime("2004-01-01T00:00:00Z") || ?date = xsd:dateTime("2005-01-01T00:00:00Z") ) }
|
|
</code></pre>
|
|
|
|
<h2>query 11.6-q1 Extensible Value Testing</h2>
|
|
|
|
<pre><code>
|
|
PREFIX aGeo: <http://example.org/geo#>
|
|
|
|
SELECT ?neighbor
|
|
WHERE { ?a aGeo:placeName "Grenoble" .
|
|
?a aGeo:location ?axLoc .
|
|
?a aGeo:location ?ayLoc .
|
|
|
|
?b aGeo:placeName ?neighbor .
|
|
?b aGeo:location ?bxLoc .
|
|
?b aGeo:location ?byLoc .
|
|
|
|
FILTER ( aGeo:distance(?axLoc, ?ayLoc, ?bxLoc, ?byLoc) < 10 ) .
|
|
}
|
|
</code></pre>
|
|
|
|
<p>The final example query is not based on the SPARQL 1.1 queries.</p>
|
|
|
|
<h2>Full Example query</h2>
|
|
|
|
<pre><code>
|
|
base <http://example.org/geo#>
|
|
prefix geo: <http://www.opengis.net/ont/geosparql#>
|
|
prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
|
|
select ?shape ?shapeColor ?shapeHeight ?shapeName (sample(?shapeLabel) as ?shapeLabel) {
|
|
{
|
|
select * {
|
|
values (?placeName ?streetName) {
|
|
"Grenoble" "Paul Mistral"
|
|
}
|
|
?place geo:NamePlace ?placeName.
|
|
?pand geo:hasGeometry/geo:asWKT ?shape;
|
|
}
|
|
|
|
}
|
|
?pand geo:measuredHeight ?shapeHeight.
|
|
# Only retrieve buildings larger then 10 meters.
|
|
FILTER ( ?shapeHeight < 10 ) .
|
|
BIND(IF(!bound(?EindGeldigheid5), "#22b14c", "#ed1c24" ) AS?tColor)
|
|
# tekst label
|
|
bind(concat(str(?streetName),' ',str(?houseNumber),', ',str(?PlaceName)) as ?shapeName)
|
|
bind("""Multi-line
|
|
String Element
|
|
""" as ?shapeLabel)
|
|
}
|
|
group by ?shape ?shapeColor ?shapeHeight ?shapeName
|
|
limit 10
|
|
</code></pre>
|