Response to MS

From RIF
Revision as of 16:45, 24 November 2009 by Christian de Sainte Marie (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
Dear RIF WG!

I had a look into the "OWL 2 RL in RIF" FPWD and found a few issues. I will separate them into what I believe are technical errors, editorial errors and suggestions for enhancement. I have checked all reported issues against the latest version in the Wiki.

Regards,
Michael

LIST OF TECHNICAL ERRORS
========================

* 4.3.1, translation for eq-diff3: contains the triple "?a[owl:members -> ?l]". This should be "?a[owl:distinctMembers -> ?l]" (both the first two translations refer to "owl:members" in the draft).

* 4.3.3, translation for prp-key: after "Forall" the variable "?c" is listed two times; the second occurrence should probably be removed.

* 4.4.3, "Type membership", all translations: The built-in predicates named "pred:is-literal-DATATYPE" actually receive both the literal and the datatype as arguments in "OWL 2 RL in RIF", but according to §4.2 of RIF DTB they should only receive a single argument. Also, the variable "?ty" always occurs non-quantified in the translations. I believe that the translations need to be rewritten, such as (for xsd:integer):

     Forall ?s ?p ?lt ( ?lt[rdf:type->xsd:integer rdf:type->rdfs:Literal] 
                      :- And( ?s[?p->?lt] External( pred:is-literal-integer( ?lt )) ))

Mind the changed triple "?lt[rdf:type->xsd:integer]"!

* 4.4.3, "Type checking", all translations: The "OWL 2 RL in RIF" document always uses the positive predicates "pred:is-literal-DATATYPE", but I think it should be the negative forms "pred:is-literal-not-DATATYPE" according to §4.3 of RIF DTB. Also, the negative forms should again only receive a single argument, not two. So I guess the correct form would be something like (for xsd:integer):

      Forall ?lt ( 
        rif:error() :- And (
          ?lt[rdf:type->xsd:integer] External(pred:is-literal-not-integer( ?lt )) ))
Mind the changed triple "?lt[rdf:type->xsd:integer]"!

* 4.4.3, "Fixed vocabulary rules": The formula refers to the non-existing term "rdfs:text". I guess this should be "rdf:PlainLiteral"?

LIST OF EDITORIAL ERRORS
========================

* 4.4.2, last paragraph: "... which include owl:sameAs ...". "owl:sameAs" should be rendered in typewriter font.

LIST OF SUGGESTED ENHANCEMENTS
==============================

* Alignment of variable names between original OWL 2 RL rules and their translations: I suggest to reuse the variable names of the original rule set wherever possible. This is currently not always the case in the draft. For example, in 4.3.1 the translation of the rule eq-diff2 uses the name "?r" for what the original rule uses "?x", and the translation uses itself "?x", but for something different. And the translation of eq-diff3 uses again a different name "?a" instead of "?r" before (and "?x" in the original rule). This is confusing and makes it unnecessarily hard to compare the original rules with the translations.

* 4.3.1, final note starting with "Note: it might be tempting to refactor ...". I suggest to elaborate on this. At least to me this note is completely unclear.