我想选择一个人的所有影响,但也知道他们所知道的是什么。我可以选择/Person
或/Writer
或/Scientist
但是我可以输出另一列,这是一个以某种方式给出其字段的属性吗?
SELECT *
WHERE {
?p a <http://dbpedia.org/ontology/Person> .
?p <http://dbpedia.org/ontology/influenced> ?influenced .
?influenced a <http://dbpedia.org/ontology/Person> .
}
另外,我如何只选择特定本体的所有名称?说我只想要一个dbpedia中所有/ Painters的列表?我正在使用sparql。提前谢谢。
答案 0 :(得分:0)
如果您想要所有画家的列表,您必须根据DBpedia中的数据确定如何定义画家。例如,如果你看http://dbpedia.org/page/Pablo_Picasso,你会看到一些有用的属性,例如
您的查询必须基于此类数据。例如,你可以要求
select ?painter { ?painter a dbpedia-owl:Artist , yago:Painter110391653 }
这太宽泛了,因为人们可以为很多事情所知。您可能需要查看一些DBpedia条目,并查看可用的信息类型。如果您正在寻找某人所知的专业或职业,您需要寻找能够给出某些指示的属性值,并找出您想要使用的属性值。可能有用的一个是dbpprop:field。 http://dbpedia.org/page/Vincent_van_Gogh的值为
要检索其中一些值,您可以使用类似
的查询select ?painter ?field {
?painter a dbpedia-owl:Artist , yago:Painter110391653 .
optional {
?painter dbpprop:field ?field
}
}
一般而言,您需要浏览数据并找出要提取的内容。只有这样,你真的可以提出有效的方法来提取它。