2016-07-29 196 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