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 34b102af36a0a965c3af90eba28cbb6963d40ff7
Author: Andy Seaborne <[email protected]>
AuthorDate: Thu May 15 18:25:55 2025 +0100

    GH-3197: Remove contract tests in jena-querybuidler
---
 jena-extras/jena-querybuilder/pom.xml              |    6 -
 .../arq/querybuilder/AskBuilderContractTest.java   |   53 -
 .../querybuilder/ConstructBuilderContractTest.java |   53 -
 .../querybuilder/DescribeBuilderContractTest.java  |   53 -
 .../querybuilder/SelectBuilderContractTest.java    |   53 -
 .../arq/querybuilder/WhereBuilderContractTest.java |   53 -
 .../querybuilder/clauses/AbstractClauseTest.java   |   53 -
 .../querybuilder/clauses/DatasetClauseTest.java    |  143 --
 .../arq/querybuilder/clauses/PrologClauseTest.java |  163 ---
 .../arq/querybuilder/clauses/SelectClauseTest.java |  148 ---
 .../querybuilder/clauses/SolutionModifierTest.java |  533 --------
 .../arq/querybuilder/clauses/ValuesClauseTest.java |  430 ------
 .../arq/querybuilder/clauses/WhereClauseTest.java  | 1381 --------------------
 13 files changed, 3122 deletions(-)

diff --git a/jena-extras/jena-querybuilder/pom.xml 
b/jena-extras/jena-querybuilder/pom.xml
index 349dcc9899..bbf9366ea7 100644
--- a/jena-extras/jena-querybuilder/pom.xml
+++ b/jena-extras/jena-querybuilder/pom.xml
@@ -40,12 +40,6 @@
       <version>5.5.0-SNAPSHOT</version>
     </dependency>
 
-    <dependency>
-      <groupId>org.xenei</groupId>
-      <artifactId>junit-contracts</artifactId> 
-      <scope>test</scope>
-    </dependency>
-
     <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>jcl-over-slf4j</artifactId>
diff --git 
a/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/AskBuilderContractTest.java
 
b/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/AskBuilderContractTest.java
deleted file mode 100644
index ad44971fe2..0000000000
--- 
a/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/AskBuilderContractTest.java
+++ /dev/null
@@ -1,53 +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.arq.querybuilder;
-
-import org.junit.runner.RunWith;
-import org.xenei.junit.contract.Contract;
-import org.xenei.junit.contract.ContractImpl;
-import org.xenei.junit.contract.ContractSuite;
-import org.xenei.junit.contract.IProducer;
-
-@RunWith(ContractSuite.class)
-@ContractImpl(AskBuilder.class)
-public class AskBuilderContractTest {
-
-    // create the producer to inject
-    private IProducer<AskBuilder> producer = new IProducer<AskBuilder>() {
-
-        @Override
-        public AskBuilder newInstance() {
-            return new AskBuilder();
-        }
-
-        @Override
-        public void cleanUp() {
-            // no cleanup required
-        }
-
-    };
-
-    public AskBuilderContractTest() {
-    }
-
-    @Contract.Inject
-    public IProducer<AskBuilder> getProducer() {
-        return producer;
-    }
-
-}
diff --git 
a/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/ConstructBuilderContractTest.java
 
b/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/ConstructBuilderContractTest.java
deleted file mode 100644
index b3508ae055..0000000000
--- 
a/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/ConstructBuilderContractTest.java
+++ /dev/null
@@ -1,53 +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.arq.querybuilder;
-
-import org.junit.runner.RunWith;
-import org.xenei.junit.contract.Contract;
-import org.xenei.junit.contract.ContractImpl;
-import org.xenei.junit.contract.ContractSuite;
-import org.xenei.junit.contract.IProducer;
-
-@RunWith(ContractSuite.class)
-@ContractImpl(ConstructBuilder.class)
-public class ConstructBuilderContractTest {
-
-    // create the producer to inject
-    private IProducer<ConstructBuilder> producer = new 
IProducer<ConstructBuilder>() {
-
-        @Override
-        public ConstructBuilder newInstance() {
-            return new ConstructBuilder();
-        }
-
-        @Override
-        public void cleanUp() {
-            // no cleanup required
-        }
-
-    };
-
-    public ConstructBuilderContractTest() {
-    }
-
-    @Contract.Inject
-    public IProducer<ConstructBuilder> getProducer() {
-        return producer;
-    }
-
-}
diff --git 
a/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/DescribeBuilderContractTest.java
 
b/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/DescribeBuilderContractTest.java
deleted file mode 100644
index 82d1b1fb98..0000000000
--- 
a/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/DescribeBuilderContractTest.java
+++ /dev/null
@@ -1,53 +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.arq.querybuilder;
-
-import org.junit.runner.RunWith;
-import org.xenei.junit.contract.Contract;
-import org.xenei.junit.contract.ContractImpl;
-import org.xenei.junit.contract.ContractSuite;
-import org.xenei.junit.contract.IProducer;
-
-@RunWith(ContractSuite.class)
-@ContractImpl(DescribeBuilder.class)
-public class DescribeBuilderContractTest {
-
-    // create the producer to inject
-    private IProducer<DescribeBuilder> producer = new 
IProducer<DescribeBuilder>() {
-
-        @Override
-        public DescribeBuilder newInstance() {
-            return new DescribeBuilder();
-        }
-
-        @Override
-        public void cleanUp() {
-            // no cleanup required
-        }
-
-    };
-
-    public DescribeBuilderContractTest() {
-    }
-
-    @Contract.Inject
-    public IProducer<DescribeBuilder> getProducer() {
-        return producer;
-    }
-
-}
diff --git 
a/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/SelectBuilderContractTest.java
 
b/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/SelectBuilderContractTest.java
deleted file mode 100644
index 547ce85579..0000000000
--- 
a/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/SelectBuilderContractTest.java
+++ /dev/null
@@ -1,53 +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.arq.querybuilder;
-
-import org.junit.runner.RunWith;
-import org.xenei.junit.contract.Contract;
-import org.xenei.junit.contract.ContractImpl;
-import org.xenei.junit.contract.ContractSuite;
-import org.xenei.junit.contract.IProducer;
-
-@RunWith(ContractSuite.class)
-@ContractImpl(SelectBuilder.class)
-public class SelectBuilderContractTest {
-
-    // create the producer to inject
-    private IProducer<SelectBuilder> producer = new IProducer<SelectBuilder>() 
{
-
-        @Override
-        public SelectBuilder newInstance() {
-            return new SelectBuilder();
-        }
-
-        @Override
-        public void cleanUp() {
-            // no cleanup required
-        }
-
-    };
-
-    public SelectBuilderContractTest() {
-    }
-
-    @Contract.Inject
-    public IProducer<SelectBuilder> getProducer() {
-        return producer;
-    }
-
-}
diff --git 
a/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/WhereBuilderContractTest.java
 
b/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/WhereBuilderContractTest.java
deleted file mode 100644
index 7611145e18..0000000000
--- 
a/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/WhereBuilderContractTest.java
+++ /dev/null
@@ -1,53 +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.arq.querybuilder;
-
-import org.junit.runner.RunWith;
-import org.xenei.junit.contract.Contract;
-import org.xenei.junit.contract.ContractImpl;
-import org.xenei.junit.contract.ContractSuite;
-import org.xenei.junit.contract.IProducer;
-
-@RunWith(ContractSuite.class)
-@ContractImpl(WhereBuilder.class)
-public class WhereBuilderContractTest {
-
-    // create the producer to inject
-    private IProducer<WhereBuilder> producer = new IProducer<WhereBuilder>() {
-
-        @Override
-        public WhereBuilder newInstance() {
-            return new WhereBuilder();
-        }
-
-        @Override
-        public void cleanUp() {
-            // no cleanup required
-        }
-
-    };
-
-    public WhereBuilderContractTest() {
-    }
-
-    @Contract.Inject
-    public IProducer<WhereBuilder> getProducer() {
-        return producer;
-    }
-
-}
diff --git 
a/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/clauses/AbstractClauseTest.java
 
b/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/clauses/AbstractClauseTest.java
deleted file mode 100644
index 14604442bf..0000000000
--- 
a/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/clauses/AbstractClauseTest.java
+++ /dev/null
@@ -1,53 +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.arq.querybuilder.clauses;
-
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
-import java.lang.reflect.Field;
-import java.util.Arrays;
-import java.util.List;
-
-import org.apache.jena.arq.querybuilder.AbstractQueryBuilder;
-import org.apache.jena.query.Query;
-
-public abstract class AbstractClauseTest { 
-
-    protected final static String[] byLine(AbstractQueryBuilder<?> builder) {
-        return builder.buildString().split("\n");
-    }
-
-    protected final static Query getQuery(AbstractQueryBuilder<?> builder)
-            throws NoSuchFieldException, SecurityException, 
IllegalArgumentException, IllegalAccessException {
-        Field f = AbstractQueryBuilder.class.getDeclaredField("query");
-        f.setAccessible(true);
-        return (Query) f.get(builder);
-    }
-
-    protected final static void assertContains(String expected, String[] lst) {
-        List<String> s = Arrays.asList(lst);
-        assertTrue(String.format("%s not found in %s", expected, s), 
s.contains(expected));
-    }
-
-    protected final static void assertNotContains(String expected, String[] 
lst) {
-        List<String> s = Arrays.asList(lst);
-        assertFalse(String.format("%s found in %s", expected, s), 
s.contains(expected));
-    }
-
-}
diff --git 
a/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/clauses/DatasetClauseTest.java
 
b/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/clauses/DatasetClauseTest.java
deleted file mode 100644
index 6d2c8124a6..0000000000
--- 
a/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/clauses/DatasetClauseTest.java
+++ /dev/null
@@ -1,143 +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.arq.querybuilder.clauses;
-
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-import java.util.Arrays;
-
-import org.apache.jena.arq.querybuilder.AbstractQueryBuilder;
-import org.apache.jena.arq.querybuilder.handlers.DatasetHandler;
-import org.apache.jena.graph.NodeFactory;
-import org.apache.jena.sparql.core.Var;
-import org.junit.After;
-import org.xenei.junit.contract.Contract;
-import org.xenei.junit.contract.ContractTest;
-import org.xenei.junit.contract.IProducer;
-
-@Contract(DatasetClause.class)
-public class DatasetClauseTest<T extends DatasetClause<?>> extends 
AbstractClauseTest {
-
-    // the producer we will user
-    private IProducer<T> producer;
-
-    @Contract.Inject
-    // define the method to set producer.
-    public final void setProducer(IProducer<T> producer) {
-        this.producer = producer;
-    }
-
-    protected final IProducer<T> getProducer() {
-        return producer;
-    }
-
-    @After
-    public final void cleanupDatasetClauseTest() {
-        getProducer().cleanUp(); // clean up the producer for the next run
-    }
-
-    @ContractTest
-    public void testFromNamed() {
-        DatasetClause<?> datasetClause = getProducer().newInstance();
-        AbstractQueryBuilder<?> builder = datasetClause.fromNamed("name");
-        String[] s = byLine(builder);
-        assertContains("FROM NAMED <name>", s);
-        builder = datasetClause.fromNamed("name2");
-        s = byLine(builder);
-        assertContains("FROM NAMED <name>", s);
-        assertContains("FROM NAMED <name2>", s);
-    }
-
-    @ContractTest
-    public void testFromNamedCollection() {
-        String[] names = { "name", "name2" };
-        DatasetClause<?> datasetClause = getProducer().newInstance();
-        AbstractQueryBuilder<?> builder = 
datasetClause.fromNamed(Arrays.asList(names));
-        String[] s = byLine(builder);
-        assertContains("FROM NAMED <name>", s);
-        assertContains("FROM NAMED <name2>", s);
-    }
-
-    @ContractTest
-    public void testFrom() {
-        DatasetClause<?> datasetClause = getProducer().newInstance();
-        AbstractQueryBuilder<?> builder = datasetClause.from("name");
-        String[] s = byLine(builder);
-        assertContains("FROM <name>", s);
-        builder = datasetClause.from("name2");
-        s = byLine(builder);
-        assertContains("FROM <name2>", s);
-    }
-
-    @ContractTest
-    public void testGetDatasetHandler() {
-        DatasetClause<?> datasetClause = getProducer().newInstance();
-        DatasetHandler dsHandler = datasetClause.getDatasetHandler();
-        assertNotNull(dsHandler);
-    }
-
-    @ContractTest
-    public void testAll() {
-        DatasetClause<?> datasetClause = getProducer().newInstance();
-        datasetClause.fromNamed("name");
-        datasetClause.fromNamed("name2");
-        AbstractQueryBuilder<?> builder = datasetClause.from("name3");
-        String[] s = byLine(builder);
-        assertContains("FROM NAMED <name>", s);
-        assertContains("FROM NAMED <name2>", s);
-        assertContains("FROM <name3>", s);
-    }
-
-    @ContractTest
-    public void setVarsFromNamed() {
-        DatasetClause<?> datasetClause = getProducer().newInstance();
-        AbstractQueryBuilder<?> builder = datasetClause.fromNamed("?foo");
-        datasetClause.from("?bar");
-        builder.setVar(Var.alloc("foo"), 
NodeFactory.createURI("http://example.com/foo";));
-
-        String s = builder.buildString();
-        assertTrue(s.contains("FROM NAMED <http://example.com/foo>"));
-        assertTrue(s.contains("FROM <?bar>"));
-    }
-
-    @ContractTest
-    public void setVarsFrom() {
-        DatasetClause<?> datasetClause = getProducer().newInstance();
-        AbstractQueryBuilder<?> builder = datasetClause.fromNamed("?foo");
-        datasetClause.from("?bar");
-        builder.setVar(Var.alloc("bar"), 
NodeFactory.createURI("http://example.com/bar";));
-
-        String s = builder.buildString();
-        assertTrue(s.contains("FROM NAMED <?foo>"));
-        assertTrue(s.contains("FROM <http://example.com/bar>"));
-    }
-
-    @ContractTest
-    public void setVarsBoth() {
-        DatasetClause<?> datasetClause = getProducer().newInstance();
-        AbstractQueryBuilder<?> builder = datasetClause.fromNamed("?foo");
-        datasetClause.from("?bar");
-        builder.setVar(Var.alloc("bar"), 
NodeFactory.createURI("http://example.com/bar";));
-        builder.setVar(Var.alloc("foo"), 
NodeFactory.createURI("http://example.com/foo";));
-        String s = builder.buildString();
-        assertTrue(s.contains("FROM NAMED <http://example.com/foo>"));
-        assertTrue(s.contains("FROM <http://example.com/bar>"));
-    }
-
-}
diff --git 
a/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/clauses/PrologClauseTest.java
 
