如何使用SPARQL和dbpedia从persons wikipedia页面中提取所有超链接人员的列表

如何使用SPARQL和dbpedia从persons wikipedia页面中提取所有超链接人员的列表,sparql,dbpedia,Sparql,Dbpedia,我想从维基百科中找出所有与另一个人有链接的“人”的列表 例如,乔治·H·W·布什在他的简历中有这样一句话: "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

我想从维基百科中找出所有与另一个人有链接的“人”的列表

例如,乔治·H·W·布什在他的简历中有这样一句话:

"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

为了扩展这一点。。对于维基百科上的每个人?很明显,我必须将其分解为比特大小的块以便输出,但我只是不确定如何将其编码为仅为链接的人选择。谢谢

一种开始的方法就是搜索连接的资源,这些资源都是Person类型的。你可以用

您可以使用
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
SELECT?person1?person2
何处{
?人1?人2。
?人员1 foaf:人员。
?人员2 foaf:人员。
}
订购人1
限制10
偏移量0
正如您自己将看到的,dbpedia上的属性使用是相当异构的,因此可能需要一些努力才能得到您想要的


希望这能作为一个起点有所帮助。

谢谢。是的,这是一个起点,但是否有一种方法可以仅提取其个人资料中的链接人?我认为他们之所以有这些链接,是因为某些潜在属性是隐藏的,很难通过查询来选择?@Griff答案提供了从DBpedia中提取“仅链接的人”的最简单方法。如果您需要更多的链接,您需要自己清理Wikipedia或添加更多到DBpedia的映射。在维基百科上,一切都是文本;其中一些是链接中的文本,但只有在信息框和(其他)模板中,链接文本才开始有意义。这就是为什么DBpedia几乎完全从信息框中提取信息,当它提取信息时,链接的含义保存在属性中。使用SPARQL可以相当轻松地查询这些内容。希望这能解释:)我该如何手动抓取维基百科页面中内容之间的链接?对一个给定的领域来说,数学?然后可以在远离起始节点的特定深度截断搜索,并建立一些互连。
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