%META:TOPICPARENT{name="VirtFacetBrowserInstallConfig"}%
---+ Virtuoso APIs for FCT REST services
%TOC%
---++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:
* [[VirtFacetBrowserAPIsFCTEXEC][Typical Usage Example]].
---+++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 ('');
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:
* [[VirtuosoFacetsWebService][Virtuoso Facets Web Service]]
* Linked Data:
* [[VirtuosoFacetsViewsLinkedData][Faceted Views over Large-Scale Linked Data]]
* Facet Browser Installation and configuration:
* [[VirtFacetBrowserInstallConfig][Virtuoso Facet Browser Installation and configuration]]
* Facet APIs:
* [[VirtFacetBrowserAPIsFCTEXEC][fct_exec
API Example]]
* Pivot Viewer and CXML:
* [[http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/VirtSparqlCxmlFacetPivotBridge#AncSparqlCxmlFacetPivotBridge][Facet Pivot Bridge - A bridge to PivotViewer from Virtuoso's Faceted query service for RDF]]
* [[http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/VirtSparqlCxml#AncFacetTypeAutoDetection][Auto-Detection of Facet Type]]
* Tutorials:
* [[VirtuosoLODSampleTutorial][Faceted Browsing Sample using LOD Cloud Cache data space]]
* [[VirtuosoFacetsWebServiceSOAPExample][SOAP Facets Example]]
* [[VirtFacetBrowserInstallConfigQueried][Querying The Facet Browser Web Service endpoint]]
* [[VirtFCTFeatureQueries][Virtuoso Facet Browser Featured Queries]]
* [[http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/VirtVisualizeWithPivotViewer#GenFCT][Visualizing Your Data With PivotViewer Using The Facet Browser]]
* [[VirtTipsAndTricksCustomControlLabelsURI][Custom Controlling Virtuoso Labels for URI functionality Example]]
* [[VirtuosoFacetsWebServiceCustmExamples][Facets Web Service: Examples for customizing different types]]
* [[VirtuosoFacetsWebServiceChoiceExample][Facets Web Service: Choice of Labels Example]]
* Downloads:
* [[http://shop.openlinksw.com/license_generator/virtuoso-download/][Latest Virtuoso]]
* [[https://virtuoso.openlinksw.com/download/][Virtuoso Facet Browser VAD package]]