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
子句,行可以以任何顺序返回,这可能会随着每次
偏移量
/
限制
迭代而改变,因此忽略这一点可能意味着您在整个页面之后有重复和/或丢失的行!我在想这个。在上面的查询中,我应该只按顺序执行
?但是我认为如果有人在我的进程运行时更改数据,这是不安全的。有没有办法比上一批的最后一项做得更好?也许这是一个单独线程的主题,或者更好,如果服务器捕获数据,是否可以按每个三元组创建的时间戳排序?