Hello Jindřich, A variable is void if no one combination of data in the database can result in some binding for this variable. In most cases void variable is not what query author intended to write, but the error may be subtle, hence the need for a debugging tool. The most popular origin of void variables is typos in names. "Number two" is a variable that appears in a subquery and referred to in the select list or filters of the outer pert of query, but is missing in the select list of a subquery. The least evident case is a query with parts that contains logical contradictions, such as equality filter between a predicate and a literal. The SPARQL optimizer can detect various contradictions and wipe out query fragments with them: if it's proven that a query fragment can not produce any single binding then there's no need to execute or further compile it. If a variable was set only in fragments that cease to exist but still referred to in select lists etc., it is reported as void.
The feature is not documented because it may evolve in any time, as the SPARQL optimizer evolves. E.g., in addition to "define sql:signal-void-variables 1" pragma we want to add "define sql:signal-weird-variables 1" for the "opposite" case of variables bound with no effect on the environment. Best Regards, Ivan Mikhailov OpenLink Software http://virtuoso.openlinksw.com On Mon, 2014-11-24 at 10:23 +0100, Jindřich Mynarz wrote: > Hi, > > > every Virtuoso SPARQL endpoint now includes a checkbox called "Strict > checking of void variables". Unfortunately, I haven't been able to > find documentation describing what exactly this checkbox (or debug=on > GET parameter) does. Can you please point me to its authoritative > description? > > > My motivation: As others in the past (e.g., > http://boards.openlinksw.com/support/viewtopic.php?f=12&t=1381) I have > on numerous occasions encountered the "Virtuoso 37000 Error SP031: > SPARQL compiler: Variable '_::trans_subj_XYZ is used in subexpressions > of the query but not assigned" error when using SPARQL 1.1 property > paths. With "Strict checking of void variables" turned off, this error > goes away. I'd like to know what exactly is changed. > > > Best, > > > Jindřich > > > -- > Jindřich Mynarz > http://mynarz.net/#jindrich > ------------------------------------------------------------------------------ > Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server > from Actuate! Instantly Supercharge Your Business Reports and Dashboards > with Interactivity, Sharing, Native Excel Exports, App Integration & more > Get technology previously reserved for billion-dollar corporations, FREE > http://pubads.g.doubleclick.net/gampad/clk?id=157005751&iu=/4140/ostg.clktrk > _______________________________________________ Virtuoso-users mailing list > Virtuoso-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/virtuoso-users ------------------------------------------------------------------------------ Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server from Actuate! Instantly Supercharge Your Business Reports and Dashboards with Interactivity, Sharing, Native Excel Exports, App Integration & more Get technology previously reserved for billion-dollar corporations, FREE http://pubads.g.doubleclick.net/gampad/clk?id=164703151&iu=/4140/ostg.clktrk _______________________________________________ Virtuoso-users mailing list Virtuoso-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/virtuoso-users