2012-05-21 12 views
7

Pythonでsparql \ sparqlwrapperを使用すると、特定のdbpediaリソースの値をどのように照会できますか?たとえば、dbpedia-owl:wikiPageExternalLinkの値をhttp://dbpedia.org/page/Asturiasにするにはどうすればよいですか? Asturiasの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を見つけることができます。

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

ます。また、値を取得するPythonコードで"link""label"を変更する必要があります:あなたは(?labelから?linkに、例えば)変数の名前を変更したい場合は

そして、このようにそれを行いますJSONの結果から

+0

フィードバックに感謝します。しかし、sparqlの "デフォルトデータセット名(グラフIRI)"の下に、私は何を置くべきですか?もう一度、ありがとう! – jaysonpryde

+2

そのフィールドだけをそのまま残す – cygri