W3C home > Mailing lists > Public > public-rif-wg@w3.org > September 2009

Re: Bugs found in the editor draft for OWL 2 RL - RIF

From: Dave Reynolds <der@hplb.hpl.hp.com>
Date: Wed, 30 Sep 2009 17:27:18 +0100
Message-ID: <4AC386E6.9010201@hplb.hpl.hp.com>
To: Ivan Herman <ivan@w3.org>
CC: "Public-Rif-Wg (E-mail)" <public-rif-wg@w3.org>
Hi Ivan,

> I am not formally member of the working group and you only have an
> editor's draft (to be sure, I read the one in [1]) so I was not sure
> whether it is kosher for me to send errors on the WG's public mailing
> list. I chose to send them to you directly; if you prefer to resend this
> to the WG list for proper archiving, it is perfectly fine with me...

Thanks Ivan. Very helpful to have these problems spotted. I'm copying 
the WG list for proper archiving.

> Here are the few problems I found:
> 
> In 4.3.1 you list the rule eq-diff2. This rule, in the OWL 2 Profile
> document, looks like:
> 
> T(?x, rdf:type, owl:AllDifferent)
> T(?x, owl:members, ?y)
> LIST[?y, ?z1, ..., ?zn]
> T(?zi, owl:sameAs, ?zj)
> 
> which does not seem to be identical to the way you quote it:
> 
> T(?yi, owl:sameAs, ?yj)
> T(?x, rdf:type, owl:AllDifferent)
> LIST[?x, ?y1, ..., ?yn]
> 
> (reference to owl:member is missing altogether...)
> 
> Same issue with prp-adp and cax-adc
> 
> I may miss something here, though, because the impression I have is
> that, in the rule transformation in section 7.2, you use the right
> owl:members and owl:distinctMembers predicates...

Ah yes, these rules were different in the OWL Profiles document when I 
first produced the document. The section 7.2 was updated as we built the 
reasoner we reported on; I thought I had migrated all the rules back 
into the rest of the document but clearly failed on those ones.

Fixed.

> -------------
> 
> - In 4.3.1, in the translation to rules you say, for example, for eq-diff2
> 
> External(pred:list-contains(?l ?x)) ?ix = External(func:index-of(?l ?x))
> External(pred:list-contains(?l ?y)) ?iy = External(func:index-of(?l ?y))
> External( pred:numeric-not-equal ( ?i ?j ) )
> 
> Shouldn't the last line be
> 
> External( pred:numeric-not-equal ( ?ix ?iy ) )
> 
> (the same error repeats itself in all four rules)

Yes, cut paste error, now fixed.

> - Right before 4.3.3. in the second alternatives for property chain the
> second rule uses
> 
> ?x[rdf:tl->?y]
> 
> which does not look right, rdf:tl is not in the rdf space... I guess it
> should be rdf:last

Yes, fixed. Though that alternative form is not used in the appendix.

> (I must admit I did not check Appendix 6 whether the same errors are
> copy-pasted there, too...)

Copy-pasted the newly fixed versions.

> --------------
> 
> I also found some trivial editorial mini-bugs:
> 
> - Section 4.3, second paragraph, 'OWL2 RL' -> 'OWL 2 RL'
> - Section 4.3, paragraph right before 4.3.1. 'The' -> 'There'

Fixed.

> - Section 4.4.2, first rule, it looks to me as if there was a
> superfluous ')' after '->l2]'. The same in the more complete, second rule.

Actually in that case the bug was a superflous ')' before the ':-', the 
one at the end is right.  I hope I never have to write any of this 
Presentation Syntax!

> --------------
> 
> Also, though this is more editorial than other... My understanding of
> your encoding on the dt-type2 rule (in 4.4.3) is that
> 
> ?lt[rdf:type->?ty rdf:type->rdfs:Literal]
> 
> does actually slightly more than what dt-type2 requires, insofar as it
> also generates the (?lt rdf:type rdfs:Literal) which is, strictly
> speaking, not in dt-type2. Though it is _correct_ to add it there
> because there is a subsumption on that triple, maybe it deserves an
> editorial note...

I don't agree with this one, though as you say it is more editorial.

In the OWL 2 Profiles document dt-type2 says that it asserts
T(lt, rdf:type, dt) ""for each literal lt and each datatype dt supported 
in OWL 2 RL such that the data value of lt is contained in the value 
space of dt"". The issue is that rdfs:Literal is listed as a supported 
datatype for OWL 2 RL and since all those literal values are contained 
in rdfs:Literal then dt-type2 should in fact be asserting those triples 
as well.

If RIF had direct support for rdfs:Literal or had a generic is-literal 
predicate (or had the original is-literal-of-type predicate) that those 
rules would be a lot shorter :-)

> I hope this is helpful...

Very much so, thanks.

Dave

> 
> Cheers
> 
> Ivan
> 
> [1] http://www.w3.org/2005/rules/wg/draft/ED-rif-owl-rl-20090929/
> 
Received on Wednesday, 30 September 2009 16:28:02 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Wednesday, 30 September 2009 16:28:03 GMT