b/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/clauses/PrologClauseTest.java
deleted file mode 100644
index 714b3c1a63..0000000000
--- 
a/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/clauses/PrologClauseTest.java
+++ /dev/null
@@ -1,163 +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.arq.querybuilder.clauses;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.jena.arq.querybuilder.AbstractQueryBuilder;
-import org.apache.jena.arq.querybuilder.handlers.PrologHandler;
-import org.apache.jena.graph.NodeFactory;
-import org.apache.jena.query.Query;
-import org.apache.jena.rdf.model.ResourceFactory;
-import org.apache.jena.shared.PrefixMapping;
-import org.apache.jena.shared.impl.PrefixMappingImpl;
-import org.junit.After;
-import org.xenei.junit.contract.Contract;
-import org.xenei.junit.contract.ContractTest;
-import org.xenei.junit.contract.IProducer;
-
-@Contract(PrologClause.class)
-public class PrologClauseTest<T extends PrologClause<?>> {
-
-    // the producer we will user
-    private IProducer<T> producer;
-
-    @Contract.Inject
-    // define the method to set producer.
-    public final void setProducer(IProducer<T> producer) {
-        this.producer = producer;
-    }
-
-    protected final IProducer<T> getProducer() {
-        return producer;
-    }
-
-    @After
-    public final void cleanupDatasetClauseTest() {
-        getProducer().cleanUp(); // clean up the producer for the next run
-    }
-
-    @ContractTest
-    public void testGetPrologHandler() {
-        PrologClause<?> prologClause = getProducer().newInstance();
-        PrologHandler handler = prologClause.getPrologHandler();
-        assertNotNull(handler);
-    }
-
-    @ContractTest
-    public void testAddPrefixResource() {
-        PrologClause<?> prologClause = getProducer().newInstance();
-        AbstractQueryBuilder<?> builder = prologClause.addPrefix("pfx", 
ResourceFactory.createResource("uri"));
-        Query q = builder.build();
-        PrefixMapping map = q.getPrefixMapping();
-        assertEquals("uri", map.getNsPrefixURI("pfx"));
-        assertEquals(1, map.getNsPrefixMap().size());
-    }
-
-    @ContractTest
-    public void testAddPrefixNode() {
-        PrologClause<?> prologClause = getProducer().newInstance();
-        AbstractQueryBuilder<?> builder = prologClause.addPrefix("pfx", 
NodeFactory.createURI("uri"));
-
-        Query q = builder.build();
-        PrefixMapping map = q.getPrefixMapping();
-        assertEquals("uri", map.getNsPrefixURI("pfx"));
-        assertEquals(1, map.getNsPrefixMap().size());
-    }
-
-    @ContractTest
-    public void testAddPrefixString() {
-        PrologClause<?> prologClause = getProducer().newInstance();
-        AbstractQueryBuilder<?> builder = prologClause.addPrefix("pfx", "uri");
-        Query q = builder.build();
-        PrefixMapping map = q.getPrefixMapping();
-        assertEquals("uri", map.getNsPrefixURI("pfx"));
-        assertEquals(1, map.getNsPrefixMap().size());
-    }
-
-    @ContractTest
-    public void testAddPrefixes_Map() {
-        Map<String, String> map = new HashMap<>();
-        map.put("pfx", "uri");
-        map.put("pfx2", "uri2");
-        PrologClause<?> prologClause = getProducer().newInstance();
-        AbstractQueryBuilder<?> builder = prologClause.addPrefixes(map);
-        Query q = builder.build();
-        PrefixMapping map2 = q.getPrefixMapping();
-        assertEquals("uri", map2.getNsPrefixURI("pfx"));
-        assertEquals("uri2", map2.getNsPrefixURI("pfx2"));
-        assertEquals(2, map2.getNsPrefixMap().size());
-    }
-
-    @ContractTest
-    public void testAddPrefixes_PrefixMapping() {
-        PrefixMapping map = new PrefixMappingImpl();
-        map.setNsPrefix("pfx", "uri");
-        map.setNsPrefix("pfx2", "uri2");
-        PrologClause<?> prologClause = getProducer().newInstance();
-        AbstractQueryBuilder<?> builder = prologClause.addPrefixes(map);
-        Query q = builder.build();
-        PrefixMapping map2 = q.getPrefixMapping();
-        assertEquals(map.getNsPrefixURI("pfx"), map2.getNsPrefixURI("pfx"));
-        assertEquals(map.getNsPrefixURI("pfx2"), map2.getNsPrefixURI("pfx2"));
-        assertEquals(2, map2.getNsPrefixMap().size());
-    }
-
-    @ContractTest
-    public void testSetBaseResource() {
-        PrologClause<?> prologClause = getProducer().newInstance();
-        AbstractQueryBuilder<?> builder = prologClause
-                
.setBase(ResourceFactory.createResource("http://example.com/uri";));
-
-        Query q = builder.build();
-        assertEquals("http://example.com/uri";, q.getBaseURI());
-    }
-
-    @ContractTest
-    public void testSetBaseNode() {
-        PrologClause<?> prologClause = getProducer().newInstance();
-        AbstractQueryBuilder<?> builder = 
prologClause.setBase(NodeFactory.createURI("http://example.com/uri";));
-
-        Query q = builder.build();
-        assertEquals("http://example.com/uri";, q.getBaseURI());
-    }
-
-    @ContractTest
-    public void testSetBaseString() {
-        PrologClause<?> prologClause = getProducer().newInstance();
-        AbstractQueryBuilder<?> builder = 
prologClause.setBase("http://example.com/uri";);
-
-        Query q = builder.build();
-        assertEquals("http://example.com/uri";, q.getBaseURI());
-    }
-
-    @ContractTest
-    public void testSetBaseTwice() {
-        PrologClause<?> prologClause = getProducer().newInstance();
-        prologClause.setBase("http://example.com/uri";);
-        AbstractQueryBuilder<?> builder = 
prologClause.setBase("http://example.com/uri2";);
-
-        Query q = builder.build();
-        assertEquals("http://example.com/uri2";, q.getBaseURI());
-    }
-
-}
diff --git 
a/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/clauses/SelectClauseTest.java
 
b/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/clauses/SelectClauseTest.java
deleted file mode 100644
index 2704afd27e..0000000000
--- 
a/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/clauses/SelectClauseTest.java
+++ /dev/null
@@ -1,148 +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.arq.querybuilder.clauses;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import java.util.List;
-
-import org.apache.jena.arq.querybuilder.AbstractQueryBuilder;
-import org.apache.jena.arq.querybuilder.handlers.SelectHandler;
-import org.apache.jena.graph.NodeFactory;
-import org.apache.jena.query.Query;
-import org.apache.jena.sparql.core.Var;
-import org.apache.jena.sparql.core.VarExprList;
-import org.apache.jena.sparql.expr.E_Random;
-import org.apache.jena.sparql.expr.Expr;
-import org.junit.After;
-import org.xenei.junit.contract.Contract;
-import org.xenei.junit.contract.ContractTest;
-import org.xenei.junit.contract.IProducer;
-
-@Contract(SelectClause.class)
-public class SelectClauseTest<T extends SelectClause<?>> extends 
AbstractClauseTest {
-
-    // the producer we will user
-    private IProducer<T> producer;
-
-    @Contract.Inject
-    // define the method to set producer.
-    public final void setProducer(IProducer<T> producer) {
-        this.producer = producer;
-    }
-
-    protected final IProducer<T> getProducer() {
-        return producer;
-    }
-
-    @After
-    public final void cleanupSelectClauseTest() {
-        getProducer().cleanUp(); // clean up the producer for the next run
-    }
-
-    @ContractTest
-    public void getSelectHandlerTest() {
-        SelectClause<?> selectClause = getProducer().newInstance();
-        SelectHandler handler = selectClause.getSelectHandler();
-        assertNotNull(handler);
-    }
-
-    @ContractTest
-    public void testAddVarString() throws Exception {
-        Var v = Var.alloc("one");
-        SelectClause<?> selectClause = getProducer().newInstance();
-        selectClause.addVar("one");
-        Query query = getQuery(selectClause.addVar("one"));
-        VarExprList expr = query.getProject();
-        assertEquals(1, expr.size());
-        assertTrue(expr.contains(v));
-    }
-
-    @ContractTest
-    public void testAddVarNode() throws Exception {
-        Var v = Var.alloc("one");
-        SelectClause<?> selectClause = getProducer().newInstance();
-        selectClause.addVar("one");
-        Query query = 
getQuery(selectClause.addVar(NodeFactory.createVariable("one")));
-        VarExprList expr = query.getProject();
-        assertEquals(1, expr.size());
-        assertTrue(expr.contains(v));
-    }
-
-    @ContractTest
-    public void testAddVarVar() throws Exception {
-        Var v = Var.alloc("one");
-        SelectClause<?> selectClause = getProducer().newInstance();
-        Query query = getQuery(selectClause.addVar(v));
-        VarExprList expr = query.getProject();
-        assertEquals(1, expr.size());
-        assertTrue(expr.contains(v));
-    }
-
-    @ContractTest
-    public void getVarsTest() {
-        SelectClause<?> selectClause = getProducer().newInstance();
-        AbstractQueryBuilder<?> builder = 
selectClause.addVar(NodeFactory.createVariable("foo"));
-        try {
-            List<Var> vars = getQuery(builder).getProjectVars();
-            assertEquals(1, vars.size());
-            assertEquals("?foo", vars.get(0).toString());
-        } catch (NoSuchFieldException | SecurityException | 
IllegalArgumentException | IllegalAccessException e) {
-            fail("Unable to access query from queryBuilder: " + 
e.getMessage());
-        }
-    }
-
-    @ContractTest
-    public void testAddVarAsterisk() throws Exception {
-        SelectClause<?> selectClause = getProducer().newInstance();
-        selectClause.addVar("*");
-        Query query = getQuery(selectClause.addVar("*"));
-        VarExprList expr = query.getProject();
-        assertEquals(0, expr.size());
-        assertTrue(query.isQueryResultStar());
-    }
-
-    @ContractTest
-    public void testAddExprVar() throws Exception {
-        SelectClause<?> selectClause = getProducer().newInstance();
-        AbstractQueryBuilder<?> aqb = selectClause.addVar(new E_Random(), 
Var.alloc("foo"));
-
-        Query query = getQuery(aqb);
-        VarExprList expr = query.getProject();
-        assertEquals(1, expr.size());
-        Expr e = expr.getExpr(Var.alloc("foo"));
-        assertNotNull("expression should not be null", e);
-        assertTrue("Should be an E_Random", e instanceof E_Random);
-    }
-
-    @ContractTest
-    public void testAddStringVar() throws Exception {
-        SelectClause<?> selectClause = getProducer().newInstance();
-        AbstractQueryBuilder<?> aqb = selectClause.addVar("rand()", 
Var.alloc("foo"));
-
-        Query query = getQuery(aqb);
-        VarExprList expr = query.getProject();
-        assertEquals(1, expr.size());
-        Expr e = expr.getExpr(Var.alloc("foo"));
-        assertNotNull("expression should not be null", e);
-        assertTrue("Should be an E_Random", e instanceof E_Random);
-    }
-}
diff --git 
a/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/clauses/SolutionModifierTest.java
 
