使用 Stardog 在 SPARQL 查询中分页:是否使用 LIMIT 和 OFFSET 而没有 ORDER BY OK?

Pagination in SPARQL query with Stardog: is using LIMIT and OFFSET without ORDER BY OK?

出于某些可扩展性原因,我想将 SPARQL 查询分页到 Stardog 端点。目前,我使用各种 LIMIT 和 OFFSET 参数生成多个查询。我不想使用 ORDER BY 因为它很慢。但是,我无法弄清楚 Stardog 的实施是否保证为每个 LIMIT 和 OFFSET 配置返回相同的结果。

ps:我在网上能找到的关于这个问题的唯一讨论是here

这里是 Stardog 工程师。 ORDER BY 有明显的开销是对的。如果没有 ORDER BY,Stardog 无法保证结果的顺序在具有不同 OFFSET 值的多次执行中保持一致。然而,特别是。对于更简单的查询并且没有数据更改,它通常应该这样工作。

Stardog 通常会尝试以一种惰性的流式方式评估查询,因此通常可以在没有外部分页的情况下逐步使用结果集。如果您共享查询计划(或者更好的是,使用 query profiler),我们可能会帮助提高性能。