以前Kobe.R no 13に参加してきました - shigeponが関心のある技術情報などでLinked Open Dataが気になってたので、Pythonでいじれるライブラリを探してみて遊んでみた。
Sparqlで色々試してみると面白そうなので、pip search sparqlで出た結果とググってみた結果から、SPARQLWrapperが何となく良さげかなと思い、インストールしてみた。
$ pip install SPARQLWrapper
これだけでおk
djangoのshellから使ってみる
$ python manage.py shell
from SPARQLWrapper import SPARQLWrapper, JSON
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 }
""")
sparql.setReturnFormat(JSON)
results = sparql.query().convert()
<!-- more -->
for result in results["results"]["bindings"]:
print(result["label]["value"])
とやるとこんな感じの結果が出た
Asturias
منطقة أستورياس
Asturien
Asturias
Asturies
Asturie
アストゥリアス州
Asturië (regio)
Asturia
Astúrias
Астурия
阿斯图里亚斯
参考:SPARQL Endpoint interface to Python
Sparqlの書き方はKobe.R: Kobe.R #13 + Open Dataに載っているスライドが参考になる。
Linked Open Dataで1つ気になるのが、エンドポイントをどうやって探すかなんだけど、今の所ググってみるくらいしかやり方が分からない。ここらへん何か良い方法無いのかなー。