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 ff9a14c6f65297be8af1e2ca568216f64253d84c
Author: Andy Seaborne <[email protected]>
AuthorDate: Wed Jul 16 22:01:31 2025 +0100

    Add G.listLength
---
 .../apache/jena/sparql/util/graph/GraphList.java   | 65 ++++++++++------------
 .../src/main/java/org/apache/jena/system/G.java    | 10 ++++
 2 files changed, 40 insertions(+), 35 deletions(-)

diff --git 
a/jena-arq/src/main/java/org/apache/jena/sparql/util/graph/GraphList.java 
b/jena-arq/src/main/java/org/apache/jena/sparql/util/graph/GraphList.java
index cb56d73218..65690fcdbc 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/util/graph/GraphList.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/util/graph/GraphList.java
@@ -40,6 +40,36 @@ import org.apache.jena.vocabulary.RDF;
 
 public class GraphList
 {
+    public static List<Node> members(GNode gnode) {
+        List<Node> x = new ArrayList<>();
+        members(gnode, x);
+        return x;
+    }
+
+    public static void members(GNode gnode, final Collection<Node> acc) {
+        if ( !isListNode(gnode) )
+            return;
+
+        while (!listEnd(gnode)) {
+            Node n = car(gnode);
+            if ( n != null )
+                acc.add(n);
+            gnode = next(gnode);
+        }
+    }
+
+    public static int length(GNode gnode) {
+        if ( !isListNode(gnode) )
+            return -1;
+
+        int len = 0;
+        while (!listEnd(gnode)) {
+            len++;
+            gnode = next(gnode);
+        }
+        return len;
+    }
+
     // ----------------------
     /** Starting at a list element, find the heads of lists it is in */
     public static List<Node> listFromMember(GNode gnode)
@@ -144,41 +174,6 @@ public class GraphList
         return x == null || Node.ANY.equals(x);
     }
 
-    public static List<Node> members(GNode gnode)
-    {
-        List<Node> x = new ArrayList<>();
-        members(gnode, x);
-        return x;
-    }
-
-    public static void members(GNode gnode, final Collection<Node> acc)
-    {
-        if ( ! isListNode(gnode) )
-            return;
-
-        while( ! listEnd(gnode) )
-        {
-            Node n = car(gnode);
-            if ( n != null )
-                acc.add(n);
-            gnode = next(gnode);
-        }
-    }
-
-    public static int length(GNode gnode)
-    {
-        if ( ! isListNode(gnode) )
-            return -1;
-
-        int len = 0;
-        while ( ! listEnd(gnode) )
-        {
-            len++;
-            gnode = next(gnode);
-        }
-        return len;
-    }
-
     public static int occurs(GNode gnode, Node item)
     { return indexes(gnode, item).size(); }
 
diff --git a/jena-arq/src/main/java/org/apache/jena/system/G.java 
b/jena-arq/src/main/java/org/apache/jena/system/G.java
index 6d91a2999e..5c4c15b1c9 100644
--- a/jena-arq/src/main/java/org/apache/jena/system/G.java
+++ b/jena-arq/src/main/java/org/apache/jena/system/G.java
@@ -490,6 +490,16 @@ public class G {
         return GraphList.members(gNode);
     }
 
+    /** Return a the length of an RDF list. */
+    public static int listLength(Graph graph, Node node) {
+        Objects.requireNonNull(graph, "graph");
+        Objects.requireNonNull(node, "node");
+        GNode gNode = GNode.create(graph, node);
+        if ( ! GraphList.isListNode(gNode) )
+            return -1;
+        return GraphList.length(gNode);
+    }
+
     /**
      * Return a java list where the {@code node} is an RDF list of nodes or a 
single
      * node (returned a singleton list).

Reply via email to