Rob,
I ran into some issue with TransformFilterImplicitJoin
1/ As noted in the javadoc, the join condition can not be between
literals for the FILTER(?x = ?y) variant.
While the javadoc for the control symbol says "This optimization is
conservative - it does not take place if there is a potential risk of
changing query semantics." there is no test that ?x or ?y come from a
position that ensures one or other is not a literal.
This optimization is on by default. Is this a good idea?
2/ It eliminates dead code - except it also eliminates not-so-dead code
in the case of EXISTS because the scoping is more complicated.
.. pattern involving ?z ...
FILTER EXIST{ ... FILTER(?x = ?z) }
where one comes from outside from the current row being filtered.
This is as much to do with the scoping engine; what caught me is the
fact that "implicit join" was doing code elimination.
Andy