prism/examples/prism-sparql.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: &lt;http://purl.org/dc/elements/1.1/&gt;
SELECT ?title
WHERE { &lt;http://example.org/book/book1&gt; dc:title ?title }
</code></pre>
<h2>query 2.1.6-q1 Examples of Query Syntax</h2>
<pre><code>PREFIX dc: &lt;http://purl.org/dc/elements/1.1/&gt;
PREFIX : &lt;http://example.org/book/&gt;
SELECT $title
WHERE { :book1 dc:title $title }
</code></pre>
<h2>query 2.1.6-q2 Examples of Query Syntax</h2>
<pre><code>BASE &lt;http://example.org/book/&gt;
PREFIX dc: &lt;http://purl.org/dc/elements/1.1/&gt;
SELECT $title
WHERE { &lt;book1&gt; dc:title ?title }
</code></pre>
<h2>query 2.5.3 Example of Basic Graph Pattern Matching</h2>
<pre><code>PREFIX foaf: &lt;http://xmlns.com/foaf/0.1/&gt;
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"^^&lt;http://example.org/datatype#specialDatatype&gt; }</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: &lt;http://purl.org/dc/elements/1.1/&gt;
PREFIX ns: &lt;http://example.org/ns#&gt;
SELECT ?title ?price
WHERE { ?x ns:price ?price .
FILTER (?price &lt; 30) .
?x dc:title ?title . }
</code></pre>
<h2>query 5.5 Nested Optional Graph Patterns</h2>
<pre><code>PREFIX foaf: &lt;http://xmlns.com/foaf/0.1/&gt;
PREFIX vcard: &lt;http://www.w3.org/2001/vcard-rdf/3.0#&gt;
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: &lt;http://purl.org/dc/elements/1.1/&gt;
PREFIX dc11: &lt;http://purl.org/dc/elements/1.0/&gt;
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: &lt;http://example.org/foaf/&gt;
PREFIX foaf: &lt;http://xmlns.com/foaf/0.1/&gt;
PREFIX rdfs: &lt;http://www.w3.org/2000/01/rdf-schema#&gt;
SELECT ?mbox ?nick ?ppd
WHERE
{
GRAPH data:aliceFoaf
{
?alice foaf:mbox &lt;mailto:alice@work.example&gt; ;
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: &lt;http://xmlns.com/foaf/0.1/&gt;
PREFIX dc: &lt;http://purl.org/dc/elements/1.1/&gt;
SELECT ?who ?g ?mbox
FROM &lt;http://example.org/dft.ttl&gt;
FROM NAMED &lt;http://example.org/alice&gt;
FROM NAMED &lt;http://example.org/bob&gt;
WHERE
{
?g dc:publisher ?who .
GRAPH ?g { ?x foaf:mbox ?mbox }
}
</code></pre>
<h2>query 10.1.2 DISTINCT</h2>
<pre><code>
PREFIX foaf: &lt;http://xmlns.com/foaf/0.1//&gt;
SELECT DISTINCT ?name WHERE { ?x foaf:name ?name }
</code></pre>
<h2>query 10.1.3-q2 ORDER BY</h2>
<pre><code>PREFIX foaf: &lt;http://xmlns.com/foaf/0.1/&gt;
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: &lt;http://xmlns.com/foaf/0.1/&gt;
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: &lt;http://xmlns.com/foaf/0.1/&gt;
PREFIX vcard: &lt;http://www.w3.org/2001/vcard-rdf/3.0#&gt;
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: &lt;http://xmlns.com/foaf/0.1/&gt;
PREFIX site: &lt;http://example.org/stats#&gt;
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: &lt;http://org.example.com/employees#&gt;
DESCRIBE ?x WHERE { ?x ent:employeeId "1234" }
</code></pre>
<h2>query 10.5-q1 Asking "yes or no" questions</h2>
<pre><code>PREFIX foaf: &lt;http://xmlns.com/foaf/0.1/&gt;
ASK { ?x foaf:name "Alice" ;
foaf:mbox &lt;mailto:alice@work.example&gt; }
</code></pre>
<h2>query 11.4.1 bound</h2>
<pre><code>PREFIX foaf: &lt;http://xmlns.com/foaf/0.1/&gt;
PREFIX dc: &lt;http://purl.org/dc/elements/1.1/&gt;
PREFIX xsd: &lt;http://www.w3.org/2001/XMLSchema#&gt;
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: &lt;http://www.w3.org/2000/10/annotation-ns#&gt;
PREFIX dc: &lt;http://purl.org/dc/elements/1.1/&gt;
PREFIX foaf: &lt;http://xmlns.com/foaf/0.1/&gt;
SELECT ?given ?family
WHERE { ?annot a:annotates &lt;http://www.w3.org/TR/rdf-sparql-query/&gt; .
?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: &lt;http://xmlns.com/foaf/0.1/&gt;
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: &lt;http://xmlns.com/foaf/0.1/&gt;
PREFIX xsd: &lt;http://www.w3.org/2001/XMLSchema#&gt;
PREFIX eg: &lt;http://biometrics.example/ns#&gt;
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: &lt;http://www.w3.org/2000/10/annotation-ns#&gt;
PREFIX dc: &lt;http://purl.org/dc/elements/1.1/&gt;
PREFIX xsd: &lt;http://www.w3.org/2001/XMLSchema#&gt;
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: &lt;http://example.org/geo#&gt;
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) &lt; 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 &lt;http://example.org/geo#&gt;
prefix geo: &lt;http://www.opengis.net/ont/geosparql#&gt;
prefix rdfs: &lt;http://www.w3.org/2000/01/rdf-schema#&gt;
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 &lt; 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>