<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 <dave.e.reyno...@gmail.com> 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 <javedbtk...@gmail.com> >> 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. < >>> buehm...@informatik.uni-leipzig.de> 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 < >>>>> >>>> dave.e.reyno...@gmail.com> >>>> >>>>> 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 >>>> >>>> >>>> >>> >>