The requested subsequence of BLOB is longer than 10Mb, thus it cannot be stored as a string
I have Microsoft academic graph loaded in a local Virtuoso endpoint. The graph is 10B+ triples. When I try to use isql to execute SPARQL query like —
/isql 127.0.0.1:1111 dba dba exec="set blobs on; sparql define output:format '"TSV"' SELECT DISTINCT ?s ?p ?o from <http://mag.org> WHERE { ?s a <http://mag/paper>. ?s ?p ?o. } " > output.tsv
— and export the results into a TSV file, I got the error "The requested subsequence of BLOB is longer than 10Mb, thus it cannot be stored as a string".
When I set the limit to 100K it works well.
My query returns 120M triples, how I can do that in a single query?
I have tried a batch of queries by setting a limit and offset but it takes a too long time.
Can you provide:
-
The output of running the following query to check the max length of the object values in the
RDF_OBJtable:select max (length(RO_LONG)) from RDF_OBJ; -
Run
__dbf_set ('callstack_on_exception', 1);, which should provide more details on the source of the error, and then re-run your query.
Also, does the error occur when other output formats are chosen?
Hi @HughWilliams , thanks for your reply, here are the outputs:
-
max (length(RO_LONG)) = 165124 -
after enabling the call-stack the detailed Error is
Error 22023: [Virtuoso Driver][Virtuoso Server]HT057: The STRING session in string_output_string is longer than 10Mb. Either use substring to access it in parts or place less data in it. in string_output_string:(BIF), DB.DBA.RDF_FORMAT_RESULT_SET_AS_TSV_FIN.
also, it happens with different output formats (TSV, JSON, NT)
Thanks for the additional information , we are looking into the cause of the error ...