Fix .equals Project: http://git-wip-us.apache.org/repos/asf/jena/repo Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/92106286 Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/92106286 Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/92106286
Branch: refs/heads/JENA-507 Commit: 921062862d974fb228f3f5460c0f4ced10ab9e9f Parents: 6ed9cdd Author: Andy Seaborne <[email protected]> Authored: Sat Sep 5 21:42:13 2015 +0100 Committer: Andy Seaborne <[email protected]> Committed: Sat Sep 5 21:42:13 2015 +0100 ---------------------------------------------------------------------- .../jena/sparql/algebra/op/OpPropFunc.java | 21 ++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/jena/blob/92106286/jena-arq/src/main/java/org/apache/jena/sparql/algebra/op/OpPropFunc.java ---------------------------------------------------------------------- diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/algebra/op/OpPropFunc.java b/jena-arq/src/main/java/org/apache/jena/sparql/algebra/op/OpPropFunc.java index a124930..e79df00 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/algebra/op/OpPropFunc.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/algebra/op/OpPropFunc.java @@ -18,12 +18,15 @@ package org.apache.jena.sparql.algebra.op; +import java.util.List ; + import org.apache.jena.graph.Node ; import org.apache.jena.sparql.algebra.Op ; import org.apache.jena.sparql.algebra.OpVisitor ; import org.apache.jena.sparql.algebra.Transform ; import org.apache.jena.sparql.pfunction.PropFuncArg ; import org.apache.jena.sparql.sse.Tags ; +import org.apache.jena.sparql.util.Iso ; import org.apache.jena.sparql.util.NodeIsomorphismMap ; /** Property functions (or any OpBGP replacement) @@ -83,11 +86,25 @@ public class OpPropFunc extends Op1 { if ( ! ( other instanceof OpPropFunc ) ) return false ; OpPropFunc procFunc = (OpPropFunc)other ; - - + if ( ! isomorphic(getSubjectArgs(), procFunc.getSubjectArgs(), labelMap) ) + return false ; + if ( ! isomorphic(getObjectArgs(), procFunc.getObjectArgs(), labelMap) ) + return false ; return getSubOp().equalTo(procFunc.getSubOp(), labelMap) ; } + private static boolean isomorphic(PropFuncArg pfa1, PropFuncArg pfa2, NodeIsomorphismMap labelMap) { + if ( pfa1 == null && pfa2 == null ) + return true ; + if ( pfa1 == null ) return false ; + if ( pfa2 == null ) return false ; + + List<Node> list1 = pfa1.getArgList() ; + List<Node> list2 = pfa2.getArgList() ; + + return Iso.isomorphicNodes(list1, list2, labelMap) ; + } + @Override public String getName() {
