2016-07-29 13 views
1

私はWikipediaデータベース内のすべての人をそのAPIを使って探したいと思っています。このアプローチは、French_revolutionariesは、人々の範疇であることを知っている私を必要とWikipedia APIからすべての人を取得する

https://en.wikipedia.org/w/api.php?action=query&prop=revisions&rvprop=content&format=json&list=categorymembers&cmlimit=100&cmtitle=Category:French_revolutionaries

:これまでのところ、このタスクへの私のアプローチは、次のような、カテゴリに属する​​すべての人々を取得するためにクエリを使用することでした。私の質問は次のとおりです:どのようにして(カテゴリー内の人々だけでなく)すべての人々をAPIから取り出すことができますか?

私が考えたアプローチの1つは、French_revolutionariesなどの任意のカテゴリから始めることでした。そのカテゴリの各メンバについて、その情報およびそれらが属する他のカテゴリを検索し、フェッチする新しいカテゴリがなくなるまで、この再帰的な方法で動作する同じ方法でそれらのカテゴリを検索する。ネットワークが完全に接続されていない場合、これはうまくいかないし、あまりエレガントでない場合はうまくいかない。

ウィキペディアデータベースの全員を簡単に見つける方法はありますか? dbpediaはその配列を提供できますか?私は今すぐSQL dump of the Wiki category dataをダウンロードしていますが、他の人が高速な解決策を知っている場合に備えて質問を提起したいと考えていました。他の人の助けがあれば、非常に感謝します!

答えて

2

質問にはSparqlというタグが付いているので、私はあなたがSparqlベースのソリューションにオープンしていると仮定します。おそらく、ウィキデータと

select * { ?person a dbo:Person } 

SPARQL Results

+0

ニース、私は周りを探していたとして、あなたの以前のSPARQLクエリをたくさん見ましたよくSELECT?プロパティを思いついた?hasValue?isValueOf WHERE { {?プロパティ?hasValue} UNION {?isValueOf?property } }しかし、これはあなたのソリューションよりはるかにコンパクトです! – duhaime

+0

@duhaime確かに、それは '?person a dbo:Person;に変わります。 dbo:wikiPageID?id'。 –

+0

パーフェクト、ありがとう!私は、応答には、少なくともAPIに関する限り、IDと同じ目的を果たすことができるwikipediaの「タイトル」が含まれていることに気付きました。再度、感謝します! – duhaime

関連する問題