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 9a97004f0d8ddada6ae18700d445efdaf4f1b0d0
Author: Andy Seaborne <[email protected]>
AuthorDate: Mon Dec 1 20:54:18 2025 +0000

    Deprecate Triple.getMatchSubject/getMatchPredicate/getMatchObject
---
 .../org/apache/jena/sparql/core/GraphView.java     |  6 ++---
 .../jena/sparql/expr/nodevalue/NodeFunctions.java  | 27 ++++++++++++++++++++++
 .../jena/sparql/graph/GraphSPARQLService.java      |  6 ++---
 .../src/main/java/org/apache/jena/system/G.java    |  9 ++++++++
 .../jena/system/buffering/BufferingGraph.java      |  2 +-
 .../sparql/api/TestQueryExecutionTimeout2.java     |  5 +++-
 .../jena/sparql/core/DatasetGraphSimpleMem.java    |  4 ++--
 .../src/main/java/org/apache/jena/graph/Node.java  | 14 +++++++----
 .../main/java/org/apache/jena/graph/Node_ANY.java  |  2 +-
 .../main/java/org/apache/jena/graph/Triple.java    | 25 +++++++++++++++-----
 .../org/apache/jena/reasoner/BaseInfGraph.java     |  4 +---
 .../jena/reasoner/rulesys/impl/SafeGraph.java      |  8 +++----
 .../rulesys/impl/TestLPBRuleEngineLeak.java        |  2 +-
 .../GenericGeometryPropertyFunction.java           |  6 +----
 14 files changed, 85 insertions(+), 35 deletions(-)

diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/core/GraphView.java 
b/jena-arq/src/main/java/org/apache/jena/sparql/core/GraphView.java
index d9c95d0169..ed504153ca 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/core/GraphView.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/core/GraphView.java
@@ -107,9 +107,9 @@ public class GraphView extends GraphBase implements 
NamedGraph, Sync
     @Override
     protected ExtendedIterator<Triple> graphBaseFind(Triple m) {
         if ( m == null ) m = Triple.ANY ;
-        Node s = m.getMatchSubject() ;
-        Node p = m.getMatchPredicate() ;
-        Node o = m.getMatchObject() ;
+        Node s = m.getSubject() ;
+        Node p = m.getPredicate() ;
+        Node o = m.getObject() ;
         return graphBaseFind(s, p, o) ;
     }
 
diff --git 
a/jena-arq/src/main/java/org/apache/jena/sparql/expr/nodevalue/NodeFunctions.java
 
