- From: Michael Schneider <schneid@fzi.de>
- Date: Wed, 7 May 2008 10:35:22 +0200
- To: "Jeremy Carroll" <jjc@hpl.hp.com>
- Cc: <public-webont-comments@w3.org>, "OWL Working Group WG" <public-owl-wg@w3.org>
- Message-ID: <0EF30CAA69519C4CB91D01481AEA06A08BE28C@judith.fzi.de>
Hi Jeremy!
Jeremy Carroll wrote:
>The OWL Full semantics entail that
>OWL:Nothing rdf:type rdfs:Datatype
You are right, I can see it! :) (See attachment below.)
>and similarly for any empty class.
>I believe this is unintentional,
I concur. And this *might* even lead to problems in certain situations, I am
not sure.
>and can be fixed by the addition of
>"n >= 1" in the first of the "Further conditions on owl:oneOf" in the
>reference section.
Looks like the right solution to me. The case of an empty list / set will then
lead to an empty /class/.
Doing so won't conflict with the notion of an empty /datatype/, it is just
less specific: The resulting empty class may still have models which interpret
this class to be a datatype, this only cannot be entailed anymore. So
explicitly defining an empty datatype will /not/ lead to an inconsistent
ontology:
:D rdf:type rdfs:Datatype
:D owl:equivalentClass owl:Nothing
Btw: It is still true that a class, which has the empty set as its
class extension, is a /subClassOf/ rdfs:Literal:
CEXT_I(S_I(owl:Nothing)) = {} SUBSET LV_I = CEXT_I(S_I(rdfs:Literal))
>Jeremy
I will add a Full-TF issue (you as author, I as scribe :)).
Cheers,
Michael
Attachment: owl:Nothing rdf:type rdfs:Datatype
----------------------------------------------
By the IFF semantics of owl:oneOf in the "Conditions on OWL vocabulary
related to boolean combinations and sets" table:
1) "If x in C_l ...":
in our case: S_I(owl:Nothing) in C_l
2) "... and y is a sequence of y1...yn over [...] LV_I ...":
in particular the empty list S_I(rdf:nil) of data values,
which is produced by the second comprehension principle
[FIXME: Do the list comprehension principles produce /empty/ lists?]
3) "... and CEXT_I(x) = {y1...yn} ..."
in our case: CEXT_I(S_I(owl:Nothing)) = {}
4) "... then <x,y> in EXT_I(S_I(owl:oneOf))"
our intermediate result:
<S_I(owl:Nothing), S_I(rdf:nil)> in EXT_I(S_I(owl:oneOf))
And then with the first of the "Further conditions on owl:oneOf":
5) "if l is a sequence of y1...yn over LV_I"
that's our empty list
6) "... then if <x,l> in EXT_I(S_I(owl:oneOf))"
so this matches our intermediate result above:
<S_I(owl:Nothing), S_I(rdf:nil)> in EXT_I(S_I(owl:oneOf))
7) "... then x in IDC"
aha: S_I(owl:Nothing) in IDC
where "IDC" is the name of the class extension of rdfs:Datatype
Hence, by applying the IFF-style RDFS-semantics of rdf:type :
owl:Nothing rdf:type owl:Datatype
Received on Wednesday, 7 May 2008 08:36:02 UTC