[ 
https://issues.apache.org/jira/browse/RYA-324?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16109849#comment-16109849
 ] 

ASF GitHub Bot commented on RYA-324:
------------------------------------

Github user isper3at commented on a diff in the pull request:

    https://github.com/apache/incubator-rya/pull/182#discussion_r130736405
  
    --- Diff: 
extras/rya.geoindexing/geo.mongo/src/main/java/org/apache/rya/indexing/geoExamples/RyaMongoGeoDirectExample.java
 ---
    @@ -0,0 +1,242 @@
    +package org.apache.rya.indexing.geoExamples;
    +/*
    + * Licensed to the Apache Software Foundation (ASF) under one
    + * or more contributor license agreements.  See the NOTICE file
    + * distributed with this work for additional information
    + * regarding copyright ownership.  The ASF licenses this file
    + * to you under the Apache License, Version 2.0 (the
    + * "License"); you may not use this file except in compliance
    + * with the License.  You may obtain a copy of the License at
    + * 
    + *   http://www.apache.org/licenses/LICENSE-2.0
    + * 
    + * Unless required by applicable law or agreed to in writing,
    + * software distributed under the License is distributed on an
    + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    + * KIND, either express or implied.  See the License for the
    + * specific language governing permissions and limitations
    + * under the License.
    + */
    +
    +import java.io.IOException;
    +import java.util.List;
    +
    +import org.apache.commons.lang.Validate;
    +import org.apache.hadoop.conf.Configuration;
    +import org.apache.log4j.Logger;
    +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.mongodb.MongoIndexingConfiguration;
    +import 
org.apache.rya.indexing.mongodb.MongoIndexingConfiguration.MongoDBIndexingConfigBuilder;
    +import org.apache.rya.mongodb.MockMongoFactory;
    +import org.apache.rya.mongodb.MongoConnectorFactory;
    +import org.openrdf.model.vocabulary.RDFS;
    +import org.openrdf.query.BindingSet;
    +import org.openrdf.query.MalformedQueryException;
    +import org.openrdf.query.QueryEvaluationException;
    +import org.openrdf.query.QueryLanguage;
    +import org.openrdf.query.QueryResultHandlerException;
    +import org.openrdf.query.TupleQuery;
    +import org.openrdf.query.TupleQueryResultHandler;
    +import org.openrdf.query.TupleQueryResultHandlerException;
    +import org.openrdf.query.Update;
    +import org.openrdf.query.UpdateExecutionException;
    +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.mongodb.ServerAddress;
    +
    +public class RyaMongoGeoDirectExample {
    +    private static final Logger log = 
Logger.getLogger(RyaMongoGeoDirectExample.class);
    +
    +    //
    +    // Connection configuration parameters
    +    //
    +
    +    private static final boolean PRINT_QUERIES = true;
    +    private static final String MONGO_DB = "rya";
    +    private static final String MONGO_COLL_PREFIX = "rya_";
    +    private static final boolean USE_MOCK = true;
    +    private static final boolean USE_INFER = true;
    +    private static final String MONGO_INSTANCE_URL = "localhost";
    +    private static final String MONGO_INSTANCE_PORT = "27017";
    +
    +    public static void main(String[] args) throws Exception {
    +        Configuration conf = getConf();
    +        conf.setBoolean(ConfigUtils.DISPLAY_QUERY_PLAN, PRINT_QUERIES);
    +           conf.setBoolean(OptionalConfigUtils.USE_GEO, true);  // Note 
also the use of "GeoRyaSailFactory" below.
    +           conf.setStrings(OptionalConfigUtils.GEO_PREDICATES_LIST, 
"http://www.opengis.net/ont/geosparql#asWKT";);  // Note also the use of 
"GeoRyaSailFactory" below.
    +  
    +        SailRepository repository = null;
    +        SailRepositoryConnection conn = null;
    +        try {
    +            log.info("Connecting to Indexing Sail Repository.");
    +            Sail sail = GeoRyaSailFactory.getInstance(conf);
    +            repository = new SailRepository(sail);
    +            conn = repository.getConnection();
    +
    +            long start = System.currentTimeMillis();
    +            testAddPointAndWithinSearch(conn);  // uses geospatial features
    +
    +            log.info("TIME: " + (System.currentTimeMillis() - start) / 
1000.);
    +        } finally {
    +            log.info("Shutting down");
    +            closeQuietly(conn);
    +            closeQuietly(repository);
    +            if (mock != null) {
    +                mock.shutdown();
    +            }
    +            MongoConnectorFactory.closeMongoClient();
    +        }
    +    }
    +/**
    + * Try out some geospatial data and queries
    + * @param repository
    + */
    +    private static void 
testAddPointAndWithinSearch(SailRepositoryConnection conn) throws Exception {
    +
    +        String update = "PREFIX geo: 
<http://www.opengis.net/ont/geosparql#>  "//
    +                + "INSERT DATA { " //
    +                + "  <urn:feature> a geo:Feature ; " //
    +                + "    geo:hasGeometry [ " //
    +                + "      a geo:Point ; " //
    +                + "      geo:asWKT \"Point(-77.03524 
38.889468)\"^^geo:wktLiteral "//
    +                + "    ] . " //
    +                + "}";
    +
    +        Update u = conn.prepareUpdate(QueryLanguage.SPARQL, update);
    +        u.execute();
    +
    +        String queryString;
    +        TupleQuery tupleQuery;
    +        CountingResultHandler tupleHandler;
    +
    +        // ring containing point
    +        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 . "//
    +                + "  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 -- ring containing point: " + 
tupleHandler.getCount());
    +        Validate.isTrue(tupleHandler.getCount() >= 1); // may see points 
