如何在SPARQL的ASK查询中关联绑定组合与对应结果?
如何在不拆分查询的前提下获取ASK查询中每个绑定的对应结果
好问题!默认的ASK查询确实只会返回一个全局的布尔值,没办法直接展示VALUES子句里每个?class_0绑定对应的真假结果。不过我们可以把查询转换成SELECT语句,借助EXISTS子查询来逐个判断每个条目的匹配情况,完美满足你不拆分查询的需求。
修改后的查询代码
PREFIX dbr: <http://dbpedia.org/resource/> PREFIX dbo: <http://dbpedia.org/ontology/> SELECT ?class_0 (EXISTS { ?class_0 a dbo:Sport }) AS ?isSport WHERE { VALUES (?class_0) {(dbr:Horse_racing) (dbr:Angela_Merkel)} }
原理说明
- 保留原有的
VALUES子句来定义需要检查的?class_0绑定集合 - 用
EXISTS { ?class_0 a dbo:Sport }判断当前?class_0是否满足原ASK查询的条件,这个子查询会返回对应的布尔值 - 通过
AS ?isSport给布尔结果命名,让返回的结果更直观易读
返回结果示例
你会得到类似这样的结果集,清晰展示每个?class_0对应的真假状态:
| ?class_0 | ?isSport |
|---|---|
| dbr:Horse_racing | true |
| dbr:Angela_Merkel | false |
这样就不用拆分查询,一次就能获取所有绑定对应的结果啦!
内容的提问来源于stack exchange,提问作者Peter
相关产品推荐
相关产品推荐

