- From: Enrico Franconi <franconi@inf.unibz.it>
- Date: Sun, 2 Feb 2014 16:59:36 +0100
- To: "Peter F. Patel-Schneider" <pfpschneider@gmail.com>
- CC: <tim.glover@bt.com>, <tim@mlhim.org>, Aidan Hogan <aidan.hogan@deri.org>, <pavel.klinov@uni-ulm.de>, PAUL WARREN <paul.w.warren@btinternet.com>, "Dave Reynolds" <dave.e.reynolds@gmail.com>, "semantic-web@w3.org Web" <semantic-web@w3.org>
+1, Peter. +1, Pat :-) —e. On 31 Jan 2014, at 19:26, Peter F. Patel-Schneider <pfpschneider@gmail.com> wrote: > I do not think that it is correct to say that "if a class A has property x, then all objects of that class have property x" in OOP, at least without carefully qualifying what you mean by "property". For example, suppose that class A is a subclass of class C. That is a property of class A, but objects of class A are not subclasses of class C. > > If you restate things, then you end up with something like: > If class A defines a field X,, then all objects of class A have a value for field X. If class B extends X, then all objects of class B also have a value for field X. > > What causes trouble here is being sloppy in the use of "property". One meaning of property supports a particular inference, other meanings don't. "Inheritance" is another of these words, with different meanings when relating instances to classes, and a different meaning when relating subclasses to superclasses. (There are also different meanings for inheritance when relating subproperties to superproperties and when relating prototypes to clones.) > > Sloppy use of words that can be easily misunderstood can result in incorrect inferences by people. This is one reason why many researchers working on ontology languages try to avoid the use of "property" and "inheritance". > > Peter F. Patel-Schneider > > > > On 01/31/2014 08:21 AM, tim.glover@bt.com wrote: >> >> Hi, >> >> (Also speaking from the sidelines, so apologies if this is nonsense). >> >> As a software engineer, the striking difference is this. In Java, if a class A has property x, then all objects of that class have property x. If class B extends A, then all objects of class B also have property x. >> >> In OWL the logical direction is completely different. In OWL, if property x has domain A, that does NOT mean that all objects of class A have property x. It means that IF an object has property x, it must belong to class A (very roughly speaking - I am aiming for conceptual intuition of the difference here, rather than strict accuracy). IF B is a subclass of A, and IF I can deduce that object b is a B, then it must also be an A. >> >> Inheritance in programming languages allows one to deduce properties of an object from a description of a class. In OWL, the idea is to deduce the class of an object from a description of its properties. >> >> The OWL specs do not talk about inheritance because inheritance in the usual sense does not apply to OWL. Other people believe that OWL has something to do with inheritance because the terminology of classes and subclasses is the same. But the meaning is quite different. >> >> Tim. >> >> >
Received on Sunday, 2 February 2014 16:00:07 UTC