from during previous runs
    +
    +        // ring outside point
    +        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 . "//
    +                + "  FILTER(geof:sfWithin(?wkt, \"POLYGON((-77 39, -76 39, 
-76 38, -77 38, -77 39))\"^^geo:wktLiteral)) " //
    +                + "}";//
    +        tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, 
queryString);
    +
    +        tupleHandler = new CountingResultHandler();
    +        tupleQuery.evaluate(tupleHandler);
    +        log.info("Result count -- ring outside point: " + 
tupleHandler.getCount());
    +        Validate.isTrue(tupleHandler.getCount() == 0);
    +    }
    +
    +    private static void closeQuietly(SailRepository repository) {
    +        if (repository != null) {
    +            try {
    +                repository.shutDown();
    +            } catch (RepositoryException e) {
    +                // quietly absorb this exception
    +            }
    +        }
    +    }
    +
    +    private static void closeQuietly(SailRepositoryConnection conn) {
    +        if (conn != null) {
    +            try {
    +                conn.close();
    +            } catch (RepositoryException e) {
    +                // quietly absorb this exception
    +            }
    +        }
    +    }
    +
    +    private static MockMongoFactory mock = null;
    +    private static Configuration getConf() throws IOException {
    +
    +           MongoDBIndexingConfigBuilder builder = 
MongoIndexingConfiguration.builder()
    +                   
.setUseMockMongo(USE_MOCK).setUseInference(USE_INFER).setAuths("U");
    +
    +        if (USE_MOCK) {
    +            mock = MockMongoFactory.newFactory();
    +            MongoClient c = mock.newMongoClient();
    +            ServerAddress address = c.getAddress();
    +            String url = address.getHost();
    +            String port = Integer.toString(address.getPort());
    +            c.close();
    +            builder.setMongoHost(url).setMongoPort(port);
    +        } else {
    +            // User name and password must be filled in:
    +           builder = builder.setMongoUser("fill this in")
    +                                            .setMongoPassword("fill this 
in")
    +                                            
.setMongoHost(MONGO_INSTANCE_URL)
    +                                            
.setMongoPort(MONGO_INSTANCE_PORT);
    +        }
    +        
    +        return builder.setMongoDBName(MONGO_DB)
    +               .setMongoCollectionPrefix(MONGO_COLL_PREFIX)
    +               .setUseMongoFreetextIndex(true)
    +               
.setMongoFreeTextPredicates(RDFS.LABEL.stringValue()).build();
    +        
    +    }
    +
    +
    +    private static class CountingResultHandler implements 
TupleQueryResultHandler {
    +        private int count = 0;
    +
    +        public int getCount() {
    +            return count;
    +        }
    +
    +//        public void resetCount() {
    --- End diff --
    
    commented out code


> geoWave and geoMesa depend on different versions of the GeoTools
> ----------------------------------------------------------------
>
>                 Key: RYA-324
>                 URL: https://issues.apache.org/jira/browse/RYA-324
>             Project: Rya
>          Issue Type: Bug
>          Components: sail
>    Affects Versions: 3.2.10
>            Reporter: David W. Lotts
>            Assignee: David W. Lotts
>              Labels: dependencies, geo, refactor
>             Fix For: 3.2.10
>
>
> Refactored geo libraries into separate projects/modules/jars.
> Geo libraries are optional and turned off by default because the GeoTools is 
> has an incompatible license.
> Further, geoWave and geoMesa depend on different versions of the GeoTools, so 
> they must be in separate projects.
> The new modules (projects) are
> geo.common
> geo.mongo
> geo.geomesa
> geo.geowave
> These are modules of the project rya.geoindexing



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to