You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by an...@apache.org on 2013/02/08 15:13:56 UTC
svn commit: r1444022 -
/jena/Scratch/AFS/Jena-Dev/trunk/src/dev/Jena389_FilterNotExistsSubQuery.java
Author: andy
Date: Fri Feb 8 14:13:56 2013
New Revision: 1444022
URL: http://svn.apache.org/r1444022
Log: (empty)
Modified:
jena/Scratch/AFS/Jena-Dev/trunk/src/dev/Jena389_FilterNotExistsSubQuery.java
Modified: jena/Scratch/AFS/Jena-Dev/trunk/src/dev/Jena389_FilterNotExistsSubQuery.java
URL: http://svn.apache.org/viewvc/jena/Scratch/AFS/Jena-Dev/trunk/src/dev/Jena389_FilterNotExistsSubQuery.java?rev=1444022&r1=1444021&r2=1444022&view=diff
==============================================================================
--- jena/Scratch/AFS/Jena-Dev/trunk/src/dev/Jena389_FilterNotExistsSubQuery.java (original)
+++ jena/Scratch/AFS/Jena-Dev/trunk/src/dev/Jena389_FilterNotExistsSubQuery.java Fri Feb 8 14:13:56 2013
@@ -35,10 +35,55 @@ public class Jena389_FilterNotExistsSubQ
public static void caseSubQueryExisits()
{
+ // Issue:
+ // Transformer (for {} in expressions) and NodeTransformOp walk into expressions - can happen twice.
+ // ExprTrans
+
+ // See Transformer and commented out
+
+// @Override
+// public void visit(OpLeftJoin op)
+// {
+// Op left = null ;
+// Op right = null ;
+//
+// // Must do right-left because the pushes onto the stack were left-right.
+// if ( op.getRight() != null )
+// right = pop() ;
+// if ( op.getLeft() != null )
+// left = pop() ;
+//
+// ExprList exprList = transform(op.getExprs(), exprTransform) ;
+//
+// boolean changed = ( left != op.getLeft() || right != op.getRight() || exprList != op.getExprs() ) ;
+// OpLeftJoin op2 = changed ? OpLeftJoin.createLeftJoin(left, right, exprList) : op ;
+// Op opX = op2.apply(transform, left, right) ;
+// push(opX) ;
+// }
+
+ // ----- NodeTransformOp
+ // This finds everywhere that node can lurk in an alegbra expression:
+ // BGPs, paths, triples, quads
+ // GRAPH, GRAPH{} (DatasetNames)
+ // Project
+ // ???? Needs checking.
+ // But not in expressions (that's handled by Transformer)
+ // Filters, including inside EXISTS and expressions in LeftJoin
+ // OrderBy, GroupBy
+ // Tables
+ // Projects
+ // Just the AS variable:
+ // Extend, Assign
+ // ----- NodeTransformOp
+
+ // Nor:
+ // Conditional (no expression)
+
+
// JENA-389
// Wrong rewrite of FILTER -- too many //
- String qs = StrUtils.strjoinNL(
- "SELECT ?Z # bad",
+ String qs1 = StrUtils.strjoinNL(
+ "SELECT ?Z # bad -- forces rename and it's renaming that is broken.",
//"SELECT * # good",
"{",
" SELECT (COUNT(?x1) as ?Z)",
@@ -47,6 +92,18 @@ public class Jena389_FilterNotExistsSubQ
" FILTER NOT EXISTS {?x1 ?q ?z}",
" }",
"}") ;
+
+ String qs2 = StrUtils.strjoinNL(
+ "SELECT ?Z # force.",
+ //"SELECT * # good",
+ "{",
+ " SELECT ?Z",
+ " WHERE {",
+ " ?x1 ?p ?z",
+ " OPTIONAL{ ?x ?y ?z FILTER NOT EXISTS {?x1 ?q ?z} }",
+ " }",
+ "}") ;
+ String qs = qs1 ;
System.out.println(qs) ;
Query query = QueryFactory.create(qs) ;
Op op0 = Algebra.compile(query) ;