如何查询dbpedia资源本体'wikiPageExternalLink'

时间:2012-05-21 21:56:46

标签: python sparql dbpedia

在python中使用sparql \ sparqlwrapper,我如何能够查询某个dbpedia资源的值?例如,我如何才能获得http://dbpedia.org/page/Asturias的dbpedia-owl:wikiPageExternalLink值?     这是一个简单的例子,我将如何查询阿斯图里亚斯的rdfs:标签。但我不知道如何修改查询/查询参数以获取属性/本体的值,而不是rdfs模式中包含的值。这是样本:

from SPARQLWrapper import SPARQLWrapper, JSON, XML, N3, RDF
sparql = SPARQLWrapper("http://dbpedia.org/sparql")
sparql.setQuery("""
    PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
    SELECT ?label
    WHERE { <http://dbpedia.org/resource/Asturias> rdfs:label ?label }
""")
print '\n\n*** JSON Example'
sparql.setReturnFormat(JSON)
results = sparql.query().convert()
for result in results["results"]["bindings"]:
    print result["label"]["value"]

希望收到反馈。提前谢谢!

1 个答案:

答案 0 :(得分:7)

不知道你被困在哪里 - 这很容易:

SELECT ?label
WHERE { <http://dbpedia.org/resource/Asturias>
            dbpedia-owl:wikiPageExternalLink ?label }

如果要在查询中使用它们,通常需要声明名称空间前缀,如rdfs:dbpedia-owl:,但在DBpedia端点上,即使没有,也可以使用。如果您愿意,您仍可以声明它们:

PREFIX dbpedia-owl: <http://dbpedia.org/ontology/>
SELECT ?label
WHERE { <http://dbpedia.org/resource/Asturias>
            dbpedia-owl:wikiPageExternalLink ?label }

您可以转到http://dbpedia.org/sparql并点击右上角附近的“命名空间前缀”,找到与前缀对应的完整URI。

如果要重命名变量(例如,从?label重命名为?link),请执行以下操作:

PREFIX dbpedia-owl: <http://dbpedia.org/ontology/>
SELECT ?link
WHERE { <http://dbpedia.org/resource/Asturias>
            dbpedia-owl:wikiPageExternalLink ?link }

并且您还必须在Python代码中将"label"更改为"link",以获取JSON结果中的值。