我是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
即使我删除SELECT
的第二行,我也没有结果。但是,如果我改变第一行:?thing a dbo:Person
。或者即使我将其删除,我也会得到在意大利出生的人。但不只是政治家。第二个问题是我不需要出生但却统治那个地方的政治家。我如何或在哪里可以找到那种“关系/描述符”?现在我只是谷歌搜索和复制粘贴一些现有的例子,但我想了解如何寻找更具体的事情。
提前致谢
答案 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.
}
它将列出所有谓词。
我建议你浏览一两位政治家并查看他们必须检查的谓词是否适合你。