How can I query a country profile with DBPedia like http://dbpedia.org/page/France and get a property like language?
3 回答
让我们从头开始,因为您没有说出您尝试过的内容。
DBpedia 是一个关于所谓资源的信息数据库:来自存储为 RDF 三元组的维基百科文章的事实。资源由 URI 标识;DBpedia 使用http://dbpedia.org/resource/*
where与in*
相同的形式。*
http://en.wikipedia.org/wiki/*
所以 DBpedia 有关于资源http://dbpedia.org/resource/France的事实。如果您在浏览器中查找此资源,您将被重定向到http://dbpedia.org/page/France,因为您的浏览器中无法显示国家 France,但其描述可以。
DBpedia 知道的事实包括
<http://dbpedia.org/resource/France> <http://dbpedia.org/ontology/language> <http://dbpedia.org/resource/French_language>
它基本上说“法国[的]语言[是]法语。”
要通过 API 获得这一事实,您可以使用标准 RDF 查询语言和协议SPARQL。DBpedia SPARQL 端点是您向 DBpedia 发送 SPARQL 查询的地方,它有一个 Web 表单,可让您输入和提交查询。如果您只想要一个显示法国使用的语言的 HTML 表格,请将表单的设置保留为默认值并使用:
select ?language ?languageName
where {
dbpedia:France dbpedia-owl:language ?language .
?language rdfs:label ?languageName .
}
这意味着:“给我法国用作语言的资源和名称。”
dbpedia:France
是 的缩写<http://dbpedia.org/resource/France>
,dbpedia-owl:language
是 的缩写<http://dbpedia.org/ontology/language>
。
如果您想要国家和这些国家使用的语言,请使用:
select distinct ?country ?language
where {
?country a dbpedia-owl:Country .
?country dbpedia-owl:language ?language .
}
LIMIT 100
这意味着:“给我 100 个国家资源组合以及这些国家/地区用作语言的资源。”
我遗漏了一些细微差别,但这应该可以帮助您入门。
正如@Bergi 在评论中指出的那样,请参阅http://wiki.dbpedia.org/OnlineAccess以获取可能的在线访问方法列表。
除非他们提供某种 API,否则您唯一的选择是“屏幕抓取”页面 - 换句话说,使用 curl(或其他方法)加载页面,然后搜索“dbpedia-owl:language”并获取字符串紧随其后 (dbpedia:French_language) 并对其进行解析以使其看起来更好看。