我想提取所有“人”的列表,这些人在维基百科上有另一个人的链接。
例如,George H. W. Bush在他的简历中有这句话:
"Bush was born in Milton, Massachusetts, to Senator
Prescott Bush and Dorothy Walker Bush."
现在,多萝西布什已经链接到她自己的页面。我可以获得一个类似的列表:
George H. W. Bush | Dorothy Walker Bush
George H. W. Bush | Babe Ruth
George H. W. Bush | Bill Clinton
并为维基百科的每个人扩展这个...我显然必须将其分解为比特大小的块才能输出,但我不知道如何编写此代码来仅为链接人员选择。感谢
答案 0 :(得分:2)
一种开始的方法就是搜索属于Person类型的连接资源。您可以使用dbpedia's web based query form。
SELECT ?person1 ?p ?person2
WHERE {
?person1 ?p ?person2.
?person1 a foaf:Person.
?person2 a foaf:Person.
}
ORDER BY ?person1
LIMIT 10
OFFSET 0
您可以使用ORDER BY
关键字“将此数据拆分为块”并迭代OFFSET
之后的值(例如10,20,30,...)。您应保存这些单独查询的所有结果,然后将它们组合以获得完整结果。
如果您只是在dbpedia上寻找特定类型的人际关系,以下查询将为您提供用于连接两个人的所有属性。
SELECT DISTINCT ?p
WHERE {
?person1 ?p ?person2.
?person1 a foaf:Person.
?person2 a foaf:Person.
}
选择其中一个或多个属性,例如。 http://dbpedia.org/property/married
,并使用以下查询获取此属性相关人员列表。
SELECT ?person1 ?person2
WHERE {
?person1 <http://dbpedia.org/property/married> ?person2.
?person1 a foaf:Person.
?person2 a foaf:Person.
}
ORDER BY ?person1
LIMIT 10
OFFSET 0
正如您将自己看到的那样,dbpedia上的属性使用非常异构,因此可能需要一些努力来获得您想要的内容。
希望这有助于作为一个起点。