繁体   English   中英

Apache Jena 结果集未保留 SPARQL 查询的顺序

[英]Apache Jena resultset not preserving order from the SPARQL query

我正在我的 java 应用程序中执行 SPARQL 查询,我希望结果集保留 SPARQL 查询中提供的顺序。 该查询在 GraphDb 编辑器中运行时返回有序结果,但在使用 Apache Jena 时,它不会按预期顺序返回结果。 观察到这可能与 SPARQL 查询中的联合连接有关,但不确定是否是这种情况。

有没有其他人看到这种情况并知道如何解决这个问题。

谢谢!

除非您的查询包含明确的ORDER BY子句,否则无法保证结果排序。 规范甚至在某些地方指出了这一点,例如第 15.4 节 OFFSET说如下:

使用LIMITOFFSET到 select 查询解决方案的不同子集将没有用,除非使用ORDER BY可以预测顺序。

没有ORDER BY子句的查询可能会使用特定的后端实现一致地返回结果,但您不应依赖此行为。 充其量这会给你在不同的实现中不同的结果。 更糟糕的是,由于底层实现中的内部实现/优化更改,当您升级后端时,排序可能会发生变化。

如果您想要可预测的结果排序,您必须在查询中提供ORDER BY子句。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM