我请求记录数量;该请求返回129980条记录
SELECT count distinct ?url
WHERE {
?url a dbo:Film.
}
因为每次SPARQL仅返回10000条记录;所以我必须使用“偏移”。
SELECT distinct ?url
WHERE {
?url a dbo:Film.
}limit 10000 offset 1000
问题:如果我想获取所有记录,则需要将offset设置为12;但是为什么当我将offset设置为1000时,我仍然得到1000条记录。 非常感谢您的回复。我感谢您的帮助。
答案 0 :(得分:0)
请注意,您的第一个查询使用了无效的SPARQL语法。您只会得到一个结果,因为您正在查询的引擎(如果您正在查询DBpedia,它的出现就是Virtuoso)非常宽容了许多错误。正确而完整的语法应为-
PREFIX dbo: <http://dbpedia.org/ontology/>
SELECT ( COUNT ( DISTINCT ?url ) AS ?HowManyFilms )
WHERE {
?url a dbo:Film .
}
第二个查询要知道的事情-
OFFSET
的意思是“从总结果集中跳过这么多行” LIMIT
的意思是“只给我这么多行(从任何OFFSET
之后开始)” ORDER BY
,则该顺序可能因查询而异。这可能意味着在合并所有部分结果集时,具有不同OFFSET
的多个查询可能无法获得所有行,并且可能会传递重复的行。因此,在您每次使用OFFSET
和/或LIMIT
时,最好也使用ORDER BY
。一起,将其添加到第一个查询中以获取前10,000行-
ORDER BY ?url LIMIT 10000 OFFSET 0
-得到最后的9,980行-
ORDER BY ?url LIMIT 10000 OFFSET 120000
我将中介查询留给您...