- From: Dave Reynolds <der@hplb.hpl.hp.com>
- Date: Tue, 15 Sep 2009 16:23:51 +0100
- To: Axel Polleres <axel.polleres@deri.org>
- CC: RIF <public-rif-wg@w3.org>
Axel Polleres wrote:
> Sorry, I had completely delayed this... here my first few comments (upto
> end of section 4.3), the rest to follow shortly...
Thanks Axel.
> 1)
> the suggestion of rif:error as a unary predicate is a good idea, but
> conflicts with the use of rif:error as a 0-ary prediacte in the
> RDF-OWL-compatibility document [1]
Ah, I had forgotten Jos used the same predicate. Why is it a problem?
RIF allows the same predicate symbol to have different arities.
I would be happy to change all my usages to 0-arity if that is required.
> 2)
> I am afraid there is a problem with rule (* eq-diff2 *)... It does not
> prevent that ?x and ?y bind to the SAME member of the list, where no
> inconsitency should apply... the solution is to extend the memeber
> predicate with an index. and let the rule apply to differently indexed
> members only, i.e. :
>
>
> Group (
> Forall ?list ?hd (
> _member(?list ?hd 0 ) :- ?list[rdf:first -> ?hd] )
>
> Forall ?list ?tl ?x (
> _member( ?list ?x External( func:numeric-add( ?i+1 ) ) ) :- And(
> ?list[rdf:rest -> ?tl] _member(?tl ?x ?i) ) )
> )
>
> then (* eq-diff2 *) can be rewritten to:
>
> Forall ?x ?y ?l (
> rif:error("AllDifferent") :- And (
> ?l[rdf:type -> owl:AllDifferent]
> _member(?l ?x ?i) _member(?l ?y ?j)
> External( pred:numeric-not-equal ( ?i ?j ) )
> ?x[owl:sameAs->?y] ) )
>
> And analogously for (* prp-adp *) and (* cax-adc *)
Ah well spotted. Thanks, will fix.
> 3)
> Haskey --> HasKey
Done.
Dave
Received on Tuesday, 15 September 2009 15:24:36 UTC