I am trying to run a federated query from an instance of another query engine (more specifically, QLever OSM) to an instance of Virtuoso version 08.03.3330 (dc3dc905a4) (more specifically, dati.isprambiente.it) but I’m receiving this error:
Header row of TSV result for SERVICE query is ““ispra” “cod_istat””, but expected “?ispra ?cod_istat”
So I did some tests calling directly the Virtuoso endpoint in the way I expect other endpoints to call it for federated queries, asking for the TSV response:
curl -X POST https://dati.isprambiente.it/sparql -H "Accept: text/tab-separated-values" -H "Content-type: application/sparql-query" --data "SELECT * WHERE { ?a ?b ?c. } LIMIT 10" --verbose
These were the first rows of the response:
"a" "b" "c"
"http://www.openlinksw.com/schemas/virtrdf#DefaultQuadMap" "http://www.w3.org/1999/02/22-rdf-syntax-ns#type" "http://www.openlinksw.com/schemas/virtrdf#QuadMap"
"http://www.openlinksw.com/schemas/virtrdf#TmpQuadMap" "http://www.w3.org/1999/02/22-rdf-syntax-ns#type" "http://www.openlinksw.com/schemas/virtrdf#QuadMap"
This is valid TSV but is not compliant with the SPARQL specification for the TSV response to SPARQL queries, which would require a result like this:
?a ?b ?c
<http://www.openlinksw.com/schemas/virtrdf#DefaultQuadMap> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.openlinksw.com/schemas/virtrdf#QuadMap>
<http://www.openlinksw.com/schemas/virtrdf#TmpQuadMap> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.openlinksw.com/schemas/virtrdf#QuadMap>
This explains the error above.
Is this a bug in Virtuoso or a misconfiguration of that particular instance? In the second case, what should I suggest the instance managers to do in order to fix this mis-compliance?