SparqlVoorbeelden - rug-compling/noordergraf GitHub Wiki
Tekst met een taaltag:
SELECT ?a ?b (lang(?c) as ?lang) ?c {
?a ?b ?c .
FILTER ( langMatches(lang(?c), "*") )
}
Tel de taaltags:
SELECT ?lang (count(?lang) as ?count) {
SELECT (lang(?c) as ?lang) {
?a ?b ?c .
FILTER ( langMatches(lang(?c), "*") )
}
}
GROUP BY ?lang
ORDER BY ?lang
Query met afstanden zijn specifiek voor AllegroGraph.
Foto's genomen binnen 10 km van Emmen:
PREFIX : <https://noordergraf.rug.nl/ns#>
PREFIX nd: <http://franz.com/ns/allegrograph/5.0/geo/nd#>
PREFIX k: <http://franz.com/ns/keyword#>
select ?p {
?p a :Photo .
?i :photo ?p .
?i nd:inCircle (:nd
k:lat 52.7811 k:lon 6.8994
k:units k:km k:radius 10 ) .
}
Mensen geboren verder dan 400 km vanaf Emmen:
PREFIX : <https://noordergraf.rug.nl/ns#>
PREFIX nd: <http://franz.com/ns/allegrograph/5.0/geo/nd#>
PREFIX k: <http://franz.com/ns/keyword#>
SELECT ?person ?name {
?person :placeOfBirth / :place ?place .
?place :placeName ?name .
FILTER NOT EXISTS {
?place nd:inCircle (:nd
k:lat 52.7811 k:lon 6.8994
k:units k:km k:radius 400 ) .
}
}
Mensen overleden verder dan 400 km vanaf Emmen:
PREFIX : <https://noordergraf.rug.nl/ns#>
PREFIX nd: <http://franz.com/ns/allegrograph/5.0/geo/nd#>
PREFIX k: <http://franz.com/ns/keyword#>
select ?person ?name {
?person :placeOfDeath / :place ?place .
?place :placeName ?name .
FILTER NOT EXISTS {
?place nd:inCircle (:nd
k:lat 52.7811 k:lon 6.8994
k:units k:km k:radius 400 ) .
}
}
gotcha
:Cross
is een subclass van :Tomb
. Als je zoek met reasoning naar alle grafmonumenten, inclusief kruizen, dan doet dit niet wat je zou verwachten:
SELECT DISTINCT ?g {
GRAPH ?g {
?g a :Tomb .
}
}
Er is namelijk wel impliciet een ?g a :Cross
, maar die is niet deel van GRAPH ?g
. Dat impliciete tripel heeft geen graph.
Zo krijg je wel wat je wilt:
SELECT DISTINCT ?g {
GRAPH ?g {
?g a ?a .
}
?g a :Tomb .
}