3232
3333
3434# Run a query against a web-api
35- def runquery (url , params = {}, session = requests ):
35+ def runquery (url , params = None , data = None , session = requests ):
36+ if params is None :
37+ params = {}
3638 headers = {"User-Agent" : user_agent }
37- r = session .get (url , headers = headers , params = params )
39+ if data is not None :
40+ headers ["Content-Type" ] = "application/sparql-query"
41+ r = session .post (url , headers = headers , params = params , data = data )
42+ else :
43+ r = session .get (url , headers = headers , params = params )
3844 if r .status_code == 200 :
3945 return r .json ()["results" ]
40- if r .status_code == 429 or r . status_code == 500 :
46+ if r .status_code in [ 429 , 500 ] :
4147 raise TimeoutError (r .text )
4248 raise ValueError (r .text )
4349
@@ -57,7 +63,7 @@ def runSPARQLquery(query, endpoint=None):
5763 ]
5864 elif endpoint == "Qlever" :
5965 endpoint_url = "https://qlever.dev/api/wikidata"
60- return runquery (endpoint_url , params = {"query" : query } )["bindings" ]
66+ return runquery (endpoint_url , params = {}, data = query )["bindings" ]
6167 else :
6268 raise ValueError ("Unknown endpoint {}" .format (endpoint ))
6369
0 commit comments