You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rya.apache.org by ca...@apache.org on 2017/08/25 16:44:54 UTC
[5/5] incubator-rya git commit: RYA-332 rename integration tests.
Closes #212.
RYA-332 rename integration tests. Closes #212.
Some integration tests were being ignored
since the class names ended with
"IntegrationTest" instead of "IT"
Project: http://git-wip-us.apache.org/repos/asf/incubator-rya/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-rya/commit/9c12630b
Tree: http://git-wip-us.apache.org/repos/asf/incubator-rya/tree/9c12630b
Diff: http://git-wip-us.apache.org/repos/asf/incubator-rya/diff/9c12630b
Branch: refs/heads/master
Commit: 9c12630bb41ddcd5756b224fe6f0aeba0455fd6a
Parents: e573896
Author: isper3at <sm...@gmail.com>
Authored: Tue Aug 22 15:28:18 2017 -0400
Committer: Caleb Meier <ca...@parsons.com>
Committed: Fri Aug 25 09:44:18 2017 -0700
----------------------------------------------------------------------
.../pcj/matching/PCJOptimizerUtilities.java | 25 +-
.../external/AccumuloConstantPcjIT.java | 414 +++++
.../AccumuloConstantPcjIntegrationTest.java | 414 -----
.../rya/indexing/external/AccumuloPcjIT.java | 1440 ++++++++++++++++++
.../external/AccumuloPcjIntegrationTest.java | 1440 ------------------
.../indexing/external/PCJOptionalTestIT.java | 2 +-
.../external/PrecompJoinOptimizerIT.java | 505 ++++++
.../PrecompJoinOptimizerIntegrationTest.java | 505 ------
.../pcj/storage/accumulo/PcjTablesIT.java | 573 +++++++
.../accumulo/PcjTablesIntegrationTest.java | 573 -------
.../rya/camel/cbsail/CbSailIntegrationTest.java | 117 --
11 files changed, 2949 insertions(+), 3059 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/9c12630b/extras/indexing/src/main/java/org/apache/rya/indexing/pcj/matching/PCJOptimizerUtilities.java
----------------------------------------------------------------------
diff --git a/extras/indexing/src/main/java/org/apache/rya/indexing/pcj/matching/PCJOptimizerUtilities.java b/extras/indexing/src/main/java/org/apache/rya/indexing/pcj/matching/PCJOptimizerUtilities.java
index 909d932..1ad03b6 100644
--- a/extras/indexing/src/main/java/org/apache/rya/indexing/pcj/matching/PCJOptimizerUtilities.java
+++ b/extras/indexing/src/main/java/org/apache/rya/indexing/pcj/matching/PCJOptimizerUtilities.java
@@ -291,15 +291,22 @@ public class PCJOptimizerUtilities {
}
@Override
- public void meet(Union union) {
- if (Sets.intersection(union.getRightArg().getBindingNames(), filterVars).size() > 0) {
- relocate(filter, union.getRightArg());
- } else if (Sets.intersection(union.getLeftArg().getBindingNames(), filterVars).size() > 0) {
- Filter clone = new Filter(filter.getArg(), filter
- .getCondition().clone());
- relocate(clone, union.getLeftArg());
- }
- }
+ public void meet(Union union) {
+ boolean filterMoved = false;
+ if (Sets.intersection(union.getRightArg().getBindingNames(), filterVars).size() > 0) {
+ relocate(filter, union.getRightArg());
+ filterMoved = true;
+ }
+
+ if (Sets.intersection(union.getLeftArg().getBindingNames(), filterVars).size() > 0) {
+ if (filterMoved) {
+ Filter clone = new Filter(filter.getArg(), filter.getCondition().clone());
+ relocate(clone, union.getLeftArg());
+ } else {
+ relocate(filter, union.getLeftArg());
+ }
+ }
+ }
@Override
public void meet(Difference node) {
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/9c12630b/extras/indexing/src/test/java/org/apache/rya/indexing/external/AccumuloConstantPcjIT.java
----------------------------------------------------------------------
diff --git a/extras/indexing/src/test/java/org/apache/rya/indexing/external/AccumuloConstantPcjIT.java b/extras/indexing/src/test/java/org/apache/rya/indexing/external/AccumuloConstantPcjIT.java
new file mode 100644
index 0000000..8c55e98
--- /dev/null
+++ b/extras/indexing/src/test/java/org/apache/rya/indexing/external/AccumuloConstantPcjIT.java
@@ -0,0 +1,414 @@
+package org.apache.rya.indexing.external;
+
+import java.net.UnknownHostException;
+
+/*
+ * 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.
+ */
+
+import java.util.List;
+
+import org.apache.accumulo.core.client.AccumuloException;
+import org.apache.accumulo.core.client.AccumuloSecurityException;
+import org.apache.accumulo.core.client.Connector;
+import org.apache.accumulo.core.client.TableExistsException;
+import org.apache.accumulo.core.client.TableNotFoundException;
+import org.apache.accumulo.core.client.mock.MockInstance;
+import org.apache.accumulo.core.client.security.tokens.PasswordToken;
+import org.apache.rya.indexing.pcj.storage.PcjException;
+import org.apache.rya.indexing.pcj.storage.accumulo.PcjVarOrderFactory;
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.openrdf.model.URI;
+import org.openrdf.model.impl.LiteralImpl;
+import org.openrdf.model.impl.URIImpl;
+import org.openrdf.model.vocabulary.RDF;
+import org.openrdf.model.vocabulary.RDFS;
+import org.openrdf.query.BindingSet;
+import org.openrdf.query.MalformedQueryException;
+import org.openrdf.query.QueryEvaluationException;
+import org.openrdf.query.QueryLanguage;
+import org.openrdf.query.QueryResultHandlerException;
+import org.openrdf.query.TupleQueryResultHandler;
+import org.openrdf.query.TupleQueryResultHandlerException;
+import org.openrdf.repository.RepositoryException;
+import org.openrdf.repository.sail.SailRepository;
+import org.openrdf.repository.sail.SailRepositoryConnection;
+import org.openrdf.sail.SailException;
+
+import com.google.common.base.Optional;
+
+import org.apache.rya.api.persist.RyaDAOException;
+import org.apache.rya.rdftriplestore.inference.InferenceEngineException;
+
+public class AccumuloConstantPcjIT {
+
+ private SailRepositoryConnection conn, pcjConn;
+ private SailRepository repo, pcjRepo;
+ private Connector accCon;
+ String prefix = "table_";
+ String tablename = "table_INDEX_";
+ URI obj, obj2, subclass, subclass2, talksTo;
+
+ @Before
+ public void init() throws RepositoryException,
+ TupleQueryResultHandlerException, QueryEvaluationException,
+ MalformedQueryException, AccumuloException,
+ AccumuloSecurityException, TableExistsException,
+ TableNotFoundException, RyaDAOException, InferenceEngineException,
+ NumberFormatException, UnknownHostException, SailException {
+
+ repo = PcjIntegrationTestingUtil.getNonPcjRepo(prefix, "instance");
+ conn = repo.getConnection();
+
+ pcjRepo = PcjIntegrationTestingUtil.getPcjRepo(prefix, "instance");
+ pcjConn = pcjRepo.getConnection();
+
+ final URI sub = new URIImpl("uri:entity");
+ subclass = new URIImpl("uri:class");
+ obj = new URIImpl("uri:obj");
+ talksTo = new URIImpl("uri:talksTo");
+
+ conn.add(sub, RDF.TYPE, subclass);
+ conn.add(sub, RDFS.LABEL, new LiteralImpl("label"));
+ conn.add(sub, talksTo, obj);
+
+ final URI sub2 = new URIImpl("uri:entity2");
+ subclass2 = new URIImpl("uri:class2");
+ obj2 = new URIImpl("uri:obj2");
+
+ conn.add(sub2, RDF.TYPE, subclass2);
+ conn.add(sub2, RDFS.LABEL, new LiteralImpl("label2"));
+ conn.add(sub2, talksTo, obj2);
+
+ accCon = new MockInstance("instance").getConnector("root",new PasswordToken(""));
+
+ }
+
+ @After
+ public void close() throws RepositoryException, AccumuloException,
+ AccumuloSecurityException, TableNotFoundException {
+ PcjIntegrationTestingUtil.closeAndShutdown(conn, repo);
+ PcjIntegrationTestingUtil.closeAndShutdown(pcjConn, pcjRepo);
+ PcjIntegrationTestingUtil.deleteCoreRyaTables(accCon, prefix);
+ PcjIntegrationTestingUtil.deleteIndexTables(accCon, 2, prefix);
+
+
+ }
+
+ @Test
+ public void testEvaluateTwoIndexVarInstantiate1() throws PcjException,
+ RepositoryException, AccumuloException, AccumuloSecurityException,
+ TableNotFoundException, TableExistsException,
+ MalformedQueryException, SailException, QueryEvaluationException,
+ TupleQueryResultHandlerException {
+
+ final URI superclass = new URIImpl("uri:superclass");
+ final URI superclass2 = new URIImpl("uri:superclass2");
+
+ conn.add(subclass, RDF.TYPE, superclass);
+ conn.add(subclass2, RDF.TYPE, superclass2);
+ conn.add(obj, RDFS.LABEL, new LiteralImpl("label"));
+ conn.add(obj2, RDFS.LABEL, new LiteralImpl("label2"));
+
+ conn.add(obj, RDFS.LABEL, new LiteralImpl("label"));
+ conn.add(obj2, RDFS.LABEL, new LiteralImpl("label2"));
+
+ final String indexSparqlString = ""//
+ + "SELECT ?dog ?pig ?duck " //
+ + "{" //
+ + " ?pig a ?dog . "//
+ + " ?pig <http://www.w3.org/2000/01/rdf-schema#label> ?duck "//
+ + "}";//
+
+ final String indexSparqlString2 = ""//
+ + "SELECT ?o ?f ?e ?c ?l " //
+ + "{" //
+ + " ?e <uri:talksTo> ?o . "//
+ + " ?o <http://www.w3.org/2000/01/rdf-schema#label> ?l. "//
+ + " ?c a ?f . " //
+ + "}";//
+
+ final String queryString = ""//
+ + "SELECT ?c ?l ?f ?o " //
+ + "{" //
+ + " <uri:entity> a ?c . "//
+ + " <uri:entity> <http://www.w3.org/2000/01/rdf-schema#label> ?l. "//
+ + " <uri:entity> <uri:talksTo> ?o . "//
+ + " ?o <http://www.w3.org/2000/01/rdf-schema#label> ?l. "//
+ + " ?c a ?f . " //
+ + "}";//
+
+ PcjIntegrationTestingUtil.createAndPopulatePcj(conn, accCon, tablename + 1,
+ indexSparqlString, new String[] { "dog", "pig", "duck" },
+ Optional.<PcjVarOrderFactory> absent());
+ PcjIntegrationTestingUtil.createAndPopulatePcj(conn, accCon, tablename + 2,
+ indexSparqlString2, new String[] { "o", "f", "e", "c", "l" },
+ Optional.<PcjVarOrderFactory> absent());
+
+ final CountingResultHandler crh1 = new CountingResultHandler();
+ final CountingResultHandler crh2 = new CountingResultHandler();
+
+ conn.prepareTupleQuery(QueryLanguage.SPARQL, queryString)
+ .evaluate(crh1);
+ PcjIntegrationTestingUtil.deleteCoreRyaTables(accCon, prefix);
+ pcjConn.prepareTupleQuery(QueryLanguage.SPARQL, queryString).evaluate(crh2);
+
+ Assert.assertEquals(crh1.getCount(), crh2.getCount());
+
+ }
+
+ @Test
+ public void testEvaluateThreeIndexVarInstantiate() throws PcjException,
+ RepositoryException, AccumuloException, AccumuloSecurityException,
+ TableNotFoundException, TableExistsException,
+ MalformedQueryException, SailException, QueryEvaluationException,
+ TupleQueryResultHandlerException {
+
+ final URI superclass = new URIImpl("uri:superclass");
+ final URI superclass2 = new URIImpl("uri:superclass2");
+
+ final URI sub = new URIImpl("uri:entity");
+ subclass = new URIImpl("uri:class");
+ obj = new URIImpl("uri:obj");
+ talksTo = new URIImpl("uri:talksTo");
+
+ final URI howlsAt = new URIImpl("uri:howlsAt");
+ final URI subType = new URIImpl("uri:subType");
+
+ conn.add(subclass, RDF.TYPE, superclass);
+ conn.add(subclass2, RDF.TYPE, superclass2);
+ conn.add(obj, RDFS.LABEL, new LiteralImpl("label"));
+ conn.add(obj2, RDFS.LABEL, new LiteralImpl("label2"));
+ conn.add(sub, howlsAt, superclass);
+ conn.add(superclass, subType, obj);
+
+ conn.add(obj, RDFS.LABEL, new LiteralImpl("label"));
+ conn.add(obj2, RDFS.LABEL, new LiteralImpl("label2"));
+
+ final String indexSparqlString = ""//
+ + "SELECT ?dog ?pig ?duck " //
+ + "{" //
+ + " ?pig a ?dog . "//
+ + " ?pig <http://www.w3.org/2000/01/rdf-schema#label> ?duck "//
+ + "}";//
+
+ final String indexSparqlString2 = ""//
+ + "SELECT ?o ?f ?e ?c ?l " //
+ + "{" //
+ + " ?e <uri:talksTo> ?o . "//
+ + " ?o <http://www.w3.org/2000/01/rdf-schema#label> ?l. "//
+ + " ?c a ?f . " //
+ + "}";//
+
+ final String indexSparqlString3 = ""//
+ + "SELECT ?wolf ?sheep ?chicken " //
+ + "{" //
+ + " ?wolf <uri:howlsAt> ?sheep . "//
+ + " ?sheep <uri:subType> ?chicken. "//
+ + "}";//
+
+ final String queryString = ""//
+ + "SELECT ?c ?l ?f ?o " //
+ + "{" //
+ + " <uri:entity> a ?c . "//
+ + " <uri:entity> <http://www.w3.org/2000/01/rdf-schema#label> ?l. "//
+ + " <uri:entity> <uri:talksTo> ?o . "//
+ + " ?o <http://www.w3.org/2000/01/rdf-schema#label> ?l. "//
+ + " ?c a ?f . " //
+ + " <uri:entity> <uri:howlsAt> ?f. "//
+ + " ?f <uri:subType> <uri:obj>. "//
+ + "}";//
+
+ PcjIntegrationTestingUtil.createAndPopulatePcj(conn, accCon, tablename + 1,
+ indexSparqlString, new String[] { "dog", "pig", "duck" },
+ Optional.<PcjVarOrderFactory> absent());
+ PcjIntegrationTestingUtil.createAndPopulatePcj(conn, accCon, tablename + 2,
+ indexSparqlString2, new String[] { "o", "f", "e", "c", "l" },
+ Optional.<PcjVarOrderFactory> absent());
+ PcjIntegrationTestingUtil.createAndPopulatePcj(conn, accCon, tablename + 3,
+ indexSparqlString3,
+ new String[] { "wolf", "sheep", "chicken" },
+ Optional.<PcjVarOrderFactory> absent());
+
+ final CountingResultHandler crh1 = new CountingResultHandler();
+ final CountingResultHandler crh2 = new CountingResultHandler();
+
+ conn.prepareTupleQuery(QueryLanguage.SPARQL, queryString)
+ .evaluate(crh1);
+
+ PcjIntegrationTestingUtil.deleteCoreRyaTables(accCon, prefix);
+ pcjConn.prepareTupleQuery(QueryLanguage.SPARQL, queryString).evaluate(
+ crh2);
+
+ Assert.assertEquals(crh1.getCount(), crh2.getCount());
+
+ }
+
+ @Test
+ public void testEvaluateFilterInstantiate() throws RepositoryException,
+ PcjException, MalformedQueryException, SailException,
+ QueryEvaluationException, TableNotFoundException,
+ TupleQueryResultHandlerException, AccumuloException,
+ AccumuloSecurityException {
+
+ final URI e1 = new URIImpl("uri:e1");
+ final URI e2 = new URIImpl("uri:e2");
+ final URI e3 = new URIImpl("uri:e3");
+ final URI f1 = new URIImpl("uri:f1");
+ final URI f2 = new URIImpl("uri:f2");
+ final URI f3 = new URIImpl("uri:f3");
+ final URI g1 = new URIImpl("uri:g1");
+ final URI g2 = new URIImpl("uri:g2");
+ final URI g3 = new URIImpl("uri:g3");
+
+ conn.add(e1, talksTo, f1);
+ conn.add(f1, talksTo, g1);
+ conn.add(g1, talksTo, e1);
+ conn.add(e2, talksTo, f2);
+ conn.add(f2, talksTo, g2);
+ conn.add(g2, talksTo, e2);
+ conn.add(e3, talksTo, f3);
+ conn.add(f3, talksTo, g3);
+ conn.add(g3, talksTo, e3);
+
+ final String queryString = ""//
+ + "SELECT ?x ?y ?z " //
+ + "{" //
+ + "Filter(?x = <uri:e1>) . " //
+ + " ?x <uri:talksTo> ?y. " //
+ + " ?y <uri:talksTo> ?z. " //
+ + " ?z <uri:talksTo> <uri:e1>. " //
+ + "}";//
+
+ final String indexSparqlString = ""//
+ + "SELECT ?a ?b ?c ?d " //
+ + "{" //
+ + "Filter(?a = ?d) . " //
+ + " ?a <uri:talksTo> ?b. " //
+ + " ?b <uri:talksTo> ?c. " //
+ + " ?c <uri:talksTo> ?d. " //
+ + "}";//
+
+ PcjIntegrationTestingUtil.createAndPopulatePcj(conn, accCon, tablename + 1,
+ indexSparqlString, new String[] { "a", "b", "c", "d" },
+ Optional.<PcjVarOrderFactory> absent());
+
+ final CountingResultHandler crh1 = new CountingResultHandler();
+ final CountingResultHandler crh2 = new CountingResultHandler();
+
+ conn.prepareTupleQuery(QueryLanguage.SPARQL, queryString)
+ .evaluate(crh1);
+ PcjIntegrationTestingUtil.deleteCoreRyaTables(accCon, prefix);
+ pcjConn.prepareTupleQuery(QueryLanguage.SPARQL, queryString).evaluate(crh2);
+
+ Assert.assertEquals(crh1.getCount(), crh2.getCount());
+
+ }
+
+ @Test
+ public void testEvaluateCompoundFilterInstantiate()
+ throws RepositoryException, PcjException, MalformedQueryException,
+ SailException, QueryEvaluationException,
+ TableNotFoundException,
+ TupleQueryResultHandlerException, AccumuloException, AccumuloSecurityException {
+
+ final URI e1 = new URIImpl("uri:e1");
+ final URI f1 = new URIImpl("uri:f1");
+
+ conn.add(e1, talksTo, e1);
+ conn.add(e1, talksTo, f1);
+ conn.add(f1, talksTo, e1);
+
+ final String queryString = ""//
+ + "SELECT ?x ?y ?z " //
+ + "{" //
+ + "Filter(?x = <uri:e1> && ?y = <uri:e1>) . " //
+ + " ?x <uri:talksTo> ?y. " //
+ + " ?y <uri:talksTo> ?z. " //
+ + " ?z <uri:talksTo> <uri:e1>. " //
+ + "}";//
+
+ final String indexSparqlString = ""//
+ + "SELECT ?a ?b ?c ?d " //
+ + "{" //
+ + "Filter(?a = ?d && ?b = ?d) . " //
+ + " ?a <uri:talksTo> ?b. " //
+ + " ?b <uri:talksTo> ?c. " //
+ + " ?c <uri:talksTo> ?d. " //
+ + "}";//
+
+ PcjIntegrationTestingUtil.createAndPopulatePcj(conn, accCon, tablename + 1,
+ indexSparqlString, new String[] { "a", "b", "c", "d" },
+ Optional.<PcjVarOrderFactory> absent());
+
+ final CountingResultHandler crh1 = new CountingResultHandler();
+ final CountingResultHandler crh2 = new CountingResultHandler();
+
+ conn.prepareTupleQuery(QueryLanguage.SPARQL, queryString)
+ .evaluate(crh1);
+ PcjIntegrationTestingUtil.deleteCoreRyaTables(accCon, prefix);
+ pcjConn.prepareTupleQuery(QueryLanguage.SPARQL, queryString).evaluate(
+ crh2);
+
+ Assert.assertEquals(2, crh1.getCount());
+ Assert.assertEquals(crh1.getCount(), crh2.getCount());
+
+ }
+
+ public static class CountingResultHandler implements
+ TupleQueryResultHandler {
+ private int count = 0;
+
+ public int getCount() {
+ return count;
+ }
+
+ public void resetCount() {
+ count = 0;
+ }
+
+ @Override
+ public void startQueryResult(final List<String> arg0)
+ throws TupleQueryResultHandlerException {
+ }
+
+ @Override
+ public void handleSolution(final BindingSet arg0)
+ throws TupleQueryResultHandlerException {
+ count++;
+ }
+
+ @Override
+ public void endQueryResult() throws TupleQueryResultHandlerException {
+ }
+
+ @Override
+ public void handleBoolean(final boolean arg0)
+ throws QueryResultHandlerException {
+ }
+
+ @Override
+ public void handleLinks(final List<String> arg0)
+ throws QueryResultHandlerException {
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/9c12630b/extras/indexing/src/test/java/org/apache/rya/indexing/external/AccumuloConstantPcjIntegrationTest.java
----------------------------------------------------------------------
diff --git a/extras/indexing/src/test/java/org/apache/rya/indexing/external/AccumuloConstantPcjIntegrationTest.java b/extras/indexing/src/test/java/org/apache/rya/indexing/external/AccumuloConstantPcjIntegrationTest.java
deleted file mode 100644
index 0c25c14..0000000
--- a/extras/indexing/src/test/java/org/apache/rya/indexing/external/AccumuloConstantPcjIntegrationTest.java
+++ /dev/null
@@ -1,414 +0,0 @@
-package org.apache.rya.indexing.external;
-
-import java.net.UnknownHostException;
-
-/*
- * 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.
- */
-
-import java.util.List;
-
-import org.apache.accumulo.core.client.AccumuloException;
-import org.apache.accumulo.core.client.AccumuloSecurityException;
-import org.apache.accumulo.core.client.Connector;
-import org.apache.accumulo.core.client.TableExistsException;
-import org.apache.accumulo.core.client.TableNotFoundException;
-import org.apache.accumulo.core.client.mock.MockInstance;
-import org.apache.accumulo.core.client.security.tokens.PasswordToken;
-import org.apache.rya.indexing.pcj.storage.PcjException;
-import org.apache.rya.indexing.pcj.storage.accumulo.PcjVarOrderFactory;
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import org.openrdf.model.URI;
-import org.openrdf.model.impl.LiteralImpl;
-import org.openrdf.model.impl.URIImpl;
-import org.openrdf.model.vocabulary.RDF;
-import org.openrdf.model.vocabulary.RDFS;
-import org.openrdf.query.BindingSet;
-import org.openrdf.query.MalformedQueryException;
-import org.openrdf.query.QueryEvaluationException;
-import org.openrdf.query.QueryLanguage;
-import org.openrdf.query.QueryResultHandlerException;
-import org.openrdf.query.TupleQueryResultHandler;
-import org.openrdf.query.TupleQueryResultHandlerException;
-import org.openrdf.repository.RepositoryException;
-import org.openrdf.repository.sail.SailRepository;
-import org.openrdf.repository.sail.SailRepositoryConnection;
-import org.openrdf.sail.SailException;
-
-import com.google.common.base.Optional;
-
-import org.apache.rya.api.persist.RyaDAOException;
-import org.apache.rya.rdftriplestore.inference.InferenceEngineException;
-
-public class AccumuloConstantPcjIntegrationTest {
-
- private SailRepositoryConnection conn, pcjConn;
- private SailRepository repo, pcjRepo;
- private Connector accCon;
- String prefix = "table_";
- String tablename = "table_INDEX_";
- URI obj, obj2, subclass, subclass2, talksTo;
-
- @Before
- public void init() throws RepositoryException,
- TupleQueryResultHandlerException, QueryEvaluationException,
- MalformedQueryException, AccumuloException,
- AccumuloSecurityException, TableExistsException,
- TableNotFoundException, RyaDAOException, InferenceEngineException,
- NumberFormatException, UnknownHostException, SailException {
-
- repo = PcjIntegrationTestingUtil.getNonPcjRepo(prefix, "instance");
- conn = repo.getConnection();
-
- pcjRepo = PcjIntegrationTestingUtil.getPcjRepo(prefix, "instance");
- pcjConn = pcjRepo.getConnection();
-
- final URI sub = new URIImpl("uri:entity");
- subclass = new URIImpl("uri:class");
- obj = new URIImpl("uri:obj");
- talksTo = new URIImpl("uri:talksTo");
-
- conn.add(sub, RDF.TYPE, subclass);
- conn.add(sub, RDFS.LABEL, new LiteralImpl("label"));
- conn.add(sub, talksTo, obj);
-
- final URI sub2 = new URIImpl("uri:entity2");
- subclass2 = new URIImpl("uri:class2");
- obj2 = new URIImpl("uri:obj2");
-
- conn.add(sub2, RDF.TYPE, subclass2);
- conn.add(sub2, RDFS.LABEL, new LiteralImpl("label2"));
- conn.add(sub2, talksTo, obj2);
-
- accCon = new MockInstance("instance").getConnector("root",new PasswordToken(""));
-
- }
-
- @After
- public void close() throws RepositoryException, AccumuloException,
- AccumuloSecurityException, TableNotFoundException {
- PcjIntegrationTestingUtil.closeAndShutdown(conn, repo);
- PcjIntegrationTestingUtil.closeAndShutdown(pcjConn, pcjRepo);
- PcjIntegrationTestingUtil.deleteCoreRyaTables(accCon, prefix);
- PcjIntegrationTestingUtil.deleteIndexTables(accCon, 2, prefix);
-
-
- }
-
- @Test
- public void testEvaluateTwoIndexVarInstantiate1() throws PcjException,
- RepositoryException, AccumuloException, AccumuloSecurityException,
- TableNotFoundException, TableExistsException,
- MalformedQueryException, SailException, QueryEvaluationException,
- TupleQueryResultHandlerException {
-
- final URI superclass = new URIImpl("uri:superclass");
- final URI superclass2 = new URIImpl("uri:superclass2");
-
- conn.add(subclass, RDF.TYPE, superclass);
- conn.add(subclass2, RDF.TYPE, superclass2);
- conn.add(obj, RDFS.LABEL, new LiteralImpl("label"));
- conn.add(obj2, RDFS.LABEL, new LiteralImpl("label2"));
-
- conn.add(obj, RDFS.LABEL, new LiteralImpl("label"));
- conn.add(obj2, RDFS.LABEL, new LiteralImpl("label2"));
-
- final String indexSparqlString = ""//
- + "SELECT ?dog ?pig ?duck " //
- + "{" //
- + " ?pig a ?dog . "//
- + " ?pig <http://www.w3.org/2000/01/rdf-schema#label> ?duck "//
- + "}";//
-
- final String indexSparqlString2 = ""//
- + "SELECT ?o ?f ?e ?c ?l " //
- + "{" //
- + " ?e <uri:talksTo> ?o . "//
- + " ?o <http://www.w3.org/2000/01/rdf-schema#label> ?l. "//
- + " ?c a ?f . " //
- + "}";//
-
- final String queryString = ""//
- + "SELECT ?c ?l ?f ?o " //
- + "{" //
- + " <uri:entity> a ?c . "//
- + " <uri:entity> <http://www.w3.org/2000/01/rdf-schema#label> ?l. "//
- + " <uri:entity> <uri:talksTo> ?o . "//
- + " ?o <http://www.w3.org/2000/01/rdf-schema#label> ?l. "//
- + " ?c a ?f . " //
- + "}";//
-
- PcjIntegrationTestingUtil.createAndPopulatePcj(conn, accCon, tablename + 1,
- indexSparqlString, new String[] { "dog", "pig", "duck" },
- Optional.<PcjVarOrderFactory> absent());
- PcjIntegrationTestingUtil.createAndPopulatePcj(conn, accCon, tablename + 2,
- indexSparqlString2, new String[] { "o", "f", "e", "c", "l" },
- Optional.<PcjVarOrderFactory> absent());
-
- final CountingResultHandler crh1 = new CountingResultHandler();
- final CountingResultHandler crh2 = new CountingResultHandler();
-
- conn.prepareTupleQuery(QueryLanguage.SPARQL, queryString)
- .evaluate(crh1);
- PcjIntegrationTestingUtil.deleteCoreRyaTables(accCon, prefix);
- pcjConn.prepareTupleQuery(QueryLanguage.SPARQL, queryString).evaluate(crh2);
-
- Assert.assertEquals(crh1.getCount(), crh2.getCount());
-
- }
-
- @Test
- public void testEvaluateThreeIndexVarInstantiate() throws PcjException,
- RepositoryException, AccumuloException, AccumuloSecurityException,
- TableNotFoundException, TableExistsException,
- MalformedQueryException, SailException, QueryEvaluationException,
- TupleQueryResultHandlerException {
-
- final URI superclass = new URIImpl("uri:superclass");
- final URI superclass2 = new URIImpl("uri:superclass2");
-
- final URI sub = new URIImpl("uri:entity");
- subclass = new URIImpl("uri:class");
- obj = new URIImpl("uri:obj");
- talksTo = new URIImpl("uri:talksTo");
-
- final URI howlsAt = new URIImpl("uri:howlsAt");
- final URI subType = new URIImpl("uri:subType");
-
- conn.add(subclass, RDF.TYPE, superclass);
- conn.add(subclass2, RDF.TYPE, superclass2);
- conn.add(obj, RDFS.LABEL, new LiteralImpl("label"));
- conn.add(obj2, RDFS.LABEL, new LiteralImpl("label2"));
- conn.add(sub, howlsAt, superclass);
- conn.add(superclass, subType, obj);
-
- conn.add(obj, RDFS.LABEL, new LiteralImpl("label"));
- conn.add(obj2, RDFS.LABEL, new LiteralImpl("label2"));
-
- final String indexSparqlString = ""//
- + "SELECT ?dog ?pig ?duck " //
- + "{" //
- + " ?pig a ?dog . "//
- + " ?pig <http://www.w3.org/2000/01/rdf-schema#label> ?duck "//
- + "}";//
-
- final String indexSparqlString2 = ""//
- + "SELECT ?o ?f ?e ?c ?l " //
- + "{" //
- + " ?e <uri:talksTo> ?o . "//
- + " ?o <http://www.w3.org/2000/01/rdf-schema#label> ?l. "//
- + " ?c a ?f . " //
- + "}";//
-
- final String indexSparqlString3 = ""//
- + "SELECT ?wolf ?sheep ?chicken " //
- + "{" //
- + " ?wolf <uri:howlsAt> ?sheep . "//
- + " ?sheep <uri:subType> ?chicken. "//
- + "}";//
-
- final String queryString = ""//
- + "SELECT ?c ?l ?f ?o " //
- + "{" //
- + " <uri:entity> a ?c . "//
- + " <uri:entity> <http://www.w3.org/2000/01/rdf-schema#label> ?l. "//
- + " <uri:entity> <uri:talksTo> ?o . "//
- + " ?o <http://www.w3.org/2000/01/rdf-schema#label> ?l. "//
- + " ?c a ?f . " //
- + " <uri:entity> <uri:howlsAt> ?f. "//
- + " ?f <uri:subType> <uri:obj>. "//
- + "}";//
-
- PcjIntegrationTestingUtil.createAndPopulatePcj(conn, accCon, tablename + 1,
- indexSparqlString, new String[] { "dog", "pig", "duck" },
- Optional.<PcjVarOrderFactory> absent());
- PcjIntegrationTestingUtil.createAndPopulatePcj(conn, accCon, tablename + 2,
- indexSparqlString2, new String[] { "o", "f", "e", "c", "l" },
- Optional.<PcjVarOrderFactory> absent());
- PcjIntegrationTestingUtil.createAndPopulatePcj(conn, accCon, tablename + 3,
- indexSparqlString3,
- new String[] { "wolf", "sheep", "chicken" },
- Optional.<PcjVarOrderFactory> absent());
-
- final CountingResultHandler crh1 = new CountingResultHandler();
- final CountingResultHandler crh2 = new CountingResultHandler();
-
- conn.prepareTupleQuery(QueryLanguage.SPARQL, queryString)
- .evaluate(crh1);
-
- PcjIntegrationTestingUtil.deleteCoreRyaTables(accCon, prefix);
- pcjConn.prepareTupleQuery(QueryLanguage.SPARQL, queryString).evaluate(
- crh2);
-
- Assert.assertEquals(crh1.getCount(), crh2.getCount());
-
- }
-
- @Test
- public void testEvaluateFilterInstantiate() throws RepositoryException,
- PcjException, MalformedQueryException, SailException,
- QueryEvaluationException, TableNotFoundException,
- TupleQueryResultHandlerException, AccumuloException,
- AccumuloSecurityException {
-
- final URI e1 = new URIImpl("uri:e1");
- final URI e2 = new URIImpl("uri:e2");
- final URI e3 = new URIImpl("uri:e3");
- final URI f1 = new URIImpl("uri:f1");
- final URI f2 = new URIImpl("uri:f2");
- final URI f3 = new URIImpl("uri:f3");
- final URI g1 = new URIImpl("uri:g1");
- final URI g2 = new URIImpl("uri:g2");
- final URI g3 = new URIImpl("uri:g3");
-
- conn.add(e1, talksTo, f1);
- conn.add(f1, talksTo, g1);
- conn.add(g1, talksTo, e1);
- conn.add(e2, talksTo, f2);
- conn.add(f2, talksTo, g2);
- conn.add(g2, talksTo, e2);
- conn.add(e3, talksTo, f3);
- conn.add(f3, talksTo, g3);
- conn.add(g3, talksTo, e3);
-
- final String queryString = ""//
- + "SELECT ?x ?y ?z " //
- + "{" //
- + "Filter(?x = <uri:e1>) . " //
- + " ?x <uri:talksTo> ?y. " //
- + " ?y <uri:talksTo> ?z. " //
- + " ?z <uri:talksTo> <uri:e1>. " //
- + "}";//
-
- final String indexSparqlString = ""//
- + "SELECT ?a ?b ?c ?d " //
- + "{" //
- + "Filter(?a = ?d) . " //
- + " ?a <uri:talksTo> ?b. " //
- + " ?b <uri:talksTo> ?c. " //
- + " ?c <uri:talksTo> ?d. " //
- + "}";//
-
- PcjIntegrationTestingUtil.createAndPopulatePcj(conn, accCon, tablename + 1,
- indexSparqlString, new String[] { "a", "b", "c", "d" },
- Optional.<PcjVarOrderFactory> absent());
-
- final CountingResultHandler crh1 = new CountingResultHandler();
- final CountingResultHandler crh2 = new CountingResultHandler();
-
- conn.prepareTupleQuery(QueryLanguage.SPARQL, queryString)
- .evaluate(crh1);
- PcjIntegrationTestingUtil.deleteCoreRyaTables(accCon, prefix);
- pcjConn.prepareTupleQuery(QueryLanguage.SPARQL, queryString).evaluate(crh2);
-
- Assert.assertEquals(crh1.getCount(), crh2.getCount());
-
- }
-
- @Test
- public void testEvaluateCompoundFilterInstantiate()
- throws RepositoryException, PcjException, MalformedQueryException,
- SailException, QueryEvaluationException,
- TableNotFoundException,
- TupleQueryResultHandlerException, AccumuloException, AccumuloSecurityException {
-
- final URI e1 = new URIImpl("uri:e1");
- final URI f1 = new URIImpl("uri:f1");
-
- conn.add(e1, talksTo, e1);
- conn.add(e1, talksTo, f1);
- conn.add(f1, talksTo, e1);
-
- final String queryString = ""//
- + "SELECT ?x ?y ?z " //
- + "{" //
- + "Filter(?x = <uri:e1> && ?y = <uri:e1>) . " //
- + " ?x <uri:talksTo> ?y. " //
- + " ?y <uri:talksTo> ?z. " //
- + " ?z <uri:talksTo> <uri:e1>. " //
- + "}";//
-
- final String indexSparqlString = ""//
- + "SELECT ?a ?b ?c ?d " //
- + "{" //
- + "Filter(?a = ?d && ?b = ?d) . " //
- + " ?a <uri:talksTo> ?b. " //
- + " ?b <uri:talksTo> ?c. " //
- + " ?c <uri:talksTo> ?d. " //
- + "}";//
-
- PcjIntegrationTestingUtil.createAndPopulatePcj(conn, accCon, tablename + 1,
- indexSparqlString, new String[] { "a", "b", "c", "d" },
- Optional.<PcjVarOrderFactory> absent());
-
- final CountingResultHandler crh1 = new CountingResultHandler();
- final CountingResultHandler crh2 = new CountingResultHandler();
-
- conn.prepareTupleQuery(QueryLanguage.SPARQL, queryString)
- .evaluate(crh1);
- PcjIntegrationTestingUtil.deleteCoreRyaTables(accCon, prefix);
- pcjConn.prepareTupleQuery(QueryLanguage.SPARQL, queryString).evaluate(
- crh2);
-
- Assert.assertEquals(2, crh1.getCount());
- Assert.assertEquals(crh1.getCount(), crh2.getCount());
-
- }
-
- public static class CountingResultHandler implements
- TupleQueryResultHandler {
- private int count = 0;
-
- public int getCount() {
- return count;
- }
-
- public void resetCount() {
- count = 0;
- }
-
- @Override
- public void startQueryResult(final List<String> arg0)
- throws TupleQueryResultHandlerException {
- }
-
- @Override
- public void handleSolution(final BindingSet arg0)
- throws TupleQueryResultHandlerException {
- count++;
- }
-
- @Override
- public void endQueryResult() throws TupleQueryResultHandlerException {
- }
-
- @Override
- public void handleBoolean(final boolean arg0)
- throws QueryResultHandlerException {
- }
-
- @Override
- public void handleLinks(final List<String> arg0)
- throws QueryResultHandlerException {
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/9c12630b/extras/indexing/src/test/java/org/apache/rya/indexing/external/AccumuloPcjIT.java
----------------------------------------------------------------------
diff --git a/extras/indexing/src/test/java/org/apache/rya/indexing/external/AccumuloPcjIT.java b/extras/indexing/src/test/java/org/apache/rya/indexing/external/AccumuloPcjIT.java
new file mode 100644
index 0000000..53a11ed
--- /dev/null
+++ b/extras/indexing/src/test/java/org/apache/rya/indexing/external/AccumuloPcjIT.java
@@ -0,0 +1,1440 @@
+package org.apache.rya.indexing.external;
+
+import java.net.UnknownHostException;
+
+/*
+ * 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.
+ */
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.accumulo.core.client.AccumuloException;
+import org.apache.accumulo.core.client.AccumuloSecurityException;
+import org.apache.accumulo.core.client.Connector;
+import org.apache.accumulo.core.client.MutationsRejectedException;
+import org.apache.accumulo.core.client.TableExistsException;
+import org.apache.accumulo.core.client.TableNotFoundException;
+import org.apache.accumulo.core.client.admin.TableOperations;
+import org.apache.hadoop.conf.Configuration;
+import org.apache.rya.indexing.pcj.storage.PcjException;
+import org.apache.rya.indexing.pcj.storage.accumulo.PcjVarOrderFactory;
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.openrdf.model.URI;
+import org.openrdf.model.impl.LiteralImpl;
+import org.openrdf.model.impl.URIImpl;
+import org.openrdf.model.vocabulary.RDF;
+import org.openrdf.model.vocabulary.RDFS;
+import org.openrdf.query.BindingSet;
+import org.openrdf.query.MalformedQueryException;
+import org.openrdf.query.QueryEvaluationException;
+import org.openrdf.query.QueryLanguage;
+import org.openrdf.query.QueryResultHandlerException;
+import org.openrdf.query.TupleQueryResultHandler;
+import org.openrdf.query.TupleQueryResultHandlerException;
+import org.openrdf.query.algebra.TupleExpr;
+import org.openrdf.query.parser.ParsedQuery;
+import org.openrdf.query.parser.sparql.SPARQLParser;
+import org.openrdf.repository.RepositoryException;
+import org.openrdf.repository.sail.SailRepository;
+import org.openrdf.repository.sail.SailRepositoryConnection;
+import org.openrdf.sail.SailException;
+
+import com.beust.jcommander.internal.Sets;
+import com.google.common.base.Optional;
+import com.google.common.collect.Lists;
+
+import org.apache.rya.accumulo.AccumuloRdfConfiguration;
+import org.apache.rya.api.RdfCloudTripleStoreConfiguration;
+import org.apache.rya.api.persist.RyaDAOException;
+import org.apache.rya.indexing.IndexPlanValidator.IndexPlanValidator;
+import org.apache.rya.indexing.accumulo.ConfigUtils;
+import org.apache.rya.indexing.external.PrecomputedJoinIndexerConfig.PrecomputedJoinStorageType;
+import org.apache.rya.indexing.external.tupleSet.AccumuloIndexSet;
+import org.apache.rya.indexing.external.tupleSet.ExternalTupleSet;
+import org.apache.rya.indexing.pcj.matching.PCJOptimizer;
+import org.apache.rya.rdftriplestore.inference.InferenceEngineException;
+
+public class AccumuloPcjIT {
+
+ private SailRepositoryConnection conn, pcjConn;
+ private SailRepository repo, pcjRepo;
+ private Connector accCon;
+ private final Configuration conf = getConf();
+ private final String prefix = "table_";
+ private final String tablename = "table_INDEX_";
+ private URI obj, obj2, subclass, subclass2, talksTo;
+
+ @Before
+ public void init() throws RepositoryException,
+ TupleQueryResultHandlerException, QueryEvaluationException,
+ MalformedQueryException, AccumuloException,
+ AccumuloSecurityException, TableExistsException, RyaDAOException,
+ TableNotFoundException, InferenceEngineException,
+ NumberFormatException, UnknownHostException, SailException {
+
+ repo = PcjIntegrationTestingUtil.getNonPcjRepo(prefix, "instance");
+ conn = repo.getConnection();
+
+ pcjRepo = PcjIntegrationTestingUtil.getPcjRepo(prefix, "instance");
+ pcjConn = pcjRepo.getConnection();
+
+ final URI sub = new URIImpl("uri:entity");
+ subclass = new URIImpl("uri:class");
+ obj = new URIImpl("uri:obj");
+ talksTo = new URIImpl("uri:talksTo");
+
+ conn.add(sub, RDF.TYPE, subclass);
+ conn.add(sub, RDFS.LABEL, new LiteralImpl("label"));
+ conn.add(sub, talksTo, obj);
+
+ final URI sub2 = new URIImpl("uri:entity2");
+ subclass2 = new URIImpl("uri:class2");
+ obj2 = new URIImpl("uri:obj2");
+
+ conn.add(sub2, RDF.TYPE, subclass2);
+ conn.add(sub2, RDFS.LABEL, new LiteralImpl("label2"));
+ conn.add(sub2, talksTo, obj2);
+
+ accCon = ConfigUtils.getConnector(conf);
+
+
+ }
+
+ @After
+ public void close() throws RepositoryException, AccumuloException,
+ AccumuloSecurityException, TableNotFoundException {
+
+ PcjIntegrationTestingUtil.closeAndShutdown(conn, repo);
+ PcjIntegrationTestingUtil.closeAndShutdown(pcjConn, pcjRepo);
+ PcjIntegrationTestingUtil.deleteCoreRyaTables(accCon, prefix);
+ PcjIntegrationTestingUtil.deleteIndexTables(accCon, 3, prefix);
+
+ }
+
+ @Test
+ public void testEvaluateSingleIndex()
+ throws TupleQueryResultHandlerException, QueryEvaluationException,
+ MalformedQueryException, RepositoryException, PcjException,
+ SailException, MutationsRejectedException, TableNotFoundException {
+
+ final String indexSparqlString = ""//
+ + "SELECT ?e ?l ?c " //
+ + "{" //
+ + " ?e a ?c . "//
+ + " ?e <http://www.w3.org/2000/01/rdf-schema#label> ?l "//
+ + "}";//
+
+ PcjIntegrationTestingUtil.createAndPopulatePcj(conn, accCon, tablename + 1,
+ indexSparqlString, new String[] { "e", "l", "c" },
+ Optional.<PcjVarOrderFactory> absent());
+
+ final String queryString = ""//
+ + "SELECT ?e ?c ?l ?o " //
+ + "{" //
+ + " ?e a ?c . "//
+ + " ?e <http://www.w3.org/2000/01/rdf-schema#label> ?l . "//
+ + " ?e <uri:talksTo> ?o . "//
+ + "}";//
+
+ final CountingResultHandler crh1 = new CountingResultHandler();
+ final CountingResultHandler crh2 = new CountingResultHandler();
+
+ conn.prepareTupleQuery(QueryLanguage.SPARQL, queryString)
+ .evaluate(crh1);
+
+ pcjConn.prepareTupleQuery(QueryLanguage.SPARQL, queryString).evaluate(
+ crh2);
+
+ Assert.assertEquals(crh1.getCount(), crh2.getCount());
+
+ }
+
+ @Test
+ public void testEvaluateTwoIndexTwoVarOrder1()
+ throws TupleQueryResultHandlerException, QueryEvaluationException,
+ MalformedQueryException, RepositoryException, AccumuloException,
+ AccumuloSecurityException, TableExistsException, PcjException,
+ SailException, TableNotFoundException {
+
+ conn.add(obj, RDFS.LABEL, new LiteralImpl("label"));
+ conn.add(obj2, RDFS.LABEL, new LiteralImpl("label2"));
+
+ final String indexSparqlString = ""//
+ + "SELECT ?e ?l ?c " //
+ + "{" //
+ + " ?e a ?c . "//
+ + " ?e <http://www.w3.org/2000/01/rdf-schema#label> ?l "//
+ + "}";//
+
+ final String indexSparqlString2 = ""//
+ + "SELECT ?e ?o ?l " //
+ + "{" //
+ + " ?e <uri:talksTo> ?o . "//
+ + " ?o <http://www.w3.org/2000/01/rdf-schema#label> ?l "//
+ + "}";//
+
+ final String queryString = ""//
+ + "SELECT ?e ?c ?l ?o " //
+ + "{" //
+ + " ?e a ?c . "//
+ + " ?e <http://www.w3.org/2000/01/rdf-schema#label> ?l . "//
+ + " ?e <uri:talksTo> ?o . "//
+ + " ?o <http://www.w3.org/2000/01/rdf-schema#label> ?l "//
+ + "}";//
+
+ final CountingResultHandler crh1 = new CountingResultHandler();
+ final CountingResultHandler crh2 = new CountingResultHandler();
+
+ PcjIntegrationTestingUtil.createAndPopulatePcj(conn, accCon, tablename + 1,
+ indexSparqlString, new String[] { "e", "l", "c" },
+ Optional.<PcjVarOrderFactory> absent());
+
+ PcjIntegrationTestingUtil.createAndPopulatePcj(conn, accCon, tablename + 2,
+ indexSparqlString2, new String[] { "e", "o", "l" },
+ Optional.<PcjVarOrderFactory> absent());
+
+ conn.prepareTupleQuery(QueryLanguage.SPARQL, queryString)
+ .evaluate(crh1);
+ PcjIntegrationTestingUtil.deleteCoreRyaTables(accCon, prefix);
+ pcjConn.prepareTupleQuery(QueryLanguage.SPARQL, queryString).evaluate(
+ crh2);
+
+ Assert.assertEquals(2, crh1.getCount());
+ Assert.assertEquals(2, crh2.getCount());
+
+ }
+
+ @Test
+ public void testEvaluateTwoIndexTwoVarOrder2() throws PcjException,
+ RepositoryException, TupleQueryResultHandlerException,
+ QueryEvaluationException, MalformedQueryException,
+ AccumuloException, AccumuloSecurityException, TableExistsException,
+ SailException, TableNotFoundException {
+
+ conn.add(obj, RDFS.LABEL, new LiteralImpl("label"));
+ conn.add(obj2, RDFS.LABEL, new LiteralImpl("label2"));
+
+ final String indexSparqlString = ""//
+ + "SELECT ?c ?e ?l " //
+ + "{" //
+ + " ?e a ?c . "//
+ + " ?e <http://www.w3.org/2000/01/rdf-schema#label> ?l "//
+ + "}";//
+
+ final String indexSparqlString2 = ""//
+ + "SELECT ?e ?o ?l " //
+ + "{" //
+ + " ?e <uri:talksTo> ?o . "//
+ + " ?o <http://www.w3.org/2000/01/rdf-schema#label> ?l "//
+ + "}";//
+
+ final String queryString = ""//
+ + "SELECT ?e ?c ?l ?o " //
+ + "{" //
+ + " ?e a ?c . "//
+ + " ?e <http://www.w3.org/2000/01/rdf-schema#label> ?l . "//
+ + " ?e <uri:talksTo> ?o . "//
+ + " ?o <http://www.w3.org/2000/01/rdf-schema#label> ?l "//
+ + "}";//
+
+ final CountingResultHandler crh1 = new CountingResultHandler();
+ final CountingResultHandler crh2 = new CountingResultHandler();
+
+ PcjIntegrationTestingUtil.createAndPopulatePcj(conn, accCon, tablename + 1,
+ indexSparqlString, new String[] { "c", "e", "l" },
+ Optional.<PcjVarOrderFactory> absent());
+
+ PcjIntegrationTestingUtil.createAndPopulatePcj(conn, accCon, tablename + 2,
+ indexSparqlString2, new String[] { "e", "o", "l" },
+ Optional.<PcjVarOrderFactory> absent());
+
+ conn.prepareTupleQuery(QueryLanguage.SPARQL, queryString)
+ .evaluate(crh1);
+ PcjIntegrationTestingUtil.deleteCoreRyaTables(accCon, prefix);
+ pcjConn.prepareTupleQuery(QueryLanguage.SPARQL, queryString).evaluate(
+ crh2);
+
+ Assert.assertEquals(2, crh1.getCount());
+ Assert.assertEquals(2, crh2.getCount());
+
+ }
+
+ @Test
+ public void testEvaluateTwoIndexTwoVarInvalidOrder() throws PcjException,
+ RepositoryException, AccumuloException, AccumuloSecurityException,
+ TableExistsException, TupleQueryResultHandlerException,
+ QueryEvaluationException, MalformedQueryException, SailException,
+ TableNotFoundException {
+
+ conn.add(obj, RDFS.LABEL, new LiteralImpl("label"));
+ conn.add(obj2, RDFS.LABEL, new LiteralImpl("label2"));
+
+ final String indexSparqlString = ""//
+ + "SELECT ?e ?c ?l " //
+ + "{" //
+ + " ?e a ?c . "//
+ + " ?e <http://www.w3.org/2000/01/rdf-schema#label> ?l "//
+ + "}";//
+
+ final String indexSparqlString2 = ""//
+ + "SELECT ?e ?o ?l " //
+ + "{" //
+ + " ?e <uri:talksTo> ?o . "//
+ + " ?o <http://www.w3.org/2000/01/rdf-schema#label> ?l "//
+ + "}";//
+
+ final String queryString = ""//
+ + "SELECT ?e ?c ?l ?o " //
+ + "{" //
+ + " ?e a ?c . "//
+ + " ?e <http://www.w3.org/2000/01/rdf-schema#label> ?l . "//
+ + " ?e <uri:talksTo> ?o . "//
+ + " ?o <http://www.w3.org/2000/01/rdf-schema#label> ?l "//
+ + "}";//
+
+ final CountingResultHandler crh1 = new CountingResultHandler();
+ final CountingResultHandler crh2 = new CountingResultHandler();
+
+ PcjIntegrationTestingUtil.createAndPopulatePcj(conn, accCon, tablename + 1,
+ indexSparqlString, new String[] { "e", "c", "l" },
+ Optional.<PcjVarOrderFactory> absent());
+
+ PcjIntegrationTestingUtil.createAndPopulatePcj(conn, accCon, tablename + 2,
+ indexSparqlString2, new String[] { "e", "o", "l" },
+ Optional.<PcjVarOrderFactory> absent());
+
+ conn.prepareTupleQuery(QueryLanguage.SPARQL, queryString)
+ .evaluate(crh1);
+ PcjIntegrationTestingUtil.deleteCoreRyaTables(accCon, prefix);
+ pcjConn.prepareTupleQuery(QueryLanguage.SPARQL, queryString).evaluate(
+ crh2);
+
+ Assert.assertEquals(crh1.getCount(), crh2.getCount());
+
+ }
+
+ @Test
+ public void testEvaluateTwoIndexThreeVarOrder1()
+ throws TupleQueryResultHandlerException, QueryEvaluationException,
+ MalformedQueryException, RepositoryException, AccumuloException,
+ AccumuloSecurityException, TableExistsException,
+ TableNotFoundException, PcjException, SailException {
+
+ final TableOperations ops = accCon.tableOperations();
+ final Set<String> tables = ops.tableIdMap().keySet();
+ final Collection<String> vals = ops.tableIdMap().values();
+ System.out.println("Tables: " + tables + "and values " + vals);
+
+ final URI superclass = new URIImpl("uri:superclass");
+ final URI superclass2 = new URIImpl("uri:superclass2");
+
+ conn.add(subclass, RDF.TYPE, superclass);
+ conn.add(subclass2, RDF.TYPE, superclass2);
+ conn.add(obj, RDFS.LABEL, new LiteralImpl("label"));
+ conn.add(obj2, RDFS.LABEL, new LiteralImpl("label2"));
+ conn.add(obj, RDFS.LABEL, new LiteralImpl("label"));
+ conn.add(obj2, RDFS.LABEL, new LiteralImpl("label2"));
+
+ final String indexSparqlString = ""//
+ + "SELECT ?c ?e ?l " //
+ + "{" //
+ + " ?e a ?c . "//
+ + " ?e <http://www.w3.org/2000/01/rdf-schema#label> ?l "//
+ + "}";//
+
+ final String indexSparqlString2 = ""//
+ + "SELECT ?e ?c ?l ?f ?o" //
+ + "{" //
+ + " ?e <uri:talksTo> ?o . "//
+ + " ?o <http://www.w3.org/2000/01/rdf-schema#label> ?l. "//
+ + " ?c a ?f . " //
+ + "}";//
+
+ final String queryString = ""//
+ + "SELECT ?e ?c ?l ?f ?o " //
+ + "{" //
+ + " ?e a ?c . "//
+ + " ?e <http://www.w3.org/2000/01/rdf-schema#label> ?l. "//
+ + " ?e <uri:talksTo> ?o . "//
+ + " ?o <http://www.w3.org/2000/01/rdf-schema#label> ?l. "//
+ + " ?c a ?f . " //
+ + "}";//
+
+ final CountingResultHandler crh1 = new CountingResultHandler();
+ final CountingResultHandler crh2 = new CountingResultHandler();
+
+ PcjIntegrationTestingUtil.createAndPopulatePcj(conn, accCon, tablename + 1,
+ indexSparqlString, new String[] { "c", "e", "l" },
+ Optional.<PcjVarOrderFactory> absent());
+
+ PcjIntegrationTestingUtil.createAndPopulatePcj(conn, accCon, tablename + 2,
+ indexSparqlString2, new String[] { "e", "c", "l", "f", "o" },
+ Optional.<PcjVarOrderFactory> absent());
+
+ conn.prepareTupleQuery(QueryLanguage.SPARQL, queryString)
+ .evaluate(crh1);
+ PcjIntegrationTestingUtil.deleteCoreRyaTables(accCon, prefix);
+ pcjConn.prepareTupleQuery(QueryLanguage.SPARQL, queryString)
+ .evaluate(crh2);
+
+ Assert.assertEquals(2, crh1.getCount());
+ Assert.assertEquals(2, crh2.getCount());
+ }
+
+ @Test
+ public void testEvaluateTwoIndexThreeVarsDiffLabel() throws PcjException,
+ RepositoryException, AccumuloException, AccumuloSecurityException,
+ TableNotFoundException, TableExistsException,
+ MalformedQueryException, SailException, QueryEvaluationException,
+ TupleQueryResultHandlerException {
+
+ final URI superclass = new URIImpl("uri:superclass");
+ final URI superclass2 = new URIImpl("uri:superclass2");
+
+ conn.add(subclass, RDF.TYPE, superclass);
+ conn.add(subclass2, RDF.TYPE, superclass2);
+ conn.add(obj, RDFS.LABEL, new LiteralImpl("label"));
+ conn.add(obj2, RDFS.LABEL, new LiteralImpl("label2"));
+ conn.add(obj, RDFS.LABEL, new LiteralImpl("label"));
+ conn.add(obj2, RDFS.LABEL, new LiteralImpl("label2"));
+
+ final String indexSparqlString = ""//
+ + "SELECT ?dog ?pig ?owl " //
+ + "{" //
+ + " ?pig a ?dog . "//
+ + " ?pig <http://www.w3.org/2000/01/rdf-schema#label> ?owl "//
+ + "}";//
+
+ final String indexSparqlString2 = ""//
+ + "SELECT ?e ?c ?l ?f ?o" //
+ + "{" //
+ + " ?e <uri:talksTo> ?o . "//
+ + " ?o <http://www.w3.org/2000/01/rdf-schema#label> ?l. "//
+ + " ?c a ?f . " //
+ + "}";//
+
+ final String queryString = ""//
+ + "SELECT ?e ?c ?l ?f ?o " //
+ + "{" //
+ + " ?e a ?c . "//
+ + " ?e <http://www.w3.org/2000/01/rdf-schema#label> ?l. "//
+ + " ?e <uri:talksTo> ?o . "//
+ + " ?o <http://www.w3.org/2000/01/rdf-schema#label> ?l. "//
+ + " ?c a ?f . " //
+ + "}";//
+
+ final CountingResultHandler crh2 = new CountingResultHandler();
+
+ PcjIntegrationTestingUtil.createAndPopulatePcj(conn, accCon, tablename + 1,
+ indexSparqlString, new String[] { "dog", "pig", "owl" },
+ Optional.<PcjVarOrderFactory> absent());
+
+ PcjIntegrationTestingUtil.createAndPopulatePcj(conn, accCon, tablename + 2,
+ indexSparqlString2, new String[] { "e", "c", "l", "f", "o" },
+ Optional.<PcjVarOrderFactory> absent());
+ PcjIntegrationTestingUtil.deleteCoreRyaTables(accCon, prefix);
+ pcjConn.prepareTupleQuery(QueryLanguage.SPARQL, queryString).evaluate(
+ crh2);
+
+ Assert.assertEquals(2, crh2.getCount());
+
+ }
+
+ @Test
+ public void testEvaluateTwoIndexThreeVarOrder2() throws PcjException,
+ RepositoryException, AccumuloException, AccumuloSecurityException,
+ TableExistsException, TableNotFoundException,
+ TupleQueryResultHandlerException, QueryEvaluationException,
+ MalformedQueryException, SailException {
+
+ final URI superclass = new URIImpl("uri:superclass");
+ final URI superclass2 = new URIImpl("uri:superclass2");
+
+ conn.add(subclass, RDF.TYPE, superclass);
+ conn.add(subclass2, RDF.TYPE, superclass2);
+ conn.add(obj, RDFS.LABEL, new LiteralImpl("label"));
+ conn.add(obj2, RDFS.LABEL, new LiteralImpl("label2"));
+ accCon.tableOperations().create("table2");
+ conn.add(obj, RDFS.LABEL, new LiteralImpl("label"));
+ conn.add(obj2, RDFS.LABEL, new LiteralImpl("label2"));
+
+ final String indexSparqlString = ""//
+ + "SELECT ?c ?e ?l " //
+ + "{" //
+ + " ?e a ?c . "//
+ + " ?e <http://www.w3.org/2000/01/rdf-schema#label> ?l "//
+ + "}";//
+
+ final String indexSparqlString2 = ""//
+ + "SELECT ?o ?f ?e ?c ?l " //
+ + "{" //
+ + " ?e <uri:talksTo> ?o . "//
+ + " ?o <http://www.w3.org/2000/01/rdf-schema#label> ?l. "//
+ + " ?c a ?f . " //
+ + "}";//
+
+ final String queryString = ""//
+ + "SELECT ?e ?c ?l ?f ?o " //
+ + "{" //
+ + " ?e a ?c . "//
+ + " ?e <http://www.w3.org/2000/01/rdf-schema#label> ?l. "//
+ + " ?e <uri:talksTo> ?o . "//
+ + " ?o <http://www.w3.org/2000/01/rdf-schema#label> ?l. "//
+ + " ?c a ?f . " //
+ + "}";//
+
+ final CountingResultHandler crh2 = new CountingResultHandler();
+
+ PcjIntegrationTestingUtil.createAndPopulatePcj(conn, accCon, tablename + 1,
+ indexSparqlString, new String[] { "c", "e", "l" },
+ Optional.<PcjVarOrderFactory> absent());
+
+ PcjIntegrationTestingUtil.createAndPopulatePcj(conn, accCon, tablename + 2,
+ indexSparqlString2, new String[] { "o", "f", "e", "c", "l" },
+ Optional.<PcjVarOrderFactory> absent());
+ PcjIntegrationTestingUtil.deleteCoreRyaTables(accCon, prefix);
+ pcjConn.prepareTupleQuery(QueryLanguage.SPARQL, queryString).evaluate(
+ crh2);
+
+ Assert.assertEquals(2, crh2.getCount());
+
+ }
+
+ @Test
+ public void testEvaluateTwoIndexThreeVarOrder3ThreeBindingSet()
+ throws TupleQueryResultHandlerException, QueryEvaluationException,
+ MalformedQueryException, RepositoryException, AccumuloException,
+ AccumuloSecurityException, TableNotFoundException,
+ TableExistsException, PcjException, SailException {
+
+ final URI sub3 = new URIImpl("uri:entity3");
+ final URI subclass3 = new URIImpl("uri:class3");
+ final URI obj3 = new URIImpl("uri:obj3");
+ final URI superclass = new URIImpl("uri:superclass");
+ final URI superclass2 = new URIImpl("uri:superclass2");
+ final URI superclass3 = new URIImpl("uri:superclass3");
+
+ conn.add(sub3, RDF.TYPE, subclass3);
+ conn.add(sub3, RDFS.LABEL, new LiteralImpl("label3"));
+ conn.add(sub3, talksTo, obj3);
+ conn.add(subclass, RDF.TYPE, superclass);
+ conn.add(subclass2, RDF.TYPE, superclass2);
+ conn.add(subclass3, RDF.TYPE, superclass3);
+ conn.add(obj, RDFS.LABEL, new LiteralImpl("label"));
+ conn.add(obj2, RDFS.LABEL, new LiteralImpl("label2"));
+ conn.add(obj3, RDFS.LABEL, new LiteralImpl("label3"));
+ conn.add(obj, RDFS.LABEL, new LiteralImpl("label"));
+ conn.add(obj2, RDFS.LABEL, new LiteralImpl("label2"));
+ final String indexSparqlString = ""//
+ + "SELECT ?c ?e ?l " //
+ + "{" //
+ + " ?e a ?c . "//
+ + " ?e <http://www.w3.org/2000/01/rdf-schema#label> ?l "//
+ + "}";//
+
+ final String indexSparqlString2 = ""//
+ + "SELECT ?o ?f ?l ?e ?c " //
+ + "{" //
+ + " ?e <uri:talksTo> ?o . "//
+ + " ?o <http://www.w3.org/2000/01/rdf-schema#label> ?l. "//
+ + " ?c a ?f . " //
+ + "}";//
+
+ final String queryString = ""//
+ + "SELECT ?e ?c ?l ?f ?o " //
+ + "{" //
+ + " ?e a ?c . "//
+ + " ?e <http://www.w3.org/2000/01/rdf-schema#label> ?l. "//
+ + " ?e <uri:talksTo> ?o . "//
+ + " ?o <http://www.w3.org/2000/01/rdf-schema#label> ?l. "//
+ + " ?c a ?f . " //
+ + "}";//
+
+ final CountingResultHandler crh1 = new CountingResultHandler();
+ final CountingResultHandler crh2 = new CountingResultHandler();
+ PcjIntegrationTestingUtil.createAndPopulatePcj(conn, accCon, tablename + 1,
+ indexSparqlString, new String[] { "c", "e", "l" },
+ Optional.<PcjVarOrderFactory> absent());
+
+ PcjIntegrationTestingUtil.createAndPopulatePcj(conn, accCon, tablename + 2,
+ indexSparqlString2, new String[] { "o", "f", "l", "e", "c" },
+ Optional.<PcjVarOrderFactory> absent());
+
+ conn.prepareTupleQuery(QueryLanguage.SPARQL, queryString)
+ .evaluate(crh1);
+ PcjIntegrationTestingUtil.deleteCoreRyaTables(accCon, prefix);
+ pcjConn.prepareTupleQuery(QueryLanguage.SPARQL, queryString).evaluate(
+ crh2);
+ Assert.assertEquals(3, crh1.getCount());
+ Assert.assertEquals(3, crh2.getCount());
+
+ }
+
+ @Test
+ public void testEvaluateTwoIndexThreeVarOrder5ThreeBindingSet()
+ throws TupleQueryResultHandlerException, QueryEvaluationException,
+ MalformedQueryException, RepositoryException, AccumuloException,
+ AccumuloSecurityException, TableNotFoundException,
+ TableExistsException, PcjException, SailException {
+
+ final URI sub3 = new URIImpl("uri:entity3");
+ final URI subclass3 = new URIImpl("uri:class3");
+ final URI obj3 = new URIImpl("uri:obj3");
+
+ final URI superclass = new URIImpl("uri:superclass");
+ final URI superclass2 = new URIImpl("uri:superclass2");
+ final URI superclass3 = new URIImpl("uri:superclass3");
+
+ conn.add(sub3, RDF.TYPE, subclass3);
+ conn.add(sub3, RDFS.LABEL, new LiteralImpl("label3"));
+ conn.add(sub3, talksTo, obj3);
+ conn.add(subclass, RDF.TYPE, superclass);
+ conn.add(subclass2, RDF.TYPE, superclass2);
+ conn.add(subclass3, RDF.TYPE, superclass3);
+ conn.add(obj, RDFS.LABEL, new LiteralImpl("label"));
+ conn.add(obj2, RDFS.LABEL, new LiteralImpl("label2"));
+ conn.add(obj3, RDFS.LABEL, new LiteralImpl("label3"));
+ conn.add(obj, RDFS.LABEL, new LiteralImpl("label"));
+ conn.add(obj2, RDFS.LABEL, new LiteralImpl("label2"));
+ final String indexSparqlString = ""//
+ + "SELECT ?c ?e ?l " //
+ + "{" //
+ + " ?e a ?c . "//
+ + " ?e <http://www.w3.org/2000/01/rdf-schema#label> ?l "//
+ + "}";//
+
+ final String indexSparqlString2 = ""//
+ + "SELECT ?o ?f ?e ?l ?c " //
+ + "{" //
+ + " ?e <uri:talksTo> ?o . "//
+ + " ?o <http://www.w3.org/2000/01/rdf-schema#label> ?l. "//
+ + " ?c a ?f . " //
+ + "}";//
+
+ final String queryString = ""//
+ + "SELECT ?e ?c ?l ?f ?o " //
+ + "{" //
+ + " ?e a ?c . "//
+ + " ?e <http://www.w3.org/2000/01/rdf-schema#label> ?l. "//
+ + " ?e <uri:talksTo> ?o . "//
+ + " ?o <http://www.w3.org/2000/01/rdf-schema#label> ?l. "//
+ + " ?c a ?f . " //
+ + "}";//
+
+ final CountingResultHandler crh1 = new CountingResultHandler();
+ final CountingResultHandler crh2 = new CountingResultHandler();
+
+ PcjIntegrationTestingUtil.createAndPopulatePcj(conn, accCon, tablename + 1,
+ indexSparqlString, new String[] { "c", "e", "l" },
+ Optional.<PcjVarOrderFactory> absent());
+
+ PcjIntegrationTestingUtil.createAndPopulatePcj(conn, accCon, tablename + 2,
+ indexSparqlString2, new String[] { "o", "f", "e", "l", "c" },
+ Optional.<PcjVarOrderFactory> absent());
+
+ conn.prepareTupleQuery(QueryLanguage.SPARQL, queryString)
+ .evaluate(crh1);
+ PcjIntegrationTestingUtil.deleteCoreRyaTables(accCon, prefix);
+ pcjConn.prepareTupleQuery(QueryLanguage.SPARQL, queryString).evaluate(
+ crh2);
+
+ Assert.assertEquals(3, crh1.getCount());
+ Assert.assertEquals(3, crh2.getCount());
+
+ }
+
+ @Test
+ public void testEvaluateTwoIndexThreeVarOrder4ThreeBindingSet()
+ throws PcjException, RepositoryException, AccumuloException,
+ AccumuloSecurityException, TableExistsException,
+ TableNotFoundException, TupleQueryResultHandlerException,
+ QueryEvaluationException, MalformedQueryException, SailException {
+
+ final URI sub3 = new URIImpl("uri:entity3");
+ final URI subclass3 = new URIImpl("uri:class3");
+ final URI obj3 = new URIImpl("uri:obj3");
+
+ final URI superclass = new URIImpl("uri:superclass");
+ final URI superclass2 = new URIImpl("uri:superclass2");
+ final URI superclass3 = new URIImpl("uri:superclass3");
+
+ conn.add(sub3, RDF.TYPE, subclass3);
+ conn.add(sub3, RDFS.LABEL, new LiteralImpl("label3"));
+ conn.add(sub3, talksTo, obj3);
+ conn.add(subclass, RDF.TYPE, superclass);
+ conn.add(subclass2, RDF.TYPE, superclass2);
+ conn.add(subclass3, RDF.TYPE, superclass3);
+ conn.add(obj, RDFS.LABEL, new LiteralImpl("label"));
+ conn.add(obj2, RDFS.LABEL, new LiteralImpl("label2"));
+ conn.add(obj3, RDFS.LABEL, new LiteralImpl("label3"));
+ conn.add(obj, RDFS.LABEL, new LiteralImpl("label"));
+ conn.add(obj2, RDFS.LABEL, new LiteralImpl("label2"));
+
+ final String indexSparqlString = ""//
+ + "SELECT ?c ?e ?l " //
+ + "{" //
+ + " ?e a ?c . "//
+ + " ?e <http://www.w3.org/2000/01/rdf-schema#label> ?l "//
+ + "}";//
+
+ final String indexSparqlString2 = ""//
+ + "SELECT ?o ?f ?c ?e ?l " //
+ + "{" //
+ + " ?e <uri:talksTo> ?o . "//
+ + " ?o <http://www.w3.org/2000/01/rdf-schema#label> ?l. "//
+ + " ?c a ?f . " //
+ + "}";//
+
+ final String queryString = ""//
+ + "SELECT ?e ?c ?l ?f ?o " //
+ + "{" //
+ + " ?e a ?c . "//
+ + " ?e <http://www.w3.org/2000/01/rdf-schema#label> ?l. "//
+ + " ?e <uri:talksTo> ?o . "//
+ + " ?o <http://www.w3.org/2000/01/rdf-schema#label> ?l. "//
+ + " ?c a ?f . " //
+ + "}";//
+
+ final CountingResultHandler crh1 = new CountingResultHandler();
+ final CountingResultHandler crh2 = new CountingResultHandler();
+
+ PcjIntegrationTestingUtil.createAndPopulatePcj(conn, accCon, tablename + 1,
+ indexSparqlString, new String[] { "c", "e", "l" },
+ Optional.<PcjVarOrderFactory> absent());
+
+ PcjIntegrationTestingUtil.createAndPopulatePcj(conn, accCon, tablename + 2,
+ indexSparqlString2, new String[] { "o", "f", "c", "e", "l" },
+ Optional.<PcjVarOrderFactory> absent());
+
+ conn.prepareTupleQuery(QueryLanguage.SPARQL, queryString)
+ .evaluate(crh1);
+ PcjIntegrationTestingUtil.deleteCoreRyaTables(accCon, prefix);
+ pcjConn.prepareTupleQuery(QueryLanguage.SPARQL, queryString).evaluate(
+ crh2);
+
+ Assert.assertEquals(3, crh1.getCount());
+ Assert.assertEquals(3, crh2.getCount());
+
+ }
+
+ @Test
+ public void testEvaluateTwoIndexThreeVarOrder6ThreeBindingSet()
+ throws MalformedQueryException, RepositoryException,
+ AccumuloException, AccumuloSecurityException, TableExistsException,
+ TableNotFoundException, PcjException,
+ TupleQueryResultHandlerException, QueryEvaluationException,
+ SailException {
+
+ final URI sub3 = new URIImpl("uri:entity3");
+ final URI subclass3 = new URIImpl("uri:class3");
+ final URI obj3 = new URIImpl("uri:obj3");
+
+ final URI superclass = new URIImpl("uri:superclass");
+ final URI superclass2 = new URIImpl("uri:superclass2");
+ final URI superclass3 = new URIImpl("uri:superclass3");
+
+ conn.add(sub3, RDF.TYPE, subclass3);
+ conn.add(sub3, RDFS.LABEL, new LiteralImpl("label3"));
+ conn.add(sub3, talksTo, obj3);
+ conn.add(subclass, RDF.TYPE, superclass);
+ conn.add(subclass2, RDF.TYPE, superclass2);
+ conn.add(subclass3, RDF.TYPE, superclass3);
+ conn.add(obj, RDFS.LABEL, new LiteralImpl("label"));
+ conn.add(obj2, RDFS.LABEL, new LiteralImpl("label2"));
+ conn.add(obj3, RDFS.LABEL, new LiteralImpl("label3"));
+ conn.add(obj, RDFS.LABEL, new LiteralImpl("label"));
+ conn.add(obj2, RDFS.LABEL, new LiteralImpl("label2"));
+ final String indexSparqlString = ""//
+ + "SELECT ?c ?e ?l " //
+ + "{" //
+ + " ?e a ?c . "//
+ + " ?e <http://www.w3.org/2000/01/rdf-schema#label> ?l "//
+ + "}";//
+
+ final String indexSparqlString2 = ""//
+ + "SELECT ?c ?l ?e ?o ?f " //
+ + "{" //
+ + " ?e <uri:talksTo> ?o . "//
+ + " ?o <http://www.w3.org/2000/01/rdf-schema#label> ?l. "//
+ + " ?c a ?f . " //
+ + "}";//
+
+ final String queryString = ""//
+ + "SELECT ?e ?c ?l ?f ?o " //
+ + "{" //
+ + " ?e a ?c . "//
+ + " ?e <http://www.w3.org/2000/01/rdf-schema#label> ?l. "//
+ + " ?e <uri:talksTo> ?o . "//
+ + " ?o <http://www.w3.org/2000/01/rdf-schema#label> ?l. "//
+ + " ?c a ?f . " //
+ + "}";//
+
+ final CountingResultHandler crh1 = new CountingResultHandler();
+ final CountingResultHandler crh2 = new CountingResultHandler();
+
+ PcjIntegrationTestingUtil.createAndPopulatePcj(conn, accCon, tablename + 1,
+ indexSparqlString, new String[] { "c", "e", "l" },
+ Optional.<PcjVarOrderFactory> absent());
+
+ PcjIntegrationTestingUtil.createAndPopulatePcj(conn, accCon, tablename + 2,
+ indexSparqlString2, new String[] { "c", "l", "e", "o", "f" },
+ Optional.<PcjVarOrderFactory> absent());
+
+ conn.prepareTupleQuery(QueryLanguage.SPARQL, queryString)
+ .evaluate(crh1);
+ PcjIntegrationTestingUtil.deleteCoreRyaTables(accCon, prefix);
+ pcjConn.prepareTupleQuery(QueryLanguage.SPARQL, queryString).evaluate(
+ crh2);
+
+ Assert.assertEquals(3, crh1.getCount());
+ Assert.assertEquals(3, crh2.getCount());
+
+ }
+
+ @Test
+ public void testEvaluateTwoIndexThreeVarOrder7ThreeBindingSet()
+ throws PcjException, RepositoryException, AccumuloException,
+ AccumuloSecurityException, TableExistsException,
+ TableNotFoundException, TupleQueryResultHandlerException,
+ QueryEvaluationException, MalformedQueryException, SailException {
+
+ final URI sub3 = new URIImpl("uri:entity3");
+ final URI subclass3 = new URIImpl("uri:class3");
+ final URI obj3 = new URIImpl("uri:obj3");
+
+ final URI superclass = new URIImpl("uri:superclass");
+ final URI superclass2 = new URIImpl("uri:superclass2");
+ final URI superclass3 = new URIImpl("uri:superclass3");
+
+ conn.add(sub3, RDF.TYPE, subclass3);
+ conn.add(sub3, RDFS.LABEL, new LiteralImpl("label3"));
+ conn.add(sub3, talksTo, obj3);
+ conn.add(subclass, RDF.TYPE, superclass);
+ conn.add(subclass2, RDF.TYPE, superclass2);
+ conn.add(subclass3, RDF.TYPE, superclass3);
+ conn.add(obj, RDFS.LABEL, new LiteralImpl("label"));
+ conn.add(obj2, RDFS.LABEL, new LiteralImpl("label2"));
+ conn.add(obj3, RDFS.LABEL, new LiteralImpl("label3"));
+ conn.add(obj, RDFS.LABEL, new LiteralImpl("label"));
+ conn.add(obj2, RDFS.LABEL, new LiteralImpl("label2"));
+ final String indexSparqlString = ""//
+ + "SELECT ?c ?e ?l " //
+ + "{" //
+ + " ?e a ?c . "//
+ + " ?e <http://www.w3.org/2000/01/rdf-schema#label> ?l "//
+ + "}";//
+
+ final String indexSparqlString2 = ""//
+ + "SELECT ?o ?l ?c ?e ?f " //
+ + "{" //
+ + " ?e <uri:talksTo> ?o . "//
+ + " ?o <http://www.w3.org/2000/01/rdf-schema#label> ?l. "//
+ + " ?c a ?f . " //
+ + "}";//
+
+ final String queryString = ""//
+ + "SELECT ?e ?c ?l ?f ?o " //
+ + "{" //
+ + " ?e a ?c . "//
+ + " ?e <http://www.w3.org/2000/01/rdf-schema#label> ?l. "//
+ + " ?e <uri:talksTo> ?o . "//
+ + " ?o <http://www.w3.org/2000/01/rdf-schema#label> ?l. "//
+ + " ?c a ?f . " //
+ + "}";//
+
+ final CountingResultHandler crh1 = new CountingResultHandler();
+ final CountingResultHandler crh2 = new CountingResultHandler();
+
+ PcjIntegrationTestingUtil.createAndPopulatePcj(conn, accCon, tablename + 1,
+ indexSparqlString, new String[] { "c", "e", "l" },
+ Optional.<PcjVarOrderFactory> absent());
+
+ PcjIntegrationTestingUtil.createAndPopulatePcj(conn, accCon, tablename + 2,
+ indexSparqlString2, new String[] { "o", "l", "c", "e", "f" },
+ Optional.<PcjVarOrderFactory> absent());
+
+ conn.prepareTupleQuery(QueryLanguage.SPARQL, queryString)
+ .evaluate(crh1);
+ PcjIntegrationTestingUtil.deleteCoreRyaTables(accCon, prefix);
+ pcjConn.prepareTupleQuery(QueryLanguage.SPARQL, queryString).evaluate(
+ crh2);
+ Assert.assertEquals(3, crh1.getCount());
+ Assert.assertEquals(3, crh2.getCount());
+
+ }
+
+ @Test
+ public void testEvaluateTwoIndexThreeVarInvalidOrder1()
+ throws TupleQueryResultHandlerException, QueryEvaluationException,
+ MalformedQueryException, RepositoryException, AccumuloException,
+ AccumuloSecurityException, TableExistsException,
+ TableNotFoundException, PcjException, SailException {
+
+ final URI superclass = new URIImpl("uri:superclass");
+ final URI superclass2 = new URIImpl("uri:superclass2");
+
+ conn.add(subclass, RDF.TYPE, superclass);
+ conn.add(subclass2, RDF.TYPE, superclass2);
+ conn.add(obj, RDFS.LABEL, new LiteralImpl("label"));
+ conn.add(obj2, RDFS.LABEL, new LiteralImpl("label2"));
+ conn.add(obj, RDFS.LABEL, new LiteralImpl("label"));
+ conn.add(obj2, RDFS.LABEL, new LiteralImpl("label2"));
+
+ final String indexSparqlString = ""//
+ + "SELECT ?c ?e ?l " //
+ + "{" //
+ + " ?e a ?c . "//
+ + " ?e <http://www.w3.org/2000/01/rdf-schema#label> ?l "//
+ + "}";//
+
+ final String indexSparqlString2 = ""//
+ + "SELECT ?e ?o ?f ?c ?l " //
+ + "{" //
+ + " ?e <uri:talksTo> ?o . "//
+ + " ?o <http://www.w3.org/2000/01/rdf-schema#label> ?l. "//
+ + " ?c a ?f . " //
+ + "}";//
+
+ final String queryString = ""//
+ + "SELECT ?e ?c ?l ?f ?o " //
+ + "{" //
+ + " ?e a ?c . "//
+ + " ?e <http://www.w3.org/2000/01/rdf-schema#label> ?l. "//
+ + " ?e <uri:talksTo> ?o . "//
+ + " ?o <http://www.w3.org/2000/01/rdf-schema#label> ?l. "//
+ + " ?c a ?f . " //
+ + "}";//
+
+ final CountingResultHandler crh1 = new CountingResultHandler();
+ final CountingResultHandler crh2 = new CountingResultHandler();
+
+ PcjIntegrationTestingUtil.createAndPopulatePcj(conn, accCon, tablename + 1,
+ indexSparqlString, new String[] { "c", "e", "l" },
+ Optional.<PcjVarOrderFactory> absent());
+
+ PcjIntegrationTestingUtil.createAndPopulatePcj(conn, accCon, tablename + 2,
+ indexSparqlString2, new String[] { "e", "o", "f", "c", "l" },
+ Optional.<PcjVarOrderFactory> absent());
+
+ conn.prepareTupleQuery(QueryLanguage.SPARQL, queryString)
+ .evaluate(crh1);
+ PcjIntegrationTestingUtil.deleteCoreRyaTables(accCon, prefix);
+ pcjConn.prepareTupleQuery(QueryLanguage.SPARQL, queryString).evaluate(
+ crh2);
+ Assert.assertEquals(crh1.getCount(), crh2.getCount());
+
+ }
+
+
+ @Test
+ public void testEvaluateOneIndex() throws PcjException,
+ RepositoryException, AccumuloException, AccumuloSecurityException,
+ TableExistsException, TableNotFoundException,
+ MalformedQueryException, SailException, QueryEvaluationException,
+ TupleQueryResultHandlerException {
+
+ final URI superclass = new URIImpl("uri:superclass");
+ final URI superclass2 = new URIImpl("uri:superclass2");
+
+ conn.add(subclass, RDF.TYPE, superclass);
+ conn.add(subclass2, RDF.TYPE, superclass2);
+ conn.add(obj, RDFS.LABEL, new LiteralImpl("label"));
+ conn.add(obj2, RDFS.LABEL, new LiteralImpl("label2"));
+ conn.add(obj, RDFS.LABEL, new LiteralImpl("label"));
+ conn.add(obj2, RDFS.LABEL, new LiteralImpl("label2"));
+
+ final String indexSparqlString = ""//
+ + "SELECT ?dog ?pig ?duck " //
+ + "{" //
+ + " ?pig a ?dog . "//
+ + " ?pig <http://www.w3.org/2000/01/rdf-schema#label> ?duck "//
+ + "}";//
+
+ final CountingResultHandler crh1 = new CountingResultHandler();
+ final CountingResultHandler crh2 = new CountingResultHandler();
+
+ PcjIntegrationTestingUtil.createAndPopulatePcj(conn, accCon, tablename + 1,
+ indexSparqlString, new String[] { "dog", "pig", "duck" },
+ Optional.<PcjVarOrderFactory> absent());
+
+ conn.prepareTupleQuery(QueryLanguage.SPARQL, indexSparqlString)
+ .evaluate(crh1);
+ PcjIntegrationTestingUtil.deleteCoreRyaTables(accCon, prefix);
+ pcjConn.prepareTupleQuery(QueryLanguage.SPARQL, indexSparqlString)
+ .evaluate(crh2);
+
+ Assert.assertEquals(crh1.count, crh2.count);
+
+ }
+
+ @Test
+ public void testEvaluateTwoIndexThreeVarOrder3() throws PcjException,
+ RepositoryException, AccumuloException, AccumuloSecurityException,
+ TableNotFoundException, TableExistsException,
+ TupleQueryResultHandlerException, QueryEvaluationException,
+ MalformedQueryException, SailException {
+
+ final URI superclass = new URIImpl("uri:superclass");
+ final URI superclass2 = new URIImpl("uri:superclass2");
+
+ conn.add(subclass, RDF.TYPE, superclass);
+ conn.add(subclass2, RDF.TYPE, superclass2);
+ conn.add(obj, RDFS.LABEL, new LiteralImpl("label"));
+ conn.add(obj2, RDFS.LABEL, new LiteralImpl("label2"));
+ conn.add(obj, RDFS.LABEL, new LiteralImpl("label"));
+ conn.add(obj2, RDFS.LABEL, new LiteralImpl("label2"));
+
+ final String indexSparqlString = ""//
+ + "SELECT ?dog ?pig ?duck " //
+ + "{" //
+ + " ?pig a ?dog . "//
+ + " ?pig <http://www.w3.org/2000/01/rdf-schema#label> ?duck "//
+ + "}";//
+
+ final String indexSparqlString2 = ""//
+ + "SELECT ?o ?f ?e ?c ?l " //
+ + "{" //
+ + " ?e <uri:talksTo> ?o . "//
+ + " ?o <http://www.w3.org/2000/01/rdf-schema#label> ?l. "//
+ + " ?c a ?f . " //
+ + "}";//
+
+ final String queryString = ""//
+ + "SELECT ?e ?c ?l ?f ?o " //
+ + "{" //
+ + " ?e a ?c . "//
+ + " ?e <http://www.w3.org/2000/01/rdf-schema#label> ?l. "//
+ + " ?e <uri:talksTo> ?o . "//
+ + " ?o <http://www.w3.org/2000/01/rdf-schema#label> ?l. "//
+ + " ?c a ?f . " //
+ + "}";//
+
+ final CountingResultHandler crh1 = new CountingResultHandler();
+ final CountingResultHandler crh2 = new CountingResultHandler();
+
+ PcjIntegrationTestingUtil.createAndPopulatePcj(conn, accCon, tablename + 1,
+ indexSparqlString, new String[] { "dog", "pig", "duck" },
+ Optional.<PcjVarOrderFactory> absent());
+
+ PcjIntegrationTestingUtil.createAndPopulatePcj(conn, accCon, tablename + 2,
+ indexSparqlString2, new String[] { "o", "f", "e", "c", "l" },
+ Optional.<PcjVarOrderFactory> absent());
+
+ conn.prepareTupleQuery(QueryLanguage.SPARQL, queryString)
+ .evaluate(crh1);
+ PcjIntegrationTestingUtil.deleteCoreRyaTables(accCon, prefix);
+ pcjConn.prepareTupleQuery(QueryLanguage.SPARQL, queryString).evaluate(
+ crh2);
+ Assert.assertEquals(crh1.getCount(), crh2.getCount());
+
+ }
+
+ @Test
+ public void testSupportedVarOrders1() throws PcjException,
+ RepositoryException, AccumuloException, AccumuloSecurityException,
+ TableNotFoundException, TableExistsException,
+ MalformedQueryException, SailException, QueryEvaluationException {
+
+ final URI superclass = new URIImpl("uri:superclass");
+ final URI superclass2 = new URIImpl("uri:superclass2");
+
+ conn.add(subclass, RDF.TYPE, superclass);
+ conn.add(subclass2, RDF.TYPE, superclass2);
+ conn.add(obj, RDFS.LABEL, new LiteralImpl("label"));
+ conn.add(obj2, RDFS.LABEL, new LiteralImpl("label2"));
+ conn.add(obj, RDFS.LABEL, new LiteralImpl("label"));
+ conn.add(obj2, RDFS.LABEL, new LiteralImpl("label2"));
+
+ final String indexSparqlString = ""//
+ + "SELECT ?dog ?pig ?duck " //
+ + "{" //
+ + " ?pig a ?dog . "//
+ + " ?pig <http://www.w3.org/2000/01/rdf-schema#label> ?duck "//
+ + "}";//
+
+ final String indexSparqlString2 = ""//
+ + "SELECT ?o ?f ?e ?c ?l " //
+ + "{" //
+ + " ?e <uri:talksTo> ?o . "//
+ + " ?o <http://www.w3.org/2000/01/rdf-schema#label> ?l. "//
+ + " ?c a ?f . " //
+ + "}";//
+
+
+ PcjIntegrationTestingUtil.createAndPopulatePcj(conn, accCon, tablename + 1,
+ indexSparqlString, new String[] { "dog", "pig", "duck" },
+ Optional.<PcjVarOrderFactory> absent());
+
+ final AccumuloIndexSet ais1 = new AccumuloIndexSet(conf,
+ tablename + 1);
+
+ PcjIntegrationTestingUtil.createAndPopulatePcj(conn, accCon, tablename + 2,
+ indexSparqlString2, new String[] { "o", "f", "e", "c", "l" },
+ Optional.<PcjVarOrderFactory> absent());
+
+ final AccumuloIndexSet ais2 = new AccumuloIndexSet(conf,
+ tablename + 2);
+
+ final Set<String> ais1Set1 = Sets.newHashSet();
+ ais1Set1.add("dog");
+
+ Assert.assertTrue(ais1.supportsBindingSet(ais1Set1));
+ ais1Set1.add("duck");
+
+ Assert.assertTrue(ais1.supportsBindingSet(ais1Set1));
+
+ ais1Set1.add("chicken");
+
+ Assert.assertTrue(ais1.supportsBindingSet(ais1Set1));
+
+ final Set<String> ais2Set1 = Sets.newHashSet();
+ ais2Set1.add("f");
+
+ Assert.assertTrue(ais2.supportsBindingSet(ais2Set1));
+ ais2Set1.add("e");
+
+ Assert.assertTrue(ais2.supportsBindingSet(ais2Set1));
+
+ ais2Set1.add("o");
+
+ Assert.assertTrue(ais2.supportsBindingSet(ais2Set1));
+
+ ais2Set1.add("l");
+
+ Assert.assertTrue(ais2.supportsBindingSet(ais2Set1));
+
+ final Set<String> ais2Set2 = Sets.newHashSet();
+ ais2Set2.add("f");
+
+ Assert.assertTrue(ais2.supportsBindingSet(ais2Set2));
+
+ ais2Set2.add("o");
+
+ Assert.assertTrue(ais2.supportsBindingSet(ais2Set2));
+
+ ais2Set2.add("c");
+
+ Assert.assertTrue(!ais2.supportsBindingSet(ais2Set2));
+
+ final Set<String> ais2Set3 = Sets.newHashSet();
+ ais2Set3.add("c");
+
+ Assert.assertTrue(ais2.supportsBindingSet(ais2Set3));
+
+ ais2Set3.add("e");
+
+ Assert.assertTrue(ais2.supportsBindingSet(ais2Set3));
+
+ ais2Set3.add("l");
+
+ Assert.assertTrue(ais2.supportsBindingSet(ais2Set3));
+
+ }
+
+ @Test
+ public void testEvaluateTwoIndexThreeVarOrder() throws PcjException,
+ RepositoryException, AccumuloException, AccumuloSecurityException,
+ TableNotFoundException, TableExistsException,
+ TupleQueryResultHandlerException, QueryEvaluationException,
+ MalformedQueryException, SailException {
+
+ final URI superclass = new URIImpl("uri:superclass");
+ final URI superclass2 = new URIImpl("uri:superclass2");
+
+ conn.add(subclass, RDF.TYPE, superclass);
+ conn.add(subclass2, RDF.TYPE, superclass2);
+ conn.add(obj, RDFS.LABEL, new LiteralImpl("label"));
+ conn.add(obj2, RDFS.LABEL, new LiteralImpl("label2"));
+ conn.add(obj, RDFS.LABEL, new LiteralImpl("label"));
+ conn.add(obj2, RDFS.LABEL, new LiteralImpl("label2"));
+
+ final String indexSparqlString = ""//
+ + "SELECT ?dog ?pig ?duck " //
+ + "{" //
+ + " ?pig a ?dog . "//
+ + " ?pig <http://www.w3.org/2000/01/rdf-schema#label> ?duck "//
+ + "}";//
+
+ final String indexSparqlString2 = ""//
+ + "SELECT ?o ?f ?e ?c ?l " //
+ + "{" //
+ + " ?e <uri:talksTo> ?o . "//
+ + " ?o <http://www.w3.org/2000/01/rdf-schema#label> ?l. "//
+ + " ?c a ?f . " //
+ + "}";//
+
+ final String queryString = ""//
+ + "SELECT ?e ?c ?l ?f ?o " //
+ + "{" //
+ + " ?e a ?c . "//
+ + " ?e <http://www.w3.org/2000/01/rdf-schema#label> ?l. "//
+ + " ?e <uri:talksTo> ?o . "//
+ + " ?o <http://www.w3.org/2000/01/rdf-schema#label> ?l. "//
+ + " ?c a ?f . " //
+ + "}";//
+
+ final CountingResultHandler crh1 = new CountingResultHandler();
+ final CountingResultHandler crh2 = new CountingResultHandler();
+
+ PcjIntegrationTestingUtil.createAndPopulatePcj(conn, accCon, tablename+1,
+ indexSparqlString, new String[] { "dog", "pig", "duck" },
+ Optional.<PcjVarOrderFactory> absent());
+
+ PcjIntegrationTestingUtil.createAndPopulatePcj(conn, accCon, tablename+2,
+ indexSparqlString2, new String[] { "o", "f", "e", "c", "l" },
+ Optional.<PcjVarOrderFactory> absent());
+
+ conn.prepareTupleQuery(QueryLanguage.SPARQL, queryString)
+ .evaluate(crh1);
+ PcjIntegrationTestingUtil.deleteCoreRyaTables(accCon, prefix);
+ pcjConn.prepareTupleQuery(QueryLanguage.SPARQL, queryString).evaluate(
+ crh2);
+ Assert.assertEquals(crh1.getCount(), crh2.getCount());
+
+ }
+
+ @Test
+ public void testEvaluateTwoIndexValidate() throws Exception {
+
+ final URI superclass = new URIImpl("uri:superclass");
+ final URI superclass2 = new URIImpl("uri:superclass2");
+
+ conn.add(subclass, RDF.TYPE, superclass);
+ conn.add(subclass2, RDF.TYPE, superclass2);
+ conn.add(obj, RDFS.LABEL, new LiteralImpl("label"));
+ conn.add(obj2, RDFS.LABEL, new LiteralImpl("label2"));
+ conn.add(obj, RDFS.LABEL, new LiteralImpl("label"));
+ conn.add(obj2, RDFS.LABEL, new LiteralImpl("label2"));
+
+ final String indexSparqlString = ""//
+ + "SELECT ?dog ?pig ?duck " //
+ + "{" //
+ + " ?pig a ?dog . "//
+ + " ?pig <http://www.w3.org/2000/01/rdf-schema#label> ?duck "//
+ + "}";//
+
+ final String indexSparqlString2 = ""//
+ + "SELECT ?o ?f ?e ?c ?l " //
+ + "{" //
+ + " ?e <uri:talksTo> ?o . "//
+ + " ?o <http://www.w3.org/2000/01/rdf-schema#label> ?l. "//
+ + " ?c a ?f . " //
+ + "}";//
+
+ final String queryString = ""//
+ + "SELECT ?e ?c ?l ?f ?o " //
+ + "{" //
+ + " ?e a ?c . "//
+ + " ?e <http://www.w3.org/2000/01/rdf-schema#label> ?l. "//
+ + " ?e <uri:talksTo> ?o . "//
+ + " ?o <http://www.w3.org/2000/01/rdf-schema#label> ?l. "//
+ + " ?c a ?f . " //
+ + "}";//
+
+ PcjIntegrationTestingUtil.createAndPopulatePcj(conn, accCon, tablename+1,
+ indexSparqlString, new String[] { "dog", "pig", "duck" },
+ Optional.<PcjVarOrderFactory> absent());
+
+ final AccumuloIndexSet ais1 = new AccumuloIndexSet(conf, tablename+1);
+
+ PcjIntegrationTestingUtil.createAndPopulatePcj(conn, accCon, tablename+2,
+ indexSparqlString2, new String[] { "o", "f", "e", "c", "l" },
+ Optional.<PcjVarOrderFactory> absent());
+
+ final AccumuloIndexSet ais2 = new AccumuloIndexSet(conf, tablename+2);
+
+ final List<ExternalTupleSet> index = new ArrayList<>();
+ index.add(ais1);
+ index.add(ais2);
+
+ ParsedQuery pq = null;
+ final SPARQLParser sp = new SPARQLParser();
+ pq = sp.parseQuery(queryString, null);
+ final List<TupleExpr> teList = Lists.newArrayList();
+ final TupleExpr te = pq.getTupleExpr();
+
+ final PCJOptimizer pcj = new PCJOptimizer(index, false);
+ pcj.optimize(te, null, null);
+ teList.add(te);
+
+ final IndexPlanValidator ipv = new IndexPlanValidator(false);
+
+ Assert.assertTrue(ipv.isValid(te));
+
+ }
+
+ @Test
+ public void testEvaluateThreeIndexValidate() throws Exception {
+
+ final URI superclass = new URIImpl("uri:superclass");
+ final URI superclass2 = new URIImpl("uri:superclass2");
+
+ final URI sub = new URIImpl("uri:entity");
+ subclass = new URIImpl("uri:class");
+ obj = new URIImpl("uri:obj");
+ talksTo = new URIImpl("uri:talksTo");
+
+ final URI howlsAt = new URIImpl("uri:howlsAt");
+ final URI subType = new URIImpl("uri:subType");
+ final URI superSuperclass = new URIImpl("uri:super_superclass");
+
+ conn.add(subclass, RDF.TYPE, superclass);
+ conn.add(subclass2, RDF.TYPE, superclass2);
+ conn.add(obj, RDFS.LABEL, new LiteralImpl("label"));
+ conn.add(obj2, RDFS.LABEL, new LiteralImpl("label2"));
+ conn.add(sub, howlsAt, superclass);
+ conn.add(superclass, subType, superSuperclass);
+ conn.add(obj, RDFS.LABEL, new LiteralImpl("label"));
+ conn.add(obj2, RDFS.LABEL, new LiteralImpl("label2"));
+
+ final String indexSparqlString = ""//
+ + "SELECT ?dog ?pig ?duck " //
+ + "{" //
+ + " ?pig a ?dog . "//
+ + " ?pig <http://www.w3.org/2000/01/rdf-schema#label> ?duck "//
+ + "}";//
+
+ final String indexSparqlString2 = ""//
+ + "SELECT ?o ?f ?e ?c ?l " //
+ + "{" //
+ + " ?e <uri:talksTo> ?o . "//
+ + " ?o <http://www.w3.org/2000/01/rdf-schema#label> ?l. "//
+ + " ?c a ?f . " //
+ + "}";//
+
+ final String indexSparqlString3 = ""//
+ + "SELECT ?wolf ?sheep ?chicken " //
+ + "{" //
+ + " ?wolf <uri:howlsAt> ?sheep . "//
+ + " ?sheep <uri:subType> ?chicken. "//
+ + "}";//
+
+ final String queryString = ""//
+ + "SELECT ?e ?c ?l ?f ?o " //
+ + "{" //
+ + " ?e a ?c . "//
+ + " ?e <http://www.w3.org/2000/01/rdf-schema#label> ?l. "//
+ + " ?e <uri:talksTo> ?o . "//
+ + " ?o <http://www.w3.org/2000/01/rdf-schema#label> ?l. "//
+ + " ?c a ?f . " //
+ + " ?e <uri:howlsAt> ?f. "//
+ + " ?f <uri:subType> ?o. "//
+ + "}";//
+
+ PcjIntegrationTestingUtil.createAndPopulatePcj(conn, accCon, tablename+1,
+ indexSparqlString, new String[] { "dog", "pig", "duck" },
+ Optional.<PcjVarOrderFactory> absent());
+
+ final AccumuloIndexSet ais1 = new AccumuloIndexSet(conf, tablename+1);
+
+ PcjIntegrationTestingUtil.createAndPopulatePcj(conn, accCon, tablename+2,
+ indexSparqlString2, new String[] { "o", "f", "e", "c", "l" },
+ Optional.<PcjVarOrderFactory> absent());
+
+ final AccumuloIndexSet ais2 = new AccumuloIndexSet(conf, tablename+2);
+
+ PcjIntegrationTestingUtil.createAndPopulatePcj(conn, accCon, tablename+3,
+ indexSparqlString3,
+ new String[] { "wolf", "sheep", "chicken" },
+ Optional.<PcjVarOrderFactory> absent());
+
+ final AccumuloIndexSet ais3 = new AccumuloIndexSet(conf, tablename+3);
+
+ final List<ExternalTupleSet> index = new ArrayList<>();
+ index.add(ais1);
+ index.add(ais3);
+ index.add(ais2);
+
+ ParsedQuery pq = null;
+ final SPARQLParser sp = new SPARQLParser();
+ pq = sp.parseQuery(queryString, null);
+ final List<TupleExpr> teList = Lists.newArrayList();
+ final TupleExpr te = pq.getTupleExpr();
+
+ final PCJOptimizer pcj = new PCJOptimizer(index, false);
+ pcj.optimize(te, null, null);
+
+ teList.add(te);
+
+ final IndexPlanValidator ipv = new IndexPlanValidator(false);
+
+ Assert.assertTrue(ipv.isValid(te));
+
+ }
+
+ public static class CountingResultHandler implements
+ TupleQueryResultHandler {
+ private int count = 0;
+
+ public int getCount() {
+ return count;
+ }
+
+ public void resetCount() {
+ count = 0;
+ }
+
+ @Override
+ public void startQueryResult(final List<String> arg0)
+ throws TupleQueryResultHandlerException {
+ }
+
+ @Override
+ public void handleSolution(final BindingSet arg0)
+ throws TupleQueryResultHandlerException {
+ count++;
+ System.out.println(arg0);
+ }
+
+ @Override
+ public void endQueryResult() throws TupleQueryResultHandlerException {
+ }
+
+ @Override
+ public void handleBoolean(final boolean arg0)
+ throws QueryResultHandlerException {
+
+ }
+
+ @Override
+ public void handleLinks(final List<String> arg0)
+ throws QueryResultHandlerException {
+
+ }
+
+ }
+
+ private static Configuration getConf() {
+ final AccumuloRdfConfiguration conf = new AccumuloRdfConfiguration();
+ conf.setBoolean(ConfigUtils.USE_MOCK_INSTANCE, true);
+ conf.set(RdfCloudTripleStoreConfiguration.CONF_TBL_PREFIX, "rya_");
+ conf.set(ConfigUtils.CLOUDBASE_USER, "root");
+ conf.set(ConfigUtils.CLOUDBASE_PASSWORD, "");
+ conf.set(ConfigUtils.CLOUDBASE_INSTANCE, "instance");
+ conf.set(ConfigUtils.CLOUDBASE_AUTHS, "");
+ conf.set(PrecomputedJoinIndexerConfig.PCJ_STORAGE_TYPE,PrecomputedJoinStorageType.ACCUMULO.name());
+ return conf;
+ }
+
+}