我想开始使用DBpedia。目前我所知道的是,DBpedia是维基百科数据的结构化形式,可以使用SPARQL进行查询。对我来说,DBpedia的基本思想(给维基百科数据提供结构)看起来真的太棒了,所以如果我的问题是基本的话,请放轻松。
我的目标
从DBpedia获取简单的数据摘录。例如世界各国及其首都和人口。或者获得100名随机名人,他们的日期和出生地以及简短的描述。最后,我想查询元数据,找出哪些类型的'实体'是在DBpedia(例如山脉?里弗斯?城市?)和他们的属性'。但这是一个单独的问题,一旦我掌握了基础知识,我就可以进行实验。
到目前为止我找到了
在Google中我找到http://wiki.dbpedia.org/develop/getting-started,但我认为它是关于安装所有DBpedia的,我只想查询它。
此外我发现https://mickael.kerjean.me/2016/05/20/walkthrough-dbpedia-and-triplestore/但它假设您已经设置了SPARQL或SNORQL,我无法看到如何执行此操作。
Aso我发现https://docs.data.world/tutorials/sparql/Your_First_Sparql_Query.html是SPARQL的指南,但它再次假设您使用的是自己的DataWorld环境。
在Stackoverflow上,我找到了List countries from DBpedia和List countries from DBpedia,但他们再次假设您已经设置了SPARQL环境。
问题(S)
答案 0 :(得分:7)
关于您的第一个问题的答案,实际上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
答案 1 :(得分:1)
结帐About DBpedia和Using DBpedia。
另外