Hi,
In our application, we want to create many different dump functions to dump
different subset of triple collections from database.
According to the wiki page:
http://virtuoso.openlinksw.com/dataspace/doc/dav/wiki/Main/VirtRDFDatasetDump
we can define dump one graph function in isql command line. Since we will
create hundreds of customized dump functions, we do not want to copy and
paste to isql command line. Instead we want to prepare a shell script.
In the bash shell, we need to take care of single quote by converting ' to
'"'"'.
Basically, I copy and paste the create procedure into shell script
surrounded by:
/opt/virtuoso/bin/isql 1111 dba <password> exec='<create procedure
function>'
But I always got this error
*** Error 37000: [Virtuoso Driver][Virtuoso Server]SQ074: Line 40:
at line 0 of Top-Level:
although the create procedure function itself works fine in the isql
command line.
Can anyone help me out?
Thank you very much!
Best,
Gang
-----------------------------------------------
The shell command is as follow:
/opt/virtuoso/bin/isql 1111 dba <password> verbose=on banner=off prompt=off
echo=ON errors=stdout \
exec='CREATE PROCEDURE dump_one_graph
( IN srcgraph VARCHAR ,
IN out_file VARCHAR ,
IN file_length_limit INTEGER := 1000000000
)
{
DECLARE file_name VARCHAR;
DECLARE env,
ses ANY;
DECLARE ses_len,
max_ses_len,
file_len,
file_idx INTEGER;
SET ISOLATION = '"'"'uncommitted'"'"';
max_ses_len := 10000000;
file_len := 0;
file_idx := 1;
file_name := sprintf ('"'"'%s%06d.ttl'"'"', out_file, file_idx);
string_to_file ( file_name || '"'"'.graph'"'"',
srcgraph,
-2
);
string_to_file ( file_name,
sprintf ( '"'"'# Dump of graph <%s>, as of %s\n@base
<> .\n'"'"',
srcgraph,
CAST (NOW() AS VARCHAR)
),
-2
);
env := vector (dict_new (16000), 0, '"''"', '"''"', '"''"', 0, 0, 0, 0,
0);
ses := string_output ();
FOR (SELECT * FROM ( SPARQL DEFINE input:storage ""
SELECT ?s ?p ?o { GRAPH `iri(?:srcgraph)` { ?s ?p
?o } }
) AS sub OPTION (LOOP)) DO
{
http_ttl_triple (env, "s", "p", "o", ses);
ses_len := length (ses);
IF (ses_len > max_ses_len)
{
file_len := file_len + ses_len;
IF (file_len > file_length_limit)
{
http ('"'"' .\n'"'"', ses);
string_to_file (file_name, ses, -1);
gz_compress_file (file_name, file_name||'"'"'.gz'"'"');
file_delete (file_name);
file_len := 0;
file_idx := file_idx + 1;
file_name := sprintf ('"'"'%s%06d.ttl'"'"', out_file,
file_idx);
string_to_file ( file_name,
sprintf ( '"'"'# Dump of graph <%s>, as of
%s (part %d)\n@base <> .\n'"'"',
srcgraph,
CAST (NOW() AS VARCHAR),
file_idx),
-2
);
env := VECTOR (dict_new (16000), 0, '"''"', '"''"',
'"''"', 0, 0, 0, 0, 0);
}
ELSE
string_to_file (file_name, ses, -1);
ses := string_output ();
}
}
IF (LENGTH (ses))
{
http ('"'"' .\n'"'"', ses);
string_to_file (file_name, ses, -1);
gz_compress_file (file_name, file_name||'"'"'.gz'"'"');
file_delete (file_name);
}
}
;'
------------------------------------------------------------------------------
BPM Camp - Free Virtual Workshop May 6th at 10am PDT/1PM EDT
Develop your own process in accordance with the BPMN 2 standard
Learn Process modeling best practices with Bonita BPM through live exercises
http://www.bonitasoft.com/be-part-of-it/events/bpm-camp-virtual- event?utm_
source=Sourceforge_BPM_Camp_5_6_15&utm_medium=email&utm_campaign=VA_SF
_______________________________________________
Virtuoso-users mailing list
Virtuoso-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/virtuoso-users