@Override protected boolean checkPrecondition(final Map<String, BasicOperator> mso) { final Filter filter = (Filter) mso.get("filter"); if (filter.getPrecedingOperators().size() > 1) return false; lupos.sparql1_1.Node n = filter.getNodePointer(); if (n.jjtGetNumChildren() > 0) { n = n.jjtGetChild(0); if (n instanceof lupos.sparql1_1.ASTEqualsNode) { lupos.sparql1_1.Node left = n.jjtGetChild(0); lupos.sparql1_1.Node right = n.jjtGetChild(1); if (right instanceof lupos.sparql1_1.ASTVar) { final lupos.sparql1_1.Node tmp = left; left = right; right = tmp; } if (left instanceof lupos.sparql1_1.ASTVar) { final String varname = ((lupos.sparql1_1.ASTVar) left).getName(); var = new Variable(varname); varInference = new VariableInInferenceRule(varname); if (right instanceof lupos.sparql1_1.ASTQName || right instanceof lupos.sparql1_1.ASTQuotedURIRef || right instanceof lupos.sparql1_1.ASTFloatingPoint || right instanceof lupos.sparql1_1.ASTInteger || right instanceof lupos.sparql1_1.ASTStringLiteral || right instanceof lupos.sparql1_1.ASTDoubleCircumflex) { constant = LazyLiteral.getLiteral(right); final AddBinding add = (AddBinding) mso.get("add"); if (add.getVar().equals(var) || add.getVar().equals(varInference)) { if (add.getLiteral().equals(constant)) return false; else return true; } } } } } return false; }