Hoe stel ik een GeoSPARQL vraag?

De data in de SPARQL endpoint bevat WKT beschrijvingen van geo objecten. Is het mogelijk om in de query GeoSPARQL functies te gebruiken.

Voorbeeld van een query met GeoSPARQL:

PREFIX bif: <http://www.openlinksw.com/schemas/bif#>
PREFIX geo: <http://www.opengis.net/ont/geosparql#>
SELECT ?s ?o {
  ?s geo:asWKT ?x .
  ?s geo:asWKT ?y
  Filter(bif:st_intersects (?x, ?y, 0.1))
}
LIMIT 5

Hi,

GeoSPARQL wordt momenteel helaas niet ondersteund. Via de API kun je wel geografische calls doen.

Groet, Dimitri

Probeer deze maar eens…

PREFIX geo: http://www.opengis.net/ont/geosparql#
PREFIX ogcf: http://www.opengis.net/def/function/geosparql/
SELECT ?s ?o {
?s geo:asWKT ?x .
?s geo:asWKT ?y
Filter(ogcf:sfIntersects (?x, ?y))
}
LIMIT 5

Groet,
Erik

GeoSPARQL is wel mogelijk op onze huidige SPARQL endpoints, maar zonder geo index (want die staat uit). Dit betekent dat eerst alle mogelijke antwoorden worden opgesomd en dat voor ieder antwoord wordt gecontroleerd of de geo filter wel/niet van toepassing is. In de praktijk betekent dit dat je in heel veel gevallen geen GeoSPARQL vraag kunt stellen, omdat het niet mogelijk is om alle antwoorden op te sommen. We hebben de geo index in het verleden wel eens aangezet, maar dit zorgde niet voor veel betere performance (zie de 2 uur durende query uit de screenshot).

To clarify this issue a bit: my original query is trivially satisfied by a shape intersecting with itself. Here are some other simple GeoSPARQL that are not trivial:

PREFIX geo: <http://www.opengis.net/ont/geosparql#>
PREFIX ogcf: <http://www.opengis.net/def/function/geosparql/>
SELECT ?feature1 ?feature2 {
  ?feature1 geo:hasGeometry/geo:asWKT ?wkt1 .
  ?feature2 geo:hasGeometry/geo:asWKT ?wkt2
  Filter(?wkt1 != ?wkt2 && ogcf:sfIntersects (?wkt1, ?wkt2))
}
LIMIT 5