POSC Specifications: Epicentre Version 3.0 | Logical Data Model |
Add the capability for a class to be a specialization of one other class. Note that this is a specific variation of the existing class classification. The difference is that specialization asserts a "narrowing" of definition while class classification can now be constrained to assert a "conformance" to a definition.
CHANGE ERP_class_specialization ALTER ENTITY reserves_class; ADD parent_class : OPTIONAL reserves_class (*<DESC>The more general class of which this class is a specialization. The semantics of a child class must be a subset of the semantics of the parent class. That is, the child class must represent a specialization of the parent concept by narrowing the meaning of the parent concept. Conformance to a class where the meaning of the class is not altered should be handled by class classification instead of by parent/child. The naming system of the child class should either be the same as the naming system of the parent class or it should be a specialization of that naming system.*) (*<VERB>be a specialization of*); INVERSE ALTER be_a_member_of (*<DESC>Asserts that this class is a member of another class. The naming systems of the two classes should be different and one naming system should not be a specialization of the other.*); ALTER reserves_class AS classify (*<DESC>Asserts that another class is a member of this class. The naming systems of the two classes should be different and one naming system should not be a specialization of the other.*); ADD child_class : SET[0:?] OF reserves_class FOR parent_class (*<DESC>The set of classes for which this class is a generalization.*) (*<VERB>be the generalization of*); UNIQUE ALTER si ADD parent_class LAST; END_ENTITY; (*<REMARK> The following changes duplicate the above pattern. *) ALTER ENTITY document_specification_class; ADD parent_class : OPTIONAL document_specification_class (*<DESC>The more general class of which this class is a specialization. The semantics of a child class must be a subset of the semantics of the parent class. That is, the child class must represent a specialization of the parent concept by narrowing the meaning of the parent concept. Conformance to a class where the meaning of the class is not altered should be handled by class classification instead of by parent/child. The naming system of the child class should either be the same as the naming system of the parent class or it should be a specialization of that naming system.*) (*<VERB>be a specialization of*); INVERSE ALTER be_a_member_of (*<DESC>Asserts that this class is a member of another class. The naming systems of the two classes should be different and one naming system should not be a specialization of the other.*); ALTER classify (*<DESC>Asserts that another class is a member of this class. The naming systems of the two classes should be different and one naming system should not be a specialization of the other.*); ADD child_class : SET[0:?] OF document_specification_class FOR parent_class (*<DESC>The set of classes for which this class is a generalization.*) (*<VERB>be the generalization of*); UNIQUE ALTER si ADD parent_class LAST; END_ENTITY; ALTER ENTITY activity_class; ADD parent_class : OPTIONAL activity_class (*<DESC>The more general class of which this class is a specialization. The semantics of a child class must be a subset of the semantics of the parent class. That is, the child class must represent a specialization of the parent concept by narrowing the meaning of the parent concept. Conformance to a class where the meaning of the class is not altered should be handled by class classification instead of by parent/child. The naming system of the child class should either be the same as the naming system of the parent class or it should be a specialization of that naming system.*) (*<VERB>be a specialization of*); INVERSE ALTER be_a_member_of (*<DESC>Asserts that this class is a member of another class. The naming systems of the two classes should be different and one naming system should not be a specialization of the other.*); ALTER classify (*<DESC>Asserts that another class is a member of this class. The naming systems of the two classes should be different and one naming system should not be a specialization of the other.*); ADD child_class : SET[0:?] OF activity_class FOR parent_class (*<DESC>The set of classes for which this class is a generalization.*) (*<VERB>be the generalization of*); UNIQUE ALTER si ADD parent_class LAST; WHERE END_ENTITY; ALTER ENTITY facility_class; ADD parent_class : OPTIONAL facility_class (*<DESC>The more general class of which this class is a specialization. The semantics of a child class must be a subset of the semantics of the parent class. That is, the child class must represent a specialization of the parent concept by narrowing the meaning of the parent concept. Conformance to a class where the meaning of the class is not altered should be handled by class classification instead of by parent/child. The naming system of the child class should either be the same as the naming system of the parent class or it should be a specialization of that naming system.*) (*<VERB>be a specialization of*); INVERSE ALTER be_a_member_of (*<DESC>Asserts that this class is a member of another class. The naming systems of the two classes should be different and one naming system should not be a specialization of the other.*); ALTER classify (*<DESC>Asserts that another class is a member of this class. The naming systems of the two classes should be different and one naming system should not be a specialization of the other.*); ADD child_class : SET[0:?] OF facility_class FOR parent_class (*<DESC>The set of classes for which this class is a generalization.*) (*<VERB>be the generalization of*); UNIQUE ALTER si ADD parent_class LAST; END_ENTITY; ALTER ENTITY material_class; ALTER higher_ranking_class AS parent_class DROP AGGREGATE (*<DESC>The more general class of which this class is a specialization. The semantics of a child class must be a subset of the semantics of the parent class. That is, the child class must represent a specialization of the parent concept by narrowing the meaning of the parent concept. Conformance to a class where the meaning of the class is not altered should be handled by class classification instead of by parent/child. The naming system of the child class should either be the same as the naming system of the parent class or it should be a specialization of that naming system. For example, the material_class "chocolate" is a general class to which the more specific class "milk chocolate" can be assigned. In this case, this attribute points to "chocolate", the parent or more general class.*) (*<VERB>be a specialization of*); INVERSE ALTER be_a_member_of (*<DESC>Asserts that this class is a member of another class. The naming systems of the two classes should be different and one naming system should not be a specialization of the other.*); ALTER classify (*<DESC>Asserts that another class is a member of this class. The naming systems of the two classes should be different and one naming system should not be a specialization of the other.*); ALTER lower_ranking_class AS child_class (*<DESC>The set of classes for which this class is a generalization. For example, the material_class "chocolate" is a general class to which the more specific class "milk chocolate" can be assigned. In this case, this attribute points to "milk chocolate", the child or more specific class.*) (*<VERB>be the generalization of*); UNIQUE ALTER si ADD parent_class LAST; WHERE END_ENTITY; ALTER ENTITY well_log_trace_class; ADD parent_class : OPTIONAL well_log_trace_class (*<DESC>The more general class of which this class is a specialization. The semantics of a child class must be a subset of the semantics of the parent class. That is, the child class must represent a specialization of the parent concept by narrowing the meaning of the parent concept. Conformance to a class where the meaning of the class is not altered should be handled by class classification instead of by parent/child. The naming system of the child class should either be the same as the naming system of the parent class or it should be a specialization of that naming system.*) (*<VERB>be a specialization of*); INVERSE ALTER be_a_member_of (*<DESC>Asserts that this class is a member of another class. The naming systems of the two classes should be different and one naming system should not be a specialization of the other.*); ALTER classify (*<DESC>Asserts that another class is a member of this class. The naming systems of the two classes should be different and one naming system should not be a specialization of the other.*); ADD child_class : SET[0:?] OF well_log_trace_class FOR parent_class (*<DESC>The set of classes for which this class is a generalization.*) (*<VERB>be the generalization of*); UNIQUE ALTER si ADD parent_class LAST; END_ENTITY; ALTER ENTITY earth_feature_class; ADD parent_class : OPTIONAL earth_feature_class (*<DESC>The more general class of which this class is a specialization. The semantics of a child class must be a subset of the semantics of the parent class. That is, the child class must represent a specialization of the parent concept by narrowing the meaning of the parent concept. Conformance to a class where the meaning of the class is not altered should be handled by class classification instead of by parent/child. The naming system of the child class should either be the same as the naming system of the parent class or it should be a specialization of that naming system.*) (*<VERB>be a specialization of*); INVERSE ADD be_a_member_of : SET[0:?] OF earth_feature_class_classification for have_as_a_member (*<DESC>Asserts that this class is a member of another class. The naming systems of the two classes should be different and one naming system should not be a specialization of the other.*) (*<VERB>be a member of*); ADD classify : earth_feature_class_classification FOR be_classified_as (*<DESC>Asserts that another class is a member of this class. The naming systems of the two classes should be different and one naming system should not be a specialization of the other.*) (*<VERB>classify*); ADD child_class : SET[0:?] OF earth_feature_class FOR parent_class (*<DESC>The set of classes for which this class is a generalization.*) (*<VERB>be the generalization of*); UNIQUE ALTER si ADD parent_class LAST; END_ENTITY; ADD ENTITY earth_feature_class_classification SUBTYPE OF (class_classification); (*<DESC>An association showing that an earth feature class has been classified as a member of another earth feature class. An earth feature class may be classified in many ways, both simultaneously and sequentially. Members of a class are also members of the classes of the class.*) (*<POPULATION>LOCAL*) (*<CHANGE>Added so that all Earth_feature_class has similar behavior to all other class entities.*) have_as_a_member : earth_feature_class (*<DESC>Specifies the class which is a member of a general class.*) (*<VERB>have as a member*); be_classified_as : earth_feature_class (*<DESC>Specifies the general class in which a specific class is assigned.*) (*<VERB>be classified as*); UNIQUE si : be_classified_as, have_as_a_member; END_ENTITY; END_CHANGE;