W3C home > Mailing lists > Public > semantic-web@w3.org > January 2010

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

From: Dave Reynolds <dave.e.reynolds@googlemail.com>
Date: Fri, 15 Jan 2010 13:42:04 +0000
Message-ID: <4B5070AC.1090402@gmail.com>
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

This archive was generated by hypermail 2.4.0 : Friday, 17 January 2020 19:48:05 UTC