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