@prefix rdf:	<http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix sioc:	<http://rdfs.org/sioc/ns#> .
<http://demo.openlinksw.com/tutorial/>	rdf:type	sioc:Space ;
	sioc:description	"OpenLink Virtuoso Features Demonstrations and Tutorials" ;
	sioc:name	"OpenLink Virtuoso Features Demonstrations and Tutorials" .
@prefix ns2:	<http://demo.openlinksw.com/tutorial/> .
<http://demo.openlinksw.com/tutorial/>	sioc:space_of	ns2:hosting .
ns2:	sioc:space_of	ns2:xml ,
		ns2:repl ,
		ns2:rdfview ,
		ns2:services ,
		ns2:wap ,
		ns2:bpeldemo ,
		ns2:web ,
		ns2:web2 ,
		ns2:xmlxslt ,
		ns2:rdf ,
		ns2:intprot ,
		ns2:apps ,
		ns2:xmlapps ,
		ns2:semweb .
ns2:hosting	rdf:type	sioc:Container ,
		"Tutorial" ;
	sioc:description	"Data Management - SQL\n " ;
	sioc:has_space	ns2: ;
	sioc:container_of	<http://demo.openlinksw.com/tutorial/hosting/ho_s_1/ho_s_1.vsp> ,
		<http://demo.openlinksw.com/tutorial/hosting/ho_s_13/ho_s_13.vsp> ,
		<http://demo.openlinksw.com/tutorial/hosting/ho_s_4/ho_s_4.vspx> ,
		<http://demo.openlinksw.com/tutorial/hosting/ho_s_5/ho_s_5.vspx> ,
		<http://demo.openlinksw.com/tutorial/hosting/ho_s_2/ho_s_2.vsp> ,
		<http://demo.openlinksw.com/tutorial/hosting/ho_s_3/ho_s_3.vsp> ,
		<http://demo.openlinksw.com/tutorial/hosting/ho_s_14/ho_s_14.vsp> ,
		<http://demo.openlinksw.com/tutorial/hosting/ho_s_15/ho_s_15.vsp> ,
		<http://demo.openlinksw.com/tutorial/hosting/ho_s_10/ho_s_10.vsp> ,
		<http://demo.openlinksw.com/tutorial/hosting/ho_s_11/ho_s_11.vsp> .
ns2:xml	rdf:type	sioc:Container ,
		"Tutorial" ;
	sioc:description	"Data Management - XML\n " ;
	sioc:has_space	ns2: ;
	sioc:container_of	<http://demo.openlinksw.com/tutorial/xml/sx_e_8/sx_e_8.vsp> ,
		<http://demo.openlinksw.com/tutorial/xml/sx_e_9/sx_e_9.vsp> ,
		<http://demo.openlinksw.com/tutorial/xml/sx_e_6/sx_e_6.vsp> ,
		<http://demo.openlinksw.com/tutorial/xml/sx_e_7/sx_e_7.vsp> ,
		<http://demo.openlinksw.com/tutorial/xml/sx_e_4/sx_e_4.vsp> ,
		<http://demo.openlinksw.com/tutorial/xml/sx_e_5/sx_e_5.vsp> ,
		<http://demo.openlinksw.com/tutorial/xml/sx_e_2/sx_e_2.vsp> ,
		<http://demo.openlinksw.com/tutorial/xml/sx_e_3/sx_e_3.vsp> ,
		<http://demo.openlinksw.com/tutorial/xml/sx_e_0/sx_e_0.vsp> ,
		<http://demo.openlinksw.com/tutorial/xml/sx_e_1/sx_e_1.vsp> ,
		<http://demo.openlinksw.com/tutorial/xml/xq_s_3/xq_s_3.vsp> ,
		<http://demo.openlinksw.com/tutorial/xml/xq_s_4/xq_s_4.vsp> ,
		<http://demo.openlinksw.com/tutorial/xml/xq_s_2/xq_s_2.vsp> ,
		<http://demo.openlinksw.com/tutorial/xml/xq_s_2a/xq_s_2a.vsp> ,
		<http://demo.openlinksw.com/tutorial/xmlsql/ms_a_3/ms_a_3.vsp> ,
		<http://demo.openlinksw.com/tutorial/xmlsql/ms_a_3a/ms_a_3a.vsp> ,
		<http://demo.openlinksw.com/tutorial/xmlsql/ms_a_1/ms_a_1.vsp> ,
		<http://demo.openlinksw.com/tutorial/xmlsql/ms_a_2/ms_a_2.vsp> ,
		<http://demo.openlinksw.com/tutorial/xmlsql/xs_s_8/xs_s_8.vsp> ,
		<http://demo.openlinksw.com/tutorial/xmlsql/xs_s_9/xs_s_9.vsp> ,
		<http://demo.openlinksw.com/tutorial/xmlsql/xs_s_6/xs_s_6.vsp> ,
		<http://demo.openlinksw.com/tutorial/xmlsql/xs_s_7/xs_s_7.vsp> ,
		<http://demo.openlinksw.com/tutorial/xmlsql/xs_s_4/xs_s_4.vsp> ,
		<http://demo.openlinksw.com/tutorial/xmlsql/xs_s_5/xs_s_5.vsp> ,
		<http://demo.openlinksw.com/tutorial/xmlsql/xs_s_2/xs_s_2.vsp> ,
		<http://demo.openlinksw.com/tutorial/xmlsql/xs_s_3/xs_s_3.vsp> ,
		<http://demo.openlinksw.com/tutorial/xml/sx_h_1/sx_h_1.vsp> ,
		<http://demo.openlinksw.com/tutorial/xmlsql/xs_s_1/xs_s_1.vsp> ,
		<http://demo.openlinksw.com/tutorial/xml/sx_f_1/sx_f_1.vsp> ,
		<http://demo.openlinksw.com/tutorial/xml/sx_g_1/sx_g_1.vsp> ,
		<http://demo.openlinksw.com/tutorial/xmlxslt/xs_f_2/xs_f_2.vsp> ,
		<http://demo.openlinksw.com/tutorial/xmlsql/xs_u_3/xs_u_3.vsp> ,
		<http://demo.openlinksw.com/tutorial/xmlxslt/xs_f_1/xs_f_1.vsp> ,
		<http://demo.openlinksw.com/tutorial/xmlsql/xs_u_1/xs_u_1.vsp> ,
		<http://demo.openlinksw.com/tutorial/xmlsql/xs_u_2/xs_u_2.vsp> ,
		<http://demo.openlinksw.com/tutorial/xmlsql/xp_v_2/xp_v_2.vsp> ,
		<http://demo.openlinksw.com/tutorial/xmlsql/xp_v_3/xp_v_3.vsp> ,
		<http://demo.openlinksw.com/tutorial/xmlsql/ms_a_5/ms_a_5.vsp> ,
		<http://demo.openlinksw.com/tutorial/xmlsql/xp_v_1/xp_v_1.vsp> ,
		<http://demo.openlinksw.com/tutorial/xmlsql/ms_a_3b/ms_a_3b.vsp> ,
		<http://demo.openlinksw.com/tutorial/xmlsql/ms_a_4/ms_a_4.vsp> .
ns2:repl	rdf:type	sioc:Container ,
		"Tutorial" ;
	sioc:description	"Data Management - Data Replication\n " ;
	sioc:has_space	ns2: ;
	sioc:container_of	<http://demo.openlinksw.com/tutorial/repl/re_xb_1/re_xb_1.vsp> ,
		<http://demo.openlinksw.com/tutorial/repl/re_xb_4/re_xb_4.vsp> ,
		<http://demo.openlinksw.com/tutorial/repl/re_sb_1/re_sb_1.vsp> ,
		<http://demo.openlinksw.com/tutorial/repl/re_xb_2/re_xb_2.vsp> ,
		<http://demo.openlinksw.com/tutorial/repl/re_xb_3/re_xb_3.vsp> ,
		<http://demo.openlinksw.com/tutorial/repl/re_sb_4/re_sb_4.vsp> ,
		<http://demo.openlinksw.com/tutorial/repl/re_sd_1/re_sd_1.vsp> ,
		<http://demo.openlinksw.com/tutorial/repl/re_sb_2/re_sb_2.vsp> ,
		<http://demo.openlinksw.com/tutorial/repl/re_sb_3/re_sb_3.vsp> ,
		<http://demo.openlinksw.com/tutorial/repl/re_sm_1/re_sm_1.vsp> ,
		<http://demo.openlinksw.com/tutorial/repl/re_ds_1/re_ds_1.vsp> ,
		<http://demo.openlinksw.com/tutorial/repl/re_sd_2/re_sd_2.vsp> ,
		<http://demo.openlinksw.com/tutorial/repl/re_sd_3/re_sd_3.vsp> .
ns2:rdfview	rdf:type	sioc:Container ,
		"Tutorial" ;
	sioc:description	"Data Management - RDF\n " ;
	sioc:has_space	ns2: ;
	sioc:container_of	<http://demo.openlinksw.com/tutorial/rdfview/rd_v_1/rd_v_1.vsp> .
ns2:services	rdf:type	sioc:Container ,
		"Tutorial" ;
	sioc:description	"Web Services - SOAP Services\n " ;
	sioc:has_space	ns2: ;
	sioc:container_of	<http://demo.openlinksw.com/tutorial/services/so_s_23/so_s_23.vsp> ,
		<http://demo.openlinksw.com/tutorial/services/so_s_24/so_s_24.vsp> ,
		<http://demo.openlinksw.com/tutorial/services/so_s_21/so_s_21.vsp> ,
		<http://demo.openlinksw.com/tutorial/services/so_s_22/so_s_22.vsp> ,
		<http://demo.openlinksw.com/tutorial/services/so_s_27/so_s_27.vsp> ,
		<http://demo.openlinksw.com/tutorial/services/so_s_28/so_s_28.vsp> ,
		<http://demo.openlinksw.com/tutorial/services/so_s_25/so_s_25.vsp> ,
		<http://demo.openlinksw.com/tutorial/services/so_s_26/so_s_26.vspx> ,
		<http://demo.openlinksw.com/tutorial/services/so_s_35/so_s_35.vsp> ,
		<http://demo.openlinksw.com/tutorial/services/so_s_36/so_s_36.vsp> ,
		<http://demo.openlinksw.com/tutorial/services/so_s_29/so_s_29.vsp> ,
		<http://demo.openlinksw.com/tutorial/services/so_s_34/so_s_34.vsp> ,
		<http://demo.openlinksw.com/tutorial/services/so_s_31/so_s_31.vsp> ,
		<http://demo.openlinksw.com/tutorial/services/so_s_32/so_s_32.vsp> ,
		<http://demo.openlinksw.com/tutorial/services/so_s_37/so_s_37.vsp> ,
		<http://demo.openlinksw.com/tutorial/services/so_s_30/so_s_30.vsp> ,
		<http://demo.openlinksw.com/tutorial/services/so_s_6/so_s_6.vsp> ,
		<http://demo.openlinksw.com/tutorial/services/so_s_7/so_s_7.vsp> ,
		<http://demo.openlinksw.com/tutorial/services/so_s_33/so_s_33.vsp> ,
		<http://demo.openlinksw.com/tutorial/services/so_s_5/so_s_5.vsp> ,
		<http://demo.openlinksw.com/tutorial/services/so_s_8/so_s_8.vsp> ,
		<http://demo.openlinksw.com/tutorial/services/so_s_9/so_s_9.vsp> ,
		<http://demo.openlinksw.com/tutorial/services/so_s_11/so_s_11.vsp> ,
		<http://demo.openlinksw.com/tutorial/services/so_s_18/so_s_18.vsp> ,
		<http://demo.openlinksw.com/tutorial/services/rp_s_2/rp_s_2.vsp> ,
		<http://demo.openlinksw.com/tutorial/services/so_s_10/so_s_10.vsp> ,
		<http://demo.openlinksw.com/tutorial/services/rm_s_1/rm_s_1.vsp> ,
		<http://demo.openlinksw.com/tutorial/services/rp_s_1/rp_s_1.vsp> ,
		<http://demo.openlinksw.com/tutorial/services/so_s_16/so_s_16.vsp> ,
		<http://demo.openlinksw.com/tutorial/services/so_s_19/so_s_19.vsp> ,
		<http://demo.openlinksw.com/tutorial/services/so_s_12/so_s_12.vsp> ,
		<http://demo.openlinksw.com/tutorial/services/so_s_15/so_s_15.vsp> ,
		<http://demo.openlinksw.com/tutorial/services/ws_s_2/ws_s_2.vsp> ,
		<http://demo.openlinksw.com/tutorial/services/ws_s_3/ws_s_3.vsp> ,
		<http://demo.openlinksw.com/tutorial/services/so_s_13/so_s_13.vsp> ,
		<http://demo.openlinksw.com/tutorial/services/ws_s_1/ws_s_1.vsp> ,
		<http://demo.openlinksw.com/tutorial/services/ws_s_5/ws_s_5.vsp> ,
		<http://demo.openlinksw.com/tutorial/services/ud_s_1/ud_s_1.vsp> ,
		<http://demo.openlinksw.com/tutorial/services/ws_s_4/ws_s_4.vsp> ,
		<http://demo.openlinksw.com/tutorial/services/ws_s_4a/ws_s_4a.vsp> ,
		<http://demo.openlinksw.com/tutorial/services/ud_s_2/ud_s_2.vsp> ,
		<http://demo.openlinksw.com/tutorial/services/ud_s_3/ud_s_3.vsp> ,
		<http://demo.openlinksw.com/tutorial/services/so_s_2/so_s_2.vsp> ,
		<http://demo.openlinksw.com/tutorial/services/so_s_3/so_s_3.vsp> ,
		<http://demo.openlinksw.com/tutorial/services/so_s_1/so_s_1.vsp> ,
		<http://demo.openlinksw.com/tutorial/services/so_s_17/so_s_17.vsp> ,
		<http://demo.openlinksw.com/tutorial/services/so_s_20/so_s_20.vsp> ,
		<http://demo.openlinksw.com/tutorial/services/so_s_4/so_s_4.vsp> ,
		<http://demo.openlinksw.com/tutorial/services/so_s_14/so_s_14.vsp> .
ns2:wap	rdf:type	sioc:Container ,
		"Tutorial" ;
	sioc:description	"Web Services - Wireless Access Protocols\n " ;
	sioc:has_space	ns2: ;
	sioc:container_of	<http://demo.openlinksw.com/tutorial/wap/wa_b_3/wa_b_3.vsp> ,
		<http://demo.openlinksw.com/tutorial/wap/wa_b_1/wa_b_1.vsp> ,
		<http://demo.openlinksw.com/tutorial/wap/wa_b_2/wa_b_2.vsp> .
ns2:bpeldemo	rdf:type	sioc:Container ,
		"Tutorial" ;
	sioc:description	"Business Process Integration - BPEL\n " ;
	sioc:has_space	ns2: ;
	sioc:container_of	<http://demo.openlinksw.com/tutorial/bpeldemo/processXQuery/processXQuery.vsp> ,
		<http://demo.openlinksw.com/tutorial/bpeldemo/processXSQL/processXSQL.vsp> ,
		<http://demo.openlinksw.com/tutorial/bpeldemo/SecRMLoan/SecRMLoan.vsp> ,
		<http://demo.openlinksw.com/tutorial/bpeldemo/sqlexec/sqlexec.vsp> ,
		<http://demo.openlinksw.com/tutorial/bpeldemo/SecLoan/SecLoan.vsp> ,
		<http://demo.openlinksw.com/tutorial/bpeldemo/RMLoan/RMLoan.vsp> ,
		<http://demo.openlinksw.com/tutorial/bpeldemo/clr_exec/clr_exec.vsp> ,
		<http://demo.openlinksw.com/tutorial/bpeldemo/processXSLT/processXSLT.vsp> ,
		<http://demo.openlinksw.com/tutorial/bpeldemo/UseCases/UseCases.vsp> ,
		<http://demo.openlinksw.com/tutorial/bpeldemo/java_exec/java_exec.vsp> ,
		<http://demo.openlinksw.com/tutorial/bpeldemo/fi/fi.vsp> ,
		<http://demo.openlinksw.com/tutorial/bpeldemo/LoanFlow/LoanFlow.vsp> ,
		<http://demo.openlinksw.com/tutorial/bpeldemo/echo/echo.vsp> .
ns2:web	rdf:type	sioc:Container ,
		"Tutorial" ;
	sioc:description	"Development - Web 1.0\n " ;
	sioc:has_space	ns2: ;
	sioc:container_of	<http://demo.openlinksw.com/tutorial/web/vs_u_1/vs_u_1.vsp> ,
		<http://demo.openlinksw.com/tutorial/web/vs_u_2/vs_u_2.vsp> ,
		<http://demo.openlinksw.com/tutorial/web/vs_s_6/vs_s_6.vsp> ,
		<http://demo.openlinksw.com/tutorial/web/vs_s_7/vs_s_7.vsp> ,
		<http://demo.openlinksw.com/tutorial/web/vs_s_4/vs_s_4.vsp> ,
		<http://demo.openlinksw.com/tutorial/web/vs_s_5/vs_s_5.vsp> ,
		<http://demo.openlinksw.com/tutorial/web/vs_s_2/vs_s_2.vsp> ,
		<http://demo.openlinksw.com/tutorial/web/vs_s_3/vs_s_3.vsp> ,
		<http://demo.openlinksw.com/tutorial/web/vs_x_3/vs_x_3.vsp> ,
		<http://demo.openlinksw.com/tutorial/web/vs_d_1/vs_d_1.vsp> ,
		<http://demo.openlinksw.com/tutorial/web/vs_x_1/vs_x_1.vsp> ,
		<http://demo.openlinksw.com/tutorial/web/vs_x_2/vs_x_2.vsp> ,
		<http://demo.openlinksw.com/tutorial/web/vs_u_5/vs_u_5.vsp> ,
		<http://demo.openlinksw.com/tutorial/web/vs_u_7/vs_u_7.vsp> ,
		<http://demo.openlinksw.com/tutorial/web/vs_u_3/vs_u_3.vsp> ,
		<http://demo.openlinksw.com/tutorial/web/vs_u_4/vs_u_4.vsp> ,
		<http://demo.openlinksw.com/tutorial/web/vx_s_10/vx_s_10.vsp> ,
		<http://demo.openlinksw.com/tutorial/web/vx_s_11/vx_s_11.vsp> ,
		<http://demo.openlinksw.com/tutorial/web/vx_s_2/vx_s_2.vsp> ,
		<http://demo.openlinksw.com/tutorial/web/vx_s_3/vx_s_3.vsp> ,
		<http://demo.openlinksw.com/tutorial/web/vs_b_9/vs_b_9.vsp> ,
		<http://demo.openlinksw.com/tutorial/web/vx_s_1/vx_s_1.vsp> ,
		<http://demo.openlinksw.com/tutorial/web/vs_b_7/vs_b_7.vsp> ,
		<http://demo.openlinksw.com/tutorial/web/vs_b_8/vs_b_8.vsp> ,
		<http://demo.openlinksw.com/tutorial/web/vx_s_8/vx_s_8.vsp> ,
		<http://demo.openlinksw.com/tutorial/web/vs_s_1/vs_s_1.vsp> ,
		<http://demo.openlinksw.com/tutorial/web/vx_s_7/vx_s_7.vsp> ,
		<http://demo.openlinksw.com/tutorial/web/vx_s_9/vx_s_9.vsp> ,
		<http://demo.openlinksw.com/tutorial/web/vx_s_5/vx_s_5.vsp> ,
		<http://demo.openlinksw.com/tutorial/web/vx_s_6/vx_s_6.vsp> ,
		<http://demo.openlinksw.com/tutorial/web/vx_s_12/vx_s_12.vsp> ,
		<http://demo.openlinksw.com/tutorial/web/vx_s_4/vx_s_4.vsp> ,
		<http://demo.openlinksw.com/tutorial/web/vs_d_8/vs_d_8.vsp> ,
		<http://demo.openlinksw.com/tutorial/web/vs_c_1/vs_c_1.vsp> ,
		<http://demo.openlinksw.com/tutorial/web/vs_d_6/vs_d_6.vsp> ,
		<http://demo.openlinksw.com/tutorial/web/vs_d_7/vs_d_7.vsp> ,
		<http://demo.openlinksw.com/tutorial/web/vs_d_4/vs_d_4.vsp> ,
		<http://demo.openlinksw.com/tutorial/web/vs_d_5/vs_d_5.vsp> ,
		<http://demo.openlinksw.com/tutorial/web/vs_d_2/vs_d_2.vsp> ,
		<http://demo.openlinksw.com/tutorial/web/vs_d_3/vs_d_3.vsp> ,
		<http://demo.openlinksw.com/tutorial/web/vs_r_1/vs_r_1.vsp> ,
		<http://demo.openlinksw.com/tutorial/web/vs_b_5/vs_b_5.vsp> ,
		<http://demo.openlinksw.com/tutorial/web/vs_b_6/vs_b_6.vsp> ,
		<http://demo.openlinksw.com/tutorial/web/vs_b_3/vs_b_3.vsp> ,
		<http://demo.openlinksw.com/tutorial/web/vs_b_4/vs_b_4.vsp> ,
		<http://demo.openlinksw.com/tutorial/web/vs_b_1/vs_b_1.vsp> ,
		<http://demo.openlinksw.com/tutorial/web/vs_b_2/vs_b_2.vsp> .
ns2:web2	rdf:type	sioc:Container ,
		"Tutorial" ;
	sioc:description	"Development - Web 2.0\n " ;
	sioc:has_space	ns2: ;
	sioc:container_of	<http://demo.openlinksw.com/tutorial/web/vs_xr_2/vs_xr_2.vsp> ,
		<http://demo.openlinksw.com/tutorial/services/xa_s_1/xa_s_1.vsp> ,
		<http://demo.openlinksw.com/tutorial/apps/blog_bridge/blog_bridge.vsp> ,
		<http://demo.openlinksw.com/tutorial/apps/blog_query/blog_query.vsp> ,
		<http://demo.openlinksw.com/tutorial/apps/blog/blog.vsp> ,
		<http://demo.openlinksw.com/tutorial/web/vx_s_13/countries.vsp> ,
		<http://demo.openlinksw.com/tutorial/web/vs_xr_1/vs_xr_1.vsp> ,
		<http://demo.openlinksw.com/tutorial/apps/forums/forums.vsp> ,
		<http://demo.openlinksw.com/tutorial/apps/rss_feed/rss_feed.vsp> ,
		<http://demo.openlinksw.com/tutorial/services/so_s_7/so_s_7.vsp> ,
		<http://demo.openlinksw.com/tutorial/services/so_s_10/so_s_10.vsp> ,
		<http://demo.openlinksw.com/tutorial/services/so_s_16/so_s_16.vsp> ,
		<http://demo.openlinksw.com/tutorial/services/so_s_19/so_s_19.vsp> ,
		<http://demo.openlinksw.com/tutorial/services/so_s_12/so_s_12.vsp> ,
		<http://demo.openlinksw.com/tutorial/services/so_s_15/so_s_15.vsp> ,
		<http://demo.openlinksw.com/tutorial/services/so_s_24/so_s_24.vsp> ,
		<http://demo.openlinksw.com/tutorial/services/so_s_21/so_s_21.vsp> ,
		<http://demo.openlinksw.com/tutorial/services/so_s_27/so_s_27.vsp> ,
		<http://demo.openlinksw.com/tutorial/services/so_s_28/so_s_28.vsp> ,
		<http://demo.openlinksw.com/tutorial/services/so_s_2/so_s_2.vsp> ,
		<http://demo.openlinksw.com/tutorial/services/so_s_17/so_s_17.vsp> .
ns2:xmlxslt	rdf:type	sioc:Container ,
		"Tutorial" ;
	sioc:description	"Development - XML\n " ;
	sioc:has_space	ns2: ;
	sioc:container_of	<http://demo.openlinksw.com/tutorial/xmlxslt/xs_d_1/xs_d_1.vsp> ,
		<http://demo.openlinksw.com/tutorial/xmlxslt/xs_l_1/xs_l_1.vsp> ,
		<http://demo.openlinksw.com/tutorial/xmlxslt/xs_t_1/xs_t_1.vsp> ,
		<http://demo.openlinksw.com/tutorial/xmlxslt/xs_e_1/xs_e_1.vsp> .
ns2:rdf	rdf:type	sioc:Container ,
		"Tutorial" ;
	sioc:description	"Development - RDF\n " ;
	sioc:has_space	ns2: ;
	sioc:container_of	<http://demo.openlinksw.com/tutorial/rdf/rd_s_1/rd_s_1.vsp> ,
		<http://demo.openlinksw.com/tutorial/rdf/rq_s_3/rq_s_3.vsp> ,
		<http://demo.openlinksw.com/tutorial/rdf/ri_s_1/ri_s_1.vsp> ,
		<http://demo.openlinksw.com/tutorial/services/rn_s_1/rn_s_1.vsp> ,
		<http://demo.openlinksw.com/tutorial/rdf/rq_s_2/rq_s_2.vsp> .
ns2:intprot	rdf:type	sioc:Container ,
		"Tutorial" ;
	sioc:description	"Development - NNTP\n " ;
	sioc:has_space	ns2: ;
	sioc:container_of	<http://demo.openlinksw.com/tutorial/intprot/nn_s_1/nn_s_1.vsp> ,
		<http://demo.openlinksw.com/tutorial/intprot/nn_s_2/nn_s_2.vsp> ,
		<http://demo.openlinksw.com/tutorial/intprot/sm_s_6/sm_s_6.vsp> ,
		<http://demo.openlinksw.com/tutorial/intprot/sm_s_7/sm_s_7.vsp> ,
		<http://demo.openlinksw.com/tutorial/intprot/sm_s_4/sm_s_4.vsp> ,
		<http://demo.openlinksw.com/tutorial/intprot/sm_s_5/sm_s_5.vsp> ,
		<http://demo.openlinksw.com/tutorial/intprot/sm_s_2/sm_s_2.vsp> ,
		<http://demo.openlinksw.com/tutorial/intprot/sm_s_3/sm_s_3.vsp> ,
		<http://demo.openlinksw.com/tutorial/intprot/sm_s_1/sm_s_1.vsp> .
ns2:apps	rdf:type	sioc:Container ,
		"Tutorial" ;
	sioc:description	"Demo applications - Framework Hosting\n " ;
	sioc:has_space	ns2: ;
	sioc:container_of	<http://demo.openlinksw.com/tutorial/hosting/ho_s_12/ho_s_12.vsp> ,
		<http://demo.openlinksw.com/tutorial/hosting/ho_s_6/ho_s_6.vsp> ,
		<http://demo.openlinksw.com/tutorial/apps/ibuyspy/ibuyspy.vsp> ,
		<http://demo.openlinksw.com/tutorial/apps/petshop/petshop.vsp> ,
		<http://demo.openlinksw.com/tutorial/hosting/ho_s_8/ho_s_8.vsp> ,
		<http://demo.openlinksw.com/tutorial/hosting/ho_s_9/ho_s_9.vsp> ,
		<http://demo.openlinksw.com/tutorial/hosting/ho_s_7/ho_s_7.vsp> ,
		<http://demo.openlinksw.com/tutorial/hosting/ho_s_30/ho_s_30.vsp> ,
		<http://demo.openlinksw.com/tutorial/hosting/ho_s_16/ho_s_16.vsp> ,
		<http://demo.openlinksw.com/tutorial/hosting/ho_s_17/ho_s_17.vsp> .
ns2:xmlapps	rdf:type	sioc:Container ,
		"Tutorial" ;
	sioc:description	"Demo applications - XML Data Access\n " ;
	sioc:has_space	ns2: ;
	sioc:container_of	<http://demo.openlinksw.com/tutorial/xml/xq_s_1/xq_s_1.vsp> ,
		<http://demo.openlinksw.com/tutorial/xml/xq_s_3/xq_s_3.vsp> ,
		<http://demo.openlinksw.com/tutorial/xml/xq_s_4/xq_s_4.vsp> ,
		<http://demo.openlinksw.com/tutorial/xml/xq_s_2/xq_s_2.vsp> ,
		<http://demo.openlinksw.com/tutorial/xml/xq_s_2a/xq_s_2a.vsp> .
ns2:semweb	rdf:type	sioc:Container ,
		"Tutorial" ;
	sioc:description	"Demo applications - Semantic Web\n " ;
	sioc:has_space	ns2: ;
	sioc:container_of	<http://demo.openlinksw.com/tutorial/semweb/sem_s_1/sem_s_1.vsp> ,
		<http://demo.openlinksw.com/tutorial/xml/rq_s_1/rq_s_1.vsp> .
@prefix foaf:	<http://xmlns.com/foaf/0.1/> .
<http://demo.openlinksw.com/tutorial/hosting/ho_s_2/ho_s_2.vsp>	rdf:type	foaf:Document .
@prefix dc:	<http://purl.org/dc/elements/1.1/> .
<http://demo.openlinksw.com/tutorial/hosting/ho_s_2/ho_s_2.vsp>	dc:title	"Integrating Common Language Runtime Objects with Virtuoso" ;
	sioc:content	"\n    Overview\n    The following tutorial demonstrates how Virtuoso can be extended \n    through the use of a .NET bound language such as C# to create User Defined \n    Types (UDTs), Stored Procedures, and Functions. This is an enhancement of its \n    Object-Relational Database functionality. \n    The demonstrations in this section highlight transparent integration \n    (hosting) between Virtuoso and the Microsoft .NET and Mono implementations of \n    the ECMA Common Language Infrastructure (CLI). \n    \n    Prerequisites\n    The following prerequisites ensure the usability of these  \n    tutorial demos on Windows or Linux (and in other future Mono implementations): \n\n Linux\n   \n     Mono Runtime and Frameworks (ideally the version bundled with Virtuoso)\n     Mono SDK (if you seek to write your own Objects for integration with Virtuoso)\n     Virtuoso Universal Server for Linux with Mono Hosting\n     \nWindows\n   \n     .NET Runtime and Frameworks\n     .Net Runtime and Framework SDK (if you seek to write your own Objects for integration with Virtuoso)\n     Virtuoso Universal Server for Windows with .NET CLR Hosting\n     \n\n    \n    Tutorial Example\n\n  The following tutorial shows how C# classes are used to create User\n  Defined Types (UDTs) in Virtuoso. \n  Please follow the steps below to maximize the value of this tutorial:\n\n\n Click on the \"Set Initial State\" link which registers the two C# classes with Virtuoso. Click on the \"ho_s_2.sql\" link to see the code behind this step \n Click on the \"Run\" links to actually experience the demo\n\n\nDemo Breakdown\n\n\n \"ho_s_2.sql\" performs the following steps\n  \n   Registers the \"MyFinances\" and \"Point\" classes with Virtuoso. Click \n   on the \"MyFinances.cs\" and \"Point.cs\" links to see the C# source code of these \n   classes\n   Creates the conventional SQL table \"Employee\" \n   Creates the Object-Relational table \"Supplier\" that includes a column \n   named \"Location\" that is of  Type \"Point\" (a UDT)\n   Populates each of the newly created tables with data\n   Creates the \"distance\" stored procedure which uses a C# function \n   member (method) to calculate the distance between points.\n  \n\n \t\"vsp1.vsp\" uses the static method \"tax\" of the \"MyFinances\" class to \n compute the payroll tax values for each employee via the \"salary\" column (like \n a SQL function would). Take note of the Virtuoso class invocation syntax for \n static C# methods (the relevant member function type in this demo; true to \n C# these are called by name rather than instance).\n \"vsp2.vsp\" uses the \"distance\" method of the UDT based column \n \"location\" to test for distance values less than \"3\". The distance values are \n return values from the \"Point\" class. Note that the \"Point\" class computes \n the distance between two arbitrary points.\n \"vsp3.vsp\" is a variation of the previous demo, with the column \n \"location\" being used to access and conditionally test the values of data \n member \"x\" (shown in \"Point.cs\" as 0).\n \"vsp4.vsp\" is another variation of a query on the \"Supplier\" table, \n in this particular case the query uses a Stored Procedure (see definition in \n \"ho_s_2.sql\") to filter its result set.  It achieves this by using data member \n values \"x\" and \"y\" from column \"location\", and the arbitrary values 1 & \n 2 as input parameters for the Stored Procedure \"distance\".  It then tests \n the return values for those less than 3.\n  \n    " ;
	sioc:description	"Using C# Objects to extend Virtuoso via User Defined Types." ;
	sioc:has_container	ns2:hosting .
@prefix dcterms:	<http://purl.org/dc/terms/> .
<http://demo.openlinksw.com/tutorial/hosting/ho_s_2/ho_s_2.vsp>	dcterms:created_at	"Fri, 05 Jun 2009 10:21:00 GMT" .
@prefix content:	<http://purl.org/rss/1.0/modules/content/> .
<http://demo.openlinksw.com/tutorial/hosting/ho_s_2/ho_s_2.vsp>	content:encoded	"\n    Overview\n    The following tutorial demonstrates how Virtuoso can be extended \n    through the use of a .NET bound language such as C# to create User Defined \n    Types (UDTs), Stored Procedures, and Functions. This is an enhancement of its \n    Object-Relational Database functionality. \n    The demonstrations in this section highlight transparent integration \n    (hosting) between Virtuoso and the Microsoft .NET and Mono implementations of \n    the ECMA Common Language Infrastructure (CLI). \n    \n    Prerequisites\n    The following prerequisites ensure the usability of these  \n    tutorial demos on Windows or Linux (and in other future Mono implementations): \n\n Linux\n   \n     Mono Runtime and Frameworks (ideally the version bundled with Virtuoso)\n     Mono SDK (if you seek to write your own Objects for integration with Virtuoso)\n     Virtuoso Universal Server for Linux with Mono Hosting\n     \nWindows\n   \n     .NET Runtime and Frameworks\n     .Net Runtime and Framework SDK (if you seek to write your own Objects for integration with Virtuoso)\n     Virtuoso Universal Server for Windows with .NET CLR Hosting\n     \n\n    \n    Tutorial Example\n\n  The following tutorial shows how C# classes are used to create User\n  Defined Types (UDTs) in Virtuoso. \n  Please follow the steps below to maximize the value of this tutorial:\n\n\n Click on the &quot;Set Initial State&quot; link which registers the two C# classes with Virtuoso. Click on the &quot;ho_s_2.sql&quot; link to see the code behind this step \n Click on the &quot;Run&quot; links to actually experience the demo\n\n\nDemo Breakdown\n\n\n &quot;ho_s_2.sql&quot; performs the following steps\n  \n   Registers the &quot;MyFinances&quot; and &quot;Point&quot; classes with Virtuoso. Click \n   on the &quot;MyFinances.cs&quot; and &quot;Point.cs&quot; links to see the C# source code of these \n   classes\n   Creates the conventional SQL table &quot;Employee&quot; \n   Creates the Object-Relational table &quot;Supplier&quot; that includes a column \n   named &quot;Location&quot; that is of  Type &quot;Point&quot; (a UDT)\n   Populates each of the newly created tables with data\n   Creates the &quot;distance&quot; stored procedure which uses a C# function \n   member (method) to calculate the distance between points.\n  \n\n \t&quot;vsp1.vsp&quot; uses the static method &quot;tax&quot; of the &quot;MyFinances&quot; class to \n compute the payroll tax values for each employee via the &quot;salary&quot; column (like \n a SQL function would). Take note of the Virtuoso class invocation syntax for \n static C# methods (the relevant member function type in this demo; true to \n C# these are called by name rather than instance).\n &quot;vsp2.vsp&quot; uses the &quot;distance&quot; method of the UDT based column \n &quot;location&quot; to test for distance values less than &quot;3&quot;. The distance values are \n return values from the &quot;Point&quot; class. Note that the &quot;Point&quot; class computes \n the distance between two arbitrary points.\n &quot;vsp3.vsp&quot; is a variation of the previous demo, with the column \n &quot;location&quot; being used to access and conditionally test the values of data \n member &quot;x&quot; (shown in &quot;Point.cs&quot; as 0).\n &quot;vsp4.vsp&quot; is another variation of a query on the &quot;Supplier&quot; table, \n in this particular case the query uses a Stored Procedure (see definition in \n &quot;ho_s_2.sql&quot;) to filter its result set.  It achieves this by using data member \n values &quot;x&quot; and &quot;y&quot; from column &quot;location&quot;, and the arbitrary values 1 &amp; \n 2 as input parameters for the Stored Procedure &quot;distance&quot;.  It then tests \n the return values for those less than 3.\n  \n    \n " ;
	rdf:type	foaf:Document ;
	dc:title	"Sending an SMS message through an ASP .NET SOAP Client to update a table " ;
	sioc:content	"\n    Overview\n    The following tutorial demonstrates how a C# based Managed SOAP \n    Client is used to create SMS based database notification services inside \n    Virtuoso. This demo executes a database trigger every time a new Supplier \n    record is added, updated or deleted. In this example a C# class acts as a\n    SOAP client to a 3rd party XML Web Service that provides the SMS (Short Message \n    Services) delivery to mobile phones. Note, this demo will work with any phone \n    that is capable of receiving SMS (TEXT) messages.\n    \n    Prerequisites\n    This demo currently works only on a Virtuoso server running under Microsoft Windows with following components installed:\n    \n      Windows\n        \n          .NET Runtime and Frameworks\n          .Net Runtime and Framework SDK (if you seek to write your own Objects for integration with Virtuoso)\n          Virtuoso Universal Server for Windows with .NET CLR Hosting.\n        \n      \n    \n    \n    Tutorial Example\n\n  Please follow the steps below to maximize the value of this tutorial:\n  \n   Click on the \"Set Initial State\" link which registers the \"redcoalsmssvc\" service with Virtuoso. Click on the \"ho_s_3.sql\" link to see the code behind this step\n   Click on the \"Run\" links to actually experience the demo\n  \n\n  Demo Breakdown\n  \n   \"ho_s_3.sql\" performs the following steps\n  \n     Registers the \"redcoalsmssvc\" class with Virtuoso. Click on the \"redcoalsms.cs\" and \"redcoalsmsref.cs\" links to see the C# source code. Note that the class \"redcoalsmssvc\" is part of an assembly that has the namespace \"redcoalsms\"\n     Creates the \"Suppliers\" table \n     Creates a stored procedure \"redcoal_send_sms\" which demonstrates the syntax for creating an instance variable which includes the assembly namespace in the type reference. Specifically, note the use of an underscore instead of a dot when making this assignment \n     Creates a Trigger named \"send_sms_to_mgr_new_supp\" that sends an SMS message each time a new \"Supplier\" table record is inserted\n     Creates a Trigger named \"send_sms_to_mgr_mod_supp\" that sends an SMS message each time a \"Supplier\" record is updated\n     Creates a Trigger named \"send_sms_to_mgr_mod_supp\" that sends an SMS message each time a supplier record is deleted\n  \n  \"setup_sms.vsp\" sets up all of the base data and verifies that SMS service connectivity required by this demo is available.\n   \"handler.vsp\" is the actual interface through which you add or delete supplier records which result in SMS notifications being sent to your mobile phone.\n  \n\n\n   " ;
	sioc:description	"Demonstrating the use of C# to create Virtuoso hosted Stored \n    Procedures and Triggers. In this demo the database events trigger SMS \n    messages that are relayed via C# based SOAP Client." ;
	sioc:has_container	ns2:hosting ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:00 GMT" ;
	content:encoded	"\n    Overview\n    The following tutorial demonstrates how a C# based Managed SOAP \n    Client is used to create SMS based database notification services inside \n    Virtuoso. This demo executes a database trigger every time a new Supplier \n    record is added, updated or deleted. In this example a C# class acts as a\n    SOAP client to a 3rd party XML Web Service that provides the SMS (Short Message \n    Services) delivery to mobile phones. Note, this demo will work with any phone \n    that is capable of receiving SMS (TEXT) messages.\n    \n    Prerequisites\n    This demo currently works only on a Virtuoso server running under Microsoft Windows with following components installed:\n    \n      Windows\n        \n          .NET Runtime and Frameworks\n          .Net Runtime and Framework SDK (if you seek to write your own Objects for integration with Virtuoso)\n          Virtuoso Universal Server for Windows with .NET CLR Hosting.\n        \n      \n    \n    \n    Tutorial Example\n\n  Please follow the steps below to maximize the value of this tutorial:\n  \n   Click on the &quot;Set Initial State&quot; link which registers the &quot;redcoalsmssvc&quot; service with Virtuoso. Click on the &quot;ho_s_3.sql&quot; link to see the code behind this step\n   Click on the &quot;Run&quot; links to actually experience the demo\n  \n\n  Demo Breakdown\n  \n   &quot;ho_s_3.sql&quot; performs the following steps\n  \n     Registers the &quot;redcoalsmssvc&quot; class with Virtuoso. Click on the &quot;redcoalsms.cs&quot; and &quot;redcoalsmsref.cs&quot; links to see the C# source code. Note that the class &quot;redcoalsmssvc&quot; is part of an assembly that has the namespace &quot;redcoalsms&quot;\n     Creates the &quot;Suppliers&quot; table \n     Creates a stored procedure &quot;redcoal_send_sms&quot; which demonstrates the syntax for creating an instance variable which includes the assembly namespace in the type reference. Specifically, note the use of an underscore instead of a dot when making this assignment \n     Creates a Trigger named &quot;send_sms_to_mgr_new_supp&quot; that sends an SMS message each time a new &quot;Supplier&quot; table record is inserted\n     Creates a Trigger named &quot;send_sms_to_mgr_mod_supp&quot; that sends an SMS message each time a &quot;Supplier&quot; record is updated\n     Creates a Trigger named &quot;send_sms_to_mgr_mod_supp&quot; that sends an SMS message each time a supplier record is deleted\n  \n  &quot;setup_sms.vsp&quot; sets up all of the base data and verifies that SMS service connectivity required by this demo is available.\n   &quot;handler.vsp&quot; is the actual interface through which you add or delete supplier records which result in SMS notifications being sent to your mobile phone.\n  \n\n\n   \n " ;
	rdf:type	foaf:Document ;
	dc:title	"Hosting CLR types using VSPX session management" ;
	sioc:content	"Overview\n    This is a variation of HO-S-3 with the SOAP client implemented ASP.NET and also demonstrates Virtuoso Server Pages for XML (VSPX) session management.\n    \n    Prerequisites\n    This demo currently works only on a Virtuoso server running under Microsoft Windows with following components installed:\n    \n      Windows\n        \n          .NET Runtime and Frameworks\n          .Net Runtime and Framework SDK (if you seek to write your own Objects for integration with Virtuoso)\n          Virtuoso Universal Server for Windows with .NET CLR Hosting.\n        \n      \n    \n    \n    Tutorial Example\n    \n      The setup_sms.vspx sets up the SMS sending unit.\n      The handler.vspx does inserts/deletes/updates to demonstrate the SMS sending from triggers.\n      The redcoalsms*.cs is an MS Visual Studio.NET generated SOAP client.\n      The redcoalsms.dll should be installed as a private assembly (not as CodeBase) because of permissions.\n      For details of the Redcoal SOAP service see it's description in http://www.xmethods.com\n     \n    " ;
	sioc:description	"Demonstrating the use of C# to create Virtuoso hosted Stored \n    Procedures and Triggers.  In this demo a database events trigger SMS \n    messages that are relayed via a C# based SOAP Client.  It also demonstrates \n    Virtuoso Server Pages session management." ;
	sioc:has_container	ns2:hosting ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:01 GMT" ;
	content:encoded	"Overview\n    This is a variation of HO-S-3 with the SOAP client implemented ASP.NET and also demonstrates Virtuoso Server Pages for XML (VSPX) session management.\n    \n    Prerequisites\n    This demo currently works only on a Virtuoso server running under Microsoft Windows with following components installed:\n    \n      Windows\n        \n          .NET Runtime and Frameworks\n          .Net Runtime and Framework SDK (if you seek to write your own Objects for integration with Virtuoso)\n          Virtuoso Universal Server for Windows with .NET CLR Hosting.\n        \n      \n    \n    \n    Tutorial Example\n    \n      The setup_sms.vspx sets up the SMS sending unit.\n      The handler.vspx does inserts/deletes/updates to demonstrate the SMS sending from triggers.\n      The redcoalsms*.cs is an MS Visual Studio.NET generated SOAP client.\n      The redcoalsms.dll should be installed as a private assembly (not as CodeBase) because of permissions.\n      For details of the Redcoal SOAP service see it&#39;s description in http://www.xmethods.com\n     \n    \n " ;
	rdf:type	foaf:Document ;
	dc:title	"Hosting CLR types using VSPX session management" ;
	sioc:content	"Overview\n    HO-S-5 is a variation of HO-S-3 that makes use of VSPX session management\n    \n    Prerequisites\n    The following prerequisites ensure the usability of these  \n    tutorial demos on Windows or Linux (and in other future Mono implementations): \n\n Linux\n   \n     Mono Runtime and Frameworks (ideally the version bundled with Virtuoso)\n     Mono SDK (if you seek to write your own Objects for integration with Virtuoso)\n     Virtuoso Universal Server for Linux with Mono Hosting\n     \nWindows\n   \n     .NET Runtime and Frameworks\n     .Net Runtime and Framework SDK (if you seek to write your own Objects for integration with Virtuoso)\n     Virtuoso Universal Server for Windows with .NET CLR Hosting\n     \n\n    \n    Tutorial Example\n    \n      The setup_sms.vspx sets up the SMS sending unit.\n      The handler.vspx does inserts/deletes/updates to demonstrate the SMS sending from triggers.\n      The redcoalsms_dom.cs is an HttpWebRequest SOAP client using DOM to process SOAP result.\n      The redcoalsms_dom.dll should be installed as a private assembly (not as CodeBase) because of permissions.\n      For details of the Redcoal SOAP service see it's description in http://www.xmethods.com\n      This service is compatible with Mono (http://go-mono.com)\n     \n    " ;
	sioc:description	"Demonstrating the use of C# to create Virtuoso hosted Stored \n    Procedures and Triggers. In this demo a database event trigger SMS messages \n    that are relayed via a  .NET DOM frameworks based C# SOAP Client. It also \n    demonstrates Virtuoso Server Pages session management." ;
	sioc:has_container	ns2:hosting ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:01 GMT" ;
	content:encoded	"Overview\n    HO-S-5 is a variation of HO-S-3 that makes use of VSPX session management\n    \n    Prerequisites\n    The following prerequisites ensure the usability of these  \n    tutorial demos on Windows or Linux (and in other future Mono implementations): \n\n Linux\n   \n     Mono Runtime and Frameworks (ideally the version bundled with Virtuoso)\n     Mono SDK (if you seek to write your own Objects for integration with Virtuoso)\n     Virtuoso Universal Server for Linux with Mono Hosting\n     \nWindows\n   \n     .NET Runtime and Frameworks\n     .Net Runtime and Framework SDK (if you seek to write your own Objects for integration with Virtuoso)\n     Virtuoso Universal Server for Windows with .NET CLR Hosting\n     \n\n    \n    Tutorial Example\n    \n      The setup_sms.vspx sets up the SMS sending unit.\n      The handler.vspx does inserts/deletes/updates to demonstrate the SMS sending from triggers.\n      The redcoalsms_dom.cs is an HttpWebRequest SOAP client using DOM to process SOAP result.\n      The redcoalsms_dom.dll should be installed as a private assembly (not as CodeBase) because of permissions.\n      For details of the Redcoal SOAP service see it&#39;s description in http://www.xmethods.com\n      This service is compatible with Mono (http://go-mono.com)\n     \n    \n " ;
	rdf:type	foaf:Document ;
	dc:title	"Integrating Common Language Runtime Objects with Virtuoso" ;
	sioc:content	"\n    Overview\n    The HO-S-10 sample is very similar to HO-S-2. The difference is using syntax CREATE LIBRARY. The statement imports assembly to internal Virtuoso table and imports types from it. After this the assembly can be removed from physical path and next time will be read from the table. The \"DROP LIBRARY\" removes assembly from table and drops imported types. \n    \n    Prerequisites\n    The following prerequisites ensure the usability of these tutorial demos on Windows\n\nWindows\n   \n     .NET Runtime and Frameworks\n     .Net Runtime and Framework SDK (if you seek to write your own Objects for integration with Virtuoso)\n     Virtuoso Universal Server for Windows with .NET CLR Hosting\n     \n\n    \n    Tutorial Example\n\n  The following tutorial shows how C# classes are used to create User\n  Defined Types (UDTs) in Virtuoso. \n  Please follow the steps below to maximize the value of this tutorial:\n\n\n Click on the \"Set Initial State\" link which registers the two C# classes with Virtuoso.\n It also copies the Point_ho_s_10.dll file to \"tmp\" directory in the server root. \n Note that the directory must exists, must be writeable for the user running virtuoso and must be in the DirsAllowed parameter in Virtuoso ini file.\n  Click on the \"ho_s_10.sql\" link to see the code behind this step \n Click on the \"Run\" links to actually experience the demo\n\n\nDemo Breakdown\n\n\n \"ho_s_10.sql\" performs the following steps\n  \n   Registers the \"Point\" classes with Virtuoso. Click \n   on the \"Point_ho_s_10.cs\" links to see the C# source code of these \n   classes\n   Creates the Object-Relational table \"Supplier_ho_s_10\" that includes a column \n   named \"Location\" that is of Type \"Point\" (a UDT)\n   Populates table with data\n   Using syntax: CREATE LIBRARY/ASSEMBLY \"myPoint\" as \"assembly\" WITH PERMISSION_SET = SAFE WITH AUTOREGISTER\n   is simular to:\n   CREATE LIBRARY/ASSEMBLY \"myPoint\" as \"assembly\"; and \n   import_clr ('myPoint', NULL);\n  \n\n \"vsp1.vsp\" is a variation of HO-S-2 (vsp3.vsp), with the column \n \"location\" being used to access and conditionally test the values of data \n member \"x\" (shown in \"Point.cs\" as 0).\n\n    " ;
	sioc:description	"Using C# Objects to extend Virtuoso via User Defined Types using CREATE LIBRARY/ASSEMBLY syntax." ;
	sioc:has_container	ns2:hosting ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:00 GMT" ;
	content:encoded	"\n    Overview\n    The HO-S-10 sample is very similar to HO-S-2. The difference is using syntax CREATE LIBRARY. The statement imports assembly to internal Virtuoso table and imports types from it. After this the assembly can be removed from physical path and next time will be read from the table. The &quot;DROP LIBRARY&quot; removes assembly from table and drops imported types. \n    \n    Prerequisites\n    The following prerequisites ensure the usability of these tutorial demos on Windows\n\nWindows\n   \n     .NET Runtime and Frameworks\n     .Net Runtime and Framework SDK (if you seek to write your own Objects for integration with Virtuoso)\n     Virtuoso Universal Server for Windows with .NET CLR Hosting\n     \n\n    \n    Tutorial Example\n\n  The following tutorial shows how C# classes are used to create User\n  Defined Types (UDTs) in Virtuoso. \n  Please follow the steps below to maximize the value of this tutorial:\n\n\n Click on the &quot;Set Initial State&quot; link which registers the two C# classes with Virtuoso.\n It also copies the Point_ho_s_10.dll file to &quot;tmp&quot; directory in the server root. \n Note that the directory must exists, must be writeable for the user running virtuoso and must be in the DirsAllowed parameter in Virtuoso ini file.\n  Click on the &quot;ho_s_10.sql&quot; link to see the code behind this step \n Click on the &quot;Run&quot; links to actually experience the demo\n\n\nDemo Breakdown\n\n\n &quot;ho_s_10.sql&quot; performs the following steps\n  \n   Registers the &quot;Point&quot; classes with Virtuoso. Click \n   on the &quot;Point_ho_s_10.cs&quot; links to see the C# source code of these \n   classes\n   Creates the Object-Relational table &quot;Supplier_ho_s_10&quot; that includes a column \n   named &quot;Location&quot; that is of Type &quot;Point&quot; (a UDT)\n   Populates table with data\n   Using syntax: CREATE LIBRARY/ASSEMBLY &quot;myPoint&quot; as &quot;assembly&quot; WITH PERMISSION_SET = SAFE WITH AUTOREGISTER\n   is simular to:\n   CREATE LIBRARY/ASSEMBLY &quot;myPoint&quot; as &quot;assembly&quot;; and \n   import_clr (&#39;myPoint&#39;, NULL);\n  \n\n &quot;vsp1.vsp&quot; is a variation of HO-S-2 (vsp3.vsp), with the column \n &quot;location&quot; being used to access and conditionally test the values of data \n member &quot;x&quot; (shown in &quot;Point.cs&quot; as 0).\n\n    \n " ;
	rdf:type	foaf:Document ;
	dc:title	"Integrating Common Language Runtime Objects with Virtuoso" ;
	sioc:content	"\n    Overview\n     This tutorial demonstrates the options PERMISSION_SET = SAFE and \n\tPERMISSION_SET = UNRESTRICTED on CREATE LIBRARY / ASSEMBLY.\n    \n    Prerequisites\n    The following prerequisites ensure the usability of these demos on Windows\n\nWindows\n   \n     .NET Runtime and Frameworks\n     .Net Runtime and Framework SDK (if you seek to write your own Objects for integration with Virtuoso)\n     Virtuoso Universal Server for Windows with .NET CLR Hosting\n     \n\n    \n    Tutorial Example\n\n  The tutorial shows how C# classes are used to create User\n  Defined Types (UDTs) in Virtuoso. \n  Please follow the steps below to maximize the value of this tutorial:\n\n\n Click on the \"Set Initial State\" link which registers the \n two C# classes within Virtuoso.  \n It also copies the restricted.dll and unrestricted.dll files to \"tmp\" directory in the server root. \n Note that the directory must exists, must be writeable for the user running virtuoso and must be in the DirsAllowed parameter in Virtuoso ini file.\n Click on the \"ho_s_11.sql\" link to examine \n the code behind this step.\n Click on the \"Run\" links to execute the demo.\n\n\nDemo Breakdown\n\n\n \"ho_s_11.sql\" performs the following steps\n  \n   Registers the \"Rest\" and \"UnRest\" classes with Virtuoso. Click \n   on the \"restricted.cs\" and \"unrestricted.cs\" links to see the C# source code of these \n   classes.\n  \n\n The \"unrestricted.vsp\" is shows classes that try to access \n File system and system variables. The \"restricted.vsp\", uses the same \n clases, but cannot complete the execution sucessfully because the assembly \n is imported with PERMISSION_SET = SAFE.  The sample shows the error returned upon \n executing the classes.\n\n    " ;
	sioc:description	"Using Restrictions for C# Imported types." ;
	sioc:has_container	ns2:hosting ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:00 GMT" ;
	content:encoded	"\n    Overview\n     This tutorial demonstrates the options PERMISSION_SET = SAFE and \n\tPERMISSION_SET = UNRESTRICTED on CREATE LIBRARY / ASSEMBLY.\n    \n    Prerequisites\n    The following prerequisites ensure the usability of these demos on Windows\n\nWindows\n   \n     .NET Runtime and Frameworks\n     .Net Runtime and Framework SDK (if you seek to write your own Objects for integration with Virtuoso)\n     Virtuoso Universal Server for Windows with .NET CLR Hosting\n     \n\n    \n    Tutorial Example\n\n  The tutorial shows how C# classes are used to create User\n  Defined Types (UDTs) in Virtuoso. \n  Please follow the steps below to maximize the value of this tutorial:\n\n\n Click on the &quot;Set Initial State&quot; link which registers the \n two C# classes within Virtuoso.  \n It also copies the restricted.dll and unrestricted.dll files to &quot;tmp&quot; directory in the server root. \n Note that the directory must exists, must be writeable for the user running virtuoso and must be in the DirsAllowed parameter in Virtuoso ini file.\n Click on the &quot;ho_s_11.sql&quot; link to examine \n the code behind this step.\n Click on the &quot;Run&quot; links to execute the demo.\n\n\nDemo Breakdown\n\n\n &quot;ho_s_11.sql&quot; performs the following steps\n  \n   Registers the &quot;Rest&quot; and &quot;UnRest&quot; classes with Virtuoso. Click \n   on the &quot;restricted.cs&quot; and &quot;unrestricted.cs&quot; links to see the C# source code of these \n   classes.\n  \n\n The &quot;unrestricted.vsp&quot; is shows classes that try to access \n File system and system variables. The &quot;restricted.vsp&quot;, uses the same \n clases, but cannot complete the execution sucessfully because the assembly \n is imported with PERMISSION_SET = SAFE.  The sample shows the error returned upon \n executing the classes.\n\n    \n " ;
	rdf:type	foaf:Document ;
	dc:title	"Making Table valued functions in C#" ;
	sioc:content	"\n\tOverview\n\tThe following tutorial demonstrates how Virtuoso can be extended \n\t    through the use of a .NET bound language such as C# to create resultsets. \n\tThe demonstrations in this section highlight transparent integration \n\t    (hosting) between Virtuoso and the Microsoft .NET and Mono implementations of \n\t    the ECMA Common Language Infrastructure (CLI) as well as how to use the Virtuoso\n\t    in-process ODBC client to call back the server from hosted managed code. \n    \n\tPrerequisites\n\tThe following prerequisites ensure the usability of these  \n\t    tutorial demos on Windows or Linux (and in other future Mono implementations): \n\t\n\t    Linux\n\t\t\n\t\t    Mono Runtime and Frameworks (ideally the version bundled with Virtuoso)\n\t\t    Mono SDK (if you seek to write your own Objects for integration with Virtuoso)\n\t\t    Virtuoso Universal Server for Linux with Mono Hosting\n\t\t    Virtuoso .NET provider\n\t\t\n\t    \n\t    Windows\n\t\t\n\t\t    .NET Runtime and Frameworks\n\t\t    .Net Runtime and Framework SDK (if you seek to write your own Objects for integration with Virtuoso)\n\t\t    Virtuoso Universal Server for Windows with .NET CLR Hosting\n\t\t    Virtuoso .NET provider\n\t\t\n\t    \n\t\n    \n\tTutorial Example\n\tThe following tutorial shows how C# classes can interact with the Virtuoso server. \n\tPlease follow the steps below to maximize the value of this tutorial:\n\t\n\t    Copy the file ho_s_14.dll next to the OpenLink.Data.VirtuosoClient.dll (if not allready there).\n\t    Click on the \"Set Initial State\" link which registers the C# class with Virtuoso. Click on the \"ho_s_14.sql\" link to see the code behind this step \n\t    Click on the \"Run\" links to actually experience the demo\n\t\n\tDemo Breakdown\n\t\n\t    \"ho_s_14.sql\" registers the \"openlink.virtuoso.tutorial.ho_s_14.add_data\" C# static method with Virtuoso. Click \n\t\ton the \"ho_s_14.cs\" link to see the C# source code of this class\n\t    \t\"vsp1.vsp\" uses the static method \"add_data\" of the \"openlink.virtuoso.tutorial.ho._s_14\" class to \n\t\tmake a resultset (like a SQL function would) through an in-process connection to the server. Take note of the\n\t\tusage of \"OpenLink.Virtuoso.InProcessPort\" key from AppDomain.GetData() to get the port on which the hosting Virtuoso server is listening at.\n\t\n    " ;
	sioc:description	"Using C# Objects to make table valued functions." ;
	sioc:has_container	ns2:hosting ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:00 GMT" ;
	content:encoded	"\n\tOverview\n\tThe following tutorial demonstrates how Virtuoso can be extended \n\t    through the use of a .NET bound language such as C# to create resultsets. \n\tThe demonstrations in this section highlight transparent integration \n\t    (hosting) between Virtuoso and the Microsoft .NET and Mono implementations of \n\t    the ECMA Common Language Infrastructure (CLI) as well as how to use the Virtuoso\n\t    in-process ODBC client to call back the server from hosted managed code. \n    \n\tPrerequisites\n\tThe following prerequisites ensure the usability of these  \n\t    tutorial demos on Windows or Linux (and in other future Mono implementations): \n\t\n\t    Linux\n\t\t\n\t\t    Mono Runtime and Frameworks (ideally the version bundled with Virtuoso)\n\t\t    Mono SDK (if you seek to write your own Objects for integration with Virtuoso)\n\t\t    Virtuoso Universal Server for Linux with Mono Hosting\n\t\t    Virtuoso .NET provider\n\t\t\n\t    \n\t    Windows\n\t\t\n\t\t    .NET Runtime and Frameworks\n\t\t    .Net Runtime and Framework SDK (if you seek to write your own Objects for integration with Virtuoso)\n\t\t    Virtuoso Universal Server for Windows with .NET CLR Hosting\n\t\t    Virtuoso .NET provider\n\t\t\n\t    \n\t\n    \n\tTutorial Example\n\tThe following tutorial shows how C# classes can interact with the Virtuoso server. \n\tPlease follow the steps below to maximize the value of this tutorial:\n\t\n\t    Copy the file ho_s_14.dll next to the OpenLink.Data.VirtuosoClient.dll (if not allready there).\n\t    Click on the &quot;Set Initial State&quot; link which registers the C# class with Virtuoso. Click on the &quot;ho_s_14.sql&quot; link to see the code behind this step \n\t    Click on the &quot;Run&quot; links to actually experience the demo\n\t\n\tDemo Breakdown\n\t\n\t    &quot;ho_s_14.sql&quot; registers the &quot;openlink.virtuoso.tutorial.ho_s_14.add_data&quot; C# static method with Virtuoso. Click \n\t\ton the &quot;ho_s_14.cs&quot; link to see the C# source code of this class\n\t    \t&quot;vsp1.vsp&quot; uses the static method &quot;add_data&quot; of the &quot;openlink.virtuoso.tutorial.ho._s_14&quot; class to \n\t\tmake a resultset (like a SQL function would) through an in-process connection to the server. Take note of the\n\t\tusage of &quot;OpenLink.Virtuoso.InProcessPort&quot; key from AppDomain.GetData() to get the port on which the hosting Virtuoso server is listening at.\n\t\n    \n " ;
	rdf:type	foaf:Document ;
	dc:title	"Accessing COM Objects via C#" ;
	sioc:content	"\n\tOverview\n\tThe following tutorial demonstrates how Virtuoso can access MS Windows COM\n\t    objects via .NET. \n\tThe demonstrations in this section highlight transparent integration \n\t    (hosting) between Virtuoso, the Microsoft .NET implementations of \n\t    the ECMA Common Language Infrastructure (CLI) and the Win32 COM Layer. \n    \n\tPrerequisites\n\tThe following prerequisites ensure the usability of these  \n\t    tutorial demos on Windows: \n\t\t\n\t\t    .NET Runtime and Frameworks\n\t\t    .Net Runtime and Framework SDK (if you seek to write your own Objects for integration with Virtuoso)\n\t\t    Virtuoso Universal Server for Windows with .NET CLR Hosting\n\t\t\n    \n\tTutorial Example\n\tThe following tutorial shows how the Virtuoso server can call native Win32 COM objects using\n\t    the .NET runtime as intermediary. \n\tPlease follow the steps below to maximize the value of this tutorial:\n\t\n\t    Register the COM library COM/VirtCOMServer/Debug/VirtCOMServer.dll with COM (via regsvr32.exe COM/VirtCOMServer/Debug/VirtCOMServer.dll).\n\t    Copy the interop assembly COM/VirtCOMServer/VirtCOMServer.dll next to the virtuoso server binary (if not allready there).\n\t    Click on the \"Set Initial State\" link which registers the C# interop class for the Interface IVirtCOMObject with Virtuoso. Click on the \"ho_s_15.sql\" link to see the code behind this step \n\t    Click on the \"Run\" links to actually experience the demo\n\t\n\tDemo Breakdown\n\t\n\t    \"ho_s_15.sql\" registers the \"VirtCOMServer.CVirtCOMObjectClass\" C# interop class with Virtuoso. Click \n\t\ton the \"VirtCOMObject.c\" and \"VirtCOMObject.h\" link to see the C++ source code of this interface and it's class\n\t    \t\"vsp1.vsp\" uses the methods \"AddAmount\", \"Clear\" and \"get_balance\" of the \"VirtCOMServer.IVirtCOMObject\" Interface to \n\t\tsum a number of amounts and get the resulting total.\n\t\n    " ;
	sioc:description	"Using the .NET to access native COM objects from Virtuoso/PL" ;
	sioc:has_container	ns2:hosting ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:00 GMT" ;
	content:encoded	"\n\tOverview\n\tThe following tutorial demonstrates how Virtuoso can access MS Windows COM\n\t    objects via .NET. \n\tThe demonstrations in this section highlight transparent integration \n\t    (hosting) between Virtuoso, the Microsoft .NET implementations of \n\t    the ECMA Common Language Infrastructure (CLI) and the Win32 COM Layer. \n    \n\tPrerequisites\n\tThe following prerequisites ensure the usability of these  \n\t    tutorial demos on Windows: \n\t\t\n\t\t    .NET Runtime and Frameworks\n\t\t    .Net Runtime and Framework SDK (if you seek to write your own Objects for integration with Virtuoso)\n\t\t    Virtuoso Universal Server for Windows with .NET CLR Hosting\n\t\t\n    \n\tTutorial Example\n\tThe following tutorial shows how the Virtuoso server can call native Win32 COM objects using\n\t    the .NET runtime as intermediary. \n\tPlease follow the steps below to maximize the value of this tutorial:\n\t\n\t    Register the COM library COM/VirtCOMServer/Debug/VirtCOMServer.dll with COM (via regsvr32.exe COM/VirtCOMServer/Debug/VirtCOMServer.dll).\n\t    Copy the interop assembly COM/VirtCOMServer/VirtCOMServer.dll next to the virtuoso server binary (if not allready there).\n\t    Click on the &quot;Set Initial State&quot; link which registers the C# interop class for the Interface IVirtCOMObject with Virtuoso. Click on the &quot;ho_s_15.sql&quot; link to see the code behind this step \n\t    Click on the &quot;Run&quot; links to actually experience the demo\n\t\n\tDemo Breakdown\n\t\n\t    &quot;ho_s_15.sql&quot; registers the &quot;VirtCOMServer.CVirtCOMObjectClass&quot; C# interop class with Virtuoso. Click \n\t\ton the &quot;VirtCOMObject.c&quot; and &quot;VirtCOMObject.h&quot; link to see the C++ source code of this interface and it&#39;s class\n\t    \t&quot;vsp1.vsp&quot; uses the methods &quot;AddAmount&quot;, &quot;Clear&quot; and &quot;get_balance&quot; of the &quot;VirtCOMServer.IVirtCOMObject&quot; Interface to \n\t\tsum a number of amounts and get the resulting total.\n\t\n    \n " ;
	rdf:type	foaf:Document ;
	dc:title	"Integrating Java Objects with Virtuoso" ;
	sioc:content	"\n    Overview\n  The following tutorial demonstrates how Virtuoso can be extended \n  through the use of Java to create User Defined Types (UDTs), Stored Procedures, \n  and Functions. This is an enhancement of its Object-Relational Database functionality. \n  The demonstrations in this section highlight transparent integration \n  (hosting) between Virtuoso and the Java Runtime Environment. \n  \n    Prerequisites\n  The following prerequisites ensure the usability of these tutorial demos on any platform with a Java Runtime environment:\n\n  Java Runtime (J2EE 1.2 and Higher)\n  Java SDK (if you seek to write your own Objects for integration with Virtuoso)\n  Virtuoso Universal Server with Java Runtime Hosting \n \n\n    Tutorial Example\nThe following tutorial shows how Java Classes are used to create User Defined Types (UDTs), Stored Procedures, and Functions in Virtuoso. \nPlease follow the steps below to maximize the value of this tutorial:\n\n  Click on the \"Set Initial State\" link which registers the Java classes used in this demo with Virtuoso. Click on the \"ho_s_1.sql\" link to see the code behind this step \n  Click on the \"Run\" links to actually experience the demo\n\n\nDemo Breakdown\n\n  \"ho_s_1.sql\" performs the following steps\n    \n       Registers the \"MyFinances\" and \"Point\" Classes with Virtuoso as \n       UDTs. Click on the \"MyFinances.java\" and \"Point.java\" links to see the \n       JAVA source code \n       Creates the conventional SQL table \"Employee\" \n       Creates the Object-Relational table \"Supplier\" that includes a \n       column named \"Location\" that is of  Type \"Point\" (which is a UDT)\n       Populates each of the newly created tables with data\n       Creates the \"distance\" stored procedure which uses UDT \n       methods to calculate the distance between points.\n    \n    \n    \"vsp1.vsp\" uses the static method \"tax\" of the \"MyFinances\" \n    class to compute the payroll tax values for each employee via the \n    \"salary\" column (like a SQL function would). \n    \"vsp2.vsp\" uses the \"distance\" method of the UDT based column \n    \"location\" to test for distance values less than \"3\". The distance values are return values from the \"Point\" UDT. Note that \"Point\" class is computing the distance between two arbitrary points\n    \"vsp3.vsp\" is a variation of the previous demo, with the UDT based \n    column \"location\" being used to access and conditionally test the values of \n    data member \"x\" (shown in \"Point.java\" as 0)\n    \"vsp4.vsp\" is another variation of a query on the \"Supplier\" table, \n    in this particular case the query uses a Stored Procedure (see definition in \n    \"ho_s_2.sql\") to filter its result set.  It achieves this by using data member \n    values \"x\" and \"y\" from column \"location\", and the arbitrary values 1 & 2 \n    as input parameters for the Stored Procedure \"distance\".  It then tests \n    the return values for those less than 3.\n\n    " ;
	sioc:description	"Using Java Objects to extend Virtuoso via User Defined Types." ;
	sioc:has_container	ns2:hosting ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:00 GMT" ;
	content:encoded	"\n    Overview\n  The following tutorial demonstrates how Virtuoso can be extended \n  through the use of Java to create User Defined Types (UDTs), Stored Procedures, \n  and Functions. This is an enhancement of its Object-Relational Database functionality. \n  The demonstrations in this section highlight transparent integration \n  (hosting) between Virtuoso and the Java Runtime Environment. \n  \n    Prerequisites\n  The following prerequisites ensure the usability of these tutorial demos on any platform with a Java Runtime environment:\n\n  Java Runtime (J2EE 1.2 and Higher)\n  Java SDK (if you seek to write your own Objects for integration with Virtuoso)\n  Virtuoso Universal Server with Java Runtime Hosting \n \n\n    Tutorial Example\nThe following tutorial shows how Java Classes are used to create User Defined Types (UDTs), Stored Procedures, and Functions in Virtuoso. \nPlease follow the steps below to maximize the value of this tutorial:\n\n  Click on the &quot;Set Initial State&quot; link which registers the Java classes used in this demo with Virtuoso. Click on the &quot;ho_s_1.sql&quot; link to see the code behind this step \n  Click on the &quot;Run&quot; links to actually experience the demo\n\n\nDemo Breakdown\n\n  &quot;ho_s_1.sql&quot; performs the following steps\n    \n       Registers the &quot;MyFinances&quot; and &quot;Point&quot; Classes with Virtuoso as \n       UDTs. Click on the &quot;MyFinances.java&quot; and &quot;Point.java&quot; links to see the \n       JAVA source code \n       Creates the conventional SQL table &quot;Employee&quot; \n       Creates the Object-Relational table &quot;Supplier&quot; that includes a \n       column named &quot;Location&quot; that is of  Type &quot;Point&quot; (which is a UDT)\n       Populates each of the newly created tables with data\n       Creates the &quot;distance&quot; stored procedure which uses UDT \n       methods to calculate the distance between points.\n    \n    \n    &quot;vsp1.vsp&quot; uses the static method &quot;tax&quot; of the &quot;MyFinances&quot; \n    class to compute the payroll tax values for each employee via the \n    &quot;salary&quot; column (like a SQL function would). \n    &quot;vsp2.vsp&quot; uses the &quot;distance&quot; method of the UDT based column \n    &quot;location&quot; to test for distance values less than &quot;3&quot;. The distance values are return values from the &quot;Point&quot; UDT. Note that &quot;Point&quot; class is computing the distance between two arbitrary points\n    &quot;vsp3.vsp&quot; is a variation of the previous demo, with the UDT based \n    column &quot;location&quot; being used to access and conditionally test the values of \n    data member &quot;x&quot; (shown in &quot;Point.java&quot; as 0)\n    &quot;vsp4.vsp&quot; is another variation of a query on the &quot;Supplier&quot; table, \n    in this particular case the query uses a Stored Procedure (see definition in \n    &quot;ho_s_2.sql&quot;) to filter its result set.  It achieves this by using data member \n    values &quot;x&quot; and &quot;y&quot; from column &quot;location&quot;, and the arbitrary values 1 &amp; 2 \n    as input parameters for the Stored Procedure &quot;distance&quot;.  It then tests \n    the return values for those less than 3.\n\n    \n " ;
	rdf:type	foaf:Document ;
	dc:title	"Integrating Java Objects with Virtuoso" ;
	sioc:content	"\n    Overview\n  The following tutorial demonstrates how Virtuoso can Restrict Java hosted types. \n  \n    Prerequisites\n  The following prerequisites ensure the usability of these tutorial demos on any platform with a Java Runtime environment:\n\n  Java Runtime (J2EE 1.2 and Higher)\n  Java SDK (if you seek to write your own Objects for integration with Virtuoso)\n  Virtuoso Universal Server with Java Runtime Hosting \n \n\n    Tutorial Example\nPlease follow the steps below to maximize the value of this tutorial:\n\n  Click on the \"Set Initial State\" link which registers the Java classes used in this demo with Virtuoso. Click on the \"ho_s_13.sql\" link to see the code behind this step \n  Click on the \"Run\" links to actually experience the demo\n\n\nDemo Breakdown\n\n  \"ho_s_13.sql\" performs the following steps\n    \n       Registers the \"Restricted\" and \"Unrestricted\" Classes with Virtuoso as \n       UDTs. Click on the \"Restricted.java\" and \"Unrestricted.java\" links to see the \n       JAVA source code \n       The Restricted types can't write to FS, can't read System envariment. For full list from restrictions, please see documentation.\n    \n    \n\n    " ;
	sioc:description	"Using Restrictions for Java hosted types." ;
	sioc:has_container	ns2:hosting ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:00 GMT" ;
	content:encoded	"\n    Overview\n  The following tutorial demonstrates how Virtuoso can Restrict Java hosted types. \n  \n    Prerequisites\n  The following prerequisites ensure the usability of these tutorial demos on any platform with a Java Runtime environment:\n\n  Java Runtime (J2EE 1.2 and Higher)\n  Java SDK (if you seek to write your own Objects for integration with Virtuoso)\n  Virtuoso Universal Server with Java Runtime Hosting \n \n\n    Tutorial Example\nPlease follow the steps below to maximize the value of this tutorial:\n\n  Click on the &quot;Set Initial State&quot; link which registers the Java classes used in this demo with Virtuoso. Click on the &quot;ho_s_13.sql&quot; link to see the code behind this step \n  Click on the &quot;Run&quot; links to actually experience the demo\n\n\nDemo Breakdown\n\n  &quot;ho_s_13.sql&quot; performs the following steps\n    \n       Registers the &quot;Restricted&quot; and &quot;Unrestricted&quot; Classes with Virtuoso as \n       UDTs. Click on the &quot;Restricted.java&quot; and &quot;Unrestricted.java&quot; links to see the \n       JAVA source code \n       The Restricted types can&#39;t write to FS, can&#39;t read System envariment. For full list from restrictions, please see documentation.\n    \n    \n\n    \n " ;
	rdf:type	foaf:Document ;
	dc:title	"Filter WebDAV content content by XQuery" ;
	sioc:content	"\n\tPreliminary\n\t\n\t    XQuery collection function can be used to get all parsed documents in collection. Virtuoso engine supports several types of collections:\n\t\n\t\n\t    http://local.virt/DAV/PATHTO - local DAV collection. Contains all documents in DAV collection with path \"PATHTO\".\n\t    \n\t    http://host:port/path - any other URL that can be used to access remote WebDAV collections \n\t\n\tIn this example collection function is used to filter local blog entries and all cached blog entries from subscriptions. search.vsp uses this collection to filter blogs by XPath exression. For instance, search.vsp with '//a' expression returns all link from all blogs.\n\t\n\t\n\t    text.vsp uses collection function to search blogs which contain some word. Note, it uses \"contains\" predicate to search blogs, this means it is case sensitive.\n\t\n    \n\tPrerequisites\n\tThis example needs the following VAD packages to be installed:\n\t\n\t    Conductor\n\t    Framework\n\t    Briefcase\n\t    Feed Manager\n\t    Weblog\n\t\n\tIf you do not have permissions to install the above please ask the administrator.\n\tThe VAD installation can be done via Conductor (if it's installed) or via ISQL tool using vad_install() API function. \n\t    For more details on vad installation please read the user manual.\n\t\n\t    Important: before to run any of the actions bellow you need to setup a ODS account (or use tutorial_demo with password secret).\n\t    In both cases you will need to login in ODS and create instances of the Briefcase, Feed Manager and Weblog applications. \n\t\n\t\n\t    Using the Feed Manager you should subscribe to some news feeds in RSS, Atom or RDF format.\n\t\n\t\n\t    Using the Briefcase you can upload some sample data in the account's home directory.\n\t\n\t\n\t    Using the Weblog, make few sample blog posts.\n\t\n    \n\tExample overview\n\tThis example demonstrates:\n\t\n\t    XQuery collection function\n\t    XPath extension functions\n\t    WebDAV Resource Filtering and WebDAV Extension Types (DETs)\n\t\n    \n\tExample Operation\n\t\n\t    Login into ODS using the link bellow, after successfull authentication the ODS login will redirect browser back to this page\n\t    Using the link 'Run' start the search.vsp\n\t    Initially you will have the ODS account's home directory set as a base, so you can change it using the browse button\n\t    If you don't have initial data loaded or data which not satisfies the conditions, the query execution will be produce empty result.\n\t\n    \n\tExample Setup\n\tThe demo support functions are prepared by loading the supplied SQL file\n    \n    How to run the examples\n\t\n\t    In order to enter the initial data via ODS you need to login and create instances via ODS. After entering the initial data, you will need to go back to this page. If you already done this just skip this step\n\t    In order to run the examples, you need to login in the Web Applications.\n\t    To login you can use the already defined user \"tutorial_demo\" with password \"secret\" case sensitive. \n\t    When you click the \"Run\" link of the search.vsp file the browser will be redirected to ODS login page. After succefull login the browser will be redirected back to this page. \n\t\n    " ;
	sioc:description	"fn:collection usage example" ;
	sioc:has_container	ns2:xml ,
		ns2:xmlapps ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:03 GMT" ;
	content:encoded	"\n\tPreliminary\n\t\n\t    XQuery collection function can be used to get all parsed documents in collection. Virtuoso engine supports several types of collections:\n\t\n\t\n\t    http://local.virt/DAV/PATHTO - local DAV collection. Contains all documents in DAV collection with path &quot;PATHTO&quot;.\n\t    \n\t    http://host:port/path - any other URL that can be used to access remote WebDAV collections \n\t\n\tIn this example collection function is used to filter local blog entries and all cached blog entries from subscriptions. search.vsp uses this collection to filter blogs by XPath exression. For instance, search.vsp with &#39;//a&#39; expression returns all link from all blogs.\n\t\n\t\n\t    text.vsp uses collection function to search blogs which contain some word. Note, it uses &quot;contains&quot; predicate to search blogs, this means it is case sensitive.\n\t\n    \n\tPrerequisites\n\tThis example needs the following VAD packages to be installed:\n\t\n\t    Conductor\n\t    Framework\n\t    Briefcase\n\t    Feed Manager\n\t    Weblog\n\t\n\tIf you do not have permissions to install the above please ask the administrator.\n\tThe VAD installation can be done via Conductor (if it&#39;s installed) or via ISQL tool using vad_install() API function. \n\t    For more details on vad installation please read the user manual.\n\t\n\t    Important: before to run any of the actions bellow you need to setup a ODS account (or use tutorial_demo with password secret).\n\t    In both cases you will need to login in ODS and create instances of the Briefcase, Feed Manager and Weblog applications. \n\t\n\t\n\t    Using the Feed Manager you should subscribe to some news feeds in RSS, Atom or RDF format.\n\t\n\t\n\t    Using the Briefcase you can upload some sample data in the account&#39;s home directory.\n\t\n\t\n\t    Using the Weblog, make few sample blog posts.\n\t\n    \n\tExample overview\n\tThis example demonstrates:\n\t\n\t    XQuery collection function\n\t    XPath extension functions\n\t    WebDAV Resource Filtering and WebDAV Extension Types (DETs)\n\t\n    \n\tExample Operation\n\t\n\t    Login into ODS using the link bellow, after successfull authentication the ODS login will redirect browser back to this page\n\t    Using the link &#39;Run&#39; start the search.vsp\n\t    Initially you will have the ODS account&#39;s home directory set as a base, so you can change it using the browse button\n\t    If you don&#39;t have initial data loaded or data which not satisfies the conditions, the query execution will be produce empty result.\n\t\n    \n\tExample Setup\n\tThe demo support functions are prepared by loading the supplied SQL file\n    \n    How to run the examples\n\t\n\t    In order to enter the initial data via ODS you need to login and create instances via ODS. After entering the initial data, you will need to go back to this page. If you already done this just skip this step\n\t    In order to run the examples, you need to login in the Web Applications.\n\t    To login you can use the already defined user &quot;tutorial_demo&quot; with password &quot;secret&quot; case sensitive. \n\t    When you click the &quot;Run&quot; link of the search.vsp file the browser will be redirected to ODS login page. After succefull login the browser will be redirected back to this page. \n\t\n    \n " ;
	rdf:type	foaf:Document ;
	dc:title	"Filter blogs content by XQuery" ;
	sioc:content	"\n      Example\n    collection description\n    \n      XQuery collection function can be used to get all parsed documents in collection. Virtuoso engine supports several types of collections:\n    \n    \n      http://local.virt/DAV/PATHTO - local DAV collection. Contains all documents in DAV collection with path \"PATHTO\".\n      \n      http://..... - any other URI relates to remote DAV collections \n    \n    In this example collection function is used to concatenate the entries from several RSS feed files and show their titles and link to the articles. example.vsp uses this collection to filter blogs by XPath exression. For instance, example.vsp with '//link' expression returns all link from all feeds.\n    Click on the \"Set initial state\" link to load the XML files in /DAV/feeds/xq_s_2a/ DAV Collection.\n    Click on the \"Run\" link to experience the demo. Please note that some of the options query files loaded in demo XQ-S-2.\n  " ;
	sioc:description	"collection usage example" ;
	sioc:has_container	ns2:xml ,
		ns2:xmlapps ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:03 GMT" ;
	content:encoded	"\n      Example\n    collection description\n    \n      XQuery collection function can be used to get all parsed documents in collection. Virtuoso engine supports several types of collections:\n    \n    \n      http://local.virt/DAV/PATHTO - local DAV collection. Contains all documents in DAV collection with path &quot;PATHTO&quot;.\n      \n      http://..... - any other URI relates to remote DAV collections \n    \n    In this example collection function is used to concatenate the entries from several RSS feed files and show their titles and link to the articles. example.vsp uses this collection to filter blogs by XPath exression. For instance, example.vsp with &#39;//link&#39; expression returns all link from all feeds.\n    Click on the &quot;Set initial state&quot; link to load the XML files in /DAV/feeds/xq_s_2a/ DAV Collection.\n    Click on the &quot;Run&quot; link to experience the demo. Please note that some of the options query files loaded in demo XQ-S-2.\n  \n " ;
	rdf:type	foaf:Document ;
	dc:title	"Slashdot RSS feed retrieval" ;
	sioc:content	"\n     Example\n    document description\n    \n      XQuery document function can be used to get a parsed document via URL.\n    \n    In this example the document is used to retreive the Slashdot RSS feed and convert the contents into a feed index.\n    Click on the \"Set initial state\" link to load the slash.xml file in /DAV/xmlsql/ DAV Collection with execute permisions.\n    Click on the \"Run\" link and the browser will be redirected to /DAV/xmlsql/slash.xml?contenttype=text/html.\n  " ;
	sioc:description	"document usage example" ;
	sioc:has_container	ns2:xmlapps ,
		ns2:xml ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:03 GMT" ;
	content:encoded	"\n     Example\n    document description\n    \n      XQuery document function can be used to get a parsed document via URL.\n    \n    In this example the document is used to retreive the Slashdot RSS feed and convert the contents into a feed index.\n    Click on the &quot;Set initial state&quot; link to load the slash.xml file in /DAV/xmlsql/ DAV Collection with execute permisions.\n    Click on the &quot;Run&quot; link and the browser will be redirected to /DAV/xmlsql/slash.xml?contenttype=text/html.\n  \n " ;
	rdf:type	foaf:Document ;
	dc:title	"OPML file generation from XHTML source" ;
	sioc:content	"\n      Example\n      \n\t  The demo retrieve a HTML pages containing attendees or bloggers listings and convert them to OPML.\n\t  The conversion is done with XQuery and user-defined XPath functions to resolve the feeds URLs. \n      \n      \n\t  The demo also retrieve few OPML files and re-construct them having the feeds URLs if they are missing.\n      \n      \n\t  When setting the initial state, the demo starts to retrieve pages from the different sites. \n\t  It could take a long time depending on the Internet connection of the machine that Virtuoso is running on. \n\t  It is safe to leave the pop-up open without waiting it to finish and press on the \"Run\" links,\n\t  however if this is the first time you run the initial state, the demo will show only partial results.\n\t  Once the feeds are resolved they will be cached locally in a database table and the generated OPML files will\n\t  be stored as a WebDAV resources.\n      \n      \n\t  The following are source references used in the demo:\n      \n      \n\t  http://wiki.techcrunch.com/third_meetup \t\t\t\t        \n\t  http://news.com.com/html/ne/blogs/CNETNewsBlog100.opml\t\t\t\n\t  http://conferences.oreillynet.com/pub/w/23/speakers.html                    \n\t  http://conferences.oreillynet.com/pub/w/38/speakers.html                    \n\t  http://www.alwayson-network.com/comments.php?id=10852_0_11_0_C              \n\t  http://www.gnomedex.com/holdings/br_2005%20Gnomedexers.opml\t\t\t\n\t  http://www.web2con.com/pub/w/40/speakers.html                               \n\t  http://www.thenewpr.com/wiki/pmwiki.php?pagename=Resources.CEOBlogsList     \n\t  http://nwr.cowblock.net/index.php?action=list\t\t\t\t\n\t  http://okrasoup.typepad.com/black_looks/2005/05/naija_blogs.html\t\t\n\t  http://allafrica.com/afdb/blogs/blogafrica.opml                             \n      \n  " ;
	sioc:description	"document usage example" ;
	sioc:has_container	ns2:xmlapps ,
		ns2:xml ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:03 GMT" ;
	content:encoded	"\n      Example\n      \n\t  The demo retrieve a HTML pages containing attendees or bloggers listings and convert them to OPML.\n\t  The conversion is done with XQuery and user-defined XPath functions to resolve the feeds URLs. \n      \n      \n\t  The demo also retrieve few OPML files and re-construct them having the feeds URLs if they are missing.\n      \n      \n\t  When setting the initial state, the demo starts to retrieve pages from the different sites. \n\t  It could take a long time depending on the Internet connection of the machine that Virtuoso is running on. \n\t  It is safe to leave the pop-up open without waiting it to finish and press on the &quot;Run&quot; links,\n\t  however if this is the first time you run the initial state, the demo will show only partial results.\n\t  Once the feeds are resolved they will be cached locally in a database table and the generated OPML files will\n\t  be stored as a WebDAV resources.\n      \n      \n\t  The following are source references used in the demo:\n      \n      \n\t  http://wiki.techcrunch.com/third_meetup \t\t\t\t        \n\t  http://news.com.com/html/ne/blogs/CNETNewsBlog100.opml\t\t\t\n\t  http://conferences.oreillynet.com/pub/w/23/speakers.html                    \n\t  http://conferences.oreillynet.com/pub/w/38/speakers.html                    \n\t  http://www.alwayson-network.com/comments.php?id=10852_0_11_0_C              \n\t  http://www.gnomedex.com/holdings/br_2005%20Gnomedexers.opml\t\t\t\n\t  http://www.web2con.com/pub/w/40/speakers.html                               \n\t  http://www.thenewpr.com/wiki/pmwiki.php?pagename=Resources.CEOBlogsList     \n\t  http://nwr.cowblock.net/index.php?action=list\t\t\t\t\n\t  http://okrasoup.typepad.com/black_looks/2005/05/naija_blogs.html\t\t\n\t  http://allafrica.com/afdb/blogs/blogafrica.opml                             \n      \n  \n " ;
	rdf:type	foaf:Document ;
	dc:title	"Overview" ;
	sioc:content	"\nXMLELEMENT() function. Overview\n\nXMLELEMENT takes an element name for identifier, an optional collection of attributes for the element, \n    and arguments that make up the element's content. \n    It returns an XML element. The second parameter may be omitted and at that time the \n    rest parameters may be present. If one of the arguments is a call of the xpath_eval returning \n    an attribute value, then this value would be added to element's content (not to element's attributes).\n\n\nXMLATTRIBUTES() function. Overview\n\n   This function creates a vector that may be used only as argument of \n   XMLELEMENT function. The vector has an even number of elements, each odd element is a name of an attribute, an\n   even element is its value. If the attribute value is NULL, then no attribute and no value is created.\n   If none of the attribute is created, then the function returns null.\n   If a parameter of the function is a column name, then you can omit the 'AS clause', and Virtuoso uses the partially escaped form of \n   the column name as the attribute name. \n\n\nsx_e_? Demos\n\n   Countinue with the next sx_e_? demos to see examples of functoins usage\n\n" ;
	sioc:description	"XMLELEMENT() function." ;
	sioc:has_container	ns2:xml ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:03 GMT" ;
	content:encoded	"\nXMLELEMENT() function. Overview\n\nXMLELEMENT takes an element name for identifier, an optional collection of attributes for the element, \n    and arguments that make up the element&#39;s content. \n    It returns an XML element. The second parameter may be omitted and at that time the \n    rest parameters may be present. If one of the arguments is a call of the xpath_eval returning \n    an attribute value, then this value would be added to element&#39;s content (not to element&#39;s attributes).\n\n\nXMLATTRIBUTES() function. Overview\n\n   This function creates a vector that may be used only as argument of \n   XMLELEMENT function. The vector has an even number of elements, each odd element is a name of an attribute, an\n   even element is its value. If the attribute value is NULL, then no attribute and no value is created.\n   If none of the attribute is created, then the function returns null.\n   If a parameter of the function is a column name, then you can omit the &#39;AS clause&#39;, and Virtuoso uses the partially escaped form of \n   the column name as the attribute name. \n\n\nsx_e_? Demos\n\n   Countinue with the next sx_e_? demos to see examples of functoins usage\n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"Making an XML element without content" ;
	sioc:content	"\nExample 1\nThis example shows a simple use of the XMLELEMENT() for creating the xml element 'Employee' (for each \nemployee) without content:\n\n\nselect XMLELEMENT (\"Employee\") from \"Demo\".\"demo\".\"Employees\"\n\n" ;
	sioc:description	"XML element without content" ;
	sioc:has_container	ns2:xml ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:03 GMT" ;
	content:encoded	"\nExample 1\nThis example shows a simple use of the XMLELEMENT() for creating the xml element &#39;Employee&#39; (for each \nemployee) without content:\n\n\nselect XMLELEMENT (&quot;Employee&quot;) from &quot;Demo&quot;.&quot;demo&quot;.&quot;Employees&quot;\n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"Making an XML element with a text content" ;
	sioc:content	"\nExample 2\nThis example shows a use of the XMLELEMENT() for creating the xml element 'EmployeeName' \n(for each employee) with the text content that is value of the 'LastName' column from the \n\"Demo\".\"demo\".\"Employees\" table.\n\n\nselect XMLELEMENT (\"EmployeeName\", \"LastName\") \nfrom \"Demo\".\"demo\".\"Employees\";\n\n" ;
	sioc:description	"XML element with a text content" ;
	sioc:has_container	ns2:xml ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:03 GMT" ;
	content:encoded	"\nExample 2\nThis example shows a use of the XMLELEMENT() for creating the xml element &#39;EmployeeName&#39; \n(for each employee) with the text content that is value of the &#39;LastName&#39; column from the \n&quot;Demo&quot;.&quot;demo&quot;.&quot;Employees&quot; table.\n\n\nselect XMLELEMENT (&quot;EmployeeName&quot;, &quot;LastName&quot;) \nfrom &quot;Demo&quot;.&quot;demo&quot;.&quot;Employees&quot;;\n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"Making an XML element with attributes" ;
	sioc:content	"\nExample 3\nThis example shows a use of the XMLELEMENT() for creating the xml element 'Emp' with three \nattributes - 'EmployeeID', 'firstname' and 'lastname' getting their values from the  \n'EmployeeID', 'FirstName' and 'LastName' columns, respectively. The pairs of attribute and its \nvalue are produced by XMLATTRIBUTES() function. If a parameter of the XMLATTRIBUTES() has no 'as clause', \nVirtuoso uses the partially escaped form of the column name as the attribute name. \n\n\nselect\n     XMLELEMENT (\"Emp\", XMLATTRIBUTES (\"EmployeeID\", \"FirstName\" as \"firstname\", \"LastName\" as \"lastname\"))\nfrom \"Demo\".\"demo\".\"Employees\";\n\n" ;
	sioc:description	"XML element with attributes" ;
	sioc:has_container	ns2:xml ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:03 GMT" ;
	content:encoded	"\nExample 3\nThis example shows a use of the XMLELEMENT() for creating the xml element &#39;Emp&#39; with three \nattributes - &#39;EmployeeID&#39;, &#39;firstname&#39; and &#39;lastname&#39; getting their values from the  \n&#39;EmployeeID&#39;, &#39;FirstName&#39; and &#39;LastName&#39; columns, respectively. The pairs of attribute and its \nvalue are produced by XMLATTRIBUTES() function. If a parameter of the XMLATTRIBUTES() has no &#39;as clause&#39;, \nVirtuoso uses the partially escaped form of the column name as the attribute name. \n\n\nselect\n     XMLELEMENT (&quot;Emp&quot;, XMLATTRIBUTES (&quot;EmployeeID&quot;, &quot;FirstName&quot; as &quot;firstname&quot;, &quot;LastName&quot; as &quot;lastname&quot;))\nfrom &quot;Demo&quot;.&quot;demo&quot;.&quot;Employees&quot;;\n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"Making an XML element with attribute, a text content and a sublement" ;
	sioc:content	"\nExample 4\nThis example shows a use of the XMLELEMENT() for creating the xml element 'Employee' with the  \n'EmployeeID' attribute, text content that is concatenations of the value of the 'FirstName' column, \nof the blank character and of the value of the 'LastName', and the 'Title' subelement having \n'title' attribute.\n\n\nselect XMLELEMENT ('Employee', XMLATTRIBUTES (\"EmployeeID\"), \"FirstName\"||' '||\"LastName\", \n                                XMLELEMENT(\"Title\", XMLATTRIBUTES ( \"Title\" as \"title\")))\nfrom \"Demo\".\"demo\".\"Employees\";\n\n" ;
	sioc:description	"XML element with attribute, a text content and a sublement" ;
	sioc:has_container	ns2:xml ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:03 GMT" ;
	content:encoded	"\nExample 4\nThis example shows a use of the XMLELEMENT() for creating the xml element &#39;Employee&#39; with the  \n&#39;EmployeeID&#39; attribute, text content that is concatenations of the value of the &#39;FirstName&#39; column, \nof the blank character and of the value of the &#39;LastName&#39;, and the &#39;Title&#39; subelement having \n&#39;title&#39; attribute.\n\n\nselect XMLELEMENT (&#39;Employee&#39;, XMLATTRIBUTES (&quot;EmployeeID&quot;), &quot;FirstName&quot;||&#39; &#39;||&quot;LastName&quot;, \n                                XMLELEMENT(&quot;Title&quot;, XMLATTRIBUTES ( &quot;Title&quot; as &quot;title&quot;)))\nfrom &quot;Demo&quot;.&quot;demo&quot;.&quot;Employees&quot;;\n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"Making an XML element with two nested subelements" ;
	sioc:content	"\nExample 5\nThis example shows a use of the XMLELEMENT() for creating the xml element \n'FullName' with two subelements 'firstname' and 'lastname'. Both subelements have the \nsimple text content. \n\n\nselect\n      XMLELEMENT ('FullName',\n                        XMLELEMENT ('firstname', \"FirstName\"),\n                        XMLELEMENT ('lastname', \"LastName\"))\nfrom \"Demo\".\"demo\".\"Employees\";\n\n" ;
	sioc:description	"XML element with two nested subelements" ;
	sioc:has_container	ns2:xml ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:03 GMT" ;
	content:encoded	"\nExample 5\nThis example shows a use of the XMLELEMENT() for creating the xml element \n&#39;FullName&#39; with two subelements &#39;firstname&#39; and &#39;lastname&#39;. Both subelements have the \nsimple text content. \n\n\nselect\n      XMLELEMENT (&#39;FullName&#39;,\n                        XMLELEMENT (&#39;firstname&#39;, &quot;FirstName&quot;),\n                        XMLELEMENT (&#39;lastname&#39;, &quot;LastName&quot;))\nfrom &quot;Demo&quot;.&quot;demo&quot;.&quot;Employees&quot;;\n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"Making an XML element with nested XMLFOREST() function" ;
	sioc:content	"\nExample 6\nThe example shows a use of the XMLELEMENT() with the nested call of XMLFOREST() function. The result is identical\nto the previous example.\n\n\nselect\n      XMLELEMENT ('FullName',\n                        XMLFOREST (\"FirstName\"as \"firstname\", \"LastName\" as \"lastname\"))\nfrom \"Demo\".\"demo\".\"Employees\";\n\n" ;
	sioc:description	"XML element with XMLFOREST() function call as parameter" ;
	sioc:has_container	ns2:xml ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:03 GMT" ;
	content:encoded	"\nExample 6\nThe example shows a use of the XMLELEMENT() with the nested call of XMLFOREST() function. The result is identical\nto the previous example.\n\n\nselect\n      XMLELEMENT (&#39;FullName&#39;,\n                        XMLFOREST (&quot;FirstName&quot;as &quot;firstname&quot;, &quot;LastName&quot; as &quot;lastname&quot;))\nfrom &quot;Demo&quot;.&quot;demo&quot;.&quot;Employees&quot;;\n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"Making an XML element with nested XMLCONCAT() function" ;
	sioc:content	"\nExample 7\nThe example shows a use of the XMLELEMENT() with the nested call of XMLCONCAT() function. The result is identical\nto the previous two examples.\n\n\nselect\n      XMLELEMENT ('FullName',\n                             XMLCONCAT (\n                                        XMLELEMENT ('firstname', \"FirstName\"),\n                                        XMLELEMENT ('lastname', \"LastName\"))) \nfrom \"Demo\".\"demo\".\"Employees\";\n\n" ;
	sioc:description	"XML element with XMLCONCAT() function call as parameter" ;
	sioc:has_container	ns2:xml ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:03 GMT" ;
	content:encoded	"\nExample 7\nThe example shows a use of the XMLELEMENT() with the nested call of XMLCONCAT() function. The result is identical\nto the previous two examples.\n\n\nselect\n      XMLELEMENT (&#39;FullName&#39;,\n                             XMLCONCAT (\n                                        XMLELEMENT (&#39;firstname&#39;, &quot;FirstName&quot;),\n                                        XMLELEMENT (&#39;lastname&#39;, &quot;LastName&quot;))) \nfrom &quot;Demo&quot;.&quot;demo&quot;.&quot;Employees&quot;;\n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"Making an XML element with nested XMLAGG() function" ;
	sioc:content	"\nExample 8\nThis example produces an 'Emp' element with attribute 'Title'\nand a list of all employees having the title 'Sales Representative' as element content.\n\n\nselect XMLELEMENT ('Emp', XMLATTRIBUTES (\"Title\"),                    \n                          XMLAGG (XMLELEMENT ('Name', \"FirstName\", ' ', \"LastName\")))\nfrom \"Demo\".\"demo\".\"Employees\"\nwhere \"Title\"= 'Sales Representative';\n\n" ;
	sioc:description	"XML element with XMLAGG() function call as parameter" ;
	sioc:has_container	ns2:xml ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:03 GMT" ;
	content:encoded	"\nExample 8\nThis example produces an &#39;Emp&#39; element with attribute &#39;Title&#39;\nand a list of all employees having the title &#39;Sales Representative&#39; as element content.\n\n\nselect XMLELEMENT (&#39;Emp&#39;, XMLATTRIBUTES (&quot;Title&quot;),                    \n                          XMLAGG (XMLELEMENT (&#39;Name&#39;, &quot;FirstName&quot;, &#39; &#39;, &quot;LastName&quot;)))\nfrom &quot;Demo&quot;.&quot;demo&quot;.&quot;Employees&quot;\nwhere &quot;Title&quot;= &#39;Sales Representative&#39;;\n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"Making an XML element with the entity objects as parameters " ;
	sioc:content	"\nExample 9\nThis example creates an 'FullAddress' element with \n\n   four attributes, three of them ('PostalCode', 'Address', 'City') are\n   produced by XMLATTRIBUTES, and the fourth attribute - 'country' is calculated by \n   xquery_eval \n  'Region' subelement, that is produced by xtree_doc\n  text content, that is produced by xpath_eval \n  'emp' subelement with text content from the column \"LastName\", that is created by nested\n  XMLELEMENT\n\n\nselect XMLELEMENT ('FullAddress',\n                        XMLATTRIBUTES ( \"PostalCode\", \"Address\", \"City\"),\n                        xtree_doc ('<Region>WA</Region>'),\n                        xquery_eval('//@country', xtree_doc('<a country=\"USA\"/>')),\n                        xpath_eval('//@Phone', xtree_doc('<a Phone=\"(206) 555-9857\"/>')),\n                        XMLELEMENT('emp', \"LastName\"))\nfrom \"Demo\".\"demo\".\"Employees\" \n\n" ;
	sioc:description	"XML element with the entity objects as parameters" ;
	sioc:has_container	ns2:xml ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:03 GMT" ;
	content:encoded	"\nExample 9\nThis example creates an &#39;FullAddress&#39; element with \n\n   four attributes, three of them (&#39;PostalCode&#39;, &#39;Address&#39;, &#39;City&#39;) are\n   produced by XMLATTRIBUTES, and the fourth attribute - &#39;country&#39; is calculated by \n   xquery_eval \n  &#39;Region&#39; subelement, that is produced by xtree_doc\n  text content, that is produced by xpath_eval \n  &#39;emp&#39; subelement with text content from the column &quot;LastName&quot;, that is created by nested\n  XMLELEMENT\n\n\nselect XMLELEMENT (&#39;FullAddress&#39;,\n                        XMLATTRIBUTES ( &quot;PostalCode&quot;, &quot;Address&quot;, &quot;City&quot;),\n                        xtree_doc (&#39;&lt;Region&gt;WA&lt;/Region&gt;&#39;),\n                        xquery_eval(&#39;//@country&#39;, xtree_doc(&#39;&lt;a country=&quot;USA&quot;/&gt;&#39;)),\n                        xpath_eval(&#39;//@Phone&#39;, xtree_doc(&#39;&lt;a Phone=&quot;(206) 555-9857&quot;/&gt;&#39;)),\n                        XMLELEMENT(&#39;emp&#39;, &quot;LastName&quot;))\nfrom &quot;Demo&quot;.&quot;demo&quot;.&quot;Employees&quot; \n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"Making a Forest of XML elements" ;
	sioc:content	"\nXMLFOREST() function. Overview\n\nXMLFOREST produces a forest of XML elements from the given list of arguments. \n   The arguments may be string expressions with optional aliases. If string expression is a column name, \n   then you can omit the 'AS clause', and Virtuoso uses the partially escaped form of \n   the column name as the name of the enclosing tag. If the expression evaluates to NULL, then no element is \n   created for that expression. If none of the element is created, then the function returns null.\n\n\nExample 1\nThis example produces a forest of five (or four) elements ('FName', 'LName', 'Title', 'Region' - if there is a value,  'str') \nwith the text content from 'FirstName', 'LastName', 'Title', and 'Region' \ncolumns of the \"Employees\" table and 'simple_string' string,\nand concatenates the elements produced. Five elements are created for the employee with \"EmployeeId\" = 1 and four elements \nare created for the employee with \"EmployeeId\" = 5:\n\n\nselect XMLFOREST (\"FirstName\" as \"FName\", \"LastName\" as \"LName\", \"Title\", \"Region\", 'simple_string' as \"str\")\n  from \"Demo\".\"demo\".\"Employees\" \n  where \"EmployeeId\" = 1 or \"EmployeeId\" = 5\n\n" ;
	sioc:description	"XMLFOREST() function" ;
	sioc:has_container	ns2:xml ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:03 GMT" ;
	content:encoded	"\nXMLFOREST() function. Overview\n\nXMLFOREST produces a forest of XML elements from the given list of arguments. \n   The arguments may be string expressions with optional aliases. If string expression is a column name, \n   then you can omit the &#39;AS clause&#39;, and Virtuoso uses the partially escaped form of \n   the column name as the name of the enclosing tag. If the expression evaluates to NULL, then no element is \n   created for that expression. If none of the element is created, then the function returns null.\n\n\nExample 1\nThis example produces a forest of five (or four) elements (&#39;FName&#39;, &#39;LName&#39;, &#39;Title&#39;, &#39;Region&#39; - if there is a value,  &#39;str&#39;) \nwith the text content from &#39;FirstName&#39;, &#39;LastName&#39;, &#39;Title&#39;, and &#39;Region&#39; \ncolumns of the &quot;Employees&quot; table and &#39;simple_string&#39; string,\nand concatenates the elements produced. Five elements are created for the employee with &quot;EmployeeId&quot; = 1 and four elements \nare created for the employee with &quot;EmployeeId&quot; = 5:\n\n\nselect XMLFOREST (&quot;FirstName&quot; as &quot;FName&quot;, &quot;LastName&quot; as &quot;LName&quot;, &quot;Title&quot;, &quot;Region&quot;, &#39;simple_string&#39; as &quot;str&quot;)\n  from &quot;Demo&quot;.&quot;demo&quot;.&quot;Employees&quot; \n  where &quot;EmployeeId&quot; = 1 or &quot;EmployeeId&quot; = 5\n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"Making a Forest of XML elements by XMLCONCAT() function" ;
	sioc:content	"\nXMLCONCAT() function Overview\n\nXMLCONCAT() accepts a list of XML value expressions as its arguments, and produces a forest of elements by \n   concatenating the XML values that are returned from the same row to make one value. \n   XMLCONCAT works like XMLFOREST,\n   except that XMLCONCAT parameters is a list of XML elements. \n    Null expressions are dropped from the result. If all the value expressions are null, then the function returns null.\n\nExample 1\n This example produces a forest from the 'FName', 'LName' and 'Region' (if a column value is not NULL)\n  elements for each employee: \n\n\nselect XMLCONCAT (\n  XMLELEMENT ('FName', \"FirstName\"), XMLELEMENT ('LName', \"LastName\"), \n  XMLELEMENT ('Region', \"Region\") )\nfrom \"Demo\".\"demo\".\"Employees\"; \n\n" ;
	sioc:description	"XMLCONCAT() function" ;
	sioc:has_container	ns2:xml ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:03 GMT" ;
	content:encoded	"\nXMLCONCAT() function Overview\n\nXMLCONCAT() accepts a list of XML value expressions as its arguments, and produces a forest of elements by \n   concatenating the XML values that are returned from the same row to make one value. \n   XMLCONCAT works like XMLFOREST,\n   except that XMLCONCAT parameters is a list of XML elements. \n    Null expressions are dropped from the result. If all the value expressions are null, then the function returns null.\n\nExample 1\n This example produces a forest from the &#39;FName&#39;, &#39;LName&#39; and &#39;Region&#39; (if a column value is not NULL)\n  elements for each employee: \n\n\nselect XMLCONCAT (\n  XMLELEMENT (&#39;FName&#39;, &quot;FirstName&quot;), XMLELEMENT (&#39;LName&#39;, &quot;LastName&quot;), \n  XMLELEMENT (&#39;Region&#39;, &quot;Region&quot;) )\nfrom &quot;Demo&quot;.&quot;demo&quot;.&quot;Employees&quot;; \n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"Making a Forest of XML elements by XMLAGG() function" ;
	sioc:content	"\nXMLAGG() function. Overview\n\nXMLAGG is aggregate function that produces a forest of XML elements from the given list of xml elements. \n   It concatenates the values returned from one column of multiple rows, unlike XMLCONCAT, \n   which concatenates the values returned from multiple columns in the same row.\n\n\nExample 1\nThis example produces a forest of all 'Name' of the employees having \nthe title 'Sales Representative' and places it into one top-level element:\n\n  select XMLELEMENT ('SalesRepresentatives',\n    XMLAGG (XMLELEMENT ('Name', \"FirstName\", ' ', \"LastName\")) )\n    from \"Demo\".\"demo\".\"Employees\"\n    where \"Title\"='Sales Representative';\n\n" ;
	sioc:description	"XMLAGG() function" ;
	sioc:has_container	ns2:xml ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:03 GMT" ;
	content:encoded	"\nXMLAGG() function. Overview\n\nXMLAGG is aggregate function that produces a forest of XML elements from the given list of xml elements. \n   It concatenates the values returned from one column of multiple rows, unlike XMLCONCAT, \n   which concatenates the values returned from multiple columns in the same row.\n\n\nExample 1\nThis example produces a forest of all &#39;Name&#39; of the employees having \nthe title &#39;Sales Representative&#39; and places it into one top-level element:\n\n  select XMLELEMENT (&#39;SalesRepresentatives&#39;,\n    XMLAGG (XMLELEMENT (&#39;Name&#39;, &quot;FirstName&quot;, &#39; &#39;, &quot;LastName&quot;)) )\n    from &quot;Demo&quot;.&quot;demo&quot;.&quot;Employees&quot;\n    where &quot;Title&quot;=&#39;Sales Representative&#39;;\n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"Making a freetext index" ;
	sioc:content	"\nPreliminaries\n\n  Virtuoso provides a compact and efficient free text indexing capability\n   for text and XML data.  A free text index can be created on any character\n   column, including wide and long data.\n  If the column being indexed is XML data, this can be declared and enforced\n   by the text index.  XML data will be indexed specially to support efficient\n   XPATH predicate evaluation with the xcontains predicate.\n\ncreate_freetext_index\n\t: CREATE TEXT [XML] INDEX ON q_table_name '(' column ')'\n\t[WITH KEY column]\n\t[NOT INSERT]  \n\t[CLUSTERED WITH '(' column_commalist ')' ] \n\t[USING FUNCTION]\n\t[LANGUAGE STRING]\n\t;\nThe XML keyword specifies that the data is to be indexed as XML, hence\nelement names and attributes will be processed separately for use with the\nXCONTAINS predicate.\n\n\nExample\n\n  The script inserts the files into the table.\n  The data is stored as text, not as persistent XML.\n  A VSP page shows the list of rows in the table.\n  Each row has the following links:\n   \n     XML source - send the XML text as escaped text enclosed in an HTML <pre> tag.\n     Raw XML - send the XML to the user agent, which must be able to render XML.\n   \n\n" ;
	sioc:description	"Freetext index over XML data" ;
	sioc:has_container	ns2:xml ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:03 GMT" ;
	content:encoded	"\nPreliminaries\n\n  Virtuoso provides a compact and efficient free text indexing capability\n   for text and XML data.  A free text index can be created on any character\n   column, including wide and long data.\n  If the column being indexed is XML data, this can be declared and enforced\n   by the text index.  XML data will be indexed specially to support efficient\n   XPATH predicate evaluation with the xcontains predicate.\n\ncreate_freetext_index\n\t: CREATE TEXT [XML] INDEX ON q_table_name &#39;(&#39; column &#39;)&#39;\n\t[WITH KEY column]\n\t[NOT INSERT]  \n\t[CLUSTERED WITH &#39;(&#39; column_commalist &#39;)&#39; ] \n\t[USING FUNCTION]\n\t[LANGUAGE STRING]\n\t;\nThe XML keyword specifies that the data is to be indexed as XML, hence\nelement names and attributes will be processed separately for use with the\nXCONTAINS predicate.\n\n\nExample\n\n  The script inserts the files into the table.\n  The data is stored as text, not as persistent XML.\n  A VSP page shows the list of rows in the table.\n  Each row has the following links:\n   \n     XML source - send the XML text as escaped text enclosed in an HTML &lt;pre&gt; tag.\n     Raw XML - send the XML to the user agent, which must be able to render XML.\n   \n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"Making a freetext index" ;
	sioc:content	"\nExample\n\n  Take the table def from nwxml3.sql\n  note the create text xml index ....\n  The script inserts the files into the table.\n  The data is stored as persistent XML.\n  A VSP page shows the list of rows in the table.\n  Each row has the following links:\n    \n      XML source - send the XML text as escaped text enclosed in an HTML <pre> tag.\n      Raw XML - send the XML to the user agent. Must be able to render XML.\n    \n\n" ;
	sioc:description	"Freetext index over persistent XML data" ;
	sioc:has_container	ns2:xml ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:03 GMT" ;
	content:encoded	"\nExample\n\n  Take the table def from nwxml3.sql\n  note the create text xml index ....\n  The script inserts the files into the table.\n  The data is stored as persistent XML.\n  A VSP page shows the list of rows in the table.\n  Each row has the following links:\n    \n      XML source - send the XML text as escaped text enclosed in an HTML &lt;pre&gt; tag.\n      Raw XML - send the XML to the user agent. Must be able to render XML.\n    \n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"Search on freetext indexed data" ;
	sioc:content	"\nExample\n\n  The example shows entity references using data from XS-S-1.\n  The VSP page has a button for retrieving title elements from a selected document, where the\n   title element contains a substring.\n  The example uses the 'xpath-contains' predicate.\n  The VSP page has a second button with the same function using text-contains.\n  This illustrates that xcontains + text-contains does not go through links, but that xpath_contains +\ncontains does.\n  The example has a viewer for the source of each page so that the entity references can be seen.\n  The page has some of the rows of the text table as persistent XML and others as text.\n  The columns are declared as ANY in SQL. This illustrates the late binding dependent on representation.\n\n" ;
	sioc:description	"Search on freetext indexed data" ;
	sioc:has_container	ns2:xml ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:03 GMT" ;
	content:encoded	"\nExample\n\n  The example shows entity references using data from XS-S-1.\n  The VSP page has a button for retrieving title elements from a selected document, where the\n   title element contains a substring.\n  The example uses the &#39;xpath-contains&#39; predicate.\n  The VSP page has a second button with the same function using text-contains.\n  This illustrates that xcontains + text-contains does not go through links, but that xpath_contains +\ncontains does.\n  The example has a viewer for the source of each page so that the entity references can be seen.\n  The page has some of the rows of the text table as persistent XML and others as text.\n  The columns are declared as ANY in SQL. This illustrates the late binding dependent on representation.\n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"Storing of XSLT results" ;
	sioc:content	"\nExample\n\n  The example shows entity references using data from XS-S-1.\n  The VSP page has a button for retrieving title elements from a selected document, where the title\n   element contains a substring.\n  The example uses the 'xpath contains' predicate.\n  The VSP page has a second button with the same function using text-contains.\n  This illustrates that xcontains + text-contains does not go through links, but that xpath_contains +\ncontains does.\n  The example has a viewer for the source of each page so that the entity references can be seen.\n  The page has some of the rows of the text table as persistent XML and others as text.\n  The columns are declared as ANY in SQL. This illustrates the late binding dependent on representation.\n\n" ;
	sioc:description	"Search on freetext indexed data using xcontains predicate" ;
	sioc:has_container	ns2:xml ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:03 GMT" ;
	content:encoded	"\nExample\n\n  The example shows entity references using data from XS-S-1.\n  The VSP page has a button for retrieving title elements from a selected document, where the title\n   element contains a substring.\n  The example uses the &#39;xpath contains&#39; predicate.\n  The VSP page has a second button with the same function using text-contains.\n  This illustrates that xcontains + text-contains does not go through links, but that xpath_contains +\ncontains does.\n  The example has a viewer for the source of each page so that the entity references can be seen.\n  The page has some of the rows of the text table as persistent XML and others as text.\n  The columns are declared as ANY in SQL. This illustrates the late binding dependent on representation.\n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"Storing of XSLT results" ;
	sioc:content	"\nExample\n\n  The sample shows storing of XSLT results into a table.\n  The sample will take abstracts and other suitable subsections from the\n  XS-S-1 data and insert them into another table.\n  The VSP will show the source and result of the transformation side by side for any given document.\n  The example uses data from XS-S-1, so it is important to set it first before trying this demo.\n\n" ;
	sioc:description	"Storing of XSLT results" ;
	sioc:has_container	ns2:xml ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:03 GMT" ;
	content:encoded	"\nExample\n\n  The sample shows storing of XSLT results into a table.\n  The sample will take abstracts and other suitable subsections from the\n  XS-S-1 data and insert them into another table.\n  The VSP will show the source and result of the transformation side by side for any given document.\n  The example uses data from XS-S-1, so it is important to set it first before trying this demo.\n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"XPATH interpreter" ;
	sioc:content	"\nExample\n\n  This example allows a selection from a document formed by\n   XS-S-1, and applies a user-written XPATH expression to it.\n   The page has selectable sample expressions including:\n   \n    Count of all titles\n    Sum of the length of sect2 titles\n    All first paragraphs of sect2's.\n   \n  The example uses xpath_eval, and iterates on the results if an array is produced.\n  A single element of the XS-S-1 data is picked as the context node.\n  A special button applies the operation on all rows with xpath_contains, showing the result set\n   with doc name and result.\n  This shows how one row can make multiple results with xpath_contains,\n   but will return an array with xpath_eval.\n\n" ;
	sioc:description	"Applying the XPATH expression" ;
	sioc:has_container	ns2:xml ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:03 GMT" ;
	content:encoded	"\nExample\n\n  This example allows a selection from a document formed by\n   XS-S-1, and applies a user-written XPATH expression to it.\n   The page has selectable sample expressions including:\n   \n    Count of all titles\n    Sum of the length of sect2 titles\n    All first paragraphs of sect2&#39;s.\n   \n  The example uses xpath_eval, and iterates on the results if an array is produced.\n  A single element of the XS-S-1 data is picked as the context node.\n  A special button applies the operation on all rows with xpath_contains, showing the result set\n   with doc name and result.\n  This shows how one row can make multiple results with xpath_contains,\n   but will return an array with xpath_eval.\n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"XSL-T transformation" ;
	sioc:content	"\nExample\n\n  This example uses the result from the XML parser in HTML mode to pass a parameter to the XSL-T style-sheet.\n  The XSL-T style-sheet renders the target XML document.\n  The section to be transformed is passed as the entity.\n\n" ;
	sioc:description	"Passing an XML entity as parameter to the XSL-T style-sheet" ;
	sioc:has_container	ns2:xml ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:03 GMT" ;
	content:encoded	"\nExample\n\n  This example uses the result from the XML parser in HTML mode to pass a parameter to the XSL-T style-sheet.\n  The XSL-T style-sheet renders the target XML document.\n  The section to be transformed is passed as the entity.\n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"Freetext indexing hooks" ;
	sioc:content	"\nFreetext Index\n\n  The freetext index has a default mechanism for indexing and unindexing.\n  By default indexing/unindexing is performed over data column.\n  A custom PL hook can be made for indexing/unindexing, and be associated to the \n   freetext index definition.\n  The data from additional columns can be indexed in the custom PL hooks.\n  Working together with off-band data columns to make index sensitive to changes in the additional columns data \n  they should be declared as off-band data.\n\n\nExample\nThe example SQL script does the following steps:\n\n  Definition of the hooks\n  Making of text index\n\n" ;
	sioc:description	"Building a freetext index using a custom PL indexing hooks" ;
	sioc:has_container	ns2:xml ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:03 GMT" ;
	content:encoded	"\nFreetext Index\n\n  The freetext index has a default mechanism for indexing and unindexing.\n  By default indexing/unindexing is performed over data column.\n  A custom PL hook can be made for indexing/unindexing, and be associated to the \n   freetext index definition.\n  The data from additional columns can be indexed in the custom PL hooks.\n  Working together with off-band data columns to make index sensitive to changes in the additional columns data \n  they should be declared as off-band data.\n\n\nExample\nThe example SQL script does the following steps:\n\n  Definition of the hooks\n  Making of text index\n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"Using the xpath_eval()" ;
	sioc:content	"\nPreliminaries\nThe xpath_eval() function returns the result of applying the xpath expression to the\ncontext node.  By default only the first result is returned, but supplying a third argument \nallows an index for the value to be specified. The default assumes a value of 1 here.  \nA value of 0 returns an array of 0 or more elements, one for each value selected by the\nxpath expression.\n\nExamples\nThe examples create an internal representation of the XML image using xml_tree_doc().\nAn xpath_eval() statement is then executed against the internal representation of the XML document\nspecified as /ROOT/Customers which identifies the <Customers> nodes to be processed.\n\nThe loop iterates over result for each attribute value (as CustomerID and ContactName in the first example) \nand retrieves the necessary values. \nThen the PL procedures calls result_names() and result() to send the result set to the client.\n\nThe first example will produce (when applying via ISQL utility)\n\nCustomerID  ContactName\nVARCHAR     VARCHAR\n________________________\n\nVINET       Paul Henriot\nLILAS       Carlos Gonzalez\n\n\nHere is the result from execution of the second script:\n\nOrderID    CustomerID    OrderDate              ProductID     Quantity\nVARCHAR    VARCHAR       VARCHAR                VARCHAR       VARCHAR\n______________________________________________________________________\n\n10248      VINET         1996-07-04T00:00:00    11            12\n10248      VINET         1996-07-04T00:00:00    42            10\n10283      LILAS         1996-08-16T00:00:00    72            3\n\n\nThe VSP code displays the same data, but formats it into a table.\n\nThe third example shows XML entities that have returned from first execution of the xpath_eval();\n" ;
	sioc:description	"Making the resultsets with xpath_eval() function" ;
	sioc:has_container	ns2:xml ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:03 GMT" ;
	content:encoded	"\nPreliminaries\nThe xpath_eval() function returns the result of applying the xpath expression to the\ncontext node.  By default only the first result is returned, but supplying a third argument \nallows an index for the value to be specified. The default assumes a value of 1 here.  \nA value of 0 returns an array of 0 or more elements, one for each value selected by the\nxpath expression.\n\nExamples\nThe examples create an internal representation of the XML image using xml_tree_doc().\nAn xpath_eval() statement is then executed against the internal representation of the XML document\nspecified as /ROOT/Customers which identifies the &lt;Customers&gt; nodes to be processed.\n\nThe loop iterates over result for each attribute value (as CustomerID and ContactName in the first example) \nand retrieves the necessary values. \nThen the PL procedures calls result_names() and result() to send the result set to the client.\n\nThe first example will produce (when applying via ISQL utility)\n\nCustomerID  ContactName\nVARCHAR     VARCHAR\n________________________\n\nVINET       Paul Henriot\nLILAS       Carlos Gonzalez\n\n\nHere is the result from execution of the second script:\n\nOrderID    CustomerID    OrderDate              ProductID     Quantity\nVARCHAR    VARCHAR       VARCHAR                VARCHAR       VARCHAR\n______________________________________________________________________\n\n10248      VINET         1996-07-04T00:00:00    11            12\n10248      VINET         1996-07-04T00:00:00    42            10\n10283      LILAS         1996-08-16T00:00:00    72            3\n\n\nThe VSP code displays the same data, but formats it into a table.\n\nThe third example shows XML entities that have returned from first execution of the xpath_eval();\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"Overview" ;
	sioc:content	"\nMapping Schemas as XML views.\n\n\nXML views of relational data is similar to creating views by using CREATE VIEW statements.\nXML views can be created by using the XML Schema Definition (XSD) language, and then can be queried by using XML Path \nlanguage (XPATH) queries or XML Query (XQUERY) queries with using xmlview function.\n\n \nAn XSD schema with the special set of annotations is referred to as a mapping schema. These annotations are used \nwithin the XSD schema to specify XML data to relational store mapping. This includes mapping between elements and \nattributes in the XSD schema to tables (views) and columns in the databases. If you do not specify the annotations, \ndefault mapping takes place. By default, an XSD element with complex type maps to a table (view) name in the \nspecified database and an element or attribute with a simple type maps to the column with the same name as \nthe element/attribute.\nThese annotations can also be used to specify the hierarchical relationships in XML \n(thus, representing the relationships in the database because XSD schemas are simply an XML view of relational data).\n\n\nA file containg a mapping schema may be loaded by calling the \nxml_load_mapping_schema_decl \nfunction. A name (without extension .xsd) of the file containg a mapping schema is considered to be the name of \nthe xml view, defined by a given mapping schema.\n\n" ;
	sioc:description	"Mapping Schemas" ;
	sioc:has_container	ns2:xml ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:03 GMT" ;
	content:encoded	"\nMapping Schemas as XML views.\n\n\nXML views of relational data is similar to creating views by using CREATE VIEW statements.\nXML views can be created by using the XML Schema Definition (XSD) language, and then can be queried by using XML Path \nlanguage (XPATH) queries or XML Query (XQUERY) queries with using xmlview function.\n\n \nAn XSD schema with the special set of annotations is referred to as a mapping schema. These annotations are used \nwithin the XSD schema to specify XML data to relational store mapping. This includes mapping between elements and \nattributes in the XSD schema to tables (views) and columns in the databases. If you do not specify the annotations, \ndefault mapping takes place. By default, an XSD element with complex type maps to a table (view) name in the \nspecified database and an element or attribute with a simple type maps to the column with the same name as \nthe element/attribute.\nThese annotations can also be used to specify the hierarchical relationships in XML \n(thus, representing the relationships in the database because XSD schemas are simply an XML view of relational data).\n\n\nA file containg a mapping schema may be loaded by calling the \nxml_load_mapping_schema_decl \nfunction. A name (without extension .xsd) of the file containg a mapping schema is considered to be the name of \nthe xml view, defined by a given mapping schema.\n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	_:v1000010003 ;
	sioc:content	"\nPreliminaries\n\nThe sql:relation annotation maps an XML node in the XSD schema to a database table. \nThe name of a table (view) is specified as the value of the sql:relation annotation.\nWhen sql:relation is specified on an element, the scope of this annotation applies to all attributes and \nsubelements that are described in the complex type definition of that element, therefore, providing a shortcut \nin writing annotations.\nThe sql:relation annotation also may be used if identifiers that are valid in SQL \nare not valid in XML. For example, 'Order Details' is a valid table name in SQL, but not in XML. \nIn such cases, the sql:relation annotation can be used to specify the mapping, for example:\n<xsd:element name=\"OrderDetails\" sql:relation=\"Order Details\">\n...\n\nThe sql:field annotation maps an XML node in the schema to a database column. It's not allowed to specify \nsql:field on an empty content element.\n\n\nExample\n\nIn this example, the XSD schema consists of an 'Emp' element of complex type with 'FirstName',\n'LastName' and 'title' child elements and the 'EmpID' attribute.\nThe sql:relation annotation maps the 'Emp' element to the Demo.demo.Employees table. The sql:field \nannotation maps the 'title' element to the 'Title' column and the 'EmpID' attribute \nto the \"EmployeeID\" column.\nNo annotations are specified for the 'FirstName' and 'LastName' elements. This results in a \ndefault mapping of the elements to the columns with the same names. \n\n\n<xsd:schema xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\n            xmlns:sql=\"urn:schemas-microsoft-com:mapping-schema\">\n  <xsd:element name=\"Emp\" sql:relation=\"Demo.demo.Employees\" >\n   <xsd:complexType>\n     <xsd:sequence>\n        <xsd:element name=\"FirstName\"  \n                     type=\"xsd:string\" /> \n        <xsd:element name=\"LastName\"  \n                     type=\"xsd:string\" />\n        <xsd:element name=\"title\"  \n\t\t     sql:field=\"Title\"\n                     type=\"xsd:string\" />\n     </xsd:sequence>\n     <xsd:attribute name=\"EmpID\"  sql:field=\"EmployeeID\"  type=\"xsd:integer\" />\n    </xsd:complexType>\n  </xsd:element>\n</xsd:schema>\n\nLet the schema is written to the file 'EmpSchema.xsd', then after loading this file by \nxml_load_mapping_schema_decl function, the first example will produce a result for the XPath query:\n\n\nXPATH [__view 'EmpSchema'] /*\n\nthe second example will produce a result for the XQuery query:\n\n select xquery_eval('<doc>{for $r in xmlview(\"EmpSchema\")/* return $r}</doc>', xtree_doc('<q/>')); \n\n\n<doc> is necessary for serialization (any name instead 'doc' is possible)\n\n\n" ;
	sioc:description	"Using sql:relation and sql:field" ;
	sioc:has_container	ns2:xml ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:03 GMT" ;
	content:encoded	"\nPreliminaries\n\nThe sql:relation annotation maps an XML node in the XSD schema to a database table. \nThe name of a table (view) is specified as the value of the sql:relation annotation.\nWhen sql:relation is specified on an element, the scope of this annotation applies to all attributes and \nsubelements that are described in the complex type definition of that element, therefore, providing a shortcut \nin writing annotations.\nThe sql:relation annotation also may be used if identifiers that are valid in SQL \nare not valid in XML. For example, &#39;Order Details&#39; is a valid table name in SQL, but not in XML. \nIn such cases, the sql:relation annotation can be used to specify the mapping, for example:\n&lt;xsd:element name=&quot;OrderDetails&quot; sql:relation=&quot;Order Details&quot;&gt;\n...\n\nThe sql:field annotation maps an XML node in the schema to a database column. It&#39;s not allowed to specify \nsql:field on an empty content element.\n\n\nExample\n\nIn this example, the XSD schema consists of an &#39;Emp&#39; element of complex type with &#39;FirstName&#39;,\n&#39;LastName&#39; and &#39;title&#39; child elements and the &#39;EmpID&#39; attribute.\nThe sql:relation annotation maps the &#39;Emp&#39; element to the Demo.demo.Employees table. The sql:field \nannotation maps the &#39;title&#39; element to the &#39;Title&#39; column and the &#39;EmpID&#39; attribute \nto the &quot;EmployeeID&quot; column.\nNo annotations are specified for the &#39;FirstName&#39; and &#39;LastName&#39; elements. This results in a \ndefault mapping of the elements to the columns with the same names. \n\n\n&lt;xsd:schema xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema&quot;\n            xmlns:sql=&quot;urn:schemas-microsoft-com:mapping-schema&quot;&gt;\n  &lt;xsd:element name=&quot;Emp&quot; sql:relation=&quot;Demo.demo.Employees&quot; &gt;\n   &lt;xsd:complexType&gt;\n     &lt;xsd:sequence&gt;\n        &lt;xsd:element name=&quot;FirstName&quot;  \n                     type=&quot;xsd:string&quot; /&gt; \n        &lt;xsd:element name=&quot;LastName&quot;  \n                     type=&quot;xsd:string&quot; /&gt;\n        &lt;xsd:element name=&quot;title&quot;  \n\t\t     sql:field=&quot;Title&quot;\n                     type=&quot;xsd:string&quot; /&gt;\n     &lt;/xsd:sequence&gt;\n     &lt;xsd:attribute name=&quot;EmpID&quot;  sql:field=&quot;EmployeeID&quot;  type=&quot;xsd:integer&quot; /&gt;\n    &lt;/xsd:complexType&gt;\n  &lt;/xsd:element&gt;\n&lt;/xsd:schema&gt;\n\nLet the schema is written to the file &#39;EmpSchema.xsd&#39;, then after loading this file by \nxml_load_mapping_schema_decl function, the first example will produce a result for the XPath query:\n\n\nXPATH [__view &#39;EmpSchema&#39;] /*\n\nthe second example will produce a result for the XQuery query:\n\n select xquery_eval(&#39;&lt;doc&gt;{for $r in xmlview(&quot;EmpSchema&quot;)/* return $r}&lt;/doc&gt;&#39;, xtree_doc(&#39;&lt;q/&gt;&#39;)); \n\n\n&lt;doc&gt; is necessary for serialization (any name instead &#39;doc&#39; is possible)\n\n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	_:v1000010004 ;
	sioc:content	"\nPreliminaries\n\nIn the annotated XSD schema, the sql:relationship annotation is used to nest the schema elements hierarchically, \non the basis of primary key and foreign key relationships among the underlying tables to which the elements map. \nIn specifying the sql:relationship annotation, you must identify: \n The parent table (Customers) and the child table (Orders).\n The necessary join condition. (CustomerID in Orders is a child key that refers to the CustomerID parent key in the Customers table.) \n\nThis information is used in generating the proper hierarchy. (For each parent element, the related child \nelements appear as subelements.)\nTo provide the table names and the necessary join information, the following attributes are specified on the \nsql:relationship annotation: \n\n   \n'name' specifies the unique name of the relationship;\n  \n  'parent' specifies the parent relation (table). This is an optional attribute; if the attribute is not specified, the parent \ntable name is obtained from information in the child hierarchy in the document. If the schema specifies two \nparent-child hierarchies that use the same <sql:relationship> but different parent elements, you do not specify \nthe parent attribute in <sql:relationship>. This information is obtained from the hierarchy in the schema.\n  \n   'parent-key' specifies the parent key of the parent. If the parent key is composed of multiple columns, values are specified \nwith a space between them. There is a positional mapping between the values that are specified for the multicolumn \nkey and for the corresponding child key.\n  \n  'child' specifies the child relation (table).\n  \n  'child-key' specifies the child key in the child referring to parent-key in parent. If the child key is composed of multiple \nattributes (columns), the child-key values are specified with a space between them. There is a positional \nmapping between the values that are specified for the multicolumn key and for the corresponding parent key.\n  \n\nThese attributes are valid only with the <sql:relationship> element.\n\n\n\nExample. Specifying the sql:relationship annotation on an element.\n\nThe following annotated XSD schema includes 'Customer' and 'Order' elements. \nThe 'Order' element is a subelement of the 'Customer' element.\nIn the schema, the sql:relationship annotation is specified on the 'Order' subelement. The relationship \nitself is defined in the 'appinfo' element.\nThe 'relationship' element identifies CustomerID in the Orders table as a foreign key that refers to the \nCustomerID primary key in the Customers table. Therefore, orders that belong to a customer appear as a subelement of \nthat 'Customer' element.\n\n\n<xsd:schema xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\n            xmlns:sql=\"urn:schemas-microsoft-com:mapping-schema\">\n<xsd:annotation>\n  <xsd:appinfo>\n    <sql:relationship name=\"CustOrders\"\n          parent=\"Demo.demo.Customers\"\n          parent-key=\"CustomerID\"\n          child=\"Demo.demo.Orders\"\n          child-key=\"CustomerID\" />\n  </xsd:appinfo>\n</xsd:annotation>\n\n  <xsd:element name=\"Customer\" sql:relation=\"Demo.demo.Customers\" type=\"CustomerType\" />\n   <xsd:complexType name=\"CustomerType\" >\n     <xsd:sequence>\n        <xsd:element name=\"Order\" \n                     sql:relation=\"Demo.demo.Orders\"\n                    sql:relationship=\"CustOrders\" >\n           <xsd:complexType>\n              <xsd:attribute name=\"OrderID\" type=\"xsd:integer\" />\n              <xsd:attribute name=\"CustomerID\" type=\"xsd:string\" />\n           </xsd:complexType>\n        </xsd:element>\n     </xsd:sequence>\n        <xsd:attribute name=\"CustomerID\"   type=\"xsd:string\" /> \n        <xsd:attribute name=\"ContactName\"  type=\"xsd:string\" />\n    </xsd:complexType>\n</xsd:schema>\n\nLet the schema is written to the file 'CustOr_constant.xsd', then after loading this file by \nxml_load_mapping_schema_decl function, the first example will produce a result for the XPath query:\n\n\nXPATH [__view 'Customer_Order'] /Customer[@CustomerID=\"QUEEN\"];\n\n\nthe second example will produce a result for the XQuery query:\n\n\nselect xquery_eval('<doc>{for $r in xmlview(\"Customer_Order\")/*[@CustomerID=\"QUEEN\"] return $r}</doc>', xtree_doc('<q/>'))\n\n\n" ;
	sioc:description	"Using sql:relationship to Specify Relationships" ;
	sioc:has_container	ns2:xml ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:03 GMT" ;
	content:encoded	"\nPreliminaries\n\nIn the annotated XSD schema, the sql:relationship annotation is used to nest the schema elements hierarchically, \non the basis of primary key and foreign key relationships among the underlying tables to which the elements map. \nIn specifying the sql:relationship annotation, you must identify: \n The parent table (Customers) and the child table (Orders).\n The necessary join condition. (CustomerID in Orders is a child key that refers to the CustomerID parent key in the Customers table.) \n\nThis information is used in generating the proper hierarchy. (For each parent element, the related child \nelements appear as subelements.)\nTo provide the table names and the necessary join information, the following attributes are specified on the \nsql:relationship annotation: \n\n   \n&#39;name&#39; specifies the unique name of the relationship;\n  \n  &#39;parent&#39; specifies the parent relation (table). This is an optional attribute; if the attribute is not specified, the parent \ntable name is obtained from information in the child hierarchy in the document. If the schema specifies two \nparent-child hierarchies that use the same &lt;sql:relationship&gt; but different parent elements, you do not specify \nthe parent attribute in &lt;sql:relationship&gt;. This information is obtained from the hierarchy in the schema.\n  \n   &#39;parent-key&#39; specifies the parent key of the parent. If the parent key is composed of multiple columns, values are specified \nwith a space between them. There is a positional mapping between the values that are specified for the multicolumn \nkey and for the corresponding child key.\n  \n  &#39;child&#39; specifies the child relation (table).\n  \n  &#39;child-key&#39; specifies the child key in the child referring to parent-key in parent. If the child key is composed of multiple \nattributes (columns), the child-key values are specified with a space between them. There is a positional \nmapping between the values that are specified for the multicolumn key and for the corresponding parent key.\n  \n\nThese attributes are valid only with the &lt;sql:relationship&gt; element.\n\n\n\nExample. Specifying the sql:relationship annotation on an element.\n\nThe following annotated XSD schema includes &#39;Customer&#39; and &#39;Order&#39; elements. \nThe &#39;Order&#39; element is a subelement of the &#39;Customer&#39; element.\nIn the schema, the sql:relationship annotation is specified on the &#39;Order&#39; subelement. The relationship \nitself is defined in the &#39;appinfo&#39; element.\nThe &#39;relationship&#39; element identifies CustomerID in the Orders table as a foreign key that refers to the \nCustomerID primary key in the Customers table. Therefore, orders that belong to a customer appear as a subelement of \nthat &#39;Customer&#39; element.\n\n\n&lt;xsd:schema xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema&quot;\n            xmlns:sql=&quot;urn:schemas-microsoft-com:mapping-schema&quot;&gt;\n&lt;xsd:annotation&gt;\n  &lt;xsd:appinfo&gt;\n    &lt;sql:relationship name=&quot;CustOrders&quot;\n          parent=&quot;Demo.demo.Customers&quot;\n          parent-key=&quot;CustomerID&quot;\n          child=&quot;Demo.demo.Orders&quot;\n          child-key=&quot;CustomerID&quot; /&gt;\n  &lt;/xsd:appinfo&gt;\n&lt;/xsd:annotation&gt;\n\n  &lt;xsd:element name=&quot;Customer&quot; sql:relation=&quot;Demo.demo.Customers&quot; type=&quot;CustomerType&quot; /&gt;\n   &lt;xsd:complexType name=&quot;CustomerType&quot; &gt;\n     &lt;xsd:sequence&gt;\n        &lt;xsd:element name=&quot;Order&quot; \n                     sql:relation=&quot;Demo.demo.Orders&quot;\n                    sql:relationship=&quot;CustOrders&quot; &gt;\n           &lt;xsd:complexType&gt;\n              &lt;xsd:attribute name=&quot;OrderID&quot; type=&quot;xsd:integer&quot; /&gt;\n              &lt;xsd:attribute name=&quot;CustomerID&quot; type=&quot;xsd:string&quot; /&gt;\n           &lt;/xsd:complexType&gt;\n        &lt;/xsd:element&gt;\n     &lt;/xsd:sequence&gt;\n        &lt;xsd:attribute name=&quot;CustomerID&quot;   type=&quot;xsd:string&quot; /&gt; \n        &lt;xsd:attribute name=&quot;ContactName&quot;  type=&quot;xsd:string&quot; /&gt;\n    &lt;/xsd:complexType&gt;\n&lt;/xsd:schema&gt;\n\nLet the schema is written to the file &#39;CustOr_constant.xsd&#39;, then after loading this file by \nxml_load_mapping_schema_decl function, the first example will produce a result for the XPath query:\n\n\nXPATH [__view &#39;Customer_Order&#39;] /Customer[@CustomerID=&quot;QUEEN&quot;];\n\n\nthe second example will produce a result for the XQuery query:\n\n\nselect xquery_eval(&#39;&lt;doc&gt;{for $r in xmlview(&quot;Customer_Order&quot;)/*[@CustomerID=&quot;QUEEN&quot;] return $r}&lt;/doc&gt;&#39;, xtree_doc(&#39;&lt;q/&gt;&#39;))\n\n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	_:v1000010005 ;
	sioc:content	"\nExample.\n\nThe schema in this example includes a 'Customer' element with 'CustomerID' and \n'ContactName' child \nelements and an OrderIDList attribute of IDREFS type. The 'Customer' element maps to the Customers table. \nBy default, the scope of this mapping applies to all the child elements or attributes unless sql:relation \nis specified on the child element or attribute, in which case, the appropriate primary-key/foreign-key \nrelationship must be defined using the 'relationship' element. And the child element or attribute, \nwhich specifies the different table using the relation annotation, must also specify the relationship annotation.\n\n\n<xsd:schema xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\n            xmlns:sql=\"urn:schemas-microsoft-com:mapping-schema\">\n<xsd:annotation>\n  <xsd:appinfo>\n    <sql:relationship name=\"CustOrders\"\n          parent=\"Demo.demo.Customers\"\n          parent-key=\"CustomerID\"\n          child=\"Demo.demo.Orders\"\n          child-key=\"CustomerID\" />\n     </xsd:appinfo>\n</xsd:annotation>\n\n  <xsd:element name=\"Customer\" sql:relation=\"Demo.demo.Customers\" type=\"CustomerType\" />\n   <xsd:complexType name=\"CustomerType\" >\n     <xsd:sequence>\n        <xsd:element name=\"ContactName\"  type=\"xsd:string\" />\n        <xsd:element name=\"CompanyName\"  type=\"xsd:string\" />\n        <xsd:element name=\"City\"  type=\"xsd:string\" />\n     </xsd:sequence>\n     <xsd:attribute name=\"OrderIDList\" \n                     type=\"xsd:IDREFS\" \n                     sql:relation=\"Demo.demo.Orders\" \n                     sql:field=\"OrderID\"\n                     sql:relationship=\"CustOrders\" >\n        </xsd:attribute>\n     <xsd:attribute name=\"CustomerID\"   type=\"xsd:string\" /> \n    </xsd:complexType>\n</xsd:schema>\n\nLet the schema is written to the file 'Cust_Order_attr.xsd', then after loading this file by \nxml_load_mapping_schema_decl function, the first example will produce a result for the XPath query:\n\n\nXPATH [__view 'Cust_Order_attr'] /Customer[@CustomerID=\"QUEEN\"]\n\n\nthe second example will produce a result for the XQuery query:\n\n\nselect xquery_eval('<doc>{for $r in xmlview(\"Cust_Order_attr\")/*[@CustomerID=\"QUEEN\"] return $r}</doc>', xtree_doc('<q/>')); \n\n\n" ;
	sioc:description	"Using sql:relationship to Specify Relationship on an attribute" ;
	sioc:has_container	ns2:xml ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:03 GMT" ;
	content:encoded	"\nExample.\n\nThe schema in this example includes a &#39;Customer&#39; element with &#39;CustomerID&#39; and \n&#39;ContactName&#39; child \nelements and an OrderIDList attribute of IDREFS type. The &#39;Customer&#39; element maps to the Customers table. \nBy default, the scope of this mapping applies to all the child elements or attributes unless sql:relation \nis specified on the child element or attribute, in which case, the appropriate primary-key/foreign-key \nrelationship must be defined using the &#39;relationship&#39; element. And the child element or attribute, \nwhich specifies the different table using the relation annotation, must also specify the relationship annotation.\n\n\n&lt;xsd:schema xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema&quot;\n            xmlns:sql=&quot;urn:schemas-microsoft-com:mapping-schema&quot;&gt;\n&lt;xsd:annotation&gt;\n  &lt;xsd:appinfo&gt;\n    &lt;sql:relationship name=&quot;CustOrders&quot;\n          parent=&quot;Demo.demo.Customers&quot;\n          parent-key=&quot;CustomerID&quot;\n          child=&quot;Demo.demo.Orders&quot;\n          child-key=&quot;CustomerID&quot; /&gt;\n     &lt;/xsd:appinfo&gt;\n&lt;/xsd:annotation&gt;\n\n  &lt;xsd:element name=&quot;Customer&quot; sql:relation=&quot;Demo.demo.Customers&quot; type=&quot;CustomerType&quot; /&gt;\n   &lt;xsd:complexType name=&quot;CustomerType&quot; &gt;\n     &lt;xsd:sequence&gt;\n        &lt;xsd:element name=&quot;ContactName&quot;  type=&quot;xsd:string&quot; /&gt;\n        &lt;xsd:element name=&quot;CompanyName&quot;  type=&quot;xsd:string&quot; /&gt;\n        &lt;xsd:element name=&quot;City&quot;  type=&quot;xsd:string&quot; /&gt;\n     &lt;/xsd:sequence&gt;\n     &lt;xsd:attribute name=&quot;OrderIDList&quot; \n                     type=&quot;xsd:IDREFS&quot; \n                     sql:relation=&quot;Demo.demo.Orders&quot; \n                     sql:field=&quot;OrderID&quot;\n                     sql:relationship=&quot;CustOrders&quot; &gt;\n        &lt;/xsd:attribute&gt;\n     &lt;xsd:attribute name=&quot;CustomerID&quot;   type=&quot;xsd:string&quot; /&gt; \n    &lt;/xsd:complexType&gt;\n&lt;/xsd:schema&gt;\n\nLet the schema is written to the file &#39;Cust_Order_attr.xsd&#39;, then after loading this file by \nxml_load_mapping_schema_decl function, the first example will produce a result for the XPath query:\n\n\nXPATH [__view &#39;Cust_Order_attr&#39;] /Customer[@CustomerID=&quot;QUEEN&quot;]\n\n\nthe second example will produce a result for the XQuery query:\n\n\nselect xquery_eval(&#39;&lt;doc&gt;{for $r in xmlview(&quot;Cust_Order_attr&quot;)/*[@CustomerID=&quot;QUEEN&quot;] return $r}&lt;/doc&gt;&#39;, xtree_doc(&#39;&lt;q/&gt;&#39;)); \n\n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	_:v1000010006 ;
	sioc:content	"\nExample. Specifying sql:relationship on multiple elements.\n\nIn this example, the annotated XSD schema contains the 'Customer', 'Order', and 'OD' \nelements. The 'Order' element is a subelement of the 'Customer' element. <sql:relationship> \nis specified on the 'Order' subelement; therefore, orders that belong to a customer appear as subelements \nof 'Customer'.\nThe 'Order' element includes the 'OD' subelement. 'sql:relationship' is specified \non 'OD' subelement, \nso the order details that pertain to an order appear as subelements of that 'Order' element.\n\n\n<xsd:schema xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\n            xmlns:sql=\"urn:schemas-microsoft-com:mapping-schema\">\n<xsd:annotation>\n  <xsd:appinfo>\n    <sql:relationship name=\"CustOrders\"\n        parent=\"Demo.demo.Customers\"\n        parent-key=\"CustomerID\"\n        child=\"Demo.demo.Orders\"\n        child-key=\"CustomerID\" />\n\n    <sql:relationship name=\"OrderOrderDetail\"\n        parent=\"Demo.demo.Orders\"\n        parent-key=\"OrderID\"\n        child=\"Demo.demo.Order_Details\"\n        child-key=\"OrderID\" />\n  </xsd:appinfo>\n</xsd:annotation>\n\n  <xsd:element name=\"Customer\" sql:relation=\"Demo.demo.Customers\" >\n   <xsd:complexType>\n     <xsd:sequence>\n        <xsd:element name=\"Order\" sql:relation=\"Demo.demo.Orders\"  \n              sql:relationship=\"CustOrders\" maxOccurs=\"unbounded\" >\n          <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"OrderDetail\" \n                             sql:relation=\"Demo.demo.Order_Details\" \n                             sql:relationship=\"OrderOrderDetail\" \n                             maxOccurs=\"unbounded\" >\n                  <xsd:complexType>\n                    <xsd:attribute name=\"OrderID\" type=\"xsd:integer\" />\n                    <xsd:attribute name=\"ProductID\" type=\"xsd:string\" />\n                    <xsd:attribute name=\"Quantity\" type=\"xsd:integer\" />\n                  </xsd:complexType>\n                </xsd:element>\n              </xsd:sequence>\n              <xsd:attribute name=\"OrderID\" type=\"xsd:integer\" />\n              <xsd:attribute name=\"CustomerID\" type=\"xsd:string\" />\n          </xsd:complexType>\n        </xsd:element>\n      </xsd:sequence>\n      <xsd:attribute name=\"CustomerID\" type=\"xsd:string\" />\n     </xsd:complexType>\n  </xsd:element>\n</xsd:schema>\n\nLet the schema is written to the file 'Cust_Order_OD.xsd', then after loading this file by \nxml_load_mapping_schema_decl function, the first example will produce a result for the XPath query:\n\n\nXPATH [__view 'Cust_Order_OD'] /Customer[@CustomerID=\"QUEEN\"];\n\n\nthe second example will produce a result for the XQuery query:\n\n\nselect xquery_eval('<doc>{for $r in xmlview(\"Cust_Order_OD\")/*[@CustomerID=\"QUEEN\"] return $r}</doc>', xtree_doc('<q/>'))\n\n\n" ;
	sioc:description	"Using sql:relationship to Specify Relationship on multiple elements." ;
	sioc:has_container	ns2:xml ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:03 GMT" ;
	content:encoded	"\nExample. Specifying sql:relationship on multiple elements.\n\nIn this example, the annotated XSD schema contains the &#39;Customer&#39;, &#39;Order&#39;, and &#39;OD&#39; \nelements. The &#39;Order&#39; element is a subelement of the &#39;Customer&#39; element. &lt;sql:relationship&gt; \nis specified on the &#39;Order&#39; subelement; therefore, orders that belong to a customer appear as subelements \nof &#39;Customer&#39;.\nThe &#39;Order&#39; element includes the &#39;OD&#39; subelement. &#39;sql:relationship&#39; is specified \non &#39;OD&#39; subelement, \nso the order details that pertain to an order appear as subelements of that &#39;Order&#39; element.\n\n\n&lt;xsd:schema xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema&quot;\n            xmlns:sql=&quot;urn:schemas-microsoft-com:mapping-schema&quot;&gt;\n&lt;xsd:annotation&gt;\n  &lt;xsd:appinfo&gt;\n    &lt;sql:relationship name=&quot;CustOrders&quot;\n        parent=&quot;Demo.demo.Customers&quot;\n        parent-key=&quot;CustomerID&quot;\n        child=&quot;Demo.demo.Orders&quot;\n        child-key=&quot;CustomerID&quot; /&gt;\n\n    &lt;sql:relationship name=&quot;OrderOrderDetail&quot;\n        parent=&quot;Demo.demo.Orders&quot;\n        parent-key=&quot;OrderID&quot;\n        child=&quot;Demo.demo.Order_Details&quot;\n        child-key=&quot;OrderID&quot; /&gt;\n  &lt;/xsd:appinfo&gt;\n&lt;/xsd:annotation&gt;\n\n  &lt;xsd:element name=&quot;Customer&quot; sql:relation=&quot;Demo.demo.Customers&quot; &gt;\n   &lt;xsd:complexType&gt;\n     &lt;xsd:sequence&gt;\n        &lt;xsd:element name=&quot;Order&quot; sql:relation=&quot;Demo.demo.Orders&quot;  \n              sql:relationship=&quot;CustOrders&quot; maxOccurs=&quot;unbounded&quot; &gt;\n          &lt;xsd:complexType&gt;\n              &lt;xsd:sequence&gt;\n                &lt;xsd:element name=&quot;OrderDetail&quot; \n                             sql:relation=&quot;Demo.demo.Order_Details&quot; \n                             sql:relationship=&quot;OrderOrderDetail&quot; \n                             maxOccurs=&quot;unbounded&quot; &gt;\n                  &lt;xsd:complexType&gt;\n                    &lt;xsd:attribute name=&quot;OrderID&quot; type=&quot;xsd:integer&quot; /&gt;\n                    &lt;xsd:attribute name=&quot;ProductID&quot; type=&quot;xsd:string&quot; /&gt;\n                    &lt;xsd:attribute name=&quot;Quantity&quot; type=&quot;xsd:integer&quot; /&gt;\n                  &lt;/xsd:complexType&gt;\n                &lt;/xsd:element&gt;\n              &lt;/xsd:sequence&gt;\n              &lt;xsd:attribute name=&quot;OrderID&quot; type=&quot;xsd:integer&quot; /&gt;\n              &lt;xsd:attribute name=&quot;CustomerID&quot; type=&quot;xsd:string&quot; /&gt;\n          &lt;/xsd:complexType&gt;\n        &lt;/xsd:element&gt;\n      &lt;/xsd:sequence&gt;\n      &lt;xsd:attribute name=&quot;CustomerID&quot; type=&quot;xsd:string&quot; /&gt;\n     &lt;/xsd:complexType&gt;\n  &lt;/xsd:element&gt;\n&lt;/xsd:schema&gt;\n\nLet the schema is written to the file &#39;Cust_Order_OD.xsd&#39;, then after loading this file by \nxml_load_mapping_schema_decl function, the first example will produce a result for the XPath query:\n\n\nXPATH [__view &#39;Cust_Order_OD&#39;] /Customer[@CustomerID=&quot;QUEEN&quot;];\n\n\nthe second example will produce a result for the XQuery query:\n\n\nselect xquery_eval(&#39;&lt;doc&gt;{for $r in xmlview(&quot;Cust_Order_OD&quot;)/*[@CustomerID=&quot;QUEEN&quot;] return $r}&lt;/doc&gt;&#39;, xtree_doc(&#39;&lt;q/&gt;&#39;))\n\n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	_:v1000010007 ;
	sioc:content	"\nPreliminaries\n\nThe sql:is-constant annotation can be used to specify a constant element, an element in the XSD schema \nthat does not map to any database table or column. sql:is-constant takes a Boolean value (false, true), 0 and 1\n(0 = false, 1 = true).  The is-constant annotation can be specified on an element \nthat does not have any attributes. If this annotation is specified on an element with the value true (or 1), \nthat element is not mapped to the database but still appears in the XML document. The sql:is-constant annotation \ncan be added to a <complexType> element.\n\n\n\nExample. Specifying sql:is-constant to add a container element\n\nIn this annotated XSD schema, 'CustomerOrders'  is defined as a constant element by specifying \nthe sql:is-constant attribute with the value of 1. Therefore, 'CustomerOrders' element is not mapped to \nany database table or column. \nThis constant element consists of the 'Order' subelements.\nAlthough 'CustomerOrders' element does not map to any database table or column, it still appears in the \nresulting XML as a container element containing the 'Order' subelements.\n\n\n<xsd:schema xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\n            xmlns:sql=\"urn:schemas-microsoft-com:mapping-schema\">\n<xsd:annotation>\n  <xsd:appinfo>\n    <sql:relationship name=\"CustOrders\"\n        parent=\"Demo.demo.Customers\"\n        parent-key=\"CustomerID\"\n        child=\"Demo.demo.Orders\"\n        child-key=\"CustomerID\" />\n  </xsd:appinfo>\n</xsd:annotation>\n\n  <xsd:element name=\"Customer\" sql:relation=\"Demo.demo.Customers\" >\n    <xsd:complexType>\n      <xsd:sequence>\n        <xsd:element name=\"CustomerOrders\" sql:is-constant=\"1\" >\n          <xsd:complexType>\n            <xsd:sequence>\n              <xsd:element name=\"Order\" sql:relation=\"Demo.demo.Orders\"\n                           sql:relationship=\"CustOrders\" \n                           maxOccurs=\"unbounded\" >\n                <xsd:complexType>\n                   <xsd:attribute name=\"OrderID\" type=\"xsd:integer\" />\n                   <xsd:attribute name=\"CustomerID\" type=\"xsd:string\" />\n                </xsd:complexType>\n              </xsd:element>\n            </xsd:sequence>\n          </xsd:complexType>\n        </xsd:element>\n      </xsd:sequence>\n          <xsd:attribute name=\"CustomerID\" type=\"xsd:string\" />\n    </xsd:complexType>\n  </xsd:element>\n</xsd:schema>\n\nLet the schema is written to the file 'CustOr_constant.xsd', then after loading this file by \nxml_load_mapping_schema_decl function, the first example will produce a result for the XPath query:\n\n\nXPATH [__view 'CustOr_constant'] /*[@CustomerID=\"QUEEN\"]\n\n\nthe second example will produce a result for the XQuery query:\n\n\nselect xquery_eval('<doc>{for $r in xmlview(\"CustOr_constant\")/*[@CustomerID=\"QUEEN\"] return $r}</doc>', xtree_doc('<q/>'))\n\n\n" ;
	sioc:description	"Using sql:is-constant for creating constant elements " ;
	sioc:has_container	ns2:xml ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:03 GMT" ;
	content:encoded	"\nPreliminaries\n\nThe sql:is-constant annotation can be used to specify a constant element, an element in the XSD schema \nthat does not map to any database table or column. sql:is-constant takes a Boolean value (false, true), 0 and 1\n(0 = false, 1 = true).  The is-constant annotation can be specified on an element \nthat does not have any attributes. If this annotation is specified on an element with the value true (or 1), \nthat element is not mapped to the database but still appears in the XML document. The sql:is-constant annotation \ncan be added to a &lt;complexType&gt; element.\n\n\n\nExample. Specifying sql:is-constant to add a container element\n\nIn this annotated XSD schema, &#39;CustomerOrders&#39;  is defined as a constant element by specifying \nthe sql:is-constant attribute with the value of 1. Therefore, &#39;CustomerOrders&#39; element is not mapped to \nany database table or column. \nThis constant element consists of the &#39;Order&#39; subelements.\nAlthough &#39;CustomerOrders&#39; element does not map to any database table or column, it still appears in the \nresulting XML as a container element containing the &#39;Order&#39; subelements.\n\n\n&lt;xsd:schema xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema&quot;\n            xmlns:sql=&quot;urn:schemas-microsoft-com:mapping-schema&quot;&gt;\n&lt;xsd:annotation&gt;\n  &lt;xsd:appinfo&gt;\n    &lt;sql:relationship name=&quot;CustOrders&quot;\n        parent=&quot;Demo.demo.Customers&quot;\n        parent-key=&quot;CustomerID&quot;\n        child=&quot;Demo.demo.Orders&quot;\n        child-key=&quot;CustomerID&quot; /&gt;\n  &lt;/xsd:appinfo&gt;\n&lt;/xsd:annotation&gt;\n\n  &lt;xsd:element name=&quot;Customer&quot; sql:relation=&quot;Demo.demo.Customers&quot; &gt;\n    &lt;xsd:complexType&gt;\n      &lt;xsd:sequence&gt;\n        &lt;xsd:element name=&quot;CustomerOrders&quot; sql:is-constant=&quot;1&quot; &gt;\n          &lt;xsd:complexType&gt;\n            &lt;xsd:sequence&gt;\n              &lt;xsd:element name=&quot;Order&quot; sql:relation=&quot;Demo.demo.Orders&quot;\n                           sql:relationship=&quot;CustOrders&quot; \n                           maxOccurs=&quot;unbounded&quot; &gt;\n                &lt;xsd:complexType&gt;\n                   &lt;xsd:attribute name=&quot;OrderID&quot; type=&quot;xsd:integer&quot; /&gt;\n                   &lt;xsd:attribute name=&quot;CustomerID&quot; type=&quot;xsd:string&quot; /&gt;\n                &lt;/xsd:complexType&gt;\n              &lt;/xsd:element&gt;\n            &lt;/xsd:sequence&gt;\n          &lt;/xsd:complexType&gt;\n        &lt;/xsd:element&gt;\n      &lt;/xsd:sequence&gt;\n          &lt;xsd:attribute name=&quot;CustomerID&quot; type=&quot;xsd:string&quot; /&gt;\n    &lt;/xsd:complexType&gt;\n  &lt;/xsd:element&gt;\n&lt;/xsd:schema&gt;\n\nLet the schema is written to the file &#39;CustOr_constant.xsd&#39;, then after loading this file by \nxml_load_mapping_schema_decl function, the first example will produce a result for the XPath query:\n\n\nXPATH [__view &#39;CustOr_constant&#39;] /*[@CustomerID=&quot;QUEEN&quot;]\n\n\nthe second example will produce a result for the XQuery query:\n\n\nselect xquery_eval(&#39;&lt;doc&gt;{for $r in xmlview(&quot;CustOr_constant&quot;)/*[@CustomerID=&quot;QUEEN&quot;] return $r}&lt;/doc&gt;&#39;, xtree_doc(&#39;&lt;q/&gt;&#39;))\n\n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	_:v1000010008 ;
	sioc:content	"\nPreliminaries\n\nRows returned from a database query can be limited on the basis of some limiting value. \nThe sql:limit-field is used to identify the database column that contains \nlimiting values and sql:limit-value annotations is used to specify a specific limiting value to be used \nto filter the data returned.\nThe sql:limit-value annotation is optional. If sql:limit-value is not specified, \na NULL value is assumed.\n\n\n\nExample.\n\nThis is the mapping schema in which the 'product_Chai' schema attribute maps to the 'ProductID' \ncolumn in the 'Demo.demo.Products' relation. The values that are returned for this attribute are limited \nto only 'ProductName' having the 'Chai' value by specifying the sql:limit-field and sql:limit-value \nannotations. Similarly, \nthe 'product_Chang' schema attribute returns only the \n'ProductID' limited to 'ProductName' having the 'Chang' value.\n\n\n\n<xsd:schema xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\n            xmlns:sql=\"urn:schemas-microsoft-com:mapping-schema\">\n<xsd:annotation>\n  <xsd:appinfo>\n    <sql:relationship name=\"CategoryProduct\"\n          parent=\"Demo.demo.Categories\"\n          parent-key=\"CategoryID\"\n          child=\"Demo.demo.Products\"\n          child-key=\"CategoryID\" />\n  </xsd:appinfo>\n</xsd:annotation>\n\n  <xsd:element name=\"category\" sql:relation=\"Demo.demo.Categories\" type=\"CategoryType\" />\n   <xsd:complexType name=\"CategoryType\" >\n     <xsd:sequence>\n        <xsd:element name=\"product_Chai\" \n                       type=\"xsd:string\" \n                     sql:relation=\"Demo.demo.Products\"\n                     sql:field=\"ProductID\"\n                     sql:limit-field=\"ProductName\"\n                     sql:limit-value=\"Chai\"\n                     sql:relationship=\"CategoryProduct\" >\n        </xsd:element>\n        <xsd:element name=\"product_Chang\" \n                       type=\"xsd:string\" \n                     sql:relation=\"Demo.demo.Products\"\n                     sql:field=\"ProductID\"\n                     sql:limit-field=\"ProductName\"\n                     sql:limit-value=\"Chang\"\n                     sql:relationship=\"CategoryProduct\" >\n        </xsd:element>\n     </xsd:sequence>\n        <xsd:attribute name=\"CategoryID\"  type=\"xsd:integer\" /> \n        <xsd:attribute name=\"description\"  sql:field=\"Description\"  type=\"xsd:string\" />\n    </xsd:complexType>\n\n</xsd:schema>\n\nLet the schema is written to the file 'Cat_Product.xsd', then after loading this file by \nxml_load_mapping_schema_decl function, the first example will produce a result for the XPath query:\n\n\nXPATH [__view 'Cat_Product'] /*[@CategoryID=1]\n\n\n\nthe second example will produce a result for the XQuery query:\n\n\nselect xquery_eval('<doc>{for $r in xmlview(\"Cat_Product\")/*[@CategoryID=1] return $r}</doc>', xtree_doc('<q/>'))\n\n\n" ;
	sioc:description	"Filtering Values by Using sql:limit-field and sql:limit-value " ;
	sioc:has_container	ns2:xml ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:03 GMT" ;
	content:encoded	"\nPreliminaries\n\nRows returned from a database query can be limited on the basis of some limiting value. \nThe sql:limit-field is used to identify the database column that contains \nlimiting values and sql:limit-value annotations is used to specify a specific limiting value to be used \nto filter the data returned.\nThe sql:limit-value annotation is optional. If sql:limit-value is not specified, \na NULL value is assumed.\n\n\n\nExample.\n\nThis is the mapping schema in which the &#39;product_Chai&#39; schema attribute maps to the &#39;ProductID&#39; \ncolumn in the &#39;Demo.demo.Products&#39; relation. The values that are returned for this attribute are limited \nto only &#39;ProductName&#39; having the &#39;Chai&#39; value by specifying the sql:limit-field and sql:limit-value \nannotations. Similarly, \nthe &#39;product_Chang&#39; schema attribute returns only the \n&#39;ProductID&#39; limited to &#39;ProductName&#39; having the &#39;Chang&#39; value.\n\n\n\n&lt;xsd:schema xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema&quot;\n            xmlns:sql=&quot;urn:schemas-microsoft-com:mapping-schema&quot;&gt;\n&lt;xsd:annotation&gt;\n  &lt;xsd:appinfo&gt;\n    &lt;sql:relationship name=&quot;CategoryProduct&quot;\n          parent=&quot;Demo.demo.Categories&quot;\n          parent-key=&quot;CategoryID&quot;\n          child=&quot;Demo.demo.Products&quot;\n          child-key=&quot;CategoryID&quot; /&gt;\n  &lt;/xsd:appinfo&gt;\n&lt;/xsd:annotation&gt;\n\n  &lt;xsd:element name=&quot;category&quot; sql:relation=&quot;Demo.demo.Categories&quot; type=&quot;CategoryType&quot; /&gt;\n   &lt;xsd:complexType name=&quot;CategoryType&quot; &gt;\n     &lt;xsd:sequence&gt;\n        &lt;xsd:element name=&quot;product_Chai&quot; \n                       type=&quot;xsd:string&quot; \n                     sql:relation=&quot;Demo.demo.Products&quot;\n                     sql:field=&quot;ProductID&quot;\n                     sql:limit-field=&quot;ProductName&quot;\n                     sql:limit-value=&quot;Chai&quot;\n                     sql:relationship=&quot;CategoryProduct&quot; &gt;\n        &lt;/xsd:element&gt;\n        &lt;xsd:element name=&quot;product_Chang&quot; \n                       type=&quot;xsd:string&quot; \n                     sql:relation=&quot;Demo.demo.Products&quot;\n                     sql:field=&quot;ProductID&quot;\n                     sql:limit-field=&quot;ProductName&quot;\n                     sql:limit-value=&quot;Chang&quot;\n                     sql:relationship=&quot;CategoryProduct&quot; &gt;\n        &lt;/xsd:element&gt;\n     &lt;/xsd:sequence&gt;\n        &lt;xsd:attribute name=&quot;CategoryID&quot;  type=&quot;xsd:integer&quot; /&gt; \n        &lt;xsd:attribute name=&quot;description&quot;  sql:field=&quot;Description&quot;  type=&quot;xsd:string&quot; /&gt;\n    &lt;/xsd:complexType&gt;\n\n&lt;/xsd:schema&gt;\n\nLet the schema is written to the file &#39;Cat_Product.xsd&#39;, then after loading this file by \nxml_load_mapping_schema_decl function, the first example will produce a result for the XPath query:\n\n\nXPATH [__view &#39;Cat_Product&#39;] /*[@CategoryID=1]\n\n\n\nthe second example will produce a result for the XQuery query:\n\n\nselect xquery_eval(&#39;&lt;doc&gt;{for $r in xmlview(&quot;Cat_Product&quot;)/*[@CategoryID=1] return $r}&lt;/doc&gt;&#39;, xtree_doc(&#39;&lt;q/&gt;&#39;))\n\n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"Genaral" ;
	sioc:content	"\nXPATH Implementation and SQL\n\nVirtuoso offers XPATH as a query language for XML views. The statement is there converted into SQL in the context \nof the mapping defined by the __view XPATH option, which is mandatory. An XPATH query string is a valid top \nlevel SQL statement. This is interpreted as a single select or union of selects with the result columns \nbeing specified by various XPATH options. \nThe basic query string \n\n\nXPATH [__view \"xmlview_name\"] /xpath_query\n\n\nThe same functionality can be got by the following query:\n\n\nselect * from (XPATH '[__view \"xmlview_name\"]/xpath_query')n\n\nXml view can be created by two methods:\n\n   using CREATE XML VIEW statement \n   using Annotated XSD Schemas\n\n\n  The second method is described in 'Using Annotated XSD Schemas for Creating XML View' chapter \n  of this tutorial.\n\n\nCREATE XML VIEW statement\n\nThe XML view declaration establishes a 'virtual document' a context within which XML hierarchy relationships \ncan be translated into arbitrary joins. The virtual document can be then materialized into an actual set of persistent \nXML elements or used to generate SQL from XPATH. \nThe XML view declaration corresponds to the grammar rules described in XML Support chapter, Virtuoso XML Services section.\n\n\t\t\t\nEach table in the declaration generates an element into the result\ndocument. SQL views can be used as tables to accommodate for hidden joins, sub-queries, ordering and\naggregates. If a view is used, which by nature has no primary key, the primary key\nclause should be used to define a uniquely identifying set of view columns.\n\t\n\t\t\t\nEach level of the hierarchy is declared as a list of child elements. Each such element maps\none table or view into an entity according to a join condition.  The join conditions\ncan reference columns from the associated table and columns from tables in parent elements.\nThe join condition can also have scalar filtering conditions. A top element's join\ncondition may only specify scalar conditions.  \n\n\t\t\t\nEach set of sibling child nodes is delimited by braces {}.  The top \nlevel of the view typically consists of one element in the outermost braces.  This element \nhas itself a child list delimited by braces.  Each such list can have more than \none different element. \n\n\t\t\t\nEach element specifies:\n\n\t\t\t\n\t\t\t\t\n\t\t\t\t\tSQL table\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\tCorrelation name for use in subsequent joins for this table\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\tXML element name to use for delimiting a row of this table\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\tList of columns, with optional XML element or attribute names\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\tjoin condition - will relate rows of this table to rows of the table in the enclosing element.\n  If this element is at the top level, this can only consist of scalar conditions\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\tOptional PRIMARY KEY clause, needed if the table in this element is a view, does not \n  have a primary key or if a non-primary key unique identity is desired\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\tOptional ELEMENT flag\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\tOptional list of child elements, delimited by braces\n\t\t\t\t\n\t\t\t\n\t\t\t\nThe column list can mention a single column or a single column renamed into an\nXML attribute of a different name. If a column of a table is referenced in a subsequent join\ncondition it must appear in the output columns list.  Expressions are not directly allowed\nbut a view with expression columns can be used.\n\t\n\t\t\t\nThe opt_public clause, when present, offers a shorthand for calling xml_view_publish \nat the same time as making the definition.  This makes a DAV resource reflecting the contents \nof the view.  The contents may either be generated on demand or persisted as a DAV accessible XML document.\nIn the latter case the document may be regenerated at a fixed interval. The interval is \nexpressed in minutes.\n\t\n\t\t\t\nThe path is expressed as an absolute path from the root collection of the DAV server.\n\t\n\n\n\t\t\t\tExamples\n\t\t\t\t\ncreate xml view \"cat\" as\n{\n  \"Demo\".\"demo\".\"Categories\" \"C\" as \"category\"\n\t(\"CategoryID\", \"Description\" as \"description\")\n    {\n      \"Demo\".\"demo\".\"Products\" \"P\" as \"product\"  (\"ProductName\")\n\ton (\"P\".\"CategoryID\" = \"C\".\"CategoryID\")\n    }\n}\n\n\t\t\t\t\nThis declares a two level hierarchy with a category node for each category\nand a product child node for each product in the category.\n\n\t\t\t\t\ncreate xml view \"cats_e\" as\n  select \"category\".\"CategoryID\", \"CategoryName\", \n    \"ProductName\", \"ProductID\"\n    from \"Demo\"..\"Categories\" \"category\", \"Demo\"..\"Products\" as \"product\" \n    where \"product\".\"CategoryID\" = \"category\".\"CategoryID\" element;\n\n\t\t\t\tHere is a similar example, this time using the element option.\n\ncreate xml view \"product\" as\n{\n  \"Demo\".\"demo\".\"Products\" p as \"product\" \n      (\"ProductID\", \"ProductName\" as \"product_name\",\"UnitPrice\" as \"price\", \"SupplierID\",\"CategoryID\")\n    {\n      \"Demo\".\"demo\".\"Suppliers\" s as \"supplier\"  (\"CompanyName\")\n\ton (s.\"SupplierID\" = p.\"SupplierID\")\n       ,\n      \"Demo\".\"demo\".\"Categories_aux\" c as \"category\"  (\"Description\")\n\ton (c.\"CategoryID\" = p.\"CategoryID\")\n\n    }\n}\n\n\nThis declares a two level hierarchy with a product node for each product\nand a supplier and category children node for each supplier and category in the product.\n\n\n" ;
	sioc:description	"Using XPath queries to XML views. Overview." ;
	sioc:has_container	ns2:xml ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:03 GMT" ;
	content:encoded	"\nXPATH Implementation and SQL\n\nVirtuoso offers XPATH as a query language for XML views. The statement is there converted into SQL in the context \nof the mapping defined by the __view XPATH option, which is mandatory. An XPATH query string is a valid top \nlevel SQL statement. This is interpreted as a single select or union of selects with the result columns \nbeing specified by various XPATH options. \nThe basic query string \n\n\nXPATH [__view &quot;xmlview_name&quot;] /xpath_query\n\n\nThe same functionality can be got by the following query:\n\n\nselect * from (XPATH &#39;[__view &quot;xmlview_name&quot;]/xpath_query&#39;)n\n\nXml view can be created by two methods:\n\n   using CREATE XML VIEW statement \n   using Annotated XSD Schemas\n\n\n  The second method is described in &#39;Using Annotated XSD Schemas for Creating XML View&#39; chapter \n  of this tutorial.\n\n\nCREATE XML VIEW statement\n\nThe XML view declaration establishes a &#39;virtual document&#39; a context within which XML hierarchy relationships \ncan be translated into arbitrary joins. The virtual document can be then materialized into an actual set of persistent \nXML elements or used to generate SQL from XPATH. \nThe XML view declaration corresponds to the grammar rules described in XML Support chapter, Virtuoso XML Services section.\n\n\t\t\t\nEach table in the declaration generates an element into the result\ndocument. SQL views can be used as tables to accommodate for hidden joins, sub-queries, ordering and\naggregates. If a view is used, which by nature has no primary key, the primary key\nclause should be used to define a uniquely identifying set of view columns.\n\t\n\t\t\t\nEach level of the hierarchy is declared as a list of child elements. Each such element maps\none table or view into an entity according to a join condition.  The join conditions\ncan reference columns from the associated table and columns from tables in parent elements.\nThe join condition can also have scalar filtering conditions. A top element&#39;s join\ncondition may only specify scalar conditions.  \n\n\t\t\t\nEach set of sibling child nodes is delimited by braces {}.  The top \nlevel of the view typically consists of one element in the outermost braces.  This element \nhas itself a child list delimited by braces.  Each such list can have more than \none different element. \n\n\t\t\t\nEach element specifies:\n\n\t\t\t\n\t\t\t\t\n\t\t\t\t\tSQL table\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\tCorrelation name for use in subsequent joins for this table\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\tXML element name to use for delimiting a row of this table\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\tList of columns, with optional XML element or attribute names\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\tjoin condition - will relate rows of this table to rows of the table in the enclosing element.\n  If this element is at the top level, this can only consist of scalar conditions\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\tOptional PRIMARY KEY clause, needed if the table in this element is a view, does not \n  have a primary key or if a non-primary key unique identity is desired\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\tOptional ELEMENT flag\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\tOptional list of child elements, delimited by braces\n\t\t\t\t\n\t\t\t\n\t\t\t\nThe column list can mention a single column or a single column renamed into an\nXML attribute of a different name. If a column of a table is referenced in a subsequent join\ncondition it must appear in the output columns list.  Expressions are not directly allowed\nbut a view with expression columns can be used.\n\t\n\t\t\t\nThe opt_public clause, when present, offers a shorthand for calling xml_view_publish \nat the same time as making the definition.  This makes a DAV resource reflecting the contents \nof the view.  The contents may either be generated on demand or persisted as a DAV accessible XML document.\nIn the latter case the document may be regenerated at a fixed interval. The interval is \nexpressed in minutes.\n\t\n\t\t\t\nThe path is expressed as an absolute path from the root collection of the DAV server.\n\t\n\n\n\t\t\t\tExamples\n\t\t\t\t\ncreate xml view &quot;cat&quot; as\n{\n  &quot;Demo&quot;.&quot;demo&quot;.&quot;Categories&quot; &quot;C&quot; as &quot;category&quot;\n\t(&quot;CategoryID&quot;, &quot;Description&quot; as &quot;description&quot;)\n    {\n      &quot;Demo&quot;.&quot;demo&quot;.&quot;Products&quot; &quot;P&quot; as &quot;product&quot;  (&quot;ProductName&quot;)\n\ton (&quot;P&quot;.&quot;CategoryID&quot; = &quot;C&quot;.&quot;CategoryID&quot;)\n    }\n}\n\n\t\t\t\t\nThis declares a two level hierarchy with a category node for each category\nand a product child node for each product in the category.\n\n\t\t\t\t\ncreate xml view &quot;cats_e&quot; as\n  select &quot;category&quot;.&quot;CategoryID&quot;, &quot;CategoryName&quot;, \n    &quot;ProductName&quot;, &quot;ProductID&quot;\n    from &quot;Demo&quot;..&quot;Categories&quot; &quot;category&quot;, &quot;Demo&quot;..&quot;Products&quot; as &quot;product&quot; \n    where &quot;product&quot;.&quot;CategoryID&quot; = &quot;category&quot;.&quot;CategoryID&quot; element;\n\n\t\t\t\tHere is a similar example, this time using the element option.\n\ncreate xml view &quot;product&quot; as\n{\n  &quot;Demo&quot;.&quot;demo&quot;.&quot;Products&quot; p as &quot;product&quot; \n      (&quot;ProductID&quot;, &quot;ProductName&quot; as &quot;product_name&quot;,&quot;UnitPrice&quot; as &quot;price&quot;, &quot;SupplierID&quot;,&quot;CategoryID&quot;)\n    {\n      &quot;Demo&quot;.&quot;demo&quot;.&quot;Suppliers&quot; s as &quot;supplier&quot;  (&quot;CompanyName&quot;)\n\ton (s.&quot;SupplierID&quot; = p.&quot;SupplierID&quot;)\n       ,\n      &quot;Demo&quot;.&quot;demo&quot;.&quot;Categories_aux&quot; c as &quot;category&quot;  (&quot;Description&quot;)\n\ton (c.&quot;CategoryID&quot; = p.&quot;CategoryID&quot;)\n\n    }\n}\n\n\nThis declares a two level hierarchy with a product node for each product\nand a supplier and category children node for each supplier and category in the product.\n\n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"Examples" ;
	sioc:content	"\nXML serialization text\nYou can get xml serialization text of the selected entity by the query \n\nXPATH [__view \"xmlview_name\"] /xpath_query\n\ne.g. for given 'cat' xml view the full serialization text can be received by the query\n\nXPATH [__view \"cat\"] /*\n\nor\n\nXPATH [__view \"cat\"] /category\n\nsee xp_v_2_sample\n\nSelect all columns instead of a serialization text\n\nYou can select all columns of the selected entity instead of its serialization text by using __* option:\n\n\nXPATH [__* __view \"cat\"] //product\n\nProductID ProductName SupplierID CategoryID QuantityPerUnit UnitPrice UnitsInStock UnitsOnOrder ReorderLevel Discontinued\nINTEGER    VARCHAR     INTEGER     INTEGER     VARCHAR  DOUBLE PRECISION  SMALLINT    SMALLINT    SMALLINT    SMALLINT\n______________________________________________________________________________________________________________________\n\n 1         Chai           1          1     10 boxes x 20bags     8          39          0          10            0\n 2         Chang          1          1     24 - 12 oz bottles   19          17         40          25            0\n 3      Aniseed Syrup     1          2     12 - 550 ml bottles  10          13         70          25            0\n.  .  .  .  .  .   \n\n\n\nThis is only valid when __view is specified and the result set is homogeneous. \n\n\n\nSelect the key instead of the serialization text\n\nYou can select the key of the selected entities instead of the serialization text by using __key option:\n\n\nXPATH [__key __view \"cat\"] /*; \n\nCategoryID\nINTEGER NOT NULL\n_______________________________________________________________________________\n \n   1\n   2\n   3\n   4\n   5\n   6\n   7\n   8                                                                                                \n\n\n" ;
	sioc:description	"Using XPath queries with options." ;
	sioc:has_container	ns2:xml ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:03 GMT" ;
	content:encoded	"\nXML serialization text\nYou can get xml serialization text of the selected entity by the query \n\nXPATH [__view &quot;xmlview_name&quot;] /xpath_query\n\ne.g. for given &#39;cat&#39; xml view the full serialization text can be received by the query\n\nXPATH [__view &quot;cat&quot;] /*\n\nor\n\nXPATH [__view &quot;cat&quot;] /category\n\nsee xp_v_2_sample\n\nSelect all columns instead of a serialization text\n\nYou can select all columns of the selected entity instead of its serialization text by using __* option:\n\n\nXPATH [__* __view &quot;cat&quot;] //product\n\nProductID ProductName SupplierID CategoryID QuantityPerUnit UnitPrice UnitsInStock UnitsOnOrder ReorderLevel Discontinued\nINTEGER    VARCHAR     INTEGER     INTEGER     VARCHAR  DOUBLE PRECISION  SMALLINT    SMALLINT    SMALLINT    SMALLINT\n______________________________________________________________________________________________________________________\n\n 1         Chai           1          1     10 boxes x 20bags     8          39          0          10            0\n 2         Chang          1          1     24 - 12 oz bottles   19          17         40          25            0\n 3      Aniseed Syrup     1          2     12 - 550 ml bottles  10          13         70          25            0\n.  .  .  .  .  .   \n\n\n\nThis is only valid when __view is specified and the result set is homogeneous. \n\n\n\nSelect the key instead of the serialization text\n\nYou can select the key of the selected entities instead of the serialization text by using __key option:\n\n\nXPATH [__key __view &quot;cat&quot;] /*; \n\nCategoryID\nINTEGER NOT NULL\n_______________________________________________________________________________\n \n   1\n   2\n   3\n   4\n   5\n   6\n   7\n   8                                                                                                \n\n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"Examples" ;
	sioc:content	"\nExample\n\nAn XPATH expression can appear as a SQL query expression, that is, as a derived table or subquery \npredicate or scalar subquery. This means that the XPATH expression is expanded compile time to the \ncorresponding SQL. \n\n The query\n\n\nselect * from (XPATH '[__* __view \"DB\".\"DBA\".\"cat\"]//product/@ProductName') P order by P.\"ProductName\"\n\n\nwill evaluate the //product query in the context of the 'cat' XML view and produce a result \nset consisting of the ordered 'ProductName' attributes of the product entity as defined in the view:\n\n\nProductName\nVARCHAR\n_______________________________________________________________________________\n\nAlice Mutton\nAniseed Syrup\nBoston Crab Meat\nCamembert Pierrot\nCarnarvon Tigers\nChai\nChang\nChartreuse verte\n.  .  .  .  .  .   \nZaanse koeken   \n\n" ;
	sioc:description	"Using XPATH in SQL Queries and Procedures." ;
	sioc:has_container	ns2:xml ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:03 GMT" ;
	content:encoded	"\nExample\n\nAn XPATH expression can appear as a SQL query expression, that is, as a derived table or subquery \npredicate or scalar subquery. This means that the XPATH expression is expanded compile time to the \ncorresponding SQL. \n\n The query\n\n\nselect * from (XPATH &#39;[__* __view &quot;DB&quot;.&quot;DBA&quot;.&quot;cat&quot;]//product/@ProductName&#39;) P order by P.&quot;ProductName&quot;\n\n\nwill evaluate the //product query in the context of the &#39;cat&#39; XML view and produce a result \nset consisting of the ordered &#39;ProductName&#39; attributes of the product entity as defined in the view:\n\n\nProductName\nVARCHAR\n_______________________________________________________________________________\n\nAlice Mutton\nAniseed Syrup\nBoston Crab Meat\nCamembert Pierrot\nCarnarvon Tigers\nChai\nChang\nChartreuse verte\n.  .  .  .  .  .   \nZaanse koeken   \n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"General" ;
	sioc:content	"\nUpdategram Overview\n\nUpdategrams allow database updates to be defined as XML.  This is ultimately achieved by mapping the \nXML nodes against corresponding database columns. \n\nUpdategrams can be used to replace existing data access components in a middle tier. A typical \napplication will include a middle tier consisting of Business Logic and Data Access code. The Data Access code \nwill interface with the database using disconnected Recordsets and Command objects calling  stored procedures etc. \nMost of the Data Access section of the middle tier can be replaced with Updategrams. \n\nMost Data Access tiers (both middle tier code and stored procedures) will individually deal with specific \ndatabase tables or groups of related tables. This can inhibit performance and quite often several round trips \nto the database are required to complete a transaction.\n\nUpdategrams can solve this problem by including all of the data in an XML document, which is then mapped to \ndatabase tables and columns. The entire database update can then be accomplished in one fell  swoop. This update \ncan include inserting, updating and deleting data.\n\nThe 'xmlsql_update' function supports XML-based insert, update, and delete operations \nperformed on an existing table in database.\n\nUpdategram Basics\n\nThe general format of an updategram is:\n\n\n<sql:sync xmlns:sql=\"xml-sql\">\n        <sql:before>\n                <TABLENAME [sql:id=\"value\"] col=\"value\" col=\"value\"?../>\n        </sql:before>\n        <sql:after>\n                <TABLENAME [sql:id=\"value\"] [sql:at-identity=\"value\"] col=\"value\" col=\"value\"?../>\n        </sql:after>\n</sql:sync>\n\nor\n\n<sql:sync xmlns:sql=\"xml-sql\">\n        <sql:before>\n                <TABLENAME [sql:id=\"value\"]> \n\t\t   <col>\"value\"</col>\n\t\t   <col>\"value\"</col>\n\t\t   ...\n\t\t</TABLENAME>\n\t\t...\n        </sql:before>\n        <sql:after>\n                <TABLENAME [sql:id=\"value\"] [sql:at-identity=\"value\"]> \n\t\t   <col>\"value\"</col>\n\t\t   <col>\"value\"</col>\n\t\t   ...\n\t\t</TABLENAME>\n\t\t...\n        </sql:after>\n</sql:sync>\n\n\nElements Description\n\n  The <sync> tag of the updategram signifies the beginning of an operation(s).\n  The rows specified in the <before> refer to existing records in the database.\n  The rows specified in the <after> block refer to what the user wants in the database.\n  TABLENAME identifies target table.\n  The sql:at-identity attribute stores the last identity value added by the system (if possible). \n  The captured identity value can then be used in subsequent operations.\n  The sql:id attribute is used to mark rows. This forces an association between\n  the record specified in the <before> and <after> block in the updategram.\n  When there are multiple instances specified, it is recommended that sql:id\n  attribute be used for all of the instances.\n  Each TABLENAME refers to a single table. Multiple <TABLENAME..../> entries\n  are allowed in the same <before> , or <after> tags, or in both <before> and\n    <after> tags; however, nesting is not allowed.\n  The <before> and <after> tags are optional. A missing tag is the same as\n    having a tag with no content.\n\n\nDetermining Actions\n\nIn an updategram if only the <after> block is specified, the\nrows specified in the <after> block are inserted in the table(s). If both\nthe <before> and <after> blocks are specified, then the rows specified in \nthe <after> block for which there is no corresponding rows in the <before> \nblock are inserted in the table(s).\nIn an update operation, the instances (rows) specified in the <before> block\nrefer to the existing rows in the database. The corresponding instances\n(rows) in the <after> block reflect what the user wants in the database. A\nrow update operation is performed if there is an instance (row) in both\n<before> and <after> sections with the same set of values for the attributes\nthat uniquely identify a row in a table. The set of rows specified in the\n<before> block must be valid in the database for the updategram to\nsuccessfully update the rows.\nIn a delete operation, if only the <before> block is specified in the updategram, \nthe instances (rows) specified in the <before> block are deleted from\nthe table(s). If both the <before> and <after> blocks are specified, the\ninstances (rows) for which there is no corresponding instances (rows) in the\n<after> block are deleted from the table(s). \n\nExample\n\n\n This example creates a SQL function that takes the orders and order lines from the demo database and applies \na stylesheet to the FOR XML rendition of these to make updategrams.  Use the updategrams to fill out\na similar table structure containing order summary with only fulfilled orders included. \n\n\nThe interface will show the sources of the report and the transformed report which is the updategram. \n\n" ;
	sioc:description	"Updategrams" ;
	sioc:has_container	ns2:xml ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:03 GMT" ;
	content:encoded	"\nUpdategram Overview\n\nUpdategrams allow database updates to be defined as XML.  This is ultimately achieved by mapping the \nXML nodes against corresponding database columns. \n\nUpdategrams can be used to replace existing data access components in a middle tier. A typical \napplication will include a middle tier consisting of Business Logic and Data Access code. The Data Access code \nwill interface with the database using disconnected Recordsets and Command objects calling  stored procedures etc. \nMost of the Data Access section of the middle tier can be replaced with Updategrams. \n\nMost Data Access tiers (both middle tier code and stored procedures) will individually deal with specific \ndatabase tables or groups of related tables. This can inhibit performance and quite often several round trips \nto the database are required to complete a transaction.\n\nUpdategrams can solve this problem by including all of the data in an XML document, which is then mapped to \ndatabase tables and columns. The entire database update can then be accomplished in one fell  swoop. This update \ncan include inserting, updating and deleting data.\n\nThe &#39;xmlsql_update&#39; function supports XML-based insert, update, and delete operations \nperformed on an existing table in database.\n\nUpdategram Basics\n\nThe general format of an updategram is:\n\n\n&lt;sql:sync xmlns:sql=&quot;xml-sql&quot;&gt;\n        &lt;sql:before&gt;\n                &lt;TABLENAME [sql:id=&quot;value&quot;] col=&quot;value&quot; col=&quot;value&quot;?../&gt;\n        &lt;/sql:before&gt;\n        &lt;sql:after&gt;\n                &lt;TABLENAME [sql:id=&quot;value&quot;] [sql:at-identity=&quot;value&quot;] col=&quot;value&quot; col=&quot;value&quot;?../&gt;\n        &lt;/sql:after&gt;\n&lt;/sql:sync&gt;\n\nor\n\n&lt;sql:sync xmlns:sql=&quot;xml-sql&quot;&gt;\n        &lt;sql:before&gt;\n                &lt;TABLENAME [sql:id=&quot;value&quot;]&gt; \n\t\t   &lt;col&gt;&quot;value&quot;&lt;/col&gt;\n\t\t   &lt;col&gt;&quot;value&quot;&lt;/col&gt;\n\t\t   ...\n\t\t&lt;/TABLENAME&gt;\n\t\t...\n        &lt;/sql:before&gt;\n        &lt;sql:after&gt;\n                &lt;TABLENAME [sql:id=&quot;value&quot;] [sql:at-identity=&quot;value&quot;]&gt; \n\t\t   &lt;col&gt;&quot;value&quot;&lt;/col&gt;\n\t\t   &lt;col&gt;&quot;value&quot;&lt;/col&gt;\n\t\t   ...\n\t\t&lt;/TABLENAME&gt;\n\t\t...\n        &lt;/sql:after&gt;\n&lt;/sql:sync&gt;\n\n\nElements Description\n\n  The &lt;sync&gt; tag of the updategram signifies the beginning of an operation(s).\n  The rows specified in the &lt;before&gt; refer to existing records in the database.\n  The rows specified in the &lt;after&gt; block refer to what the user wants in the database.\n  TABLENAME identifies target table.\n  The sql:at-identity attribute stores the last identity value added by the system (if possible). \n  The captured identity value can then be used in subsequent operations.\n  The sql:id attribute is used to mark rows. This forces an association between\n  the record specified in the &lt;before&gt; and &lt;after&gt; block in the updategram.\n  When there are multiple instances specified, it is recommended that sql:id\n  attribute be used for all of the instances.\n  Each TABLENAME refers to a single table. Multiple &lt;TABLENAME..../&gt; entries\n  are allowed in the same &lt;before&gt; , or &lt;after&gt; tags, or in both &lt;before&gt; and\n    &lt;after&gt; tags; however, nesting is not allowed.\n  The &lt;before&gt; and &lt;after&gt; tags are optional. A missing tag is the same as\n    having a tag with no content.\n\n\nDetermining Actions\n\nIn an updategram if only the &lt;after&gt; block is specified, the\nrows specified in the &lt;after&gt; block are inserted in the table(s). If both\nthe &lt;before&gt; and &lt;after&gt; blocks are specified, then the rows specified in \nthe &lt;after&gt; block for which there is no corresponding rows in the &lt;before&gt; \nblock are inserted in the table(s).\nIn an update operation, the instances (rows) specified in the &lt;before&gt; block\nrefer to the existing rows in the database. The corresponding instances\n(rows) in the &lt;after&gt; block reflect what the user wants in the database. A\nrow update operation is performed if there is an instance (row) in both\n&lt;before&gt; and &lt;after&gt; sections with the same set of values for the attributes\nthat uniquely identify a row in a table. The set of rows specified in the\n&lt;before&gt; block must be valid in the database for the updategram to\nsuccessfully update the rows.\nIn a delete operation, if only the &lt;before&gt; block is specified in the updategram, \nthe instances (rows) specified in the &lt;before&gt; block are deleted from\nthe table(s). If both the &lt;before&gt; and &lt;after&gt; blocks are specified, the\ninstances (rows) for which there is no corresponding instances (rows) in the\n&lt;after&gt; block are deleted from the table(s). \n\nExample\n\n\n This example creates a SQL function that takes the orders and order lines from the demo database and applies \na stylesheet to the FOR XML rendition of these to make updategrams.  Use the updategrams to fill out\na similar table structure containing order summary with only fulfilled orders included. \n\n\nThe interface will show the sources of the report and the transformed report which is the updategram. \n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"Exercises" ;
	sioc:content	"\nPreliminaries\n This sample program demonstrates the use of parameters in an updategram:\n\n\n  Create a form that allows new records to be inserted into a table.\n  Use the form text fields as input parameters for the updategram. \n  After insert display a list of records to show that new record has been inserted into the table.\n\n" ;
	sioc:description	"Parameter usage in updategrams" ;
	sioc:has_container	ns2:xml ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:03 GMT" ;
	content:encoded	"\nPreliminaries\n This sample program demonstrates the use of parameters in an updategram:\n\n\n  Create a form that allows new records to be inserted into a table.\n  Use the form text fields as input parameters for the updategram. \n  After insert display a list of records to show that new record has been inserted into the table.\n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"Using a XML temapltes" ;
	sioc:content	"\nPreliminaries\nThis sample program demonstrates the use of XML templates:\n\n\n  Use the XS_U_3 SQL script\n  to create a Web virtual directory that allows execution of the XML template.\n  \n  Create a form that allows new records to be inserted into\n  a table.\n  Use the form text fields as input parameters for the XML\n  template.\n  The XML template (shippers.xml) will\n  insert a new record using the form parameters. It makes an XML document using\n  SQL/XML query, and renders it with an XML-T style sheet.\n\n" ;
	sioc:description	"Row Insertion and Report Generation using XML Templates" ;
	sioc:has_container	ns2:xml ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:03 GMT" ;
	content:encoded	"\nPreliminaries\nThis sample program demonstrates the use of XML templates:\n\n\n  Use the XS_U_3 SQL script\n  to create a Web virtual directory that allows execution of the XML template.\n  \n  Create a form that allows new records to be inserted into\n  a table.\n  Use the form text fields as input parameters for the XML\n  template.\n  The XML template (shippers.xml) will\n  insert a new record using the form parameters. It makes an XML document using\n  SQL/XML query, and renders it with an XML-T style sheet.\n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"General" ;
	sioc:content	"\nFor XML SQL Clause Overview\n\nThis feature enables the execution SQL queries against the Virtuoso Server to return results as XML \ndocuments rather than as standard rowsets. To retrieve results directly, use the FOR XML clause of the \nSELECT statement and in the FOR XML clause, specify one of these XML modes: \n\n   RAW - transforms each row in the query result set into an XML element with the generic identifier row.  \n   AUTO - returns query results as nested XML elements. \n   EXPLICIT - authors of query can control the structure of the XML document returned by the query. \n \n\nExamples\n\nThis example shows a simple use of the For XML SQL 'Auto' statement for executing a query and returning \nthe results in XML format.\n" ;
	sioc:description	"FOR XML SQL Clause" ;
	sioc:has_container	ns2:xml ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:03 GMT" ;
	content:encoded	"\nFor XML SQL Clause Overview\n\nThis feature enables the execution SQL queries against the Virtuoso Server to return results as XML \ndocuments rather than as standard rowsets. To retrieve results directly, use the FOR XML clause of the \nSELECT statement and in the FOR XML clause, specify one of these XML modes: \n\n   RAW - transforms each row in the query result set into an XML element with the generic identifier row.  \n   AUTO - returns query results as nested XML elements. \n   EXPLICIT - authors of query can control the structure of the XML document returned by the query. \n \n\nExamples\n\nThis example shows a simple use of the For XML SQL &#39;Auto&#39; statement for executing a query and returning \nthe results in XML format.\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"General" ;
	sioc:content	"\nExample\nThis sample demonstrates the use of the FOR XML EXPLICIT mode.\n\n\n" ;
	sioc:description	"FOR XML EXPLICIT SQL statements" ;
	sioc:has_container	ns2:xml ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:03 GMT" ;
	content:encoded	"\nExample\nThis sample demonstrates the use of the FOR XML EXPLICIT mode.\n\n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"Creating a publication" ;
	sioc:content	"\nPreliminaries\nVirtuoso supports bidirectional transactional replication via mechanism\nof updateable subscriptions.\n\n\n  Every table has only one publisher.\n  Subscribers can update replicated tables on their side and then\nsubmit data back to publisher. Publisher performs conflict resolution\nand either accepts or rejects that data.\n  It is assumed that all the tables in publication with updateable\nsubscriptions option have primary keys and that primary key columns are never\nmodified.\n\n\nExample publication account setup\n\n  Login to the Conductor UI using the dba account.\n  Go to the \"Replication\" tab, then go to the \"Transactional\" tab and then go the \"Publications\" sub-tab.\n  Press the \"Create\" button.\n  Enter publication name, check the \"Updateable\" checkbox and press the \"Create\" button.\n\n\nEquivalent SQL commands to above\n\n  Connect to the Virtuoso server via ISQL utility as DBA user.\n  Create publication \"repldemo\" with log file \"repldemo.log\"\n  \nSQL> repl_publish('repldemo', 'repldemo.log', 1);\n  \n\n" ;
	sioc:description	"Creating a replication publication account" ;
	sioc:has_container	ns2:repl ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:01 GMT" ;
	content:encoded	"\nPreliminaries\nVirtuoso supports bidirectional transactional replication via mechanism\nof updateable subscriptions.\n\n\n  Every table has only one publisher.\n  Subscribers can update replicated tables on their side and then\nsubmit data back to publisher. Publisher performs conflict resolution\nand either accepts or rejects that data.\n  It is assumed that all the tables in publication with updateable\nsubscriptions option have primary keys and that primary key columns are never\nmodified.\n\n\nExample publication account setup\n\n  Login to the Conductor UI using the dba account.\n  Go to the &quot;Replication&quot; tab, then go to the &quot;Transactional&quot; tab and then go the &quot;Publications&quot; sub-tab.\n  Press the &quot;Create&quot; button.\n  Enter publication name, check the &quot;Updateable&quot; checkbox and press the &quot;Create&quot; button.\n\n\nEquivalent SQL commands to above\n\n  Connect to the Virtuoso server via ISQL utility as DBA user.\n  Create publication &quot;repldemo&quot; with log file &quot;repldemo.log&quot;\n  \nSQL&gt; repl_publish(&#39;repldemo&#39;, &#39;repldemo.log&#39;, 1);\n  \n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"Creating a publication" ;
	sioc:content	"\nTo add a table to publication execute the following steps:\n\n  Login to the Conductor UI using the dba account.\n  Go to the \"Replication\" tab, then go to the \"Transactional\" tab and then go the \"Publications\" sub-tab.\n  From the publications list select the link with the name of your publication (\"repldemo\").\n  Press the \"Add Tables\" button.\n  Select a database, then a table or multiple tables\n            (select \"Demo.demo.Orders\"), and then\n            press \"Add to Publication\" button.\n\n\nEquivalent SQL commands to above\n\n  Connect to the Virtuoso server via ISQL utility as DBA user.\n  Add table \"Demo.demo.Orders\" to publication \"repldemo\"\n  \nSQL> repl_pub_add('repldemo', 'Demo.demo.Orders', 2, 1, 0);\n  \n\n" ;
	sioc:description	"Adding tables to publication" ;
	sioc:has_container	ns2:repl ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:01 GMT" ;
	content:encoded	"\nTo add a table to publication execute the following steps:\n\n  Login to the Conductor UI using the dba account.\n  Go to the &quot;Replication&quot; tab, then go to the &quot;Transactional&quot; tab and then go the &quot;Publications&quot; sub-tab.\n  From the publications list select the link with the name of your publication (&quot;repldemo&quot;).\n  Press the &quot;Add Tables&quot; button.\n  Select a database, then a table or multiple tables\n            (select &quot;Demo.demo.Orders&quot;), and then\n            press &quot;Add to Publication&quot; button.\n\n\nEquivalent SQL commands to above\n\n  Connect to the Virtuoso server via ISQL utility as DBA user.\n  Add table &quot;Demo.demo.Orders&quot; to publication &quot;repldemo&quot;\n  \nSQL&gt; repl_pub_add(&#39;repldemo&#39;, &#39;Demo.demo.Orders&#39;, 2, 1, 0);\n  \n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"Creating a publication" ;
	sioc:content	"\nPreliminaries\nBecause every table can have only one publisher, conflicts can occur\nonly on publisher (when modifications from subscriber are applied).\n\nEvery table on publisher can have a number of conflict resolvers\nwhich are used for conflict resolution. Each conflict resolver has a type\n('I', 'U', or 'D') and an order. Conflict resolvers are applied\nin ascending order.\n\nConflict resolver is a Virtuoso/PL procedure which receives conflicting\nrow (row from subscriber) and some other arguments. Conflict resolver\nsignatures are described in Virtuoso documentation.\nConflict resolver can modify the row which is passed in as 'inout' arguments.\nConflict resolver should return an integer value which will be used\nfor conflict resolution. Possible return values and their meaning\nare described in Virtuoso documentation.\n\nConflict resolution occurs differently for each kind of DML operation.\nDetails can be found in Virtuoso documentation.\n\nThere is a possibility to automatically generate some types of\nconflict resolvers. Automatically generated conflict resolver classes are:\n\n\n\n  max - \n    row with maximum value of specified column wins\n  min - \n    row with minumum value of specified column wins\n  ave - \n    new value of specified column is calculated as:\n    current_val = (current_val + new_val) / 2\n  add - \n    new value of specified column is calculated as:\n    current_val = current_val + (new_val - old_val)\n  pub_wins - \n    publisher always wins\n  sub_wins - \n    subscriber always wins\n\n\nExample defining a conflict resolver\n\n  Login to the Conductor UI using the dba account.\n  Go to the \"Replication\" tab, then go to the \"Transactional\" tab and then go the \"Publications\" sub-tab.\n  Select the link with the name of your publication (\"repldemo\").\n  Select the link with the name of the table (\"Demo.demo.Orders\").\n  Press the \"New Resolver\" button.\n  Enter conflict resolver name suffix for example \"min_OrderDate\",\n  select conflict resolver type (select \"U\"),\n  select conflict resolver class (select \"min\"),\n  select a column (select \"OrderDate\"). You can optionally\n  specify conflict resolver order (default is 100).\n  Press \"Add\" button. A conflict resolver will be added. You\n  can view and edit conflict resolver code by selecting the link with\n  its name from the list of conflict resolvers.\n\n\nEquivalent SQL commands to above\n\n  Connect to the Virtuoso server via ISQL utility as DBA user.\n  Create 'U' conflict resolver for table \"Demo.demo.Orders\" that\n    will choose a row with minimal OrderDate column.\n  \nSQL> repl_add_cr('Demo.demo.Orders', 'min_OrderDate', 'U', 100, 'min', 'OrderDate');\n  \n\n" ;
	sioc:description	"Defining conflict resolvers" ;
	sioc:has_container	ns2:repl ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:01 GMT" ;
	content:encoded	"\nPreliminaries\nBecause every table can have only one publisher, conflicts can occur\nonly on publisher (when modifications from subscriber are applied).\n\nEvery table on publisher can have a number of conflict resolvers\nwhich are used for conflict resolution. Each conflict resolver has a type\n(&#39;I&#39;, &#39;U&#39;, or &#39;D&#39;) and an order. Conflict resolvers are applied\nin ascending order.\n\nConflict resolver is a Virtuoso/PL procedure which receives conflicting\nrow (row from subscriber) and some other arguments. Conflict resolver\nsignatures are described in Virtuoso documentation.\nConflict resolver can modify the row which is passed in as &#39;inout&#39; arguments.\nConflict resolver should return an integer value which will be used\nfor conflict resolution. Possible return values and their meaning\nare described in Virtuoso documentation.\n\nConflict resolution occurs differently for each kind of DML operation.\nDetails can be found in Virtuoso documentation.\n\nThere is a possibility to automatically generate some types of\nconflict resolvers. Automatically generated conflict resolver classes are:\n\n\n\n  max - \n    row with maximum value of specified column wins\n  min - \n    row with minumum value of specified column wins\n  ave - \n    new value of specified column is calculated as:\n    current_val = (current_val + new_val) / 2\n  add - \n    new value of specified column is calculated as:\n    current_val = current_val + (new_val - old_val)\n  pub_wins - \n    publisher always wins\n  sub_wins - \n    subscriber always wins\n\n\nExample defining a conflict resolver\n\n  Login to the Conductor UI using the dba account.\n  Go to the &quot;Replication&quot; tab, then go to the &quot;Transactional&quot; tab and then go the &quot;Publications&quot; sub-tab.\n  Select the link with the name of your publication (&quot;repldemo&quot;).\n  Select the link with the name of the table (&quot;Demo.demo.Orders&quot;).\n  Press the &quot;New Resolver&quot; button.\n  Enter conflict resolver name suffix for example &quot;min_OrderDate&quot;,\n  select conflict resolver type (select &quot;U&quot;),\n  select conflict resolver class (select &quot;min&quot;),\n  select a column (select &quot;OrderDate&quot;). You can optionally\n  specify conflict resolver order (default is 100).\n  Press &quot;Add&quot; button. A conflict resolver will be added. You\n  can view and edit conflict resolver code by selecting the link with\n  its name from the list of conflict resolvers.\n\n\nEquivalent SQL commands to above\n\n  Connect to the Virtuoso server via ISQL utility as DBA user.\n  Create &#39;U&#39; conflict resolver for table &quot;Demo.demo.Orders&quot; that\n    will choose a row with minimal OrderDate column.\n  \nSQL&gt; repl_add_cr(&#39;Demo.demo.Orders&#39;, &#39;min_OrderDate&#39;, &#39;U&#39;, 100, &#39;min&#39;, &#39;OrderDate&#39;);\n  \n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"Creating a subscription" ;
	sioc:content	"\nPreliminaries\nIn order to run this example you need two Virtuoso servers running\n(publisher and subscriber). In the example scripts it is assumed that the first Virtuoso server\n(publisher) is running at localhost:1111 and the second Virtuoso server\n(subscriber) is running at localhost:1112. If you are running ODBC\nversions of the servers there should be 2 ODBC DSN's records named\n\"localhost:1111\" and \"localhost:1112\".\n\n\nExample creating a subscription\nThese steps should be executed on subscriber.\n\n  Login to the Conductor UI using the dba account.\n  Go to the \"Replication\" tab, then go to the \"Transactional\" tab and then go the \"Subscriptions\" sub-tab.\n  Press \"New Subscription\" button.\n  Select connected DSN from the list and then press\n    \"Publications list\" button. If the desired DSN is not connected yet\n    you can connect to it using \"Specify new data source\" dialog below.\n  \n  Select a publication and press \"List items\" button.\n  Press \"Subscribe\" button. You can optionally load initial data\n    by checking \"Load data\" checkbox.\n\n\nEquivalent SQL commands to the above\n\n  Connect to the subscriber via ISQL utility as DBA user.\n  Define a replication server \"demoserver\" at \"localhost:1111\"\n    and subscribe to publication \"repldemo\" from it.\n  \nSQL> repl_server('demoserver', 'localhost:1111', 'localhost:1111');\nSQL> repl_subscribe('demoserver', 'repldemo', 'dba', 'dba', 'dba', 'dba');\n  \n\n" ;
	sioc:description	"Creating a subscription" ;
	sioc:has_container	ns2:repl ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:01 GMT" ;
	content:encoded	"\nPreliminaries\nIn order to run this example you need two Virtuoso servers running\n(publisher and subscriber). In the example scripts it is assumed that the first Virtuoso server\n(publisher) is running at localhost:1111 and the second Virtuoso server\n(subscriber) is running at localhost:1112. If you are running ODBC\nversions of the servers there should be 2 ODBC DSN&#39;s records named\n&quot;localhost:1111&quot; and &quot;localhost:1112&quot;.\n\n\nExample creating a subscription\nThese steps should be executed on subscriber.\n\n  Login to the Conductor UI using the dba account.\n  Go to the &quot;Replication&quot; tab, then go to the &quot;Transactional&quot; tab and then go the &quot;Subscriptions&quot; sub-tab.\n  Press &quot;New Subscription&quot; button.\n  Select connected DSN from the list and then press\n    &quot;Publications list&quot; button. If the desired DSN is not connected yet\n    you can connect to it using &quot;Specify new data source&quot; dialog below.\n  \n  Select a publication and press &quot;List items&quot; button.\n  Press &quot;Subscribe&quot; button. You can optionally load initial data\n    by checking &quot;Load data&quot; checkbox.\n\n\nEquivalent SQL commands to the above\n\n  Connect to the subscriber via ISQL utility as DBA user.\n  Define a replication server &quot;demoserver&quot; at &quot;localhost:1111&quot;\n    and subscribe to publication &quot;repldemo&quot; from it.\n  \nSQL&gt; repl_server(&#39;demoserver&#39;, &#39;localhost:1111&#39;, &#39;localhost:1111&#39;);\nSQL&gt; repl_subscribe(&#39;demoserver&#39;, &#39;repldemo&#39;, &#39;dba&#39;, &#39;dba&#39;, &#39;dba&#39;, &#39;dba&#39;);\n  \n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"Publishing a table" ;
	sioc:content	"\nPreliminaries\nBidirectional snapshot replication allows you to set up snapshot\nreplication between multiple servers where updates can be performed on all\nservers.\n\n\n  Publisher-subscriber model where each table has only one publisher\n    and when an update is performed on subscriber it goes to publisher first,\n    and then to all other subscribers.\n  \n  Conflict resolution may need to take place on the publisher when\n    data coming from a subscriber is processed.\n  \n  It is assumed that all published tables have primary keys and that\n    primary key columns are never modified.\n  \n\n\nExample publishing a table\n\n  Login to the Conductor UI using the dba account.\n  Go to the \"Replication\" tab and then go to the \"Bidirectional Snapshot\" tab.\n  Press the \"Add table\" button.\n  Enter table name or select the table using \"Browse...\" button\n\t    and press \"Add\" button.\n\n\nEquivalent SQL commands to above\n\n  Connect to the Virtuoso server via ISQL utility as DBA user.\n  Publish \"Demo.demo.Orders\" table.\n  \nSQL> repl_create_snapshot_pub ('Demo.demo.Orders', 2);\n  \n\n" ;
	sioc:description	"Publishing a table for replication" ;
	sioc:has_container	ns2:repl ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:01 GMT" ;
	content:encoded	"\nPreliminaries\nBidirectional snapshot replication allows you to set up snapshot\nreplication between multiple servers where updates can be performed on all\nservers.\n\n\n  Publisher-subscriber model where each table has only one publisher\n    and when an update is performed on subscriber it goes to publisher first,\n    and then to all other subscribers.\n  \n  Conflict resolution may need to take place on the publisher when\n    data coming from a subscriber is processed.\n  \n  It is assumed that all published tables have primary keys and that\n    primary key columns are never modified.\n  \n\n\nExample publishing a table\n\n  Login to the Conductor UI using the dba account.\n  Go to the &quot;Replication&quot; tab and then go to the &quot;Bidirectional Snapshot&quot; tab.\n  Press the &quot;Add table&quot; button.\n  Enter table name or select the table using &quot;Browse...&quot; button\n\t    and press &quot;Add&quot; button.\n\n\nEquivalent SQL commands to above\n\n  Connect to the Virtuoso server via ISQL utility as DBA user.\n  Publish &quot;Demo.demo.Orders&quot; table.\n  \nSQL&gt; repl_create_snapshot_pub (&#39;Demo.demo.Orders&#39;, 2);\n  \n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"Publishing a table" ;
	sioc:content	"\nPreliminaries\nBecause every table can have only one publisher conflicts can occur\nonly on publisher (when modifications from subscriber are applied).\n\nEvery table on publisher can have a number of conflict resolvers\nwhich are used for conflict resolution. Each conflict resolver has a type\n('I', 'U', or 'D') and an order. Conflict resolvers are applied\nin ascending order.\n\nConflict resolver is a Virtuoso/PL procedure which receives conflicting\nrow (row from subscriber) and some other arguments. Conflict resolver\nsignatures are described in Virtuoso documentation.\nConflict resolver can modify the row which is passed in as 'inout' arguments.\nConflict resolver should return an integer value which will be used\nfor conflict resolution. Possible return values and their meaning\nare described in Virtuoso documentation.\n\nConflict resolution occurs differently for each kind of DML operation.\nDetails can be found in Virtuoso documentation.\n\nThere is a possibility to automatically generate some types of\nconflict resolvers. Automatically generated conflict resolver classes are:\n\n\n\n  max - \n    row with maximum value of specified column wins\n  min - \n    row with minumum value of specified column wins\n  ave - \n    new value of specified column is calculated as:\n    current_val = (current_val + new_val) / 2\n  pub_wins - \n    publisher always wins\n  sub_wins - \n    subscriber always wins\n\n\nExample defining a conflict resolver\n\n  Login to the Conductor UI using the dba account.\n  Go to the \"Replication\" tab and then go to the \"Bidirectional Snapshot\" tab.\n  Click \"Conflict Resolvers\" for the desired published table (\"Demo.demo.Orders\").\n  Press \"New Resolver\" button.\n  Enter conflict resolver name suffix (enter \"max_OrderDate\"),\n  select conflict resolver type (select \"U\"),\n  select conflict resolver class (select \"max\"),\n  select a column (select \"OrderDate\"). You can optionally\n  specify conflict resolver order (default is 100).\n  Press \"Add\" button. A conflict resolver will be added. You\n  can view and edit conflict resolver code by selecting a link with\n  its name from the list of conflict resolvers.\n\n\nEquivalent SQL commands to above\n\n  Connect to the Virtuoso server via ISQL utility as DBA user.\n  Create 'U' conflict resolver for table \"Demo.demo.Orders\"\n    that will choose a row with latest OrderDate.\n  \nSQL> REPL_ADD_SNAPSHOT_CR ('Demo.demo.Orders', 'max_OrderDate', 'U', 100, 'max', 'OrderDate');\n  \n\n" ;
	sioc:description	"Defining conflict resolvers" ;
	sioc:has_container	ns2:repl ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:01 GMT" ;
	content:encoded	"\nPreliminaries\nBecause every table can have only one publisher conflicts can occur\nonly on publisher (when modifications from subscriber are applied).\n\nEvery table on publisher can have a number of conflict resolvers\nwhich are used for conflict resolution. Each conflict resolver has a type\n(&#39;I&#39;, &#39;U&#39;, or &#39;D&#39;) and an order. Conflict resolvers are applied\nin ascending order.\n\nConflict resolver is a Virtuoso/PL procedure which receives conflicting\nrow (row from subscriber) and some other arguments. Conflict resolver\nsignatures are described in Virtuoso documentation.\nConflict resolver can modify the row which is passed in as &#39;inout&#39; arguments.\nConflict resolver should return an integer value which will be used\nfor conflict resolution. Possible return values and their meaning\nare described in Virtuoso documentation.\n\nConflict resolution occurs differently for each kind of DML operation.\nDetails can be found in Virtuoso documentation.\n\nThere is a possibility to automatically generate some types of\nconflict resolvers. Automatically generated conflict resolver classes are:\n\n\n\n  max - \n    row with maximum value of specified column wins\n  min - \n    row with minumum value of specified column wins\n  ave - \n    new value of specified column is calculated as:\n    current_val = (current_val + new_val) / 2\n  pub_wins - \n    publisher always wins\n  sub_wins - \n    subscriber always wins\n\n\nExample defining a conflict resolver\n\n  Login to the Conductor UI using the dba account.\n  Go to the &quot;Replication&quot; tab and then go to the &quot;Bidirectional Snapshot&quot; tab.\n  Click &quot;Conflict Resolvers&quot; for the desired published table (&quot;Demo.demo.Orders&quot;).\n  Press &quot;New Resolver&quot; button.\n  Enter conflict resolver name suffix (enter &quot;max_OrderDate&quot;),\n  select conflict resolver type (select &quot;U&quot;),\n  select conflict resolver class (select &quot;max&quot;),\n  select a column (select &quot;OrderDate&quot;). You can optionally\n  specify conflict resolver order (default is 100).\n  Press &quot;Add&quot; button. A conflict resolver will be added. You\n  can view and edit conflict resolver code by selecting a link with\n  its name from the list of conflict resolvers.\n\n\nEquivalent SQL commands to above\n\n  Connect to the Virtuoso server via ISQL utility as DBA user.\n  Create &#39;U&#39; conflict resolver for table &quot;Demo.demo.Orders&quot;\n    that will choose a row with latest OrderDate.\n  \nSQL&gt; REPL_ADD_SNAPSHOT_CR (&#39;Demo.demo.Orders&#39;, &#39;max_OrderDate&#39;, &#39;U&#39;, 100, &#39;max&#39;, &#39;OrderDate&#39;);\n  \n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"Defining subscribers for published table" ;
	sioc:content	"\nPreliminaries\nIn order to run this example you need two Virtuoso servers running\n(publisher and subscriber). In the example scripts it is assumed that the first Virtuoso server\n(publisher) is running at localhost:1111 and the second Virtuoso server\n(subscriber) is running at localhost:1112. If you are running ODBC\nversions of the servers there should be 2 ODBC DSN's records named\n\"localhost:1111\" and \"localhost:1112\". Subscriber should have\n\"ServerName\" configuration parameter set to \"demoserver2\".\n\n\nExample creating a subscription\nThese steps should be executed on publisher.\n\n  Login to the Conductor UI using the dba account.\n  Go to the \"Replication\" tab and then go to the \"Bidirectional Snapshot\" tab.\n  Click \"Subscriptions\" for desired published table (\"Demo.demo.Orders\").\n  Press \"New Subscriber\" button.\n  Select connected DSN from the list and then press\n    \"Create Subscription\" button. If the desired DSN is not connected yet\n    you can connect to it using \"Specify new data source\" dialog below.\n  \n\n\nEquivalent SQL commands to above\n\n  Connect to the publisher via ISQL utility as DBA user.\n  Define a replication server \"demoserver2\" at \"localhost:1112\"\n    and subscribe it to published \"Demo.demo.Orders\" table.\n  \nSQL> repl_snp_server('localhost:1112');\nSQL> repl_create_snapshot_sub('demoserver2', 'Demo.demo.Orders', 2, 'dba', 'dba');\n  \n\n" ;
	sioc:description	"Defining subscribers" ;
	sioc:has_container	ns2:repl ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:01 GMT" ;
	content:encoded	"\nPreliminaries\nIn order to run this example you need two Virtuoso servers running\n(publisher and subscriber). In the example scripts it is assumed that the first Virtuoso server\n(publisher) is running at localhost:1111 and the second Virtuoso server\n(subscriber) is running at localhost:1112. If you are running ODBC\nversions of the servers there should be 2 ODBC DSN&#39;s records named\n&quot;localhost:1111&quot; and &quot;localhost:1112&quot;. Subscriber should have\n&quot;ServerName&quot; configuration parameter set to &quot;demoserver2&quot;.\n\n\nExample creating a subscription\nThese steps should be executed on publisher.\n\n  Login to the Conductor UI using the dba account.\n  Go to the &quot;Replication&quot; tab and then go to the &quot;Bidirectional Snapshot&quot; tab.\n  Click &quot;Subscriptions&quot; for desired published table (&quot;Demo.demo.Orders&quot;).\n  Press &quot;New Subscriber&quot; button.\n  Select connected DSN from the list and then press\n    &quot;Create Subscription&quot; button. If the desired DSN is not connected yet\n    you can connect to it using &quot;Specify new data source&quot; dialog below.\n  \n\n\nEquivalent SQL commands to above\n\n  Connect to the publisher via ISQL utility as DBA user.\n  Define a replication server &quot;demoserver2&quot; at &quot;localhost:1112&quot;\n    and subscribe it to published &quot;Demo.demo.Orders&quot; table.\n  \nSQL&gt; repl_snp_server(&#39;localhost:1112&#39;);\nSQL&gt; repl_create_snapshot_sub(&#39;demoserver2&#39;, &#39;Demo.demo.Orders&#39;, 2, &#39;dba&#39;, &#39;dba&#39;);\n  \n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"Bidirectional Snapshot Replication Demo" ;
	sioc:content	"\nPreliminaries\nThis tutorial demonstrates basic snapshot replication features.\nIn order to run this tutorial execute the following steps:\n\nSetup ODBC data source named \"demoserver2\".\nMake sure that user \"demo\" with password \"demo\"\ncan connect to data source \"demoserver2\".\nMake sure that there is no table named \"Shippers\"\nin target data source.\n\n\nThe data source can be Virtuoso data source as well as any other data\nsource type which is supported by Virtuoso bidirectional snapshot replication\n(E.g. Oracle or MS SQL data source). This tutorial will\ndemonstrate Virtuoso heterogeneous snapshot replication capabilities.\n\n" ;
	sioc:description	"Bidirectional snapshot replication demo" ;
	sioc:has_container	ns2:repl ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:01 GMT" ;
	content:encoded	"\nPreliminaries\nThis tutorial demonstrates basic snapshot replication features.\nIn order to run this tutorial execute the following steps:\n\nSetup ODBC data source named &quot;demoserver2&quot;.\nMake sure that user &quot;demo&quot; with password &quot;demo&quot;\ncan connect to data source &quot;demoserver2&quot;.\nMake sure that there is no table named &quot;Shippers&quot;\nin target data source.\n\n\nThe data source can be Virtuoso data source as well as any other data\nsource type which is supported by Virtuoso bidirectional snapshot replication\n(E.g. Oracle or MS SQL data source). This tutorial will\ndemonstrate Virtuoso heterogeneous snapshot replication capabilities.\n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"Publishing a DAV collection" ;
	sioc:content	"\nPreliminaries\nBidirectional snapshot replication allows you to set up snapshot\nreplication between multiple servers where updates can be performed on all\nservers.\n\n\n  Publisher-subscriber model where each DAV collection has only one\n    publisher and when an update is performed on subscriber it goes to\n    publisher first, and then to all other subscribers.\n  \n  Conflict resolution may need to take place on the publisher when\n    DAV resources coming from a subscriber are processed.\n  \n\n\nExample publishing a DAV collection\n\n  Login to the Conductor UI using the dba account.\n  Go to the \"Replication\" tab and then go to the \"Bidirectional Snapshot\" tab.\n  Press \"Add DAV Collection\" button.\n  Enter DAV collection name or select DAV collection\n            using \"Browse...\" button and press \"Add\" button.\n\n\nEquivalent SQL commands to above\n\n  Connect to the Virtuoso server via ISQL utility as DBA user.\n  Publish \"/DAV/doc\" DAV collection.\n  \nSQL> repl_create_snapshot_pub ('/DAV/doc', 1);\n  \n\n" ;
	sioc:description	"Publishing a DAV collection for replication" ;
	sioc:has_container	ns2:repl ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:01 GMT" ;
	content:encoded	"\nPreliminaries\nBidirectional snapshot replication allows you to set up snapshot\nreplication between multiple servers where updates can be performed on all\nservers.\n\n\n  Publisher-subscriber model where each DAV collection has only one\n    publisher and when an update is performed on subscriber it goes to\n    publisher first, and then to all other subscribers.\n  \n  Conflict resolution may need to take place on the publisher when\n    DAV resources coming from a subscriber are processed.\n  \n\n\nExample publishing a DAV collection\n\n  Login to the Conductor UI using the dba account.\n  Go to the &quot;Replication&quot; tab and then go to the &quot;Bidirectional Snapshot&quot; tab.\n  Press &quot;Add DAV Collection&quot; button.\n  Enter DAV collection name or select DAV collection\n            using &quot;Browse...&quot; button and press &quot;Add&quot; button.\n\n\nEquivalent SQL commands to above\n\n  Connect to the Virtuoso server via ISQL utility as DBA user.\n  Publish &quot;/DAV/doc&quot; DAV collection.\n  \nSQL&gt; repl_create_snapshot_pub (&#39;/DAV/doc&#39;, 1);\n  \n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"Publishing a DAV collection" ;
	sioc:content	"\nPreliminaries\nEvery DAV collection on publisher can have a number of conflict resolvers\nwhich are used for conflict resolution. Each conflict resolver has an\ninteger number (order) associated with it. Conflict resolvers are applied\nin ascending order.\n\nConflict resolver is a Virtuoso/PL procedure which receives conflicting\nDAV resource. DAV conflict resolver signatures are described in Virtuoso\ndocumentation. Conflict resolver can modify the resource which is passed in\nas 'inout' arguments. Conflict resolver should return an integer value which\nwill be used for conflict resolution. Possible return values and their meaning\nare described in Virtuoso documentation.\n\nThere is a possibility to automatically generate some types of\nconflict resolvers. Automatically generated conflict resolver classes are:\n\n\n\n  max_mtime - \n    resource with maximum modification time wins\n  min_mtime - \n    resource with minumum modification time wins\n  max_ctime - \n    resource with maximum creation time wins\n  min_ctime - \n    resource with minumum creation time wins\n  backup - \n    backup of resource that lost conflict resolution will be performed,\n      conflict resolution will continue\n    \n  \n  notify - \n    \n      owner of resource will be notified if his resource lost conflict\n      resolution\n    \n  \n  pub_wins - \n    publisher always wins\n  sub_wins - \n    subscriber always wins\n\n\nExample defining a conflict resolver\n\n  Login to the Conductor UI using the dba account.\n  Go to the \"Replication\" tab and then go to the \"Bidirectional Snapshot\" tab.\n  Click \"Conflict Resolvers\" for desired published DAV collection (\"/DAV/doc\").\n  Press \"New Resolver\" button.\n  Enter conflict resolver name suffix (enter \"max_mtime\"),\n  select conflict resolver class (select \"max_mtime\"). You can optionally\n  specify conflict resolver order (default is 100).\n  Press \"Add\" button. A conflict resolver will be added. You\n  can view and edit conflict resolver code by selecting the link with\n  its name from the list of conflict resolvers.\n\n\nEquivalent SQL commands to above\n\n  Connect to the Virtuoso server via ISQL utility as DBA user.\n  Create a conflict resolver for collection \"/DAV/doc\"\n    that will choose a resource with maximum modification time\n    (more recent resource).\n  \nSQL> REPL_ADD_DAV_CR ('/DAV/doc', 'max_mtime', 100, 'max_mtime');\n  \n\n" ;
	sioc:description	"Defining conflict resolvers" ;
	sioc:has_container	ns2:repl ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:01 GMT" ;
	content:encoded	"\nPreliminaries\nEvery DAV collection on publisher can have a number of conflict resolvers\nwhich are used for conflict resolution. Each conflict resolver has an\ninteger number (order) associated with it. Conflict resolvers are applied\nin ascending order.\n\nConflict resolver is a Virtuoso/PL procedure which receives conflicting\nDAV resource. DAV conflict resolver signatures are described in Virtuoso\ndocumentation. Conflict resolver can modify the resource which is passed in\nas &#39;inout&#39; arguments. Conflict resolver should return an integer value which\nwill be used for conflict resolution. Possible return values and their meaning\nare described in Virtuoso documentation.\n\nThere is a possibility to automatically generate some types of\nconflict resolvers. Automatically generated conflict resolver classes are:\n\n\n\n  max_mtime - \n    resource with maximum modification time wins\n  min_mtime - \n    resource with minumum modification time wins\n  max_ctime - \n    resource with maximum creation time wins\n  min_ctime - \n    resource with minumum creation time wins\n  backup - \n    backup of resource that lost conflict resolution will be performed,\n      conflict resolution will continue\n    \n  \n  notify - \n    \n      owner of resource will be notified if his resource lost conflict\n      resolution\n    \n  \n  pub_wins - \n    publisher always wins\n  sub_wins - \n    subscriber always wins\n\n\nExample defining a conflict resolver\n\n  Login to the Conductor UI using the dba account.\n  Go to the &quot;Replication&quot; tab and then go to the &quot;Bidirectional Snapshot&quot; tab.\n  Click &quot;Conflict Resolvers&quot; for desired published DAV collection (&quot;/DAV/doc&quot;).\n  Press &quot;New Resolver&quot; button.\n  Enter conflict resolver name suffix (enter &quot;max_mtime&quot;),\n  select conflict resolver class (select &quot;max_mtime&quot;). You can optionally\n  specify conflict resolver order (default is 100).\n  Press &quot;Add&quot; button. A conflict resolver will be added. You\n  can view and edit conflict resolver code by selecting the link with\n  its name from the list of conflict resolvers.\n\n\nEquivalent SQL commands to above\n\n  Connect to the Virtuoso server via ISQL utility as DBA user.\n  Create a conflict resolver for collection &quot;/DAV/doc&quot;\n    that will choose a resource with maximum modification time\n    (more recent resource).\n  \nSQL&gt; REPL_ADD_DAV_CR (&#39;/DAV/doc&#39;, &#39;max_mtime&#39;, 100, &#39;max_mtime&#39;);\n  \n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"Defining subscribers for a pulished DAV collection" ;
	sioc:content	"\nPreliminaries\nIn order to run this example you need two Virtuoso servers running\n(publisher and subscriber). In the example scripts it is assumed that the first Virtuoso server\n(publisher) is running at localhost:1111 and the second Virtuoso server\n(subscriber) is running at localhost:1112. If you are running ODBC\nversions of the servers there should be 2 ODBC DSN's records named\n\"localhost:1111\" and \"localhost:1112\". Subscriber should have\n\"ServerName\" configuration parameter set to \"demoserver2\".\n\n\nExample creating a subscription\nThese steps should be executed on publisher.\n\n  Login to the Conductor UI using the dba account.\n  Go to the \"Replication\" tab and then go to the \"Bidirectional Snapshot\" tab.\n  Click \"Subscriptions\" for desired published DAV collection (\"/DAV/doc\").\n  Press \"New Subscriber\" button.\n  Select connected DSN from the list and then press\n    \"Create Subscription\" button. If desired DSN is not connected yet\n    you can connect to it using \"Specify new data source\" dialog below.\n  \n\n\nEquivalent SQL commands to above\n\n  Connect to the publisher via ISQL utility as DBA user.\n  Define a replication server \"demoserver2\" at \"localhost:1112\"\n    and subscribe it to published \"/DAV/doc\" DAV collection.\n  \nSQL> repl_snp_server('localhost:1112');\nSQL> repl_create_snapshot_sub('demoserver2', '/DAV/doc', 1, 'dba', 'dba');\n  \n\n" ;
	sioc:description	"Defining subscribers" ;
	sioc:has_container	ns2:repl ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:01 GMT" ;
	content:encoded	"\nPreliminaries\nIn order to run this example you need two Virtuoso servers running\n(publisher and subscriber). In the example scripts it is assumed that the first Virtuoso server\n(publisher) is running at localhost:1111 and the second Virtuoso server\n(subscriber) is running at localhost:1112. If you are running ODBC\nversions of the servers there should be 2 ODBC DSN&#39;s records named\n&quot;localhost:1111&quot; and &quot;localhost:1112&quot;. Subscriber should have\n&quot;ServerName&quot; configuration parameter set to &quot;demoserver2&quot;.\n\n\nExample creating a subscription\nThese steps should be executed on publisher.\n\n  Login to the Conductor UI using the dba account.\n  Go to the &quot;Replication&quot; tab and then go to the &quot;Bidirectional Snapshot&quot; tab.\n  Click &quot;Subscriptions&quot; for desired published DAV collection (&quot;/DAV/doc&quot;).\n  Press &quot;New Subscriber&quot; button.\n  Select connected DSN from the list and then press\n    &quot;Create Subscription&quot; button. If desired DSN is not connected yet\n    you can connect to it using &quot;Specify new data source&quot; dialog below.\n  \n\n\nEquivalent SQL commands to above\n\n  Connect to the publisher via ISQL utility as DBA user.\n  Define a replication server &quot;demoserver2&quot; at &quot;localhost:1112&quot;\n    and subscribe it to published &quot;/DAV/doc&quot; DAV collection.\n  \nSQL&gt; repl_snp_server(&#39;localhost:1112&#39;);\nSQL&gt; repl_create_snapshot_sub(&#39;demoserver2&#39;, &#39;/DAV/doc&#39;, 1, &#39;dba&#39;, &#39;dba&#39;);\n  \n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"SyncML Server" ;
	sioc:content	"\nPreliminaries\nSyncML is a protocol for syncronizing\n    data between two devices called server and client.\n    Usually as client we may consider PDA, mobile phone\n    or a workstation that have the ability to syncoronize their\n    contacts, calendar etc. databases using SyncML protocol.\n    On the other hand the server have ability to recoginize\n    such requests and to store the data into the repository.\n    Basically this is a protocol for data replication,\n    oriented to the portable devices.\n\n\n\n    The usual message flow is:\n\n\n\n  Initial request from client\n  Server response asking for credentials, if not supplied\n  Client sends credentials included in the request\n  Server accepts or rejects the sync request.\n  When request for sync is accepted, then server\n      checks what sync to perform: slow two-way (full data) or two-way sync.\n  Client send the items that are changed or all items depending of sync type\n  Server sends items that are changed or all items depending of sync type requested.\n\n\n\t\t\n    The Virtuoso WebDAV repository can be used to keep\n    such data. The server will recognize SyncML request by MIME\n    content type 'application/vnd.syncml+xml' or 'application/vnd.syncml+wbxml'\n    upon POST request and will act then as SyncML server over HTTP.\n    \n    Shortly: on server side are needed:\n\t\t\n    \t1.WebDAV collection with permisions for given accounts \n    \t2.Virtual directory assigned to it.\n\t\t\n    \n    Optionally virtual host can be defined in order to work with\n    clients that do not have the ability to specify URL, such clients can work\n    only with virtual root collection. Note that WebDAV collection(s) creation is a\n    vital step; apropriate rights MUST be set before using it with SyncML client;\n    clients can only store items(resources), they can't make sub-folders.\n\t\t\n\n\n    Instructions for setting SyncML server and client\n\n    Create a new folder named '/DAV/sync/' under WebDAV root. This can be done via Conductor UI going to the \"Web Application Server\" tab and then going to the \"Content Management\" tab.\n    Create subfolders calendar and contacts under /DAV/sync/\n    Create a new virtual host with virtual root assigned to /DAV/sync/ WebDAV collection. Please reffer to the documentation for more information.\n\n\nNokia 92x0 Communicator\n\n\n    In Extras menu open \"Remote sync\"\n    In \"Profile settings\" choose \"New Profile\"\n    Select apropriate internet access\n    Enter the Virtuso HTTP server address and port values as you created them earlier.\n    Enter username and password for account which have permissions to the\n\t'/DAV/sync/' and descendants.\n    Select tab \"Data\"\n    Choose Calendar and enter for \"Remote calendar\" './calendar/'.\n    Choose Contacts and enter for \"Remote contacts\" './contacts/'.\n    Close the Sync Profile menus, confirm saving\n    Select \"Sync\" option.\n    Verify that items are uploaded into WebDAV collections: /DAV/sync/calendar/ and /DAV/sync/contacts/. For this  you can use Conductor's WebDAV content management UI\n    Edit some of Contacts/Events on device and perform Sync again. Check the repository as in previous step.\n    Note: Editing the items on the server needs knowlage of VCARD/VCALENDAR formats as they can be edited as text files.\n\n\nSiemens SX1\n\n\nSelect \"menu\" button\nChoose \"Organizer\"\nChoose \"Sync\"\nSelect from menu \"Options\", \"New sync profile\"\nGive a meaningful name for this profile in \"Sync profile name\"\nBearer type: Internet\nAccess point: choose some predefined\nHost address: URL to the SyncML server without HTTP port number\nPort: SyncML HTTP port number\nUser name: username for account which have permissions to the '/DAV/sync/' and descendants.\nPassword: password for the account\nCalendar: Yes\nRemote calendar: ./calendar\nContacts: Yes\nRemote contacts: ./contacts\nHTTP authentication: No\nHTTP user name: blank\nHTTP password: blank\nSelect \"Back\" from menu\nNew profile should exists. Click on it to perform syncronization.\n\n\nSony Ericsson P900\n\n    From main menu choose \"Remote Sync\"\n    Via menu \"Edit\" - \"Preferences\"\n    Server address: [type URL to the SyncML server]\n    User Name:\n    Password:\n    Press button \"Done\"\n    Click on \"Contacts\"\n    Enable task: on\n    Server database: ./contacts\n    Press button \"Done\"\n    To perform Sync on defined items, press button \"Sync\"\n\n\nImportant: Internet connection must be alredy defined and must work with\n    device's browser.\n\n\n" ;
	sioc:description	"Setting up SyncML server" ;
	sioc:has_container	ns2:repl ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:01 GMT" ;
	content:encoded	"\nPreliminaries\nSyncML is a protocol for syncronizing\n    data between two devices called server and client.\n    Usually as client we may consider PDA, mobile phone\n    or a workstation that have the ability to syncoronize their\n    contacts, calendar etc. databases using SyncML protocol.\n    On the other hand the server have ability to recoginize\n    such requests and to store the data into the repository.\n    Basically this is a protocol for data replication,\n    oriented to the portable devices.\n\n\n\n    The usual message flow is:\n\n\n\n  Initial request from client\n  Server response asking for credentials, if not supplied\n  Client sends credentials included in the request\n  Server accepts or rejects the sync request.\n  When request for sync is accepted, then server\n      checks what sync to perform: slow two-way (full data) or two-way sync.\n  Client send the items that are changed or all items depending of sync type\n  Server sends items that are changed or all items depending of sync type requested.\n\n\n\t\t\n    The Virtuoso WebDAV repository can be used to keep\n    such data. The server will recognize SyncML request by MIME\n    content type &#39;application/vnd.syncml+xml&#39; or &#39;application/vnd.syncml+wbxml&#39;\n    upon POST request and will act then as SyncML server over HTTP.\n    \n    Shortly: on server side are needed:\n\t\t\n    \t1.WebDAV collection with permisions for given accounts \n    \t2.Virtual directory assigned to it.\n\t\t\n    \n    Optionally virtual host can be defined in order to work with\n    clients that do not have the ability to specify URL, such clients can work\n    only with virtual root collection. Note that WebDAV collection(s) creation is a\n    vital step; apropriate rights MUST be set before using it with SyncML client;\n    clients can only store items(resources), they can&#39;t make sub-folders.\n\t\t\n\n\n    Instructions for setting SyncML server and client\n\n    Create a new folder named &#39;/DAV/sync/&#39; under WebDAV root. This can be done via Conductor UI going to the &quot;Web Application Server&quot; tab and then going to the &quot;Content Management&quot; tab.\n    Create subfolders calendar and contacts under /DAV/sync/\n    Create a new virtual host with virtual root assigned to /DAV/sync/ WebDAV collection. Please reffer to the documentation for more information.\n\n\nNokia 92x0 Communicator\n\n\n    In Extras menu open &quot;Remote sync&quot;\n    In &quot;Profile settings&quot; choose &quot;New Profile&quot;\n    Select apropriate internet access\n    Enter the Virtuso HTTP server address and port values as you created them earlier.\n    Enter username and password for account which have permissions to the\n\t&#39;/DAV/sync/&#39; and descendants.\n    Select tab &quot;Data&quot;\n    Choose Calendar and enter for &quot;Remote calendar&quot; &#39;./calendar/&#39;.\n    Choose Contacts and enter for &quot;Remote contacts&quot; &#39;./contacts/&#39;.\n    Close the Sync Profile menus, confirm saving\n    Select &quot;Sync&quot; option.\n    Verify that items are uploaded into WebDAV collections: /DAV/sync/calendar/ and /DAV/sync/contacts/. For this  you can use Conductor&#39;s WebDAV content management UI\n    Edit some of Contacts/Events on device and perform Sync again. Check the repository as in previous step.\n    Note: Editing the items on the server needs knowlage of VCARD/VCALENDAR formats as they can be edited as text files.\n\n\nSiemens SX1\n\n\nSelect &quot;menu&quot; button\nChoose &quot;Organizer&quot;\nChoose &quot;Sync&quot;\nSelect from menu &quot;Options&quot;, &quot;New sync profile&quot;\nGive a meaningful name for this profile in &quot;Sync profile name&quot;\nBearer type: Internet\nAccess point: choose some predefined\nHost address: URL to the SyncML server without HTTP port number\nPort: SyncML HTTP port number\nUser name: username for account which have permissions to the &#39;/DAV/sync/&#39; and descendants.\nPassword: password for the account\nCalendar: Yes\nRemote calendar: ./calendar\nContacts: Yes\nRemote contacts: ./contacts\nHTTP authentication: No\nHTTP user name: blank\nHTTP password: blank\nSelect &quot;Back&quot; from menu\nNew profile should exists. Click on it to perform syncronization.\n\n\nSony Ericsson P900\n\n    From main menu choose &quot;Remote Sync&quot;\n    Via menu &quot;Edit&quot; - &quot;Preferences&quot;\n    Server address: [type URL to the SyncML server]\n    User Name:\n    Password:\n    Press button &quot;Done&quot;\n    Click on &quot;Contacts&quot;\n    Enable task: on\n    Server database: ./contacts\n    Press button &quot;Done&quot;\n    To perform Sync on defined items, press button &quot;Sync&quot;\n\n\nImportant: Internet connection must be alredy defined and must work with\n    device&#39;s browser.\n\n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"Replication Demo between two Datsources (DSNs)" ;
	sioc:content	"\nPreliminaries\nThis sample shows how to replicate two heterogeneous DSNs (MySQL DSN and Microsoft SQL Server DSN for example) with all logic in Virtuoso.\n    The replicated table has two columns. First is varchar Primary key, second integer representing user data.\n\n\n Sample includes: \n\n\n  Select DSN for demo. There must be two connected DSNs to start the sample.\n  Create tables on the two DSNs.\n  Attach tables from these DSNs.\n  Show simple page with table content.\n\n\n How it works: \n\n    The Primary key plus timestamp column from source is replicated locally.\n    On initial state  all date from the first DSN  s copyed to the Second.\n    The user table on the first DSN has one timestamp column more that the table on the second. This column is used to get new / changed rows on replication state.\n\n\n\n    Instructions for setting:\n\n    Click on the \"Set Initial State\" to create virtuoso table.\n    Click on the \"Run\" links to actually experience the demo.\n\n\nImportant: This sample is not thread save.\n\n\n" ;
	sioc:description	"Replication Demo between two Datsources (DSNs)" ;
	sioc:has_container	ns2:repl ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:01 GMT" ;
	content:encoded	"\nPreliminaries\nThis sample shows how to replicate two heterogeneous DSNs (MySQL DSN and Microsoft SQL Server DSN for example) with all logic in Virtuoso.\n    The replicated table has two columns. First is varchar Primary key, second integer representing user data.\n\n\n Sample includes: \n\n\n  Select DSN for demo. There must be two connected DSNs to start the sample.\n  Create tables on the two DSNs.\n  Attach tables from these DSNs.\n  Show simple page with table content.\n\n\n How it works: \n\n    The Primary key plus timestamp column from source is replicated locally.\n    On initial state  all date from the first DSN  s copyed to the Second.\n    The user table on the first DSN has one timestamp column more that the table on the second. This column is used to get new / changed rows on replication state.\n\n\n\n    Instructions for setting:\n\n    Click on the &quot;Set Initial State&quot; to create virtuoso table.\n    Click on the &quot;Run&quot; links to actually experience the demo.\n\n\nImportant: This sample is not thread save.\n\n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"RDF Views" ;
	sioc:content	"\n    Concept\n    \n      RDF Views map relational data into RDF and allow customizing RDF representation of locally\n      stored RDF data. To let SPARQL clients access relational data as well as physical RDF graphs\n      in a single query, we introduce a declarative Meta Schema Language for mapping SQL Data to\n      RDF Ontologies. As a result, all types of clients can efficiently access all data stored on\n      the server. The mapping functionality dynamically generates RDF Data Sets for popular ontologies\n      such as SIOC, SKOS, FOAF, and ATOM/OWL without disruption to the existing database infrastructure\n      of Web 1.0 or Web 2.0 solutions. RDF views are also suitable for declaring custom representation\n      for RDF triples, e.g. property tables, where one row holds many single-valued properties.\n    \n    \n      The Virtuoso RDF Views meta schema is a built-in feature of Virtuoso's SPARQL to SQL\n      translator. It recognizes triple patterns that refer to graphs for which an alternate\n      representation is declared and translates these into SQL accordingly. The main purpose\n      of this is evaluating SPARQL queries against existing relational databases. There exists\n      previous work from many parties for rendering relational data as RDF and opening it to\n      SPARQL access. We can mention D2RQ, SPASQL, Squirrel RDF, DBLP and others. The Virtuoso\n      effort differs from these mainly in the following:\n    \n    \n      \n        Integration with a triple store. Virtuoso can process a query for which some\n        triple patterns will go to local or remote relational data and some to local physical\n        RDF triples.\n      \n      \n        SPARQL query can be used in any place where SQL can. Database connectivity protocols\n        are neutral to the syntax of queries they transmit, thus any SQL client, e.g. JDBC,\n        ODBC or XMLA application, can send SPARQL queries and fetch result sets. Moreover,\n        a SQL query may contain SPARQL subqueries and SPARQL expressions may use SQL built-in\n        functions and stored procedures.\n      \n      \n        Integration with SQL. Since SPARQL and SQL share the same run time and query optimizer,\n        the query compilation decisions are always made with the best knowledge of the data and\n        its location. This is especially important when mixing triples and relational data or\n        when dealing with relational data distributed across many outside databases.\n      \n      \n        No limits on SPARQL. It remains possible to make queries with unspecified graph or\n        predicate against mapped relational data, even though these may sometimes be inefficient.\n      \n      \n        Coverage of the whole relational model. Multi-part keys etc. are supported in all places.\n      \n    \n  \n    Quad Map Patterns, Value and IRI Classes\n    \n      In the simplest sense, any relational schema can be rendered into RDF by converting all primary\n      keys and foreign keys into IRI's, assigning a predicate IRI to each column, and an rdf:type predicate\n      for each row linking it to a RDF class IRI corresponding to the table. Then a triple with the primary\n      key IRI as subject, the column IRI as predicate and the column's value as object is considered to exist\n      for each column that is neither part of a primary or foreign key.\n    \n    \n      Strictly equating a subject value to a row and each column to a predicate is often good but is too\n      restrictive for the general case.\n    \n    \n      \n        Multiple triples with the same subject and predicate can exist.\n      \n      \n        A single subject can get single-valued properties from multiple tables or in some cases stored procedures.\n      \n      \n        An IRI value of a subject or other field of a triple can be composed from more than one SQL value,\n        these values may reside in different columns, maybe in different joined tables.\n      \n      \n        Some table rows should be excluded from mapping.\n      \n    \n    \n      Thus in the most common case the RDF meta schema should consist of independent transformations; the domain\n      of each transformation is a result-set of some SQL SELECT statement and range is a set of triples. The\n      SELECT that produce the domain is quite simple: it does not use aggregate functions, joins and sorting,\n      only inner joins and WHERE conditions. There is no need to support outer joins in the RDF meta schema\n      because NULLs are usually bad inputs for functions that produce IRIs. In the rare cases when NULLs are\n      OK for functions, outer joins can be encapsulated in SQL views. The range of mapping can be described\n      by a SPARQL triple pattern: a pattern field is a variable if it depends on table columns, otherwise it\n      is a constant. Values of variables in the pattern may have additional restrictions on datatypes, when\n      datatypes of columns are known.\n    \n    \n      This common case of an RDF meta schema is implemented in Virtuoso, with one adjustment. Virtuoso stores\n      quads, not triples, using the graph field (G) to indicate that a triple belongs to some particular\n      application or resource. A SPARQL query may use quads from different graphs without large difference\n      between G and the other three fields of a quad. E.g., variable ?g in expression GRAPH ?g {...} can be\n      unbound. SPARQL has special syntax for \"graph group patterns\" that is convenient for sets of triple\n      patterns with a common graph, but it also has shorthands for common subject and predicate, so the\n      difference is no more than in syntax. There is only one feature that is specific for graphs but not\n      for other fields: the SPARQL compiler can create restrictions on graphs according to FROM and FROM\n      NAMED clauses.\n    \n    \n      Virtuoso RDF Views should offer the same flexibility with the graphs as SPARQL addressing physical triples.\n      A transformation cannot always be identified by the graph used for ranges because graph may be composed\n      from SQL data. The key element of the meta schema is a \"quad map pattern\". A simple quad map pattern fully\n      defines one particular transformation from one set of relational columns into triples that match one SPARQL\n      graph pattern. The main part of quad map pattern is four declarations of \"quad map values\", each declaration\n      specifies how to calculate the value of the corresponding triple field from the SQL data. The pattern also\n      lists boolean SQL expressions that should be used to filter out unwanted rows of source data (and to join\n      multiple tables if source columns belong to different tables). There are also quad map patterns that group\n      together similar quad patterns but do not specify any real transformation or even prevent unwanted\n      transformations from being used, they are described in \"Grouping Map Patterns\" below.\n    \n    \n      Quad map values refer to schema elements of two further types: \"IRI classes\" and \"literal classes\".\n    \n  \n    Implementation\n    \n      In the example script we implement RDF Views for Northwind tables (Customers, Orders, Order Details, Products,\n      Product Categories, Employee, Region, Country, Province).\n    \n    \n      To test the mapper we just use /sparql to execute:\n    \n    \n        sparql select ?o where { graph ?g {?s ?p ?o . filter(?p like '%Country%') }} limit 10;\n    \n    \n      Or use iSparql application.\n    \n  " ;
	sioc:description	"Develop custom RDF views for NorthWind database." ;
	sioc:has_container	ns2:rdfview ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:00 GMT" ;
	content:encoded	"\n    Concept\n    \n      RDF Views map relational data into RDF and allow customizing RDF representation of locally\n      stored RDF data. To let SPARQL clients access relational data as well as physical RDF graphs\n      in a single query, we introduce a declarative Meta Schema Language for mapping SQL Data to\n      RDF Ontologies. As a result, all types of clients can efficiently access all data stored on\n      the server. The mapping functionality dynamically generates RDF Data Sets for popular ontologies\n      such as SIOC, SKOS, FOAF, and ATOM/OWL without disruption to the existing database infrastructure\n      of Web 1.0 or Web 2.0 solutions. RDF views are also suitable for declaring custom representation\n      for RDF triples, e.g. property tables, where one row holds many single-valued properties.\n    \n    \n      The Virtuoso RDF Views meta schema is a built-in feature of Virtuoso&#39;s SPARQL to SQL\n      translator. It recognizes triple patterns that refer to graphs for which an alternate\n      representation is declared and translates these into SQL accordingly. The main purpose\n      of this is evaluating SPARQL queries against existing relational databases. There exists\n      previous work from many parties for rendering relational data as RDF and opening it to\n      SPARQL access. We can mention D2RQ, SPASQL, Squirrel RDF, DBLP and others. The Virtuoso\n      effort differs from these mainly in the following:\n    \n    \n      \n        Integration with a triple store. Virtuoso can process a query for which some\n        triple patterns will go to local or remote relational data and some to local physical\n        RDF triples.\n      \n      \n        SPARQL query can be used in any place where SQL can. Database connectivity protocols\n        are neutral to the syntax of queries they transmit, thus any SQL client, e.g. JDBC,\n        ODBC or XMLA application, can send SPARQL queries and fetch result sets. Moreover,\n        a SQL query may contain SPARQL subqueries and SPARQL expressions may use SQL built-in\n        functions and stored procedures.\n      \n      \n        Integration with SQL. Since SPARQL and SQL share the same run time and query optimizer,\n        the query compilation decisions are always made with the best knowledge of the data and\n        its location. This is especially important when mixing triples and relational data or\n        when dealing with relational data distributed across many outside databases.\n      \n      \n        No limits on SPARQL. It remains possible to make queries with unspecified graph or\n        predicate against mapped relational data, even though these may sometimes be inefficient.\n      \n      \n        Coverage of the whole relational model. Multi-part keys etc. are supported in all places.\n      \n    \n  \n    Quad Map Patterns, Value and IRI Classes\n    \n      In the simplest sense, any relational schema can be rendered into RDF by converting all primary\n      keys and foreign keys into IRI&#39;s, assigning a predicate IRI to each column, and an rdf:type predicate\n      for each row linking it to a RDF class IRI corresponding to the table. Then a triple with the primary\n      key IRI as subject, the column IRI as predicate and the column&#39;s value as object is considered to exist\n      for each column that is neither part of a primary or foreign key.\n    \n    \n      Strictly equating a subject value to a row and each column to a predicate is often good but is too\n      restrictive for the general case.\n    \n    \n      \n        Multiple triples with the same subject and predicate can exist.\n      \n      \n        A single subject can get single-valued properties from multiple tables or in some cases stored procedures.\n      \n      \n        An IRI value of a subject or other field of a triple can be composed from more than one SQL value,\n        these values may reside in different columns, maybe in different joined tables.\n      \n      \n        Some table rows should be excluded from mapping.\n      \n    \n    \n      Thus in the most common case the RDF meta schema should consist of independent transformations; the domain\n      of each transformation is a result-set of some SQL SELECT statement and range is a set of triples. The\n      SELECT that produce the domain is quite simple: it does not use aggregate functions, joins and sorting,\n      only inner joins and WHERE conditions. There is no need to support outer joins in the RDF meta schema\n      because NULLs are usually bad inputs for functions that produce IRIs. In the rare cases when NULLs are\n      OK for functions, outer joins can be encapsulated in SQL views. The range of mapping can be described\n      by a SPARQL triple pattern: a pattern field is a variable if it depends on table columns, otherwise it\n      is a constant. Values of variables in the pattern may have additional restrictions on datatypes, when\n      datatypes of columns are known.\n    \n    \n      This common case of an RDF meta schema is implemented in Virtuoso, with one adjustment. Virtuoso stores\n      quads, not triples, using the graph field (G) to indicate that a triple belongs to some particular\n      application or resource. A SPARQL query may use quads from different graphs without large difference\n      between G and the other three fields of a quad. E.g., variable ?g in expression GRAPH ?g {...} can be\n      unbound. SPARQL has special syntax for &quot;graph group patterns&quot; that is convenient for sets of triple\n      patterns with a common graph, but it also has shorthands for common subject and predicate, so the\n      difference is no more than in syntax. There is only one feature that is specific for graphs but not\n      for other fields: the SPARQL compiler can create restrictions on graphs according to FROM and FROM\n      NAMED clauses.\n    \n    \n      Virtuoso RDF Views should offer the same flexibility with the graphs as SPARQL addressing physical triples.\n      A transformation cannot always be identified by the graph used for ranges because graph may be composed\n      from SQL data. The key element of the meta schema is a &quot;quad map pattern&quot;. A simple quad map pattern fully\n      defines one particular transformation from one set of relational columns into triples that match one SPARQL\n      graph pattern. The main part of quad map pattern is four declarations of &quot;quad map values&quot;, each declaration\n      specifies how to calculate the value of the corresponding triple field from the SQL data. The pattern also\n      lists boolean SQL expressions that should be used to filter out unwanted rows of source data (and to join\n      multiple tables if source columns belong to different tables). There are also quad map patterns that group\n      together similar quad patterns but do not specify any real transformation or even prevent unwanted\n      transformations from being used, they are described in &quot;Grouping Map Patterns&quot; below.\n    \n    \n      Quad map values refer to schema elements of two further types: &quot;IRI classes&quot; and &quot;literal classes&quot;.\n    \n  \n    Implementation\n    \n      In the example script we implement RDF Views for Northwind tables (Customers, Orders, Order Details, Products,\n      Product Categories, Employee, Region, Country, Province).\n    \n    \n      To test the mapper we just use /sparql to execute:\n    \n    \n        sparql select ?o where { graph ?g {?s ?p ?o . filter(?p like &#39;%Country%&#39;) }} limit 10;\n    \n    \n      Or use iSparql application.\n    \n  \n " ;
	rdf:type	foaf:Document ;
	dc:title	"Making an Executable SOAP Directory" ;
	sioc:content	"\nExample\n\n  The SQL script makes a directory in the web server space SOAP capable.\n  The interface page has a test button which sends a SOAP request to the server.\n  The Service for testing will just return its own argument.\n  At least 2 web threads are needed, so this should be noted before starting. An Error message is shown\n  if only one is available.\n  The page shows the command and explains the manual operation for doing this from the admin interface.\n \n" ;
	sioc:description	"Exposing SOAP Endpoints" ;
	sioc:has_container	ns2:services ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:01 GMT" ;
	content:encoded	"\nExample\n\n  The SQL script makes a directory in the web server space SOAP capable.\n  The interface page has a test button which sends a SOAP request to the server.\n  The Service for testing will just return its own argument.\n  At least 2 web threads are needed, so this should be noted before starting. An Error message is shown\n  if only one is available.\n  The page shows the command and explains the manual operation for doing this from the admin interface.\n \n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"Simple usage of the SOAP service" ;
	sioc:content	"\nExample\n\n  The service function accepts data for entering an order into the demo database.\n  The arguments contain the customer id, item to order and quantity.\n  The response is an element with price and expected delivery date, 10 days forward.\n  The function creates a SOAP exception if the customer is not found in the database.\n  The web page will take the data and call the service on the local server.\n  It will display the in and out going messages, including envelopes.\n \n" ;
	sioc:description	"Order Entry Service" ;
	sioc:has_container	ns2:services ,
		ns2:web2 ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:01 GMT" ;
	content:encoded	"\nExample\n\n  The service function accepts data for entering an order into the demo database.\n  The arguments contain the customer id, item to order and quantity.\n  The response is an element with price and expected delivery date, 10 days forward.\n  The function creates a SOAP exception if the customer is not found in the database.\n  The web page will take the data and call the service on the local server.\n  It will display the in and out going messages, including envelopes.\n \n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"WSDL description" ;
	sioc:content	"\nExample\n\n  The page shows the automaticaly generated WSDL description of the resources granted to SOAPDEMO user.\n  These descriptions are shown as source, and and also rendered by xslt.\n  The original content of WSDL description can be seen at http://[host:port]/services/services.wsdl\n\n" ;
	sioc:description	"Generating WSDL descriptions for SOAP Services" ;
	sioc:has_container	ns2:services ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:01 GMT" ;
	content:encoded	"\nExample\n\n  The page shows the automaticaly generated WSDL description of the resources granted to SOAPDEMO user.\n  These descriptions are shown as source, and and also rendered by xslt.\n  The original content of WSDL description can be seen at http://[host:port]/services/services.wsdl\n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"Data types and SOAP" ;
	sioc:content	"\nExample\n\n  Example has a sample call which passes all supported data types.\n  Composite types e.g. arrays are just repeats of a constant element.\n  The page shows the data going in and out.\n \n" ;
	sioc:description	"Using SQL Data Types in SOAP Services" ;
	sioc:has_container	ns2:services ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:02 GMT" ;
	content:encoded	"\nExample\n\n  Example has a sample call which passes all supported data types.\n  Composite types e.g. arrays are just repeats of a constant element.\n  The page shows the data going in and out.\n \n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"SOAP & remote data sources" ;
	sioc:content	"\nPreliminaries\n\n  \n  This example demonstrates the processing of a result set obtained from a PL\n  procedure defined on a remote database.\n  \n  The example shows a remote execution of a PL procedure against Microsoft\n  SqlServer and Oracle DBMS.\n  \n  The remote procedure is called via rexecute(). The result set is converted\n  to an XML document by a local PL procedure that can then be called via SOAP.\n  The demo VSP pages offers a form to accept DSN, login info and a search\n  string. A soap_call() is executed with these parameters, and the result is \n  parsed with an XSL-T engine for HTML output. \n  \n\n\nSQLServer Preparation\n\n  \n    Configure this example for SQLServer by loading the ms.sql script\n    using the ISQL tool on behalf of the demo user.\n  \n  \n    Make sure the demo Northwind DB is installed.\n  \n  \n    Create a DSN to the SQLServer DB.\n  \n  \n    Grant rexecute on DSN to the SOAP_SO_S_14 user:\n    GRANT REXECUTE on [SQLServer DSN] to SOAP_SO_S_14;\n  \n\n\nOracle Preparation\n\n  \n    Configure this example for Oracle by loading the ora.sql script\n    using the SQLPLUS tool on behalf of the demo user.\n  \n  \n    Make sure the Oracle demo DB is installed.\n  \n  \n    Create a DSN to the Oracle DB. The driver must be\n    'Microsoft ODBC Driver for Oracle'.\n  \n  \n    Grant rexecute on DSN to the SOAP_SO_S_14 user:\n    GRANT REXECUTE on [Oracle DSN] to SOAP_SO_S_14;\n  \n\n" ;
	sioc:description	"Exposing Third-Party SQL Stored Procedures as SOAP Services" ;
	sioc:has_container	ns2:services ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:01 GMT" ;
	content:encoded	"\nPreliminaries\n\n  \n  This example demonstrates the processing of a result set obtained from a PL\n  procedure defined on a remote database.\n  \n  The example shows a remote execution of a PL procedure against Microsoft\n  SqlServer and Oracle DBMS.\n  \n  The remote procedure is called via rexecute(). The result set is converted\n  to an XML document by a local PL procedure that can then be called via SOAP.\n  The demo VSP pages offers a form to accept DSN, login info and a search\n  string. A soap_call() is executed with these parameters, and the result is \n  parsed with an XSL-T engine for HTML output. \n  \n\n\nSQLServer Preparation\n\n  \n    Configure this example for SQLServer by loading the ms.sql script\n    using the ISQL tool on behalf of the demo user.\n  \n  \n    Make sure the demo Northwind DB is installed.\n  \n  \n    Create a DSN to the SQLServer DB.\n  \n  \n    Grant rexecute on DSN to the SOAP_SO_S_14 user:\n    GRANT REXECUTE on [SQLServer DSN] to SOAP_SO_S_14;\n  \n\n\nOracle Preparation\n\n  \n    Configure this example for Oracle by loading the ora.sql script\n    using the SQLPLUS tool on behalf of the demo user.\n  \n  \n    Make sure the Oracle demo DB is installed.\n  \n  \n    Create a DSN to the Oracle DB. The driver must be\n    &#39;Microsoft ODBC Driver for Oracle&#39;.\n  \n  \n    Grant rexecute on DSN to the SOAP_SO_S_14 user:\n    GRANT REXECUTE on [Oracle DSN] to SOAP_SO_S_14;\n  \n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"SOAP & WSDL service" ;
	sioc:content	"\nExample overview\nThis example demonstrates:\n\n  \n  The use of raw TCP session operations: ses_connect(), ses_disconnect(), ses_read_line(), ses_write().\n  \n  A SOAP call.\n  \n  \n  Using the SMTP protocol for email verification.\n  \n  \n  Processing the results with an XSL-T engine.\n  \n\n\nExample Setup\nThe service is prepared by loading the SQL file.\nThis performs the following:\n\n  \n  Define a stored procedure for the SOAP service that opens a TCP session,\n  and makes a SMTP exchange without sending a mail body to the server.\n  Read responses from the server and makes an XML document.\n  \n  \n  The SOAP service is achieved by defining the /email_service URL to\n  have same functionality as using soap_server() function call.\n  \n\n" ;
	sioc:description	"Email Address Validation Service" ;
	sioc:has_container	ns2:services ,
		ns2:web2 ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:01 GMT" ;
	content:encoded	"\nExample overview\nThis example demonstrates:\n\n  \n  The use of raw TCP session operations: ses_connect(), ses_disconnect(), ses_read_line(), ses_write().\n  \n  A SOAP call.\n  \n  \n  Using the SMTP protocol for email verification.\n  \n  \n  Processing the results with an XSL-T engine.\n  \n\n\nExample Setup\nThe service is prepared by loading the SQL file.\nThis performs the following:\n\n  \n  Define a stored procedure for the SOAP service that opens a TCP session,\n  and makes a SMTP exchange without sending a mail body to the server.\n  Read responses from the server and makes an XML document.\n  \n  \n  The SOAP service is achieved by defining the /email_service URL to\n  have same functionality as using soap_server() function call.\n  \n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"SOAP Interoperability Test Round III" ;
	sioc:content	"\nExample\n\n  This example uses the Virtuoso SOAP client for testing a SOAP interop III endpoints.\n  At least 2 web threads are needed, so this should be noted before starting. An Error message is shown\n  if only one is available.\n  The index page shows operations defined for SOAP Interop Round III tests.\n  The second level pages are SOAP clients defined to perform apropriate SOAP call.\n  The VSP based clients make a specific form for entering the input data and selecting a endpoint to test.\n  Once call is made (invoked with Call button), the results will be extracted from SOAP response and will be shown.\n  Also the request and response wire dumps will be shown for debugging purposes.\n \n" ;
	sioc:description	"SOAP Interoperability Test Page" ;
	sioc:has_container	ns2:services ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:01 GMT" ;
	content:encoded	"\nExample\n\n  This example uses the Virtuoso SOAP client for testing a SOAP interop III endpoints.\n  At least 2 web threads are needed, so this should be noted before starting. An Error message is shown\n  if only one is available.\n  The index page shows operations defined for SOAP Interop Round III tests.\n  The second level pages are SOAP clients defined to perform apropriate SOAP call.\n  The VSP based clients make a specific form for entering the input data and selecting a endpoint to test.\n  Once call is made (invoked with Call button), the results will be extracted from SOAP response and will be shown.\n  Also the request and response wire dumps will be shown for debugging purposes.\n \n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"SOAP services" ;
	sioc:content	"\nPreliminaries\n\n  \n  This example demonstrates the ability to access the SOAP API provided by\n  Google.\n  \n  The Google API has three services:\n\t\n\t  Search for text on the web.\n\t  Check details of a page cached by Google.\n\t  Find correct spelling for a partial word.\n\t\n  \n  \n  The service requests may be configured in various ways by the parameters\n  supplied to the API.\n  \n\n\nGoogle Registration\n\n  Google API home page\n  http://www.google.com/apis/\n  has details about the services offered by Google.\n  You must register with Google to be authorized to use the API.\n  You can sign up for a new account from the Google API home page.\n  Verify your email address by accessing a page, as indicated in the\n  email sent by Google.\n  Collect the license key in a subsequent email from Google.\n\n\nSearch Demo\n\n  Enter the registration key for your personal Google account.\n  The key is stored in a browser cookie, and is loaded when the tutorial\n  is run again.\n  \n  Check the box if you wish to view the result as raw XML format.\n  \n  \n  Enter some text to be searched, and press the search button.\n  The raw XML result shows the overview of the search results.\n  If XML view is not checked, then only the number of pages found is shown.\n  \n  \n  Enter a url of a page that is likely to be cached by Google.\n  Then press the button to get the details of this page.\n  The raw XML result will contain the page typically encoded in Base64.\n  If XML view is not checked, then only the size of the page is shown.\n  \n  \n  Enter one or more words to have the spelling verified. A partial word is\n  possible. Then press the button to verify the spelling.\n  The raw XML result shows the suggested spelling.\n  If XML view is not checked, then only the suggested spelling is shown.\n  \n\n" ;
	sioc:description	"Google API demo" ;
	sioc:has_container	ns2:services ,
		ns2:web2 ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:01 GMT" ;
	content:encoded	"\nPreliminaries\n\n  \n  This example demonstrates the ability to access the SOAP API provided by\n  Google.\n  \n  The Google API has three services:\n\t\n\t  Search for text on the web.\n\t  Check details of a page cached by Google.\n\t  Find correct spelling for a partial word.\n\t\n  \n  \n  The service requests may be configured in various ways by the parameters\n  supplied to the API.\n  \n\n\nGoogle Registration\n\n  Google API home page\n  http://www.google.com/apis/\n  has details about the services offered by Google.\n  You must register with Google to be authorized to use the API.\n  You can sign up for a new account from the Google API home page.\n  Verify your email address by accessing a page, as indicated in the\n  email sent by Google.\n  Collect the license key in a subsequent email from Google.\n\n\nSearch Demo\n\n  Enter the registration key for your personal Google account.\n  The key is stored in a browser cookie, and is loaded when the tutorial\n  is run again.\n  \n  Check the box if you wish to view the result as raw XML format.\n  \n  \n  Enter some text to be searched, and press the search button.\n  The raw XML result shows the overview of the search results.\n  If XML view is not checked, then only the number of pages found is shown.\n  \n  \n  Enter a url of a page that is likely to be cached by Google.\n  Then press the button to get the details of this page.\n  The raw XML result will contain the page typically encoded in Base64.\n  If XML view is not checked, then only the size of the page is shown.\n  \n  \n  Enter one or more words to have the spelling verified. A partial word is\n  possible. Then press the button to verify the spelling.\n  The raw XML result shows the suggested spelling.\n  If XML view is not checked, then only the suggested spelling is shown.\n  \n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"Publishing C function as SOAP service" ;
	sioc:content	"\nExample\n\n  The Virtuoso distribution includes the sample bif, bif_sample.c. It is thus possible to create following function and make server including it.\n  The next step is creating a stored procedure that calls this function and you are back to publishing a Virtuoso stored procedure.\n  The Service for testing will just return string \"Hello world\".\n  At least 2 web threads are needed, so this should be noted before starting. An Error message is shown\n  if only one is available.\n \n  \n   static caddr_t\n   bif_hello_world (caddr_t * qst, caddr_t * err_ret, state_slot_t ** args)\n     {\n       return box_dv_short_string (\"Hello world.\");\n     }\n  \n  IMPORTANT: You need to start the sample server containing bif_hello_world , in order run this example.\n  \n" ;
	sioc:description	"Publishing C/C++ functions as Web Services" ;
	sioc:has_container	ns2:services ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:01 GMT" ;
	content:encoded	"\nExample\n\n  The Virtuoso distribution includes the sample bif, bif_sample.c. It is thus possible to create following function and make server including it.\n  The next step is creating a stored procedure that calls this function and you are back to publishing a Virtuoso stored procedure.\n  The Service for testing will just return string &quot;Hello world&quot;.\n  At least 2 web threads are needed, so this should be noted before starting. An Error message is shown\n  if only one is available.\n \n  \n   static caddr_t\n   bif_hello_world (caddr_t * qst, caddr_t * err_ret, state_slot_t ** args)\n     {\n       return box_dv_short_string (&quot;Hello world.&quot;);\n     }\n  \n  IMPORTANT: You need to start the sample server containing bif_hello_world , in order run this example.\n  \n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"Publishing Java class as SOAP service" ;
	sioc:content	"\nExample\n\n  This example demonstrates how to call Java VM methods from\n  Virtuoso/PL and expose them as SOAP services.\n  It's based on the java class demo_server.java.\n  Also provided is a demonstration of how the JAVA Reflect API\n  can be used to automatically generate PL wrappers.\n  Click on the Run link or point your browser to:\n  http://[host]:[port]/services/services.vsmx\n\n\nSource code detail\n\n  javavm_xml.pl - This file contains a Virtuoso/PL procedure which\n  produces a XML description of the java classes.\n  jvm_ref_describe_class (in class_name varchar,\n\tin inherited integer := 0)\n  First argument is the absolute JAVA class name (example: java_server\n  or java.util.Calendar).\n  Second argument controls whether to create entries for the inherited\n  constructors/ methods/ attributes of the class, or only for the ones\n  defined in it (java.lang.Class.getDeclaredMethods() vs.\n  java.lang.Class.getMethods()).\n  \n  javavm_pl.xsl - Is an XSLT stylesheet that produces the\n  Virtuoso/PL wrappers based on the XML file from jvm_ref_describe_class.\n  The stylesheet has a parameter \"module\" = \"1\" | \"0\" (default \"1\") which\n  controls whether it to generate code for a Virtuoso/PL module, or a set of\n  procedures.\n  For each field it generates Get../Set.. methods (or only Get.. if the\n  field is read-only).\n  It also generates wrappers for each class method.\n  For the non-static fields/methods it instantiates a java object\n  every time the method is invoked.\n  \n  java_pl_wrapper.sql - This file is generated using the above files\n  and then the java_properties procedure is added.\n\n\n    Important: This demo needs Virtuoso server with Java hosting option. \n    Otherwise demo will not run properly.\n\n" ;
	sioc:description	"Publishing Java classes as Web Services" ;
	sioc:has_container	ns2:services ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:01 GMT" ;
	content:encoded	"\nExample\n\n  This example demonstrates how to call Java VM methods from\n  Virtuoso/PL and expose them as SOAP services.\n  It&#39;s based on the java class demo_server.java.\n  Also provided is a demonstration of how the JAVA Reflect API\n  can be used to automatically generate PL wrappers.\n  Click on the Run link or point your browser to:\n  http://[host]:[port]/services/services.vsmx\n\n\nSource code detail\n\n  javavm_xml.pl - This file contains a Virtuoso/PL procedure which\n  produces a XML description of the java classes.\n  jvm_ref_describe_class (in class_name varchar,\n\tin inherited integer := 0)\n  First argument is the absolute JAVA class name (example: java_server\n  or java.util.Calendar).\n  Second argument controls whether to create entries for the inherited\n  constructors/ methods/ attributes of the class, or only for the ones\n  defined in it (java.lang.Class.getDeclaredMethods() vs.\n  java.lang.Class.getMethods()).\n  \n  javavm_pl.xsl - Is an XSLT stylesheet that produces the\n  Virtuoso/PL wrappers based on the XML file from jvm_ref_describe_class.\n  The stylesheet has a parameter &quot;module&quot; = &quot;1&quot; | &quot;0&quot; (default &quot;1&quot;) which\n  controls whether it to generate code for a Virtuoso/PL module, or a set of\n  procedures.\n  For each field it generates Get../Set.. methods (or only Get.. if the\n  field is read-only).\n  It also generates wrappers for each class method.\n  For the non-static fields/methods it instantiates a java object\n  every time the method is invoked.\n  \n  java_pl_wrapper.sql - This file is generated using the above files\n  and then the java_properties procedure is added.\n\n\n    Important: This demo needs Virtuoso server with Java hosting option. \n    Otherwise demo will not run properly.\n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"SOAP services" ;
	sioc:content	"\nPreliminaries\n\n  \n  The online retailer\n  Amazon.com has provided\n  developers with an interface, that will allow them to do\n  product searches based on a keyword, and a base category.\n  The API is used either by a SOAP call or by a fetch of a\n  XML document.\n  Amazon.com \nsuggests you to download the developer kit. However this is optional, as it is \nnot necessary to run the following OpenLink tutorial.\n  A developer key is required to access the service.\n  One may be applied for at the\n  \n  Amazon.Com Web API page.\n  \n  The service requests may be configured in various ways by the parameters\n  supplied to the API.\n  \n\n\nExample Product search using SOAP API\n\n  In the SQL setup file, the SOAP call is prepared by the\n  function call to soap_wsdl_import() which reads in the web service\n  \".wsdl\" file from Amazon.com.\n  \n  Enter the Developer Key, result type, root node for the search, and the\n  keyword to be searched for.\n  \n  Hit the search button to get the products matching the keyword.\n  This example uses the \"heavy\" mode of results, that contains the\n  full customer reviews.\n  A local stylesheet is applied to the result for either an\n  XML or HTML view.\n\n" ;
	sioc:description	"Amazon API demo" ;
	sioc:has_container	ns2:web2 ,
		ns2:services ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:01 GMT" ;
	content:encoded	"\nPreliminaries\n\n  \n  The online retailer\n  Amazon.com has provided\n  developers with an interface, that will allow them to do\n  product searches based on a keyword, and a base category.\n  The API is used either by a SOAP call or by a fetch of a\n  XML document.\n  Amazon.com \nsuggests you to download the developer kit. However this is optional, as it is \nnot necessary to run the following OpenLink tutorial.\n  A developer key is required to access the service.\n  One may be applied for at the\n  \n  Amazon.Com Web API page.\n  \n  The service requests may be configured in various ways by the parameters\n  supplied to the API.\n  \n\n\nExample Product search using SOAP API\n\n  In the SQL setup file, the SOAP call is prepared by the\n  function call to soap_wsdl_import() which reads in the web service\n  &quot;.wsdl&quot; file from Amazon.com.\n  \n  Enter the Developer Key, result type, root node for the search, and the\n  keyword to be searched for.\n  \n  Hit the search button to get the products matching the keyword.\n  This example uses the &quot;heavy&quot; mode of results, that contains the\n  full customer reviews.\n  A local stylesheet is applied to the result for either an\n  XML or HTML view.\n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"SOAP Interoperability Test Round IV" ;
	sioc:content	"\nExample\n\n  This example uses the Virtuoso SOAP client for testing a SOAP interop IV endpoints.\n  At least 2 web threads are needed, so this should be noted before starting. An Error message is shown\n  if only one is available.\n  This page shows operations defined for SOAP Interop Round IV tests, grouped by encoding and test group name.\n  The demo pages are SOAP clients defined to perform appropriate SOAP call.\n  The VSP based clients make a specific form for entering the input data and selecting an endpoint to test.\n  Once call is made (invoked with Call button), the results will be extracted from SOAP response and shown.\n  Also the request and response wire dumps will be shown for debugging purposes.\n \n" ;
	sioc:description	"SOAP Interoperability Test Page" ;
	sioc:has_container	ns2:services ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:01 GMT" ;
	content:encoded	"\nExample\n\n  This example uses the Virtuoso SOAP client for testing a SOAP interop IV endpoints.\n  At least 2 web threads are needed, so this should be noted before starting. An Error message is shown\n  if only one is available.\n  This page shows operations defined for SOAP Interop Round IV tests, grouped by encoding and test group name.\n  The demo pages are SOAP clients defined to perform appropriate SOAP call.\n  The VSP based clients make a specific form for entering the input data and selecting an endpoint to test.\n  Once call is made (invoked with Call button), the results will be extracted from SOAP response and shown.\n  Also the request and response wire dumps will be shown for debugging purposes.\n \n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"SOAP services" ;
	sioc:content	"\n    Example\n    \n      The setup_sms.vspx sets up the SMS sending unit.\n      The handler.vspx does inserts/deletes/updates to demonstrate the SMS sending from triggers.\n      For details of the Redcoal SOAP service see it's description in http://www.xmethods.com\n     \n    " ;
	sioc:description	"Sending a SMS" ;
	sioc:has_container	ns2:services ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:01 GMT" ;
	content:encoded	"\n    Example\n    \n      The setup_sms.vspx sets up the SMS sending unit.\n      The handler.vspx does inserts/deletes/updates to demonstrate the SMS sending from triggers.\n      For details of the Redcoal SOAP service see it&#39;s description in http://www.xmethods.com\n     \n    \n " ;
	rdf:type	foaf:Document ;
	dc:title	"SOAP services" ;
	sioc:content	"\nOverview\n\n  This example demonstrates how to use Yahoo GeoCode API as a local SOAP service.  \n  For more information on Yahoo GoeCode API visit: \n  http://developer.yahoo.net/maps/rest/V1/geocode.html\n  \n\n  Breakdown\n  \n  In the initial state we create a simple procedure that: \n    \n      takes input parameters as described by Yahoo GoeCode API page. \n      Generates URL and calls it.\n      returns the XML result formated throught raw.xsl.\n    \n  \n  Create SOAP_SO_S_27 user and grant the procedure to it.\n  \n  The SOAP service is achieved by defining the /SOAP_SO_S_27 URL to\n  have same functionality as using soap_server() function call.\n  \n  \n  The client uses AJAX to call the service and show the result.\n  \n  \n" ;
	sioc:description	"Yahoo GeoCode API demo" ;
	sioc:has_container	ns2:services ,
		ns2:web2 ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:01 GMT" ;
	content:encoded	"\nOverview\n\n  This example demonstrates how to use Yahoo GeoCode API as a local SOAP service.  \n  For more information on Yahoo GoeCode API visit: \n  http://developer.yahoo.net/maps/rest/V1/geocode.html\n  \n\n  Breakdown\n  \n  In the initial state we create a simple procedure that: \n    \n      takes input parameters as described by Yahoo GoeCode API page. \n      Generates URL and calls it.\n      returns the XML result formated throught raw.xsl.\n    \n  \n  Create SOAP_SO_S_27 user and grant the procedure to it.\n  \n  The SOAP service is achieved by defining the /SOAP_SO_S_27 URL to\n  have same functionality as using soap_server() function call.\n  \n  \n  The client uses AJAX to call the service and show the result.\n  \n  \n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"SOAP services" ;
	sioc:content	"\nOverview\n\n  This example demonstrates how to implement Google Maps API using XML and Asynchronous RPC (\"AJAX\").\n  For more information on Google Maps API visit: \n  http://www.google.com/apis/maps/documentation/\n  \n\n  Breakdown\n  In the Initial state we will extend the Demo.demo.Customers \n  table with some new fields (Longitude and Latitude). Then we will use \n  Yahoo GeoCode API to find Longitude, Latitude values for the customers addresses \n  and store the values in the database. The data_xml.vsp page generates \n  XML from that table similar to the one described in \n  Google Maps API Documentation. \n  We have extend it a little bit to have information for the Customer Name and Address.\n  Click on the 'googlemaps.vsp' Run link to see the generated Google Map. You can click on the markers to \n  view additional information.\n  \n" ;
	sioc:description	"Google Maps API demo" ;
	sioc:has_container	ns2:web2 ,
		ns2:services ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:01 GMT" ;
	content:encoded	"\nOverview\n\n  This example demonstrates how to implement Google Maps API using XML and Asynchronous RPC (&quot;AJAX&quot;).\n  For more information on Google Maps API visit: \n  http://www.google.com/apis/maps/documentation/\n  \n\n  Breakdown\n  In the Initial state we will extend the Demo.demo.Customers \n  table with some new fields (Longitude and Latitude). Then we will use \n  Yahoo GeoCode API to find Longitude, Latitude values for the customers addresses \n  and store the values in the database. The data_xml.vsp page generates \n  XML from that table similar to the one described in \n  Google Maps API Documentation. \n  We have extend it a little bit to have information for the Customer Name and Address.\n  Click on the &#39;googlemaps.vsp&#39; Run link to see the generated Google Map. You can click on the markers to \n  view additional information.\n  \n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"SOAP services" ;
	sioc:content	"\nOverview\n\n  This example demonstrates how to implement Yahoo Maps API Generated Rss feed.\n  For more information on Yahoo Maps API visit: \n  http://developer.yahoo.net/maps/simple/index.html\n  \n\n  Breakdown\n  Yahoo Maps API can get map information using data formatted in Web-standard RSS format. \n  We show in 'yahoomaps.vsp' how you can easily generated the feed to be posted to yahoo using just \n  one SQL statement with xml_auto function. For more information on xml_auto refer to the documentation.\n  \n" ;
	sioc:description	"Yahoo Maps API demo" ;
	sioc:has_container	ns2:services ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:01 GMT" ;
	content:encoded	"\nOverview\n\n  This example demonstrates how to implement Yahoo Maps API Generated Rss feed.\n  For more information on Yahoo Maps API visit: \n  http://developer.yahoo.net/maps/simple/index.html\n  \n\n  Breakdown\n  Yahoo Maps API can get map information using data formatted in Web-standard RSS format. \n  We show in &#39;yahoomaps.vsp&#39; how you can easily generated the feed to be posted to yahoo using just \n  one SQL statement with xml_auto function. For more information on xml_auto refer to the documentation.\n  \n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"Research Service for the Microsoft Office 2003" ;
	sioc:content	"\n\n    Overview\n\n    Microsoft Office 2003 provides a new tool called \"The Research Library\", which\n    is available from the task pane in all of the Microsoft Office Suite including\n    Microsoft Office Excel 2003, Microsoft Office PowerPoint 2003, Microsoft Office\n    Word 2003, and Microsoft Office Outlook 2003.\n\nBy default, the Research Library allows to search for terms using several\n    built-in resources. The Research Library is also extensible: users can add their\n    own research service by creating a Web service that follows schemas defined for\n    Microsoft research services. \n\nPrerequisites\n\nThe following prerequisites are needed to ensure that you can experience this\n    demonstration.\n\n\n    Virtuoso 3.5 or above\n    Microsoft Office 2003 or higher \n\n\nTutorial Example\n\nThe following demonstration creates a service which exposes two methods:\n    \"Registration\" and \"Query\". \n\nThe first method allows Microsoft Office to discover the Query service; also it\n    could be extended to log the registration info for specific application\n    purposes. The \"Query\" service is used to make a Free-text search within WebDAV\n    repository by a given set of keywords entered by user in task panel. \n    The demo script also creates a virtual directory which forces \n    \"Document/Literal\" encoding of SOAP messages, which  is another way to expose\n    Virtuoso PL stored procedures without having special SOAP user-defined data-types. \n\nPlease follow the steps below to maximize the value of this tutorial: \n\nStep 1: Run the following sql script to set up so_s_34.sql.  \n\nStep 2: After executing the initial setup above, add the service using a\n    \"Research\" task pane by selecting \"Research Options\" and then \"Add Services\".  \n    Note: To access this Research Task pane, select Research from the Tools menu, or\n    by pressing Ctrl+F1 and choosing Research from the Other Task Panes drop-down list.\n\nStep 3:  In the presented text entry for the Address , type the URL to the demo\n    service http://host:port/VRes/ and press \"Add\", then \"Continue\" and finally\n    \"Install\" (in that step \"Virtuoso FTi Search (PL)\" should be displayed). \n    Once you have installed the demo service, you can query it with typing search\n    keywords in \"Search for\" text entry and selecting the \"Virtuoso FTi Search (PL)\"\n    from drop-down box. On success a list of top 10 public readable items from\n    WebDAV matching the \"AND\" of keywords will be displayed. \n\nAdditional Information:\n\nFor More details regarding the Microsoft Research Library for Microsoft Office\n    2003 see\n    http://www.microsoft.com/office/editions/prodinfo/technologies/research.mspx\n\nFor More details regarding WebDAV see \n    http://docs.openlinksw.com/virtuoso/qswebdav.html#qswebdav\n\nFor More details regarding Free-Text Search see\n    http://docs.openlinksw.com/virtuoso/freetext.html#freetext\n\n\n\n\n\n    \n" ;
	sioc:description	"Creating Research Service for the Microsoft Office 2003 Research Library" ;
	sioc:has_container	ns2:services ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:02 GMT" ;
	content:encoded	"\n\n    Overview\n\n    Microsoft Office 2003 provides a new tool called &quot;The Research Library&quot;, which\n    is available from the task pane in all of the Microsoft Office Suite including\n    Microsoft Office Excel 2003, Microsoft Office PowerPoint 2003, Microsoft Office\n    Word 2003, and Microsoft Office Outlook 2003.\n\nBy default, the Research Library allows to search for terms using several\n    built-in resources. The Research Library is also extensible: users can add their\n    own research service by creating a Web service that follows schemas defined for\n    Microsoft research services. \n\nPrerequisites\n\nThe following prerequisites are needed to ensure that you can experience this\n    demonstration.\n\n\n    Virtuoso 3.5 or above\n    Microsoft Office 2003 or higher \n\n\nTutorial Example\n\nThe following demonstration creates a service which exposes two methods:\n    &quot;Registration&quot; and &quot;Query&quot;. \n\nThe first method allows Microsoft Office to discover the Query service; also it\n    could be extended to log the registration info for specific application\n    purposes. The &quot;Query&quot; service is used to make a Free-text search within WebDAV\n    repository by a given set of keywords entered by user in task panel. \n    The demo script also creates a virtual directory which forces \n    &quot;Document/Literal&quot; encoding of SOAP messages, which  is another way to expose\n    Virtuoso PL stored procedures without having special SOAP user-defined data-types. \n\nPlease follow the steps below to maximize the value of this tutorial: \n\nStep 1: Run the following sql script to set up so_s_34.sql.  \n\nStep 2: After executing the initial setup above, add the service using a\n    &quot;Research&quot; task pane by selecting &quot;Research Options&quot; and then &quot;Add Services&quot;.  \n    Note: To access this Research Task pane, select Research from the Tools menu, or\n    by pressing Ctrl+F1 and choosing Research from the Other Task Panes drop-down list.\n\nStep 3:  In the presented text entry for the Address , type the URL to the demo\n    service http://host:port/VRes/ and press &quot;Add&quot;, then &quot;Continue&quot; and finally\n    &quot;Install&quot; (in that step &quot;Virtuoso FTi Search (PL)&quot; should be displayed). \n    Once you have installed the demo service, you can query it with typing search\n    keywords in &quot;Search for&quot; text entry and selecting the &quot;Virtuoso FTi Search (PL)&quot;\n    from drop-down box. On success a list of top 10 public readable items from\n    WebDAV matching the &quot;AND&quot; of keywords will be displayed. \n\nAdditional Information:\n\nFor More details regarding the Microsoft Research Library for Microsoft Office\n    2003 see\n    http://www.microsoft.com/office/editions/prodinfo/technologies/research.mspx\n\nFor More details regarding WebDAV see \n    http://docs.openlinksw.com/virtuoso/qswebdav.html#qswebdav\n\nFor More details regarding Free-Text Search see\n    http://docs.openlinksw.com/virtuoso/freetext.html#freetext\n\n\n\n\n\n    \n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"Route Planner Demo" ;
	sioc:content	"\n    Example\n\n    There are several mapping services available today, but they only provide point\n\tto point services. \n\n    \n    Once such service is from Microsoft, which has a SOAP-based MapPoint service\n    that allows location searching and distance calculations.   The following\n    demonstration uses the Microsoft MapPoint services to resolve addresses and to\n    calculate the distance between two points.   The demonstration will also\n    calculate an optimized round-trip from a given start point to the destinations\n    specified. \n\n\n    In order to run the demonstration a MapPoint username and password are needed. \n    Evaluation accounts from Microsoft are available \n\there.\n\n" ;
	sioc:description	"Using a MS MapPoint service for route planning" ;
	sioc:has_container	ns2:services ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:02 GMT" ;
	content:encoded	"\n    Example\n\n    There are several mapping services available today, but they only provide point\n\tto point services. \n\n    \n    Once such service is from Microsoft, which has a SOAP-based MapPoint service\n    that allows location searching and distance calculations.   The following\n    demonstration uses the Microsoft MapPoint services to resolve addresses and to\n    calculate the distance between two points.   The demonstration will also\n    calculate an optimized round-trip from a given start point to the destinations\n    specified. \n\n\n    In order to run the demonstration a MapPoint username and password are needed. \n    Evaluation accounts from Microsoft are available \n\there.\n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"eBay API demo" ;
	sioc:content	"\n    Example\n\n    \n\tThis example uses eBay SOAP API to perform browsing of categories \n\ton eBay sandbox site. \n    \n    \n    \n\tThe demo uses WSDL_IMPORT_UDT() function to define SOAP proxy class \n\tfor invocation of the eBay API. This will be done upon initial setup of the demo. \n\tThe source code for imported UDT for SOAP proxy could be read via eBay.sql \n\tsource file below.\n\tAlso it defines a procedure for \"getCategories\" method invocation \n\tand it's used further in functions for vspx tree control to instantiate \n\tthe nodes.\n    \n\n    \n\tTo run the demo you will need to obtain a three developer keys : ApiId, DevId & CertificateId.\n        Further a demo user on ebay sandbox site needs to be created and it's credentials must be used for\n        to make API calls. To obtain developer keys please visit the  \t\n\teBay developer zone and follow the instructions. \n\tOnce you have registered for eBay developer program and have the Api, Dev & Certificate IDs, go to \"getting setup on sandbox\" and follow the instructions to make a test user. \n    \n" ;
	sioc:description	"Using a eBay SOAP API" ;
	sioc:has_container	ns2:services ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:02 GMT" ;
	content:encoded	"\n    Example\n\n    \n\tThis example uses eBay SOAP API to perform browsing of categories \n\ton eBay sandbox site. \n    \n    \n    \n\tThe demo uses WSDL_IMPORT_UDT() function to define SOAP proxy class \n\tfor invocation of the eBay API. This will be done upon initial setup of the demo. \n\tThe source code for imported UDT for SOAP proxy could be read via eBay.sql \n\tsource file below.\n\tAlso it defines a procedure for &quot;getCategories&quot; method invocation \n\tand it&#39;s used further in functions for vspx tree control to instantiate \n\tthe nodes.\n    \n\n    \n\tTo run the demo you will need to obtain a three developer keys : ApiId, DevId &amp; CertificateId.\n        Further a demo user on ebay sandbox site needs to be created and it&#39;s credentials must be used for\n        to make API calls. To obtain developer keys please visit the  \t\n\teBay developer zone and follow the instructions. \n\tOnce you have registered for eBay developer program and have the Api, Dev &amp; Certificate IDs, go to &quot;getting setup on sandbox&quot; and follow the instructions to make a test user. \n    \n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"Northwind query via SOAP" ;
	sioc:content	"\n      Preliminaries\n      The SOAP messages are XML documents which may follow \n\t  encoding rules or an XML Schema. The ones that follow encoding rules \n\t  are known as RPC encoded, so the \n\t  XML Schema following messages are known as Document/literal encoded. \n\t  Most of SOAP toolkits can work with both kind of messages, but for some purposes \n\t  RPC encoded messages are not suitable. \n      \n      The MS Office Infopath supports only document/literal encoded SOAP \n\t  messages. So to inter operate with it, Web services have to be set to define \n\t  document/literal SOAP messages and generate appropriate WSDL file.\n      The Virtuoso can expose a services that using document/literal encoding by two ways:\n      \n\t  explicit declarations in stored procedure's definition\n\t  default SOAP encoding as an option of the SOAP enabled virtual directory\n      \n      \n\t  The first approach imply that procedure can be used only in the designated \n\t  encoding style. So the second is more flexabile as it can switch very easy \n\t  between encodings without procedure's re-definition.   \n      \n      \n\t  To allow a stored procedure to be exposed in a virtual directory \n\t  that default SOAP encoding as a document/literal it should not use \n\t  explicit declarations. This is because explicit declarations are not \n\t  compatible in all cases. Instead of explicit declarations a user defined types \n\t  must be used to describe the structures and array modifier have to be used to \n\t  describe array parameters. \n      \n  \n      Example\n      The example script defines a service that do a query on Northwind Demo Database \n      and return an array of structures containing sales volume per product category.\n  To run example, set the initial state and then click on the Run link or point\n  \tyour browser to http://[host]:[port]/NorthwindSvc/services.vsmx \n  \tto go to vsmx test pages.\n  \n      Note: the dateinput must follow ISO8601 format (for example: YYYY-MM-DD'T'HH:MM:SS) \n  \n  " ;
	sioc:description	"Building a document style oriented Web services" ;
	sioc:has_container	ns2:services ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:02 GMT" ;
	content:encoded	"\n      Preliminaries\n      The SOAP messages are XML documents which may follow \n\t  encoding rules or an XML Schema. The ones that follow encoding rules \n\t  are known as RPC encoded, so the \n\t  XML Schema following messages are known as Document/literal encoded. \n\t  Most of SOAP toolkits can work with both kind of messages, but for some purposes \n\t  RPC encoded messages are not suitable. \n      \n      The MS Office Infopath supports only document/literal encoded SOAP \n\t  messages. So to inter operate with it, Web services have to be set to define \n\t  document/literal SOAP messages and generate appropriate WSDL file.\n      The Virtuoso can expose a services that using document/literal encoding by two ways:\n      \n\t  explicit declarations in stored procedure&#39;s definition\n\t  default SOAP encoding as an option of the SOAP enabled virtual directory\n      \n      \n\t  The first approach imply that procedure can be used only in the designated \n\t  encoding style. So the second is more flexabile as it can switch very easy \n\t  between encodings without procedure&#39;s re-definition.   \n      \n      \n\t  To allow a stored procedure to be exposed in a virtual directory \n\t  that default SOAP encoding as a document/literal it should not use \n\t  explicit declarations. This is because explicit declarations are not \n\t  compatible in all cases. Instead of explicit declarations a user defined types \n\t  must be used to describe the structures and array modifier have to be used to \n\t  describe array parameters. \n      \n  \n      Example\n      The example script defines a service that do a query on Northwind Demo Database \n      and return an array of structures containing sales volume per product category.\n  To run example, set the initial state and then click on the Run link or point\n  \tyour browser to http://[host]:[port]/NorthwindSvc/services.vsmx \n  \tto go to vsmx test pages.\n  \n      Note: the dateinput must follow ISO8601 format (for example: YYYY-MM-DD&#39;T&#39;HH:MM:SS) \n  \n  \n " ;
	rdf:type	foaf:Document ;
	dc:title	"Serializing Java classes as SOAP structures" ;
	sioc:content	"\n  Example\n  \n    To test the service click on the Run link or point your browser to:\n  http://[host]:[port]/services/services.vsmx\n  \n  \n  \n    This example demonstrates how to use Java user defined types for SOAP datatype mappings.\n    It's based on the java class so_s_30.java.\n  \n  \n    It demontsrates the two approaches in using the user defined types for SOAP structure mappings :\n  \n  \n    Attach a user defined type to a predefined schema instance (user defined type SO_S_30). \n    Generate the WSDL based on the user defined type's definition (user defined type SO_S_30_2).\n  \n  \n    In order that to be runnable the so_s_30.java should be compiled to so_s_30.class with the \n    java compiler and so_s_30.class be present in the server's CLASSPATH.\n  \n" ;
	sioc:description	"Serializing Java classes as SOAP structures" ;
	sioc:has_container	ns2:services ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:02 GMT" ;
	content:encoded	"\n  Example\n  \n    To test the service click on the Run link or point your browser to:\n  http://[host]:[port]/services/services.vsmx\n  \n  \n  \n    This example demonstrates how to use Java user defined types for SOAP datatype mappings.\n    It&#39;s based on the java class so_s_30.java.\n  \n  \n    It demontsrates the two approaches in using the user defined types for SOAP structure mappings :\n  \n  \n    Attach a user defined type to a predefined schema instance (user defined type SO_S_30). \n    Generate the WSDL based on the user defined type&#39;s definition (user defined type SO_S_30_2).\n  \n  \n    In order that to be runnable the so_s_30.java should be compiled to so_s_30.class with the \n    java compiler and so_s_30.class be present in the server&#39;s CLASSPATH.\n  \n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"Serializing SQL native classes as SOAP structures" ;
	sioc:content	"\n  Example\n  \n    To test the service click on the Run link or point your browser to:\n  http://[host]:[port]/services/services.vsmx\n  \n  \n  \n    This example demonstrates how to use SQL user defined types for SOAP datatype mappings.\n  \n  \n    It demontsrates the two approaches in using the user defined types for SOAP structure mappings :\n  \n  \n    \n      Attach a user defined type to a predefined schema instance (user defined type SO_S_30).\n    \n    \n      Generate the WSDL based on the user defined type's definition (user defined type SO_S_30_2).\n    \n  \n  \n    The example uses the implicit constructor for SQL native types (based on the default values).\n  \n" ;
	sioc:description	"Serializing SQL native classes as SOAP structures" ;
	sioc:has_container	ns2:services ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:02 GMT" ;
	content:encoded	"\n  Example\n  \n    To test the service click on the Run link or point your browser to:\n  http://[host]:[port]/services/services.vsmx\n  \n  \n  \n    This example demonstrates how to use SQL user defined types for SOAP datatype mappings.\n  \n  \n    It demontsrates the two approaches in using the user defined types for SOAP structure mappings :\n  \n  \n    \n      Attach a user defined type to a predefined schema instance (user defined type SO_S_30).\n    \n    \n      Generate the WSDL based on the user defined type&#39;s definition (user defined type SO_S_30_2).\n    \n  \n  \n    The example uses the implicit constructor for SQL native types (based on the default values).\n  \n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"Serializing CLR classes as SOAP structures" ;
	sioc:content	"\n  Example\n  \n    To test the service click on the Run link or point your browser to:\n  http://[host]:[port]/services/services.vsmx\n  \n  \n  \n    This example demonstrates how to use CLR user defined types for SOAP datatype mappings.\n    It's based on the CLR class so_s_32.cs.\n  \n  \n    It demontsrates the two approaches in using the user defined types for SOAP structure mappings :\n  \n  \n    \n      Attach a user defined type to a predefined schema instance (user defined type SO_S_30).\n    \n    \n      Generate the WSDL based on the user defined type's definition (user defined type SO_S_30_2).\n    \n  \n" ;
	sioc:description	"Serializing CLR classes as SOAP structures" ;
	sioc:has_container	ns2:services ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:02 GMT" ;
	content:encoded	"\n  Example\n  \n    To test the service click on the Run link or point your browser to:\n  http://[host]:[port]/services/services.vsmx\n  \n  \n  \n    This example demonstrates how to use CLR user defined types for SOAP datatype mappings.\n    It&#39;s based on the CLR class so_s_32.cs.\n  \n  \n    It demontsrates the two approaches in using the user defined types for SOAP structure mappings :\n  \n  \n    \n      Attach a user defined type to a predefined schema instance (user defined type SO_S_30).\n    \n    \n      Generate the WSDL based on the user defined type&#39;s definition (user defined type SO_S_30_2).\n    \n  \n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"SOAP services" ;
	sioc:content	"\n    Example\n    \n      The redcoal.sql is a script which implements SOAP proxy wrapper for sending SMS messages.\n      The SOAP proxy wrapper is encapsulated in a User Defined Type\n      The sms.vsp is web interface to the SMS sending unit.\n      For details of the Redcoal SOAP service see it's description in http://www.xmethods.com\n     \n    " ;
	sioc:description	"Sending a SMS using a SOAP and User Defined Type" ;
	sioc:has_container	ns2:services ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:02 GMT" ;
	content:encoded	"\n    Example\n    \n      The redcoal.sql is a script which implements SOAP proxy wrapper for sending SMS messages.\n      The SOAP proxy wrapper is encapsulated in a User Defined Type\n      The sms.vsp is web interface to the SMS sending unit.\n      For details of the Redcoal SOAP service see it&#39;s description in http://www.xmethods.com\n     \n    \n " ;
	rdf:type	foaf:Document ;
	dc:title	"Collaboration with other clients" ;
	sioc:content	"\nVB.NET\nVirtuoso is able to interact with the Microsoft .NET by providing a\nWSDL description of all the stored procedures exposed as a SOAP operation\nwithin a given virtual directory. The WSDL description is an XML document\navailable at http://<server_http_host_and_port>/SOAP/services.wsdl\non any Virtuoso HTTP server.\n\n\nThis allows for easy creation of .NET clients.\n\n\n\nfishselect example\n\nThe following .NET VBA routine calls the fishselect stored procedure, and prints the results\non the console.\n\n\n\nOpen a new VB.NET project for Console Application.\n\nAdd a web reference to the Virtuoso WSDL end point (http://host:port/SOAP/services.wsdl).\n\nDrag and drop the VirtuosoSOAP() from Class wizard in routine code.\n\n\n\nModule Module1\n\n Sub Main()\n   Dim s As New [drop here the VirtuosoSOAP() method from Class wizard]\n   Dim r As String\n   r = s.fishselect(\"G%\")\n   System.Console.WriteLine(r)\n End Sub\n\nEnd Module\n\n" ;
	sioc:description	"Consuming a Virtuoso Web Service from Microsoft VB.NET" ;
	sioc:has_container	ns2:services ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:02 GMT" ;
	content:encoded	"\nVB.NET\nVirtuoso is able to interact with the Microsoft .NET by providing a\nWSDL description of all the stored procedures exposed as a SOAP operation\nwithin a given virtual directory. The WSDL description is an XML document\navailable at http://&lt;server_http_host_and_port&gt;/SOAP/services.wsdl\non any Virtuoso HTTP server.\n\n\nThis allows for easy creation of .NET clients.\n\n\n\nfishselect example\n\nThe following .NET VBA routine calls the fishselect stored procedure, and prints the results\non the console.\n\n\n\nOpen a new VB.NET project for Console Application.\n\nAdd a web reference to the Virtuoso WSDL end point (http://host:port/SOAP/services.wsdl).\n\nDrag and drop the VirtuosoSOAP() from Class wizard in routine code.\n\n\n\nModule Module1\n\n Sub Main()\n   Dim s As New [drop here the VirtuosoSOAP() method from Class wizard]\n   Dim r As String\n   r = s.fishselect(&quot;G%&quot;)\n   System.Console.WriteLine(r)\n End Sub\n\nEnd Module\n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"WSDL service" ;
	sioc:content	"\nWeb services architecture\n\n  Service providers deploy and publish services by registering them with the Service broker.\n  Service requesters find services by searching the Service broker's registry of published services.\n  Service requesters bind to the Service provider and consume the available services.\n\n\nTechnology Uses\nIn the world of Web services, each of these three operations involves three complimentary yet distinct technologies:\n\n  Publishing services uses the Universal Description, Discovery and Integration (UDDI) API\n  Locating services uses a combination of UDDI and the Web Services Description Language (WSDL)\n  Binding to services leverages WSDL and the Simple Object Access Protocol (SOAP).\n\nAt the most basic level, the Binding operation is the most important of the three.\n\nExample\n\n  The example will create a SOAP based interface and WSDL description for searching an existing Customer Order\n  New orders can be added into the demo database.\n  The first page renders the WSDL as an HTML form for selecting the SOAP method.\n  The second page renders the WSDL again to make a form for input parameters. Note that on this \n      entry form needs to be entered valid _CustomerID (for example ALFKI) and _ProductID (for example is 1).\n      Otherwise the servce will generate SOAP Fault message. Also _ShipVia needs to have a correct value \n      to be entered (for example 1,2 or 3).  \n  \n  Final page displays the result from the SOAP call.\n \n" ;
	sioc:description	"Generating HTML based Service interactions from a WSDL file" ;
	sioc:has_container	ns2:services ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:02 GMT" ;
	content:encoded	"\nWeb services architecture\n\n  Service providers deploy and publish services by registering them with the Service broker.\n  Service requesters find services by searching the Service broker&#39;s registry of published services.\n  Service requesters bind to the Service provider and consume the available services.\n\n\nTechnology Uses\nIn the world of Web services, each of these three operations involves three complimentary yet distinct technologies:\n\n  Publishing services uses the Universal Description, Discovery and Integration (UDDI) API\n  Locating services uses a combination of UDDI and the Web Services Description Language (WSDL)\n  Binding to services leverages WSDL and the Simple Object Access Protocol (SOAP).\n\nAt the most basic level, the Binding operation is the most important of the three.\n\nExample\n\n  The example will create a SOAP based interface and WSDL description for searching an existing Customer Order\n  New orders can be added into the demo database.\n  The first page renders the WSDL as an HTML form for selecting the SOAP method.\n  The second page renders the WSDL again to make a form for input parameters. Note that on this \n      entry form needs to be entered valid _CustomerID (for example ALFKI) and _ProductID (for example is 1).\n      Otherwise the servce will generate SOAP Fault message. Also _ShipVia needs to have a correct value \n      to be entered (for example 1,2 or 3).  \n  \n  Final page displays the result from the SOAP call.\n \n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"SOAP & WSDL service" ;
	sioc:content	"\nSOAP Server setup\n\n  An executable virtual directory is needed to create a SOAP based service.\n  The service in practice is a PL procedure or group of PL procedures.\n       In this example the PL module contains a single procedure.\n       The procedure makes a request to the quotes.nasdaq.com. The retrieved XML document is returned as a\n       string.\n\n  VSP page for WSDL generation:\n       For this example it is so_s_7_wsdl.vsp. A WSDL response is made and sent to the client.\n\n  VSP for SOAP server:\n       The SOAP server can be invoked using a soap_server() call.\n       The so_s_7_server.vsp page shows setup of the SOAP server using the soap_server().\n\n\nExample Virtuoso client invoked from VSP\n\n  Virtuoso client is invoked from the VSP page so_s_7_client.vsp.\n  This page accepts an issuer code and processes it with the Virtuoso SOAP client function - soap_call().\n  The soap method in this request is the name of the procedure defined in Step 2 above.\n  The result from the SOAP request will be transformed with an XSL-T style-sheet, and sent to the browser as an HTML document.\n\n\nExample AJAX SOAP client invoked from JavaScript\n\n  The \"nasdaq_ajax.html\" (listed below) contains a JavaScript code used to invoke SOAP client.\n  This client will invoke the Virtuoso SOAP service as defined above.\n  The JavaScript code uses XMLHttpRequest object.\n\n\nInvoking the operation via VB.NET application\nThe following example demonstrates the usage of the Microsoft .NET against Virtuoso's SOAP service\nas defined in 'Server Setup':\n\n1. Open a new VB.NET project for Console Application.\n2. Add a web reference to the Virtuoso WSDL end point (http://[host:port]/xml-soap/services.wsdl).\n3. Drag and drop the VirtuosoSOAP() from Class wizard in routine code.\n\n\n    Sub Main()\n        Dim soap As New WebReference1.VirtuosoDB_DBA_NasdaqQuotes()\n        Dim result As String\n        Dim sty As New Xml.Xsl.XslTransform()\n\n        result = soap.get_NasdaqQuotes(\"YHOO\")\n\n        sty.Load(\"http://[host:port]/tutorial/services/so_s_7/sr.xsl\")\n\n        Dim strReader As New IO.StringReader(result)\n        Dim xpDoc As New Xml.XPath.XPathDocument(strReader)\n        Dim arg As New Xml.Xsl.XsltArgumentList()\n        Dim strWriter As New IO.StringWriter()\n\n        sty.Transform(xpDoc.CreateNavigator(), arg, strWriter)\n        System.Console.WriteLine(strWriter.ToString)\n    End Sub\n\n" ;
	sioc:description	"Stock Quotes service" ;
	sioc:has_container	ns2:web2 ,
		ns2:services ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:02 GMT" ;
	content:encoded	"\nSOAP Server setup\n\n  An executable virtual directory is needed to create a SOAP based service.\n  The service in practice is a PL procedure or group of PL procedures.\n       In this example the PL module contains a single procedure.\n       The procedure makes a request to the quotes.nasdaq.com. The retrieved XML document is returned as a\n       string.\n\n  VSP page for WSDL generation:\n       For this example it is so_s_7_wsdl.vsp. A WSDL response is made and sent to the client.\n\n  VSP for SOAP server:\n       The SOAP server can be invoked using a soap_server() call.\n       The so_s_7_server.vsp page shows setup of the SOAP server using the soap_server().\n\n\nExample Virtuoso client invoked from VSP\n\n  Virtuoso client is invoked from the VSP page so_s_7_client.vsp.\n  This page accepts an issuer code and processes it with the Virtuoso SOAP client function - soap_call().\n  The soap method in this request is the name of the procedure defined in Step 2 above.\n  The result from the SOAP request will be transformed with an XSL-T style-sheet, and sent to the browser as an HTML document.\n\n\nExample AJAX SOAP client invoked from JavaScript\n\n  The &quot;nasdaq_ajax.html&quot; (listed below) contains a JavaScript code used to invoke SOAP client.\n  This client will invoke the Virtuoso SOAP service as defined above.\n  The JavaScript code uses XMLHttpRequest object.\n\n\nInvoking the operation via VB.NET application\nThe following example demonstrates the usage of the Microsoft .NET against Virtuoso&#39;s SOAP service\nas defined in &#39;Server Setup&#39;:\n\n1. Open a new VB.NET project for Console Application.\n2. Add a web reference to the Virtuoso WSDL end point (http://[host:port]/xml-soap/services.wsdl).\n3. Drag and drop the VirtuosoSOAP() from Class wizard in routine code.\n\n\n    Sub Main()\n        Dim soap As New WebReference1.VirtuosoDB_DBA_NasdaqQuotes()\n        Dim result As String\n        Dim sty As New Xml.Xsl.XslTransform()\n\n        result = soap.get_NasdaqQuotes(&quot;YHOO&quot;)\n\n        sty.Load(&quot;http://[host:port]/tutorial/services/so_s_7/sr.xsl&quot;)\n\n        Dim strReader As New IO.StringReader(result)\n        Dim xpDoc As New Xml.XPath.XPathDocument(strReader)\n        Dim arg As New Xml.Xsl.XsltArgumentList()\n        Dim strWriter As New IO.StringWriter()\n\n        sty.Transform(xpDoc.CreateNavigator(), arg, strWriter)\n        System.Console.WriteLine(strWriter.ToString)\n    End Sub\n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"SOAP & WSDL service" ;
	sioc:content	"\nExample overview\nThis example demonstrates:\n\n  Fetching HTML from a foreign host to populate a native table.\n  A SOAP call.\n  SQL to XML conversion with FOR XML EXPLICIT.\n  XSL transformation.\n\n\nExample Setup\nThe service is prepared by loading the SQL file.\nThis performs the following:\n\n  Fetch HTML country and province data from a foreign host.\n  Insert the data into COUNTRY and PROVINCE tables.\n  Fill tables COUNTRY_XML and PROVINCE_XML using http://[host:port]/DAV/factbook/factbook.xml. (http://www.xfront.org/factbook.xml)\n  \n  Define a stored procedure for the SOAP service that queries, using SQL,\n  the data from the tables. The data is returned as XML, by including the\n  FOR XML EXPLICIT clause, using the xml_auto() function to produce this\n  as a string.\n  \n  \n\t    Sample can use data from:\n\t\n  \t  \n\t    Live feed from CIA factbook\n  \t  \n  \t  \n    \t    Cached XML Data\n  \t  \n\t\n  \n  \n  The SOAP service is achieved by defining the /SOAP_SO_S_11 URL to\n  have same functionality as using soap_server() function call.\n  \n\n\nExample Operation\n\n  Makes a SOAP client request. The XML result is held in a stream.\n  Convert the stream using XSLT to HTML.\n  Send the HTML to the browser for display.\n\n\nInvoking the operation via VB.NET application\nThe following example demonstrates the usage of the Microsoft .NET against Virtuoso's SOAP service\nas defined in 'Server Setup':\n\n1. Open a new VB.NET project for Console Application.\n2. Add a web reference to the Virtuoso WSDL end point (http://[host:port]/SOAP_SO_S_11/services.wsdl).\n3. Drag and drop the VirtuosoSOAP() from Class wizard in routine code.\n\n    Sub Main()\n        Dim soap As New WebReference1.VirtuosoSOAP()\n        Dim result As String\n        Dim sty As New Xml.Xsl.XslTransform()\n\n        result = soap.administrative_divisions(\"United States\", \"\")\n\n        sty.Load(\"http://[host:port]/tutorial/services/so_s_11/sr.xsl\")\n\n        Dim strReader As New IO.StringReader(result)\n        Dim xpDoc As New Xml.XPath.XPathDocument(strReader)\n        Dim arg As New Xml.Xsl.XsltArgumentList()\n        Dim strWriter As New IO.StringWriter()\n\n        sty.Transform(xpDoc.CreateNavigator(), arg, strWriter)\n        System.Console.WriteLine(strWriter.ToString)\n    End Sub\n\n" ;
	sioc:description	"Global provinces and administrative divisions lookup service" ;
	sioc:has_container	ns2:services ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:01 GMT" ;
	content:encoded	"\nExample overview\nThis example demonstrates:\n\n  Fetching HTML from a foreign host to populate a native table.\n  A SOAP call.\n  SQL to XML conversion with FOR XML EXPLICIT.\n  XSL transformation.\n\n\nExample Setup\nThe service is prepared by loading the SQL file.\nThis performs the following:\n\n  Fetch HTML country and province data from a foreign host.\n  Insert the data into COUNTRY and PROVINCE tables.\n  Fill tables COUNTRY_XML and PROVINCE_XML using http://[host:port]/DAV/factbook/factbook.xml. (http://www.xfront.org/factbook.xml)\n  \n  Define a stored procedure for the SOAP service that queries, using SQL,\n  the data from the tables. The data is returned as XML, by including the\n  FOR XML EXPLICIT clause, using the xml_auto() function to produce this\n  as a string.\n  \n  \n\t    Sample can use data from:\n\t\n  \t  \n\t    Live feed from CIA factbook\n  \t  \n  \t  \n    \t    Cached XML Data\n  \t  \n\t\n  \n  \n  The SOAP service is achieved by defining the /SOAP_SO_S_11 URL to\n  have same functionality as using soap_server() function call.\n  \n\n\nExample Operation\n\n  Makes a SOAP client request. The XML result is held in a stream.\n  Convert the stream using XSLT to HTML.\n  Send the HTML to the browser for display.\n\n\nInvoking the operation via VB.NET application\nThe following example demonstrates the usage of the Microsoft .NET against Virtuoso&#39;s SOAP service\nas defined in &#39;Server Setup&#39;:\n\n1. Open a new VB.NET project for Console Application.\n2. Add a web reference to the Virtuoso WSDL end point (http://[host:port]/SOAP_SO_S_11/services.wsdl).\n3. Drag and drop the VirtuosoSOAP() from Class wizard in routine code.\n\n    Sub Main()\n        Dim soap As New WebReference1.VirtuosoSOAP()\n        Dim result As String\n        Dim sty As New Xml.Xsl.XslTransform()\n\n        result = soap.administrative_divisions(&quot;United States&quot;, &quot;&quot;)\n\n        sty.Load(&quot;http://[host:port]/tutorial/services/so_s_11/sr.xsl&quot;)\n\n        Dim strReader As New IO.StringReader(result)\n        Dim xpDoc As New Xml.XPath.XPathDocument(strReader)\n        Dim arg As New Xml.Xsl.XsltArgumentList()\n        Dim strWriter As New IO.StringWriter()\n\n        sty.Transform(xpDoc.CreateNavigator(), arg, strWriter)\n        System.Console.WriteLine(strWriter.ToString)\n    End Sub\n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"SOAP & WSDL service" ;
	sioc:content	"\nExample overview\n\nThis example demonstrates usage of the WSDL_IMPORT_UDT() function.\nThe result from calling of the WSDL_IMPORT_UDT() is the creation of a \nUser Defined Type (UDT) which represents the SOAP service. Each method in the UDT\nrepresents an operation available from this SOAP service (proxy UDT).\n\nAfter successful retrieval of the WSDL, and UDT creation, the function\nreturns UDT definition as string.\n\n    The example also defines one test endpoint where it exposes the \n    imported UDTs are own methods. Therefore it's easy to test using \n    VSMX file for the demo endpoint. \n\n\n    To cleanup the endpoint, use 'Clear cache' button. This would \n    unpublish the SOAP proxy UDTs from the demo test endpoint.\n\n\n    To setup and run, the initial script must be loaded.\n\n" ;
	sioc:description	"Consuming Third-Party Services via WSDL URLs" ;
	sioc:has_container	ns2:services ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:01 GMT" ;
	content:encoded	"\nExample overview\n\nThis example demonstrates usage of the WSDL_IMPORT_UDT() function.\nThe result from calling of the WSDL_IMPORT_UDT() is the creation of a \nUser Defined Type (UDT) which represents the SOAP service. Each method in the UDT\nrepresents an operation available from this SOAP service (proxy UDT).\n\nAfter successful retrieval of the WSDL, and UDT creation, the function\nreturns UDT definition as string.\n\n    The example also defines one test endpoint where it exposes the \n    imported UDTs are own methods. Therefore it&#39;s easy to test using \n    VSMX file for the demo endpoint. \n\n\n    To cleanup the endpoint, use &#39;Clear cache&#39; button. This would \n    unpublish the SOAP proxy UDTs from the demo test endpoint.\n\n\n    To setup and run, the initial script must be loaded.\n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"SOAP & WSDL service" ;
	sioc:content	"\nExample\n\n  This example repeats the example SO-S-7, but all VSPs are hosted in WebDAV repository.\n  Important: make sure that EnabledDavVSP is set to 1 in the INI file, to allow VSP execution in WebDAV.\n  The example script loads all pages into the WebDAV, and sets their execution flags.\n  This example needs at least 2 HTTP server threads configured.\n\n" ;
	sioc:description	"Stock Quotes service hosted within Virtuoso's WebDAV repository" ;
	sioc:has_container	ns2:services ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:02 GMT" ;
	content:encoded	"\nExample\n\n  This example repeats the example SO-S-7, but all VSPs are hosted in WebDAV repository.\n  Important: make sure that EnabledDavVSP is set to 1 in the INI file, to allow VSP execution in WebDAV.\n  The example script loads all pages into the WebDAV, and sets their execution flags.\n  This example needs at least 2 HTTP server threads configured.\n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"SOAP & WSDL service" ;
	sioc:content	"\nExample\n\n  This example repeats the example SO-S-7, but all VSPs for the SOAP client are hosted in the WebDAV repository.\n  The SOAP & WSDL service are achieved by defining the /SOAP_SO_S_9 URL to have same functionality as using soap_server() and soap_wsdl() calls.\n  '/SOAP_SO_S_9' represents the so_s_8_server.vsp and /SOAP_SO_S_9/services.wsdl represents the so_s_8_wsdl.vsp\n  Important: make sure that EnabledDavVSP is set to 1 in the INI file, to allow VSP execution in WebDAV.\n  The example script loads all pages into the WebDAV, and sets their execution flags.\n\n" ;
	sioc:description	"Stock Quotes client execution from within Virtuoso's WebDAV Repository" ;
	sioc:has_container	ns2:services ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:02 GMT" ;
	content:encoded	"\nExample\n\n  This example repeats the example SO-S-7, but all VSPs for the SOAP client are hosted in the WebDAV repository.\n  The SOAP &amp; WSDL service are achieved by defining the /SOAP_SO_S_9 URL to have same functionality as using soap_server() and soap_wsdl() calls.\n  &#39;/SOAP_SO_S_9&#39; represents the so_s_8_server.vsp and /SOAP_SO_S_9/services.wsdl represents the so_s_8_wsdl.vsp\n  Important: make sure that EnabledDavVSP is set to 1 in the INI file, to allow VSP execution in WebDAV.\n  The example script loads all pages into the WebDAV, and sets their execution flags.\n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"WS-ReliableMessaging demo" ;
	sioc:content	"\n\tExample\n\t\n\t    The example below demonstrates configuring an endpoint for WS-Reliable Messaging\n\t    operations. It also contains a simple client for issuing a 'ping' request to an\n\t    endpoint which supports the WS-ReliableMessaging protocol.\n\t\n\t\n\t    Note:\n\t    To use the anonymous client, 'pingback URI' field in the send form should be empty.\n\t\n    " ;
	sioc:description	"WS-Reliable Messaging: Setting up a SOAP endpoint" ;
	sioc:has_container	ns2:services ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:01 GMT" ;
	content:encoded	"\n\tExample\n\t\n\t    The example below demonstrates configuring an endpoint for WS-Reliable Messaging\n\t    operations. It also contains a simple client for issuing a &#39;ping&#39; request to an\n\t    endpoint which supports the WS-ReliableMessaging protocol.\n\t\n\t\n\t    Note:\n\t    To use the anonymous client, &#39;pingback URI&#39; field in the send form should be empty.\n\t\n    \n " ;
	rdf:type	foaf:Document ;
	dc:title	"Making an SOAP router endpoint" ;
	sioc:content	"\nExample\n\nThis chapter describes general guide lines for using routing capabilities of the Virtuoso SOAP server.\n\n\nIn order to have the rest of examples of this section working, the following steps must be performed.\n\n\n If you are going to try .NET examples the MS WSDK toolkit must be installed on a W2K machine. The .NET examples are tested with 1.0.0.0 version of Microsoft.WSDK.dll, so make sure that version of that assembly is the same.\n Make sure that WS Routing examples of MS WSDK working before trying any of interoperability examples.\n From this page run the setup script (set the initial state), this will define the routing and ultimate endpoints. \n \n\n\nThe SOAP directory option we are using to setup a WS Routing (SOAP router) is:\n\n\n WS-RP - yes/no , this is to enable WS Routing filter\n \n\n\nThe VSP page is example how Virtuoso SOAP client can be used to invoke the sample services as AddInt or echoString.Form this page we can invoke these operations via different routers. Note that \"Operation to invoke\" option must be set properly depending of type of endpoint (see remarks on select page).\n\n\n\nThe .NET client example must be complied before trying it. To do this follow the steps:\n\n\nChange in the RoutingClient.cs and referalCache.config files <virtuoso:port> to host and port where your virtuoso HTTP server is listening.\ncompile the example issuing nmake command in the tutorial/services/rp_s_1 directory. On that step you may need to have .NET Visual Studio installed and .NET Framework SDK\nif you going to compile the client on an other box, make sure that referralCache.config file is in the same directory where is .exe file.\n \n\n" ;
	sioc:description	"Setting up a SOAP router endpoint" ;
	sioc:has_container	ns2:services ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:01 GMT" ;
	content:encoded	"\nExample\n\nThis chapter describes general guide lines for using routing capabilities of the Virtuoso SOAP server.\n\n\nIn order to have the rest of examples of this section working, the following steps must be performed.\n\n\n If you are going to try .NET examples the MS WSDK toolkit must be installed on a W2K machine. The .NET examples are tested with 1.0.0.0 version of Microsoft.WSDK.dll, so make sure that version of that assembly is the same.\n Make sure that WS Routing examples of MS WSDK working before trying any of interoperability examples.\n From this page run the setup script (set the initial state), this will define the routing and ultimate endpoints. \n \n\n\nThe SOAP directory option we are using to setup a WS Routing (SOAP router) is:\n\n\n WS-RP - yes/no , this is to enable WS Routing filter\n \n\n\nThe VSP page is example how Virtuoso SOAP client can be used to invoke the sample services as AddInt or echoString.Form this page we can invoke these operations via different routers. Note that &quot;Operation to invoke&quot; option must be set properly depending of type of endpoint (see remarks on select page).\n\n\n\nThe .NET client example must be complied before trying it. To do this follow the steps:\n\n\nChange in the RoutingClient.cs and referalCache.config files &lt;virtuoso:port&gt; to host and port where your virtuoso HTTP server is listening.\ncompile the example issuing nmake command in the tutorial/services/rp_s_1 directory. On that step you may need to have .NET Visual Studio installed and .NET Framework SDK\nif you going to compile the client on an other box, make sure that referralCache.config file is in the same directory where is .exe file.\n \n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"Manipulating of message path on a WS-Routing enabled endpoints" ;
	sioc:content	"\nExample\n\nIn order to try the following example you need first to setup the RP-S-1 as it uses the endpoints defined there. Also this example needs at least 3 HTTP threads configured in order to work properly.\n\n\n\nThe VSP page demonstrates how routing path can be manipulated on a SOAP routers using the WS-Referral statements.\n\n\nThe example show inserting an intermediary router in routing path\nQuerying a router for already registered intermediary\nExecution of a single call to an endpoint\nTraveling of the message between client and endpoint via first and second router (added on step 1)\nRemoval of a registered intermediary\nIf step 1 is invoked twice sequentially an duplicates error will be shown\nIf step 3 is invoked before step 1 or after step 5, an error for missing intermediary from routing path is shown\n\nNote: To determinate message routing path, see at content of 'rev' element in response message header when invoking the echoString operation.\n\n" ;
	sioc:description	"Routing path manipulation" ;
	sioc:has_container	ns2:services ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:01 GMT" ;
	content:encoded	"\nExample\n\nIn order to try the following example you need first to setup the RP-S-1 as it uses the endpoints defined there. Also this example needs at least 3 HTTP threads configured in order to work properly.\n\n\n\nThe VSP page demonstrates how routing path can be manipulated on a SOAP routers using the WS-Referral statements.\n\n\nThe example show inserting an intermediary router in routing path\nQuerying a router for already registered intermediary\nExecution of a single call to an endpoint\nTraveling of the message between client and endpoint via first and second router (added on step 1)\nRemoval of a registered intermediary\nIf step 1 is invoked twice sequentially an duplicates error will be shown\nIf step 3 is invoked before step 1 or after step 5, an error for missing intermediary from routing path is shown\n\nNote: To determinate message routing path, see at content of &#39;rev&#39; element in response message header when invoking the echoString operation.\n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"SOAP & WSDL service" ;
	sioc:content	"\nExample\n\n  This example repeats the example SO-S-7,\n  however client is using AJAX.\n  The AJAX based client retrieves the XML data from Virtuoso SOAP service, and makes a client\n  side XSL-T transformation. \n  \n\n" ;
	sioc:description	"Stock Quotes Service incorporating AJAX" ;
	sioc:has_container	ns2:web2 ,
		ns2:services ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:01 GMT" ;
	content:encoded	"\nExample\n\n  This example repeats the example SO-S-7,\n  however client is using AJAX.\n  The AJAX based client retrieves the XML data from Virtuoso SOAP service, and makes a client\n  side XSL-T transformation. \n  \n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"SOAP & WSDL service" ;
	sioc:content	"\nExample\n\n  This example repeats the SO-S-11,\n  however client is using AJAX.\n  Note: The tables and procedures are used from SO-S-11 example, so run SO-S-11 first.\n  The SOAP & WSDL service are achieved by defining the /SOAP_SO_S_11 URL to have same functionality as using soap_server() and soap_wsdl() calls.\n\n" ;
	sioc:description	"Global provinces and administrative divisions lookup service incorporating AJAX" ;
	sioc:has_container	ns2:services ,
		ns2:web2 ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:01 GMT" ;
	content:encoded	"\nExample\n\n  This example repeats the SO-S-11,\n  however client is using AJAX.\n  Note: The tables and procedures are used from SO-S-11 example, so run SO-S-11 first.\n  The SOAP &amp; WSDL service are achieved by defining the /SOAP_SO_S_11 URL to have same functionality as using soap_server() and soap_wsdl() calls.\n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"SOAP & WSDL" ;
	sioc:content	"\nExchange Rate Conversion Example\n\n  \n  This example is an exchange calculator in two versions: based on VSP\n  and soap_call() and another AJAX version based on WebService Behaviour.\n  A virtual directory is configured to respond to SOAP service requests,\n  which are handled in the context of the assigned SQL user.\n  \n  \n  \n  The example defines the following service descriptions and links:\n  \n   \n  \n  \n  A SOAP directory of 'exchange' for describing exch's procedures. The\n  WSDL file will be located at\n  http://hostname:[port]/exchange/services.wsdl\n  \n  \n  \n  The server-based webservices file is exchange_rates.vsp, while the AJAX\n  one is exchange_rates_ajax.html. Click on the 'Run' links to experience the demo.\n  \n   \n  \n\n  \n  Note: loading the exchange.sql file will take some time, as it\n  accesses a foreign host.\n  \n\n \n" ;
	sioc:description	"Exchange Rate Conversion service" ;
	sioc:has_container	ns2:web2 ,
		ns2:services ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:01 GMT" ;
	content:encoded	"\nExchange Rate Conversion Example\n\n  \n  This example is an exchange calculator in two versions: based on VSP\n  and soap_call() and another AJAX version based on WebService Behaviour.\n  A virtual directory is configured to respond to SOAP service requests,\n  which are handled in the context of the assigned SQL user.\n  \n  \n  \n  The example defines the following service descriptions and links:\n  \n   \n  \n  \n  A SOAP directory of &#39;exchange&#39; for describing exch&#39;s procedures. The\n  WSDL file will be located at\n  http://hostname:[port]/exchange/services.wsdl\n  \n  \n  \n  The server-based webservices file is exchange_rates.vsp, while the AJAX\n  one is exchange_rates_ajax.html. Click on the &#39;Run&#39; links to experience the demo.\n  \n   \n  \n\n  \n  Note: loading the exchange.sql file will take some time, as it\n  accesses a foreign host.\n  \n\n \n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"SOAP & WSDL service" ;
	sioc:content	"\nExample overview\nThis example demonstrates:\n\n  \n  Fetching a two-dimensional array from a SOAP service to populate a provinces list box.\n  \n  \n  The clients in this case is using AJAX.\n  \n\n\nExample\n\n  This example uses the SO-S-11 for initial setup,\n  and demonstrates making a simple registration form.\n  Note: The tables and procedures are used from SO-S-11 example, so run SO-S-11 first.\n  The SOAP & WSDL service are achieved by defining the /SOAP_SO_S_11 URL to have same functionality as using soap_server() and soap_wsdl() calls.\n\n" ;
	sioc:description	"Web Registration form exploiting global provinces and administrative divisions lookup service" ;
	sioc:has_container	ns2:services ,
		ns2:web2 ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:01 GMT" ;
	content:encoded	"\nExample overview\nThis example demonstrates:\n\n  \n  Fetching a two-dimensional array from a SOAP service to populate a provinces list box.\n  \n  \n  The clients in this case is using AJAX.\n  \n\n\nExample\n\n  This example uses the SO-S-11 for initial setup,\n  and demonstrates making a simple registration form.\n  Note: The tables and procedures are used from SO-S-11 example, so run SO-S-11 first.\n  The SOAP &amp; WSDL service are achieved by defining the /SOAP_SO_S_11 URL to have same functionality as using soap_server() and soap_wsdl() calls.\n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"SOAP services" ;
	sioc:content	"\n\nExample overview\nThis example demonstrates:\n\n  \n  Fetching HTML from a foreign host as specified by the user.\n  \n  \n  Rendering the page with regexp_match() to extract the contacts information.\n  For example, it take information from sequences like:\n  \"quoted text\" said John Smith, Manager at A Company.\n  \n  \n  \n  Making a Web search with the company name to find the domain.\n  \n  \n  Making an email address from contact name, and domain name.\n  \n  A SOAP call.\n  \n  Processing the 4 dimensional array in the\n  AJAX based client.\n  \n  \n  XSL transformation.\n  \n\n\nExample Setup\nThe service is prepared by loading the SQL file.\nThis performs the following:\n\n  \n  Define a SOAP type for 4 dimensional array.\n  \n  \n  Define a stored procedure for the SOAP service that queries, web target and makes the contact info.\n  \n  The SOAP service is achieved by defining the /SOAP_SO_S_19 URL to\n  have same functionality as using soap_server() function call.\n  \n\n\nExample Operation\n\n  Get a page from the URL.\n  Substitute characters \" as 0x94 etc.\n  Remove <i>, <b>, <strong> elements.\n  Take out CR/LF.\n  Make breaks before <P and <H elements.\n  Parse the page to have consistent escapes such as &quote; .\n  If the above fails then achieve the same with substitutions.\n  Have a function to return a regular expression(s) by given level\n  of recursion.\n  Have a recursive function which gets a regular expression based on\n  depth and apply it against the text.\n  If match found skip rest of pattern matching.\n  If not, apply the next pattern.\n  When contact matches name, title and company, the item will\n  be added to a result array.\n  Company of the result will be searched via Google to find\n  'home page' or 'welcome'.\n  The top most result link from Google will be parsed to extract\n  the name of the site ie. domain name part.\n  The email will be composed as FirtsName.LastName@domain .\n  A multidimensional array will be produced containing the name,\n  company, title and email.\n  Loop over the resulting array, and make an XML document.\n  Render the XML to the HTML using XSL-T sheet.\n\n\n\nInvoking the operation via VB.NET application\nThe following example demonstrates the usage of the Microsoft .NET against Virtuoso's SOAP service\nas defined in 'Server Setup':\n\n1. Open a new VB.NET project for Console Application.\n2. Add a web reference to the Virtuoso WSDL end point (http://[host:port]/SOAP_SO_S_19/services.wsdl).\n3. Drag and drop the VirtuosoSOAP() from Class wizard in routine code.\n\n    Sub Main()\n        Dim soap As New WebReference1.VirtuosoSOAP()\n        Dim result As String()\n        Dim len, i As Integer\n\n        result = soap.ExContacts(\"http://www.openlinksw.com/press/oplappl4.htm\")\n\n        len = result.Length - 1\n        For i = 0 To len Step 5\n            System.Console.WriteLine(\"Name: \" + result(i))\n            System.Console.WriteLine(\"Title: \" + result(i + 1))\n            System.Console.WriteLine(\"Company: \" + result(i + 2))\n            System.Console.WriteLine(\"Email: \" + result(i + 3))\n            System.Console.WriteLine(\"Home page: \" + result(i + 4))\n            System.Console.WriteLine(\"\")\n        Next i\n    End Sub\n\n" ;
	sioc:description	"Contact Details Extraction Service" ;
	sioc:has_container	ns2:web2 ,
		ns2:services ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:01 GMT" ;
	content:encoded	"\n\nExample overview\nThis example demonstrates:\n\n  \n  Fetching HTML from a foreign host as specified by the user.\n  \n  \n  Rendering the page with regexp_match() to extract the contacts information.\n  For example, it take information from sequences like:\n  &quot;quoted text&quot; said John Smith, Manager at A Company.\n  \n  \n  \n  Making a Web search with the company name to find the domain.\n  \n  \n  Making an email address from contact name, and domain name.\n  \n  A SOAP call.\n  \n  Processing the 4 dimensional array in the\n  AJAX based client.\n  \n  \n  XSL transformation.\n  \n\n\nExample Setup\nThe service is prepared by loading the SQL file.\nThis performs the following:\n\n  \n  Define a SOAP type for 4 dimensional array.\n  \n  \n  Define a stored procedure for the SOAP service that queries, web target and makes the contact info.\n  \n  The SOAP service is achieved by defining the /SOAP_SO_S_19 URL to\n  have same functionality as using soap_server() function call.\n  \n\n\nExample Operation\n\n  Get a page from the URL.\n  Substitute characters &quot; as 0x94 etc.\n  Remove &lt;i&gt;, &lt;b&gt;, &lt;strong&gt; elements.\n  Take out CR/LF.\n  Make breaks before &lt;P and &lt;H elements.\n  Parse the page to have consistent escapes such as &amp;quote; .\n  If the above fails then achieve the same with substitutions.\n  Have a function to return a regular expression(s) by given level\n  of recursion.\n  Have a recursive function which gets a regular expression based on\n  depth and apply it against the text.\n  If match found skip rest of pattern matching.\n  If not, apply the next pattern.\n  When contact matches name, title and company, the item will\n  be added to a result array.\n  Company of the result will be searched via Google to find\n  &#39;home page&#39; or &#39;welcome&#39;.\n  The top most result link from Google will be parsed to extract\n  the name of the site ie. domain name part.\n  The email will be composed as FirtsName.LastName@domain .\n  A multidimensional array will be produced containing the name,\n  company, title and email.\n  Loop over the resulting array, and make an XML document.\n  Render the XML to the HTML using XSL-T sheet.\n\n\n\nInvoking the operation via VB.NET application\nThe following example demonstrates the usage of the Microsoft .NET against Virtuoso&#39;s SOAP service\nas defined in &#39;Server Setup&#39;:\n\n1. Open a new VB.NET project for Console Application.\n2. Add a web reference to the Virtuoso WSDL end point (http://[host:port]/SOAP_SO_S_19/services.wsdl).\n3. Drag and drop the VirtuosoSOAP() from Class wizard in routine code.\n\n    Sub Main()\n        Dim soap As New WebReference1.VirtuosoSOAP()\n        Dim result As String()\n        Dim len, i As Integer\n\n        result = soap.ExContacts(&quot;http://www.openlinksw.com/press/oplappl4.htm&quot;)\n\n        len = result.Length - 1\n        For i = 0 To len Step 5\n            System.Console.WriteLine(&quot;Name: &quot; + result(i))\n            System.Console.WriteLine(&quot;Title: &quot; + result(i + 1))\n            System.Console.WriteLine(&quot;Company: &quot; + result(i + 2))\n            System.Console.WriteLine(&quot;Email: &quot; + result(i + 3))\n            System.Console.WriteLine(&quot;Home page: &quot; + result(i + 4))\n            System.Console.WriteLine(&quot;&quot;)\n        Next i\n    End Sub\n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"Secure SOAP service" ;
	sioc:content	"\nExample\n\n  This example repeats the example SO-S-7, but SOAP call is executed over SSL.\n  The SOAP & WSDL service are achieved by defining the /SOAP URL\n  to have same functionality as using soap_server() and soap_wsdl() calls.\n  '/SOAP' represents the so_s_7_server.vsp and /SOAP/services.wsdl\n  represents the so_s_7_wsdl.vsp\n  Make sure that files containing server and client\n  certificate/key data are exists in the server working directory. The\n  following files are required for the example:\n  \n    srv.cert.pem - server certificate \n    srv.key.pem - server private key \n    ca.pem - CA list \n    cli.p12 - client certificate and private key in PKCS#12 format \n  \n  \n  The example script defines and starts a HTTPS server on port 4433.\n\n" ;
	sioc:description	"Secure SOAP Service invocation over SSL" ;
	sioc:has_container	ns2:services ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:01 GMT" ;
	content:encoded	"\nExample\n\n  This example repeats the example SO-S-7, but SOAP call is executed over SSL.\n  The SOAP &amp; WSDL service are achieved by defining the /SOAP URL\n  to have same functionality as using soap_server() and soap_wsdl() calls.\n  &#39;/SOAP&#39; represents the so_s_7_server.vsp and /SOAP/services.wsdl\n  represents the so_s_7_wsdl.vsp\n  Make sure that files containing server and client\n  certificate/key data are exists in the server working directory. The\n  following files are required for the example:\n  \n    srv.cert.pem - server certificate \n    srv.key.pem - server private key \n    ca.pem - CA list \n    cli.p12 - client certificate and private key in PKCS#12 format \n  \n  \n  The example script defines and starts a HTTPS server on port 4433.\n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"Making an Secure SOAP Directory" ;
	sioc:content	"\nExample\n\nIn order to have the rest of examples of this section working, the following steps must be performed.\n\n\n The MS WSDK toolkit must be installed on a W2K mashine. The .NET examples are tested with 1.0.0.0 version of Microsoft.WSDK.dll, so make sure that version of that assembly is the same.\n Make sure that WS Secure examples of MS WSDK are working before trying any of interoperabilty examples.\n From this page run setup script (set the initial state), this will define symmetric keys, there is also included a x.509 import, but it's only for demonstration. \nTo make your WSDK applications to work with Virtuoso you need to export from W2K box the certificate and import with registration page on this example.\nThe setup script also defines a SOAP secure directory (/SecureWebServices) which is used in the rest of the examples.\n\n\n\nThe SOAP directory options we are using to secure the messages are:\n\n\n WSS-SEC - yes/no , this is to enable WS secure processing\n WSS-KEY - name of procedure , which will return a key instance to encrypt the outbound messages\n WSS-Template - string or null, content of signature template, in that examples we will not make signatures on outbound messages. How to make signatures is explained in the x.509 siging example.\n WSS-Type - 1/0 to make signature or to encrypt only\n WSS-Validate-Signature - 0/1/2 - do not validate, validate signature, validate if exists\n in our examples we will accept both of variants, so 2 is used.\n\n\n" ;
	sioc:description	"Exposing Secure SOAP Endpoints" ;
	sioc:has_container	ns2:services ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:02 GMT" ;
	content:encoded	"\nExample\n\nIn order to have the rest of examples of this section working, the following steps must be performed.\n\n\n The MS WSDK toolkit must be installed on a W2K mashine. The .NET examples are tested with 1.0.0.0 version of Microsoft.WSDK.dll, so make sure that version of that assembly is the same.\n Make sure that WS Secure examples of MS WSDK are working before trying any of interoperabilty examples.\n From this page run setup script (set the initial state), this will define symmetric keys, there is also included a x.509 import, but it&#39;s only for demonstration. \nTo make your WSDK applications to work with Virtuoso you need to export from W2K box the certificate and import with registration page on this example.\nThe setup script also defines a SOAP secure directory (/SecureWebServices) which is used in the rest of the examples.\n\n\n\nThe SOAP directory options we are using to secure the messages are:\n\n\n WSS-SEC - yes/no , this is to enable WS secure processing\n WSS-KEY - name of procedure , which will return a key instance to encrypt the outbound messages\n WSS-Template - string or null, content of signature template, in that examples we will not make signatures on outbound messages. How to make signatures is explained in the x.509 siging example.\n WSS-Type - 1/0 to make signature or to encrypt only\n WSS-Validate-Signature - 0/1/2 - do not validate, validate signature, validate if exists\n in our examples we will accept both of variants, so 2 is used.\n\n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"Symmetric Encryption" ;
	sioc:content	"\nExample\n\nThis section describes how to make secure web services call, using a symmetric key encryption.\nThe algorithm used for these examples is tripple-des.\n\n\nBoth server and client have a shared secret, which is used to encryt and decrypt the SOAP message.\nIn practice the key is transfered by some secure way between client and server, as if it's captured the all traffic between server and client can be compromised.\nVirtuoso keeps keys internally and can be instantiated with xenc_key_instance_create ().\nIn this example we are using a key 'WSDK Sample Symmetric Key', imported from WSDK.NET SymmetricEncryption example. This is to have the same key in all places: .NET server and client, Virtuoso server and client.\nAnother posibillity is to generate the key on Virtuoso side with xenc_key_3DES_rand_create() and export to the .NET client and server configuration. To export the 3DES key can be used xenc_key_serialize () function. \n\n\n\nThe Virtuoso VSP based clients demonstrate\n\n\n accessing Virtuoso Web Service with Virtuoso client\n accessing .NET Web service with Virtuoso client\n\n\n\nTo run .NET client against Virtuoso service you need:\n\n\nThis example works with MS WSDK; MS WSE 2.0 obsolete the data encryption directly a key data.\nto change <virtuoso:port> to host and port where your virtuoso HTTP server is listening.\ncompile the example issuing nmake command in the tutorial/services/ws_s_2 directory.\nif you going to compile the client on an other box, make sure that .config file is in the same directory where is .exe file.\n\n\n" ;
	sioc:description	"Secure SOAP Client using Symmetric Encryption (3DES)" ;
	sioc:has_container	ns2:services ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:02 GMT" ;
	content:encoded	"\nExample\n\nThis section describes how to make secure web services call, using a symmetric key encryption.\nThe algorithm used for these examples is tripple-des.\n\n\nBoth server and client have a shared secret, which is used to encryt and decrypt the SOAP message.\nIn practice the key is transfered by some secure way between client and server, as if it&#39;s captured the all traffic between server and client can be compromised.\nVirtuoso keeps keys internally and can be instantiated with xenc_key_instance_create ().\nIn this example we are using a key &#39;WSDK Sample Symmetric Key&#39;, imported from WSDK.NET SymmetricEncryption example. This is to have the same key in all places: .NET server and client, Virtuoso server and client.\nAnother posibillity is to generate the key on Virtuoso side with xenc_key_3DES_rand_create() and export to the .NET client and server configuration. To export the 3DES key can be used xenc_key_serialize () function. \n\n\n\nThe Virtuoso VSP based clients demonstrate\n\n\n accessing Virtuoso Web Service with Virtuoso client\n accessing .NET Web service with Virtuoso client\n\n\n\nTo run .NET client against Virtuoso service you need:\n\n\nThis example works with MS WSDK; MS WSE 2.0 obsolete the data encryption directly a key data.\nto change &lt;virtuoso:port&gt; to host and port where your virtuoso HTTP server is listening.\ncompile the example issuing nmake command in the tutorial/services/ws_s_2 directory.\nif you going to compile the client on an other box, make sure that .config file is in the same directory where is .exe file.\n\n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"Asymmetric Encryption" ;
	sioc:content	"\nExample\n\nThis section demonstrates how to make encrypted SOAP message using\nasymmetric algorithm (RSA).\n\n\nThese examples are using a X.509 certificate to define the RSA key for encruption.\nTo encrypt the message client uses public key of server's certificate, so only server know private key and can decrypt the message. \nIn practice message itself is encrypted with 3DES algorthm using a random session key. \nThe session key itself is encrypted with public part of RSA key. \nSo the server first decode the session key, and then decrypt the message.\n\n\n\nThe Virtuoso VSP based clients demonstrate\n\n\n accessing Virtuoso Web Service with Virtuoso client using asymmetric algorithm\n accessing .NET Web service with Virtuoso client using asymmetric algorithm\n\n\n\nTo run .NET client against Virtuoso service you need:\n\n\nMicrosoft WSE 2.0 installed\nEdit the Makefile and specify in CSLIBFLAGS where Microsoft.Web.Services.DLL reside.\ncompile the example issuing nmake command in the tutorial/services/ws_s_3 directory.\nif you going to compile the client on an other box, make sure that .config file is in the same directory where is .exe file.\n\n\n" ;
	sioc:description	"Secure SOAP Client using RSA Encryption" ;
	sioc:has_container	ns2:services ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:02 GMT" ;
	content:encoded	"\nExample\n\nThis section demonstrates how to make encrypted SOAP message using\nasymmetric algorithm (RSA).\n\n\nThese examples are using a X.509 certificate to define the RSA key for encruption.\nTo encrypt the message client uses public key of server&#39;s certificate, so only server know private key and can decrypt the message. \nIn practice message itself is encrypted with 3DES algorthm using a random session key. \nThe session key itself is encrypted with public part of RSA key. \nSo the server first decode the session key, and then decrypt the message.\n\n\n\nThe Virtuoso VSP based clients demonstrate\n\n\n accessing Virtuoso Web Service with Virtuoso client using asymmetric algorithm\n accessing .NET Web service with Virtuoso client using asymmetric algorithm\n\n\n\nTo run .NET client against Virtuoso service you need:\n\n\nMicrosoft WSE 2.0 installed\nEdit the Makefile and specify in CSLIBFLAGS where Microsoft.Web.Services.DLL reside.\ncompile the example issuing nmake command in the tutorial/services/ws_s_3 directory.\nif you going to compile the client on an other box, make sure that .config file is in the same directory where is .exe file.\n\n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"X.509 Signing" ;
	sioc:content	"\nExample\n\nThis chapter demonstrates how to make signed SOAP message.\nThe signed message contains certificate (only) in the Security header.\nIn that example no encrypted data is sent, but in practice the both approaches can be combined.\nThe server checks signature against this certificate and ensures it's validity.\n\n\n\nTo run .NET client using X.509 certificate signed message, against Virtuoso service you need:\n\n\nMicrosoft WSE 2.0 installed\nEdit the Makefile and specify in CSLIBFLAGS where Microsoft.Web.Services.DLL reside.\ncompile the example issuing nmake command in the tutorial/services/ws_s_4 directory.\n\n\n" ;
	sioc:description	"Secure SOAP Client using X.509 certificate for signing" ;
	sioc:has_container	ns2:services ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:02 GMT" ;
	content:encoded	"\nExample\n\nThis chapter demonstrates how to make signed SOAP message.\nThe signed message contains certificate (only) in the Security header.\nIn that example no encrypted data is sent, but in practice the both approaches can be combined.\nThe server checks signature against this certificate and ensures it&#39;s validity.\n\n\n\nTo run .NET client using X.509 certificate signed message, against Virtuoso service you need:\n\n\nMicrosoft WSE 2.0 installed\nEdit the Makefile and specify in CSLIBFLAGS where Microsoft.Web.Services.DLL reside.\ncompile the example issuing nmake command in the tutorial/services/ws_s_4 directory.\n\n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"Username Signing" ;
	sioc:content	"\nExample\n\nThis example demonstrates how to make signed SOAP message.\nThe signed message contains Username and password in the Security header.\nIn that example no encrypted data is sent.\nThe server checks credentials against database users and ensures it's validity.\n\n\n\n    To run .NET client using Username signed message, against Virtuoso service you need:\n\n\nMicrosoft WSE 2.0 installed\nEdit the Makefile and specify in CSLIBFLAGS where Microsoft.Web.Services.DLL resides.\ncompile the example issuing nmake command in the tutorial/services/ws_s_4a directory.\n\n\n" ;
	sioc:description	"Secure SOAP Client using Username and Password for signing" ;
	sioc:has_container	ns2:services ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:02 GMT" ;
	content:encoded	"\nExample\n\nThis example demonstrates how to make signed SOAP message.\nThe signed message contains Username and password in the Security header.\nIn that example no encrypted data is sent.\nThe server checks credentials against database users and ensures it&#39;s validity.\n\n\n\n    To run .NET client using Username signed message, against Virtuoso service you need:\n\n\nMicrosoft WSE 2.0 installed\nEdit the Makefile and specify in CSLIBFLAGS where Microsoft.Web.Services.DLL resides.\ncompile the example issuing nmake command in the tutorial/services/ws_s_4a directory.\n\n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"Using a Secure SOAP Services" ;
	sioc:content	"\n\tPreliminaries\n\t\n\t    The WS Trust protocol is a SOAP based\n\t    secure service and client that can be used\n\t    to retrieve a security token (X.509 certificate or similar)\n\t    in order to be used for making secure operation with an\n\t    ultimate service in the client's operation.\n\t\n\t\n\t    In common scenario the client asks Token Issuer\n\t    for a security token. Then client uses token from\n\t    WS Trust response to perform second remote call\n\t    signed and/or encrypted to another service which\n\t    is a ultimate target service.\n\t    Usually Token Issuer, Client and Ultimate service are\n\t    located on different physical locations.\n\t\n    \n\tExample\n\t\n\t    Before running this demo make sure that WS-S-1 tutorial\n\t    is set-up and a valid X.509 certificate and corresponding private key\n\t    are imported (for server and client usage) via WS-S-1 example certificate\n\t    upload utility.\n\t\n\t\n\t    This example uses WS Trust client to\n\t    obtain X.509 security token from a Token Issuer service\n\t    and then it uses to make signed request to\n\t    dummy Weblog service. In real situation the Weblog service\n\t    instead of echoing a random URL would create an entry in the\n\t    user's blog.\n\t    Note that in that demo all operations are performed in context\n\t    of a same server (i.e. Token Issuer, Weblog service and client are\n\t    running on one Virtuoso server instance).\n\t\n\t\n\t    The following are demo's main points.\n\t\n\t\n\t    Client uses a Username and password to digitally sign the\n\t\trequest from Token Issuer.\n\t    Token Issuer will check the signature and user credentials\n\t\tand then will issue security token to the client\n\t    The Token Issuer service uses a PL hook\n\t\tto return appropriate X.509 token\n\t    Client uses the returned token (from Token Issuer service) to\n\t\tmatch it against local key storage and to digitally sign the\n\t\tsecond request (to the Weblog service)\n\t    The Weblog service will just verify the signature\n\t\tand will return an echo of the client's request plus\n\t\tan random URL string and post id. (In the real world such service should add data into a Database keeping the blog posts)\n\t    The Weblog service will digitally sign the response before\n\t\tsending it to client.\n\t    To see request/response messages from/to Token Issuer or Web service\n\t      use the radio group buttons.\n      \n      \n\t  Note: In this example Token Issuer, Weblog service and client uses same X.509\n\t  certificate.\n      \n    " ;
	sioc:description	"Exposing WS Trust SOAP Endpoints" ;
	sioc:has_container	ns2:services ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:02 GMT" ;
	content:encoded	"\n\tPreliminaries\n\t\n\t    The WS Trust protocol is a SOAP based\n\t    secure service and client that can be used\n\t    to retrieve a security token (X.509 certificate or similar)\n\t    in order to be used for making secure operation with an\n\t    ultimate service in the client&#39;s operation.\n\t\n\t\n\t    In common scenario the client asks Token Issuer\n\t    for a security token. Then client uses token from\n\t    WS Trust response to perform second remote call\n\t    signed and/or encrypted to another service which\n\t    is a ultimate target service.\n\t    Usually Token Issuer, Client and Ultimate service are\n\t    located on different physical locations.\n\t\n    \n\tExample\n\t\n\t    Before running this demo make sure that WS-S-1 tutorial\n\t    is set-up and a valid X.509 certificate and corresponding private key\n\t    are imported (for server and client usage) via WS-S-1 example certificate\n\t    upload utility.\n\t\n\t\n\t    This example uses WS Trust client to\n\t    obtain X.509 security token from a Token Issuer service\n\t    and then it uses to make signed request to\n\t    dummy Weblog service. In real situation the Weblog service\n\t    instead of echoing a random URL would create an entry in the\n\t    user&#39;s blog.\n\t    Note that in that demo all operations are performed in context\n\t    of a same server (i.e. Token Issuer, Weblog service and client are\n\t    running on one Virtuoso server instance).\n\t\n\t\n\t    The following are demo&#39;s main points.\n\t\n\t\n\t    Client uses a Username and password to digitally sign the\n\t\trequest from Token Issuer.\n\t    Token Issuer will check the signature and user credentials\n\t\tand then will issue security token to the client\n\t    The Token Issuer service uses a PL hook\n\t\tto return appropriate X.509 token\n\t    Client uses the returned token (from Token Issuer service) to\n\t\tmatch it against local key storage and to digitally sign the\n\t\tsecond request (to the Weblog service)\n\t    The Weblog service will just verify the signature\n\t\tand will return an echo of the client&#39;s request plus\n\t\tan random URL string and post id. (In the real world such service should add data into a Database keeping the blog posts)\n\t    The Weblog service will digitally sign the response before\n\t\tsending it to client.\n\t    To see request/response messages from/to Token Issuer or Web service\n\t      use the radio group buttons.\n      \n      \n\t  Note: In this example Token Issuer, Weblog service and client uses same X.509\n\t  certificate.\n      \n    \n " ;
	rdf:type	foaf:Document ;
	dc:title	"Add entity to UDDI" ;
	sioc:content	"\nExample\n\n    The example shows automatic convert demo..Suppliers to save_business UDDI query.\n    Use UD-S-2 to see the result.\n\n" ;
	sioc:description	"Business Contact Registration in Virtuoso hosted UDDI registry" ;
	sioc:has_container	ns2:services ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:02 GMT" ;
	content:encoded	"\nExample\n\n    The example shows automatic convert demo..Suppliers to save_business UDDI query.\n    Use UD-S-2 to see the result.\n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"Display entry from UDDI server" ;
	sioc:content	"\nExample\n\n    Setup a URL to a UDDI server\n\tDefine a Name pattern (begin with)\n\tView the UDDI request\n\tGet the data from the server\n\n" ;
	sioc:description	"Querying Virtuoso hosted UDDI registry" ;
	sioc:has_container	ns2:services ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:02 GMT" ;
	content:encoded	"\nExample\n\n    Setup a URL to a UDDI server\n\tDefine a Name pattern (begin with)\n\tView the UDDI request\n\tGet the data from the server\n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"Web services registration" ;
	sioc:content	"\nPreliminaries\n\n  The UDDI provides a flexible way to register any kind of\n  service.\n  The services in particular can be SOAP or WSDL web\n  services.\n\n\nSOAP and WSDL registration example\n\n  This example makes a business record, and will define a service for it.\n  The services can be provided by an organization (business).\n  Without a defined provider service, it cannot be registered separately.\n  Because there is no tModel for the service, one is provided\n  for SOAP classification (tm.xml).\n  Next step is to create a business description.(be.xml)\n  Then create a service description (bs.xml).\n  Then there is a binding (bnd.xml) of the service and business.\n  This binding has two templates:\n  \n    SOAP template for information via Web page\n    WSDL template for WSDL description of that service\n  \n  The example shows step by step for each template.\n\n" ;
	sioc:description	"Step by step registration of SOAP services in Virtuoso hosted registry" ;
	sioc:has_container	ns2:services ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:02 GMT" ;
	content:encoded	"\nPreliminaries\n\n  The UDDI provides a flexible way to register any kind of\n  service.\n  The services in particular can be SOAP or WSDL web\n  services.\n\n\nSOAP and WSDL registration example\n\n  This example makes a business record, and will define a service for it.\n  The services can be provided by an organization (business).\n  Without a defined provider service, it cannot be registered separately.\n  Because there is no tModel for the service, one is provided\n  for SOAP classification (tm.xml).\n  Next step is to create a business description.(be.xml)\n  Then create a service description (bs.xml).\n  Then there is a binding (bnd.xml) of the service and business.\n  This binding has two templates:\n  \n    SOAP template for information via Web page\n    WSDL template for WSDL description of that service\n  \n  The example shows step by step for each template.\n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"HTML-to-Wireless" ;
	sioc:content	"\nPreliminaries\nTraditional HTML-based web pages are not intended for wireless viewing.\nHowever, with a little Virtuoso server-side scripting, you can turn any\nWAP-based wireless phone into a full HTML web browser!\n\nRunning the Demo on a WAP device\nTo access this application via WAP/WML, enter the following URL\ninto a WAP-enabled wireless device:\nhttp://<hostname>/tutorial/apps/wa_b_1/html2wml.vsp\n\n\nRunning the Demo on a WAP emulator\n\nTo simulate viewing the output on a wireless device. Run the\nRunHtml2wml.html file.\nThen choose a web-based emulator from one below:\n\n\n  Wap.com -\n  This is the most accurate Java and web based emulator, almost to the point\n  of the definitive WAP SDK emulators from Openwave. However, its performance\n  is not always optimal.\n  \n\n  Wapsilon.com -\n  This is a reasonably accurate emulator, but the user interface handling is\n  not quite the same as a real WAP phone.\n  \n\n  Wapmore.com -\n  This is a PDA style emulator. Although its interface is a bit quirky, the\n  performance is reasonable.\n  \n\n  Gelon.net -\n  This is probably the fastest web-based WAP emulator; however, it sometimes\n  exhibits problems displaying WML forms.\n  \n\n  Download WAP SDK -\n  Our recommended option, this standard WAP SDK for emulators from\n  Openwave.com\n  (formerly Phone.com).\n  \n\n\n" ;
	sioc:description	"HTML-to-Wireless Tranformation" ;
	sioc:has_container	ns2:wap ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:02 GMT" ;
	content:encoded	"\nPreliminaries\nTraditional HTML-based web pages are not intended for wireless viewing.\nHowever, with a little Virtuoso server-side scripting, you can turn any\nWAP-based wireless phone into a full HTML web browser!\n\nRunning the Demo on a WAP device\nTo access this application via WAP/WML, enter the following URL\ninto a WAP-enabled wireless device:\nhttp://&lt;hostname&gt;/tutorial/apps/wa_b_1/html2wml.vsp\n\n\nRunning the Demo on a WAP emulator\n\nTo simulate viewing the output on a wireless device. Run the\nRunHtml2wml.html file.\nThen choose a web-based emulator from one below:\n\n\n  Wap.com -\n  This is the most accurate Java and web based emulator, almost to the point\n  of the definitive WAP SDK emulators from Openwave. However, its performance\n  is not always optimal.\n  \n\n  Wapsilon.com -\n  This is a reasonably accurate emulator, but the user interface handling is\n  not quite the same as a real WAP phone.\n  \n\n  Wapmore.com -\n  This is a PDA style emulator. Although its interface is a bit quirky, the\n  performance is reasonable.\n  \n\n  Gelon.net -\n  This is probably the fastest web-based WAP emulator; however, it sometimes\n  exhibits problems displaying WML forms.\n  \n\n  Download WAP SDK -\n  Our recommended option, this standard WAP SDK for emulators from\n  Openwave.com\n  (formerly Phone.com).\n  \n\n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"WAP Phone Emulator" ;
	sioc:content	"\nPreliminaries\nThis application demonstrates the power of Virtuoso XSL-T by\ntransforming an XML file in real time into a wireless phone emulator,\nusing a simple XSL stylesheet. Although fuller-featured WAP emulators exist,\nthis demo serves to illustrate what can be achieved with a few lines of VSP\ncode and accompanying stylesheet. However, a more comprehensive and\nfuller-featured WAP emulator built around the same concepts may be\navailable soon.\n\nRunning the Demo on a WAP device\nTo access this application, click on 'Run' link below. \n" ;
	sioc:description	"WAP Phone Emulator" ;
	sioc:has_container	ns2:wap ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:02 GMT" ;
	content:encoded	"\nPreliminaries\nThis application demonstrates the power of Virtuoso XSL-T by\ntransforming an XML file in real time into a wireless phone emulator,\nusing a simple XSL stylesheet. Although fuller-featured WAP emulators exist,\nthis demo serves to illustrate what can be achieved with a few lines of VSP\ncode and accompanying stylesheet. However, a more comprehensive and\nfuller-featured WAP emulator built around the same concepts may be\navailable soon.\n\nRunning the Demo on a WAP device\nTo access this application, click on &#39;Run&#39; link below. \n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"WAP based Email" ;
	sioc:content	"\nPreliminaries\nThought the only way to check your email on a wireless phone was via\nYahoo.com? This demo will illustrate how a few VSP scripts on a Virtuoso\nserver can provide a fully-functional wireless E-mail solution. Read messages\nfrom your POP-based email account from any WAP-enabled wireless device, or\nfrom the wireless phone emulators.\n\nRunning the Demo on a WAP device\nTo access this application via WAP/WML, enter the following URL\ninto a WAP-enabled wireless device:\nhttp://<hostname>/tutorial/apps/wa_b_3/index.vsp\n\n\nEmail WAP Application files\n\n  index.vap - Main page that calls the other files.\n  signup.vsp - Code to register details about a new user.\n  login.vsp - Code to sign-in a registered user.\n  checkmail.vsp - Code to communicate with the POP3 account.\n  logout.vsp - Code to sign-out.\n\n\n\nRunning the Demo on a WAP emulator\n\nTo simulate viewing the output on a wireless device. Run the\nRunWapEmail.html file.\nThen choose a web-based emulator from one below:\n\n\n  Wap.com -\n  This is the most accurate Java and web based emulator, almost to the point\n  of the definitive WAP SDK emulators from Openwave. However, its performance\n  is not always optimal.\n  \n\n  Wapsilon.com -\n  This is a reasonably accurate emulator, but the user interface handling is\n  not quite the same as a real WAP phone.\n  \n\n  Wapmore.com -\n  This is a PDA style emulator. Although its interface is a bit quirky, the\n  performance is reasonable.\n  \n\n  Gelon.net -\n  This is probably the fastest web-based WAP emulator; however, it sometimes\n  exhibits problems displaying WML forms.\n  \n\n  Download WAP SDK -\n  Our recommended option, this standard WAP SDK for emulators from\n  Openwave.com\n  (formerly Phone.com).\n  \n\n\n" ;
	sioc:description	"WAP Phone E-mail Retrieval" ;
	sioc:has_container	ns2:wap ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:02 GMT" ;
	content:encoded	"\nPreliminaries\nThought the only way to check your email on a wireless phone was via\nYahoo.com? This demo will illustrate how a few VSP scripts on a Virtuoso\nserver can provide a fully-functional wireless E-mail solution. Read messages\nfrom your POP-based email account from any WAP-enabled wireless device, or\nfrom the wireless phone emulators.\n\nRunning the Demo on a WAP device\nTo access this application via WAP/WML, enter the following URL\ninto a WAP-enabled wireless device:\nhttp://&lt;hostname&gt;/tutorial/apps/wa_b_3/index.vsp\n\n\nEmail WAP Application files\n\n  index.vap - Main page that calls the other files.\n  signup.vsp - Code to register details about a new user.\n  login.vsp - Code to sign-in a registered user.\n  checkmail.vsp - Code to communicate with the POP3 account.\n  logout.vsp - Code to sign-out.\n\n\n\nRunning the Demo on a WAP emulator\n\nTo simulate viewing the output on a wireless device. Run the\nRunWapEmail.html file.\nThen choose a web-based emulator from one below:\n\n\n  Wap.com -\n  This is the most accurate Java and web based emulator, almost to the point\n  of the definitive WAP SDK emulators from Openwave. However, its performance\n  is not always optimal.\n  \n\n  Wapsilon.com -\n  This is a reasonably accurate emulator, but the user interface handling is\n  not quite the same as a real WAP phone.\n  \n\n  Wapmore.com -\n  This is a PDA style emulator. Although its interface is a bit quirky, the\n  performance is reasonable.\n  \n\n  Gelon.net -\n  This is probably the fastest web-based WAP emulator; however, it sometimes\n  exhibits problems displaying WML forms.\n  \n\n  Download WAP SDK -\n  Our recommended option, this standard WAP SDK for emulators from\n  Openwave.com\n  (formerly Phone.com).\n  \n\n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"Echo" ;
	sioc:content	"\n    Example\n    The example contains code for simple echo service.\n\tIt accepts a string as an input and echoes back to the client.\n\tSo it shows the core BPEL concepts for building services.\n    To build and run the example follow the steps bellow:\n\n    Login into the BPEL UI via http://host:port/BPELGUI.\n    From the 'Home' tab page go to section 'Tasks' and click 'Upload Process' link.\n              Another way is to choose 'Processes' tab and go to the 'Process Upload' sub-tab.\n    \n    For the given entry form in the \"Load Deployment Descriptor URI\" field type 'http://host:port/BPELDemo/echo/bpel.xml'.\n    Choose the 'Import Process' button.\n    Choose the 'Compile process' button.\n    If compilation succeeds, will go to the 'Processes' page where the process will be in the given processes list.\n    To test the process click \"Test\" in the listing. This goes to a page allowing you to enter a start message for creating a new instance of this process.\n\n" ;
	sioc:description	"Simple BPEL4WS process" ;
	sioc:has_container	ns2:bpeldemo ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:03 GMT" ;
	content:encoded	"\n    Example\n    The example contains code for simple echo service.\n\tIt accepts a string as an input and echoes back to the client.\n\tSo it shows the core BPEL concepts for building services.\n    To build and run the example follow the steps bellow:\n\n    Login into the BPEL UI via http://host:port/BPELGUI.\n    From the &#39;Home&#39; tab page go to section &#39;Tasks&#39; and click &#39;Upload Process&#39; link.\n              Another way is to choose &#39;Processes&#39; tab and go to the &#39;Process Upload&#39; sub-tab.\n    \n    For the given entry form in the &quot;Load Deployment Descriptor URI&quot; field type &#39;http://host:port/BPELDemo/echo/bpel.xml&#39;.\n    Choose the &#39;Import Process&#39; button.\n    Choose the &#39;Compile process&#39; button.\n    If compilation succeeds, will go to the &#39;Processes&#39; page where the process will be in the given processes list.\n    To test the process click &quot;Test&quot; in the listing. This goes to a page allowing you to enter a start message for creating a new instance of this process.\n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"Fibonacci function" ;
	sioc:content	"\n    Example\n    The Fibonacci function calculates number based on following algorithm:\n    \n    \n\tint fi (int i)\n\t  {\n\t    if (i < 2)\n\t      return i;\n\t    return fi (i-1) + fi (i-2)\n\t  }\n\t\n    The example contains code for a simple Fibonacci function service.\n\tIt accepts an integer number as an input and calculates the Fibonacci number.\n\tThe process like the Fibonacci function does a recursive syncronous invocation of itself.\n    \n        The example is allowed with values less than 6. If is entered value greater then 6,\n        will be printed the message \"Entry values greater then 6 are not allowed!\"\n        and the input entry value will be initialized to 6.\n    \n    To build and run the example follow the steps bellow:\n\n    Login into the BPEL UI via http://host:port/BPELGUI.\n    From the 'Home' tab page go to section 'Tasks' and click 'Upload Process' link.\n              Another way is to choose 'Processes' tab and go to the 'Process Upload' sub-tab.\n    \n    For the given entry form in the \"Process name\" field type 'Fi' in order the process to be invoked successfully.\n    In the \"Load Deployment Descriptor URI\" field type 'http://host:port/BPELDemo/fi/bpel.xml'.\n    Choose the 'Import Process' button.\n    Choose the 'Compile process' button.\n    If compilation succeeds, will go to the 'Processes' page where the process will be in the given processes list.\n    To test the process click \"Test\" in the listing. This goes to a page allowing you to enter a start message for creating a new instance of this process.\n\n" ;
	sioc:description	"Fibonacci function BPEL4WS process" ;
	sioc:has_container	ns2:bpeldemo ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:03 GMT" ;
	content:encoded	"\n    Example\n    The Fibonacci function calculates number based on following algorithm:\n    \n    \n\tint fi (int i)\n\t  {\n\t    if (i &lt; 2)\n\t      return i;\n\t    return fi (i-1) + fi (i-2)\n\t  }\n\t\n    The example contains code for a simple Fibonacci function service.\n\tIt accepts an integer number as an input and calculates the Fibonacci number.\n\tThe process like the Fibonacci function does a recursive syncronous invocation of itself.\n    \n        The example is allowed with values less than 6. If is entered value greater then 6,\n        will be printed the message &quot;Entry values greater then 6 are not allowed!&quot;\n        and the input entry value will be initialized to 6.\n    \n    To build and run the example follow the steps bellow:\n\n    Login into the BPEL UI via http://host:port/BPELGUI.\n    From the &#39;Home&#39; tab page go to section &#39;Tasks&#39; and click &#39;Upload Process&#39; link.\n              Another way is to choose &#39;Processes&#39; tab and go to the &#39;Process Upload&#39; sub-tab.\n    \n    For the given entry form in the &quot;Process name&quot; field type &#39;Fi&#39; in order the process to be invoked successfully.\n    In the &quot;Load Deployment Descriptor URI&quot; field type &#39;http://host:port/BPELDemo/fi/bpel.xml&#39;.\n    Choose the &#39;Import Process&#39; button.\n    Choose the &#39;Compile process&#39; button.\n    If compilation succeeds, will go to the &#39;Processes&#39; page where the process will be in the given processes list.\n    To test the process click &quot;Test&quot; in the listing. This goes to a page allowing you to enter a start message for creating a new instance of this process.\n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"Loan Flow" ;
	sioc:content	"\n    Example\n\n    This example needs BPEL4WS VAD package to be installed on the server, before trying it.\n\tTo learn more about VAD please visit http://docs.openlinksw.com/virtuoso/VAD.html.\n    \n    The example script creates services for Credit Rating, United Loan and Star Loan.\n    The WSDL descriptions for these services are available via CreditRating.vsp,\n\tUnitedLoan.vsp and StarLoan.vsp.\n    \n    On the initial load the BPEL LoanFlow process will be deployed.\n    The test client can be used to test the BPEL LoanFlow process.\n    \n      You can test the example using BPEL UI also by going to 'Processes' tab and\n      click \"Test\" in the listing. This goes to a page allowing you to enter a\n      start message for creating a new instance of this process.\n     \n\n" ;
	sioc:description	"LoanFlow process" ;
	sioc:has_container	ns2:bpeldemo ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:03 GMT" ;
	content:encoded	"\n    Example\n\n    This example needs BPEL4WS VAD package to be installed on the server, before trying it.\n\tTo learn more about VAD please visit http://docs.openlinksw.com/virtuoso/VAD.html.\n    \n    The example script creates services for Credit Rating, United Loan and Star Loan.\n    The WSDL descriptions for these services are available via CreditRating.vsp,\n\tUnitedLoan.vsp and StarLoan.vsp.\n    \n    On the initial load the BPEL LoanFlow process will be deployed.\n    The test client can be used to test the BPEL LoanFlow process.\n    \n      You can test the example using BPEL UI also by going to &#39;Processes&#39; tab and\n      click &quot;Test&quot; in the listing. This goes to a page allowing you to enter a\n      start message for creating a new instance of this process.\n     \n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"SecLoan" ;
	sioc:content	"\n    Example\n    The example contains code for LoanFlow Using WS-Security.\n    \n\tThe following are requirments to the caller and the process:\n    \n    \n\tThe caller must supply a signed and encrypted SOAP message.\n\tProcess must reply from a separate HTTP connection to the endpoint designated by the  caller's ReplyTo WSA header.\n        The process' reply must contain a  signed and encrypted SOAP message.\n        The X.509 certificates must be used to sign the message.\n        The Session keys can be tripple-des or AES (128, 192 or 256 bit quality).\n        A Session key must be encrypted with the partner's RSA public key.\n        The test certificates from MS WSE 2.0 toolkit can be used.\n    \n    To build the example follow the steps bellow:\n    \n      This example needs BPEL4WS VAD package to be installed on the server, before trying it. To learn more about VAD please visit http://docs.openlinksw.com/virtuoso/VAD.html.\n      The example script creates services for Credit Rating, United Loan and Star Loan.\n      The WSDL descriptions for these services are available via CreditRating.vsp, UnitedLoan.vsp and StarLoan.vsp.\n      On the initial load the BPEL LoanFlow Using WS-Security process will be deployed.\n    \n    To run the example follow the steps bellow:\n    \n      Login into the BPEL UI via http://host:port/BPELGUI.\n      To enable debugging for the process with name 'SecLoanFlow' check the Debug checkbox in the listing.\n        This will cause all instances of the process to run in single-step mode,\n        pausing at each send or receive of a message. The debug console allows\n        interacting with instances in this mode.\n      \n      To test the process click \"Test\" in the listing. This goes to a page allowing you to enter a start message for creating a new instance of this process.\n    \n  " ;
	sioc:description	"LoanFlow process using WS-Security" ;
	sioc:has_container	ns2:bpeldemo ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:03 GMT" ;
	content:encoded	"\n    Example\n    The example contains code for LoanFlow Using WS-Security.\n    \n\tThe following are requirments to the caller and the process:\n    \n    \n\tThe caller must supply a signed and encrypted SOAP message.\n\tProcess must reply from a separate HTTP connection to the endpoint designated by the  caller&#39;s ReplyTo WSA header.\n        The process&#39; reply must contain a  signed and encrypted SOAP message.\n        The X.509 certificates must be used to sign the message.\n        The Session keys can be tripple-des or AES (128, 192 or 256 bit quality).\n        A Session key must be encrypted with the partner&#39;s RSA public key.\n        The test certificates from MS WSE 2.0 toolkit can be used.\n    \n    To build the example follow the steps bellow:\n    \n      This example needs BPEL4WS VAD package to be installed on the server, before trying it. To learn more about VAD please visit http://docs.openlinksw.com/virtuoso/VAD.html.\n      The example script creates services for Credit Rating, United Loan and Star Loan.\n      The WSDL descriptions for these services are available via CreditRating.vsp, UnitedLoan.vsp and StarLoan.vsp.\n      On the initial load the BPEL LoanFlow Using WS-Security process will be deployed.\n    \n    To run the example follow the steps bellow:\n    \n      Login into the BPEL UI via http://host:port/BPELGUI.\n      To enable debugging for the process with name &#39;SecLoanFlow&#39; check the Debug checkbox in the listing.\n        This will cause all instances of the process to run in single-step mode,\n        pausing at each send or receive of a message. The debug console allows\n        interacting with instances in this mode.\n      \n      To test the process click &quot;Test&quot; in the listing. This goes to a page allowing you to enter a start message for creating a new instance of this process.\n    \n  \n " ;
	rdf:type	foaf:Document ;
	dc:title	"RMLoan" ;
	sioc:content	"\n    Example\n    The example contains code for Reliable Loan Flow.\n    \n\tInvokation of loan services must be done using WS-RM protocol and rules:\n    \n    \n\tThe caller must supply a valid WSA header 'ReplyTo' containing a valid response URL.\n\t\n           The Process must send a reply from a separate HTTP connection to the endpoint\n           designated by the caller's ReplyTo WSA header using WS-RM.\n        \n    \n    To build the example follow the steps bellow:\n    \n      This example needs BPEL4WS VAD package to be installed on the server, before trying it. To learn more about VAD please visit http://docs.openlinksw.com/virtuoso/VAD.html.\n      This example depends from the SecLoan example. Make sure there is initial load for this example.\n      The example script creates services for Credit Rating, United Loan and Star Loan.\n      The WSDL descriptions for these services are available via CreditRating.vsp, UnitedLoan.vsp and StarLoan.vsp.\n      On the initial load the BPEL Reliable LoanFlow process will be deployed.\n    \n    To run the example follow the steps bellow:\n    \n      Login into the BPEL UI via http://host:port/BPELGUI.\n      To enable debugging for the process with name 'SecLoanFlow' check the Debug checkbox in the listing.\n        This will cause all instances of the process to run in single-step mode,\n        pausing at each send or receive of a message. The debug console allows\n        interacting with instances in this mode.\n      \n      To test the process click \"Test\" in the listing. This goes to a page allowing you to enter a start message for creating a new instance of this process.\n    \n  " ;
	sioc:description	"Reliable Loan Flow process" ;
	sioc:has_container	ns2:bpeldemo ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:03 GMT" ;
	content:encoded	"\n    Example\n    The example contains code for Reliable Loan Flow.\n    \n\tInvokation of loan services must be done using WS-RM protocol and rules:\n    \n    \n\tThe caller must supply a valid WSA header &#39;ReplyTo&#39; containing a valid response URL.\n\t\n           The Process must send a reply from a separate HTTP connection to the endpoint\n           designated by the caller&#39;s ReplyTo WSA header using WS-RM.\n        \n    \n    To build the example follow the steps bellow:\n    \n      This example needs BPEL4WS VAD package to be installed on the server, before trying it. To learn more about VAD please visit http://docs.openlinksw.com/virtuoso/VAD.html.\n      This example depends from the SecLoan example. Make sure there is initial load for this example.\n      The example script creates services for Credit Rating, United Loan and Star Loan.\n      The WSDL descriptions for these services are available via CreditRating.vsp, UnitedLoan.vsp and StarLoan.vsp.\n      On the initial load the BPEL Reliable LoanFlow process will be deployed.\n    \n    To run the example follow the steps bellow:\n    \n      Login into the BPEL UI via http://host:port/BPELGUI.\n      To enable debugging for the process with name &#39;SecLoanFlow&#39; check the Debug checkbox in the listing.\n        This will cause all instances of the process to run in single-step mode,\n        pausing at each send or receive of a message. The debug console allows\n        interacting with instances in this mode.\n      \n      To test the process click &quot;Test&quot; in the listing. This goes to a page allowing you to enter a start message for creating a new instance of this process.\n    \n  \n " ;
	rdf:type	foaf:Document ;
	dc:title	"SecRMLoan" ;
	sioc:content	"\n    Example\n    This example is a combination of Secure and Reliable Loan Flow examples.\n    \n        The calls to the asynchronous services must be done via WS-RM protocol.\n    \n    \n\tThe calls to partners must be encrypted and signed using the rules:\n    \n    \n\tThe caller must supply a signed and encrypted SOAP message.\n\tThe process must reply from a separate HTTP connection to the endpoint designated by the caller's ReplyTo WSA header.\n        The process' reply must contain a signed and encrypted SOAP message.\n        X.509 certificates must be used to sign the message.\n        The session keys can be tripple-des or AES (128, 192 or 256 bit quality).\n        A Session key must be encrypted with the partner's RSA public key.\n        The test certificates from MS WSE 2.0 toolkit can be used.\n    \n    To build the example follow the steps bellow:\n    \n      This example needs BPEL4WS VAD package to be installed on the server, before trying it. To learn more about VAD please visit http://docs.openlinksw.com/virtuoso/VAD.html.\n      This example depends from the SecLoan and the RMLoan example. Make sure there are initial loads for these examples.\n      The example script creates services for Credit Rating, United Loan and Star Loan.\n      The WSDL descriptions for these services are available via CreditRating.vsp, UnitedLoan.vsp and StarLoan.vsp.\n      On the initial load the BPEL Secure and Reliable Loan Flow process will be deployed.\n    \n    To run the example follow the steps bellow:\n    \n      Login into the BPEL UI via http://host:port/BPELGUI.\n      To enable debugging for the process with name 'SecRMLoanFlow' check the Debug checkbox in the listing.\n        This will cause all instances of the process to run in single-step mode,\n        pausing at each send or receive of a message. The debug console allows\n        interacting with instances in this mode.\n      \n      To test the process click \"Test\" in the listing. This goes to a page allowing you to enter a start message for creating a new instance of this process.\n    \n  " ;
	sioc:description	"Secure and Reliable Loan Flow process" ;
	sioc:has_container	ns2:bpeldemo ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:03 GMT" ;
	content:encoded	"\n    Example\n    This example is a combination of Secure and Reliable Loan Flow examples.\n    \n        The calls to the asynchronous services must be done via WS-RM protocol.\n    \n    \n\tThe calls to partners must be encrypted and signed using the rules:\n    \n    \n\tThe caller must supply a signed and encrypted SOAP message.\n\tThe process must reply from a separate HTTP connection to the endpoint designated by the caller&#39;s ReplyTo WSA header.\n        The process&#39; reply must contain a signed and encrypted SOAP message.\n        X.509 certificates must be used to sign the message.\n        The session keys can be tripple-des or AES (128, 192 or 256 bit quality).\n        A Session key must be encrypted with the partner&#39;s RSA public key.\n        The test certificates from MS WSE 2.0 toolkit can be used.\n    \n    To build the example follow the steps bellow:\n    \n      This example needs BPEL4WS VAD package to be installed on the server, before trying it. To learn more about VAD please visit http://docs.openlinksw.com/virtuoso/VAD.html.\n      This example depends from the SecLoan and the RMLoan example. Make sure there are initial loads for these examples.\n      The example script creates services for Credit Rating, United Loan and Star Loan.\n      The WSDL descriptions for these services are available via CreditRating.vsp, UnitedLoan.vsp and StarLoan.vsp.\n      On the initial load the BPEL Secure and Reliable Loan Flow process will be deployed.\n    \n    To run the example follow the steps bellow:\n    \n      Login into the BPEL UI via http://host:port/BPELGUI.\n      To enable debugging for the process with name &#39;SecRMLoanFlow&#39; check the Debug checkbox in the listing.\n        This will cause all instances of the process to run in single-step mode,\n        pausing at each send or receive of a message. The debug console allows\n        interacting with instances in this mode.\n      \n      To test the process click &quot;Test&quot; in the listing. This goes to a page allowing you to enter a start message for creating a new instance of this process.\n    \n  \n " ;
	rdf:type	foaf:Document ;
	dc:title	"Inventory Service" ;
	sioc:content	"\n      Example\n      \n\t  The demo is a service which is invoked on time\n\t  basis in order to update an inventory. This\n\t  demo using the Northwind demo Database as an\n\t  inventory.\n      \n      \n\t  The client generates a list of items that\n\t  are under 10 units using SQLX. This XML\n\t  document is sent to the inventory process\n\t  and will make new process instance.\n      \n      \ncreate procedure DB..update_inventory ()\n{\n  declare req any;\n  whenever not found goto nf;\n  -- the following statement generates an XML document using SQLX\n  --\n  -- the result would like :\n  -- <Items xmlns=\"http://temp.org\"><Product><ProductID>5</ProductID><Quantity>10</Quantity></Product>...</Items>\n  --\n  select xmlelement(Items,\n  \t\txmlattributes ('http://temp.org' as xmlns),\n\t\txmlagg (\n\t\t  xmlelement (item,\n\t\t    xmlelement (ProductID, ProductID),\n\t\t    xmlelement (Quantity, UnitsInStock + 10)\n\t\t    ))) into req\n      from Demo..Products where UnitsInStock < 10 and Discontinued = 0;\n\n  -- call the process with generated XML document as a input parameter\n  soap_client (\turl=>'http://host:port/InventorySvc',\n      \t\toperation=>'initiate',\n\t\tparameters=>vector ('par0', req),\n\t\tsoap_action=>'initiate',\n\t\tstyle=>1\n      );\n\n  nf:\n  return;\n}\n\t  \n      \n\t  The process will loop over all items in input\n\t  and for each will ask for quote.\n\t  Also the quote service will return a list of\n\t  wholesalers and their prices. Then the process will\n\t  choose the best price and will make an order using specific\n\t  partner URL (this is simulated by appending a\n\t  URL parameter to the service URL).\n\t  When an order confirmation is received, the process\n\t  will update the inventory.\n      \n      \n\t  At the end of process it will sent an e-mail\n\t  to the pre-configured operator address.\n      \n      \n\t  The following code is a pseudo-code which describes the process flow:\n      \n      \n{\n  declare i, l int;\n  declare j, k, oid int;\n  declare in, out, ord any;\n\n  in = receive ();\n\n  l = length (in);\n  for (i = 0; i < l; i++)\n    {\n      declare q, best any;\n      q = getQuote (in[i]);\n      k = length (q);\n      for (j := 0; j < k; j++)\n        {\n          if (q.price < best.price)\n            best = q;\n        }\n      oid = newOrder (best.url, in[i].item, in[i].quantity, best.price);\n      update Demo.demo.Products set UnitsOnStock = UnitsOnStock + in[i].quantity where\n           ProductID = in[i].ProductID;\n    }\n   sendMail ('Inventory have been updated');\n}\n\t  \n      \n\t  To run the example follow the steps bellow:\n      \n\n    Load the initial setup file: 'store.sql'\n    Login into the BPEL UI via http://host:port/BPELGUI.\n    From the 'Home' tab page go to section 'Tasks' and click 'Upload Process' link.\n              Another way is to choose 'Processes' tab and go to the 'Process Upload' sub-tab.\n    \n    In the \"Load Deployment Descriptor URI\" field type 'http://host:port/BPELDemo/sqlexec/bpel.xml'.\n    Choose the 'Import Process' button.\n    Choose the 'Compile process' button.\n    If compilation succeeds, will go to the 'Processes' page where the process will be in the given processes list.\n    Run via ISQL the DB..update_inventory () procedure.\n    Also the update_inventory procedure can be used as a scheduled task (see 'Virtuoso scheduler' section in the documentation for details).\n    \n\n" ;
	sioc:description	"Using SQL binding and SQLX to generate requests process" ;
	sioc:has_container	ns2:bpeldemo ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:03 GMT" ;
	content:encoded	"\n      Example\n      \n\t  The demo is a service which is invoked on time\n\t  basis in order to update an inventory. This\n\t  demo using the Northwind demo Database as an\n\t  inventory.\n      \n      \n\t  The client generates a list of items that\n\t  are under 10 units using SQLX. This XML\n\t  document is sent to the inventory process\n\t  and will make new process instance.\n      \n      \ncreate procedure DB..update_inventory ()\n{\n  declare req any;\n  whenever not found goto nf;\n  -- the following statement generates an XML document using SQLX\n  --\n  -- the result would like :\n  -- &lt;Items xmlns=&quot;http://temp.org&quot;&gt;&lt;Product&gt;&lt;ProductID&gt;5&lt;/ProductID&gt;&lt;Quantity&gt;10&lt;/Quantity&gt;&lt;/Product&gt;...&lt;/Items&gt;\n  --\n  select xmlelement(Items,\n  \t\txmlattributes (&#39;http://temp.org&#39; as xmlns),\n\t\txmlagg (\n\t\t  xmlelement (item,\n\t\t    xmlelement (ProductID, ProductID),\n\t\t    xmlelement (Quantity, UnitsInStock + 10)\n\t\t    ))) into req\n      from Demo..Products where UnitsInStock &lt; 10 and Discontinued = 0;\n\n  -- call the process with generated XML document as a input parameter\n  soap_client (\turl=&gt;&#39;http://host:port/InventorySvc&#39;,\n      \t\toperation=&gt;&#39;initiate&#39;,\n\t\tparameters=&gt;vector (&#39;par0&#39;, req),\n\t\tsoap_action=&gt;&#39;initiate&#39;,\n\t\tstyle=&gt;1\n      );\n\n  nf:\n  return;\n}\n\t  \n      \n\t  The process will loop over all items in input\n\t  and for each will ask for quote.\n\t  Also the quote service will return a list of\n\t  wholesalers and their prices. Then the process will\n\t  choose the best price and will make an order using specific\n\t  partner URL (this is simulated by appending a\n\t  URL parameter to the service URL).\n\t  When an order confirmation is received, the process\n\t  will update the inventory.\n      \n      \n\t  At the end of process it will sent an e-mail\n\t  to the pre-configured operator address.\n      \n      \n\t  The following code is a pseudo-code which describes the process flow:\n      \n      \n{\n  declare i, l int;\n  declare j, k, oid int;\n  declare in, out, ord any;\n\n  in = receive ();\n\n  l = length (in);\n  for (i = 0; i &lt; l; i++)\n    {\n      declare q, best any;\n      q = getQuote (in[i]);\n      k = length (q);\n      for (j := 0; j &lt; k; j++)\n        {\n          if (q.price &lt; best.price)\n            best = q;\n        }\n      oid = newOrder (best.url, in[i].item, in[i].quantity, best.price);\n      update Demo.demo.Products set UnitsOnStock = UnitsOnStock + in[i].quantity where\n           ProductID = in[i].ProductID;\n    }\n   sendMail (&#39;Inventory have been updated&#39;);\n}\n\t  \n      \n\t  To run the example follow the steps bellow:\n      \n\n    Load the initial setup file: &#39;store.sql&#39;\n    Login into the BPEL UI via http://host:port/BPELGUI.\n    From the &#39;Home&#39; tab page go to section &#39;Tasks&#39; and click &#39;Upload Process&#39; link.\n              Another way is to choose &#39;Processes&#39; tab and go to the &#39;Process Upload&#39; sub-tab.\n    \n    In the &quot;Load Deployment Descriptor URI&quot; field type &#39;http://host:port/BPELDemo/sqlexec/bpel.xml&#39;.\n    Choose the &#39;Import Process&#39; button.\n    Choose the &#39;Compile process&#39; button.\n    If compilation succeeds, will go to the &#39;Processes&#39; page where the process will be in the given processes list.\n    Run via ISQL the DB..update_inventory () procedure.\n    Also the update_inventory procedure can be used as a scheduled task (see &#39;Virtuoso scheduler&#39; section in the documentation for details).\n    \n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"UseCases" ;
	sioc:content	"\n      Purpose\n      \n\t  This is a Technical Use Case as per OASIS MS01 document,\n\t  illustrating various options for data manipulation inside a BPEL process.\n      \n      The following situations are shown:\n      \n\t  MS01-1: Variable initialization.\n\t  MS01-2: Assignment of string, numeric, boolean and date values.\n\t  MS01-3: Assignment of variables by copying other variable's values.\n\t  MS01-4: Sample XPath calculations.\n\t  MS01-5&6: Working with array structures.\n      \n      \n\t  To run the example follow the steps bellow:\n      \n      \n        Load the initial setup file: 'MS01.sql'\n        Login into the BPEL UI via http://host:port/BPELGUI to test the processes.\n       \n    " ;
	sioc:description	"BPEL Data Manipulation Options processes" ;
	sioc:has_container	ns2:bpeldemo ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:03 GMT" ;
	content:encoded	"\n      Purpose\n      \n\t  This is a Technical Use Case as per OASIS MS01 document,\n\t  illustrating various options for data manipulation inside a BPEL process.\n      \n      The following situations are shown:\n      \n\t  MS01-1: Variable initialization.\n\t  MS01-2: Assignment of string, numeric, boolean and date values.\n\t  MS01-3: Assignment of variables by copying other variable&#39;s values.\n\t  MS01-4: Sample XPath calculations.\n\t  MS01-5&amp;6: Working with array structures.\n      \n      \n\t  To run the example follow the steps bellow:\n      \n      \n        Load the initial setup file: &#39;MS01.sql&#39;\n        Login into the BPEL UI via http://host:port/BPELGUI to test the processes.\n       \n    \n " ;
	rdf:type	foaf:Document ;
	dc:title	"Java Execution" ;
	sioc:content	"\n    Example\n    This example demonstrates how the Java code can be embedded in a BPEL process.\n    \n    The example contains java code which gets data from BPEL variable, prints string to the console and returns string.\n    \n    To build and run the example follow the steps bellow:\n\n    Make sure system calls are enabled in virtuoso.ini (AllowOSCalls parameter).\n    Make sure CLASSPATH environment variable contains \"classlib\" entry.\n    Make sure you are running java enabled server (virtuoso-odbc-javavm-t or virtuoso-odbc-javavm-clr-t).\n    Login into the BPEL UI via http://host:port/BPELGUI.\n    \n      From the 'Home' tab page go to section 'Tasks' and click 'Upload Process' link.\n      Another way is to choose 'Processes' tab and go to the 'Process Upload' sub-tab.\n    \n    For the given entry form in the \"Load Deployment Descriptor URI\" field type 'http://host:port/BPELDemo/java_exec/bpel.xml'.\n    Choose the 'Import Process' button.\n    Choose the 'Compile process' button.\n    If compilation succeeds, will go to the 'Processes' page where the process will be in the given processes list.\n    To test the process click \"Test\" in the listing. This goes to a page allowing you to enter a start message for creating a new instance of this process.\n\n" ;
	sioc:description	"Java Execution BPEL4WS process" ;
	sioc:has_container	ns2:bpeldemo ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:03 GMT" ;
	content:encoded	"\n    Example\n    This example demonstrates how the Java code can be embedded in a BPEL process.\n    \n    The example contains java code which gets data from BPEL variable, prints string to the console and returns string.\n    \n    To build and run the example follow the steps bellow:\n\n    Make sure system calls are enabled in virtuoso.ini (AllowOSCalls parameter).\n    Make sure CLASSPATH environment variable contains &quot;classlib&quot; entry.\n    Make sure you are running java enabled server (virtuoso-odbc-javavm-t or virtuoso-odbc-javavm-clr-t).\n    Login into the BPEL UI via http://host:port/BPELGUI.\n    \n      From the &#39;Home&#39; tab page go to section &#39;Tasks&#39; and click &#39;Upload Process&#39; link.\n      Another way is to choose &#39;Processes&#39; tab and go to the &#39;Process Upload&#39; sub-tab.\n    \n    For the given entry form in the &quot;Load Deployment Descriptor URI&quot; field type &#39;http://host:port/BPELDemo/java_exec/bpel.xml&#39;.\n    Choose the &#39;Import Process&#39; button.\n    Choose the &#39;Compile process&#39; button.\n    If compilation succeeds, will go to the &#39;Processes&#39; page where the process will be in the given processes list.\n    To test the process click &quot;Test&quot; in the listing. This goes to a page allowing you to enter a start message for creating a new instance of this process.\n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	".NET Execution" ;
	sioc:content	"\n    Example\n    This example demonstrates how the C# code can be embedded in a BPEL process.\n    \n    The example contains .NET code which gets data from BPEL variable, prints string to the console and returns string.\n    \n    To build and run the example follow the steps bellow:\n    \n      \n        Initialize \"CLRAssembliesDir\" configuration field at BPEL UI 'Configuration' tab\n        with the directory name where the dlls from the distribution are located ( t.e. OpenLink.Data.VirtuosoClient.dll, virt_bpel4ws.dll etc).\n        If you have problems initializing this CLRAssembliesDir, ask your system administrator to initialize this directory for you\n        (and copy all needed DLLs there) or to tell you where this directory is located.\n      \n      Make sure you are running CLR or Mono enabled server (virtuoso-odbc-clr-t, virtuoso-odbc-mono-t, etc).\n      Login into the BPEL UI via http://host:port/BPELGUI.\n     \n       From the 'Home' tab page go to section 'Tasks' and click 'Upload Process' link.\n       Another way is to choose 'Processes' tab and go to the 'Process Upload' sub-tab.\n     \n     For the given entry form in the \"Load Deployment Descriptor URI\" field type 'http://host:port/BPELDemo/clr_exec/bpel.xml'.\n     Choose the 'Import Process' button.\n     Choose the 'Compile process' button.\n     If compilation succeeds, will go to the 'Processes' page where the process will be in the given processes list.\n     To test the process click \"Test\" in the listing. This goes to a page allowing you to enter a start message for creating a new instance of this process.\n   \n " ;
	sioc:description	".NET Execution BPEL4WS process" ;
	sioc:has_container	ns2:bpeldemo ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:03 GMT" ;
	content:encoded	"\n    Example\n    This example demonstrates how the C# code can be embedded in a BPEL process.\n    \n    The example contains .NET code which gets data from BPEL variable, prints string to the console and returns string.\n    \n    To build and run the example follow the steps bellow:\n    \n      \n        Initialize &quot;CLRAssembliesDir&quot; configuration field at BPEL UI &#39;Configuration&#39; tab\n        with the directory name where the dlls from the distribution are located ( t.e. OpenLink.Data.VirtuosoClient.dll, virt_bpel4ws.dll etc).\n        If you have problems initializing this CLRAssembliesDir, ask your system administrator to initialize this directory for you\n        (and copy all needed DLLs there) or to tell you where this directory is located.\n      \n      Make sure you are running CLR or Mono enabled server (virtuoso-odbc-clr-t, virtuoso-odbc-mono-t, etc).\n      Login into the BPEL UI via http://host:port/BPELGUI.\n     \n       From the &#39;Home&#39; tab page go to section &#39;Tasks&#39; and click &#39;Upload Process&#39; link.\n       Another way is to choose &#39;Processes&#39; tab and go to the &#39;Process Upload&#39; sub-tab.\n     \n     For the given entry form in the &quot;Load Deployment Descriptor URI&quot; field type &#39;http://host:port/BPELDemo/clr_exec/bpel.xml&#39;.\n     Choose the &#39;Import Process&#39; button.\n     Choose the &#39;Compile process&#39; button.\n     If compilation succeeds, will go to the &#39;Processes&#39; page where the process will be in the given processes list.\n     To test the process click &quot;Test&quot; in the listing. This goes to a page allowing you to enter a start message for creating a new instance of this process.\n   \n \n " ;
	rdf:type	foaf:Document ;
	dc:title	"processXSLT" ;
	sioc:content	"\n    Example\n    This example demonstrates how the XSLT styles can be used in BPEL script.\n    \n    The example contains invoking the processXSLT XPath function which transforms data from a BPEL variable.\n    \n    To build and run the example follow the steps bellow:\n\n    Load the initial setup file: ' processXSLT.sql'\n    Login into the BPEL UI via http://host:port/BPELGUI.\n    \n      From the 'Home' tab page go to section 'Tasks' and click 'Upload Process' link.\n      Another way is to choose 'Processes' tab and go to the 'Process Upload' sub-tab.\n    \n    For the given entry form in the \"Load Deployment Descriptor URI\" field type 'http://host:port/BPELDemo/processXSLT/bpel.xml'.\n    Choose the 'Import Process' button.\n    Choose the 'Compile process' button.\n    If compilation succeeds, will go to the 'Processes' page where the process will be in the given processes list.\n    To test the process click \"Test\" in the listing. This goes to a page allowing you to enter a start message for creating a new instance of this process.\n\n" ;
	sioc:description	"XSLT processing example" ;
	sioc:has_container	ns2:bpeldemo ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:03 GMT" ;
	content:encoded	"\n    Example\n    This example demonstrates how the XSLT styles can be used in BPEL script.\n    \n    The example contains invoking the processXSLT XPath function which transforms data from a BPEL variable.\n    \n    To build and run the example follow the steps bellow:\n\n    Load the initial setup file: &#39; processXSLT.sql&#39;\n    Login into the BPEL UI via http://host:port/BPELGUI.\n    \n      From the &#39;Home&#39; tab page go to section &#39;Tasks&#39; and click &#39;Upload Process&#39; link.\n      Another way is to choose &#39;Processes&#39; tab and go to the &#39;Process Upload&#39; sub-tab.\n    \n    For the given entry form in the &quot;Load Deployment Descriptor URI&quot; field type &#39;http://host:port/BPELDemo/processXSLT/bpel.xml&#39;.\n    Choose the &#39;Import Process&#39; button.\n    Choose the &#39;Compile process&#39; button.\n    If compilation succeeds, will go to the &#39;Processes&#39; page where the process will be in the given processes list.\n    To test the process click &quot;Test&quot; in the listing. This goes to a page allowing you to enter a start message for creating a new instance of this process.\n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"processXQuery" ;
	sioc:content	"\n    Example\n    This example demonstrates how the XQuery program can be used in a BPEL process.\n    \n    The example contains invoking the processXQuery XPath function which returns a result of XQuery program.\n    \n    To build and run the example follow the steps bellow:\n    \n      Login into the BPEL UI via http://host:port/BPELGUI.\n      \n        From the 'Home' tab page go to section 'Tasks' and click 'Upload Process' link.\n        Another way is to choose 'Processes' tab and go to the 'Process Upload' sub-tab.\n      \n      For the given entry form in the \"Load Deployment Descriptor URI\" field type 'http://host:port/BPELDemo/processXQuery/bpel.xml'.\n      Choose the 'Import Process' button.\n      Choose the 'Compile process' button.\n      If compilation succeeds, will go to the 'Processes' page where the process will be in the given processes list.\n      To test the process click \"Test\" in the listing. This goes to a page allowing you to enter a start message for creating a new instance of this process.\n      Enter \"2\" as id and \"Kathreen Smith\" as \"seller\" for the test form fields.\n    \n  " ;
	sioc:description	"XQuery processing example" ;
	sioc:has_container	ns2:bpeldemo ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:03 GMT" ;
	content:encoded	"\n    Example\n    This example demonstrates how the XQuery program can be used in a BPEL process.\n    \n    The example contains invoking the processXQuery XPath function which returns a result of XQuery program.\n    \n    To build and run the example follow the steps bellow:\n    \n      Login into the BPEL UI via http://host:port/BPELGUI.\n      \n        From the &#39;Home&#39; tab page go to section &#39;Tasks&#39; and click &#39;Upload Process&#39; link.\n        Another way is to choose &#39;Processes&#39; tab and go to the &#39;Process Upload&#39; sub-tab.\n      \n      For the given entry form in the &quot;Load Deployment Descriptor URI&quot; field type &#39;http://host:port/BPELDemo/processXQuery/bpel.xml&#39;.\n      Choose the &#39;Import Process&#39; button.\n      Choose the &#39;Compile process&#39; button.\n      If compilation succeeds, will go to the &#39;Processes&#39; page where the process will be in the given processes list.\n      To test the process click &quot;Test&quot; in the listing. This goes to a page allowing you to enter a start message for creating a new instance of this process.\n      Enter &quot;2&quot; as id and &quot;Kathreen Smith&quot; as &quot;seller&quot; for the test form fields.\n    \n  \n " ;
	rdf:type	foaf:Document ;
	dc:title	"processXSQL" ;
	sioc:content	"\n    Example\n    \n      This example demonstrates how the XSQL scripts can be used in a BPEL example.\n    \n    \n      The example contains the XSQL file selectCustomers.xsql which selects a customer by given SSN.\n    \n    \n      To build and run the example follow the steps bellow:\n    \n    \n      \n        Login into the BPEL UI via http://host:port/BPELGUI.\n      \n      \n        From the 'Home' tab page go to section 'Tasks' and click 'Upload Process' link.\n        Another way is to choose 'Processes' tab and go to the 'Process Upload' sub-tab.\n      \n      \n        For the given entry form in the \"Load Deployment Descriptor URI\" field type\n        'http://host:port/BPELDemo/processXSQL/bpel.xml'.\n      \n      \n        Choose the 'Import Process' button.\n      \n      \n        Choose the 'Compile process' button.\n      \n      \n        If compilation succeeds, will go to the 'Processes' page where the process\n        will be in the given processes list.\n      \n      \n        To test the process click \"Test\" in the listing. This goes to a page\n        allowing you to enter a start message for creating a new instance of this process.\n      \n    \n  " ;
	sioc:description	"XSQL processing example" ;
	sioc:has_container	ns2:bpeldemo ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:03 GMT" ;
	content:encoded	"\n    Example\n    \n      This example demonstrates how the XSQL scripts can be used in a BPEL example.\n    \n    \n      The example contains the XSQL file selectCustomers.xsql which selects a customer by given SSN.\n    \n    \n      To build and run the example follow the steps bellow:\n    \n    \n      \n        Login into the BPEL UI via http://host:port/BPELGUI.\n      \n      \n        From the &#39;Home&#39; tab page go to section &#39;Tasks&#39; and click &#39;Upload Process&#39; link.\n        Another way is to choose &#39;Processes&#39; tab and go to the &#39;Process Upload&#39; sub-tab.\n      \n      \n        For the given entry form in the &quot;Load Deployment Descriptor URI&quot; field type\n        &#39;http://host:port/BPELDemo/processXSQL/bpel.xml&#39;.\n      \n      \n        Choose the &#39;Import Process&#39; button.\n      \n      \n        Choose the &#39;Compile process&#39; button.\n      \n      \n        If compilation succeeds, will go to the &#39;Processes&#39; page where the process\n        will be in the given processes list.\n      \n      \n        To test the process click &quot;Test&quot; in the listing. This goes to a page\n        allowing you to enter a start message for creating a new instance of this process.\n      \n    \n  \n " ;
	rdf:type	foaf:Document ;
	dc:title	"Making an Executable Directory" ;
	sioc:content	"\nPreliminaries\nIt is necessary to complete the configuration of the executable directory before any of the subsequent\ntutorials  will function. It is therefore important to follow these steps carefully before trying to run the\nvs_b_1.vsp file.\nThe example demonstrated here creates an executable directory depending on either tutorial_dav.vad package was installled\n(i.e. the tutorials are in the DAV repository) or the tutorial_filesystem.dav package ( the tutorials have FS location.)\n\n\nThese tutorials are designed for use on an OpenLink Virtuoso V3.0 VDBMS. Earlier versions will not work.\n\nLogin to the Conductor UI using the dba account.\n\n\nCreate the database user account vspdemo\n\n  Go to \"System Admin\" tab and then go to the \"User Accounts\" tab.\n  Click the \"Create New Account\" link.\n  Enter for Account Name \"vspdemo\" and a desired password with confirmation. Check the check-box for \"Allow SQL/ODBC Logins\".\n  Leave the rest of the fields at their default.\n  Press the \"Save\" button. You will see the vspdemo now listed under current user accounts.\n\n\nCheck tutorials type and path of installation (DAV or FS)\n\n  Go to \"Database\" tab and then go to the \"Interactive SQL\" tab.\n  Enter in the text area the following:\n\nselect TUTORIAL_VDIR_DIR();\n\n  \n  Click the \"Execute\" button.\n  The found result will be the tutorials Path location.\n  Click the button \"Return\".\n  Enter in the text area the following:\n\nselect TUTORIAL_IS_DAV();\n\n  \n  Click the \"Execute\" button.\n  The returned result will be the tutorials Type location:\n1 - tutorials are installed in DAV, or\n0 - tutorials are installed in the local FS.\n\n\nAllow VSP files to be run by vspdemo user with directory browsing allowed\n\n  Go to \"Web Application Server\" tab and then go to the \"Virtual Domains & Directories\" tab.\n  From the given list of HTTP Hosts click the icon in front of the Interface value.\n  Click the \"Add new directory\" link.\n  If tutorials Type location is FS, then choose the \"File System\" type and press the button\n\"Next>>\"; If tutorials Type location is DAV, then choose the \"WebDAV domain\" type and press the\nbutton \"Next>>\".\n  \n  Enter \"/vs_b_1\" for Path,\nEnter the tutorials Path location with \"/tutorial/web/\" at the end for physical path (for ex. /vad/vsp/tutorial/web/ or /DAV/VAD/tutorial/web/),\nselect \"vspdemo\" for the VSP user,\nselect \"Allow Directory Browsing\" checkbox and then press the \"Save Changes\" button.\n\nTo test the new directory: enter the \"http://host:port/vs_b_1\" in browser. For example\nhttp://localhost:8889 as the URL. If all is ok, the content of the web\ntutorial directory is shown.\n\nEquivalent SQL commands to achieve executable directory\n\n  Connect to the Virtuoso server via ISQL utility as DBA user.\n  Create the user \"vspdemo\"\n  \nSQL> create user vspdemo;\nSQL> user_set_qualifier ('vspdemo', 'vspdemo');\n  \n  Create the virtual directory with user for execution \"vspdemo\"\n  \nSQL> VHOST_REMOVE (vhost=>'*ini*',lhost=>'*ini*',lpath=>'/vs_b_1');\nSQL> vhost_define (vhost=>'*ini*',lhost=>'*ini*',lpath=>'/vs_b_1',\n     ppath=>TUTORIAL_VDIR_DIR() || '/tutorial/web/',vsp_user=>'vspdemo', is_brws=>1, is_dav=>TUTORIAL_IS_DAV());\n  \n\n" ;
	sioc:description	"Making an executable directory in Virtuoso's Web server space." ;
	sioc:has_container	ns2:web ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:02 GMT" ;
	content:encoded	"\nPreliminaries\nIt is necessary to complete the configuration of the executable directory before any of the subsequent\ntutorials  will function. It is therefore important to follow these steps carefully before trying to run the\nvs_b_1.vsp file.\nThe example demonstrated here creates an executable directory depending on either tutorial_dav.vad package was installled\n(i.e. the tutorials are in the DAV repository) or the tutorial_filesystem.dav package ( the tutorials have FS location.)\n\n\nThese tutorials are designed for use on an OpenLink Virtuoso V3.0 VDBMS. Earlier versions will not work.\n\nLogin to the Conductor UI using the dba account.\n\n\nCreate the database user account vspdemo\n\n  Go to &quot;System Admin&quot; tab and then go to the &quot;User Accounts&quot; tab.\n  Click the &quot;Create New Account&quot; link.\n  Enter for Account Name &quot;vspdemo&quot; and a desired password with confirmation. Check the check-box for &quot;Allow SQL/ODBC Logins&quot;.\n  Leave the rest of the fields at their default.\n  Press the &quot;Save&quot; button. You will see the vspdemo now listed under current user accounts.\n\n\nCheck tutorials type and path of installation (DAV or FS)\n\n  Go to &quot;Database&quot; tab and then go to the &quot;Interactive SQL&quot; tab.\n  Enter in the text area the following:\n\nselect TUTORIAL_VDIR_DIR();\n\n  \n  Click the &quot;Execute&quot; button.\n  The found result will be the tutorials Path location.\n  Click the button &quot;Return&quot;.\n  Enter in the text area the following:\n\nselect TUTORIAL_IS_DAV();\n\n  \n  Click the &quot;Execute&quot; button.\n  The returned result will be the tutorials Type location:\n1 - tutorials are installed in DAV, or\n0 - tutorials are installed in the local FS.\n\n\nAllow VSP files to be run by vspdemo user with directory browsing allowed\n\n  Go to &quot;Web Application Server&quot; tab and then go to the &quot;Virtual Domains &amp; Directories&quot; tab.\n  From the given list of HTTP Hosts click the icon in front of the Interface value.\n  Click the &quot;Add new directory&quot; link.\n  If tutorials Type location is FS, then choose the &quot;File System&quot; type and press the button\n&quot;Next&gt;&gt;&quot;; If tutorials Type location is DAV, then choose the &quot;WebDAV domain&quot; type and press the\nbutton &quot;Next&gt;&gt;&quot;.\n  \n  Enter &quot;/vs_b_1&quot; for Path,\nEnter the tutorials Path location with &quot;/tutorial/web/&quot; at the end for physical path (for ex. /vad/vsp/tutorial/web/ or /DAV/VAD/tutorial/web/),\nselect &quot;vspdemo&quot; for the VSP user,\nselect &quot;Allow Directory Browsing&quot; checkbox and then press the &quot;Save Changes&quot; button.\n\nTo test the new directory: enter the &quot;http://host:port/vs_b_1&quot; in browser. For example\nhttp://localhost:8889 as the URL. If all is ok, the content of the web\ntutorial directory is shown.\n\nEquivalent SQL commands to achieve executable directory\n\n  Connect to the Virtuoso server via ISQL utility as DBA user.\n  Create the user &quot;vspdemo&quot;\n  \nSQL&gt; create user vspdemo;\nSQL&gt; user_set_qualifier (&#39;vspdemo&#39;, &#39;vspdemo&#39;);\n  \n  Create the virtual directory with user for execution &quot;vspdemo&quot;\n  \nSQL&gt; VHOST_REMOVE (vhost=&gt;&#39;*ini*&#39;,lhost=&gt;&#39;*ini*&#39;,lpath=&gt;&#39;/vs_b_1&#39;);\nSQL&gt; vhost_define (vhost=&gt;&#39;*ini*&#39;,lhost=&gt;&#39;*ini*&#39;,lpath=&gt;&#39;/vs_b_1&#39;,\n     ppath=&gt;TUTORIAL_VDIR_DIR() || &#39;/tutorial/web/&#39;,vsp_user=&gt;&#39;vspdemo&#39;, is_brws=&gt;1, is_dav=&gt;TUTORIAL_IS_DAV());\n  \n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"Syntax of a Page" ;
	sioc:content	"\nPreliminaries\n\n  The pages with active content are named Virtuoso Server Pages, or VSP in short.\n  These pages consist of Virtuoso PL and HTML code.\n  The Virtuoso Web server executes only files (resources) with the \".vsp\" extension.\n  The VSP file can contain VSP blocks and HTML blocks\n  The VSP block contains the PL code\n   \n    The <?vsp marks the beginning of a VSP block.  \n    The ?> marks the end of a VSP block.\n   \n  The HTML block is everything outside of a VSP block.\n  The VSP shortcut in an HTML block is used to include value.\n   \n    The <?= marks the beginning of VSP shortcut.  \n    The ?> marks the end of a VSP shortcut.  \n   \n\n\nExample\nThe demonstration page uses the <?= <?vsp markup and SQL expressions to generate html\ncontent from within a VSP loop.\n" ;
	sioc:description	"Overview of Virtuoso Server Pages (VSP) syntax" ;
	sioc:has_container	ns2:web ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:02 GMT" ;
	content:encoded	"\nPreliminaries\n\n  The pages with active content are named Virtuoso Server Pages, or VSP in short.\n  These pages consist of Virtuoso PL and HTML code.\n  The Virtuoso Web server executes only files (resources) with the &quot;.vsp&quot; extension.\n  The VSP file can contain VSP blocks and HTML blocks\n  The VSP block contains the PL code\n   \n    The &lt;?vsp marks the beginning of a VSP block.  \n    The ?&gt; marks the end of a VSP block.\n   \n  The HTML block is everything outside of a VSP block.\n  The VSP shortcut in an HTML block is used to include value.\n   \n    The &lt;?= marks the beginning of VSP shortcut.  \n    The ?&gt; marks the end of a VSP shortcut.  \n   \n\n\nExample\nThe demonstration page uses the &lt;?= &lt;?vsp markup and SQL expressions to generate html\ncontent from within a VSP loop.\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"Accessing Data in the Request" ;
	sioc:content	"\nPreliminaries\n\n    Data supplied to a VSP is normally posted from a form.\n    Pressing a form submit button causes the browser to pass the data to the server.\n    The form data may be encoded in two forms: www-url-encoded or multipart/form-data.\n\n\nProcessing of the form data in VSPs.\n\n  When the request arrives, the web server parses the request and creates three input arguments for VSP processing:\n  \n    path - array with path elements of the requested URL path. Ie. if the request is \"http://foo.bar/a/b/c\" then \"path\" argument will be a vector ('a','b','c').\n    params - array with name and value pairs of the passed form parameters\n    lines - the vector of HTTP request header lines\n  \n  The form data is held in the \"params\" argument.\n  The value of a named parameter can be extracted from the \"params\" array in two ways:\n    \n      Using the get_keyword function:\n         declare x varchar;\nx := get_keyword('fieldname', params, 'default value');\n      Using the {?'variable_name'} VSP shortcut.\n         x := {?'fieldname'};\n    \n\n\nForm example - A Simple Calculator.\nThe user can enter two numbers, and choose a desired operation.\nPressing the \"=\" button causes the form to be sent to the server. The VSP execution will show the result of\nthe calculation. This example uses the get_keyword function to retrieve the parameters.\n\nForm example - Insert table data\nThe second example demonstrates inserting the user entered form data into a table.\nThis example uses the {?''} shortcuts for accessing the form data. The data in the table will be shown\nbelow the form, ordered by date. You must run the sample SQL first to create the table.\n\nNote\nNote that both examples do not handle the SQL errors.\nThe handling of SQL errors in VSPs will be described in section \"VS-B-6\".\n\n" ;
	sioc:description	"How to access form data." ;
	sioc:has_container	ns2:web ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:02 GMT" ;
	content:encoded	"\nPreliminaries\n\n    Data supplied to a VSP is normally posted from a form.\n    Pressing a form submit button causes the browser to pass the data to the server.\n    The form data may be encoded in two forms: www-url-encoded or multipart/form-data.\n\n\nProcessing of the form data in VSPs.\n\n  When the request arrives, the web server parses the request and creates three input arguments for VSP processing:\n  \n    path - array with path elements of the requested URL path. Ie. if the request is &quot;http://foo.bar/a/b/c&quot; then &quot;path&quot; argument will be a vector (&#39;a&#39;,&#39;b&#39;,&#39;c&#39;).\n    params - array with name and value pairs of the passed form parameters\n    lines - the vector of HTTP request header lines\n  \n  The form data is held in the &quot;params&quot; argument.\n  The value of a named parameter can be extracted from the &quot;params&quot; array in two ways:\n    \n      Using the get_keyword function:\n         declare x varchar;\nx := get_keyword(&#39;fieldname&#39;, params, &#39;default value&#39;);\n      Using the {?&#39;variable_name&#39;} VSP shortcut.\n         x := {?&#39;fieldname&#39;};\n    \n\n\nForm example - A Simple Calculator.\nThe user can enter two numbers, and choose a desired operation.\nPressing the &quot;=&quot; button causes the form to be sent to the server. The VSP execution will show the result of\nthe calculation. This example uses the get_keyword function to retrieve the parameters.\n\nForm example - Insert table data\nThe second example demonstrates inserting the user entered form data into a table.\nThis example uses the {?&#39;&#39;} shortcuts for accessing the form data. The data in the table will be shown\nbelow the form, ordered by date. You must run the sample SQL first to create the table.\n\nNote\nNote that both examples do not handle the SQL errors.\nThe handling of SQL errors in VSPs will be described in section &quot;VS-B-6&quot;.\n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"Emitting Output to the User Agent" ;
	sioc:content	"\nPreliminaries\n\nThe Virtuoso Web server writes the content that is to be sent into the internal string session.\nThe internal string session will be sent to the user-agent after VSP execution (if there is no unhandled SQL errors).\nThere is full control over an internal session. It can be cleared, filled and flushed.\nNote when flushing an internal session the task will be executed in background, and no output will be sent after this action.\nThe character data can be encoded in various ways. A default encoding (CharSet) can be defined in the database INI file\n\n\nHTTP session control functions\n\n  http() - writes a string into the internal string session without conversion.\n  http_value() - writes a string with escapes into the internal string session.\n  http_rewrite() - clears the internal string session\n  http_flush() - flushes the internal string to the user-agent and continues processing in background.\n  <?=var ?> - a shortcut to write a variable (or function) from an HTML section.\n\n\nHTTP formatting and charset functions\n\n  sprintf() - the special codes %V and %U used for HTML and URL escaping respectively.\n  http_url() - converts argument to a URL escaping special characters. Result written to internal session.\n  http_value() - converts argument to HTML escaping special characters. Result written to internal session.\n  current_charset() - returns name of the current charset.\n\n\n\nExamples\n\n  Use of http().\n  Use of http_value().\n  Use of http_rewrite().\n  Use of http_url().\n  Use of <?= ?> tags.\n  Use of sprintf().\n\n\n" ;
	sioc:description	"How to send data to the user-agents" ;
	sioc:has_container	ns2:web ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:02 GMT" ;
	content:encoded	"\nPreliminaries\n\nThe Virtuoso Web server writes the content that is to be sent into the internal string session.\nThe internal string session will be sent to the user-agent after VSP execution (if there is no unhandled SQL errors).\nThere is full control over an internal session. It can be cleared, filled and flushed.\nNote when flushing an internal session the task will be executed in background, and no output will be sent after this action.\nThe character data can be encoded in various ways. A default encoding (CharSet) can be defined in the database INI file\n\n\nHTTP session control functions\n\n  http() - writes a string into the internal string session without conversion.\n  http_value() - writes a string with escapes into the internal string session.\n  http_rewrite() - clears the internal string session\n  http_flush() - flushes the internal string to the user-agent and continues processing in background.\n  &lt;?=var ?&gt; - a shortcut to write a variable (or function) from an HTML section.\n\n\nHTTP formatting and charset functions\n\n  sprintf() - the special codes %V and %U used for HTML and URL escaping respectively.\n  http_url() - converts argument to a URL escaping special characters. Result written to internal session.\n  http_value() - converts argument to HTML escaping special characters. Result written to internal session.\n  current_charset() - returns name of the current charset.\n\n\n\nExamples\n\n  Use of http().\n  Use of http_value().\n  Use of http_rewrite().\n  Use of http_url().\n  Use of &lt;?= ?&gt; tags.\n  Use of sprintf().\n\n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"Controlling the Response Header" ;
	sioc:content	"\nPreliminaries\n\nThe behavior of the user-agents (Eg. browser) depends on the server's HTTP response.\nThe HTTP responses are: positive (2xx), informative (1xx), redirection(3xx), client error(4xx), server error(5xx).\nThe Virtuoso Web server automatically generates positive, client error and server error codes.\nThe http_request_status() function overwrites the default response. Example:\nhttp_request_status ('HTTP/1.1 404 Not found');\nNote that the response line MUST begin with \"HTTP/1.1 \", and numeric code MUST be one described in RFC2616.\nSome responses require additional information in the HTTP response header.\nThe functions for setting the additional lines in a response header are:\n \n http_header() - accept a response header line(s) as string. If more than one line is supplied, they must be\n separated with <CR><LF> characters. Note that the string must always finish with <CR><LF> chars. Subsequent calls of this function replace the old response.\n http_header_get() - returns the HTTP response header currently defined. It is useful when you need to append\n more lines.\n \n\n\nRedirection example\nThe first example demonstrates a redirection to another page. It uses http_request_status() and http_header()\nfunctions to set redirection code 'HTTP/1.1 302 Found' and 'Location:' header line in the response.\n\nIf a document has moved to another url, it's possible to redirect using a meta tag within the <head>\nof a page. However using the method in this example, the redirection can be dynamic and conditional.\n\n\nLoad random Images\nThe second example demonstrates loading random images onto a page.\nThree images are loaded into the page by calling the vsp to generate each image.\nEach image URL is made unique by including a pic parameter. This does not imply the images will\nbe different, however it stops the browser from reusing one image three times.\n\nThe image content is made by setting the 'Content-Type' header field of the response to the 'image/gif',\nthen returning a randomly chosen block of Gif data.\nA real world use for a random image, is to show an advertising banner graphic.\nRather than change the url for the banner, the actual image content is controlled.\nThis technique might also be useful for changing an appearance of a web page based on some\ncriteria such as if the user has membership access or the time of day is either day or night to show\na sun or moon image.\n\n" ;
	sioc:description	"How to control the HTTP response from VSP" ;
	sioc:has_container	ns2:web ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:02 GMT" ;
	content:encoded	"\nPreliminaries\n\nThe behavior of the user-agents (Eg. browser) depends on the server&#39;s HTTP response.\nThe HTTP responses are: positive (2xx), informative (1xx), redirection(3xx), client error(4xx), server error(5xx).\nThe Virtuoso Web server automatically generates positive, client error and server error codes.\nThe http_request_status() function overwrites the default response. Example:\nhttp_request_status (&#39;HTTP/1.1 404 Not found&#39;);\nNote that the response line MUST begin with &quot;HTTP/1.1 &quot;, and numeric code MUST be one described in RFC2616.\nSome responses require additional information in the HTTP response header.\nThe functions for setting the additional lines in a response header are:\n \n http_header() - accept a response header line(s) as string. If more than one line is supplied, they must be\n separated with &lt;CR&gt;&lt;LF&gt; characters. Note that the string must always finish with &lt;CR&gt;&lt;LF&gt; chars. Subsequent calls of this function replace the old response.\n http_header_get() - returns the HTTP response header currently defined. It is useful when you need to append\n more lines.\n \n\n\nRedirection example\nThe first example demonstrates a redirection to another page. It uses http_request_status() and http_header()\nfunctions to set redirection code &#39;HTTP/1.1 302 Found&#39; and &#39;Location:&#39; header line in the response.\n\nIf a document has moved to another url, it&#39;s possible to redirect using a meta tag within the &lt;head&gt;\nof a page. However using the method in this example, the redirection can be dynamic and conditional.\n\n\nLoad random Images\nThe second example demonstrates loading random images onto a page.\nThree images are loaded into the page by calling the vsp to generate each image.\nEach image URL is made unique by including a pic parameter. This does not imply the images will\nbe different, however it stops the browser from reusing one image three times.\n\nThe image content is made by setting the &#39;Content-Type&#39; header field of the response to the &#39;image/gif&#39;,\nthen returning a randomly chosen block of Gif data.\nA real world use for a random image, is to show an advertising banner graphic.\nRather than change the url for the banner, the actual image content is controlled.\nThis technique might also be useful for changing an appearance of a web page based on some\ncriteria such as if the user has membership access or the time of day is either day or night to show\na sun or moon image.\n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"Error Recovery" ;
	sioc:content	"\nPreliminaries\n\nWhen processing some form data in VSPs, there may be errors in the PL code (for example due to deadlock condition).\nThe most popular way of catching the SQL errors is to declare an exception handler.\ndeclare error varchar;\nerror := null;\ndeclare exit handler for sqlstate '*', not found result { error := __SQL_MESSAGE; };\n {\n    -- some operation(s) that may cause a SQL error\n }\nif (error is not null)\n  -- print the error message\nTo simplify VSP production, the error handler can be written in a common file and included in each page.\nThe external file can be included using the following markup:\n<?include path_to_the_external_file.extension ?>\n\n\nDeadlock Example\nThe first example demonstrates the creation of a universal deadlock handler.\nIf this file is included in any VSP the deadlock condition will cause a retry up to 3 times on an\noperation that follows the handler. The VSP simulates the deadlock situation by signalling the error.\nThe error handler is therefore called.\n\nCalculator with error handler\nThe second example is the vs_b_3 Calculator example. In this example there is an added handler to trap\nerrors such as division by zero, and entering characters instead of numbers.\n" ;
	sioc:description	"Error handling in VSPs" ;
	sioc:has_container	ns2:web ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:02 GMT" ;
	content:encoded	"\nPreliminaries\n\nWhen processing some form data in VSPs, there may be errors in the PL code (for example due to deadlock condition).\nThe most popular way of catching the SQL errors is to declare an exception handler.\ndeclare error varchar;\nerror := null;\ndeclare exit handler for sqlstate &#39;*&#39;, not found result { error := __SQL_MESSAGE; };\n {\n    -- some operation(s) that may cause a SQL error\n }\nif (error is not null)\n  -- print the error message\nTo simplify VSP production, the error handler can be written in a common file and included in each page.\nThe external file can be included using the following markup:\n&lt;?include path_to_the_external_file.extension ?&gt;\n\n\nDeadlock Example\nThe first example demonstrates the creation of a universal deadlock handler.\nIf this file is included in any VSP the deadlock condition will cause a retry up to 3 times on an\noperation that follows the handler. The VSP simulates the deadlock situation by signalling the error.\nThe error handler is therefore called.\n\nCalculator with error handler\nThe second example is the vs_b_3 Calculator example. In this example there is an added handler to trap\nerrors such as division by zero, and entering characters instead of numbers.\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"User Records" ;
	sioc:content	"\nUser record Example\nThe object of the exercise is to handle form data, and data held in a table.\nThis is achieved with 4 separate stages. Each stage has a separate file.\n\n  Create a user table with a login name, password, real name and address. The login name is the primary key. This table can be made with a SQL file.\n  Write an application which gets data from a form and inserts it into a table.\n  Write a form to prompt for login details and pass to the query page.\n  Write a form for querying the table based on the login name. The login name in the query form will be a SQL LIKE string.\n\nThis example would be used in web sites that have some form of membership to gain access\nto information.\n" ;
	sioc:description	"VSP exercise to create user records" ;
	sioc:has_container	ns2:web ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:02 GMT" ;
	content:encoded	"\nUser record Example\nThe object of the exercise is to handle form data, and data held in a table.\nThis is achieved with 4 separate stages. Each stage has a separate file.\n\n  Create a user table with a login name, password, real name and address. The login name is the primary key. This table can be made with a SQL file.\n  Write an application which gets data from a form and inserts it into a table.\n  Write a form to prompt for login details and pass to the query page.\n  Write a form for querying the table based on the login name. The login name in the query form will be a SQL LIKE string.\n\nThis example would be used in web sites that have some form of membership to gain access\nto information.\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"Media Archive" ;
	sioc:content	"\nOverview\nThe media archive shall demonstrate a way to upload files and also to download them.\nThe web page shows the upload feature, and download list at the same time.\n\nUpload Media\n\n  The file upload form allows an arbitrary file to be browsed and uploaded.\n  The input control is of type FILE for the upload field.\n  The ENCTYPE of the form must be a \"multipart/form-data\", so that the uploaded file data and type (attr-file) is accessible to the VSP.\n\n\nDownload media\n\n  Display a list of stored files on a single page and have a download link to each.\n  The default name in the download box must be the original file name.\n  The INLINEFILE pseudo directory shall be used to set the original name of a file.\n  The \"Content-Type\" header must be set to original media type.\n  Note that INLINEFILE pseudo URL needs a parameter \"VSP\", this parameter MUST contain the target VSP link encoded as URL.\n\n" ;
	sioc:description	"Creating a simple file storage system using an SQL table" ;
	sioc:has_container	ns2:web ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:02 GMT" ;
	content:encoded	"\nOverview\nThe media archive shall demonstrate a way to upload files and also to download them.\nThe web page shows the upload feature, and download list at the same time.\n\nUpload Media\n\n  The file upload form allows an arbitrary file to be browsed and uploaded.\n  The input control is of type FILE for the upload field.\n  The ENCTYPE of the form must be a &quot;multipart/form-data&quot;, so that the uploaded file data and type (attr-file) is accessible to the VSP.\n\n\nDownload media\n\n  Display a list of stored files on a single page and have a download link to each.\n  The default name in the download box must be the original file name.\n  The INLINEFILE pseudo directory shall be used to set the original name of a file.\n  The &quot;Content-Type&quot; header must be set to original media type.\n  Note that INLINEFILE pseudo URL needs a parameter &quot;VSP&quot;, this parameter MUST contain the target VSP link encoded as URL.\n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"Header Parsing Functions" ;
	sioc:content	"\nPreliminaries\n\n  The HTTP request header contains lines of request information.\n  Every user-agent (browser) sends at least one request line to the Web server.\n  The \"lines\" argument in VSPs is an array of the user-agent request lines.\n\n\nMethods for accessing the request parameters\n\n  A specific attribute can be accessed with the http_request_header() function.\n  The header lines can be accessed with aref() function.\n  Parsing the header line can be done with the split_and_decode() function.\n\n\nCookie Demo\nThis example shows how to set a cookie in the user-agent, and displaying a cookie string when retrieved. \n\n  Setting the cookie is done with the http_header() function. (see also:VS-B-5)\n  Retrieving the cookie string is done with http_request_header() function.\n\n" ;
	sioc:description	"Header Parsing Functions (Cookie Example)" ;
	sioc:has_container	ns2:web ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:02 GMT" ;
	content:encoded	"\nPreliminaries\n\n  The HTTP request header contains lines of request information.\n  Every user-agent (browser) sends at least one request line to the Web server.\n  The &quot;lines&quot; argument in VSPs is an array of the user-agent request lines.\n\n\nMethods for accessing the request parameters\n\n  A specific attribute can be accessed with the http_request_header() function.\n  The header lines can be accessed with aref() function.\n  Parsing the header line can be done with the split_and_decode() function.\n\n\nCookie Demo\nThis example shows how to set a cookie in the user-agent, and displaying a cookie string when retrieved. \n\n  Setting the cookie is done with the http_header() function. (see also:VS-B-5)\n  Retrieving the cookie string is done with http_request_header() function.\n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"Simple VSPX controls" ;
	sioc:content	"\n    Preliminaries\n    \n    The framework named Virtuoso Server Pages Extensions (VSPX) is a set of widgets (controls)\n    which are executed on server side. The VSPX page itself is an active page which contains\n    XHTML, VSP and widget code.  The VSPX page like VSP is a server side executable, so in both cases the virtual\n    directory where pages are placed needs to be executable. For the details of virtual directory setup\n    please read VS-B-1.\n    \n    \n    It might appear that VSPX pages and VSP pages are similar, but in practice there are differences:\n    \n    \n      The content of a VSPX page must be well-formed XML (like XHTML), in contrast to a VSP page\n        where this is not mandatory.\n      VSPX pages have a container element named \"page\", VSP pages do not (they are processing instruction\n        based).\n      The controls and containers in the VSPX page are in a special name space:\n        \"http://www.openlinksw.com/vspx/\", we will alias it with the prefix \"vspx:\" for the controls in the rest\n        of the tutorials.\n      Any active content must be in vspx:page container, and no more than one vspx:page can be in a\n        separate VSPX source file.\n      The VSPX pages are compiled to a more complex structure than VSPs.\n      The processing model of VSPX pages have five phases on execution: initialization, data-binding,\n        post processing, pre-rendering and rendering. VSP only has pre-processing, and execution.\n\t\tFor more details please read the VSPX section in the Virtuoso server documentation.\n      The VSPX page may contain one or more controls, VSPs do not have components. Also each control\n        in the VSPX page (and page container itself) represents a user defined type (class).\n    \n    As VSPX pages may contain macros and may have a pre-processing XSL-T transformation, an intermediate\n      file will be generated in the same place where the source page is. Also the compilation will generate a SQL\n      script as a file before compilation of PL code in memory. These files will be explained later in the\n      VX-S-8 example.\n    Finally there are several notes about VSPX controls (widgets). They need to have unique names in the\n      page space, including the macro expanded ones. It is not mandatory for the page name to be unique in the\n      Web server space. All of the controls are represented by trees of class instances, where each member vc_children\n      contains instances to the children controls.\n  \n    Example\n    \n      The example shows a simple page containing a vspx:page container and basic controls: vspx:label, vspx:url\n      and vspx:include. The vspx:page container (as already discussed) can contain any executable content,\n      but it may not be the topmost element in the page as we may see in the source of simple.vspx page. It also\n      shows how VSP processing instructions can be nested in the VSPX page. On that point we need to say that a\n      good VSPX programming style is to use very minimal VSP code to get the benefit of widgets.\n    \n    \n    The rest of the controls used in this example can be placed in any other control or container allowing content.\n    The special case is vspx:include which we will discuss later.\n    \n    \n      The vspx:label is the simplest text label which can be data bound. The \"data bound\" term designates the ability\n      of the control to obtain a value (it may be constant or Virtuoso/PL expression) on data bind phase when the page\n      gets executed. The format attribute is used to render the data, so it depends on the data type of the control's\n      value. In practice it's a format string as in sprintf() function. In that example the first label has\n      string value and the format is '%s', but second one is integer and the format used is '%d'.\n    \n    \n      The vspx:url represents a HTML anchor, but value and url are data bind-able. We can talk about it as\n      an extended functionality of the vspx:label control.\n    \n    \n      The last one is a vspx:include control. This is not a control per se, it's rather a place where the\n      expanded content of another document will be placed before VSPX page compilation. In that way we can easily\n      re-use common code between different pages. In that particular case the included file is very simple,\n      but it can also be another VSPX page. With this approach VSPX pages have more complex ways to do macro\n      expansions which will be explained in detail in VX-S-8.\n    \n  " ;
	sioc:description	"Building a VSPX page" ;
	sioc:has_container	ns2:web ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:02 GMT" ;
	content:encoded	"\n    Preliminaries\n    \n    The framework named Virtuoso Server Pages Extensions (VSPX) is a set of widgets (controls)\n    which are executed on server side. The VSPX page itself is an active page which contains\n    XHTML, VSP and widget code.  The VSPX page like VSP is a server side executable, so in both cases the virtual\n    directory where pages are placed needs to be executable. For the details of virtual directory setup\n    please read VS-B-1.\n    \n    \n    It might appear that VSPX pages and VSP pages are similar, but in practice there are differences:\n    \n    \n      The content of a VSPX page must be well-formed XML (like XHTML), in contrast to a VSP page\n        where this is not mandatory.\n      VSPX pages have a container element named &quot;page&quot;, VSP pages do not (they are processing instruction\n        based).\n      The controls and containers in the VSPX page are in a special name space:\n        &quot;http://www.openlinksw.com/vspx/&quot;, we will alias it with the prefix &quot;vspx:&quot; for the controls in the rest\n        of the tutorials.\n      Any active content must be in vspx:page container, and no more than one vspx:page can be in a\n        separate VSPX source file.\n      The VSPX pages are compiled to a more complex structure than VSPs.\n      The processing model of VSPX pages have five phases on execution: initialization, data-binding,\n        post processing, pre-rendering and rendering. VSP only has pre-processing, and execution.\n\t\tFor more details please read the VSPX section in the Virtuoso server documentation.\n      The VSPX page may contain one or more controls, VSPs do not have components. Also each control\n        in the VSPX page (and page container itself) represents a user defined type (class).\n    \n    As VSPX pages may contain macros and may have a pre-processing XSL-T transformation, an intermediate\n      file will be generated in the same place where the source page is. Also the compilation will generate a SQL\n      script as a file before compilation of PL code in memory. These files will be explained later in the\n      VX-S-8 example.\n    Finally there are several notes about VSPX controls (widgets). They need to have unique names in the\n      page space, including the macro expanded ones. It is not mandatory for the page name to be unique in the\n      Web server space. All of the controls are represented by trees of class instances, where each member vc_children\n      contains instances to the children controls.\n  \n    Example\n    \n      The example shows a simple page containing a vspx:page container and basic controls: vspx:label, vspx:url\n      and vspx:include. The vspx:page container (as already discussed) can contain any executable content,\n      but it may not be the topmost element in the page as we may see in the source of simple.vspx page. It also\n      shows how VSP processing instructions can be nested in the VSPX page. On that point we need to say that a\n      good VSPX programming style is to use very minimal VSP code to get the benefit of widgets.\n    \n    \n    The rest of the controls used in this example can be placed in any other control or container allowing content.\n    The special case is vspx:include which we will discuss later.\n    \n    \n      The vspx:label is the simplest text label which can be data bound. The &quot;data bound&quot; term designates the ability\n      of the control to obtain a value (it may be constant or Virtuoso/PL expression) on data bind phase when the page\n      gets executed. The format attribute is used to render the data, so it depends on the data type of the control&#39;s\n      value. In practice it&#39;s a format string as in sprintf() function. In that example the first label has\n      string value and the format is &#39;%s&#39;, but second one is integer and the format used is &#39;%d&#39;.\n    \n    \n      The vspx:url represents a HTML anchor, but value and url are data bind-able. We can talk about it as\n      an extended functionality of the vspx:label control.\n    \n    \n      The last one is a vspx:include control. This is not a control per se, it&#39;s rather a place where the\n      expanded content of another document will be placed before VSPX page compilation. In that way we can easily\n      re-use common code between different pages. In that particular case the included file is very simple,\n      but it can also be another VSPX page. With this approach VSPX pages have more complex ways to do macro\n      expansions which will be explained in detail in VX-S-8.\n    \n  \n " ;
	rdf:type	foaf:Document ;
	dc:title	"Generic VSPX form controls" ;
	sioc:content	"\n    Simple form and field validation example\n    The vspx:form control represents scriptable container of a HTML form.\n    It may contains several other controls which are represented below. In the \n    form.vspx example the form contains two vspx:label, two vspx:text and vspx:button controls. \n    In that way vspx:form behaves as control and container, as it may contain other controls and have rendition.\n    The vspx:label controls are shown in that example again to see that these can be used as a child of any vspx: container. Also the values of vspx:label are data bound to the name of control and name of page class.  \n    \n    The vspx:text is a text input control which can accept data from user. It may have modifiers which only change appearance from text to password or hidden field. In that example the vspx:text controls are in their default form.\n    The vspx:button control is a generic scriptable button, which originates post events. In practice it renders as a submit button, but with modifiers it can appear as image or link, so in that cases client-side Java scripts are generated to allow posting.\n    The last in that example we should notice is vspx:validator components assigned to the vspx:text fields. These are used to perform server-side validation of data entered by user.\n    So in short the page will display two fields to enter a data, which must be integer numbers. Where the second one must be in the range from 10 to 20. If you enter a different value an error will appear.\n  \n    Check-box example\n    This example presents a scriptable check-box (vspx:check-box) and submit button which is modified to look-like as link. Changing a state of check-box and posting a form will change the value of the label at the bottom.\n  \n    Radio and radio group controls\n    The radio-button and radio-group represented in this example shows \n    usage of radio controls. The main difference in approach is using a container to designate group of radio boxes or to use attribute \"group-name\" to do that. These are used as a scriptable variant of radio button in HTML.\n    \n  \n    Select list example\n    This example shows the usage of select-list control, which is a VSPX analogue of the select control.\n    Its members must be pre-defined with vspx:item controls which are similar to \"option\" in HTML variant. \n    \n  \n    Text area example\n    Sometimes a free-form text needs to be entered in a forms, in that case (in HTML practice) textarea is used. In the VSPX world the scriptable variant of it is vspx:textarea. This example shows simple form allowing 50 chars at max to be entered.\n  \n    Inter-field form validation\n    As we noticed in the last and first example we have a vspx:validators to control the user input.\n    But they was per text field. What if we need to check two or more inputs against each other in some order? \n    In that case we can use the form validation. The date.vspx example shows two fields to be filled as date strings. \n    Each filed is tested to be valid date string, and finally if first date is below second the validation will be passed. This is done with validator assigned to the vspx:form control. The default values are initialized to be in incorrect order to see validation on first hit. \n    \n  " ;
	sioc:description	"Scriptable form and form controls" ;
	sioc:has_container	ns2:web ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:02 GMT" ;
	content:encoded	"\n    Simple form and field validation example\n    The vspx:form control represents scriptable container of a HTML form.\n    It may contains several other controls which are represented below. In the \n    form.vspx example the form contains two vspx:label, two vspx:text and vspx:button controls. \n    In that way vspx:form behaves as control and container, as it may contain other controls and have rendition.\n    The vspx:label controls are shown in that example again to see that these can be used as a child of any vspx: container. Also the values of vspx:label are data bound to the name of control and name of page class.  \n    \n    The vspx:text is a text input control which can accept data from user. It may have modifiers which only change appearance from text to password or hidden field. In that example the vspx:text controls are in their default form.\n    The vspx:button control is a generic scriptable button, which originates post events. In practice it renders as a submit button, but with modifiers it can appear as image or link, so in that cases client-side Java scripts are generated to allow posting.\n    The last in that example we should notice is vspx:validator components assigned to the vspx:text fields. These are used to perform server-side validation of data entered by user.\n    So in short the page will display two fields to enter a data, which must be integer numbers. Where the second one must be in the range from 10 to 20. If you enter a different value an error will appear.\n  \n    Check-box example\n    This example presents a scriptable check-box (vspx:check-box) and submit button which is modified to look-like as link. Changing a state of check-box and posting a form will change the value of the label at the bottom.\n  \n    Radio and radio group controls\n    The radio-button and radio-group represented in this example shows \n    usage of radio controls. The main difference in approach is using a container to designate group of radio boxes or to use attribute &quot;group-name&quot; to do that. These are used as a scriptable variant of radio button in HTML.\n    \n  \n    Select list example\n    This example shows the usage of select-list control, which is a VSPX analogue of the select control.\n    Its members must be pre-defined with vspx:item controls which are similar to &quot;option&quot; in HTML variant. \n    \n  \n    Text area example\n    Sometimes a free-form text needs to be entered in a forms, in that case (in HTML practice) textarea is used. In the VSPX world the scriptable variant of it is vspx:textarea. This example shows simple form allowing 50 chars at max to be entered.\n  \n    Inter-field form validation\n    As we noticed in the last and first example we have a vspx:validators to control the user input.\n    But they was per text field. What if we need to check two or more inputs against each other in some order? \n    In that case we can use the form validation. The date.vspx example shows two fields to be filled as date strings. \n    Each filed is tested to be valid date string, and finally if first date is below second the validation will be passed. This is done with validator assigned to the vspx:form control. The default values are initialized to be in incorrect order to see validation on first hit. \n    \n  \n " ;
	rdf:type	foaf:Document ;
	dc:title	"Data-bound VSPX controls" ;
	sioc:content	"\n    Select list initialized from SQL select statement\n    \n    The power of VSPX controls is easy way to bind to a Database objects as tables.\n    In the selectdb.vspx file is shown an easy way to initialize a simple select list from database data. \n    This example shows Products from Nortwind database rendered as select list.\n    The focus on this control is vspx:data-list control. It's initialized with select statement,\n     so the key and value attributes are used to designate what to be used for the drop-down box.\n    \n  \n    Updating a Database table row via VSPX update form\n    \n    Beside showing a data in a form, the database data need to be changed via forms. \n    The most easy way to do that is to use vspx:form with modifier attribute \"type\" with value of 'update'.\n    The vspx:form[type='update'] used as container of few more elements:\n    \n    \n    vspx:key - binder to a specific row, can be one or more. Usually it's a primary key. Note that this is a not a control, it's a marker in the update form.\n    vspx:template[type='if-exists'] - this is a wrapper class for content to be shown under specific condition. In that case as if-not-exists template is not specified, content of this will be shown in both situations. In other words this example will show content of that template always. The difference will be in value of the fields inside it.\n    vspx:text - it's used to show the data on the row, and accept the data to be updated. These fields have attribute \"column\" which designate column to be used for data rendition and update. Actually they are inside a template, but logically they are linked to the update form.\n    vspx:button - this is a submit button used to submit the form. \n    \n    The example will:\n    \n \t\t\tinsert a record in Demo.demo.Customers table if CustomerID doesn'y exists \n \t\t\twill update the CompanyName column if CustomerID is set.\n    \n\n  \n    Updating a enumerated values in a Database table\n    To run this example we will first need to setup the initial state (using the link beside SQL script, see bellow). This action will cerate a simple table for the next experiment with update form. In some cases we need to enumerate values to the given column in Database table. In this example we will use a vspx:radio-button bound to the column to represent the data value and to allow it's modification to the some degree. (The degree is possible values allowed by group of radio-buttons).\n    \n    \n    In practice we are repeating the previous example but instead using of vspx:text to enter the data , we will use a vspx:radio-button for the second column. The pane at the bottom of demo page shows the result of update, clicking a link of a 'e-id' will load appropriate record to the update form. The button is used to update the data row as in previous example.\n    \n  \n    Simple scroll-able edit-able data grid (vspx:data-set)\n    The most complex control used to view and modify the data in a Database tables is vspx:data-set.\n    This control represents a result set from a SQL select statement as a table (or some other form depending of templates used) and allows scrolling, editing, inserting or deleting a row. In practice it's a combination of scroll-able grid plus one or two update forms. In the example data_set.vspx is shown navigation over Northwind's Customers table. So the following should be noticed in the demo source:\n    \n    \n    The vspx:data-set contains a two simple templates for the header and footer.\n    The middle template is special denoted by \"repeat\" value of \"type\" attribute, it's used to render the row in a grid, form to insert, update form in place of a row in a focus and for case of empty result.\n    The repeat template contains four templates for each case as discussed above\n    The template[if-not-exists] will be rendered when no data found\n    The template[edit] will be displayed when edit button is selected\n    The template[add] will be always displayed, if specified\n    The template[browse] is a one per row to show the content on each row\n    The buttons for scrolling as [ds]_next and [ds]_prev must be defined with these suffixes.\n    The above applies to [ds]_edit, [ds]_delete and [ds]_select. In other words some buttons in data-set must have special names.\n    \n  " ;
	sioc:description	"Linking a DB data into a VSPX controls" ;
	sioc:has_container	ns2:web ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:02 GMT" ;
	content:encoded	"\n    Select list initialized from SQL select statement\n    \n    The power of VSPX controls is easy way to bind to a Database objects as tables.\n    In the selectdb.vspx file is shown an easy way to initialize a simple select list from database data. \n    This example shows Products from Nortwind database rendered as select list.\n    The focus on this control is vspx:data-list control. It&#39;s initialized with select statement,\n     so the key and value attributes are used to designate what to be used for the drop-down box.\n    \n  \n    Updating a Database table row via VSPX update form\n    \n    Beside showing a data in a form, the database data need to be changed via forms. \n    The most easy way to do that is to use vspx:form with modifier attribute &quot;type&quot; with value of &#39;update&#39;.\n    The vspx:form[type=&#39;update&#39;] used as container of few more elements:\n    \n    \n    vspx:key - binder to a specific row, can be one or more. Usually it&#39;s a primary key. Note that this is a not a control, it&#39;s a marker in the update form.\n    vspx:template[type=&#39;if-exists&#39;] - this is a wrapper class for content to be shown under specific condition. In that case as if-not-exists template is not specified, content of this will be shown in both situations. In other words this example will show content of that template always. The difference will be in value of the fields inside it.\n    vspx:text - it&#39;s used to show the data on the row, and accept the data to be updated. These fields have attribute &quot;column&quot; which designate column to be used for data rendition and update. Actually they are inside a template, but logically they are linked to the update form.\n    vspx:button - this is a submit button used to submit the form. \n    \n    The example will:\n    \n \t\t\tinsert a record in Demo.demo.Customers table if CustomerID doesn&#39;y exists \n \t\t\twill update the CompanyName column if CustomerID is set.\n    \n\n  \n    Updating a enumerated values in a Database table\n    To run this example we will first need to setup the initial state (using the link beside SQL script, see bellow). This action will cerate a simple table for the next experiment with update form. In some cases we need to enumerate values to the given column in Database table. In this example we will use a vspx:radio-button bound to the column to represent the data value and to allow it&#39;s modification to the some degree. (The degree is possible values allowed by group of radio-buttons).\n    \n    \n    In practice we are repeating the previous example but instead using of vspx:text to enter the data , we will use a vspx:radio-button for the second column. The pane at the bottom of demo page shows the result of update, clicking a link of a &#39;e-id&#39; will load appropriate record to the update form. The button is used to update the data row as in previous example.\n    \n  \n    Simple scroll-able edit-able data grid (vspx:data-set)\n    The most complex control used to view and modify the data in a Database tables is vspx:data-set.\n    This control represents a result set from a SQL select statement as a table (or some other form depending of templates used) and allows scrolling, editing, inserting or deleting a row. In practice it&#39;s a combination of scroll-able grid plus one or two update forms. In the example data_set.vspx is shown navigation over Northwind&#39;s Customers table. So the following should be noticed in the demo source:\n    \n    \n    The vspx:data-set contains a two simple templates for the header and footer.\n    The middle template is special denoted by &quot;repeat&quot; value of &quot;type&quot; attribute, it&#39;s used to render the row in a grid, form to insert, update form in place of a row in a focus and for case of empty result.\n    The repeat template contains four templates for each case as discussed above\n    The template[if-not-exists] will be rendered when no data found\n    The template[edit] will be displayed when edit button is selected\n    The template[add] will be always displayed, if specified\n    The template[browse] is a one per row to show the content on each row\n    The buttons for scrolling as [ds]_next and [ds]_prev must be defined with these suffixes.\n    The above applies to [ds]_edit, [ds]_delete and [ds]_select. In other words some buttons in data-set must have special names.\n    \n  \n " ;
	rdf:type	foaf:Document ;
	dc:title	"Order Entry Form using VSPX controls" ;
	sioc:content	"\nExample\n\n  The form accepts data for entering an order into the demo database.\n  The arguments contain the customer id, item to order and quantity.\n  The web page will take the data and execute a procedure via custom on-post handler.\n  It will display the status of the execution.\n \n" ;
	sioc:description	"Order Entry Form" ;
	sioc:has_container	ns2:web ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:02 GMT" ;
	content:encoded	"\nExample\n\n  The form accepts data for entering an order into the demo database.\n  The arguments contain the customer id, item to order and quantity.\n  The web page will take the data and execute a procedure via custom on-post handler.\n  It will display the status of the execution.\n \n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"XForms 1.0 rendering" ;
	sioc:content	"\n    Preliminaries\n    \n\tThe VSPX (Virtuoso Server Pages Extensions) framework allows \n\tform controls to be rendered as XForms 1.0 components. \n\tThis approach take an advantage to check input field's data-type \n\tand to restrict value using XML-Schema constraints. Thus \n        it's possible to make user agent performs input validation \n        before sending a data back to server.\t\n\tIt's IMPORTANT that this approach is only possible with browsers\n\tthat have a plug-in or natively supports XForms 1.0.\n    \n\nVSPX to XForms input rendering\n\n    This example works with IE6 or greater with FormsPlayer installed.\n    \n    The example shows turning on the flag for XForms rendering : \"connection_set ('RenderXForms', 1)\"\n    In the simple form all generic input controls are represented.\n    When submit is performed, data as XML document will be sent back to server and \n\twill be prepared on server side as well-known 'params' array.\n    \n\n\n    As can be seen the XForms rendering do not require any changes to existing VSPX pages (except logic to turn it on).\n\n" ;
	sioc:description	"Rendering VSPX form controls as XForms 1.0 components" ;
	sioc:has_container	ns2:web ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:02 GMT" ;
	content:encoded	"\n    Preliminaries\n    \n\tThe VSPX (Virtuoso Server Pages Extensions) framework allows \n\tform controls to be rendered as XForms 1.0 components. \n\tThis approach take an advantage to check input field&#39;s data-type \n\tand to restrict value using XML-Schema constraints. Thus \n        it&#39;s possible to make user agent performs input validation \n        before sending a data back to server.\t\n\tIt&#39;s IMPORTANT that this approach is only possible with browsers\n\tthat have a plug-in or natively supports XForms 1.0.\n    \n\nVSPX to XForms input rendering\n\n    This example works with IE6 or greater with FormsPlayer installed.\n    \n    The example shows turning on the flag for XForms rendering : &quot;connection_set (&#39;RenderXForms&#39;, 1)&quot;\n    In the simple form all generic input controls are represented.\n    When submit is performed, data as XML document will be sent back to server and \n\twill be prepared on server side as well-known &#39;params&#39; array.\n    \n\n\n    As can be seen the XForms rendering do not require any changes to existing VSPX pages (except logic to turn it on).\n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"XML data binding" ;
	sioc:content	"\n    Preliminaries\n    Usually data-bound controls as data-list, data-set etc. are \n\tusing a relational data (from tables, local or remote). But in some cases data\n\tis available as XML, which is most convenient to use as such instead of \n\tfilling and using an intermediate table as data source. \n\tFor this cases VSPX components (which allows data-binding) supports special \n\tset of attributes (see documentation for details). With these attributes \n  it is possible to bind XML data to the control's value, row-set etc.  \t\n    \n\n    Repeatable content based on XML data\n    The following approaches are demonstrated: \n\n    Binding a XML data to VSPX components, instead of using relational data\n    Using XML manipulation routines to insert update or delete \n    XML data.\n\n\n    In details example itself shows:\n\n\n    Filling a select list from XML document\n    Filling a repeatable control (data-set) with XML data.\n    Custom ordering functionality in repeatable control, using XML manipulation routines.\n\n" ;
	sioc:description	"Using XML data for VSPX data-binding" ;
	sioc:has_container	ns2:web ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:02 GMT" ;
	content:encoded	"\n    Preliminaries\n    Usually data-bound controls as data-list, data-set etc. are \n\tusing a relational data (from tables, local or remote). But in some cases data\n\tis available as XML, which is most convenient to use as such instead of \n\tfilling and using an intermediate table as data source. \n\tFor this cases VSPX components (which allows data-binding) supports special \n\tset of attributes (see documentation for details). With these attributes \n  it is possible to bind XML data to the control&#39;s value, row-set etc.  \t\n    \n\n    Repeatable content based on XML data\n    The following approaches are demonstrated: \n\n    Binding a XML data to VSPX components, instead of using relational data\n    Using XML manipulation routines to insert update or delete \n    XML data.\n\n\n    In details example itself shows:\n\n\n    Filling a select list from XML document\n    Filling a repeatable control (data-set) with XML data.\n    Custom ordering functionality in repeatable control, using XML manipulation routines.\n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"VSPX tree control" ;
	sioc:content	"\n    Vertical oriented tree\n    \n    To display any data which can be represented as tree hierarchy,\n    the vspx:tree control can be used.  In it's forms it may be represented as \n    vertical or horizontal one. The following example show directory structure of the \n    VSPX tutorials on local file system.  \n    \n    \n    The vspx:tree control have three important attributes:\n    \n    \n      root - This is a name of PL procedure which must return nodes under root of tree\n      child-function - This evaluated on a node must return children nodes or empty if it's a leaf\n      start-path - This expression or constant is passed to the root function\n    \n    In our example the root and child functions returns a array of strings per directory or file, the '.' and '..' are omitted. In interest also are two special containers and one place-holder:\n    \n      leaf-template - the content of this template will be instantiated and rendered when current position in the tree is a leaf.\n      node-template - this will be instantiated and rendered on nodes, per each node. The place of next node is designated with \"node\" placeholder.\n      node - place-holder to mark-up place where child content must be instantiated.\n    \n    In that control like as in data-set may have special button suffixed with '[name of tree control]_toggle'. This will be rendered as other submit buttons (in our case it have image appearance), but it will have special function to expand or collapse the branch.\n  " ;
	sioc:description	"Directory tree browser" ;
	sioc:has_container	ns2:web ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:02 GMT" ;
	content:encoded	"\n    Vertical oriented tree\n    \n    To display any data which can be represented as tree hierarchy,\n    the vspx:tree control can be used.  In it&#39;s forms it may be represented as \n    vertical or horizontal one. The following example show directory structure of the \n    VSPX tutorials on local file system.  \n    \n    \n    The vspx:tree control have three important attributes:\n    \n    \n      root - This is a name of PL procedure which must return nodes under root of tree\n      child-function - This evaluated on a node must return children nodes or empty if it&#39;s a leaf\n      start-path - This expression or constant is passed to the root function\n    \n    In our example the root and child functions returns a array of strings per directory or file, the &#39;.&#39; and &#39;..&#39; are omitted. In interest also are two special containers and one place-holder:\n    \n      leaf-template - the content of this template will be instantiated and rendered when current position in the tree is a leaf.\n      node-template - this will be instantiated and rendered on nodes, per each node. The place of next node is designated with &quot;node&quot; placeholder.\n      node - place-holder to mark-up place where child content must be instantiated.\n    \n    In that control like as in data-set may have special button suffixed with &#39;[name of tree control]_toggle&#39;. This will be rendered as other submit buttons (in our case it have image appearance), but it will have special function to expand or collapse the branch.\n  \n " ;
	rdf:type	foaf:Document ;
	dc:title	"VSPX tab control" ;
	sioc:content	"\n    Example\n    The example presents vspx:tab control. It's used to show simultaneously content of one child container at time. The child container must be vspx:template, they are used to encapsulate other controls. The \"style\" attribute on \"tab\" controls designate automatic generation of select list to control switching between templates.\n    In interest is also \"initial-active\" attribute, this is used to activate one of templates initially. \n    The value of that attribute needs to be the name of the template to be activated on first go.\n    \n  " ;
	sioc:description	"Tab desk" ;
	sioc:has_container	ns2:web ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:02 GMT" ;
	content:encoded	"\n    Example\n    The example presents vspx:tab control. It&#39;s used to show simultaneously content of one child container at time. The child container must be vspx:template, they are used to encapsulate other controls. The &quot;style&quot; attribute on &quot;tab&quot; controls designate automatic generation of select list to control switching between templates.\n    In interest is also &quot;initial-active&quot; attribute, this is used to activate one of templates initially. \n    The value of that attribute needs to be the name of the template to be activated on first go.\n    \n  \n " ;
	rdf:type	foaf:Document ;
	dc:title	"VSPX login control" ;
	sioc:content	"\n    Login example\n    The vspx:login is a special control, it may occur inside VSPX page only once. In it's representation it may be a visual or it may be a hidden depending of intended purpose. \n    The purposes of that control are two: to verify login credentials and to ask user to enter a login.\n    On pages that are authorized the control is hidden, but in case login fails, redirect will be made to a page which will ask for login. Reasonable question is what kind of authorization is supported? The answer is: HTTP Digest, URL poisoning and with Cookies. As Digest and Cookie are not well supported in world of browsers the most effective way is URL poisoning.  \n    \n    \n    The attributes on vspx:login control are: \n    \n    \n      mode - designate type of authorization : \"digest\", \"url\" or \"cookie\". In out example it would be the \"url\"\n      realm - this is a unique string within applications space. This is used to distinguish logins from one application to other. In other words: area of usability of performed login.\n      user-password - name of PL function. This function is used when the mode is \"digest\". As digest do not send clear-text passwords this is used to retrieve from some source the password on server side.\n      user-password-check - this is PL function which is used to check password for given user. It's used when \"cookie\" and \"url\" authorization is performed.\n    \n    In our example the setup script defines both functions: for digest and URL poisoning, so as exercise the type can be changed to \"digest\" and appropriate attribute to be set. \n    Also please note that digest on Netscape (up to 7.0) or Mozilla browsers will not function properly as they have a defect in digest handling. But anyway on IE5.0 or greater this can be experimented.\n    \n    The following children elements are interesting:\n    \n      template[if-no-login] - the content of it will be displayed when login failed. It may have special attribute \"redirect\" which will cause redirect to another page.\n      template[if-login] - the content will be shown if request is authorized.\n      login-form - this is a special form to ask user for entering the credentials. It may have defaults, but special content is also possible as in that example.\n      \n    \n    As note we should say that login-form contains special buttons and fields named \"username\", \"password\" and \"login\". These are used to represent custom login form. These must be with the exactly that names. And one vspx:button with special function - \"logout\", it is used to terminate the current session. The logout button may appear in any place of login control but it's usually in if-login template.\n    Finally we should notice that when login control is used the connection variables and persistent page variables can be used. (for more details see vspx:variable and connection_set () , conenction_get () functions)\n    \n  " ;
	sioc:description	"Simple login dialog" ;
	sioc:has_container	ns2:web ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:02 GMT" ;
	content:encoded	"\n    Login example\n    The vspx:login is a special control, it may occur inside VSPX page only once. In it&#39;s representation it may be a visual or it may be a hidden depending of intended purpose. \n    The purposes of that control are two: to verify login credentials and to ask user to enter a login.\n    On pages that are authorized the control is hidden, but in case login fails, redirect will be made to a page which will ask for login. Reasonable question is what kind of authorization is supported? The answer is: HTTP Digest, URL poisoning and with Cookies. As Digest and Cookie are not well supported in world of browsers the most effective way is URL poisoning.  \n    \n    \n    The attributes on vspx:login control are: \n    \n    \n      mode - designate type of authorization : &quot;digest&quot;, &quot;url&quot; or &quot;cookie&quot;. In out example it would be the &quot;url&quot;\n      realm - this is a unique string within applications space. This is used to distinguish logins from one application to other. In other words: area of usability of performed login.\n      user-password - name of PL function. This function is used when the mode is &quot;digest&quot;. As digest do not send clear-text passwords this is used to retrieve from some source the password on server side.\n      user-password-check - this is PL function which is used to check password for given user. It&#39;s used when &quot;cookie&quot; and &quot;url&quot; authorization is performed.\n    \n    In our example the setup script defines both functions: for digest and URL poisoning, so as exercise the type can be changed to &quot;digest&quot; and appropriate attribute to be set. \n    Also please note that digest on Netscape (up to 7.0) or Mozilla browsers will not function properly as they have a defect in digest handling. But anyway on IE5.0 or greater this can be experimented.\n    \n    The following children elements are interesting:\n    \n      template[if-no-login] - the content of it will be displayed when login failed. It may have special attribute &quot;redirect&quot; which will cause redirect to another page.\n      template[if-login] - the content will be shown if request is authorized.\n      login-form - this is a special form to ask user for entering the credentials. It may have defaults, but special content is also possible as in that example.\n      \n    \n    As note we should say that login-form contains special buttons and fields named &quot;username&quot;, &quot;password&quot; and &quot;login&quot;. These are used to represent custom login form. These must be with the exactly that names. And one vspx:button with special function - &quot;logout&quot;, it is used to terminate the current session. The logout button may appear in any place of login control but it&#39;s usually in if-login template.\n    Finally we should notice that when login control is used the connection variables and persistent page variables can be used. (for more details see vspx:variable and connection_set () , conenction_get () functions)\n    \n  \n " ;
	rdf:type	foaf:Document ;
	dc:title	"VSPX  browse button control" ;
	sioc:content	"\n    Example\n    This example repeats the VX-S-3(data-set),\n    but it also introduce the vspx:button with special functions browse and select.\n   These buttons are to make inter-page communication, in our case to establish the foreign key relation ship between Products and Categories tables from Northwind demo database.\n    \n    The browse button represents a HTML button which will pop-up the window to make selection.\n    The special attributes selector and child-window-options are used to indicate which link should be used for pop-up and how to display the child browser window.\n    \n    The selector window (child) is also an data-set over Categories table and contains special button with name of data-set control suffixed with '_select'. This is a Java script button which will return back to parent window the selected data and will close the window after selection is made.\n    \n    Both buttons have as children elements vspx:field, these are markers to the buttons which control value and must be used to link both pages. The name attribute of these is the same of the control which needs to be selected or filled with the data. In that way this is a exception of unique names in the page.\n    Please note that both controls instruct VSPX compiler to add client-side Java script functions to maintain functionality. Hence disabling the Java script on browser will made these to stop working.\n    \n    In our example the discussed functionality is demonstrated with buttons Browse in rows to insert and when do an update of products page. Hitting on one of these will pop-up a window to select appropriate foreign key value.\n    \n  " ;
	sioc:description	"Pop-up select list" ;
	sioc:has_container	ns2:web ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:02 GMT" ;
	content:encoded	"\n    Example\n    This example repeats the VX-S-3(data-set),\n    but it also introduce the vspx:button with special functions browse and select.\n   These buttons are to make inter-page communication, in our case to establish the foreign key relation ship between Products and Categories tables from Northwind demo database.\n    \n    The browse button represents a HTML button which will pop-up the window to make selection.\n    The special attributes selector and child-window-options are used to indicate which link should be used for pop-up and how to display the child browser window.\n    \n    The selector window (child) is also an data-set over Categories table and contains special button with name of data-set control suffixed with &#39;_select&#39;. This is a Java script button which will return back to parent window the selected data and will close the window after selection is made.\n    \n    Both buttons have as children elements vspx:field, these are markers to the buttons which control value and must be used to link both pages. The name attribute of these is the same of the control which needs to be selected or filled with the data. In that way this is a exception of unique names in the page.\n    Please note that both controls instruct VSPX compiler to add client-side Java script functions to maintain functionality. Hence disabling the Java script on browser will made these to stop working.\n    \n    In our example the discussed functionality is demonstrated with buttons Browse in rows to insert and when do an update of products page. Hitting on one of these will pop-up a window to select appropriate foreign key value.\n    \n  \n " ;
	rdf:type	foaf:Document ;
	dc:title	"VSPX controls" ;
	sioc:content	"\n    Examples\n  All the standard VSPX base controls (including but not limited to \n  buttons, drop-down lists and tab controls etc) are listed in the table below with \n  invocation and source code revealing hyperlinks.  The pages source code of each \n  control is optionally vieweable by clicking the filename hyperlink in the \n  \"View Source\" column.   To execute each of these vspx pages click on the  \n  \"run\" hyperlink  in the \"Action\" column.\n  " ;
	sioc:description	"Collection of VSPX controls" ;
	sioc:has_container	ns2:web ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:03 GMT" ;
	content:encoded	"\n    Examples\n  All the standard VSPX base controls (including but not limited to \n  buttons, drop-down lists and tab controls etc) are listed in the table below with \n  invocation and source code revealing hyperlinks.  The pages source code of each \n  control is optionally vieweable by clicking the filename hyperlink in the \n  &quot;View Source&quot; column.   To execute each of these vspx pages click on the  \n  &quot;run&quot; hyperlink  in the &quot;Action&quot; column.\n  \n " ;
	rdf:type	foaf:Document ;
	dc:title	"VSPX macros" ;
	sioc:content	"\n    Example\n    In the first example of this section VX-S-1 we mentioned that except vspx:include there is more powerful feature for macro expansion. This feature is explained here. The idea is to have two more source files named style and decoration. They are assigned to the target page via vspx:page attributes \"decor\" and \"style\" respectively.\n    The way these are working is the following: before any compilation phase the decor file will be expanded with page itself (see placeholder element). After that the style will be applied and result will be saved in an intermediary file named as original with .vspx-m. As a last step of process would be the page compilation of the intermediary file. This step will generate also a SQL script for page class and it's member functions definitions. The last step of page compilation is execution of the .vspx-sql script and hence creation of objects into the server memory.\n    \n    The example extends the formsty.vspx page with expansion of formdecor.vspx file and make rendition before compilation with formsty.xsl. In that way we can make similar pages with very simple structure, which are with same style and appearance. Also we can divide VSPX page design from functionality.\n  " ;
	sioc:description	"Using macro expansion" ;
	sioc:has_container	ns2:web ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:02 GMT" ;
	content:encoded	"\n    Example\n    In the first example of this section VX-S-1 we mentioned that except vspx:include there is more powerful feature for macro expansion. This feature is explained here. The idea is to have two more source files named style and decoration. They are assigned to the target page via vspx:page attributes &quot;decor&quot; and &quot;style&quot; respectively.\n    The way these are working is the following: before any compilation phase the decor file will be expanded with page itself (see placeholder element). After that the style will be applied and result will be saved in an intermediary file named as original with .vspx-m. As a last step of process would be the page compilation of the intermediary file. This step will generate also a SQL script for page class and it&#39;s member functions definitions. The last step of page compilation is execution of the .vspx-sql script and hence creation of objects into the server memory.\n    \n    The example extends the formsty.vspx page with expansion of formdecor.vspx file and make rendition before compilation with formsty.xsl. In that way we can make similar pages with very simple structure, which are with same style and appearance. Also we can divide VSPX page design from functionality.\n  \n " ;
	rdf:type	foaf:Document ;
	dc:title	"Mapping Requests to Resources" ;
	sioc:content	"\nListening Interface Concepts\n\n  A single Virtuoso server can accept HTTP requests on multiple interfaces.\n  Listening interfaces are defined via a virtual directory mechanism (not based on INI setting).\n  Virtual directory operation can be stopped or started without restarting the server engine.\n  The request accepted on a given interface can be processed in a separate Web space.\n\n\nVirtual Host\n\n  The term Virtual Host refers to the practice of maintaining more than one server on one machine, as differentiated\nby their apparent host name. For example, it is often desirable for companies sharing a web server to have their\nown domains, with web servers accessible as www.company1.com and www.company2.com, without requiring the user to\nknow any extra path information. The Virtual host can be IP-based or non-IP.\n  The IP-based (named in this document as multihosting) refers to the practice of making one machine listen on\ndifferent interfaces and respond with different pages.\n  The non-IP (named virtual hosting) refers to the practice where one machine is allocated more than one DNS\nalias. The web content served can then be based on the alias that the client contacted, as identified by the\n'Host' HTTP header field.\n  A single Virtuoso server can map requests into multiple spaces of web pages based on the interface to\n  which the requests come (multihosting) or on the Host HTTP/1.1 header (virtual hosting).\n  A single physical interface can map multiple virtual hosts.\n  The virtual host name must be defined also in Domain Name Server as an alias of the official host name.\n\n\nAttributes\n\n  Logical Path - The path part from URL which user-agent wants.\n  Mapped Path - Defacto location of requested Web resource.\n  Is in DAV - The Virtuoso server has space for Distributed Authoring & Versioning (DAV see: rfc2518 for details) under \"/DAV\" URL. The logical path can me mapped in to this space.\n  Default page - The name of page or resource on Web server to show if a directory/folder is requested. It applies to the entire subdirectory tree.\n  Is browseable - If no default page specified or page does not exist, then show directory content. Warning: This setting can raise security problems, because all directory content will be shown.\n\n\nSecurity\n\n  The Web server has access to the file system directory (see ServerRoot INI setting) using the privileges\n\tof the user who is running it.\n  Access to the WebDAV repository can be restricted to only special accounts, as each resource/folder can\n   have different permissions applied.\n  Execution in a mapped path can be enabled/disabled.\n  Basic and Digest HTTP authentication schemes can be used.\n  HTTPS listeners can be started.\n  User-agent's certificate can be requested and checked.\n\n\nAuthentication Function\n\n  An application dependant PL function for HTTP authentication can be defined for each path mapping.\n  The authentication function can be used to restore session variables.\n  The built-in authentication functions can be used.\n\n\nRequest Postprocessing Function\n\n  An application dependant PL function can be defined for each path mapping to store the session variables\n  (in session table).\n\n\nDatabase User Accounts for execution of active content\n\n  Database User Account for VSP: For each path mapping, a different Database account can be supplied.\n  The VSP will be executed on behalf of this account.\n  Database user account for SOAP: For each path mapping, the SOAP calls can be assign to a different Database\n  account. The WSDL schema will show only PL procedures granted to this account.\n\n\nExample Listen host & Virtual host mappings\nIt is possible to have a mapping in the file system /www1/ for  http://www.a.com/ requests.\n    In this case we will specify the listen host www.a.com (the port default is 80), logical path / and\n\tphysical location /www1/.\nIn some cases more than one web server is needed on the same machine. A second DNS alias www.b.com can\n\tbe routed to the www.a.com. A mapping for this alias can then be: listen host is again www.a.com but virtual host is\n\twww.b.com and physical location can be a /www2/ under HTTP root directory. When a User-Agent requests the\n\thttp://www.b.com/ it will send a 'Host' header field, in this field value will be 'www.b.com'. The web server will\n\tfind a second map and will try to process the pages under /www2/.\n\nFinding the closest applicable mapping\nIts possible to define more than one mapping for one virtual/listen host combination. In this case the closest\nmatch to the request is used. For example with the following mappings:\n\nLogical PathPhysical Path\nwww.a.com//www/a\nwww.a.com/a/www/b\n\nGets the following mapping:\n\nRequestPhysical Path\nhttp://www.a.com/a//www/b\nhttp://www.a.com/other/www/a/other\n\nThe Web server will find the closest path match when processing the logical to physical mapping.\n" ;
	sioc:description	"General information about the virtual host/directory mechanism" ;
	sioc:has_container	ns2:web ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:02 GMT" ;
	content:encoded	"\nListening Interface Concepts\n\n  A single Virtuoso server can accept HTTP requests on multiple interfaces.\n  Listening interfaces are defined via a virtual directory mechanism (not based on INI setting).\n  Virtual directory operation can be stopped or started without restarting the server engine.\n  The request accepted on a given interface can be processed in a separate Web space.\n\n\nVirtual Host\n\n  The term Virtual Host refers to the practice of maintaining more than one server on one machine, as differentiated\nby their apparent host name. For example, it is often desirable for companies sharing a web server to have their\nown domains, with web servers accessible as www.company1.com and www.company2.com, without requiring the user to\nknow any extra path information. The Virtual host can be IP-based or non-IP.\n  The IP-based (named in this document as multihosting) refers to the practice of making one machine listen on\ndifferent interfaces and respond with different pages.\n  The non-IP (named virtual hosting) refers to the practice where one machine is allocated more than one DNS\nalias. The web content served can then be based on the alias that the client contacted, as identified by the\n&#39;Host&#39; HTTP header field.\n  A single Virtuoso server can map requests into multiple spaces of web pages based on the interface to\n  which the requests come (multihosting) or on the Host HTTP/1.1 header (virtual hosting).\n  A single physical interface can map multiple virtual hosts.\n  The virtual host name must be defined also in Domain Name Server as an alias of the official host name.\n\n\nAttributes\n\n  Logical Path - The path part from URL which user-agent wants.\n  Mapped Path - Defacto location of requested Web resource.\n  Is in DAV - The Virtuoso server has space for Distributed Authoring &amp; Versioning (DAV see: rfc2518 for details) under &quot;/DAV&quot; URL. The logical path can me mapped in to this space.\n  Default page - The name of page or resource on Web server to show if a directory/folder is requested. It applies to the entire subdirectory tree.\n  Is browseable - If no default page specified or page does not exist, then show directory content. Warning: This setting can raise security problems, because all directory content will be shown.\n\n\nSecurity\n\n  The Web server has access to the file system directory (see ServerRoot INI setting) using the privileges\n\tof the user who is running it.\n  Access to the WebDAV repository can be restricted to only special accounts, as each resource/folder can\n   have different permissions applied.\n  Execution in a mapped path can be enabled/disabled.\n  Basic and Digest HTTP authentication schemes can be used.\n  HTTPS listeners can be started.\n  User-agent&#39;s certificate can be requested and checked.\n\n\nAuthentication Function\n\n  An application dependant PL function for HTTP authentication can be defined for each path mapping.\n  The authentication function can be used to restore session variables.\n  The built-in authentication functions can be used.\n\n\nRequest Postprocessing Function\n\n  An application dependant PL function can be defined for each path mapping to store the session variables\n  (in session table).\n\n\nDatabase User Accounts for execution of active content\n\n  Database User Account for VSP: For each path mapping, a different Database account can be supplied.\n  The VSP will be executed on behalf of this account.\n  Database user account for SOAP: For each path mapping, the SOAP calls can be assign to a different Database\n  account. The WSDL schema will show only PL procedures granted to this account.\n\n\nExample Listen host &amp; Virtual host mappings\nIt is possible to have a mapping in the file system /www1/ for  http://www.a.com/ requests.\n    In this case we will specify the listen host www.a.com (the port default is 80), logical path / and\n\tphysical location /www1/.\nIn some cases more than one web server is needed on the same machine. A second DNS alias www.b.com can\n\tbe routed to the www.a.com. A mapping for this alias can then be: listen host is again www.a.com but virtual host is\n\twww.b.com and physical location can be a /www2/ under HTTP root directory. When a User-Agent requests the\n\thttp://www.b.com/ it will send a &#39;Host&#39; header field, in this field value will be &#39;www.b.com&#39;. The web server will\n\tfind a second map and will try to process the pages under /www2/.\n\nFinding the closest applicable mapping\nIts possible to define more than one mapping for one virtual/listen host combination. In this case the closest\nmatch to the request is used. For example with the following mappings:\n\nLogical PathPhysical Path\nwww.a.com//www/a\nwww.a.com/a/www/b\n\nGets the following mapping:\n\nRequestPhysical Path\nhttp://www.a.com/a//www/b\nhttp://www.a.com/other/www/a/other\n\nThe Web server will find the closest path match when processing the logical to physical mapping.\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"Examples of Mapping" ;
	sioc:content	"\nPreliminaries\n\n  The virtual path can be defined to have a default page.\n  The default page will be displayed if no file is requested.\n  Sub directories of the defined mapping, inherit the default page name mapping.\n  The particular URL can be retrieved with integrated HTTP client as a string.\n  The integrated HTTP client can be invoked with the http_get() function. \n\n\nExample description\n\n  This example defines a virtual directory with a default dynamic page.\n  A URL is prompted for. If it is found then the header and content is loaded and displayed.\n  An error is reported if the URL cannot be found.\n\n" ;
	sioc:description	"Creating a virtual directory with default page" ;
	sioc:has_container	ns2:web ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:02 GMT" ;
	content:encoded	"\nPreliminaries\n\n  The virtual path can be defined to have a default page.\n  The default page will be displayed if no file is requested.\n  Sub directories of the defined mapping, inherit the default page name mapping.\n  The particular URL can be retrieved with integrated HTTP client as a string.\n  The integrated HTTP client can be invoked with the http_get() function. \n\n\nExample description\n\n  This example defines a virtual directory with a default dynamic page.\n  A URL is prompted for. If it is found then the header and content is loaded and displayed.\n  An error is reported if the URL cannot be found.\n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"Examples of Mapping" ;
	sioc:content	"\nPreliminaries\n\n  The Virtuoso Web server can act as a proxy server for HTTP requests.\n  If request from a user-agent is a proxy request, then the Web server will try to retrieve the URL, and will send the response and entity body back to the user-agent.\n  The virtual directory mapping can be setup when physical location is a Web server. The local URL will then be treated by the Web server as a proxy request.\n\nLogin to the Conductor UI using the dba account.\n\nExample virtual directory setup to another HTTP server\n\n  Go to \"Web Application Server\" tab and then go to the \"Virtual Domains & Directories\" tab.\n  From the given list of HTTP Hosts click the icon infront of the Interface value.\n  Click the \"Add new directory\" link.\n  Choose the \"Proxy server\" type and press the button \"Next>>\".\n  Enter \"/proxy\" for Virtual directory path, \"http://[desired_host:port]/\" for Proxy to, and then press the \"Save Changes\" button.\n\nTo test the new directory: enter the \"http://your_host:port/proxy\" in browser.\nIf all is ok, the content of the web tutorial directory is shown.\n\nEquivalent SQL commands to above\n\n  Connect to the Virtuoso server via ISQL utility as DBA user.\n  Create the virtual directory with physical path \"http://host:port/\"\n  \nSQL> vhost_define (vhost=>'*ini*',lhost=>'*ini*',lpath=>'/proxy',ppath=>'http://host:port/');\n  \n\n" ;
	sioc:description	"Creating a virtual directory to proxy to another server" ;
	sioc:has_container	ns2:web ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:02 GMT" ;
	content:encoded	"\nPreliminaries\n\n  The Virtuoso Web server can act as a proxy server for HTTP requests.\n  If request from a user-agent is a proxy request, then the Web server will try to retrieve the URL, and will send the response and entity body back to the user-agent.\n  The virtual directory mapping can be setup when physical location is a Web server. The local URL will then be treated by the Web server as a proxy request.\n\nLogin to the Conductor UI using the dba account.\n\nExample virtual directory setup to another HTTP server\n\n  Go to &quot;Web Application Server&quot; tab and then go to the &quot;Virtual Domains &amp; Directories&quot; tab.\n  From the given list of HTTP Hosts click the icon infront of the Interface value.\n  Click the &quot;Add new directory&quot; link.\n  Choose the &quot;Proxy server&quot; type and press the button &quot;Next&gt;&gt;&quot;.\n  Enter &quot;/proxy&quot; for Virtual directory path, &quot;http://[desired_host:port]/&quot; for Proxy to, and then press the &quot;Save Changes&quot; button.\n\nTo test the new directory: enter the &quot;http://your_host:port/proxy&quot; in browser.\nIf all is ok, the content of the web tutorial directory is shown.\n\nEquivalent SQL commands to above\n\n  Connect to the Virtuoso server via ISQL utility as DBA user.\n  Create the virtual directory with physical path &quot;http://host:port/&quot;\n  \nSQL&gt; vhost_define (vhost=&gt;&#39;*ini*&#39;,lhost=&gt;&#39;*ini*&#39;,lpath=&gt;&#39;/proxy&#39;,ppath=&gt;&#39;http://host:port/&#39;);\n  \n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"Examples of Mapping" ;
	sioc:content	"\nPreliminaries\n\n  Space on the Web server can be explicitly mapped for SSL (HTTPS) connections.\n  To start HTTPS listener, the server needs a valid certificate and private key pair.\n\n\nUsing the Virtual Directories UI\n\n  Login to the Conductor UI using the dba account.\n  Go to \"Web Application Server\" tab and then go to the \"Virtual Domains & Directories\" tab.\n  In the empty fields below the list of HTTP Listeners enter:\n  In the \"HTTP Host\" field the qualified name of the host.\n  In the \"Interface\" field the qualified name of the interface to listen to.\n  In the \"Port\" field the port number to listen on.\n  Press the \"Add\" button.\n  Define the HTTP root location of this host. The root location can be mapped in file system, DAV or proxy server. In this example we will define a map in filesystem.\n  Click the icon in front of the Interface value.\n   Click the \"Add new directory\" link.\n  Create a \"/ssl\" directory under the HTTPServer ServerRoot directory. This directory will be used to create the new mapping.\n  Choose the \"File System\" type and press the button 'Next>>'.\n  Enter for \"Path\" \"/ssl\" and enter \"/ssl/\" (or select this directory with \"Browse\" button) in the \"Physical path\" location.\n  If you wish to make entire site to be executable specify the VSP user. (See also: VS-B-1 example)\n  Select the \"SSL\" as \"Security method\"\n  Enter for authentication options the files for the certificate and the private key of the server\n\nhttps_cert=PATH_TO_THE_CERTIFICATE;\nhttps_key=PATH_TO_THE_PRIVATE_KEY;\n\n  Press the \"Save Changes\" button.\n  If needed, more path mapping can be added to that defined.\n  To test the definition enter http://[yourhost:port]/ in location box of your browser.\n\n\nEquivalent SQL commands for above\n\n  Connect to the Virtuoso server via ISQL utility as DBA user.\n  Define a virtual directory mapping for the host alias:\n\nSQL> vhost_define (vhost=>'[yourhost]:4333',lhost=>'[yourhost]:4333',\n                      lpath=>'/',ppath=>'/ssl/', def_page=>'index.html',\n\t\t      is_brws=>1, sec=>'SSL',\n\t\t      auth_opts=>vector ('https_cert','PATH_TO_THE_CERTIFICATE',\n\t\t\t'https_key','PATH_TO_THE_PRIVATE_KEY'));\n\nNote that in the sample SQL script, 'localhost' is used instead of 'yourhost'. This MUST be replaced with the official host name. Also needs certificate an private keys to be in place, before trying this example; PATH_TO_THE_CERTIFICATE and PATH_TO_THE_PRIVATE_KEY MUST be replaced with actual path to these files.\n\n" ;
	sioc:description	"Setting up a Secure Directory" ;
	sioc:has_container	ns2:web ;
	dcterms:created_at	"Fri, 05 Jun 2009 10:21:02 GMT" ;
	content:encoded	"\nPreliminaries\n\n  Space on the Web server can be explicitly mapped for SSL (HTTPS) connections.\n  To start HTTPS listener, the server needs a valid certificate and private key pair.\n\n\nUsing the Virtual Directories UI\n\n  Login to the Conductor UI using the dba account.\n  Go to &quot;Web Application Server&quot; tab and then go to the &quot;Virtual Domains &amp; Directories&quot; tab.\n  In the empty fields below the list of HTTP Listeners enter:\n  In the &quot;HTTP Host&quot; field the qualified name of the host.\n  In the &quot;Interface&quot; field the qualified name of the interface to listen to.\n  In the &quot;Port&quot; field the port number to listen on.\n  Press the &quot;Add&quot; button.\n  Define the HTTP root location of this host. The root location can be mapped in file system, DAV or proxy server. In this example we will define a map in filesystem.\n  Click the icon in front of the Interface value.\n   Click the &quot;Add new directory&quot; link.\n  Create a &quot;/ssl&quot; directory under the HTTPServer ServerRoot directory. This directory will be used to create the new mapping.\n  Choose the &quot;File System&quot; type and press the button &#39;Next&gt;&gt;&#39;.\n  Enter for &quot;Path&quot; &quot;/ssl&quot; and enter &quot;/ssl/&quot; (or select this directory with &quot;Browse&quot; button) in the &quot;Physical path&quot; location.\n  If you wish to make entire site to be executable specify the VSP user. (See also: VS-B-1 example)\n  Select the &quot;SSL&quot; as &quot;Security method&quot;\n  Enter for authentication options the files for the certificate and the private key of the server\n\nhttps_cert=PATH_TO_THE_CERTIFICATE;\nhttps_key=PATH_TO_THE_PRIVATE_KEY;\n\n  Press the &quot;Save Changes&quot; button.\n  If needed, more path mapping can be added to that defined.\n  To test the definition enter http://[yourhost:port]/ in location box of your browser.\n\n\nEquivalent SQL commands for above\n\n  Connect to the Virtuoso server via ISQL utility as DBA user.\n  Define a virtual directory mapping for the host alias:\n\nSQL&gt; vhost_define (vhost=&gt;&#39;[yourhost]:4333&#39;,lhost=&gt;&#39;[yourhost]:4333&#39;,\n                      lpath=&gt;&#39;/&#39;,ppath=&gt;&#39;/ssl/&#39;, def_page=&gt;&#39;index.html&#39;,\n\t\t      is_brws=&gt;1, sec=&gt;&#39;SSL&#39;,\n\t\t      auth_opts=&gt;vector (&#39;https_cert&#39;,&#39;PATH_TO_THE_CERTIFICATE&#39;,\n\t\t\t&#39;https_key&#39;,&#39;PATH_TO_THE_PRIVATE_KEY&#39;));\n\nNote that in the sample SQL script, &#39;localhost&#39; is used instead of &#39;yourhost&#39;. This MUST be replaced with the official host name. Also needs certificate an private keys to be in place, before trying this example; PATH_TO_THE_CERTIFICATE and PATH_TO_THE_PRIVATE_KEY MUST be replaced with actual path to these files.\n\n\n " ;
	rdf:type	foaf:Document ;
	dc:title	"Examples of Mapping" ;
	sioc:content	"\nPreliminaries\n\n  The Web server can be setup to check the HTTPS client certificate\n  The HTTPS client must have installed a X.509 certificate.\n\n\nUsing the Virtual Directories UI\n\n  Login to the Conductor UI using the dba account.\n  Go to \"Web Application Server\" tab and then go to the \"Virtual Domains & Directories\" tab.\n   In the empty fields below the list of HTTP Listeners enter:\n  In the \"HTTP Host\" field the quali