private Function getOR(ImmutableList<Function> list) { return list.reverse().stream() .reduce(null, (a, b) -> (a == null) ? b : termFactory.getFunctionOR(b, a)); }
private Function getOR(ImmutableList<Function> list) { return list.reverse().stream() .reduce(null, (a, b) -> (a == null) ? b : TERM_FACTORY.getFunctionOR(b, a)); }
private Term evalOr(Term t1, Term t2) { Term e1 = eval(t1); Term e2 = eval(t2); if (e1 == valueTrue || e2 == valueTrue) return valueTrue; if (e1 == valueFalse) return e2; if (e2 == valueFalse) return e1; return termFactory.getFunctionOR(e1, e2); }
private Term evalOr(Term t1, Term t2) { Term e1 = eval(t1); Term e2 = eval(t2); if (e1 == TermConstants.TRUE || e2 == TermConstants.TRUE) return TermConstants.TRUE; if (e1 == TermConstants.FALSE) return e2; if (e2 == TermConstants.FALSE) return e1; return TERM_FACTORY.getFunctionOR(e1, e2); } }
public CQIE asCQIE() { List<Function> combinedBody; if (!filterAtoms.isEmpty()) { combinedBody = new ArrayList<>(databaseAtoms.size() + filterAtoms.size()); combinedBody.addAll(databaseAtoms); Iterator<List<Function>> iterOR = filterAtoms.iterator(); List<Function> list = iterOR.next(); // IMPORTANT: assume that conditions is non-empty Function mergedConditions = getMergedByAND(list); while (iterOR.hasNext()) { list = iterOR.next(); Function e = getMergedByAND(list); mergedConditions = termFactory.getFunctionOR(e, mergedConditions); } combinedBody.add(mergedConditions); } else combinedBody = databaseAtoms; CQIE cq = datalogFactory.getCQIE(head, combinedBody); eqNormalizer.enforceEqualities(cq); return cq; }
public CQIE asCQIE() { List<Function> combinedBody; if (!filterAtoms.isEmpty()) { combinedBody = new ArrayList<>(databaseAtoms.size() + filterAtoms.size()); combinedBody.addAll(databaseAtoms); Iterator<List<Function>> iterOR = filterAtoms.iterator(); List<Function> list = iterOR.next(); // IMPORTANT: assume that conditions is non-empty Function mergedConditions = getMergedByAND(list); while (iterOR.hasNext()) { list = iterOR.next(); Function e = getMergedByAND(list); mergedConditions = TERM_FACTORY.getFunctionOR(e, mergedConditions); } combinedBody.add(mergedConditions); } else combinedBody = databaseAtoms; CQIE cq = DATALOG_FACTORY.getCQIE(head, combinedBody); EQNormalizer.enforceEqualities(cq); return cq; }
(e, v) -> e == null ? termFactory.getFunctionIsNull(v) : termFactory.getFunctionOR(e, termFactory.getFunctionIsNull(v)), (e1, e2) -> e1 == null ? e2 : (e2 == null) ? e1 : termFactory.getFunctionOR(e1, e2));
(e, v) -> e == null ? TERM_FACTORY.getFunctionIsNull(v) : TERM_FACTORY.getFunctionOR(e, TERM_FACTORY.getFunctionIsNull(v)), (e1, e2) -> e1 == null ? e2 : (e2 == null) ? e1 : TERM_FACTORY.getFunctionOR(e1, e2));
result = TERM_FACTORY.getFunctionAND(temp.get(0), temp.get(1)); }else{ result = TERM_FACTORY.getFunctionOR(temp.get(0), temp.get(1));
result = termFactory.getFunctionAND(temp.get(0), temp.get(1)); }else{ result = termFactory.getFunctionOR(temp.get(0), temp.get(1));
@Override public void visit(OrExpression expression) { Function left = getAND(translate(expression.getLeftExpression())); Function right = getAND(translate(expression.getRightExpression())); result = (expression.isNot()) ? ImmutableList.of(negation(left), negation(right)) : ImmutableList.of(termFactory.getFunctionOR(left, right)); }
@Override public void visit(OrExpression expression) { Function left = getAND(translate(expression.getLeftExpression())); Function right = getAND(translate(expression.getRightExpression())); result = (expression.isNot()) ? ImmutableList.of(negation(left), negation(right)) : ImmutableList.of(TERM_FACTORY.getFunctionOR(left, right)); }
@Override public void visit(Between expression) { Term t1 = termVisitor.getTerm(expression.getLeftExpression()); Term t2 = termVisitor.getTerm(expression.getBetweenExpressionStart()); Term t3 = termVisitor.getTerm(expression.getLeftExpression()); Term t4 = termVisitor.getTerm(expression.getBetweenExpressionEnd()); if (expression.isNot()) { Function atom1 = TERM_FACTORY.getFunction(ExpressionOperation.LT, t1, t2); Function atom2 = TERM_FACTORY.getFunction(ExpressionOperation.GT, t3, t4); result = ImmutableList.of(TERM_FACTORY.getFunctionOR(atom1, atom2)); } else { Function atom1 = TERM_FACTORY.getFunction(ExpressionOperation.GTE, t1, t2); Function atom2 = TERM_FACTORY.getFunction(ExpressionOperation.LTE, t3, t4); result = ImmutableList.of(atom1, atom2); } }
@Override public void visit(Between expression) { Term t1 = termVisitor.getTerm(expression.getLeftExpression()); Term t2 = termVisitor.getTerm(expression.getBetweenExpressionStart()); Term t3 = termVisitor.getTerm(expression.getLeftExpression()); Term t4 = termVisitor.getTerm(expression.getBetweenExpressionEnd()); if (expression.isNot()) { Function atom1 = termFactory.getFunction(ExpressionOperation.LT, t1, t2); Function atom2 = termFactory.getFunction(ExpressionOperation.GT, t3, t4); result = ImmutableList.of(termFactory.getFunctionOR(atom1, atom2)); } else { Function atom1 = termFactory.getFunction(ExpressionOperation.GTE, t1, t2); Function atom2 = termFactory.getFunction(ExpressionOperation.LTE, t3, t4); result = ImmutableList.of(atom1, atom2); } }
return termFactory.getFunctionOR(term1, term2);