Repository: incubator-rya
Updated Branches:
  refs/heads/master 4f5f208b1 -> 45e7018ab


RYA-387 Restored Mongo IT's that were not being exercised.


Project: http://git-wip-us.apache.org/repos/asf/incubator-rya/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-rya/commit/a2ebefe1
Tree: http://git-wip-us.apache.org/repos/asf/incubator-rya/tree/a2ebefe1
Diff: http://git-wip-us.apache.org/repos/asf/incubator-rya/diff/a2ebefe1

Branch: refs/heads/master
Commit: a2ebefe15bcd7c5e379edbe105e3e97e3eb2e67c
Parents: 4f5f208
Author: jdasch <[email protected]>
Authored: Tue Oct 3 12:43:28 2017 -0400
Committer: Caleb Meier <[email protected]>
Committed: Tue Oct 3 13:40:13 2017 -0700

----------------------------------------------------------------------
 .../indexing/mongo/MongoGeoIndexerFilterIT.java | 298 +++++++++++++++++++
 .../indexing/mongo/MongoIndexerDeleteIT.java    | 176 +++++++++++
 .../indexing/mongo/MongoGeoIndexerFilterIT.java | 298 -------------------
 .../indexing/mongo/MongoIndexerDeleteIT.java    | 176 -----------
 4 files changed, 474 insertions(+), 474 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/a2ebefe1/extras/rya.geoindexing/geo.mongo/src/test/java/org/apache/rya/indexing/mongo/MongoGeoIndexerFilterIT.java
----------------------------------------------------------------------
diff --git 
a/extras/rya.geoindexing/geo.mongo/src/test/java/org/apache/rya/indexing/mongo/MongoGeoIndexerFilterIT.java
 
