- From: Dave Reynolds <dave.e.reynolds@googlemail.com>
- Date: Fri, 15 Jan 2010 13:42:04 +0000
- To: Danny Ayers <danny.ayers@gmail.com>
- CC: Semantic Web <semantic-web@w3.org>
Hi Danny, On 15/01/2010 11:21, Danny Ayers wrote: > 2010/1/15 Dave Reynolds<dave.e.reynolds@googlemail.com>: > > Hey Dave, can you do me a favour, so I don't have to trawl the docs - > > P(foo, bar) does not entail P(foo) > > what's the rationale behind that? Seems a bit counter-intuitive. Well one level of answer is that RIF is a rule interchange format, and that's how the majority of rule systems work, so RIF should match that. As Pat said for Common Logic, these systems often regard each predicate arity as a distinct predicate so that P(.,.) and P(.) are just different predicates. Think Prolog if you've ever used that. There is nothing to stop you adding entailment rules if, for your particular P, this can be entailed: P(?x) :- P(?x, ?y) As a random example think about: successor(?x, ?y) meaning that ?y is the successor (the number one greater than) ?x. You wouldn't expect: successor(1, 2) to imply: successor(1) After all, what would that mean? You might want a different "hasSuccessor" predicate and write the rule: hasSuccessor(?x) :- successor(?x, ?y) If you were feeling perverse you could even call your "has some successor" predicate "successor" if you want to but you'd still have two distinct notions there. Dave
Received on Friday, 15 January 2010 13:42:55 UTC