【问题标题】:Sparql: getting all politicians who ruled a citySparql:让所有统治城市的政客
【发布时间】:2016-07-29 10:38:11
【问题描述】:

我是 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。或者即使我删除它,我也会得到在意大利出生的人。但不仅仅是政客。第二个问题是我不需要那些出生但统治那个地方的政客。我如何或在哪里可以找到那种“关系/描述符”?现在我只是在谷歌上搜索并复制粘贴一些现有示例,但我想了解如何查找更具体的内容。

提前致谢

【问题讨论】:

  • 我不太确定我是否理解您的问题。你到底想做什么?
  • @aquiros 获取 50 位统治意大利的政客。不管什么时候,就是这样
  • 问题是我添加 ?thing a :Politician 我没有结果
  • 这个具体问题是因为 Politician 是 dbo 前缀的一部分,而不是默认前缀。试试a dbo:Politician
  • 是的,它奏效了。第二个问题是我不希望出生在意大利的政客,只希望那些统治意大利的政客(我知道,这对一个地区更有意义)

标签: sparql


【解决方案1】:

您的第一个查询不起作用,因为 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.
}

它会列出所有谓词。

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

【讨论】:

    猜你喜欢
    • 2013-07-24
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多