Hi Martin, Yes, this is currently being looked into by development, we should have some feedback for you soon ...
Best Regards Hugh Williams Professional Services OpenLink Software Web: http://www.openlinksw.com Support: http://support.openlinksw.com Forums: http://boards.openlinksw.com/support Twitter: http://twitter.com/OpenLink On 28 Mar 2011, at 11:06, Martin Gerlach wrote: > Hi, > > has anyone looked into the problem I described on March 7? See below. > > Thanks & Regards, > Martin > > Am 07.03.2011 12:09, schrieb Martin Gerlach: >> >> Hi, >> >> I observed the following SPARQL behavior with Virtuoso Open Source, >> Version 06.01.3127, running on Linux version 2.6.27.56-0.1-xen >> (geeko@buildhost) (gcc version 4.3.2 [gcc-4_3-branch revision 141291] >> (SUSE Linux) ) #1 SMP 2010-12-01 16:57:58 +0100: >> >> Given the following test graph: >> >> create graph <http://alx.neofonie.de/test> >> >> prefix test:<http://alx.neofonie.de/test/> >> insert into <http://alx.neofonie.de/test> { >> _:b1 a test:Relation . >> _:b1 test:agent test:A1 . >> _:b1 test:range test:R1 . >> _:b2 a test:Relation . >> _:b2 test:agent test:A2 . >> _:b2 test:range test:R1 . >> _:b3 a test:Relation . >> _:b3 test:agent test:A2 . >> _:b3 test:range test:R2 . >> } >> >> ... the following query: >> >> prefix test:<http://alx.neofonie.de/test/> >> select ?agent ?range >> from <http://alx.neofonie.de/test> >> where { >> _:b a test:Relation . >> filter (?agent = test:A1) >> optional{ _:b test:agent ?agent.} >> optional{ _:b test:range ?range.} >> } >> >> ... returns (as CSV): >> >> "agent","range" >> "http://alx.neofonie.de/test/A1","http://alx.neofonie.de/test/R1" >> "http://alx.neofonie.de/test/A1","http://alx.neofonie.de/test/R1" >> "http://alx.neofonie.de/test/A1","http://alx.neofonie.de/test/R2" >> >> ... which contains the wrong (because non existing) result A1/R2. >> >> Obviously, the filter expression binds ?agent to test:A1 if it is not >> bound by the first optional sub query. This can easily be seen by >> omitting the filter. >> >> The question is: Does this behavior conform to the SPARQL spec or is >> this a Virtuoso bug? >> >> This sentence from http://www.w3.org/TR/rdf-sparql-query/ , >> section 3, makes me think it is probably a bug: >> >> "Graph pattern matching produces a solution sequence, where each >> solution has a set of bindings of variables to RDF terms. SPARQL FILTERs >> restrict solutions to those for which the filter expression evaluates to >> TRUE." >> >> The filter expression, ?agent = test:A1, should not evaluate to TRUE if >> ?agent is not bound, and it should also not bind ?agent to test:A1. >> >> Regards, >> Martin >> >> -- >> >> (Of course, one can just make the first optional binding a required >> binding (result: A1/R1), or move the filter into the first optional >> block (result: _/R1, A1/R1, _/R2) to obtain results that make more >> sense. The example is a stripped down version of a more complex use case.) >> >> > > -- > Martin Gerlach > Senior Softwareentwickler > Research > > Neofonie GmbH > Robert-Koch-Platz 4 > 10115 Berlin > > T +49.30 24627 413 > F +49.30 24627 120 > [email protected] > http://www.neofonie.de > > Handelsregister > Berlin-Charlottenburg: HRB 67460 > > Geschäftsführung > Thomas Kitlitschko > > ------------------------------------------------------------------------------ > Enable your software for Intel(R) Active Management Technology to meet the > growing manageability and security demands of your customers. Businesses > are taking advantage of Intel(R) vPro (TM) technology - will your software > be a part of the solution? Download the Intel(R) Manageability Checker > today! > http://p.sf.net/sfu/intel-dev2devmar_______________________________________________ > Virtuoso-users mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/virtuoso-users
