Yes I use GenericRuleReasoner, so using the following rules along with my
own rules will solve the problem?

?x rdfs:subClassOf emp:ContractEmployee--> ?x rdfs:subClassOf emp:Employee
?x rdfs:subClassOf emp:PermanantEmployee--> ?x rdfs:subClassOf emp:Employee

On Thu, Nov 24, 2016 at 11:39 AM, Lorenz B. <
[email protected]> wrote:

>
> >  If I pass OntModelSpec.OWL_MEM_MICRO_RULE_INF” to the OntModel, will
> it do
> > the RDFS reasoning?
> See [1] in general and in particular [2] which shows how to setup an
> RDFS reasoner
>
> InfModel inf = ModelFactory.createRDFSModel(rdfsExample);
>
> or
>
> Reasoner reasoner = ReasonerRegistry.getRDFSReasoner();
> InfModel inf = ModelFactory.createInfModel(reasoner, rdfsExample);
>
> [1] https://jena.apache.org/documentation/inference/ [2]
> https://jena.apache.org/documentation/inference/#generalExamples
> >
> > b) adding the particular rules to your set of rules
> >  I have already created the rules, mentioned in my first email. You means
> > rules other than that?
> I don't know how you setup your rules, but if you use the
> GenericRuleReasoner it does only apply your rules and you would have to
> add the rules that do the rdfs:subClass/rdf:type inference.
> >
> > On Wed, Nov 23, 2016 at 11:50 AM, Lorenz B. <
> > [email protected]> wrote:
> >
> >> Dave meant that you need an additional layer of reasoning like RDFS or
> >> even less to get the inferences that you describe.
> >> This can be done by
> >>
> >> a) nesting two InfModels one that works on your specific rules and one
> >> that uses some kind of RDFS or
> >> b) adding the particular rules to your set of rules
> >>
> >>> Ok sorry Dave, actually I did not completely understand your answer.
> >>>
> >>> "You could have an inference model with the appropriate configuration
> to
> >>> deduce membership of employee"
> >>>
> >>> Yes I have the inference model:
> >>>  Reasoner reasoner = new GenericRuleReasoner(Rule.parseRules(rule));
> >>>         InfModel infer = ModelFactory.createInfModel(reasoner, model);
> >>>
> >>>             Query query = QueryFactory.create(queryString);
> >>>
> >>>      QueryExecution qe = QueryExecutionFactory.create(query, infer);
> >>>
> >>> What additionally I have to do apart from my Jena rule (Forward Chain)
> >>> mentioned in previous email and the inference model.
> >>>
> >>> And of course, I will have a SPARQL query :
> >>> Select *
> >>> where{ ?x rdf:type emp:QualifiedEmployee }
> >>>
> >>> On Tue, Nov 22, 2016 at 6:03 PM, Dave Reynolds <
> >> [email protected]>
> >>> wrote:
> >>>
> >>>> On 22/11/16 14:56, tina sani wrote:
> >>>>
> >>>>> Let me explain a bit.
> >>>>>
> >>>>> String rule = "[rule1:(?x http://www.w3.org/1999/02/22-
> >> rdf-syntax-ns#type
> >>>>> http://www.semanticweb.org#Employee) "
> >>>>>                 + "( ?x http://www.semanticweb.org#Salary  ?salary
> )"
> >>>>>                 + "greaterThan(?salary, 10,00) "
> >>>>>                 + " ->  (?x http://www.w3.org/1999/02/22-r
> >>>>> df-syntax-ns#type
> >>>>> http://www.semanticweb.org#QualifiedEmployee. )]"
> >>>>>
> >>>>>
> >>>>> Classes in my ontology are
> >>>>>
> >>>>> Employee (Super class of all employees)
> >>>>>    * ContractEmployee*  (Subclass of Employee)
> >>>>>            FinanceManager
> >>>>>             ITManager          (Subclasses of ContractEmployee)
> >>>>>    * PermanantEmployee   *(Subclass of Employee)
> >>>>>             Analyst
> >>>>>             Programmer
> >>>>>
> >>>>> In this case, will I use ?x rdf:type Employee  or  ?x rdf:type
> >>>>>  ContractEmployee
> >>>>> All the instances are either from subclasses  * FinanceManager ,
> >> ITManager
> >>>>> or Analyst, Programmer*
> >>>>>
> >>>>> *Is it must that if I use ?x rdf:type Employee, then FinanceManager &
> >>>>> ITManager should also be sub classes of general super class
> "Employee"
> >> ?*
> >>>> I don't think any of these details change my earlier answer, quoted
> >> below.
> >>>> Dave
> >>>>
> >>>>
> >>>> On Tue, Nov 22, 2016 at 5:30 PM, Dave Reynolds <
> >> [email protected]>
> >>>>> wrote:
> >>>>>
> >>>>> On 22/11/16 10:12, tina sani wrote:
> >>>>>> Inline image 1
> >>>>>> The mail list doesn't support attachments so the image didn't come
> >>>>>> through.
> >>>>>>
> >>>>>> However, I'm guessing it included a class Employee with sub-classes
> >>>>>> ContractEmployee and PermanantEmployee.
> >>>>>>
> >>>>>> I have this ontology: Now if I want to use some rules like
> >>>>>>
> >>>>>>> if x rdf:type Employee and ?x salary>Euro10,000. then ?x
> >>>>>>> QualifiedEmployee.
> >>>>>>>
> >>>>>>> My question here is should I use ?x rdf:type Employee or ?x
> rdf:type
> >>>>>>> ContractEmployee or PermanantEmployee
> >>>>>>>
> >>>>>>>
> >>>>>> Depends on your set up.
> >>>>>>
> >>>>>> You could have an inference model with the appropriate configuration
> >> to
> >>>>>> deduce membership of employee and then query that with SPARQL or
> with
> >> a
> >>>>>> second inference model with your own rules in.
> >>>>>>
> >>>>>> If you want just one layer of rules and want to combine OWL/RDFS
> with
> >>>>>> your
> >>>>>> custom rules then that's possible (so long as you set all the
> >> appropriate
> >>>>>> flags, see documentation) but make sure that your own rules are
> >> backward
> >>>>>> not forward rules. [The default Jena rule sets for RDFS and OWL are
> >>>>>> hybrid
> >>>>>> rules so some of the inferences are only available to backward rules
> >> in
> >>>>>> the
> >>>>>> same rule set.]
> >>>>>>
> >>>>>> Or if you don't want the cost of full inference then you can indeed
> >>>>>> rewrite the "natural" query to explicitly check for the base
> >> memberships.
> >>>>>> Dave
> >>>>>>
> >>>>>>
> >> --
> >> Lorenz Bühmann
> >> AKSW group, University of Leipzig
> >> Group: http://aksw.org - semantic web research center
> >>
> >>
> --
> Lorenz Bühmann
> AKSW group, University of Leipzig
> Group: http://aksw.org - semantic web research center
>

Reply via email to