On 09.01.2017 21:17, javed khan wrote:
> This is my query and code.  I have to find just one tripe: Subject
> highscore by a student
> Like  subject English highscore is 60 by Smith.
> When I run query inside Protege, it gives me the result
> Smith  60 and it is fine. This result (Smith  60), I cant get inside Jena
> code and get exception.
>
> Code is below.
>
> String queryString2=
>                    "prefix std:<http://www.semanticweb.org/ontologies#>"+
>
>                      "SELECT  ?student ?highScore " +
>
>
>                   " WHERE {" + " {"+ "select  (max(?score) as ?highScore)"
> + " { ?student std:Englishscore ?score" +
> " }" +
> "  } " +
>         "?student std:Englishsscore ?highScore"   +
And here is the problem! Do you really read what we are writing? You
have a typo in the predicate of last triple pattern.
You wrote

std:Englishsscore

and in the triple pattern of the inner query you wrote

std:Englishscore

And last time, for the future print the String object to the command
line and then check the syntax carefully.

>
>
>           "}";
>
>          System.out.println(queryString2);
>              Query query2 = QueryFactory.create(queryString2);
> QueryExecution qexec = QueryExecutionFactory.create(query2, model) ;
> ResultSet results2 = qexec.execSelect() ;
>
>     Literal r= results2.next().get("highScore").asLiteral();
>     JOptionPane.showMessageDialog(null,r.toString());
>
> On Mon, Jan 9, 2017 at 10:23 PM, Andy Seaborne <[email protected]> wrote:
>
>> Once again you do not provide a complete, minimal example.
>> And this is different code to what you showed earlier.
>>
>>
>> std:Englishscore
>> std:Englishsscore   <-- if this is wrong
>>
>> there is no match and next() is NoSuchElementException
>>
>>         Andy
>>
>> On 09/01/17 17:51, javed khan wrote:
>>
>>> I am sorry Andy I did not understand what you mentioned.
>>>
>>> The problem still there, though I have made several changes: and the
>>> problem points here
>>>
>>>  Literal r= results2.next().get("highScore").asLiteral();
>>> or
>>> RDFNode r2= results2.next().get("student").asResource();
>>>
>>> The error message is
>>>
>>> *Exception in thread "AWT-EventQueue-0" java.util.NoSuchElementException:
>>> QueryIteratorCloseable*
>>> * at
>>> com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.nex
>>> tBinding(QueryIteratorBase.java:9*
>>>
>>> 3
>>>
>>> On Mon, Jan 9, 2017 at 6:53 PM, Andy Seaborne <[email protected]> wrote:
>>>
>>> That is not the error in the query I pointed out.  It makes a difference
>>>> in the query.
>>>>
>>>>
>>>> On 09/01/17 15:45, javed khan wrote:
>>>>
>>>> I used std:Englishscore in my query and  is also in my ontology. If I
>>>>> wrote
>>>>> somewhere EnglishScore, it will be a typo error.
>>>>>
>>>>> On Mon, Jan 9, 2017 at 6:41 PM, Andy Seaborne <[email protected]> wrote:
>>>>>
>>>>>
>>>>>
>>>>>> On 09/01/17 15:05, javed khan wrote:
>>>>>>
>>>>>> Hello Lorenz, I think the problem is in the query itself inside Jena
>>>>>>
>>>>>>> code(probably the syntax of the query). Because a very simple query
>>>>>>> like *?student
>>>>>>> std:EnglishScore ?score*
>>>>>>> works.
>>>>>>> The querystring is:
>>>>>>>
>>>>>>> prefix std:<http://www.semanticweb.org/ontologies#>PREFIX rdfs:<
>>>>>>> http://www.w3.org/2000/01/rdf-schema#> PREFIX rdf:<
>>>>>>> http://www.w3.org/1999/02/22-rdf-syntax-ns#>
>>>>>>> SELECT  *  WHERE { {select  (max(?score) as ?highScore) { ?student
>>>>>>> std:Englishscore ?score }  } ?student std:Englishsscore ?highScore}
>>>>>>>
>>>>>>>
>>>>>>> std:Englishscore vs std:Englishsscore
>>>>>> spelt differently.
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>> On Mon, Jan 9, 2017 at 5:40 PM, Lorenz Buehmann <
>>>>>>> [email protected]> wrote:
>>>>>>>
>>>>>>> Inline images are not allowed here, thus we can't see anything. And a
>>>>>>>
>>>>>>> screenshot of Protege is not really helpful.
>>>>>>>> Prefixes might be wrong. We neither know the final query, nor your
>>>>>>>> code.
>>>>>>>>
>>>>>>>> Please show a sample of the data in best case in Turtle format. And
>>>>>>>> the
>>>>>>>> final query - please not again as Java concatenated String but as the
>>>>>>>> output from System.out.println(query2)
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On 09.01.2017 15:06, javed khan wrote:
>>>>>>>>
>>>>>>>> Inline image 1
>>>>>>>>
>>>>>>>>>
>>>>>>>>> It shows the result in Protege: Mac is student name and 6 is
>>>>>>>>> highscore
>>>>>>>>> of English category scored by him.
>>>>>>>>>
>>>>>>>>> On Mon, Jan 9, 2017 at 4:34 PM, Andy Seaborne <[email protected]
>>>>>>>>> <mailto:[email protected]>> wrote:
>>>>>>>>>
>>>>>>>>>     Maybe there are no results.
>>>>>>>>>
>>>>>>>>>     This is not a complete, minimal example. Unseen details probably
>>>>>>>>>     matter.
>>>>>>>>>
>>>>>>>>>         Andy
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>     On 09/01/17 13:28, javed khan wrote:
>>>>>>>>>
>>>>>>>>>         Hello Lorenz, yes I need student and highscore.
>>>>>>>>>
>>>>>>>>>         I just tried this , no exception but it does not display the
>>>>>>>>>         message in
>>>>>>>>>         JOptionPane.showMessageDialog()
>>>>>>>>>
>>>>>>>>>          Query query2 = QueryFactory.create(queryString2);
>>>>>>>>>         QueryExecution qexec = QueryExecutionFactory.create(query2,
>>>>>>>>>         model) ;
>>>>>>>>>         ResultSet results2 = qexec.execSelect() ;
>>>>>>>>>
>>>>>>>>>              RDFNode r;
>>>>>>>>>              while(results2.hasNext()){
>>>>>>>>>
>>>>>>>>>             QuerySolution sol= results2.nextSolution();
>>>>>>>>>               r=sol.get("student");
>>>>>>>>>                JOptionPane.showMessageDialog(null,"high score is"
>>>>>>>>> + r
>>>>>>>>> );
>>>>>>>>>              }
>>>>>>>>>
>>>>>>>>>         On Mon, Jan 9, 2017 at 1:42 PM, Lorenz Buehmann <
>>>>>>>>>         [email protected]
>>>>>>>>>         <mailto:[email protected]>> wrote:
>>>>>>>>>
>>>>>>>>>             @ As per the previous discussion, I guess he also wants
>>>>>>>>> to
>>>>>>>>>             have the
>>>>>>>>>             student - and of course the highest score,
>>>>>>>>>
>>>>>>>>>             As Chris said, you have to distinguish between literals
>>>>>>>>>             and URIs/blank
>>>>>>>>>             nodes.
>>>>>>>>>
>>>>>>>>>             Which finally leads me to the suggestion to read an RDF
>>>>>>>>>             tutorial +
>>>>>>>>>             SPARQL tutorial first. Most questions are really basic.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>             On 09.01.2017 09:38, Chris Dollin wrote:
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                 On 08/01/17 18:32, javed khan wrote:
>>>>>>>>>
>>>>>>>>>                     This query gives me exception:
>>>>>>>>>
>>>>>>>>>                     Exception in thread "AWT-EventQueue-0"
>>>>>>>>>                     com.hp.hpl.jena.rdf.model.Lite
>>>>>>>>> ralRequiredException:
>>>>>>>>>                     http://www.semanticweb.org/t/ontologies#Smith
>>>>>>>>>                     <http://www.semanticweb.org/t/ontologies#Smith>
>>>>>>>>>
>>>>>>>>>                       "SELECT  * " +
>>>>>>>>>
>>>>>>>>>                                        " WHERE {" + " {"+ "select
>>>>>>>>>                     (max(?score) as
>>>>>>>>>                     ?highScore)"
>>>>>>>>>                     + " { ?student std:Englishscore ?score" +
>>>>>>>>>                     " }" +
>>>>>>>>>                     "  } " +
>>>>>>>>>                             "?student std:Englishscore ?highScore"
>>>>>>>>>  +
>>>>>>>>>
>>>>>>>>>                               "}";
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                 The variable ?subject will be the subject of a
>>>>>>>>> triple.
>>>>>>>>>                 Subjects may be blank nodes or resources with URIs.
>>>>>>>>>
>>>>>>>>>                                  Query query2 =
>>>>>>>>>                     QueryFactory.create(queryString2);
>>>>>>>>>                     QueryExecution qexec =
>>>>>>>>>                     QueryExecutionFactory.create(query2, model) ;
>>>>>>>>>                     ResultSet results2 = qexec.execSelect() ;
>>>>>>>>>
>>>>>>>>>                            Literal
>>>>>>>>>                     l2=results2.next().get("student").asLiteral();
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                 get("student") will return the value of "student",
>>>>>>>>>                 which will
>>>>>>>>>                 be a resource or blank node, but NOT a literal.
>>>>>>>>> asLiteral
>>>>>>>>>                 expects a Literal.
>>>>>>>>>
>>>>>>>>>                 BOOM.
>>>>>>>>>
>>>>>>>>>                 My pre-caffeine guess is that you want "highscore"
>>>>>>>>> not
>>>>>>>>>                 "student".
>>>>>>>>>                 As others have said, offer complete minimal
>>>>>>>>> examples.
>>>>>>>>>
>>>>>>>>>                 Chris
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>

Reply via email to