我知道你可以通过简单的查询获得所有属性的列表和所有人的列表:
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 *给出所有数量?在任何情况下,我不仅要求人或他们的已知属性,而且要为每个人提供所有可能的值。
答案 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