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

claude pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/jena.git


The following commit(s) were added to refs/heads/main by this push:
     new b916a89131 GH-1874 Verified TripleNode usage in QueryBuilder.  Added 
tests.
     new 00df7bcc7f Merge pull request #2100 from 
Claudenw/GH-1874_Node_triple_in_QueryBuilder
b916a89131 is described below

commit b916a89131958432f3d949a712cc96c8da7cbeaf
Author: Claude Warren <[email protected]>
AuthorDate: Mon Nov 27 17:16:57 2023 +0100

    GH-1874 Verified TripleNode usage in QueryBuilder.  Added tests.
---
 .../arq/querybuilder/handlers/WhereHandler.java    | 23 ++++++++--------------
 .../jena/arq/querybuilder/ConvertersTest.java      |  6 ++++++
 .../jena/arq/querybuilder/ExprFactoryTest.java     | 13 ++++++++++++
 .../arq/querybuilder/clauses/ValuesClauseTest.java | 11 +++++++++--
 4 files changed, 36 insertions(+), 17 deletions(-)

diff --git 
a/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/handlers/WhereHandler.java
 
b/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/handlers/WhereHandler.java
index 565cc13f8b..856b563c88 100644
--- 
a/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/handlers/WhereHandler.java
+++ 
b/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/handlers/WhereHandler.java
@@ -18,6 +18,7 @@
 package org.apache.jena.arq.querybuilder.handlers;
 
 import java.util.*;
+import java.util.function.Predicate;
 
 import org.apache.jena.arq.querybuilder.AbstractQueryBuilder;
 import org.apache.jena.arq.querybuilder.Converters;
