In order to better understand the different categories of object types and subtypes in natural language statements about the real world and in information models, we can distinguish between sortal and non-sortal, and between rigid and non-rigid object types, as proposed by Giancarlo Guizzardi in his theory of object type categories presented in Chapter 4 of Ontological foundations for structural conceptual models.
An object type is sortal if it has a uniform identity condition for its instances. Such a condition defines the property (or set of properties) that no two instances can have in common, without being the same object. An example of a sortal object type is Person
since all its instances (people) are identifiable by a set of properties related to their birth (born when, where and to whom). Book
is an example of a non-sortal object type because it contains instances (e.g., textbooks and self-published novels) that are identified in different ways.
An object type is rigid if its instances cannot cease to be of that type without ceasing to exist (or altering their identity). Person
is an example of a rigid object type, while Employee
is not rigid. A segmentation is called rigid if all segment subclasses are rigid.
A kind is a rigid sortal object type. Examples of kinds are TextBook
and Person
. A role is a sortal object type R classifying all instances of a kind K that participate in a relationship (of a certain type A) with an instance of an object type O. Notice that R is a non-rigid subtype of K since its instances do not cease to exist when they happen to cease instantiating R because they no longer participate in a relationship of type A with an instance of type O.
For instance, Employee
is an example of a role since it is a sortal object type classifying all instances of Person
that participate in an employment relationship with an instance of type Enterprise
.