= Dividing ISO 15926-2 into levels = Status of this document: Working Draft Authors: * [mailto:martin.georg.skjaeveland@dnv.com Martin G. Skjæveland], DNV * Jon Henrik Forssell, OLF * [mailto:johan.wilhelm.kluewer@dnv.com Johan W. Klüwer], DNV == Abstract == This article defines the notions ''type'' and ''level'' and describes a way of using levels to categorize the entity types of ISO 15926-2 and to add restrictions to the use of relationships -- categories and restrictions that correspond to set theoretical ideas and respect good modeling practice. [[PageOutline(2-4,,inline)]] ---- == Introduction == The initial goal of defining level and type is to add restrictions to the use of the relationships specialization and classification as they are defined in ISO-15926-2:2003. In ISO 15926-2:2003 a [http://www.tc184-sc4.org/wg3ndocs/wg3n1328/lifecycle_integration_schema/lexical/specialization.html specialization] is defined as a relationship between two instances of the entity type `class`: ''A is a that indicates that all members of the subclass are members of the superclass.'' {{{ ENTITY specialization subclass : class; superclass : class; }}} This definition is too weak as the following example illustrates. The definition allows an instance of `class of class of individual` to be declared as a subclass of an instance of a `class of individual`, since both `class of class of individual` and `class of individual` are subtypes of `class`. [http://www.tc184-sc4.org/wg3ndocs/wg3n1328/lifecycle_integration_schema/lexical/class_of_class_of_individual.html class of class of individual] is defined in ISO 15926-2 as ''A is a whose members are instances of '' and [http://www.tc184-sc4.org/wg3ndocs/wg3n1328/lifecycle_integration_schema/lexical/class_of_individual.html class of individual] is defined as ''A is a class whose members are instances of ''. Declaring an instance of `class of class of individual` '''A''' as a subclass of an instance of a `class of individual` '''B''' would mean that all the members of '''A''' are also members of '''B''', which entails that all members of '''A''' are also instances of `possible individual`. || [[Image(A.gif)]] || [[Image(B.gif)]] || [[Image(AB.gif)]] || || '''A''' is an instance of `class of class of individual`. All members of '''A''' are instances of `class of individual`. || '''B''' is an instance of `class of individual`. All members of '''B''' are instances of `possible individual`. || '''A''' is a subclass of '''B'''. All members of '''A''' are also instances of `possible individual`.|| By adding restrictions to the use of relationships in ISO 15926 we can avoid such problems. The notions defined in this article may also be valuable for adding restrictions to other relationships than specialization and classification defined in ISO 15926-2. == Types and levels == We want to be able to categorize the entity types defined in ISO 15926-2 into categories, categories which should be non-overlapping. We categorize along two axis. First we observe that a relationship is a different concept than an individual. We call this axis ''type''. Secondly we observe that a set of individuals is different from a set of sets of individuals and a set of relationships if different from a set of sets of relationships. Furthermore, a set of sets of individuals is different from a set of sets of sets of individuals, and so on. We call this axis ''level''. Note: In logic relationships are usually defined as just ordered pairs of individuals, e.g., [[LatexEquation(\langle a, b \rangle)]] is a relationship "from" the individual [[LatexEquation(a)]] "to" the individual [[LatexEquation(b)]], and a relation is just a set of such pairs. However, in ISO 15926 relationships may also relate (other) relationships. === Definitions === Let [[LatexEquation(U)]] be the set of all individuals and [[LatexEquation(R)]] be the set of all pairs [[LatexEquation(\langle a, b \rangle)]] where [[LatexEquation(a, b \in U)]]. Definition '''Type_Individual''': ''Let [[LatexEquation(I_0 = U)]] and [[LatexEquation(I_{n+1} = \mathcal{P} (I_{n}), n \in \mathbb{N})]], then [[LatexEquation(Type_{Individual} = \bigcup_n I_n, n \in \mathbb{N})]].'' Definition '''Type_Relationship''': ''Let [[LatexEquation(R_0 = R)]] and [[LatexEquation(R_{n+1} = \mathcal{P} (R_{n}), n \in \mathbb{N})]], then [[LatexEquation(Type_{Relationship} = \bigcup_n R_n, n \in \mathbb{N})]].'' Definition '''Level_n''': ''Level_n is a set such that [[LatexEquation(Level_n = I_n \cup R_n, n \in \mathbb{N})]].'' Note: See http://en.wikipedia.org/wiki/Set for a primer on set theory. ==== Intuitions ==== Intuitively the set Type_Individual is the set containing * all individuals * all sets of individuals * all sets of sets of individuals * all sets of sets of sets of individuals * and so on. The set Type_Relationship is the set containing * all relationships between individuals * all sets of relationships between individuals * all sets of sets of relationships between individuals * all sets of sets of sets of relationships between individuals * and so on. * Level_0 is the set containing all individuals and all relationships between individuals, * Level_1 is the set containing all sets of individuals and all sets of relationships between individuals, * Level_2 is the set containing all sets of sets of individuals and all sets of sets of relationships between individuals, * and so on. === Definition in OWL === {{{ Class: Type_Individual Class: Type_Relationship Class: Level_0 DisjointWith: Level_1, Level_2, Level_3 Class: Level_1 DisjointWith: Level_0, Level_2, Level_3 Class: Level_2 DisjointWith: Level_0, Level_1, Level_3 Class: Level_3 DisjointWith: Level_0, Level_1, Level_2 }}} Note: Defining all levels as mutually disjoint is not correct according to the set theoretical definition above; the empty set is a member of all sets, so both Level_1, Level_2 and Level_3 will have as member the set of only the empty set, i.e. [[LatexEquation(\{\{\}\})]]. A possible solution is to define a "ISO 15926 notion" of level. == Restricting ISO 15926-2 entity types to levels == This section places most entity types defined in ISO 15926 on the level axis, in either Level 0, Level 1, Level 2 or Level 3. === Level 0 === `part2:PossibleIndividual` is declared as a subclass of `Level_0`, since `possible_individual` is the entity type that contain all individuals. A '''possible_individual''' is a '''thing''' that exists in space and time. (ISO 15926-2, 2003, p. 111). {{{ Class: part2:PossibleIndividual SubClassOf: Level_0 }}} `part2:Relationship` is declared as a subclass of `Level_0`. (''COMMENT:'' This declaration is probably wrong.) A '''relationship''' is an '''abstract_object''' that indicates something that one thing has to do with another (ISO 15926-2, 2003, p. 136). {{{ Class: part2:Relationship SubClassOf: Level_0 }}} `part2:Class` is declared as a subclass of the compliment of `Level_0`, i.e., `part2:Class` is not on Level 0. A '''class''' is a '''thing''' that is an understanding of the nature of things and that divides things into those which are members of the class and those which are not according to one or more criteria. The identity of a class is ultimately defined by its members. (...) A '''class''' may be a member of another '''class''' or of itself. (...) There is a null '''class''' that has no members. (ISO 15926-2, 2003, p. 93--94). {{{ Class: part2:Class SubClassOf: not (Level_0) }}} === Level 1 === `part2:ClassOfIndividual` is declared as a subclass of `Level_1`, since a '''class_of_individual''' is a class whose members are instances of '''possible_individual''' (ISO 15926-2, 2003, p. 117) and `part2:PossibleIndividual` is declared as a subclass of `Level_0` {{{ Class: part2:ClassOfIndividual SubClassOf: Level_1 }}} `part2:ClassOfRelationship` is declared as a subclass of `Level_1`, since a '''class_of_relationship''' is a '''class_of _abstract_object''' whose members are members of '''relationship''' (ISO 15926-2, 2003, p. 138) and `part2:Relationship` is declared as a subclass of `Level_0`. {{{ Class: part2:ClassOfRelationship SubClassOf: Level_1 }}} A '''role_and_domain''' is a '''class''' that specifies the domainand and role for an end of a '''class_of_relationship''', or '''class_of_multidimensional_object'''. (ISO 15926-2, 2003, p. 142). {{{ Class: part2:RoleAndDomain SubClassOf: Level_1 }}} A '''cardinality''' is a '''class''' that is the maximum and/or minimum number of times a thing can play a particular role in a '''class_of_relationship''' or '''class_of_multidimensional_object'''. (ISO 15926-2, 2003, p. 140). {{{ Class: part2:Cardinality SubClassOf: Level_1 }}} `part2:ClassOfClass` is declared as a subclass of the compliment of `Level_1`, i.e., it is not a `Level_1` class. The reason is that since a '''class_of_class''' is a '''class''' whose members are instances of '''class''' (ISO 15926-2, 2003, p. 96) and `part2:Class` is declared as not being a `Level_0` class, `part2:ClassOfClass` must necessarily be a level higher than `part2:Class`. NOTE: `part2:ClassOfClass` is a subtype of `part2:Class` so `part2:ClassOfClass` is also indirectly declared as not a subclass of `Level_0`. {{{ Class: part2:ClassOfClass SubClassOf: not (Level_1) }}} === Level 2 === `part2:ClassOfClassOfIndividual` is declared as a Level_2 class since given that a '''class_of_class_of_individual''' is a '''class_of_class''' whose members are instances of class_of_individual'' (ISO 15926-2, 2003, p. 130) and `part2:ClassOfIndividual` is declared as a Level 1 class.'' {{{ Class: part2:ClassOfClassOfIndividual SubClassOf: Level_2 }}} `part2:ClassOfClassOfIndividual` is declared as subclass of `Level_2` since a '''class_of_class_of_relationship''' is a '''class_of_class''' whose members are instances of '''class_of_relationship''' (ISO 15926-2, 2003, p. 158) and `part2:ClassOfRelationship` is declared as a subclass of `Level_1`. {{{ Class: part2:ClassOfClassOfRelationship SubClassOf: Level_2 }}} === Level 3 === `part2:ClassOfPropertySpace` is declared as a subclass of the `Level_2` class since a '''class_of_property_space''' is a '''class_of_class''' whose members are members of '''property_space''' ISO 15926-2, 2003, p. 97) and as according to the subtype hierarchy of ISO-15926-2:2003 `part2:PropertySpace` is a subclass of `part2:ClassOfProperty` which is a `part2:ClassOfClassOfIndividual`. `part2:ClassOfClassOfIndividual` is declared as a subclass of the `Level_2` class. {{{ Class: part2:ClassOfPropertySpace SubClassOf: Level_3 }}} == Adding restrictions to relations using levels == This section adds restrictions to relations defined in ISO 15926 using levels. === Specialization === [http://www.tc184-sc4.org/wg3ndocs/wg3n1328/lifecycle_integration_schema/lexical/specialization.html Specialization] is in ISO 15926-2 defined as: ''A is a that indicates that all members of the subclass are members of the superclass. is transitive. '' {{{ ENTITY specialization SUPERTYPE OF (ONEOF(specialization_by_domain, specialization_by_role, boundary_of_property_space, specialization_of_individual_dimension_from_property, boundary_of_number_space)) SUBTYPE OF (relationship); subclass : class; superclass : class; END_ENTITY; }}} OWL listing: {{{ Class: part2:Specialization SubClassOf: part2:hasSubclass only Level_1 and part2:hasSuperclass only Level_1 or part2:hasSubclass only Level_2 and part2:hasSuperclass only Level_2 or part2:hasSubclass only Level_3 and part2:hasSuperclass only Level_3 or part2:hasSuperclass only (part2:Thing and not Level_0 and not Level_1 and not Level_2 and not Level_3) and part2:hasSubclass only (part2:Thing and not Level_0) }}} === Classification === [http://www.tc184-sc4.org/wg3ndocs/wg3n1328/lifecycle_integration_schema/lexical/classification.html Classification] is defined as ''A is type of that indicates that the classified is a member of the classifier . is not transitive.'' {{{ ENTITY classification SUBTYPE OF (relationship); classified : thing; classifier : class; }}} OWL listing: {{{ Class: part2:Classification SubClassOf: part2:hasClassified only Level_0 and part2:hasClassifier only Level_1 or part2:hasClassified only Level_1 and part2:hasClassifier only Level_2 or part2:hasClassified only Level_2 and part2:hasClassifier only Level_3 }}} ---- [[ViewTopic(ISO 15926 in OWL, adding restrictions to relationships)]]