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 13f3f13b50c1df166e94c27d36dc1a2138c2cf92
Author: Andy Seaborne <[email protected]>
AuthorDate: Tue Dec 16 10:43:34 2025 +0000

    Remove old 'afn:' triple term functions in favour of std RDF 1.2
---
 .../org/apache/jena/sparql/expr/E_TripleFn.java    |  1 +
 .../library/triple/TripleTermFunctions.java        | 32 ----------------------
 .../function/library/triple/TripleTermOps.java     |  8 ++++++
 .../java/org/apache/jena/sparql/expr/TS_Expr.java  |  2 +-
 ...TermFunctions.java => TestExprTripleTerms.java} |  3 +-
 5 files changed, 11 insertions(+), 35 deletions(-)

diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/E_TripleFn.java 
b/jena-arq/src/main/java/org/apache/jena/sparql/expr/E_TripleFn.java
index d544ba8f15..b73205d042 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/E_TripleFn.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/E_TripleFn.java
@@ -21,6 +21,7 @@ package org.apache.jena.sparql.expr;
 import org.apache.jena.sparql.function.library.triple.TripleTermOps;
 import org.apache.jena.sparql.sse.Tags;
 
+// The function "TRIPLE", not "<<( )>>", used in an expression.
 public class E_TripleFn extends ExprFunction3 {
 
     private static final String symbol = Tags.tagFnTriple;
diff --git 
a/jena-arq/src/main/java/org/apache/jena/sparql/function/library/triple/TripleTermFunctions.java
 
b/jena-arq/src/main/java/org/apache/jena/sparql/function/library/triple/TripleTermFunctions.java
deleted file mode 100644
index 567201c46d..0000000000
--- 
a/jena-arq/src/main/java/org/apache/jena/sparql/function/library/triple/TripleTermFunctions.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.sparql.function.library.triple;
-
-import org.apache.jena.sparql.ARQConstants;
-import org.apache.jena.sparql.function.FunctionRegistry;
-
-public class TripleTermFunctions {
-    public static void register(FunctionRegistry functionRegistry) {
-        functionRegistry.put(ARQConstants.ARQFunctionLibraryURI+"subject",    
TripleSubject.class);
-        functionRegistry.put(ARQConstants.ARQFunctionLibraryURI+"predicate",  
TriplePredicate.class);
-        functionRegistry.put(ARQConstants.ARQFunctionLibraryURI+"object",     
TripleObject.class);
-        functionRegistry.put(ARQConstants.ARQFunctionLibraryURI+"triple",     
TripleTerm.class);
-        functionRegistry.put(ARQConstants.ARQFunctionLibraryURI+"isTriple",   
IsTripleTerm.class);
-    }
-}
diff --git 
a/jena-arq/src/main/java/org/apache/jena/sparql/function/library/triple/TripleTermOps.java
 
b/jena-arq/src/main/java/org/apache/jena/sparql/function/library/triple/TripleTermOps.java
index a3e0bffe4c..fef91618a5 100644
--- 
a/jena-arq/src/main/java/org/apache/jena/sparql/function/library/triple/TripleTermOps.java
+++ 
b/jena-arq/src/main/java/org/apache/jena/sparql/function/library/triple/TripleTermOps.java
@@ -23,6 +23,7 @@ import java.util.function.Function;
 import org.apache.jena.graph.Node;
 import org.apache.jena.graph.NodeFactory;
 import org.apache.jena.graph.Triple;
+import org.apache.jena.query.ARQ;
 import org.apache.jena.sparql.expr.ExprEvalException;
 import org.apache.jena.sparql.expr.NodeValue;
 
@@ -33,6 +34,13 @@ public class TripleTermOps {
      */
     public static NodeValue fnTriple(NodeValue nv1, NodeValue nv2, NodeValue 
nv3) {
         Node s = nv1.asNode();
+        if ( ARQ.isStrictMode() ) {
+            if ( s.isTripleTerm() )
+                throw new ExprEvalException("triple: Subject is a triple term: 
"+nv1);
+            if ( !s.isURI() && !s.isBlank() )
+                throw new ExprEvalException("triple: Subject is not a URI or 
blank node: "+nv2);
+        }
+
         Node p = nv2.asNode();
         if ( ! p.isURI() )
             throw new ExprEvalException("triple: Predicate not a URI: "+nv2);
diff --git a/jena-arq/src/test/java/org/apache/jena/sparql/expr/TS_Expr.java 
b/jena-arq/src/test/java/org/apache/jena/sparql/expr/TS_Expr.java
index 2d70825d94..06efb7eee7 100644
--- a/jena-arq/src/test/java/org/apache/jena/sparql/expr/TS_Expr.java
+++ b/jena-arq/src/test/java/org/apache/jena/sparql/expr/TS_Expr.java
@@ -39,7 +39,7 @@ import 
org.apache.jena.sparql.expr.nodevalue.TestNodeValueSortKey;
     , TestFunctions.class
     , TestFunctions2.class
     , TestFunctionsByURI.class
-    , TestTripleTermFunctions.class
+    , TestExprTripleTerms.class
     , TestLeviathanFunctions.class
     , TestNodeValueOps.class
     , TestOrdering.class
diff --git 
a/jena-arq/src/test/java/org/apache/jena/sparql/expr/TestTripleTermFunctions.java
 b/jena-arq/src/test/java/org/apache/jena/sparql/expr/TestExprTripleTerms.java
similarity index 95%
rename from 
jena-arq/src/test/java/org/apache/jena/sparql/expr/TestTripleTermFunctions.java
rename to 
jena-arq/src/test/java/org/apache/jena/sparql/expr/TestExprTripleTerms.java
index 4d47b943b5..59f5e9ed0f 100644
--- 
a/jena-arq/src/test/java/org/apache/jena/sparql/expr/TestTripleTermFunctions.java
+++ 
b/jena-arq/src/test/java/org/apache/jena/sparql/expr/TestExprTripleTerms.java
@@ -34,9 +34,8 @@ import org.apache.jena.sys.JenaSystem;
 
 /**
  * Tests for TRIPLE, SUBJECT, PREDICATE, OBJECT, isTRIPLE
- * and by URIs afn:triple(), afn:subject(), afn:predicate(), afn:object(), 
afn:isTriple().
  */
-public class TestTripleTermFunctions {
+public class TestExprTripleTerms {
 
     static { JenaSystem.init(); }
 

Reply via email to