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/02 08:46:21 UTC

svn commit: r1519358 [3/5] - in /jena/trunk/jena-spatial: ./ src/ src/main/ src/main/java/ src/main/java/examples/ src/main/java/jena/ src/main/java/org/ src/main/java/org/apache/ src/main/java/org/apache/jena/ src/main/java/org/apache/jena/query/ src/...

Propchange: jena/trunk/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/library/IntersectsBoxPF.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: jena/trunk/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/library/IsNearByPF.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/library/IsNearByPF.java?rev=1519358&view=auto
==============================================================================
--- jena/trunk/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/library/IsNearByPF.java (added)
+++ jena/trunk/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/library/IsNearByPF.java Mon Sep  2 06:46:19 2013
@@ -0,0 +1,23 @@
+/*
+ * 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.pfunction.library;
+
+public class IsNearByPF extends IsWithinCirclePF {
+
+}

Propchange: jena/trunk/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/library/IsNearByPF.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: jena/trunk/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/library/IsWithinBoxPF.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/library/IsWithinBoxPF.java?rev=1519358&view=auto
==============================================================================
--- jena/trunk/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/library/IsWithinBoxPF.java (added)
+++ jena/trunk/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/library/IsWithinBoxPF.java Mon Sep  2 06:46:19 2013
@@ -0,0 +1,34 @@
+/*
+ * 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.pfunction.library;
+
+import org.apache.jena.query.spatial.pfunction.SpatialOperationWithBoxPFBase;
+import org.apache.lucene.spatial.query.SpatialOperation;
+
+public class IsWithinBoxPF extends SpatialOperationWithBoxPFBase {
+
+	public IsWithinBoxPF() {
+	}
+
+	@Override
+	protected SpatialOperation getSpatialOperation() {
+		return SpatialOperation.IsWithin;
+	}
+
+}

Propchange: jena/trunk/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/library/IsWithinBoxPF.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: jena/trunk/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/library/IsWithinCirclePF.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/library/IsWithinCirclePF.java?rev=1519358&view=auto
==============================================================================
--- jena/trunk/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/library/IsWithinCirclePF.java (added)
+++ jena/trunk/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/library/IsWithinCirclePF.java Mon Sep  2 06:46:19 2013
@@ -0,0 +1,35 @@
+/*
+ * 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.pfunction.library;
+
+import org.apache.jena.query.spatial.pfunction.SpatialOperationWithCircleBase;
+import org.apache.lucene.spatial.query.SpatialOperation;
+
+public class IsWithinCirclePF extends SpatialOperationWithCircleBase {
+
+	public IsWithinCirclePF() {
+		// TODO Auto-generated constructor stub
+	}
+
+	@Override
+	protected SpatialOperation getSpatialOperation() {
+		return SpatialOperation.IsWithin;
+	}
+
+}

Propchange: jena/trunk/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/library/IsWithinCirclePF.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: jena/trunk/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/library/NorthPF.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/library/NorthPF.java?rev=1519358&view=auto
==============================================================================
--- jena/trunk/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/library/NorthPF.java (added)
+++ jena/trunk/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/library/NorthPF.java Mon Sep  2 06:46:19 2013
@@ -0,0 +1,45 @@
+/*
+ * 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.pfunction.library;
+
+import org.apache.jena.query.spatial.SpatialQuery;
+import org.apache.jena.query.spatial.pfunction.DirectionWithPointPFBase;
+import org.apache.jena.query.spatial.pfunction.SpatialMatch;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class NorthPF extends DirectionWithPointPFBase {
+
+	private static Logger log = LoggerFactory.getLogger(NorthPF.class);
+
+	public NorthPF() {
+		// TODO Auto-generated constructor stub
+	}
+
+	/** Deconstruct the node or list object argument and make a SpatialMatch */
+	protected SpatialMatch getSpatialMatch(Double latitude, Double longitude,
+			int limit) {
+		SpatialMatch match = new SpatialMatch(latitude, SpatialQuery.ctx
+				.getWorldBounds().getMinX(), SpatialQuery.ctx.getWorldBounds()
+				.getMaxY(), SpatialQuery.ctx.getWorldBounds().getMaxX(), limit,
+				getSpatialOperation());
+		return match;
+	}
+
+}

Propchange: jena/trunk/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/library/NorthPF.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: jena/trunk/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/library/SouthPF.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/library/SouthPF.java?rev=1519358&view=auto
==============================================================================
--- jena/trunk/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/library/SouthPF.java (added)
+++ jena/trunk/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/library/SouthPF.java Mon Sep  2 06:46:19 2013
@@ -0,0 +1,44 @@
+/*
+ * 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.pfunction.library;
+
+import org.apache.jena.query.spatial.SpatialQuery;
+import org.apache.jena.query.spatial.pfunction.DirectionWithPointPFBase;
+import org.apache.jena.query.spatial.pfunction.SpatialMatch;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class SouthPF extends DirectionWithPointPFBase {
+
+	private static Logger log = LoggerFactory.getLogger(SouthPF.class);
+
+	public SouthPF() {
+		// TODO Auto-generated constructor stub
+	}
+
+	/** Deconstruct the node or list object argument and make a SpatialMatch */
+	protected SpatialMatch getSpatialMatch(Double latitude, Double longitude,
+			int limit) {
+		SpatialMatch match = new SpatialMatch(SpatialQuery.ctx.getWorldBounds().getMinY(),
+				SpatialQuery.ctx.getWorldBounds().getMinX(), latitude, SpatialQuery.ctx.getWorldBounds()
+						.getMaxX(), limit, getSpatialOperation());
+		return match;
+	}
+
+}

Propchange: jena/trunk/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/library/SouthPF.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: jena/trunk/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/library/WestPF.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/library/WestPF.java?rev=1519358&view=auto
==============================================================================
--- jena/trunk/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/library/WestPF.java (added)
+++ jena/trunk/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/library/WestPF.java Mon Sep  2 06:46:19 2013
@@ -0,0 +1,44 @@
+/*
+ * 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.pfunction.library;
+
+import org.apache.jena.query.spatial.SpatialQuery;
+import org.apache.jena.query.spatial.pfunction.DirectionWithPointPFBase;
+import org.apache.jena.query.spatial.pfunction.SpatialMatch;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class WestPF extends DirectionWithPointPFBase {
+
+	private static Logger log = LoggerFactory.getLogger(WestPF.class);
+
+	public WestPF() {
+		// TODO Auto-generated constructor stub
+	}
+
+	/** Deconstruct the node or list object argument and make a SpatialMatch */
+	protected SpatialMatch getSpatialMatch(Double latitude, Double longitude,
+			int limit) {
+		SpatialMatch match = new SpatialMatch(SpatialQuery.ctx.getWorldBounds().getMinY(),
+				SpatialQuery.ctx.getWorldBounds().getMinX(), SpatialQuery.ctx.getWorldBounds().getMaxY(),
+				longitude, limit, getSpatialOperation());
+		return match;
+	}
+
+}

Propchange: jena/trunk/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/library/WestPF.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: jena/trunk/jena-spatial/src/main/resources/org/apache/jena/query/spatial/properties.xml
URL: http://svn.apache.org/viewvc/jena/trunk/jena-spatial/src/main/resources/org/apache/jena/query/spatial/properties.xml?rev=1519358&view=auto
==============================================================================
--- jena/trunk/jena-spatial/src/main/resources/org/apache/jena/query/spatial/properties.xml (added)
+++ jena/trunk/jena-spatial/src/main/resources/org/apache/jena/query/spatial/properties.xml Mon Sep  2 06:46:19 2013
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
+<!--  Licensed under the terms of http://www.apache.org/licenses/LICENSE-2.0 -->
+<properties version="1.0">
+  <comment>jena-spatial system properties</comment>
+  <entry key="org.apache.jena.query.spatial.version">${project.version}</entry>
+  <entry key="org.apache.jena.query.spatial.datetime">${build.time.xsd}</entry>
+</properties>

