Repository: jena
Updated Branches:
  refs/heads/master ec0d19cc7 -> 17a2537bb


JENA-802 : Handle blank nodes in the same way that jena-text does


Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/17a2537b
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/17a2537b
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/17a2537b

Branch: refs/heads/master
Commit: 17a2537bbe5fe7858e1d854c690e72a0108bd532
Parents: ec0d19c
Author: Andy Seaborne <a...@apache.org>
Authored: Tue Oct 21 19:43:21 2014 +0100
Committer: Andy Seaborne <a...@apache.org>
Committed: Tue Oct 21 19:43:21 2014 +0100

----------------------------------------------------------------------
 .../jena/query/spatial/SpatialIndexContext.java |  5 +-
 .../jena/query/spatial/SpatialIndexLucene.java  |  8 +--
 .../jena/query/spatial/SpatialIndexSolr.java    | 49 ++++++++--------
 .../jena/query/spatial/SpatialQueryFuncs.java   | 61 ++++++++++++++++++++
 .../apache/jena/query/text/TextQueryFuncs.java  |  2 +-
 5 files changed, 91 insertions(+), 34 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/17a2537b/jena-spatial/src/main/java/org/apache/jena/query/spatial/SpatialIndexContext.java
----------------------------------------------------------------------
diff --git 
a/jena-spatial/src/main/java/org/apache/jena/query/spatial/SpatialIndexContext.java
 
b/jena-spatial/src/main/java/org/apache/jena/query/spatial/SpatialIndexContext.java
index 63b9b7e..42c8b76 100644
--- 
a/jena-spatial/src/main/java/org/apache/jena/query/spatial/SpatialIndexContext.java
+++ 
b/jena-spatial/src/main/java/org/apache/jena/query/spatial/SpatialIndexContext.java
@@ -24,6 +24,8 @@ import java.util.Iterator;
 import java.util.Map;
 import java.util.Set;
 
+import org.apache.jena.atlas.logging.Log ;
+
 import com.hp.hpl.jena.graph.Node;
 import com.spatial4j.core.shape.Shape;
 
@@ -46,7 +48,8 @@ public class SpatialIndexContext {
                        return;
                }
 