b/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/clauses/SolutionModifierTest.java
deleted file mode 100644
index e3011486eb..0000000000
--- 
a/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/clauses/SolutionModifierTest.java
+++ /dev/null
@@ -1,533 +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.arq.querybuilder.clauses;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-
-import java.util.List;
-
-import org.apache.jena.arq.querybuilder.AbstractQueryBuilder;
-import org.apache.jena.arq.querybuilder.Order;
-import org.apache.jena.graph.Node;
-import org.apache.jena.graph.NodeFactory;
-import org.apache.jena.query.Query;
-import org.apache.jena.query.SortCondition;
-import org.apache.jena.sparql.core.Var;
-import org.apache.jena.sparql.core.VarExprList;
-import org.apache.jena.sparql.expr.E_LessThan;
-import org.apache.jena.sparql.expr.E_Random;
-import org.apache.jena.sparql.expr.Expr;
-import org.apache.jena.sparql.expr.ExprVar;
-import org.apache.jena.sparql.expr.nodevalue.NodeValueInteger;
-import org.junit.After;
-import org.junit.Assert;
-import org.xenei.junit.contract.Contract;
-import org.xenei.junit.contract.ContractTest;
-import org.xenei.junit.contract.IProducer;
-
-@Contract(SolutionModifierClause.class)
-public class SolutionModifierTest<T extends SolutionModifierClause<?>> extends 
AbstractClauseTest {
-
-    // the producer we will user
-    private IProducer<T> producer;
-
-    @Contract.Inject
-    // define the method to set producer.
-    public final void setProducer(IProducer<T> producer) {
-        this.producer = producer;
-    }
-
-    protected final IProducer<T> getProducer() {
-        return producer;
-    }
-
-    @After
-    public final void cleanupDatasetClauseTest() {
-        getProducer().cleanUp(); // clean up the producer for the next run
-    }
-
-    @ContractTest
-    public void testAddOrderByString() {
-        SolutionModifierClause<?> solutionModifier = 
getProducer().newInstance();
-        AbstractQueryBuilder<?> builder = solutionModifier.addOrderBy("foo");
-
-        List<SortCondition> lst = builder.build().getOrderBy();
-        Assert.assertEquals(1, lst.size());
-        Assert.assertEquals(new SortCondition(new ExprVar(Var.alloc("foo")), 
Query.ORDER_DEFAULT), lst.get(0));
-
-        builder = solutionModifier.addOrderBy("bar");
-        lst = builder.build().getOrderBy();
-        Assert.assertEquals(2, lst.size());
-        Assert.assertEquals(new SortCondition(new ExprVar(Var.alloc("foo")), 
Query.ORDER_DEFAULT), lst.get(0));
-        Assert.assertEquals(new SortCondition(new ExprVar(Var.alloc("bar")), 
Query.ORDER_DEFAULT), lst.get(1));
-
-    }
-
-    @ContractTest
-    public void testAddOrderByStringAscending() {
-        SolutionModifierClause<?> solutionModifier = 
getProducer().newInstance();
-        AbstractQueryBuilder<?> builder = solutionModifier.addOrderBy("foo", 
Order.ASCENDING);
-
-        List<SortCondition> lst = builder.build().getOrderBy();
-        Assert.assertEquals(1, lst.size());
-        Assert.assertEquals(new SortCondition(new ExprVar(Var.alloc("foo")), 
Query.ORDER_ASCENDING), lst.get(0));
-
-        builder = solutionModifier.addOrderBy("bar");
-        lst = builder.build().getOrderBy();
-        Assert.assertEquals(2, lst.size());
-        Assert.assertEquals(new SortCondition(new ExprVar(Var.alloc("foo")), 
Query.ORDER_ASCENDING), lst.get(0));
-        Assert.assertEquals(new SortCondition(new ExprVar(Var.alloc("bar")), 
Query.ORDER_DEFAULT), lst.get(1));
-
-    }
-
-    @ContractTest
-    public void testAddOrderByStringDescending() {
-        SolutionModifierClause<?> solutionModifier = 
getProducer().newInstance();
-        AbstractQueryBuilder<?> builder = solutionModifier.addOrderBy("foo", 
Order.DESCENDING);
-
-        List<SortCondition> lst = builder.build().getOrderBy();
-        Assert.assertEquals(1, lst.size());
-        Assert.assertEquals(new SortCondition(new ExprVar(Var.alloc("foo")), 
Query.ORDER_DESCENDING), lst.get(0));
-
-        builder = solutionModifier.addOrderBy("bar");
-        lst = builder.build().getOrderBy();
-        Assert.assertEquals(2, lst.size());
-        Assert.assertEquals(new SortCondition(new ExprVar(Var.alloc("foo")), 
Query.ORDER_DESCENDING), lst.get(0));
-        Assert.assertEquals(new SortCondition(new ExprVar(Var.alloc("bar")), 
Query.ORDER_DEFAULT), lst.get(1));
-    }
-
-    @ContractTest
-    public void testAddOrderByExpr() {
-        SolutionModifierClause<?> solutionModifier = 
getProducer().newInstance();
-        Expr e = new E_Random();
-        AbstractQueryBuilder<?> builder = solutionModifier.addOrderBy(e);
-        
-        Query query = builder.build();
-        assertTrue( query.hasOrderBy() );
-        List<SortCondition> orderBy = query.getOrderBy();
-        assertEquals( 1, orderBy.size() );
-        assertEquals( Query.ORDER_DEFAULT, orderBy.get(0).getDirection() );
-        assertEquals( e, orderBy.get(0).getExpression());
-        
-        builder = solutionModifier.addOrderBy("bar");
-
-        query = builder.build();
-        assertTrue( query.hasOrderBy() );
-        orderBy = query.getOrderBy();
-        assertEquals( 2, orderBy.size() );
-        assertEquals( Query.ORDER_DEFAULT, orderBy.get(0).getDirection() );
-        assertEquals( e, orderBy.get(0).getExpression());
-        assertEquals( Query.ORDER_DEFAULT, orderBy.get(1).getDirection() );
-        assertEquals( new ExprVar("bar"), orderBy.get(1).getExpression());
-    }
-
-    @ContractTest
-    public void testAddOrderByExprAscending() {
-        SolutionModifierClause<?> solutionModifier = 
getProducer().newInstance();
-        Expr e = new E_Random();
-        AbstractQueryBuilder<?> builder = solutionModifier.addOrderBy(e, 
Order.ASCENDING);
-        
-        Query query = builder.build();
-        assertTrue( query.hasOrderBy() );
-        List<SortCondition> orderBy = query.getOrderBy();
-        assertEquals( 1, orderBy.size() );
-        assertEquals( Query.ORDER_ASCENDING, orderBy.get(0).getDirection() );
-        assertEquals( e, orderBy.get(0).getExpression());
-
-        builder = solutionModifier.addOrderBy("bar");
-
-        query = builder.build();
-        assertTrue( query.hasOrderBy() );
-        orderBy = query.getOrderBy();
-        assertEquals( 2, orderBy.size() );
-        assertEquals( Query.ORDER_ASCENDING, orderBy.get(0).getDirection() );
-        assertEquals( e, orderBy.get(0).getExpression());
-        assertEquals( Query.ORDER_DEFAULT, orderBy.get(1).getDirection() );
-        assertEquals( new ExprVar("bar"), orderBy.get(1).getExpression());
-    }
-
-    @ContractTest
-    public void testAddOrderByExprDescending() {
-        SolutionModifierClause<?> solutionModifier = 
getProducer().newInstance();
-        Expr e = new E_Random();
-        AbstractQueryBuilder<?> builder = solutionModifier.addOrderBy(e, 
Order.DESCENDING);
-        
-        
-        Query query = builder.build();
-        assertTrue( query.hasOrderBy() );
-        List<SortCondition> orderBy = query.getOrderBy();
-        assertEquals( 1, orderBy.size() );
-        assertEquals( Query.ORDER_DESCENDING, orderBy.get(0).getDirection() );
-        assertEquals( e, orderBy.get(0).getExpression());
-
-        builder = solutionModifier.addOrderBy("bar");
-        
-        query = builder.build();
-        assertTrue( query.hasOrderBy() );
-        orderBy = query.getOrderBy();
-        assertEquals( 2, orderBy.size() );
-        assertEquals( Query.ORDER_DESCENDING, orderBy.get(0).getDirection() );
-        assertEquals( e, orderBy.get(0).getExpression());
-        assertEquals( Query.ORDER_DEFAULT, orderBy.get(1).getDirection() );
-        assertEquals( new ExprVar("bar"), orderBy.get(1).getExpression());
-    }
-
-    @ContractTest
-    public void testAddGroupByString() {
-        SolutionModifierClause<?> solutionModifier = 
getProducer().newInstance();
-        AbstractQueryBuilder<?> builder = solutionModifier.addGroupBy("foo");
-        
-        Query query = builder.build();
-        assertTrue( query.hasGroupBy() );
-        VarExprList groupBy = query.getGroupBy();
-        assertEquals( 1, groupBy.size() );
-        List<Var> vars = groupBy.getVars();
-        assertEquals( 1, vars.size() );
-        assertEquals( Var.alloc("foo" ), vars.get(0));
-        assertNull( groupBy.getExpr( vars.get(0) ));
-
-        builder = solutionModifier.addGroupBy("bar");
-
-        query = builder.build();
-        assertTrue( query.hasGroupBy() );
-        groupBy = query.getGroupBy();
-        assertEquals( 2, groupBy.size() );
-        vars = groupBy.getVars();
-        assertEquals( 2, vars.size() );
-        assertEquals( Var.alloc("foo" ), vars.get(0));
-        assertNull( groupBy.getExpr( vars.get(0) ));
-        assertEquals( Var.alloc("bar" ), vars.get(1));
-        assertNull( groupBy.getExpr( vars.get(1) ));
-    }
-
-    @ContractTest
-    public void testAddGroupByExpr() {
-        SolutionModifierClause<?> solutionModifier = 
getProducer().newInstance();
-        AbstractQueryBuilder<?> builder = solutionModifier.addGroupBy(new 
E_Random());
-        
-        Query query = builder.build();
-        assertTrue( query.hasGroupBy() );
-        VarExprList groupBy = query.getGroupBy();
-        assertEquals( 1, groupBy.size() );
-        List<Var> vars = groupBy.getVars();
-        assertEquals( 1, vars.size() );
-        assertEquals( new E_Random(), groupBy.getExpr( vars.get(0) ));
-
-        builder = solutionModifier.addGroupBy("bar");
-        
-        query = builder.build();
-        assertTrue( query.hasGroupBy() );
-        groupBy = query.getGroupBy();
-        assertEquals( 2, groupBy.size() );
-        vars = groupBy.getVars();
-        assertEquals( 2, vars.size() );
-        assertEquals( new E_Random(), groupBy.getExpr( vars.get(0) ));
-        assertEquals( Var.alloc("bar" ), vars.get(1));
-        assertNull( groupBy.getExpr( vars.get(1) ));
-    }
-
-    @ContractTest
-    public void testAddGroupByVar() {
-        Var foo = Var.alloc("foo");
-        SolutionModifierClause<?> solutionModifier = 
getProducer().newInstance();
-        AbstractQueryBuilder<?> builder = solutionModifier.addGroupBy(foo);
-
-        VarExprList groupBy = builder.build().getGroupBy();
-        Assert.assertEquals(1, groupBy.size());
-        Assert.assertEquals(foo, groupBy.getVars().get(0));
-        Assert.assertNull(groupBy.getExpr(foo));
-
-        builder = solutionModifier.addGroupBy("bar");
-        groupBy = builder.build().getGroupBy();
-        Assert.assertEquals(2, groupBy.size());
-        Assert.assertEquals(foo, groupBy.getVars().get(0));
-        Assert.assertNull(groupBy.getExpr(foo));
-
-        Assert.assertEquals(Var.alloc("bar"), groupBy.getVars().get(1));
-        Assert.assertNull(groupBy.getExpr(Var.alloc("bar")));
-
-    }
-
-    @ContractTest
-    public void testAddGroupByVarAndExpr() {
-        SolutionModifierClause<?> solutionModifier = 
getProducer().newInstance();
-        AbstractQueryBuilder<?> builder = 
solutionModifier.addGroupBy(Var.alloc("foo"), new E_Random());
-        
-        Query query = builder.build();
-        assertTrue( query.hasGroupBy() );
-        VarExprList groupBy = query.getGroupBy();
-        assertEquals( 1, groupBy.size() );
-        List<Var> vars = groupBy.getVars();
-        assertEquals( 1, vars.size() );
-        assertEquals( Var.alloc("foo" ), vars.get(0));
-        assertEquals( new E_Random(), groupBy.getExpr( vars.get(0) ));
-
-        builder = solutionModifier.addGroupBy("bar");
-        
-        query = builder.build();
-        assertTrue( query.hasGroupBy() );
-        groupBy = query.getGroupBy();
-        assertEquals( 2, groupBy.size() );
-        vars = groupBy.getVars();
-        assertEquals( 2, vars.size() );
-        assertEquals( Var.alloc("foo" ), vars.get(0));
-        assertEquals( new E_Random(), groupBy.getExpr( vars.get(0) ));
-        assertEquals( Var.alloc("bar" ), vars.get(1));
-        assertNull( groupBy.getExpr( vars.get(1) ));
-
-    }
-
-    @ContractTest
-    public void testAddHavingString() {
-        SolutionModifierClause<?> solutionModifier = 
getProducer().newInstance();
-        AbstractQueryBuilder<?> builder = 
solutionModifier.addHaving("?foo<10");
-
-        Query query = builder.build();
-        assertTrue( query.hasHaving() );
-        List<Expr> having = query.getHavingExprs();
-        assertEquals( 1, having.size() );
-        Expr exp = having.get(0);
-        assertTrue( exp.isFunction() );
-        assertTrue( exp.getFunction() instanceof E_LessThan  );
-        List<Expr> args = exp.getFunction().getArgs();
-        assertEquals( new ExprVar( "foo"), args.get(0));
-        assertEquals( new NodeValueInteger(10), args.get(1));
-
-        builder = solutionModifier.addHaving("?bar < 10");
-        
-        query = builder.build();
-        assertTrue( query.hasHaving() );
-        having = query.getHavingExprs();
-        assertEquals( 2, having.size() );
-        exp = having.get(0);
-        assertTrue( exp.isFunction() );
-        assertTrue( exp.getFunction() instanceof E_LessThan  );
-        args = exp.getFunction().getArgs();
-        assertEquals( new ExprVar( "foo"), args.get(0));
-        assertEquals( new NodeValueInteger(10), args.get(1));
-        
-        exp = having.get(1);
-        assertTrue( exp.isFunction() );
-        assertTrue( exp.getFunction() instanceof E_LessThan  );
-        args = exp.getFunction().getArgs();
-        assertEquals( new ExprVar( "bar"), args.get(0));
-        assertEquals( new NodeValueInteger(10), args.get(1));
-    }
-
-    @ContractTest
-    public void testAddHavingObject() {
-        SolutionModifierClause<?> solutionModifier = 
getProducer().newInstance();
-        AbstractQueryBuilder<?> builder = 
solutionModifier.addHaving(Var.alloc("foo"));
-        
-        Query query = builder.build();
-        assertTrue( query.hasHaving() );
-        List<Expr> having = query.getHavingExprs();
-        assertEquals( 1, having.size() );
-        Expr exp = having.get(0);
-        assertTrue( exp.isVariable() );
-        assertEquals( new ExprVar( "foo"), exp.getExprVar());
-
-        builder = solutionModifier.addHaving("?having2");
-        
-        query = builder.build();
-        assertTrue( query.hasHaving() );
-        having = query.getHavingExprs();
-        assertEquals( 2, having.size() );
-        exp = having.get(0);
-        assertTrue( exp.isVariable() );
-        assertEquals( new ExprVar( "foo"), exp.getExprVar());
-        exp = having.get(1);
-        assertTrue( exp.isVariable() );
-        assertEquals( new ExprVar( "having2"), exp.getExprVar());
-    }
-
-    @ContractTest
-    public void testAddHavingExpr() {
-        SolutionModifierClause<?> solutionModifier = 
getProducer().newInstance();
-        AbstractQueryBuilder<?> builder = solutionModifier.addHaving(new 
E_Random());
-        
-        Query query = builder.build();
-        assertTrue( query.hasHaving() );
-        List<Expr> having = query.getHavingExprs();
-        assertEquals( 1, having.size() );
-        Expr exp = having.get(0);
-        assertTrue( exp.isFunction() );
-        assertTrue( exp.getFunction() instanceof E_Random  );
-        
-        solutionModifier.addHaving("?having2");
-        
-        query = builder.build();
-        assertTrue( query.hasHaving() );
-        having = query.getHavingExprs();
-        assertEquals( 2, having.size() );
-        exp = having.get(0);
-        assertTrue( exp.isFunction() );
-        assertTrue( exp.getFunction() instanceof E_Random  );
-        exp = having.get(1);
-        assertTrue( exp.isVariable() );
-        assertEquals( new ExprVar( "having2"), exp.getExprVar());
-    }
-
-    @ContractTest
-    public void testSetLimit() {
-        SolutionModifierClause<?> solutionModifier = 
getProducer().newInstance();
-        AbstractQueryBuilder<?> builder = solutionModifier.setLimit(500);
-        
-        Query query = builder.build();
-        assertTrue( query.hasLimit());
-        assertEquals( 500L, query.getLimit() );
-
-        builder = solutionModifier.setLimit(200);
-        
-        query = builder.build();
-        assertTrue( query.hasLimit());
-        assertEquals( 200L, query.getLimit() );
-
-        builder = solutionModifier.setLimit(0);
-        query = builder.build();
-        assertFalse( "Should not contain LIMIT", query.hasLimit());
-    }
-
-    @ContractTest
-    public void testSetOffset() {
-        SolutionModifierClause<?> solutionModifier = 
getProducer().newInstance();
-        AbstractQueryBuilder<?> builder = solutionModifier.setOffset(500);
-
-        Query query = builder.build();
-        assertTrue( query.hasOffset());
-        assertEquals( 500, query.getOffset());
-
-        builder = solutionModifier.setOffset(200);
-
-        query = builder.build();
-        assertTrue( query.hasOffset());
-        assertEquals( 200, query.getOffset());
-
-        
-        builder = solutionModifier.setOffset(0);
-        query = builder.build();
-        assertFalse( "Should not contain OFFSET", query.hasOffset());        
-    }
-
-    @ContractTest
-    public void testSetVarsGroupBy() {
-        Var v = Var.alloc("v");
-        SolutionModifierClause<?> solutionModifier = 
getProducer().newInstance();
-        AbstractQueryBuilder<?> builder = solutionModifier.addGroupBy("?v");
-
-        VarExprList groupBy = builder.build().getGroupBy();
-        Assert.assertEquals(1, groupBy.size());
-        Assert.assertEquals(Var.alloc("v"), groupBy.getVars().get(0));
-        Assert.assertNull(groupBy.getExpr(Var.alloc("v")));
-
-        builder.setVar(v, Var.alloc("v2"));
-        groupBy = builder.build().getGroupBy();
-        Assert.assertEquals(1, groupBy.size());
-        Assert.assertEquals(Var.alloc("v2"), groupBy.getVars().get(0));
-        Assert.assertNull(groupBy.getExpr(Var.alloc("v2")));
-        builder.setVar(v, Var.alloc("v2"));
-
-    }
-
-    @ContractTest
-    public void testSetVarsGroupBy_Node_Variable() {
-        Node v = NodeFactory.createVariable("v");
-        SolutionModifierClause<?> solutionModifier = 
getProducer().newInstance();
-        AbstractQueryBuilder<?> builder = solutionModifier.addGroupBy(v);
-
-        VarExprList groupBy = builder.build().getGroupBy();
-        Assert.assertEquals(1, groupBy.size());
-        Assert.assertEquals(Var.alloc("v"), groupBy.getVars().get(0));
-        Assert.assertNull(groupBy.getExpr(Var.alloc("v")));
-
-        builder.setVar(v, NodeFactory.createVariable("v2"));
-        groupBy = builder.build().getGroupBy();
-        Assert.assertEquals(1, groupBy.size());
-        Assert.assertEquals(Var.alloc("v2"), groupBy.getVars().get(0));
-        Assert.assertNull(groupBy.getExpr(Var.alloc("v2")));
-
-    }
-
-    @ContractTest
-    public void testSetVarsHaving() {
-        Var v = Var.alloc("v");
-        SolutionModifierClause<?> solutionModifier = 
getProducer().newInstance();
-        AbstractQueryBuilder<?> builder = solutionModifier.addHaving("?v");
-
-        List<Expr> exprs = builder.build().getHavingExprs();
-        Assert.assertEquals(1, exprs.size());
-        Assert.assertEquals(new ExprVar(Var.alloc(v)), exprs.get(0));
-
-        builder.setVar(v, Var.alloc("v2"));
-        exprs = builder.build().getHavingExprs();
-        Assert.assertEquals(1, exprs.size());
-        Assert.assertEquals(new ExprVar(Var.alloc("v2")), exprs.get(0));
-    }
-
-    @ContractTest
-    public void testSetVarsHaving_Node_Variable() {
-        Node v = NodeFactory.createVariable("v");
-        SolutionModifierClause<?> solutionModifier = 
getProducer().newInstance();
-        AbstractQueryBuilder<?> builder = solutionModifier.addHaving(v);
-
-        List<Expr> exprs = builder.build().getHavingExprs();
-        Assert.assertEquals(1, exprs.size());
-        Assert.assertEquals(new ExprVar(Var.alloc(v)), exprs.get(0));
-
-        builder.setVar(v, Var.alloc("v2"));
-        exprs = builder.build().getHavingExprs();
-        Assert.assertEquals(1, exprs.size());
-        Assert.assertEquals(new ExprVar(Var.alloc("v2")), exprs.get(0));
-    }
-
-    @ContractTest
-    public void testSetVarsOrderBy() {
-        Var v = Var.alloc("v");
-        SolutionModifierClause<?> solutionModifier = 
getProducer().newInstance();
-        AbstractQueryBuilder<?> builder = solutionModifier.addOrderBy("?v");
-
-        List<SortCondition> lst = builder.build().getOrderBy();
-        Assert.assertEquals(1, lst.size());
-        Assert.assertEquals(new SortCondition(new ExprVar(Var.alloc(v)), 
Query.ORDER_DEFAULT), lst.get(0));
-
-        builder.setVar(v, Var.alloc("v2"));
-        lst = builder.build().getOrderBy();
-        Assert.assertEquals(1, lst.size());
-        Assert.assertEquals(new SortCondition(new ExprVar(Var.alloc("v2")), 
Query.ORDER_DEFAULT), lst.get(0));
-
-    }
-
-    @ContractTest
-    public void testSetVarsOrderBy_NodeVariable() {
-        Node v = NodeFactory.createVariable("v");
-        SolutionModifierClause<?> solutionModifier = 
getProducer().newInstance();
-        AbstractQueryBuilder<?> builder = solutionModifier.addOrderBy(v);
-
-        List<SortCondition> lst = builder.build().getOrderBy();
-        Assert.assertEquals(1, lst.size());
-        Assert.assertEquals(new SortCondition(new ExprVar(Var.alloc(v)), 
Query.ORDER_DEFAULT), lst.get(0));
-
-        builder.setVar(v, Var.alloc("v2"));
-        lst = builder.build().getOrderBy();
-        Assert.assertEquals(1, lst.size());
-        Assert.assertEquals(new SortCondition(new ExprVar(Var.alloc("v2")), 
Query.ORDER_DEFAULT), lst.get(0));
-    }
-}
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
deleted file mode 100644
index 1b52c20bbc..0000000000
--- 
a/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/clauses/ValuesClauseTest.java
+++ /dev/null
@@ -1,430 +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.arq.querybuilder.clauses;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.LinkedHashMap;
-import java.util.List;
-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;
-import org.apache.jena.sparql.engine.binding.Binding;
-import org.junit.After;
-import org.junit.Before;
-import org.xenei.junit.contract.Contract;
-import org.xenei.junit.contract.ContractTest;
-import org.xenei.junit.contract.IProducer;
-
-@Contract(ValuesClause.class)
-public class ValuesClauseTest<T extends ValuesClause<?>> extends 
AbstractClauseTest {
-
-    // the producer we will user
-    private IProducer<T> producer;
-
-    private T valuesClause;
-
-    @Contract.Inject
-    // define the method to set producer.
-    public final void setProducer(IProducer<T> producer) {
-        this.producer = producer;
-    }
-
-    protected final IProducer<T> getProducer() {
-        return producer;
-    }
-
-    @Before
-    public final void setupValuesClauseTest() {
-        valuesClause = producer.newInstance();
-    }
-
-    @After
-    public final void cleanupValuesClauseTest() {
-        getProducer().cleanUp(); // clean up the producer for the next run
-    }
-
-    @ContractTest
-    public void testSetOneVar() {
-
-        AbstractQueryBuilder<?> builder = valuesClause.addValueVar("?x", 
"foo");
-        
-        Query query = builder.build();
-        assertTrue( query.hasValues() );
-        List<Var> vars = query.getValuesVariables();
-        assertEquals( 1, vars.size() );
-        assertEquals( "x", vars.get(0).getVarName());
-        List<Binding> bindings = query.getValuesData();
-        assertEquals( 1, bindings.size() );
-        Binding binding = bindings.get(0);
-        assertEquals( NodeFactory.createLiteralString( "foo"), 
binding.get("x"));
-    }
-
-    @ContractTest
-    public void testSetOneVarTwoValues() {
-
-        AbstractQueryBuilder<?> builder = valuesClause.addValueVar("?x", 
"foo", "bar");
-        
-        Query query = builder.build();
-        assertTrue( query.hasValues() );
-        List<Var> vars = query.getValuesVariables();
-        assertEquals( 1, vars.size() );
-        assertEquals( "x", vars.get(0).getVarName());
-        List<Binding> bindings = query.getValuesData();
-        assertEquals( 2, bindings.size() );
-        Binding binding = bindings.get(0);
-        assertEquals( NodeFactory.createLiteralString( "foo"), 
binding.get("x"));
-         binding = bindings.get(1);
-        assertEquals( NodeFactory.createLiteralString( "bar"), 
binding.get("x"));
-    }
-
-    @ContractTest
-    public void testSetTwoVarTwoValues() {
-
-        AbstractQueryBuilder<?> builder = valuesClause.addValueVar("?x", 
"foo", "fu");
-        builder.addValueVar("?y", "bar", "bear");
-
-        Query query = builder.build();
-        assertTrue( query.hasValues() );
-        List<Var> vars = query.getValuesVariables();
-        assertEquals( 2, vars.size() );
-        assertEquals( "x", vars.get(0).getVarName());
-        assertEquals( "y", vars.get(1).getVarName());
-        List<Binding> bindings = query.getValuesData();
-        assertEquals( 2, bindings.size() );
-        Binding binding = bindings.get(0);
-        assertEquals( NodeFactory.createLiteralString( "foo"), 
binding.get("x"));
-        assertEquals( NodeFactory.createLiteralString( "bar"), 
binding.get("y"));
-        binding = bindings.get(1);
-        assertEquals( NodeFactory.createLiteralString( "fu"), 
binding.get("x"));
-        assertEquals( NodeFactory.createLiteralString( "bear"), 
binding.get("y"));
-    }
-
-    @ContractTest
-    public void testSetTwoVarTwoValuesWithNull() {
-
-        AbstractQueryBuilder<?> builder = valuesClause.addValueVar("?x", 
"foo", "fu");
-        builder.addValueVar("?y", "bar", null);
-
-        Query query = builder.build();
-        assertTrue( query.hasValues() );
-        List<Var> vars = query.getValuesVariables();
-        assertEquals( 2, vars.size() );
-        assertEquals( "x", vars.get(0).getVarName());
-        assertEquals( "y", vars.get(1).getVarName());
-        List<Binding> bindings = query.getValuesData();
-        assertEquals( 2, bindings.size() );
-        Binding binding = bindings.get(0);
-        assertEquals( NodeFactory.createLiteralString( "foo"), 
binding.get("x"));
-        assertEquals( NodeFactory.createLiteralString( "bar" ), 
binding.get("y"));
-        binding = bindings.get(1);
-        assertEquals( NodeFactory.createLiteralString( "fu" ), 
binding.get("x"));
-        assertNull( binding.get("y"));
-    }
-
-    @ContractTest
-    public void testSetTwoVarTwoValuesAddRowWithNull() {
-
-        AbstractQueryBuilder<?> builder = valuesClause.addValueVar("?x", 
"foo", "fu");
-        builder.addValueVar("?y", "bar", null);
-        builder.addValueRow(null, "pub");
-
-        Query query = builder.build();
-        assertTrue( query.hasValues() );
-        List<Var> vars = query.getValuesVariables();
-        assertEquals( 2, vars.size() );
-        assertEquals( "x", vars.get(0).getVarName());
-        assertEquals( "y", vars.get(1).getVarName());
-        List<Binding> bindings = query.getValuesData();
-        assertEquals( 3, bindings.size() );
-        Binding binding = bindings.get(0);
-        assertEquals( NodeFactory.createLiteralString( "foo"), 
binding.get("x"));
-        assertEquals( NodeFactory.createLiteralString( "bar"), 
binding.get("y"));
-        binding = bindings.get(1);
-        assertEquals( NodeFactory.createLiteralString( "fu"), 
binding.get("x"));
-        assertNull( binding.get("y"));
-        binding = bindings.get(2);
-        assertNull( binding.get("x"));
-        assertEquals( NodeFactory.createLiteralString( "pub"), 
binding.get("y"));
-    }
-
-    @ContractTest
-    public void testSetTwoVarMismatchedValues() {
-
-        AbstractQueryBuilder<?> builder = valuesClause.addValueVar("?x", 
"foo", "fu");
-        builder.addValueVar("?y", "bar");
-
-        try {
-            builder.buildString();
-            fail("Should have thrown QueryBuildException");
-        } catch (QueryBuildException expected) {
-            // do nothing
-        }
-
-        builder.addValueVar("?y", "bear");
-        
-        Query query = builder.build();
-        assertTrue( query.hasValues() );
-        List<Var> vars = query.getValuesVariables();
-        assertEquals( 2, vars.size() );
-        assertEquals( "x", vars.get(0).getVarName());
-        assertEquals( "y", vars.get(1).getVarName());
-        List<Binding> bindings = query.getValuesData();
-        assertEquals( 2, bindings.size() );
-        Binding binding = bindings.get(0);
-        assertEquals( NodeFactory.createLiteralString( "foo"), 
binding.get("x"));
-        assertEquals( NodeFactory.createLiteralString( "bar"), 
binding.get("y"));
-        binding = bindings.get(1);
-        assertEquals( NodeFactory.createLiteralString( "fu"), 
binding.get("x"));
-        assertEquals( NodeFactory.createLiteralString( "bear"), 
binding.get("y"));
-    }
-
-    @ContractTest
-    public void testAddingCollection() {
-        Collection<?> xCol = Arrays.asList("?x", "foo", "fu");
-        Collection<?> yCol = Arrays.asList("?y", "bar", null);
-        AbstractQueryBuilder<?> builder = 
valuesClause.addValueVar(xCol).addValueVar(yCol);
-
-        Query query = builder.build();
-        assertTrue( query.hasValues() );
-        List<Var> vars = query.getValuesVariables();
-        assertEquals( 2, vars.size() );
-        assertEquals( "x", vars.get(0).getVarName());
-        assertEquals( "y", vars.get(1).getVarName());
-        List<Binding> bindings = query.getValuesData();
-        assertEquals( 2, bindings.size() );
-        Binding binding = bindings.get(0);
-        assertEquals( NodeFactory.createLiteralString( "foo"), 
binding.get("x"));
-        assertEquals( NodeFactory.createLiteralString( "bar"), 
binding.get("y"));
-        binding = bindings.get(1);
-        assertEquals( NodeFactory.createLiteralString( "fu"), 
binding.get("x"));
-        assertNull( binding.get("y"));
-    }
-
-    @ContractTest
-    public void testAddingLists() {
-        AbstractQueryBuilder<?> builder = valuesClause.addValueVar("?x", 
"foo", "fu").addValueVar(Var.alloc("y"), "bar",
-                null);
-
-        Query query = builder.build();
-        assertTrue( query.hasValues() );
-        List<Var> vars = query.getValuesVariables();
-        assertEquals( 2, vars.size() );
-        assertEquals( "x", vars.get(0).getVarName());
-        assertEquals( "y", vars.get(1).getVarName());
-        List<Binding> bindings = query.getValuesData();
-        assertEquals( 2, bindings.size() );
-        Binding binding = bindings.get(0);
-        assertEquals( NodeFactory.createLiteralString( "foo"), 
binding.get("x"));
-        assertEquals( NodeFactory.createLiteralString( "bar"), 
binding.get("y"));
-        binding = bindings.get(1);
-        assertEquals( NodeFactory.createLiteralString( "fu"), 
binding.get("x"));
-        assertNull( binding.get("y"));
-    }
-
-    @ContractTest
-    public void testAddingObject() {
-        Object o = "?x";
-        AbstractQueryBuilder<?> builder = valuesClause.addValueVar(o);
-        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.createTripleTerm(expected);
-        builder.addValueRow(tripleNode, null);
-
-        Query query = builder.build();
-        assertTrue( query.hasValues() );
-        List<Var> vars = query.getValuesVariables();
-        assertEquals( 2, vars.size() );
-        assertEquals( "x", vars.get(0).getVarName());
-        assertEquals( "y", vars.get(1).getVarName());
-        List<Binding> bindings = query.getValuesData();
-        assertEquals( 3, bindings.size() );
-        Binding binding = bindings.get(0);
-        assertEquals( NodeFactory.createLiteralString( "foo"), 
binding.get("x"));
-        assertEquals( NodeFactory.createLiteralString( "bar"), 
binding.get("y"));
-        binding = bindings.get(1);
-        assertEquals( NodeFactory.createLiteralString( "fu"), 
binding.get("x"));
-        assertNull( binding.get("y"));
-        binding = bindings.get(2);
-        assertEquals( tripleNode, binding.get("x"));
-        assertNull( binding.get("y"));
-    }
-
-    @ContractTest
-    public void testAddingMatrix() {
-        Map<Object, Collection<Object>> map = new LinkedHashMap<Object, 
Collection<Object>>();
-
-        map.put("?x", Arrays.asList("foo", 
NodeFactory.createLiteralString("fu")));
-        map.put(Var.alloc("y"), Arrays.asList("bar", null));
-        AbstractQueryBuilder<?> builder = valuesClause.addValueVars(map);
-
-
-        Query query = builder.build();
-        assertTrue( query.hasValues() );
-        List<Var> vars = query.getValuesVariables();
-        assertEquals( 2, vars.size() );
-        assertEquals( "x", vars.get(0).getVarName());
-        assertEquals( "y", vars.get(1).getVarName());
-        List<Binding> bindings = query.getValuesData();
-        assertEquals( 2, bindings.size() );
-        Binding binding = bindings.get(0);
-        assertEquals( NodeFactory.createLiteralString( "foo"), 
binding.get("x"));
-        assertEquals( NodeFactory.createLiteralString( "bar"), 
binding.get("y"));
-        binding = bindings.get(1);
-        assertEquals( NodeFactory.createLiteralString( "fu"), 
binding.get("x"));
-        assertNull( binding.get("y"));
-    }
-
-    @ContractTest
-    public void testAppendingMatrix() {
-        Map<Object, Collection<Object>> map = new LinkedHashMap<Object, 
Collection<Object>>();
-
-        map.put("?x", Arrays.asList("foo", 
NodeFactory.createLiteralString("fu")));
-        map.put(Var.alloc("y"), Arrays.asList("bar", null));
-        AbstractQueryBuilder<?> builder = valuesClause.addValueVars(map);
-
-        Map<Var, Collection<Node>> map2 = new LinkedHashMap<Var, 
Collection<Node>>();
-        map2.put(Var.alloc("y"), 
Arrays.asList(NodeFactory.createLiteralString("baz"), Var.alloc("z")));
-        map2.put(Var.alloc("z"), 
Arrays.asList(NodeFactory.createLiteralString("dog"), 
NodeFactory.createLiteralString("cat")));
-
-        builder.addValueVars(map2);
-
-        Query query = builder.build();
-        assertTrue( query.hasValues() );
-        List<Var> vars = query.getValuesVariables();
-        assertEquals( 3, vars.size() );
-        assertEquals( "x", vars.get(0).getVarName());
-        assertEquals( "y", vars.get(1).getVarName());
-        assertEquals( "z", vars.get(2).getVarName());
-        List<Binding> bindings = query.getValuesData();
-        assertEquals( 4, bindings.size() );
-        Binding binding = bindings.get(0);
-        assertEquals( NodeFactory.createLiteralString( "foo"), 
binding.get("x"));
-        assertEquals( NodeFactory.createLiteralString( "bar"), 
binding.get("y"));
-        assertNull( binding.get("z"));
-        binding = bindings.get(1);
-        assertEquals( NodeFactory.createLiteralString( "fu"), 
binding.get("x"));
-        assertNull( binding.get("y"));
-        assertNull( binding.get("z"));
-
-        binding = bindings.get(2);
-        assertNull( binding.get("x"));
-        assertEquals( NodeFactory.createLiteralString( "baz"), 
binding.get("y"));
-        assertEquals( NodeFactory.createLiteralString( "dog"), 
binding.get("z"));
-
-        binding = bindings.get(3);
-        assertNull( binding.get("x"));
-        assertEquals( Var.alloc( "z"), binding.get("y"));
-        assertEquals( NodeFactory.createLiteralString( "cat"), 
binding.get("z"));
-    }
-
-    @ContractTest
-    public void testAddValeuRowObjects() {
-        Object o = "?x";
-        AbstractQueryBuilder<?> builder = valuesClause.addValueVar(o);
-        builder.addValueVar("?y");
-        builder.addValueRow("foo", "bar");
-        builder.addValueRow("fu", null);
-        
-        Query query = builder.build();
-        assertTrue( query.hasValues() );
-        List<Var> vars = query.getValuesVariables();
-        assertEquals( 2, vars.size() );
-        assertEquals( "x", vars.get(0).getVarName());
-        assertEquals( "y", vars.get(1).getVarName());
-        List<Binding> bindings = query.getValuesData();
-        assertEquals( 2, bindings.size() );
-        Binding binding = bindings.get(0);
-        assertEquals( NodeFactory.createLiteralString( "foo"), 
binding.get("x"));
-        assertEquals( NodeFactory.createLiteralString( "bar"), 
binding.get("y"));
-        binding = bindings.get(1);
-        assertEquals( NodeFactory.createLiteralString( "fu"), 
binding.get("x"));
-        assertNull( binding.get("y"));
-    }
-
-    @ContractTest
-    public void testAddValeuRowCollections() {
-        Object o = "?x";
-        AbstractQueryBuilder<?> builder = valuesClause.addValueVar(o);
-        builder.addValueVar("?y");
-        builder.addValueRow(Arrays.asList("foo", "bar"));
-        builder.addValueRow(Arrays.asList("fu", null));
-
-        Query query = builder.build();
-        assertTrue( query.hasValues() );
-        List<Var> vars = query.getValuesVariables();
-        assertEquals( 2, vars.size() );
-        assertEquals( "x", vars.get(0).getVarName());
-        assertEquals( "y", vars.get(1).getVarName());
-        List<Binding> bindings = query.getValuesData();
-        assertEquals( 2, bindings.size() );
-        Binding binding = bindings.get(0);
-        assertEquals( NodeFactory.createLiteralString( "foo"), 
binding.get("x"));
-        assertEquals( NodeFactory.createLiteralString( "bar"), 
binding.get("y"));
-        binding = bindings.get(1);
-        assertEquals( NodeFactory.createLiteralString( "fu"), 
binding.get("x"));
-        assertNull( binding.get("y"));
-    }
-
-    @ContractTest
-    public void testDataQuery() {
-        // test that the getVars getMap and clear methods work.
-        Object o = "?x";
-        AbstractQueryBuilder<?> builder = 
valuesClause.addValueVar(o).addValueVar("?y").addValueRow("foo", "bar")
-                .addValueRow("fu", null);
-
-        assertFalse(builder.getValuesVars().isEmpty());
-        List<Var> lst = builder.getValuesVars();
-        assertEquals(2, lst.size());
-        assertEquals(Var.alloc("x"), lst.get(0));
-        assertEquals(Var.alloc("y"), lst.get(1));
-
-        Map<Var, List<Node>> map = builder.getValuesMap();
-        assertEquals(2, map.keySet().size());
-        List<Node> nodes = map.get(Var.alloc("x"));
-        assertEquals(2, nodes.size());
-        assertEquals(NodeFactory.createLiteralString("foo"), nodes.get(0));
-        assertEquals(NodeFactory.createLiteralString("fu"), nodes.get(1));
-
-        nodes = map.get(Var.alloc("y"));
-        assertEquals(2, nodes.size());
-        assertEquals(NodeFactory.createLiteralString("bar"), nodes.get(0));
-        assertNull(nodes.get(1));
-
-        builder.clearValues();
-
-        assertTrue(builder.getValuesVars().isEmpty());
-        assertTrue(builder.getValuesMap().isEmpty());
-    }
-
-}
diff --git 
a/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/clauses/WhereClauseTest.java
 