Propchange: jena/trunk/jena-spatial/src/main/resources/org/apache/jena/query/spatial/properties.xml
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/AbstractTestDatasetWithSpatialIndex.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/AbstractTestDatasetWithSpatialIndex.java?rev=1519358&view=auto
==============================================================================
--- jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/AbstractTestDatasetWithSpatialIndex.java (added)
+++ jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/AbstractTestDatasetWithSpatialIndex.java Mon Sep  2 06:46:19 2013
@@ -0,0 +1,120 @@
+/*
+ * 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 static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.io.Reader;
+import java.io.StringReader;
+import java.util.Set;
+
+import org.apache.jena.atlas.lib.StrUtils;
+
+import com.hp.hpl.jena.query.Dataset;
+import com.hp.hpl.jena.query.Query;
+import com.hp.hpl.jena.query.QueryException;
+import com.hp.hpl.jena.query.QueryExecution;
+import com.hp.hpl.jena.query.QueryExecutionFactory;
+import com.hp.hpl.jena.query.QueryFactory;
+import com.hp.hpl.jena.query.ReadWrite;
+import com.hp.hpl.jena.query.ResultSet;
+import com.hp.hpl.jena.rdf.model.Model;
+
+/*
+ * This abstract class defines a collection of test methods for testing
+ * test searches.  Its subclasses create a dataset using the index to 
+ * to be tested and then call the test methods in this class to run
+ * the actual tests.
+ */
+public abstract class AbstractTestDatasetWithSpatialIndex {
+	protected static final String RESOURCE_BASE = "http://example.org/data/resource/";
+	protected static Dataset dataset;
+	protected static final String QUERY_PROLOG = 
+			StrUtils.strjoinNL(
+				"PREFIX spatial: <http://jena.apache.org/spatial#>",
+				"PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>"
+				);
+	
+	protected static final String TURTLE_PROLOG = 
+				StrUtils.strjoinNL(
+						"@prefix spatial: <http://jena.apache.org/spatial#> .",
+						"@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .",
+						"@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .",
+						"@prefix geo: <http://www.w3.org/2003/01/geo/wgs84_pos#> .",
+						"@prefix wkt: <http://www.opengis.net/ont/geosparql#> ."
+						);
+	
+	
+	protected void doTestSearchThrowException(String turtle, String queryString) {
+		doTestSearch(turtle, queryString, null, -1, true);
+	}
+    
+	protected void doTestSearch(String turtle, String queryString, Set<String> expectedEntityURIs) {
+		doTestSearch(turtle, queryString, expectedEntityURIs, expectedEntityURIs.size(), false);
+	}
+	
+	protected void doTestSearch(String turtle, String queryString, Set<String> expectedEntityURIs, int expectedNumResults) {
+		doTestSearch(turtle, queryString, expectedEntityURIs, expectedNumResults, false);
+	}
+	
+	private void doTestSearch(String turtle, String queryString, Set<String> expectedEntityURIs, int expectedNumResults, boolean throwException) {
+		Model model = dataset.getDefaultModel();
+		Reader reader = new StringReader(turtle);
+		dataset.begin(ReadWrite.WRITE);
+		model.read(reader, "", "TURTLE");
+		dataset.commit();
+		doTestQuery(dataset, queryString, expectedEntityURIs, expectedNumResults, throwException);
+	}
+	
+	public static void doTestQuery(Dataset dataset, String queryString, Set<String> expectedEntityURIs, int expectedNumResults, boolean throwException) {
+		Query query = QueryFactory.create(queryString) ;
+		
+		QueryExecution qexec = QueryExecutionFactory.create(query, dataset) ;
+		try {
+			dataset.begin(ReadWrite.READ);
+		    ResultSet results = qexec.execSelect() ;
+
+		    boolean b = ( (expectedNumResults > 0) == results.hasNext() ) ;
+		    if ( !b ) {
+		        System.out.println(queryString) ;
+		        System.out.println(expectedNumResults) ;
+		        
+		    }
+		    if (throwException){
+		    	fail("An exception is supposed to be thrown!");
+		    }
+		    assertEquals( expectedNumResults > 0, results.hasNext());
+		    int count;
+		    for (count=0; results.hasNext(); count++) {
+		    	String entityURI = results.next().getResource("s").getURI();
+		        assertTrue(": unexpected result: " + entityURI, expectedEntityURIs.contains(entityURI));
+		    }
+		    assertEquals(expectedNumResults, count);
+		} catch (QueryException e){
+			if (!throwException){
+				fail("The exception is not supposed to be thrown: "+ e.getMessage());
+			}	
+		} finally { qexec.close() ; dataset.end() ; }			
+		
+	
+	}
+	
+}

