public GroupBuilder<T, E> sameTerm(ValueExpr theLeft, ValueExpr theRight) { return filter(new SameTerm(theLeft, theRight)); }
public GroupBuilder<T, E> sameTerm(ValueExpr theLeft, ValueExpr theRight) { return filter(new SameTerm(theLeft, theRight)); }
public GroupBuilder<T, E> sameTerm(ValueExpr theLeft, ValueExpr theRight) { return filter(new SameTerm(theLeft, theRight)); }
@Override public List<Var> visit(ASTNode node, Object data) throws VisitorException { List<Var> nodeVars = new ArrayList<Var>(); for (ASTNodeElem nodeElem : node.getNodeElemList()) { Var nodeVar = (Var)nodeElem.jjtAccept(this, null); nodeVars.add(nodeVar); } // Create any implicit unequalities for (int i = 0; i < nodeVars.size() - 1; i++) { Var var1 = nodeVars.get(i); for (int j = i + 1; j < nodeVars.size(); j++) { Var var2 = nodeVars.get(j); // At least one of the variables should be non-constant // for the unequality to make any sense: if (!var1.hasValue() || !var2.hasValue()) { graphPattern.addConstraint(new Not(new SameTerm(var1, var2))); } } } return nodeVars; }
@Override public List<Var> visit(ASTNode node, Object data) throws VisitorException { List<Var> nodeVars = new ArrayList<>(); for (ASTNodeElem nodeElem : node.getNodeElemList()) { Var nodeVar = (Var)nodeElem.jjtAccept(this, null); nodeVars.add(nodeVar); } // Create any implicit unequalities for (int i = 0; i < nodeVars.size() - 1; i++) { Var var1 = nodeVars.get(i); for (int j = i + 1; j < nodeVars.size(); j++) { Var var2 = nodeVars.get(j); // At least one of the variables should be non-constant // for the unequality to make any sense: if (!var1.hasValue() || !var2.hasValue()) { graphPattern.addConstraint(new Not(new SameTerm(var1, var2))); } } } return nodeVars; }
@Override public List<Var> visit(ASTNode node, Object data) throws VisitorException { List<Var> nodeVars = new ArrayList<Var>(); for (ASTNodeElem nodeElem : node.getNodeElemList()) { Var nodeVar = (Var)nodeElem.jjtAccept(this, null); nodeVars.add(nodeVar); } // Create any implicit unequalities for (int i = 0; i < nodeVars.size() - 1; i++) { Var var1 = nodeVars.get(i); for (int j = i + 1; j < nodeVars.size(); j++) { Var var2 = nodeVars.get(j); // At least one of the variables should be non-constant // for the unequality to make any sense: if (!var1.hasValue() || !var2.hasValue()) { graphPattern.addConstraint(new Not(new SameTerm(var1, var2))); } } } return nodeVars; }
@Override public SameTerm visit(ASTSameTerm node, Object data) throws VisitorException { ValueExpr leftArg = (ValueExpr)node.getLeftOperand().jjtAccept(this, null); ValueExpr rightArg = (ValueExpr)node.getRightOperand().jjtAccept(this, null); return new SameTerm(leftArg, rightArg); }
@Override public SameTerm visit(ASTSameTerm 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 SameTerm(leftArg, rightArg); }
@Override public SameTerm visit(ASTSameTerm 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 SameTerm(leftArg, rightArg); }
@Override public SameTerm visit(ASTSameTerm node, Object data) throws VisitorException { ValueExpr leftArg = (ValueExpr)node.getLeftOperand().jjtAccept(this, null); ValueExpr rightArg = (ValueExpr)node.getRightOperand().jjtAccept(this, null); return new SameTerm(leftArg, rightArg); }
@Override public SameTerm visit(ASTSameTerm 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 SameTerm(leftArg, rightArg); }
@Override public SameTerm visit(ASTSameTerm node, Object data) throws VisitorException { ValueExpr leftArg = (ValueExpr)node.getLeftOperand().jjtAccept(this, null); ValueExpr rightArg = (ValueExpr)node.getRightOperand().jjtAccept(this, null); return new SameTerm(leftArg, rightArg); }
@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 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 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(Compare compare) { super.meet(compare); if (compare.getOperator() == CompareOp.EQ) { ValueExpr leftArg = compare.getLeftArg(); ValueExpr rightArg = compare.getRightArg(); boolean leftIsVar = isVar(leftArg); boolean rightIsVar = isVar(rightArg); boolean leftIsResource = isResource(leftArg); boolean rightIsResource = isResource(rightArg); if (leftIsVar && rightIsResource || leftIsResource && rightIsVar || leftIsResource && rightIsResource) { SameTerm sameTerm = new SameTerm(leftArg, rightArg); compare.replaceWith(sameTerm); } } }
@Override public void meet(Compare compare) { super.meet(compare); if (compare.getOperator() == CompareOp.EQ) { ValueExpr leftArg = compare.getLeftArg(); ValueExpr rightArg = compare.getRightArg(); boolean leftIsVar = isVar(leftArg); boolean rightIsVar = isVar(rightArg); boolean leftIsResource = isResource(leftArg); boolean rightIsResource = isResource(rightArg); if (leftIsVar && rightIsResource || leftIsResource && rightIsVar || leftIsResource && rightIsResource) { SameTerm sameTerm = new SameTerm(leftArg, rightArg); compare.replaceWith(sameTerm); } } }