开始使用 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 环境。
问题
- 我使用什么软件来编写对 DBpedia 数据的简单查询 - 我需要 SPARQL 还是 SNORQL?我是在本地安装它们还是可以使用基于 Web 的工具?我使用 Windows 10,我对 SQL 查询很满意。
- 设置好软件后,获取世界各国、首都和人口列表的最简单查询是什么?
- 另外,我如何向 return(例如)100 个随机的人及其基本详细信息编写基本查询?
查看 About DBpedia and Using DBpedia。
还有
- SPARQL interface -- SPARQL 环境已经存在
- Faceted Browser -- 探索数据的另一种方式
- 图形化 SPARQL 查询生成器,iSPARQL
- SNORQL interface
关于你第一个问题的答案,实际上 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
我想开始使用 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 上,我发现
问题
- 我使用什么软件来编写对 DBpedia 数据的简单查询 - 我需要 SPARQL 还是 SNORQL?我是在本地安装它们还是可以使用基于 Web 的工具?我使用 Windows 10,我对 SQL 查询很满意。
- 设置好软件后,获取世界各国、首都和人口列表的最简单查询是什么?
- 另外,我如何向 return(例如)100 个随机的人及其基本详细信息编写基本查询?
查看 About DBpedia and Using DBpedia。
还有
- SPARQL interface -- SPARQL 环境已经存在
- Faceted Browser -- 探索数据的另一种方式
- 图形化 SPARQL 查询生成器,iSPARQL
- SNORQL interface
关于你第一个问题的答案,实际上 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