You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rya.apache.org by pu...@apache.org on 2016/06/21 17:00:19 UTC
[04/10] incubator-rya git commit: RYA-51 Temporal Indexing mongo
support
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/917e7a57/extras/indexing/src/main/java/mvm/rya/sail/config/RyaSailFactory.java
----------------------------------------------------------------------
diff --git a/extras/indexing/src/main/java/mvm/rya/sail/config/RyaSailFactory.java b/extras/indexing/src/main/java/mvm/rya/sail/config/RyaSailFactory.java
index bc11a79..caf4a59 100644
--- a/extras/indexing/src/main/java/mvm/rya/sail/config/RyaSailFactory.java
+++ b/extras/indexing/src/main/java/mvm/rya/sail/config/RyaSailFactory.java
@@ -1,5 +1,7 @@
package mvm.rya.sail.config;
+import java.net.UnknownHostException;
+
import org.apache.accumulo.core.client.AccumuloException;
import org.apache.accumulo.core.client.AccumuloSecurityException;
import org.apache.accumulo.core.client.Connector;
@@ -14,9 +16,9 @@ import org.openrdf.sail.Sail;
* 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
@@ -40,33 +42,33 @@ import mvm.rya.rdftriplestore.inference.InferenceEngineException;
public class RyaSailFactory {
-
-
- public static Sail getInstance(Configuration conf) throws AccumuloException,
- AccumuloSecurityException, RyaDAOException, InferenceEngineException {
-
+
+
+ public static Sail getInstance(final Configuration conf) throws AccumuloException,
+ AccumuloSecurityException, RyaDAOException, InferenceEngineException, NumberFormatException, UnknownHostException {
+
return getRyaSail(conf);
}
-
-
-
- private static Sail getRyaSail(Configuration config) throws AccumuloException, AccumuloSecurityException, RyaDAOException, InferenceEngineException {
-
- RdfCloudTripleStore store = new RdfCloudTripleStore();
+
+
+
+ private static Sail getRyaSail(final Configuration config) throws AccumuloException, AccumuloSecurityException, RyaDAOException, InferenceEngineException, NumberFormatException, UnknownHostException {
+
+ final RdfCloudTripleStore store = new RdfCloudTripleStore();
RyaDAO crdfdao = null;
RdfCloudTripleStoreConfiguration conf;
if (ConfigUtils.getUseMongo(config)) {
conf = new MongoDBRdfConfiguration(config);
conf.setTablePrefix(config.get(RdfCloudTripleStoreConfiguration.CONF_TBL_PREFIX));
ConfigUtils.setIndexers(conf);
-
+
crdfdao = new MongoDBRyaDAO((MongoDBRdfConfiguration)conf);
crdfdao.init();
-
+
conf.setDisplayQueryPlan(true);
store.setRyaDAO(crdfdao);
} else {
- Connector connector = ConfigUtils.getConnector(config);
+ final Connector connector = ConfigUtils.getConnector(config);
crdfdao = new AccumuloRyaDAO();
((AccumuloRyaDAO)crdfdao).setConnector(connector);
@@ -80,18 +82,18 @@ public class RyaSailFactory {
crdfdao.init();
store.setRyaDAO(crdfdao);
}
-
+
if (conf.isInfer()){
- InferenceEngine inferenceEngine = new InferenceEngine();
+ final InferenceEngine inferenceEngine = new InferenceEngine();
inferenceEngine.setConf(conf);
inferenceEngine.setRyaDAO(crdfdao);
inferenceEngine.init();
- store.setInferenceEngine(inferenceEngine);
+ store.setInferenceEngine(inferenceEngine);
}
return store;
}
-
-
+
+
}
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/917e7a57/extras/indexing/src/test/java/mvm/rya/indexing/accumulo/StatementSerializerTest.java
----------------------------------------------------------------------
diff --git a/extras/indexing/src/test/java/mvm/rya/indexing/accumulo/StatementSerializerTest.java b/extras/indexing/src/test/java/mvm/rya/indexing/accumulo/StatementSerializerTest.java
index 88e2841..951e900 100644
--- a/extras/indexing/src/test/java/mvm/rya/indexing/accumulo/StatementSerializerTest.java
+++ b/extras/indexing/src/test/java/mvm/rya/indexing/accumulo/StatementSerializerTest.java
@@ -22,7 +22,7 @@ package mvm.rya.indexing.accumulo;
import junit.framework.Assert;
-import mvm.rya.indexing.accumulo.StatementSerializer;
+import mvm.rya.indexing.StatementSerializer;
import org.junit.Test;
import org.openrdf.model.Statement;
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/917e7a57/extras/indexing/src/test/java/mvm/rya/indexing/accumulo/freetext/AccumuloFreeTextIndexerTest.java
----------------------------------------------------------------------
diff --git a/extras/indexing/src/test/java/mvm/rya/indexing/accumulo/freetext/AccumuloFreeTextIndexerTest.java b/extras/indexing/src/test/java/mvm/rya/indexing/accumulo/freetext/AccumuloFreeTextIndexerTest.java
index c6bd9c2..8a19b3a 100644
--- a/extras/indexing/src/test/java/mvm/rya/indexing/accumulo/freetext/AccumuloFreeTextIndexerTest.java
+++ b/extras/indexing/src/test/java/mvm/rya/indexing/accumulo/freetext/AccumuloFreeTextIndexerTest.java
@@ -53,11 +53,11 @@ import mvm.rya.api.domain.RyaType;
import mvm.rya.api.domain.RyaURI;
import mvm.rya.api.resolver.RdfToRyaConversions;
import mvm.rya.api.resolver.RyaToRdfConversions;
-import mvm.rya.indexing.StatementContraints;
+import mvm.rya.indexing.StatementConstraints;
import mvm.rya.indexing.accumulo.ConfigUtils;
public class AccumuloFreeTextIndexerTest {
- private static final StatementContraints EMPTY_CONSTRAINTS = new StatementContraints();
+ private static final StatementConstraints EMPTY_CONSTRAINTS = new StatementConstraints();
Configuration conf;
@@ -232,9 +232,9 @@ public class AccumuloFreeTextIndexerTest {
f.flush();
Assert.assertEquals(Sets.newHashSet(statement), getSet(f.queryText("hat", EMPTY_CONSTRAINTS)));
- Assert.assertEquals(Sets.newHashSet(statement), getSet(f.queryText("hat", new StatementContraints().setContext(context))));
+ Assert.assertEquals(Sets.newHashSet(statement), getSet(f.queryText("hat", new StatementConstraints().setContext(context))));
Assert.assertEquals(Sets.newHashSet(),
- getSet(f.queryText("hat", new StatementContraints().setContext(vf.createURI("foo:context2")))));
+ getSet(f.queryText("hat", new StatementConstraints().setContext(vf.createURI("foo:context2")))));
}
}
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/917e7a57/extras/indexing/src/test/java/mvm/rya/indexing/accumulo/geo/GeoIndexerSfTest.java
----------------------------------------------------------------------
diff --git a/extras/indexing/src/test/java/mvm/rya/indexing/accumulo/geo/GeoIndexerSfTest.java b/extras/indexing/src/test/java/mvm/rya/indexing/accumulo/geo/GeoIndexerSfTest.java
index 4c22857..0f19a4c 100644
--- a/extras/indexing/src/test/java/mvm/rya/indexing/accumulo/geo/GeoIndexerSfTest.java
+++ b/extras/indexing/src/test/java/mvm/rya/indexing/accumulo/geo/GeoIndexerSfTest.java
@@ -33,7 +33,7 @@ import mvm.rya.api.domain.RyaStatement;
import mvm.rya.api.resolver.RdfToRyaConversions;
import mvm.rya.api.resolver.RyaToRdfConversions;
import mvm.rya.indexing.GeoIndexer;
-import mvm.rya.indexing.StatementContraints;
+import mvm.rya.indexing.StatementConstraints;
import mvm.rya.indexing.accumulo.ConfigUtils;
import mvm.rya.indexing.accumulo.geo.GeoConstants;
import mvm.rya.indexing.accumulo.geo.GeoMesaGeoIndexer;
@@ -71,7 +71,7 @@ public class GeoIndexerSfTest {
private static GeometryFactory gf = new GeometryFactory(new PrecisionModel(), 4326);
private static GeoMesaGeoIndexer g;
- private static final StatementContraints EMPTY_CONSTRAINTS = new StatementContraints();
+ private static final StatementConstraints EMPTY_CONSTRAINTS = new StatementConstraints();
// Here is the landscape:
/**
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/917e7a57/extras/indexing/src/test/java/mvm/rya/indexing/accumulo/geo/GeoIndexerTest.java
----------------------------------------------------------------------
diff --git a/extras/indexing/src/test/java/mvm/rya/indexing/accumulo/geo/GeoIndexerTest.java b/extras/indexing/src/test/java/mvm/rya/indexing/accumulo/geo/GeoIndexerTest.java
index 25db123..14cd267 100644
--- a/extras/indexing/src/test/java/mvm/rya/indexing/accumulo/geo/GeoIndexerTest.java
+++ b/extras/indexing/src/test/java/mvm/rya/indexing/accumulo/geo/GeoIndexerTest.java
@@ -52,12 +52,12 @@ import com.vividsolutions.jts.geom.PrecisionModel;
import com.vividsolutions.jts.geom.impl.PackedCoordinateSequence;
import info.aduna.iteration.CloseableIteration;
-import mvm.rya.indexing.StatementContraints;
+import mvm.rya.indexing.StatementConstraints;
import mvm.rya.indexing.accumulo.ConfigUtils;
public class GeoIndexerTest {
- private static final StatementContraints EMPTY_CONSTRAINTS = new StatementContraints();
+ private static final StatementConstraints EMPTY_CONSTRAINTS = new StatementConstraints();
Configuration conf;
GeometryFactory gf = new GeometryFactory(new PrecisionModel(), 4326);
@@ -266,11 +266,11 @@ public class GeoIndexerTest {
Polygon p1 = gf.createPolygon(r1, new LinearRing[] {});
// query with correct context
- Assert.assertEquals(Sets.newHashSet(statement), getSet(f.queryWithin(p1, new StatementContraints().setContext(context))));
+ Assert.assertEquals(Sets.newHashSet(statement), getSet(f.queryWithin(p1, new StatementConstraints().setContext(context))));
// query with wrong context
Assert.assertEquals(Sets.newHashSet(),
- getSet(f.queryWithin(p1, new StatementContraints().setContext(vf.createURI("foo:context2")))));
+ getSet(f.queryWithin(p1, new StatementConstraints().setContext(vf.createURI("foo:context2")))));
}
}
@@ -295,10 +295,10 @@ public class GeoIndexerTest {
Polygon p1 = gf.createPolygon(r1, new LinearRing[] {});
// query with correct subject
- Assert.assertEquals(Sets.newHashSet(statement), getSet(f.queryWithin(p1, new StatementContraints().setSubject(subject))));
+ Assert.assertEquals(Sets.newHashSet(statement), getSet(f.queryWithin(p1, new StatementConstraints().setSubject(subject))));
// query with wrong subject
- Assert.assertEquals(Sets.newHashSet(), getSet(f.queryWithin(p1, new StatementContraints().setSubject(vf.createURI("foo:subj2")))));
+ Assert.assertEquals(Sets.newHashSet(), getSet(f.queryWithin(p1, new StatementConstraints().setSubject(vf.createURI("foo:subj2")))));
}
}
@@ -324,14 +324,14 @@ public class GeoIndexerTest {
// query with correct context subject
Assert.assertEquals(Sets.newHashSet(statement),
- getSet(f.queryWithin(p1, new StatementContraints().setContext(context).setSubject(subject))));
+ getSet(f.queryWithin(p1, new StatementConstraints().setContext(context).setSubject(subject))));
// query with wrong context
Assert.assertEquals(Sets.newHashSet(),
- getSet(f.queryWithin(p1, new StatementContraints().setContext(vf.createURI("foo:context2")))));
+ getSet(f.queryWithin(p1, new StatementConstraints().setContext(vf.createURI("foo:context2")))));
// query with wrong subject
- Assert.assertEquals(Sets.newHashSet(), getSet(f.queryWithin(p1, new StatementContraints().setSubject(vf.createURI("foo:subj2")))));
+ Assert.assertEquals(Sets.newHashSet(), getSet(f.queryWithin(p1, new StatementConstraints().setSubject(vf.createURI("foo:subj2")))));
}
}
@@ -357,11 +357,11 @@ public class GeoIndexerTest {
// query with correct Predicate
Assert.assertEquals(Sets.newHashSet(statement),
- getSet(f.queryWithin(p1, new StatementContraints().setPredicates(Collections.singleton(predicate)))));
+ getSet(f.queryWithin(p1, new StatementConstraints().setPredicates(Collections.singleton(predicate)))));
// query with wrong predicate
Assert.assertEquals(Sets.newHashSet(),
- getSet(f.queryWithin(p1, new StatementContraints().setPredicates(Collections.singleton(vf.createURI("other:pred"))))));
+ getSet(f.queryWithin(p1, new StatementConstraints().setPredicates(Collections.singleton(vf.createURI("other:pred"))))));
}
}
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/917e7a57/extras/indexing/src/test/java/mvm/rya/indexing/accumulo/temporal/AccumuloTemporalIndexerTest.java
----------------------------------------------------------------------
diff --git a/extras/indexing/src/test/java/mvm/rya/indexing/accumulo/temporal/AccumuloTemporalIndexerTest.java b/extras/indexing/src/test/java/mvm/rya/indexing/accumulo/temporal/AccumuloTemporalIndexerTest.java
index 1c6628f..d2dfc44 100644
--- a/extras/indexing/src/test/java/mvm/rya/indexing/accumulo/temporal/AccumuloTemporalIndexerTest.java
+++ b/extras/indexing/src/test/java/mvm/rya/indexing/accumulo/temporal/AccumuloTemporalIndexerTest.java
@@ -69,11 +69,12 @@ import com.beust.jcommander.internal.Lists;
import info.aduna.iteration.CloseableIteration;
import junit.framework.Assert;
import mvm.rya.api.domain.RyaStatement;
-import mvm.rya.indexing.StatementContraints;
+import mvm.rya.indexing.StatementConstraints;
+import mvm.rya.indexing.StatementSerializer;
import mvm.rya.indexing.TemporalInstant;
+import mvm.rya.indexing.TemporalInstantRfc3339;
import mvm.rya.indexing.TemporalInterval;
import mvm.rya.indexing.accumulo.ConfigUtils;
-import mvm.rya.indexing.accumulo.StatementSerializer;
/**
* JUnit tests for TemporalIndexer and it's implementation AccumuloTemporalIndexer
@@ -108,7 +109,7 @@ public final class AccumuloTemporalIndexerTest {
private static final String STAT_KEYHASH = "keyhash";
private static final String STAT_VALUEHASH = "valuehash";
private static final String TEST_TEMPORAL_INDEX_TABLE_NAME = "testTemporalIndex";
- private static final StatementContraints EMPTY_CONSTRAINTS = new StatementContraints();
+ private static final StatementConstraints EMPTY_CONSTRAINTS = new StatementConstraints();
// Recreate table name for each test instance in this JVM.
String uniquePerTestTemporalIndexTableName = TEST_TEMPORAL_INDEX_TABLE_NAME + String.format("%05d", nextTableSuffixAtomic.getAndIncrement());
@@ -791,7 +792,7 @@ public final class AccumuloTemporalIndexerTest {
/**
* Test method for
- * {@link mvm.rya.indexing.accumulo.temporal.AccumuloTemporalIndexer#queryIntervalEquals(TemporalInterval, StatementContraints)}
+ * {@link mvm.rya.indexing.accumulo.temporal.AccumuloTemporalIndexer#queryIntervalEquals(TemporalInterval, StatementConstraints)}
* .
* @throws IOException
* @throws QueryEvaluationException
@@ -818,7 +819,7 @@ public final class AccumuloTemporalIndexerTest {
/**
* Test interval before a given interval, for method:
- * {@link AccumuloTemporalIndexer#queryIntervalBefore(TemporalInterval, StatementContraints)}.
+ * {@link AccumuloTemporalIndexer#queryIntervalBefore(TemporalInterval, StatementConstraints)}.
*
* @throws IOException
* @throws QueryEvaluationException
@@ -920,7 +921,7 @@ public final class AccumuloTemporalIndexerTest {
}
tIndexer.flush();
CloseableIteration<Statement, QueryEvaluationException> iter;
- StatementContraints constraints = new StatementContraints();
+ StatementConstraints constraints = new StatementConstraints();
constraints.setPredicates(new HashSet<URI>(Arrays.asList( pred2_eventTime, pred1_atTime )));
iter = tIndexer.queryInstantAfterInstant(seriesTs[searchForSeconds], constraints); // EMPTY_CONSTRAINTS);//
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/917e7a57/extras/indexing/src/test/java/mvm/rya/indexing/accumulo/temporal/TemporalInstantTest.java
----------------------------------------------------------------------
diff --git a/extras/indexing/src/test/java/mvm/rya/indexing/accumulo/temporal/TemporalInstantTest.java b/extras/indexing/src/test/java/mvm/rya/indexing/accumulo/temporal/TemporalInstantTest.java
index 6363372..53dc6d2 100644
--- a/extras/indexing/src/test/java/mvm/rya/indexing/accumulo/temporal/TemporalInstantTest.java
+++ b/extras/indexing/src/test/java/mvm/rya/indexing/accumulo/temporal/TemporalInstantTest.java
@@ -25,6 +25,7 @@ import java.util.Date;
import java.util.TimeZone;
import mvm.rya.indexing.TemporalInstant;
+import mvm.rya.indexing.TemporalInstantRfc3339;
import org.apache.commons.codec.binary.StringUtils;
import org.joda.time.DateTime;
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/917e7a57/extras/indexing/src/test/java/mvm/rya/indexing/accumulo/temporal/TemporalIntervalTest.java
----------------------------------------------------------------------
diff --git a/extras/indexing/src/test/java/mvm/rya/indexing/accumulo/temporal/TemporalIntervalTest.java b/extras/indexing/src/test/java/mvm/rya/indexing/accumulo/temporal/TemporalIntervalTest.java
index 6213826..9450fc2 100644
--- a/extras/indexing/src/test/java/mvm/rya/indexing/accumulo/temporal/TemporalIntervalTest.java
+++ b/extras/indexing/src/test/java/mvm/rya/indexing/accumulo/temporal/TemporalIntervalTest.java
@@ -23,6 +23,7 @@ package mvm.rya.indexing.accumulo.temporal;
import java.util.Arrays;
import mvm.rya.indexing.TemporalInstant;
+import mvm.rya.indexing.TemporalInstantRfc3339;
import mvm.rya.indexing.TemporalInterval;
import org.joda.time.DateTime;
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/917e7a57/extras/indexing/src/test/java/mvm/rya/indexing/external/AccumuloConstantPcjIntegrationTest.java
----------------------------------------------------------------------
diff --git a/extras/indexing/src/test/java/mvm/rya/indexing/external/AccumuloConstantPcjIntegrationTest.java b/extras/indexing/src/test/java/mvm/rya/indexing/external/AccumuloConstantPcjIntegrationTest.java
index 8041f16..70ac0d1 100644
--- a/extras/indexing/src/test/java/mvm/rya/indexing/external/AccumuloConstantPcjIntegrationTest.java
+++ b/extras/indexing/src/test/java/mvm/rya/indexing/external/AccumuloConstantPcjIntegrationTest.java
@@ -1,5 +1,7 @@
package mvm.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
@@ -70,7 +72,8 @@ public class AccumuloConstantPcjIntegrationTest {
TupleQueryResultHandlerException, QueryEvaluationException,
MalformedQueryException, AccumuloException,
AccumuloSecurityException, TableExistsException,
- TableNotFoundException, RyaDAOException, InferenceEngineException {
+ TableNotFoundException, RyaDAOException, InferenceEngineException,
+ NumberFormatException, UnknownHostException {
repo = PcjIntegrationTestingUtil.getNonPcjRepo(prefix, "instance");
conn = repo.getConnection();
@@ -379,16 +382,16 @@ public class AccumuloConstantPcjIntegrationTest {
}
public void resetCount() {
- this.count = 0;
+ count = 0;
}
@Override
- public void startQueryResult(List<String> arg0)
+ public void startQueryResult(final List<String> arg0)
throws TupleQueryResultHandlerException {
}
@Override
- public void handleSolution(BindingSet arg0)
+ public void handleSolution(final BindingSet arg0)
throws TupleQueryResultHandlerException {
count++;
}
@@ -398,12 +401,12 @@ public class AccumuloConstantPcjIntegrationTest {
}
@Override
- public void handleBoolean(boolean arg0)
+ public void handleBoolean(final boolean arg0)
throws QueryResultHandlerException {
}
@Override
- public void handleLinks(List<String> arg0)
+ public void handleLinks(final List<String> arg0)
throws QueryResultHandlerException {
}
}
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/917e7a57/extras/indexing/src/test/java/mvm/rya/indexing/external/AccumuloPcjIntegrationTest.java
----------------------------------------------------------------------
diff --git a/extras/indexing/src/test/java/mvm/rya/indexing/external/AccumuloPcjIntegrationTest.java b/extras/indexing/src/test/java/mvm/rya/indexing/external/AccumuloPcjIntegrationTest.java
index 393ae74..917bfa0 100644
--- a/extras/indexing/src/test/java/mvm/rya/indexing/external/AccumuloPcjIntegrationTest.java
+++ b/extras/indexing/src/test/java/mvm/rya/indexing/external/AccumuloPcjIntegrationTest.java
@@ -1,5 +1,7 @@
package mvm.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
@@ -87,7 +89,8 @@ public class AccumuloPcjIntegrationTest {
TupleQueryResultHandlerException, QueryEvaluationException,
MalformedQueryException, AccumuloException,
AccumuloSecurityException, TableExistsException, RyaDAOException,
- TableNotFoundException, InferenceEngineException {
+ TableNotFoundException, InferenceEngineException,
+ NumberFormatException, UnknownHostException {
repo = PcjIntegrationTestingUtil.getNonPcjRepo(prefix, "instance");
conn = repo.getConnection();
@@ -1396,16 +1399,16 @@ public class AccumuloPcjIntegrationTest {
}
public void resetCount() {
- this.count = 0;
+ count = 0;
}
@Override
- public void startQueryResult(List<String> arg0)
+ public void startQueryResult(final List<String> arg0)
throws TupleQueryResultHandlerException {
}
@Override
- public void handleSolution(BindingSet arg0)
+ public void handleSolution(final BindingSet arg0)
throws TupleQueryResultHandlerException {
count++;
System.out.println(arg0);
@@ -1416,13 +1419,13 @@ public class AccumuloPcjIntegrationTest {
}
@Override
- public void handleBoolean(boolean arg0)
+ public void handleBoolean(final boolean arg0)
throws QueryResultHandlerException {
}
@Override
- public void handleLinks(List<String> arg0)
+ public void handleLinks(final List<String> arg0)
throws QueryResultHandlerException {
}
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/917e7a57/extras/indexing/src/test/java/mvm/rya/indexing/external/PCJOptionalTestIT.java
----------------------------------------------------------------------
diff --git a/extras/indexing/src/test/java/mvm/rya/indexing/external/PCJOptionalTestIT.java b/extras/indexing/src/test/java/mvm/rya/indexing/external/PCJOptionalTestIT.java
index c7b277b..38861b0 100644
--- a/extras/indexing/src/test/java/mvm/rya/indexing/external/PCJOptionalTestIT.java
+++ b/extras/indexing/src/test/java/mvm/rya/indexing/external/PCJOptionalTestIT.java
@@ -18,17 +18,10 @@
*/
package mvm.rya.indexing.external;
+import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.List;
-import mvm.rya.api.persist.RyaDAOException;
-import mvm.rya.indexing.external.PrecompJoinOptimizerIntegrationTest.CountingResultHandler;
-import mvm.rya.indexing.external.PrecompJoinOptimizerTest.NodeCollector;
-import mvm.rya.indexing.external.tupleSet.ExternalTupleSet;
-import mvm.rya.indexing.external.tupleSet.SimpleExternalTupleSet;
-import mvm.rya.indexing.pcj.matching.PCJOptimizer;
-import mvm.rya.rdftriplestore.inference.InferenceEngineException;
-
import org.apache.accumulo.core.client.AccumuloException;
import org.apache.accumulo.core.client.AccumuloSecurityException;
import org.apache.accumulo.core.client.Connector;
@@ -65,257 +58,267 @@ import org.openrdf.sail.SailException;
import com.beust.jcommander.internal.Lists;
import com.google.common.base.Optional;
-public class PCJOptionalTestIT {
-
-
- private SailRepositoryConnection conn, pcjConn;
- private SailRepository repo, pcjRepo;
- private Connector accCon;
- String tablePrefix = "table_";
- URI sub, sub2, obj, obj2, subclass, subclass2, talksTo, sub3, subclass3;
+import mvm.rya.api.persist.RyaDAOException;
+import mvm.rya.indexing.external.PrecompJoinOptimizerIntegrationTest.CountingResultHandler;
+import mvm.rya.indexing.external.PrecompJoinOptimizerTest.NodeCollector;
+import mvm.rya.indexing.external.tupleSet.ExternalTupleSet;
+import mvm.rya.indexing.external.tupleSet.SimpleExternalTupleSet;
+import mvm.rya.rdftriplestore.inference.InferenceEngineException;
- @Before
- public void init() throws RepositoryException,
- TupleQueryResultHandlerException, QueryEvaluationException,
- MalformedQueryException, AccumuloException,
- AccumuloSecurityException, TableExistsException, RyaDAOException,
- TableNotFoundException, InferenceEngineException {
+public class PCJOptionalTestIT {
- repo = PcjIntegrationTestingUtil.getNonPcjRepo(tablePrefix, "instance");
- conn = repo.getConnection();
-
- pcjRepo = PcjIntegrationTestingUtil.getPcjRepo(tablePrefix, "instance");
- pcjConn = pcjRepo.getConnection();
-
- 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);
-
- sub2 = new URIImpl("uri:entity2");
- subclass2 = new URIImpl("uri:class2");
- obj2 = new URIImpl("uri:obj2");
- sub3 = new URIImpl("uri:entity3");
- subclass3 = new URIImpl("uri:class3");
-
-
- conn.add(sub2, RDF.TYPE, subclass2);
- conn.add(sub2, RDFS.LABEL, new LiteralImpl("label2"));
- conn.add(sub2, talksTo, obj2);
- conn.add(sub3, RDF.TYPE, subclass3);
- conn.add(sub3, RDFS.LABEL, new LiteralImpl("label3"));
+ private SailRepositoryConnection conn, pcjConn;
+ private SailRepository repo, pcjRepo;
+ private Connector accCon;
+ String tablePrefix = "table_";
+ URI sub, sub2, obj, obj2, subclass, subclass2, talksTo, sub3, subclass3;
+
+ @Before
+ public void init() throws RepositoryException,
+ TupleQueryResultHandlerException, QueryEvaluationException,
+ MalformedQueryException, AccumuloException,
+ AccumuloSecurityException, TableExistsException, RyaDAOException,
+ TableNotFoundException, InferenceEngineException, NumberFormatException,
+ UnknownHostException {
+
+ repo = PcjIntegrationTestingUtil.getNonPcjRepo(tablePrefix, "instance");
+ conn = repo.getConnection();
+
+ pcjRepo = PcjIntegrationTestingUtil.getPcjRepo(tablePrefix, "instance");
+ pcjConn = pcjRepo.getConnection();
+
+ 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);
+
+ sub2 = new URIImpl("uri:entity2");
+ subclass2 = new URIImpl("uri:class2");
+ obj2 = new URIImpl("uri:obj2");
+ sub3 = new URIImpl("uri:entity3");
+ subclass3 = new URIImpl("uri:class3");
+
+
+ conn.add(sub2, RDF.TYPE, subclass2);
+ conn.add(sub2, RDFS.LABEL, new LiteralImpl("label2"));
+ conn.add(sub2, talksTo, obj2);
+ conn.add(sub3, RDF.TYPE, subclass3);
+ conn.add(sub3, RDFS.LABEL, new LiteralImpl("label3"));
- accCon = new MockInstance("instance").getConnector("root",
- new PasswordToken(""));
- }
+ 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, tablePrefix);
- PcjIntegrationTestingUtil.deleteIndexTables(accCon, 2, tablePrefix);
+ @After
+ public void close() throws RepositoryException, AccumuloException,
+ AccumuloSecurityException, TableNotFoundException {
- }
+ PcjIntegrationTestingUtil.closeAndShutdown(conn, repo);
+ PcjIntegrationTestingUtil.closeAndShutdown(pcjConn, pcjRepo);
+ PcjIntegrationTestingUtil.deleteCoreRyaTables(accCon, tablePrefix);
+ PcjIntegrationTestingUtil.deleteIndexTables(accCon, 2, tablePrefix);
+ }
- @Test
- public void testEvaluateSingeIndexExactMatch()
- throws TupleQueryResultHandlerException, QueryEvaluationException,
- MalformedQueryException, RepositoryException, AccumuloException,
- AccumuloSecurityException, TableExistsException, RyaDAOException,
- SailException, TableNotFoundException, PcjException, InferenceEngineException {
- String indexSparqlString = ""//
- + "SELECT ?e ?c ?l ?o" //
- + "{" //
- + " ?e a ?c . "//
- + " ?e <http://www.w3.org/2000/01/rdf-schema#label> ?l "//
- + " OPTIONAL{?e <uri:talksTo> ?o } . "//
- + "}";//
+ @Test
+ public void testEvaluateSingeIndexExactMatch()
+ throws TupleQueryResultHandlerException, QueryEvaluationException,
+ MalformedQueryException, RepositoryException, AccumuloException,
+ AccumuloSecurityException, TableExistsException, RyaDAOException,
+ SailException, TableNotFoundException, PcjException, InferenceEngineException {
- PcjIntegrationTestingUtil.createAndPopulatePcj(conn, accCon, tablePrefix
- + "INDEX_1", indexSparqlString, new String[] { "e", "c", "l", "o" },
- Optional.<PcjVarOrderFactory> absent());
- String queryString = ""//
- + "SELECT ?e ?c ?l ?o " //
- + "{" //
- + " ?e a ?c . "//
- + " ?e <http://www.w3.org/2000/01/rdf-schema#label> ?l . "//
- + " OPTIONAL {?e <uri:talksTo> ?o } . "//
- + "}";//
+ final String indexSparqlString = ""//
+ + "SELECT ?e ?c ?l ?o" //
+ + "{" //
+ + " ?e a ?c . "//
+ + " ?e <http://www.w3.org/2000/01/rdf-schema#label> ?l "//
+ + " OPTIONAL{?e <uri:talksTo> ?o } . "//
+ + "}";//
- CountingResultHandler crh = new CountingResultHandler();
- PcjIntegrationTestingUtil.deleteCoreRyaTables(accCon, tablePrefix);
- PcjIntegrationTestingUtil.closeAndShutdown(conn, repo);
- TupleQuery tupQuery = pcjConn.prepareTupleQuery(QueryLanguage.SPARQL, queryString);
- tupQuery.evaluate(crh);
+ PcjIntegrationTestingUtil.createAndPopulatePcj(conn, accCon, tablePrefix
+ + "INDEX_1", indexSparqlString, new String[] { "e", "c", "l", "o" },
+ 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 . "//
+ + " OPTIONAL {?e <uri:talksTo> ?o } . "//
+ + "}";//
- Assert.assertEquals(3, crh.getCount());
+ final CountingResultHandler crh = new CountingResultHandler();
+ PcjIntegrationTestingUtil.deleteCoreRyaTables(accCon, tablePrefix);
+ PcjIntegrationTestingUtil.closeAndShutdown(conn, repo);
+ final TupleQuery tupQuery = pcjConn.prepareTupleQuery(QueryLanguage.SPARQL, queryString);
+ tupQuery.evaluate(crh);
- }
+ Assert.assertEquals(3, crh.getCount());
+ }
- @Test
- public void testEvaluateSingeIndex()
- throws TupleQueryResultHandlerException, QueryEvaluationException,
- MalformedQueryException, RepositoryException, AccumuloException,
- AccumuloSecurityException, TableExistsException, RyaDAOException,
- SailException, TableNotFoundException, PcjException, InferenceEngineException {
- String indexSparqlString = ""//
- + "SELECT ?e ?l ?o" //
- + "{" //
- + " ?e <http://www.w3.org/2000/01/rdf-schema#label> ?l "//
- + " OPTIONAL{?e <uri:talksTo> ?o } . "//
- + "}";//
+ @Test
+ public void testEvaluateSingeIndex()
+ throws TupleQueryResultHandlerException, QueryEvaluationException,
+ MalformedQueryException, RepositoryException, AccumuloException,
+ AccumuloSecurityException, TableExistsException, RyaDAOException,
+ SailException, TableNotFoundException, PcjException, InferenceEngineException,
+ NumberFormatException, UnknownHostException {
- PcjIntegrationTestingUtil.createAndPopulatePcj(conn, accCon, tablePrefix
- + "INDEX_1", indexSparqlString, new String[] { "e", "l", "o" },
- Optional.<PcjVarOrderFactory> absent());
- String queryString = ""//
- + "SELECT ?e ?c ?l ?o " //
- + "{" //
- + " ?e <http://www.w3.org/2000/01/rdf-schema#label> ?l . "//
- + " OPTIONAL {?e <uri:talksTo> ?o } . "//
- + " ?e a ?c . "//
- + "}";//
+ final String indexSparqlString = ""//
+ + "SELECT ?e ?l ?o" //
+ + "{" //
+ + " ?e <http://www.w3.org/2000/01/rdf-schema#label> ?l "//
+ + " OPTIONAL{?e <uri:talksTo> ?o } . "//
+ + "}";//
- CountingResultHandler crh = new CountingResultHandler();
- PcjIntegrationTestingUtil.deleteCoreRyaTables(accCon, tablePrefix);
- PcjIntegrationTestingUtil.closeAndShutdown(conn, repo);
+ PcjIntegrationTestingUtil.createAndPopulatePcj(conn, accCon, tablePrefix
+ + "INDEX_1", indexSparqlString, new String[] { "e", "l", "o" },
+ Optional.<PcjVarOrderFactory> absent());
+ final String queryString = ""//
+ + "SELECT ?e ?c ?l ?o " //
+ + "{" //
+ + " ?e <http://www.w3.org/2000/01/rdf-schema#label> ?l . "//
+ + " OPTIONAL {?e <uri:talksTo> ?o } . "//
+ + " ?e a ?c . "//
+ + "}";//
- repo = PcjIntegrationTestingUtil.getPcjRepo(tablePrefix, "instance");
- conn = repo.getConnection();
- conn.add(sub, RDF.TYPE, subclass);
- conn.add(sub2, RDF.TYPE, subclass2);
- conn.add(sub3, RDF.TYPE, subclass3);
+ final CountingResultHandler crh = new CountingResultHandler();
+ PcjIntegrationTestingUtil.deleteCoreRyaTables(accCon, tablePrefix);
+ PcjIntegrationTestingUtil.closeAndShutdown(conn, repo);
+ repo = PcjIntegrationTestingUtil.getPcjRepo(tablePrefix, "instance");
+ conn = repo.getConnection();
+ conn.add(sub, RDF.TYPE, subclass);
+ conn.add(sub2, RDF.TYPE, subclass2);
+ conn.add(sub3, RDF.TYPE, subclass3);
- TupleQuery tupQuery = pcjConn.prepareTupleQuery(QueryLanguage.SPARQL, queryString);
- tupQuery.evaluate(crh);
- Assert.assertEquals(3, crh.getCount());
+ final TupleQuery tupQuery = pcjConn.prepareTupleQuery(QueryLanguage.SPARQL, queryString);
+ tupQuery.evaluate(crh);
- }
+ Assert.assertEquals(3, crh.getCount());
+ }
- @Test
- public void testSimpleOptionalTest1() throws Exception {
- String query = ""//
- + "SELECT ?u ?s ?t " //
- + "{" //
- + " ?s a ?t ."//
- + " OPTIONAL{?t <http://www.w3.org/2000/01/rdf-schema#label> ?u } ."//
- + " ?u <uri:talksTo> ?s . "//
- + "}";//
+ @Test
+ public void testSimpleOptionalTest1() throws Exception {
- final SPARQLParser parser = new SPARQLParser();
+ final String query = ""//
+ + "SELECT ?u ?s ?t " //
+ + "{" //
+ + " ?s a ?t ."//
+ + " OPTIONAL{?t <http://www.w3.org/2000/01/rdf-schema#label> ?u } ."//
+ + " ?u <uri:talksTo> ?s . "//
+ + "}";//
- final ParsedQuery pq1 = parser.parseQuery(query, null);
+ final SPARQLParser parser = new SPARQLParser();
- final SimpleExternalTupleSet extTup1 = new SimpleExternalTupleSet(
- (Projection) pq1.getTupleExpr().clone());
+ final ParsedQuery pq1 = parser.parseQuery(query, null);
- final List<ExternalTupleSet> list = new ArrayList<ExternalTupleSet>();
+ final SimpleExternalTupleSet extTup1 = new SimpleExternalTupleSet(
+ (Projection) pq1.getTupleExpr().clone());
- list.add(extTup1);
+ final List<ExternalTupleSet> list = new ArrayList<ExternalTupleSet>();
- final List<QueryModelNode> optTupNodes = Lists.newArrayList();
- optTupNodes.add(extTup1);
+ list.add(extTup1);
- final PCJOptimizer pcj = new PCJOptimizer(list, true);
- final TupleExpr te = pq1.getTupleExpr();
- pcj.optimize(te, null, null);
+ final List<QueryModelNode> optTupNodes = Lists.newArrayList();
+ optTupNodes.add(extTup1);
- final NodeCollector nc = new NodeCollector();
- te.visit(nc);
+ final PrecompJoinOptimizer pcj = new PrecompJoinOptimizer(list, true);
+ final TupleExpr te = pq1.getTupleExpr();
+ pcj.optimize(te, null, null);
- Assert.assertEquals(nc.qNodes.size(), optTupNodes.size());
- for (final QueryModelNode node : nc.qNodes) {
- Assert.assertTrue(optTupNodes.contains(node));
- }
+ final NodeCollector nc = new NodeCollector();
+ te.visit(nc);
- }
+ final List<QueryModelNode> qNodes = nc.getNodes();
+ Assert.assertEquals(qNodes.size(), optTupNodes.size());
+ for (final QueryModelNode node : qNodes) {
+ Assert.assertTrue(optTupNodes.contains(node));
+ }
- @Test
- public void testSimpleOptionalTest2() throws Exception {
+ }
- String query = ""//
- + "SELECT ?u ?s ?t " //
- + "{" //
- + " ?s a ?t ."//
- + " OPTIONAL{?t <http://www.w3.org/2000/01/rdf-schema#label> ?u } ."//
- + " ?u <uri:talksTo> ?s . "//
- + " ?s a ?u ."//
- + "}";//
+ @Test
+ public void testSimpleOptionalTest2() throws Exception {
- String pcj = ""//
- + "SELECT ?d ?b ?c " //
- + "{" //
- + " ?b a ?c ."//
- + " OPTIONAL{?c <http://www.w3.org/2000/01/rdf-schema#label> ?d } ."//
- + " ?d <uri:talksTo> ?b . "//
- + "}";//
+ final String query = ""//
+ + "SELECT ?u ?s ?t " //
+ + "{" //
+ + " ?s a ?t ."//
+ + " OPTIONAL{?t <http://www.w3.org/2000/01/rdf-schema#label> ?u } ."//
+ + " ?u <uri:talksTo> ?s . "//
+ + " ?s a ?u ."//
+ + "}";//
- String relabel_pcj = ""//
- + "SELECT ?u ?s ?t " //
- + "{" //
- + " ?s a ?t ."//
- + " OPTIONAL{?t <http://www.w3.org/2000/01/rdf-schema#label> ?u } ."//
- + " ?u <uri:talksTo> ?s . "//
- + "}";//
+ final String pcj = ""//
+ + "SELECT ?d ?b ?c " //
+ + "{" //
+ + " ?b a ?c ."//
+ + " OPTIONAL{?c <http://www.w3.org/2000/01/rdf-schema#label> ?d } ."//
+ + " ?d <uri:talksTo> ?b . "//
+ + "}";//
- final SPARQLParser parser = new SPARQLParser();
+ final String relabel_pcj = ""//
+ + "SELECT ?u ?s ?t " //
+ + "{" //
+ + " ?s a ?t ."//
+ + " OPTIONAL{?t <http://www.w3.org/2000/01/rdf-schema#label> ?u } ."//
+ + " ?u <uri:talksTo> ?s . "//
+ + "}";//
- final ParsedQuery pq1 = parser.parseQuery(query, null);
- final ParsedQuery pq2 = parser.parseQuery(pcj, null);
- final ParsedQuery pq3 = parser.parseQuery(relabel_pcj, null);
- final SimpleExternalTupleSet extTup1 = new SimpleExternalTupleSet(
- (Projection) pq2.getTupleExpr());
- final SimpleExternalTupleSet extTup2 = new SimpleExternalTupleSet(
- (Projection) pq3.getTupleExpr());
+ final SPARQLParser parser = new SPARQLParser();
- final List<ExternalTupleSet> list = new ArrayList<ExternalTupleSet>();
+ final ParsedQuery pq1 = parser.parseQuery(query, null);
+ final ParsedQuery pq2 = parser.parseQuery(pcj, null);
+ final ParsedQuery pq3 = parser.parseQuery(relabel_pcj, null);
- list.add(extTup1);
+ final SimpleExternalTupleSet extTup1 = new SimpleExternalTupleSet(
+ (Projection) pq2.getTupleExpr());
+ final SimpleExternalTupleSet extTup2 = new SimpleExternalTupleSet(
+ (Projection) pq3.getTupleExpr());
- final List<QueryModelNode> optTupNodes = Lists.newArrayList();
- optTupNodes.add(extTup2);
+ final List<ExternalTupleSet> list = new ArrayList<ExternalTupleSet>();
- final PCJOptimizer opt = new PCJOptimizer(list, true);
- final TupleExpr te = pq1.getTupleExpr();
- opt.optimize(te, null, null);
+ list.add(extTup1);
- final NodeCollector nc = new NodeCollector();
- te.visit(nc);
+ final List<QueryModelNode> optTupNodes = Lists.newArrayList();
+ optTupNodes.add(extTup2);
- Assert.assertEquals(nc.qNodes.size(), optTupNodes.size() + 1);
- for (QueryModelNode node : optTupNodes) {
- Assert.assertTrue(nc.qNodes.contains(node));
- }
+ final PrecompJoinOptimizer opt = new PrecompJoinOptimizer(list, true);
+ final TupleExpr te = pq1.getTupleExpr();
+ opt.optimize(te, null, null);
- }
+ final NodeCollector nc = new NodeCollector();
+ te.visit(nc);
+ final List<QueryModelNode> qNodes = nc.getNodes();
+ Assert.assertEquals(qNodes.size(), optTupNodes.size() + 1);
+ for (final QueryModelNode node : optTupNodes) {
+ Assert.assertTrue(qNodes.contains(node));
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/917e7a57/extras/indexing/src/test/java/mvm/rya/indexing/external/PcjIntegrationTestingUtil.java
----------------------------------------------------------------------
diff --git a/extras/indexing/src/test/java/mvm/rya/indexing/external/PcjIntegrationTestingUtil.java b/extras/indexing/src/test/java/mvm/rya/indexing/external/PcjIntegrationTestingUtil.java
index 3b87179..7646084 100644
--- a/extras/indexing/src/test/java/mvm/rya/indexing/external/PcjIntegrationTestingUtil.java
+++ b/extras/indexing/src/test/java/mvm/rya/indexing/external/PcjIntegrationTestingUtil.java
@@ -21,6 +21,7 @@ package mvm.rya.indexing.external;
import static com.google.common.base.Preconditions.checkNotNull;
+import java.net.UnknownHostException;
import java.util.Collection;
import java.util.HashSet;
import java.util.Set;
@@ -70,117 +71,119 @@ import mvm.rya.sail.config.RyaSailFactory;
public class PcjIntegrationTestingUtil {
- private static final AccumuloPcjSerializer converter = new AccumuloPcjSerializer();
-
- public static Set<QueryModelNode> getTupleSets(TupleExpr te) {
- final ExternalTupleVisitor etv = new ExternalTupleVisitor();
- te.visit(etv);
- return etv.getExtTup();
- }
-
- public static void deleteCoreRyaTables(Connector accCon, String prefix)
- throws AccumuloException, AccumuloSecurityException,
- TableNotFoundException {
- final TableOperations ops = accCon.tableOperations();
- if (ops.exists(prefix + "spo")) {
- ops.delete(prefix + "spo");
- }
- if (ops.exists(prefix + "po")) {
- ops.delete(prefix + "po");
- }
- if (ops.exists(prefix + "osp")) {
- ops.delete(prefix + "osp");
- }
- }
-
- public static SailRepository getPcjRepo(String tablePrefix, String instance)
- throws AccumuloException, AccumuloSecurityException,
- RyaDAOException, RepositoryException, InferenceEngineException {
-
- final AccumuloRdfConfiguration pcjConf = new AccumuloRdfConfiguration();
- pcjConf.set(ConfigUtils.USE_PCJ, "true");
- pcjConf.set(ConfigUtils.USE_MOCK_INSTANCE, "true");
- pcjConf.set(ConfigUtils.CLOUDBASE_INSTANCE, instance);
- pcjConf.setTablePrefix(tablePrefix);
-
- final Sail pcjSail = RyaSailFactory.getInstance(pcjConf);
- final SailRepository pcjRepo = new SailRepository(pcjSail);
- pcjRepo.initialize();
- return pcjRepo;
- }
-
- public static SailRepository getNonPcjRepo(String tablePrefix,
- String instance) throws AccumuloException,
- AccumuloSecurityException, RyaDAOException, RepositoryException, InferenceEngineException {
-
- final AccumuloRdfConfiguration nonPcjConf = new AccumuloRdfConfiguration();
- nonPcjConf.set(ConfigUtils.USE_MOCK_INSTANCE, "true");
- nonPcjConf.set(ConfigUtils.CLOUDBASE_INSTANCE, instance);
- nonPcjConf.setTablePrefix(tablePrefix);
-
- final Sail nonPcjSail = RyaSailFactory.getInstance(nonPcjConf);
- final SailRepository nonPcjRepo = new SailRepository(nonPcjSail);
- nonPcjRepo.initialize();
- return nonPcjRepo;
- }
-
- public static void closeAndShutdown(SailRepositoryConnection connection,
- SailRepository repo) throws RepositoryException {
- connection.close();
- repo.shutDown();
- }
-
- public static void deleteIndexTables(Connector accCon, int tableNum,
- String prefix) throws AccumuloException, AccumuloSecurityException,
- TableNotFoundException {
- final TableOperations ops = accCon.tableOperations();
- final String tablename = prefix + "INDEX_";
- for (int i = 1; i < tableNum + 1; i++) {
- if (ops.exists(tablename + i)) {
- ops.delete(tablename + i);
- }
- }
- }
-
- public static class BindingSetAssignmentCollector extends
- QueryModelVisitorBase<RuntimeException> {
-
- private final Set<QueryModelNode> bindingSetList = Sets.newHashSet();
-
- public Set<QueryModelNode> getBindingSetAssignments() {
- return bindingSetList;
- }
-
- public boolean containsBSAs() {
- return bindingSetList.size() > 0;
- }
-
- @Override
- public void meet(BindingSetAssignment node) {
- bindingSetList.add(node);
- super.meet(node);
- }
-
- }
-
- public static class ExternalTupleVisitor extends
- QueryModelVisitorBase<RuntimeException> {
-
- private final Set<QueryModelNode> eSet = new HashSet<>();
-
- @Override
- public void meetNode(QueryModelNode node) throws RuntimeException {
- if (node instanceof ExternalTupleSet) {
- eSet.add(node);
- }
- super.meetNode(node);
- }
-
- public Set<QueryModelNode> getExtTup() {
- return eSet;
- }
-
- }
+ private static final AccumuloPcjSerializer converter = new AccumuloPcjSerializer();
+
+ public static Set<QueryModelNode> getTupleSets(final TupleExpr te) {
+ final ExternalTupleVisitor etv = new ExternalTupleVisitor();
+ te.visit(etv);
+ return etv.getExtTup();
+ }
+
+ public static void deleteCoreRyaTables(final Connector accCon, final String prefix)
+ throws AccumuloException, AccumuloSecurityException,
+ TableNotFoundException {
+ final TableOperations ops = accCon.tableOperations();
+ if (ops.exists(prefix + "spo")) {
+ ops.delete(prefix + "spo");
+ }
+ if (ops.exists(prefix + "po")) {
+ ops.delete(prefix + "po");
+ }
+ if (ops.exists(prefix + "osp")) {
+ ops.delete(prefix + "osp");
+ }
+ }
+
+ public static SailRepository getPcjRepo(final String tablePrefix, final String instance)
+ throws AccumuloException, AccumuloSecurityException,
+ RyaDAOException, RepositoryException, InferenceEngineException,
+ NumberFormatException, UnknownHostException {
+
+ final AccumuloRdfConfiguration pcjConf = new AccumuloRdfConfiguration();
+ pcjConf.set(ConfigUtils.USE_PCJ, "true");
+ pcjConf.set(ConfigUtils.USE_MOCK_INSTANCE, "true");
+ pcjConf.set(ConfigUtils.CLOUDBASE_INSTANCE, instance);
+ pcjConf.setTablePrefix(tablePrefix);
+
+ final Sail pcjSail = RyaSailFactory.getInstance(pcjConf);
+ final SailRepository pcjRepo = new SailRepository(pcjSail);
+ pcjRepo.initialize();
+ return pcjRepo;
+ }
+
+ public static SailRepository getNonPcjRepo(final String tablePrefix,
+ final String instance) throws AccumuloException,
+ AccumuloSecurityException, RyaDAOException, RepositoryException, InferenceEngineException,
+ NumberFormatException, UnknownHostException {
+
+ final AccumuloRdfConfiguration nonPcjConf = new AccumuloRdfConfiguration();
+ nonPcjConf.set(ConfigUtils.USE_MOCK_INSTANCE, "true");
+ nonPcjConf.set(ConfigUtils.CLOUDBASE_INSTANCE, instance);
+ nonPcjConf.setTablePrefix(tablePrefix);
+
+ final Sail nonPcjSail = RyaSailFactory.getInstance(nonPcjConf);
+ final SailRepository nonPcjRepo = new SailRepository(nonPcjSail);
+ nonPcjRepo.initialize();
+ return nonPcjRepo;
+ }
+
+ public static void closeAndShutdown(final SailRepositoryConnection connection,
+ final SailRepository repo) throws RepositoryException {
+ connection.close();
+ repo.shutDown();
+ }
+
+ public static void deleteIndexTables(final Connector accCon, final int tableNum,
+ final String prefix) throws AccumuloException, AccumuloSecurityException,
+ TableNotFoundException {
+ final TableOperations ops = accCon.tableOperations();
+ final String tablename = prefix + "INDEX_";
+ for (int i = 1; i < tableNum + 1; i++) {
+ if (ops.exists(tablename + i)) {
+ ops.delete(tablename + i);
+ }
+ }
+ }
+
+ public static class BindingSetAssignmentCollector extends
+ QueryModelVisitorBase<RuntimeException> {
+
+ private final Set<QueryModelNode> bindingSetList = Sets.newHashSet();
+
+ public Set<QueryModelNode> getBindingSetAssignments() {
+ return bindingSetList;
+ }
+
+ public boolean containsBSAs() {
+ return bindingSetList.size() > 0;
+ }
+
+ @Override
+ public void meet(final BindingSetAssignment node) {
+ bindingSetList.add(node);
+ super.meet(node);
+ }
+
+ }
+
+ public static class ExternalTupleVisitor extends
+ QueryModelVisitorBase<RuntimeException> {
+
+ private final Set<QueryModelNode> eSet = new HashSet<>();
+
+ @Override
+ public void meetNode(final QueryModelNode node) throws RuntimeException {
+ if (node instanceof ExternalTupleSet) {
+ eSet.add(node);
+ }
+ super.meetNode(node);
+ }
+
+ public Set<QueryModelNode> getExtTup() {
+ return eSet;
+ }
+
+ }
@@ -193,7 +196,7 @@ public class PcjIntegrationTestingUtil {
- /**
+ /**
* Creates a new PCJ Table in Accumulo and populates it by scanning an
* instance of Rya for historic matches.
* <p>
@@ -225,10 +228,10 @@ public class PcjIntegrationTestingUtil {
checkNotNull(resultVariables);
checkNotNull(pcjVarOrderFactory);
- PcjTables pcj = new PcjTables();
+ final PcjTables pcj = new PcjTables();
// Create the PCJ's variable orders.
- PcjVarOrderFactory varOrderFactory = pcjVarOrderFactory.or(new ShiftVarOrderFactory());
- Set<VariableOrder> varOrders = varOrderFactory.makeVarOrders( new VariableOrder(resultVariables) );
+ final PcjVarOrderFactory varOrderFactory = pcjVarOrderFactory.or(new ShiftVarOrderFactory());
+ final Set<VariableOrder> varOrders = varOrderFactory.makeVarOrders( new VariableOrder(resultVariables) );
// Create the PCJ table in Accumulo.
pcj.createPcjTable(accumuloConn, pcjTableName, varOrders, sparql);
@@ -238,168 +241,168 @@ public class PcjIntegrationTestingUtil {
}
- /**
- * Scan Rya for results that solve the PCJ's query and store them in the PCJ
- * table.
- * <p>
- * This method assumes the PCJ table has already been created.
- *
- * @param accumuloConn
- * - A connection to the Accumulo that hosts the PCJ table. (not
- * null)
- * @param pcjTableName
- * - The name of the PCJ table that will receive the results.
- * (not null)
- * @param ryaConn
- * - A connection to the Rya store that will be queried to find
- * results. (not null)
- * @throws PcjException
- * If results could not be written to the PCJ table, the PCJ
- * table does not exist, or the query that is being execute was
- * malformed.
- */
- public static void populatePcj(final Connector accumuloConn,
- final String pcjTableName, final RepositoryConnection ryaConn)
- throws PcjException {
- checkNotNull(accumuloConn);
- checkNotNull(pcjTableName);
- checkNotNull(ryaConn);
-
- try {
- // Fetch the query that needs to be executed from the PCJ table.
- PcjMetadata pcjMetadata = new PcjTables().getPcjMetadata(
- accumuloConn, pcjTableName);
- String sparql = pcjMetadata.getSparql();
-
- // Query Rya for results to the SPARQL query.
- TupleQuery query = ryaConn.prepareTupleQuery(QueryLanguage.SPARQL,
- sparql);
- TupleQueryResult results = query.evaluate();
-
- // Load batches of 1000 of them at a time into the PCJ table
- Set<BindingSet> batch = new HashSet<>(1000);
- while (results.hasNext()) {
- batch.add(results.next());
-
- if (batch.size() == 1000) {
- addResults(accumuloConn, pcjTableName, batch);
- batch.clear();
- }
- }
-
- if (!batch.isEmpty()) {
- addResults(accumuloConn, pcjTableName, batch);
- }
-
- } catch (RepositoryException | MalformedQueryException
- | QueryEvaluationException e) {
- throw new PcjException(
- "Could not populate a PCJ table with Rya results for the table named: "
- + pcjTableName, e);
- }
- }
-
- public static void addResults(final Connector accumuloConn,
- final String pcjTableName, final Collection<BindingSet> results)
- throws PcjException {
- checkNotNull(accumuloConn);
- checkNotNull(pcjTableName);
- checkNotNull(results);
-
- // Write a result to each of the variable orders that are in the table.
- writeResults(accumuloConn, pcjTableName, results);
- }
-
- /**
- * Add a collection of results to a specific PCJ table.
- *
- * @param accumuloConn
- * - A connection to the Accumulo that hosts the PCJ table. (not
- * null)
- * @param pcjTableName
- * - The name of the PCJ table that will receive the results.
- * (not null)
- * @param results
- * - Binding sets that will be written to the PCJ table. (not
- * null)
- * @throws PcjException
- * The provided PCJ table doesn't exist, is missing the PCJ
- * metadata, or the result could not be written to it.
- */
- private static void writeResults(final Connector accumuloConn,
- final String pcjTableName, final Collection<BindingSet> results)
- throws PcjException {
- checkNotNull(accumuloConn);
- checkNotNull(pcjTableName);
- checkNotNull(results);
-
- // Fetch the variable orders from the PCJ table.
- PcjMetadata metadata = new PcjTables().getPcjMetadata(accumuloConn,
- pcjTableName);
-
- // Write each result formatted using each of the variable orders.
- BatchWriter writer = null;
- try {
- writer = accumuloConn.createBatchWriter(pcjTableName,
- new BatchWriterConfig());
- for (BindingSet result : results) {
- Set<Mutation> addResultMutations = makeWriteResultMutations(
- metadata.getVarOrders(), result);
- writer.addMutations(addResultMutations);
- }
- } catch (TableNotFoundException | MutationsRejectedException e) {
- throw new PcjException(
- "Could not add results to the PCJ table named: "
- + pcjTableName, e);
- } finally {
- if (writer != null) {
- try {
- writer.close();
- } catch (MutationsRejectedException e) {
- throw new PcjException(
- "Could not add results to a PCJ table because some of the mutations were rejected.",
- e);
- }
- }
- }
- }
-
- /**
- * Create the {@link Mutations} required to write a new {@link BindingSet}
- * to a PCJ table for each {@link VariableOrder} that is provided.
- *
- * @param varOrders
- * - The variables orders the result will be written to. (not
- * null)
- * @param result
- * - A new PCJ result. (not null)
- * @return Mutation that will write the result to a PCJ table.
- * @throws PcjException
- * The binding set could not be encoded.
- */
- private static Set<Mutation> makeWriteResultMutations(
- final Set<VariableOrder> varOrders, final BindingSet result)
- throws PcjException {
- checkNotNull(varOrders);
- checkNotNull(result);
-
- Set<Mutation> mutations = new HashSet<>();
-
- for (final VariableOrder varOrder : varOrders) {
- try {
- // Serialize the result to the variable order.
- byte[] serializedResult = converter.convert(result, varOrder);
-
- // Row ID = binding set values, Column Family = variable order
- // of the binding set.
- Mutation addResult = new Mutation(serializedResult);
- addResult.put(varOrder.toString(), "", "");
- mutations.add(addResult);
- } catch (BindingSetConversionException e) {
- throw new PcjException("Could not serialize a result.", e);
- }
- }
-
- return mutations;
- }
+ /**
+ * Scan Rya for results that solve the PCJ's query and store them in the PCJ
+ * table.
+ * <p>
+ * This method assumes the PCJ table has already been created.
+ *
+ * @param accumuloConn
+ * - A connection to the Accumulo that hosts the PCJ table. (not
+ * null)
+ * @param pcjTableName
+ * - The name of the PCJ table that will receive the results.
+ * (not null)
+ * @param ryaConn
+ * - A connection to the Rya store that will be queried to find
+ * results. (not null)
+ * @throws PcjException
+ * If results could not be written to the PCJ table, the PCJ
+ * table does not exist, or the query that is being execute was
+ * malformed.
+ */
+ public static void populatePcj(final Connector accumuloConn,
+ final String pcjTableName, final RepositoryConnection ryaConn)
+ throws PcjException {
+ checkNotNull(accumuloConn);
+ checkNotNull(pcjTableName);
+ checkNotNull(ryaConn);
+
+ try {
+ // Fetch the query that needs to be executed from the PCJ table.
+ final PcjMetadata pcjMetadata = new PcjTables().getPcjMetadata(
+ accumuloConn, pcjTableName);
+ final String sparql = pcjMetadata.getSparql();
+
+ // Query Rya for results to the SPARQL query.
+ final TupleQuery query = ryaConn.prepareTupleQuery(QueryLanguage.SPARQL,
+ sparql);
+ final TupleQueryResult results = query.evaluate();
+
+ // Load batches of 1000 of them at a time into the PCJ table
+ final Set<BindingSet> batch = new HashSet<>(1000);
+ while (results.hasNext()) {
+ batch.add(results.next());
+
+ if (batch.size() == 1000) {
+ addResults(accumuloConn, pcjTableName, batch);
+ batch.clear();
+ }
+ }
+
+ if (!batch.isEmpty()) {
+ addResults(accumuloConn, pcjTableName, batch);
+ }
+
+ } catch (RepositoryException | MalformedQueryException
+ | QueryEvaluationException e) {
+ throw new PcjException(
+ "Could not populate a PCJ table with Rya results for the table named: "
+ + pcjTableName, e);
+ }
+ }
+
+ public static void addResults(final Connector accumuloConn,
+ final String pcjTableName, final Collection<BindingSet> results)
+ throws PcjException {
+ checkNotNull(accumuloConn);
+ checkNotNull(pcjTableName);
+ checkNotNull(results);
+
+ // Write a result to each of the variable orders that are in the table.
+ writeResults(accumuloConn, pcjTableName, results);
+ }
+
+ /**
+ * Add a collection of results to a specific PCJ table.
+ *
+ * @param accumuloConn
+ * - A connection to the Accumulo that hosts the PCJ table. (not
+ * null)
+ * @param pcjTableName
+ * - The name of the PCJ table that will receive the results.
+ * (not null)
+ * @param results
+ * - Binding sets that will be written to the PCJ table. (not
+ * null)
+ * @throws PcjException
+ * The provided PCJ table doesn't exist, is missing the PCJ
+ * metadata, or the result could not be written to it.
+ */
+ private static void writeResults(final Connector accumuloConn,
+ final String pcjTableName, final Collection<BindingSet> results)
+ throws PcjException {
+ checkNotNull(accumuloConn);
+ checkNotNull(pcjTableName);
+ checkNotNull(results);
+
+ // Fetch the variable orders from the PCJ table.
+ final PcjMetadata metadata = new PcjTables().getPcjMetadata(accumuloConn,
+ pcjTableName);
+
+ // Write each result formatted using each of the variable orders.
+ BatchWriter writer = null;
+ try {
+ writer = accumuloConn.createBatchWriter(pcjTableName,
+ new BatchWriterConfig());
+ for (final BindingSet result : results) {
+ final Set<Mutation> addResultMutations = makeWriteResultMutations(
+ metadata.getVarOrders(), result);
+ writer.addMutations(addResultMutations);
+ }
+ } catch (TableNotFoundException | MutationsRejectedException e) {
+ throw new PcjException(
+ "Could not add results to the PCJ table named: "
+ + pcjTableName, e);
+ } finally {
+ if (writer != null) {
+ try {
+ writer.close();
+ } catch (final MutationsRejectedException e) {
+ throw new PcjException(
+ "Could not add results to a PCJ table because some of the mutations were rejected.",
+ e);
+ }
+ }
+ }
+ }
+
+ /**
+ * Create the {@link Mutations} required to write a new {@link BindingSet}
+ * to a PCJ table for each {@link VariableOrder} that is provided.
+ *
+ * @param varOrders
+ * - The variables orders the result will be written to. (not
+ * null)
+ * @param result
+ * - A new PCJ result. (not null)
+ * @return Mutation that will write the result to a PCJ table.
+ * @throws PcjException
+ * The binding set could not be encoded.
+ */
+ private static Set<Mutation> makeWriteResultMutations(
+ final Set<VariableOrder> varOrders, final BindingSet result)
+ throws PcjException {
+ checkNotNull(varOrders);
+ checkNotNull(result);
+
+ final Set<Mutation> mutations = new HashSet<>();
+
+ for (final VariableOrder varOrder : varOrders) {
+ try {
+ // Serialize the result to the variable order.
+ final byte[] serializedResult = converter.convert(result, varOrder);
+
+ // Row ID = binding set values, Column Family = variable order
+ // of the binding set.
+ final Mutation addResult = new Mutation(serializedResult);
+ addResult.put(varOrder.toString(), "", "");
+ mutations.add(addResult);
+ } catch (final BindingSetConversionException e) {
+ throw new PcjException("Could not serialize a result.", e);
+ }
+ }
+
+ return mutations;
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/917e7a57/extras/indexing/src/test/java/mvm/rya/indexing/external/PrecompJoinOptimizerIntegrationTest.java
----------------------------------------------------------------------
diff --git a/extras/indexing/src/test/java/mvm/rya/indexing/external/PrecompJoinOptimizerIntegrationTest.java b/extras/indexing/src/test/java/mvm/rya/indexing/external/PrecompJoinOptimizerIntegrationTest.java
index 3195d24..6fea2ba 100644
--- a/extras/indexing/src/test/java/mvm/rya/indexing/external/PrecompJoinOptimizerIntegrationTest.java
+++ b/extras/indexing/src/test/java/mvm/rya/indexing/external/PrecompJoinOptimizerIntegrationTest.java
@@ -1,5 +1,7 @@
package mvm.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
@@ -20,21 +22,14 @@ package mvm.rya.indexing.external;
*/
import java.util.List;
-import java.util.Map;
-
-import mvm.rya.api.persist.RyaDAOException;
-import mvm.rya.rdftriplestore.inference.InferenceEngineException;
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.Scanner;
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.accumulo.core.data.Key;
-import org.apache.accumulo.core.security.Authorizations;
import org.apache.rya.indexing.pcj.storage.PcjException;
import org.apache.rya.indexing.pcj.storage.accumulo.PcjVarOrderFactory;
import org.junit.After;
@@ -60,6 +55,9 @@ import org.openrdf.sail.SailException;
import com.google.common.base.Optional;
+import mvm.rya.api.persist.RyaDAOException;
+import mvm.rya.rdftriplestore.inference.InferenceEngineException;
+
public class PrecompJoinOptimizerIntegrationTest {
private SailRepositoryConnection conn, pcjConn;
@@ -73,7 +71,8 @@ public class PrecompJoinOptimizerIntegrationTest {
TupleQueryResultHandlerException, QueryEvaluationException,
MalformedQueryException, AccumuloException,
AccumuloSecurityException, TableExistsException, RyaDAOException,
- TableNotFoundException, InferenceEngineException {
+ TableNotFoundException, InferenceEngineException, NumberFormatException,
+ UnknownHostException {
repo = PcjIntegrationTestingUtil.getNonPcjRepo(tablePrefix, "instance");
conn = repo.getConnection();
@@ -119,8 +118,8 @@ public class PrecompJoinOptimizerIntegrationTest {
throws TupleQueryResultHandlerException, QueryEvaluationException,
MalformedQueryException, RepositoryException, AccumuloException,
AccumuloSecurityException, TableExistsException, RyaDAOException,
- SailException, TableNotFoundException, PcjException,
- InferenceEngineException {
+ SailException, TableNotFoundException, PcjException, InferenceEngineException,
+ NumberFormatException, UnknownHostException {
final String indexSparqlString = ""//
+ "SELECT ?e ?l ?c " //
@@ -129,9 +128,9 @@ public class PrecompJoinOptimizerIntegrationTest {
+ " ?e <http://www.w3.org/2000/01/rdf-schema#label> ?l "//
+ "}";//
- PcjIntegrationTestingUtil.createAndPopulatePcj(conn, accCon,
- tablePrefix + "INDEX_1", indexSparqlString, new String[] { "e",
- "l", "c" }, Optional.<PcjVarOrderFactory> absent());
+ PcjIntegrationTestingUtil.createAndPopulatePcj(conn, accCon, tablePrefix
+ + "INDEX_1", indexSparqlString, new String[] { "e", "l", "c" },
+ Optional.<PcjVarOrderFactory> absent());
final String queryString = ""//
+ "SELECT ?e ?c ?l ?o " //
+ "{" //
@@ -147,8 +146,7 @@ public class PrecompJoinOptimizerIntegrationTest {
conn = repo.getConnection();
conn.add(sub, talksTo, obj);
conn.add(sub2, talksTo, obj2);
- pcjConn.prepareTupleQuery(QueryLanguage.SPARQL, queryString).evaluate(
- crh);
+ pcjConn.prepareTupleQuery(QueryLanguage.SPARQL, queryString).evaluate(crh);
Assert.assertEquals(2, crh.getCount());
@@ -187,13 +185,12 @@ public class PrecompJoinOptimizerIntegrationTest {
+ " ?o <http://www.w3.org/2000/01/rdf-schema#label> ?l "//
+ "}";//
- PcjIntegrationTestingUtil.createAndPopulatePcj(conn, accCon,
- tablePrefix + "INDEX_1", indexSparqlString, new String[] { "e",
- "l", "c" }, Optional.<PcjVarOrderFactory> absent());
- PcjIntegrationTestingUtil
- .createAndPopulatePcj(conn, accCon, tablePrefix + "INDEX_2",
- indexSparqlString2, new String[] { "e", "l", "o" },
- Optional.<PcjVarOrderFactory> absent());
+ PcjIntegrationTestingUtil.createAndPopulatePcj(conn, accCon, tablePrefix
+ + "INDEX_1", indexSparqlString, new String[] { "e", "l", "c" },
+ Optional.<PcjVarOrderFactory> absent());
+ PcjIntegrationTestingUtil.createAndPopulatePcj(conn, accCon, tablePrefix
+ + "INDEX_2", indexSparqlString2, new String[] { "e", "l", "o" },
+ Optional.<PcjVarOrderFactory> absent());
final CountingResultHandler crh = new CountingResultHandler();
PcjIntegrationTestingUtil.deleteCoreRyaTables(accCon, tablePrefix);
pcjConn.prepareTupleQuery(QueryLanguage.SPARQL, queryString).evaluate(
@@ -208,8 +205,8 @@ public class PrecompJoinOptimizerIntegrationTest {
throws TupleQueryResultHandlerException, QueryEvaluationException,
MalformedQueryException, RepositoryException, AccumuloException,
AccumuloSecurityException, TableExistsException, RyaDAOException,
- SailException, TableNotFoundException, PcjException,
- InferenceEngineException {
+ SailException, TableNotFoundException, PcjException, InferenceEngineException,
+ NumberFormatException, UnknownHostException {
final String indexSparqlString = ""//
+ "SELECT ?e ?l ?c " //
@@ -219,9 +216,9 @@ public class PrecompJoinOptimizerIntegrationTest {
+ " ?e <http://www.w3.org/2000/01/rdf-schema#label> ?l "//
+ "}";//
- PcjIntegrationTestingUtil.createAndPopulatePcj(conn, accCon,
- tablePrefix + "INDEX_1", indexSparqlString, new String[] { "e",
- "l", "c" }, Optional.<PcjVarOrderFactory> absent());
+ PcjIntegrationTestingUtil.createAndPopulatePcj(conn, accCon, tablePrefix
+ + "INDEX_1", indexSparqlString, new String[] { "e", "l", "c" },
+ Optional.<PcjVarOrderFactory> absent());
final String queryString = ""//
+ "SELECT ?e ?c ?l ?o " //
+ "{" //
@@ -250,8 +247,8 @@ public class PrecompJoinOptimizerIntegrationTest {
throws TupleQueryResultHandlerException, QueryEvaluationException,
MalformedQueryException, RepositoryException, AccumuloException,
AccumuloSecurityException, TableExistsException, RyaDAOException,
- SailException, TableNotFoundException, PcjException,
- InferenceEngineException {
+ SailException, TableNotFoundException, PcjException, InferenceEngineException,
+ NumberFormatException, UnknownHostException {
final String indexSparqlString2 = ""//
+ "SELECT ?e ?l ?c " //
@@ -261,10 +258,9 @@ public class PrecompJoinOptimizerIntegrationTest {
+ " ?e <http://www.w3.org/2000/01/rdf-schema#label> ?l "//
+ "}";//
- PcjIntegrationTestingUtil
- .createAndPopulatePcj(conn, accCon, tablePrefix + "INDEX_2",
- indexSparqlString2, new String[] { "e", "l", "c" },
- Optional.<PcjVarOrderFactory> absent());
+ PcjIntegrationTestingUtil.createAndPopulatePcj(conn, accCon, tablePrefix
+ + "INDEX_2", indexSparqlString2, new String[] { "e", "l", "c" },
+ Optional.<PcjVarOrderFactory> absent());
final String queryString = ""//
+ "SELECT ?e ?c ?o ?m ?l" //
@@ -294,8 +290,8 @@ public class PrecompJoinOptimizerIntegrationTest {
throws TupleQueryResultHandlerException, QueryEvaluationException,
MalformedQueryException, RepositoryException, AccumuloException,
AccumuloSecurityException, TableExistsException, RyaDAOException,
- SailException, TableNotFoundException, PcjException,
- InferenceEngineException {
+ SailException, TableNotFoundException, PcjException, InferenceEngineException,
+ NumberFormatException, UnknownHostException {
final String indexSparqlString1 = ""//
+ "SELECT ?e ?l ?c " //
@@ -310,10 +306,9 @@ public class PrecompJoinOptimizerIntegrationTest {
conn.add(sub3, RDF.TYPE, subclass3);
conn.add(sub3, RDFS.LABEL, new LiteralImpl("label3"));
- PcjIntegrationTestingUtil
- .createAndPopulatePcj(conn, accCon, tablePrefix + "INDEX_1",
- indexSparqlString1, new String[] { "e", "l", "c" },
- Optional.<PcjVarOrderFactory> absent());
+ PcjIntegrationTestingUtil.createAndPopulatePcj(conn, accCon, tablePrefix
+ + "INDEX_1", indexSparqlString1, new String[] { "e", "l", "c" },
+ Optional.<PcjVarOrderFactory> absent());
final String queryString = ""//
+ "SELECT ?e ?c ?o ?m ?l" //
+ "{" //
@@ -337,101 +332,132 @@ public class PrecompJoinOptimizerIntegrationTest {
}
-
@Test
- public void testMultipleLeftJoin() throws AccumuloException,
+ public void testEvaluateTwoIndexUnionFilter() throws AccumuloException,
AccumuloSecurityException, TableExistsException,
RepositoryException, MalformedQueryException, SailException,
QueryEvaluationException, TableNotFoundException,
- TupleQueryResultHandlerException, RyaDAOException, PcjException,
- InferenceEngineException {
+ TupleQueryResultHandlerException, RyaDAOException, PcjException, InferenceEngineException,
+ NumberFormatException, UnknownHostException {
- final URI sub3 = new URIImpl("uri:entity3");
- final URI obj3 = new URIImpl("uri:obj3");
- final URI subclass3 = new URIImpl("uri:class3");
- conn.add(sub3, RDF.TYPE, subclass3);
- conn.add(sub3, talksTo, obj3);
conn.add(obj, RDFS.LABEL, new LiteralImpl("label"));
+ conn.add(obj2, RDFS.LABEL, new LiteralImpl("label2"));
+ conn.add(sub, RDF.TYPE, obj);
+ conn.add(sub2, RDF.TYPE, obj2);
final String indexSparqlString = ""//
- + "SELECT ?e ?l ?c " //
+ + "SELECT ?e ?l ?o " //
+ "{" //
- + " ?e a ?c . "//
- + " OPTIONAL {?e <http://www.w3.org/2000/01/rdf-schema#label> ?l} "//
+ + " Filter(?l = \"label2\") " //
+ + " ?e a ?o . "//
+ + " ?e <http://www.w3.org/2000/01/rdf-schema#label> ?l "//
+ "}";//
final String indexSparqlString2 = ""//
+ "SELECT ?e ?l ?o " //
+ "{" //
+ + " Filter(?l = \"label2\") " //
+ " ?e <uri:talksTo> ?o . "//
- + " OPTIONAL {?o <http://www.w3.org/2000/01/rdf-schema#label> ?l} "//
+ + " ?o <http://www.w3.org/2000/01/rdf-schema#label> ?l "//
+ "}";//
final String queryString = ""//
- + "SELECT ?e ?l ?c ?o " //
+ + "SELECT ?c ?e ?l ?o " //
+ "{" //
+ + " Filter(?l = \"label2\") " //
+ " ?e a ?c . "//
- + " OPTIONAL {?e <http://www.w3.org/2000/01/rdf-schema#label> ?l} "//
- + " ?e <uri:talksTo> ?o . "//
- + " OPTIONAL {?o <http://www.w3.org/2000/01/rdf-schema#label> ?l} "//
+ + " { ?e a ?o . ?e <http://www.w3.org/2000/01/rdf-schema#label> ?l }"//
+ + " UNION { ?e <uri:talksTo> ?o . ?o <http://www.w3.org/2000/01/rdf-schema#label> ?l }"//
+ "}";//
- PcjIntegrationTestingUtil.createAndPopulatePcj(conn, accCon,
- tablePrefix + "INDEX_1", indexSparqlString, new String[] { "e",
- "l", "c" }, Optional.<PcjVarOrderFactory> absent());
- PcjIntegrationTestingUtil
- .createAndPopulatePcj(conn, accCon, tablePrefix + "INDEX_2",
- indexSparqlString2, new String[] { "e", "l", "o" },
- Optional.<PcjVarOrderFactory> absent());
+ PcjIntegrationTestingUtil.createAndPopulatePcj(conn, accCon, tablePrefix
+ + "INDEX_1", indexSparqlString, new String[] { "e", "l", "o" },
+ Optional.<PcjVarOrderFactory> absent());
+ PcjIntegrationTestingUtil.createAndPopulatePcj(conn, accCon, tablePrefix
+ + "INDEX_2", indexSparqlString2, new String[] { "e", "l", "o" },
+ Optional.<PcjVarOrderFactory> absent());
PcjIntegrationTestingUtil.deleteCoreRyaTables(accCon, tablePrefix);
PcjIntegrationTestingUtil.closeAndShutdown(conn, repo);
repo = PcjIntegrationTestingUtil.getPcjRepo(tablePrefix, "instance");
conn = repo.getConnection();
+ conn.add(sub2, RDF.TYPE, subclass2);
+ conn.add(sub2, RDF.TYPE, obj2);
+ final CountingResultHandler crh = new CountingResultHandler();
+ pcjConn.prepareTupleQuery(QueryLanguage.SPARQL, queryString).evaluate(
+ crh);
- Scanner scanner = accCon.createScanner(tablePrefix + "INDEX_2",
- new Authorizations());
- for (Map.Entry<Key, org.apache.accumulo.core.data.Value> e : scanner) {
- System.out.println(e.getKey().getRow());
- }
+ Assert.assertEquals(6, crh.getCount());
+
+ }
+
+ @Test
+ public void testEvaluateTwoIndexLeftJoinUnionFilter()
+ throws AccumuloException, AccumuloSecurityException,
+ TableExistsException, RepositoryException, MalformedQueryException,
+ SailException, QueryEvaluationException, TableNotFoundException,
+ TupleQueryResultHandlerException, RyaDAOException, PcjException, InferenceEngineException,
+ NumberFormatException, UnknownHostException {
+
+ conn.add(obj, RDFS.LABEL, new LiteralImpl("label"));
+ conn.add(obj2, RDFS.LABEL, new LiteralImpl("label2"));
+ conn.add(sub, RDF.TYPE, obj);
+ conn.add(sub2, RDF.TYPE, obj2);
+
+ final URI livesIn = new URIImpl("uri:livesIn");
+ final URI city = new URIImpl("uri:city");
+ final URI city2 = new URIImpl("uri:city2");
+ final URI city3 = new URIImpl("uri:city3");
+ conn.add(sub, livesIn, city);
+ conn.add(sub2, livesIn, city2);
+ conn.add(sub2, livesIn, city3);
+ conn.add(sub, livesIn, city3);
+
+ final String indexSparqlString = ""//
+ + "SELECT ?e ?l ?o " //
+ + "{" //
+ + " ?e a ?o . "//
+ + " ?e <http://www.w3.org/2000/01/rdf-schema#label> ?l "//
+ + "}";//
+
+ final String indexSparqlString2 = ""//
+ + "SELECT ?e ?l ?o " //
+ + "{" //
+ + " ?e <uri:talksTo> ?o . "//
+ + " ?o <http://www.w3.org/2000/01/rdf-schema#label> ?l "//
+ + "}";//
+
+ final String queryString = ""//
+ + "SELECT ?c ?e ?l ?o " //
+ + "{" //
+ + " Filter(?c = <uri:city3>) " //
+ + " ?e <uri:livesIn> ?c . "//
+ + " OPTIONAL{{ ?e a ?o . ?e <http://www.w3.org/2000/01/rdf-schema#label> ?l }"//
+ + " UNION { ?e <uri:talksTo> ?o . ?o <http://www.w3.org/2000/01/rdf-schema#label> ?l }}"//
+ + "}";//
+
+ PcjIntegrationTestingUtil.createAndPopulatePcj(conn, accCon, tablePrefix
+ + "INDEX_1", indexSparqlString, new String[] { "e", "l", "o" },
+ Optional.<PcjVarOrderFactory> absent());
+ PcjIntegrationTestingUtil.createAndPopulatePcj(conn, accCon, tablePrefix
+ + "INDEX_2", indexSparqlString2, new String[] { "e", "l", "o" },
+ Optional.<PcjVarOrderFactory> absent());
+
+ PcjIntegrationTestingUtil.deleteCoreRyaTables(accCon, tablePrefix);
+ PcjIntegrationTestingUtil.closeAndShutdown(conn, repo);
+ repo = PcjIntegrationTestingUtil.getPcjRepo(tablePrefix, "instance");
+ conn = repo.getConnection();
+ conn.add(sub2, livesIn, city3);
+ conn.add(sub, livesIn, city3);
final CountingResultHandler crh = new CountingResultHandler();
pcjConn.prepareTupleQuery(QueryLanguage.SPARQL, queryString).evaluate(
crh);
- Assert.assertEquals(3, crh.getCount());
+ Assert.assertEquals(6, crh.getCount());
}
- // @Test
- // public void leftJoinExperiment() throws AccumuloException,
- // AccumuloSecurityException, TableExistsException,
- // RepositoryException, MalformedQueryException, SailException,
- // QueryEvaluationException, TableNotFoundException,
- // TupleQueryResultHandlerException, RyaDAOException, PcjException,
- // InferenceEngineException {
- //
- // final String indexSparqlString = ""//
- // + "SELECT ?e " //
- // + "{" //
- // + " ?e a <uri:class> . "//
- // +
- // " OPTIONAL {?e <http://www.w3.org/2000/01/rdf-schema#label> \"label2\"} "//
- // + "}";//
- //
- //
- // PcjIntegrationTestingUtil.createAndPopulatePcj(conn, accCon,
- // tablePrefix + "INDEX_1", indexSparqlString, new String[] {"e"},
- // Optional.<PcjVarOrderFactory> absent());
- //
- // Scanner scanner = accCon.createScanner(tablePrefix + "INDEX_1",
- // new Authorizations());
- // for (Map.Entry<Key, org.apache.accumulo.core.data.Value> e : scanner) {
- // System.out.println(e.getKey().getRow());
- // }
- //
- // }
-
public static class CountingResultHandler implements
TupleQueryResultHandler {
private int count = 0;
@@ -441,16 +467,16 @@ public class PrecompJoinOptimizerIntegrationTest {
}
public void resetCount() {
- this.count = 0;
+ count = 0;
}
@Override
- public void startQueryResult(List<String> arg0)
+ public void startQueryResult(final List<String> arg0)
throws TupleQueryResultHandlerException {
}
@Override
- public void handleSolution(BindingSet arg0)
+ public void handleSolution(final BindingSet arg0)
throws TupleQueryResultHandlerException {
System.out.println(arg0);
count++;
@@ -462,14 +488,14 @@ public class PrecompJoinOptimizerIntegrationTest {
}
@Override
- public void handleBoolean(boolean arg0)
+ public void handleBoolean(final boolean arg0)
throws QueryResultHandlerException {
// TODO Auto-generated method stub
}
@Override
- public void handleLinks(List<String> arg0)
+ public void handleLinks(final List<String> arg0)
throws QueryResultHandlerException {
// TODO Auto-generated method stub