Wikidata SPARQL多个过滤器

时间:2019-06-23 14:37:25

标签: sparql wikidata

我试图找到在不同电影中一起出现的演员。

例如:

  • “找到出现在《帝国反击战》和《毁灭神殿》中的所有演员”应该返回哈里森·福特。
  • “找到参加帝国反击和绝地归来的所有演员”应该返回哈里森·福特,凯莉·费舍尔,马克·哈米尔等。

这获得了所有厄运神殿的演员:

SELECT ?actor ?actorLabel WHERE {
  ?movie wdt:P161 ?actor .
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
  FILTER(?movie = wd:Q179215)
}
LIMIT 100

我以为我可以将过滤器更改为

FILTER(?movie = wd:Q179215 && ?movie = wd:Q181795)

但是不会返回任何项目。

我尝试使用

select ?actor ?actorLabel where {
  ?actor wdt:P106 wd:Q33999 .
   wd:Q181795 wdt:P161 ?actor .
   wd:Q181803 wdt:P161 ?actor .
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
} 

但是,这错过了很多演员。即使只拍摄一部电影也只能返回不完整的演员表。

1 个答案:

答案 0 :(得分:0)

您期望的运算符是 OR 而不是 AND

尝试使用

  

FILTER(?movie = wd:Q179215 ||?movie = wd:Q181795)