@Override public Var get(Var var) { if (original.equals(var)) return substition; return null; }
@Override public boolean equals(Object other) { if (other instanceof Bound) { Bound o = (Bound)other; return arg.equals(o.getArg()); } return false; }
private void local(Var subj) { if (isLocal && relative == null) { relative = subj; } else if (!subj.equals(relative)) { notLocal(); } }
private void local(Var subj) { if (local && relative == null) { relative = subj; } else if (!subj.equals(relative)) { notLocal(); } }
private boolean isInversePath(final StatementPattern node, final Var start, final Var end) { if (node.getSubjectVar().equals(start)) { Preconditions.checkArgument(node.getObjectVar().equals(end)); return false; } else if (node.getObjectVar().equals(start)) { Preconditions.checkArgument(node.getSubjectVar().equals(end)); return true; } else { fail("Unsupported path expression. Check node: ", node); return false; } }
private boolean isInversePath(final StatementPattern node, final Var start, final Var end) { if (node.getSubjectVar().equals(start)) { check(node.getObjectVar().equals(end), "Invalid path expression"); return false; } else if (node.getObjectVar().equals(start)) { check(node.getSubjectVar().equals(end), "Invalid path expression"); return true; } else { fail("Unsupported path expression. Check node: ", node); return false; } }
/** * If two basic graph patterns have the same subject and can be run on the * same member, we can change the order. */ private LocalJoin findLocalJoin(Var subj, List<LocalJoin> vars) { if (vars.size() > 0 && vars.get(vars.size() - 1).getVar() == subj) { return vars.get(vars.size() - 1); } for (LocalJoin local : vars) { if (subj != null && subj.equals(local.getVar())) { return local; } } return null; }
/** * Verify the Subject for all of the patterns is the same. * * @param patterns - The patterns to check. * @throws IllegalStateException If all of the Subjects are not the same. */ private static void verifySameSubjects(final Collection<StatementPattern> patterns) throws IllegalStateException { requireNonNull(patterns); final Iterator<StatementPattern> it = patterns.iterator(); final Var subject = it.next().getSubjectVar(); while(it.hasNext()) { final StatementPattern pattern = it.next(); if(!pattern.getSubjectVar().equals(subject)) { throw new IllegalStateException("At least one of the patterns has a different subject from the others. " + "All subjects must be the same."); } } }
private List<StatementPattern> replaceSameTermVars(List<StatementPattern> statementPatterns, Set<SameTerm> sameTermConstraints) { if (sameTermConstraints != null) { for (SameTerm st : sameTermConstraints) { Var left = (Var)st.getLeftArg(); Var right = (Var)st.getRightArg(); for (StatementPattern sp : statementPatterns) { Var subj = sp.getSubjectVar(); Var obj = sp.getObjectVar(); if (subj.equals(left) || subj.equals(right)) { if (obj.equals(left) || obj.equals(right)) { sp.setObjectVar(subj); } } } } } return statementPatterns; }
/** * If two basic graph patterns have the same subject and can be run on the * same member, we can change the order. */ private LocalJoin findLocalJoin(Var subj, List<LocalJoin> vars) { LocalJoin result = null; if ((!vars.isEmpty()) && vars.get(vars.size() - 1).getVar() == subj) { result = vars.get(vars.size() - 1); } else { for (LocalJoin local : vars) { if (subj != null && subj.equals(local.getVar())) { result = local; break; } } } return result; }
@Override public void meet(Var var) { if (var.equals(oldVar)) { var.replaceWith(newVar.clone()); } }
@Override public boolean equals(Object other) { if (other instanceof Service && super.equals(other)) { Service o = (Service)other; return serviceRef.equals(o.getServiceRef()); } return false; }
private static boolean genConstantCompare(StatementPattern queryNode, StatementPattern indexNode) { ArrayList<Var> vars1 = (ArrayList<Var>) queryNode.getVarList(); ArrayList<Var> vars2 = (ArrayList<Var>) indexNode.getVarList(); for (int i = 0; i < vars1.size(); i++) { if (vars1.get(i).isConstant() && vars2.get(i).isConstant()) { if (!vars1.get(i).equals(vars2.get(i))) { return false; } } else if(!vars1.get(i).isConstant() && vars2.get(i).isConstant() ) { return false; } } return true; }
@Override public boolean equals(Object other) { if (other instanceof StatementPattern) { StatementPattern o = (StatementPattern)other; return subjectVar.equals(o.getSubjectVar()) && predicateVar.equals(o.getPredicateVar()) && objectVar.equals(o.getObjectVar()) && nullEquals(contextVar, o.getContextVar()) && scope.equals(o.getScope()); } return false; }
@Override public void meet(Var var) { if (toBeReplaced.equals(var)) { QueryModelNode parent = var.getParentNode(); parent.replaceChildNode(var, replacement); replacement.setParentNode(parent); } } }
@Override public boolean equals(Object other) { if (other instanceof ArbitraryLengthPath) { ArbitraryLengthPath o = (ArbitraryLengthPath)other; return subjectVar.equals(o.getSubjectVar()) && pathExpression.equals(o.getPathExpression()) && objectVar.equals(o.getObjectVar()) && nullEquals(contextVar, o.getContextVar()) && scope.equals(o.getScope()); } return false; }
@Override public boolean equals(Object other) { if (other instanceof ZeroLengthPath) { ZeroLengthPath o = (ZeroLengthPath)other; return subjectVar.equals(o.getSubjectVar()) && objectVar.equals(o.getObjectVar()) && nullEquals(contextVar, o.getContextVar()) && scope.equals(o.getScope()); } return false; }
@Override public void meet(LeftJoin node) throws RepositoryException { super.meet(node); Var leftSubject = getLocalSubject(node.getLeftArg()); Var rightSubject = getLocalSubject(node.getRightArg()); // if local then left and right can be combined boolean local = leftSubject != null && leftSubject.equals(rightSubject); RepositoryConnection leftOwner = getSingleOwner(node.getLeftArg()); RepositoryConnection rightOwner = getSingleOwner(node.getRightArg()); addOwners(node, leftOwner, rightOwner, local); }
@Override public void meet(LeftJoin node) throws RepositoryException { super.meet(node); Var leftSubject = getLocalSubject(node.getLeftArg()); Var rightSubject = getLocalSubject(node.getRightArg()); // if local then left and right can be combined boolean local = leftSubject != null && leftSubject.equals(rightSubject); RepositoryConnection leftOwner = getSingleOwner(node.getLeftArg()); RepositoryConnection rightOwner = getSingleOwner(node.getRightArg()); addOwners(node, leftOwner, rightOwner, local); }
@Override public void meet(Var var) { if (toBeReplaced.equals(var) || (toBeReplaced.isAnonymous() && var.isAnonymous() && (toBeReplaced.hasValue() && toBeReplaced.getValue().equals( var.getValue())))) { QueryModelNode parent = var.getParentNode(); parent.replaceChildNode(var, replacement); replacement.setParentNode(parent); } else if (replaceAnons && var.isAnonymous() && !var.hasValue()) { Var replacementVar = createAnonVar("anon-replace-" + var.getName() + index); QueryModelNode parent = var.getParentNode(); parent.replaceChildNode(var, replacementVar); replacementVar.setParentNode(parent); } }