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
为什么答案会出入完全不同的地步?
我不知道你所说的 "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
我正在尝试 运行 以下 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
为什么答案会出入完全不同的地步?
我不知道你所说的 "different" 是什么意思,但是如果没有 ORDER BY
,结果将或多或少地随机地 returned,只是受底层系统的影响。甚至不能保证 运行 在同一台服务器上两次相同的查询将 return 结果以相同的顺序排列。由于 LIMIT 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