Hello Lorenz, usually we use " " signs and + sign inside our query in Jena
syntax

 "SELECT  ?student " +

" WHERE {   ?student rdf:type std:Student}"; //In simple query

 But that query has two select statements and where clause, I am confused
where to put the " " and + signs in the query.

I have tried this but it gives me syntax error,



   *  "SELECT  ?student ?topScore " +*

*                   " WHERE {   {select  (max(?score) as ?highScore)" +
 "WHERE  { ?student std:Englishscore ?score + "*

*" }" +*
*"  } " +*
*       "?student std:Englishscore ?highScore"           *

*          "}";*



On Sat, Jan 7, 2017 at 5:30 PM, Lorenz B. <
buehm...@informatik.uni-leipzig.de> wrote:

> This query is syntactically correct once you add the prefix declaration
> in front of the query. I used ex: here but indeed I don't know the
> namespace and omitted the prefix declaration for brevity. I don't
> understand what you meant with the usage of a comma.
>
> > Hi Lorenz, I am asking about the query you provided to be used in Jena
> > syntax like below I used in Jena
> >
> > SELECT ?student ?topScore WHERE {
> >  {SELECT (MAX(?score) AS ?topScore) WHERE
> >         {?student ex:CryptographyScore ?score .
> >         } }
> > ?student ex:CryptographyScore ?topScore .}
> >
> >
> > ___________________________________________________________
> >
> > String queryString= "PREFIX mo:<http://www.semanticweb.org/t/ont#> "+
> >  "PREFIX rdf:<http://www.w3.org/1999/02/22-rdf-syntax-ns#> "+
> >
> >                       "SELECT  ?std " +
> >                 " WHERE {   ?std rdf:type std:Student }";
> >
> > On Sat, Jan 7, 2017 at 3:17 PM, Lorenz B. <
> > buehm...@informatik.uni-leipzig.de> wrote:
> >
> >> Which query do you mean and which error do you get? There is no need for
> >> a comma when using a nested query
> >>
> >>> Thanks a lot Lorenz, yes the query you provided perfectly works. Kindly
> >> one
> >>> last cooperation, I have never tried nested queries in Jena code and it
> >>> gives me error, so if you provide the correct syntax i-e where to use
> the
> >>> commas and where not?
> >>>
> >>> Thanks again.
> >>> Regards
> >>>
> >>> On Fri, Jan 6, 2017 at 5:23 PM, Lorenz B. <
> >>> buehm...@informatik.uni-leipzig.de> wrote:
> >>>
> >>>>> This query now display both student and highscore
> >>>>>
> >>>>> select ?subject ?student ?highScore where {
> >>>>> {select ?subject (max(?score) as ?highScore) { ?student
> >> ont:Englishsscore
> >>>>> ?score
> >>>>>  }
> >>>>>     group by ?subject
> >>>>>   }
> >>>>> ?student ont:Englishscore ?highScore
> >>>>> }
> >>>> Doesn't make sense. Don't copy answers from Stackoverflow if the data
> >>>> doesn't match the suggested solution by Joshua Taylor! You're grouping
> >>>> by a variable ?subject that is nowhere assigned in the query.
> >>>>
> >>>> I already gave you the alternative query yesterday in one of my
> >>>> responses. Would be good if you read them carefully and also try to
> >>>> understand what's happening there.
> >>>>> On Fri, Jan 6, 2017 at 4:39 PM, javed khan <javedbtk...@gmail.com>
> >>>> wrote:
> >>>>>> Hi Lorenz, I uses this
> >>>>>>
> >>>>>> SELECT  (max(?score) as ?highScore)
> >>>>>> WHERE { ?std ont:Englishscore ?score }
> >>>>>>
> >>>>>> And it gives me the highscore of subject English as 77
> >>>>>>
> >>>>>> When I use this
> >>>>>>
> >>>>>> SELECT ?std (max(?score) as ?highScore)
> >>>>>> WHERE { ?std ont:Englishscore ?score } GROUP BY ?std
> >>>>>>
> >>>>>> It gives me all the students with the scores like:
> >>>>>> Jim 60
> >>>>>> Kane 77
> >>>>>> Smith 57 etc
> >>>>>>
> >>>>>> I want result like *Kane 77*
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>> On Fri, Jan 6, 2017 at 1:45 PM, Lorenz B. <buehm...@informatik.uni-
> >>>>>> leipzig.de> wrote:
> >>>>>>
> >>>>>>> Yes, that would be the easiest solution.
> >>>>>>>
> >>>>>>>> Hello Lorenz, thanks a lot for kind cooperation.
> >>>>>>>>
> >>>>>>>>  It means I will have three queries for NetworkingScore,
> >>>>>>> Cryptographyscore
> >>>>>>>> and SEscore?
> >>>>>>>>
> >>>>>>>> On Thu, Jan 5, 2017 at 1:27 PM, Lorenz B. <
> >>>>>>>> buehm...@informatik.uni-leipzig.de> wrote:
> >>>>>>>>
> >>>>>>>>> The query I showed returns the highest value for one subject as I
> >>>> said.
> >>>>>>>>> Executing three SPARQL queries should therefore be rather simple.
> >>>>>>>>>
> >>>>>>>>> PREFIX ex: <http://example.com/ns/>
> >>>>>>>>> SELECT (MAX(?score) AS ?topScore)
> >>>>>>>>> WHERE
> >>>>>>>>> {
> >>>>>>>>>   ?student ex:CryptographyScore ?score .
> >>>>>>>>> }
> >>>>>>>>>
> >>>>>>>>> So what's wrong with this query? If you also want to have the
> >>>>>>> student(s)
> >>>>>>>>> with this score, try
> >>>>>>>>>
> >>>>>>>>> PREFIX ex: <http://example.com/ns/>
> >>>>>>>>> SELECT ?student ?topScore WHERE {
> >>>>>>>>>
> >>>>>>>>>     #-- Find the high score in the subject
> >>>>>>>>>     {
> >>>>>>>>>
> >>>>>>>>>         SELECT (MAX(?score) AS ?topScore) WHERE
> >>>>>>>>>         {
> >>>>>>>>>           ?student ex:CryptographyScore ?score .
> >>>>>>>>>         }
> >>>>>>>>>
> >>>>>>>>>     }
> >>>>>>>>>
> >>>>>>>>>     #-- Then find the student(s) that had that high score in the
> >>>>>>> subject
> >>>>>>>>>     ?student ex:CryptographyScore ?topScore .
> >>>>>>>>>
> >>>>>>>>> }
> >>>>>>>>>
> >>>>>>>>> Or you can use SPARQL 1.1 aggregate function SAMPLE.
> >>>>>>>>>
> >>>>>>>>> Otherwise you can also use a single SPARQL query and put, but it
> >>>> looks
> >>>>>>>>> like you have to learn SPARQL and we're doing your homework -
> this
> >> is
> >>>>>>>>> obviously the wrong direction when you want to lean something
> about
> >>>>>>>>> Semantic Web...
> >>>>>>>>>
> >>>>>>>>> By the way, I wouldn't create a data property for each subject
> but
> >>>>>>>>> attach the subject to the score. But that's how I would do it and
> >> out
> >>>>>>> of
> >>>>>>>>> scope here.
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>> Let me explain : There are 4 students, having scores of three
> >>>> subjects
> >>>>>>>>>> (1) Bob:  Cryptographyscore 50, SE score 58, *Networking score
> 70*
> >>>>>>>>>>  (2) Jim:  *Cryptographyscore 86*, SEscore 55, Networkingscore
> 48
> >>>>>>>>>> (3)  Smith: Cryptographyscore 78, *SEscore 79*, Networkingscore
> 60
> >>>>>>>>>> (4) David: Cryptographyscore 50, SEscore 66, Networkingscore 55
> >>>>>>>>>>
> >>>>>>>>>> I want the highest score of each category any user has scored,
> >> like
> >>>> in
> >>>>>>>>>> cryptography the highest score is 86 scored by Jim, in SE
> highest
> >>>>>>> score
> >>>>>>>>> is
> >>>>>>>>>> 79 scored by Smith and so on.
> >>>>>>>>>>
> >>>>>>>>>> So I want the maximum score in each of the three categories,
> which
> >>>> are
> >>>>>>>>> our
> >>>>>>>>>> data properties in the rdf file and this is why I thought we
> >> should
> >>>>>>> use
> >>>>>>>>>> three variables for Max.
> >>>>>>>>>>
> >>>>>>>>>> Lorenz still I achieve this with the query you and Rob have
> >>>> suggested?
> >>>>>>>>>> Thank you
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>> On Wed, Jan 4, 2017 at 6:38 PM, Lorenz Buehmann <
> >>>>>>>>>> buehm...@informatik.uni-leipzig.de> wrote:
> >>>>>>>>>>
> >>>>>>>>>>>> Hello Rob,
> >>>>>>>>>>>>
> >>>>>>>>>>>> We are in a group and we discussed it.
> >>>>>>>>>>>>
> >>>>>>>>>>>> We have three data properties , CryptographyScore,
> >>>>>>> SoftwareEngineering
> >>>>>>>>>>>> score and NetworkingScore and we need the maximum of these
> three
> >>>>>>> scores
> >>>>>>>>>>> for
> >>>>>>>>>>>> a student.
> >>>>>>>>>>>>
> >>>>>>>>>>>> Can we do it like this
> >>>>>>>>>>>>
> >>>>>>>>>>>> SELECT ?student (MAX(?score1, ?score2, ?score3) AS ?topScore)
> >>>>>>>>>>>>
> >>>>>>>>>>> No, Rob almost showed the solution. It's not allowed and I also
> >>>> don't
> >>>>>>>>>>> see why you want to use 3 variables in the MAX function.
> >>>>>>>>>>>
> >>>>>>>>>>> Again, we assume that you want to get the maximum score among
> all
> >>>>>>>>>>> students for a particular subject!
> >>>>>>>>>>>
> >>>>>>>>>>> That means, the query would be (for CryptographyScore here
> only)
> >>>>>>>>>>>
> >>>>>>>>>>> PREFIX ex: <http://example.com/ns/>
> >>>>>>>>>>> SELECT (MAX(?score) AS ?topScore)
> >>>>>>>>>>> WHERE
> >>>>>>>>>>> {
> >>>>>>>>>>>   ?student ex:CryptographyScore ?score .
> >>>>>>>>>>> }
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>> You asked the same question on Stackoverflow by the way and I
> >> told
> >>>>>>> you
> >>>>>>>>>>> there to use SPARQL qith aggregate functions. I assume that
> >> you're
> >>>> a
> >>>>>>>>>>> group of CS students, so you should know about SQL which also
> >>>>>>> supports
> >>>>>>>>>>> GROUP BY + aggregate functions. The principle is the same.
> >>>>>>>>>>>> On Wed, Jan 4, 2017 at 5:05 PM, Rob Vesse <
> rve...@dotnetrdf.org
> >>>>>>>>> wrote:
> >>>>>>>>>>>>> Most likely not
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> You seem to be running into the XY problem a lot (
> >>>>>>>>> http://xyproblem.info
> >>>>>>>>>>> )
> >>>>>>>>>>>>> You keep asking how to do things with rules for which rules
> are
> >>>> not
> >>>>>>>>>>> really
> >>>>>>>>>>>>> designed. And from some of your responses it sounds like the
> >>>>>>> problems
> >>>>>>>>>>>>> you’re trying to solve don’t actually need rules at all.
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> For example finding the top score for a student would be much
> >>>> more
> >>>>>>>>>>> easily
> >>>>>>>>>>>>> done with a SPARQL query although from what little I have
> seen
> >> of
> >>>>>>> your
> >>>>>>>>>>> data
> >>>>>>>>>>>>> model it looks like it would make it even that quite awkward.
> >>>> But
> >>>>>>> in
> >>>>>>>>>>>>> general terms something like the following would work:
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> PREFIX ex: <http://example.com/ns/>
> >>>>>>>>>>>>> SELECT ?student (MAX(?score) AS ?topScore)
> >>>>>>>>>>>>> WHERE
> >>>>>>>>>>>>> {
> >>>>>>>>>>>>>   ?student ex:score ?score .
> >>>>>>>>>>>>> }
> >>>>>>>>>>>>> GROUP BY ?student
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> Rob
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> On 04/01/2017 13:25, "javed khan" <javedbtk...@gmail.com>
> >> wrote:
> >>>>>>>>>>>>>     Thanks Dave and Lorenz for your response.
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>     What if we have entered the score for a student in
> >>>> Cryptography
> >>>>>>>>> and
> >>>>>>>>>>>>>     SoftwareEngineering and did not entered for Networking
> >>>> subject
> >>>>>>> and
> >>>>>>>>>>>>> stored
> >>>>>>>>>>>>>     something like this in our owl file:
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>     Student1
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>      Name: Bob
> >>>>>>>>>>>>>      CryptographyScore: 60
> >>>>>>>>>>>>>      SoftwareEngineeringScore: 80
> >>>>>>>>>>>>>      //NetworkingScore, not mentioned here
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>     Then will the above rule fires?
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>     On Wed, Jan 4, 2017 at 11:35 AM, Lorenz B. <
> >>>>>>>>>>>>>     buehm...@informatik.uni-leipzig.de> wrote:
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>     > Inline comments:
> >>>>>>>>>>>>>     > > I have three subjects marks for a student.
> >>>>>>>>>>>>>     > >  Cryptography, Networking, Software Engineering with
> >>>>>>> different
> >>>>>>>>>>>>> marks for
> >>>>>>>>>>>>>     > > each student.
> >>>>>>>>>>>>>     > > I want to calculate in which subject a student got
> >>>> maximum
> >>>>>>>>> marks
> >>>>>>>>>>>>> using
> >>>>>>>>>>>>>     > Jena
> >>>>>>>>>>>>>     > > rule and will set that subject as HighScoreSubject of
> >> the
> >>>>>>>>>>> student (
> >>>>>>>>>>>>>     > > HighScoreSubject is data propety) whose values will
> be
> >>>> one
> >>>>>>> of
> >>>>>>>>>>>>> these three
> >>>>>>>>>>>>>     > > subjects.
> >>>>>>>>>>>>>     > >
> >>>>>>>>>>>>>     > > Is this rule correct to get the required result ( I
> am
> >>>>>>> asking
> >>>>>>>>>>> this
> >>>>>>>>>>>>>     > because
> >>>>>>>>>>>>>     > > I am not getting the result required)
> >>>>>>>>>>>>>     > Without seeing the data, it's always difficult to say
> if
> >>>>>>>>>>> something is
> >>>>>>>>>>>>>     > correct or not. Sample data makes things easier.
> >>>>>>>>>>>>>     > And without knowing how you apply the rules (in a
> correct
> >>>>>>>>> syntax)
> >>>>>>>>>>>>> it's
> >>>>>>>>>>>>>     > even harder. That means, it's always good to show the
> >>>>>>> relevant
> >>>>>>>>>>> code.
> >>>>>>>>>>>>>     > >
> >>>>>>>>>>>>>     > > ?x rdf:type std:Student + ?x std:CryptographyScore
> >>>> ?score1
> >>>>>>> +
> >>>>>>>>> ?x
> >>>>>>>>>>>>>     > > std:NetworkingScore ?score2 + ?x std:SEScore ?score3
> +
> >>>>>>>>>>>>>     > > greaterThan(?score1,?score2), greaterThan(?score1,
> >>>> ?score3)
> >>>>>>>>> -->
> >>>>>>>>>>>>>     > > ?x std:HighScoreSubject std:Cryptography
> >>>>>>>>>>>>>     > >
> >>>>>>>>>>>>>     > This rule covers only the case when the score for
> >>>>>>> Cryptography
> >>>>>>>>> is
> >>>>>>>>>>> the
> >>>>>>>>>>>>>     > highest. If your data doesn't contain a student that
> >>>> matches
> >>>>>>> the
> >>>>>>>>>>>>> rule,
> >>>>>>>>>>>>>     > nothing will happen.
> >>>>>>>>>>>>>     >
> >>>>>>>>>>>>>     >
> >>>>>>>>>>>>>     > Cheers,
> >>>>>>>>>>>>>     > Lorenz
> >>>>>>>>>>>>>     >
> >>>>>>>>>>>>>     > --
> >>>>>>>>>>>>>     > Lorenz Bühmann
> >>>>>>>>>>>>>     > AKSW group, University of Leipzig
> >>>>>>>>>>>>>     > Group: http://aksw.org - semantic web research center
> >>>>>>>>>>>>>     >
> >>>>>>>>>>>>>     >
> >>>>>>>>>>>>>     >
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>> --
> >>>>>>>>> Lorenz Bühmann
> >>>>>>>>> AKSW group, University of Leipzig
> >>>>>>>>> Group: http://aksw.org - semantic web research center
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>> --
> >>>>>>> Lorenz Bühmann
> >>>>>>> AKSW group, University of Leipzig
> >>>>>>> Group: http://aksw.org - semantic web research center
> >>>>>>>
> >>>>>>>
> >>>> --
> >>>> Lorenz Bühmann
> >>>> AKSW group, University of Leipzig
> >>>> Group: http://aksw.org - semantic web research center
> >>>>
> >>>>
> >> --
> >> Lorenz Bühmann
> >> AKSW group, University of Leipzig
> >> Group: http://aksw.org - semantic web research center
> >>
> >>
> --
> Lorenz Bühmann
> AKSW group, University of Leipzig
> Group: http://aksw.org - semantic web research center
>
>

Reply via email to