Category - Category (internal data type)
A category is a concept (classification) that defines a generic subset for an object collection of a given type. The category defines the extension (borderlines) for the subset and/or a constraint.
In general, categories are classifications, i.e. a category may consist of a number of sub categories, which allow further division of object collections. When the category's classification refers to a type (typed category), it may define an object collection containing a set of specialized object instances.
In order to assign objects to a category, category values may be assigned to classifying characteristic (e.g. assigning the category male to the person characteristic gender). Alternatively, rules might be referenced that define conditions for assigning individual objects to a certain category.
Object type and properties of the category's classification are inherited from its parent classification. When the category refers to another object type then the parent classification, the category's object type must inherit from the parent's classification object type.
Properties are inherited from the upper classification and may be extended by additional properties for sub categories. Thus, each category supports all properties, which have been defined in the classification hierarchy.
In [1087], categories are defined "type of characteristic". [ODMG] supports categories as enumerators. [ERM] does not support categories on model level. [UML] allows defining categories as enumeration literal.
The extension describes the object set, which is defined by the category. There are many different ways for defining the extension, but typically, it is defined by describing borderlines. E.g. persons, that earn between 2000 and 3000 EURO per month.