- From: Axel Polleres <axel.polleres@deri.org>
- Date: Tue, 15 Sep 2009 09:34:52 +0100
- To: RIF <public-rif-wg@w3.org>, Dave Reynolds <der@hplb.hpl.hp.com>
Sorry, I had completely delayed this... here my first few comments
(upto end of section 4.3), the rest to follow shortly...
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]
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 *)
3)
Haskey --> HasKey
1. http://www.w3.org/TR/rif-rdf-owl/#Appendix:_Embeddings_.28Informative.29
--
Dr. Axel Polleres
Digital Enterprise Research Institute, National University of Ireland,
Galway
email: axel.polleres@deri.org url: http://www.polleres.net/
Received on Tuesday, 15 September 2009 09:00:26 UTC