SPARQL 查询在不同的服务器上给出不同的答案

SPARQL queries gives different answers on different servers

我正在尝试 运行 以下 sparql 查询:

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

当我在 dbpedia 的 public 服务器上 运行 时,我得到以下结果: 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

但是,运行在本地托管的 dbpedia 实例上执行相同的查询会产生: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

为什么答案会出入完全不同的地步?

我不知道你所说的 "different" 是什么意思,但是如果没有 ORDER BY,结果将或多或少地随机地 returned,只是受底层系统的影响。甚至不能保证 运行 在同一台服务器上两次相同的查询将 return 结果以相同的顺序排列。由于 LIMIT 100

,您的查询 return 只有 100

两个查询的结果总数相同,271:

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

为了比较,你必须使用ORDER BY:

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