如何解决Linkedmdb中的执行限制

时间:2014-08-05 14:25:43

标签: sparql linkedmdb

我试图从Linkedmdb中提取所有电影。我使用OFFSET来确保我不会达到每个查询的最大结果数。我在python中使用了以下脚本

"""
 PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
 PREFIX movie: <http://data.linkedmdb.org/resource/movie/>
 SELECT distinct ?film
 WHERE {
 ?film a movie:film .
 } LIMIT 1000 OFFSET %s """ %i

我循环5次,偏移量为0,1000,2000,3000,4000并记录结果数。它是(1000,1000,500,0,0)。我已经知道限制是2500但是我想通过使用OFFSET,我们可以逃脱这个。 这不是真的吗?没有办法获取所有数据(即使我们使用某种循环)?

1 个答案:

答案 0 :(得分:3)

您当前的查询是合法的,但是没有指定的顺序,因此偏移量不会将您带到结果中的可预测位置。 (懒惰的实现可能会一次又一次地返回相同的结果。)当您使用限制偏移时,您需要使用< strong>按排序。 SPARQL 1.1规范说(重点补充):

  

15.4 OFFSET

     

OFFSET会导致生成的解决方案在指定后启动   解决方案的数量。 OFFSET为零无效。

     

使用LIMIT和OFFSET选择查询的不同子集   除非订单可以预测,否则解决方案将无用   使用ORDER BY。