我正在试图弄清楚是否有办法确定某篇文章是指个人,组织还是位置。我想这个答案就在“类别”和“clcategories”参数中......但是,这就是问题所在。
以艾伯特爱因斯坦为例。查询的结果:
......告诉我,事实上,阿尔伯特爱因斯坦是“柏林人”的成员。
同样,只需浏览维基百科上的类别树,我就可以通过以下路径显示“来自柏林的人”是“人物”类别的子类别:
People > People_categories_by_parameter > People by place > People by city > People by country and city > People by city in Germany > People from Berlin
但是,Albert Einstein不是(直接)“People”类别的成员,所以这个查询:
...在类别下找不到任何结果,即它不匹配。
有没有办法找出一个页面是否是任何X类的成员,其中X类是指定类别Y的后代?
谢谢!
答案 0 :(得分:2)
我不知道维基百科的API方法,但我可以想到Freebase方式。以下freebase查询将为您提供与给定Wikipedia文章相关联的Freebase“类型”。 “人物”,“政治家”,“艺术家”,“地方”等等 - 都可以从这些类型中轻易识别出来。
{
"key": [{
"namespace": "/wikipedia/en",
"value": "William_Ambrose"
}],
"type": []
}
(当然,将en
替换为实际的维基百科语言,将"William_Amrose"
替换为维基百科的文章名称。请参阅下面关于转义的说明!)
在这种情况下,结果是:
{
"result": {
"type": [
"/common/topic",
"/people/person",
"/people/deceased_person",
"/government/politician"
],
"key": [{
"namespace": "/wikipedia/en",
"value": "William_Ambrose"
}]
}
}
......这显然意味着“人”和“政治家”(也是“死者”,但这是另一回事。)
请参阅我对get wikipedia linked links的回答,了解有关API如何工作的说明以及REST示例。 特别是,请仔细查看从Google获取API密钥以及从Freebase中获取字符串的说明。
祝你好运。答案 1 :(得分:1)
现在你应ask Wikidata property P31,yii2 doc会告诉你类似于"是人类的事情。