b/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/clauses/WhereClauseTest.java
deleted file mode 100644
index 3aaa5e25aa..0000000000
--- 
a/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/clauses/WhereClauseTest.java
+++ /dev/null
@@ -1,1381 +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.arq.querybuilder.clauses;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-
-import java.util.*;
-
-import org.apache.jena.arq.TestAbstractQueryBuilder;
-import org.apache.jena.arq.querybuilder.AbstractQueryBuilder;
-import org.apache.jena.arq.querybuilder.SelectBuilder;
-import org.apache.jena.arq.querybuilder.WhereBuilder;
-import org.apache.jena.arq.querybuilder.WhereValidator;
-import org.apache.jena.graph.FrontsTriple;
-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.shared.PrefixMapping;
-import org.apache.jena.shared.impl.PrefixMappingImpl;
-import org.apache.jena.sparql.core.TriplePath;
-import org.apache.jena.sparql.core.Var;
-import org.apache.jena.sparql.engine.binding.Binding;
-import org.apache.jena.sparql.engine.binding.BindingFactory;
-import org.apache.jena.sparql.expr.E_LessThan;
-import org.apache.jena.sparql.expr.E_Random;
-import org.apache.jena.sparql.expr.Expr;
-import org.apache.jena.sparql.expr.ExprVar;
-import org.apache.jena.sparql.expr.nodevalue.NodeValueInteger;
-import org.apache.jena.sparql.path.P_Link;
-import org.apache.jena.sparql.path.P_Seq;
-import org.apache.jena.sparql.path.Path;
-import org.apache.jena.sparql.path.PathParser;
-import org.apache.jena.sparql.syntax.*;
-import org.apache.jena.vocabulary.RDF;
-import org.junit.After;
-import org.xenei.junit.contract.Contract;
-import org.xenei.junit.contract.ContractTest;
-import org.xenei.junit.contract.IProducer;
-
-@Contract(WhereClause.class)
-public class WhereClauseTest<T extends WhereClause<?>> extends 
AbstractClauseTest {
-
-    // the producer we will use
-    private IProducer<T> producer;
-
-    @Contract.Inject
-    // define the method to set producer.
-    public final void setProducer(IProducer<T> producer) {
-        this.producer = producer;
-    }
-
-    protected final IProducer<T> getProducer() {
-        return producer;
-    }
-
-    @After
-    public final void cleanupWhereClauseTest() {
-        getProducer().cleanUp(); // clean up the producer for the next run
-    }
-
-    @ContractTest
-    public void testAddWhere3Objects() {
-        WhereClause<?> whereClause = getProducer().newInstance();
-        AbstractQueryBuilder<?> builder = whereClause.addWhere("<one>", 
"<two>", "three");
-
-        ElementPathBlock epb = new ElementPathBlock();
-        Triple t = Triple.create(NodeFactory.createURI("one"), 
NodeFactory.createURI("two"),
-                NodeFactory.createLiteralString("three"));
-        epb.addTriple(t);
-
-        WhereValidator visitor = new WhereValidator(epb);
-        builder.build().getQueryPattern().visit(visitor);
-        assertTrue(visitor.matching);
-    }
-    
-
-    @ContractTest
-    public void testAddWhereAbstractQueryBuilder() {
-        WhereClause<?> whereClause = getProducer().newInstance();
-        TriplePath tp = new 
TriplePath(Triple.create(NodeFactory.createURI("one"), 
NodeFactory.createURI("two"), NodeFactory.createURI("three")));
-
-        TestAbstractQueryBuilder abstractQueryBuilder = new 
TestAbstractQueryBuilder();
-        abstractQueryBuilder.getHandlerBlock().getWhereHandler().addWhere(tp);
-        AbstractQueryBuilder<?> builder = 
whereClause.addWhere(abstractQueryBuilder);
-        
-        ElementPathBlock epb = new ElementPathBlock();
-        epb.addTriplePath(tp);
-        WhereValidator visitor = new WhereValidator(epb);
-        builder.build().getQueryPattern().visit(visitor);
-        assertTrue(visitor.matching);
-    }
-    
-    @ContractTest
-    public void testAddWhereTriplePath() {
-        WhereClause<?> whereClause = getProducer().newInstance();
-        PrefixMapping pmap = new PrefixMappingImpl();
-        pmap.setNsPrefix("ts", "urn:test:");
-        Path path = PathParser.parse("ts:two/ts:dos", pmap);
-        TriplePath first = new TriplePath(NodeFactory.createURI("one"), path, 
NodeFactory.createURI("three"));
-        
-        AbstractQueryBuilder<?> builder = whereClause
-                .addWhere(first);
-
-        ElementPathBlock epb = new ElementPathBlock();
-        epb.addTriplePath(first);
-
-        WhereValidator visitor = new WhereValidator(epb);
-        builder.build().getQueryPattern().visit(visitor);
-        assertTrue(visitor.matching);
-    }
-    
-
-    @ContractTest
-    public void testAddWhereTriple() {
-        WhereClause<?> whereClause = getProducer().newInstance();
-        Triple triple = Triple.create(NodeFactory.createURI("one"), 
NodeFactory.createURI("two"), NodeFactory.createURI("three"));
-
-        AbstractQueryBuilder<?> builder = whereClause
-                .addWhere(triple);
-
-        ElementPathBlock epb = new ElementPathBlock();
-        epb.addTriple(triple);
-
-        WhereValidator visitor = new WhereValidator(epb);
-        builder.build().getQueryPattern().visit(visitor);
-        assertTrue(visitor.matching);
-    }
-
-    @ContractTest
-    public void testAddWhereFrontsTriple() {
-        WhereClause<?> whereClause = getProducer().newInstance();
-        Triple triple = Triple.create(NodeFactory.createURI("one"), 
NodeFactory.createURI("two"), NodeFactory.createURI("three"));
-        FrontsTriple front = new FrontsTriple() {
-
-            @Override
-            public Triple asTriple() {
-                return triple;
-            }};
-        
-        AbstractQueryBuilder<?> builder = whereClause
-                .addWhere(front);
-
-        ElementPathBlock epb = new ElementPathBlock();
-        epb.addTriple(triple);
-
-        WhereValidator visitor = new WhereValidator(epb);
-        builder.build().getQueryPattern().visit(visitor);
-        assertTrue(visitor.matching);
-    }
-
-    @ContractTest
-    public void testAddWhereTriplePathCollection() {
-        WhereClause<?> whereClause = getProducer().newInstance();
-        PrefixMapping pmap = new PrefixMappingImpl();
-        pmap.setNsPrefix("ts", "urn:test:");
-        Path path = PathParser.parse("ts:two/ts:dos", pmap);
-        TriplePath first = new TriplePath(NodeFactory.createURI("one"), path, 
NodeFactory.createURI("three"));
-        TriplePath second = new TriplePath(NodeFactory.createURI("for"), path, 
NodeFactory.createURI("six"));
-
-        AbstractQueryBuilder<?> builder = whereClause
-                .addWhere(List.of(first, second));
-
-        ElementPathBlock epb = new ElementPathBlock();
-        epb.addTriplePath(first);
-        epb.addTriplePath(second);
-
-        WhereValidator visitor = new WhereValidator(epb);
-        builder.build().getQueryPattern().visit(visitor);
-        assertTrue(visitor.matching);
-    }
-
-    @ContractTest
-    public void testAddWhereWhereClause() {
-        WhereBuilder whereBuilder = new WhereBuilder().addWhere(new 
TriplePath(Triple.create(NodeFactory.createURI("one"),
-                NodeFactory.createURI("two"), 
NodeFactory.createURI("three"))));
-
-        WhereClause<?> whereClause = getProducer().newInstance();
-        AbstractQueryBuilder<?> builder = whereClause.addWhere(whereBuilder);
-
-        ElementPathBlock epb = new ElementPathBlock();
-        Triple t = Triple.create(NodeFactory.createURI("one"), 
NodeFactory.createURI("two"),
-                NodeFactory.createURI("three"));
-        epb.addTriple(t);
-
-        WhereValidator visitor = new WhereValidator(epb);
-        builder.build().getQueryPattern().visit(visitor);
-        assertTrue(visitor.matching);
-    }
-
-    @ContractTest
-    public void testAddOptionalString() {
-        WhereClause<?> whereClause = getProducer().newInstance();
-        AbstractQueryBuilder<?> builder = whereClause.addOptional("<one>", 
"<two>", "three");
-
-        ElementPathBlock epb = new ElementPathBlock();
-        ElementOptional optional = new ElementOptional(epb);
-        Triple t = Triple.create(NodeFactory.createURI("one"), 
NodeFactory.createURI("two"),
-                NodeFactory.createLiteralString("three"));
-        epb.addTriple(t);
-
-        WhereValidator visitor = new WhereValidator(optional);
-        builder.build().getQueryPattern().visit(visitor);
-        assertTrue(visitor.matching);
-
-    }
-
-    @ContractTest
-    public void testAddOptionalStringWithPath() {
-        WhereClause<?> whereClause = getProducer().newInstance();
-        AbstractQueryBuilder<?> builder = whereClause.addOptional("<one>", 
"<two>/<dos>", "three");
-
-        Path path = new P_Seq(new P_Link(NodeFactory.createURI("two")), new 
P_Link(NodeFactory.createURI("dos")));
-        ElementPathBlock epb = new ElementPathBlock();
-        ElementOptional optional = new ElementOptional(epb);
-        TriplePath tp = new TriplePath(NodeFactory.createURI("one"), path, 
NodeFactory.createLiteralString("three"));
-        epb.addTriplePath(tp);
-
-        WhereValidator visitor = new WhereValidator(optional);
-        builder.build().getQueryPattern().visit(visitor);
-        assertTrue(visitor.matching);
-    }
-
-    @ContractTest
-    public void testAddOptionalObjects() {
-        WhereClause<?> whereClause = getProducer().newInstance();
-        AbstractQueryBuilder<?> builder = 
whereClause.addOptional(NodeFactory.createURI("one"),
-                NodeFactory.createURI("two"), NodeFactory.createURI("three"));
-
-        ElementPathBlock epb = new ElementPathBlock();
-        ElementOptional optional = new ElementOptional(epb);
-        Triple t = Triple.create(NodeFactory.createURI("one"), 
NodeFactory.createURI("two"),
-                NodeFactory.createURI("three"));
-        epb.addTriple(t);
-
-        WhereValidator visitor = new WhereValidator(optional);
-        builder.build().getQueryPattern().visit(visitor);
-        assertTrue(visitor.matching);
-    }
-
-    @ContractTest
-    public void testAddOptionalTriple() {
-        WhereClause<?> whereClause = getProducer().newInstance();
-        AbstractQueryBuilder<?> builder = 
whereClause.addOptional(NodeFactory.createURI("one"),
-                NodeFactory.createURI("two"), NodeFactory.createURI("three"));
-
-        ElementPathBlock epb = new ElementPathBlock();
-        ElementOptional optional = new ElementOptional(epb);
-        Triple t = Triple.create(NodeFactory.createURI("one"), 
NodeFactory.createURI("two"),
-                NodeFactory.createURI("three"));
-        epb.addTriple(t);
-
-        WhereValidator visitor = new WhereValidator(optional);
-        builder.build().getQueryPattern().visit(visitor);
-        assertTrue(visitor.matching);
-    }
-
-    @ContractTest
-    public void testAddOptionalTriplePath() {
-        WhereClause<?> whereClause = getProducer().newInstance();
-        PrefixMapping pmap = new PrefixMappingImpl();
-        pmap.setNsPrefix("ts", "urn:test:");
-        Path path = PathParser.parse("ts:two/ts:dos", pmap);
-        AbstractQueryBuilder<?> builder = whereClause
-                .addOptional(new TriplePath(NodeFactory.createURI("one"), 
path, NodeFactory.createURI("three")));
-
-        ElementPathBlock epb = new ElementPathBlock();
-        ElementOptional optional = new ElementOptional(epb);
-        TriplePath tp = new TriplePath(NodeFactory.createURI("one"), path, 
NodeFactory.createURI("three"));
-        epb.addTriplePath(tp);
-
-        WhereValidator visitor = new WhereValidator(optional);
-        builder.build().getQueryPattern().visit(visitor);
-        assertTrue(visitor.matching);
-    }
-
-    @ContractTest
-    public void testAddOptionalTriplePathCollection() {
-        WhereClause<?> whereClause = getProducer().newInstance();
-        PrefixMapping pmap = new PrefixMappingImpl();
-        pmap.setNsPrefix("ts", "urn:test:");
-        Path path = PathParser.parse("ts:two/ts:dos", pmap);
-        TriplePath first = new TriplePath(NodeFactory.createURI("one"), path, 
NodeFactory.createURI("three"));
-        TriplePath second = new TriplePath(NodeFactory.createURI("for"), path, 
NodeFactory.createURI("six"));
-
-        AbstractQueryBuilder<?> builder = whereClause
-                .addOptional(List.of(first, second));
-
-        ElementPathBlock epb = new ElementPathBlock();
-        ElementOptional optional = new ElementOptional(epb);
-        epb.addTriplePath(first);
-        epb.addTriplePath(second);
-
-        WhereValidator visitor = new WhereValidator(optional);
-        builder.build().getQueryPattern().visit(visitor);
-        assertTrue(visitor.matching);
-    }
-    
-    @ContractTest
-    public void testAddOptionalObjectsWithPath() {
-        WhereClause<?> whereClause = getProducer().newInstance();
-        PrefixMapping pmap = new PrefixMappingImpl();
-        pmap.setNsPrefix("ts", "urn:test:");
-        Path path = PathParser.parse("ts:two/ts:dos", pmap);
-        AbstractQueryBuilder<?> builder = 
whereClause.addOptional(NodeFactory.createURI("one"), path,
-                NodeFactory.createURI("three"));
-
-        ElementPathBlock epb = new ElementPathBlock();
-        ElementOptional optional = new ElementOptional(epb);
-        TriplePath tp = new TriplePath(NodeFactory.createURI("one"), path, 
NodeFactory.createURI("three"));
-        epb.addTriplePath(tp);
-
-        WhereValidator visitor = new WhereValidator(optional);
-        builder.build().getQueryPattern().visit(visitor);
-        assertTrue(visitor.matching);
-
-    }
-
-    @ContractTest
-    public void testAddOptionalGroupPattern() {
-
-        Var s = Var.alloc("s");
-        Node q = NodeFactory.createURI("urn:q");
-        Node v = NodeFactory.createURI("urn:v");
-        Var x = Var.alloc("x");
-        Node n123 = NodeFactory.createLiteralByValue(123);
-
-        SelectBuilder pattern = new SelectBuilder();
-        pattern.addWhere(Triple.create(s, q, n123));
-        pattern.addWhere(Triple.create(s, v, x));
-
-        WhereClause<?> whereClause = getProducer().newInstance();
-        AbstractQueryBuilder<?> builder = whereClause.addOptional(pattern);
-
-        ElementPathBlock epb = new ElementPathBlock();
-        ElementOptional optional = new ElementOptional(epb);
-        TriplePath tp = new TriplePath(Triple.create(s, q, n123));
-        epb.addTriplePath(tp);
-        tp = new TriplePath(Triple.create(s, v, x));
-        epb.addTriplePath(tp);
-
-        WhereValidator visitor = new WhereValidator(optional);
-        builder.build().getQueryPattern().visit(visitor);
-        assertTrue(visitor.matching);
-
-    }
-
-    @ContractTest
-    public void testAddOptionalGroupPattern_VariableNode() {
-
-        Node s = NodeFactory.createVariable("s");
-        Node q = NodeFactory.createURI("urn:q");
-        Node v = NodeFactory.createURI("urn:v");
-        Var x = Var.alloc("x");
-        Node n123 = NodeFactory.createLiteralByValue(123);
-
-        SelectBuilder pattern = new SelectBuilder();
-        pattern.addWhere(Triple.create(s, q, n123));
-        pattern.addWhere(Triple.create(s, v, x));
-
-        WhereClause<?> whereClause = getProducer().newInstance();
-        AbstractQueryBuilder<?> builder = whereClause.addOptional(pattern);
-
-        ElementPathBlock epb = new ElementPathBlock();
-        ElementOptional optional = new ElementOptional(epb);
-        TriplePath tp = new TriplePath(Triple.create(Var.alloc(s), q, n123));
-        epb.addTriplePath(tp);
-        tp = new TriplePath(Triple.create(Var.alloc(s), v, x));
-        epb.addTriplePath(tp);
-
-        WhereValidator visitor = new WhereValidator(optional);
-        builder.build().getQueryPattern().visit(visitor);
-        assertTrue(visitor.matching);
-
-    }
-
-    @ContractTest
-    public void testAddFilter() {
-        WhereClause<?> whereClause = getProducer().newInstance();
-        AbstractQueryBuilder<?> builder = whereClause.addFilter("?one<10");
-
-        E_LessThan lt = new E_LessThan(new ExprVar(Var.alloc("one")), new 
NodeValueInteger(10));
-        ElementFilter ef = new ElementFilter(lt);
-
-        WhereValidator visitor = new WhereValidator(ef);
-        builder.build().getQueryPattern().visit(visitor);
-        assertTrue(visitor.matching);
-
-    }
-
-    @ContractTest
-    public void testAddSubQuery() {
-        SelectBuilder sb = new SelectBuilder();
-        sb.addPrefix("pfx", "urn:uri:").addVar("?x").addWhere("pfx:one", 
"pfx:two", "pfx:three");
-        WhereClause<?> whereClause = getProducer().newInstance();
-        AbstractQueryBuilder<?> builder = whereClause.addSubQuery(sb);
-        Query query = builder.build();
-
-        Query q2 = new Query();
-        q2.setQuerySelectType();
-        q2.addProjectVars(Arrays.asList(Var.alloc("x")));
-        ElementPathBlock epb = new ElementPathBlock();
-        q2.setQueryPattern(epb);
-        epb.addTriplePath(new 
TriplePath(Triple.create(NodeFactory.createURI("urn:uri:one"),
-                NodeFactory.createURI("urn:uri:two"), 
NodeFactory.createURI("urn:uri:three"))));
-        ElementSubQuery esq = new ElementSubQuery(q2);
-
-        WhereValidator visitor = new WhereValidator(esq);
-        query.getQueryPattern().visit(visitor);
-        assertTrue(visitor.matching);
-
-    }
-
-    @ContractTest
-    public void testAddUnion() {
-        SelectBuilder sb = new SelectBuilder();
-        sb.addPrefix("pfx", "uri").addVar("?x").addWhere("<one>", "<two>", 
"three");
-        WhereClause<?> whereClause = getProducer().newInstance();
-        whereClause.getWhereHandler().addWhere(new TriplePath(Triple.ANY));
-        AbstractQueryBuilder<?> builder = whereClause.addUnion(sb);
-
-        ElementUnion union = new ElementUnion();
-        ElementPathBlock epb = new ElementPathBlock();
-        union.addElement(epb);
-        epb.addTriple(Triple.ANY);
-
-        Query subQuery = new Query();
-        ElementSubQuery esq = new ElementSubQuery(subQuery);
-        union.addElement(esq);
-        epb = new ElementPathBlock();
-        subQuery.setQuerySelectType();
-        subQuery.addProjectVars(Arrays.asList("x"));
-        subQuery.setQueryPattern(epb);
-        Triple t = Triple.create(NodeFactory.createURI("one"), 
NodeFactory.createURI("two"),
-                NodeFactory.createLiteralString("three"));
-        epb.addTriple(t);
-
-        WhereValidator visitor = new WhereValidator(union);
-        Query result = builder.build();
-        result.getQueryPattern().visit(visitor);
-        assertTrue(visitor.matching);
-
-        assertEquals("uri", result.getPrefixMapping().getNsPrefixURI("pfx"));
-    }
-
-    @ContractTest
-    public void testSetVarsInTriple() {
-        Var v = Var.alloc("v");
-        Node one = NodeFactory.createURI("one");
-        Node two = NodeFactory.createURI("two");
-        Node three = NodeFactory.createURI("three");
-        Node four = NodeFactory.createURI("four");
-
-        WhereClause<?> whereClause = getProducer().newInstance();
-        AbstractQueryBuilder<?> builder = 
whereClause.addWhere(Triple.create(one, two, v));
-
-        TriplePath tp = new TriplePath(Triple.create(one, two, v));
-        ElementPathBlock epb = new ElementPathBlock();
-        epb.addTriple(tp);
-        WhereValidator visitor = new WhereValidator(epb);
-        builder.build().getQueryPattern().visit(visitor);
-        assertTrue(visitor.matching);
-
-        builder.setVar(v, three);
-
-        tp = new TriplePath(Triple.create(one, two, three));
-        epb = new ElementPathBlock();
-        epb.addTriple(tp);
-        visitor = new WhereValidator(epb);
-        builder.build().getQueryPattern().visit(visitor);
-        assertTrue(visitor.matching);
-
-        builder.setVar(v, four);
-
-        tp = new TriplePath(Triple.create(one, two, four));
-        epb = new ElementPathBlock();
-        epb.addTriple(tp);
-        visitor = new WhereValidator(epb);
-        builder.build().getQueryPattern().visit(visitor);
-        assertTrue(visitor.matching);
-
-        builder.setVar(v, null);
-
-        tp = new TriplePath(Triple.create(one, two, v));
-        epb = new ElementPathBlock();
-        epb.addTriple(tp);
-        visitor = new WhereValidator(epb);
-        builder.build().getQueryPattern().visit(visitor);
-        assertTrue(visitor.matching);
-    }
-
-    @ContractTest
-    public void testSetVarsInTriple_Node_Variable() {
-        Node v = NodeFactory.createVariable("v");
-        Node one = NodeFactory.createURI("one");
-        Node two = NodeFactory.createURI("two");
-        Node three = NodeFactory.createURI("three");
-        Node four = NodeFactory.createURI("four");
-
-        WhereClause<?> whereClause = getProducer().newInstance();
-        AbstractQueryBuilder<?> builder = 
whereClause.addWhere(Triple.create(one, two, v));
-
-        TriplePath tp = new TriplePath(Triple.create(one, two, Var.alloc(v)));
-        ElementPathBlock epb = new ElementPathBlock();
-        epb.addTriple(tp);
-        WhereValidator visitor = new WhereValidator(epb);
-        builder.build().getQueryPattern().visit(visitor);
-        assertTrue(visitor.matching);
-
-        builder.setVar(v, three);
-
-        tp = new TriplePath(Triple.create(one, two, three));
-        epb = new ElementPathBlock();
-        epb.addTriple(tp);
-        visitor = new WhereValidator(epb);
-        builder.build().getQueryPattern().visit(visitor);
-        assertTrue(visitor.matching);
-
-        builder.setVar(v, four);
-
-        tp = new TriplePath(Triple.create(one, two, four));
-        epb = new ElementPathBlock();
-        epb.addTriple(tp);
-        visitor = new WhereValidator(epb);
-        builder.build().getQueryPattern().visit(visitor);
-        assertTrue(visitor.matching);
-
-        builder.setVar(v, null);
-
-        tp = new TriplePath(Triple.create(one, two, Var.alloc("v")));
-        epb = new ElementPathBlock();
-        epb.addTriple(tp);
-        visitor = new WhereValidator(epb);
-        builder.build().getQueryPattern().visit(visitor);
-        assertTrue(visitor.matching);
-
-    }
-
-    @ContractTest
-    public void testSetVarsInFilter() {
-        WhereClause<?> whereClause = getProducer().newInstance();
-        AbstractQueryBuilder<?> builder = whereClause.addFilter("?one < ?v");
-
-        ExprVar one = new ExprVar(NodeFactory.createVariable("one"));
-        ExprVar v = new ExprVar(NodeFactory.createVariable("v"));
-        Expr expr = new E_LessThan(one, v);
-        ElementFilter filter = new ElementFilter(expr);
-
-        WhereValidator visitor = new WhereValidator(filter);
-        builder.build().getQueryPattern().visit(visitor);
-        assertTrue(visitor.matching);
-
-        Node literal = NodeFactory.createLiteralByValue(10);
-        builder.setVar(Var.alloc("v"), literal);
-
-        NodeValueInteger lit = new NodeValueInteger(10);
-        expr = new E_LessThan(one, lit);
-        filter = new ElementFilter(expr);
-        builder.build().getQueryPattern().visit(visitor);
-        assertTrue(visitor.matching);
-
-    }
-
-    @ContractTest
-    public void testSetVarsInOptional() {
-        Var v = Var.alloc("v");
-        WhereClause<?> whereClause = getProducer().newInstance();
-        AbstractQueryBuilder<?> builder = whereClause
-                .addOptional(Triple.create(NodeFactory.createURI("one"), 
NodeFactory.createURI("two"), v));
-
-        ElementPathBlock epb = new ElementPathBlock();
-        ElementOptional optional = new ElementOptional(epb);
-        TriplePath tp = new TriplePath(NodeFactory.createURI("one"), new 
P_Link(NodeFactory.createURI("two")), v);
-        epb.addTriple(tp);
-
-        WhereValidator visitor = new WhereValidator(optional);
-        builder.build().getQueryPattern().visit(visitor);
-        assertTrue(visitor.matching);
-
-        builder.setVar(v, NodeFactory.createURI("three"));
-
-        epb = new ElementPathBlock();
-        optional = new ElementOptional(epb);
-        Triple t = Triple.create(NodeFactory.createURI("one"), 
NodeFactory.createURI("two"),
-                NodeFactory.createURI("three"));
-        epb.addTriple(t);
-
-        visitor = new WhereValidator(optional);
-        builder.build().getQueryPattern().visit(visitor);
-        assertTrue(visitor.matching);
-    }
-
-    @ContractTest
-    public void testSetVarsInOptional_Node_Variable() {
-        Node v = NodeFactory.createVariable("v");
-        Node one = NodeFactory.createURI("one");
-        Node two = NodeFactory.createURI("two");
-        Node three = NodeFactory.createURI("three");
-
-        WhereClause<?> whereClause = getProducer().newInstance();
-        AbstractQueryBuilder<?> builder = 
whereClause.addOptional(Triple.create(one, two, v));
-
-        ElementPathBlock epb = new ElementPathBlock();
-        ElementOptional optional = new ElementOptional(epb);
-        TriplePath tp = new TriplePath(Triple.create(one, two, Var.alloc(v)));
-        epb.addTriplePath(tp);
-
-        WhereValidator visitor = new WhereValidator(optional);
-        builder.build().getQueryPattern().visit(visitor);
-        assertTrue(visitor.matching);
-
-        builder.setVar(v, three);
-        epb = new ElementPathBlock();
-        optional = new ElementOptional(epb);
-        tp = new TriplePath(Triple.create(one, two, three));
-        epb.addTriplePath(tp);
-
-        visitor = new WhereValidator(optional);
-        builder.build().getQueryPattern().visit(visitor);
-        assertTrue(visitor.matching);
-
-    }
-
-    @ContractTest
-    public void testSetVarsInSubQuery() {
-        Var v = Var.alloc("v");
-        SelectBuilder sb = new SelectBuilder();
-        sb.addPrefix("pfx", "uri").addWhere("<one>", "<two>", v);
-        WhereClause<?> whereClause = getProducer().newInstance();
-        AbstractQueryBuilder<?> builder = whereClause.addSubQuery(sb);
-
-        Query subQuery = new Query();
-        subQuery.setQuerySelectType();
-        subQuery.setQueryResultStar(true);
-        ElementSubQuery esq = new ElementSubQuery(subQuery);
-        ElementPathBlock epb = new ElementPathBlock();
-        subQuery.setQueryPattern(epb);
-        Triple t = Triple.create(NodeFactory.createURI("one"), 
NodeFactory.createURI("two"),
-                NodeFactory.createVariable("v"));
-        epb.addTriple(t);
-
-        WhereValidator visitor = new WhereValidator(esq);
-        Query result = builder.build();
-        result.getQueryPattern().visit(visitor);
-        assertTrue(visitor.matching);
-
-        builder.setVar(v, NodeFactory.createURI("three"));
-
-        subQuery = new Query();
-        subQuery.setQuerySelectType();
-        subQuery.setQueryResultStar(true);
-        esq = new ElementSubQuery(subQuery);
-        epb = new ElementPathBlock();
-        subQuery.setQueryPattern(epb);
-        t = Triple.create(NodeFactory.createURI("one"), 
NodeFactory.createURI("two"), NodeFactory.createURI("three"));
-        epb.addTriple(t);
-
-        visitor = new WhereValidator(esq);
-        result = builder.build();
-        result.getQueryPattern().visit(visitor);
-        assertTrue(visitor.matching);
-    }
-
-    @ContractTest
-    public void testSetVarsInSubQuery_Node_Variable() {
-        Node v = NodeFactory.createVariable("v");
-        SelectBuilder sb = new SelectBuilder();
-        sb.addPrefix("pfx", "uri").addWhere("<one>", "<two>", v);
-        WhereClause<?> whereClause = getProducer().newInstance();
-        AbstractQueryBuilder<?> builder = whereClause.addSubQuery(sb);
-
-        Query subQuery = new Query();
-        subQuery.setQuerySelectType();
-        subQuery.setQueryResultStar(true);
-        ElementSubQuery esq = new ElementSubQuery(subQuery);
-        ElementPathBlock epb = new ElementPathBlock();
-        subQuery.setQueryPattern(epb);
-        TriplePath tp = new TriplePath(NodeFactory.createURI("one"), new 
P_Link(NodeFactory.createURI("two")),
-                NodeFactory.createVariable("v"));
-        epb.addTriple(tp);
-
-        WhereValidator visitor = new WhereValidator(esq);
-        builder.build().getQueryPattern().visit(visitor);
-        assertTrue(visitor.matching);
-
-        builder.setVar(v, NodeFactory.createURI("three"));
-
-        subQuery = new Query();
-        subQuery.setQuerySelectType();
-        subQuery.setQueryResultStar(true);
-        esq = new ElementSubQuery(subQuery);
-        epb = new ElementPathBlock();
-        subQuery.setQueryPattern(epb);
-        tp = new TriplePath(NodeFactory.createURI("one"), new 
P_Link(NodeFactory.createURI("two")),
-                NodeFactory.createURI("three"));
-        epb.addTriple(tp);
-
-        visitor = new WhereValidator(esq);
-        builder.build().getQueryPattern().visit(visitor);
-        assertTrue(visitor.matching);
-    }
-
-    @ContractTest
-    public void testSetVarsInUnion() {
-        Var v = Var.alloc("v");
-        SelectBuilder sb1 = new SelectBuilder().addPrefix("pfx", 
"uri").addWhere("<one>", "<two>", v);
-        WhereClause<?> whereClause = getProducer().newInstance();
-        whereClause.addUnion(sb1);
-        SelectBuilder sb2 = new SelectBuilder().addWhere("<uno>", "<dos>", 
"<tres>");
-        AbstractQueryBuilder<?> builder = whereClause.addUnion(sb2);
-        Query query = builder.build();
-
-        Node one = NodeFactory.createURI("one");
-        Node two = NodeFactory.createURI("two");
-        Node three = NodeFactory.createURI("three");
-        Node uno = NodeFactory.createURI("uno");
-        Node dos = NodeFactory.createURI("dos");
-        Node tres = NodeFactory.createURI("tres");
-
-        ElementUnion union = new ElementUnion();
-        ElementPathBlock epb = new ElementPathBlock();
-        Triple t = Triple.create(one, two, v);
-        epb.addTriple(t);
-        union.addElement(epb);
-        ElementPathBlock epb2 = new ElementPathBlock();
-        t = Triple.create(uno, dos, tres);
-        epb2.addTriple(t);
-        union.addElement(epb2);
-        WhereValidator visitor = new WhereValidator(union);
-        query.getQueryPattern().visit(visitor);
-        assertTrue(visitor.matching);
-
-        builder.setVar(v, NodeFactory.createURI("three"));
-        query = builder.build();
-
-        union = new ElementUnion();
-        epb = new ElementPathBlock();
-        t = Triple.create(one, two, three);
-        epb.addTriple(t);
-        union.addElement(epb);
-        epb2 = new ElementPathBlock();
-        t = Triple.create(uno, dos, tres);
-        epb2.addTriple(t);
-        union.addElement(epb2);
-        visitor = new WhereValidator(union);
-        query.getQueryPattern().visit(visitor);
-        assertTrue(visitor.matching);
-
-    }
-
-    @ContractTest
-    public void testSetVarsInUnion_Node_Variable() {
-        Node v = NodeFactory.createVariable("v");
-        SelectBuilder sb1 = new SelectBuilder().addPrefix("pfx", 
"uri").addWhere("<one>", "<two>", v);
-        WhereClause<?> whereClause = getProducer().newInstance();
-        whereClause.addUnion(sb1);
-        SelectBuilder sb2 = new SelectBuilder().addWhere("<uno>", "<dos>", 
"<tres>");
-        AbstractQueryBuilder<?> builder = whereClause.addUnion(sb2);
-        Query query = builder.build();
-
-        Node one = NodeFactory.createURI("one");
-        Node two = NodeFactory.createURI("two");
-        Node three = NodeFactory.createURI("three");
-        Node uno = NodeFactory.createURI("uno");
-        Node dos = NodeFactory.createURI("dos");
-        Node tres = NodeFactory.createURI("tres");
-
-        ElementUnion union = new ElementUnion();
-        ElementPathBlock epb = new ElementPathBlock();
-        Triple t = Triple.create(one, two, Var.alloc(v));
-        epb.addTriple(t);
-        union.addElement(epb);
-        ElementPathBlock epb2 = new ElementPathBlock();
-        t = Triple.create(uno, dos, tres);
-        epb2.addTriple(t);
-        union.addElement(epb2);
-        WhereValidator visitor = new WhereValidator(union);
-        query.getQueryPattern().visit(visitor);
-        assertTrue(visitor.matching);
-
-        builder.setVar(v, NodeFactory.createURI("three"));
-        query = builder.build();
-
-        union = new ElementUnion();
-        epb = new ElementPathBlock();
-        t = Triple.create(one, two, three);
-        epb.addTriple(t);
-        union.addElement(epb);
-        epb2 = new ElementPathBlock();
-        t = Triple.create(uno, dos, tres);
-        epb2.addTriple(t);
-        union.addElement(epb2);
-        visitor = new WhereValidator(union);
-        query.getQueryPattern().visit(visitor);
-        assertTrue(visitor.matching);
-
-    }
-
-    @ContractTest
-    public void testBindStringVar() {
-        Var v = Var.alloc("foo");
-        WhereClause<?> whereClause = getProducer().newInstance();
-        AbstractQueryBuilder<?> builder = whereClause.addBind("rand()", v);
-        Query query = builder.build();
-
-        ElementBind bind = new ElementBind(v, new E_Random());
-        WhereValidator visitor = new WhereValidator(bind);
-        query.getQueryPattern().visit(visitor);
-        assertTrue(visitor.matching);
-
-        Node three = NodeFactory.createURI("three");
-        builder.setVar(v, three);
-        query = builder.build();
-
-        visitor = new WhereValidator(new ElementTriplesBlock());
-        query.getQueryPattern().visit(visitor);
-        assertTrue(visitor.matching);
-
-    }
-
-    @ContractTest
-    public void testBindStringVar_Node_Variable() {
-        Node v = NodeFactory.createVariable("foo");
-        WhereClause<?> whereClause = getProducer().newInstance();
-        AbstractQueryBuilder<?> builder = whereClause.addBind("rand()", v);
-        Query query = builder.build();
-
-        ElementBind bind = new ElementBind(Var.alloc(v), new E_Random());
-        WhereValidator visitor = new WhereValidator(bind);
-        query.getQueryPattern().visit(visitor);
-        assertTrue(visitor.matching);
-
-        Node three = NodeFactory.createURI("three");
-        builder.setVar(v, three);
-        query = builder.build();
-
-        visitor = new WhereValidator(new ElementTriplesBlock());
-        query.getQueryPattern().visit(visitor);
-        assertTrue(visitor.matching);
-
-    }
-
-    @ContractTest
-    public void testBindExprVar() {
-        Var v = Var.alloc("foo");
-        WhereClause<?> whereClause = getProducer().newInstance();
-        AbstractQueryBuilder<?> builder = whereClause.addBind(new E_Random(), 
v);
-        Query query = builder.build();
-
-        WhereValidator visitor = new WhereValidator(new 
ElementBind(Var.alloc("foo"), new E_Random()));
-        query.getQueryPattern().visit(visitor);
-        assertTrue(visitor.matching);
-
-        builder.setVar(v, NodeFactory.createURI("three"));
-        query = builder.build();
-
-        visitor = new WhereValidator(new ElementTriplesBlock());
-        query.getQueryPattern().visit(visitor);
-        assertTrue(visitor.matching);
-
-    }
-
-    @ContractTest
-    public void testBindExprVar_Node_Variable() {
-        Node v = NodeFactory.createVariable("foo");
-        WhereClause<?> whereClause = getProducer().newInstance();
-        AbstractQueryBuilder<?> builder = whereClause.addBind(new E_Random(), 
v);
-        Query query = builder.build();
-
-        WhereValidator visitor = new WhereValidator(new 
ElementBind(Var.alloc("foo"), new E_Random()));
-        query.getQueryPattern().visit(visitor);
-        assertTrue(visitor.matching);
-
-        builder.setVar(v, NodeFactory.createURI("three"));
-        query = builder.build();
-
-        visitor = new WhereValidator(new ElementTriplesBlock());
-        query.getQueryPattern().visit(visitor);
-        assertTrue(visitor.matching);
-
-    }
-
-    @SuppressWarnings("deprecation")
-    @ContractTest
-    public void testList() {
-        WhereClause<?> whereClause = getProducer().newInstance();
-        AbstractQueryBuilder<?> builder = 
whereClause.addWhere(whereClause.list("<one>", "?two", "'three'"), "<foo>",
-                "<bar>");
-
-        Query query = builder.build();
-
-        Node one = NodeFactory.createURI("one");
-        Var two = Var.alloc("two");
-        Node three = NodeFactory.createLiteralString("three");
-        Node foo = NodeFactory.createURI("foo");
-        Node bar = NodeFactory.createURI("bar");
-
-        ElementPathBlock epb = new ElementPathBlock();
-        Node firstObject = NodeFactory.createBlankNode();
-        Node secondObject = NodeFactory.createBlankNode();
-        Node thirdObject = NodeFactory.createBlankNode();
-
-        epb.addTriplePath(new TriplePath(Triple.create(firstObject, 
RDF.first.asNode(), one)));
-        epb.addTriplePath(new TriplePath(Triple.create(firstObject, 
RDF.rest.asNode(), secondObject)));
-        epb.addTriplePath(new TriplePath(Triple.create(secondObject, 
RDF.first.asNode(), two)));
-        epb.addTriplePath(new TriplePath(Triple.create(secondObject, 
RDF.rest.asNode(), thirdObject)));
-        epb.addTriplePath(new TriplePath(Triple.create(thirdObject, 
RDF.first.asNode(), three)));
-        epb.addTriplePath(new TriplePath(Triple.create(thirdObject, 
RDF.rest.asNode(), RDF.nil.asNode())));
-        epb.addTriplePath(new TriplePath(Triple.create(firstObject, foo, 
bar)));
-
-        WhereValidator visitor = new WhereValidator(epb);
-        query.getQueryPattern().visit(visitor);
-        assertTrue(visitor.matching);
-
-    }
-
-    @ContractTest
-    public void testAddMinus() {
-        SelectBuilder sb = new SelectBuilder();
-        sb.addPrefix("pfx", "uri").addVar("?x").addWhere("<one>", "<two>", 
"three");
-        WhereClause<?> whereClause = getProducer().newInstance();
-        AbstractQueryBuilder<?> builder = whereClause.addMinus(sb);
-
-        Query query = builder.build();
-
-        ElementPathBlock epb = new ElementPathBlock();
-        ElementMinus minus = new ElementMinus(epb);
-        epb.addTriplePath(new 
TriplePath(Triple.create(NodeFactory.createURI("one"), 
NodeFactory.createURI("two"),
-                NodeFactory.createLiteralString("three"))));
-        WhereValidator visitor = new WhereValidator(minus);
-        query.getQueryPattern().visit(visitor);
-        assertTrue(visitor.matching);
-    }
-
-    @ContractTest
-    public void testAddGraphAbstractQueryBuilder() {
-        WhereClause<?> whereClause = getProducer().newInstance();
-        TriplePath tp = new 
TriplePath(Triple.create(NodeFactory.createURI("one"), 
NodeFactory.createURI("two"), NodeFactory.createURI("three")));
-
-        TestAbstractQueryBuilder abstractQueryBuilder = new 
TestAbstractQueryBuilder();
-        abstractQueryBuilder.getHandlerBlock().getWhereHandler().addWhere(tp);
-        AbstractQueryBuilder<?> builder = whereClause.addGraph( "<g>", 
abstractQueryBuilder);
-        
-        ElementPathBlock epb = new ElementPathBlock();
-        ElementNamedGraph eng = new 
ElementNamedGraph(NodeFactory.createURI("g"), epb);
-        
-        epb.addTriplePath(tp);
-        WhereValidator visitor = new WhereValidator(eng);
-        builder.build().getQueryPattern().visit(visitor);
-        assertTrue(visitor.matching);
-    }
-    
-    @ContractTest
-    public void testAddGraphFrontsTriple() {
-        final Node s = NodeFactory.createURI("s");
-        final Node p = NodeFactory.createURI("p");
-        final Node o = NodeFactory.createURI("o");
-
-        FrontsTriple ft = new FrontsTriple() {
-
-            @Override
-            public Triple asTriple() {
-                return Triple.create(s, p, o);
-            }
-        };
-
-        WhereClause<?> whereClause = getProducer().newInstance();
-        AbstractQueryBuilder<?> builder = whereClause.addGraph("<g>", ft);
-        Query query = builder.build();
-
-        ElementPathBlock epb = new ElementPathBlock();
-        ElementNamedGraph eng = new 
ElementNamedGraph(NodeFactory.createURI("g"), epb);
-        epb.addTriplePath(new TriplePath(Triple.create(s, p, o)));
-
-        WhereValidator visitor = new WhereValidator(eng);
-        query.getQueryPattern().visit(visitor);
-        assertTrue(visitor.matching);
-    }
-
-    public void addGraph_GSPO() {
-        final Node s = NodeFactory.createURI("s");
-        final Node p = NodeFactory.createURI("p");
-        final Node o = NodeFactory.createURI("o");
-
-        WhereClause<?> whereClause = getProducer().newInstance();
-        AbstractQueryBuilder<?> builder = whereClause.addGraph("<g>", s, p, o);
-        Query query = builder.build();
-
-        ElementPathBlock epb = new ElementPathBlock();
-        ElementNamedGraph eng = new 
ElementNamedGraph(NodeFactory.createURI("g"), epb);
-        epb.addTriplePath(new TriplePath(Triple.create(s, p, o)));
-
-        WhereValidator visitor = new WhereValidator(eng);
-        query.getQueryPattern().visit(visitor);
-        assertTrue(visitor.matching);
-    }
-
-    @ContractTest
-    public void testAddGraphTriple() {
-        final Node s = NodeFactory.createURI("s");
-        final Node p = NodeFactory.createURI("p");
-        final Node o = NodeFactory.createURI("o");
-
-        WhereClause<?> whereClause = getProducer().newInstance();
-        AbstractQueryBuilder<?> builder = whereClause.addGraph("<g>", 
Triple.create(s, p, o));
-        Query query = builder.build();
-
-        ElementPathBlock epb = new ElementPathBlock();
-        ElementNamedGraph eng = new 
ElementNamedGraph(NodeFactory.createURI("g"), epb);
-        epb.addTriplePath(new TriplePath(Triple.create(s, p, o)));
-
-        WhereValidator visitor = new WhereValidator(eng);
-        query.getQueryPattern().visit(visitor);
-        assertTrue(visitor.matching);
-    }
-
-    @ContractTest
-    public void testAddGraphTriplePath() {
-        final Node s = NodeFactory.createURI("s");
-        final Node p = NodeFactory.createURI("p");
-        final Node o = NodeFactory.createURI("o");
-        TriplePath tp = new TriplePath(Triple.create(s, p, o));
-
-        WhereClause<?> whereClause = getProducer().newInstance();
-        AbstractQueryBuilder<?> builder = whereClause.addGraph("<g>", tp);
-        Query query = builder.build();
-
-        ElementPathBlock epb = new ElementPathBlock();
-        ElementNamedGraph eng = new 
ElementNamedGraph(NodeFactory.createURI("g"), epb);
-        epb.addTriplePath(new TriplePath(Triple.create(s, p, o)));
-
-        WhereValidator visitor = new WhereValidator(eng);
-        query.getQueryPattern().visit(visitor);
-        assertTrue(visitor.matching);
-    }
-    
-    @ContractTest
-    public void testAddGraphTriplePathCollection() {
-        WhereClause<?> whereClause = getProducer().newInstance();
-        PrefixMapping pmap = new PrefixMappingImpl();
-        pmap.setNsPrefix("ts", "urn:test:");
-        Path path = PathParser.parse("ts:two/ts:dos", pmap);
-        TriplePath first = new TriplePath(NodeFactory.createURI("one"), path, 
NodeFactory.createURI("three"));
-        TriplePath second = new TriplePath(NodeFactory.createURI("for"), path, 
NodeFactory.createURI("six"));
-
-        AbstractQueryBuilder<?> builder = whereClause
-                .addGraph("<g>", List.of(first, second));
-
-        ElementPathBlock epb = new ElementPathBlock();
-        ElementNamedGraph eng = new 
ElementNamedGraph(NodeFactory.createURI("g"), epb);
-        epb.addTriplePath(first);
-        epb.addTriplePath(second);
-
-        WhereValidator visitor = new WhereValidator(eng);
-        builder.build().getQueryPattern().visit(visitor);
-        assertTrue(visitor.matching);
-    }
-
-    @ContractTest
-    public void testAddWhereValueVar_var() {
-
-        WhereClause<?> whereClause = getProducer().newInstance();
-        AbstractQueryBuilder<?> builder = whereClause.addWhereValueVar("?v");
-
-        Query query = builder.build();
-
-        ElementData edat = new ElementData();
-        edat.add(Var.alloc("v"));
-
-        WhereValidator visitor = new WhereValidator(edat);
-        query.getQueryPattern().visit(visitor);
-        assertTrue(visitor.matching);
-    }
-
-    @ContractTest
-    public void testAddWhereValueVar_var_values() {
-
-        WhereClause<?> whereClause = getProducer().newInstance();
-        AbstractQueryBuilder<?> builder = whereClause.addWhereValueVar("?v", 
"<one>");
-
-        Query query = builder.build();
-
-        final Var v = Var.alloc("v");
-        Binding binding = BindingFactory.binding(v, 
NodeFactory.createURI("one"));
-        ElementData edat = new ElementData();
-        edat.add(v);
-        edat.add(binding);
-        WhereValidator visitor = new WhereValidator(edat);
-        query.getQueryPattern().visit(visitor);
-        assertTrue(visitor.matching);
-    }
-
-    @ContractTest
-    public void testAddWhereValueVars() {
-        final Var v = Var.alloc("v");
-        Map<Object, List<?>> map = new LinkedHashMap<Object, List<?>>();
-
-        // Order matters for the test
-        map.put(Var.alloc("x"), Arrays.asList("three", "four"));
-        map.put(Var.alloc("v"), Arrays.asList("<one>", "<two>"));
-
-        WhereClause<?> whereClause = getProducer().newInstance();
-        AbstractQueryBuilder<?> builder = whereClause.addWhereValueVars(map);
-
-        Query query = builder.build();
-
-        Var x = Var.alloc("x");
-        ElementData edat = new ElementData();
-        edat.add(x);
-        edat.add(v);
-        setupBindings(edat, x, v);
-
-        WhereValidator visitor = new WhereValidator(edat);
-        query.getQueryPattern().visit(visitor);
-        assertTrue(visitor.matching);
-    }
-
-    private static void setupBindings(ElementData edat, Var x, Var v) {
-        Binding binding1 = BindingFactory.binding(v, 
NodeFactory.createURI("one"), x,
-                NodeFactory.createLiteralString("three"));
-        edat.add(binding1);
-        Binding binding2 = BindingFactory.binding(v, 
NodeFactory.createURI("two"), x,
-                NodeFactory.createLiteralString("four"));
-        edat.add(binding2);
-    }
-
-    @ContractTest
-    public void testAddWhereValueVars_InSubQuery() {
-        final Var v = Var.alloc("v");
-        Map<Object, List<?>> map = new LinkedHashMap<Object, List<?>>();
-
-        // Order matters for the test
-        map.put("?x", Arrays.asList("three", "four"));
-        map.put(Var.alloc("v"), Arrays.asList("<one>", "<two>"));
-
-        WhereClause<?> whereClause = getProducer().newInstance();
-        WhereClause<?> whereClause2 = getProducer().newInstance();
-
-        AbstractQueryBuilder<?> builder = whereClause.addWhereValueVars(map);
-        builder = whereClause2.addSubQuery(builder);
-
-        Query query = builder.build();
-
-        Var x = Var.alloc("x");
-        ElementData edat = new ElementData();
-        edat.add(x);
-        edat.add(v);
-        setupBindings(edat, x, v);
-
-        WhereValidator visitor = new WhereValidator(edat);
-        query.getQueryPattern().visit(visitor);
-        assertTrue(visitor.matching);
-    }
-
-    @ContractTest
-    public void testAddWhereValueVars_Node_Variable() {
-
-        Map<Object, List<?>> map = new LinkedHashMap<Object, List<?>>();
-
-        // Order matters for the test
-        map.put("?x", Arrays.asList("three", "four"));
-        map.put(NodeFactory.createVariable("v"), Arrays.asList("<one>", 
"<two>"));
-
-        WhereClause<?> whereClause = getProducer().newInstance();
-        AbstractQueryBuilder<?> builder = whereClause.addWhereValueVars(map);
-
-        Query query = builder.build();
-
-        Var x = Var.alloc("x");
-        Var v = Var.alloc("v");
-        ElementData edat = new ElementData();
-        edat.add(x);
-        edat.add(v);
-        setupBindings(edat, x, v);
-
-        WhereValidator visitor = new WhereValidator(edat);
-        query.getQueryPattern().visit(visitor);
-        assertTrue(visitor.matching);
-    }
-
-    @ContractTest
-    public void testAddWhereValueRow_array() {
-        final Var v = Var.alloc("v");
-        final Var x = Var.alloc("x");
-
-        WhereClause<?> whereClause = getProducer().newInstance();
-        whereClause = (WhereClause<?>) whereClause.addWhereValueVar(v);
-        whereClause = (WhereClause<?>) whereClause.addWhereValueVar(x);
-        whereClause = (WhereClause<?>) whereClause.addWhereValueRow("<one>", 
"three");
-        AbstractQueryBuilder<?> builder = 
whereClause.addWhereValueRow("<two>", "four");
-
-        Query query = builder.build();
-
-        ElementData edat = new ElementData();
-        edat.add(v);
-        edat.add(x);
-        setupBindings(edat, x, v);
-
-        WhereValidator visitor = new WhereValidator(edat);
-        query.getQueryPattern().visit(visitor);
-        assertTrue(visitor.matching);
-    }
-
-    @ContractTest
-    public void testAddWhereValueRow_array_Node_Variable() {
-
-        WhereClause<?> whereClause = getProducer().newInstance();
-        whereClause = (WhereClause<?>) 
whereClause.addWhereValueVar(NodeFactory.createVariable("v"));
-        whereClause = (WhereClause<?>) 
whereClause.addWhereValueVar(NodeFactory.createVariable("x"));
-        whereClause = (WhereClause<?>) whereClause.addWhereValueRow("<one>", 
"three");
-        AbstractQueryBuilder<?> builder = 
whereClause.addWhereValueRow("<two>", "four");
-
-        Query query = builder.build();
-
-        ElementData edat = new ElementData();
-        final Var v = Var.alloc("v");
-        final Var x = Var.alloc("x");
-        edat.add(v);
-        edat.add(x);
-        setupBindings(edat, x, v);
-
-        WhereValidator visitor = new WhereValidator(edat);
-        query.getQueryPattern().visit(visitor);
-        assertTrue(visitor.matching);
-    }
-
-    @ContractTest
-    public void testAddWhereValueRow_collection() {
-        final Var v = Var.alloc("v");
-        final Var x = Var.alloc("x");
-
-        WhereClause<?> whereClause = getProducer().newInstance();
-        whereClause = (WhereClause<?>) whereClause.addWhereValueVar(v);
-        whereClause = (WhereClause<?>) whereClause.addWhereValueVar(x);
-        whereClause = (WhereClause<?>) 
whereClause.addWhereValueRow(Arrays.asList("<one>", "three"));
-        AbstractQueryBuilder<?> builder = 
whereClause.addWhereValueRow(Arrays.asList("<two>", "four"));
-
-        Query query = builder.build();
-
-        ElementData edat = new ElementData();
-        edat.add(v);
-        edat.add(x);
-        setupBindings(edat, x, v);
-
-        WhereValidator visitor = new WhereValidator(edat);
-        query.getQueryPattern().visit(visitor);
-        assertTrue(visitor.matching);
-    }
-
-    @ContractTest
-    public void testAddWhereValueRow_collection_Node_Variable() {
-        WhereClause<?> whereClause = getProducer().newInstance();
-        whereClause = (WhereClause<?>) 
whereClause.addWhereValueVar(NodeFactory.createVariable("v"));
-        whereClause = (WhereClause<?>) 
whereClause.addWhereValueVar(NodeFactory.createVariable("x"));
-        whereClause = (WhereClause<?>) 
whereClause.addWhereValueRow(Arrays.asList("<one>", "three"));
-        AbstractQueryBuilder<?> builder = 
whereClause.addWhereValueRow(Arrays.asList("<two>", "four"));
-
-        Query query = builder.build();
-
-        ElementData edat = new ElementData();
-        final Var v = Var.alloc("v");
-        final Var x = Var.alloc("x");
-
-        edat.add(v);
-        edat.add(x);
-        setupBindings(edat, x, v);
-
-        WhereValidator visitor = new WhereValidator(edat);
-        query.getQueryPattern().visit(visitor);
-        assertTrue(visitor.matching);
-    }
-
-    @ContractTest
-    public void testSetVarsInWhereValues() {
-        Var v = Var.alloc("v");
-        Node value = NodeFactory.createLiteralByValue(10);
-        Map<Var, Node> values = new HashMap<>();
-        values.put(v, value);
-
-        WhereClause<?> whereClause = getProducer().newInstance();
-        AbstractQueryBuilder<?> builder = whereClause.addWhereValueVar("?x", 
"<one>", "?v");
-
-        builder.setVar(v, value);
-
-        Query query = builder.build();
-
-        ElementData edat = new ElementData();
-        Var x = Var.alloc("x");
-        edat.add(x);
-
-        Binding binding1 = BindingFactory.binding(x, 
NodeFactory.createURI("one"));
-        edat.add(binding1);
-        Binding binding2 = BindingFactory.binding(x, value);
-        edat.add(binding2);
-
-        WhereValidator visitor = new WhereValidator(edat);
-        query.getQueryPattern().visit(visitor);
-        assertTrue(visitor.matching);
-    }
-
-    @ContractTest
-    public void testSetVarsInWhereValues_NodeVariable() {
-        Node v = NodeFactory.createVariable("v");
-        Node value = NodeFactory.createLiteralByValue(10);
-
-        WhereClause<?> whereClause = getProducer().newInstance();
-        AbstractQueryBuilder<?> builder = whereClause.addWhereValueVar("?x", 
"<one>", "?v");
-
-        builder.setVar(v, value);
-
-        Query query = builder.build();
-
-        ElementData edat = new ElementData();
-        Var x = Var.alloc("x");
-        edat.add(x);
-
-        Binding binding1 = BindingFactory.binding(x, 
NodeFactory.createURI("one"));
-        edat.add(binding1);
-        Binding binding2 = BindingFactory.binding(x, value);
-        edat.add(binding2);
-
-        WhereValidator visitor = new WhereValidator(edat);
-        query.getQueryPattern().visit(visitor);
-        assertTrue(visitor.matching);
-    }
-
-    @ContractTest
-    public void testDataQuery() {
-        // test that the getVars getMap and clear methods work.
-        Object o = "?x";
-
-        WhereClause<?> whereClause = getProducer().newInstance();
-        whereClause = (WhereClause<?>) whereClause.addWhereValueVar(o);
-        whereClause = (WhereClause<?>) whereClause.addWhereValueVar("?y");
-        whereClause = (WhereClause<?>) whereClause.addWhereValueRow("foo", 
"bar");
-        whereClause = (WhereClause<?>) whereClause.addWhereValueRow("fu", 
null);
-
-        assertFalse(whereClause.getWhereValuesVars().isEmpty());
-        List<Var> lst = whereClause.getWhereValuesVars();
-        assertEquals(2, lst.size());
-        assertEquals(Var.alloc("x"), lst.get(0));
-        assertEquals(Var.alloc("y"), lst.get(1));
-
-        Map<Var, List<Node>> map = whereClause.getWhereValuesMap();
-        assertEquals(2, map.keySet().size());
-        List<Node> nodes = map.get(Var.alloc("x"));
-        assertEquals(2, nodes.size());
-        assertEquals(NodeFactory.createLiteralString("foo"), nodes.get(0));
-        assertEquals(NodeFactory.createLiteralString("fu"), nodes.get(1));
-
-        nodes = map.get(Var.alloc("y"));
-        assertEquals(2, nodes.size());
-        assertEquals(NodeFactory.createLiteralString("bar"), nodes.get(0));
-        assertNull(nodes.get(1));
-
-        whereClause.clearWhereValues();
-
-        assertTrue(whereClause.getWhereValuesVars().isEmpty());
-        assertTrue(whereClause.getWhereValuesMap().isEmpty());
-
-    }
-
-}

Reply via email to