Sorry but still not working. When I query instances of Expert, it shows "Tim" which is fine. When I query instance of Student, it shows "Khan", which is also fine. Even when I query both in one, it shows "Khan" which is also ok because Khan is also Expert and Student, but when I try to assign it(Khan) to another class, it does not work.
I am afraid if Jena generic rules does not work on classes and only it supports properties like transitive property and inverse property. On Wed, Jul 27, 2016 at 1:39 AM, javed khan <[email protected]> wrote: > <http://www.w3.org/1999/02/22-rdf-syntax-ns#rdf:type> > > are wrong. Either use the correct URI: > > <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> > > or use the prefix form: > > rdf:type > > > I am sorry due to too many threads, I did not read this reply. > > Thanks Dave, let me try. > > On Wed, Jul 27, 2016 at 1:35 AM, Dave Reynolds <[email protected]> > wrote: > >> See my earlier reply, you had an error in the URLs in your rules. >> >> Dave >> >> >> On 27/07/16 09:33, javed khan wrote: >> >>> If my email (code) is not understandable, I am just explaining in plain >>> text. >>> >>> I have class Expert which have some researches i-e "Tim hasResearch >>> Ontologies". I have another class Student (subclasses Master Phd). Khan >>> is >>> instance of Phd class (ultimately of Student class also). Phd student can >>> also have some researches as Expert class and have type both : Student >>> and >>> Expert in Protege. >>> >>> I want instances which are both in Student and Expert i-e Khan in this >>> case. >>> >>> If ?x rdf:type std:Expert and ?x rdf:type std:Student -> ?x rdf:type >>> std:StudentExpert (a new class in the ontology). >>> >>> my query is : select * where { ?x rdf:type std:StudentExpert} >>> >>> On Wed, Jul 27, 2016 at 1:20 AM, javed khan <[email protected]> >>> wrote: >>> >>> I am sorry that is just the mistake when I copy code from my IDE to >>>> email. >>>> In the original code, its written just once. >>>> >>>> On Wed, Jul 27, 2016 at 1:11 AM, Lorenz B. < >>>> [email protected]> wrote: >>>> >>>> I'm not an expert, but why do you have each URI twice in the rule? >>>>> >>>>> I have rule body:I want instance x which are in both classes to assign >>>>>> >>>>> to >>>>> >>>>>> another class "StudentExpert" which have no other instances. But does >>>>>> >>>>> not >>>>> >>>>>> work. >>>>>> (My Owl inverse property and transitive property rule works but this >>>>>> generic rule does not work) >>>>>> >>>>>> String rule = "*[rule1:(?x >>>>>> http://www.w3.org/1999/02/22-rdf-syntax-ns#rdf:type >>>>>> <http://www.w3.org/1999/02/22-rdf-syntax-ns#rdf:type> >>>>>> http://www.semanticweb.org/141#Student >>>>>> <http://www.semanticweb.org/141#Student>) " +* >>>>>> * "(?x >>>>>> http://www.w3.org/1999/02/22-rdf-syntax-ns#rdf:type >>>>>> <http://www.w3.org/1999/02/22-rdf-syntax-ns#rdf:type> >>>>>> http://www.semanticweb.org/141#Expert >>>>>> <http://www.semanticweb.org/141#Expert> )" + * >>>>>> >>>>>> "->(?x http://www.w3.org/1999/02/22-rdf-syntax-ns#rdf:type >>>>>> http://www.semanticweb.org/141#StudentExpert )]"; >>>>>> >>>>>> After prefixes, my query is: >>>>>> >>>>>> "Select * " + "where { ?x rdf:type std:StudentExpert. }"; >>>>>> >>>>>> My Reasoner and InfModel classes are: >>>>>> >>>>>> Reasoner reasoner2 = new GenericRuleReasoner(Rule.parseRules(rule)); >>>>>> >>>>>> InfModel inf = ModelFactory.createInfModel(reasoner2, model); >>>>>> >>>>>> Then query is executed as usual in jena. >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> On Mon, Jul 25, 2016 at 2:38 PM, Dave Reynolds < >>>>>> >>>>> [email protected]> >>>>> >>>>>> wrote: >>>>>> >>>>>> On 25/07/16 19:33, javed khan wrote: >>>>>>> >>>>>>> I have a Student class (Phd students) and Teacher class, having >>>>>>>> >>>>>>> instances. >>>>> >>>>>> There are some students which are also Teacher (teaching to junior >>>>>>>> classes). >>>>>>>> ?x rdf:type ont:Student ?y rdf:type ont:Teacher --> ? >>>>>>>> This will give us Students and teachers instances. >>>>>>>> >>>>>>>> I want Jena generic rule(Forward chaining) which filters those who >>>>>>>> are >>>>>>>> both >>>>>>>> Teachers and Students. Is there any way to do so? >>>>>>>> >>>>>>>> Yes. You are nearly there but you want the rule body to be more >>>>>>> like: >>>>>>> >>>>>>> (?x rdf:type ont:Student) (?x rdf:type ont:Teacher) -> ... >>>>>>> >>>>>>> the rule consequent could assert a new type or some other property to >>>>>>> indicate that ?x is in both classes. >>>>>>> >>>>>>> Dave >>>>>>> >>>>>>> >>>>>>> -- >>>>> Lorenz Bühmann >>>>> AKSW group, University of Leipzig >>>>> Group: http://aksw.org - semantic web research center >>>>> >>>>> >>>>> >>>> >>> >
