2016-07-28 64 views
0

我是sparql的新手,我试图了解如何获取构建查询所需的资源。我开始试图让所有统治一个城市或一个国家的政客们,目前我只能做到以下几点:Sparql:获得统治城市的所有政治家

我开始遵循snorql中的链接(在前缀中)并寻找一个实体最后加入“政治家”。我发现一个:

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。或者即使我将其删除,我也会得到在意大利出生的人。但不只是政治家。第二个问题是我不需要那些出生但统治那个地方的政治家。我如何或在哪里可以找到那种“关系/描述符”?现在我只是用google和复制一些现有的例子,但我想了解如何寻找更具体的东西。

在此先感谢

+0

我不太清楚我的理解你的问题。你到底想做什么? – antorqs

+0

@aquiros让50位政治家统治意大利。不管什么时候,只是 – gal007

+0

问题是我添加?事情a:政治家我没有结果 – gal007

回答

3

你的第一个查询不工作,因为Politician不是默认(:)命名空间的一部分,而是它存在于DBpedia中本体命名空间(dbo)。

所以,您的查询应该是:

​​

要列出所有政治家谁统治意大利,你需要知道它是“从娃娃抓起”的断言。一旦你有了它,你可以构造一个查询。

要列出存在于数据库中的所有谓词,你可以写这样的事情

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

而且它会列出所有的谓词。

我会建议你浏览一两个政治家,看他们必须检查一下它是否适合你的谓词。