@Override public Object visit(ASTPathExprUnion node, Object data) throws VisitorException { Iterator<ASTPathExpr> args = node.getPathExprList().iterator(); // Create new sub-graph pattern for optional path expressions TupleExpr unionExpr = parseGraphPattern(args.next()).buildTupleExpr(); while (args.hasNext()) { TupleExpr argExpr = parseGraphPattern(args.next()).buildTupleExpr(); unionExpr = new Union(unionExpr, argExpr); } graphPattern.addRequiredTE(unionExpr); return null; }
@Override public Object visit(ASTPathExprUnion node, Object data) throws VisitorException { Iterator<ASTPathExpr> args = node.getPathExprList().iterator(); // Create new sub-graph pattern for optional path expressions TupleExpr unionExpr = parseGraphPattern(args.next()).buildTupleExpr(); while (args.hasNext()) { TupleExpr argExpr = parseGraphPattern(args.next()).buildTupleExpr(); unionExpr = new Union(unionExpr, argExpr); } graphPattern.addRequiredTE(unionExpr); return null; }
@Override public Object visit(ASTPathExprUnion node, Object data) throws VisitorException { Iterator<ASTPathExpr> args = node.getPathExprList().iterator(); // Create new sub-graph pattern for optional path expressions TupleExpr unionExpr = parseGraphPattern(args.next()).buildTupleExpr(); while (args.hasNext()) { TupleExpr argExpr = parseGraphPattern(args.next()).buildTupleExpr(); unionExpr = new Union(unionExpr, argExpr); } graphPattern.addRequiredTE(unionExpr); return null; }
/** * @inheritDoc */ public TupleExpr expr() { if (mLeft != null && mRight != null) { return new Union(mLeft.expr(), mRight.expr()); } else if (mLeft != null && mRight == null) { return mLeft.expr(); } else if (mRight != null && mLeft == null) { return mRight.expr(); } else { return null; } }
/** * @inheritDoc */ public TupleExpr expr() { if (mLeft != null && mRight != null) { return new Union(mLeft.expr(), mRight.expr()); } else if (mLeft != null && mRight == null) { return mLeft.expr(); } else if (mRight != null && mLeft == null) { return mRight.expr(); } else { return null; } }
/** * @inheritDoc */ @Override public TupleExpr expr() { if (mLeft != null && mRight != null) { return new Union(mLeft.expr(), mRight.expr()); } else if (mLeft != null && mRight == null) { return mLeft.expr(); } else if (mRight != null && mLeft == null) { return mRight.expr(); } else { return null; } }
@Override public TupleExpr visit(ASTTupleUnion node, Object data) throws VisitorException { TupleExpr leftArg = (TupleExpr)node.getLeftArg().jjtAccept(this, null); TupleExpr rightArg = (TupleExpr)node.getRightArg().jjtAccept(this, null); TupleExpr result = new Union(leftArg, rightArg); if (node.isDistinct()) { result = new Distinct(result); } return result; }
@Override public TupleExpr visit(ASTGraphUnion node, Object data) throws VisitorException { TupleExpr leftArg = (TupleExpr)node.getLeftArg().jjtAccept(this, null); TupleExpr rightArg = (TupleExpr)node.getRightArg().jjtAccept(this, null); TupleExpr result = new Union(leftArg, rightArg); if (node.isDistinct()) { result = new Distinct(result); } return result; }
@Override public TupleExpr visit(ASTTupleUnion node, Object data) throws VisitorException { TupleExpr leftArg = (TupleExpr)node.getLeftArg().jjtAccept(this, null); TupleExpr rightArg = (TupleExpr)node.getRightArg().jjtAccept(this, null); TupleExpr result = new Union(leftArg, rightArg); if (node.isDistinct()) { result = new Distinct(result); } return result; }
@Override public TupleExpr visit(ASTTupleUnion node, Object data) throws VisitorException { TupleExpr leftArg = (TupleExpr)node.getLeftArg().jjtAccept(this, null); TupleExpr rightArg = (TupleExpr)node.getRightArg().jjtAccept(this, null); TupleExpr result = new Union(leftArg, rightArg); if (node.isDistinct()) { result = new Distinct(result); } return result; }
@Override public TupleExpr visit(ASTGraphUnion node, Object data) throws VisitorException { TupleExpr leftArg = (TupleExpr)node.getLeftArg().jjtAccept(this, null); TupleExpr rightArg = (TupleExpr)node.getRightArg().jjtAccept(this, null); TupleExpr result = new Union(leftArg, rightArg); if (node.isDistinct()) { result = new Distinct(result); } return result; }
@Override public TupleExpr visit(ASTGraphUnion node, Object data) throws VisitorException { TupleExpr leftArg = (TupleExpr)node.getLeftArg().jjtAccept(this, null); TupleExpr rightArg = (TupleExpr)node.getRightArg().jjtAccept(this, null); TupleExpr result = new Union(leftArg, rightArg); if (node.isDistinct()) { result = new Distinct(result); } return result; }
@Override public Object visit(ASTUnionGraphPattern node, Object data) throws VisitorException { GraphPattern parentGP = graphPattern; graphPattern = new GraphPattern(parentGP); node.jjtGetChild(0).jjtAccept(this, null); TupleExpr leftArg = graphPattern.buildTupleExpr(); graphPattern = new GraphPattern(parentGP); node.jjtGetChild(1).jjtAccept(this, null); TupleExpr rightArg = graphPattern.buildTupleExpr(); parentGP.addRequiredTE(new Union(leftArg, rightArg)); graphPattern = parentGP; return null; }
@Override public Object visit(ASTUnionGraphPattern node, Object data) throws VisitorException { GraphPattern parentGP = graphPattern; graphPattern = new GraphPattern(parentGP); node.jjtGetChild(0).jjtAccept(this, null); TupleExpr leftArg = graphPattern.buildTupleExpr(); graphPattern = new GraphPattern(parentGP); node.jjtGetChild(1).jjtAccept(this, null); TupleExpr rightArg = graphPattern.buildTupleExpr(); parentGP.addRequiredTE(new Union(leftArg, rightArg)); graphPattern = parentGP; return null; }
@Override public Object visit(ASTUnionGraphPattern node, Object data) throws VisitorException { GraphPattern parentGP = graphPattern; graphPattern = new GraphPattern(parentGP); node.jjtGetChild(0).jjtAccept(this, null); TupleExpr leftArg = graphPattern.buildTupleExpr(); graphPattern = new GraphPattern(parentGP); node.jjtGetChild(1).jjtAccept(this, null); TupleExpr rightArg = graphPattern.buildTupleExpr(); parentGP.addRequiredTE(new Union(leftArg, rightArg)); graphPattern = parentGP; return null; }
@Override public void meet(Filter filter) { if (filter.getCondition() instanceof Or && containsSameTerm(filter.getCondition())) { Or orNode = (Or)filter.getCondition(); TupleExpr filterArg = filter.getArg(); ValueExpr leftConstraint = orNode.getLeftArg(); ValueExpr rightConstraint = orNode.getRightArg(); // remove filter filter.replaceWith(filterArg); // Push UNION down below other filters to avoid cloning them TupleExpr node = findNotFilter(filterArg); Filter leftFilter = new Filter(node.clone(), leftConstraint); Filter rightFilter = new Filter(node.clone(), rightConstraint); Union union = new Union(leftFilter, rightFilter); node.replaceWith(union); filter.getParentNode().visit(this); } else { super.meet(filter); } }
@Override public void meet(Filter filter) { if (filter.getCondition() instanceof Or && containsSameTerm(filter.getCondition())) { Or orNode = (Or)filter.getCondition(); TupleExpr filterArg = filter.getArg(); ValueExpr leftConstraint = orNode.getLeftArg(); ValueExpr rightConstraint = orNode.getRightArg(); // remove filter filter.replaceWith(filterArg); // Push UNION down below other filters to avoid cloning them TupleExpr node = findNotFilter(filterArg); Filter leftFilter = new Filter(node.clone(), leftConstraint); Filter rightFilter = new Filter(node.clone(), rightConstraint); Union union = new Union(leftFilter, rightFilter); node.replaceWith(union); filter.getParentNode().visit(this); } else { super.meet(filter); } }