DATAtourisme

Aide pour une query de flux


#1

Bonjour,

Je cherche a produire un flux de tous les types (places, events, tours…) avec un nombre de données limitées (disons 50), comme les flux partiels créés lors de la 1 ere création du flux.

Est-ce que quelqu’un pourrait m’indiquer la request SPARQL pour ca, svp?

Suggestion: Il serait bon d’avoir accès a l’url du fichier partiel autrement que par l’appui d’un bouton pour pouvoir utiliser le fichier partiel dans nos test workflows par programme.

Merci d’avance.


#2

Bonjour,

Le principe est de faire une sous requête de sélection avec une limite et un offset qui retourne uniquement les URI (Identifiant unique) des POI.
Puis de compléter la requête avec les propriétés désirées des POI.

Voici pour exemple la requête qui est exécutée dans l’éditeur visuel de requête et qui retourne 10 POI piochés dans les 4 grandes familles/types de POI .

CONSTRUCT {
    ?res a <urn:resource>.
    ?res ?p0 ?o0.
    ?5aae2205 ?p1 ?o1.
    ?91e6183f ?p2 ?o2.
    ?bc1a96ce ?p3 ?o3.
    ?d2fd9c28 ?p4 ?o4.
    ?a95e530d ?p5 ?o5.
    ?fe4882b4 ?p6 ?o6.
    ?bf002708 ?p5 ?o5.
    ?8e518bc9 ?p4 ?o4
}
WHERE {
    <http://www.bigdata.com/queryHints#Query> <http://www.bigdata.com/queryHints#optimizer> "Runtime".
    { ## ici commence la sous requête de sélection
        SELECT DISTINCT ?res
        WHERE {
            <http://www.bigdata.com/queryHints#Query> <http://www.bigdata.com/queryHints#optimizer> "Runtime".
            ?res a <https://www.datatourisme.gouv.fr/ontology/core#PointOfInterest>.
            ?res <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?5cb98129cf32a.
            FILTER(?5cb98129cf32a IN (<https://www.datatourisme.gouv.fr/ontology/core#PlaceOfInterest>,
                                      <https://www.datatourisme.gouv.fr/ontology/core#EntertainmentAndEvent>,
                                      <https://www.datatourisme.gouv.fr/ontology/core#Tour>,
                                      <https://www.datatourisme.gouv.fr/ontology/core#Product>))
        }
        ORDER BY ?res
        LIMIT 10 ## Voici la limite du nbr de POI à retourner
        OFFSET 0 ## et son offset
    }.
    {?res ?p0 ?o0} ## Selection des propriétés du "premier étage" des POI
    UNION 
    {?res <http://www.w3.org/2000/01/rdf-schema#label> ?5aae2205. ?5aae2205 ?p1 ?o1} ## recupérer toutes les langues de la proriété label
    UNION 
    {?res <http://www.w3.org/2000/01/rdf-schema#comment> ?91e6183f. ?91e6183f ?p2 ?o2} ## la même pour les commentaires
    UNION 
    {
        ?res <https://www.datatourisme.gouv.fr/ontology/core#isLocatedAt> ?bc1a96ce.
        {?bc1a96ce ?p3 ?o3} 
        UNION 
        {
            ?bc1a96ce <http://schema.org/address> ?d2fd9c28.
            {?d2fd9c28 ?p4 ?o4}
            UNION
            {
                ?d2fd9c28 <https://www.datatourisme.gouv.fr/ontology/core#hasAddressCity> ?a95e530d.
                {?a95e530d ?p5 ?o5}
                UNION
                {?a95e530d <http://www.w3.org/2000/01/rdf-schema#label> ?fe4882b4. ?fe4882b4 ?p6 ?o6}
            }
        } 
        UNION 
        {?bc1a96ce <http://schema.org/geo> ?bf002708. ?bf002708 ?p5 ?o5}
    } 
    UNION {?res <https://www.datatourisme.gouv.fr/ontology/core#takesPlaceAt> ?8e518bc9. ?8e518bc9 ?p4 ?o4}
}
ORDER BY ?res
OFFSET 0

C’est le même principe qui est appliqué sur la génération du flux partiel.
Ce flux partiel n’a pas vocation à être utilisé en direct à travers une API.
Si vous voulez “faire des tests automatisés” je vous invite à télécharger un dump complet et le charger dans votre Blazegraph (ou autre triple store) et l’interroger à travers l’API GraphQL ou en direct.

Pourquoi en direct ? Car l’écosystème du Linked Open Data est fondamentalement construit avec les outils du Web, il est donc “naturel” d’interroger votre base de donnée avec des requêtes HTTP.
Pour le triple store Blazegraph la documentation se trouve ici -> https://wiki.blazegraph.com/wiki/index.php/REST_API

Vous n’aurez ainsi aucune limitation sur vos tests.

Cordialement.