Propchange: jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/AbstractTestDatasetWithSpatialIndex.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/SpatialSearchUtil.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/SpatialSearchUtil.java?rev=1519358&view=auto
==============================================================================
--- jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/SpatialSearchUtil.java (added)
+++ jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/SpatialSearchUtil.java Mon Sep  2 06:46:19 2013
@@ -0,0 +1,140 @@
+/*
+ * 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.File;
+import java.io.IOException;
+
+import org.apache.jena.atlas.io.IO ;
+import org.apache.lucene.analysis.Analyzer;
+import org.apache.lucene.analysis.standard.StandardAnalyzer;
+import org.apache.lucene.index.IndexWriter;
+import org.apache.lucene.index.IndexWriterConfig;
+import org.apache.lucene.store.Directory;
+import org.apache.lucene.store.FSDirectory;
+import org.apache.lucene.util.Version;
+
+import com.hp.hpl.jena.query.Dataset;
+import com.hp.hpl.jena.query.DatasetFactory;
+import com.hp.hpl.jena.tdb.TDBFactory;
+
+public class SpatialSearchUtil {
+	
+    private static Version VER = SpatialIndexLucene.VER ;
+    private static final Analyzer analyzer = new StandardAnalyzer(VER);
+    
+	private static final String LUCENE_INDEX_PATH = "target/test/LuceneSpatialIndex";
+	private static final File LUCENE_Index_DIR = new File(LUCENE_INDEX_PATH);
+	
+    private static final String  SOLR_DATA_PATH      = "src/test/resources/SolrHome/SolrARQCollection/data";
+    private static final File    SOLR_DATA_DIR       = new File(SOLR_DATA_PATH);
+    private static final String  SOLR_INDEX_PATH     = SOLR_DATA_PATH + "/index";
+    private static final File    SOLR_INDEX_DIR      = new File(SOLR_INDEX_PATH);
+    private static final String  SOLR_TEST_ASSEM     = "src/test/resources/spatial-solr-config.ttl" ;	
+	
+    public static void emptyAndDeleteDirectory(File dir) {
+        File[] contents = dir.listFiles() ;
+        if (contents != null) {
+            for (File content : contents) {
+                if (content.isDirectory()) {
+                    emptyAndDeleteDirectory(content) ;
+                } else {
+                    content.delete() ;
+                }
+            }
+        }
+        dir.delete() ;
+    }
+
+    public static void createEmptyIndex(File indexDir) {
+        try {
+            Directory directory = FSDirectory.open(indexDir) ;
+            IndexWriterConfig wConfig = new IndexWriterConfig(VER, analyzer) ;
+            IndexWriter indexWriter = new IndexWriter(directory, wConfig) ;
+            indexWriter.close() ; // force creation of the index files
+        } catch (IOException ex) {
+            IO.exception(ex) ;
+        }
+	}
+    
+    public static Dataset initInMemoryDatasetWithSolrSpatitalIndex() throws IOException{
+	    SpatialSearchUtil.deleteOldFiles(SOLR_DATA_DIR  );
+	    SOLR_INDEX_DIR.mkdirs();
+	    SpatialQuery.init() ;
+	    SpatialSearchUtil.createEmptyIndex(SOLR_INDEX_DIR);
+	    return SpatialDatasetFactory.create(SOLR_TEST_ASSEM) ;
+    }
+    
+    public static Dataset initInMemoryDatasetWithLuceneSpatitalIndex() throws IOException{
+    	return initInMemoryDatasetWithLuceneSpatitalIndex(LUCENE_Index_DIR);
+    }
+    
+    public static Dataset initInMemoryDatasetWithLuceneSpatitalIndex(File indexDir) throws IOException{
+		SpatialQuery.init();
+		deleteOldFiles(indexDir);
+		indexDir.mkdirs();
+		return createDatasetByCode(indexDir);
+    }
+    
+    public static Dataset initTDBDatasetWithLuceneSpatitalIndex(File indexDir, File TDBDir) throws IOException{
+		SpatialQuery.init();
+		deleteOldFiles(indexDir);
+		deleteOldFiles(TDBDir);
+		indexDir.mkdirs();
+		TDBDir.mkdir();
+		return createDatasetByCode(indexDir, TDBDir);
+    }
+    
+	public static void deleteOldLuceneIndexDir() {
+		deleteOldFiles(LUCENE_Index_DIR);
+	}
+	public static void deleteOldSolrDataDir() {
+		deleteOldFiles(SOLR_DATA_DIR);
+	}
+    
+	public static void deleteOldFiles(File indexDir) {
+		if (indexDir.exists())
+			emptyAndDeleteDirectory(indexDir);
+	}
+	
+	private static Dataset createDatasetByCode(File indexDir) throws IOException {
+		// Base data
+		Dataset ds1 = DatasetFactory.createMem();
+		return joinDataset(ds1, indexDir);
+	}
+	
+	private static Dataset createDatasetByCode(File indexDir, File TDBDir) throws IOException {
+		// Base data
+		Dataset ds1 = TDBFactory.createDataset(TDBDir.getAbsolutePath());
+		return joinDataset(ds1, indexDir);
+	}
+	
+	private static Dataset joinDataset(Dataset baseDataset, File indexDir) throws IOException{
+		EntityDefinition entDef = new EntityDefinition("uri", "geo");
+
+		// Lucene, index in File system.
+		Directory dir = FSDirectory.open(indexDir);
+
+		// Join together into a dataset
+		Dataset ds = SpatialDatasetFactory.createLucene(baseDataset, dir, entDef);
+
+		return ds;
+	}
+
+}

Propchange: jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/SpatialSearchUtil.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: 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=1519358&view=auto
==============================================================================
--- jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/TS_Spatial.java (added)
+++ jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/TS_Spatial.java Mon Sep  2 06:46:19 2013
@@ -0,0 +1,92 @@
+/**
+ * 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;
+/*
+ * 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 org.apache.jena.query.spatial.assembler.TestEntityDefinitionAssembler;
+import org.apache.jena.query.spatial.assembler.TestSpatialDatasetAssembler;
+import org.apache.jena.query.spatial.assembler.TestSpatialIndexLuceneAssembler;
+import org.apache.jena.query.spatial.pfunction.lucene.TestEastPFWithLuceneSpatialIndex;
+import org.apache.jena.query.spatial.pfunction.lucene.TestIntersectsBoxPFWithLuceneSpatialIndex;
+import org.apache.jena.query.spatial.pfunction.lucene.TestIsNearByPFWithLuceneSpatialIndex;
+import org.apache.jena.query.spatial.pfunction.lucene.TestIsWithinBoxPFWithLuceneSpatialIndex;
+import org.apache.jena.query.spatial.pfunction.lucene.TestIsWithinCirclePFWithLuceneSpatialIndex;
+import org.apache.jena.query.spatial.pfunction.lucene.TestNorthPFWithLuceneSpatialIndex;
+import org.apache.jena.query.spatial.pfunction.lucene.TestSouthPFWithLuceneSpatialIndex;
+import org.apache.jena.query.spatial.pfunction.lucene.TestWestPFWithLuceneSpatialIndex;
+import org.apache.jena.query.spatial.pfunction.solr.TestEastPFWithEmbeddedSolrSpatialIndex;
+import org.apache.jena.query.spatial.pfunction.solr.TestIntersectsBoxPFWithEmbeddedSolrSpatialIndex;
+import org.apache.jena.query.spatial.pfunction.solr.TestIsNearByPFWithEmbeddedSolrSpatialIndex;
+import org.apache.jena.query.spatial.pfunction.solr.TestIsWithinBoxPFWithEmbeddedSolrSpatialIndex;
+import org.apache.jena.query.spatial.pfunction.solr.TestIsWithinCirclePFWithEmbeddedSolrSpatialIndex;
+import org.apache.jena.query.spatial.pfunction.solr.TestNorthPFWithEmbeddedSolrSpatialIndex;
+import org.apache.jena.query.spatial.pfunction.solr.TestSouthPFWithEmbeddedSolrSpatialIndex;
+import org.apache.jena.query.spatial.pfunction.solr.TestWestPFWithEmbeddedSolrSpatialIndex;
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+import org.junit.runners.Suite.SuiteClasses;
+
+@RunWith(Suite.class)
+@SuiteClasses({
+	
+		TestIsWithinCirclePFWithLuceneSpatialIndex.class,
+		TestIsNearByPFWithLuceneSpatialIndex.class,
+		TestIsWithinBoxPFWithLuceneSpatialIndex.class,
+		TestIntersectsBoxPFWithLuceneSpatialIndex.class,
+		TestNorthPFWithLuceneSpatialIndex.class,
+		TestSouthPFWithLuceneSpatialIndex.class,
+		TestEastPFWithLuceneSpatialIndex.class,
+		TestWestPFWithLuceneSpatialIndex.class,
+		
+		TestIsWithinCirclePFWithEmbeddedSolrSpatialIndex.class,
+		TestIsNearByPFWithEmbeddedSolrSpatialIndex.class,
+		TestIsWithinBoxPFWithEmbeddedSolrSpatialIndex.class,
+		TestIntersectsBoxPFWithEmbeddedSolrSpatialIndex.class,
+		TestNorthPFWithEmbeddedSolrSpatialIndex.class,
+		TestSouthPFWithEmbeddedSolrSpatialIndex.class,
+		TestEastPFWithEmbeddedSolrSpatialIndex.class,
+		TestWestPFWithEmbeddedSolrSpatialIndex.class,
+		
+		TestTDBDatasetWithLuceneSpatialIndex.class,
+		TestIndexingSpatialDataWithLucene.class,
+
+		TestEntityDefinitionAssembler.class,
+		TestSpatialDatasetAssembler.class,
+		TestSpatialIndexLuceneAssembler.class,
+		TestSpatialPredicatePairValue.class
+		
+		})
+public class TS_Spatial {
+}

Propchange: jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/TS_Spatial.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: 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=1519358&view=auto
==============================================================================
--- jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/TestIndexingSpatialDataWithLucene.java (added)
+++ jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/TestIndexingSpatialDataWithLucene.java Mon Sep  2 06:46:19 2013
@@ -0,0 +1,87 @@
+/*
+ * 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.File;
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.apache.jena.atlas.lib.StrUtils;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+public class TestIndexingSpatialDataWithLucene extends
+		AbstractTestDatasetWithSpatialIndex {
+	private static final String INDEX_PATH = "target/test/IsNearByPFWithLuceneSpatialIndex";
+	private static final File INDEX_DIR = new File(INDEX_PATH);
+
+	@Before
+	public void init() throws IOException {
+		dataset = SpatialSearchUtil
+				.initInMemoryDatasetWithLuceneSpatitalIndex(INDEX_DIR);
+	}
+
+	@After
+	public void destroy() {
+		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);
+	}
+
+}

Propchange: jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/TestIndexingSpatialDataWithLucene.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/TestSpatialPredicatePairValue.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/TestSpatialPredicatePairValue.java?rev=1519358&view=auto
==============================================================================
--- jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/TestSpatialPredicatePairValue.java (added)
+++ jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/TestSpatialPredicatePairValue.java Mon Sep  2 06:46:19 2013
@@ -0,0 +1,59 @@
+/*
+ * 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 junit.framework.TestCase;
+
+import org.junit.Test;
+
+public class TestSpatialPredicatePairValue {
+
+	@Test public void testEqualsAndHashcode(){
+		SpatialPredicatePair pair1 = new SpatialPredicatePair(
+				EntityDefinition.geo_latitude.asNode(),
+				EntityDefinition.geo_longitude.asNode());
+		SpatialPredicatePair pair2 = new SpatialPredicatePair(
+				EntityDefinition.geo_latitude.asNode(),
+				EntityDefinition.geo_longitude.asNode());
+		TestCase.assertTrue(pair1.equals(pair2));
+		TestCase.assertTrue(pair1.hashCode() == pair2.hashCode());
+
+		SpatialPredicatePairValue value1 = new SpatialPredicatePairValue(pair1);
+		value1.setValue(EntityDefinition.geo_latitude.asNode(), 12.0);
+		value1.setValue(EntityDefinition.geo_longitude.asNode(), 23.0);
+
+		SpatialPredicatePairValue value2 = new SpatialPredicatePairValue(pair2);
+		value2.setValue(EntityDefinition.geo_latitude.asNode(), 12.0);
+		value2.setValue(EntityDefinition.geo_longitude.asNode(), 23.0);
+
+		TestCase.assertTrue(value1.equals(value2));
+		TestCase.assertTrue(value1.hashCode() == value2.hashCode());
+		
+		value1.setValue(EntityDefinition.geo_latitude.asNode(),null);
+		value2.setValue(EntityDefinition.geo_latitude.asNode(),null);
+		
+		TestCase.assertTrue(value1.equals(value2));
+		TestCase.assertTrue(value1.hashCode() == value2.hashCode());
+		
+		value2.setValue(EntityDefinition.geo_latitude.asNode(),23.0);
+		TestCase.assertFalse(value1.equals(value2));
+		TestCase.assertFalse(value1.hashCode() == value2.hashCode());
+	}
+
+}

Propchange: jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/TestSpatialPredicatePairValue.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/TestTDBDatasetWithLuceneSpatialIndex.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/TestTDBDatasetWithLuceneSpatialIndex.java?rev=1519358&view=auto
==============================================================================
--- jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/TestTDBDatasetWithLuceneSpatialIndex.java (added)
+++ jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/TestTDBDatasetWithLuceneSpatialIndex.java Mon Sep  2 06:46:19 2013
@@ -0,0 +1,95 @@
+/*
+ * 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.File;
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.apache.jena.atlas.lib.StrUtils;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+public class TestTDBDatasetWithLuceneSpatialIndex extends
+		AbstractTestDatasetWithSpatialIndex {
+
+	private static final String INDEX_PATH = "target/test/TBDDatasetWithLuceneSpatialIndex";
+	private static final File INDEX_DIR = new File(INDEX_PATH);
+	private static final String TDB_PATH = "target/test/TDB";
+	private static final File TDB_DIR = new File(TDB_PATH);
+
+	@Before
+	public void init() throws IOException {
+		dataset = SpatialSearchUtil.initTDBDatasetWithLuceneSpatitalIndex(
+				INDEX_DIR, TDB_DIR);
+	}
+
+	@After
+	public void destroy() {
+		SpatialSearchUtil.deleteOldFiles(INDEX_DIR);
+		SpatialSearchUtil.deleteOldFiles(TDB_DIR);
+	}
+
+	@Test
+	public void testOneSimpleResult() {
+		final String turtle = StrUtils.strjoinNL(TURTLE_PROLOG, "<"
+				+ RESOURCE_BASE + "testOneSimpleResult>",
+				"   geo:lat '51.3827'^^xsd:float ;",
+				"   geo:long '-2.71909'^^xsd:float ", ".");
+		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/testOneSimpleResult" })));
+		doTestSearch(turtle, queryString, expectedURIs);
+	}
+
+	@Test
+	public void testMultipleResults() {
+		String label = "testMultipleResults";
+		final String turtle = StrUtils.strjoinNL(TURTLE_PROLOG, "<"
+				+ RESOURCE_BASE + label + "1>",
+				"   geo:lat '51.3827'^^xsd:float ;",
+				"   geo:long '-2.71909'^^xsd:float ;", ".", "<" + RESOURCE_BASE
+						+ label + "2>", "   geo:lat '51.3967'^^xsd:float ;",
+				"   geo:long '-3.34333'^^xsd:float ;", ".");
+
+		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/" + label + "1",
+				"http://example.org/data/resource/" + label + "2" })));
+		doTestSearch(turtle, queryString, expectedURIs);
+	}
+}

Propchange: jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/TestTDBDatasetWithLuceneSpatialIndex.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/assembler/AbstractTestSpatialAssembler.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/assembler/AbstractTestSpatialAssembler.java?rev=1519358&view=auto
==============================================================================
--- jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/assembler/AbstractTestSpatialAssembler.java (added)
+++ jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/assembler/AbstractTestSpatialAssembler.java Mon Sep  2 06:46:19 2013
@@ -0,0 +1,77 @@
+/*
+ * 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.assembler;
+
+import com.hp.hpl.jena.rdf.model.Model;
+import com.hp.hpl.jena.rdf.model.ModelFactory;
+import com.hp.hpl.jena.rdf.model.RDFNode;
+import com.hp.hpl.jena.rdf.model.Resource;
+import com.hp.hpl.jena.tdb.assembler.VocabTDB;
+import com.hp.hpl.jena.vocabulary.RDF;
+
+public abstract class AbstractTestSpatialAssembler {
+	protected static final Model model = ModelFactory.createDefaultModel();
+	private static final String TESTBASE = "http://example.org/abstractTestSpatialAssembler/";
+	protected static final Resource SIMPLE_DATASET_SPEC;
+	protected static final Resource SIMPLE_LUCENE_INDEX_SPEC;
+	protected static final Resource SIMPLE_SOLR_INDEX_SPEC;
+	protected static final Resource SIMPLE_ENTITY_DEFINITION_SPEC;
+	
+	static {
+		SIMPLE_ENTITY_DEFINITION_SPEC = 
+				model.createResource(TESTBASE + "simpleEntityDefinitionSpec")
+				     .addProperty(RDF.type, SpatialVocab.definition)
+				     .addProperty(SpatialVocab.pEntityField, "uri")
+				     .addProperty(SpatialVocab.pGeoField, "geo")
+				     .addProperty(SpatialVocab.pHasSpatialPredicatePairs,
+				    		      model.createList(
+				    		    		  new RDFNode[] {
+				    		    				model.createResource()
+				    		    				     .addProperty(SpatialVocab.pLatitude, model.createResource(TESTBASE+"latitude_1"))
+				    		    				     .addProperty(SpatialVocab.pLongitude, model.createResource(TESTBASE+"longitude_1")),
+				    		    				model.createResource()
+				    		    				     .addProperty(SpatialVocab.pLatitude, model.createResource(TESTBASE+"latitude_2"))
+				    		    				     .addProperty(SpatialVocab.pLongitude, model.createResource(TESTBASE+"longitude_2")),
+				    		    		  }))
+				     .addProperty(SpatialVocab.pHasWKTPredicates,
+				    		      model.createList(
+				    		    		  new RDFNode[] {
+				    		    				  model.createResource(TESTBASE+"wkt_1"),
+				    		    				  model.createResource(TESTBASE+"wkt_2")
+				    		    		  }))
+				     ;
+		SIMPLE_DATASET_SPEC =
+				model.createResource(TESTBASE + "simpleDatasetSpec")
+				     .addProperty(RDF.type, VocabTDB.tDatasetTDB)
+				     .addProperty(VocabTDB.pLocation, "target/test/simpleDB");
+		
+		SIMPLE_LUCENE_INDEX_SPEC =
+				model.createResource(TESTBASE + "simpleLuceneIndexSpec")
+				     .addProperty(RDF.type, SpatialVocab.spatialIndexLucene)
+				     .addProperty(SpatialVocab.pDirectory, model.createResource("file:target/test/simpleLuceneIndex"))
+				     .addProperty(SpatialVocab.pDefinition, SIMPLE_ENTITY_DEFINITION_SPEC);
+		
+		SIMPLE_SOLR_INDEX_SPEC =
+				model.createResource(TESTBASE + "simpleSolrIndexSpec")
+				     .addProperty(RDF.type, SpatialVocab.spatialIndexSolr)
+				     .addProperty(SpatialVocab.pServer, model.createResource("http://localhost:8080/solr"))
+				     .addProperty(SpatialVocab.pDefinition, SIMPLE_ENTITY_DEFINITION_SPEC);
+	}
+
+}

Propchange: jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/assembler/AbstractTestSpatialAssembler.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: 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=1519358&view=auto
==============================================================================
--- jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/assembler/TestEntityDefinitionAssembler.java (added)
+++ jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/assembler/TestEntityDefinitionAssembler.java Mon Sep  2 06:46:19 2013
@@ -0,0 +1,183 @@
+/*
+ * 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.assembler;
+
+import static org.junit.Assert.assertEquals;
+
+import org.apache.jena.query.spatial.EntityDefinition;
+import org.apache.jena.query.spatial.SpatialIndexException;
+import org.junit.Test;
+
+import com.hp.hpl.jena.rdf.model.Model;
+import com.hp.hpl.jena.rdf.model.ModelFactory;
+import com.hp.hpl.jena.rdf.model.RDFNode;
+import com.hp.hpl.jena.rdf.model.Resource;
+import com.hp.hpl.jena.rdf.model.ResourceFactory;
+
+/**
+ * Test assembler for EntityDefinition
+ */
+public class TestEntityDefinitionAssembler {
+	
+	private static final String TESTBASE = "http://example.org/test/";
+	private static final Resource spec0;
+	private static final Resource spec1;
+	private static final Resource spec2;
+	private static final Resource specNoEntityField;
+	private static final Resource specNoGeoField;
+
+	
+	@Test public void EntityHasGeoield() {
+		EntityDefinitionAssembler emAssembler = new EntityDefinitionAssembler();
+		EntityDefinition entityDef = emAssembler.open(null, spec0, null);
+		assertEquals(SPEC0_GEO_FIELD, entityDef.getGeoField());
+	}
+	
+	@Test public void EntityHasEntityField() {
+		EntityDefinitionAssembler emAssembler = new EntityDefinitionAssembler();
+		EntityDefinition entityDef = emAssembler.open(null, spec0, null);
+		assertEquals(SPEC0_ENTITY_FIELD, entityDef.getEntityField());		
+	}
+	
+	@Test public void EntityHasPair() {
+		EntityDefinitionAssembler emAssembler = new EntityDefinitionAssembler();
+		EntityDefinition entityDef = emAssembler.open(null, spec1, null);
+		assertEquals(1, entityDef.getCustomSpatialPredicatePairCount());
+		assertEquals(true, entityDef.hasSpatialPredicatePair(SPEC1_LATITUDE.asNode(), SPEC1_LONGITUDE.asNode()));
+		
+	}
+	
+	@Test public void EntityHasWKT() {
+		EntityDefinitionAssembler emAssembler = new EntityDefinitionAssembler();
+		EntityDefinition entityDef = emAssembler.open(null, spec1, null);
+		assertEquals(1, entityDef.getCustomWKTPredicateCount());
+		assertEquals(true, entityDef.isWKTPredicate(SPEC1_WKT.asNode()));
+		
+	}
+	
+
+    @Test public void EntityHasMultiplePairsAndWKTs() {
+		EntityDefinitionAssembler emAssembler = new EntityDefinitionAssembler();
+		EntityDefinition entityDef = emAssembler.open(null, spec2, null);
+		assertEquals(2, entityDef.getCustomSpatialPredicatePairCount());
+		assertEquals(true, entityDef.hasSpatialPredicatePair(SPEC2_LATITUDE_1.asNode(), SPEC2_LONGITUDE_1.asNode()));
+		assertEquals(true, entityDef.hasSpatialPredicatePair(SPEC2_LATITUDE_2.asNode(), SPEC2_LONGITUDE_2.asNode()));
+		assertEquals(false, entityDef.hasSpatialPredicatePair(SPEC2_LATITUDE_1.asNode(), SPEC2_LONGITUDE_2.asNode()));
+		assertEquals(false, entityDef.hasSpatialPredicatePair(SPEC2_LATITUDE_2.asNode(), SPEC2_LONGITUDE_1.asNode()));
+		assertEquals(2, entityDef.getCustomWKTPredicateCount());
+		assertEquals(true, entityDef.isWKTPredicate(SPEC2_WKT_1.asNode()));
+		assertEquals(true, entityDef.isWKTPredicate(SPEC2_WKT_2.asNode()));
+		assertEquals(false, entityDef.isWKTPredicate(SPEC1_WKT.asNode()));
+	}
+	
+	@Test(expected=SpatialIndexException.class) public void errorOnNoEntityField() {
+		EntityDefinitionAssembler emAssembler = new EntityDefinitionAssembler();
+		emAssembler.open(null, specNoEntityField, null);
+	}
+	
+	@Test(expected=SpatialIndexException.class) public void errorOnNoGeoField() {
+		EntityDefinitionAssembler emAssembler = new EntityDefinitionAssembler();
+		emAssembler.open(null, specNoGeoField, null);
+	}
+
+	
+	private static final String SPEC0_ENTITY_FIELD = "spec0EntityField";
+	private static final String SPEC0_GEO_FIELD = "spec0GeoField";
+    
+    private static final String SPEC1_ENTITY_FIELD = "spec1EntityField";
+	private static final String SPEC1_GEO_FIELD = "spec1GeoField";
+	private static final Resource SPEC1_LATITUDE = ResourceFactory.createResource(TESTBASE+"latitude");
+	private static final Resource SPEC1_LONGITUDE = ResourceFactory.createResource(TESTBASE+"longitude");
+	private static final Resource SPEC1_WKT = ResourceFactory.createResource(TESTBASE+"wkt");
+	
+	private static final String SPEC2_ENTITY_FIELD = "spec2EntityField";
+	private static final String SPEC2_GEO_FIELD = "spec2DefaultField";
+	private static final Resource SPEC2_LATITUDE_1 = ResourceFactory.createResource(TESTBASE+"latitude_1");
+	private static final Resource SPEC2_LONGITUDE_1 = ResourceFactory.createResource(TESTBASE+"longitude_1");
+	private static final Resource SPEC2_LATITUDE_2 = ResourceFactory.createResource(TESTBASE+"latitude_2");
+	private static final Resource SPEC2_LONGITUDE_2 = ResourceFactory.createResource(TESTBASE+"longitude_2");
+	private static final Resource SPEC2_WKT_1 = ResourceFactory.createResource(TESTBASE+"wkt_1");
+	private static final Resource SPEC2_WKT_2 = ResourceFactory.createResource(TESTBASE+"wkt_2");
+	
+	static {
+		
+		// create a mininal specification
+		Model model = ModelFactory.createDefaultModel();
+		model = ModelFactory.createDefaultModel();
+		spec0 = model.createResource(TESTBASE + "spec0")
+				     .addProperty(SpatialVocab.pEntityField, SPEC0_ENTITY_FIELD)
+				     .addProperty(SpatialVocab.pGeoField, SPEC0_GEO_FIELD)
+				     ;
+		
+		// create a simple pair specification
+		model = ModelFactory.createDefaultModel();
+		spec1 = model.createResource(TESTBASE + "spec1")
+				     .addProperty(SpatialVocab.pEntityField, SPEC1_ENTITY_FIELD)
+				     .addProperty(SpatialVocab.pGeoField, SPEC1_GEO_FIELD)
+				     .addProperty(SpatialVocab.pHasSpatialPredicatePairs,
+				    		      model.createList(
+				    		    		  new RDFNode[] {
+				    		    				model.createResource()
+				    		    				     .addProperty(SpatialVocab.pLatitude, SPEC1_LATITUDE)
+				    		    				     .addProperty(SpatialVocab.pLongitude, SPEC1_LONGITUDE)
+				    		    		  }))
+				     .addProperty(SpatialVocab.pHasWKTPredicates,
+				    		      model.createList(
+				    		    		  new RDFNode[] {
+				    		    				  SPEC1_WKT
+				    		    		  }))
+				     ;
+		
+		// create an entity definition specification with multiple pairs and wkts
+		model = ModelFactory.createDefaultModel();
+		spec2 = model.createResource(TESTBASE + "spec2")
+			     .addProperty(SpatialVocab.pEntityField, SPEC2_ENTITY_FIELD)
+			     .addProperty(SpatialVocab.pGeoField, SPEC2_GEO_FIELD)
+			     .addProperty(SpatialVocab.pHasSpatialPredicatePairs,
+			    		      model.createList(
+			    		    		  new RDFNode[] {
+			    		    				model.createResource()
+			    		    				     .addProperty(SpatialVocab.pLatitude, SPEC2_LATITUDE_1)
+			    		    				     .addProperty(SpatialVocab.pLongitude, SPEC2_LONGITUDE_1),
+			    		    			    model.createResource()
+			    		    				     .addProperty(SpatialVocab.pLatitude, SPEC2_LATITUDE_2)
+			    		    				     .addProperty(SpatialVocab.pLongitude, SPEC2_LONGITUDE_2)
+			    		    		  }))
+			     .addProperty(SpatialVocab.pHasWKTPredicates,
+			    		      model.createList(
+			    		    		  new RDFNode[] {
+			    		    				  SPEC2_WKT_1, SPEC2_WKT_2
+			    		    		  }))
+			     ;
+		// bad assembler spec
+		model = ModelFactory.createDefaultModel();
+		specNoEntityField = 
+				model.createResource(TESTBASE + "specNoEntityField")
+				     .addProperty(SpatialVocab.pGeoField, SPEC0_GEO_FIELD)
+				     ;
+		
+		// bad assembler spec
+		model = ModelFactory.createDefaultModel();
+		specNoGeoField = 
+				model.createResource(TESTBASE + "specNoGeoField")
+				     .addProperty(SpatialVocab.pEntityField, SPEC0_ENTITY_FIELD)
+				     ;
+		
+	}
+}

