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 2015/06/02 14:56:23 UTC

[01/13] jena git commit: First implementation of JENA-916: Add (?uri ?score) to text query.

Repository: jena
Updated Branches:
  refs/heads/master bcba645a5 -> 999972e0a


First implementation of JENA-916: Add (?uri ?score) to text query.


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

Branch: refs/heads/master
Commit: 4c99ec53510fc9bdda1f66a42636b3185e071e98
Parents: b03ce37
Author: Osma Suominen <os...@aalto.fi>
Authored: Mon May 25 15:54:56 2015 +0300
Committer: Osma Suominen <os...@aalto.fi>
Committed: Mon May 25 15:54:56 2015 +0300

----------------------------------------------------------------------
 .../jena/query/text/DatasetGraphText.java       | 10 +--
 .../org/apache/jena/query/text/TextHit.java     | 41 ++++++++++
 .../jena/query/text/TextHitConverter.java       | 50 ++++++++++++
 .../org/apache/jena/query/text/TextIndex.java   |  4 +-
 .../apache/jena/query/text/TextIndexLucene.java | 11 +--
 .../apache/jena/query/text/TextIndexSolr.java   | 15 ++--
 .../org/apache/jena/query/text/TextQueryPF.java | 67 ++++++++++-----
 .../text/AbstractTestDatasetWithTextIndex.java  | 85 ++++++++++++++++++++
 .../AbstractTestDatasetWithTextIndexBase.java   | 35 +++++++-
 9 files changed, 278 insertions(+), 40 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/4c99ec53/jena-text/src/main/java/org/apache/jena/query/text/DatasetGraphText.java
----------------------------------------------------------------------
diff --git a/jena-text/src/main/java/org/apache/jena/query/text/DatasetGraphText.java b/jena-text/src/main/java/org/apache/jena/query/text/DatasetGraphText.java
index cc4d42e..e1d7306 100644
--- a/jena-text/src/main/java/org/apache/jena/query/text/DatasetGraphText.java
+++ b/jena-text/src/main/java/org/apache/jena/query/text/DatasetGraphText.java
@@ -78,28 +78,28 @@ public class DatasetGraphText extends DatasetGraphMonitor implements Transaction
     }
 
     /** Search the text index on the default text field */
