public static Or or(ValueExpr theLeft, ValueExpr theRight) { return new Or(theLeft, theRight); }
@Override public void meet(Or node) throws RuntimeException { builder.append("("); node.getLeftArg().visit(this); builder.append(" OR "); node.getRightArg().visit(this); builder.append(")"); }
@Override public void meet(final Or n) { final QueryModelNode p = n.getParentNode(); final boolean needPar = p instanceof Not || p instanceof And || p instanceof MathExpr || p instanceof ListMemberOperator || p instanceof Compare; emitIf(needPar, "(").emit(n.getLeftArg()).emit(" || ").emit(n.getRightArg()) .emitIf(needPar, ")"); }
@Override public void meet(Or or) { super.meet(or); if (or.getLeftArg().equals(or.getRightArg())) { or.replaceWith(or.getLeftArg()); } }
@Override public void meet(Or or) { or.visitChildren(this); if (isConstant(or.getLeftArg()) && isConstant(or.getRightArg())) { boolean value = strategy.isTrue(or, EmptyBindingSet.getInstance()); or.replaceWith(new ValueConstant(BooleanLiteral.valueOf(value))); else if (isConstant(or.getLeftArg())) { boolean leftIsTrue = strategy.isTrue(or.getLeftArg(), EmptyBindingSet.getInstance()); if (leftIsTrue) { or.replaceWith(new ValueConstant(BooleanLiteral.TRUE)); or.replaceWith(or.getRightArg()); else if (isConstant(or.getRightArg())) { boolean rightIsTrue = strategy.isTrue(or.getRightArg(), EmptyBindingSet.getInstance()); if (rightIsTrue) { or.replaceWith(new ValueConstant(BooleanLiteral.TRUE)); or.replaceWith(or.getLeftArg());
@Override public void meet(Or node) throws UnsupportedRdbmsOperatorException { result = or(bool(node.getLeftArg()), bool(node.getRightArg())); }
public GroupBuilder<T, E> or(ValueExpr theLeft, ValueExpr theRight) { return filter(new Or(theLeft, theRight)); }
@Override public void meet(final Or n) { final QueryModelNode p = n.getParentNode(); final boolean needPar = p instanceof Not || p instanceof And || p instanceof MathExpr || p instanceof ListMemberOperator || p instanceof Compare; emitIf(needPar, "(").emit(n.getLeftArg()).emit(" || ").emit(n.getRightArg()) .emitIf(needPar, ")"); }
@Override public void meet(Or node) throws RDFHandlerException { Resource currentSubj = subject; flushPendingStatement(); handler.handleStatement(valueFactory.createStatement(subject, RDF.TYPE, SP.OR)); predicate = SP.ARG1_PROPERTY; node.getLeftArg().visit(this); predicate = SP.ARG2_PROPERTY; node.getRightArg().visit(this); subject = currentSubj; predicate = null; }
@Override public ValueExpr visit(ASTOr node, Object data) throws VisitorException { Iterator<ASTBooleanExpr> iter = node.getOperandList().iterator(); ValueExpr result = (ValueExpr)iter.next().jjtAccept(this, null); while (iter.hasNext()) { ValueExpr operand = (ValueExpr)iter.next().jjtAccept(this, null); result = new Or(result, operand); } return result; }
private boolean containsSameTerm(ValueExpr node) { if (node instanceof SameTerm) { return true; } if (node instanceof Or) { Or or = (Or)node; boolean left = containsSameTerm(or.getLeftArg()); return left || containsSameTerm(or.getRightArg()); } if (node instanceof And) { And and = (And)node; boolean left = containsSameTerm(and.getLeftArg()); return left || containsSameTerm(and.getRightArg()); } return false; } }
@Override public Or visit(ASTOr node, Object data) throws VisitorException { ValueExpr leftArg = (ValueExpr)node.jjtGetChild(0).jjtAccept(this, null); ValueExpr rightArg = (ValueExpr)node.jjtGetChild(1).jjtAccept(this, null); return new Or(leftArg, rightArg); }
public Value evaluate(Or node, BindingSet bindings) throws ValueExprEvaluationException, QueryEvaluationException { try { Value leftValue = evaluate(node.getLeftArg(), bindings); if (QueryEvaluationUtil.getEffectiveBooleanValue(leftValue) == true) { // Left argument evaluates to true, we don't need to look any // further return BooleanLiteral.TRUE; } } catch (ValueExprEvaluationException e) { // Failed to evaluate the left argument. Result is 'true' when // the right argument evaluates to 'true', failure otherwise. Value rightValue = evaluate(node.getRightArg(), bindings); if (QueryEvaluationUtil.getEffectiveBooleanValue(rightValue) == true) { return BooleanLiteral.TRUE; } else { throw new ValueExprEvaluationException(); } } // Left argument evaluated to 'false', result is determined // by the evaluation of the right argument. Value rightValue = evaluate(node.getRightArg(), bindings); return BooleanLiteral.valueOf(QueryEvaluationUtil.getEffectiveBooleanValue(rightValue)); }
@Override public ValueExpr visit(ASTInList node, Object data) throws VisitorException { ValueExpr leftArg = (ValueExpr)node.getValueExpr().jjtAccept(this, null); ValueExpr result = null; for (ASTValueExpr argExpr : node.getArgList().getElements()) { ValueExpr rightArg = (ValueExpr)argExpr.jjtAccept(this, null); if (result == null) { // First argument result = new SameTerm(leftArg, rightArg); } else { SameTerm sameTerm = new SameTerm(leftArg.clone(), rightArg); result = new Or(result, sameTerm); } } assert result != null; return result; }
@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); } }
String.format("Invalid number of arguments for function: %s", func)); expr = new Or(args.get(0), args.get(1));
protected TupleExpr createTuplePattern(Var subjVar, Var predVar, Var objVar, String contextName, Resource... contexts) { if (contexts.length > 1) { StatementPattern sp; ValueExpr condition = null; Scope scope = Scope.NAMED_CONTEXTS; Var ctxVar = new Var(contextName); sp = new StatementPattern(scope, subjVar, predVar, objVar, ctxVar); for (Resource ctx : contexts) { ValueConstant val = new ValueConstant(ctx); SameTerm eq = new SameTerm(ctxVar, val); if (condition == null) { condition = eq; } else { condition = new Or(condition, eq); } } return new Filter(sp, condition); } else if (contexts.length == 1) { Scope scope = Scope.NAMED_CONTEXTS; Var ctxVar = new Var(contextName, contexts[0]); return new StatementPattern(scope, subjVar, predVar, objVar, ctxVar); } else { Scope scope = Scope.DEFAULT_CONTEXTS; return new StatementPattern(scope, subjVar, predVar, objVar, new Var(contextName)); } }
return new And(toValue(expr.getArg(0), md), toValue(expr.getArg(1), md)); } else if (op == Ops.OR) { return new Or(toValue(expr.getArg(0), md), toValue(expr.getArg(1), md)); } else if (op == Ops.IN) {
return new And(toValue(expr.getArg(0), md), toValue(expr.getArg(1), md)); }else if (op == Ops.OR){ return new Or(toValue(expr.getArg(0), md), toValue(expr.getArg(1), md)); }else if (op == Ops.IN){
return new And(toValue(expr.getArg(0), md), toValue(expr.getArg(1), md)); } else if (op == Ops.OR) { return new Or(toValue(expr.getArg(0), md), toValue(expr.getArg(1), md)); } else if (op == Ops.IN) {