1

我想拉出与维基百科上另一个人有链接的所有“人”的列表。

例如,乔治 HW 布什在他的传记中有这样一句话:

"Bush was born in Milton, Massachusetts, to Senator 
Prescott Bush and Dorothy Walker Bush."

现在 Dorothy Bush 被超链接到她自己的页面。我可以得到一个如下所示的列表:

George H. W. Bush | Dorothy Walker Bush
George H. W. Bush | Babe Ruth
George H. W. Bush | Bill Clinton

并扩展这个..为维基百科上的每个人?我显然必须将其分解为小块才能输出,但我只是不确定如何编写代码以仅选择链接的人。谢谢

4

1 回答 1

2

一种开始方法是简单地搜索类型为 Person 的已连接资源。您可以使用dbpedia 的基于 Web 的查询表单

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 上的属性使用非常多样化,因此可能需要一些努力才能获得您想要的。

希望这有助于作为一个起点。

于 2012-12-19T02:33:19.297 回答