Thanks Rob, do you really think this will solve my problem.? I have score values for three subjects stored in owl file.
I need to point out the maximum score plus the subject(Semantic web, Robots) in which he got maximum score. And finally assign the maximum scored subject to the object property "favoriteSubject" Student1 favoriteSubject Semantic web (for example). Regards On Tue, Sep 27, 2016 at 6:39 AM, Rob Vesse <[email protected]> wrote: > Rules are primarily intended for making logical inferences. What are you > appear to be trying to do is ask questions of the data for which a query > language like SPARQL is much better suited e.g. > > PREFIX std: <http://yourdomain.com/ns#> > SELECT ?student ?subject ?bestScore > WHERE > { > { > SELECT ?student MAX(?score) AS ?bestScore > WHERE > { > ?student a std:Student ; > std:hasResult ?result . > ?result std:hasScore ?score > } GROUP BY ?student > } > ?student std:hasResult ?result . > ?result std:inSubject ?subject > } > > I would suggest reading a tutorial such as https://www. > cambridgesemantics.com/semantic-university/sparql-by-example > > This is just one such possible query and it makes assumptions about the > structure of the data. But you should be able to create a query that works > your datamodel. > > Failing that you can just use the Model/OntModel APIs directly to extract > the relevant data and compute the calculation in Java. Sometimes people > forget that they are working in a programming language and expect a library > to magically do everything for them when what they actually needed to do is > write some code for themselves! > > Rob > > On 27/09/2016 12:22, "javed khan" <[email protected]> wrote: > > Lorenz, any alternative way? I mean if there is any other rule where > we can > accomplish things like this? > > > On Tue, Sep 27, 2016 at 2:56 AM, Lorenz B. < > [email protected]> wrote: > > > > > > > > If we want to get the maximum score student got among three > subjects > > > (Robotics, Semantic Web, Research Methods) using Jena rules. > > > > > > ?x rdf:type std:Student + ?x std:RoboticsScore ?Rscore + ?x > > > std:SemanticWebScore ?SMscore + ?x ResearchMethodScore ?RMscore > > > + max(Rscore,SMscore,RMscore,maximun) THEN ???? > > > > > > I have two questions here: > > > > > > 1) Is the max(Rscore,SMscore,RMscore,maximun) calculate max and > assign > > it > > > to the (fourth)maximum variable? > > Documentation is here: > > https://jena.apache.org/documentation/inference/#builtin-primitives > > > > max(?a, ?b, ?c) takes two arguments ?a,?b and assigns the value to ?c > > > 2) How would the THEN part be? *If these values give me max, then > how > > can I > > > know that this maximum value belongs to Robotic, Semantic web or > Research > > > methods?* > > Not possible, as max only assigns the maximum value to the variable > as > > you already know. > > > *I want to determine "Favorite subject" of student so if a student > got > > max > > > score in a subject, that will be his/her favorite subject. * > > > > > -- > > Lorenz Bühmann > > AKSW group, University of Leipzig > > Group: http://aksw.org - semantic web research center > > > > > > > > > >
