From 9e69d46f08bd23474dcbbb2a130da37417b1938e Mon Sep 17 00:00:00 2001 From: Javier Sanchez Date: Thu, 30 Nov 2023 14:32:59 +1000 Subject: [PATCH] Fix in SPARQL post request to virtuoso (it's made differently when authentication is enabled) --- src/linkeddata_api/data/sparql.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/linkeddata_api/data/sparql.py b/src/linkeddata_api/data/sparql.py index 43596b3..ef714fb 100644 --- a/src/linkeddata_api/data/sparql.py +++ b/src/linkeddata_api/data/sparql.py @@ -18,12 +18,19 @@ def post( """ headers = { "accept": accept, - "content-type": "application/sparql-query", + "content-type": "application/x-www-form-urlencoded" + if "virtuoso.tern" in sparql_endpoint + else "application/sparql-query", } - response = requests.post( - url=sparql_endpoint, headers=headers, data=query, timeout=60 - ) + if "virtuoso.tern" in sparql_endpoint: + response = requests.post( + url=sparql_endpoint, headers=headers, params={"query": query}, timeout=60 + ) + else: + response = requests.post( + url=sparql_endpoint, headers=headers, data=query, timeout=60 + ) try: response.raise_for_status()