维基数据 SPARQL 查询过滤器或
Wikidata SPARQL Query Filter Or
我正在尝试在维基数据中查询属于 business
OR nonprofit organization
实例的所有项目。
以下作品之一:
SELECT DISTINCT ?organization WHERE {
?organization wdt:P31 wd:Q4830453
}
但这并不能检索所有这些。只是所有商家。
我也尝试了以下方法,但 none 似乎有效。
SELECT DISTINCT ?organization WHERE {
?organization wdt:P31 wd:Q4830453 || wd:Q163740
}
SELECT DISTINCT ?organization WHERE {
?organization wdt:P31 wd:Q4830453, wd:Q163740
}
当然我可以只提出两个单独的请求并在事后合并它们,但这似乎效率不高,似乎应该有更好的方法来处理这个问题。
这是一个可行的解决方案:
SELECT *
WHERE {
VALUES ?o { wd:Q4830453 wd:Q163740 }
?s wdt:P31 ?o.
}
请注意,以下查询也可能是一种解决方案。但是,FILTER
如果存在另一种可能性,解决方案永远不是实现某事的有效方法。
SELECT *
WHERE {
?s wdt:P31 ?o.
FILTER (?o IN (wd:Q4830453, wd:Q163740 ) )
}
我正在尝试在维基数据中查询属于 business
OR nonprofit organization
实例的所有项目。
以下作品之一:
SELECT DISTINCT ?organization WHERE {
?organization wdt:P31 wd:Q4830453
}
但这并不能检索所有这些。只是所有商家。
我也尝试了以下方法,但 none 似乎有效。
SELECT DISTINCT ?organization WHERE {
?organization wdt:P31 wd:Q4830453 || wd:Q163740
}
SELECT DISTINCT ?organization WHERE {
?organization wdt:P31 wd:Q4830453, wd:Q163740
}
当然我可以只提出两个单独的请求并在事后合并它们,但这似乎效率不高,似乎应该有更好的方法来处理这个问题。
这是一个可行的解决方案:
SELECT *
WHERE {
VALUES ?o { wd:Q4830453 wd:Q163740 }
?s wdt:P31 ?o.
}
请注意,以下查询也可能是一种解决方案。但是,FILTER
如果存在另一种可能性,解决方案永远不是实现某事的有效方法。
SELECT *
WHERE {
?s wdt:P31 ?o.
FILTER (?o IN (wd:Q4830453, wd:Q163740 ) )
}