- 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