-               String x = (s.isURI()) ? s.getURI() : s.getBlankNodeLabel();
+               String x = SpatialQueryFuncs.subjectToString(s) ;
+               Log.info(getClass(), "Subject: "+x) ;
 
                if (defn.isSpatialPredicate(p) && 
SpatialValueUtil.isDecimal(o.getLiteral())) {
 

http://git-wip-us.apache.org/repos/asf/jena/blob/17a2537b/jena-spatial/src/main/java/org/apache/jena/query/spatial/SpatialIndexLucene.java
----------------------------------------------------------------------
diff --git 
a/jena-spatial/src/main/java/org/apache/jena/query/spatial/SpatialIndexLucene.java
 
b/jena-spatial/src/main/java/org/apache/jena/query/spatial/SpatialIndexLucene.java
index cbaf99d..f515d6e 100644
--- 
a/jena-spatial/src/main/java/org/apache/jena/query/spatial/SpatialIndexLucene.java
+++ 
b/jena-spatial/src/main/java/org/apache/jena/query/spatial/SpatialIndexLucene.java
@@ -42,8 +42,6 @@ import org.slf4j.Logger ;
 import org.slf4j.LoggerFactory ;
 
 import com.hp.hpl.jena.graph.Node ;
-import com.hp.hpl.jena.graph.NodeFactory ;
-import com.hp.hpl.jena.sparql.util.NodeFactoryExtra ;
 import com.spatial4j.core.shape.Point ;
 import com.spatial4j.core.shape.Shape ;
 
@@ -219,7 +217,7 @@ public class SpatialIndexLucene implements SpatialIndex {
                        Document doc = indexSearcher.doc(sd.doc);
                        String[] values = 
doc.getValues(docDef.getEntityField());
                        for (String v : values) {
-                               Node n = NodeFactory.createURI(v);
+                           Node n = SpatialQueryFuncs.stringToNode(v) ;
                                results.add(n);
                        }
                }
@@ -231,10 +229,6 @@ public class SpatialIndexLucene implements SpatialIndex {
                return docDef;
        }
 
-       private Node entryToNode(String v) {
-               // TEMP
-               return NodeFactoryExtra.createLiteralNode(v, null, null);
-       }
 
        private static void exception(Exception ex) {
                throw new SpatialIndexException(ex);

http://git-wip-us.apache.org/repos/asf/jena/blob/17a2537b/jena-spatial/src/main/java/org/apache/jena/query/spatial/SpatialIndexSolr.java
----------------------------------------------------------------------
diff --git 
a/jena-spatial/src/main/java/org/apache/jena/query/spatial/SpatialIndexSolr.java
 
b/jena-spatial/src/main/java/org/apache/jena/query/spatial/SpatialIndexSolr.java
index 50f1b61..7363a3d 100644
--- 
a/jena-spatial/src/main/java/org/apache/jena/query/spatial/SpatialIndexSolr.java
+++ 
b/jena-spatial/src/main/java/org/apache/jena/query/spatial/SpatialIndexSolr.java
@@ -18,28 +18,27 @@
 
 package org.apache.jena.query.spatial;
 
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.lucene.spatial.SpatialStrategy;
-import org.apache.lucene.spatial.prefix.RecursivePrefixTreeStrategy;
-import org.apache.lucene.spatial.prefix.tree.GeohashPrefixTree;
-import org.apache.lucene.spatial.prefix.tree.SpatialPrefixTree;
-import org.apache.lucene.spatial.query.SpatialOperation;
-import org.apache.solr.client.solrj.SolrQuery;
-import org.apache.solr.client.solrj.SolrServer;
-import org.apache.solr.client.solrj.SolrServerException;
-import org.apache.solr.client.solrj.response.QueryResponse;
-import org.apache.solr.common.SolrDocument;
-import org.apache.solr.common.SolrDocumentList;
-import org.apache.solr.common.SolrInputDocument;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.hp.hpl.jena.graph.Node;
-import com.hp.hpl.jena.graph.NodeFactory;
-import com.hp.hpl.jena.sparql.util.NodeFactoryExtra;
-import com.spatial4j.core.shape.Shape;
+import java.util.ArrayList ;
+import java.util.List ;
+
+import org.apache.lucene.spatial.SpatialStrategy ;
+import org.apache.lucene.spatial.prefix.RecursivePrefixTreeStrategy ;
+import org.apache.lucene.spatial.prefix.tree.GeohashPrefixTree ;
+import org.apache.lucene.spatial.prefix.tree.SpatialPrefixTree ;
+import org.apache.lucene.spatial.query.SpatialOperation ;
+import org.apache.solr.client.solrj.SolrQuery ;
+import org.apache.solr.client.solrj.SolrServer ;
+import org.apache.solr.client.solrj.SolrServerException ;
+import org.apache.solr.client.solrj.response.QueryResponse ;
+import org.apache.solr.common.SolrDocument ;
+import org.apache.solr.common.SolrDocumentList ;
+import org.apache.solr.common.SolrInputDocument ;
+import org.slf4j.Logger ;
+import org.slf4j.LoggerFactory ;
+
+import com.hp.hpl.jena.graph.Node ;
+import com.hp.hpl.jena.sparql.util.NodeFactoryExtra ;
+import com.spatial4j.core.shape.Shape ;
 
 public class SpatialIndexSolr implements SpatialIndex {
        private static Logger log = 
LoggerFactory.getLogger(SpatialIndexSolr.class);
@@ -129,9 +128,9 @@ public class SpatialIndexSolr implements SpatialIndex {
                List<Node> results = new ArrayList<Node>();
 
                for (SolrDocument sd : solrResults) {
-                       String uriStr = (String) 
sd.getFieldValue(docDef.getEntityField());
-                       // log.info("Entity: "+uriStr) ;
-                       results.add(NodeFactory.createURI(uriStr));
+                       String str = (String) 
sd.getFieldValue(docDef.getEntityField());
+                       Node n = SpatialQueryFuncs.stringToNode(str) ;
+                       results.add(n) ;
                }
 
                if (limit > 0 && results.size() > limit)

http://git-wip-us.apache.org/repos/asf/jena/blob/17a2537b/jena-spatial/src/main/java/org/apache/jena/query/spatial/SpatialQueryFuncs.java
----------------------------------------------------------------------
diff --git 
a/jena-spatial/src/main/java/org/apache/jena/query/spatial/SpatialQueryFuncs.java
 
b/jena-spatial/src/main/java/org/apache/jena/query/spatial/SpatialQueryFuncs.java
new file mode 100644
index 0000000..9a70651
--- /dev/null
+++ 
b/jena-spatial/src/main/java/org/apache/jena/query/spatial/SpatialQueryFuncs.java
@@ -0,0 +1,61 @@
+/**
+ * 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 com.hp.hpl.jena.graph.Node ;
+import com.hp.hpl.jena.graph.NodeFactory ;
+import com.hp.hpl.jena.rdf.model.AnonId ;
+
+public class SpatialQueryFuncs {
+    
+    static { System.out.println("SPATIAL DEBUG") ; }
+
+    /** Create a string to put in a Lucene/Solr index for the subject node */  
+    public static String subjectToString(Node s) {
+        if ( s == null )
+            throw new IllegalArgumentException("Subject node can not be null") 
;
+        if ( ! (s.isURI() || s.isBlank() ) )
+            throw new SpatialIndexException("Found a subject that is not a URI 
nor a blank node: "+s) ; 
+        return nodeToString(s) ;
+    }
+
+    /** Create a string to put in a Lucene/Solr index for a graph node */  
+    public static String graphNodeToString(Node g) {
+        if ( g == null )
+            return null ;
+        if ( ! (g.isURI() || g.isBlank() ) )
+            throw new SpatialIndexException("Found a graph label that is not a 
URI nor a blank node: "+g) ; 
+        return nodeToString(g) ;
+    }
+
+    private static String nodeToString(Node n) {
+        return (n.isURI() ) ? n.getURI() : "_:" + n.getBlankNodeLabel() ;
+    }
+
+    /** Recover a Node from a stored Lucene/Solr string */
+    public static Node stringToNode(String v) {
+        if ( v.startsWith("_:") ) {
+            v = v.substring("_:".length()) ;
+            return NodeFactory.createAnon(new AnonId(v)) ;
+        }
+        else
+            return NodeFactory.createURI(v) ;
+    }
+}
+

http://git-wip-us.apache.org/repos/asf/jena/blob/17a2537b/jena-text/src/main/java/org/apache/jena/query/text/TextQueryFuncs.java
----------------------------------------------------------------------
diff --git 
a/jena-text/src/main/java/org/apache/jena/query/text/TextQueryFuncs.java 
b/jena-text/src/main/java/org/apache/jena/query/text/TextQueryFuncs.java
index ac09b74..c7f34b4 100644
--- a/jena-text/src/main/java/org/apache/jena/query/text/TextQueryFuncs.java
+++ b/jena-text/src/main/java/org/apache/jena/query/text/TextQueryFuncs.java
@@ -26,7 +26,7 @@ import com.hp.hpl.jena.rdf.model.AnonId ;
 import com.hp.hpl.jena.sparql.core.Quad ;
 import com.hp.hpl.jena.sparql.util.FmtUtils ;
 
-/** Functions relateing to text query */
+/** Functions relating to text query */
 public class TextQueryFuncs {
 
     /** Create a string to put in a Lucene/Solr index for the subject node */  

Reply via email to