| POSC Specifications Version 2.2 | Epicentre Logical Data Model |
Consider material_class, facility_class, equipment_class and their respective class_classifications (material_class_classification, etc.) All three class_classifications have member as a relationship. The inverse of these are (resp) material_class_classification, facility_class_members, equipment_class_classification. The other (the parent) relationship is classification (in material_class_classification), and class_of in the other two. This is a minor inconsistency. But the inverses (resp) are classified, facility_class_classification, and equipment_class_members. Put these into a table, and you will see the inconsistencies. Since the definitions of these inverse relationships aren't meaningful, it is difficult to determine which inverse goes with which forward. I have not looked at the other class_classifications that exist, but the problem is probably still present with those.
Rename the attribute names between the class entities and the class classification entities to be consistent. The new class/classification names for each relationship are be_a_member_of/have_as_a_member and classify/be_classified_as. The old class/classification names for the corresponding relationships are ACTIVITY: classification/member and member/classification EQUIPMENT: equipment_class_classification/member and equipment_class_members/class_of FACILITY: facility_class_members/member and facility_class_classification/class_of MATERIAL: material_class_classification/member and classified/classification. Add rules to facility_composition, facility_connection and facility_version to prevent a facility being connected to iteself, being part of iteself or being a version of itself. Add rule to equipment_item_connection to prevent an equipment_item being connected to itself.
Renamed objects:
activity_class_classification.have_as_a_member (Attribute), previous name was member
activity_class_classification.be_classified_as (Attribute), previous name was classification
activity_class.be_a_member_of (Attribute), previous name was classification
activity_class.classify (Attribute), previous name was member
equipment_class_classification.have_as_a_member (Attribute), previous name was member
equipment_class_classification.be_classified_as (Attribute), previous name was class_of
equipment_class.be_a_member_of (Attribute), previous name was equipment_class_classification
equipment_class.classify (Attribute), previous name was equipment_class_members
facility_class.be_a_member_of (Attribute), previous name was facility_class_members
facility_class.classify (Attribute), previous name was facility_class_classification
facility_class_classification.have_as_a_member (Attribute), previous name was member
facility_class_classification.be_classified_as (Attribute), previous name was class_of
material_class_classification.have_as_a_member (Attribute), previous name was member
material_class_classification.be_classified_as (Attribute), previous name was classification
material_class.be_a_member_of (Attribute), previous name was material_class_classification
material_class.classify (Attribute), previous name was classified
facility_class_classification.val1 (Where rule), previous name was
facility_composition.val1 (Where rule), previous name was
facility_connection.val1 (Where rule), previous name was
facility_version.val1 (Where rule), previous name was
equipment_item_connection.val1 (Where rule), previous name was
Modify the uniquess clause of the class_classification entities to reflect the new attribute names.
Modified objects:
activity_class_classification.si (Unique rule)
equipment_class_classification.si (Unique rule)
facility_class_classification.si (Unique rule)
material_class_classification.si (Unique rule)