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 .
}
第二个查询须知 --
OFFSET
表示"skip this many rows from the total result set"
LIMIT
表示"only give me this many rows (starting after any OFFSET
)"
- 行可以按任何顺序传送,如果您不包含
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
中间的问题留给你...
我有一个请求计算记录的数量;请求 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 .
}
第二个查询须知 --
OFFSET
表示"skip this many rows from the total result set"LIMIT
表示"only give me this many rows (starting after anyOFFSET
)"- 行可以按任何顺序传送,如果您不包含
ORDER BY
,则此顺序可能会因查询而异。这可能意味着当所有部分结果集组合在一起时,具有不同OFFSET
的多个查询可能无法获取所有行,并且可能会提供重复的行。所以——任何时候你使用OFFSET
and/orLIMIT
,最好的做法是同时使用ORDER BY
.
总而言之,将此添加到第一个查询以获得前 10,000 行--
ORDER BY ?url LIMIT 10000 OFFSET 0
-- 这将获取最后 9,980 行 --
ORDER BY ?url LIMIT 10000 OFFSET 120000
中间的问题留给你...