You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by jp...@apache.org on 2013/09/04 17:15:43 UTC
svn commit: r1520047 - in /jena/trunk/jena-spatial: ./
src/main/java/examples/ src/main/java/org/apache/jena/query/spatial/
src/main/java/org/apache/jena/query/spatial/assembler/
src/test/java/org/apache/jena/query/spatial/ src/test/java/org/apache/jen...
Author: jpz6311whu
Date: Wed Sep 4 15:15:42 2013
New Revision: 1520047
URL: http://svn.apache.org/r1520047
Log:
make JTS an optional dependency for jena-spatial, just for WKT literal parsing
Added:
jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/AbstractTestIndexingSpatialData.java (with props)
jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/TestIndexingSpatialDataWithSolr.java (with props)
Modified:
jena/trunk/jena-spatial/DEPENDENCIES
jena/trunk/jena-spatial/pom.xml
jena/trunk/jena-spatial/src/main/java/examples/JenaSpatialExample1.java
jena/trunk/jena-spatial/src/main/java/org/apache/jena/query/spatial/EntityDefinition.java
jena/trunk/jena-spatial/src/main/java/org/apache/jena/query/spatial/SpatialQuery.java
jena/trunk/jena-spatial/src/main/java/org/apache/jena/query/spatial/assembler/EntityDefinitionAssembler.java
jena/trunk/jena-spatial/src/main/java/org/apache/jena/query/spatial/assembler/SpatialVocab.java
jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/TS_Spatial.java
jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/TestIndexingSpatialDataWithLucene.java
jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/assembler/TestEntityDefinitionAssembler.java
jena/trunk/jena-spatial/src/test/resources/spatial-config-spatialindexer.ttl
jena/trunk/jena-spatial/src/test/resources/spatial-config.ttl
jena/trunk/jena-spatial/src/test/resources/spatial-solr-config.ttl
Modified: jena/trunk/jena-spatial/DEPENDENCIES
URL: http://svn.apache.org/viewvc/jena/trunk/jena-spatial/DEPENDENCIES?rev=1520047&r1=1520046&r2=1520047&view=diff
==============================================================================
--- jena/trunk/jena-spatial/DEPENDENCIES (original)
+++ jena/trunk/jena-spatial/DEPENDENCIES Wed Sep 4 15:15:42 2013
@@ -16,10 +16,8 @@ SLF4J : http://www.slf4j.org/
JUnit : http://junit.org/
Common Public License - v 1.0
-JTS Topology Suite : http://tsusiatsoftware.net/jts/main.html
- LGPL Licence - v 2.1
-
spatial4j : https://github.com/spatial4j/spatial4j
Apache Software License - v 2.0
-
\ No newline at end of file
+JTS Topology Suite : http://tsusiatsoftware.net/jts/main.html (optional)
+ LGPL Licence - v 2.1
Modified: jena/trunk/jena-spatial/pom.xml
URL: http://svn.apache.org/viewvc/jena/trunk/jena-spatial/pom.xml?rev=1520047&r1=1520046&r2=1520047&view=diff
==============================================================================
--- jena/trunk/jena-spatial/pom.xml (original)
+++ jena/trunk/jena-spatial/pom.xml Wed Sep 4 15:15:42 2013
@@ -1,269 +1,274 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <groupId>org.apache.jena</groupId>
- <artifactId>jena-spatial</artifactId>
- <packaging>jar</packaging>
- <name>Apache Jena - SPARQL and Lucene/Solr Spatial</name>
- <version>1.0.1-SNAPSHOT</version>
-
- <parent>
- <groupId>org.apache.jena</groupId>
- <artifactId>jena-parent</artifactId>
- <version>7-SNAPSHOT</version>
- <relativePath>../jena-parent</relativePath>
- </parent>
-
- <properties>
- <ver.jena>2.11.0-SNAPSHOT</ver.jena>
- <ver.lucene>4.3.1</ver.lucene>
- <ver.solr>4.3.1</ver.solr>
- <ver.jts>1.13</ver.jts>
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-
- <jdk.version>1.6</jdk.version>
- <targetJdk>${jdk.version}</targetJdk> <!-- MPMD-86 workaround -->
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- <maven.build.timestamp.format>yyyy-MM-dd'T'HH:mm:ssZ</maven.build.timestamp.format>
- <build.time.xsd>${maven.build.timestamp}</build.time.xsd>
- </properties>
-
- <dependencies>
-
- <!-- All Jena libs (not Fuseki) -->
- <dependency>
- <groupId>org.apache.jena</groupId>
- <artifactId>apache-jena-libs</artifactId>
- <version>${ver.jena}</version>
- <type>pom</type>
- </dependency>
-
- <!-- Testing support -->
- <dependency>
- <groupId>org.apache.jena</groupId>
- <artifactId>jena-arq</artifactId>
- <version>${ver.jena}</version>
- <type>jar</type>
- <classifier>tests</classifier>
- <scope>test</scope>
- </dependency>
-
- <!-- Lucene dependencies -->
- <dependency>
- <groupId>org.apache.lucene</groupId>
- <artifactId>lucene-core</artifactId>
- <version>${ver.lucene}</version>
- <type>jar</type>
- </dependency>
-
- <dependency>
- <groupId>org.apache.lucene</groupId>
- <artifactId>lucene-spatial</artifactId>
- <version>${ver.lucene}</version>
- <type>jar</type>
- </dependency>
-
- <dependency>
- <groupId>org.apache.lucene</groupId>
- <artifactId>lucene-analyzers-common</artifactId>
- <version>${ver.lucene}</version>
- <type>jar</type>
- </dependency>
-
- <dependency>
- <groupId>org.apache.lucene</groupId>
- <artifactId>lucene-queryparser</artifactId>
- <version>${ver.lucene}</version>
- <type>jar</type>
- </dependency>
-
- <dependency>
- <groupId>com.vividsolutions</groupId>
- <artifactId>jts</artifactId>
- <version>${ver.jts}</version>
- </dependency>
-
-
- <!-- Solr client -->
- <!-- Exclusion of slf4: Necessary otherwise maven complains about a "Dependency
- convergence error" of slf4j-api 1.6.1 (from zookeeper) vs 1.6.4 (Jena) possibly
- due to the use of scope-test -->
-
- <dependency>
- <artifactId>solr-solrj</artifactId>
- <groupId>org.apache.solr</groupId>
- <version>${ver.solr}</version>
- <exclusions>
- <exclusion>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-jdk14</artifactId>
- </exclusion>
- <exclusion>
- <groupId>commons-codec</groupId>
- <artifactId>commons-codec</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
-
- <!-- Embedded server / testing -->
- <dependency>
- <artifactId>solr-core</artifactId>
- <groupId>org.apache.solr</groupId>
- <version>${ver.solr}</version>
- <type>jar</type>
- <!-- <scope>test</scope>
- <optional>true</optional> -->
- <exclusions>
- <exclusion>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-jdk14</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
-
- <!-- Embedded Solr server -->
- <dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>servlet-api</artifactId>
- <version>2.5</version>
- <!-- <scope>test</scope> -->
- </dependency>
-
- </dependencies>
-
- <build>
-
- <resources>
- <resource>
- <filtering>true</filtering>
- <directory>src/main/resources</directory>
- <includes>
- <include>org/apache/jena/query/spatial/properties.xml</include>
- </includes>
- </resource>
- <resource>
- <filtering>false</filtering>
- <directory>src/main/resources</directory>
- <excludes>
- <exclude>org/apache/jena/query/spatial/properties.xml</exclude>
- </excludes>
- </resource>
- </resources>
-
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-compiler-plugin</artifactId>
- </plugin>
-
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-surefire-plugin</artifactId>
- <configuration>
- <includes>
- <include>**/TS_*.java</include>
- </includes>
- </configuration>
- </plugin>
-
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-jar-plugin</artifactId>
- </plugin>
-
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-source-plugin</artifactId>
- <executions>
- <execution>
- <id>attach-sources</id>
- <goals>
- <goal>jar-no-fork</goal>
- </goals>
- </execution>
- <!-- Only material in the main jar <execution> <id>attach-sources-test</id>
- <goals> <goal>test-jar-no-fork</goal> </goals> </execution> -->
- </executions>
- </plugin>
-
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-javadoc-plugin</artifactId>
- <configuration>
- <version>true</version>
- <show>public</show>
- <quiet>true</quiet>
- <encoding>UTF-8</encoding>
- <windowtitle>${project.name} ${project.version}</windowtitle>
- <doctitle>${project.name} ${project.version}</doctitle>
- <bottom>Licenced under the Apache License, Version 2.0</bottom>
- </configuration>
- </plugin>
-
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-resources-plugin</artifactId>
- <configuration>
- <encoding>UTF-8</encoding>
- </configuration>
- </plugin>
-
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-dependency-plugin</artifactId>
- <configuration>
- <overWriteReleases>false</overWriteReleases>
- <overWriteIfNewer>true</overWriteIfNewer>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-eclipse-plugin</artifactId>
- <configuration>
- <!-- By default, have separate Eclipse and maven build areas -->
- <buildOutputDirectory>${project.build.directory}/classes</buildOutputDirectory>
- <downloadSources>true</downloadSources>
- <downloadJavadocs>false</downloadJavadocs>
- </configuration>
- </plugin>
-
- </plugins>
-
- </build>
-
-
- <repositories>
- <repository>
- <id>maven-restlet</id>
- <name>Public online Restlet repository</name>
- <url>http://maven.restlet.org</url>
- </repository>
- <repository>
- <id>maven2-repository.dev.java.net</id>
- <name>Java.net repository</name>
- <url>http://download.java.net/maven/2</url>
- </repository>
- <repository>
- <id>osgeo</id>
- <name>Open Source Geospatial Foundation Repository</name>
- <url>http://download.osgeo.org/webdav/geotools/</url>
- </repository>
- <repository>
- <snapshots>
- <enabled>true</enabled>
- </snapshots>
- <id>opengeo</id>
- <name>OpenGeo Maven Repository</name>
- <url>http://repo.opengeo.org</url>
- </repository>
- </repositories>
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.apache.jena</groupId>
+ <artifactId>jena-spatial</artifactId>
+ <packaging>jar</packaging>
+ <name>Apache Jena - SPARQL and Lucene/Solr Spatial</name>
+ <version>1.0.1-SNAPSHOT</version>
+
+ <parent>
+ <groupId>org.apache.jena</groupId>
+ <artifactId>jena-parent</artifactId>
+ <version>7-SNAPSHOT</version>
+ <relativePath>../jena-parent</relativePath>
+ </parent>
+
+ <properties>
+ <ver.jena>2.11.0-SNAPSHOT</ver.jena>
+ <ver.lucene>4.3.1</ver.lucene>
+ <ver.solr>4.3.1</ver.solr>
+ <ver.spatial4j>0.3</ver.spatial4j>
+ <ver.jts>1.13</ver.jts>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+
+ <jdk.version>1.6</jdk.version>
+ <targetJdk>${jdk.version}</targetJdk> <!-- MPMD-86 workaround -->
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ <maven.build.timestamp.format>yyyy-MM-dd'T'HH:mm:ssZ</maven.build.timestamp.format>
+ <build.time.xsd>${maven.build.timestamp}</build.time.xsd>
+ </properties>
+
+ <dependencies>
+
+ <!-- All Jena libs (not Fuseki) -->
+ <dependency>
+ <groupId>org.apache.jena</groupId>
+ <artifactId>apache-jena-libs</artifactId>
+ <version>${ver.jena}</version>
+ <type>pom</type>
+ </dependency>
+
+ <!-- Testing support -->
+ <dependency>
+ <groupId>org.apache.jena</groupId>
+ <artifactId>jena-arq</artifactId>
+ <version>${ver.jena}</version>
+ <type>jar</type>
+ <classifier>tests</classifier>
+ <scope>test</scope>
+ </dependency>
+
+ <!-- Lucene dependencies -->
+ <dependency>
+ <groupId>org.apache.lucene</groupId>
+ <artifactId>lucene-core</artifactId>
+ <version>${ver.lucene}</version>
+ <type>jar</type>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.lucene</groupId>
+ <artifactId>lucene-spatial</artifactId>
+ <version>${ver.lucene}</version>
+ <type>jar</type>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.lucene</groupId>
+ <artifactId>lucene-analyzers-common</artifactId>
+ <version>${ver.lucene}</version>
+ <type>jar</type>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.lucene</groupId>
+ <artifactId>lucene-queryparser</artifactId>
+ <version>${ver.lucene}</version>
+ <type>jar</type>
+ </dependency>
+ <dependency>
+ <groupId>com.spatial4j</groupId>
+ <artifactId>spatial4j</artifactId>
+ <version>0.3</version>
+ </dependency>
+ <dependency>
+ <groupId>com.vividsolutions</groupId>
+ <artifactId>jts</artifactId>
+ <version>${ver.jts}</version>
+ <optional>true</optional>
+ </dependency>
+
+
+ <!-- Solr client -->
+ <!-- Exclusion of slf4: Necessary otherwise maven complains about a "Dependency
+ convergence error" of slf4j-api 1.6.1 (from zookeeper) vs 1.6.4 (Jena) possibly
+ due to the use of scope-test -->
+
+ <dependency>
+ <artifactId>solr-solrj</artifactId>
+ <groupId>org.apache.solr</groupId>
+ <version>${ver.solr}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-jdk14</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>commons-codec</groupId>
+ <artifactId>commons-codec</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+
+ <!-- Embedded server / testing -->
+ <dependency>
+ <artifactId>solr-core</artifactId>
+ <groupId>org.apache.solr</groupId>
+ <version>${ver.solr}</version>
+ <type>jar</type>
+ <!-- <scope>test</scope> <optional>true</optional> -->
+ <exclusions>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-jdk14</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+
+ <!-- Embedded Solr server -->
+ <dependency>
+ <groupId>javax.servlet</groupId>
+ <artifactId>servlet-api</artifactId>
+ <version>2.5</version>
+ <!-- <scope>test</scope> -->
+ </dependency>
+
+ </dependencies>
+
+ <build>
+
+ <resources>
+ <resource>
+ <filtering>true</filtering>
+ <directory>src/main/resources</directory>
+ <includes>
+ <include>org/apache/jena/query/spatial/properties.xml</include>
+ </includes>
+ </resource>
+ <resource>
+ <filtering>false</filtering>
+ <directory>src/main/resources</directory>
+ <excludes>
+ <exclude>org/apache/jena/query/spatial/properties.xml</exclude>
+ </excludes>
+ </resource>
+ </resources>
+
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <configuration>
+ <includes>
+ <include>**/TS_*.java</include>
+ </includes>
+ </configuration>
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-jar-plugin</artifactId>
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-source-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>attach-sources</id>
+ <goals>
+ <goal>jar-no-fork</goal>
+ </goals>
+ </execution>
+ <!-- Only material in the main jar <execution> <id>attach-sources-test</id>
+ <goals> <goal>test-jar-no-fork</goal> </goals> </execution> -->
+ </executions>
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-javadoc-plugin</artifactId>
+ <configuration>
+ <version>true</version>
+ <show>public</show>
+ <quiet>true</quiet>
+ <encoding>UTF-8</encoding>
+ <windowtitle>${project.name} ${project.version}</windowtitle>
+ <doctitle>${project.name} ${project.version}</doctitle>
+ <bottom>Licenced under the Apache License, Version 2.0</bottom>
+ </configuration>
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-resources-plugin</artifactId>
+ <configuration>
+ <encoding>UTF-8</encoding>
+ </configuration>
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <configuration>
+ <overWriteReleases>false</overWriteReleases>
+ <overWriteIfNewer>true</overWriteIfNewer>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-eclipse-plugin</artifactId>
+ <configuration>
+ <!-- By default, have separate Eclipse and maven build areas -->
+ <buildOutputDirectory>${project.build.directory}/classes</buildOutputDirectory>
+ <downloadSources>true</downloadSources>
+ <downloadJavadocs>false</downloadJavadocs>
+ </configuration>
+ </plugin>
+
+ </plugins>
+
+ </build>
+
+
+ <repositories>
+ <repository>
+ <id>maven-restlet</id>
+ <name>Public online Restlet repository</name>
+ <url>http://maven.restlet.org</url>
+ </repository>
+ <repository>
+ <id>maven2-repository.dev.java.net</id>
+ <name>Java.net repository</name>
+ <url>http://download.java.net/maven/2</url>
+ </repository>
+ <repository>
+ <id>osgeo</id>
+ <name>Open Source Geospatial Foundation Repository</name>
+ <url>http://download.osgeo.org/webdav/geotools/</url>
+ </repository>
+ <repository>
+ <snapshots>
+ <enabled>true</enabled>
+ </snapshots>
+ <id>opengeo</id>
+ <name>OpenGeo Maven Repository</name>
+ <url>http://repo.opengeo.org</url>
+ </repository>
+ </repositories>
</project>
Modified: jena/trunk/jena-spatial/src/main/java/examples/JenaSpatialExample1.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-spatial/src/main/java/examples/JenaSpatialExample1.java?rev=1520047&r1=1520046&r2=1520047&view=diff
==============================================================================
--- jena/trunk/jena-spatial/src/main/java/examples/JenaSpatialExample1.java (original)
+++ jena/trunk/jena-spatial/src/main/java/examples/JenaSpatialExample1.java Wed Sep 4 15:15:42 2013
@@ -143,6 +143,7 @@ public class JenaSpatialExample1 {
private static Dataset joinDataset(Dataset baseDataset, File indexDir) throws IOException{
EntityDefinition entDef = new EntityDefinition("entityField", "geoField");
+ entDef.setSpatialContextFactory("com.spatial4j.core.context.jts.JtsSpatialContextFactory");
entDef.addSpatialPredicatePair(ResourceFactory.createResource("http://localhost/jena_example/#latitude_1"), ResourceFactory.createResource("http://localhost/jena_example/#longitude_1"));
entDef.addSpatialPredicatePair(ResourceFactory.createResource("http://localhost/jena_example/#latitude_2"), ResourceFactory.createResource("http://localhost/jena_example/#longitude_2"));
entDef.addWKTPredicate(ResourceFactory.createResource("http://localhost/jena_example/#wkt_1"));
Modified: jena/trunk/jena-spatial/src/main/java/org/apache/jena/query/spatial/EntityDefinition.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-spatial/src/main/java/org/apache/jena/query/spatial/EntityDefinition.java?rev=1520047&r1=1520046&r2=1520047&view=diff
==============================================================================
--- jena/trunk/jena-spatial/src/main/java/org/apache/jena/query/spatial/EntityDefinition.java (original)
+++ jena/trunk/jena-spatial/src/main/java/org/apache/jena/query/spatial/EntityDefinition.java Wed Sep 4 15:15:42 2013
@@ -18,14 +18,17 @@
package org.apache.jena.query.spatial;
+import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
+import java.util.Map;
import java.util.Set;
import com.hp.hpl.jena.graph.Node;
import com.hp.hpl.jena.rdf.model.Property;
import com.hp.hpl.jena.rdf.model.Resource;
import com.hp.hpl.jena.rdf.model.ResourceFactory;
+import com.spatial4j.core.context.SpatialContextFactory;
/**
* Definition of a "document"
@@ -58,8 +61,10 @@ public class EntityDefinition {
* The entity being indexed (e.g. it's URI).
*/
public EntityDefinition(String entityField, String geoField) {
- this.entityField = entityField==null || entityField.isEmpty() ? "entityField":entityField;
- this.geoField = geoField==null || geoField.isEmpty() ? "geoField":geoField;
+ this.entityField = entityField == null || entityField.isEmpty() ? "entityField"
+ : entityField;
+ this.geoField = geoField == null || geoField.isEmpty() ? "geoField"
+ : geoField;
this.WKTPredicates = new HashSet<Node>();
this.builtinWKTPredicates = new HashSet<Node>();
this.spatialPredicatePairs = new HashSet<SpatialPredicatePair>();
@@ -67,12 +72,19 @@ public class EntityDefinition {
initBuiltinPredicates();
}
+ public void setSpatialContextFactory(String spatialContextFactoryClass) {
+ Map<String, String> map = new HashMap<String, String>();
+ map.put("spatialContextFactory", spatialContextFactoryClass);
+ SpatialQuery.ctx = SpatialContextFactory.makeSpatialContext(map,
+ SpatialQuery.class.getClassLoader());
+ }
+
private void initBuiltinPredicates() {
addBuiltinWKTPredicate(geo_geometry);
addBuiltinWKTPredicate(geosparql_asWKT);
addBuiltinSpatialPredicatePair(geo_latitude, geo_longitude);
}
-
+
private boolean addBuiltinWKTPredicate(Resource predicate) {
builtinWKTPredicates.add(predicate.asNode());
return addWKTPredicate(predicate);
@@ -88,13 +100,12 @@ public class EntityDefinition {
latitude_predicate.asNode(), longitude_predicate.asNode()));
return addSpatialPredicatePair(latitude_predicate, longitude_predicate);
}
-
+
public boolean addSpatialPredicatePair(Resource latitude_predicate,
Resource longitude_predicate) {
return spatialPredicatePairs.add(new SpatialPredicatePair(
latitude_predicate.asNode(), longitude_predicate.asNode()));
}
-
public String getEntityField() {
return entityField;
@@ -129,24 +140,26 @@ public class EntityDefinition {
}
return null;
}
-
- public int getCustomSpatialPredicatePairCount(){
- return this.spatialPredicatePairs.size()-builtinSpatialPredicatePairs.size();
+
+ public int getCustomSpatialPredicatePairCount() {
+ return this.spatialPredicatePairs.size()
+ - builtinSpatialPredicatePairs.size();
}
-
- public int getSpatialPredicatePairCount(){
+
+ public int getSpatialPredicatePairCount() {
return this.spatialPredicatePairs.size();
}
-
- public int getCustomWKTPredicateCount(){
- return this.WKTPredicates.size()- builtinWKTPredicates.size();
+
+ public int getCustomWKTPredicateCount() {
+ return this.WKTPredicates.size() - builtinWKTPredicates.size();
}
-
- public int getWKTPredicateCount(){
+
+ public int getWKTPredicateCount() {
return this.WKTPredicates.size();
}
-
- public boolean hasSpatialPredicatePair(Node latitude_predicate, Node longitude_predicate){
+
+ public boolean hasSpatialPredicatePair(Node latitude_predicate,
+ Node longitude_predicate) {
Iterator<SpatialPredicatePair> it = this.spatialPredicatePairs
.iterator();
while (it.hasNext()) {
Modified: jena/trunk/jena-spatial/src/main/java/org/apache/jena/query/spatial/SpatialQuery.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-spatial/src/main/java/org/apache/jena/query/spatial/SpatialQuery.java?rev=1520047&r1=1520046&r2=1520047&view=diff
==============================================================================
--- jena/trunk/jena-spatial/src/main/java/org/apache/jena/query/spatial/SpatialQuery.java (original)
+++ jena/trunk/jena-spatial/src/main/java/org/apache/jena/query/spatial/SpatialQuery.java Wed Sep 4 15:15:42 2013
@@ -56,7 +56,7 @@ public class SpatialQuery
public static final String VERSION = metadata.get(PATH+".version", "unknown") ;
public static final String BUILD_DATE = metadata.get(PATH+".build.datetime", "unset") ;
- public static final SpatialContext ctx = JtsSpatialContext.GEO;
+ public static SpatialContext ctx = SpatialContext.GEO;
static { init() ; }
Modified: jena/trunk/jena-spatial/src/main/java/org/apache/jena/query/spatial/assembler/EntityDefinitionAssembler.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-spatial/src/main/java/org/apache/jena/query/spatial/assembler/EntityDefinitionAssembler.java?rev=1520047&r1=1520046&r2=1520047&view=diff
==============================================================================
--- jena/trunk/jena-spatial/src/main/java/org/apache/jena/query/spatial/assembler/EntityDefinitionAssembler.java (original)
+++ jena/trunk/jena-spatial/src/main/java/org/apache/jena/query/spatial/assembler/EntityDefinitionAssembler.java Wed Sep 4 15:15:42 2013
@@ -54,8 +54,10 @@ public class EntityDefinitionAssembler e
[ spatial:latitude <#latitude_1> ; spatial:longitude <#longitude_1> ]
[ spatial:latitude <#latitude_2> ; spatial:longitude <#longitude_2> ]
) ;
- spatial:hasWKTPredicates (<#wkt_1> <#wkt_2>) .
- */
+ spatial:hasWKTPredicates (<#wkt_1> <#wkt_2>) ;
+ spatial:spatialContextFactory
+ "com.spatial4j.core.context.jts.JtsSpatialContextFactory" .
+ */
@Override
public EntityDefinition open(Assembler a, Resource root, Mode mode)
@@ -114,7 +116,22 @@ public class EntityDefinitionAssembler e
docDef.addWKTPredicate(wkt);
}
- return docDef ;
+ String qs4 = StrUtils.strjoinNL("SELECT * { ?definition :spatialContextFactory ?factory }") ;
+ Query query4 = QueryFactory.create(prologue+" "+qs4) ;
+ QueryExecution qexec4 = QueryExecutionFactory.create(query4, model, qsol1) ;
+ ResultSet rs4 = qexec4.execSelect() ;
+ List<QuerySolution> results4 = ResultSetFormatter.toList(rs4) ;
+ if (results4.size() ==0){
+ return docDef;
+ } else if ( results4.size() !=1 ) {
+ Log.warn(this, "Multiple matches for SpatialContextFactory for : "+root) ;
+ throw new SpatialIndexException("Multiple matches for SpatialContextFactory for : "+root) ;
+ } else {
+ QuerySolution qsol4 = results4.get(0);
+ String spatialContextFactory = qsol4.getLiteral("factory").getLexicalForm() ;
+ docDef.setSpatialContextFactory(spatialContextFactory);
+ return docDef ;
+ }
}
}
Modified: jena/trunk/jena-spatial/src/main/java/org/apache/jena/query/spatial/assembler/SpatialVocab.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-spatial/src/main/java/org/apache/jena/query/spatial/assembler/SpatialVocab.java?rev=1520047&r1=1520046&r2=1520047&view=diff
==============================================================================
--- jena/trunk/jena-spatial/src/main/java/org/apache/jena/query/spatial/assembler/SpatialVocab.java (original)
+++ jena/trunk/jena-spatial/src/main/java/org/apache/jena/query/spatial/assembler/SpatialVocab.java Wed Sep 4 15:15:42 2013
@@ -46,6 +46,7 @@ public class SpatialVocab
public static final Property pHasWKTPredicates = Vocab.property(NS, "hasWKTPredicates") ;
public static final Property pLatitude = Vocab.property(NS, "latitude") ;
public static final Property pLongitude = Vocab.property(NS, "longitude") ;
+ public static final Property pSpatialContextFactory = Vocab.property(NS, "spatialContextFactory") ;
// public static final Property pOptional = Vocab.property(NS, "optional") ;
}
Added: jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/AbstractTestIndexingSpatialData.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/AbstractTestIndexingSpatialData.java?rev=1520047&view=auto
==============================================================================
--- jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/AbstractTestIndexingSpatialData.java (added)
+++ jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/AbstractTestIndexingSpatialData.java Wed Sep 4 15:15:42 2013
@@ -0,0 +1,54 @@
+package org.apache.jena.query.spatial;
+
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.apache.jena.atlas.lib.StrUtils;
+import org.junit.Test;
+
+public class AbstractTestIndexingSpatialData extends
+ AbstractTestDatasetWithSpatialIndex {
+
+ @Test
+ public void testIndexingStringLiteral() {
+ final String turtle = StrUtils.strjoinNL(TURTLE_PROLOG, "<"
+ + RESOURCE_BASE + "testIndexingStringLiteral>",
+ " geo:lat '51.3827' ;", " geo:long '-2.71909' ", ".");
+ String queryString = StrUtils
+ .strjoinNL(
+ QUERY_PROLOG,
+ "SELECT ?s",
+ "WHERE {",
+ " ?s spatial:nearby (51.3000 -2.71000 100.0 'miles' -1) .",
+ "}");
+ Set<String> expectedURIs = (new HashSet<String>());
+ expectedURIs
+ .addAll(Arrays
+ .asList((new String[] { "http://example.org/data/resource/testIndexingStringLiteral" })));
+ doTestSearch(turtle, queryString, expectedURIs);
+ }
+
+ @Test
+ public void testIndexingWKTLiteral() {
+ final String turtle = StrUtils
+ .strjoinNL(
+ TURTLE_PROLOG,
+ "<" + RESOURCE_BASE + "testIndexingWKTLiteral>",
+ " wkt:asWKT 'POINT(-1.74803 52.4539)'^^wkt:wktLiteral ",
+ ".");
+ String queryString = StrUtils
+ .strjoinNL(
+ QUERY_PROLOG,
+ "SELECT ?s",
+ "WHERE {",
+ " ?s spatial:nearby (51.3000 -2.71000 100.0 'miles' -1) .",
+ "}");
+ Set<String> expectedURIs = (new HashSet<String>());
+ expectedURIs
+ .addAll(Arrays
+ .asList((new String[] { "http://example.org/data/resource/testIndexingWKTLiteral" })));
+ doTestSearch(turtle, queryString, expectedURIs);
+ }
+
+}
Propchange: jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/AbstractTestIndexingSpatialData.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/TS_Spatial.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/TS_Spatial.java?rev=1520047&r1=1520046&r2=1520047&view=diff
==============================================================================
--- jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/TS_Spatial.java (original)
+++ jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/TS_Spatial.java Wed Sep 4 15:15:42 2013
@@ -81,6 +81,7 @@ import org.junit.runners.Suite.SuiteClas
TestTDBDatasetWithLuceneSpatialIndex.class,
TestIndexingSpatialDataWithLucene.class,
+ TestIndexingSpatialDataWithSolr.class,
TestEntityDefinitionAssembler.class,
TestSpatialDatasetAssembler.class,
Modified: jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/TestIndexingSpatialDataWithLucene.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/TestIndexingSpatialDataWithLucene.java?rev=1520047&r1=1520046&r2=1520047&view=diff
==============================================================================
--- jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/TestIndexingSpatialDataWithLucene.java (original)
+++ jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/TestIndexingSpatialDataWithLucene.java Wed Sep 4 15:15:42 2013
@@ -30,7 +30,7 @@ import org.junit.Before;
import org.junit.Test;
public class TestIndexingSpatialDataWithLucene extends
- AbstractTestDatasetWithSpatialIndex {
+ AbstractTestIndexingSpatialData {
private static final String INDEX_PATH = "target/test/IsNearByPFWithLuceneSpatialIndex";
private static final File INDEX_DIR = new File(INDEX_PATH);
@@ -38,6 +38,12 @@ public class TestIndexingSpatialDataWith
public void init() throws IOException {
dataset = SpatialSearchUtil
.initInMemoryDatasetWithLuceneSpatitalIndex(INDEX_DIR);
+
+ SpatialIndex index = (SpatialIndex) dataset.getContext().get(
+ SpatialQuery.spatialIndex);
+ index.getDocDef().setSpatialContextFactory(
+ "com.spatial4j.core.context.jts.JtsSpatialContextFactory");
+
}
@After
@@ -45,43 +51,4 @@ public class TestIndexingSpatialDataWith
SpatialSearchUtil.deleteOldFiles(INDEX_DIR);
}
- @Test
- public void testIndexingStringLiteral() {
- final String turtle = StrUtils.strjoinNL(TURTLE_PROLOG, "<"
- + RESOURCE_BASE + "testIndexingStringLiteral>",
- " geo:lat '51.3827' ;", " geo:long '-2.71909' ", ".");
- String queryString = StrUtils
- .strjoinNL(
- QUERY_PROLOG,
- "SELECT ?s",
- "WHERE {",
- " ?s spatial:nearby (51.3000 -2.71000 100.0 'miles' -1) .",
- "}");
- Set<String> expectedURIs = (new HashSet<String>());
- expectedURIs
- .addAll(Arrays
- .asList((new String[] { "http://example.org/data/resource/testIndexingStringLiteral" })));
- doTestSearch(turtle, queryString, expectedURIs);
- }
-
- @Test
- public void testIndexingWKTLiteral() {
- final String turtle = StrUtils.strjoinNL(TURTLE_PROLOG, "<"
- + RESOURCE_BASE + "testIndexingWKTLiteral>",
- " wkt:asWKT 'POINT(-1.74803 52.4539)'^^wkt:wktLiteral ",
- ".");
- String queryString = StrUtils
- .strjoinNL(
- QUERY_PROLOG,
- "SELECT ?s",
- "WHERE {",
- " ?s spatial:nearby (51.3000 -2.71000 100.0 'miles' -1) .",
- "}");
- Set<String> expectedURIs = (new HashSet<String>());
- expectedURIs
- .addAll(Arrays
- .asList((new String[] { "http://example.org/data/resource/testIndexingWKTLiteral" })));
- doTestSearch(turtle, queryString, expectedURIs);
- }
-
}
Added: jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/TestIndexingSpatialDataWithSolr.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/TestIndexingSpatialDataWithSolr.java?rev=1520047&view=auto
==============================================================================
--- jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/TestIndexingSpatialDataWithSolr.java (added)
+++ jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/TestIndexingSpatialDataWithSolr.java Wed Sep 4 15:15:42 2013
@@ -0,0 +1,48 @@
+/*
+ * 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.jena.query.spatial;
+
+import java.io.IOException;
+
+import org.junit.After;
+import org.junit.Before;
+
+public class TestIndexingSpatialDataWithSolr extends
+ AbstractTestIndexingSpatialData {
+
+ @Before
+ public void init() throws IOException {
+ dataset = SpatialSearchUtil.initInMemoryDatasetWithSolrSpatitalIndex();
+
+ SpatialIndex index = (SpatialIndex) dataset.getContext().get(
+ SpatialQuery.spatialIndex);
+ index.getDocDef().setSpatialContextFactory(
+ "com.spatial4j.core.context.jts.JtsSpatialContextFactory");
+
+ }
+
+ @After
+ public void destroy() {
+ SpatialIndexSolr index = (SpatialIndexSolr) dataset.getContext().get(
+ SpatialQuery.spatialIndex);
+ index.getServer().shutdown();
+ SpatialSearchUtil.deleteOldSolrDataDir();
+ }
+
+}
Propchange: jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/TestIndexingSpatialDataWithSolr.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/assembler/TestEntityDefinitionAssembler.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/assembler/TestEntityDefinitionAssembler.java?rev=1520047&r1=1520046&r2=1520047&view=diff
==============================================================================
--- jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/assembler/TestEntityDefinitionAssembler.java (original)
+++ jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/assembler/TestEntityDefinitionAssembler.java Wed Sep 4 15:15:42 2013
@@ -22,6 +22,7 @@ import static org.junit.Assert.assertEqu
import org.apache.jena.query.spatial.EntityDefinition;
import org.apache.jena.query.spatial.SpatialIndexException;
+import org.apache.jena.query.spatial.SpatialQuery;
import org.junit.Test;
import com.hp.hpl.jena.rdf.model.Model;
@@ -29,6 +30,7 @@ import com.hp.hpl.jena.rdf.model.ModelFa
import com.hp.hpl.jena.rdf.model.RDFNode;
import com.hp.hpl.jena.rdf.model.Resource;
import com.hp.hpl.jena.rdf.model.ResourceFactory;
+import com.spatial4j.core.context.jts.JtsSpatialContext;
/**
* Test assembler for EntityDefinition
@@ -39,6 +41,7 @@ public class TestEntityDefinitionAssembl
private static final Resource spec0;
private static final Resource spec1;
private static final Resource spec2;
+ private static final Resource spec3;
private static final Resource specNoEntityField;
private static final Resource specNoGeoField;
@@ -85,6 +88,12 @@ public class TestEntityDefinitionAssembl
assertEquals(true, entityDef.isWKTPredicate(SPEC2_WKT_2.asNode()));
assertEquals(false, entityDef.isWKTPredicate(SPEC1_WKT.asNode()));
}
+
+ @Test public void EntityHasSpatialContextFactory() {
+ EntityDefinitionAssembler emAssembler = new EntityDefinitionAssembler();
+ EntityDefinition entityDef = emAssembler.open(null, spec3, null);
+ assertEquals(JtsSpatialContext.GEO.getClass().toString(), SpatialQuery.ctx.getClass().toString());
+ }
@Test(expected=SpatialIndexException.class) public void errorOnNoEntityField() {
EntityDefinitionAssembler emAssembler = new EntityDefinitionAssembler();
@@ -115,6 +124,8 @@ public class TestEntityDefinitionAssembl
private static final Resource SPEC2_WKT_1 = ResourceFactory.createResource(TESTBASE+"wkt_1");
private static final Resource SPEC2_WKT_2 = ResourceFactory.createResource(TESTBASE+"wkt_2");
+ private static final String SPEC3_SPATIALCONTEXTFACTORY = "com.spatial4j.core.context.jts.JtsSpatialContextFactory";
+
static {
// create a mininal specification
@@ -165,6 +176,15 @@ public class TestEntityDefinitionAssembl
SPEC2_WKT_1, SPEC2_WKT_2
}))
;
+
+ // create an entity definition specification with spatialContextFactory
+ model = ModelFactory.createDefaultModel();
+ spec3 = model.createResource(TESTBASE + "spec0")
+ .addProperty(SpatialVocab.pEntityField, SPEC0_ENTITY_FIELD)
+ .addProperty(SpatialVocab.pGeoField, SPEC0_GEO_FIELD)
+ .addProperty(SpatialVocab.pSpatialContextFactory, SPEC3_SPATIALCONTEXTFACTORY)
+ ;
+
// bad assembler spec
model = ModelFactory.createDefaultModel();
specNoEntityField =
Modified: jena/trunk/jena-spatial/src/test/resources/spatial-config-spatialindexer.ttl
URL: http://svn.apache.org/viewvc/jena/trunk/jena-spatial/src/test/resources/spatial-config-spatialindexer.ttl?rev=1520047&r1=1520046&r2=1520047&view=diff
==============================================================================
--- jena/trunk/jena-spatial/src/test/resources/spatial-config-spatialindexer.ttl (original)
+++ jena/trunk/jena-spatial/src/test/resources/spatial-config-spatialindexer.ttl Wed Sep 4 15:15:42 2013
@@ -45,5 +45,8 @@ spatial:SpatialIndexLucene rdfs:subClas
[ spatial:latitude :latitude_2 ; spatial:longitude :longitude_2 ]
) ;
# custom geo predicates for 2) Well Known Text Literal
- spatial:hasWKTPredicates (:wkt_1 :wkt_2)
+ spatial:hasWKTPredicates (:wkt_1 :wkt_2) ;
+ # custom SpatialContextFactory for 2) Well Known Text Literal
+ spatial:spatialContextFactory
+ "com.spatial4j.core.context.jts.JtsSpatialContextFactory"
.
Modified: jena/trunk/jena-spatial/src/test/resources/spatial-config.ttl
URL: http://svn.apache.org/viewvc/jena/trunk/jena-spatial/src/test/resources/spatial-config.ttl?rev=1520047&r1=1520046&r2=1520047&view=diff
==============================================================================
--- jena/trunk/jena-spatial/src/test/resources/spatial-config.ttl (original)
+++ jena/trunk/jena-spatial/src/test/resources/spatial-config.ttl Wed Sep 4 15:15:42 2013
@@ -47,5 +47,8 @@ spatial:SpatialIndexLucene rdfs:subClas
[ spatial:latitude :latitude_2 ; spatial:longitude :longitude_2 ]
) ;
# custom geo predicates for 2) Well Known Text Literal
- spatial:hasWKTPredicates (:wkt_1 :wkt_2)
+ spatial:hasWKTPredicates (:wkt_1 :wkt_2) ;
+ # custom SpatialContextFactory for 2) Well Known Text Literal
+ spatial:spatialContextFactory
+ "com.spatial4j.core.context.jts.JtsSpatialContextFactory"
.
Modified: jena/trunk/jena-spatial/src/test/resources/spatial-solr-config.ttl
URL: http://svn.apache.org/viewvc/jena/trunk/jena-spatial/src/test/resources/spatial-solr-config.ttl?rev=1520047&r1=1520046&r2=1520047&view=diff
==============================================================================
--- jena/trunk/jena-spatial/src/test/resources/spatial-solr-config.ttl (original)
+++ jena/trunk/jena-spatial/src/test/resources/spatial-solr-config.ttl Wed Sep 4 15:15:42 2013
@@ -45,4 +45,7 @@ spatial:SpatialIndexSolr rdfs:subClassOf
) ;
# custom geo predicates for 2) Well Known Text Literal
spatial:hasWKTPredicates (:wkt_1 :wkt_2) ;
- .
+ # custom SpatialContextFactory for 2) Well Known Text Literal
+ spatial:spatialContextFactory
+ "com.spatial4j.core.context.jts.JtsSpatialContextFactory"
+ .
\ No newline at end of file