在 python 中使用 sparql\sparqlwrapper,我将如何查询某个 dbpedia 资源的值?例如,我将如何获得 http://dbpedia.org/page/Asturias 的 dbpedia-owl:wikiPageExternalLink 值? ? 这是一个简单的示例,说明我将如何查询阿斯图里亚斯的 rdfs:label。但我不知道如何修改查询/查询参数以获取 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"]
希望得到反馈。提前致谢!
最佳答案
不确定自己被困在哪里——这真的很简单:
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 }
并且您还必须在从 JSON 结果中获取值的 Python 代码中将 “label”
更改为 “link”
。
关于python - 如何查询dbpedia资源本体 'wikiPageExternalLink',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10693216/