人気のある映画のリストの中で、ティム バートンが監督したことのない俳優のリストが必要だとしましょう。
私はこの手順でそれをやろうとしました:
- ティム・バートンがこれまでに監督したすべての俳優を選択 (サブ選択)
- 人気のある映画のリストから俳優のリストを選択します (imdb id による)
- 2 番目の選択で最初の選択からすべてのアクターを除外する (
NOT IN
)
これは私が試したコードです(NOT IN
失敗、理由はわかりません):
SELECT DISTINCT ?actor ?actorLabel
WHERE {
?film wdt:P31 wd:Q11424
;wdt:P161 ?actor
;wdt:P345 ?imdbId .
{
SELECT ?excludeActors
WHERE {
?film wdt:P31 wd:Q11424
; wdt:P57 wd:Q56008
; wdt:P161 ?excludeActors .
}
} .
FILTER(?actor NOT IN (?excludeActors)) .
FILTER(?imdbId = "tt1077368" || ?imdbId = "tt0167260") .
SERVICE wikibase:label { bd:serviceParam wikibase:language "fr" }
}
または、このリンクに従ってください
([最後のフィルター] を削除できる Christopher Lee のフィルターがあります。これは、ここで説明する内容を強調するために使用されます:)
このコードには、ダーク シャドウ (ティム バートン監督) とロード オブ ザ リング 3 の 2 つの映画があります。この例では、クリストファー リーは両方の映画に出演しています。彼がリストに載っていることがわかります。
NOT IN
サブセレクトで失敗する理由が本当にわかりません。サブ Select リクエストを試してみたところ、中に Christopher Lee が見つかりました。これは、彼を除外する必要があることを意味します。