Sparql 限制范围返回的记录

Sparql 限制范围返回的记录,sparql,Sparql,嗨,我有一个特殊的sparql查询,它返回图形中的所有三元组。这需要一些时间来运行,所以我想知道是否可以限制三元组的数量,并在用户每次按下界面上的下一步时重新运行查询例如:首先他看到前10个,然后是下10个等等。。。现在我正在获取所有结果并保存它们,然后遍历结果。我可以只获取前10行、下10行等吗?对于选择查询,仅获取前10行: SELECT ... WHERE { ... } LIMIT 10 要获得下一个10: SELECT ... WHERE { ... } OFFSET 10

嗨,我有一个特殊的sparql查询,它返回图形中的所有三元组。这需要一些时间来运行,所以我想知道是否可以限制三元组的数量,并在用户每次按下界面上的下一步时重新运行查询例如:首先他看到前10个,然后是下10个等等。。。现在我正在获取所有结果并保存它们,然后遍历结果。我可以只获取前10行、下10行等吗?

对于
选择
查询,仅获取前10行:

SELECT ...
WHERE {
  ...
}
LIMIT 10
要获得下一个10:

SELECT ...
WHERE {
  ...
}
OFFSET 10 LIMIT 10
对于接下来的十个,将
偏移量增加到20,依此类推

您说您的查询返回三元组,那么它是一个
构造的
查询吗<代码>限制
偏移
也适用于
构造
,但返回的三元组数将取决于构造模板中的三元组模式数


编辑:在使用
限制
偏移
时,在某些SPARQL存储上,您还需要使用
按?x
排序,其中
?x
是查询变量之一。这可以确保结果的顺序是可预测的。

在搜索结果集时,按
排序很重要,否则您可能会多次得到某些解决方案和/或根本得不到某些解决方案。@TallTed Fair point。我已经更新了答案。注意,它取决于SPARQL处理器。有些提供了一致的结果,但没有按
排序,但包含它肯定是安全的选择。“正常工作”(如您现在的回答中所示)是一种错误描述,表明输出行顺序不同的处理器不知何故出现故障。RDF存储(没有SPARQL存储)没有任何以任何特定顺序存储或输出数据的权限。同样,SPARQL不强制要求对解决方案进行任何排序,除非有明确的
orderby
子句。一些RDF存储和SPARQL处理器可能总是以相同的顺序提供结果,但这不应该(实际上,必须)依赖,尤其是在从一个处理器切换到另一个处理器时。当然,我会修复它