在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"]
希望收到反馈。提前谢谢!
答案 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结果中的值。