首页 文章

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

提问于
浏览
7

在python中使用sparql \ sparqlwrapper,我如何能够查询某个dbpedia资源的值?例如,我如何才能获得http://dbpedia.org/page/Asturias的dbpedia-owl:wikiPageExternalLink值?这里's a simple example on how will I be able to query for the rdfs:label of Asturias. But I don't知道如何修改查询/查询参数以获取属性/本体的值,而不是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 回答

  • 7

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

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

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

    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结果中的值 .

相关问题