2016-07-29 197 views
1

我想使用他們的API找到維基百科數據庫中的所有人。到目前爲止,我的方法把這個任務一直使用查詢來獲取誰屬於一個類別,如所有的人:從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

這種方法要求我知道French_revolutionaries是人們的一個類別。我的問題是:如何從API中檢索所有人(不僅僅是某個類別中的人)?

我考慮的一種方法是從任意類別開始,比如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 {propertyName hasValue UNION {?isValueOf?property } }但是這比你的解決方案少得多! – duhaime

+0

@duhaime肯定,它只是變成了'人一個dbo:人; dbo:wikiPageID?id'。 –

+0

完美,謝謝!我意識到,響應包含維基百科'標題',至少就API而言,它可以達到與ID相同的目的。再次感謝! – duhaime