I have something like this after my Jena forward chain rules and SPARQL
query:

 Reasoner reasoner1 = new GenericRuleReasoner(Rule.parseRules(rule));
        InfModel inf = ModelFactory.createInfModel(reasoner1, model);

Reasoner reasoner2 = ReasonerRegistry.getRDFSReasoner();

InfModel inf2 = ModelFactory.createRDFSModel(model);



On Fri, Nov 25, 2016 at 4:46 PM, tina sani <[email protected]> wrote:

> So all I should so is to create rdfs model:
>
> InfModel inf2 = ModelFactory.createRDFSModel();
>
> What would be the arguments of the ModelFactory.createRDFSModel(). I have two 
> models here, one the simple non inference model and other the inference model 
> : InfModel inf = ModelFactory.createInfModel(reasoner, model);
>
>
>
>
> On Fri, Nov 25, 2016 at 3:59 PM, Lorenz B. <[email protected]
> leipzig.de> wrote:
>
>>
>>
>> > 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
>> That might be incomplete as rdfs:subClassOf is transitive. Simply use
>> the RDFS reasoning.
>> >
>> > 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.parse
>> Rules(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
>> >>
>> --
>> Lorenz Bühmann
>> AKSW group, University of Leipzig
>> Group: http://aksw.org - semantic web research center
>>
>>
>

Reply via email to