如何使用SPARQL和DBPedia获取有关个人或其他实体的所有可用信息
我希望能够通过键入一个人的名字,然后检索有关此人或其他实体的所有可用信息,从DBPedia的SPARQL端点获取信息 例如,我知道我可以使用以下查询:如何使用SPARQL和DBPedia获取有关个人或其他实体的所有可用信息,sparql,dbpedia,Sparql,Dbpedia,我希望能够通过键入一个人的名字,然后检索有关此人或其他实体的所有可用信息,从DBPedia的SPARQL端点获取信息 例如,我知道我可以使用以下查询: SELECT * { <http://dbpedia.org/resource/Aristotle> dbo:birthYear ?birth; dbo:deathYear ?death; dbo:abstract ?comment. FILTER (lang(?comm
SELECT * {
<http://dbpedia.org/resource/Aristotle>
dbo:birthYear ?birth;
dbo:deathYear ?death;
dbo:abstract ?comment.
FILTER (lang(?comment)='en')
}
LIMIT 10
选择*{
dbo:出生年份?出生;
dbo:死亡年?死亡;
dbo:摘要?评论。
过滤器(lang(?comment)='en')
}
限制10
获取有关亚里士多德出生和死亡年份的信息以及摘要中提供的信息
但是,我想要实现的是,在不指定每个属性的情况下,为每个可用属性获取个人的所有可用信息
这是可能的,还是我应该转到DBPedia的本体并在查询中列出
人员可用的所有属性?您可以使用如下变量谓词:
SELECT ?p ?o {
<http://dbpedia.org/resource/Aristotle>
?p ?o . #?p is now a variable
FILTER(LANG(?o) = 'en' || LANG(?o) = '' || !BOUND(LANG(?o)) )
}
SELECT?p?o{
p?o.#?p现在是一个变量
过滤器(LANG(?o)='en'| | LANG(?o)=''| |!绑定(LANG(?o)))
}
请注意,当对象的语言?o
被定义(也称为“绑定”)时,我们返回英语中的?o
,或者当?o
是另一个文本(例如,一个数字,其语言绑定到“”)时,我们返回文本。
否则,当没有语言时,我们只返回?o
(例如,对于IRIs、blanknodes等).一个问题:您知道为什么dbpedia中的实际页面与查询提供的信息不同吗?是否有方法在网页中提供更多类似的信息?不确定。您是否有一个示例,其中存在您不想看到的特殊差异?好的,我已经确定了问题。通过筛选仅将绑定和绑定到“en”不会返回有关其他数据类型的大量信息,例如areaTotal
populationDensity
。@Valeriocococchi您的语句不是100%正确,或者我误解了-它返回所有带有英语或无语言标记的绑定。任何超出此范围的内容都需要使用类似合并
或多个
可选模式以应用首选项它不返回数字,因为它为没有语言标记的任何文本返回空字符串。!bound()
仅适用于URI和bNode,因为在那里您必须应用str
使函数的计算结果不是false