@Override public Op make(ItemList list) { BuilderLib.checkLengthAtLeast(2, list, "Disjunction") ; OpDisjunction op = OpDisjunction.create() ; addOps(op, list) ; return op ; } } ;
/** * Rewrite sequence elements */ @Override public void visit(final OpDisjunction opDisjunction) { if (LOG.isDebugEnabled()) { LOG.debug("Starting visiting OpDisjunction"); } addOp(rewriteOpN(opDisjunction, OpDisjunction.create())); }
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; }
@Override public Op transform(OpUnion opUnion, Op left, Op right) { OpDisjunction result = OpDisjunction.create(); add(result, left); add(result, right); return result; }
@Override public Op transform(OpUnion opUnion, Op left, Op right) { OpDisjunction result = OpDisjunction.create(); add(result, left); add(result, right); return result; }
@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; }
public static Op _replace(OpDisjunction op) { OpDisjunction result = OpDisjunction.create(); for(Op member : op.getElements()) { Op newMember = replace(member); result.add(newMember); } return result; }
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; }
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; }
public Op getApplicableViews(OpUnion op, RestrictionManagerImpl restrictions) { //ExprList subExprsLeft = new ExprList(exprs); //ExprList subExprsRight = new ExprList(exprs); RestrictionManagerImpl subRestrictionsLeft = new RestrictionManagerImpl(restrictions); RestrictionManagerImpl subRestrictionsRight = new RestrictionManagerImpl(restrictions); //return new OpDisjunction. return OpDisjunction.create(_getApplicableViews(op.getLeft(), subRestrictionsLeft), _getApplicableViews(op.getRight(), subRestrictionsRight)); //return new OpUnion(getApplicableViews(op.getLeft(), subExprsLeft), getApplicableViews(op.getRight(), subExprsRight)); }
public Op getApplicableViews(OpUnion op, RestrictionManagerImpl restrictions) { //ExprList subExprsLeft = new ExprList(exprs); //ExprList subExprsRight = new ExprList(exprs); RestrictionManagerImpl subRestrictionsLeft = new RestrictionManagerImpl(restrictions); RestrictionManagerImpl subRestrictionsRight = new RestrictionManagerImpl(restrictions); //return new OpDisjunction. return OpDisjunction.create(_getApplicableViews(op.getLeft(), subRestrictionsLeft), _getApplicableViews(op.getRight(), subRestrictionsRight)); //return new OpUnion(getApplicableViews(op.getLeft(), subExprsLeft), getApplicableViews(op.getRight(), subExprsRight)); }
@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; }
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; }
OpDisjunction newUnion = OpDisjunction.create();