You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by rv...@apache.org on 2014/10/22 13:40:21 UTC
[66/68] [abbrv] git commit: JENA-802 : Handle blank nodes in the same
way that jena-text does
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/hadoop-rdf
Commit: 17a2537bbe5fe7858e1d854c690e72a0108bd532
Parents: ec0d19c
Author: Andy Seaborne <an...@apache.org>
Authored: Tue Oct 21 19:43:21 2014 +0100
Committer: Andy Seaborne <an...@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 */