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
}

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
>>
>>
>

Reply via email to