2016-11-29 90 views
0

我正在嘗試使用wikidata.org sparkql端點(https://query.wikidata.org/)檢索電影的標題和發佈日期(發佈日期)。標題以不同的語言列出,並在下面的查詢中進行過濾。然而,一些電影也具有多個發佈日期(例如,針對不同的國家),例如, https://www.wikidata.org/wiki/Q217020。我不確定RDF三重結構如何實際用於將國家分配給另一個三重組的價值,但具體而言,我如何才能檢索美國電影的發佈日期?使用Sparql從維基數據中檢索電影的美國發行日期

SELECT ?item ?title ?publicationdate 
WHERE { 
    ?item wdt:P31 wd:Q11424 ; 
     rdfs:label ?title ; 
     wdt:P577 ?publicationdate ; 
    filter (lang(?title) = "en") 
} 
ORDER BY ?movieid 
LIMIT 10 

解決方案

由M.Sarmini提供解決方案的工作。顯然,諸如發佈數據的事實存儲爲n-ary relations,它們創建鏈接資源的唯一符號標記。 P577鏈接的值僅僅是日期,當變成一個字符串時會給出發佈日期,而實際上它是一個令牌,您可以鏈接到其他限定符

回答

1

只需添加一個新的變量來保存出版物的地方,並篩選結果只列出美國這樣的電影:

PREFIX q: <http://www.wikidata.org/prop/qualifier/> 
PREFIX s: <http://www.wikidata.org/prop/statement/> 

SELECT distinct ?item ?title ?publicationdate 
WHERE { 
    ?item wdt:P31 wd:Q11424; 
     rdfs:label ?title;    
     p:P577 ?placeofpublication. 
    ?placeofpublication q:P291 wd:Q30. 
    ?placeofpublication s:P577 ?publicationdate; 

    filter (lang(?title) = "en") 
} 
ORDER BY ?item 
+0

感謝您的回答。似乎在https://query.wikidata.org/上只有一部電影滿足這個標準。從語義上講,我不明白這是如何將出版地與出版日期連接起來的。 –

+0

@JeroenVuurens不客氣。我編輯了查詢以符合您的條件。試一試。 –

+1

您可以在這裏閱讀幻燈片[鏈接](http://www.slideshare.net/_Emw/an-ambitious-wikidata-tutorial)以簡要介紹wikidata聲明的內容及其之間的關係。 –