@@ -165,22 +166,14 @@ public class WhereHandler implements Handler {
      * @param t The trip to test.
      */
     private static void testTriple(TriplePath t) {
+        private Predicate<Node> checkPredicate = n -> n.isURI() || 
n.isVariable() ||n.equals(Node.ANY);
+        
+        private Predicate<Node> checkSubject = n -> checkPredicate.test(n) || 
n.isBlank() || n.isNodeTriple();
+        
         // verify Triple is valid
-        boolean validSubject =
-                t.getSubject().isURI() || t.getSubject().isBlank() || 
t.getObject().isNodeTriple()
-                || t.getSubject().isVariable() || 
t.getSubject().equals(Node.ANY);
-        boolean validPredicate;
-
-        if (t.isTriple()) {
-            validPredicate = t.getPredicate().isURI()
-                    || t.getPredicate().isVariable() || 
t.getPredicate().equals(Node.ANY);
-        } else {
-            validPredicate = t.getPath() != null;
-        }
-
-        boolean validObject =
-                t.getObject().isURI() || t.getObject().isLiteral() || 
t.getObject().isBlank() || t.getObject().isNodeTriple()
-                || t.getObject().isVariable() || 
t.getObject().equals(Node.ANY);
+        boolean validSubject = checkSubject.test(t.getSubject());
+        boolean validPredicate = t.isTriple() ? 
checkPredicate.test(t.getPredicate()) : t.getPath() != null;
+        boolean validObject = checkSubject.test(t.getObject()) || 
t.getObject().isLiteral();
 
         if (!validSubject || !validPredicate || !validObject) {
             StringBuilder sb = new StringBuilder();
diff --git 
a/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/ConvertersTest.java
 
b/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/ConvertersTest.java
index c1c64276d9..be59258aa0 100644
--- 
a/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/ConvertersTest.java
+++ 
b/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/ConvertersTest.java
@@ -167,6 +167,12 @@ public class ConvertersTest {
         n = Converters.makeNode("'text'@en", pMap);
         assertEquals("text", n.getLiteralLexicalForm());
         assertEquals("en", n.getLiteralLanguage());
+
+        Node tripleNode = 
NodeFactory.createTripleNode(NodeFactory.createURI("a"), 
+                NodeFactory.createURI("b"), NodeFactory.createURI("c"));
+        n = Converters.makeNode(tripleNode, pMap);
+        assertEquals(tripleNode, n);
+
     }
 
     @Test
diff --git 
a/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/ExprFactoryTest.java
 
b/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/ExprFactoryTest.java
index 129ff20f33..3386f6954b 100644
--- 
a/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/ExprFactoryTest.java
+++ 
b/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/ExprFactoryTest.java
@@ -26,7 +26,9 @@ import static org.mockito.Mockito.when;
 
 import org.apache.jena.arq.querybuilder.clauses.WhereClause;
 import org.apache.jena.arq.querybuilder.handlers.WhereHandler;
+import org.apache.jena.graph.Node;
 import org.apache.jena.graph.NodeFactory;
+import org.apache.jena.graph.Triple;
 import org.apache.jena.query.Query;
 import org.apache.jena.sparql.core.Var;
 import org.apache.jena.sparql.expr.*;
@@ -648,6 +650,17 @@ public class ExprFactoryTest {
         assertEquals("http://example.com/foo";, n.asNode().getURI());
     }
 
+    @Test
+    public void asExprTest_Triplenode() {
+        Triple expected = Triple.create(NodeFactory.createURI("a"), 
+                NodeFactory.createURI("b"), NodeFactory.createURI("c"));
+        Node tripleNode = NodeFactory.createTripleNode(expected);
+        Expr e = factory.asExpr(tripleNode);
+        assertTrue(e instanceof NodeValueNode);
+        NodeValueNode n = (NodeValueNode) e;
+        assertTrue(expected.matches(n.asNode().getTriple()));
+    }
+    
     @Test
     public void asExprTest_URIstring() {
         Expr e = factory.asExpr("http://example.com/foo";);
diff --git 
a/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/clauses/ValuesClauseTest.java
 
b/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/clauses/ValuesClauseTest.java
index f9da787a83..de08db64ce 100644
--- 
a/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/clauses/ValuesClauseTest.java
+++ 
b/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/clauses/ValuesClauseTest.java
@@ -32,6 +32,7 @@ import java.util.Map;
 import org.apache.jena.arq.querybuilder.AbstractQueryBuilder;
 import org.apache.jena.graph.Node;
 import org.apache.jena.graph.NodeFactory;
+import org.apache.jena.graph.Triple;
 import org.apache.jena.query.Query;
 import org.apache.jena.query.QueryBuildException;
 import org.apache.jena.sparql.core.Var;
@@ -255,7 +256,10 @@ public class ValuesClauseTest<T extends ValuesClause<?>> 
extends AbstractClauseT
         builder.addValueVar("?y");
         builder.addValueRow("foo", "bar");
         builder.addValueRow("fu", null);
-
+        Triple expected = Triple.create(NodeFactory.createURI("a"), 
+                NodeFactory.createURI("b"), NodeFactory.createURI("c"));
+        Node tripleNode = NodeFactory.createTripleNode(expected);
+        builder.addValueRow(tripleNode, null);
 
         Query query = builder.build();
         assertTrue( query.hasValues() );
@@ -264,13 +268,16 @@ public class ValuesClauseTest<T extends ValuesClause<?>> 
extends AbstractClauseT
         assertEquals( "x", vars.get(0).getVarName());
         assertEquals( "y", vars.get(1).getVarName());
         List<Binding> bindings = query.getValuesData();
-        assertEquals( 2, bindings.size() );
+        assertEquals( 3, bindings.size() );
         Binding binding = bindings.get(0);
         assertEquals( NodeFactory.createLiteral( "foo"), binding.get("x"));
         assertEquals( NodeFactory.createLiteral( "bar"), binding.get("y"));
         binding = bindings.get(1);
         assertEquals( NodeFactory.createLiteral( "fu"), binding.get("x"));
         assertNull( binding.get("y"));
+        binding = bindings.get(2);
+        assertEquals( tripleNode, binding.get("x"));
+        assertNull( binding.get("y"));
     }
 
     @ContractTest

Reply via email to