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. <
[email protected]> 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 <[email protected]>
> 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. <[email protected]
> >> 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. <
> >>>> [email protected]> 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 <
> >>>>>> [email protected]> 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 <[email protected]>
> >>>>> 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" <[email protected]> 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. <
> >>>>>>>>>     [email protected]> 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
>
>

Reply via email to