The SEDRIS Data Representation Model
APPENDIX B - Constraints
Non Empty Model Instance

Definition

  1. All <Model> instances shall have either a <Feature Model> component, a <Geometry Model> component, or both.

  2. A <Model> instance is permitted to have an "empty" <Geometry Model> component, that is, a <Geometry Model> component without a <Geometry Hierarchy> component, only if

    1. The <Model> instance either does not have a <Feature Model> component, or its <Feature Model> component is "empty".

    2. The <Model> instance has a <Classification Data> component with tag = ECC_OBJECT.

    3. The <Model> instance is tagged as SE_MODREFTYP_ROOT_AND_COMPONENT so that it can be instanced within <Environment Root> scopes as well as other <Model> instances, and

    4. The "empty" <Geometry Model> instance has no <Attachment Point> component, <Contact Point> component, or <LSR Transformation> component, since these components require the presence of a <Geometry Hierarchy> component.

  3. A <Model> instance is permitted to have an "empty" <Feature Model> component, that is, a <Feature Model> component without a <Feature Hierarchy> component, only if

    1. The <Model> instance either does not have a <Geometry Model> component, or its <Geometry Model> component is empty.

    2. The <Model> instance has a <Classification Data> component with tag = ECC_OBJECT.

    3. The <Model> instance is tagged as SE_MODREFTYP_ROOT_AND_COMPONENT so that it can be instanced within <Environment Root> scopes as well as other <Model> instances.

  4. No <Model> instance other than a properly constructed "empty" <Model> instance is permitted to have a <Classification Data> component with tag = ECC_OBJECT.

Rationale

The DRM notation cannot enforce an "or" aggregation. Consequently, this constraint is required.

Allowing a <Feature Model> to be empty permits a <Feature Model Instance> to associate to an "empty" <Feature Model>. The semantic restrictions on "empty" models will only have to be performed at the model level, rather than at model instance objects all over the transmittal.

Allowing a <Geometry Model> to be empty permits a <Geometry Model Instance> to associate to an "empty" <Geometry Model>. The semantic restrictions on "empty" models will only have to be performed at the model level, rather than at model instance objects all over the transmittal.

Example

No example supplied.

FAQs

How do these restrictions ensure that an "empty" <Model> can be distinguished from, e.g., an ordinary <Model> retrieved while ignoring ITR referenences?

An "empty" <Model> shall have the required <Classification Data> component with tag = ECC_OBJECT. Since its components, and their component hierarchies are required to be stored in the same transmittal, ITR references are not a concern.

Consider a data provider who when creating a <Model Library> instance does not know in advance whether an empty <Geometry Model> instance will be needed. The data provider does not want to produce an "empty" <Model> instance if it will not be needed; if it is needed, the data provider would prefer to make it the last <Model> component of the <Model Library> instance. How can forward references be created to an "empty" <Model> instance?

This question has more than one possible answer. One approach would be the following.

  • Begin producing models for your model library. When you encounter a place in the <Model> instance where you need a <Geometry Model Instance> instance instance of the empty <Model> instance,
    1. create the <Geometry Model Instance> instance.
    2. check a flag on whether you've created the empty <Model> instance; if not, create it and set the flag.
    3. create the association from the <Geometry Model Instance> instance to the empty <Model> instance's <Geometry Model> component.
  • Check the flag to see if the empty <Model> instance is being used, when you have created the last non-empty <Model> instance and added it to your <Model Library> instance. If the empty <Model> instance is needed, add it to the the <Model Library> instance as a component.
  • A similar procedure would work if the references to the empty <Model> instance were needed in the scope of an <Environment Root> instance rather than in other <Model> instances.


    Prev: Non Empty Environment Root Instance. Next: Non Overlapping DRM Class Summary Item Instances. Up:Index.