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

How to get all available information about a Person or other entity with SPARQL and DBPedia

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

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

SELECT * {
    <http://dbpedia.org/resource/Aristotle>
        dbo:birthYear ?birth;
        dbo:deathYear ?death;
        dbo:abstract ?comment.
    FILTER (lang(?comment)='en')
}
LIMIT 10

获取有关亚里士多德生卒年的信息以及摘要中可用的信息。

但是,我想要实现的是在不指定每个属性的情况下获取一个人的每个可用属性的所有可用信息。

这可能吗,或者我应该直接转到 DBPedia 的 ontology 并列出查询中 Person 可用的所有属性?

您可以像这样使用变量谓词:

 SELECT ?p ?o {
    <http://dbpedia.org/resource/Aristotle>
        ?p ?o . #?p is now a variable
   FILTER(LANG(?o) = 'en' || LANG(?o) = '' ||  !BOUND(LANG(?o)) )
}

请注意,当对象 ?o 的语言被定义时 (a.k.a。'bound') 我们 return ?o 是英语,或者当 ?o 是另一个文字(例如一个数字,它的语言绑定到 '',我们 return 文字。 否则当没有语言时,我们只是 return ?o(例如对于 IRI、空白节点等)。