W3C home > Mailing lists > Public > public-owl-wg@w3.org > November 2007

Punning and the "properties for classes" use case (from public-owl-dev)

From: Jeremy Carroll <jjc@hpl.hp.com>
Date: Thu, 01 Nov 2007 17:49:27 +0000
Message-ID: <472A11A7.4000403@hpl.hp.com>
To: public-owl-wg@w3.org
CC: Michael Schneider <schneid@fzi.de>

Since Michael Schneider has argued my corner much better than I could 
myself, I thought I might quote him in full ...

To my mind this is a devestating critique of the current punning design.
(I hope it is not offensive to state my technical opinion in a 
forthright manner)


In public-owl-dev:
Michael Schneider wrote:
-------- Original Message --------

Foreword: Until now, I have found very few information about punning, 
and I do not remember any serious discussion about punning in this 
mailing list (just a few remarks here and there by different people). So 
I will just use this opportunity to start such a discussion. It might 
well be that, due to my missing knowledge about punning, I am wrong in 
several points I am stating in this mail. But I believe that it is 
better to state wrong points, which will then hopefully get corrected 
within the following discussion, instead of having no public discussion 
at all.


This week, Jeremy Carroll discusses punning in the OWL-WG mailing list in:

   "comments on RDF mapping"

His observation is that certain OWL-Full entailments do not exist with
punning. For instance:

     <a> rdf:type owl:Thing .
     <a> rdf:type owl:Class .
     <b> rdf:type owl:Thing .
     <b> rdf:type owl:Class .
     <a> owl:sameAs <b> .

   entails [in OWL Full]

     <a> owl:equivalentClass <b> .

But, according to Jeremy, the latter statement is /not/ entailed in
OWL-1.1(-DL) with punning.

I am going to comment on Alan Ruttenberg's answer to Jeremy's mails.

Alan Ruttenberg wrote on 30 Oct 2007 in

>My understanding is that there is a requirement to be able to create  
>properties attached to classes that have more inference support than  
>is currently possible using annotation properties. For example, it is  
>desirable that an "annotation property" for an editing time stamp  
>should have a range that is xsd:date, or, for SKOS, we would like  to  
>be create subproperties of rdfs:label.

I agree that this would be a very valuable feature. But I don't believe 
that this feature is really provided by punning.

>Alan Rector articulated these cases initially, IIRC. I suspect they  
>are recorded somewhere amongst  the OWLED stuff.
>I believe that you have correctly identified the missing entailments.  
>Those entailments, while desirable in general, are not necessary for  
>the above use case. 

I think that this argumentation might be somewhat shortsighted. Let's 
regard for example the following situation:

   (1) <c1> a owl:Class .
   (2) <p> a owl:ObjectProperty .
   (3) <c1> <p> <x> .

While OWL-1.0-DL will not allow this combination of axioms, it actually 
is allowed with punning. So it looks like as if I really have achieved 
to add an objectproperty to some class.

Now, it will probably be quite common in the SemWeb to make further
assertions about a class by using a /different/ name for it, and OWL 
with punning allowes us to do so by stating an additional renaming axiom 

   (4) <c2> owl:sameAs <c1> .

Having axioms (1) to (4), a punning enabled reasoner will be able to 
infer the following new statement:

   (5) <c2> <p> <x> .

So up to now, everything looks fine with regards to the "properties for
classes" use case.

But it doesn't might look so fine anymore, if we have additional axioms 
on class <c1>. Say, we have the assertion:

   (6) <i> a <c1> .

and I want to make <c1> into a sub class of another class <d>, but now 
by using its alleged synonym "<c2>":

   (7) <c2> rdfs:subClassOf <d> .

then I would expect that the following statement can also be inferred:

   (8) <i> a <d> .

But as far as /I/ understand punning, (8) won't be entailable, because 
the URI called "<c1>" denotes a class in (1), while it denotes an 
individual in (3). In effect, I did not, as intended, assign property 
<p> to the class ressource denoted by the name "<c1>", but instead, this 
property has been assigned to some possibly completely different 
individual resource, which just happens to have the same name. And there 
has to be no semantical relationship between these two resources, so 
these two resources don't have to coincide, see section 3.3 of [1].

I can at least see in the semantics draft [2] that in OWL-1.1 there will 
be no strict separation of the different parts of the OWL universe
(individuals, classes, etc.) anymore, as it has been originally demanded 
for OWL-1.0-DL. But this makes it only /possible/ for an individual and 
a class to be the same. As long as I do not have any means in OWL-1.1-DL 
to also /enforce/ these two resources to be the same, this relaxation 
seems to be useless to me with respect to punning. (BTW: I am not 
certain whether this relaxation is a good idea, but this is another topic.)

Punning, as I understand it from [1], is just a means for "overloading"
names for resources from different parts of the OWL universe. Without
punning, I would have to write axioms (1) and (3) above in a form like

   (1') <c1_class> a owl:Class .
   (3') <c1_indiv> a owl:Thing .

In OWL-DL plus punning, the reasoner will have to do such URI renamings
itself in a pre-processing step before it can start its reasoning tasks.
This seems necessary, otherwise the reasoner might produce wrong 

>As I understand it, the reason those entailments  
>are not supported is that there is not enough theoretical work to  
>ensure that they can be implemented in a sound, complete, and  
>decidable manner.
>Proponents of punning would label this:
>"OWL DL, now with more, but not all, of OWL Full goodness"

As I understand it, punning has nothing to do with OWL Full semantics, 
and then it would not provide any kind of "OWL Full goodness". I rather 
believe that the proponents of punning think that overloading URIs in 
OWL might be useful, or at least convenient, in certain cases. I could 
imagine that the argumentation might go this way:

   "In OWL-1.0-DL, one workaround to assign properties
   to a class C is to dedicate some individual iC, which
   receives the property as a proxy for C. So why not just
   give this proxy individual the same name as the class
   to make the intended connection between them both more

But I find it pretty confusing to overload URIs, to say the least. As my
example above demonstrates, it is very easy to draw wrong conclusions 
about the semantics of an ontology when using URI overloading (confusing 
for a human, who constructs and/or reads ontologies; not confusing for a 
machine, of course). So I consider punning, while perhaps a 
"nice-to-have" feature, to be a very dangerous feature in practice, and 
I will prefer to follow the saver principle: "One URI, one resource".

Anyway, if my argumentation above is right, then punning does not cover 
the "properties for classes" use case.


[1] "Next Steps for OWL"

[2] "OWL 1.1 Model-Theoretic Semantics", chapter 2
Received on Thursday, 1 November 2007 17:50:11 UTC

This archive was generated by hypermail 2.3.1 : Tuesday, 6 January 2015 21:42:00 UTC