2017-04-23 3 views
0

Je suis en train d'exécuter la requête SPARQL suivante:requêtes SPARQL donne des réponses différentes sur des serveurs différents

PREFIX dct: <http://purl.org/dc/terms/> 
select distinct ?subject 
where 
{ 
    ?concept rdfs:label 'Artificial intelligence'@en . 
    ?concept ^dct:subject ?subject . 
} 
LIMIT 100 

Quand je lance ce sur le serveur public dbpedia, je reçois les résultats suivants: http://dbpedia.org/sparql?default-graph-uri=&query=PREFIX++dct%3A++%3Chttp%3A%2F%2Fpurl.org%2Fdc%2Fterms%2F%3E+select+distinct+%3Fsubject+where+%7B+%3Fconcept+rdfs%3Alabel+%27Artificial+intelligence%27%40en+.+%3Fconcept+%5Edct%3Asubject+%3Fsubject+.+%7D++LIMIT+100&format=text%2Fhtml&CXML_redir_for_subjs=121&CXML_redir_for_hrefs=&timeout=30000&debug=on

Cependant , en cours d'exécution de la même requête sur une instance hébergée localement DBpedia, les rendements: http://34.195.108.80:8891/sparql?default-graph-uri=&query=PREFIX++dct%3A++%3Chttp%3A%2F%2Fpurl.org%2Fdc%2Fterms%2F%3E+select+distinct+%3Fsubject+where+%7B+%3Fconcept+rdfs%3Alabel+%27Artificial+intelligence%27%40en+.+%3Fconcept+%5Edct%3Asubject+%3Fsubject+.+%7D++LIMIT+100&format=text%2Fhtml&CXML_redir_for_subjs=121&CXML_redir_for_hrefs=&timeout=30000&debug=on

Pourquoi est-il une différence dans les réponses au point où il est tout à fait différent?

Répondre

2

Je ne sais pas ce que vous entendez par "différent", mais sans ORDER BY les résultats seront retournés plus ou moins au hasard simplement influencé par le système sous-jacent. Il n'y a même aucune garantie que l'exécution de la même requête deux fois sur le même serveur renvoie les résultats dans le même ordre. Votre requête ne retourne que 100 en raison de la LIMIT 100

Le nombre total de résultats est le même pour les deux requêtes, 271:

PREFIX dct: <http://purl.org/dc/terms/> 
SELECT count(distinct ?subject) WHERE { 
    ?concept rdfs:label 'Artificial intelligence'@en ; 
    ?  ^dct:subject ?subject . 
} 

A titre de comparaison, vous devez utiliser ORDER BY:

PREFIX dct: <http://purl.org/dc/terms/> 
SELECT ?subject WHERE { 
?concept rdfs:label 'Artificial intelligence'@en ; 
     ^dct:subject ?subject . 
} 
ORDER BY ?subject 
+0

Salut, Si vous regardez les résultats, les résultats sur http://dbpedia.org/sparql ont une entrée appelée Darkforest. Cependant, les résultats sur http://34.195.108.80:8891/sparql n'ont pas cela. Par conséquent, les résultats ne sont pas les mêmes. –

+0

Ehm, avez-vous lu ma réponse ?! J'ai dit que vous utilisez LMIT 100 qui ne renvoie que 100 résultats ** ** ** aléatoires qui correspondent à la requête. Le nombre total est de 271 que vous pouvez vérifier avec ma première requête. Qu'est-ce que ça veut dire? Utilisez un 'LIMIT n' avec' n> = 271' ou omettez la LIMIT du tout. – AKSW

+0

Merci beaucoup.! :) –