16.1.5.Programatically resolving DB.DBA.RDF_QUAD.O to SQL
This section describes how to resolve programatically the internal representation of DB.DBA.RDF_QUAD.O to its SQL value.
When operating over RDF_QUAD table directly, in order to transform all values obtained from column O to the explicit SQL type in a programmatic way, should be used the following hints depending on the case:
-
The SQL value can be extracted as
__ro2sq(O)
.
-
The datatype can be extracted as
DB.DBA.RDF_DATATYPE_OF_OBJ (O)
if IRI_ID of the type is enough or
__ro2sq ( DB.DBA.RDF_DATATYPE_OF_OBJ(O))
-
The language can be extracted as
DB.DBA.RDF_LANGUAGE_OF_OBJ (O)
.
It could be helpful to be created an Linked Data View for a custom table with formats rdfdf:default or rdfdf:default-nullable for columns similar to O, and let SPARQL perform the rest.
To track SPARQL, use the following functions:
select sparql_to_sql_text ('query text here without a leading SPARQL keyword and trailing semicolon')
or
string_to_file ('filename.sql', sparql_to_sql_text ('query text'), -2);
So for example to track the following SPARQL query:
SPARQL define input:storage "" select distinct ?graph_rvr_fixed from <http://www.openlinksw.com/schemas/virtrdf#> where { ?qmv virtrdf:qmGraphRange-rvrFixedValue ?graph_rvr_fixed }
execute
SQL>select sparql_to_sql_text('define input:storage "" select distinct ?graph_rvr_fixed from <http://www.openlinksw.com/schemas/virtrdf#> where { ?qmv virtrdf:qmGraphRange-rvrFixedValue ?graph_rvr_fixed }'); callret VARCHAR _______________________________________________________________________________ SELECT __ro2sq ("s-1-0_rbc"."graph_rvr_fixed") AS "graph_rvr_fixed" FROM (SELECT DISTINCT __rdf_sqlval_of_obj ( /*retval[*/ "s-1-1-t0"."O" /* graph_ rvr_fixed */ /*]retval*/ ) AS /*tmpl*/ "graph_rvr_fixed" FROM DB.DBA.RDF_QUAD AS "s-1-1-t0" WHERE /* field equal to URI ref */ "s-1-1-t0"."G" = __i2idn ( /* UNAME as sqlval */ __box_flags_tweak ( 'http://www.openlinksw.com/schemas/virtrdf#' , 1)) AND /* field equal to URI ref */ "s-1-1-t0"."P" = __i2idn ( /* UNAME as sqlval */ __box_flags_tweak ( 'http://www.openlinksw.com/schemas/virtrdf#qmGraphRange-rvrFixedValue' , 1)) OPTION (QUIETCAST)) AS "s-1-0_rbc" 1 Rows. -- 321 msec.
or
SQL>string_to_file ('mytest.sql', sparql_to_sql_text ('define input:storage "" select distinct ?graph_rvr_fixed from <http://www.openlinksw.com/schemas/virtrdf#> where { ?qmv virtrdf:qmGraphRange-rvrFixedValue ?graph_rvr_fixed }'), -2);
As result will be created file with the given name, i.e. mytest.sql and its content should be:
SELECT __ro2sq ("s-1-0_rbc"."graph_rvr_fixed") AS "graph_rvr_fixed" FROM (SELECT DISTINCT __rdf_sqlval_of_obj ( /*retval[*/ "s-1-1-t0"."O" /* graph_rvr_fixed */ /*]retval*/ ) AS /*tmpl*/ "graph_rvr_fixed" FROM DB.DBA.RDF_QUAD AS "s-1-1-t0" WHERE /* field equal to URI ref */ "s-1-1-t0"."G" = __i2idn ( /* UNAME as sqlval */ __box_flags_tweak ( 'http://www.openlinksw.com/schemas/virtrdf#' , 1)) AND /* field equal to URI ref */ "s-1-1-t0"."P" = __i2idn ( /* UNAME as sqlval */ __box_flags_tweak ( 'http://www.openlinksw.com/schemas/virtrdf#qmGraphRange-rvrFixedValue' , 1)) OPTION (QUIETCAST)) AS "s-1-0_rbc"