Re: ACTION-733 started: my very belated OWLRL-RIF review

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