Virtuoso APIs for FCT REST services
Why
Enables the use Virtuoso's VSP/VSPX technology to produce (X)HTML-based Linked Data explorer pages that are endowed with high-performance (in-process) faceted browsing capability.What
A Virtuoso Stored Procedure that enables faceted browsing over Linked Data hosted in the RDF Quad Store. This also includes Linked Data that is progressively added to the Quad Store via URI de-referencing.How
You can use this API with Virtuoso SQL calls that provide data to your VSP/VSPX, ASP.NET, PHP, etc., -based interfaces using ODBC, JDBC, ADO.NET, or XMLA connectivity (SPASQL) to Virtuoso.Examples:
API Definition
CREATE PROCEDURE fct_exec ( IN tree ANY , IN timeout INT ) { DECLARE start_time, view3, inx, n_rows INT ; DECLARE sqls, msg, qr, qr2, act, query VARCHAR ; DECLARE md, res, results, more ANY ; DECLARE tmp ANY ; DECLARE offs, lim INT ; SET result_timeout = _min ( timeout, ATOI ( registry_get ('fct_timeout_max') ) ) ; offs := xpath_eval ('//query/view/@offset', tree); lim := xpath_eval ('//query/view/@limit', tree); -- db_activity (); results := vector (null, null, null); more := vector (); IF ( xpath_eval ( '//query[@view3="yes"]//view[@type="text"]', tree ) IS NOT NULL ) { more := VECTOR ('classes', 'properties'); } sqls := '00000'; qr := fct_query ( xpath_eval ('//query', tree, 1) ) ; query := qr; -- dbg_obj_print (qr); qr2 := fct_xml_wrap (tree, qr); start_time := msec_time (); dbg_printf('query: %s', qr2); EXEC ( qr2, sqls, msg, vector (), 0, md, res ) ; n_rows := row_count (); act := db_activity (); SET result_timeout = 0; IF ( sqls <> '00000' AND sqls <> 'S1TAT' ) SIGNAL (sqls, msg); IF ( NOT ISARRAY (res) OR 0 = length (res) OR NOT ISARRAY (res[0]) OR 0 = length (res[0]) ) results[0] := xtree_doc ('<result/>'); ELSE results[0] := res[0][0]; inx := 1; FOREACH (VARCHAR tp IN more) DO { tree := XMLUpdate ( tree, '/query/view/@type', tp, '/query/view/@limit', '40', '/query/view/@offset', '0' ) ; qr := fct_query (xpath_eval ('//query', tree, 1)); qr2 := fct_xml_wrap (tree, qr); sqls := '00000'; SET result_timeout = _min ( timeout, ATOI ( registry_get ('fct_timeout_max') ) ) ; EXEC ( qr2, sqls, msg, vector (), 0, md, res ); n_rows := row_count (); act := db_activity (); SET result_timeout = 0; IF ( sqls <> '00000' AND sqls <> 'S1TAT' ) SIGNAL (sqls, msg); IF ( ISARRAY (res) AND LENGTH (res) AND ISARRAY (res[0]) AND LENGTH (res[0]) ) { tmp := res[0][0]; tmp := XMLUpdate (tmp, '/result/@type', tp); results[inx] := tmp; } inx := inx + 1; } res := XMLELEMENT ( "facets", XMLELEMENT ( "sparql", query ), XMLELEMENT ( "time", msec_time () - start_time ), XMLELEMENT ( "complete", CASE WHEN sqls = 'S1TAT' THEN 'no' ELSE 'yes' END ), XMLELEMENT ( "timeout", _min ( timeout * 2, ATOI ( registry_get ( 'fct_timeout_max' ) ) ) ), XMLELEMENT ("db-activity", act), XMLELEMENT ("processed", n_rows), XMLELEMENT ( "view", XMLATTRIBUTES ( offs AS "offset", lim AS "limit" ) ), results[0], results[1], results[2] ); ---- for debugging: --string_to_file ('ret.xml', serialize_to_UTF8_xml (res), -2); -- dbg_obj_print (res); RETURN res; } ;
Related
- Facets Web Service:
- Linked Data:
- Facet Browser Installation and configuration:
- Facet APIs:
- Pivot Viewer and CXML:
- Tutorials:
- Faceted Browsing Sample using LOD Cloud Cache data space
- SOAP Facets Example
- Querying The Facet Browser Web Service endpoint
- Virtuoso Facet Browser Featured Queries
- Visualizing Your Data With PivotViewer Using The Facet Browser
- Custom Controlling Virtuoso Labels for URI functionality Example
- Facets Web Service: Examples for customizing different types
- Facets Web Service: Choice of Labels Example
- Downloads: