Sparql 如何在dpbedia中获取一个人的所有属性,而不仅仅是查询的特定属性

Sparql 如何在dpbedia中获取一个人的所有属性,而不仅仅是查询的特定属性,sparql,wikipedia,dbpedia,Sparql,Wikipedia,Dbpedia,我知道您可以通过简单的查询获得所有属性的列表和所有人员的列表: select distinct ?property where { ?instance a <http://dbpedia.org/ontology/Person> . ?instance ?property ?obj . } 选择distinct?属性,其中{ ?实例a。 ?实例?属性?对象} 但是,我如何获得一个人的所有信息,而不必输入每个数量?Select*不像在SQL中那

我知道您可以通过简单的查询获得所有属性的列表和所有人员的列表:

select distinct ?property where {
         ?instance a <http://dbpedia.org/ontology/Person> . 
         ?instance ?property ?obj . }
选择distinct?属性,其中{
?实例a。
?实例?属性?对象}
但是,我如何获得一个人的所有信息,而不必输入每个数量?Select*不像在SQL中那样提取所有变量

SELECT * WHERE
{ ?p a <http://dbpedia.org/ontology/Person> .
?p <http://dbpedia.org/ontology/knownFor> ?knownFor . }
LIMIT 10
选择*WHERE
{?p a。
?p?知道。}
限制10

这只提供了person和known属性。我以为select*提供所有数量?在任何情况下,我想要的不仅仅是person或其known属性,而是每个person可能的所有值。

您不能将属性作为列获取,但仍然可以将所有属性/值作为行获取

此查询获取Person类型的所有资源的所有属性:

SELECT ?person ?prop ?value WHERE 
{
    ?person a <http://dbpedia.org/ontology/Person> .
    ?person ?prop ?value .
    FILTER ( langMatches(lang(?value), "en") )   
}
LIMIT 100
选择人员道具值,其中
{
?一个人。
个人财产价值。
过滤器(langMatches(lang(?值),“en”))
}
限制100

希望有帮助

@conca已经为您提供了一个简单的SELECT查询,返回您想要的数据

作为替代方案,您可以查看构造或描述查询,其结果将不是一个类似表的结构,而是一个实际的RDF图。对于广泛的“告诉我您对特定主题的所有了解”类型的查询,这些查询通常更容易处理:

CONSTRUCT 
WHERE { ?person a <http://dbpedia.org/ontology/Person> ; 
                ?prop ?value . 
} 
LIMIT 100
构造
在哪里{?一个人;
道具价值。
} 
限制100

描述
哪里{?人a}
限制100

是否要获取特定人员的所有属性和值?是的,这是正确的。虽然我只希望每个列的值都是一个属性,但我认为属性作为列是不可能的,因为sparql查询的响应是一个映射,其中变量作为列,变量的不同可能值作为列rows@conca不仅如此,由于RDF不是数据库,一个人没有固定的属性集,因此对结果中的“列”数量没有实际限制。顺便说一下:
SELECT*
会返回所有变量。但是“all variables”是指“查询中声明的所有变量”,而不是“数据中所有可能的属性/值”。这没有给出任何结果。我认为是语言过滤部分出错了。事实上,它应该是
lang(?.value)
。或者更好地使用
langMatches(str(?value),“en”)
。或者,如果你真的需要关于一个人的所有数据,就完全不使用过滤器……我将
langMatches(str(?value),“en”)
更改为
langMatches(lang(?value),“en”)
。现在查询正在运行。
DESCRIBE 
WHERE { ?person a <http://dbpedia.org/ontology/Person> } 
LIMIT 100