SPARQL同谓词不同值查询问题:如何获取两行数据的对应cost值
问题分析与解决方案
你的查询无结果的核心原因是:要求同一个?entry同时拥有ext:index 0和ext:index 1两个矛盾属性——每个表条目只会对应一个index值,自然无法匹配到符合条件的数据。
正确查询写法
使用两个不同变量分别匹配index为0和1的表条目,从不同条目里获取对应的cost值:
SELECT ?priceOne ?priceTwo WHERE { ?form ext:table ?table. # 匹配index=0的条目,绑定cost到?priceOne ?table ext:entry ?entry0. ?entry0 ext:index 0; ext:cost ?priceOne. # 匹配同一表格下index=1的条目,绑定cost到?priceTwo ?table ext:entry ?entry1. ?entry1 ext:index 1; ext:cost ?priceTwo. }
补充说明
- 若需针对特定表单查询,可添加
?form ext:[表单标识] [具体值]的过滤条件,缩小查询范围。 - 原查询中的
DISTINCT可移除,因为每个index对应的条目唯一,不会产生重复结果。
内容的提问来源于stack exchange,提问作者fangio
相关产品推荐
相关产品推荐

