我的具體問題是我有一個名爲「Beacon Theatre」的地方。我想找到的是在Wikidata中與此最匹配的內容。WikiData,定位特定類型或子類型的實體,位於特定城市
一個Wikidata Search會給我三種結果:
住在燈塔劇院(Q6656601)
燈塔劇院(Q264186):表演場地
燈塔劇院(Q19110809)
第一個是電影第二它正確的結果,第三是最高法院的決定。
使用this API調用,我能找到的ID的所有三個:
https://www.wikidata.org/w/api.php?action=query&format=json&list=search&srsearch=Beacon Theater
下一步是獲取信息的每一項。我用this調用來獲取信息,所有三個實體
"https://www.wikidata.org/w/api.php?action=wbgetentities&props=descriptions|labels|claims&ids=Q6656601|Q264186|Q19110809&languages=en&format=json"
在這一點上,我想在它們之間迭代,並找到一個是建築物。我也許稍後想要添加一種方法來找到位於紐約的那個。
我的問題是,正確的答案不是建築物(Q41176)。 P31的價值是Q3469910,這是一個Performance Arts Venue,所以我不能真正分類(想象一下,在未來,我使用這個代碼來搜索博物館,博物館也是一座建築物,但不是表演藝術場所。搜索燈塔劇院僅僅是一個例子
所以問題:我如何才能找到正確的條目,這對於這個問題的目的,我定義爲:
- 作爲一個建築(或者是從衍生a Building)
- 可選答案:位於紐約(如果有多個匹配,這會進一步限制結果)
我想我需要做一個SPARQL查詢作爲第二個查詢來做到這一點,但從例子我無法弄清楚如何,或者如果這將是正確的/最簡單的方法。也許甚至可以在一個查詢中完成上述所有操作的SPARQL查詢?
謝謝,但我寧願防守編碼,也不要指望不斷更新項目。在SPARQL中,我相信會有一些解決方案可以做到這一點。如果你想要面向未來的代碼,用常數編碼(如你在這裏描述的)通常在我看來是一個災難的祕訣。雖然謝謝:) – Andy