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 .
}