I am coding a SPARQL query from Python using SPARQLWrapper. The endpoint is Uniprot, but 50% of time, Iget an error when executing the code :
def getReviewProt(accession):
#print(accession)
mystring = '(uniprot:' + ') (uniprot:'.join(accession) + ')'
#print(mystring)
sparql = SPARQLWrapper("http://sparql.uniprot.org/sparql")
sparql.setQuery("""
PREFIX up_core: <http://purl.uniprot.org/core/>
PREFIX up_taxonomy: <http://purl.uniprot.org/taxonomy/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX apf: <http://jena.hpl.hp.com/ARQ/property#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX fn: <http://www.w3.org/2005/xpath-functions#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX uniprot: <http://purl.uniprot.org/uniprot/>
PREFIX dc: <http://purl.org/dc/elements/1.1/>
SELECT ?is_true
WHERE
{
VALUES (?ac) {"""+mystring+"""}
?ac up_core:reviewed ?is_true
}
""")
sparql.setReturnFormat(JSON)
results = sparql.query().convert()
return results
if __name__ == '__main__' :
import sys
#print(sys.path)
accession = ["Q6GZX4","Q96375","B1XBG2"]
res = getReviewProt(accession)
for r in res['results']['bindings']:
print(r['is_true']['value'])
So I get this error :
QueryBadFormed: a bad request has been sent to the endpoint, probably the sparql query is bad formed
When I try to see the exact error, here is what i get :
Exception:virtuoso.jdbc4.VirtuosoException: SQ156: Internal Optimized compiler error : sqlo table has no index in sqldf.c:3782.
Please report the statement compiled
The most strange is that when I try to execute it works, but like 50 % of the time. I get exactly the same error when making my query in the endpoint at this adress : http://sparql.uniprot.org/sparql . Sometimes it works perfectly, so I'm lost and of course, I want my program to work each time I execute it. They use the Virtuoso software in the endpoint, so I guess the problem comes from there, but I don't know how Virtuoso works. I'm new to SPARQL so it's quite hard for me to understand and resolve all errors, Can anyone help me ? Or if this problem has already been solved, I would be happy to have the link :) Thank you
The problem is not in your code, but in one of the two servers that run the sparql.uniprot.org endpoint. If you request went to the 'good' machine it worked, if it went to the 'broken' machine it failed. Both machines should be good now.