On 09/01/17 20:17, javed khan wrote:
This is my query and code.

Same error.

 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" +
                           ^^^ 1 s
" }" +
"  } " +
        "?student std:Englishsscore ?highScore"   +
                              ^^^^  2 s

Different.

(It was right in your first emails.  It is not now.)

Yet again this is not a complete, minimal example.  No Data.

You have also not responded to the helpful suggestions about formatting the query.

This
http://stackoverflow.com/help/mcve

is here to help you so that it an answer can be given to the original question.

        Andy



          "}";

         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