使用COUNT和ORDER的SPARQL查询返回奇数结果

Joh*_*rae 5 rdf semantic-web sparql

以下查询计算商店中的所有三元组

SELECT count(*) where { ?s ?p <http://dbpedia.org/resource/Cat> }
Run Code Online (Sandbox Code Playgroud)

并返回预期的结果

http://dbpedia.org/sparql?default-graph-uri=http://dbpedia.org&query=select+count(*)+{+%3Fs+%3Fp+%3Chttp://dbpedia.org/resource/Cat% 3E +} +&调试= ON&超时=&格式= text/html的&保存=显示&FNAME =

但是,当我第一次尝试它时,我不小心留下了ORDER BY语句,例如,

select count(*) { ?s ?p <http://dbpedia.org/resource/Cat> } order by ?s
Run Code Online (Sandbox Code Playgroud)

然后我得到一个很长的结果列表

http://dbpedia.org/sparql?default-graph-uri=http://dbpedia.org&query=select+count(*)+{+%3Fs+%3Fp+%3Chttp://dbpedia.org/resource/Cat% 3E +} +顺序通过+ +%3FS&调试= ON&超时=&格式= text/html的&保存=显示&FNAME =

任何人都可以解释为什么会出现这种结果及其含义?它可能是Virtuoso SPARQL实现的错误吗?

Man*_*res 6

如果你在不同的商店运行相同类型的查询,例如http://api.talis.com/stores/bbc-backstage/services/sparql(不运行virtuoso),它看起来就像一个bug

第一个查询有效......

SELECT (count(?s) as ?c)
WHERE {
?s ?p <http://purl.org/ontology/po/Version> .
}
Run Code Online (Sandbox Code Playgroud)

第二个......

SELECT (count(?s) as ?c)
WHERE {
?s ?p <http://purl.org/ontology/po/Version> .
} order by ?s
Run Code Online (Sandbox Code Playgroud)

...给出相同的结果.

实际上,计数+排序在这里没有多大意义,因为?s没有选择要检索.但正如你所说,你不小心尝试了......它确实看起来像一个bug.

我的建议是向virtuoso-user邮件列表发送一封电子邮件,以通知此问题.