public QueryIterAssign(QueryIterator input, VarExprList exprs, ExecutionContext qCxt, boolean mustBeNewVar) { // mustBeNewVar : any variable introduced must not already exist. // true => BIND // false => LET // Syntax checking of BIND should have assured this. super(input, qCxt) ; this.exprs = exprs ; this.mustBeNewVar = mustBeNewVar ; }
protected OpExtendAssign(Op subOp) { super(subOp) ; assignments = new VarExprList() ; }
/** Make a OpAssign - this does not aggregate (assign .. (assign ...)) */ static private Op create(Op op, Var var, Expr expr) { return new OpAssign(op, new VarExprList(var, expr)) ; }
public static VarExprList buildNamedExprList(ItemList list) { VarExprList x = new VarExprList() ; for ( Item item : list ) buildNamedExpr(item, x) ; return x ; }
public static VarExprList buildNamedExpr(Item item) { VarExprList varExprList = new VarExprList() ; buildNamedExpr(item, varExprList) ; return varExprList ; }
@Override public Op1 copy(Op subOp) { OpExtend op = new OpExtend(subOp, new VarExprList(getVarExprList())) ; return op ; }
@Override public Op1 copy(Op subOp) { OpAssign op = new OpAssign(subOp, new VarExprList(getVarExprList())) ; return op ; }
/** Make a OpExtend - this does not aggregate (extend .. (extend ...)) */ public static Op create(Op op, Var var, Expr expr) { VarExprList x = new VarExprList() ; x.add(var, expr) ; return new OpExtend(op, x) ; }
public static VarExprList createFromVarMap(Map<Var, Var> varMap) { VarExprList result = new VarExprList(); for(Entry<Var, Var> e : varMap.entrySet()) { Var v = e.getKey(); Var w = e.getValue(); if(v.equals(w)) { result.add(w); } else { result.add(w, new ExprVar(v)); } } return result; }
private VarExprList processVarExprList(VarExprList exprs, ExprTransform transform) { VarExprList newExprs = new VarExprList(); for (Var v : exprs.getVars()) { Expr e = exprs.getExpr(v); Expr e2 = ExprTransformer.transform(transform, e); newExprs.add(v, e2); } return newExprs; }
private VarExprList transformVarExprList(VarExprList varExprList) { VarExprList varExprList2 = new VarExprList(); for ( Var v : varExprList.getVars() ) { // if ( binding.contains(v)) // // Already bound. No need to do anything because the // // logical assignment will test value. // continue ; Expr expr = varExprList.getExpr(v); expr = expr.copySubstitute(binding); varExprList2.add(v, expr); } return varExprList2; }
private VarExprList processUnused(VarExprList assignments) { if (Collections.disjoint(assignments.getVars(), this.tracker.getAssignments().keySet())) return null; VarExprList singleUse = new VarExprList(); for (Var var : assignments.getVars()) { if (this.tracker.getUsageCount(var) == 1) singleUse.add(var, assignments.getExpr(var)); } // If nothing is single use if (singleUse.size() == 0) return null; return singleUse; }
public static VarExprList buildNamedExprOrExprList(Item item) { if ( ! item.isList() ) BuilderLib.broken(item, "Not a var expr list") ; ItemList list = item.getList() ; if ( list.isEmpty() ) return new VarExprList() ; if ( list.car().isList() ) // List of lists return buildNamedExprList(list) ; // One item return buildNamedExpr(item) ; }
@Test public void promote_table_empty_assignment_03() { // Force algebra to have separate extends by using extendDirect() Op input = OpTable.empty(); input = OpExtend.create(input, new VarExprList(Var.alloc("x"), new NodeValueInteger(1))); input = OpExtend.create(input, new VarExprList(Var.alloc("y"), new NodeValueInteger(2))); test(input, t_promote, "(table empty)"); }
@Test public void combine_extend_03() { // Technically illegal SPARQL here but useful to validate that the optimizer doesn't do the wrong thing Op extend = OpExtend.create(OpTable.unit(), new VarExprList(Var.alloc("x"), new NodeValueInteger(1))); extend = OpExtend.create(extend, new VarExprList(Var.alloc("x"), new NodeValueInteger(2))); String opExpectedString = StrUtils.strjoinNL( "(extend ((?x 2))", " (extend ((?x 1))", " (table unit)))"); check(extend, new TransformExtendCombine(), opExpectedString); }
@Test public void combine_assign_02() { Op assign = OpAssign.create(OpTable.unit(), new VarExprList(Var.alloc("x"), new NodeValueInteger(1))); assign = OpAssign.create(assign, new VarExprList(Var.alloc("y"), new ExprVar("x"))); String opExpectedString = StrUtils.strjoinNL( "(assign ((?x 1) (?y ?x))", " (table unit))"); check(assign, new TransformExtendCombine(), opExpectedString); }
@Test public void combine_extend_02() { Op extend = OpExtend.create(OpTable.unit(), new VarExprList(Var.alloc("x"), new NodeValueInteger(1))); extend = OpExtend.create(extend, new VarExprList(Var.alloc("y"), new ExprVar("x"))); String opExpectedString = StrUtils.strjoinNL( "(extend ((?x 1) (?y ?x))", " (table unit))"); check(extend, new TransformExtendCombine(), opExpectedString); }
@Test public void combine_assign_03() { Op assign = OpAssign.create(OpTable.unit(), new VarExprList(Var.alloc("x"), new NodeValueInteger(1))); assign = OpAssign.create(assign, new VarExprList(Var.alloc("x"), new NodeValueInteger(2))); String opExpectedString = StrUtils.strjoinNL( "(assign ((?x 2))", " (assign ((?x 1))", " (table unit)))"); check(assign, new TransformExtendCombine(), opExpectedString); }
@Test public void combine_extend_01() { Op extend = OpExtend.create(OpTable.unit(), new VarExprList(Var.alloc("x"), new NodeValueInteger(1))); extend = OpExtend.create(extend, new VarExprList(Var.alloc("y"), new NodeValueInteger(2))); String opExpectedString = StrUtils.strjoinNL( "(extend ((?x 1) (?y 2))", " (table unit))"); check(extend, new TransformExtendCombine(), opExpectedString); }
@Test public void combine_assign_01() { Op assign = OpAssign.create(OpTable.unit(), new VarExprList(Var.alloc("x"), new NodeValueInteger(1))); assign = OpAssign.create(assign, new VarExprList(Var.alloc("y"), new NodeValueInteger(2))); String opExpectedString = StrUtils.strjoinNL( "(assign ((?x 1) (?y 2))", " (table unit))"); check(assign, new TransformExtendCombine(), opExpectedString); }