我可以使用DBpedia来引用维基百科上某个人的第一个/给定/基督徒名字吗?

时间:2012-07-29 09:59:25

标签: sparql wikipedia semantic-web ontology dbpedia

我不相信维基百科的信息框会考虑到某个人姓名的各个部分,例如将姓氏与给定(又名第一或基督教)名称分开等等。

但我也相信DBPedia除了直接来自维基百科外,还使用了其他几种本体。

所以我想知道的是,是否可以制作SPARQL查询,这些查询将根据他们的名字从维基百科中选择人员。

例如我可以查询All knights of the British empire whose first name is "Tim"吗?

2 个答案:

答案 0 :(得分:3)

这是一个类似于你想要的查询:

SELECT * 
    WHERE 
      {
         ?person rdf:type yago:BritishKnights  . 
         ?person foaf:givenName ?name.
         FILTER regex(?name, "Walter", "i")
      }  
LIMIT 100

选择名为“Walter”的英国骑士。它适用于DBPedia sparql endpoint。我认为这是一个不错的起点。

您会发现以下资源非常有用:

  • British Knights - 我的示例查询中使用的概念
  • Knights by occupation - 在这里您可以找到更多资源的链接,而不仅仅是BritishKnights。例如,上面的查询不会返回音乐家和演员,而是可以在不同的类别中找到它们。

  • Knights - 更为一般,在这里,您可以找到描述来自不同国家/地区等骑士的资源的超链接。

  • Sir - “爵士”的概念
  • Friend Of A Friend - 描述人及其关系的本体论。我在我的示例中使用了givenName属性
  • vCard RDF ontology - 另一个名称属性
  • 的人 关于SPARQL过滤器的
  • A tutorial

编辑: Tim Berners-Lee也可以找到。英国的荣誉制度似乎并不简单。祝你的搜索顺利。这个问题考虑到了伯纳斯 - 李的荣誉。#/ p>

SELECT * 
WHERE 
  {
     ?person dcterms:subject category:Knights_Commander_of_the_Order_of_the_British_Empire . 
     ?person foaf:givenName ?name.
     FILTER regex(?name, "Tim", "i")
  }  
LIMIT 100

所有这一切都需要了解正确的数据集。

编辑:

如果您使用适当的RDF文字,也可以避免使用FILTER,例如:

SELECT ?person
WHERE 
  {
     ?person rdf:type yago:BritishKnights  . 
     ?person foaf:givenName "Walter"@en .
  }  

有关此内容的更多信息,请参阅w3c specification

答案 1 :(得分:1)

我知道这个问题现在已经有三年了,但我刚刚发现它并认为根据wikidata现有的解决方案提供解决方案可能会很有趣。这个链接到维基百科的新语义数据库有一个属性Given name,允许这种类型的查询。

prefix wdt: <http://www.wikidata.org/prop/direct/>
prefix entity: <http://www.wikidata.org/entity/>
SELECT ?item WHERE {
    ?tree0 (wdt:P527)* ?item .
    ?tree0 (wdt:P166|wdt:P361)* entity:Q14420 .
    ?item wdt:P735 entity:Q1369663 .
}

您可以在wikidata query endpoint上运行它,目前有28个,很想知道您在DBpedia找到的数字是否有很大不同。