Sparql:让所有统治城市的政治家

时间:2016-07-28 11:11:04

标签: sparql

我是sparql的新手,我正在尝试了解如何获取构建查询所需的资源。我开始试图让所有统治城市或国家的政治家,现在我可以做到以下几点:

我开始关注snorql中的链接(在前缀中)并通过在末尾添加“politician”来寻找实体。我找到了一个:

PREFIX : <http://dbpedia.org/resource/>

所以我写了 http://dbpedia.org/resource/Politician ,资源确实存在。我试着以这种方式使用它:

PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX dbpedia: <http://dbpedia.org/resource/>
SELECT ?thing WHERE { 
   ?thing a :Politician .
   ?thing dbo:birthPlace dbpedia:Italy.
}
LIMIT 50

Run in virtuoso

即使我删除SELECT的第二行,我也没有结果。但是,如果我改变第一行:?thing a dbo:Person。或者即使我将其删除,我也会得到在意大利出生的人。但不只是政治家。第二个问题是我不需要出生但却统治那个地方的政治家。我如何或在哪里可以找到那种“关系/描述符”?现在我只是谷歌搜索和复制粘贴一些现有的例子,但我想了解如何寻找更具体的事情。

提前致谢

1 个答案:

答案 0 :(得分:3)

您的第一个查询不起作用,因为Politician不是默认(:)命名空间的一部分,而是存在于DBpedia Ontology命名空间(dbo)中。

所以,你的查询应该是:

PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX dbpedia: <http://dbpedia.org/resource/>
SELECT ?thing WHERE { 
   ?thing a dbo:Politician .
   ?thing dbo:birthPlace dbpedia:Italy.
}
LIMIT 50

为了列出统治意大利的所有政治家,你需要知道哪个是“被统治者”的谓词。一旦你拥有它,你就可以构建一个查询。

要列出数据库中存在的所有谓词,您可以编写类似这样的内容

SELECT DISTINCT(?b) WHERE { 
?a ?b ?c.
}

它将列出所有谓词。

我建议你浏览一两位政治家并查看他们必须检查的谓词是否适合你。