SPARQL结果集限制为10000
我对SPARQL结果集限制为10000,sparql,virtuoso,Sparql,Virtuoso,我对Virtuoso运行了一个查询,我知道该查询应该返回10000多行,但我只返回了10000行。我没有在查询结束时使用LIMIT子句。这个数字是默认的结果集限制吗?如何覆盖它 我的问题是: select distinct ?s { ?s ?p ?o. } 很可能是服务设置的默认设置,用于限制用户在不知情的情况下使用SPO查询下载整个存储库。如果这是您自己的实例,您可以在INI文件中编辑该设置 如果这是其他人的例子,他们可能愿意/能够调整该设置。如果没有,您可以使用LIMIT/OFFSET(和
Virtuoso
运行了一个查询,我知道该查询应该返回10000多行,但我只返回了10000行。我没有在查询结束时使用LIMIT
子句。这个数字是默认的结果集限制吗?如何覆盖它
我的问题是:
select distinct ?s { ?s ?p ?o. }
很可能是服务设置的默认设置,用于限制用户在不知情的情况下使用SPO查询下载整个存储库。如果这是您自己的实例,您可以在INI文件中编辑该设置
如果这是其他人的例子,他们可能愿意/能够调整该设置。如果没有,您可以使用
LIMIT
/OFFSET
(和ORDER BY
)子句逐步查看完整的结果集。只有当它是您自己维护的Virtuoso triple store时,才可以通过Virtuoso.ini文件中的配置参数来增加大小。否则,LIMIT n OFFSET m
aka分页必须完成。与此同时,我意识到获得了如此巨大的有效负载(1M+三倍)在一个HTTP响应中,可能不是一个好主意,因此我设计了一个批分解,使用OFFSET
和LIMIT
继续上一次迭代结束的地方。请记住,如果没有适当的orderby
子句,行可以以任何顺序返回,这可能会随着每次偏移量
/限制
迭代而改变,因此忽略这一点可能意味着您在整个页面之后有重复和/或丢失的行!我在想这个。在上面的查询中,我应该只按顺序执行吗
?但是我认为如果有人在我的进程运行时更改数据,这是不安全的。有没有办法比上一批的最后一项做得更好?也许这是一个单独线程的主题,或者更好,如果服务器捕获数据,是否可以按每个三元组创建的时间戳排序?