You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@rya.apache.org by mi...@apache.org on 2015/12/22 17:50:14 UTC
[50/56] [abbrv] incubator-rya git commit: RYA-13 Add delete support
to secondary indices
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/e5e227c1/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 8ca96bc..c204f3c 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
@@ -22,16 +22,12 @@ package mvm.rya.indexing.accumulo.geo;
import static mvm.rya.api.resolver.RdfToRyaConversions.convertStatement;
-import info.aduna.iteration.CloseableIteration;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
import java.util.UUID;
-import mvm.rya.indexing.StatementContraints;
-import mvm.rya.indexing.accumulo.ConfigUtils;
-
import org.apache.accumulo.core.client.admin.TableOperations;
import org.apache.hadoop.conf.Configuration;
import org.junit.Assert;
@@ -55,6 +51,10 @@ import com.vividsolutions.jts.geom.Polygon;
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.accumulo.ConfigUtils;
+
public class GeoIndexerTest {
private static final StatementContraints EMPTY_CONSTRAINTS = new StatementContraints();
@@ -89,42 +89,41 @@ public class GeoIndexerTest {
@Test
public void testRestrictPredicatesSearch() throws Exception {
conf.setStrings(ConfigUtils.GEO_PREDICATES_LIST, "pred:1,pred:2");
- GeoMesaGeoIndexer f = new GeoMesaGeoIndexer();
- f.setConf(conf);
-
- ValueFactory vf = new ValueFactoryImpl();
+ try (GeoMesaGeoIndexer f = new GeoMesaGeoIndexer()) {
+ f.setConf(conf);
- Point point = gf.createPoint(new Coordinate(10, 10));
- Value pointValue = vf.createLiteral("Point(10 10)", GeoConstants.XMLSCHEMA_OGC_WKT);
- URI invalidPredicate = GeoConstants.GEO_AS_WKT;
+ ValueFactory vf = new ValueFactoryImpl();
- // These should not be stored because they are not in the predicate list
- f.storeStatement(convertStatement(new StatementImpl(vf.createURI("foo:subj1"), invalidPredicate, pointValue)));
- f.storeStatement(convertStatement(new StatementImpl(vf.createURI("foo:subj2"), invalidPredicate, pointValue)));
+ Point point = gf.createPoint(new Coordinate(10, 10));
+ Value pointValue = vf.createLiteral("Point(10 10)", GeoConstants.XMLSCHEMA_OGC_WKT);
+ URI invalidPredicate = GeoConstants.GEO_AS_WKT;
- URI pred1 = vf.createURI("pred:1");
- URI pred2 = vf.createURI("pred:2");
+ // These should not be stored because they are not in the predicate list
+ f.storeStatement(convertStatement(new StatementImpl(vf.createURI("foo:subj1"), invalidPredicate, pointValue)));
+ f.storeStatement(convertStatement(new StatementImpl(vf.createURI("foo:subj2"), invalidPredicate, pointValue)));
- // These should be stored because they are in the predicate list
- Statement s3 = new StatementImpl(vf.createURI("foo:subj3"), pred1, pointValue);
- Statement s4 = new StatementImpl(vf.createURI("foo:subj4"), pred2, pointValue);
- f.storeStatement(convertStatement(s3));
- f.storeStatement(convertStatement(s4));
+ URI pred1 = vf.createURI("pred:1");
+ URI pred2 = vf.createURI("pred:2");
- // This should not be stored because the object is not valid wkt
- f.storeStatement(convertStatement(new StatementImpl(vf.createURI("foo:subj5"), pred1, vf.createLiteral("soint(10 10)"))));
+ // These should be stored because they are in the predicate list
+ Statement s3 = new StatementImpl(vf.createURI("foo:subj3"), pred1, pointValue);
+ Statement s4 = new StatementImpl(vf.createURI("foo:subj4"), pred2, pointValue);
+ f.storeStatement(convertStatement(s3));
+ f.storeStatement(convertStatement(s4));
- // This should not be stored because the object is not a literal
- f.storeStatement(convertStatement(new StatementImpl(vf.createURI("foo:subj6"), pred1, vf.createURI("p:Point(10 10)"))));
+ // This should not be stored because the object is not valid wkt
+ f.storeStatement(convertStatement(new StatementImpl(vf.createURI("foo:subj5"), pred1, vf.createLiteral("soint(10 10)"))));
- f.flush();
+ // This should not be stored because the object is not a literal
+ f.storeStatement(convertStatement(new StatementImpl(vf.createURI("foo:subj6"), pred1, vf.createURI("p:Point(10 10)"))));
- Set<Statement> actual = getSet(f.queryEquals(point, EMPTY_CONSTRAINTS));
- Assert.assertEquals(2, actual.size());
- Assert.assertTrue(actual.contains(s3));
- Assert.assertTrue(actual.contains(s4));
+ f.flush();
- f.close();
+ Set<Statement> actual = getSet(f.queryEquals(point, EMPTY_CONSTRAINTS));
+ Assert.assertEquals(2, actual.size());
+ Assert.assertTrue(actual.contains(s3));
+ Assert.assertTrue(actual.contains(s4));
+ }
}
private static <X> Set<X> getSet(CloseableIteration<X, ?> iter) throws Exception {
@@ -137,234 +136,264 @@ public class GeoIndexerTest {
@Test
public void testPrimeMeridianSearch() throws Exception {
-
- GeoMesaGeoIndexer f = new GeoMesaGeoIndexer();
- f.setConf(conf);
-
- ValueFactory vf = new ValueFactoryImpl();
- Resource subject = vf.createURI("foo:subj");
- URI predicate = GeoConstants.GEO_AS_WKT;
- Value object = vf.createLiteral("Point(0 0)", GeoConstants.XMLSCHEMA_OGC_WKT);
- Resource context = vf.createURI("foo:context");
-
- Statement statement = new ContextStatementImpl(subject, predicate, object, context);
- f.storeStatement(convertStatement(statement));
- f.flush();
-
- double[] ONE = { 1, 1, -1, 1, -1, -1, 1, -1, 1, 1 };
- double[] TWO = { 2, 2, -2, 2, -2, -2, 2, -2, 2, 2 };
- double[] THREE = { 3, 3, -3, 3, -3, -3, 3, -3, 3, 3 };
-
- LinearRing r1 = gf.createLinearRing(new PackedCoordinateSequence.Double(ONE, 2));
- LinearRing r2 = gf.createLinearRing(new PackedCoordinateSequence.Double(TWO, 2));
- LinearRing r3 = gf.createLinearRing(new PackedCoordinateSequence.Double(THREE, 2));
-
- Polygon p1 = gf.createPolygon(r1, new LinearRing[] {});
- Polygon p2 = gf.createPolygon(r2, new LinearRing[] {});
- Polygon p3 = gf.createPolygon(r3, new LinearRing[] {});
-
- Assert.assertEquals(Sets.newHashSet(statement), getSet(f.queryWithin(p1, EMPTY_CONSTRAINTS)));
- Assert.assertEquals(Sets.newHashSet(statement), getSet(f.queryWithin(p2, EMPTY_CONSTRAINTS)));
- Assert.assertEquals(Sets.newHashSet(statement), getSet(f.queryWithin(p3, EMPTY_CONSTRAINTS)));
-
- // Test a ring with a hole in it
- Polygon p3m2 = gf.createPolygon(r3, new LinearRing[] { r2 });
- Assert.assertEquals(Sets.newHashSet(), getSet(f.queryWithin(p3m2, EMPTY_CONSTRAINTS)));
-
- // test a ring outside the point
- double[] OUT = { 3, 3, 1, 3, 1, 1, 3, 1, 3, 3 };
- LinearRing rOut = gf.createLinearRing(new PackedCoordinateSequence.Double(OUT, 2));
- Polygon pOut = gf.createPolygon(rOut, new LinearRing[] {});
- Assert.assertEquals(Sets.newHashSet(), getSet(f.queryWithin(pOut, EMPTY_CONSTRAINTS)));
-
- f.close();
+ try (GeoMesaGeoIndexer f = new GeoMesaGeoIndexer()) {
+ f.setConf(conf);
+
+ ValueFactory vf = new ValueFactoryImpl();
+ Resource subject = vf.createURI("foo:subj");
+ URI predicate = GeoConstants.GEO_AS_WKT;
+ Value object = vf.createLiteral("Point(0 0)", GeoConstants.XMLSCHEMA_OGC_WKT);
+ Resource context = vf.createURI("foo:context");
+
+ Statement statement = new ContextStatementImpl(subject, predicate, object, context);
+ f.storeStatement(convertStatement(statement));
+ f.flush();
+
+ double[] ONE = { 1, 1, -1, 1, -1, -1, 1, -1, 1, 1 };
+ double[] TWO = { 2, 2, -2, 2, -2, -2, 2, -2, 2, 2 };
+ double[] THREE = { 3, 3, -3, 3, -3, -3, 3, -3, 3, 3 };
+
+ LinearRing r1 = gf.createLinearRing(new PackedCoordinateSequence.Double(ONE, 2));
+ LinearRing r2 = gf.createLinearRing(new PackedCoordinateSequence.Double(TWO, 2));
+ LinearRing r3 = gf.createLinearRing(new PackedCoordinateSequence.Double(THREE, 2));
+
+ Polygon p1 = gf.createPolygon(r1, new LinearRing[] {});
+ Polygon p2 = gf.createPolygon(r2, new LinearRing[] {});
+ Polygon p3 = gf.createPolygon(r3, new LinearRing[] {});
+
+ Assert.assertEquals(Sets.newHashSet(statement), getSet(f.queryWithin(p1, EMPTY_CONSTRAINTS)));
+ Assert.assertEquals(Sets.newHashSet(statement), getSet(f.queryWithin(p2, EMPTY_CONSTRAINTS)));
+ Assert.assertEquals(Sets.newHashSet(statement), getSet(f.queryWithin(p3, EMPTY_CONSTRAINTS)));
+
+ // Test a ring with a hole in it
+ Polygon p3m2 = gf.createPolygon(r3, new LinearRing[] { r2 });
+ Assert.assertEquals(Sets.newHashSet(), getSet(f.queryWithin(p3m2, EMPTY_CONSTRAINTS)));
+
+ // test a ring outside the point
+ double[] OUT = { 3, 3, 1, 3, 1, 1, 3, 1, 3, 3 };
+ LinearRing rOut = gf.createLinearRing(new PackedCoordinateSequence.Double(OUT, 2));
+ Polygon pOut = gf.createPolygon(rOut, new LinearRing[] {});
+ Assert.assertEquals(Sets.newHashSet(), getSet(f.queryWithin(pOut, EMPTY_CONSTRAINTS)));
+ }
}
@Test
public void testDcSearch() throws Exception {
// test a ring around dc
- GeoMesaGeoIndexer f = new GeoMesaGeoIndexer();
- f.setConf(conf);
-
- ValueFactory vf = new ValueFactoryImpl();
- Resource subject = vf.createURI("foo:subj");
- URI predicate = GeoConstants.GEO_AS_WKT;
- Value object = vf.createLiteral("Point(-77.03524 38.889468)", GeoConstants.XMLSCHEMA_OGC_WKT);
- Resource context = vf.createURI("foo:context");
-
- Statement statement = new ContextStatementImpl(subject, predicate, object, context);
- f.storeStatement(convertStatement(statement));
- f.flush();
-
- double[] IN = { -78, 39, -77, 39, -77, 38, -78, 38, -78, 39 };
- LinearRing r1 = gf.createLinearRing(new PackedCoordinateSequence.Double(IN, 2));
- Polygon p1 = gf.createPolygon(r1, new LinearRing[] {});
- Assert.assertEquals(Sets.newHashSet(statement), getSet(f.queryWithin(p1, EMPTY_CONSTRAINTS)));
-
- // test a ring outside the point
- double[] OUT = { -77, 39, -76, 39, -76, 38, -77, 38, -77, 39 };
- LinearRing rOut = gf.createLinearRing(new PackedCoordinateSequence.Double(OUT, 2));
- Polygon pOut = gf.createPolygon(rOut, new LinearRing[] {});
- Assert.assertEquals(Sets.newHashSet(), getSet(f.queryWithin(pOut, EMPTY_CONSTRAINTS)));
-
- f.close();
+ try (GeoMesaGeoIndexer f = new GeoMesaGeoIndexer()) {
+ f.setConf(conf);
+
+ ValueFactory vf = new ValueFactoryImpl();
+ Resource subject = vf.createURI("foo:subj");
+ URI predicate = GeoConstants.GEO_AS_WKT;
+ Value object = vf.createLiteral("Point(-77.03524 38.889468)", GeoConstants.XMLSCHEMA_OGC_WKT);
+ Resource context = vf.createURI("foo:context");
+
+ Statement statement = new ContextStatementImpl(subject, predicate, object, context);
+ f.storeStatement(convertStatement(statement));
+ f.flush();
+
+ double[] IN = { -78, 39, -77, 39, -77, 38, -78, 38, -78, 39 };
+ LinearRing r1 = gf.createLinearRing(new PackedCoordinateSequence.Double(IN, 2));
+ Polygon p1 = gf.createPolygon(r1, new LinearRing[] {});
+ Assert.assertEquals(Sets.newHashSet(statement), getSet(f.queryWithin(p1, EMPTY_CONSTRAINTS)));
+
+ // test a ring outside the point
+ double[] OUT = { -77, 39, -76, 39, -76, 38, -77, 38, -77, 39 };
+ LinearRing rOut = gf.createLinearRing(new PackedCoordinateSequence.Double(OUT, 2));
+ Polygon pOut = gf.createPolygon(rOut, new LinearRing[] {});
+ Assert.assertEquals(Sets.newHashSet(), getSet(f.queryWithin(pOut, EMPTY_CONSTRAINTS)));
+ }
}
@Test
- public void testDcSearchWithContext() throws Exception {
+ public void testDeleteSearch() throws Exception {
// test a ring around dc
- GeoMesaGeoIndexer f = new GeoMesaGeoIndexer();
- f.setConf(conf);
+ try (GeoMesaGeoIndexer f = new GeoMesaGeoIndexer()) {
+ f.setConf(conf);
+
+ ValueFactory vf = new ValueFactoryImpl();
+ Resource subject = vf.createURI("foo:subj");
+ URI predicate = GeoConstants.GEO_AS_WKT;
+ Value object = vf.createLiteral("Point(-77.03524 38.889468)", GeoConstants.XMLSCHEMA_OGC_WKT);
+ Resource context = vf.createURI("foo:context");
+
+ Statement statement = new ContextStatementImpl(subject, predicate, object, context);
+ f.storeStatement(convertStatement(statement));
+ f.flush();
+
+ f.deleteStatement(convertStatement(statement));
+
+ // test a ring that the point would be inside of if not deleted
+ double[] in = { -78, 39, -77, 39, -77, 38, -78, 38, -78, 39 };
+ LinearRing r1 = gf.createLinearRing(new PackedCoordinateSequence.Double(in, 2));
+ Polygon p1 = gf.createPolygon(r1, new LinearRing[] {});
+ Assert.assertEquals(Sets.newHashSet(), getSet(f.queryWithin(p1, EMPTY_CONSTRAINTS)));
+
+ // test a ring that the point would be outside of if not deleted
+ double[] out = { -77, 39, -76, 39, -76, 38, -77, 38, -77, 39 };
+ LinearRing rOut = gf.createLinearRing(new PackedCoordinateSequence.Double(out, 2));
+ Polygon pOut = gf.createPolygon(rOut, new LinearRing[] {});
+ Assert.assertEquals(Sets.newHashSet(), getSet(f.queryWithin(pOut, EMPTY_CONSTRAINTS)));
+
+ // test a ring for the whole world and make sure the point is gone
+ double[] world = { -180, 90, 180, 90, -180, 90, -180, -90, -180, 90 };
+ LinearRing rWorld = gf.createLinearRing(new PackedCoordinateSequence.Double(world, 2));
+ Polygon pWorld = gf.createPolygon(rWorld, new LinearRing[] {});
+ Assert.assertEquals(Sets.newHashSet(), getSet(f.queryWithin(pWorld, EMPTY_CONSTRAINTS)));
+ }
+ }
- ValueFactory vf = new ValueFactoryImpl();
- Resource subject = vf.createURI("foo:subj");
- URI predicate = GeoConstants.GEO_AS_WKT;
- Value object = vf.createLiteral("Point(-77.03524 38.889468)", GeoConstants.XMLSCHEMA_OGC_WKT);
- Resource context = vf.createURI("foo:context");
+ @Test
+ public void testDcSearchWithContext() throws Exception {
+ // test a ring around dc
+ try (GeoMesaGeoIndexer f = new GeoMesaGeoIndexer()) {
+ f.setConf(conf);
- Statement statement = new ContextStatementImpl(subject, predicate, object, context);
- f.storeStatement(convertStatement(statement));
- f.flush();
+ ValueFactory vf = new ValueFactoryImpl();
+ Resource subject = vf.createURI("foo:subj");
+ URI predicate = GeoConstants.GEO_AS_WKT;
+ Value object = vf.createLiteral("Point(-77.03524 38.889468)", GeoConstants.XMLSCHEMA_OGC_WKT);
+ Resource context = vf.createURI("foo:context");
- double[] IN = { -78, 39, -77, 39, -77, 38, -78, 38, -78, 39 };
- LinearRing r1 = gf.createLinearRing(new PackedCoordinateSequence.Double(IN, 2));
- Polygon p1 = gf.createPolygon(r1, new LinearRing[] {});
+ Statement statement = new ContextStatementImpl(subject, predicate, object, context);
+ f.storeStatement(convertStatement(statement));
+ f.flush();
- // query with correct context
- Assert.assertEquals(Sets.newHashSet(statement), getSet(f.queryWithin(p1, new StatementContraints().setContext(context))));
+ double[] IN = { -78, 39, -77, 39, -77, 38, -78, 38, -78, 39 };
+ LinearRing r1 = gf.createLinearRing(new PackedCoordinateSequence.Double(IN, 2));
+ Polygon p1 = gf.createPolygon(r1, new LinearRing[] {});
- // query with wrong context
- Assert.assertEquals(Sets.newHashSet(),
- getSet(f.queryWithin(p1, new StatementContraints().setContext(vf.createURI("foo:context2")))));
+ // query with correct context
+ Assert.assertEquals(Sets.newHashSet(statement), getSet(f.queryWithin(p1, new StatementContraints().setContext(context))));
- f.close();
+ // query with wrong context
+ Assert.assertEquals(Sets.newHashSet(),
+ getSet(f.queryWithin(p1, new StatementContraints().setContext(vf.createURI("foo:context2")))));
+ }
}
@Test
public void testDcSearchWithSubject() throws Exception {
// test a ring around dc
- GeoMesaGeoIndexer f = new GeoMesaGeoIndexer();
- f.setConf(conf);
-
- ValueFactory vf = new ValueFactoryImpl();
- Resource subject = vf.createURI("foo:subj");
- URI predicate = GeoConstants.GEO_AS_WKT;
- Value object = vf.createLiteral("Point(-77.03524 38.889468)", GeoConstants.XMLSCHEMA_OGC_WKT);
- Resource context = vf.createURI("foo:context");
-
- Statement statement = new ContextStatementImpl(subject, predicate, object, context);
- f.storeStatement(convertStatement(statement));
- f.flush();
-
- double[] IN = { -78, 39, -77, 39, -77, 38, -78, 38, -78, 39 };
- LinearRing r1 = gf.createLinearRing(new PackedCoordinateSequence.Double(IN, 2));
- Polygon p1 = gf.createPolygon(r1, new LinearRing[] {});
-
- // query with correct subject
- Assert.assertEquals(Sets.newHashSet(statement), getSet(f.queryWithin(p1, new StatementContraints().setSubject(subject))));
-
- // query with wrong subject
- Assert.assertEquals(Sets.newHashSet(), getSet(f.queryWithin(p1, new StatementContraints().setSubject(vf.createURI("foo:subj2")))));
-
- f.close();
+ try (GeoMesaGeoIndexer f = new GeoMesaGeoIndexer()) {
+ f.setConf(conf);
+
+ ValueFactory vf = new ValueFactoryImpl();
+ Resource subject = vf.createURI("foo:subj");
+ URI predicate = GeoConstants.GEO_AS_WKT;
+ Value object = vf.createLiteral("Point(-77.03524 38.889468)", GeoConstants.XMLSCHEMA_OGC_WKT);
+ Resource context = vf.createURI("foo:context");
+
+ Statement statement = new ContextStatementImpl(subject, predicate, object, context);
+ f.storeStatement(convertStatement(statement));
+ f.flush();
+
+ double[] IN = { -78, 39, -77, 39, -77, 38, -78, 38, -78, 39 };
+ LinearRing r1 = gf.createLinearRing(new PackedCoordinateSequence.Double(IN, 2));
+ Polygon p1 = gf.createPolygon(r1, new LinearRing[] {});
+
+ // query with correct subject
+ Assert.assertEquals(Sets.newHashSet(statement), getSet(f.queryWithin(p1, new StatementContraints().setSubject(subject))));
+
+ // query with wrong subject
+ Assert.assertEquals(Sets.newHashSet(), getSet(f.queryWithin(p1, new StatementContraints().setSubject(vf.createURI("foo:subj2")))));
+ }
}
@Test
public void testDcSearchWithSubjectAndContext() throws Exception {
// test a ring around dc
- GeoMesaGeoIndexer f = new GeoMesaGeoIndexer();
- f.setConf(conf);
+ try (GeoMesaGeoIndexer f = new GeoMesaGeoIndexer()) {
+ f.setConf(conf);
- ValueFactory vf = new ValueFactoryImpl();
- Resource subject = vf.createURI("foo:subj");
- URI predicate = GeoConstants.GEO_AS_WKT;
- Value object = vf.createLiteral("Point(-77.03524 38.889468)", GeoConstants.XMLSCHEMA_OGC_WKT);
- Resource context = vf.createURI("foo:context");
+ ValueFactory vf = new ValueFactoryImpl();
+ Resource subject = vf.createURI("foo:subj");
+ URI predicate = GeoConstants.GEO_AS_WKT;
+ Value object = vf.createLiteral("Point(-77.03524 38.889468)", GeoConstants.XMLSCHEMA_OGC_WKT);
+ Resource context = vf.createURI("foo:context");
- Statement statement = new ContextStatementImpl(subject, predicate, object, context);
- f.storeStatement(convertStatement(statement));
- f.flush();
+ Statement statement = new ContextStatementImpl(subject, predicate, object, context);
+ f.storeStatement(convertStatement(statement));
+ f.flush();
- double[] IN = { -78, 39, -77, 39, -77, 38, -78, 38, -78, 39 };
- LinearRing r1 = gf.createLinearRing(new PackedCoordinateSequence.Double(IN, 2));
- Polygon p1 = gf.createPolygon(r1, new LinearRing[] {});
+ double[] IN = { -78, 39, -77, 39, -77, 38, -78, 38, -78, 39 };
+ LinearRing r1 = gf.createLinearRing(new PackedCoordinateSequence.Double(IN, 2));
+ Polygon p1 = gf.createPolygon(r1, new LinearRing[] {});
- // query with correct context subject
- Assert.assertEquals(Sets.newHashSet(statement),
- getSet(f.queryWithin(p1, new StatementContraints().setContext(context).setSubject(subject))));
+ // query with correct context subject
+ Assert.assertEquals(Sets.newHashSet(statement),
+ getSet(f.queryWithin(p1, new StatementContraints().setContext(context).setSubject(subject))));
- // query with wrong context
- Assert.assertEquals(Sets.newHashSet(),
- getSet(f.queryWithin(p1, new StatementContraints().setContext(vf.createURI("foo:context2")))));
+ // query with wrong context
+ Assert.assertEquals(Sets.newHashSet(),
+ getSet(f.queryWithin(p1, new StatementContraints().setContext(vf.createURI("foo:context2")))));
- // query with wrong subject
- Assert.assertEquals(Sets.newHashSet(), getSet(f.queryWithin(p1, new StatementContraints().setSubject(vf.createURI("foo:subj2")))));
-
- f.close();
+ // query with wrong subject
+ Assert.assertEquals(Sets.newHashSet(), getSet(f.queryWithin(p1, new StatementContraints().setSubject(vf.createURI("foo:subj2")))));
+ }
}
@Test
public void testDcSearchWithPredicate() throws Exception {
// test a ring around dc
- GeoMesaGeoIndexer f = new GeoMesaGeoIndexer();
- f.setConf(conf);
-
- ValueFactory vf = new ValueFactoryImpl();
- Resource subject = vf.createURI("foo:subj");
- URI predicate = GeoConstants.GEO_AS_WKT;
- Value object = vf.createLiteral("Point(-77.03524 38.889468)", GeoConstants.XMLSCHEMA_OGC_WKT);
- Resource context = vf.createURI("foo:context");
-
- Statement statement = new ContextStatementImpl(subject, predicate, object, context);
- f.storeStatement(convertStatement(statement));
- f.flush();
-
- double[] IN = { -78, 39, -77, 39, -77, 38, -78, 38, -78, 39 };
- LinearRing r1 = gf.createLinearRing(new PackedCoordinateSequence.Double(IN, 2));
- Polygon p1 = gf.createPolygon(r1, new LinearRing[] {});
-
- // query with correct Predicate
- Assert.assertEquals(Sets.newHashSet(statement),
- getSet(f.queryWithin(p1, new StatementContraints().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"))))));
-
- f.close();
+ try (GeoMesaGeoIndexer f = new GeoMesaGeoIndexer()) {
+ f.setConf(conf);
+
+ ValueFactory vf = new ValueFactoryImpl();
+ Resource subject = vf.createURI("foo:subj");
+ URI predicate = GeoConstants.GEO_AS_WKT;
+ Value object = vf.createLiteral("Point(-77.03524 38.889468)", GeoConstants.XMLSCHEMA_OGC_WKT);
+ Resource context = vf.createURI("foo:context");
+
+ Statement statement = new ContextStatementImpl(subject, predicate, object, context);
+ f.storeStatement(convertStatement(statement));
+ f.flush();
+
+ double[] IN = { -78, 39, -77, 39, -77, 38, -78, 38, -78, 39 };
+ LinearRing r1 = gf.createLinearRing(new PackedCoordinateSequence.Double(IN, 2));
+ Polygon p1 = gf.createPolygon(r1, new LinearRing[] {});
+
+ // query with correct Predicate
+ Assert.assertEquals(Sets.newHashSet(statement),
+ getSet(f.queryWithin(p1, new StatementContraints().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"))))));
+ }
}
// @Test
public void testAntiMeridianSearch() throws Exception {
// verify that a search works if the bounding box crosses the anti meridian
- GeoMesaGeoIndexer f = new GeoMesaGeoIndexer();
- f.setConf(conf);
+ try (GeoMesaGeoIndexer f = new GeoMesaGeoIndexer()) {
+ f.setConf(conf);
- ValueFactory vf = new ValueFactoryImpl();
- Resource context = vf.createURI("foo:context");
+ ValueFactory vf = new ValueFactoryImpl();
+ Resource context = vf.createURI("foo:context");
- Resource subjectEast = vf.createURI("foo:subj:east");
- URI predicateEast = GeoConstants.GEO_AS_WKT;
- Value objectEast = vf.createLiteral("Point(179 0)", GeoConstants.XMLSCHEMA_OGC_WKT);
- Statement statementEast = new ContextStatementImpl(subjectEast, predicateEast, objectEast, context);
- f.storeStatement(convertStatement(statementEast));
+ Resource subjectEast = vf.createURI("foo:subj:east");
+ URI predicateEast = GeoConstants.GEO_AS_WKT;
+ Value objectEast = vf.createLiteral("Point(179 0)", GeoConstants.XMLSCHEMA_OGC_WKT);
+ Statement statementEast = new ContextStatementImpl(subjectEast, predicateEast, objectEast, context);
+ f.storeStatement(convertStatement(statementEast));
- Resource subjectWest = vf.createURI("foo:subj:west");
- URI predicateWest = GeoConstants.GEO_AS_WKT;
- Value objectWest = vf.createLiteral("Point(-179 0)", GeoConstants.XMLSCHEMA_OGC_WKT);
- Statement statementWest = new ContextStatementImpl(subjectWest, predicateWest, objectWest, context);
- f.storeStatement(convertStatement(statementWest));
+ Resource subjectWest = vf.createURI("foo:subj:west");
+ URI predicateWest = GeoConstants.GEO_AS_WKT;
+ Value objectWest = vf.createLiteral("Point(-179 0)", GeoConstants.XMLSCHEMA_OGC_WKT);
+ Statement statementWest = new ContextStatementImpl(subjectWest, predicateWest, objectWest, context);
+ f.storeStatement(convertStatement(statementWest));
- f.flush();
+ f.flush();
- double[] ONE = { 178.1, 1, -178, 1, -178, -1, 178.1, -1, 178.1, 1 };
+ double[] ONE = { 178.1, 1, -178, 1, -178, -1, 178.1, -1, 178.1, 1 };
- LinearRing r1 = gf.createLinearRing(new PackedCoordinateSequence.Double(ONE, 2));
+ LinearRing r1 = gf.createLinearRing(new PackedCoordinateSequence.Double(ONE, 2));
- Polygon p1 = gf.createPolygon(r1, new LinearRing[] {});
+ Polygon p1 = gf.createPolygon(r1, new LinearRing[] {});
- Assert.assertEquals(Sets.newHashSet(statementEast, statementWest), getSet(f.queryWithin(p1, EMPTY_CONSTRAINTS)));
-
- f.close();
+ Assert.assertEquals(Sets.newHashSet(statementEast, statementWest), getSet(f.queryWithin(p1, EMPTY_CONSTRAINTS)));
+ }
}
}
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/e5e227c1/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 60d237d..1c6628f 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
@@ -1,6 +1,3 @@
-/**
- *
- */
package mvm.rya.indexing.accumulo.temporal;
/*
@@ -26,7 +23,6 @@ package mvm.rya.indexing.accumulo.temporal;
import static mvm.rya.api.resolver.RdfToRyaConversions.convertStatement;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
-import info.aduna.iteration.CloseableIteration;
import java.io.IOException;
import java.io.PrintStream;
@@ -42,15 +38,6 @@ import java.util.Map.Entry;
import java.util.Set;
import java.util.concurrent.atomic.AtomicLong;
-import junit.framework.Assert;
-import mvm.rya.api.domain.RyaStatement;
-import mvm.rya.indexing.StatementContraints;
-import mvm.rya.indexing.TemporalInstant;
-import mvm.rya.indexing.TemporalInterval;
-import mvm.rya.indexing.accumulo.ConfigUtils;
-import mvm.rya.indexing.accumulo.StatementSerializer;
-
-import org.apache.accumulo.core.Constants;
import org.apache.accumulo.core.client.AccumuloException;
import org.apache.accumulo.core.client.AccumuloSecurityException;
import org.apache.accumulo.core.client.Scanner;
@@ -59,6 +46,7 @@ import org.apache.accumulo.core.client.TableNotFoundException;
import org.apache.accumulo.core.client.admin.TableOperations;
import org.apache.accumulo.core.data.Key;
import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.security.Authorizations;
import org.apache.commons.codec.binary.StringUtils;
import org.apache.commons.io.output.NullOutputStream;
import org.apache.hadoop.conf.Configuration;
@@ -78,25 +66,34 @@ import org.openrdf.query.QueryEvaluationException;
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.TemporalInstant;
+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
- *
+ *
* If you enjoy this test, please read RyaTemporalIndexerTest and YagoKBTest, which contain
* many example SPARQL queries and updates and attempts to test independently of Accumulo:
- *
+ *
* extras/indexingSail/src/test/java/mvm/rya/indexing/accumulo/RyaTemporalIndexerTest.java
* {@link mvm.rya.indexing.accumulo.RyaTemporalIndexerTest}
* {@link mvm.rya.indexing.accumulo.YagoKBTest.java}
- *
+ *
* Remember, this class in instantiated fresh for each @test method.
* so fields are reset, unless they are static.
- *
+ *
* These are covered:
- * Instance {before, equals, after} given Instance
+ * Instance {before, equals, after} given Instance
* Instance {before, after, inside} given Interval
* Instance {hasBeginning, hasEnd} given Interval
* And a few more.
- *
+ *
*/
public final class AccumuloTemporalIndexerTest {
// Configuration properties, this is reset per test in setup.
@@ -268,7 +265,7 @@ public final class AccumuloTemporalIndexerTest {
/**
* Test method for {@link AccumuloTemporalIndexer#TemporalIndexerImpl(org.apache.hadoop.conf.Configuration)} .
- *
+ *
* @throws TableExistsException
* @throws TableNotFoundException
* @throws AccumuloSecurityException
@@ -283,7 +280,7 @@ public final class AccumuloTemporalIndexerTest {
/**
* Test method for {@link AccumuloTemporalIndexer#storeStatement(convertStatement(org.openrdf.model.Statement)}
- *
+ *
* @throws NoSuchAlgorithmException
*/
@Test
@@ -339,7 +336,41 @@ public final class AccumuloTemporalIndexerTest {
Assert.assertEquals("Number of rows stored.", rowsStoredExpected*4, rowsStoredActual); // 4 index entries per statement
}
-
+
+ @Test
+ public void testDelete() throws IOException, AccumuloException, AccumuloSecurityException, TableNotFoundException, TableExistsException, NoSuchAlgorithmException {
+ // count rows expected to store:
+ int rowsStoredExpected = 0;
+
+ ValueFactory vf = new ValueFactoryImpl();
+
+ URI pred1_atTime = vf.createURI(URI_PROPERTY_AT_TIME);
+ URI pred2_circa = vf.createURI(URI_PROPERTY_CIRCA);
+
+ final String testDate2014InBRST = "2014-12-31T23:59:59-02:00";
+ final String testDate2016InET = "2016-12-31T20:59:59-05:00";
+
+ // These should be stored because they are in the predicate list.
+ // BUT they will get converted to the same exact datetime in UTC.
+ Statement s1 = new StatementImpl(vf.createURI("foo:subj3"), pred1_atTime, vf.createLiteral(testDate2014InBRST));
+ Statement s2 = new StatementImpl(vf.createURI("foo:subj4"), pred2_circa, vf.createLiteral(testDate2016InET));
+ tIndexer.storeStatement(convertStatement(s1));
+ rowsStoredExpected++;
+ tIndexer.storeStatement(convertStatement(s2));
+ rowsStoredExpected++;
+
+ tIndexer.flush();
+
+ int rowsStoredActual = printTables("junit testing: Temporal entities stored in testDelete before delete", System.out, null);
+ Assert.assertEquals("Number of rows stored.", rowsStoredExpected*4, rowsStoredActual); // 4 index entries per statement
+
+ tIndexer.deleteStatement(convertStatement(s1));
+ tIndexer.deleteStatement(convertStatement(s2));
+
+ int afterDeleteRowsStoredActual = printTables("junit testing: Temporal entities stored in testDelete after delete", System.out, null);
+ Assert.assertEquals("Number of rows stored after delete.", 0, afterDeleteRowsStoredActual);
+ }
+
@Test
public void testStoreStatementWithInterestingLiterals() throws Exception {
ValueFactory vf = new ValueFactoryImpl();
@@ -356,36 +387,35 @@ public final class AccumuloTemporalIndexerTest {
}
/**
- * Test method for {@link AccumuloTemporalIndexer#storeStatement(convertStatement(org.openrdf.model.Statement)}
- *
- * @throws NoSuchAlgorithmException
- */
- @Test
- public void testStoreStatementBadInterval() throws IOException, AccumuloException, AccumuloSecurityException, TableNotFoundException, TableExistsException, NoSuchAlgorithmException {
- // count rows expected to store:
- int rowsStoredExpected = 0;
-
- ValueFactory vf = new ValueFactoryImpl();
- URI pred1_atTime = vf.createURI(URI_PROPERTY_AT_TIME);
-
- // Test: Should not store an improper date interval, and log a warning (log warning not tested).
- final String invalidDateIntervalString="[bad,interval]";
- // Silently logs a warning for bad dates.
- tIndexer.storeStatement(convertStatement(new StatementImpl(vf.createURI("foo:subj1"), pred1_atTime, vf.createLiteral(invalidDateIntervalString))));
-
- final String validDateIntervalString="[2016-12-31T20:59:59-05:00,2016-12-31T21:00:00-05:00]";
- tIndexer.storeStatement(convertStatement(new StatementImpl(vf.createURI("foo:subj2"), pred1_atTime, vf.createLiteral(validDateIntervalString))));
- rowsStoredExpected++;
-
- tIndexer.flush();
-
- int rowsStoredActual = printTables("junit testing: Temporal intervals stored in testStoreStatement", null, null);
- Assert.assertEquals("Only good intervals should be stored.", rowsStoredExpected*2, rowsStoredActual); // 2 index entries per interval statement
- }
-
- @Test
- public void testStoreStatementsSameTime() throws IOException, NoSuchAlgorithmException, AccumuloException, AccumuloSecurityException, TableNotFoundException, TableExistsException
- {
+ * Test method for {@link AccumuloTemporalIndexer#storeStatement(convertStatement(org.openrdf.model.Statement)}
+ *
+ * @throws NoSuchAlgorithmException
+ */
+ @Test
+ public void testStoreStatementBadInterval() throws IOException, AccumuloException, AccumuloSecurityException, TableNotFoundException, TableExistsException, NoSuchAlgorithmException {
+ // count rows expected to store:
+ int rowsStoredExpected = 0;
+
+ ValueFactory vf = new ValueFactoryImpl();
+ URI pred1_atTime = vf.createURI(URI_PROPERTY_AT_TIME);
+
+ // Test: Should not store an improper date interval, and log a warning (log warning not tested).
+ final String invalidDateIntervalString="[bad,interval]";
+ // Silently logs a warning for bad dates.
+ tIndexer.storeStatement(convertStatement(new StatementImpl(vf.createURI("foo:subj1"), pred1_atTime, vf.createLiteral(invalidDateIntervalString))));
+
+ final String validDateIntervalString="[2016-12-31T20:59:59-05:00,2016-12-31T21:00:00-05:00]";
+ tIndexer.storeStatement(convertStatement(new StatementImpl(vf.createURI("foo:subj2"), pred1_atTime, vf.createLiteral(validDateIntervalString))));
+ rowsStoredExpected++;
+
+ tIndexer.flush();
+
+ int rowsStoredActual = printTables("junit testing: Temporal intervals stored in testStoreStatement", null, null);
+ Assert.assertEquals("Only good intervals should be stored.", rowsStoredExpected*2, rowsStoredActual); // 2 index entries per interval statement
+ }
+
+ @Test
+ public void testStoreStatementsSameTime() throws IOException, NoSuchAlgorithmException, AccumuloException, AccumuloSecurityException, TableNotFoundException, TableExistsException {
ValueFactory vf = new ValueFactoryImpl();
URI pred1_atTime = vf.createURI(URI_PROPERTY_AT_TIME);
URI pred2_circa = vf.createURI(URI_PROPERTY_CIRCA);
@@ -416,7 +446,7 @@ public final class AccumuloTemporalIndexerTest {
/**
* Test method for {@link AccumuloTemporalIndexer#storeStatements(java.util.Collection)} .
- *
+ *
* @throws TableExistsException
* @throws TableNotFoundException
* @throws AccumuloSecurityException
@@ -482,9 +512,9 @@ public final class AccumuloTemporalIndexerTest {
/**
* Test instant equal to a given instant.
* From the series: instant {equal, before, after} instant
- * @throws AccumuloSecurityException
- * @throws AccumuloException
- * @throws TableNotFoundException
+ * @throws AccumuloSecurityException
+ * @throws AccumuloException
+ * @throws TableNotFoundException
*/
@Test
public void testQueryInstantEqualsInstant() throws IOException, QueryEvaluationException, TableNotFoundException, AccumuloException, AccumuloSecurityException {
@@ -525,9 +555,9 @@ public final class AccumuloTemporalIndexerTest {
/**
* Test instant after a given instant.
* From the series: instant {equal, before, after} instant
- * @throws AccumuloSecurityException
- * @throws AccumuloException
- * @throws TableNotFoundException
+ * @throws AccumuloSecurityException
+ * @throws AccumuloException
+ * @throws TableNotFoundException
*/
@Test
public void testQueryInstantAfterInstant() throws IOException, QueryEvaluationException, TableNotFoundException, AccumuloException, AccumuloSecurityException {
@@ -579,7 +609,7 @@ public final class AccumuloTemporalIndexerTest {
}
tIndexer.flush();
CloseableIteration<Statement, QueryEvaluationException> iter;
-
+
iter = tIndexer.queryInstantBeforeInstant(seriesTs[searchForSeconds], EMPTY_CONSTRAINTS);
int count = 0;
while (iter.hasNext()) {
@@ -763,9 +793,9 @@ public final class AccumuloTemporalIndexerTest {
* Test method for
* {@link mvm.rya.indexing.accumulo.temporal.AccumuloTemporalIndexer#queryIntervalEquals(TemporalInterval, StatementContraints)}
* .
- * @throws IOException
- * @throws QueryEvaluationException
- *
+ * @throws IOException
+ * @throws QueryEvaluationException
+ *
*/
@Test
public void testQueryIntervalEquals() throws IOException, QueryEvaluationException {
@@ -789,9 +819,9 @@ public final class AccumuloTemporalIndexerTest {
/**
* Test interval before a given interval, for method:
* {@link AccumuloTemporalIndexer#queryIntervalBefore(TemporalInterval, StatementContraints)}.
- *
- * @throws IOException
- * @throws QueryEvaluationException
+ *
+ * @throws IOException
+ * @throws QueryEvaluationException
*/
@Test
public void testQueryIntervalBefore() throws IOException, QueryEvaluationException {
@@ -804,7 +834,7 @@ public final class AccumuloTemporalIndexerTest {
// instants should be ignored.
tIndexer.storeStatement(convertStatement(spo_B30_E32));
tIndexer.storeStatement(convertStatement(seriesSpo[1])); // instance at 1 seconds
- tIndexer.storeStatement(convertStatement(seriesSpo[2]));
+ tIndexer.storeStatement(convertStatement(seriesSpo[2]));
tIndexer.storeStatement(convertStatement(seriesSpo[31]));
tIndexer.flush();
@@ -819,9 +849,9 @@ public final class AccumuloTemporalIndexerTest {
/**
* interval is after the given interval. Find interval beginnings after the endings of the given interval.
* {@link AccumuloTemporalIndexer#queryIntervalAfter(TemporalInterval, StatementContraints).
- *
- * @throws IOException
- * @throws QueryEvaluationException
+ *
+ * @throws IOException
+ * @throws QueryEvaluationException
*/
@Test
public void testQueryIntervalAfter() throws IOException, QueryEvaluationException {
@@ -837,7 +867,7 @@ public final class AccumuloTemporalIndexerTest {
// instants should be ignored.
tIndexer.storeStatement(convertStatement(spo_B02));
tIndexer.storeStatement(convertStatement(seriesSpo[1])); // instance at 1 seconds
- tIndexer.storeStatement(convertStatement(seriesSpo[2]));
+ tIndexer.storeStatement(convertStatement(seriesSpo[2]));
tIndexer.storeStatement(convertStatement(seriesSpo[31]));
tIndexer.flush();
@@ -874,7 +904,7 @@ public final class AccumuloTemporalIndexerTest {
URI pred3_CIRCA_ = vf.createURI(URI_PROPERTY_CIRCA); // this one to ignore.
URI pred2_eventTime = vf.createURI(URI_PROPERTY_EVENT_TIME);
URI pred1_atTime = vf.createURI(URI_PROPERTY_AT_TIME);
-
+
// add the predicate = EventTime ; Store in an array for verification.
Statement[] SeriesTs_EventTime = new Statement[expectedResultCount+1];
for (int s = 0; s <= searchForSeconds + expectedResultCount; s++) { // <== logic here
@@ -892,7 +922,7 @@ public final class AccumuloTemporalIndexerTest {
CloseableIteration<Statement, QueryEvaluationException> iter;
StatementContraints constraints = new StatementContraints();
constraints.setPredicates(new HashSet<URI>(Arrays.asList( pred2_eventTime, pred1_atTime )));
-
+
iter = tIndexer.queryInstantAfterInstant(seriesTs[searchForSeconds], constraints); // EMPTY_CONSTRAINTS);//
int count_AtTime = 0;
int count_EventTime = 0;
@@ -910,17 +940,17 @@ public final class AccumuloTemporalIndexerTest {
} else {
assertTrue("This predicate should not be returned: "+s, false);
}
-
+
}
-
+
Assert.assertEquals("Should find count of atTime rows.", expectedResultCount, count_AtTime);
Assert.assertEquals("Should find count of eventTime rows.", expectedResultCount, count_EventTime);
}
-
+
/**
* Test method for {@link AccumuloTemporalIndexer#getIndexablePredicates()} .
- *
+ *
* @throws TableExistsException
* @throws TableNotFoundException
* @throws AccumuloSecurityException
@@ -936,7 +966,7 @@ public final class AccumuloTemporalIndexerTest {
/**
* Count all the entries in the temporal index table, return the count.
* Uses printTables for reliability.
- *
+ *
*/
public int countAllRowsInTable() throws AccumuloException, AccumuloSecurityException, TableNotFoundException, NoSuchAlgorithmException {
return printTables("Counting rows.", null, null);
@@ -944,7 +974,7 @@ public final class AccumuloTemporalIndexerTest {
/**
* Print and gather statistics on the entire index table.
- *
+ *
* @param description
* Printed to the console to find the test case.
* @param out
@@ -967,19 +997,18 @@ public final class AccumuloTemporalIndexerTest {
out.println("Reading : " + this.uniquePerTestTemporalIndexTableName);
out.format(FORMAT, "--Row--", "--ColumnFamily--", "--ColumnQualifier--", "--Value--");
- Scanner s = ConfigUtils.getConnector(conf).createScanner(this.uniquePerTestTemporalIndexTableName, Constants.NO_AUTHS);
+ Scanner s = ConfigUtils.getConnector(conf).createScanner(this.uniquePerTestTemporalIndexTableName, Authorizations.EMPTY);
for (Entry<Key, org.apache.accumulo.core.data.Value> entry : s) {
rowsPrinted++;
Key k = entry.getKey();
- out.format(FORMAT, toHumanString(k.getRow()),
- toHumanString(k.getColumnFamily()),
- toHumanString(k.getColumnQualifier()),
- toHumanString(entry.getValue()));
+ out.format(FORMAT, toHumanString(k.getRow()),
+ toHumanString(k.getColumnFamily()),
+ toHumanString(k.getColumnQualifier()),
+ toHumanString(entry.getValue()));
keyHasher = hasher(keyHasher, (StringUtils.getBytesUtf8(entry.getKey().toStringNoTime())));
valueHasher = hasher(valueHasher, (entry.getValue().get()));
}
out.println();
- // }
if (statistics != null) {
statistics.put(STAT_COUNT, (long) rowsPrinted);
@@ -994,7 +1023,7 @@ public final class AccumuloTemporalIndexerTest {
/**
* Order independent hashcode.
* Read more: http://stackoverflow.com/questions/18021643/hashing-a-set-of-integers-in-an-order-independent-way
- *
+ *
* @param hashcode
* @param list
* @return
@@ -1013,28 +1042,28 @@ public final class AccumuloTemporalIndexerTest {
* @param value
* @return Human readable representation.
*/
- static String toHumanString(Value value) {
- return toHumanString(value==null?null:value.get());
- }
- static String toHumanString(Text text) {
- return toHumanString(text==null?null:text.copyBytes());
- }
- static String toHumanString(byte[] bytes) {
- if (bytes==null)
- return "{null}";
- StringBuilder sb = new StringBuilder();
- for (byte b : bytes) {
- if ((b > 0x7e) || (b < 32)) {
- sb.append("{");
- sb.append(Integer.toHexString( b & 0xff )); // Lop off the sign extended ones.
- sb.append("}");
- } else if (b == '{'||b == '}') { // Escape the literal braces.
- sb.append("{");
- sb.append((char)b);
- sb.append("}");
- } else
- sb.append((char)b);
- }
- return sb.toString();
- }
+ static String toHumanString(Value value) {
+ return toHumanString(value==null?null:value.get());
+ }
+ static String toHumanString(Text text) {
+ return toHumanString(text==null?null:text.copyBytes());
+ }
+ static String toHumanString(byte[] bytes) {
+ if (bytes==null)
+ return "{null}";
+ StringBuilder sb = new StringBuilder();
+ for (byte b : bytes) {
+ if ((b > 0x7e) || (b < 32)) {
+ sb.append("{");
+ sb.append(Integer.toHexString( b & 0xff )); // Lop off the sign extended ones.
+ sb.append("}");
+ } else if (b == '{'||b == '}') { // Escape the literal braces.
+ sb.append("{");
+ sb.append((char)b);
+ sb.append("}");
+ } else
+ sb.append((char)b);
+ }
+ return sb.toString();
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/e5e227c1/extras/indexingExample/src/main/java/EntityDirectExample.java
----------------------------------------------------------------------
diff --git a/extras/indexingExample/src/main/java/EntityDirectExample.java b/extras/indexingExample/src/main/java/EntityDirectExample.java
index ae83520..04b4f74 100644
--- a/extras/indexingExample/src/main/java/EntityDirectExample.java
+++ b/extras/indexingExample/src/main/java/EntityDirectExample.java
@@ -21,11 +21,6 @@
import java.util.List;
-import mvm.rya.accumulo.AccumuloRdfConfiguration;
-import mvm.rya.api.RdfCloudTripleStoreConfiguration;
-import mvm.rya.indexing.RyaSailFactory;
-import mvm.rya.indexing.accumulo.ConfigUtils;
-
import org.apache.accumulo.core.client.AccumuloException;
import org.apache.accumulo.core.client.AccumuloSecurityException;
import org.apache.accumulo.core.client.TableNotFoundException;
@@ -47,6 +42,11 @@ import org.openrdf.repository.sail.SailRepository;
import org.openrdf.repository.sail.SailRepositoryConnection;
import org.openrdf.sail.Sail;
+import mvm.rya.accumulo.AccumuloRdfConfiguration;
+import mvm.rya.api.RdfCloudTripleStoreConfiguration;
+import mvm.rya.indexing.RyaSailFactory;
+import mvm.rya.indexing.accumulo.ConfigUtils;
+
public class EntityDirectExample {
private static final Logger log = Logger.getLogger(EntityDirectExample.class);
@@ -59,18 +59,18 @@ public class EntityDirectExample {
private static final String INSTANCE = "instance";
private static final String RYA_TABLE_PREFIX = "x_test_triplestore_";
private static final String AUTHS = "U";
-
+
public static void main(String[] args) throws Exception {
Configuration conf = getConf();
conf.setBoolean(ConfigUtils.DISPLAY_QUERY_PLAN, PRINT_QUERIES);
-
+
log.info("Creating the tables as root.");
SailRepository repository = null;
SailRepositoryConnection conn = null;
-
+
try {
log.info("Connecting to Indexing Sail Repository.");
-
+
Sail extSail = RyaSailFactory.getInstance(conf);
repository = new SailRepository(extSail);
repository.initialize();
@@ -80,7 +80,7 @@ public class EntityDirectExample {
testAddAndDelete(conn);
log.info("Running SAIL/SPARQL Example: Add and Temporal Search");
testAddAndTemporalSearchWithPCJ(conn);
-
+
} finally {
log.info("Shutting down");
closeQuietly(conn);
@@ -108,10 +108,10 @@ public class EntityDirectExample {
}
}
-
-
+
+
public static void testAddAndDelete(SailRepositoryConnection conn) throws MalformedQueryException,
RepositoryException, UpdateExecutionException, QueryEvaluationException, TupleQueryResultHandlerException,
AccumuloException, AccumuloSecurityException, TableNotFoundException {
@@ -127,7 +127,7 @@ public class EntityDirectExample {
Update update = conn.prepareUpdate(QueryLanguage.SPARQL, query);
update.execute();
-
+
query = "select ?x {GRAPH <http://updated/test> {?x <http://acme.com/actions/likes> \"A new book\" . "//
+ " ?x <http://acme.com/actions/likes> \"Avocados\" }}";
CountingResultHandler resultHandler = new CountingResultHandler();
@@ -138,29 +138,28 @@ public class EntityDirectExample {
Validate.isTrue(resultHandler.getCount() == 1);
resultHandler.resetCount();
- //TODO delete currently not implemented in AccumuloRyaDAO for
-// // Delete Data
-// query = "DELETE DATA\n" //
-// + "{ GRAPH <http://updated/test> {\n"
-// + " <http://acme.com/people/Mike> <http://acme.com/actions/likes> \"A new book\" ;\n"
-// + " <http://acme.com/actions/likes> \"Avocados\" .\n" + "}}";
-//
-// update = conn.prepareUpdate(QueryLanguage.SPARQL, query);
-// update.execute();
-//
-// query = "select ?x {GRAPH <http://updated/test> {?x <http://acme.com/actions/likes> \"A new book\" . "//
-// + " ?x <http://acme.com/actions/likes> \"Avocados\" }}";
-// tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, query);
-// tupleQuery.evaluate(resultHandler);
-// log.info("Result count : " + resultHandler.getCount());
-//
-// Validate.isTrue(resultHandler.getCount() == 0);
+ // Delete Data
+ query = "DELETE DATA\n" //
+ + "{ GRAPH <http://updated/test> {\n"
+ + " <http://acme.com/people/Mike> <http://acme.com/actions/likes> \"A new book\" ;\n"
+ + " <http://acme.com/actions/likes> \"Avocados\" .\n" + "}}";
+
+ update = conn.prepareUpdate(QueryLanguage.SPARQL, query);
+ update.execute();
+
+ query = "select ?x {GRAPH <http://updated/test> {?x <http://acme.com/actions/likes> \"A new book\" . "//
+ + " ?x <http://acme.com/actions/likes> \"Avocados\" }}";
+ tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, query);
+ tupleQuery.evaluate(resultHandler);
+ log.info("Result count : " + resultHandler.getCount());
+
+ Validate.isTrue(resultHandler.getCount() == 0);
}
-
-
-
-
+
+
+
+
private static void testAddAndTemporalSearchWithPCJ(SailRepositoryConnection conn) throws Exception {
// create some resources and literals to make statements out of
@@ -178,7 +177,7 @@ public class EntityDirectExample {
Update update = conn.prepareUpdate(QueryLanguage.SPARQL, sparqlInsert);
update.execute();
-
+
String queryString = "PREFIX pref: <http://www.model/pref#> \n" //
+ "SELECT ?x ?z \n" //
+ "WHERE { \n"
@@ -187,8 +186,8 @@ public class EntityDirectExample {
+ " ?x pref:hasProperty2 'property2' . \n"//
+ " ?x pref:hasProperty3 'property3' . \n"//
+ "}";//
-
-
+
+
TupleQuery tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, queryString);
CountingResultHandler tupleHandler = new CountingResultHandler();
@@ -196,7 +195,7 @@ public class EntityDirectExample {
log.info("Result count : " + tupleHandler.getCount());
Validate.isTrue(tupleHandler.getCount() == 1);
Validate.isTrue(tupleHandler.getBsSize() == 2);
-
+
queryString = "PREFIX pref: <http://www.model/pref#> \n" //
+ "SELECT ?x ?w ?z \n" //
+ "WHERE { \n"
@@ -204,29 +203,29 @@ public class EntityDirectExample {
+ " ?x pref:hasProperty4 'property4' . \n"//
+ " ?x pref:hasProperty5 ?w . \n"//
+ "}";//
-
-
+
+
tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, queryString);
tupleHandler = new CountingResultHandler();
tupleQuery.evaluate(tupleHandler);
log.info("Result count : " + tupleHandler.getCount());
Validate.isTrue(tupleHandler.getCount() == 1);
Validate.isTrue(tupleHandler.getBsSize() == 3);
-
-
- queryString = "PREFIX pref: <http://www.model/pref#> "
- + "SELECT ?v ?w ?x ?y ?z "
- + "WHERE { "
- + " ?w a ?z . "
- + " ?w pref:hasProperty1 ?v . "
- + " ?w pref:hasProperty2 'property2' . "
- + " ?w pref:hasProperty3 'property3' . "
+
+
+ queryString = "PREFIX pref: <http://www.model/pref#> "
+ + "SELECT ?v ?w ?x ?y ?z "
+ + "WHERE { "
+ + " ?w a ?z . "
+ + " ?w pref:hasProperty1 ?v . "
+ + " ?w pref:hasProperty2 'property2' . "
+ + " ?w pref:hasProperty3 'property3' . "
+ " ?x a ?z . "
- + " ?x pref:hasProperty4 'property4' . "
- + " ?x pref:hasProperty5 ?y . "
+ + " ?x pref:hasProperty4 'property4' . "
+ + " ?x pref:hasProperty5 ?y . "
+ "}";
-
-
+
+
tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, queryString);
tupleHandler = new CountingResultHandler();
@@ -234,10 +233,10 @@ public class EntityDirectExample {
log.info("Result count : " + tupleHandler.getCount());
Validate.isTrue(tupleHandler.getCount() == 1);
Validate.isTrue(tupleHandler.getBsSize() == 5);
-
+
}
-
-
+
+
private static Configuration getConf() {
AccumuloRdfConfiguration conf = new AccumuloRdfConfiguration();
@@ -254,7 +253,7 @@ public class EntityDirectExample {
return conf;
}
-
+
private static class CountingResultHandler implements TupleQueryResultHandler {
private int count = 0;
@@ -264,11 +263,11 @@ public class EntityDirectExample {
public int getCount() {
return count;
}
-
+
public int getBsSize() {
return bindingSize;
}
-
+
public void resetBsSize() {
bindingSize = 0;
bsSizeSet = false;
@@ -298,14 +297,10 @@ public class EntityDirectExample {
@Override
public void handleBoolean(boolean arg0) throws QueryResultHandlerException {
- // TODO Auto-generated method stub
-
}
@Override
public void handleLinks(List<String> arg0) throws QueryResultHandlerException {
- // TODO Auto-generated method stub
-
}
}
}
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/e5e227c1/extras/indexingExample/src/main/java/RyaDirectExample.java
----------------------------------------------------------------------
diff --git a/extras/indexingExample/src/main/java/RyaDirectExample.java b/extras/indexingExample/src/main/java/RyaDirectExample.java
index b3e8dae..0d2df3f 100644
--- a/extras/indexingExample/src/main/java/RyaDirectExample.java
+++ b/extras/indexingExample/src/main/java/RyaDirectExample.java
@@ -20,13 +20,6 @@
import java.util.List;
-import mvm.rya.accumulo.AccumuloRdfConfiguration;
-import mvm.rya.api.RdfCloudTripleStoreConfiguration;
-import mvm.rya.indexing.RyaSailFactory;
-import mvm.rya.indexing.accumulo.ConfigUtils;
-import mvm.rya.indexing.accumulo.geo.GeoConstants;
-import mvm.rya.indexing.external.tupleSet.AccumuloIndexSet;
-
import org.apache.accumulo.core.client.AccumuloException;
import org.apache.accumulo.core.client.AccumuloSecurityException;
import org.apache.accumulo.core.client.Connector;
@@ -60,6 +53,13 @@ import org.openrdf.repository.sail.SailRepositoryConnection;
import org.openrdf.sail.Sail;
import org.openrdf.sail.SailException;
+import mvm.rya.accumulo.AccumuloRdfConfiguration;
+import mvm.rya.api.RdfCloudTripleStoreConfiguration;
+import mvm.rya.indexing.RyaSailFactory;
+import mvm.rya.indexing.accumulo.ConfigUtils;
+import mvm.rya.indexing.accumulo.geo.GeoConstants;
+import mvm.rya.indexing.external.tupleSet.AccumuloIndexSet;
+
public class RyaDirectExample {
private static final Logger log = Logger.getLogger(RyaDirectExample.class);
@@ -72,27 +72,27 @@ public class RyaDirectExample {
private static final String INSTANCE = "instance";
private static final String RYA_TABLE_PREFIX = "x_test_triplestore_";
private static final String AUTHS = "";
-
-
-
+
+
+
public static void main(String[] args) throws Exception {
Configuration conf = getConf();
conf.setBoolean(ConfigUtils.DISPLAY_QUERY_PLAN, PRINT_QUERIES);
-
+
log.info("Creating the tables as root.");
// createTables(addRootConf(conf), conf);
SailRepository repository = null;
SailRepositoryConnection conn = null;
-
+
try {
log.info("Connecting to Indexing Sail Repository.");
-
+
Sail extSail = RyaSailFactory.getInstance(conf);
repository = new SailRepository(extSail);
repository.initialize();
conn = repository.getConnection();
-
+
createPCJ(conn);
long start = System.currentTimeMillis();
@@ -110,6 +110,12 @@ public class RyaDirectExample {
testTemporalFreeGeoSearch(conn);
log.info("Running SPARQL Example: Geo, Freetext, and PCJ Search");
testGeoFreetextWithPCJSearch(conn);
+ log.info("Running SPARQL Example: Delete Temporal Data");
+ testDeleteTemporalData(conn);
+ log.info("Running SPARQL Example: Delete Free Text Data");
+ testDeleteFreeTextData(conn);
+ log.info("Running SPARQL Example: Delete Geo Data");
+ testDeleteGeoData(conn);
log.info("TIME: " + (System.currentTimeMillis() - start) / 1000.);
} finally {
@@ -201,10 +207,10 @@ public class RyaDirectExample {
Validate.isTrue(resultHandler.getCount() == 0);
}
-
-
+
+
private static void testPCJSearch(SailRepositoryConnection conn) throws Exception {
-
+
String queryString;
TupleQuery tupleQuery;
CountingResultHandler tupleHandler;
@@ -222,7 +228,7 @@ public class RyaDirectExample {
tupleQuery.evaluate(tupleHandler);
log.info("Result count : " + tupleHandler.getCount());
Validate.isTrue(tupleHandler.getCount() == 1);
-
+
// ///////////// search for bob
queryString = "PREFIX fts: <http://rdf.useekm.com/fts#> "//
+ "SELECT ?e ?c ?l ?o " //
@@ -236,13 +242,13 @@ public class RyaDirectExample {
tupleHandler = new CountingResultHandler();
tupleQuery.evaluate(tupleHandler);
log.info("Result count : " + tupleHandler.getCount());
- Validate.isTrue(tupleHandler.getCount() == 2);
-
+ Validate.isTrue(tupleHandler.getCount() == 2);
+
}
-
-
-
+
+
+
private static void testAddAndTemporalSearchWithPCJ(SailRepositoryConnection conn) throws Exception {
// create some resources and literals to make statements out of
@@ -254,15 +260,16 @@ public class RyaDirectExample {
+ " time:inXSDDateTime '2001-01-01T04:01:02.000-05:00'^^<http://www.w3.org/2001/XMLSchema#dateTime> ;\n" // 2 seconds
+ " time:inXSDDateTime \"2001-01-01T01:01:03-08:00\" ;\n" // 3 seconds
+ " time:inXSDDateTime '2001-01-01T01:01:04-08:00' ;\n" // 4 seconds
- + " time:inXSDDateTime '2001-01-01T09:01:05Z' ;\n"
- + " time:inXSDDateTime '2006-01-01' ;\n"
- + " time:inXSDDateTime '2007-01-01' ;\n"
+ + " time:inXSDDateTime '2001-01-01T09:01:05Z' ;\n"
+ + " time:inXSDDateTime '2006-01-01' ;\n"
+ + " time:inXSDDateTime '2007-01-01' ;\n"
+ " time:inXSDDateTime '2008-01-01' ; .\n"
+ "}";
Update update = conn.prepareUpdate(QueryLanguage.SPARQL, sparqlInsert);
update.execute();
+
// Find all stored dates.
String queryString = "PREFIX time: <http://www.w3.org/2006/time#> \n"//
+ "PREFIX tempo: <tag:rya-rdf.org,2015:temporal#> \n"//
@@ -271,15 +278,15 @@ public class RyaDirectExample {
+ " ?event time:inXSDDateTime ?time . \n"//
+ " FILTER(tempo:after(?time, '2001-01-01T01:01:03-08:00') ) \n"// after 3 seconds
+ "}";//
-
-
+
+
TupleQuery tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, queryString);
CountingResultHandler tupleHandler = new CountingResultHandler();
tupleQuery.evaluate(tupleHandler);
log.info("Result count : " + tupleHandler.getCount());
Validate.isTrue(tupleHandler.getCount() == 5);
-
+
// Find all stored dates.
queryString = "PREFIX time: <http://www.w3.org/2006/time#> \n"//
+ "PREFIX tempo: <tag:rya-rdf.org,2015:temporal#> \n"//
@@ -320,10 +327,6 @@ public class RyaDirectExample {
}
-
-
-
-
private static void testAddAndFreeTextSearchWithPCJ(SailRepositoryConnection conn) throws Exception {
// add data to the repository using the SailRepository add methods
ValueFactory f = conn.getValueFactory();
@@ -338,7 +341,7 @@ public class RyaDirectExample {
uuid = "urn:people:bobss";
conn.add(f.createURI(uuid), RDF.TYPE, person);
conn.add(f.createURI(uuid), RDFS.LABEL, f.createLiteral("Bob Snob Hose", "en"));
-
+
String queryString;
TupleQuery tupleQuery;
CountingResultHandler tupleHandler;
@@ -355,7 +358,7 @@ public class RyaDirectExample {
tupleQuery.evaluate(tupleHandler);
log.info("Result count : " + tupleHandler.getCount());
Validate.isTrue(tupleHandler.getCount() == 1);
-
+
// ///////////// search for alice and bob
queryString = "PREFIX fts: <http://rdf.useekm.com/fts#> "//
@@ -370,7 +373,7 @@ public class RyaDirectExample {
tupleQuery.evaluate(tupleHandler);
log.info("Result count : " + tupleHandler.getCount());
Validate.isTrue(tupleHandler.getCount() == 2);
-
+
// ///////////// search for alice and bob
queryString = "PREFIX fts: <http://rdf.useekm.com/fts#> "//
+ "SELECT ?person ?match " //
@@ -385,8 +388,8 @@ public class RyaDirectExample {
tupleQuery.evaluate(tupleHandler);
log.info("Result count : " + tupleHandler.getCount());
Validate.isTrue(tupleHandler.getCount() == 1);
-
-
+
+
// ///////////// search for bob
queryString = "PREFIX fts: <http://rdf.useekm.com/fts#> "//
+ "SELECT ?person ?match ?e ?c ?l ?o " //
@@ -421,11 +424,11 @@ public class RyaDirectExample {
Update u = conn.prepareUpdate(QueryLanguage.SPARQL, update);
u.execute();
-
+
String queryString;
TupleQuery tupleQuery;
CountingResultHandler tupleHandler;
-
+
// point outside search ring
queryString = "PREFIX geo: <http://www.opengis.net/ont/geosparql#> "//
+ "PREFIX geof: <http://www.opengis.net/def/function/geosparql/> "//
@@ -442,7 +445,8 @@ public class RyaDirectExample {
tupleQuery.evaluate(tupleHandler);
log.info("Result count : " + tupleHandler.getCount());
Validate.isTrue(tupleHandler.getCount() == 0);
-
+
+
// point inside search ring
queryString = "PREFIX geo: <http://www.opengis.net/ont/geosparql#> "//
+ "PREFIX geof: <http://www.opengis.net/def/function/geosparql/> "//
@@ -457,14 +461,14 @@ public class RyaDirectExample {
+ " ?point geo:asWKT ?wkt . "//
+ " FILTER(geof:sfWithin(?wkt, \"POLYGON((-78 39, -77 39, -77 38, -78 38, -78 39))\"^^geo:wktLiteral)) " //
+ "}";//
-
+
tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, queryString);
tupleHandler = new CountingResultHandler();
tupleQuery.evaluate(tupleHandler);
log.info("Result count : " + tupleHandler.getCount());
Validate.isTrue(tupleHandler.getCount() == 1);
-
-
+
+
// point inside search ring with Pre-Computed Join
queryString = "PREFIX geo: <http://www.opengis.net/ont/geosparql#> "//
+ "PREFIX geof: <http://www.opengis.net/def/function/geosparql/> "//
@@ -479,7 +483,7 @@ public class RyaDirectExample {
+ " ?point geo:asWKT ?wkt . "//
+ " FILTER(geof:sfWithin(?wkt, \"POLYGON((-78 39, -77 39, -77 38, -78 38, -78 39))\"^^geo:wktLiteral)) " //
+ "}";//
-
+
tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, queryString);
tupleHandler = new CountingResultHandler();
tupleQuery.evaluate(tupleHandler);
@@ -505,7 +509,7 @@ public class RyaDirectExample {
tupleQuery.evaluate(tupleHandler);
log.info("Result count : " + tupleHandler.getCount());
Validate.isTrue(tupleHandler.getCount() == 0);
-
+
// point inside search ring with different Pre-Computed Join
queryString = "PREFIX geo: <http://www.opengis.net/ont/geosparql#> "//
+ "PREFIX geof: <http://www.opengis.net/def/function/geosparql/> "//
@@ -526,12 +530,12 @@ public class RyaDirectExample {
log.info("Result count : " + tupleHandler.getCount());
Validate.isTrue(tupleHandler.getCount() == 1);
}
-
-
- private static void testTemporalFreeGeoSearch(SailRepositoryConnection conn) throws MalformedQueryException,
+
+
+ private static void testTemporalFreeGeoSearch(SailRepositoryConnection conn) throws MalformedQueryException,
RepositoryException, UpdateExecutionException, TupleQueryResultHandlerException, QueryEvaluationException {
-
-
+
+
String queryString;
TupleQuery tupleQuery;
CountingResultHandler tupleHandler;
@@ -556,21 +560,21 @@ public class RyaDirectExample {
+ " ?person <http://www.w3.org/2000/01/rdf-schema#label> ?match . "//
+ " FILTER(fts:text(?match, \"pal*\")) " //
+ "}";//
-
-
-
+
+
+
tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, queryString);
tupleHandler = new CountingResultHandler();
tupleQuery.evaluate(tupleHandler);
log.info("Result count : " + tupleHandler.getCount());
- Validate.isTrue(tupleHandler.getCount() == 5);
-
+ Validate.isTrue(tupleHandler.getCount() == 5);
+
}
-
-
-
- private static void testGeoFreetextWithPCJSearch(SailRepositoryConnection conn) throws MalformedQueryException,
+
+
+
+ private static void testGeoFreetextWithPCJSearch(SailRepositoryConnection conn) throws MalformedQueryException,
RepositoryException, TupleQueryResultHandlerException, QueryEvaluationException {
// ring outside point
String queryString = "PREFIX geo: <http://www.opengis.net/ont/geosparql#> "//
@@ -596,12 +600,122 @@ public class RyaDirectExample {
log.info("Result count : " + tupleHandler.getCount());
Validate.isTrue(tupleHandler.getCount() == 1);
}
-
-
-
- private static void createPCJ(SailRepositoryConnection conn)
+
+
+ private static void testDeleteTemporalData(SailRepositoryConnection conn) throws Exception {
+ // Delete all stored dates
+ String sparqlDelete = "PREFIX time: <http://www.w3.org/2006/time#>\n"
+ + "PREFIX tempo: <tag:rya-rdf.org,2015:temporal#> \n"//
+ + "DELETE {\n" //
+ + " ?event time:inXSDDateTime ?time . \n"
+ + "}\n"
+ + "WHERE { \n"
+ + " ?event time:inXSDDateTime ?time . \n"//
+ + "}";//
+
+ Update deleteUpdate = conn.prepareUpdate(QueryLanguage.SPARQL, sparqlDelete);
+ deleteUpdate.execute();
+
+
+ // Find all stored dates.
+ String queryString = "PREFIX time: <http://www.w3.org/2006/time#> \n"//
+ + "PREFIX tempo: <tag:rya-rdf.org,2015:temporal#> \n"//
+ + "SELECT ?event ?time \n" //
+ + "WHERE { \n"
+ + " ?event time:inXSDDateTime ?time . \n"//
+ + " FILTER(tempo:after(?time, '2001-01-01T01:01:03-08:00') ) \n"// after 3 seconds
+ + "}";//
+
+
+ CountingResultHandler tupleHandler = new CountingResultHandler();
+ TupleQuery tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, queryString);
+ tupleQuery.evaluate(tupleHandler);
+ log.info("Result count : " + tupleHandler.getCount());
+ Validate.isTrue(tupleHandler.getCount() == 0);
+ }
+
+
+ private static void testDeleteFreeTextData(SailRepositoryConnection conn) throws Exception {
+ // Delete data from the repository using the SailRepository remove methods
+ ValueFactory f = conn.getValueFactory();
+ URI person = f.createURI("http://example.org/ontology/Person");
+
+ String uuid;
+
+ uuid = "urn:people:alice";
+ conn.remove(f.createURI(uuid), RDF.TYPE, person);
+ conn.remove(f.createURI(uuid), RDFS.LABEL, f.createLiteral("Alice Palace Hose", f.createURI("xsd:string")));
+
+ uuid = "urn:people:bobss";
+ conn.remove(f.createURI(uuid), RDF.TYPE, person);
+ conn.remove(f.createURI(uuid), RDFS.LABEL, f.createLiteral("Bob Snob Hose", "en"));
+
+ conn.remove(person, RDFS.LABEL, f.createLiteral("label", "en"));
+
+ String queryString;
+ TupleQuery tupleQuery;
+ CountingResultHandler tupleHandler;
+
+ // Find all
+ queryString = "PREFIX fts: <http://rdf.useekm.com/fts#> "//
+ + "SELECT ?person ?match " //
+ + "{" //
+ + " ?person <http://www.w3.org/2000/01/rdf-schema#label> ?match . "//
+ + " ?person a <http://example.org/ontology/Person> . "//
+ + "}";//
+ tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, queryString);
+ tupleHandler = new CountingResultHandler();
+ tupleQuery.evaluate(tupleHandler);
+ log.info("Result count : " + tupleHandler.getCount());
+ Validate.isTrue(tupleHandler.getCount() == 0);
+ }
+
+
+ private static void testDeleteGeoData(SailRepositoryConnection conn) throws Exception {
+ // Delete all stored points
+ String sparqlDelete = "PREFIX geo: <http://www.opengis.net/ont/geosparql#> "//
+ + "PREFIX geof: <http://www.opengis.net/def/function/geosparql/> "//
+ + "DELETE {\n" //
+ + " ?feature a geo:Feature . "//
+ + " ?feature geo:hasGeometry ?point . "//
+ + " ?point a geo:Point . "//
+ + " ?point geo:asWKT ?wkt . "//
+ + "}\n"
+ + "WHERE { \n"
+ + " ?feature a geo:Feature . "//
+ + " ?feature geo:hasGeometry ?point . "//
+ + " ?point a geo:Point . "//
+ + " ?point geo:asWKT ?wkt . "//
+ + "}";//
+
+ Update deleteUpdate = conn.prepareUpdate(QueryLanguage.SPARQL, sparqlDelete);
+ deleteUpdate.execute();
+
+ String queryString;
+ TupleQuery tupleQuery;
+ CountingResultHandler tupleHandler;
+
+ // Find all stored points
+ queryString = "PREFIX geo: <http://www.opengis.net/ont/geosparql#> "//
+ + "PREFIX geof: <http://www.opengis.net/def/function/geosparql/> "//
+ + "SELECT ?feature ?point ?wkt " //
+ + "{" //
+ + " ?feature a geo:Feature . "//
+ + " ?feature geo:hasGeometry ?point . "//
+ + " ?point a geo:Point . "//
+ + " ?point geo:asWKT ?wkt . "//
+ + "}";//
+ tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, queryString);
+ tupleHandler = new CountingResultHandler();
+ tupleQuery.evaluate(tupleHandler);
+ log.info("Result count : " + tupleHandler.getCount());
+ Validate.isTrue(tupleHandler.getCount() == 0);
+ }
+
+
+ private static void createPCJ(SailRepositoryConnection conn)
throws RepositoryException, AccumuloException, AccumuloSecurityException, TableExistsException {
-
+
String queryString1 = ""//
+ "SELECT ?e ?c ?l ?o " //
+ "{" //
@@ -609,7 +723,7 @@ public class RyaDirectExample {
+ " ?e <http://www.w3.org/2000/01/rdf-schema#label> ?l . "//
+ " ?e <uri:talksTo> ?o . "//
+ "}";//
-
+
String queryString2 = ""//
+ "SELECT ?e ?c ?l ?o " //
+ "{" //
@@ -617,8 +731,8 @@ public class RyaDirectExample {
+ " ?e <http://www.w3.org/2000/01/rdf-schema#label> ?l . "//
+ " ?e <uri:talksTo> ?o . "//
+ "}";//
-
-
+
+
URI obj,subclass,talksTo;
URI person = new URIImpl("urn:people:alice");
URI feature = new URIImpl("urn:feature");
@@ -632,33 +746,24 @@ public class RyaDirectExample {
conn.add(sub, RDF.TYPE, subclass);
conn.add(sub, RDFS.LABEL, new LiteralImpl("label"));
conn.add(sub, talksTo, obj);
-
- AccumuloIndexSet ais1 = null;
- AccumuloIndexSet ais2 = null;
+
+ AccumuloIndexSet ais1 = null;
+ AccumuloIndexSet ais2 = null;
String tablename1 = RYA_TABLE_PREFIX + "INDEX_1";
String tablename2 = RYA_TABLE_PREFIX + "INDEX_2";
Connector accCon = new MockInstance(INSTANCE).getConnector("root", new PasswordToken("".getBytes()));
accCon.tableOperations().create(tablename1);
accCon.tableOperations().create(tablename2);
-
+
try {
ais1 = new AccumuloIndexSet(queryString1, conn, accCon, tablename1);
ais2 = new AccumuloIndexSet(queryString2, conn, accCon, tablename2);
- } catch (MalformedQueryException e) {
- e.printStackTrace();
- } catch (SailException e) {
- e.printStackTrace();
- } catch (QueryEvaluationException e) {
- e.printStackTrace();
- } catch (MutationsRejectedException e) {
- e.printStackTrace();
- } catch (TableNotFoundException e) {
- e.printStackTrace();
+ } catch (MalformedQueryException | SailException | QueryEvaluationException | MutationsRejectedException | TableNotFoundException e) {
+ log.error("Error creating Accumulo Index", e);
}
-
}
-
+
private static class CountingResultHandler implements TupleQueryResultHandler {
private int count = 0;
@@ -687,14 +792,10 @@ public class RyaDirectExample {
@Override
public void handleBoolean(boolean arg0) throws QueryResultHandlerException {
- // TODO Auto-generated method stub
-
}
@Override
public void handleLinks(List<String> arg0) throws QueryResultHandlerException {
- // TODO Auto-generated method stub
-
}
}
}