OntoClean probes the meaning of each member of a taxonomy by applying meta-properties to them. For example, OntoClean uses rigid, non-rigid or anti-rigid as meta-properties to identify properties with certain characteristics. A property of an abstraction can be essential, but at the same time not rigid because its existence is not necessary in all domains in which the abstraction is used and is therefore an anti-rigid property of the class. On the other hand, rigid properties are essential in all domains where the abstraction is used. As a result it's clearly seen that anti-rigid properties cannot be polymorphic in relation to rigid properties because anti-rigid properties can cease to exist in other domains or state of affairs, while rigid properties don't cease to exist. An attempt to use polymorphism between anti-rigid and rigid properties would result in abstractions that are not able to scale across all domains, although the relation may work fine in some domains.
For instance, in C++ a template class that requires it's type parameter(s) to have certain members that are not rigid, will not scale to a domain that do not require those non-rigid members to instantiate the template. The abstraction implemented through the template definition can't exhibit polymorphic behavior with its type parameter(s) in every situation because, their non-essential properties may not exist. The relationship between the abstractions must use some form of constitution instead, and not require the anti-rigid properties in the interface of the template. In C++ a specialization of a template could be used to support other domains or state of affairs where the anti-rigid properties are not present or where they are synthesized by a combination of other class members. Although some aspects of OntoClean appear to be overkill and controversial, techniques used in OntoClean appear to be useful for developing object-oriented design strategies. James Smith E-mail: [email protected] ________________________________ From: Jim Smith <[email protected]> To: [email protected] Sent: Mon, January 11, 2010 11:02:38 AM Subject: [c-prog] Techniques used in Ontology that are useful for capturing software abstractions in C++ OntoClean is a method used in Ontology to help create clean, scalable abstractions. By applying metaproperties to members of an abstraction OntoClean can assist in evaluating and validating relationships between entities in a domain. The terminology used in OntoClean doesn't map directly into object-oriented programming. Many of the same words are used but in a slightly different context. For instance, in OntoClean a class is a set of entities that exhibit a property. Ref: http://en.wikipedia.org/wiki/OntoClean James Smith E-mail: jmclaurin11@ yahoo.com [Non-text portions of this message have been removed]
