Object class inheritance

Directory Server supports object inheritance for object class and attribute definitions. A new object class can be defined with parent classes (multiple inheritance) and the additional or changed attributes.

Each entry is assigned to a single structural object class. All object classes inherit from the abstract object class top. They can also inherit from other object classes. The object class structure determines the list of required and allowed attributes for a particular entry. Object class inheritance depends on the sequence of object class definitions. An object class can only inherit from object classes that precede it. For example, the object class structure for a person entry might be defined in the LDIF file as:
objectClass: top 
objectClass: person 
objectClass: organizationalPerson 
In this structure, the organizationalPerson inherits from the person and the top object classes, while person object class only inherits from the top object class. Therefore, when you assign the organizationalPerson object class to an entry, it automatically inherits the required and allowed attributes from the superior object class. In this case, the person object class.
If the attribute ibm-slapdSchemaCheck is set to V3 in the configuration file, then every entry can have only one structural object class. If multiple structural object classes are added, they must have parent-child relationship. For example, an entry type person, X, can be defined by using the following structural object classes:
objectClass: top
objectClass: person
objectClass: organizationalPerson
In this case, for the entry, X, the MUST attributes of the child structural object class, organizationalPerson, must be defined.
If the attribute ibm-slapdSchemaCheck is set to V3_lenient in the configuration file, then an entry can have one or more structural object classes. If multiple structural object classes are added, it is not a must to have parent-child relationship. For example, an entry, Y, can also be defined by using the following structural object classes:
objectClass: person
objectClass: account
In this case, for the entry, Y, the MUST attributes of the structural object classes, person, and account, must be defined.
Note: In Directory Server, by default, the attribute ibm-slapdSchemaCheck is set to V3_lenient.

Schema update operations are checked against the schema class hierarchy for consistency before processed and committed.