Propchange: jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/assembler/TestEntityDefinitionAssembler.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/assembler/TestSpatialDatasetAssembler.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/assembler/TestSpatialDatasetAssembler.java?rev=1519358&view=auto
==============================================================================
--- jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/assembler/TestSpatialDatasetAssembler.java (added)
+++ jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/assembler/TestSpatialDatasetAssembler.java Mon Sep  2 06:46:19 2013
@@ -0,0 +1,83 @@
+/*
+ * 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.assembler;
+
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import org.apache.jena.query.spatial.SpatialIndexLucene;
+import org.apache.jena.query.spatial.SpatialQuery;
+import org.junit.Test;
+
+import com.hp.hpl.jena.assembler.Assembler;
+import com.hp.hpl.jena.query.Dataset;
+import com.hp.hpl.jena.rdf.model.Resource;
+import com.hp.hpl.jena.tdb.assembler.AssemblerTDB;
+import com.hp.hpl.jena.vocabulary.RDF;
+
+/**
+ * Test the spatial dataset assembler.
+ */
+public class TestSpatialDatasetAssembler extends AbstractTestSpatialAssembler {
+	
+	private static final String TESTBASE = "http://example.org/testDatasetAssembler/";
+	
+	private static final Resource spec1;
+	private static final Resource noDatasetPropertySpec;
+	private static final Resource noIndexPropertySpec;
+	
+	@Test public void testSimpleDatasetAssembler() {
+		Dataset dataset = (Dataset) Assembler.general.open(spec1);
+		assertTrue(dataset.getContext().get(SpatialQuery.spatialIndex) instanceof SpatialIndexLucene);
+	}
+	
+	@Test public void testErrorOnNoDataset() {
+		try {
+		    Assembler.general.open(noDatasetPropertySpec);
+		    fail("should have thrown an exception");
+		} catch (Exception e) {}
+	}
+	
+	@Test public void testErrorOnNoIndex() {
+		try {
+		    Assembler.general.open(noIndexPropertySpec);
+		    fail("should have thrown an exception");
+		} catch (Exception e) {}
+	}
+	
+	static {
+		SpatialAssembler.init();
+		AssemblerTDB.init();
+		spec1 =
+				model.createResource(TESTBASE + "spec1")
+				     .addProperty(RDF.type, SpatialVocab.spatialDataset)
+				     .addProperty(SpatialVocab.pDataset, SIMPLE_DATASET_SPEC)
+				     .addProperty(SpatialVocab.pIndex, SIMPLE_LUCENE_INDEX_SPEC);
+		noDatasetPropertySpec =
+				model.createResource(TESTBASE + "noDatasetPropertySpec")
+				     .addProperty(RDF.type, SpatialVocab.spatialDataset)
+				     .addProperty(SpatialVocab.pIndex, SIMPLE_LUCENE_INDEX_SPEC);
+		noIndexPropertySpec =
+				model.createResource(TESTBASE + "noIndexPropertySpec")
+				     .addProperty(RDF.type, SpatialVocab.spatialDataset)
+				     .addProperty(SpatialVocab.pDataset, SIMPLE_DATASET_SPEC);
+		
+	}
+
+}

