2012-05-21 93 views
7

在python中使用sparql \ sparqlwrapper,我將如何能夠查詢某個dbpedia資源的值?例如,我將如何獲得http://dbpedia.org/page/Asturias的dbpedia-owl:wikiPageExternalLink值? 下面是一個簡單的例子,我將如何查詢阿斯圖里亞斯的rdfs:標籤。但是我不知道如何修改查詢/查詢參數來獲取屬性/本體的值,而不是包含在rdfs模式中的值。下面是示例:如何查詢dbpedia資源本體'wikiPageExternalLink'

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"] 

希望能夠收到反饋。提前致謝!

回答

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結果。

+0

感謝您的意見。但是在sparql的「Default Data Set Name(Graph IRI)」下,我應該放什麼?再次,謝謝! – jaysonpryde

+2

只需離開該領域 – cygri