sparql中的偏移

时间:2019-03-13 16:31:02

标签: sparql

我请求记录数量;该请求返回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条记录。 非常感谢您的回复。我感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

请注意,您的第一个查询使用了无效的SPARQL语法。您只会得到一个结果,因为您正在查询的引擎(如果您正在查询DBpedia,它的出现就是Virtuoso)非常宽容了许多错误。正确而完整的语法应为-

PREFIX dbo: <http://dbpedia.org/ontology/>
SELECT ( COUNT ( DISTINCT ?url ) AS ?HowManyFilms )
  WHERE {
  ?url a dbo:Film .
  } 

第二个查询要知道的事情-

  1. OFFSET的意思是“从总结果集中跳过这么多行”
  2. LIMIT的意思是“只给我这么多行(从任何OFFSET之后开始)”
  3. 行可以以任何顺序交付,并且如果您不包括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

我将中介查询留给您...