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. <
> [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
>>
>>
-- 
Lorenz Bühmann
AKSW group, University of Leipzig
Group: http://aksw.org - semantic web research center

Reply via email to