SPARQL查询中多变量独立赋值方法咨询(Wikidata查询场景)
SPARQL多变量独立赋值解决方案
你可以通过两种方式实现?relation1、?item1的独立取值限定,无需枚举所有变量组合:
- 方案1:使用独立的VALUES子句
SPARQL支持声明多个互不关联的VALUES块,分别为单个变量指定取值列表,查询时会自动匹配同时符合两个变量取值要求的三元组,性能优于后过滤方案。
示例代码:
SELECT ?relation1 ?item1 WHERE { # 单独为?relation1指定可选取值 VALUES ?relation1 { wdt:P31 wdt:P17 } # 单独为?item1指定可选取值 VALUES ?item1 { wd:Q5 wd:Q183 } wd:Q31 ?relation1 ?item1 . }
- 方案2:使用FILTER + IN语法
如果你的取值限定需要和其他过滤逻辑结合,可以在三元组匹配后通过FILTER分别限制两个变量的取值范围。
示例代码:
SELECT ?relation1 ?item1 WHERE { wd:Q31 ?relation1 ?item1 . FILTER(?relation1 IN (wdt:P31, wdt:P17)) FILTER(?item1 IN (wd:Q5, wd:Q183)) }
注意:你给出的参考查询中
?item1?末尾多了一个多余的问号,属于语法错误,实际使用时需要删除。
内容的提问来源于stack exchange,提问作者Guido Ansem
相关产品推荐
相关产品推荐