-    public Iterator<Node> search(String queryString) {
+    public Iterator<TextHit> search(String queryString) {
         return search(queryString, null) ;
     }
 
     /** Search the text index on the text field associated with the predicate */
-    public Iterator<Node> search(String queryString, Node predicate) {
+    public Iterator<TextHit> search(String queryString, Node predicate) {
         return search(queryString, predicate, -1) ;
     }
 
     /** Search the text index on the default text field */
-    public Iterator<Node> search(String queryString, int limit) {
+    public Iterator<TextHit> search(String queryString, int limit) {
         return search(queryString, null, limit) ;
     }
 
     /** Search the text index on the text field associated with the predicate */
-    public Iterator<Node> search(String queryString, Node predicate, int limit) {
+    public Iterator<TextHit> search(String queryString, Node predicate, int limit) {
         queryString = QueryParserBase.escape(queryString) ;
         if ( predicate != null ) {
             String f = textIndex.getDocDef().getField(predicate) ;
             queryString = f + ":" + queryString ;
         }
-        List<Node> results = textIndex.query(queryString, limit) ;
+        List<TextHit> results = textIndex.query(queryString, limit) ;
         return results.iterator() ;
     }
 

http://git-wip-us.apache.org/repos/asf/jena/blob/4c99ec53/jena-text/src/main/java/org/apache/jena/query/text/TextHit.java
----------------------------------------------------------------------
diff --git a/jena-text/src/main/java/org/apache/jena/query/text/TextHit.java b/jena-text/src/main/java/org/apache/jena/query/text/TextHit.java
new file mode 100644
index 0000000..a60f78e
--- /dev/null
+++ b/jena-text/src/main/java/org/apache/jena/query/text/TextHit.java
@@ -0,0 +1,41 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jena.query.text ;
+
+import org.apache.jena.graph.Node ;
+
+/** Class representing a single hit from a jena-text index */ 
+public class TextHit
+{
+    private Node node;
+    private float score;
+
+    public TextHit(Node node, float score) {
+        this.node = node;
+        this.score = score;
+    }
+    
+    public Node getNode() {
+        return this.node;
+    }
+    
+    public float getScore() {
+        return this.score;
+    }
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/4c99ec53/jena-text/src/main/java/org/apache/jena/query/text/TextHitConverter.java
----------------------------------------------------------------------
diff --git a/jena-text/src/main/java/org/apache/jena/query/text/TextHitConverter.java b/jena-text/src/main/java/org/apache/jena/query/text/TextHitConverter.java
new file mode 100644
index 0000000..3ee29c9
--- /dev/null
+++ b/jena-text/src/main/java/org/apache/jena/query/text/TextHitConverter.java
@@ -0,0 +1,50 @@
+/**
+ * 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.text ;
+
+import java.util.function.Function;
+
+import org.apache.jena.sparql.core.Var;
+import org.apache.jena.sparql.engine.binding.Binding;
+import org.apache.jena.sparql.engine.binding.BindingFactory;
+import org.apache.jena.sparql.engine.binding.BindingMap;
+import org.apache.jena.sparql.util.NodeFactoryExtra;
+
+/** Class that converts TextHits to Bindings that can be returned from query */ 
+public class TextHitConverter implements Function<TextHit, Binding>
+{
+    private Binding binding;
+    private Var match;
+    private Var score;
+
+    public TextHitConverter(Binding binding, Var match, Var score) {
+        this.binding = binding;
+        this.match = match;
+        this.score = score;
+    }
+    
+    public Binding apply(TextHit hit) {
+        BindingMap bmap = BindingFactory.create(binding);
+        bmap.add(match, hit.getNode());
+        if (score != null) {
+            bmap.add(score, NodeFactoryExtra.floatToNode(hit.getScore()));
+        }
+        return bmap;
+    }
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/4c99ec53/jena-text/src/main/java/org/apache/jena/query/text/TextIndex.java
----------------------------------------------------------------------
diff --git a/jena-text/src/main/java/org/apache/jena/query/text/TextIndex.java b/jena-text/src/main/java/org/apache/jena/query/text/TextIndex.java
index 69efb31..b57db5b 100644
--- a/jena-text/src/main/java/org/apache/jena/query/text/TextIndex.java
+++ b/jena-text/src/main/java/org/apache/jena/query/text/TextIndex.java
@@ -46,9 +46,9 @@ public interface TextIndex extends Closeable //, Transactional
     // Need to have more complex results.
     
     /** Access the index - limit if -1 for as many as possible */ 
-    List<Node> query(String qs, int limit) ;
+    List<TextHit> query(String qs, int limit) ;
     
-    List<Node> query(String qs) ;
+    List<TextHit> query(String qs) ;
 
     EntityDefinition getDocDef() ;
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/4c99ec53/jena-text/src/main/java/org/apache/jena/query/text/TextIndexLucene.java
----------------------------------------------------------------------
diff --git a/jena-text/src/main/java/org/apache/jena/query/text/TextIndexLucene.java b/jena-text/src/main/java/org/apache/jena/query/text/TextIndexLucene.java
index 9107e86..98a0f63 100644
--- a/jena-text/src/main/java/org/apache/jena/query/text/TextIndexLucene.java
+++ b/jena-text/src/main/java/org/apache/jena/query/text/TextIndexLucene.java
@@ -288,12 +288,12 @@ public class TextIndexLucene implements TextIndex {
     }
 
     @Override
-    public List<Node> query(String qs) {
+    public List<TextHit> query(String qs) {
         return query(qs, MAX_N) ;
     }
 
     @Override
-    public List<Node> query(String qs, int limit) {
+    public List<TextHit> query(String qs, int limit) {
         //** score
         try (IndexReader indexReader = DirectoryReader.open(directory)) {
             return query$(indexReader, qs, limit) ;
@@ -303,14 +303,14 @@ public class TextIndexLucene implements TextIndex {
         }
     }
 
-    private List<Node> query$(IndexReader indexReader, String qs, int limit) throws ParseException, IOException {
+    private List<TextHit> query$(IndexReader indexReader, String qs, int limit) throws ParseException, IOException {
         IndexSearcher indexSearcher = new IndexSearcher(indexReader) ;
         Query query = parseQuery(qs, docDef.getPrimaryField(), queryAnalyzer) ;
         if ( limit <= 0 )
             limit = MAX_N ;
         ScoreDoc[] sDocs = indexSearcher.search(query, limit).scoreDocs ;
 
-        List<Node> results = new ArrayList<>() ;
+        List<TextHit> results = new ArrayList<>() ;
 
         // Align and DRY with Solr.
         for ( ScoreDoc sd : sDocs ) {
@@ -318,7 +318,8 @@ public class TextIndexLucene implements TextIndex {
             String[] values = doc.getValues(docDef.getEntityField()) ;
             for ( String v : values ) {
                 Node n = TextQueryFuncs.stringToNode(v) ;
-                results.add(n) ;
+                TextHit hit = new TextHit(n, sd.score);
+                results.add(hit) ;
             }
         }
         return results ;

http://git-wip-us.apache.org/repos/asf/jena/blob/4c99ec53/jena-text/src/main/java/org/apache/jena/query/text/TextIndexSolr.java
----------------------------------------------------------------------
diff --git a/jena-text/src/main/java/org/apache/jena/query/text/TextIndexSolr.java b/jena-text/src/main/java/org/apache/jena/query/text/TextIndexSolr.java
index 54a3263..69848d8 100644
--- a/jena-text/src/main/java/org/apache/jena/query/text/TextIndexSolr.java
+++ b/jena-text/src/main/java/org/apache/jena/query/text/TextIndexSolr.java
@@ -183,22 +183,22 @@ public class TextIndexSolr implements TextIndex
     }
 
     @Override
-    public List<Node> query(String qs) { return query(qs, 0) ; } 
+    public List<TextHit> query(String qs) { return query(qs, 0) ; } 
 
     @Override
-    public List<Node> query(String qs, int limit)
+    public List<TextHit> query(String qs, int limit)
     {
         SolrDocumentList solrResults = solrQuery(qs, limit) ;
-        List<Node> results = new ArrayList<>() ;
+        List<TextHit> results = new ArrayList<>() ;
 
         for ( SolrDocument sd : solrResults )
         {
-            //** score
-            // 'score' field.
             String str = (String)sd.getFieldValue(docDef.getEntityField()) ;
             //log.info("Entity: "+uriStr) ;
             Node n = TextQueryFuncs.stringToNode(str) ;
-            results.add(n) ;
+            Float score = (Float) sd.getFirstValue("score");
+            TextHit hit = new TextHit(n, score.floatValue());
+            results.add(hit) ;
         }
 
         if ( limit > 0 && results.size() > limit )
@@ -210,8 +210,7 @@ public class TextIndexSolr implements TextIndex
     private SolrDocumentList solrQuery(String qs, int limit)
     {
         SolrQuery sq = new SolrQuery(qs) ;
-        //** score
-        //sq.setIncludeScore(true) ;
+        sq.setIncludeScore(true) ;
         if ( limit > 0 )
             sq.setRows(limit) ;
         else 

http://git-wip-us.apache.org/repos/asf/jena/blob/4c99ec53/jena-text/src/main/java/org/apache/jena/query/text/TextQueryPF.java
----------------------------------------------------------------------
diff --git a/jena-text/src/main/java/org/apache/jena/query/text/TextQueryPF.java b/jena-text/src/main/java/org/apache/jena/query/text/TextQueryPF.java
index 140ef09..6520516 100644
--- a/jena-text/src/main/java/org/apache/jena/query/text/TextQueryPF.java
+++ b/jena-text/src/main/java/org/apache/jena/query/text/TextQueryPF.java
@@ -18,7 +18,9 @@
 
 package org.apache.jena.query.text ;
 
+import java.util.Iterator ;
 import java.util.List ;
+import java.util.function.Function ;
 
 import org.apache.jena.atlas.iterator.Iter ;
 import org.apache.jena.atlas.lib.InternalErrorException ;
@@ -27,11 +29,13 @@ import org.apache.jena.datatypes.RDFDatatype ;
 import org.apache.jena.datatypes.xsd.XSDDatatype ;
 import org.apache.jena.graph.Node ;
 import org.apache.jena.query.QueryBuildException ;
+import org.apache.jena.query.QueryExecException ;
 import org.apache.jena.sparql.core.* ;
 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.QueryIterPlainWrapper ;
 import org.apache.jena.sparql.engine.iterator.QueryIterSlice ;
 import org.apache.jena.sparql.mgt.Explain ;
 import org.apache.jena.sparql.pfunction.PropFuncArg ;
@@ -39,6 +43,7 @@ import org.apache.jena.sparql.pfunction.PropertyFunctionBase ;
 import org.apache.jena.sparql.util.Context ;
 import org.apache.jena.sparql.util.IterLib ;
 import org.apache.jena.sparql.util.NodeFactoryExtra ;
+import org.apache.jena.util.iterator.Map1Iterator ;
 import org.apache.lucene.queryparser.classic.QueryParserBase ;
 import org.slf4j.Logger ;
 import org.slf4j.LoggerFactory ;
@@ -65,8 +70,8 @@ public class TextQueryPF extends PropertyFunctionBase {
         DatasetGraph dsg = execCxt.getDataset() ;
         server = chooseTextIndex(dsg) ;
 
-        if (!argSubject.isNode())
-            throw new QueryBuildException("Subject is not a single node: " + argSubject) ;
+        if (argSubject.isList() && argSubject.getArgListSize() != 2)
+            throw new QueryBuildException("Subject has "+argSubject.getArgList().size()+" elements, not 2: "+argSubject);
 
         if (argObject.isList()) {
             List<Node> list = argObject.getArgList() ;
@@ -116,11 +121,20 @@ public class TextQueryPF extends PropertyFunctionBase {
 
         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() ;
+        
+        Node s = null;
+        Node score = null;
+
+        if (argSubject.isList()) {
+            // Length checked in build()
+            s = argSubject.getArg(0);
+            score = argSubject.getArg(1);
+            
+            if (!score.isVariable())
+                throw new QueryExecException("Hit score is not a variable: "+argSubject) ;
+        } else {
+            s = argSubject.getArg() ;
+        }
 
         if (s.isLiteral())
             // Does not match
@@ -135,37 +149,52 @@ public class TextQueryPF extends PropertyFunctionBase {
         // ----
 
         QueryIterator qIter = (Var.isVar(s)) 
-            ? variableSubject(binding, s, match, execCxt) 
-            : concreteSubject(binding, s, match, execCxt) ;
+            ? variableSubject(binding, s, score, match, execCxt) 
+            : concreteSubject(binding, s, score, match, execCxt) ;
         if (match.getLimit() >= 0)
             qIter = new QueryIterSlice(qIter, 0, match.getLimit(), execCxt) ;
         return qIter ;
     }
 
-    private QueryIterator variableSubject(Binding binding, Node s, StrMatch match, ExecutionContext execCxt) {
-        Var v = Var.alloc(s) ;
-        List<Node> r = query(match.getQueryString(), match.getLimit(), execCxt) ;
+    private QueryIterator variableSubject(Binding binding, Node s, Node score, StrMatch match, ExecutionContext execCxt) {
+        Var sVar = Var.alloc(s) ;
+        Var scoreVar = (score==null) ? null : Var.alloc(score) ;
+        List<TextHit> r = query(match.getQueryString(), match.getLimit(), execCxt) ;
         // Make distinct. Note interaction with limit is imperfect
-        r = Iter.iter(r).distinct().toList() ;
+/*        r = Iter.iter(r).distinct().toList() ;
         QueryIterator qIter = new QueryIterExtendByVar(binding, v, r.iterator(), execCxt) ;
+*/
+        Function<TextHit,Binding> converter = new TextHitConverter(binding, sVar, scoreVar);
+        Iterator<Binding> bIter = new Map1Iterator<TextHit, Binding>(converter, r.iterator());
+        QueryIterator qIter = new QueryIterPlainWrapper(bIter, execCxt);
         return qIter ;
     }
 
-    private QueryIterator concreteSubject(Binding binding, Node s, StrMatch match, ExecutionContext execCxt) {
+    private QueryIterator concreteSubject(Binding binding, Node s, Node score, StrMatch match, ExecutionContext execCxt) {
         if (!s.isURI()) {
             log.warn("Subject not a URI: " + s) ;
             return IterLib.noResults(execCxt) ;
         }
 
+        Var scoreVar = (score==null) ? null : Var.alloc(score) ;
         String qs = match.getQueryString() ;
-        List<Node> x = query(match.getQueryString(), -1, execCxt) ;
-        if ( x == null || ! x.contains(s) )
+        List<TextHit> x = query(match.getQueryString(), -1, execCxt) ;
+        
+        if ( x == null ) // null return value - empty result
             return IterLib.noResults(execCxt) ;
-        else
-            return IterLib.result(binding, execCxt) ;
+        
+        for (TextHit hit : x ) {
+            if (hit.getNode().equals(s)) {
+                // found the node among the hits
+                return IterLib.oneResult(binding, scoreVar, NodeFactoryExtra.floatToNode(hit.getScore()), execCxt) ;
+            }
+        }
+
+        // node was not among the hits - empty result
+        return IterLib.noResults(execCxt) ;
     }
 
-    private List<Node> query(String queryString, int limit, ExecutionContext execCxt) {
+    private List<TextHit> query(String queryString, int limit, ExecutionContext execCxt) {
         // use the graph information in the text index if possible
         if (server.getDocDef().getGraphField() != null
             && execCxt.getActiveGraph() instanceof GraphView) {

http://git-wip-us.apache.org/repos/asf/jena/blob/4c99ec53/jena-text/src/test/java/org/apache/jena/query/text/AbstractTestDatasetWithTextIndex.java
----------------------------------------------------------------------
diff --git a/jena-text/src/test/java/org/apache/jena/query/text/AbstractTestDatasetWithTextIndex.java b/jena-text/src/test/java/org/apache/jena/query/text/AbstractTestDatasetWithTextIndex.java
index 75b3682..66da667 100644
--- a/jena-text/src/test/java/org/apache/jena/query/text/AbstractTestDatasetWithTextIndex.java
+++ b/jena-text/src/test/java/org/apache/jena/query/text/AbstractTestDatasetWithTextIndex.java
@@ -18,8 +18,11 @@
 
 package org.apache.jena.query.text;
 
+import static org.junit.Assert.assertTrue;
+
 import java.util.Arrays ;
 import java.util.HashSet ;
+import java.util.Map ;
 import java.util.Set ;
 
 import org.apache.jena.atlas.lib.StrUtils ;
@@ -92,6 +95,24 @@ public abstract class AbstractTestDatasetWithTextIndex extends AbstractTestDatas
         doTestSearch(turtle, queryString, expectedURIs);
     }
 
+
+    @Test
+    public void propertyFunctionText_1_score() {
+        // As before but capturing the score in a variable.
+        final String turtle = PF_DATA ;
+        String queryString = StrUtils.strjoinNL(
+                QUERY_PROLOG,
+                "SELECT ?s ?score",
+                "WHERE {",
+                "    (?s ?score) text:query ('text') .",
+                "}"
+                );
+
+        Set<String> expectedURIs = new HashSet<>();
+        expectedURIs.addAll( Arrays.asList( R_S1 ) ) ;
+        doTestSearchWithScores(turtle, queryString, expectedURIs);
+    }
+
     @Test
     public void propertyFunctionText_2() {
         final String turtle = PF_DATA ;
@@ -125,6 +146,24 @@ public abstract class AbstractTestDatasetWithTextIndex extends AbstractTestDatas
     }
 
     @Test
+    public void propertyFunctionText_2_score() {
+        // As before but capturing the score in a variable.
+        final String turtle = PF_DATA ;
+        String queryString = StrUtils.strjoinNL(
+                QUERY_PROLOG,
+                "SELECT ?s ?score",
+                "WHERE {",
+                "    (?s ?score) text:query ('text') .",
+                "    ?s rdfs:label 'text' .",
+                "}"
+                );
+
+        Set<String> expectedURIs = new HashSet<>();
+        expectedURIs.addAll( Arrays.asList( R_S1 ) ) ;
+        doTestSearchWithScores(turtle, queryString, expectedURIs);
+    }
+
+    @Test
     public void propertyFunctionText_3() {
         final String turtle = PF_DATA ;
         String queryString = StrUtils.strjoinNL(
@@ -157,6 +196,24 @@ public abstract class AbstractTestDatasetWithTextIndex extends AbstractTestDatas
     }
     
     @Test
+    public void propertyFunctionText_3_score() {
+        // As before but capturing the score in a variable.
+        final String turtle = PF_DATA ;
+        String queryString = StrUtils.strjoinNL(
+                QUERY_PROLOG,
+                "SELECT ?s ?score",
+                "WHERE {",
+                "    ?s rdfs:label 'text' .",
+                "    (?s ?score) text:query ('text') .",
+                "}"
+                );
+
+        Set<String> expectedURIs = new HashSet<>();
+        expectedURIs.addAll( Arrays.asList( R_S1 ) ) ;
+        doTestSearchWithScores(turtle, queryString, expectedURIs);
+    }
+
+    @Test
     public void propertyFunctionText_4() {
         final String turtle = PF_DATA ;
         String queryString = StrUtils.strjoinNL(
@@ -276,6 +333,34 @@ public abstract class AbstractTestDatasetWithTextIndex extends AbstractTestDatas
     }
 
     @Test
+    public void testMultipleResults_score() {
+        final String turtle = StrUtils.strjoinNL(
+                TURTLE_PROLOG,
+                "<" + RESOURCE_BASE + "brownfox>",
+                "  rdfs:label 'The quick brown fox jumped over the lazy dog.'",
+                ".",
+                "<" + RESOURCE_BASE + "redfox>",
+                "  rdfs:label 'red fox'",
+                "."
+                );
+        String queryString = StrUtils.strjoinNL(
+                QUERY_PROLOG,
+                "SELECT ?s ?score",
+                "WHERE {",
+                "    (?s ?score) text:query ( rdfs:label 'brown fox' 10 ) .",
+                "}"
+                );
+        Set<String> expectedURIs = new HashSet<>();
+        expectedURIs.addAll( Arrays.asList(
+                RESOURCE_BASE + "brownfox",
+                RESOURCE_BASE + "redfox"
+            ));
+        Map<String,Float> scores = doTestSearchWithScores(turtle, queryString, expectedURIs);
+        // the entry for ("The quick brown fox...") should have a higher score since it's a better match
+        assertTrue(scores.get(RESOURCE_BASE + "brownfox") > scores.get(RESOURCE_BASE + "redfox"));
+    }
+
+    @Test
     public void testSearchCorrectField() {
         String label = "tscf";
         String label2 = "tscfo";

http://git-wip-us.apache.org/repos/asf/jena/blob/4c99ec53/jena-text/src/test/java/org/apache/jena/query/text/AbstractTestDatasetWithTextIndexBase.java
----------------------------------------------------------------------
diff --git a/jena-text/src/test/java/org/apache/jena/query/text/AbstractTestDatasetWithTextIndexBase.java b/jena-text/src/test/java/org/apache/jena/query/text/AbstractTestDatasetWithTextIndexBase.java
index b51651f..97f16e7 100644
--- a/jena-text/src/test/java/org/apache/jena/query/text/AbstractTestDatasetWithTextIndexBase.java
+++ b/jena-text/src/test/java/org/apache/jena/query/text/AbstractTestDatasetWithTextIndexBase.java
@@ -23,6 +23,8 @@ import static org.junit.Assert.assertTrue;
 
 import java.io.Reader;
 import java.io.StringReader;
+import java.util.HashMap;
+import java.util.Map;
 import java.util.Set;
 
 import org.apache.jena.atlas.lib.StrUtils;
@@ -73,7 +75,6 @@ public abstract class AbstractTestDatasetWithTextIndexBase {
         dataset.begin(ReadWrite.READ);
         try(QueryExecution qexec = QueryExecutionFactory.create(query, dataset)) {
             ResultSet results = qexec.execSelect() ;
-            
             assertEquals(label, expectedNumResults > 0, results.hasNext());
             int count;
             for (count=0; results.hasNext(); count++) {
@@ -86,4 +87,36 @@ public abstract class AbstractTestDatasetWithTextIndexBase {
             dataset.end() ;
         }        
     }
+    
+    protected Map<String,Float> doTestSearchWithScores(String turtle, String queryString, Set<String> expectedEntityURIs) {
+        Model model = dataset.getDefaultModel();
+        Reader reader = new StringReader(turtle);
+        dataset.begin(ReadWrite.WRITE);
+        model.read(reader, "", "TURTLE");
+        dataset.commit();
+        
+        Map<String,Float> scores = new HashMap<>();
+
+        Query query = QueryFactory.create(queryString) ;
+        dataset.begin(ReadWrite.READ);
+        try(QueryExecution qexec = QueryExecutionFactory.create(query, dataset)) {
+            ResultSet results = qexec.execSelect() ;
+            
+            assertEquals(expectedEntityURIs.size() > 0, results.hasNext());
+            int count;
+            for (count=0; results.hasNext(); count++) {
+                QuerySolution soln = results.nextSolution();
+                String entityUri = soln.getResource("s").getURI();
+                assertTrue(expectedEntityURIs.contains(entityUri));
+                float score = soln.getLiteral("score").getFloat();
+                scores.put(entityUri, score);
+            }
+            assertEquals(expectedEntityURIs.size(), count);
+        }
+        finally {
+            dataset.end() ;
+        }
+        return scores;
+    }
+    
 }


[13/13] jena git commit: This closes #72

Posted by an...@apache.org.
This closes #72


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

Branch: refs/heads/master
Commit: 999972e0ad332f048af56c876b51a804a0b030ba
Parents: 03637fc
Author: Andy Seaborne <an...@apache.org>
Authored: Tue Jun 2 13:56:10 2015 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Tue Jun 2 13:56:10 2015 +0100

----------------------------------------------------------------------

----------------------------------------------------------------------



[12/13] jena git commit: Merge commit 'refs/pull/72/head' of github.com:apache/jena

Posted by an...@apache.org.
Merge commit 'refs/pull/72/head' of github.com:apache/jena


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

Branch: refs/heads/master
Commit: 03637fcbffc677cf64cb424adf0f457fe8f8393b
Parents: bcba645 5d2a32f
Author: Andy Seaborne <an...@apache.org>
Authored: Tue Jun 2 13:53:59 2015 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Tue Jun 2 13:53:59 2015 +0100

----------------------------------------------------------------------
 .../jena/query/text/DatasetGraphText.java       | 10 +--
 .../org/apache/jena/query/text/TextHit.java     | 41 ++++++++++
 .../jena/query/text/TextHitConverter.java       | 51 ++++++++++++
 .../org/apache/jena/query/text/TextIndex.java   |  7 +-
 .../apache/jena/query/text/TextIndexLucene.java | 13 ++-
 .../apache/jena/query/text/TextIndexSolr.java   | 15 ++--
 .../org/apache/jena/query/text/TextQueryPF.java | 73 ++++++++++-------
 .../text/AbstractTestDatasetWithTextIndex.java  | 85 ++++++++++++++++++++
 .../AbstractTestDatasetWithTextIndexBase.java   | 35 +++++++-
 9 files changed, 277 insertions(+), 53 deletions(-)
----------------------------------------------------------------------



[03/13] jena git commit: cleanup obsolete code

Posted by an...@apache.org.
cleanup obsolete code


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

Branch: refs/heads/master
Commit: 6d01a6ac99be56b6fe05f12a4abf484e4d3d4430
Parents: 3f0c517
Author: Osma Suominen <os...@aalto.fi>
Authored: Mon May 25 17:21:41 2015 +0300
Committer: Osma Suominen <os...@aalto.fi>
Committed: Mon May 25 17:21:41 2015 +0300

----------------------------------------------------------------------
 .../src/main/java/org/apache/jena/query/text/TextQueryPF.java    | 4 ----
 1 file changed, 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/6d01a6ac/jena-text/src/main/java/org/apache/jena/query/text/TextQueryPF.java
----------------------------------------------------------------------
diff --git a/jena-text/src/main/java/org/apache/jena/query/text/TextQueryPF.java b/jena-text/src/main/java/org/apache/jena/query/text/TextQueryPF.java
index 4b37d95..ab1a908 100644
--- a/jena-text/src/main/java/org/apache/jena/query/text/TextQueryPF.java
+++ b/jena-text/src/main/java/org/apache/jena/query/text/TextQueryPF.java
@@ -185,10 +185,6 @@ public class TextQueryPF extends PropertyFunctionBase {
         Var sVar = Var.alloc(s) ;
         Var scoreVar = (score==null) ? null : Var.alloc(score) ;
         List<TextHit> r = query(match.getQueryString(), match.getLimit(), execCxt) ;
-        // Make distinct. Note interaction with limit is imperfect
-/*        r = Iter.iter(r).distinct().toList() ;
-        QueryIterator qIter = new QueryIterExtendByVar(binding, v, r.iterator(), execCxt) ;
-*/
         Function<TextHit,Binding> converter = new TextHitConverter(binding, sVar, scoreVar);
         Iterator<Binding> bIter = new Map1Iterator<TextHit, Binding>(converter, r.iterator());
         QueryIterator qIter = new QueryIterPlainWrapper(bIter, execCxt);


[08/13] jena git commit: remove unused import QueryIterExtendByVar

Posted by an...@apache.org.
remove unused import QueryIterExtendByVar


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

Branch: refs/heads/master
Commit: 3f98378c1e70b6256e02c8d9835157ed6c1924d2
Parents: 40b10a0
Author: Osma Suominen <os...@aalto.fi>
Authored: Tue Jun 2 09:58:10 2015 +0300
Committer: Osma Suominen <os...@aalto.fi>
Committed: Tue Jun 2 09:58:10 2015 +0300

----------------------------------------------------------------------
 jena-text/src/main/java/org/apache/jena/query/text/TextQueryPF.java | 1 -
 1 file changed, 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/3f98378c/jena-text/src/main/java/org/apache/jena/query/text/TextQueryPF.java
----------------------------------------------------------------------
diff --git a/jena-text/src/main/java/org/apache/jena/query/text/TextQueryPF.java b/jena-text/src/main/java/org/apache/jena/query/text/TextQueryPF.java
index 587f562..95dd87c 100644
--- a/jena-text/src/main/java/org/apache/jena/query/text/TextQueryPF.java
+++ b/jena-text/src/main/java/org/apache/jena/query/text/TextQueryPF.java
@@ -34,7 +34,6 @@ import org.apache.jena.sparql.core.* ;
 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.QueryIterPlainWrapper ;
 import org.apache.jena.sparql.engine.iterator.QueryIterSlice ;
 import org.apache.jena.sparql.mgt.Explain ;


[02/13] jena git commit: Merge remote-tracking branch 'upstream/master'

Posted by an...@apache.org.
Merge remote-tracking branch 'upstream/master'


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

Branch: refs/heads/master
Commit: 3f0c5173eb59b37011d985e491a73cdd2dc93b31
Parents: 4c99ec5 66a1eda
Author: Osma Suominen <os...@aalto.fi>
Authored: Mon May 25 15:57:38 2015 +0300
Committer: Osma Suominen <os...@aalto.fi>
Committed: Mon May 25 15:57:38 2015 +0300

----------------------------------------------------------------------
 .../main/java/org/apache/jena/query/ARQ.java    |    4 +-
 .../main/java/org/apache/jena/query/Query.java  |   17 +
 .../apache/jena/riot/out/NodeFormatterBase.java |    2 +-
 .../org/apache/jena/riot/system/RiotChars.java  |   44 +-
 .../apache/jena/riot/thrift/ThriftConvert.java  |    8 +
 .../org/apache/jena/sparql/ARQConstants.java    |   13 +-
 .../apache/jena/sparql/core/VarExprList.java    |   12 +-
 .../jena/sparql/modify/GraphStoreBasic.java     |    1 +
 .../jena/sparql/modify/GraphStoreNull.java      |    3 +
 .../modify/GraphStoreNullTransactional.java     |    2 +
 .../jena/sparql/modify/GraphStoreWrapper.java   |    1 +
 .../pfunction/PropertyFunctionRegistry.java     |    9 +-
 .../sparql/serializer/FormatterElement.java     |    4 +-
 .../jena/sparql/syntax/ElementDataset.java      |   13 +-
 .../jena/sparql/syntax/ElementWalker.java       |    4 +-
 .../sparql/syntax/RecursiveElementVisitor.java  |    2 +-
 .../apache/jena/sparql/util/MappedLoader.java   |   29 +-
 .../jena/sparql/vocabulary/ListPFunction.java   |   65 +-
 .../java/org/apache/jena/update/GraphStore.java |   14 +-
 .../src/main/java/riotcmd/CmdLangParse.java     |    2 +-
 .../apache/jena/riot/thrift/TS_RDFThrift.java   |    1 -
 .../apache/jena/riot/thrift/TestThriftTerm.java |   48 +-
 .../sparql/api/TestQueryExecutionTimeout1.java  |    2 +-
 .../sparql/api/TestQueryExecutionTimeout2.java  |    2 +-
 .../org/apache/jena/sparql/path/TestPathPF.java |   10 +-
 jena-arq/testing/ARQ/EngineMain/filter-1.rq     |    2 +-
 jena-arq/testing/ARQ/Function/concat-1.arq      |    2 +-
 jena-arq/testing/ARQ/Function/concat-2.arq      |    2 +-
 jena-arq/testing/ARQ/Function/func-03.rq        |    2 +-
 jena-arq/testing/ARQ/Function/func-04.rq        |    2 +-
 jena-arq/testing/ARQ/Function/func-sha1sum-1.rq |    2 +-
 jena-arq/testing/ARQ/Function/func-sha1sum-2.rq |    2 +-
 jena-arq/testing/ARQ/Function/localname-1.rq    |    2 +-
 jena-arq/testing/ARQ/Function/namespace-1.rq    |    2 +-
 jena-arq/testing/ARQ/Function/q-lang-1.rq       |    2 +-
 jena-arq/testing/ARQ/Function/q-lang-2.rq       |    2 +-
 jena-arq/testing/ARQ/Function/strjoin-1.arq     |    2 +-
 jena-arq/testing/ARQ/Function/strjoin-2.arq     |    2 +-
 jena-arq/testing/ARQ/Function/strlen-1.rq       |    2 +-
 jena-arq/testing/ARQ/Function/strlen-2.rq       |    2 +-
 jena-arq/testing/ARQ/Function/substring-1.rq    |    2 +-
 jena-arq/testing/ARQ/Function/substring-2.rq    |    2 +-
 jena-arq/testing/ARQ/Function/substring-3.rq    |    2 +-
 .../testing/ARQ/PropertyFunctions/assign-1.rq   |    2 +-
 .../testing/ARQ/PropertyFunctions/assign-2.rq   |    2 +-
 .../testing/ARQ/PropertyFunctions/assign-3.rq   |    2 +-
 .../testing/ARQ/PropertyFunctions/assign-4.rq   |    2 +-
 .../testing/ARQ/PropertyFunctions/assign-5.rq   |    2 +-
 .../testing/ARQ/PropertyFunctions/assign-6.rq   |    2 +-
 .../testing/ARQ/PropertyFunctions/concat-1.rq   |    2 +-
 .../testing/ARQ/PropertyFunctions/list-1.rq     |    2 +-
 .../testing/ARQ/PropertyFunctions/list-2.rq     |    2 +-
 .../testing/ARQ/PropertyFunctions/list-3.rq     |    2 +-
 .../testing/ARQ/PropertyFunctions/list-4.rq     |    2 +-
 .../testing/ARQ/PropertyFunctions/list-5.rq     |    2 +-
 .../testing/ARQ/PropertyFunctions/list-6.rq     |    2 +-
 .../testing/ARQ/PropertyFunctions/list-7.rq     |    2 +-
 .../testing/ARQ/PropertyFunctions/list-8.rq     |    2 +-
 .../testing/ARQ/PropertyFunctions/list-9.rq     |    2 +-
 .../ARQ/PropertyFunctions/list-index-1.rq       |    2 +-
 .../ARQ/PropertyFunctions/list-index-2.rq       |    2 +-
 .../ARQ/PropertyFunctions/list-index-3.rq       |    2 +-
 .../ARQ/PropertyFunctions/list-index-4.rq       |    2 +-
 .../ARQ/PropertyFunctions/list-index-5.rq       |    2 +-
 .../ARQ/PropertyFunctions/list-index-6.rq       |    2 +-
 .../ARQ/PropertyFunctions/list-index-7.rq       |    2 +-
 .../ARQ/PropertyFunctions/list-index-8.rq       |    2 +-
 .../ARQ/PropertyFunctions/list-index-9.rq       |    2 +-
 .../ARQ/PropertyFunctions/list-length-1.rq      |    2 +-
 .../ARQ/PropertyFunctions/list-length-2.rq      |    2 +-
 .../ARQ/PropertyFunctions/list-length-3.rq      |    2 +-
 jena-arq/testing/ARQ/PropertyFunctions/seq-1.rq |    2 +-
 .../testing/ARQ/PropertyFunctions/splitIRI-1.rq |    2 +-
 .../testing/ARQ/PropertyFunctions/splitIRI-2.rq |    2 +-
 .../testing/ARQ/PropertyFunctions/splitIRI-3.rq |    2 +-
 .../testing/ARQ/PropertyFunctions/splitIRI-4.rq |    2 +-
 .../testing/ARQ/PropertyFunctions/splitIRI-5.rq |    2 +-
 .../testing/ARQ/PropertyFunctions/splitIRI-6.rq |    2 +-
 .../testing/ARQ/PropertyFunctions/splitIRI-7.rq |    2 +-
 .../testing/ARQ/PropertyFunctions/splitIRI-8.rq |    2 +-
 .../testing/ARQ/PropertyFunctions/splitIRI-9.rq |    2 +-
 jena-arq/testing/ARQ/PropertyFunctions/str-1.rq |    2 +-
 jena-arq/testing/ARQ/Sort/order-3.rq            |    2 +-
 .../testing/ARQ/SubQuery/graph-subquery-1.rq    |    2 +-
 .../java/org/apache/jena/atlas/lib/Bytes.java   |   22 +
 .../java/org/apache/jena/atlas/logging/Log.java |   11 +
 .../org/apache/jena/atlas/lib/TestBytes.java    |   22 +
 jena-core/pom.xml                               |  474 ++---
 .../apache/jena/assembler/AssemblerHelp.java    |    9 +-
 .../java/org/apache/jena/util/SplitIRI.java     |  313 ++++
 .../jena/assembler/test/TestAssemblerGroup.java |   18 +-
 .../apache/jena/graph/GraphContractTest.java    | 1729 ++++++++++++++++++
 .../graph/GraphEventManagerContractTest.java    |  500 +++++
 .../jena/graph/GraphMakerContractTest.java      |  295 +++
 .../graph/GraphWithPerformContractTest.java     |   86 +
 .../jena/graph/RecordingGraphListener.java      |   92 +
 .../graph/TransactionHandlerContractTest.java   |  136 ++
 .../apache/jena/graph/compose/DeltaTest.java    |  110 ++
 .../jena/graph/compose/DifferenceTest.java      |   97 +
 .../jena/graph/compose/IntersectionTest.java    |  109 ++
 .../apache/jena/graph/compose/UnionTest.java    |  185 ++
 .../jena/graph/impl/CollectionGraph_CS.java     |   67 +
 .../jena/graph/impl/SimpleEventManager_CS.java  |   54 +
 .../jena/graph/impl/SimpleGraphMaker_CS.java    |   54 +
 .../graph/impl/SimpleTransactionHandler_CS.java |   54 +
 .../jena/graph/impl/TestCollectionGraph.java    |   39 -
 .../graph/impl/TripleStoreContractTest.java     |  160 ++
 .../apache/jena/graph/impl/WrappedGraph_CS.java |   63 +
 .../java/org/apache/jena/mem/ArrayBunch_CS.java |   52 +
 .../apache/jena/mem/BunchMapContractTest.java   |  163 ++
 .../java/org/apache/jena/mem/GraphMem_CS.java   |  115 ++
 .../apache/jena/mem/GraphTripleStoreMem_CS.java |   51 +
 .../apache/jena/mem/GraphTripleStore_CS.java    |   51 +
 .../org/apache/jena/mem/HashedBunchMap_CS.java  |   52 +
 .../apache/jena/mem/HashedTripleBunch_CS.java   |   50 +
 .../java/org/apache/jena/mem/SetBunch_CS.java   |   50 +
 .../jena/mem/TripleBunchContractTest.java       |  205 +++
 .../org/apache/jena/mem/WrappedHashMap_CS.java  |   52 +
 .../AbstractGraphProducer.java                  |  105 ++
 .../AbstractInfModelProducer.java               |   91 +
 .../AbstractModelProducer.java                  |   89 +
 .../AbstractRecordingListener.java              |  190 ++
 .../GraphEventManagerProducerInterface.java     |   35 +
 .../jena/testing_framework/GraphHelper.java     |  508 +++++
 .../testing_framework/IContainerProducer.java   |   37 +
 .../testing_framework/IIteratorProducer.java    |   60 +
 .../jena/testing_framework/INodeProducer.java   |   39 +
 .../testing_framework/IResourceProducer.java    |   28 +
 .../testing_framework/IStatementProducer.java   |   45 +
 .../testing_framework/ITripleStoreProducer.java |   35 +
 .../jena/testing_framework/ModelHelper.java     |  401 ++++
 .../jena/testing_framework/NodeCreateUtils.java |  177 ++
 .../NodeProducerInterface.java                  |   32 +
 .../jena/testing_framework/TestFileData.java    |  398 ++++
 .../jena/testing_framework/TestUtils.java       |  320 ++++
 .../testing_framework/manifest/Manifest.java    |  228 +++
 .../manifest/ManifestException.java             |   48 +
 .../manifest/ManifestFile.java                  |   38 +
 .../manifest/ManifestItem.java                  |   71 +
 .../manifest/ManifestItemHandler.java           |   32 +
 .../manifest/ManifestSuite.java                 |  143 ++
 .../manifest/ManifestTest.java                  |   31 +
 .../manifest/ManifestTestRunner.java            |   93 +
 .../jena/testing_framework/package-info.java    |  109 ++
 .../testing_framework/tuples/TupleItem.java     |   84 +
 .../jena/testing_framework/tuples/TupleSet.java |  274 +++
 .../java/org/apache/jena/util/TestPackage.java  |    7 +-
 .../org/apache/jena/util/TestSplitIRI_TTL.java  |  160 ++
 .../org/apache/jena/util/TestSplitIRI_XML.java  |  138 ++
 .../java/org/apache/jena/util/TestUtil.java     |  138 --
 .../hadoop/rdf/io/input/QuadsInputFormat.java   |    5 +-
 .../hadoop/rdf/io/input/TriplesInputFormat.java |    5 +-
 .../rdf/io/input/TriplesOrQuadsInputFormat.java |    5 +-
 .../io/input/jsonld/JsonLDQuadInputFormat.java  |    5 +-
 .../input/jsonld/JsonLDTripleInputFormat.java   |    5 +-
 .../input/nquads/BlockedNQuadsInputFormat.java  |    5 +-
 .../rdf/io/input/nquads/NQuadsInputFormat.java  |    5 +-
 .../nquads/WholeFileNQuadsInputFormat.java      |    5 +-
 .../ntriples/BlockedNTriplesInputFormat.java    |    5 +-
 .../io/input/ntriples/NTriplesInputFormat.java  |    5 +-
 .../ntriples/WholeFileNTriplesInputFormat.java  |    5 +-
 .../io/input/rdfjson/RdfJsonInputFormat.java    |    5 +-
 .../rdf/io/input/rdfxml/RdfXmlInputFormat.java  |    5 +-
 .../AbstractBlockBasedNodeTupleReader.java      |   10 +-
 .../AbstractLineBasedNodeTupleReader.java       |   12 +-
 .../AbstractWholeFileNodeTupleReader.java       |   10 +-
 .../io/input/thrift/ThriftQuadInputFormat.java  |    5 +-
 .../input/thrift/ThriftTripleInputFormat.java   |    5 +-
 .../rdf/io/input/trig/TriGInputFormat.java      |    5 +-
 .../rdf/io/input/trix/TriXInputFormat.java      |    5 +-
 .../rdf/io/input/turtle/TurtleInputFormat.java  |    5 +-
 .../rdf/io/output/AbstractNodeOutputFormat.java |    4 +-
 .../output/AbstractNodeTupleOutputFormat.java   |    4 +-
 .../writers/AbstractBatchedNodeTupleWriter.java |    4 +-
 .../AbstractLineBasedNodeTupleWriter.java       |    5 +-
 .../io/output/writers/AbstractNodeWriter.java   |    5 +-
 .../AbstractStreamRdfNodeTupleWriter.java       |    6 +-
 .../AbstractWholeFileNodeTupleWriter.java       |    4 +-
 .../registry/readers/JsonLDReaderFactory.java   |    6 +-
 .../registry/readers/NQuadsReaderFactory.java   |    4 +-
 .../registry/readers/NTriplesReaderFactory.java |    3 +-
 .../registry/readers/RdfJsonReaderFactory.java  |    4 +-
 .../registry/readers/RdfXmlReaderFactory.java   |    4 +-
 .../registry/readers/ThriftReaderFactory.java   |    6 +-
 .../io/registry/readers/TriGReaderFactory.java  |    4 +-
 .../io/registry/readers/TriXReaderFactory.java  |    4 +-
 .../registry/readers/TurtleReaderFactory.java   |    4 +-
 .../registry/writers/JsonLDWriterFactory.java   |    7 +-
 .../registry/writers/NQuadsWriterFactory.java   |    4 +-
 .../registry/writers/NTriplesWriterFactory.java |    4 +-
 .../registry/writers/RdfJsonWriterFactory.java  |    4 +-
 .../registry/writers/RdfXmlWriterFactory.java   |    4 +-
 .../registry/writers/ThriftWriterFactory.java   |    7 +-
 .../io/registry/writers/TriGWriterFactory.java  |    4 +-
 .../io/registry/writers/TriXWriterFactory.java  |    4 +-
 .../registry/writers/TurtleWriterFactory.java   |    4 +-
 .../AbstractNodeTupleInputFormatTests.java      |   25 +-
 .../AbstractWholeFileQuadInputFormatTests.java  |    2 +-
 .../io/input/bnodes/AbstractBlankNodeTests.java |    2 -
 ...CompressedWholeFileQuadInputFormatTests.java |    2 +-
 .../apache/jena/hadoop/rdf/stats/RdfStats.java  |   17 +-
 jena-elephas/pom.xml                            |    2 +-
 .../querybuilder/handlers/DatasetHandler.java   |   49 +-
 .../jena/arq/querybuilder/handlers/Handler.java |   16 -
 .../querybuilder/handlers/SelectHandler.java    |   31 +-
 .../handlers/SolutionModifierHandler.java       |   21 +-
 .../arq/querybuilder/handlers/WhereHandler.java |   33 +-
 .../querybuilder/rewriters/ElementRewriter.java |    4 +-
 .../querybuilder/clauses/WhereClauseTest.java   |    2 +-
 .../handlers/SelectHandlerTest.java             |    9 +-
 .../querybuilder/handlers/WhereHandlerTest.java |    4 +-
 .../apache/jena/fuseki/mgt/ActionBackup.java    |   35 +-
 .../apache/jena/fuseki/server/FusekiConfig.java |    8 +-
 .../jena/fuseki/servlets/SPARQL_REST.java       |    4 +-
 .../fuseki/servlets/SimpleVelocityServlet.java  |    2 +-
 .../org/apache/jena/fuseki/build/Builder.java   |    6 +-
 .../jena/fuseki/build/DataServiceDesc.java      |  106 --
 .../apache/jena/fuseki/build/FusekiConfig.java  |    5 +-
 .../apache/jena/fuseki/mgt/ActionDatasets.java  |    3 +-
 .../apache/jena/fuseki/server/DataService.java  |   15 +-
 .../apache/jena/fuseki/server/SystemState.java  |    6 +-
 .../apache/jena/fuseki/servlets/ActionBase.java |    4 +-
 .../apache/jena/fuseki/servlets/ActionREST.java |    4 +-
 .../jena/fuseki/servlets/FusekiFilter.java      |    2 +-
 .../jena/fuseki/servlets/SPARQL_Upload.java     |  104 +-
 .../org/apache/jena/fuseki/TestDatasetOps.java  |   14 +-
 .../AbstractJenaConnectionTests.java            |    4 +-
 jena-parent/pom.xml                             |   12 +-
 .../java/org/apache/jena/sdb/SDBFactory.java    |   67 +-
 .../jena/sdb/layout1/TupleLoaderSimple.java     |    6 +-
 .../sdb/layout2/hash/TupleLoaderOneHash.java    |    2 +-
 .../jena/sdb/script/CmdDescAssembler.java       |    2 +-
 .../org/apache/jena/sdb/sql/DataSourceSDB.java  |   14 +-
 .../apache/jena/sdb/store/DatasetGraphSDB.java  |    3 +-
 .../org/apache/jena/sdb/store/FeatureSet.java   |    3 +-
 .../apache/jena/sdb/test/junit/StoreList.java   |    2 +-
 jena-sdb/testing/slist.rq                       |    2 +-
 .../jena/query/spatial/EntityDefinition.java    |    2 -
 .../assembler/EntityDefinitionAssembler.java    |    2 +-
 .../apache/jena/tdb/store/DatasetGraphTDB.java  |    3 +-
 .../transaction/DatasetGraphTransaction.java    |    3 +-
 .../apache/jena/tdb/extra/T_TransSystem.java    |    2 +-
 .../org/apache/jena/tdb/junit/QueryTestTDB.java |    2 +-
 .../main/java/examples/JenaTextExample1.java    |    6 +-
 .../java/org/apache/jena/query/text/Entity.java |    9 +-
 .../jena/query/text/EntityDefinition.java       |   56 +-
 .../jena/query/text/TextDatasetFactory.java     |   50 +-
 .../apache/jena/query/text/TextIndexConfig.java |   61 +
 .../apache/jena/query/text/TextIndexLucene.java |   68 +-
 .../query/text/TextIndexLuceneMultilingual.java |   75 +
 .../apache/jena/query/text/TextQueryFuncs.java  |    9 +-
 .../org/apache/jena/query/text/TextQueryPF.java |   39 +-
 .../apache/jena/query/text/analyzer/Util.java   |   96 +
 .../assembler/EntityDefinitionAssembler.java    |   10 +-
 .../assembler/LocalizedAnalyzerAssembler.java   |   60 +
 .../query/text/assembler/TextAssembler.java     |    1 +
 .../assembler/TextIndexLuceneAssembler.java     |   40 +-
 .../jena/query/text/assembler/TextVocab.java    |    5 +
 ...ractTestDatasetWithLuceneGraphTextIndex.java |    6 +-
 .../org/apache/jena/query/text/TS_Text.java     |    3 +
 .../jena/query/text/TestBuildTextDataset.java   |    5 +-
 .../text/TestDatasetWithLocalizedAnalyzer.java  |  147 ++
 ...tDatasetWithLuceneMultilingualTextIndex.java |  238 +++
 ...DatasetWithLuceneTextIndexWithLangField.java |  126 ++
 .../text/TestLuceneWithMultipleThreads.java     |   10 +-
 .../org/apache/jena/query/text/TestTextTDB.java |    5 +-
 jena-text/testing/TextQuery/data.skos           |   36 +
 267 files changed, 10981 insertions(+), 1237 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/3f0c5173/jena-text/src/main/java/org/apache/jena/query/text/TextIndexLucene.java
----------------------------------------------------------------------
diff --cc jena-text/src/main/java/org/apache/jena/query/text/TextIndexLucene.java
index 98a0f63,cd9ea2f..983e3a2
--- a/jena-text/src/main/java/org/apache/jena/query/text/TextIndexLucene.java
+++ b/jena-text/src/main/java/org/apache/jena/query/text/TextIndexLucene.java
@@@ -303,9 -321,9 +321,9 @@@ public class TextIndexLucene implement
          }
      }
  
 -    private List<Node> query$(IndexReader indexReader, String qs, int limit) throws ParseException, IOException {
 +    private List<TextHit> query$(IndexReader indexReader, String qs, int limit) throws ParseException, IOException {
          IndexSearcher indexSearcher = new IndexSearcher(indexReader) ;
-         Query query = parseQuery(qs, docDef.getPrimaryField(), queryAnalyzer) ;
+         Query query = preParseQuery(qs, docDef.getPrimaryField(), queryAnalyzer) ;
          if ( limit <= 0 )
              limit = MAX_N ;
          ScoreDoc[] sDocs = indexSearcher.search(query, limit).scoreDocs ;

http://git-wip-us.apache.org/repos/asf/jena/blob/3f0c5173/jena-text/src/main/java/org/apache/jena/query/text/TextQueryPF.java
----------------------------------------------------------------------
diff --cc jena-text/src/main/java/org/apache/jena/query/text/TextQueryPF.java
index 6520516,81dc412..4b37d95
--- a/jena-text/src/main/java/org/apache/jena/query/text/TextQueryPF.java
+++ b/jena-text/src/main/java/org/apache/jena/query/text/TextQueryPF.java
@@@ -70,10 -67,14 +72,14 @@@ public class TextQueryPF extends Proper
          DatasetGraph dsg = execCxt.getDataset() ;
          server = chooseTextIndex(dsg) ;
  
 -        if (!argSubject.isNode())
 -            throw new QueryBuildException("Subject is not a single node: " + argSubject) ;
 +        if (argSubject.isList() && argSubject.getArgListSize() != 2)
 +            throw new QueryBuildException("Subject has "+argSubject.getArgList().size()+" elements, not 2: "+argSubject);
  
          if (argObject.isList()) {
+             //extract of extra lang arg if present and if is usable.
+             //arg is removed from the list to avoid conflict with order and args length
+             langArg = extractArg("lang", argObject);
+ 
              List<Node> list = argObject.getArgList() ;
              if (list.size() == 0)
                  throw new QueryBuildException("Zero-length argument list") ;


[07/13] jena git commit: add missing @Override declaration

Posted by an...@apache.org.
add missing @Override declaration


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

Branch: refs/heads/master
Commit: 40b10a007bae4ebc0cf5aea77d8bb940c45c2ac1
Parents: 51cb035
Author: Osma Suominen <os...@aalto.fi>
Authored: Tue Jun 2 09:57:12 2015 +0300
Committer: Osma Suominen <os...@aalto.fi>
Committed: Tue Jun 2 09:57:12 2015 +0300

----------------------------------------------------------------------
 .../src/main/java/org/apache/jena/query/text/TextHitConverter.java  | 1 +
 1 file changed, 1 insertion(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/40b10a00/jena-text/src/main/java/org/apache/jena/query/text/TextHitConverter.java
----------------------------------------------------------------------
diff --git a/jena-text/src/main/java/org/apache/jena/query/text/TextHitConverter.java b/jena-text/src/main/java/org/apache/jena/query/text/TextHitConverter.java
index 36ee88b..2894680 100644
--- a/jena-text/src/main/java/org/apache/jena/query/text/TextHitConverter.java
+++ b/jena-text/src/main/java/org/apache/jena/query/text/TextHitConverter.java
@@ -39,6 +39,7 @@ public class TextHitConverter implements Function<TextHit, Binding>
         this.score = score;
     }
     
+    @Override
     public Binding apply(TextHit hit) {
         if (score == null)
             return BindingFactory.binding(binding, match, hit.getNode());


[04/13] jena git commit: Merge branch 'master' of https://github.com/apache/jena

Posted by an...@apache.org.
Merge branch 'master' of https://github.com/apache/jena

Conflicts:
	jena-text/src/main/java/org/apache/jena/query/text/TextIndex.java
	jena-text/src/main/java/org/apache/jena/query/text/TextIndexSolr.java
	jena-text/src/main/java/org/apache/jena/query/text/TextQueryPF.java


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

Branch: refs/heads/master
Commit: 1b125934f585aba3e267f77a36cc03a6771aaaaa
Parents: 3f0c517 e789e9f
Author: Osma Suominen <os...@aalto.fi>
Authored: Fri May 29 15:42:27 2015 +0300
Committer: Osma Suominen <os...@aalto.fi>
Committed: Fri May 29 15:42:27 2015 +0300

----------------------------------------------------------------------
 .../org/apache/jena/riot/lang/ReaderTriX.java   |   3 +-
 .../jena/datatypes/xsd/impl/RDFLangString.java  |   2 +-
 .../apache/jena/graph/test/NodeCreateUtils.java |   4 +-
 jena-fuseki1/soh                                |   2 +-
 jena-fuseki2/apache-jena-fuseki/bin/s-delete    |  16 ++-
 jena-fuseki2/apache-jena-fuseki/bin/s-get       |  16 ++-
 jena-fuseki2/apache-jena-fuseki/bin/s-head      |  16 ++-
 jena-fuseki2/apache-jena-fuseki/bin/s-post      |  16 ++-
 jena-fuseki2/apache-jena-fuseki/bin/s-put       |  16 ++-
 jena-fuseki2/apache-jena-fuseki/bin/s-query     |  16 ++-
 jena-fuseki2/apache-jena-fuseki/bin/s-update    |  16 ++-
 .../apache-jena-fuseki/bin/s-update-form        |  16 ++-
 jena-fuseki2/apache-jena-fuseki/bin/soh         |  16 ++-
 .../jena/fuseki/servlets/SPARQL_Protocol.java   |   9 +-
 .../jena/fuseki/servlets/SPARQL_Query.java      |   9 +-
 .../jena/fuseki/servlets/SPARQL_Update.java     |   7 +-
 .../org/apache/jena/query/text/TextIndex.java   |   4 +-
 .../apache/jena/query/text/TextIndexLucene.java |  24 ++--
 .../query/text/TextIndexParseException.java     |  40 +++++++
 .../apache/jena/query/text/TextIndexSolr.java   | 119 +++++++++----------
 .../org/apache/jena/query/text/TextQueryPF.java |  74 +++++++-----
 21 files changed, 269 insertions(+), 172 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/1b125934/jena-text/src/main/java/org/apache/jena/query/text/TextIndex.java
----------------------------------------------------------------------
diff --cc jena-text/src/main/java/org/apache/jena/query/text/TextIndex.java
index b57db5b,fe19b7b..a34e87a
--- a/jena-text/src/main/java/org/apache/jena/query/text/TextIndex.java
+++ b/jena-text/src/main/java/org/apache/jena/query/text/TextIndex.java
@@@ -45,10 -45,12 +45,12 @@@ public interface TextIndex extends Clos
      //** score
      // Need to have more complex results.
      
-     /** Access the index - limit if -1 for as many as possible */ 
+     /** Access the index - limit if -1 for as many as possible 
+      * Throw QueryParseException for syntax errors in the query string.
+      */ 
 -    List<Node> query(String qs, int limit) ;
 +    List<TextHit> query(String qs, int limit) ;
      
 -    List<Node> query(String qs) ;
 +    List<TextHit> query(String qs) ;
  
      EntityDefinition getDocDef() ;
  }

http://git-wip-us.apache.org/repos/asf/jena/blob/1b125934/jena-text/src/main/java/org/apache/jena/query/text/TextIndexLucene.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/jena/blob/1b125934/jena-text/src/main/java/org/apache/jena/query/text/TextIndexSolr.java
----------------------------------------------------------------------
diff --cc jena-text/src/main/java/org/apache/jena/query/text/TextIndexSolr.java
index 69848d8,718d4c7..b9bddaf
--- a/jena-text/src/main/java/org/apache/jena/query/text/TextIndexSolr.java
+++ b/jena-text/src/main/java/org/apache/jena/query/text/TextIndexSolr.java
@@@ -183,38 -178,36 +178,35 @@@ public class TextIndexSolr implements T
      }
  
      @Override
 -    public List<Node> query(String qs) { return query(qs, 0) ; } 
 +    public List<TextHit> query(String qs) { return query(qs, 0) ; } 
  
      @Override
-     public List<TextHit> query(String qs, int limit)
-     {
 -    public List<Node> query(String qs, int limit) {
++    public List<TextHit> query(String qs, int limit) {
          SolrDocumentList solrResults = solrQuery(qs, limit) ;
 -        List<Node> results = new ArrayList<>() ;
 +        List<TextHit> results = new ArrayList<>() ;
  
-         for ( SolrDocument sd : solrResults )
-         {
+         for ( SolrDocument sd : solrResults ) {
 -            // ** score
 -            // 'score' field.
              String str = (String)sd.getFieldValue(docDef.getEntityField()) ;
-             //log.info("Entity: "+uriStr) ;
+             // log.info("Entity: "+uriStr) ;
              Node n = TextQueryFuncs.stringToNode(str) ;
 -            results.add(n) ;
 +            Float score = (Float) sd.getFirstValue("score");
 +            TextHit hit = new TextHit(n, score.floatValue());
 +            results.add(hit) ;
          }
  
          if ( limit > 0 && results.size() > limit )
              results = results.subList(0, limit) ;
  
-         return results ; 
+         return results ;
      }
  
-     private SolrDocumentList solrQuery(String qs, int limit)
-     {
+     private SolrDocumentList solrQuery(String qs, int limit) {
          SolrQuery sq = new SolrQuery(qs) ;
 -        // ** score
 -        // sq.setIncludeScore(true) ;
 +        sq.setIncludeScore(true) ;
          if ( limit > 0 )
              sq.setRows(limit) ;
-         else 
-             sq.setRows(MAX_N) ;   // The Solr default is 10.
+         else
+             sq.setRows(MAX_N) ; // The Solr default is 10.
          try {
              // Set default field.
              sq.add(CommonParams.DF, docDef.getPrimaryField()) ;

http://git-wip-us.apache.org/repos/asf/jena/blob/1b125934/jena-text/src/main/java/org/apache/jena/query/text/TextQueryPF.java
----------------------------------------------------------------------
diff --cc jena-text/src/main/java/org/apache/jena/query/text/TextQueryPF.java
index 4b37d95,5a48add..587f562
--- a/jena-text/src/main/java/org/apache/jena/query/text/TextQueryPF.java
+++ b/jena-text/src/main/java/org/apache/jena/query/text/TextQueryPF.java
@@@ -52,12 -47,12 +52,10 @@@ import org.slf4j.LoggerFactory 
  public class TextQueryPF extends PropertyFunctionBase {
      private static Logger log = LoggerFactory.getLogger(TextQueryPF.class) ;
      /*
--     * ?uri :queryPF (property? "string" limit? score?) 
--     * (?uri ?score) not implemented
--     * Look for "//** score" in TextQueryPF, TextIndexLucene and TextIndexSolr
++     * (?uri ?score) :queryPF (property? "string" limit? score?) 
       */
  
-     private TextIndex     server        = null ;
+     private TextIndex     textIndex        = null ;
      private boolean       warningIssued = false ;
  
      public TextQueryPF() {}
@@@ -67,20 -62,16 +65,15 @@@
      @Override
      public void build(PropFuncArg argSubject, Node predicate, PropFuncArg argObject, ExecutionContext execCxt) {
          super.build(argSubject, predicate, argObject, execCxt) ;
--        //** score
--        // Subject possibilities become ?foo or (?foo ?score) 
          DatasetGraph dsg = execCxt.getDataset() ;
-         server = chooseTextIndex(dsg) ;
+         textIndex = chooseTextIndex(dsg) ;
 -        if (!argSubject.isNode())
 -            throw new QueryBuildException("Subject is not a single node: " + argSubject) ;
 +
 +        if (argSubject.isList() && argSubject.getArgListSize() != 2)
 +            throw new QueryBuildException("Subject has "+argSubject.getArgList().size()+" elements, not 2: "+argSubject);
  
          if (argObject.isList()) {
-             //extract of extra lang arg if present and if is usable.
-             //arg is removed from the list to avoid conflict with order and args length
-             langArg = extractArg("lang", argObject);
- 
              List<Node> list = argObject.getArgList() ;
+ 
              if (list.size() == 0)
                  throw new QueryBuildException("Zero-length argument list") ;
  
@@@ -181,17 -172,12 +183,13 @@@
          return qIter ;
      }
  
 -    private QueryIterator variableSubject(Binding binding, Node s, StrMatch match, ExecutionContext execCxt) {
 -        Var v = Var.alloc(s) ;
 -        List<Node> r = query(match.getQueryString(), match.getLimit(), execCxt) ;
 -        // Make distinct. Note interaction with limit is imperfect
 -        r = Iter.iter(r).distinct().toList() ;
 -        QueryIterator qIter = new QueryIterExtendByVar(binding, v, r.iterator(), execCxt) ;
 +    private QueryIterator variableSubject(Binding binding, Node s, Node score, StrMatch match, ExecutionContext execCxt) {
 +        Var sVar = Var.alloc(s) ;
 +        Var scoreVar = (score==null) ? null : Var.alloc(score) ;
 +        List<TextHit> r = query(match.getQueryString(), match.getLimit(), execCxt) ;
-         // Make distinct. Note interaction with limit is imperfect
- /*        r = Iter.iter(r).distinct().toList() ;
-         QueryIterator qIter = new QueryIterExtendByVar(binding, v, r.iterator(), execCxt) ;
- */
 +        Function<TextHit,Binding> converter = new TextHitConverter(binding, sVar, scoreVar);
 +        Iterator<Binding> bIter = new Map1Iterator<TextHit, Binding>(converter, r.iterator());
 +        QueryIterator qIter = new QueryIterPlainWrapper(bIter, execCxt);
          return qIter ;
      }
  
@@@ -201,27 -187,17 +199,27 @@@
              return IterLib.noResults(execCxt) ;
          }
  
 +        Var scoreVar = (score==null) ? null : Var.alloc(score) ;
          String qs = match.getQueryString() ;
 -        List<Node> x = query(match.getQueryString(), -1, execCxt) ;
 -        if ( x == null || ! x.contains(s) )
 +        List<TextHit> x = query(match.getQueryString(), -1, execCxt) ;
 +        
 +        if ( x == null ) // null return value - empty result
              return IterLib.noResults(execCxt) ;
 -        else
 -            return IterLib.result(binding, execCxt) ;
 +        
 +        for (TextHit hit : x ) {
 +            if (hit.getNode().equals(s)) {
 +                // found the node among the hits
 +                return IterLib.oneResult(binding, scoreVar, NodeFactoryExtra.floatToNode(hit.getScore()), execCxt) ;
 +            }
 +        }
 +
 +        // node was not among the hits - empty result
 +        return IterLib.noResults(execCxt) ;
      }
  
 -    private List<Node> query(String queryString, int limit, ExecutionContext execCxt) {
 +    private List<TextHit> query(String queryString, int limit, ExecutionContext execCxt) {
          // use the graph information in the text index if possible
-         if (server.getDocDef().getGraphField() != null
+         if (textIndex.getDocDef().getGraphField() != null
              && execCxt.getActiveGraph() instanceof GraphView) {
              GraphView activeGraph = (GraphView)execCxt.getActiveGraph() ;
              if (!Quad.isUnionGraph(activeGraph.getGraphName())) {


[09/13] jena git commit: remove unused import InternalErrorException

Posted by an...@apache.org.
remove unused import InternalErrorException


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

Branch: refs/heads/master
Commit: b9bdf53e5df7a25250a41812be236c8fd4338072
Parents: 3f98378
Author: Osma Suominen <os...@aalto.fi>
Authored: Tue Jun 2 09:58:53 2015 +0300
Committer: Osma Suominen <os...@aalto.fi>
Committed: Tue Jun 2 09:58:53 2015 +0300

----------------------------------------------------------------------
 jena-text/src/main/java/org/apache/jena/query/text/TextQueryPF.java | 1 -
 1 file changed, 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/b9bdf53e/jena-text/src/main/java/org/apache/jena/query/text/TextQueryPF.java
----------------------------------------------------------------------
diff --git a/jena-text/src/main/java/org/apache/jena/query/text/TextQueryPF.java b/jena-text/src/main/java/org/apache/jena/query/text/TextQueryPF.java
index 95dd87c..8aa2547 100644
--- a/jena-text/src/main/java/org/apache/jena/query/text/TextQueryPF.java
+++ b/jena-text/src/main/java/org/apache/jena/query/text/TextQueryPF.java
@@ -23,7 +23,6 @@ import java.util.List ;
 import java.util.function.Function ;
 
 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.datatypes.RDFDatatype ;
 import org.apache.jena.datatypes.xsd.XSDDatatype ;


[05/13] jena git commit: Merge branch 'jena-text-score' of https://github.com/osma/jena into jena-text-score

Posted by an...@apache.org.
Merge branch 'jena-text-score' of https://github.com/osma/jena into jena-text-score


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

Branch: refs/heads/master
Commit: 66eec1b0f9c6fa9cfaed8b1f7faa4357cf6a250b
Parents: 1b12593 6d01a6a
Author: Osma Suominen <os...@aalto.fi>
Authored: Fri May 29 15:43:46 2015 +0300
Committer: Osma Suominen <os...@aalto.fi>
Committed: Fri May 29 15:43:46 2015 +0300

----------------------------------------------------------------------

----------------------------------------------------------------------



[11/13] jena git commit: remove remaining "// *** score" markers

Posted by an...@apache.org.
remove remaining "// *** score" markers


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

Branch: refs/heads/master
Commit: 5d2a32f86deb210571fb803ecea21dfc785ea230
Parents: 9c27f23
Author: Osma Suominen <os...@aalto.fi>
Authored: Tue Jun 2 10:02:33 2015 +0300
Committer: Osma Suominen <os...@aalto.fi>
Committed: Tue Jun 2 10:02:33 2015 +0300

----------------------------------------------------------------------
 jena-text/src/main/java/org/apache/jena/query/text/TextIndex.java | 3 ---
 .../src/main/java/org/apache/jena/query/text/TextIndexLucene.java | 2 --
 2 files changed, 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/5d2a32f8/jena-text/src/main/java/org/apache/jena/query/text/TextIndex.java
----------------------------------------------------------------------
diff --git a/jena-text/src/main/java/org/apache/jena/query/text/TextIndex.java b/jena-text/src/main/java/org/apache/jena/query/text/TextIndex.java
index a34e87a..9204ac4 100644
--- a/jena-text/src/main/java/org/apache/jena/query/text/TextIndex.java
+++ b/jena-text/src/main/java/org/apache/jena/query/text/TextIndex.java
@@ -42,9 +42,6 @@ public interface TextIndex extends Closeable //, Transactional
     /** Get all entries for uri */
     Map<String, Node> get(String uri) ;
 
-    //** score
-    // Need to have more complex results.
-    
     /** Access the index - limit if -1 for as many as possible 
      * Throw QueryParseException for syntax errors in the query string.
      */ 

http://git-wip-us.apache.org/repos/asf/jena/blob/5d2a32f8/jena-text/src/main/java/org/apache/jena/query/text/TextIndexLucene.java
----------------------------------------------------------------------
diff --git a/jena-text/src/main/java/org/apache/jena/query/text/TextIndexLucene.java b/jena-text/src/main/java/org/apache/jena/query/text/TextIndexLucene.java
index f26562a..7c76330 100644
--- a/jena-text/src/main/java/org/apache/jena/query/text/TextIndexLucene.java
+++ b/jena-text/src/main/java/org/apache/jena/query/text/TextIndexLucene.java
@@ -272,7 +272,6 @@ public class TextIndexLucene implements TextIndex {
 
         // Align and DRY with Solr.
         for ( ScoreDoc sd : sDocs ) {
-            //** score :: sd.score
             Document doc = indexSearcher.doc(sd.doc) ;
             String[] x = doc.getValues(docDef.getEntityField()) ;
             if ( x.length != 1 ) {}
@@ -301,7 +300,6 @@ public class TextIndexLucene implements TextIndex {
 
     @Override
     public List<TextHit> query(String qs, int limit) {
-        //** score
         try (IndexReader indexReader = DirectoryReader.open(directory)) {
             return query$(indexReader, qs, limit) ;
         }


[10/13] jena git commit: switch to Iter.map instead of Map1Iterator

Posted by an...@apache.org.
switch to Iter.map instead of Map1Iterator


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

Branch: refs/heads/master
Commit: 9c27f23102e2615a9775bd4079716930200f1f33
Parents: b9bdf53
Author: Osma Suominen <os...@aalto.fi>
Authored: Tue Jun 2 10:00:47 2015 +0300
Committer: Osma Suominen <os...@aalto.fi>
Committed: Tue Jun 2 10:00:47 2015 +0300

----------------------------------------------------------------------
 .../src/main/java/org/apache/jena/query/text/TextQueryPF.java     | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/9c27f231/jena-text/src/main/java/org/apache/jena/query/text/TextQueryPF.java
----------------------------------------------------------------------
diff --git a/jena-text/src/main/java/org/apache/jena/query/text/TextQueryPF.java b/jena-text/src/main/java/org/apache/jena/query/text/TextQueryPF.java
index 8aa2547..0032be8 100644
--- a/jena-text/src/main/java/org/apache/jena/query/text/TextQueryPF.java
+++ b/jena-text/src/main/java/org/apache/jena/query/text/TextQueryPF.java
@@ -41,7 +41,6 @@ import org.apache.jena.sparql.pfunction.PropertyFunctionBase ;
 import org.apache.jena.sparql.util.Context ;
 import org.apache.jena.sparql.util.IterLib ;
 import org.apache.jena.sparql.util.NodeFactoryExtra ;
-import org.apache.jena.util.iterator.Map1Iterator ;
 import org.apache.lucene.queryparser.classic.QueryParserBase ;
 import org.slf4j.Logger ;
 import org.slf4j.LoggerFactory ;
@@ -186,7 +185,7 @@ public class TextQueryPF extends PropertyFunctionBase {
         Var scoreVar = (score==null) ? null : Var.alloc(score) ;
         List<TextHit> r = query(match.getQueryString(), match.getLimit(), execCxt) ;
         Function<TextHit,Binding> converter = new TextHitConverter(binding, sVar, scoreVar);
-        Iterator<Binding> bIter = new Map1Iterator<TextHit, Binding>(converter, r.iterator());
+        Iterator<Binding> bIter = Iter.map(r.iterator(), converter);
         QueryIterator qIter = new QueryIterPlainWrapper(bIter, execCxt);
         return qIter ;
     }


[06/13] jena git commit: use singleton binding if no score is requested

Posted by an...@apache.org.
use singleton binding if no score is requested


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

Branch: refs/heads/master
Commit: 51cb03511585aea2c5097d6d930acfca5dfc5ee5
Parents: 66eec1b
Author: Osma Suominen <os...@aalto.fi>
Authored: Tue Jun 2 09:55:27 2015 +0300
Committer: Osma Suominen <os...@aalto.fi>
Committed: Tue Jun 2 09:55:27 2015 +0300

----------------------------------------------------------------------
 .../main/java/org/apache/jena/query/text/TextHitConverter.java | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/51cb0351/jena-text/src/main/java/org/apache/jena/query/text/TextHitConverter.java
----------------------------------------------------------------------
diff --git a/jena-text/src/main/java/org/apache/jena/query/text/TextHitConverter.java b/jena-text/src/main/java/org/apache/jena/query/text/TextHitConverter.java
index 3ee29c9..36ee88b 100644
--- a/jena-text/src/main/java/org/apache/jena/query/text/TextHitConverter.java
+++ b/jena-text/src/main/java/org/apache/jena/query/text/TextHitConverter.java
@@ -40,11 +40,11 @@ public class TextHitConverter implements Function<TextHit, Binding>
     }
     
     public Binding apply(TextHit hit) {
+        if (score == null)
+            return BindingFactory.binding(binding, match, hit.getNode());
         BindingMap bmap = BindingFactory.create(binding);
         bmap.add(match, hit.getNode());
-        if (score != null) {
-            bmap.add(score, NodeFactoryExtra.floatToNode(hit.getScore()));
-        }
+        bmap.add(score, NodeFactoryExtra.floatToNode(hit.getScore()));
         return bmap;
     }
 }