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

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

commit 52c0a72b68b6e0daca4df6a68c02bfdec711763d
Author: Andy Seaborne <[email protected]>
AuthorDate: Wed Aug 28 13:52:18 2024 +0100

    Add BuilderOp for OpUnfold
---
 .../org/apache/jena/sparql/sse/builders/BuilderOp.java    | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git 
a/jena-arq/src/main/java/org/apache/jena/sparql/sse/builders/BuilderOp.java 
b/jena-arq/src/main/java/org/apache/jena/sparql/sse/builders/BuilderOp.java
index 7e36dd94f9..1be0cd2d39 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/sse/builders/BuilderOp.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/sse/builders/BuilderOp.java
@@ -97,6 +97,7 @@ public class BuilderOp
         addBuild(Tags.tagExtend,        buildExtend);
         addBuild(Tags.symAssign,        buildAssign);
         addBuild(Tags.tagSlice,         buildSlice);
+        addBuild(Tags.tagUnfold,        buildUnfold);
 
         addBuild(Tags.tagTable,         buildTable);
         addBuild(Tags.tagNull,          buildNull);
@@ -605,6 +606,20 @@ public class BuilderOp
         return new OpSlice(sub, start, length);
     };
 
+    final protected Build buildUnfold = list -> {
+        BuilderLib.checkLength(3, list, "unfold");
+        Item item1 = list.get(1);   // List of three
+        ItemList argList = item1.getList();
+
+        Expr cdtItem = BuilderExpr.buildExpr(argList.get(0));
+        Var eltVar = BuilderNode.buildVar(argList.get(1));
+        Var idxVar = null;
+        if ( argList.size() == 3 )
+            idxVar = BuilderNode.buildVar(argList.get(2));
+
+        Op subOp = build(list, 2);
+        return new OpUnfold(subOp,cdtItem, eltVar, idxVar);
+    };
 
     final protected Build buildNull = (ItemList list) -> {
                BuilderLib.checkLength(1, list, Tags.tagNull);

Reply via email to