You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by an...@apache.org on 2016/05/14 16:10:28 UTC

[04/41] jena git commit: Fix line-ending changes.

http://git-wip-us.apache.org/repos/asf/jena/blob/3d70d735/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/DirectionWithPointPFBase.java
----------------------------------------------------------------------
diff --git a/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/DirectionWithPointPFBase.java b/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/DirectionWithPointPFBase.java
index 29bb81f..2f49963 100644
--- a/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/DirectionWithPointPFBase.java
+++ b/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/DirectionWithPointPFBase.java
@@ -1,146 +1,146 @@
-/*
- * 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.List;
-
-import org.apache.jena.datatypes.xsd.XSDDatatype ;
-import org.apache.jena.graph.Node ;
-import org.apache.jena.graph.impl.LiteralLabel ;
-import org.apache.jena.query.QueryBuildException ;
-import org.apache.jena.query.spatial.SpatialIndexException;
-import org.apache.jena.query.spatial.SpatialValueUtil;
-import org.apache.jena.sparql.engine.ExecutionContext ;
-import org.apache.jena.sparql.pfunction.PropFuncArg ;
-import org.apache.jena.sparql.util.NodeFactoryExtra ;
-import org.apache.lucene.spatial.query.SpatialOperation;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public abstract class DirectionWithPointPFBase extends SpatialOperationPFBase {
-	
-	private static Logger log = LoggerFactory.getLogger(DirectionWithPointPFBase.class);
-
-	public DirectionWithPointPFBase() {
-		
-	}
-
-	@Override
-	public void build(PropFuncArg argSubject, Node predicate,
-			PropFuncArg argObject, ExecutionContext execCxt) {
-		super.build(argSubject, predicate, argObject, execCxt);
-		
-		if (!argSubject.isNode())
-			throw new QueryBuildException("Subject is not a single node: "
-					+ argSubject);
-
-		if (argObject.isList()) {
-			List<Node> list = argObject.getArgList();
-			if (list.size() < 2)
-				throw new QueryBuildException("Not enough arguments in list");
-
-			if (list.size() > 3)
-				throw new QueryBuildException("Too many arguments in list : "
-						+ list);
-		}
-	}
-	
-
-	/** Deconstruct the node or list object argument and make a SpatialMatch */
-	@Override
-    protected SpatialMatch objectToStruct(PropFuncArg argObject) {
-		if (argObject.isNode()) {
-			log.warn("Object not a List: " + argObject);
-			return null;
-		}
-
-		List<Node> list = argObject.getArgList();
-
-		if (list.size() < 2 || list.size() > 3)
-			throw new SpatialIndexException("Change in object list size");
-
-		int idx = 0;
-
-		Node x = list.get(idx);
-		if (!x.isLiteral()) {
-			log.warn("Latitude is not a literal " + list);
-			return null;
-		}
-		if (!SpatialValueUtil.isDecimal(x)) {
-			log.warn("Latitude is not a decimal " + list);
-			return null;
-		}
-		Double latitude = Double.parseDouble(x.getLiteralLexicalForm());
-
-		idx++;
-
-		x = list.get(idx);
-		if (!x.isLiteral()) {
-			log.warn("Longitude is not a literal " + list);
-			return null;
-		}
-		if (!SpatialValueUtil.isDecimal(x)) {
-			log.warn("Longitude is not a decimal " + list);
-			return null;
-		}
-		Double longitude = Double.parseDouble(x.getLiteralLexicalForm());
-
-		idx++;
-
-		int limit =-1;
-		
-		if (idx < list.size()) {
-			x = list.get(idx);
-
-			if (!x.isLiteral()) {
-				log.warn("Limit is not a literal " + list);
-				return null;
-			}
-
-			LiteralLabel lit = x.getLiteral();
-
-			if (!XSDDatatype.XSDinteger.isValidLiteral(lit)) {
-				log.warn("Limit is not an integer " + list);
-				return null;
-			}
-
-			int v = NodeFactoryExtra.nodeToInt(x);
-			limit = (v < 0) ? -1 : v;
-
-			idx++;
-			if (idx < list.size()) {
-				log.warn("Limit is not the last parameter " + list);
-				return null;
-			}
-		}
-		
-		SpatialMatch match = this.getSpatialMatch(latitude, longitude, limit);
-		if (log.isDebugEnabled())
-			log.debug("Trying SpatialMatch: " + match.toString());
-		return match;
-	}
-	
-	protected abstract SpatialMatch getSpatialMatch(Double latitude, Double longitude, int limit);
-
-	@Override
-	protected SpatialOperation getSpatialOperation() {
-		return SpatialOperation.IsWithin;
-	}
-
-}
+/*
+ * 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.List;
+
+import org.apache.jena.datatypes.xsd.XSDDatatype ;
+import org.apache.jena.graph.Node ;
+import org.apache.jena.graph.impl.LiteralLabel ;
+import org.apache.jena.query.QueryBuildException ;
+import org.apache.jena.query.spatial.SpatialIndexException;
+import org.apache.jena.query.spatial.SpatialValueUtil;
+import org.apache.jena.sparql.engine.ExecutionContext ;
+import org.apache.jena.sparql.pfunction.PropFuncArg ;
+import org.apache.jena.sparql.util.NodeFactoryExtra ;
+import org.apache.lucene.spatial.query.SpatialOperation;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public abstract class DirectionWithPointPFBase extends SpatialOperationPFBase {
+	
+	private static Logger log = LoggerFactory.getLogger(DirectionWithPointPFBase.class);
+
+	public DirectionWithPointPFBase() {
+		
+	}
+
+	@Override
+	public void build(PropFuncArg argSubject, Node predicate,
+			PropFuncArg argObject, ExecutionContext execCxt) {
+		super.build(argSubject, predicate, argObject, execCxt);
+		
+		if (!argSubject.isNode())
+			throw new QueryBuildException("Subject is not a single node: "
+					+ argSubject);
+
+		if (argObject.isList()) {
+			List<Node> list = argObject.getArgList();
+			if (list.size() < 2)
+				throw new QueryBuildException("Not enough arguments in list");
+
+			if (list.size() > 3)
+				throw new QueryBuildException("Too many arguments in list : "
+						+ list);
+		}
+	}
+	
+
+	/** Deconstruct the node or list object argument and make a SpatialMatch */
+	@Override
+    protected SpatialMatch objectToStruct(PropFuncArg argObject) {
+		if (argObject.isNode()) {
+			log.warn("Object not a List: " + argObject);
+			return null;
+		}
+
+		List<Node> list = argObject.getArgList();
+
+		if (list.size() < 2 || list.size() > 3)
+			throw new SpatialIndexException("Change in object list size");
+
+		int idx = 0;
+
+		Node x = list.get(idx);
+		if (!x.isLiteral()) {
+			log.warn("Latitude is not a literal " + list);
+			return null;
+		}
+		if (!SpatialValueUtil.isDecimal(x)) {
+			log.warn("Latitude is not a decimal " + list);
+			return null;
+		}
+		Double latitude = Double.parseDouble(x.getLiteralLexicalForm());
+
+		idx++;
+
+		x = list.get(idx);
+		if (!x.isLiteral()) {
+			log.warn("Longitude is not a literal " + list);
+			return null;
+		}
+		if (!SpatialValueUtil.isDecimal(x)) {
+			log.warn("Longitude is not a decimal " + list);
+			return null;
+		}
+		Double longitude = Double.parseDouble(x.getLiteralLexicalForm());
+
+		idx++;
+
+		int limit =-1;
+		
+		if (idx < list.size()) {
+			x = list.get(idx);
+
+			if (!x.isLiteral()) {
+				log.warn("Limit is not a literal " + list);
+				return null;
+			}
+
+			LiteralLabel lit = x.getLiteral();
+
+			if (!XSDDatatype.XSDinteger.isValidLiteral(lit)) {
+				log.warn("Limit is not an integer " + list);
+				return null;
+			}
+
+			int v = NodeFactoryExtra.nodeToInt(x);
+			limit = (v < 0) ? -1 : v;
+
+			idx++;
+			if (idx < list.size()) {
+				log.warn("Limit is not the last parameter " + list);
+				return null;
+			}
+		}
+		
+		SpatialMatch match = this.getSpatialMatch(latitude, longitude, limit);
+		if (log.isDebugEnabled())
+			log.debug("Trying SpatialMatch: " + match.toString());
+		return match;
+	}
+	
+	protected abstract SpatialMatch getSpatialMatch(Double latitude, Double longitude, int limit);
+
+	@Override
+	protected SpatialOperation getSpatialOperation() {
+		return SpatialOperation.IsWithin;
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/3d70d735/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/SpatialMatch.java
----------------------------------------------------------------------
diff --git a/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/SpatialMatch.java b/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/SpatialMatch.java
index 0d8275c..10832ed 100644
--- a/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/SpatialMatch.java
+++ b/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/SpatialMatch.java
@@ -1,67 +1,67 @@
-/*
- * 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 org.apache.jena.query.spatial.DistanceUnitsUtils;
-import org.apache.jena.query.spatial.SpatialQuery;
-import org.apache.lucene.spatial.query.SpatialOperation;
-
-import com.spatial4j.core.shape.Shape;
-
-public class SpatialMatch {
-
-	private final Shape shape;
-	private final int limit;
-	private final SpatialOperation operation;
-
-	public SpatialMatch(Double latitude, Double longitude, Double radius,
-			String units, int limit, SpatialOperation operation) {
-
-		double degrees = DistanceUnitsUtils.dist2Degrees(radius, units);
-		this.shape = SpatialQuery.ctx.makeCircle(longitude, latitude, degrees);
-		//System.out.println( SpatialQuery.ctx.toString(shape) );
-		this.limit = limit;
-		this.operation = operation;
-	}
-
-	public SpatialMatch(Double latitude1, Double longitude1, Double latitude2,
-			Double longitude2, int limit, SpatialOperation operation) {
-		this.shape = SpatialQuery.ctx.makeRectangle(longitude1, longitude2, latitude1, latitude2);
-		this.limit = limit;
-		this.operation = operation;
-	}
-
-	public Shape getShape() {
-		return shape;
-	}
-
-	public int getLimit() {
-		return limit;
-	}
-
-	public SpatialOperation getSpatialOperation() {
-		return operation;
-	}
-
-	@Override
-	public String toString() {
-		return "(" + shape + " " + limit + " " + operation + ")";
-	}
-
-}
+/*
+ * 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 org.apache.jena.query.spatial.DistanceUnitsUtils;
+import org.apache.jena.query.spatial.SpatialQuery;
+import org.apache.lucene.spatial.query.SpatialOperation;
+
+import com.spatial4j.core.shape.Shape;
+
+public class SpatialMatch {
+
+	private final Shape shape;
+	private final int limit;
+	private final SpatialOperation operation;
+
+	public SpatialMatch(Double latitude, Double longitude, Double radius,
+			String units, int limit, SpatialOperation operation) {
+
+		double degrees = DistanceUnitsUtils.dist2Degrees(radius, units);
+		this.shape = SpatialQuery.ctx.makeCircle(longitude, latitude, degrees);
+		//System.out.println( SpatialQuery.ctx.toString(shape) );
+		this.limit = limit;
+		this.operation = operation;
+	}
+
+	public SpatialMatch(Double latitude1, Double longitude1, Double latitude2,
+			Double longitude2, int limit, SpatialOperation operation) {
+		this.shape = SpatialQuery.ctx.makeRectangle(longitude1, longitude2, latitude1, latitude2);
+		this.limit = limit;
+		this.operation = operation;
+	}
+
+	public Shape getShape() {
+		return shape;
+	}
+
+	public int getLimit() {
+		return limit;
+	}
+
+	public SpatialOperation getSpatialOperation() {
+		return operation;
+	}
+
+	@Override
+	public String toString() {
+		return "(" + shape + " " + limit + " " + operation + ")";
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/3d70d735/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/SpatialOperationPFBase.java
----------------------------------------------------------------------
diff --git a/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/SpatialOperationPFBase.java b/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/SpatialOperationPFBase.java
index 82d7b4f..2f8b638 100644
--- a/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/SpatialOperationPFBase.java
+++ b/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/SpatialOperationPFBase.java
@@ -1,163 +1,163 @@
-/*
- * 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.List ;
-
-import org.apache.jena.atlas.iterator.Iter ;
-import org.apache.jena.atlas.lib.InternalErrorException ;
-import org.apache.jena.atlas.logging.Log ;
-import org.apache.jena.graph.Node ;
-import org.apache.jena.query.spatial.DatasetGraphSpatial ;
-import org.apache.jena.query.spatial.SpatialIndex ;
-import org.apache.jena.query.spatial.SpatialQuery ;
-import org.apache.jena.sparql.core.DatasetGraph ;
-import org.apache.jena.sparql.core.Substitute ;
-import org.apache.jena.sparql.core.Var ;
-import org.apache.jena.sparql.engine.ExecutionContext ;
-import org.apache.jena.sparql.engine.QueryIterator ;
-import org.apache.jena.sparql.engine.binding.Binding ;
-import org.apache.jena.sparql.engine.iterator.QueryIterExtendByVar ;
-import org.apache.jena.sparql.engine.iterator.QueryIterSlice ;
-import org.apache.jena.sparql.pfunction.PropFuncArg ;
-import org.apache.jena.sparql.pfunction.PropertyFunctionBase ;
-import org.apache.jena.sparql.util.IterLib ;
-import org.apache.lucene.spatial.query.SpatialOperation ;
-import org.slf4j.Logger ;
-import org.slf4j.LoggerFactory ;
-
-public abstract class SpatialOperationPFBase extends PropertyFunctionBase {
-
-	private static Logger log = LoggerFactory.getLogger(SpatialOperationPFBase.class);
-
-	protected SpatialIndex server = null;
-	private boolean warningIssued = false;
-
-	public SpatialOperationPFBase() {
-	}
-	
-	@Override
-	public void build(PropFuncArg argSubject, Node predicate,
-			PropFuncArg argObject, ExecutionContext execCxt) {
-		super.build(argSubject, predicate, argObject, execCxt);
-		DatasetGraph dsg = execCxt.getDataset();
-		server = chooseTextIndex(dsg);
-	}
-
-	protected SpatialIndex chooseTextIndex(DatasetGraph dsg) {
-		Object obj = dsg.getContext().get(SpatialQuery.spatialIndex);
-
-		if (obj != null) {
-			try {
-				return (SpatialIndex) obj;
-			} catch (ClassCastException ex) {
-				Log.warn(SpatialOperationWithCircleBase.class, "Context setting '"
-						+ SpatialQuery.spatialIndex + "'is not a SpatialIndex");
-			}
-		}
-
-		if (dsg instanceof DatasetGraphSpatial) {
-			DatasetGraphSpatial x = (DatasetGraphSpatial) dsg;
-			return x.getSpatialIndex();
-		}
-		Log.warn(
-				SpatialOperationWithCircleBase.class,
-				"Failed to find the spatial index : tried context and as a spatial-enabled dataset");
-		return null;
-	}
-
-	@Override
-	public QueryIterator exec(Binding binding, PropFuncArg argSubject,
-			Node predicate, PropFuncArg argObject, ExecutionContext execCxt) {
-		if (server == null) {
-			if (!warningIssued) {
-				Log.warn(getClass(), "No spatial index - no spatial search performed");
-				warningIssued = true;
-			}
-			// Not a text dataset - no-op
-			return IterLib.result(binding, execCxt);
-		}
-
-		DatasetGraph dsg = execCxt.getDataset();
-		
-        argSubject = Substitute.substitute(argSubject, binding) ;
-        argObject = Substitute.substitute(argObject, binding) ;
-		
-		if (!argSubject.isNode())
-			throw new InternalErrorException("Subject is not a node (it was earlier!)");
-
-		Node s = argSubject.getArg();
-
-		if (s.isLiteral())
-			// Does not match
-			return IterLib.noResults(execCxt);
-
-		SpatialMatch match = objectToStruct(argObject);
-
-		if (match == null) {
-			// can't match
-			return IterLib.noResults(execCxt);
-		}
-
-		// ----
-
-		QueryIterator qIter = (Var.isVar(s)) ? variableSubject(binding, s,
-				match, execCxt) : concreteSubject(binding, s, match, execCxt);
-		if (match.getLimit() >= 0)
-			qIter = new QueryIterSlice(qIter, 0, match.getLimit(), execCxt);
-		return qIter;
-	}
-
-	private QueryIterator variableSubject(Binding binding, Node s,
-			SpatialMatch match, ExecutionContext execCxt) {
-
-		Var v = Var.alloc(s);
-		List<Node> r = query(match);
-		// Make distinct. Note interaction with limit is imperfect
-		r = Iter.iter(r).distinct().toList();
-		QueryIterator qIter = new QueryIterExtendByVar(binding, v,
-				r.iterator(), execCxt);
-		return qIter;
-	}
-
-	private QueryIterator concreteSubject(Binding binding, Node s,
-			SpatialMatch match, ExecutionContext execCxt) {
-		if (!s.isURI()) {
-			log.warn("Subject not a URI: " + s);
-			return IterLib.noResults(execCxt);
-		}
-
-		List<Node> x = query(match);
-		if (x == null || !x.contains(s))
-			return IterLib.noResults(execCxt);
-		else
-			return IterLib.result(binding, execCxt);
-	}
-
-	private List<Node> query(SpatialMatch match) {
-
-		return server.query(match.getShape(), match.getLimit(),
-				match.getSpatialOperation());
-	}
-
-	/** Deconstruct the node or list object argument and make a SpatialMatch */
-	protected abstract SpatialMatch objectToStruct(PropFuncArg argObject);
-	
-	protected abstract SpatialOperation getSpatialOperation();
-}
+/*
+ * 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.List ;
+
+import org.apache.jena.atlas.iterator.Iter ;
+import org.apache.jena.atlas.lib.InternalErrorException ;
+import org.apache.jena.atlas.logging.Log ;
+import org.apache.jena.graph.Node ;
+import org.apache.jena.query.spatial.DatasetGraphSpatial ;
+import org.apache.jena.query.spatial.SpatialIndex ;
+import org.apache.jena.query.spatial.SpatialQuery ;
+import org.apache.jena.sparql.core.DatasetGraph ;
+import org.apache.jena.sparql.core.Substitute ;
+import org.apache.jena.sparql.core.Var ;
+import org.apache.jena.sparql.engine.ExecutionContext ;
+import org.apache.jena.sparql.engine.QueryIterator ;
+import org.apache.jena.sparql.engine.binding.Binding ;
+import org.apache.jena.sparql.engine.iterator.QueryIterExtendByVar ;
+import org.apache.jena.sparql.engine.iterator.QueryIterSlice ;
+import org.apache.jena.sparql.pfunction.PropFuncArg ;
+import org.apache.jena.sparql.pfunction.PropertyFunctionBase ;
+import org.apache.jena.sparql.util.IterLib ;
+import org.apache.lucene.spatial.query.SpatialOperation ;
+import org.slf4j.Logger ;
+import org.slf4j.LoggerFactory ;
+
+public abstract class SpatialOperationPFBase extends PropertyFunctionBase {
+
+	private static Logger log = LoggerFactory.getLogger(SpatialOperationPFBase.class);
+
+	protected SpatialIndex server = null;
+	private boolean warningIssued = false;
+
+	public SpatialOperationPFBase() {
+	}
+	
+	@Override
+	public void build(PropFuncArg argSubject, Node predicate,
+			PropFuncArg argObject, ExecutionContext execCxt) {
+		super.build(argSubject, predicate, argObject, execCxt);
+		DatasetGraph dsg = execCxt.getDataset();
+		server = chooseTextIndex(dsg);
+	}
+
+	protected SpatialIndex chooseTextIndex(DatasetGraph dsg) {
+		Object obj = dsg.getContext().get(SpatialQuery.spatialIndex);
+
+		if (obj != null) {
+			try {
+				return (SpatialIndex) obj;
+			} catch (ClassCastException ex) {
+				Log.warn(SpatialOperationWithCircleBase.class, "Context setting '"
+						+ SpatialQuery.spatialIndex + "'is not a SpatialIndex");
+			}
+		}
+
+		if (dsg instanceof DatasetGraphSpatial) {
+			DatasetGraphSpatial x = (DatasetGraphSpatial) dsg;
+			return x.getSpatialIndex();
+		}
+		Log.warn(
+				SpatialOperationWithCircleBase.class,
+				"Failed to find the spatial index : tried context and as a spatial-enabled dataset");
+		return null;
+	}
+
+	@Override
+	public QueryIterator exec(Binding binding, PropFuncArg argSubject,
+			Node predicate, PropFuncArg argObject, ExecutionContext execCxt) {
+		if (server == null) {
+			if (!warningIssued) {
+				Log.warn(getClass(), "No spatial index - no spatial search performed");
+				warningIssued = true;
+			}
+			// Not a text dataset - no-op
+			return IterLib.result(binding, execCxt);
+		}
+
+		DatasetGraph dsg = execCxt.getDataset();
+		
+        argSubject = Substitute.substitute(argSubject, binding) ;
+        argObject = Substitute.substitute(argObject, binding) ;
+		
+		if (!argSubject.isNode())
+			throw new InternalErrorException("Subject is not a node (it was earlier!)");
+
+		Node s = argSubject.getArg();
+
+		if (s.isLiteral())
+			// Does not match
+			return IterLib.noResults(execCxt);
+
+		SpatialMatch match = objectToStruct(argObject);
+
+		if (match == null) {
+			// can't match
+			return IterLib.noResults(execCxt);
+		}
+
+		// ----
+
+		QueryIterator qIter = (Var.isVar(s)) ? variableSubject(binding, s,
+				match, execCxt) : concreteSubject(binding, s, match, execCxt);
+		if (match.getLimit() >= 0)
+			qIter = new QueryIterSlice(qIter, 0, match.getLimit(), execCxt);
+		return qIter;
+	}
+
+	private QueryIterator variableSubject(Binding binding, Node s,
+			SpatialMatch match, ExecutionContext execCxt) {
+
+		Var v = Var.alloc(s);
+		List<Node> r = query(match);
+		// Make distinct. Note interaction with limit is imperfect
+		r = Iter.iter(r).distinct().toList();
+		QueryIterator qIter = new QueryIterExtendByVar(binding, v,
+				r.iterator(), execCxt);
+		return qIter;
+	}
+
+	private QueryIterator concreteSubject(Binding binding, Node s,
+			SpatialMatch match, ExecutionContext execCxt) {
+		if (!s.isURI()) {
+			log.warn("Subject not a URI: " + s);
+			return IterLib.noResults(execCxt);
+		}
+
+		List<Node> x = query(match);
+		if (x == null || !x.contains(s))
+			return IterLib.noResults(execCxt);
+		else
+			return IterLib.result(binding, execCxt);
+	}
+
+	private List<Node> query(SpatialMatch match) {
+
+		return server.query(match.getShape(), match.getLimit(),
+				match.getSpatialOperation());
+	}
+
+	/** Deconstruct the node or list object argument and make a SpatialMatch */
+	protected abstract SpatialMatch objectToStruct(PropFuncArg argObject);
+	
+	protected abstract SpatialOperation getSpatialOperation();
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/3d70d735/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/SpatialOperationWithBoxPFBase.java
----------------------------------------------------------------------
diff --git a/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/SpatialOperationWithBoxPFBase.java b/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/SpatialOperationWithBoxPFBase.java
index e200134..ee44773 100644
--- a/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/SpatialOperationWithBoxPFBase.java
+++ b/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/SpatialOperationWithBoxPFBase.java
@@ -1,164 +1,164 @@
-/*
- * 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.List;
-
-import org.apache.jena.datatypes.xsd.XSDDatatype ;
-import org.apache.jena.graph.Node ;
-import org.apache.jena.graph.impl.LiteralLabel ;
-import org.apache.jena.query.QueryBuildException ;
-import org.apache.jena.query.spatial.SpatialIndexException;
-import org.apache.jena.query.spatial.SpatialValueUtil;
-import org.apache.jena.sparql.engine.ExecutionContext ;
-import org.apache.jena.sparql.pfunction.PropFuncArg ;
-import org.apache.jena.sparql.util.NodeFactoryExtra ;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public abstract class SpatialOperationWithBoxPFBase extends SpatialOperationPFBase {
-	private static Logger log = LoggerFactory.getLogger(SpatialOperationWithCircleBase.class);
-
-	public SpatialOperationWithBoxPFBase() {
-	}
-
-	@Override
-	public void build(PropFuncArg argSubject, Node predicate,
-			PropFuncArg argObject, ExecutionContext execCxt) {
-		super.build(argSubject, predicate, argObject, execCxt);
-		
-		if (!argSubject.isNode())
-			throw new QueryBuildException("Subject is not a single node: "
-					+ argSubject);
-
-		if (argObject.isList()) {
-			List<Node> list = argObject.getArgList();
-			if (list.size() < 4)
-				throw new QueryBuildException("Not enough arguments in list");
-
-			if (list.size() > 5)
-				throw new QueryBuildException("Too many arguments in list : "
-						+ list);
-		}
-	}
-
-	/** Deconstruct the node or list object argument and make a SpatialMatch */
-	@Override
-	protected SpatialMatch objectToStruct(PropFuncArg argObject) {
-		
-		if (argObject.isNode()) {
-			log.warn("Object not a List: " + argObject);
-			return null;
-		}
-
-		List<Node> list = argObject.getArgList();
-
-		if (list.size() < 4 || list.size() > 5)
-			throw new SpatialIndexException("Change in object list size");
-
-		int idx = 0;
-
-		Node x = list.get(idx);
-		if (!x.isLiteral()) {
-			log.warn("Latitude 1 is not a literal " + list);
-			return null;
-		}
-		if (!SpatialValueUtil.isDecimal(x)) {
-			log.warn("Latitude 1 is not a decimal " + list);
-			return null;
-		}
-		Double latitude1 = Double.parseDouble(x.getLiteralLexicalForm());
-
-		idx++;
-
-		x = list.get(idx);
-		if (!x.isLiteral()) {
-			log.warn("Longitude 1 is not a literal " + list);
-			return null;
-		}
-		if (!SpatialValueUtil.isDecimal(x)) {
-			log.warn("Longitude 1 is not a decimal " + list);
-			return null;
-		}
-		Double longtitude1 = Double.parseDouble(x.getLiteralLexicalForm());
-
-		idx++;
-
-		x = list.get(idx);
-		if (!x.isLiteral()) {
-			log.warn("Latitude 2 is not a literal " + list);
-			return null;
-		}
-		if (!SpatialValueUtil.isDecimal(x)) {
-			log.warn("Latitude 2 is not a decimal " + list);
-			return null;
-		}
-		Double latitude2 = Double.parseDouble(x.getLiteralLexicalForm());
-
-		idx++;
-
-		x = list.get(idx);
-		if (!x.isLiteral()) {
-			log.warn("Longitude 2 is not a literal " + list);
-			return null;
-		}
-		if (!SpatialValueUtil.isDecimal(x)) {
-			log.warn("Longitude 2 is not a decimal " + list);
-			return null;
-		}
-		Double longtitude2 = Double.parseDouble(x.getLiteralLexicalForm());
-
-		idx++;
-		int limit =-1;
-		
-		if (idx < list.size()) {
-			x = list.get(idx);
-
-			if (!x.isLiteral()) {
-				log.warn("Limit is not a literal " + list);
-				return null;
-			}
-
-			LiteralLabel lit = x.getLiteral();
-
-			if (!XSDDatatype.XSDinteger.isValidLiteral(lit)) {
-				log.warn("Limit is not an integer " + list);
-				return null;
-			}
-
-			int v = NodeFactoryExtra.nodeToInt(x);
-			limit = (v < 0) ? -1 : v;
-
-			idx++;
-			if (idx < list.size()) {
-				log.warn("Limit is not the last parameter " + list);
-				return null;
-			}
-		}
-		
-		SpatialMatch match = new SpatialMatch(latitude1, longtitude1,
-				latitude2, longtitude2, limit, getSpatialOperation());
-
-		if (log.isDebugEnabled())
-			log.debug("Trying SpatialMatch: " + match.toString());
-		return match;
-	}
-
-
-}
+/*
+ * 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.List;
+
+import org.apache.jena.datatypes.xsd.XSDDatatype ;
+import org.apache.jena.graph.Node ;
+import org.apache.jena.graph.impl.LiteralLabel ;
+import org.apache.jena.query.QueryBuildException ;
+import org.apache.jena.query.spatial.SpatialIndexException;
+import org.apache.jena.query.spatial.SpatialValueUtil;
+import org.apache.jena.sparql.engine.ExecutionContext ;
+import org.apache.jena.sparql.pfunction.PropFuncArg ;
+import org.apache.jena.sparql.util.NodeFactoryExtra ;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public abstract class SpatialOperationWithBoxPFBase extends SpatialOperationPFBase {
+	private static Logger log = LoggerFactory.getLogger(SpatialOperationWithCircleBase.class);
+
+	public SpatialOperationWithBoxPFBase() {
+	}
+
+	@Override
+	public void build(PropFuncArg argSubject, Node predicate,
+			PropFuncArg argObject, ExecutionContext execCxt) {
+		super.build(argSubject, predicate, argObject, execCxt);
+		
+		if (!argSubject.isNode())
+			throw new QueryBuildException("Subject is not a single node: "
+					+ argSubject);
+
+		if (argObject.isList()) {
+			List<Node> list = argObject.getArgList();
+			if (list.size() < 4)
+				throw new QueryBuildException("Not enough arguments in list");
+
+			if (list.size() > 5)
+				throw new QueryBuildException("Too many arguments in list : "
+						+ list);
+		}
+	}
+
+	/** Deconstruct the node or list object argument and make a SpatialMatch */
+	@Override
+	protected SpatialMatch objectToStruct(PropFuncArg argObject) {
+		
+		if (argObject.isNode()) {
+			log.warn("Object not a List: " + argObject);
+			return null;
+		}
+
+		List<Node> list = argObject.getArgList();
+
+		if (list.size() < 4 || list.size() > 5)
+			throw new SpatialIndexException("Change in object list size");
+
+		int idx = 0;
+
+		Node x = list.get(idx);
+		if (!x.isLiteral()) {
+			log.warn("Latitude 1 is not a literal " + list);
+			return null;
+		}
+		if (!SpatialValueUtil.isDecimal(x)) {
+			log.warn("Latitude 1 is not a decimal " + list);
+			return null;
+		}
+		Double latitude1 = Double.parseDouble(x.getLiteralLexicalForm());
+
+		idx++;
+
+		x = list.get(idx);
+		if (!x.isLiteral()) {
+			log.warn("Longitude 1 is not a literal " + list);
+			return null;
+		}
+		if (!SpatialValueUtil.isDecimal(x)) {
+			log.warn("Longitude 1 is not a decimal " + list);
+			return null;
+		}
+		Double longtitude1 = Double.parseDouble(x.getLiteralLexicalForm());
+
+		idx++;
+
+		x = list.get(idx);
+		if (!x.isLiteral()) {
+			log.warn("Latitude 2 is not a literal " + list);
+			return null;
+		}
+		if (!SpatialValueUtil.isDecimal(x)) {
+			log.warn("Latitude 2 is not a decimal " + list);
+			return null;
+		}
+		Double latitude2 = Double.parseDouble(x.getLiteralLexicalForm());
+
+		idx++;
+
+		x = list.get(idx);
+		if (!x.isLiteral()) {
+			log.warn("Longitude 2 is not a literal " + list);
+			return null;
+		}
+		if (!SpatialValueUtil.isDecimal(x)) {
+			log.warn("Longitude 2 is not a decimal " + list);
+			return null;
+		}
+		Double longtitude2 = Double.parseDouble(x.getLiteralLexicalForm());
+
+		idx++;
+		int limit =-1;
+		
+		if (idx < list.size()) {
+			x = list.get(idx);
+
+			if (!x.isLiteral()) {
+				log.warn("Limit is not a literal " + list);
+				return null;
+			}
+
+			LiteralLabel lit = x.getLiteral();
+
+			if (!XSDDatatype.XSDinteger.isValidLiteral(lit)) {
+				log.warn("Limit is not an integer " + list);
+				return null;
+			}
+
+			int v = NodeFactoryExtra.nodeToInt(x);
+			limit = (v < 0) ? -1 : v;
+
+			idx++;
+			if (idx < list.size()) {
+				log.warn("Limit is not the last parameter " + list);
+				return null;
+			}
+		}
+		
+		SpatialMatch match = new SpatialMatch(latitude1, longtitude1,
+				latitude2, longtitude2, limit, getSpatialOperation());
+
+		if (log.isDebugEnabled())
+			log.debug("Trying SpatialMatch: " + match.toString());
+		return match;
+	}
+
+
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/3d70d735/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/library/EastPF.java
----------------------------------------------------------------------
diff --git a/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/library/EastPF.java b/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/library/EastPF.java
index 6c40cfa..96e5519 100644
--- a/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/library/EastPF.java
+++ b/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/library/EastPF.java
@@ -1,44 +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 EastPF extends DirectionWithPointPFBase {
-
-	private static Logger log = LoggerFactory.getLogger(EastPF.class);
-
-	public EastPF() {
-		// TODO Auto-generated constructor stub
-	}
-
-	/** Deconstruct the node or list object argument and make a SpatialMatch */
-    @Override
-	protected SpatialMatch getSpatialMatch(Double latitude, Double longitude, int limit) {
-		SpatialMatch match = new SpatialMatch(SpatialQuery.ctx.getWorldBounds().getMinY(),
-				longitude, SpatialQuery.ctx.getWorldBounds().getMaxY(), SpatialQuery.ctx.getWorldBounds()
-						.getMaxX(), limit, getSpatialOperation());
-		return match;
-	}
-
-}
+/*
+ * 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 EastPF extends DirectionWithPointPFBase {
+
+	private static Logger log = LoggerFactory.getLogger(EastPF.class);
+
+	public EastPF() {
+		// TODO Auto-generated constructor stub
+	}
+
+	/** Deconstruct the node or list object argument and make a SpatialMatch */
+    @Override
+	protected SpatialMatch getSpatialMatch(Double latitude, Double longitude, int limit) {
+		SpatialMatch match = new SpatialMatch(SpatialQuery.ctx.getWorldBounds().getMinY(),
+				longitude, SpatialQuery.ctx.getWorldBounds().getMaxY(), SpatialQuery.ctx.getWorldBounds()
+						.getMaxX(), limit, getSpatialOperation());
+		return match;
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/3d70d735/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/library/IntersectsBoxPF.java
----------------------------------------------------------------------
diff --git a/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/library/IntersectsBoxPF.java b/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/library/IntersectsBoxPF.java
index d71f050..8d6b426 100644
--- a/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/library/IntersectsBoxPF.java
+++ b/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/library/IntersectsBoxPF.java
@@ -1,35 +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.SpatialOperationWithBoxPFBase;
-import org.apache.lucene.spatial.query.SpatialOperation;
-
-public class IntersectsBoxPF extends SpatialOperationWithBoxPFBase {
-
-	public IntersectsBoxPF() {
-	}
-
-	
-	@Override
-	protected SpatialOperation getSpatialOperation() {
-		return SpatialOperation.Intersects;
-	}
-
-}
+/*
+ * 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 IntersectsBoxPF extends SpatialOperationWithBoxPFBase {
+
+	public IntersectsBoxPF() {
+	}
+
+	
+	@Override
+	protected SpatialOperation getSpatialOperation() {
+		return SpatialOperation.Intersects;
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/3d70d735/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/library/IsNearByPF.java
----------------------------------------------------------------------
diff --git a/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/library/IsNearByPF.java b/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/library/IsNearByPF.java
index a5a44d4..75df1d1 100644
--- a/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/library/IsNearByPF.java
+++ b/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/library/IsNearByPF.java
@@ -1,23 +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 {
-
-}
+/*
+ * 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 {
+
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/3d70d735/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/library/IsWithinBoxPF.java
----------------------------------------------------------------------
diff --git a/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/library/IsWithinBoxPF.java b/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/library/IsWithinBoxPF.java
index 078bd10..048d0b2 100644
--- a/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/library/IsWithinBoxPF.java
+++ b/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/library/IsWithinBoxPF.java
@@ -1,34 +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;
-	}
-
-}
+/*
+ * 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;
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/3d70d735/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/library/IsWithinCirclePF.java
----------------------------------------------------------------------
diff --git a/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/library/IsWithinCirclePF.java b/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/library/IsWithinCirclePF.java
index c10c4e2..322e442 100644
--- a/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/library/IsWithinCirclePF.java
+++ b/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/library/IsWithinCirclePF.java
@@ -1,35 +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;
-	}
-
-}
+/*
+ * 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;
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/3d70d735/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/library/NorthPF.java
----------------------------------------------------------------------
diff --git a/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/library/NorthPF.java b/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/library/NorthPF.java
index e2cfbb1..9576fe3 100644
--- a/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/library/NorthPF.java
+++ b/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/library/NorthPF.java
@@ -1,45 +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 */
-    @Override
-    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;
-	}
-
-}
+/*
+ * 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 */
+    @Override
+    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;
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/3d70d735/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/library/SouthPF.java
----------------------------------------------------------------------
diff --git a/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/library/SouthPF.java b/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/library/SouthPF.java
index 431531b..cf8a467 100644
--- a/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/library/SouthPF.java
+++ b/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/library/SouthPF.java
@@ -1,43 +1,43 @@
-/*
- * 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 */
-    @Override
-    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;
-	}
-
-}
+/*
+ * 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 */
+    @Override
+    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;
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/3d70d735/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/library/WestPF.java
----------------------------------------------------------------------
diff --git a/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/library/WestPF.java b/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/library/WestPF.java
index 9ddf6b7..5b3f568 100644
--- a/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/library/WestPF.java
+++ b/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/library/WestPF.java
@@ -1,44 +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 */
-    @Override
-    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;
-	}
-
-}
+/*
+ * 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 */
+    @Override
+    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;
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/3d70d735/jena-spatial/src/test/java/org/apache/jena/query/spatial/AbstractTestIndexingSpatialData.java
----------------------------------------------------------------------
diff --git a/jena-spatial/src/test/java/org/apache/jena/query/spatial/AbstractTestIndexingSpatialData.java b/jena-spatial/src/test/java/org/apache/jena/query/spatial/AbstractTestIndexingSpatialData.java
index 3fdeaca..0780961 100644
--- a/jena-spatial/src/test/java/org/apache/jena/query/spatial/AbstractTestIndexingSpatialData.java
+++ b/jena-spatial/src/test/java/org/apache/jena/query/spatial/AbstractTestIndexingSpatialData.java
@@ -1,93 +1,93 @@
-/**
- * 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.util.Arrays;
-import java.util.HashSet;
-import java.util.Set;
-
-import org.apache.jena.atlas.lib.StrUtils;
-import org.junit.Test;
-import static org.junit.Assert.fail;
-
-import com.spatial4j.core.exception.InvalidShapeException;
-
-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() {
-		boolean jts_context_ready = false;
-		try {
-			SpatialIndex index = (SpatialIndex) dataset.getContext().get(
-					SpatialQuery.spatialIndex);
-			index.getDocDef().setSpatialContextFactory(
-					SpatialQuery.JTS_SPATIAL_CONTEXT_FACTORY_CLASS);
-			jts_context_ready = true;
-		}catch (NoClassDefFoundError e){
-			//Log.warn(this, "JTS lib is not on the classpath!");
-		}
-		
-		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" })));
-		
-		try {
-			doTestSearch(turtle, queryString, expectedURIs);
-		}catch (InvalidShapeException e){
-			if (jts_context_ready){
-				fail("The exception is not supposed to be thrown: "+ e.getMessage());
-			}
-		}
-	}
-
-}
+/**
+ * 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.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.apache.jena.atlas.lib.StrUtils;
+import org.junit.Test;
+import static org.junit.Assert.fail;
+
+import com.spatial4j.core.exception.InvalidShapeException;
+
+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() {
+		boolean jts_context_ready = false;
+		try {
+			SpatialIndex index = (SpatialIndex) dataset.getContext().get(
+					SpatialQuery.spatialIndex);
+			index.getDocDef().setSpatialContextFactory(
+					SpatialQuery.JTS_SPATIAL_CONTEXT_FACTORY_CLASS);
+			jts_context_ready = true;
+		}catch (NoClassDefFoundError e){
+			//Log.warn(this, "JTS lib is not on the classpath!");
+		}
+		
+		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" })));
+		
+		try {
+			doTestSearch(turtle, queryString, expectedURIs);
+		}catch (InvalidShapeException e){
+			if (jts_context_ready){
+				fail("The exception is not supposed to be thrown: "+ e.getMessage());
+			}
+		}
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/3d70d735/jena-spatial/src/test/java/org/apache/jena/query/spatial/TestIndexingSpatialDataWithLucene.java
----------------------------------------------------------------------
diff --git a/jena-spatial/src/test/java/org/apache/jena/query/spatial/TestIndexingSpatialDataWithLucene.java b/jena-spatial/src/test/java/org/apache/jena/query/spatial/TestIndexingSpatialDataWithLucene.java
index af3ad7a..1a1a2bf 100644
--- a/jena-spatial/src/test/java/org/apache/jena/query/spatial/TestIndexingSpatialDataWithLucene.java
+++ b/jena-spatial/src/test/java/org/apache/jena/query/spatial/TestIndexingSpatialDataWithLucene.java
@@ -1,42 +1,42 @@
-/*
- * 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.junit.After;
-import org.junit.Before;
-
-public class TestIndexingSpatialDataWithLucene extends
-		AbstractTestIndexingSpatialData {
-	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);
-	}
-
-}
+/*
+ * 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.junit.After;
+import org.junit.Before;
+
+public class TestIndexingSpatialDataWithLucene extends
+		AbstractTestIndexingSpatialData {
+	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);
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/3d70d735/jena-spatial/src/test/java/org/apache/jena/query/spatial/TestIndexingSpatialDataWithSolr.java
----------------------------------------------------------------------
diff --git a/jena-spatial/src/test/java/org/apache/jena/query/spatial/TestIndexingSpatialDataWithSolr.java b/jena-spatial/src/test/java/org/apache/jena/query/spatial/TestIndexingSpatialDataWithSolr.java
index d3f70cd..3a94f55 100644
--- a/jena-spatial/src/test/java/org/apache/jena/query/spatial/TestIndexingSpatialDataWithSolr.java
+++ b/jena-spatial/src/test/java/org/apache/jena/query/spatial/TestIndexingSpatialDataWithSolr.java
@@ -1,40 +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;
-
-import org.junit.After;
-import org.junit.Before;
-
-public class TestIndexingSpatialDataWithSolr extends
-		AbstractTestIndexingSpatialData {
-
-	@Before
-	public void init() {
-		dataset = SpatialSearchUtil.initInMemoryDatasetWithSolrSpatitalIndex();
-	}
-
-	@After
-	public void destroy() {
-		SpatialIndexSolr index = (SpatialIndexSolr) dataset.getContext().get(
-				SpatialQuery.spatialIndex);
-		index.getServer().shutdown();
-		SpatialSearchUtil.deleteOldSolrDataDir();
-	}
-
-}
+/*
+ * 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 org.junit.After;
+import org.junit.Before;
+
+public class TestIndexingSpatialDataWithSolr extends
+		AbstractTestIndexingSpatialData {
+
+	@Before
+	public void init() {
+		dataset = SpatialSearchUtil.initInMemoryDatasetWithSolrSpatitalIndex();
+	}
+
+	@After
+	public void destroy() {
+		SpatialIndexSolr index = (SpatialIndexSolr) dataset.getContext().get(
+				SpatialQuery.spatialIndex);
+		index.getServer().shutdown();
+		SpatialSearchUtil.deleteOldSolrDataDir();
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/3d70d735/jena-spatial/src/test/java/org/apache/jena/query/spatial/TestSpatialPredicatePairValue.java
----------------------------------------------------------------------
diff --git a/jena-spatial/src/test/java/org/apache/jena/query/spatial/TestSpatialPredicatePairValue.java b/jena-spatial/src/test/java/org/apache/jena/query/spatial/TestSpatialPredicatePairValue.java
index e98f459..6e01f71 100644
--- a/jena-spatial/src/test/java/org/apache/jena/query/spatial/TestSpatialPredicatePairValue.java
+++ b/jena-spatial/src/test/java/org/apache/jena/query/spatial/TestSpatialPredicatePairValue.java
@@ -1,59 +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());
-	}
-
-}
+/*
+ * 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());
+	}
+
+}