> 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*
That's not the query I showed you for the case you also want to have the
student...but anyways, just ORDER BY the highScore and LIMIT the
resultset to 1. A drawback here would be that if there are multiple
students with the high score, only one would be returned. And to keep
this deterministic, you might also need to order by the student itself then.

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

Reply via email to