public static Op _replace(OpDisjunction op) { OpDisjunction result = OpDisjunction.create(); for(Op member : op.getElements()) { Op newMember = replace(member); result.add(newMember); } return result; }
@Override protected Integer computeNext() { int k = needle.size(); int n = Math.max(0, haystack.size() - k); for(int i = currentIndex; i < n; ++i) { boolean isCandidate = true; for(int j = 0; j < k; ++k) { Op haystackChild = haystack.get(i); Op needleChild = needle.get(i + j); String needleType = needleChild.getClass().getName(); String haystackType = haystackChild.getClass().getName(); if(!needleType.equals(haystackType)) { isCandidate = false; break; } } if(isCandidate) { return i; } } return endOfData(); } }
public Op getApplicableViews(OpDisjunction op, RestrictionManagerImpl restrictions) { List<Op> members = op.getElements(); List<Op> newMembers = new ArrayList<Op>(members.size()); for(Op member : members) { Op newMember = _getApplicableViews(member, restrictions); newMembers.add(newMember); } Op result = OpDisjunction.create().copy(newMembers); return result; }
opDisjunction.add(right) ; return opDisjunction ; OpDisjunction stage = new OpDisjunction() ; stage.add(left) ; stage.add(right) ; return stage ;
public static void add(OpDisjunction dest, Op op) { if(op instanceof OpDisjunction) { OpDisjunction o = (OpDisjunction)op; for(Op subOp : o.getElements()) { dest.add(subOp); } } else if(op instanceof OpUnion) { OpUnion o = (OpUnion)op; dest.add(o.getLeft()); dest.add(o.getRight()); } else { dest.add(op); } } }
members = union.getElements(); OpDisjunction newUnion = OpDisjunction.create(); newUnion.add(item); List<Op> elements = newUnion.getElements(); if(newUnion.size() == 1) { result = elements.iterator().next(); } else {
@Override public Op createOp(OpQuadBlock opQuadPattern, List<RecursionResult<ViewDefinition, Mapping>> conjunctions) { OpDisjunction result = OpDisjunction.create(); for(RecursionResult<ViewDefinition, Mapping> entry : conjunctions) { Mapping mapping = entry.getFinalContext(); RestrictionManagerImpl restrictions = entry.getViewInstances().getRestrictions(); Op tmp = new OpMapping(mapping, restrictions); result.add(tmp); } // If there were no candidates, we fake a view definition where all variables of // the quad pattern (of the query) are bound to Node.nvNothing if(result.size() == 0) { Op tmp = createEmptyViewInstance(opQuadPattern); result.add(tmp); } return result; }
protected QueryIterator execute(OpDisjunction opDisjunction, QueryIterator input) { QueryIterator cIter = new QueryIterUnion(input, opDisjunction.getElements(), execCxt) ; return cIter ; }
public static Op _optimize(OpDisjunction op, Set<Set<Expr>> cnf) { List<Op> args = new ArrayList<Op>(); for(Op element : op.getElements()) { Set<Var> elementVars = GetVarsMentioned.getVarsMentioned(element); boolean elementHasRequiredVars = true; for(Set<Expr> clause : cnf) { Set<Var> clauseVars = ClauseUtils.getVarsMentioned(clause); if(clauseVars.containsAll(elementVars)) { elementHasRequiredVars = false; break; } } if(!elementHasRequiredVars) { continue; } args.add(optimize(element, cnf)); } OpDisjunction result = OpDisjunction.create(); result.getElements().addAll(args); return result; }
@Override public Op make(ItemList list) { BuilderLib.checkLengthAtLeast(2, list, "Disjunction") ; OpDisjunction op = OpDisjunction.create() ; addOps(op, list) ; return op ; } } ;
for ( Op op : input.getElements() ) { Placement p = transform(exprs, op) ; if ( isChange(p) ) { List<Op> ops = new ArrayList<>(input.size()) ; for ( Placement p : placements ) { ops.add(buildFilter(p)) ; } ; return result(input.copy(ops), new ExprList(unplaced)) ;
@Override public Op createOp(OpQuadBlock op, List<RecursionResult<SparqlView, Void>> conjunctions) { //ViewInstanceJoin<SparqlView> conjunctions = item.get OpDisjunction result = OpDisjunction.create(); for(RecursionResult<SparqlView, Void> entry : conjunctions) { ViewInstanceJoin<SparqlView> item = entry.getViewInstances(); Op tmp = new OpSparqlViewPattern(item); result.add(tmp); } return result; }
@Override public void visit(OpDisjunction opDisjunction) { List<Op> lst = rewriteOpList(opDisjunction.getElements()); push(opDisjunction.copy(lst)); }
@Override public OpN copy(List<Op> elts) { return new OpDisjunction(elts) ; } }
public Op createOpOldButWorking(OpQuadBlock opQuadPattern, List<RecursionResult<ViewDefinition, Mapping>> conjunctions) { for(RecursionResult<ViewDefinition, Mapping> tmp : conjunctions) { ViewInstanceJoin<ViewDefinition> conjunction = tmp.getViewInstances(); SelfJoinEliminator.merge(conjunction); } OpDisjunction result = OpDisjunction.create(); for(RecursionResult<ViewDefinition, Mapping> entry : conjunctions) { ViewInstanceJoin<ViewDefinition> item = entry.getViewInstances(); Op tmp = new OpViewInstanceJoin(item); result.add(tmp); } // If there were no candidates, we fake a view definition where all variables of // the quad pattern (of the query) are bound to Node.nvNothing if(result.size() == 0) { Op tmp = createEmptyViewInstance(opQuadPattern); result.add(tmp); } return result; }
@Override public void visit(OpDisjunction opDisjunction) { opDisjunction.getElements().forEach(op->mergeVars(op)); }
public Op _optimize(OpDisjunction op, RestrictionManagerImpl cnf) { List<Op> args = new ArrayList<Op>(); for(Op element : op.getElements()) { Set<Var> elementVars = GetVarsMentioned.getVarsMentioned(element); //Set<Clause> clauses = new HashSet<Clause>(); boolean elementHasRequiredVars = true; for(Clause clause : cnf.getCnf()) { Set<Var> clauseVars = clause.getVarsMentioned(); if(clauseVars.containsAll(elementVars)) { elementHasRequiredVars = false; break; } } if(!elementHasRequiredVars) { continue; } Op optimizedMember = optimize(element, cnf); args.add(optimizedMember); } OpDisjunction result = OpDisjunction.create(); result.getElements().addAll(args); return result; }
/** * Rewrite sequence elements */ @Override public void visit(final OpDisjunction opDisjunction) { if (LOG.isDebugEnabled()) { LOG.debug("Starting visiting OpDisjunction"); } addOp(rewriteOpN(opDisjunction, OpDisjunction.create())); }
public static void add(OpDisjunction dest, Op op) { if(op instanceof OpDisjunction) { OpDisjunction o = (OpDisjunction)op; for(Op subOp : o.getElements()) { dest.add(subOp); } } else if(op instanceof OpUnion) { OpUnion o = (OpUnion)op; dest.add(o.getLeft()); dest.add(o.getRight()); } else { dest.add(op); } } }
@Override public void visit(OpDisjunction opDisjunction) { List<Op> lst = rewriteOpList(opDisjunction.getElements()); push(opDisjunction.copy(lst)); }