On 27/07/16 09:11, Lorenz B. wrote:
I'm not an expert, but why do you have each URI twice in the rule?

I suspect it's an artefact of the mailer used not of the actual data, otherwise it wouldn't parse.

Dave

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


Reply via email to