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
>>
>>
>

Reply via email to