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 → Main_Page · blazegraph/database Wiki · GitHub
Vous n’aurez ainsi aucune limitation sur vos tests.
Cordialement.