我不相信维基百科的信息框会考虑到某个人姓名的各个部分,例如将姓氏与给定(又名第一或基督教)名称分开等等。
但我也相信DBPedia除了直接来自维基百科外,还使用了其他几种本体。
所以我想知道的是,是否可以制作SPARQL查询,这些查询将根据他们的名字从维基百科中选择人员。
例如我可以查询All knights of the British empire whose first name is "Tim"
吗?
答案 0 :(得分:3)
这是一个类似于你想要的查询:
SELECT *
WHERE
{
?person rdf:type yago:BritishKnights .
?person foaf:givenName ?name.
FILTER regex(?name, "Walter", "i")
}
LIMIT 100
选择名为“Walter”的英国骑士。它适用于DBPedia sparql endpoint。我认为这是一个不错的起点。
您会发现以下资源非常有用:
Knights by occupation - 在这里您可以找到更多资源的链接,而不仅仅是BritishKnights。例如,上面的查询不会返回音乐家和演员,而是可以在不同的类别中找到它们。
Knights - 更为一般,在这里,您可以找到描述来自不同国家/地区等骑士的资源的超链接。
givenName
属性编辑: 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找到的数字是否有很大不同。