I don't understand why people think that "^" is the conjunction of rule
atoms?  The documentation [1] says ","  has to be used as functor in
Jena. Note, that this is just implementation dependent and other
frameworks might use a different symbol.

One question from my side:
Somebody else was asking the same quite recently [2]. Is it some
exercise of a computer science lecture at your university? If so, people
should try to work together and share there experience and knowledge. At
least that's how we did it during studies.


[1] https://jena.apache.org/documentation/inference/#rules
[2]
http://jena.markmail.org/search/#query:+page:1+mid:azf7ksmpxnhlzdrp+state:results

Lorenz

>  Hello Lorenz, Dave, I have used the above method and suddenly I get this
> exception:
>
>  WARN [AWT-EventQueue-0] (Rule.java:947) - Rule references unimplemented
> functor: ^
>
> Where it comes from?
>
> On Sun, Nov 27, 2016 at 2:59 PM, Lorenz B. <
> [email protected]> wrote:
>
>>
>>> Hi Dave,
>>>
>>> So in that case we dont need to add non-inference model to the generic
>>> reasoner because after all, our whole data is in the model.
>> Yes, it is simply nested:
>> Raw model A is "contained" in the inferred RDFS model B.
>> B is "contained" in your user-defined rule model C.
>> Thus, A is "contained" in C.
>>>
>>> On Sat, Nov 26, 2016 at 11:55 AM, Dave Reynolds <
>> [email protected]>
>>> wrote:
>>>
>>>> On 25/11/16 13:54, tina sani wrote:
>>>>
>>>>> 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);
>>>>>
>>>> If you want your rules to see the results of the RDFS closure then you
>>>> need something more like:
>>>>
>>>>     InfModel inf = ModelFactory.createRDFSModel(model);
>>>>     Reasoner reasoner1 = new GenericRuleReasoner(Rule.
>> parseRules(rule));
>>>>     InfModel inf2 = ModelFactory.createInfModel(reasoner1, inf);
>>>>
>>>> Dave
>>>>
>>>>
>>>> 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
>>>>>>>
>>>>>>>
>>>>>>>
>> --
>> 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