sparql 中的偏移量

OFFSET in sparql

我有一个请求计算记录的数量;请求 returns 129980 条记录

SELECT count distinct ?url
  WHERE {
  ?url a dbo:Film.
  } 

因为每次SPARQL returns只有10000条记录;所以我必须使用"offset"。

SELECT distinct ?url
  WHERE {
  ?url a dbo:Film.
  }limit 10000 offset 1000

问题:如果要取所有记录,需要设置offset =12;但是为什么当我设置 offset = 1000 时我仍然有 1000 条记录。 非常感谢您的回复。我感谢您的帮助。

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

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

第二个查询须知 --

  1. OFFSET表示"skip this many rows from the total result set"
  2. LIMIT表示"only give me this many rows (starting after any OFFSET)"
  3. 行可以按任何顺序传送,如果您不包含 ORDER BY,则此顺序可能会因查询而异。这可能意味着当所有部分结果集组合在一起时,具有不同 OFFSET 的多个查询可能无法获取所有行,并且可能会提供重复的行。所以——任何时候你使用 OFFSET and/or LIMIT,最好的做法是同时使用 ORDER BY.

总而言之,将此添加到第一个查询以获得前 10,000 行--

ORDER BY ?url LIMIT 10000 OFFSET 0

-- 这将获取最后 9,980 行 --

ORDER BY ?url LIMIT 10000 OFFSET 120000

中间的问题留给你...