This is an automated email from the ASF dual-hosted git repository.

andy pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/jena.git

commit e81942a084a1015e9192bdd24db32327658623a1
Author: Andy Seaborne <[email protected]>
AuthorDate: Tue Jul 8 09:41:42 2025 +0100

    Provide Collection<Triple> iso-matching
---
 .../org/apache/jena/sparql/util/IsoMatcher.java    | 28 +++++++++++++---------
 .../jena/sparql/util/iso/TestIsoMatcher.java       |  4 ++--
 2 files changed, 19 insertions(+), 13 deletions(-)

diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/util/IsoMatcher.java 
b/jena-arq/src/main/java/org/apache/jena/sparql/util/IsoMatcher.java
index 6e3ba9581d..71ec7d5ea1 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/util/IsoMatcher.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/util/IsoMatcher.java
@@ -33,7 +33,6 @@ import org.apache.jena.sparql.core.DatasetGraph ;
 import org.apache.jena.sparql.core.Quad ;
 import org.apache.jena.sparql.util.iso.IsoAlgRows;
 import org.apache.jena.sparql.util.iso.IsoAlgTuple;
-import org.apache.jena.util.iterator.ExtendedIterator;
 
 /**
  * Simple isomorphism testing for on unordered collections.
@@ -48,22 +47,29 @@ import org.apache.jena.util.iterator.ExtendedIterator;
 public class IsoMatcher
 {
     /** Graph isomorphism */
-    public static boolean isomorphic(Graph g1, Graph g2) {
-        List<Tuple<Node>> x1 = tuplesTriples(g1.find());
-        List<Tuple<Node>> x2 = tuplesTriples(g2.find());
-        return isomorphic(x1, x2, NodeUtils.sameRdfTerm);
+    public static boolean isomorphic(Graph graph1, Graph graph2) {
+        List<Tuple<Node>> x1 = tuplesTriples(graph1.find());
+        List<Tuple<Node>> x2 = tuplesTriples(graph2.find());
+        return isomorphicTuples(x1, x2, NodeUtils.sameRdfTerm);
     }
 
     /** Dataset isomorphism */
     public static boolean isomorphic(DatasetGraph dsg1, DatasetGraph dsg2) {
         List<Tuple<Node>> x1 = tuplesQuads(dsg1.find());
         List<Tuple<Node>> x2 = tuplesQuads(dsg2.find());
-        return isomorphic(x1, x2, NodeUtils.sameRdfTerm);
+        return isomorphicTuples(x1, x2, NodeUtils.sameRdfTerm);
+    }
+
+    /** Collection of triples isomorphism */
+    public static boolean isomorphic(Collection<Triple> triples1, 
Collection<Triple> triples2) {
+        List<Tuple<Node>> x1 = tuplesTriples(triples1.iterator());
+        List<Tuple<Node>> x2 = tuplesTriples(triples2.iterator());
+        return isomorphicTuples(x1, x2, NodeUtils.sameRdfTerm);
     }
 
     /** Collection of tuples isomorphism */
-    public static boolean isomorphic(Collection<Tuple<Node>> x1, 
Collection<Tuple<Node>> x2) {
-        return isomorphic(x1, x2, NodeUtils.sameRdfTerm);
+    public static boolean isomorphicTuples(Collection<Tuple<Node>> x1, 
Collection<Tuple<Node>> x2) {
+        return isomorphicTuples(x1, x2, NodeUtils.sameRdfTerm);
     }
 
     /** Helper - convert to {@code List<Tuple<Node>>} */
@@ -72,18 +78,18 @@ public class IsoMatcher
     }
 
     /** Helper - convert to {@code List<Tuple<Node>>} */
-    private static List<Tuple<Node>> tuplesTriples(ExtendedIterator<Triple> 
iter) {
+    private static List<Tuple<Node>> tuplesTriples(Iterator<Triple> iter) {
         try {
             return Iter.iter(iter).map(t->tuple(t.getSubject(), 
t.getPredicate(), t.getObject())).toList();
         }
-        finally { iter.close(); }
+        finally { Iter.close(iter); }
     }
 
     /** Collection of tuples isomorphism, with choice of when two nodes are 
"equal".
      * See also {@link IsoAlgTuple#isIsomorphic(Collection, Collection, 
org.apache.jena.sparql.util.Iso.Mappable, EqualityTest)}
      * for isomorphisms testing for more than just blank nodes.
      */
-    private static boolean isomorphic(Collection<Tuple<Node>> x1, 
Collection<Tuple<Node>> x2, EqualityTest nodeTest) {
+    private static boolean isomorphicTuples(Collection<Tuple<Node>> x1, 
Collection<Tuple<Node>> x2, EqualityTest nodeTest) {
         return IsoAlgTuple.isIsomorphic(x1, x2, nodeTest);
     }
 }
diff --git 
a/jena-arq/src/test/java/org/apache/jena/sparql/util/iso/TestIsoMatcher.java 
b/jena-arq/src/test/java/org/apache/jena/sparql/util/iso/TestIsoMatcher.java
index 0d2ff1a911..3f059a6355 100644
--- a/jena-arq/src/test/java/org/apache/jena/sparql/util/iso/TestIsoMatcher.java
+++ b/jena-arq/src/test/java/org/apache/jena/sparql/util/iso/TestIsoMatcher.java
@@ -257,7 +257,7 @@ public class TestIsoMatcher
     }
 
     private void test$(List<Tuple<Node>> t1, List<Tuple<Node>> t2, boolean 
iso) {
-        boolean b = IsoMatcher.isomorphic(t1, t2);
+        boolean b = IsoMatcher.isomorphicTuples(t1, t2);
         if ( b != iso ) {
             System.out.println("====");
             System.out.println(t1);
@@ -286,7 +286,7 @@ public class TestIsoMatcher
         Collection<Tuple<Node>> x1 = 
Collections.singletonList(TupleFactory.create1(n1));
         Collection<Tuple<Node>> x2 = 
Collections.singletonList(TupleFactory.create1(n2));
 
-        boolean b = IsoMatcher.isomorphic(x1, x2);
+        boolean b = IsoMatcher.isomorphicTuples(x1, x2);
         if ( b != expected ) {
             System.out.println("====");
             System.out.println(n1);

Reply via email to