2016-11-02 7 views
0

私の具体的な問題は、私が "ビーコンシアター"と呼ばれる場所があることです。私が見つけたいものは、Wikidataでこれに最もよくマッチします。WikiData、特定のタイプまたはサブタイプのエンティティを特定の都市に配置する

Wikidata Searchは私に3つの結果が得られます:

ビーコンシアター(Q6656601)

ビーコンシアター(Q264186)でのライブ:芸能会場

ビーコン劇場(Q19110809)

最初のものは映画、2番目に正しい結果、3番目が最高裁判決です。

this API呼び出しを使用して、私はすべての3つのIDのを見つけることができます。

https://www.wikidata.org/w/api.php?action=query&format=json&list=search&srsearch=Beacon Theater 

次のステップは、これらのそれぞれの詳細を取得しています。私はこの時点で、すべての3つのエンティティ

"https://www.wikidata.org/w/api.php?action=wbgetentities&props=descriptions|labels|claims&ids=Q6656601|Q264186|Q19110809&languages=en&format=json" 

のための情報を取得するためにthisコールを使用し、私はそれらを反復し、建物であるものを見つけたいです。私は後でニューヨークにあるものを見つける方法を追加したいかもしれません。

私の問題は、正解は建物(Q41176)ではないということです。 P31の値はQ3469910で、Performance Arts Venueなので、私はそれを実際に並べ替えることはできません(将来このコードを使って博物館を検索すると想像してください)。博物館も建物ですが、舞台芸術の場ではありません。 。ビーコンシアターの検索は単なる一例である

そこで質問:どのように私は正しいエントリを見つけることができ、私は定義し、この質問の目的のためとして:

  1. 建物なので(あるいは由来していますニューヨークに所在しています(複数のヒットの場合、結果がさらに制限されます)

私はこれを行うには2番目のクエリとしてSPARQLクエリを実行する必要があると思いますが、例から私はかなりわかりませんでしたか、それが正しい/最も簡単な方法です。たぶん1つのクエリで上記のすべてを行うSPARQLクエリですか?

答えて

-1

私は問題の同じ種類を満たすa projectを持っているだけでなく、コミック本、またはでき書籍、のための漫画など私が見つけた最も簡単な解決策、つまり、試合で考えることができるエンティティをa list of "alias entities"を保つことでした本を探しているとき。 SPARQLクエリと同じくらい動的ではなく、定期的な更新が必要です。新たに見つかったマッチングエンティティを追加し、問題のあるエンティティを削除しますが、それはずっと速く、ほとんどのニーズを満たします。

+0

ありがとうございますが、私は防衛的にコードを作成し、プロジェクトを常に更新していくことを期待していません。 SPARQLでは、これを実行できる解決策がいくつかあると思います。あなたが将来保証されたコードを望むならば、定数を使ったコーディング(あなたがここで述べるように)は、私の意見では災害のためのレシピです。おかげで:) – Andy

関連する問題