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} 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.LiteralRequiredException: > > 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 > > > > > > > > > > > >
