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 692daaf0dc81a92a0af78bfea493926457ea179a
Author: Andy Seaborne <[email protected]>
AuthorDate: Sat Jul 5 10:41:53 2025 +0100

    GH-3296: Add --base to uparse
---
 jena-cmds/src/main/java/arq/uparse.java | 36 +++++++++++++++++++++------------
 1 file changed, 23 insertions(+), 13 deletions(-)

diff --git a/jena-cmds/src/main/java/arq/uparse.java 
b/jena-cmds/src/main/java/arq/uparse.java
index ae6d1938e0..8ac71c360a 100644
--- a/jena-cmds/src/main/java/arq/uparse.java
+++ b/jena-cmds/src/main/java/arq/uparse.java
@@ -40,13 +40,16 @@ import org.apache.jena.util.FileUtils ;
 
 public class uparse extends CmdARQ
 {
-    protected static final ArgDecl fileArg          = new 
ArgDecl(ArgDecl.HasValue, "file", "update") ;
-    protected static final ArgDecl syntaxArg        = new 
ArgDecl(ArgDecl.HasValue, "syntax", "syn") ;
+    protected static final ArgDecl argFile          = new 
ArgDecl(ArgDecl.HasValue, "file", "update") ;
+    protected static final ArgDecl argSyntax        = new 
ArgDecl(ArgDecl.HasValue, "syntax", "syn") ;
+    protected static final ArgDecl argBase          = new 
ArgDecl(ArgDecl.HasValue, "base") ;
     protected static final ArgDecl argDeclPrint     = new 
ArgDecl(ArgDecl.HasValue, "print") ;
     protected static final ArgDecl argDeclFixup     = new 
ArgDecl(ArgDecl.NoValue, "fixup") ;
 
     List<String> requestFiles = null ;
     protected Syntax updateSyntax = null ;
+    protected String baseURI = null;
+    protected boolean fixup = false;
     private boolean printUpdate = false ;
     private boolean printNone  = false ;
 
@@ -55,27 +58,27 @@ public class uparse extends CmdARQ
 
     protected uparse(String[] argv) {
         super(argv) ;
-        super.add(fileArg,      "--file=FILE",      "Update commands to 
parse") ;
-        super.add(syntaxArg,    "--syntax=name",    "Update syntax") ;
+        super.add(argFile,      "--file=FILE",      "Update commands to 
parse") ;
+        super.add(argSyntax,    "--syntax=name",    "Update syntax") ;
+        super.add(argBase,      "--base=IRI",       "Base URI");
         super.add(argDeclPrint, "--print",          "Print in various forms 
[update, none]") ;
         super.add(argDeclFixup, "--fixup",          "Convert undeclared prefix 
names to URIs") ;
     }
 
     @Override
     protected void processModulesAndArgs() {
-        requestFiles = getValues(fileArg) ;
+        requestFiles = getValues(argFile) ;
         super.processModulesAndArgs() ;
         if ( super.cmdStrictMode )
-            updateSyntax = Syntax.syntaxSPARQL_11 ;
+            updateSyntax = Syntax.syntaxSPARQL_12 ;
 
-        if ( contains(argDeclFixup) )
-            // Fixup undeclared prefix names.
-            ARQ.set(ARQ.fixupUndefinedPrefixes, true);
+        if ( super.contains(argDeclFixup) )
+            fixup = true;
 
         // Set syntax
-        if ( super.contains(syntaxArg) ) {
+        if ( super.contains(argSyntax) ) {
             // short name
-            String s = super.getValue(syntaxArg) ;
+            String s = super.getValue(argSyntax) ;
             Syntax syn = Syntax.lookup(s) ;
             if ( syn == null )
                 super.cmdError("Unrecognized syntax: " + s + " ; Choices are: 
arq, sparql, sparql10, sparql11)") ;
@@ -91,6 +94,9 @@ public class uparse extends CmdARQ
                 throw new CmdException("Not a recognized print form: " + arg + 
" : Choices are: update, none" );
         }
 
+        if ( super.contains(argBase) )
+            baseURI = super.getValue(argBase);
+
         if ( !printUpdate && ! printNone )
             printUpdate = true ;
     }
@@ -103,6 +109,11 @@ public class uparse extends CmdARQ
 
     @Override
     protected void exec() {
+        if ( fixup )
+            // Fixup undeclared prefix names.
+            ARQ.set(ARQ.fixupUndefinedPrefixes, true);
+
+
         for ( String filename : requestFiles ) {
             Syntax syntax = updateSyntax;
             if ( syntax == null )
@@ -138,7 +149,7 @@ public class uparse extends CmdARQ
     private void execOne(String updateString, Syntax syntax) {
         UpdateRequest req;
         try {
-            req = UpdateFactory.create(updateString, syntax);
+            req = UpdateFactory.create(updateString, baseURI, syntax);
         } catch (QueryParseException ex) {
             System.err.print("Parse error: ");
             System.err.println(ex.getMessage());
@@ -170,7 +181,6 @@ public class uparse extends CmdARQ
         public UpdateCheckException(String msg, Throwable cause) { super(msg, 
cause) ; }
     }
 
-
     public static void checkUpdate(UpdateRequest req, Syntax syntax) {
         IndentedLineBuffer w = new IndentedLineBuffer() ;
         UpdateWriter.output(req, w) ;

Reply via email to