我想开始使用DBpedia.目前我所知道的是,DBpedia是维基百科数据的结构化形式,可以使用SPARQL进行查询.对我来说,DBpedia的基本思想(给维基百科数据的结构)看起来真的太棒了,所以如果我的问题是基本的,请放轻松.
我的目标
从DBpedia获取简单的数据摘录.例如世界各国及其首都和人口.或者获得100名随机名人,他们的日期和出生地以及简短的描述.最终我想查询元数据以查找DBpedia中的"实体"类型(例如山脉?里弗斯?城市?)及其"属性".但这是一个单独的问题,一旦我掌握了基础知识,我就可以进行实验.
到目前为止我发现了什么
在谷歌我找到了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环境.
在Stackoverflow上,我从DBpedia找到了来自DBpedia和List国家的列表国家,但他们再次假设您已经设置了SPARQL环境.
问题(S)
关于你的第一个问题的答案,实际上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
Run Code Online (Sandbox Code Playgroud)
对于您的第三个问题,这是一个示例解决方案:
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
Run Code Online (Sandbox Code Playgroud)