维基数据 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 ) )
}