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

时间:2014-01-21 16:49:31

标签: sparql wikipedia dbpedia

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

select distinct ?property where {
         ?instance a <http://dbpedia.org/ontology/Person> . 
         ?instance ?property ?obj . }

但如何在不输入每个数量的情况下获取所有人的信息? Select *不会像在SQL中那样提取所有变量。

SELECT * WHERE
{ ?p a <http://dbpedia.org/ontology/Person> .
?p <http://dbpedia.org/ontology/knownFor> ?knownFor . }
LIMIT 10

这只给了我这个人和已知的属性。我认为select *给出所有数量?在任何情况下,我不仅要求人或他们的已知属性,而且要为每个人提供所有可能的值。

2 个答案:

答案 0 :(得分:5)

您无法将属性作为列获取,但仍然可以将al属性/值作为行。

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

SELECT ?person ?prop ?value WHERE 
{
    ?person a <http://dbpedia.org/ontology/Person> .
    ?person ?prop ?value .
    FILTER ( langMatches(lang(?value), "en") )   
}
LIMIT 100

希望它有所帮助!

答案 1 :(得分:3)

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

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

CONSTRUCT 
WHERE { ?person a <http://dbpedia.org/ontology/Person> ; 
                ?prop ?value . 
} 
LIMIT 100

DESCRIBE 
WHERE { ?person a <http://dbpedia.org/ontology/Person> } 
LIMIT 100