PythonパッケージSPARQLWrapperを使用したSPARQLクエリはかなり新しいです。次のクエリを使用して、DBpedia から結果を取得しようとしていました。
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX type: <http://dbpedia.org/class/yago/>
PREFIX prop: <http://dbpedia.org/property/>
SELECT ?s ?p
WHERE {
?country a type:LandlockedCountries ;
rdfs:label ?s ;
prop:populationEstimate ?p .
FILTER (?p > 15000000) .
}
Python 2.7 で書かれた私のコードは次のとおりです。
from SPARQLWrapper import SPARQLWrapper, JSON, POST
import sys
def main(argv):
endpoint = str("http://dbpedia.org/sparql")
# QUERY as mentioned above
query = str(QUERY)
query = query.replace("__oc__","{")
query = query.replace("__ob__","[")
query = query.replace("__cc__","}")
query = query.replace("__cb__","]")
query = query.replace("__cr__"," ")
query = query.replace("__cn__"," ")
print "Parsed Query: " + query
sparql = SPARQLWrapper(endpoint)
sparql.setQuery(query)
sparql.setMethod(POST)
sparql.setReturnFormat(JSON)
results = sparql.query().convert()
render = str("html")
if render == "html":
html_render(results)
else:
tab_render(results)
def html_render(results):
for result in results["results"]["bindings"]:
print result["s"]["value"], result["p"]["value"]
def tab_render(results):
for result in results["results"]["bindings"]:
print result["s"]["value"], result["p"]["value"]
if __name__ == '__main__':
main(sys.argv)
国名と人口の束の名前を受け取ることになっています。ただし、次のような結果が 1 つだけ得られます。
アフガニスタン 31822848
私は何か間違ったことをしていますか?どんな種類の助けでも大歓迎です。