Wikidata SPARQL查询过滤器或

时间:2019-09-06 00:52:31

标签: sparql wikidata wikidata-api

我正尝试在Wikidata中查询作为businessnonprofit organization实例的所有项目。

以下适用于一个:

SELECT DISTINCT ?organization WHERE {
  ?organization wdt:P31 wd:Q4830453
}

但这并不能全部检索。只是所有业务。

我也尝试了以下方法,但是似乎都没有用。

SELECT DISTINCT ?organization WHERE {
  ?organization wdt:P31 wd:Q4830453 || wd:Q163740
}
SELECT DISTINCT ?organization WHERE {
  ?organization wdt:P31 wd:Q4830453, wd:Q163740
}

当然,我可以只发出两个单独的请求,然后在事后将它们组合在一起,但这似乎没有效率,而且似乎应该有更好的方法来处理此问题。

1 个答案:

答案 0 :(得分:2)

这是一个可行的解决方案:

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 ) )
}