b/jena-arq/src/main/java/org/apache/jena/sparql/expr/nodevalue/NodeFunctions.java
index ffc9e6cc2e..b1592ce414 100644
--- 
a/jena-arq/src/main/java/org/apache/jena/sparql/expr/nodevalue/NodeFunctions.java
+++ 
b/jena-arq/src/main/java/org/apache/jena/sparql/expr/nodevalue/NodeFunctions.java
@@ -92,10 +92,37 @@ public class NodeFunctions {
 //            && sameTerm(t1.getObject(), t2.getObject());
 //    }
 
+    // -------- sameValue
+
+    public static boolean sameValue(NodeValue nv1, NodeValue nv2) {
+        return NodeValue.sameValueAs(nv1, nv2);
+    }
+
+    public static boolean sameValue(Node node1, Node node2) {
+        NodeValue nv1 = NodeValue.makeNode(node1);
+        NodeValue nv2 = NodeValue.makeNode(node2);
+        return NodeValue.sameValueAs(nv1, nv2);
+    }
+
+    public static boolean notSameValue(NodeValue nv1, NodeValue nv2) {
+        return NodeValue.notSameValueAs(nv1, nv2);
+    }
+
+    public static boolean notSameValue(Node node1, Node node2) {
+        NodeValue nv1 = NodeValue.makeNode(node1);
+        NodeValue nv2 = NodeValue.makeNode(node2);
+        return NodeValue.notSameValueAs(nv1, nv2);
+    }
+
     // -------- RDFterm-equals -- raises an exception on "don't know" for 
literals.
 
     // Exact as defined by SPARQL spec, when there are no value extensions.
     //   Exception for two literals that might be equal but we don't know 
because of language tags.
+
+    // THIS IS NOT:
+    // SPARQL 1.1 = RDFterm-equals
+    // SPARQL 1.2 = sameValue
+
     public static boolean rdfTermEquals(Node n1, Node n2) {
         if ( n1.equals(n2) )
             return true;
diff --git 
a/jena-arq/src/main/java/org/apache/jena/sparql/graph/GraphSPARQLService.java 
b/jena-arq/src/main/java/org/apache/jena/sparql/graph/GraphSPARQLService.java
index 4f66bd46c0..f57b310572 100644
--- 
a/jena-arq/src/main/java/org/apache/jena/sparql/graph/GraphSPARQLService.java
+++ 
b/jena-arq/src/main/java/org/apache/jena/sparql/graph/GraphSPARQLService.java
@@ -68,7 +68,7 @@ public class GraphSPARQLService extends GraphBase implements 
Graph
     @Override
     protected ExtendedIterator<Triple> graphBaseFind(Triple m)
     {
-        Node s = m.getMatchSubject() ;
+        Node s = m.getSubject() ;
         Var sVar = null ;
         if ( s == null )
         {
@@ -76,7 +76,7 @@ public class GraphSPARQLService extends GraphBase implements 
Graph
             s = sVar ;
         }
 
-        Node p = m.getMatchPredicate() ;
+        Node p = m.getPredicate() ;
         Var pVar = null ;
         if ( p == null )
         {
@@ -84,7 +84,7 @@ public class GraphSPARQLService extends GraphBase implements 
Graph
             p = pVar ;
         }
 
-        Node o = m.getMatchObject() ;
+        Node o = m.getObject() ;
         Var oVar = null ;
         if ( o == null )
         {
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 3e6ca18fa0..5f774dd433 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
@@ -75,6 +75,7 @@ public class G {
     public static boolean isResource(Node n)    { return n != null && 
(n.isURI()||n.isBlank()); }
     public static boolean isNodeTriple(Node n)  { return n != null && 
n.isTripleTerm(); }
     public static boolean isNodeGraph(Node n)   { return n != null && 
n.isNodeGraph(); }
+    public static boolean isAny(Node n)         { return Node.ANY.equals(n); }
     public static boolean isNullOrAny(Node n)   { return n == null || 
Node.ANY.equals(n); }
 
     /**
@@ -101,6 +102,14 @@ public class G {
         return Boolean.TRUE.equals(n.getLiteralValue());
     }
 
+    /**
+     * Convert {@code Node.ANY} to {@code null}, otherwise return the original 
node so that
+     * {@code ==} may be used to test whether any change has occurred.
+     */
+    public static Node anyAsNull(Node x) {
+        return isAny(x) ? null : x;
+    }
+
     /**
      * Convert null to Node.ANY, otherwise return the original node so that
      * {@code ==} may be used to test whether any change has occurred.
diff --git 
a/jena-arq/src/main/java/org/apache/jena/system/buffering/BufferingGraph.java 
b/jena-arq/src/main/java/org/apache/jena/system/buffering/BufferingGraph.java
index 96731d16e5..25a7b6cc17 100644
--- 
a/jena-arq/src/main/java/org/apache/jena/system/buffering/BufferingGraph.java
+++ 
b/jena-arq/src/main/java/org/apache/jena/system/buffering/BufferingGraph.java
@@ -183,7 +183,7 @@ public class BufferingGraph extends GraphWrapper implements 
BufferingCtl {
 
     @Override
     public ExtendedIterator<Triple> find(Triple m) {
-        return find(m.getMatchSubject(), m.getMatchPredicate(), 
m.getMatchObject());
+        return find(m.getSubject(), m.getPredicate(), m.getObject());
     }
 
     @Override
diff --git 
a/jena-arq/src/test/java/org/apache/jena/sparql/api/TestQueryExecutionTimeout2.java
 
b/jena-arq/src/test/java/org/apache/jena/sparql/api/TestQueryExecutionTimeout2.java
index 5403cb9b08..3d5e9c6f0e 100644
--- 
a/jena-arq/src/test/java/org/apache/jena/sparql/api/TestQueryExecutionTimeout2.java
+++ 
b/jena-arq/src/test/java/org/apache/jena/sparql/api/TestQueryExecutionTimeout2.java
@@ -32,6 +32,7 @@ import org.junit.jupiter.api.Timeout;
 
 import org.apache.jena.base.Sys;
 import org.apache.jena.graph.Graph;
+import org.apache.jena.graph.Node;
 import org.apache.jena.graph.NodeFactory;
 import org.apache.jena.graph.Triple;
 import org.apache.jena.graph.impl.GraphBase;
@@ -180,7 +181,7 @@ public class TestQueryExecutionTimeout2
         Graph graph = new GraphBase() {
             @Override
             protected ExtendedIterator<Triple> graphBaseFind(Triple t) {
-                if (t.getMatchSubject() != null && 
t.getMatchSubject().isConcrete()) {
+                if (t.getSubject() != null && t.getSubject().isConcrete()) {
                     // Don't match any concrete subject
                     return NiceIterator.emptyIterator();
                 } else {
@@ -204,5 +205,7 @@ public class TestQueryExecutionTimeout2
             assertThrows(QueryCancelledException.class, ()-> 
RowSetOps.count(qe.select()));
         }
     }
+
+    public boolean isWildcard(Node n) { return n == null || n == Node.ANY; }
 }
 
diff --git 
a/jena-arq/src/test/java/org/apache/jena/sparql/core/DatasetGraphSimpleMem.java 
b/jena-arq/src/test/java/org/apache/jena/sparql/core/DatasetGraphSimpleMem.java
index 6c7a3b7631..88bd4557eb 100644
--- 
a/jena-arq/src/test/java/org/apache/jena/sparql/core/DatasetGraphSimpleMem.java
+++ 
b/jena-arq/src/test/java/org/apache/jena/sparql/core/DatasetGraphSimpleMem.java
@@ -168,7 +168,7 @@ public class DatasetGraphSimpleMem extends 
DatasetGraphTriplesQuads implements T
         protected ExtendedIterator<Triple> graphBaseFind(Triple m) {
             List<Triple> results = new ArrayList<>();
             for ( Triple t : triples )
-                if ( m.matches(t.getMatchSubject(), t.getMatchPredicate(), 
t.getMatchObject()) )
+                if ( m.matches(t.getSubject(), t.getPredicate(), 
t.getObject()) )
                     results.add(t);
             return WrappedIterator.create(results.iterator());
         }
@@ -197,7 +197,7 @@ public class DatasetGraphSimpleMem extends 
DatasetGraphTriplesQuads implements T
         protected ExtendedIterator<Triple> graphBaseFind(Triple m) {
             List<Triple> results = new ArrayList<>();
 
-            Iterator<Quad> iter = findNG(graphName, m.getMatchSubject(), 
m.getMatchPredicate(), m.getMatchObject());
+            Iterator<Quad> iter = findNG(graphName, m.getSubject(), 
m.getPredicate(), m.getObject());
             for (; iter.hasNext(); )
                 results.add(iter.next().asTriple());
             return WrappedIterator.create(results.iterator());
diff --git a/jena-core/src/main/java/org/apache/jena/graph/Node.java 
b/jena-core/src/main/java/org/apache/jena/graph/Node.java
index e249cb4c59..ce51927902 100644
--- a/jena-core/src/main/java/org/apache/jena/graph/Node.java
+++ b/jena-core/src/main/java/org/apache/jena/graph/Node.java
@@ -21,6 +21,7 @@ package org.apache.jena.graph;
 import java.io.IOException;
 import java.io.ObjectStreamException;
 import java.io.Serializable;
+import java.util.Objects;
 import java.util.function.Function;
 
 import org.apache.jena.datatypes.RDFDatatype ;
@@ -239,7 +240,8 @@ public abstract class Node implements Serializable {
 
     /**
      * Java rules for equals. See also {#sameTermAs} and {#sameValueAs}.
-     * Nodes only equal other Nodes that have equal labels.
+     * {@code .equals} is "same RDF Term" with all the rules of
+     *  Java equality such as "null" handling.
      */
     @Override
     public abstract boolean equals(Object o);
@@ -247,8 +249,10 @@ public abstract class Node implements Serializable {
     /**
      * RDF term equality.
      */
-    public boolean sameTermAs(Object o)
-    { return equals( o ); }
+    public boolean sameTermAs(Object o) {
+        Objects.requireNonNull(o);
+        return equals(o);
+    }
 
     /**
      * Test that two nodes are semantically equivalent.
@@ -256,8 +260,8 @@ public abstract class Node implements Serializable {
      * equals is stricter. For example, two xsd:int literals with
      * the same value but different lexical form are semantically
      * equivalent but distinguished by the java equals function.
-     * <p>Default implementation is to use equals, subclasses should
-     * override this.</p>
+     * <p>Default implementation is to use {@link #equals}
+     * subclasses should override this.</p>
      */
     public boolean sameValueAs(Object o)
     { return equals( o ); }
diff --git a/jena-core/src/main/java/org/apache/jena/graph/Node_ANY.java 
b/jena-core/src/main/java/org/apache/jena/graph/Node_ANY.java
index 3b4cf36d75..2472616eb6 100644
--- a/jena-core/src/main/java/org/apache/jena/graph/Node_ANY.java
+++ b/jena-core/src/main/java/org/apache/jena/graph/Node_ANY.java
@@ -41,7 +41,7 @@ public class Node_ANY extends Node {
 
     @Override
     public boolean equals(Object other) {
-        // This is only one such object.
+        // There is only one such object.
         if ( this == other )
             return true;
         return false;
diff --git a/jena-core/src/main/java/org/apache/jena/graph/Triple.java 
b/jena-core/src/main/java/org/apache/jena/graph/Triple.java
index b8c47f4a07..8111c0824e 100644
--- a/jena-core/src/main/java/org/apache/jena/graph/Triple.java
+++ b/jena-core/src/main/java/org/apache/jena/graph/Triple.java
@@ -91,21 +91,34 @@ public class Triple implements Serializable
     public final Node getObject()
        { return obj; }
 
-       /** Return subject or null, not Node.ANY */
+       /**
+        * Return subject or null, not Node.ANY
+        * @deprecated Use {@link #getSubject()}.
+        */
+    @Deprecated(forRemoval = true)
     public Node getMatchSubject()
-    { return anyToNull( subj ); }
+    { return anyToNull( getSubject() ); }
 
-    /** Return predicate or null, not Node.ANY */
+    /**
+     *  Return predicate or null, not Node.ANY.
+     * @deprecated Use {@link #getPredicate()}.
+     */
+    @Deprecated(forRemoval = true)
     public Node getMatchPredicate()
-    { return anyToNull( pred ); }
+    { return anyToNull( getPredicate() ); }
 
-    /** Return object or null, not Node.ANY */
+    /** Return object or null, not Node.ANY.
+     * @deprecated Use {@link #getObject()}.
+     */
+    @Deprecated(forRemoval = true)
     public Node getMatchObject()
-    { return anyToNull( obj ); }
+    { return anyToNull( getObject() ); }
 
+    @Deprecated(forRemoval = true)
     private static Node anyToNull( Node n )
     { return Node.ANY.equals( n ) ? null : n; }
 
+    @Deprecated(forRemoval = true)
     private static Node nullToAny( Node n )
     { return n == null ? Node.ANY : n; }
 
diff --git a/jena-core/src/main/java/org/apache/jena/reasoner/BaseInfGraph.java 
b/jena-core/src/main/java/org/apache/jena/reasoner/BaseInfGraph.java
index 82d0c105d9..9ec677c1ae 100644
--- a/jena-core/src/main/java/org/apache/jena/reasoner/BaseInfGraph.java
+++ b/jena-core/src/main/java/org/apache/jena/reasoner/BaseInfGraph.java
@@ -283,9 +283,7 @@ public abstract class BaseInfGraph extends GraphBase 
implements InfGraph {
      */
     @Override
     protected ExtendedIterator<Triple> graphBaseFind(Triple triple) {
-        return graphBaseFind(triple.getMatchSubject(), 
triple.getMatchPredicate(), triple.getMatchObject())
-             // .filterKeep(new TripleMatchFilter(m.asTriple()))
-             ;
+        return graphBaseFind(triple.getSubject(), triple.getPredicate(), 
triple.getObject());
     }
 
     /**
diff --git 
a/jena-core/src/main/java/org/apache/jena/reasoner/rulesys/impl/SafeGraph.java 
b/jena-core/src/main/java/org/apache/jena/reasoner/rulesys/impl/SafeGraph.java
index cc055615b8..33c26ce05f 100644
--- 
a/jena-core/src/main/java/org/apache/jena/reasoner/rulesys/impl/SafeGraph.java
+++ 
b/jena-core/src/main/java/org/apache/jena/reasoner/rulesys/impl/SafeGraph.java
@@ -39,12 +39,12 @@ public class SafeGraph extends WrappedGraph implements 
Graph {
 
     @Override
     public ExtendedIterator<Triple> find( Triple triple ) {
-        return find(triple.getMatchSubject(), triple.getMatchPredicate(), 
triple.getMatchObject());
+        return find(triple.getSubject(), triple.getPredicate(), 
triple.getObject());
     }
-    
+
     @Override
     public ExtendedIterator<Triple> find( Node s, Node p, Node o ) {
-        return SimpleEventManager.notifyingRemove( this, 
+        return SimpleEventManager.notifyingRemove( this,
                 base.find( s, p, o ).filterDrop( t -> 
t.getSubject().isLiteral() ||
                                t.getPredicate().isBlank() || 
t.getPredicate().isLiteral() ) );
     }
@@ -55,5 +55,5 @@ public class SafeGraph extends WrappedGraph implements Graph {
     public Graph getRawGraph() {
         return base;
     }
-    
+
 }
diff --git 
a/jena-core/src/test/java/org/apache/jena/reasoner/rulesys/impl/TestLPBRuleEngineLeak.java
 
b/jena-core/src/test/java/org/apache/jena/reasoner/rulesys/impl/TestLPBRuleEngineLeak.java
index aa8578f0be..fb184eaa24 100644
--- 
a/jena-core/src/test/java/org/apache/jena/reasoner/rulesys/impl/TestLPBRuleEngineLeak.java
+++ 
b/jena-core/src/test/java/org/apache/jena/reasoner/rulesys/impl/TestLPBRuleEngineLeak.java
@@ -98,7 +98,7 @@ public class TestLPBRuleEngineLeak extends TestCase {
 
                ExtendedIterator<Triple> it3 = infgraph.find(a, ty, C1);
                assertTrue(it3.hasNext());
-               assertEquals(a, it3.next().getMatchSubject());
+               assertEquals(a, it3.next().getSubject());
 
                // .. and what if we forget to call next() to consume b?
                // (e.g. return from a method with the first hit)
diff --git 
a/jena-geosparql/src/main/java/org/apache/jena/geosparql/geo/topological/GenericGeometryPropertyFunction.java
 
b/jena-geosparql/src/main/java/org/apache/jena/geosparql/geo/topological/GenericGeometryPropertyFunction.java
index dbce73a631..418056ffe3 100644
--- 
a/jena-geosparql/src/main/java/org/apache/jena/geosparql/geo/topological/GenericGeometryPropertyFunction.java
+++ 
b/jena-geosparql/src/main/java/org/apache/jena/geosparql/geo/topological/GenericGeometryPropertyFunction.java
@@ -40,10 +40,6 @@ import org.apache.jena.sparql.pfunction.PFuncSimple;
 import org.apache.jena.system.G;
 import org.apache.jena.util.iterator.ExtendedIterator;
 
-/**
- *
- *
- */
 public abstract class GenericGeometryPropertyFunction extends PFuncSimple {
 
     protected abstract NodeValue applyPredicate(GeometryWrapper 
geometryWrapper);
@@ -95,7 +91,7 @@ public abstract class GenericGeometryPropertyFunction extends 
PFuncSimple {
         Node geometryLiteral = getGeometryLiteral(subject, predicate, graph);
 
         if (geometryLiteral != null) {
-            if (object.matches(geometryLiteral)) {
+            if (object.sameTermAs(geometryLiteral)) {
                 return QueryIterSingleton.create(binding, execCxt);
             }
         }

Reply via email to