2012-12-18 36 views
1

我想列出所有在维基百科上具有与其他人的链接的“人员”列表。如何使用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 
George H. W. Bush | Bill Clinton 

,并延长这个..就为大家维基百科?我显然必须将其分解为比特大小的块,以便输出,但我只是不确定如何对此进行编码以仅选择链接的人。谢谢

回答

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中财产的使用是非常不均匀的,所以它可能需要一些努力来得到你想要的。

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

+0

谢谢。是的,这是一个起点,但是没有办法在他们的个人档案中只提取链接的人员?我认为他们有这些链接是因为某些隐藏的属性,难以通过查询来选择? – Griff

+0

@Griff答案提供了从DBpedia中提取“仅链接的人”的最简单方法。如果你需要更多的链接,你需要自己修改维基百科,或者添加更多的映射到DBpedia。在维基百科,一切都是文字;其中一些是链接文本,但只有在信息框和(其他)模板中,链接文本才能获得意义。这就是为什么DBpedia几乎完全从信息框中提取信息的原因,当它发生时,链接的含义被保存在一个属性中。这些可以使用SPARQL很容易地查询。希望这解释:) –

+0

我将如何去手动维基百科页面内容之间的链接手动?对于给定的领域说数学?然后,您可以在距离您的起始节点特定深度截断搜索并建立一些互连。 – Griff

相关问题