Propchange: jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/assembler/TestSpatialDatasetAssembler.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/assembler/TestSpatialIndexLuceneAssembler.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/assembler/TestSpatialIndexLuceneAssembler.java?rev=1519358&view=auto
==============================================================================
--- jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/assembler/TestSpatialIndexLuceneAssembler.java (added)
+++ jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/assembler/TestSpatialIndexLuceneAssembler.java Mon Sep  2 06:46:19 2013
@@ -0,0 +1,41 @@
+/*
+ * 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.assembler;
+
+import static org.junit.Assert.assertEquals;
+
+import org.apache.jena.query.spatial.SpatialIndexLucene;
+import org.junit.Test;
+
+import com.hp.hpl.jena.assembler.Assembler;
+import com.hp.hpl.jena.vocabulary.RDFS;
+
+public class TestSpatialIndexLuceneAssembler extends AbstractTestSpatialAssembler {
+	
+	@Test public void testIndexHasEntityMap() {
+		SpatialIndexLucene indexLucene = (SpatialIndexLucene) Assembler.general.open(SIMPLE_LUCENE_INDEX_SPEC);
+		assertEquals("uri", indexLucene.getDocDef().getEntityField());
+		assertEquals("geo", indexLucene.getDocDef().getGeoField());	
+	}
+	
+	static {
+		SpatialAssembler.init();
+	}
+
+}

Propchange: jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/assembler/TestSpatialIndexLuceneAssembler.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/assembler/TestSpatialIndexSolrAssembler.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/assembler/TestSpatialIndexSolrAssembler.java?rev=1519358&view=auto
==============================================================================
--- jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/assembler/TestSpatialIndexSolrAssembler.java (added)
+++ jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/assembler/TestSpatialIndexSolrAssembler.java Mon Sep  2 06:46:19 2013
@@ -0,0 +1,40 @@
+/*
+ * 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.assembler;
+
+import static org.junit.Assert.assertEquals;
+
+import org.apache.jena.query.spatial.SpatialIndexSolr;
+import org.junit.Test;
+
+import com.hp.hpl.jena.assembler.Assembler;
+
+public class TestSpatialIndexSolrAssembler extends AbstractTestSpatialAssembler {
+	
+	@Test public void testIndexHasEntityMap() {
+		SpatialIndexSolr indexSolr = (SpatialIndexSolr) Assembler.general.open(SIMPLE_SOLR_INDEX_SPEC);
+		assertEquals("uri", indexSolr.getDocDef().getEntityField());
+		assertEquals("geo", indexSolr.getDocDef().getGeoField());	
+	}
+	
+	static {
+		SpatialAssembler.init();
+	}
+
+}

Propchange: jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/assembler/TestSpatialIndexSolrAssembler.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/pfunction/AbstractTestEastPF.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/pfunction/AbstractTestEastPF.java?rev=1519358&view=auto
==============================================================================
--- jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/pfunction/AbstractTestEastPF.java (added)
+++ jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/pfunction/AbstractTestEastPF.java Mon Sep  2 06:46:19 2013
@@ -0,0 +1,142 @@
+/*
+ * 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.pfunction;
+
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.apache.jena.atlas.lib.StrUtils;
+import org.apache.jena.query.spatial.AbstractTestDatasetWithSpatialIndex;
+import org.junit.Test;
+
+public abstract class AbstractTestEastPF extends AbstractTestDatasetWithSpatialIndex {
+
+	@Test
+	public void testOneSimpleResult() {
+		final String turtle = StrUtils.strjoinNL(TURTLE_PROLOG, "<"
+				+ RESOURCE_BASE + "testOneSimpleResult>",
+				"   geo:lat '51.885'^^xsd:float ;",
+				"   geo:long '0.235'^^xsd:float ", ".");
+		String queryString = StrUtils.strjoinNL(QUERY_PROLOG, "SELECT ?s",
+				"WHERE {",
+				" ?s spatial:east (51.3000 0.0000 -1) .", "}");
+		Set<String> expectedURIs = (new HashSet<String>());
+		expectedURIs
+				.addAll(Arrays
+						.asList((new String[] { "http://example.org/data/resource/testOneSimpleResult" })));
+		doTestSearch(turtle, queryString, expectedURIs);
+	}
+
+	@Test
+	public void testMultipleResults() {
+		String label = "testMultipleResults";
+		final String turtle = StrUtils.strjoinNL(TURTLE_PROLOG, "<"
+				+ RESOURCE_BASE + label + "1>",
+				"   geo:lat '51.885'^^xsd:float ;",
+				"   geo:long '0.234'^^xsd:float ", ".",
+				"<"	+ RESOURCE_BASE + label + "2>",
+				"   geo:lat '51.1234'^^xsd:float ;",
+				"   geo:long '1.234'^^xsd:float ;", ".");
+
+		String queryString = StrUtils.strjoinNL(QUERY_PROLOG, "SELECT ?s",
+				"WHERE {",
+				" ?s spatial:east (51.3000 0.0000 -1) .", "}");
+		Set<String> expectedURIs = (new HashSet<String>());
+		expectedURIs.addAll(Arrays.asList((new String[] {
+				"http://example.org/data/resource/" + label + "1",
+				"http://example.org/data/resource/" + label + "2" })));
+		doTestSearch(turtle, queryString, expectedURIs);
+	}
+	
+	@Test
+	public void testArgumentListSize() {
+		final String turtle = StrUtils.strjoinNL(TURTLE_PROLOG, "<"
+				+ RESOURCE_BASE + "testArgumentListSize>",
+				"   geo:lat '51.3827'^^xsd:float ;",
+				"   geo:long '-2.71909'^^xsd:float ", ".");
+		String queryString = StrUtils.strjoinNL(QUERY_PROLOG, "SELECT ?s",
+				"WHERE {",
+				" ?s spatial:east (51.3000) .", "}");
+		doTestSearchThrowException(turtle, queryString);
+		
+		queryString = StrUtils.strjoinNL(QUERY_PROLOG, "SELECT ?s",
+				"WHERE {",
+				" ?s spatial:east (51.3000 0.0000 -1 'another argument') .", "}");
+		doTestSearchThrowException(turtle, queryString);
+	}
+	
+  @Test
+	public void testSearchLimitsResults() {
+		String label = "testSearchLimitsResults";
+		final String turtle = StrUtils.strjoinNL(TURTLE_PROLOG, "<"
+				+ RESOURCE_BASE + label + "1>",
+				"   geo:lat '51.885'^^xsd:float ;",
+				"   geo:long '0.234'^^xsd:float ", ".",
+				"<"	+ RESOURCE_BASE + label + "2>",
+				"   geo:lat '51.1234'^^xsd:float ;",
+				"   geo:long '1.234'^^xsd:float ;", ".");
+		String queryString = StrUtils.strjoinNL(QUERY_PROLOG, "SELECT ?s",
+				"WHERE {",
+				" ?s spatial:north (51.3000 0.0000 1) .", "}");
+		Set<String> expectedURIs = (new HashSet<String>());
+		expectedURIs.addAll( Arrays.asList((
+				new String[]
+				{
+					    "http://example.org/data/resource/" + label + "1",
+					    "http://example.org/data/resource/" + label + "2"
+				}
+		)));
+		doTestSearch(turtle, queryString, expectedURIs, 1);
+		
+		
+		queryString = StrUtils.strjoinNL(QUERY_PROLOG, "SELECT ?s",
+				"WHERE {",
+				" ?s spatial:east (51.3000 0.0000 -1) .", "}");
+		expectedURIs = (new HashSet<String>());
+		expectedURIs.addAll( Arrays.asList((
+				new String[]
+				{
+					    "http://example.org/data/resource/" + label + "1",
+					    "http://example.org/data/resource/" + label + "2"
+				}
+		)));
+		doTestSearch(turtle, queryString, expectedURIs);
+		
+		queryString = StrUtils.strjoinNL(QUERY_PROLOG, "SELECT ?s",
+				"WHERE {",
+				" ?s spatial:east (51.3000 0.0000 3) .", "}");
+		expectedURIs = (new HashSet<String>());
+		expectedURIs.addAll( Arrays.asList((
+				new String[]
+				{
+					    "http://example.org/data/resource/" + label + "1",
+					    "http://example.org/data/resource/" + label + "2"
+				}
+		)));
+		doTestSearch(turtle, queryString, expectedURIs);
+		
+		queryString = StrUtils.strjoinNL(QUERY_PROLOG, "SELECT ?s",
+				"WHERE {",
+				" ?s spatial:east (51.3000 0.0000 'something not an integer') .", "}");
+		expectedURIs = (new HashSet<String>());
+		doTestSearch(turtle, queryString, expectedURIs);
+	}
+  
+}

Propchange: jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/pfunction/AbstractTestEastPF.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/pfunction/AbstractTestIntersectsBoxPF.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/pfunction/AbstractTestIntersectsBoxPF.java?rev=1519358&view=auto
==============================================================================
--- jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/pfunction/AbstractTestIntersectsBoxPF.java (added)
+++ jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/pfunction/AbstractTestIntersectsBoxPF.java Mon Sep  2 06:46:19 2013
@@ -0,0 +1,142 @@
+/*
+ * 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.pfunction;
+
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.apache.jena.atlas.lib.StrUtils;
+import org.apache.jena.query.spatial.AbstractTestDatasetWithSpatialIndex;
+import org.junit.Test;
+
+public abstract class AbstractTestIntersectsBoxPF extends AbstractTestDatasetWithSpatialIndex {
+
+	@Test
+	public void testOneSimpleResult() {
+		final String turtle = StrUtils.strjoinNL(TURTLE_PROLOG, "<"
+				+ RESOURCE_BASE + "testOneSimpleResult>",
+				"   geo:lat '51.3827'^^xsd:float ;",
+				"   geo:long '-2.71909'^^xsd:float ", ".");
+		String queryString = StrUtils.strjoinNL(QUERY_PROLOG, "SELECT ?s",
+				"WHERE {",
+				" ?s spatial:intersectBox (51.1000 -4.0000 51.4000 0.0000 -1)  .", "}");
+		Set<String> expectedURIs = (new HashSet<String>());
+		expectedURIs
+				.addAll(Arrays
+						.asList((new String[] { "http://example.org/data/resource/testOneSimpleResult" })));
+		doTestSearch(turtle, queryString, expectedURIs);
+	}
+
+	@Test
+	public void testMultipleResults() {
+		String label = "testMultipleResults";
+		final String turtle = StrUtils.strjoinNL(TURTLE_PROLOG, "<"
+				+ RESOURCE_BASE + label + "1>",
+				"   geo:lat '51.3827'^^xsd:float ;",
+				"   geo:long '-2.71909'^^xsd:float ;" , ".",
+				"<"	+ RESOURCE_BASE + label + "2>",
+				"   geo:lat '51.3967'^^xsd:float ;",
+				"   geo:long '-3.34333'^^xsd:float ;", ".");
+
+		String queryString = StrUtils.strjoinNL(QUERY_PROLOG, "SELECT ?s",
+				"WHERE {",
+				" ?s spatial:intersectBox (51.1000 -4.0000 51.4000 0.0000)  .", "}");
+		Set<String> expectedURIs = (new HashSet<String>());
+		expectedURIs.addAll(Arrays.asList((new String[] {
+				"http://example.org/data/resource/" + label + "1",
+				"http://example.org/data/resource/" + label + "2" })));
+		doTestSearch(turtle, queryString, expectedURIs);
+	}
+	
+	@Test
+	public void testArgumentListSize() {
+		final String turtle = StrUtils.strjoinNL(TURTLE_PROLOG, "<"
+				+ RESOURCE_BASE + "testArgumentListSize>",
+				"   geo:lat '51.3827'^^xsd:float ;",
+				"   geo:long '-2.71909'^^xsd:float ", ".");
+		String queryString = StrUtils.strjoinNL(QUERY_PROLOG, "SELECT ?s",
+				"WHERE {",
+				" ?s spatial:intersectBox (51.1000 -4.0000 -1) .", "}");
+		doTestSearchThrowException(turtle, queryString);
+		
+		queryString = StrUtils.strjoinNL(QUERY_PROLOG, "SELECT ?s",
+				"WHERE {",
+				" ?s spatial:intersectBox (51.1000 -4.0000 51.4000 0.0000 -1 'some other argument') .", "}");
+		doTestSearchThrowException(turtle, queryString);
+	}
+	
+  @Test
+	public void testSearchLimitsResults() {
+		String label = "testSearchLimitsResults";
+		final String turtle = StrUtils.strjoinNL(TURTLE_PROLOG, "<"
+				+ RESOURCE_BASE + label + "1>",
+				"   geo:lat '51.3827'^^xsd:float ;",
+				"   geo:long '-2.71909'^^xsd:float ;" , ".",
+				"<"	+ RESOURCE_BASE + label + "2>",
+				"   geo:lat '51.3967'^^xsd:float ;",
+				"   geo:long '-3.34333'^^xsd:float ;", ".");
+		String queryString = StrUtils.strjoinNL(QUERY_PROLOG, "SELECT ?s",
+				"WHERE {",
+				" ?s spatial:intersectBox (51.1000 -4.0000 51.4000 0.0000 1)   .", "}");
+		Set<String> expectedURIs = (new HashSet<String>());
+		expectedURIs.addAll( Arrays.asList((
+				new String[]
+				{
+					    "http://example.org/data/resource/" + label + "1",
+					    "http://example.org/data/resource/" + label + "2"
+				}
+		)));
+		doTestSearch(turtle, queryString, expectedURIs, 1);
+		
+		
+		queryString = StrUtils.strjoinNL(QUERY_PROLOG, "SELECT ?s",
+				"WHERE {",
+				" ?s spatial:intersectBox (51.1000 -4.0000 51.4000 0.0000 -1)   .", "}");
+		expectedURIs = (new HashSet<String>());
+		expectedURIs.addAll( Arrays.asList((
+				new String[]
+				{
+					    "http://example.org/data/resource/" + label + "1",
+					    "http://example.org/data/resource/" + label + "2"
+				}
+		)));
+		doTestSearch(turtle, queryString, expectedURIs);
+		
+		queryString = StrUtils.strjoinNL(QUERY_PROLOG, "SELECT ?s",
+				"WHERE {",
+				" ?s spatial:intersectBox (51.1000 -4.0000 51.4000 0.0000 3)   .", "}");
+		expectedURIs = (new HashSet<String>());
+		expectedURIs.addAll( Arrays.asList((
+				new String[]
+				{
+					    "http://example.org/data/resource/" + label + "1",
+					    "http://example.org/data/resource/" + label + "2"
+				}
+		)));
+		doTestSearch(turtle, queryString, expectedURIs);
+		
+		queryString = StrUtils.strjoinNL(QUERY_PROLOG, "SELECT ?s",
+				"WHERE {",
+				" ?s spatial:withinBox (51.1000 -4.0000 51.4000 0.0000 'something not an integer')  .", "}");
+		expectedURIs = (new HashSet<String>());
+		doTestSearch(turtle, queryString, expectedURIs);
+	}
+
+}

Propchange: jena/trunk/jena-spatial/src/test/java/org/apache/jena/query/spatial/pfunction/AbstractTestIntersectsBoxPF.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain