------------------------------------------------------------------------------- Constraint Name: Attribute Set Components Definition: An may contain attribute objects used by and/or instances. If it contains attribute objects that are used by and is referenced by a , the -related attribute objects are ignored. The reverse is also true. Rationale: This allows and instances to use the same . This may be desirable if they share some of the same attribute objects; for example, if the is actually an alternate representation of the . Example: 1. A is associated with a that has been derived from it. Both reference the same that contains an , , and . The uses the and instances, but ignores the . The uses the and , but ignores the . FAQs: None. ------------------------------------------------------------------------------- Constraint Name: Attribute Set Table Size Definition: For a given instance G with table_size = k, each component T of G shall have k components. For any given T within G, if regular = SE_TRUE, each of the k components of T shall contain the same number of SEDRIS objects, and these SEDRIS objects shall belong to the same classes. If regular = SE_FALSE for T, no such constraint holds. Note that G may have both regular and non-regular components, and that even if all components of G are regular, there is no constraint that they are all regular in the same way. Rationale: This is a requirement in order to allow the instances within an to be interchangeable. Example: 1. Consider an that contains three components: one for an Out-The-Window view, one for a RADAR view, and one for an Infra-Red view. All three instances contain 234 instances. Entry 234 in each contains an for the representation of "steel" in the three different domains. FAQs: None. ------------------------------------------------------------------------------- Constraint Name: Axis Type Restrictions Definition: The following restrictions apply. 1. In , and instances, 1.1 The axis_type shall correspond to a numeric attribute. 1.1.1 If the axis_type is specified by an EDCS_Attribute_Code, it shall correspond to an EDCS Attribute (EA) bound to a numeric value type. 1.1.2 If the axis_type is specified by an SE_Variable_Code, it shall represent a variable bound to a numeric value type. 1.2 If the axis_type is bound to some set of EDCS Unit Equivalence classes (EQs), the value_unit shall be a member of one of the specified EQs. 1.3 If the axis_type is not bound to any EQ, the value_unit and value_scale shall be set to EUC_UNITLESS and ESC_UNI, respectively. 2. In an instance X, 2.1 The axis_type of X shall correspond to an EDCS Attribute T bound to the abstract value type EDCS_ABSTRACT_VAL_TYP_ENUMERATION. 2.2 The entries of X's axis_value_array shall be distinct, valid EEs for T. 3. In an instance X, 3.1 Each individual entry in X's axis_interval_value_array shall have a value_type corresponding to an interval type, and this value_type shall be the same for all entries in the axis_interval_value_array. 3.2 All entries in X's axis_interval_value_array shall be mutually disjoint. 3.3 The entries in X's axis_interval_value_array shall be arranged in either monotonically ascending or monotonically descending order. 4. In an instance X, 4.1 Each individual entry in X's axis_value_array shall have a value_type consistent with the axis_type, and this value_type shall be the same for all entries in the axis_value_array. 4.2 All entries in X's axis_value_array shall be distinct. 4.3 The entries in X's axis_value_array shall be arranged in either monotonically ascending or monotonically descending order. 5. In an instance of , the value_type of the first_value and spacing field values shall be the same, and shall be consistent with the numeric data type to which the axis_type's value is bound. 6. In regard to spatial instances, 6.1 A spatial is an instance with one of the following as its axis_type. 6.1.1 For angular coordinates, such as latitude and longitude, EAC_SPATIAL_ANGULAR_PRIMARY_COORDINATE EAC_SPATIAL_ANGULAR_SECONDARY_COORDINATE. 6.1.2 For x, y coordinates, EAC_SPATIAL_LINEAR_PRIMARY_COORDINATE EAC_SPATIAL_LINEAR_SECONDARY_COORDINATE 6.1.3 For z and elevation coordinates, EAC_SPATIAL_LINEAR_TERTIARY_COORDINATE 6.2 The first spatial_axes_count components of a instance shall be spatial instances, each of which uniquely corresponds to a coordinate of the instance's spatial reference frame. 6.3 No other instances in any other context shall be spatial. Rationale: 1. , , and exist to specify some set of numeric values of an independent variable used to organize dependent values in some instance. Further, arithmetic operations are required to compute ' tic values from its first_value and spacing field values. 2. All instances are required to specify distinct tic marks to avoid ambiguity. 3. For ease of processing, it is desirable to organize and values monotonically. Example: 1. axis_type = EAC_PRIMARY_SURFACE_THERMAL_CONDITION may be used only for an instance, and for no instance of any other sub-class. FAQs: Q. Can an EA of abstract value type INDEX be used for a or ? A. Yes, but the value_unit and value_scale fields are ignored, and interpolation_type is not applicable (and shall therefore be set to SE_INTERPOLATION_TYP_DISALLOWED). Q. For and , why not require ascending monotonicity, rather than allowing either ascending or descending? A. In some problem domains, descending monotonicity is preferred, while in others, ascending is preferred. Consider a describing atmospheric data, where an specifies a vertical coordinate in pressure units, which decreases with increasing height. In such a table, if the were required to be monotonically increasing, it could not be used to define a volume without "flipping the atmosphere over" to put the highest level at the first point on the axis and the lowest level at the last point on the axis, which could lead to confusion when the is processed by a consumer. On the other hand, a describing oceanographic data with depth as an might be naturally organized in terms of increasing depth. ------------------------------------------------------------------------------- Constraint Name: Colour Mapping Restrictions Definition: 1. The colour_mapping field of a shall not be empty. 2. The SE_CLR_MAPNG_LGT_RENDER_BHVR_PRIMARY and SE_CLR_MAPNG_LGT_RENDER_BHVR_SECONDARY flags may only be used for objects with . 3. The SE_CLR_MAPNG_LGT_RENDER_BHVR_PRIMARY flag may not be combined with any other SE_Colour_Mapping. 4. The SE_CLR_MAPNG_LGT_RENDER_BHVR_SECONDARY flag may not be combined with any other SE_Colour_Mapping. Rationale: A specifies how it is applied to the objects that use it, so the colour_mapping shall not be empty. The SE_CLR_MAPNG_LGT_RENDER_BHVR_PRIMARY and SE_CLR_MAPNG_LGT_RENDER_BHVR_SECONDARY flags specify the primary and secondary colours of an object's . If a applies to the of an object's rather than the object itself, it shall apply only to that . In addition, the same cannot be both the primary and the secondary colour of a . Example: 1. Consider a with 2 and an , where the 's method is set to SE_IMG_MAPNG_METH_BLEND. Each shall specify whether it is primary, image blend, or neither, and which side of the is affected, in order to determine how to combine the colours with the texture. FAQs: See the comments for , SE_Colour_Mapping, and for discussions of how colour_mapping is interpreted. ------------------------------------------------------------------------------- Constraint Name: Colour Table Size Definition: For a given instance G with table_size = k, each component T of G shall have k components. However, components of a are free to have different types of components from each other (e.g., some using , some not). Rationale: This is a requirement in order to allow the instances within a to be interchangeable. Example: 1. An contains three components: one for an Out-The-Window view, one for a RADAR view, and one for an Infra-Red view. All three instances contain 234 components. Entry 234 in each is a for the representation of "granite" in the three different domains. FAQs: None. ------------------------------------------------------------------------------- Constraint Name: Connected Edge Restrictions Definition: 1. A FN has the following relationship with its components, if any exist. 1.1. For each that has FN as a starting node, FN shall have a which associates to that . 1.2. For each that has FN as an ending node, FN shall have a which associates to that . 1.3. If FN is neither a starting nor an ending node of a given , that shall not appear among the associates of any of FN's components. 1.4. Consequently, for any given FE of which FN is a starting or ending node, FE shall appear among the associates of FN's components either: - once, if FN is FE's starting node and not its ending node, - once, if FN is FE's ending node and not its starting node, - twice, if FE is a loop. 2. A GN has the following relationship with its components, if any exist. 2.1. For each that has GN as a starting node, GN shall have a which associates to that . 2.2. For each that has GN as an ending node, GN shall have a which associates to that . 2.3. If GN is neither a starting nor an ending node of a given , that shall not appear among the associates of any of GN's components. 2.4. Consequently, for any given GE of which GN is a starting or ending node, GE shall appear among the associates of GN's components either: - once, if GN is GE's starting node and not its ending node, - once, if GN is GE's ending node and not its starting node, - twice, if GE is a loop. Rationale: is the one-directional topological relationship connecting a to the ordered set of ordered collection(s) of instances that have it as an endpoint. If there are no such instances, then there shall be no on that . is the one-directional topological relationship connecting a to the ordered set of ordered collection(s) of instances that have it as an endpoint. If there are no such instances, then there shall be no on that . Example: 1. Consider a A that has distinct starting and ending instances X1 and X2. X1 shall have at least one component, which associates to A, and X2 shall have at least one component, which associates to A. 2. Consider Y that is not the endpoint of any . If Y is mistakenly created with a , then Y is invalid, since the implies that Y *does* belong to some . FAQs: Q. For a loop edge (that is, an edge wherein the same node appears as both the starting and ending node), how many times does the edge appear in that node's / lists? A. Twice. Non-loop edges would appear only once. ------------------------------------------------------------------------------- Constraint Name: Contained Node Restrictions Definition: 1. A FF has the following relationship with its associated instances, if any exist. 1.1. At any feature topology level, if FF is associated with any instance FN, then 1.1.1 If FF has an , FN shall lie within the boundary of that ring. 1.1.2 For each of FF, FN shall not lie within the boundary of that ring. 1.2. At feature topology levels 3 and 4, FF shall be associated to each that is contained within its boundary. 1.3. If FF contains no instance within its boundaries, FF shall have no associated instances. 1.4. If a FN does not lie within the boundary of any , FN shall have no associated instances. 2. A GF has the following relationship with its associated instances, if any exist. 2.1. At any geometry topology level, if GF is associated with a GN, GN shall lie within the boundary of GF's . 2.2. At geometry topology levels 3 and 4, GF shall be associated to each that is contained within its boundary. 2.3. If GF contains no instances within its boundaries, GF shall have no associated instances. 2.4. If a GN does not lie within the boundary of any , GN shall have no associated instances. Rationale: The association between and is the topological relationship between a and a that is contained within its boundaries, so by definition, if the has an external boundary, the shall lie within that boundary. The rationale for the relationship between and is the same. Unlike instances, a instance may have inner boundaries, indicating "holes" in the . Consequently, a shall be contained within a but not fall into one of the "holes" if it is to be considered "contained" within that . Example: 1. Consider a X that contains a A, where X is part of the of a with SE_FEAT_TOPO_LVL_FOUR. X shall have an association with A in order to be valid. 2. Consider Y that does not contain any instances. If Y is mistakenly created with an association to some , then Y is invalid since the association implies that Y *does* contain the . FAQs: Q. Consider a with a FFR. Should the instances forming the endpoints of the edges of FFR be associated to the ? A. No, they should not. The containment relationship expressed by that association is one of "proper" containment; that is, it does not include instances that lie on the boundary of the . ------------------------------------------------------------------------------- Constraint Name: Continuous LOD Restrictions Definition: 1. instances can be used only in the scope of some . 2. A instanced within the component tree of a shall not have a component. Rationale: 1. Nobody has flickering problems caused by zooming in on a . 2. always represents terrain, and terrain instances don't use subfacing. Example: None. FAQs: None. ------------------------------------------------------------------------------- Constraint Name: Cylindrical Structure Definition: 1. For a instance C, the following conditions shall hold. 1.1 The components of C shall comply with the restrictions imposed in the specification of the class, including the restrictions on their vector_type field values and their orientation relative to one another. 1.2 If a component of C specifies a component L, L shall be the specified by the volume context in which C appears. 2. For an instance E, the following conditions shall hold. 2.1 The components of E shall comply with the restrictions imposed in the specification of the class, including the restrictions on their vector_type field values and their orientation relative to one another. 2.2 If a component of E specifies a component L, L shall be the component of E. Rationale: An instance of a DRM class representing a cylindrical volume shall specify a geometrically valid cylinder, and any information specified by its components shall be consistent with the context supplied by that volume. Example: None. FAQs: None. ------------------------------------------------------------------------------- Constraint Name: Distinct Link Objects Definition: 1. Under any single or instance, other than a , the link objects (if any) shall have non-identical discriminators. 2. Under any single topology hierarchy, whether a or , the link objects shall have non-identical discriminators. 3. Under any single model instance, whether a or a , the instances shall be distinct. Rationale: Discriminators shall be distinct in order to allow the user to discriminate between the branches they represent. However, this does not apply to link objects that exist only to specify sides of a . For model instances, the indices into the shall be distinct because no can be set to more than one value at a time. Example: 1. For a level-of-detail-related aggregation, no 2 may be identical. 2. For a time-related aggregation, 2