[ 
https://issues.apache.org/jira/browse/JENA-1093?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15068573#comment-15068573
 ] 

ASF GitHub Bot commented on JENA-1093:
--------------------------------------

Github user ajs6f commented on a diff in the pull request:

    https://github.com/apache/jena/pull/112#discussion_r48286947
  
    --- Diff: 
jena-text/src/main/java/org/apache/jena/query/text/TextQueryPF.java ---
    @@ -210,44 +212,36 @@ private QueryIterator variableSubject(Binding 
binding, Node s, Node score, Node
                 return bmap;
             } ;
             
    -        Iterator<Binding> bIter = Iter.map(r.iterator(), converter);
    +        Iterator<Binding> bIter = Iter.map(results.iterator(), converter);
             QueryIterator qIter = new QueryIterPlainWrapper(bIter, execCxt);
             return qIter ;
         }
     
    +    private QueryIterator variableSubject(Binding binding, Node s, Node 
score, Node literal, StrMatch match, ExecutionContext execCxt) {
    +        List<TextHit> r = query(match.getProperty(), 
match.getQueryString(), match.getLimit(), execCxt) ;
    +        return resultsToQueryIterator(binding, s, score, literal, r, 
execCxt);
    +    }
    +
         private QueryIterator concreteSubject(Binding binding, Node s, Node 
score, Node literal, 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) ;
    -        Var literalVar = (literal==null) ? null : Var.alloc(literal) ;
             String qs = match.getQueryString() ;
             List<TextHit> x = query(match.getProperty(), 
match.getQueryString(), -1, execCxt) ;
             
             if ( x == null ) // null return value - empty result
                 return IterLib.noResults(execCxt) ;
             
    +        List<TextHit> r = new LinkedList();
    --- End diff --
    
    You might or might not like this style more, but you could do this with a 
filter:
    ```
    List<TextHit> r = x.stream().filter(hit -> 
hit.getNode().equals(s)).collect(Collectors.toList());
    ```


> jena-text query doesn't return all matching literals
> ----------------------------------------------------
>
>                 Key: JENA-1093
>                 URL: https://issues.apache.org/jira/browse/JENA-1093
>             Project: Apache Jena
>          Issue Type: Bug
>          Components: Text
>    Affects Versions: Jena 3.0.1
>            Reporter: Osma Suominen
>            Assignee: Osma Suominen
>
> After the optimizations in JENA-999, the text:query property function, when 
> asked for stored literal values, no longer returns all matching literals. 
> Instead, each subject is returned with a random TextHit (i.e. score+literal 
> pair). This is a problem for me because I want to show to the user the most 
> relevant reason why the search matched a particular SKOS concept (there may 
> be many matching labels in various languages), or in some cases all the 
> reasons. 
> Also the returned match may not have the highest score, which could be a 
> problem if one is interested in the score (I'm not).
> For example, with storeLiterals enabled and this data:
> {noformat}
> ex:subject rdfs:label "one reason", "another reason" .
> {noformat}
> this query
> {noformat}
> (?s ?score ?literal) text:query "reason" .
> {noformat}
> will return a single binding where ?literal is bound to either "one reason" 
> or "another reason".
> Before JENA-999 it returned two bindings, one per literal.
> The culprit is the post-JENA-999 code in the TextQueryPF.exec method, 
> particularly around this line that suppresses subsequent hits with the same 
> subject URI:
> https://github.com/apache/jena/blob/master/jena-text/src/main/java/org/apache/jena/query/text/TextQueryPF.java#L188
> I already have a failing unit test that shows what I'd like to accomplish. I 
> will try to make a PR at some point.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to