Sparql 如何解决Linkedmdb中的执行限制

Sparql 如何解决Linkedmdb中的执行限制,sparql,linkedmdb,Sparql,Linkedmdb,我试图从Linkedmdb中提取所有电影。我使用偏移量来确保我不会达到每个查询的最大结果数。我在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 . }

我试图从Linkedmdb中提取所有电影。我使用偏移量来确保我不会达到每个查询的最大结果数。我在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
“”“
前缀rdfs:
前缀电影:
选择不同的?胶片
在哪里{
电影:电影。
}限制1000个偏移量%s“”%i
我循环了5次,偏移量为01000200030004000,并记录了结果的数量。它是(1000500,0,0)。我已经知道极限是2500,但我想通过使用偏移量,我们可以摆脱这个问题。
这不是真的吗?无法获取所有数据(即使我们使用某种循环)

您当前的查询是合法的,但没有指定顺序,因此偏移量不会将您带到结果中可预测的位置。(一个延迟实现可能会一次又一次地返回相同的结果。)当您使用限制偏移时,您还需要使用排序依据。SPARQL 1.1规范说明(重点添加):

偏移量使生成的解决方案在指定的时间之后开始 解决方案的数量。零的偏移量无效

使用限制和偏移选择查询的不同子集 解决方案将不会有用,除非通过 使用订购人。


对不起,我错过了这个。我会发布你的解决方案以防万一,但谢谢你的评论。看起来偏移量大于2500,Linkedmdb什么也不返回。我确实遵循了order by、offset、limit指令,但对于大于2500的affset值,服务器似乎不会返回任何结果。可能是,它只会在内部选择2500个结果,然后对它们进行排序,然后逐页浏览这些结果。如果您可以找到一些值,可以在开始时过滤以选择较少的结果,那么您可能能够绕过这个问题。不幸的是,为了获得所需的数据,我认为您需要一些SPARQL 1.1运算符,我认为LinkedMDB端点不支持这些运算符。@JoshuaTaylor那么当queryreturns 0结果时,这是否意味着我们可以停止?我们是否可以设置一个类似“如果结果数=0,则停止执行循环内的sparql查询”的条件