如何使用SPARQL和DBPedia获取有关个人或其他实体的所有可用信息

如何使用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

我希望能够通过键入一个人的名字,然后检索有关此人或其他实体的所有可用信息,从DBPedia的SPARQL端点获取信息

例如,我知道我可以使用以下查询:

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