开始使用 DBpedia

Getting started with DBpedia

我想开始使用 DBpedia。目前我所知道的是 DBpedia 是维基百科数据的结构化形式,可以使用 SPARQL 对其进行查询。对我来说,DBpedia 的基本思想(为维基百科数据提供结构)似乎真的很棒,所以如果我的问题是基本的,请放轻松。

我的目标

从 DBpedia 中获取简单的数据摘录。例如世界各国及其首都和人口。或者获取 100 个随机的名人,他们的出生日期和地点以及简短的描述。最后我想查询元数据以查找 DBpedia 中的 'entity' 类型(例如山脉?河流?城市?)及其 'properties'。但这是一个单独的问题,一旦我掌握了基础知识,我就可以进行实验。

到目前为止我发现了什么

在Google中找到http://wiki.dbpedia.org/develop/getting-started,但我认为是安装所有DBpedia,我只想查询它。

我也找到了 https://mickael.kerjean.me/2016/05/20/walkthrough-dbpedia-and-triplestore/,但它假定您已经设置了 SPARQL 或 SNORQL,但我不知道如何设置。

我发现 https://docs.data.world/tutorials/sparql/Your_First_Sparql_Query.html 这是 SPARQL 的指南,但它再次假定您使用的是他们自己的 DataWorld 环境。

在 Whosebug 上,我发现 and 但他们再次假定您已经设置了 SPARQL 环境。

问题

  1. 我使用什么软件来编写对 DBpedia 数据的简单查询 - 我需要 SPARQL 还是 SNORQL?我是在本地安装它们还是可以使用基于 Web 的工具?我使用 Windows 10,我对 SQL 查询很满意。
  2. 设置好软件后,获取世界各国、首都和人口列表的最简单查询是什么?
  3. 另外,我如何向 return(例如)100 个随机的人及其基本详细信息编写基本查询?

查看 About DBpedia and Using DBpedia

还有

关于你第一个问题的答案,实际上 SPARQL 是一种查询语言而不是软件,你可以在这里写你的查询 https://dbpedia.org/sparql

为了获得国家,他们的首都和各自的人口:

PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX dbp: <http://dbpedia.org/property/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>

SELECT  min(?country_name) as ?Country_name min(?capital_name) as ?Capital_name min(?population) as ?Population
WHERE {
?country a dbo:Country.
?country rdfs:label ?country_name.
?country dbo:capital ?capital.
?capital  rdfs:label ?capital_name.
?country ?p ?population .
FILTER(?p = dbo:populationTotal || ?p = dbp:populationCensus). 
FILTER NOT EXISTS { ?country dbo:dissolutionYear ?year }
FILTER langMatches( lang(?country_name), "en"  ).
FILTER langMatches( lang(?capital_name), "en"  ).}
GROUP BY ?country_name

对于你的第三个问题,这是一个示例解决方案:

SELECT  distinct ?link ?person_full_name ?birth_year   WHERE { 
     ?link a foaf:Person. 
     ?link ?p ?person_full_name. 
     FILTER(?p IN(dbo:birthName,dbp:birthName,dbp:fullname,dbp:name)). 
     ?link rdfs:label ?person_name .    
     ?person_name bif:contains "abdul" . 
     OPTIONAL { ?link dbo:birthYear ?birth_year .  }
     FILTER(langMatches(lang(?person_full_name), "en"))
     }
     LIMIT 100