DATAtourisme

DataTourisme et Javascript

Bonjour,

je travaille sur les données de DataTourisme.
Je ne connais pas PHP (je suis plutôt Javascript) et je ne peux donc pas utiliser l’API GraphQL.
En SPARQL mes objets (comme dans ?sujet ?predicate ?objet) sont souvent des uri qui me renvoient à d’autres triplets qui eux-même me renvoient à d’autres triplets etc, souvent jusqu’à 5 ou 6 niveaux avant de enfin trouver une donnée. Je dois donc créer des requêtes en cascade. Exemple pour récupérer les données d’un POI :

PREFIX ...
SELECT ?p1 ?value1 ?p2 ?value2 ?p3 ?value3 ?p4 ?value4 ?p5 ?value5
WHERE{
    <https://data.datatourisme.gouv.fr/10/000283ba-f94b-3bce-8f57-e5c10bec6cd4> ?p1 ?value1 .
    OPTIONAL {?value1 ?p2 ?value2. 
       OPTIONAL {?value2 ?p3 ?value3. 
        	OPTIONAL {?value3 ?p4 ?value4. 
            	OPTIONAL {?value4 ?p5 ?value5.
                    OPTIONAL {?value5 ?p6 ?value6. }
                }
            }
        }
    }
} 
ORDER BY ?p1 ?value1 ?p2 ?value2 ?p3 ?value3 ?p4 ?value4 ?p5 ?value5

Même en filtrant comme je peux à chaque niveau je récupère environ 150 triplets par POI, dont environ 120 inutiles. Et si je remplace l’identifiant d’un POI comme dans l’exemple par une sélection sur une région par exemple je vais récupérer plusieurs milliers de triplets à traiter.

1ème question : Je ne suis pas expert en SPARQL (euphémisme), est-ce que ma requête est bonne ?

2ème question : Est-il de fait obligatoire d’utiliser la base de DataTourisme avec GraphQL, donc PHP ? Dans ce cas je pense monter un serveur Javascript qui enverrait ses syntaxes GraphQL à un serveur PHP, celui du Docker par exemple, pour qu’il les exécute et lui renvoie les données qui seraient alors traitées en Javascript. Je délire ?

Merci de vos réponses

Bonjour,

Votre requête semble bonne mais loin d’être optimisée, ce qui nécessite de se pencher un peu plus sur SPARQL et ses mécanismes.

Concernant votre 2ème question, vous avez parfaitement raison ! pas besoin de connaître le PHP pour utiliser l’API : le docker stack (https://framagit.org/datatourisme/docker-stack) met à disposition un point d’accès HTTP GraphQL qui peut être utilisé par n’importe quel langage, dont Javascript et la célèbre librairie Apollo.

Cordialement.

Bonjour,

merci pour votre réponse, des informaitons imtéressantes, dont l’existence des librairies Apollo. J’avais fait des recherches assez génériques sur « Javascript GraphQL » mais ça n’était pas sorti.
Au final voilà ce que je vais faire : Docker me va bien mais j’ai quand même peur des boites noires qu’on met dedans. Si il y a un problème sur Blazegraph (pas de commit depuis 2 ans …) ou une bricole à changer sur l’appel en PHP de l’API je suis coincé avec une couche logique rédigée en GraphQL dont je ne sais plus quoi faire. D’autre part je vais avoir besoin de SPARQL pour interroger Wikidata dans des requêtes communes.
Et enfin j’ai une règle dans mes architectures (et aussi dans ma vie mais c’est un autre sujet) : « Moins c’est mieux ».
Je vais donc en rester à une solution simple et que je connais : GraphDb qui a un quasi-IDE d’exploration et visualisation des données RDF + SPARQL + client/serveur en Javascript.
Un détail : Les coordonnées géo de la base DataTourisme sont xsd:Decimal et http://www.bigdata.com/rdf/geospatial/literals/v1#lat-lon. Le standard aujourd’hui semble être plutôt http://www.w3.org/2003/01/geo/wgs84_pos#. Pas vraiment gênant, il suffit de lancer une requête (en SPARQL donc) de création de nouveaux triplets à partir de ceux existants.
Un dernier mot : Vous dites que ma requête est à optimiser, ce que je veux bien croire. Quelques pistes à explorer ?