Re: [Virtuoso-users] Reification alternative

Aldo,

On Wed, 2010-10-13 at 16:02 -0300, Aldo Bucchi wrote:
> From the docs:
> 
> "output:route: works only for SPARUL operators and tells the SPARQL
> compiler to generate procedure names that differ from default. As a
> result, the effect of operator will depend on application. That is for
> tricks. E.g., consider an application that extracts metadata from DAV
> resources stored in the Virtuoso and put them to RDF storage to make
> visible from outside. When a web application has permissions and
> credentials to execute a SPARUL query, the changed metadata can be
> written to the DAV resource (and after that the trigger will update
> them in the RDF storage), transparently for all other parts of
> application."
> 
> Where can I find more docs on this feature?
> ( I don't actually need this, just asking )

Oops, looks like functions are not yet in the User's Guide. Will appear
there soon.

To make a custom repository for RDF data usable from SPARUL, one should
create two functions, one to deal with inserts or deletes of
individually defined triples and one to manipulate at graph level, such
as SPARUL CLEAR GRAPH statement. If the repository is named NOTARY, then
the first function should be named
DB.DBA.SPARQL_ROUTE_DICT_CONTENT_NOTARY (due to types of arguments they
get --- triples to insert or delete are passed in "DICTionary objects"),
and the second should be DB.DBA.SPARQL_ROUTE_MDW_NOTARY (and MDW stands
for "mass destruction weapon" and warns about the effect that the
function under development may produce while not fully debugged)

Arguments for both functions are in the same order:
DB.DBA.SPARQL_ROUTE_DICT_CONTENT_NOTARY (
  in graph_to_edit varchar,
  in operation_name varchar, --- the value passed will be 'INSERT',
'DELETE' or 'MODIFY'
  in storage_name varchar or null, --- value of define input:storage
  in output_storage_name varchar or null, --- reserved, now NULL
  in output_format_name varchar or null,--- value of define
output:format
  in dict_of_triples_to_delete, --- (NULL is passed for INSERT)
  in dict_of_triples_to_insert, --- (NULL is passed for DELETE)
  NULL,--- reserved
  in uid_and_gs_cbk any, --- authentication data (numeric UID or vector
of UID and name of application-specific graph security callback
function)
  in log_mode integer,
  in report_flag --- 1 if function creates a small result set with
human-friendly status report

DB.DBA.SPARQL_ROUTE_MDW_NOTARY (
  in graph_to_edit varchar,
  in operation_name varchar, --- the value passed will be 'CREATE',
'DROP', or 'CLEAR'
  in storage_name varchar or null, --- value of define input:storage
  in output_storage_name varchar or null, --- reserved, now NULL
  in output_format_name varchar or null,--- value of define
output:format
  in aux any, --- flags like 'QUIET'
  NULL, --- reserved
  NULL,--- reserved
  in uid_and_gs_cbk any, --- authentication data (numeric UID or vector
of UID and name of application-specific graph security callback
function)
  in log_mode integer,
  in report_flag --- 1 if function creates a small result set with
human-friendly status report
)


Best Regards,

Ivan Mikhailov
OpenLink Software
http://virtuoso.openlinksw.com

P.S. As shown by Google, WMD is more popular variant of abbreviation
than MDW and, ironically, WMD also stands for "World Movement for
Democracy".

Received on Wednesday, 13 October 2010 20:32:43 UTC