如何在SPARQL UNION查询结果中返回指定属性及变量
在SPARQL UNION查询中返回对应关系属性的方法
要在UNION的查询结果里同时返回每条记录对应的关系属性,核心是在每个UNION分支中把当前使用的属性绑定到一个统一变量上,这样结果集就能同时包含你需要的?item、?person和对应的关系属性。
以Wikidata为例,直接看修改后的查询示例:
SELECT ?item ?person ?rel WHERE { { ?item wdt:P170 ?person . BIND(wdt:P170 AS ?rel) } UNION { ?item wdt:P50 ?person . BIND(wdt:P50 AS ?rel) } } LIMIT 10
关键说明:
- 每个UNION分支内,通过
BIND()把当前使用的关系属性(比如wdt:P170)赋值给统一变量?rel,所有分支的结果都会带上这个变量,对应各自的关系属性。 - 如果需要返回完整URI,直接把缩写替换成完整URI即可,比如
BIND(<http://www.wikidata.org/prop/direct/P170> AS ?rel),和前缀缩写的效果完全一致。 - 不管有多少个UNION分支,都可以用同样的方式处理,每个分支绑定对应的属性到
?rel,结果集里的每条记录都会准确关联到它所属的关系属性。
内容的提问来源于stack exchange,提问作者user7665853
相关产品推荐
相关产品推荐