b/extras/rya.geoindexing/geo.mongo/src/test/java/org/apache/rya/indexing/mongo/MongoGeoIndexerFilterIT.java
new file mode 100644
index 0000000..81b45d1
--- /dev/null
+++ 
b/extras/rya.geoindexing/geo.mongo/src/test/java/org/apache/rya/indexing/mongo/MongoGeoIndexerFilterIT.java
@@ -0,0 +1,298 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.rya.indexing.mongo;
+
+import static org.junit.Assert.assertEquals;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.atomic.AtomicInteger;
+
+import org.apache.rya.api.domain.RyaStatement;
+import org.apache.rya.api.resolver.RdfToRyaConversions;
+import org.apache.rya.api.resolver.RyaToRdfConversions;
+import org.apache.rya.indexing.GeoConstants;
+import org.apache.rya.indexing.GeoRyaSailFactory;
+import org.apache.rya.indexing.accumulo.ConfigUtils;
+import org.apache.rya.indexing.accumulo.geo.OptionalConfigUtils;
+import org.apache.rya.indexing.geotemporal.mongo.MongoITBase;
+import org.apache.rya.indexing.mongodb.MongoIndexingConfiguration;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.openrdf.model.Resource;
+import org.openrdf.model.Statement;
+import org.openrdf.model.URI;
+import org.openrdf.model.Value;
+import org.openrdf.model.ValueFactory;
+import org.openrdf.model.impl.StatementImpl;
+import org.openrdf.model.impl.ValueFactoryImpl;
+import org.openrdf.query.BindingSet;
+import org.openrdf.query.MalformedQueryException;
+import org.openrdf.query.QueryEvaluationException;
+import org.openrdf.query.QueryLanguage;
+import org.openrdf.query.TupleQueryResult;
+import org.openrdf.repository.RepositoryException;
+import org.openrdf.repository.sail.SailRepository;
+import org.openrdf.repository.sail.SailRepositoryConnection;
+import org.openrdf.sail.Sail;
+
+import com.mongodb.MongoClient;
+import com.vividsolutions.jts.geom.Coordinate;
+import com.vividsolutions.jts.geom.Geometry;
+import com.vividsolutions.jts.geom.GeometryFactory;
+import com.vividsolutions.jts.io.ParseException;
+import com.vividsolutions.jts.io.WKTReader;
+import com.vividsolutions.jts.io.WKTWriter;
+
+public class MongoGeoIndexerFilterIT extends MongoITBase {
+    private static final GeometryFactory GF = new GeometryFactory();
+    private static final Geometry WASHINGTON_MONUMENT = GF.createPoint(new 
Coordinate(38.8895, 77.0353));
+    private static final Geometry LINCOLN_MEMORIAL = GF.createPoint(new 
Coordinate(38.8893, 77.0502));
+    private static final Geometry CAPITAL_BUILDING = GF.createPoint(new 
Coordinate(38.8899, 77.0091));
+    private static final Geometry WHITE_HOUSE = GF.createPoint(new 
Coordinate(38.8977, 77.0365));
+
+    private static final AtomicInteger COUNTER = new AtomicInteger(1);
+
+    private MongoClient client;
+    private Sail sail;
+    private SailRepositoryConnection conn;
+    @Before
+    public void before() throws Exception {
+        final MongoIndexingConfiguration indxrConf = 
MongoIndexingConfiguration.builder()
+            .setMongoCollectionPrefix("rya_")
+            .setMongoDBName(MongoGeoIndexerFilterIT.class.getSimpleName() + 
"_" + COUNTER.getAndIncrement())
+            .setUseMongoFreetextIndex(false)
+            .setUseMongoTemporalIndex(false)
+            .build();
+
+        client = super.getMongoClient();
+        indxrConf.setBoolean(OptionalConfigUtils.USE_GEO, true);
+        indxrConf.set(ConfigUtils.GEO_PREDICATES_LIST, 
"http://www.opengis.net/ont/geosparql#asWKT";);
+        indxrConf.setBoolean(ConfigUtils.USE_MONGO, true);
+        indxrConf.setMongoClient(client);
+
+        sail = GeoRyaSailFactory.getInstance(indxrConf);
+        conn = new SailRepository(sail).getConnection();
+    }
+
+    @After
+    public void after() throws RepositoryException {
+        if(conn != null) {
+            conn.close();
+        }
+    }
+
+    @Test
+    public void nearHappyUsesTest() throws Exception {
+        populateRya();
+
+        //Only captial
+        String query =
+             "PREFIX geo: <http://www.opengis.net/ont/geosparql#>\n"
+           + "PREFIX geof: <http://www.opengis.net/def/function/geosparql/>\n"
+           + "SELECT * \n" //
+           + "WHERE { \n"
+           + "  <urn:geo> geo:asWKT ?point .\n"
+           + "  FILTER(geof:sfNear(?point, \"POINT(38.8895 
77.0353)\"^^geo:wktLiteral, 0.0, 2000))"
+           + "}";
+
+        TupleQueryResult rez = conn.prepareTupleQuery(QueryLanguage.SPARQL, 
query).evaluate();
+        final List<BindingSet> results = new ArrayList<>();
+        while (rez.hasNext()) {
+            final BindingSet bs = rez.next();
+            results.add(bs);
+        }
+        assertEquals(1, results.size());
+        assertEquals(CAPITAL_BUILDING, bindingToGeo(results.get(0)));
+
+        //all but capital
+        query =
+            "PREFIX geo: <http://www.opengis.net/ont/geosparql#>\n"
+          + "PREFIX geof: <http://www.opengis.net/def/function/geosparql/>\n"
+          + "SELECT * \n" //
+          + "WHERE { \n"
+          + "  <urn:geo> geo:asWKT ?point .\n"
+          + "  FILTER(geof:sfNear(?point, \"POINT(38.8895 
77.0353)\"^^geo:wktLiteral, 2000))"
+          + "}";
+
+        rez = conn.prepareTupleQuery(QueryLanguage.SPARQL, query).evaluate();
+        results.clear();
+        while (rez.hasNext()) {
+            final BindingSet bs = rez.next();
+            results.add(bs);
+        }
+        assertEquals(3, results.size());
+        assertEquals(WASHINGTON_MONUMENT, bindingToGeo(results.get(0)));
+        assertEquals(WHITE_HOUSE, bindingToGeo(results.get(1)));
+        assertEquals(LINCOLN_MEMORIAL, bindingToGeo(results.get(2)));
+
+        // all of them
+        query =
+            "PREFIX geo: <http://www.opengis.net/ont/geosparql#>\n"
+          + "PREFIX geof: <http://www.opengis.net/def/function/geosparql/>\n"
+          + "SELECT * \n" //
+          + "WHERE { \n"
+          + "  <urn:geo> geo:asWKT ?point .\n"
+          + "  FILTER(geof:sfNear(?point, \"POINT(38.8895 
77.0353)\"^^geo:wktLiteral, 6000, 000))"
+          + "}";
+
+        rez = conn.prepareTupleQuery(QueryLanguage.SPARQL, query).evaluate();
+        results.clear();
+        while (rez.hasNext()) {
+            final BindingSet bs = rez.next();
+            results.add(bs);
+        }
+        assertEquals(4, results.size());
+        assertEquals(WASHINGTON_MONUMENT, bindingToGeo(results.get(0)));
+        assertEquals(WHITE_HOUSE, bindingToGeo(results.get(1)));
+        assertEquals(LINCOLN_MEMORIAL, bindingToGeo(results.get(2)));
+        assertEquals(CAPITAL_BUILDING, bindingToGeo(results.get(3)));
+
+        // donut, only 2
+        query =
+            "PREFIX geo: <http://www.opengis.net/ont/geosparql#>\n"
+          + "PREFIX geof: <http://www.opengis.net/def/function/geosparql/>\n"
+          + "SELECT * \n" //
+          + "WHERE { \n"
+          + "  <urn:geo> geo:asWKT ?point .\n"
+          + "  FILTER(geof:sfNear(?point, \"POINT(38.8895 
77.0353)\"^^geo:wktLiteral, 2000, 100))"
+          + "}";
+
+        rez = conn.prepareTupleQuery(QueryLanguage.SPARQL, query).evaluate();
+        results.clear();
+        while (rez.hasNext()) {
+            final BindingSet bs = rez.next();
+            results.add(bs);
+        }
+        assertEquals(2, results.size());
+        assertEquals(WHITE_HOUSE, bindingToGeo(results.get(0)));
+        assertEquals(LINCOLN_MEMORIAL, bindingToGeo(results.get(1)));
+
+        // all of them
+        query =
+            "PREFIX geo: <http://www.opengis.net/ont/geosparql#>\n"
+          + "PREFIX geof: <http://www.opengis.net/def/function/geosparql/>\n"
+          + "SELECT * \n" //
+          + "WHERE { \n"
+          + "  <urn:geo> geo:asWKT ?point .\n"
+          + "  FILTER(geof:sfNear(?point, \"POINT(38.8895 
77.0353)\"^^geo:wktLiteral))"
+          + "}";
+        rez = conn.prepareTupleQuery(QueryLanguage.SPARQL, query).evaluate();
+        results.clear();
+        while (rez.hasNext()) {
+            final BindingSet bs = rez.next();
+            results.add(bs);
+        }
+        assertEquals(4, results.size());
+        assertEquals(WASHINGTON_MONUMENT, bindingToGeo(results.get(0)));
+        assertEquals(WHITE_HOUSE, bindingToGeo(results.get(1)));
+        assertEquals(LINCOLN_MEMORIAL, bindingToGeo(results.get(2)));
+        assertEquals(CAPITAL_BUILDING, bindingToGeo(results.get(3)));
+    }
+
+    @Test(expected = MalformedQueryException.class)
+    public void near_invalidDistance() throws Exception {
+        populateRya();
+
+        //Only captial
+        final String query =
+             "PREFIX geo: <http://www.opengis.net/ont/geosparql#>\n"
+           + "PREFIX geof: <http://www.opengis.net/def/function/geosparql/>\n"
+           + "SELECT * \n" //
+           + "WHERE { \n"
+           + "  <urn:geo> geo:asWKT ?point .\n"
+                + "  FILTER(geof:sfNear(?point, \"POINT(38.8895 
77.0353)\"^^geo:wktLiteral, distance))"
+           + "}";
+
+        conn.prepareTupleQuery(QueryLanguage.SPARQL, query).evaluate();
+    }
+
+    @Test(expected = IllegalArgumentException.class)
+    public void near_negativeDistance() throws Exception {
+        populateRya();
+
+        //Only captial
+        final String query =
+             "PREFIX geo: <http://www.opengis.net/ont/geosparql#>\n"
+           + "PREFIX geof: <http://www.opengis.net/def/function/geosparql/>\n"
+           + "SELECT * \n" //
+           + "WHERE { \n"
+           + "  <urn:geo> geo:asWKT ?point .\n"
+           + "  FILTER(geof:sfNear(?point, \"POINT(38.8895 
77.0353)\"^^geo:wktLiteral, -100))"
+           + "}";
+
+        final TupleQueryResult rez = 
conn.prepareTupleQuery(QueryLanguage.SPARQL, query).evaluate();
+        while(rez.hasNext()) {
+            rez.next();
+        }
+    }
+
+    @Test(expected = QueryEvaluationException.class)
+    public void tooManyArgumentsTest() throws Exception {
+        populateRya();
+
+        // Only captial
+        final String query =
+              "PREFIX geo: <http://www.opengis.net/ont/geosparql#>\n"
+            + "PREFIX geof: <http://www.opengis.net/def/function/geosparql/>\n"
+            + "SELECT * \n" //
+            + "WHERE { \n" + "  <urn:geo> geo:asWKT ?point .\n"
+            + "  FILTER(geof:sfNear(?point, \"POINT(38.8895 
77.0353)\"^^geo:wktLiteral, 100, 1000, 10))"
+            + "}";
+
+        conn.prepareTupleQuery(QueryLanguage.SPARQL, query).evaluate();
+    }
+
+    private void populateRya() throws Exception {
+        // geo 2x2 points
+        conn.begin();
+        RyaStatement stmnt = statement(WASHINGTON_MONUMENT);
+        Statement statement = RyaToRdfConversions.convertStatement(stmnt);
+        conn.add(statement);
+
+        stmnt = statement(LINCOLN_MEMORIAL);
+        statement = RyaToRdfConversions.convertStatement(stmnt);
+        conn.add(statement);
+
+        stmnt = statement(CAPITAL_BUILDING);
+        statement = RyaToRdfConversions.convertStatement(stmnt);
+        conn.add(statement);
+
+        stmnt = statement(WHITE_HOUSE);
+        statement = RyaToRdfConversions.convertStatement(stmnt);
+        conn.add(statement);
+        conn.commit();
+    }
+
+    private static Geometry bindingToGeo(final BindingSet bs) throws 
ParseException {
+        final WKTReader w = new WKTReader();
+        return w.read(bs.getValue("point").stringValue());
+    }
+
+    private static RyaStatement statement(final Geometry geo) {
+        final ValueFactory vf = new ValueFactoryImpl();
+        final Resource subject = vf.createURI("urn:geo");
+        final URI predicate = GeoConstants.GEO_AS_WKT;
+        final WKTWriter w = new WKTWriter();
+        final Value object = vf.createLiteral(w.write(geo), 
GeoConstants.XMLSCHEMA_OGC_WKT);
+        return RdfToRyaConversions.convertStatement(new StatementImpl(subject, 
predicate, object));
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/a2ebefe1/extras/rya.geoindexing/geo.mongo/src/test/java/org/apache/rya/indexing/mongo/MongoIndexerDeleteIT.java
----------------------------------------------------------------------
diff --git 
a/extras/rya.geoindexing/geo.mongo/src/test/java/org/apache/rya/indexing/mongo/MongoIndexerDeleteIT.java
 
b/extras/rya.geoindexing/geo.mongo/src/test/java/org/apache/rya/indexing/mongo/MongoIndexerDeleteIT.java
new file mode 100644
index 0000000..65f37c3
--- /dev/null
+++ 
b/extras/rya.geoindexing/geo.mongo/src/test/java/org/apache/rya/indexing/mongo/MongoIndexerDeleteIT.java
@@ -0,0 +1,176 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.rya.indexing.mongo;
+
+import static org.junit.Assert.assertEquals;
+
+import org.apache.rya.api.domain.RyaStatement;
+import org.apache.rya.api.resolver.RdfToRyaConversions;
+import org.apache.rya.api.resolver.RyaToRdfConversions;
+import org.apache.rya.indexing.GeoConstants;
+import org.apache.rya.indexing.GeoRyaSailFactory;
+import org.apache.rya.indexing.TemporalInstant;
+import org.apache.rya.indexing.TemporalInstantRfc3339;
+import org.apache.rya.indexing.accumulo.ConfigUtils;
+import org.apache.rya.indexing.accumulo.geo.OptionalConfigUtils;
+import org.apache.rya.indexing.mongodb.MongoIndexingConfiguration;
+import org.apache.rya.mongodb.MockMongoSingleton;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.openrdf.model.Resource;
+import org.openrdf.model.Statement;
+import org.openrdf.model.URI;
+import org.openrdf.model.Value;
+import org.openrdf.model.ValueFactory;
+import org.openrdf.model.impl.StatementImpl;
+import org.openrdf.model.impl.ValueFactoryImpl;
+import org.openrdf.model.vocabulary.RDF;
+import org.openrdf.model.vocabulary.RDFS;
+import org.openrdf.query.QueryLanguage;
+import org.openrdf.query.Update;
+import org.openrdf.repository.sail.SailRepository;
+import org.openrdf.repository.sail.SailRepositoryConnection;
+import org.openrdf.sail.Sail;
+
+import com.mongodb.MongoClient;
+import com.vividsolutions.jts.geom.Coordinate;
+import com.vividsolutions.jts.geom.Geometry;
+import com.vividsolutions.jts.geom.GeometryFactory;
+import com.vividsolutions.jts.io.WKTWriter;
+
+public class MongoIndexerDeleteIT {
+    private MongoClient client;
+    private Sail sail;
+    private SailRepositoryConnection conn;
+
+    @Before
+    public void before() throws Exception {
+        final MongoIndexingConfiguration indxrConf = 
MongoIndexingConfiguration.builder()
+                
.setMongoCollectionPrefix("rya_").setMongoDBName("indexerTests")
+            .setUseMongoFreetextIndex(true)
+            .setUseMongoTemporalIndex(true)
+            .setMongoFreeTextPredicates(RDFS.LABEL.stringValue())
+            .setMongoTemporalPredicates("Property:atTime")
+            .build();
+
+        client = MockMongoSingleton.getInstance();
+        indxrConf.setBoolean(OptionalConfigUtils.USE_GEO, true);
+        indxrConf.set(ConfigUtils.GEO_PREDICATES_LIST, 
"http://www.opengis.net/ont/geosparql#asWKT";);
+        indxrConf.setBoolean(ConfigUtils.USE_MONGO, true);
+        indxrConf.setMongoClient(client);
+
+        sail = GeoRyaSailFactory.getInstance(indxrConf);
+        conn = new SailRepository(sail).getConnection();
+        conn.begin();
+    }
+
+    @After
+    public void after() throws Exception {
+        if (conn != null) {
+            conn.clear();
+        }
+    }
+
+    @Test
+    public void deleteTest() throws Exception {
+        populateRya();
+
+        //The extra 1 is from the person type defined in freetext
+        assertEquals(8, 
client.getDatabase("indexerTests").getCollection("rya__triples").count());
+        assertEquals(4, 
client.getDatabase("indexerTests").getCollection("rya_rya_geo").count());
+        assertEquals(1, 
client.getDatabase("indexerTests").getCollection("rya_rya_temporal").count());
+        assertEquals(2, 
client.getDatabase("indexerTests").getCollection("rya_rya_freetext").count());
+
+        //free text -- remove one from many
+        String delete = "DELETE DATA \n" //
+           + "{\n"
+           + "  <urn:people> <http://www.w3.org/2000/01/rdf-schema#label> 
\"Alice Palace Hose\" "
+           + "}";
+        Update update = conn.prepareUpdate(QueryLanguage.SPARQL, delete);
+        update.execute();
+
+        // temporal -- remove one from one
+        delete = "DELETE DATA \n" //
+           + "{\n"
+           + "  <foo:time> <Property:atTime> \"0001-02-03T04:05:06Z\" "
+           + "}";
+
+        update = conn.prepareUpdate(QueryLanguage.SPARQL, delete);
+        update.execute();
+
+        //geo -- remove many from many
+        delete =
+             "PREFIX geo: <http://www.opengis.net/ont/geosparql#>\n"
+           + "PREFIX geof: <http://www.opengis.net/def/function/geosparql/>\n"
+           + "DELETE \n" //
+           + "{\n"
+           + "  <urn:geo> geo:asWKT ?point \n"
+           + "}"
+           + "WHERE { \n"
+           + "  <urn:geo> geo:asWKT ?point .\n"
+           + "  FILTER(geof:sfWithin(?point, \"POLYGON((0 0, 2 0, 2 1, 0 1, 0 
0))\"^^geo:wktLiteral))"
+           + "}";
+
+        update = conn.prepareUpdate(QueryLanguage.SPARQL, delete);
+        update.execute();
+
+        assertEquals(2, 
client.getDatabase("indexerTests").getCollection("rya_rya_geo").count());
+        assertEquals(0, 
client.getDatabase("indexerTests").getCollection("rya_rya_temporal").count());
+        assertEquals(1, 
client.getDatabase("indexerTests").getCollection("rya_rya_freetext").count());
+        assertEquals(4, 
client.getDatabase("indexerTests").getCollection("rya__triples").count());
+    }
+
+    private void populateRya() throws Exception {
+        final ValueFactory VF = new ValueFactoryImpl();
+        // geo 2x2 points
+        final GeometryFactory GF = new GeometryFactory();
+        for (int x = 0; x <= 1; x++) {
+            for (int y = 0; y <= 1; y++) {
+                final Geometry geo = GF.createPoint(new Coordinate(x + .5, y + 
.5));
+                final RyaStatement stmnt = statement(geo);
+                final Statement statement = 
RyaToRdfConversions.convertStatement(stmnt);
+                conn.add(statement);
+            }
+        }
+
+        // freetext
+        final URI person = VF.createURI("http://example.org/ontology/Person";);
+        String uuid;
+
+        uuid = "urn:people";
+        conn.add(VF.createURI(uuid), RDF.TYPE, person);
+        conn.add(VF.createURI(uuid), RDFS.LABEL, VF.createLiteral("Alice 
Palace Hose", VF.createURI("http://www.w3.org/2001/XMLSchema#string";)));
+        conn.add(VF.createURI(uuid), RDFS.LABEL, VF.createLiteral("Bob Snob 
Hose", "en"));
+
+        // temporal
+        final TemporalInstant instant = new TemporalInstantRfc3339(1, 2, 3, 4, 
5, 6);
+        conn.add(VF.createURI("foo:time"), VF.createURI("Property:atTime"), 
VF.createLiteral(instant.toString()));
+    }
+
+    private static RyaStatement statement(final Geometry geo) {
+        final ValueFactory vf = new ValueFactoryImpl();
+        final Resource subject = vf.createURI("urn:geo");
+        final URI predicate = GeoConstants.GEO_AS_WKT;
+        final WKTWriter w = new WKTWriter();
+        final Value object = vf.createLiteral(w.write(geo), 
GeoConstants.XMLSCHEMA_OGC_WKT);
+        return RdfToRyaConversions.convertStatement(new StatementImpl(subject, 
predicate, object));
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/a2ebefe1/extras/rya.geoindexing/src/test/java/org/apache/rya/indexing/mongo/MongoGeoIndexerFilterIT.java
----------------------------------------------------------------------
diff --git 
a/extras/rya.geoindexing/src/test/java/org/apache/rya/indexing/mongo/MongoGeoIndexerFilterIT.java
 
b/extras/rya.geoindexing/src/test/java/org/apache/rya/indexing/mongo/MongoGeoIndexerFilterIT.java
deleted file mode 100644
index e96955c..0000000
--- 
a/extras/rya.geoindexing/src/test/java/org/apache/rya/indexing/mongo/MongoGeoIndexerFilterIT.java
+++ /dev/null
@@ -1,298 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.rya.indexing.mongo;
-
-import static org.junit.Assert.assertEquals;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.concurrent.atomic.AtomicInteger;
-
-import org.apache.rya.api.domain.RyaStatement;
-import org.apache.rya.api.resolver.RdfToRyaConversions;
-import org.apache.rya.api.resolver.RyaToRdfConversions;
-import org.apache.rya.indexing.GeoConstants;
-import org.apache.rya.indexing.GeoRyaSailFactory;
-import org.apache.rya.indexing.OptionalConfigUtils;
-import org.apache.rya.indexing.accumulo.ConfigUtils;
-import org.apache.rya.indexing.geotemporal.mongo.MongoITBase;
-import org.apache.rya.indexing.mongodb.MongoIndexingConfiguration;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.openrdf.model.Resource;
-import org.openrdf.model.Statement;
-import org.openrdf.model.URI;
-import org.openrdf.model.Value;
-import org.openrdf.model.ValueFactory;
-import org.openrdf.model.impl.StatementImpl;
-import org.openrdf.model.impl.ValueFactoryImpl;
-import org.openrdf.query.BindingSet;
-import org.openrdf.query.MalformedQueryException;
-import org.openrdf.query.QueryEvaluationException;
-import org.openrdf.query.QueryLanguage;
-import org.openrdf.query.TupleQueryResult;
-import org.openrdf.repository.RepositoryException;
-import org.openrdf.repository.sail.SailRepository;
-import org.openrdf.repository.sail.SailRepositoryConnection;
-import org.openrdf.sail.Sail;
-
-import com.mongodb.MongoClient;
-import com.vividsolutions.jts.geom.Coordinate;
-import com.vividsolutions.jts.geom.Geometry;
-import com.vividsolutions.jts.geom.GeometryFactory;
-import com.vividsolutions.jts.io.ParseException;
-import com.vividsolutions.jts.io.WKTReader;
-import com.vividsolutions.jts.io.WKTWriter;
-
-public class MongoGeoIndexerFilterIT extends MongoITBase {
-    private static final GeometryFactory GF = new GeometryFactory();
-    private static final Geometry WASHINGTON_MONUMENT = GF.createPoint(new 
Coordinate(38.8895, 77.0353));
-    private static final Geometry LINCOLN_MEMORIAL = GF.createPoint(new 
Coordinate(38.8893, 77.0502));
-    private static final Geometry CAPITAL_BUILDING = GF.createPoint(new 
Coordinate(38.8899, 77.0091));
-    private static final Geometry WHITE_HOUSE = GF.createPoint(new 
Coordinate(38.8977, 77.0365));
-
-    private static final AtomicInteger COUNTER = new AtomicInteger(1);
-
-    private MongoClient client;
-    private Sail sail;
-    private SailRepositoryConnection conn;
-    @Before
-    public void before() throws Exception {
-        final MongoIndexingConfiguration indxrConf = 
MongoIndexingConfiguration.builder()
-            .setMongoCollectionPrefix("rya_")
-            .setMongoDBName(MongoGeoIndexerFilterIT.class.getSimpleName() + 
"_" + COUNTER.getAndIncrement())
-            .setUseMongoFreetextIndex(false)
-            .setUseMongoTemporalIndex(false)
-            .build();
-
-        client = super.getMongoClient();
-        indxrConf.setBoolean(OptionalConfigUtils.USE_GEO, true);
-        indxrConf.set(ConfigUtils.GEO_PREDICATES_LIST, 
"http://www.opengis.net/ont/geosparql#asWKT";);
-        indxrConf.setBoolean(ConfigUtils.USE_MONGO, true);
-        indxrConf.setMongoClient(client);
-
-        sail = GeoRyaSailFactory.getInstance(indxrConf);
-        conn = new SailRepository(sail).getConnection();
-    }
-
-    @After
-    public void after() throws RepositoryException {
-        if(conn != null) {
-            conn.close();
-        }
-    }
-
-    @Test
-    public void nearHappyUsesTest() throws Exception {
-        populateRya();
-
-        //Only captial
-        String query =
-             "PREFIX geo: <http://www.opengis.net/ont/geosparql#>\n"
-           + "PREFIX geof: <http://www.opengis.net/def/function/geosparql/>\n"
-           + "SELECT * \n" //
-           + "WHERE { \n"
-           + "  <urn:geo> geo:asWKT ?point .\n"
-           + "  FILTER(geof:sfNear(?point, \"POINT(38.8895 
77.0353)\"^^geo:wktLiteral, 0.0, 2000))"
-           + "}";
-
-        TupleQueryResult rez = conn.prepareTupleQuery(QueryLanguage.SPARQL, 
query).evaluate();
-        final List<BindingSet> results = new ArrayList<>();
-        while (rez.hasNext()) {
-            final BindingSet bs = rez.next();
-            results.add(bs);
-        }
-        assertEquals(1, results.size());
-        assertEquals(CAPITAL_BUILDING, bindingToGeo(results.get(0)));
-
-        //all but capital
-        query =
-            "PREFIX geo: <http://www.opengis.net/ont/geosparql#>\n"
-          + "PREFIX geof: <http://www.opengis.net/def/function/geosparql/>\n"
-          + "SELECT * \n" //
-          + "WHERE { \n"
-          + "  <urn:geo> geo:asWKT ?point .\n"
-          + "  FILTER(geof:sfNear(?point, \"POINT(38.8895 
77.0353)\"^^geo:wktLiteral, 2000))"
-          + "}";
-
-        rez = conn.prepareTupleQuery(QueryLanguage.SPARQL, query).evaluate();
-        results.clear();
-        while (rez.hasNext()) {
-            final BindingSet bs = rez.next();
-            results.add(bs);
-        }
-        assertEquals(3, results.size());
-        assertEquals(WASHINGTON_MONUMENT, bindingToGeo(results.get(0)));
-        assertEquals(WHITE_HOUSE, bindingToGeo(results.get(1)));
-        assertEquals(LINCOLN_MEMORIAL, bindingToGeo(results.get(2)));
-
-        // all of them
-        query =
-            "PREFIX geo: <http://www.opengis.net/ont/geosparql#>\n"
-          + "PREFIX geof: <http://www.opengis.net/def/function/geosparql/>\n"
-          + "SELECT * \n" //
-          + "WHERE { \n"
-          + "  <urn:geo> geo:asWKT ?point .\n"
-          + "  FILTER(geof:sfNear(?point, \"POINT(38.8895 
77.0353)\"^^geo:wktLiteral, 6000, 000))"
-          + "}";
-
-        rez = conn.prepareTupleQuery(QueryLanguage.SPARQL, query).evaluate();
-        results.clear();
-        while (rez.hasNext()) {
-            final BindingSet bs = rez.next();
-            results.add(bs);
-        }
-        assertEquals(4, results.size());
-        assertEquals(WASHINGTON_MONUMENT, bindingToGeo(results.get(0)));
-        assertEquals(WHITE_HOUSE, bindingToGeo(results.get(1)));
-        assertEquals(LINCOLN_MEMORIAL, bindingToGeo(results.get(2)));
-        assertEquals(CAPITAL_BUILDING, bindingToGeo(results.get(3)));
-
-        // donut, only 2
-        query =
-            "PREFIX geo: <http://www.opengis.net/ont/geosparql#>\n"
-          + "PREFIX geof: <http://www.opengis.net/def/function/geosparql/>\n"
-          + "SELECT * \n" //
-          + "WHERE { \n"
-          + "  <urn:geo> geo:asWKT ?point .\n"
-          + "  FILTER(geof:sfNear(?point, \"POINT(38.8895 
77.0353)\"^^geo:wktLiteral, 2000, 100))"
-          + "}";
-
-        rez = conn.prepareTupleQuery(QueryLanguage.SPARQL, query).evaluate();
-        results.clear();
-        while (rez.hasNext()) {
-            final BindingSet bs = rez.next();
-            results.add(bs);
-        }
-        assertEquals(2, results.size());
-        assertEquals(WHITE_HOUSE, bindingToGeo(results.get(0)));
-        assertEquals(LINCOLN_MEMORIAL, bindingToGeo(results.get(1)));
-
-        // all of them
-        query =
-            "PREFIX geo: <http://www.opengis.net/ont/geosparql#>\n"
-          + "PREFIX geof: <http://www.opengis.net/def/function/geosparql/>\n"
-          + "SELECT * \n" //
-          + "WHERE { \n"
-          + "  <urn:geo> geo:asWKT ?point .\n"
-          + "  FILTER(geof:sfNear(?point, \"POINT(38.8895 
77.0353)\"^^geo:wktLiteral))"
-          + "}";
-        rez = conn.prepareTupleQuery(QueryLanguage.SPARQL, query).evaluate();
-        results.clear();
-        while (rez.hasNext()) {
-            final BindingSet bs = rez.next();
-            results.add(bs);
-        }
-        assertEquals(4, results.size());
-        assertEquals(WASHINGTON_MONUMENT, bindingToGeo(results.get(0)));
-        assertEquals(WHITE_HOUSE, bindingToGeo(results.get(1)));
-        assertEquals(LINCOLN_MEMORIAL, bindingToGeo(results.get(2)));
-        assertEquals(CAPITAL_BUILDING, bindingToGeo(results.get(3)));
-    }
-
-    @Test(expected = MalformedQueryException.class)
-    public void near_invalidDistance() throws Exception {
-        populateRya();
-
-        //Only captial
-        final String query =
-             "PREFIX geo: <http://www.opengis.net/ont/geosparql#>\n"
-           + "PREFIX geof: <http://www.opengis.net/def/function/geosparql/>\n"
-           + "SELECT * \n" //
-           + "WHERE { \n"
-           + "  <urn:geo> geo:asWKT ?point .\n"
-                + "  FILTER(geof:sfNear(?point, \"POINT(38.8895 
77.0353)\"^^geo:wktLiteral, distance))"
-           + "}";
-
-        conn.prepareTupleQuery(QueryLanguage.SPARQL, query).evaluate();
-    }
-
-    @Test(expected = IllegalArgumentException.class)
-    public void near_negativeDistance() throws Exception {
-        populateRya();
-
-        //Only captial
-        final String query =
-             "PREFIX geo: <http://www.opengis.net/ont/geosparql#>\n"
-           + "PREFIX geof: <http://www.opengis.net/def/function/geosparql/>\n"
-           + "SELECT * \n" //
-           + "WHERE { \n"
-           + "  <urn:geo> geo:asWKT ?point .\n"
-           + "  FILTER(geof:sfNear(?point, \"POINT(38.8895 
77.0353)\"^^geo:wktLiteral, -100))"
-           + "}";
-
-        final TupleQueryResult rez = 
conn.prepareTupleQuery(QueryLanguage.SPARQL, query).evaluate();
-        while(rez.hasNext()) {
-            rez.next();
-        }
-    }
-
-    @Test(expected = QueryEvaluationException.class)
-    public void tooManyArgumentsTest() throws Exception {
-        populateRya();
-
-        // Only captial
-        final String query =
-              "PREFIX geo: <http://www.opengis.net/ont/geosparql#>\n"
-            + "PREFIX geof: <http://www.opengis.net/def/function/geosparql/>\n"
-            + "SELECT * \n" //
-            + "WHERE { \n" + "  <urn:geo> geo:asWKT ?point .\n"
-            + "  FILTER(geof:sfNear(?point, \"POINT(38.8895 
77.0353)\"^^geo:wktLiteral, 100, 1000, 10))"
-            + "}";
-
-        conn.prepareTupleQuery(QueryLanguage.SPARQL, query).evaluate();
-    }
-
-    private void populateRya() throws Exception {
-        // geo 2x2 points
-        conn.begin();
-        RyaStatement stmnt = statement(WASHINGTON_MONUMENT);
-        Statement statement = RyaToRdfConversions.convertStatement(stmnt);
-        conn.add(statement);
-
-        stmnt = statement(LINCOLN_MEMORIAL);
-        statement = RyaToRdfConversions.convertStatement(stmnt);
-        conn.add(statement);
-
-        stmnt = statement(CAPITAL_BUILDING);
-        statement = RyaToRdfConversions.convertStatement(stmnt);
-        conn.add(statement);
-
-        stmnt = statement(WHITE_HOUSE);
-        statement = RyaToRdfConversions.convertStatement(stmnt);
-        conn.add(statement);
-        conn.commit();
-    }
-
-    private static Geometry bindingToGeo(final BindingSet bs) throws 
ParseException {
-        final WKTReader w = new WKTReader();
-        return w.read(bs.getValue("point").stringValue());
-    }
-
-    private static RyaStatement statement(final Geometry geo) {
-        final ValueFactory vf = new ValueFactoryImpl();
-        final Resource subject = vf.createURI("urn:geo");
-        final URI predicate = GeoConstants.GEO_AS_WKT;
-        final WKTWriter w = new WKTWriter();
-        final Value object = vf.createLiteral(w.write(geo), 
GeoConstants.XMLSCHEMA_OGC_WKT);
-        return RdfToRyaConversions.convertStatement(new StatementImpl(subject, 
predicate, object));
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/a2ebefe1/extras/rya.geoindexing/src/test/java/org/apache/rya/indexing/mongo/MongoIndexerDeleteIT.java
----------------------------------------------------------------------
diff --git 
a/extras/rya.geoindexing/src/test/java/org/apache/rya/indexing/mongo/MongoIndexerDeleteIT.java
 
b/extras/rya.geoindexing/src/test/java/org/apache/rya/indexing/mongo/MongoIndexerDeleteIT.java
deleted file mode 100644
index 7473261..0000000
--- 
a/extras/rya.geoindexing/src/test/java/org/apache/rya/indexing/mongo/MongoIndexerDeleteIT.java
+++ /dev/null
@@ -1,176 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.rya.indexing.mongo;
-
-import static org.junit.Assert.assertEquals;
-
-import org.apache.rya.api.domain.RyaStatement;
-import org.apache.rya.api.resolver.RdfToRyaConversions;
-import org.apache.rya.api.resolver.RyaToRdfConversions;
-import org.apache.rya.indexing.GeoConstants;
-import org.apache.rya.indexing.GeoRyaSailFactory;
-import org.apache.rya.indexing.OptionalConfigUtils;
-import org.apache.rya.indexing.TemporalInstant;
-import org.apache.rya.indexing.TemporalInstantRfc3339;
-import org.apache.rya.indexing.accumulo.ConfigUtils;
-import org.apache.rya.indexing.mongodb.MongoIndexingConfiguration;
-import org.apache.rya.mongodb.MockMongoSingleton;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.openrdf.model.Resource;
-import org.openrdf.model.Statement;
-import org.openrdf.model.URI;
-import org.openrdf.model.Value;
-import org.openrdf.model.ValueFactory;
-import org.openrdf.model.impl.StatementImpl;
-import org.openrdf.model.impl.ValueFactoryImpl;
-import org.openrdf.model.vocabulary.RDF;
-import org.openrdf.model.vocabulary.RDFS;
-import org.openrdf.query.QueryLanguage;
-import org.openrdf.query.Update;
-import org.openrdf.repository.sail.SailRepository;
-import org.openrdf.repository.sail.SailRepositoryConnection;
-import org.openrdf.sail.Sail;
-
-import com.mongodb.MongoClient;
-import com.vividsolutions.jts.geom.Coordinate;
-import com.vividsolutions.jts.geom.Geometry;
-import com.vividsolutions.jts.geom.GeometryFactory;
-import com.vividsolutions.jts.io.WKTWriter;
-
-public class MongoIndexerDeleteIT {
-    private MongoClient client;
-    private Sail sail;
-    private SailRepositoryConnection conn;
-
-    @Before
-    public void before() throws Exception {
-        final MongoIndexingConfiguration indxrConf = 
MongoIndexingConfiguration.builder()
-                
.setMongoCollectionPrefix("rya_").setMongoDBName("indexerTests")
-            .setUseMongoFreetextIndex(true)
-            .setUseMongoTemporalIndex(true)
-            .setMongoFreeTextPredicates(RDFS.LABEL.stringValue())
-            .setMongoTemporalPredicates("Property:atTime")
-            .build();
-
-        client = MockMongoSingleton.getInstance();
-        indxrConf.setBoolean(OptionalConfigUtils.USE_GEO, true);
-        indxrConf.set(ConfigUtils.GEO_PREDICATES_LIST, 
"http://www.opengis.net/ont/geosparql#asWKT";);
-        indxrConf.setBoolean(ConfigUtils.USE_MONGO, true);
-        indxrConf.setMongoClient(client);
-
-        sail = GeoRyaSailFactory.getInstance(indxrConf);
-        conn = new SailRepository(sail).getConnection();
-        conn.begin();
-    }
-
-    @After
-    public void after() throws Exception {
-        if (conn != null) {
-            conn.clear();
-        }
-    }
-
-    @Test
-    public void deleteTest() throws Exception {
-        populateRya();
-
-        //The extra 1 is from the person type defined in freetext
-        assertEquals(8, 
client.getDatabase("indexerTests").getCollection("rya__triples").count());
-        assertEquals(4, 
client.getDatabase("indexerTests").getCollection("rya_rya_geo").count());
-        assertEquals(1, 
client.getDatabase("indexerTests").getCollection("rya_rya_temporal").count());
-        assertEquals(2, 
client.getDatabase("indexerTests").getCollection("rya_rya_freetext").count());
-
-        //free text -- remove one from many
-        String delete = "DELETE DATA \n" //
-           + "{\n"
-           + "  <urn:people> <http://www.w3.org/2000/01/rdf-schema#label> 
\"Alice Palace Hose\" "
-           + "}";
-        Update update = conn.prepareUpdate(QueryLanguage.SPARQL, delete);
-        update.execute();
-
-        // temporal -- remove one from one
-        delete = "DELETE DATA \n" //
-           + "{\n"
-           + "  <foo:time> <Property:atTime> \"0001-02-03T04:05:06Z\" "
-           + "}";
-
-        update = conn.prepareUpdate(QueryLanguage.SPARQL, delete);
-        update.execute();
-
-        //geo -- remove many from many
-        delete =
-             "PREFIX geo: <http://www.opengis.net/ont/geosparql#>\n"
-           + "PREFIX geof: <http://www.opengis.net/def/function/geosparql/>\n"
-           + "DELETE \n" //
-           + "{\n"
-           + "  <urn:geo> geo:asWKT ?point \n"
-           + "}"
-           + "WHERE { \n"
-           + "  <urn:geo> geo:asWKT ?point .\n"
-           + "  FILTER(geof:sfWithin(?point, \"POLYGON((0 0, 2 0, 2 1, 0 1, 0 
0))\"^^geo:wktLiteral))"
-           + "}";
-
-        update = conn.prepareUpdate(QueryLanguage.SPARQL, delete);
-        update.execute();
-
-        assertEquals(2, 
client.getDatabase("indexerTests").getCollection("rya_rya_geo").count());
-        assertEquals(0, 
client.getDatabase("indexerTests").getCollection("rya_rya_temporal").count());
-        assertEquals(1, 
client.getDatabase("indexerTests").getCollection("rya_rya_freetext").count());
-        assertEquals(4, 
client.getDatabase("indexerTests").getCollection("rya__triples").count());
-    }
-
-    private void populateRya() throws Exception {
-        final ValueFactory VF = new ValueFactoryImpl();
-        // geo 2x2 points
-        final GeometryFactory GF = new GeometryFactory();
-        for (int x = 0; x <= 1; x++) {
-            for (int y = 0; y <= 1; y++) {
-                final Geometry geo = GF.createPoint(new Coordinate(x + .5, y + 
.5));
-                final RyaStatement stmnt = statement(geo);
-                final Statement statement = 
RyaToRdfConversions.convertStatement(stmnt);
-                conn.add(statement);
-            }
-        }
-
-        // freetext
-        final URI person = VF.createURI("http://example.org/ontology/Person";);
-        String uuid;
-
-        uuid = "urn:people";
-        conn.add(VF.createURI(uuid), RDF.TYPE, person);
-        conn.add(VF.createURI(uuid), RDFS.LABEL, VF.createLiteral("Alice 
Palace Hose", VF.createURI("http://www.w3.org/2001/XMLSchema#string";)));
-        conn.add(VF.createURI(uuid), RDFS.LABEL, VF.createLiteral("Bob Snob 
Hose", "en"));
-
-        // temporal
-        final TemporalInstant instant = new TemporalInstantRfc3339(1, 2, 3, 4, 
5, 6);
-        conn.add(VF.createURI("foo:time"), VF.createURI("Property:atTime"), 
VF.createLiteral(instant.toString()));
-    }
-
-    private static RyaStatement statement(final Geometry geo) {
-        final ValueFactory vf = new ValueFactoryImpl();
-        final Resource subject = vf.createURI("urn:geo");
-        final URI predicate = GeoConstants.GEO_AS_WKT;
-        final WKTWriter w = new WKTWriter();
-        final Value object = vf.createLiteral(w.write(geo), 
GeoConstants.XMLSCHEMA_OGC_WKT);
-        return RdfToRyaConversions.convertStatement(new StatementImpl(subject, 
predicate, object));
-    }
-
-}


Reply via email to