Re: Alternatives to containers/collections (was Re: Requirements for a possible "RDF 2.0")

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