Wikidata sparql 获取相关演员

Wikidata sparql get related actors

我正在尝试编写一个查询,以在给定一个演员的情况下获取他所出演的同一部电影中的演员。

以下查询为我提供了该演员出演的电影。

SELECT distinct ?actorLabel ?movieLabel  ?boxOffice
WHERE {
  {
    SELECT ?actor WHERE {
      ?actor rdfs:label "Johnny Depp"@en.
      ?actor wdt:P106 ?occupation.
      ?occupation wdt:P279+ wd:Q33999.
    }
  }
  ?movie wdt:P161 ?actor.
  ?movie wdt:P2142 ?boxOffice.

  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
}
ORDER BY DESC(?boxOffice)
limit 10

所以现在我想从每部电影中获取所有相关演员。我试图用这样的子查询来做到这一点

SELECT distinct ?actorLabel ?movieLabel  ?boxOffice ?relatedActor ?relatedActorLabel
WHERE {
  {
    SELECT ?actor WHERE {
      ?actor rdfs:label "Johnny Depp"@en.
      ?actor wdt:P106 ?occupation.
      ?occupation wdt:P279+ wd:Q33999.
    }
  }
  ?movie wdt:P161 ?actor.
  ?movie wdt:P2142 ?boxOffice.
  {
    SELECT ?relatedActor WHERE {
      ?movie wdt:P161 ?relatedActor
    }
    limit 5
  }

  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
}
ORDER BY DESC(?boxOffice)
limit 10

但出于某种原因我不明白我一直得到 Barack ObamaDouglas Adams 作为唯一的结果。即使是从完全不同的演员开始。

任何人都可以阐明这一点,我做错了什么吗?

这里的查询或多或少可以满足您的需求:

SELECT ?actorLabel (SAMPLE(?movieLabel) AS ?sample_movie) 
  (GROUP_CONCAT(?movieLabel) AS ?movies) (COUNT(?movie) AS ?number_movies) 
  ?relatedActor ?relatedActorLabel WHERE {
    VALUES ?actor { wd:Q37175 }
    ?movie wdt:P161 ?actor, ?relatedActor.
    SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
}
GROUP BY ?relatedActor ?actorLabel ?relatedActorLabel
ORDER BY DESC (COUNT(?relatedActor))

(Link)

它不做限制。但是,从好的方面来说,它仍然有效并获得大约 1000 个结果。我相信电影名称的聚合应该有效,但有一个错误——文档中某处有一个关于它的部分,但我现在找不到它。

我按联合出场次数排序,但票房应该差不多。但是,我不确定票房 returns 的数据有多完整。

Johnny Depp 的物品最近也遭到了破坏,这可能是您查询失败的原因。至少我一开始没有得到任何结果。

SELECT distinct ?actorLabel ?movieLabel ?relatedActor ?relatedActorLabel
WHERE {
  ?actor rdfs:label "Johnny Depp"@en.
  ?movie wdt:P161 ?actor.
  ?movie wdt:P161 ?relatedActor.
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
}