Bonjour,
Après plusieurs tentatives infructueuses via GraphDB, pouvez vous m’aider sur l’élaboration d’une requête SPARQL qui récupérerait l’ensemble des POI à moins de 30km de plusieurs points centraux ?
Cette reqûete doit retourner l’ensemble des POI à moins de 30km du point central A ainsi que ceux à moins de 30km du point B, ect… en excluant les POI en doublons
Cette requête m’aidera à générer un flux sur dataTourisme que je traiterais ensuite via un ETL.
Merci d’avance pour votre réponse
Bonjour,
Est-ce que quelqu’un avec de l’exprience en SPARQL aurait une idée svp ou citer un endroit où je pourrais approndir mes recherches pour arriver à une solution ?
L’éditeur de requête visuel permet de faire une recherche par rayon :
CONSTRUCT {
?res <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <urn:resource>.
} WHERE {
<http://www.bigdata.com/queryHints#Query> <http://www.bigdata.com/queryHints#optimizer> "None".
?res <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <https://www.datatourisme.fr/ontology/core#PointOfInterest>.
?res <https://www.datatourisme.fr/ontology/core#isLocatedAt> ?654389455e045.
?654389455e045 <http://schema.org/geo> ?654389455e0c6.
{
SERVICE <http://www.bigdata.com/rdf/geospatial#search> {
?654389455e0c6 <http://www.bigdata.com/rdf/geospatial#search> "inCircle".
?654389455e0c6 <http://www.bigdata.com/rdf/geospatial#predicate> <https://www.datatourisme.fr/ontology/core#latlon>.
?654389455e0c6 <http://www.bigdata.com/rdf/geospatial#searchDatatype> <http://www.bigdata.com/rdf/geospatial/literals/v1#lat-lon>.
?654389455e0c6 <http://www.bigdata.com/rdf/geospatial#spatialCircleCenter> "48.112765203533#-1.67429".
?654389455e0c6 <http://www.bigdata.com/rdf/geospatial#spatialCircleRadius> "30".
}
<http://www.bigdata.com/queryHints#SubQuery> <http://www.bigdata.com/queryHints#optimizer> "Static".
}
}
Vous pouvez faire un UNION pour ajouter d’autre localisation, même si nous vous suggérons plutôt de faire des flux différents :
CONSTRUCT {
?res <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <urn:resource>.
} WHERE {
<http://www.bigdata.com/queryHints#Query> <http://www.bigdata.com/queryHints#optimizer> "None".
{
?res <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <https://www.datatourisme.fr/ontology/core#PointOfInterest>.
?res <https://www.datatourisme.fr/ontology/core#isLocatedAt> ?654389455e045.
?654389455e045 <http://schema.org/geo> ?654389455e0c6.
{
SERVICE <http://www.bigdata.com/rdf/geospatial#search> {
?654389455e0c6 <http://www.bigdata.com/rdf/geospatial#search> "inCircle".
?654389455e0c6 <http://www.bigdata.com/rdf/geospatial#predicate> <https://www.datatourisme.fr/ontology/core#latlon>.
?654389455e0c6 <http://www.bigdata.com/rdf/geospatial#searchDatatype> <http://www.bigdata.com/rdf/geospatial/literals/v1#lat-lon>.
?654389455e0c6 <http://www.bigdata.com/rdf/geospatial#spatialCircleCenter> "43.529742#5.447427".
?654389455e0c6 <http://www.bigdata.com/rdf/geospatial#spatialCircleRadius> "30".
}
<http://www.bigdata.com/queryHints#SubQuery> <http://www.bigdata.com/queryHints#optimizer> "Static".
}
}
UNION
{
?res <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <https://www.datatourisme.fr/ontology/core#PointOfInterest>.
?res <https://www.datatourisme.fr/ontology/core#isLocatedAt> ?654389455e045.
?654389455e045 <http://schema.org/geo> ?654389455e0c6.
{
SERVICE <http://www.bigdata.com/rdf/geospatial#search> {
?654389455e0c6 <http://www.bigdata.com/rdf/geospatial#search> "inCircle".
?654389455e0c6 <http://www.bigdata.com/rdf/geospatial#predicate> <https://www.datatourisme.fr/ontology/core#latlon>.
?654389455e0c6 <http://www.bigdata.com/rdf/geospatial#searchDatatype> <http://www.bigdata.com/rdf/geospatial/literals/v1#lat-lon>.
?654389455e0c6 <http://www.bigdata.com/rdf/geospatial#spatialCircleCenter> "48.112765203533#-1.67429".
?654389455e0c6 <http://www.bigdata.com/rdf/geospatial#spatialCircleRadius> "30".
}
<http://www.bigdata.com/queryHints#SubQuery> <http://www.bigdata.com/queryHints#optimizer> "Static".
}
}
}
Cordialement
1 « J'aime »