ISO 10303-214:2010(E)

5.2.3 automotive design entities

5.2.3.1 automotive_design entity definitions

5.2.3.1.1 applied_action_assignment

An applied_action_assignment is a type of action_assignment that assigns an action to an action_item.

EXPRESS specification:

*)
ENTITY applied_action_assignment
  SUBTYPE OF (action_assignment);
  items : SET [1:?] OF action_item;
END_ENTITY;
(*

Attribute definitions:

items: the set of items to which the action is assigned.

Associated global rule: The following global rule defined in this part of ISO 10303 applies to the applied_action_assignment entity:

5.2.3.1.2 applied_action_request_assignment

An applied_action_request_assignment is a type of action_request_assignment that assigns an versioned_action_request to an action_request_item.

EXPRESS specification:

*)
ENTITY applied_action_request_assignment
  SUBTYPE OF (action_request_assignment);
  items : SET [1:?] OF action_request_item;
END_ENTITY;
(*

Attribute definitions:

items: the set of items to which the versioned_action_request is assigned.

Associated global rule: The following global rule defined in this part of ISO 10303 applies to the applied_action_request_assignment entity:

5.2.3.1.3 applied_approval_assignment

An applied_approval_assignment is a type of approval_assignment that assigns an approval to an approval_item.

EXPRESS specification:

*)
ENTITY applied_approval_assignment
  SUBTYPE OF (approval_assignment);
  items : SET [1:?] OF approval_item;
END_ENTITY;
(*

Attribute definitions:

items: the set of items to which the approval is assigned.

5.2.3.1.4 applied_area

An applied_area is a type of shape_aspect that is the representation of the bounded enclosed area used for the definition of an occurrence of a thread or a externally_defined_feature_definition. See ARM definition for Thread_feature, for Thread_specification, and for Catalogue_thread for more information.

EXPRESS specification:

*)
ENTITY applied_area
  SUBTYPE OF (shape_aspect);
WHERE
  WR1:   SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) 
              )) = 1;   
  WR2:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) AND
               {2 <= SIZEOF(pdr.used_representation.items) <= 3}
              )) = 1;   
  WR3:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                NOT(i.name IN ['orientation','effective length','maximum length'])
               )) > 0)
              )) = 0;   
  WR4:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
             ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
              TYPEOF(pdr.used_representation)) AND
             (SIZEOF( QUERY( i <* pdr.used_representation.items |
               (i.name='orientation') AND
               ('AUTOMOTIVE_DESIGN.PLACEMENT' IN TYPEOF(i))
              )) = 1)
             )) = 1;   
  WR5:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='effective length') AND
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2)
               )) = 1)
              )) = 1;   
  WR6:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='effective length') AND
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2)
               )) = 1)
              )) = 1;   
  WR7:  SIZEOF( QUERY( sar <* USEDIN( SELF, 'AUTOMOTIVE_DESIGN.' +
              'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
              ('AUTOMOTIVE_DESIGN.SHAPE_DEFINING_RELATIONSHIP' IN
               TYPEOF(sar)) AND
              (sar.description = 'applied area usage') AND
              (('AUTOMOTIVE_DESIGN.THREAD' IN
                TYPEOF(sar.relating_shape_aspect.of_shape.definition)) OR
               (('AUTOMOTIVE_DESIGN.EXTERNALLY_DEFINED_FEATURE_DEFINITION' IN
                 TYPEOF(sar.relating_shape_aspect.of_shape.definition)) AND
                (sar.relating_shape_aspect.of_shape.definition\externally_defined_item.item_id =
                 'external thread') AND
                (sar.relating_shape_aspect.of_shape.definition\externally_defined_item.source.source_id =
                 'external thread specification'))) AND
              (sar.relating_shape_aspect.of_shape.definition.description = 'partial area occurrence')
             )) = 1;   
END_ENTITY;
(*

Formal Propositions:

WR1: The applied_area shall have exactly one shape_representation_with_parameters. It serves as the implicit representation of the applied_area.

WR2: The implicit representation of the applied_area shall contain between two and three representation_items.

WR3: Each representation_item contained in the implicit representation shall have a name of either 'orientation', 'effective length', or 'maximum length'.

WR4: Exactly one representation_item in the implicit representation shall have a name of 'orientation' and shall be of type placement.

WR5: Exactly one representation_item in the implicit representation shall have a name of 'effective length' and shall be of type length_measure_with_unit.

WR6: At most one representation_item in the implicit representation shall have a name of 'maximum length'. If present, it shall be of type length_measure_with_unit.

WR7: Each applied_area shall be the relating_shape_aspect of a shape_defining_relationship with a description of 'applied area usage' and a related_shape_aspect that is the basis shape of a thread or of an externally_defined_feature_definition with a item_id of 'external thread' and a source of 'external thread specification'. That basis shape shall have a description of 'partial area occurrence'.

5.2.3.1.5 applied_certification_assignment

An applied_certification_assignment is a type of certification_assignment that assigns a certification to a certification_item.

EXPRESS specification:

*)
ENTITY applied_certification_assignment
  SUBTYPE OF (certification_assignment);
  items : SET [1:?] OF certification_item;
END_ENTITY;
(*

Attribute definitions:

items: the set of items to which the certification is assigned.

5.2.3.1.6 applied_classification_assignment

An applied_classification_assignment is a type of classification_assignment that assigns a class or a class_system to a classification_item.

EXPRESS specification:

*)
ENTITY applied_classification_assignment
  SUBTYPE OF (classification_assignment);
  items : SET [1:?] OF classification_item;
WHERE
  WR1:  NOT ('AUTOMOTIVE_DESIGN.CLASS' IN TYPEOF(SELF.assigned_class)) OR
             (SIZEOF( QUERY( i<* SELF.items |
                SIZEOF(['AUTOMOTIVE_DESIGN.ACTION',
                        'AUTOMOTIVE_DESIGN.ACTION_DIRECTIVE',
                        'AUTOMOTIVE_DESIGN.ACTION_METHOD',
                        'AUTOMOTIVE_DESIGN.ACTION_PROPERTY',
                        'AUTOMOTIVE_DESIGN.ACTION_RELATIONSHIP'
                        
                        'AUTOMOTIVE_DESIGN.APPROVAL_STATUS',
                        'AUTOMOTIVE_DESIGN.ASSEMBLY_COMPONENT_USAGE',
                        'AUTOMOTIVE_DESIGN.CONFIGURATION_ITEM',
                        'AUTOMOTIVE_DESIGN.CONTRACT',
                        'AUTOMOTIVE_DESIGN.DOCUMENT_FILE',
                        'AUTOMOTIVE_DESIGN.DOCUMENT_TYPE',
                        'AUTOMOTIVE_DESIGN.FEATURE_DEFINITION',
                        'AUTOMOTIVE_DESIGN.GENERAL_PROPERTY',
                        'AUTOMOTIVE_DESIGN.MATERIAL_DESIGNATION',
                        'AUTOMOTIVE_DESIGN.ORGANIZATIONAL_PROJECT',
                        'AUTOMOTIVE_DESIGN.PRODUCT',
                        'AUTOMOTIVE_DESIGN.PRODUCT_CONCEPT',
                        'AUTOMOTIVE_DESIGN.PRODUCT_CONCEPT_FEATURE_CATEGORY',
                        'AUTOMOTIVE_DESIGN.PRODUCT_DEFINITION',
                        'AUTOMOTIVE_DESIGN.PRODUCT_DEFINITION_FORMATION',
                        'AUTOMOTIVE_DESIGN.PROPERTY_DEFINITION',
                        'AUTOMOTIVE_DESIGN.RESOURCE_PROPERTY',
                        'AUTOMOTIVE_DESIGN.SECURITY_CLASSIFICATION_LEVEL',
                        'AUTOMOTIVE_DESIGN.SHAPE_ASPECT',
                        'AUTOMOTIVE_DESIGN.VERSIONED_ACTION_REQUEST'] *
                        TYPEOF(i))
                 <> 1
               ))= 0);   
  WR2:  NOT (('AUTOMOTIVE_DESIGN.GROUP' IN TYPEOF(SELF.assigned_class)) AND
                  (SELF.assigned_class\group.name = 'E') AND
                  (SELF.assigned_class\group.description = 'dimensioning principle')) OR
             (SIZEOF( QUERY( i <* SELF.items |
                NOT ('AUTOMOTIVE_DESIGN.PLUS_MINUS_TOLERANCE' IN 
                     TYPEOF(i))
               )) = 0);   
  WR3:  NOT (('AUTOMOTIVE_DESIGN.CLASS_SYSTEM' IN TYPEOF(SELF.assigned_class)) AND
                  (SELF.role.name = 'class system membership')) OR
             (SIZEOF( QUERY( i<* SELF.items |
                SIZEOF(['AUTOMOTIVE_DESIGN.APPROVAL_STATUS',
                        'AUTOMOTIVE_DESIGN.CLASS',
                        'AUTOMOTIVE_DESIGN.DESCRIPTIVE_REPRESENTATION_ITEM',
                        'AUTOMOTIVE_DESIGN.DOCUMENT_TYPE',
                        'AUTOMOTIVE_DESIGN.PLANAR_EXTENT',
                        'AUTOMOTIVE_DESIGN.SECURITY_CLASSIFICATION_LEVEL',
                        ] *
                        TYPEOF(i))
                 <> 1
               )) = 0);   
END_ENTITY;
(*

Attribute definitions:

items: the set of items to which the class or class_system is assigned.

Formal Propositions:

WR1: If the assigned_class is of type class, only items of type action, action_directive, action_method, action_property, application_context, approval_status, assembly_component_usage, configuration_item, contract, document_type, feature_definition, general_property, material_designation, organizational_project, product, product_concept, product_concept_feature_category, product_definition, product_definition_formation, property_definition, resource_property, security_classification_level, shape_aspect, or versioned_action_request shall be in the set of items.

WR2: If the assigned_class is of type group with name 'E' and a description 'dimensioning principle', only items of type plus_minus_tolerance shall be in the set of items.

WR3: If the assigned_class is of type class_system and the role has a name of 'class system membership', only items of type approval_status, class, descriptive_representation_item, document_type, or security_classification_level shall be in the set of items.

Associated global rules:

The following global rules defined in this part of ISO 10303 apply to the applied_classification_assignment entity:

5.2.3.1.7 applied_contract_assignment

An applied_contract_assignment is a type of contract_assignment that assigns a contract to a contract_item.

EXPRESS specification:

*)
ENTITY applied_contract_assignment
  SUBTYPE OF (contract_assignment);
  items : SET [1:?] OF contract_item;
END_ENTITY;
(*

Attribute definitions:

items: the set of items to which the contract is assigned.

5.2.3.1.8 applied_date_and_time_assignment

An applied_date_and_time_assignment is a type of date_and_time_assignment that assigns a date_and_time to a date_and_time_item.

EXPRESS specification:

*)
ENTITY applied_date_and_time_assignment
  SUBTYPE OF (date_and_time_assignment);
  items : SET [1:?] OF date_and_time_item;
END_ENTITY;
(*

Attribute definitions:

items: the set of items to which the date_and_time is assigned.

5.2.3.1.9 applied_date_assignment

An applied_date_assignment is a type of date_assignment that assigns a date to a date_item.

EXPRESS specification:

*)
ENTITY applied_date_assignment
  SUBTYPE OF (date_assignment);
  items : SET [1:?] OF date_item;
WHERE
  WR1:  (NOT (SELF.role.name = 'actual end')) OR
             item_correlation (SELF.items, ['ACTION', 
             'ORGANIZATIONAL_PROJECT', 'EFFECTIVITY']);
           
END_ENTITY;
(*

Attribute definitions:

items: the set of items to which the date is assigned.

Formal Propositions:

WR1: If the role has a name of 'actual end', only items of type action, organizational_project, or effectivity shall be in the set of items.

5.2.3.1.10 applied_document_reference

An applied_document_reference is a type of document_reference that assigns a document to a document_reference_item.

EXPRESS specification:

*)
ENTITY applied_document_reference
  SUBTYPE OF (document_reference);
  items : SET [1:?] OF document_reference_item;
WHERE
  WR1:  (NOT (SELF.role.name = 'general tolerance definition')) OR
             item_correlation (SELF.items, ['REPRESENTATION']);   
  WR2:  (SELF.role.name = 'general tolerance definition') OR
             item_correlation (SELF.items, ['ACTION','ACTION_DIRECTIVE','ACTION_METHOD','ACTION_RELATIONSHIP',
              'APPLIED_ACTION_ASSIGNMENT','APPROVAL','CERTIFICATION','CLASS','CLASS_SYSTEM','CONFIGURATION_DESIGN',
              'CONFIGURATION_ITEM','CONTRACT','FEATURE_DEFINITION','GENERAL_PROPERTY','MATERIAL_DESIGNATION',
              'ORGANIZATION','ORGANIZATIONAL_PROJECT','PERSON','PRODUCT_CONCEPT','PRODUCT_CONCEPT_FEATURE',
              'PRODUCT_CONCEPT_FEATURE_CATEGORY','PRODUCT_DEFINITION','PRODUCT_DEFINITION_FORMATION',
              'PRODUCT_DEFINITION_FORMATION_RELATIONSHIP','PRODUCT_DEFINITION_RELATIONSHIP',
              'PRODUCT_DEFINITION_SUBSTITUTE','PRODUCT_RELATED_PRODUCT_CATEGORY','PROPERTY_DEFINITION',
              'REPRESENTATION','RESOURCE_REQUIREMENT_TYPE','SECURITY_CLASSIFICATION','SHAPE_ASPECT',
              'SHAPE_ASPECT_RELATIONSHIP','VERSIONED_ACTION_REQUEST']);   
END_ENTITY;
(*

Attribute definitions:

items: the set of items to which the document is assigned.

Formal Propositions:

WR1: If the role has a name of 'general tolerance definition', only items of type representation shall be in the set of items.

WR2: If the name of the role is not 'general tolerance definition', only items of type action, action_directive, action_method, action_relationship, applied_action_assignment, approval, certification, class, class_system, configuration_design, configuration_item, contract, feature_definition, general_property, material_designation, organization, organizational_project, person, product_concept, product_concept_feature, product_concept_feature_category, product_definition, product_definition_formation, product_definition_formation_relationship, product_definition_relationship, product_definition_substitute, product_related_product_category, property_definition, representation, resource_requirement_type, security_classification, shape_aspect, shape_aspect_relationship, or versioned_action_request shall be in the set of items.

Associated global rule:

The following global rule defined in this part of ISO 10303 applies to the applied_document_reference entity:

5.2.3.1.11 applied_document_usage_constraint_assignment

An applied_document_usage_constraint_assignment is a type of document_usage_constraint_assignment that assigns a document_usage_constraint to a document_reference_item.

EXPRESS specification:

*)
ENTITY applied_document_usage_constraint_assignment
  SUBTYPE OF (document_usage_constraint_assignment);
  items : SET [1:?] OF document_reference_item;
END_ENTITY;
(*

Attribute definitions:

items: the set of items to which the document_usage_constraint is assigned.

5.2.3.1.12 applied_effectivity_assignment

An applied_effectivity_assignment is a type of effectivity_assignment that assigns an effectivity to an effectivity_item.

EXPRESS specification:

*)
ENTITY applied_effectivity_assignment
  SUBTYPE OF (effectivity_assignment);
  items : SET [1:?] OF effectivity_item;
WHERE
  WR1:  SIZEOF(['AUTOMOTIVE_DESIGN.LOT_EFFECTIVITY',
                     'AUTOMOTIVE_DESIGN.SERIAL_NUMBERED_EFFECTIVITY',
                     'AUTOMOTIVE_DESIGN.PRODUCT_DEFINITION_EFFECTIVITY'] *
                     TYPEOF(SELF.assigned_effectivity)
              ) = 0;   
END_ENTITY;
(*

Attribute definitions:

items: the set of items to which the effectivity is assigned.

Formal Propositions:

WR1: An applied_effectivity_assignment shall have an assigned_effectivity which is not of type lot_effectivity, serial_numbered_effectivity, or product_definition_effectivity.

Associated global rules:

The following global rules defined in this part of ISO 10303 apply to the applied_effectivity_assignment entity:

5.2.3.1.13 applied_event_occurrence_assignment

An applied_event_occurrence_assignment is a type of event_occurrence_assignment that assigns an event_occurrence to an event_occurrence_item.

EXPRESS specification:

*)
ENTITY applied_event_occurrence_assignment
  SUBTYPE OF (event_occurrence_assignment);
  items : SET [1:?] OF event_occurrence_item;
END_ENTITY;
(*

Attribute definitions:

items: the set of items to which the event_occurrence is assigned.

Associated global rule:

The following global rule defined in this part of ISO 10303 applies to the applied_event_occurrence_assignment entity:

5.2.3.1.14 applied_external_identification_assignment

An applied_external_identification_assignment is a type of external_identification_assignment that assigns an external identifier and an external source to an external_identification_item.

EXPRESS specification:

*)
ENTITY applied_external_identification_assignment
  SUBTYPE OF (external_identification_assignment);
  items : SET [1:?] OF external_identification_item;
WHERE
  WR1:  (NOT (SELF.role.name = 'alternative document id and location')) OR
             item_correlation (SELF.items, ['DOCUMENT_FILE']);   
  WR2:  (NOT (SELF.role.name = 'version')) OR
             item_correlation (SELF.items, ['EXTERNALLY_DEFINED_CLASS',
             'EXTERNALLY_DEFINED_GENERAL_PROPERTY']);
           
END_ENTITY;
(*

Attribute definitions:

items: the set of items to which the identifier is assigned.

Formal Propositions:

WR1: If the role has a name of 'alternative document id and location', only items of type document_file shall be in the set of items.

WR2: If the role has a name of 'version', only items of type externally_defined_class, or externally_defined_general_property shall be in the set of items.

5.2.3.1.15 applied_group_assignment

An applied_group_assignment is a type of group_assignment that assigns a group to a group_item.

EXPRESS specification:

*)
ENTITY applied_group_assignment
  SUBTYPE OF (group_assignment);
  items : SET [1:?] OF group_item;
WHERE
  WR1:  (NOT (SELF.role.name = 'exclusiveness')) OR
             item_correlation (SELF.items, ['ACTION']);
              
  WR2:  (NOT (SELF.role.name = 'simultaneity')) OR
             item_correlation (SELF.items, ['ACTION']);
              
  WR3:  (NOT (SELF.role.name = 'specification category member')) OR
             item_correlation (SELF.items, ['PRODUCT_CONCEPT_FEATURE']);
              
  WR4:  (NOT (SELF.role.name = 'group membership')) OR
             item_correlation (SELF.items, 
             ['GEOMETRIC_REPRESENTATION_ITEM', 'SHAPE_ASPECT']);
           
        
           
  WR5:  (NOT (SELF.role.name = 'group membership')) OR
                ((SIZEOF(SELF.items) =
                  SIZEOF( QUERY( i <* SELF.items |
                    'AUTOMOTIVE_DESIGN.GEOMETRIC_REPRESENTATION_ITEM' IN
                    TYPEOF(i)))) OR
                 (SIZEOF(SELF.items) =
                  SIZEOF( QUERY( i <* SELF.items |
                    'AUTOMOTIVE_DESIGN.SHAPE_ASPECT' IN
                    TYPEOF(i)))));
             
END_ENTITY;
(*

Attribute definitions:

items: the set of items to which the group is assigned.

Formal Propositions:

WR1: If the role has a name of 'exclusiveness', only items of type action shall be in the set of items.

WR2: If the role has a name of 'simultaneity', only items of type action shall be in the set of items.

WR3: If the role has a name of 'specification category member', only items of type product_concept_feature shall be in the set of items.

WR4: If the role has a name of 'group membership', only items of type geometric_representation_item or shape_aspect shall be in the set of items.

WR5: If the role has a name of 'group membership', the set of items shall include either objects of type geometric_representation_item or shape_aspect.

5.2.3.1.16 applied_identification_assignment

An applied_identification_assignment is a type of identification_assignment that assigns an identifier to an identification_item.

EXPRESS specification:

*)
ENTITY applied_identification_assignment
  SUBTYPE OF (identification_assignment);
  items : SET [1:?] OF identification_item;
WHERE
  WR1:  (NOT (SELF.role.name = 'version')) OR
             item_correlation (SELF.items, ['ACTION', 'ACTION_DIRECTIVE',
             'SHAPE_REPRESENTATION', 'EFFECTIVITY', 'PRODUCT_CONCEPT', 
             'CONFIGURATION_ITEM', 'PRODUCT_DEFINITION', 
             'PRODUCT_CONCEPT_FEATURE', 'DOCUMENT_FILE', 'CLASS',
             'APPLIED_IDENTIFICATION_ASSIGNMENT', 'DRAUGHTING_MODEL', 
             'MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION',
             'PRESENTATION_AREA']);
           
  WR2:  (NOT (SELF.role.name = 'lot context')) OR
             item_correlation (SELF.items, ['PRODUCT
']);
           
  WR3:  (NOT (SELF.role.name = 'property change id context')) OR
             item_correlation (SELF.items, 
             ['PROPERTY_DEFINITION_RELATIONSHIP',
             'SHAPE_ASPECT_RELATIONSHIP', 'ACTION_PROPERTY']);
           
  WR4:  (NOT (SELF.role.name = 'size id')) OR
             item_correlation (SELF.items, ['DIMENSIONAL_SIZE']);
           
  WR5:  (NOT (SELF.role.name = 'model change id')) OR
             item_correlation (SELF.items, ['PROPERTY_DEFINITION', 
             'ACTION_PROPERTY']);   
  WR6:  (NOT (SELF.role.name = 'alias')) OR
             item_correlation (SELF.items, ['APPLICATION_CONTEXT', 
             'APPROVAL_STATUS', 'ASSEMBLY_COMPONENT_USAGE', 'CLASS',
             'CLASS_SYSTEM','DOCUMENT_TYPE', 'DRAUGHTING_MODEL', 'GENERAL_PROPERTY', 
             'MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION', 
             'ORGANIZATION', 'PRODUCT', 'PRODUCT_CONCEPT', 
             'PRODUCT_CONCEPT_FEATURE', 'PRODUCT_CONCEPT_FEATURE_CATEGORY', 
             'PRODUCT_DEFINITION', 'PRODUCT_DEFINITION_FORMATION', 
             'PROPERTY_DEFINITION', 'SECURITY_CLASSIFICATION_LEVEL',
             'SHAPE_REPRESENTATION']);
           
END_ENTITY;
(*

Attribute definitions:

items: the set of items to which the identifier is assigned.

Formal Propositions:

WR1: If the role has a name of 'version', only items of type action, action_directive, shape_representation, effectivity, product_concept, configuration_item, product_definition, product_concept_feature, document_file, class, applied_identification_assignment, draughting_model, mechanical_design_geometric_presentation_representation, or presentation_area shall be in the set of items.

WR2: If the role has a name of 'lot context', only items of type product shall be in the set of items.

WR3: If the role has a name of 'property change id context', only items of type property_definition_relationship, shape_aspect_relationship, or action_property shall be in the set of items.

WR4: If the role has a name of 'size id', only items of type dimensional_size shall be in the set of items.

WR5: If the role has a name of 'model change id', only items of type property_definition, or action_property shall be in the set of items.

WR6: If the role has a name of 'alias', only items of type application_context, approval_status, assembly_component_usage, class, class_system, document_type, draughting_model, general_property, mechanical_design_geometric_presentation_representation, organization, product, product_concept, product_concept_feature, product_concept_feature_category, product_definition, product_definition_formation, property_definition, security_classification_level, or shape_representation shall be in the set of items.

Associated global rule:

The following global rule defined in this part of ISO 10303 applies to the applied_identification_assignment entity:

5.2.3.1.17 applied_ineffectivity_assignment

An applied_ineffectivity_assignment is a type of effectivity_assignment that specifies that the associated effectivity_items are set ineffective.

EXPRESS specification:

*)
ENTITY applied_ineffectivity_assignment
  SUBTYPE OF (effectivity_assignment);
  items : SET [1:?] OF effectivity_item;
WHERE
  WR1:  SIZEOF(['AUTOMOTIVE_DESIGN.LOT_EFFECTIVITY',
                     'AUTOMOTIVE_DESIGN.SERIAL_NUMBERED_EFFECTIVITY',
                     'AUTOMOTIVE_DESIGN.PRODUCT_DEFINITION_EFFECTIVITY'] *
                     TYPEOF(SELF.assigned_effectivity)
              ) = 0;   
END_ENTITY;
(*

Attribute definitions:

items: the set of items that are set ineffective by the applied_ineffectivity_assignment.

Formal Propositions:

WR1: An applied_ineffectivity_assignment shall have an assigned_effectivity which is not of type lot_effectivity, serial_numbered_effectivity, or product_definition_effectivity.

5.2.3.1.18 applied_name_assignment

An applied_name_assignment is a type of name_assignment that assigns a name to a name_item.

EXPRESS specification:

*)
ENTITY applied_name_assignment
  SUBTYPE OF (name_assignment);
  items : SET [1:?] OF name_item;
WHERE
  WR1:  (NOT (SELF.role.name = 'kinematic element name')) OR
             item_correlation (SELF.items, ['KINEMATIC_STRUCTURE',
             'KINEMATIC_JOINT', 'KINEMATIC_LINK']);
              
END_ENTITY;
(*

Attribute definitions:

items: the set of items to which the name is assigned.

Formal Propositions:

WR1: If the role has a name of 'kinematic element name', only items of type kinematic_structure, kinematic_joint, or kinematic_link shall be in the set of items.

5.2.3.1.19 applied_organization_assignment

An applied_organization_assignment is a type of organization_assignment that assigns an organization to an organization_item.

EXPRESS specification:

*)
ENTITY applied_organization_assignment
  SUBTYPE OF (organization_assignment);
  items : SET [1:?] OF organization_item;
WHERE
  WR1:  (NOT (SELF.role.name = 'organization in contract')) OR
             item_correlation (SELF.items, ['CONTRACT']);
           
  WR2:  (NOT (SELF.role.name = 'signing for contract')) OR
             item_correlation (SELF.items,
             ['APPLIED_ORGANIZATION_ASSIGNMENT']);
           
  WR3:  (NOT (SELF.role.name = 'validity context')) OR
             item_correlation (SELF.items, ['ACTION_PROPERTY',
             'RESOURCE_PROPERTY', 'PROPERTY_DEFINITION']);
           
  WR4:  (NOT (SELF.role.name = 'alias scope')) OR
             item_correlation (SELF.items,
             ['APPLIED_IDENTIFICATION_ASSIGNMENT']);
           
END_ENTITY;
(*

Attribute definitions:

items: the set of items to which the organization is assigned.

Formal Propositions:

WR1: If the role has a name of 'organization in contract', only items of type contract shall be in the set of items.

WR2: If the role has a name of 'signing for contract', only items of type applied_organization_assignment shall be in the set of items.

WR3: If the role has a name of 'validity context', only items of type action_property, resource_property, or property_definition shall be in the set of items.

WR4: If the role has a name of 'alias scope', only items of type applied_identification_assignment shall be in the set of items.

5.2.3.1.20 applied_organizational_project_assignment

An applied_organizational_project_assignment is a type of organizational_project_assignment that assigns an organizational_project to an organizational_project_item.

EXPRESS specification:

*)
ENTITY applied_organizational_project_assignment
  SUBTYPE OF (organizational_project_assignment);
  items : SET [1:?] OF organizational_project_item;
END_ENTITY;
(*

Attribute definitions:

items: the set of items to which the organizational_project is assigned.

Associated global rule:

The following global rule defined in this part of ISO 10303 applies to the applied_organizational_project_assignment entity:

5.2.3.1.21 applied_person_and_organization_assignment

An applied_person_and_organization_assignment is a type of person_and_organization_assignment that assigns a person_and_organization to a person_and_organization_item.

EXPRESS specification:

*)
ENTITY applied_person_and_organization_assignment
  SUBTYPE OF (person_and_organization_assignment);
  items : SET [1:?] OF person_and_organization_item;
WHERE
  WR1:  (NOT (SELF.role.name = 'signing for contract')) OR
             item_correlation (SELF.items,
             ['APPLIED_ORGANIZATION_ASSIGNMENT']);
           
END_ENTITY;
(*

Attribute definitions:

items: the set of items to which the person_and_organization is assigned.

Formal Propositions:

WR1: If the role has a name of 'signing for contract', only items of type applied_organization_assignment shall be in the set of items.

5.2.3.1.22 applied_presented_item

An applied_presented_item is a type of presented_item that that assigns an item in the presented_item_select to a presentation_representation or a presentation_set.

EXPRESS specification:

*)
ENTITY applied_presented_item
  SUBTYPE OF (presented_item);
  items : SET [1:?] OF presented_item_select;
END_ENTITY;
(*

Attribute definitions:

items: the set of items to which the presentation_representation or presentation_area is assigned.

5.2.3.1.23 applied_security_classification_assignment

An applied_security_classification_assignment is a type of security_classification_assignment that assigns a security_classification to a security_classification_item.

EXPRESS specification:

*)
ENTITY applied_security_classification_assignment
  SUBTYPE OF (security_classification_assignment);
  items : SET [1:?] OF security_classification_item;
END_ENTITY;
(*

Attribute definitions:

items: the set of items to which the security_classification is assigned.

5.2.3.1.24 applied_time_interval_assignment

An applied_time_interval_assignment is a type of time_interval_assignment that assigns a time_interval to a time_interval_item.

EXPRESS specification:

*)
ENTITY applied_time_interval_assignment
  SUBTYPE OF (time_interval_assignment);
  items : SET [1:?] OF time_interval_item;
END_ENTITY;
(*

Attribute definitions:

items: the set of items to which the time_interval is assigned.

5.2.3.1.25 attribute_language_assignment

A attribute_language_assignment is a type of attribute_classification_assignment. It associates the specification of a language used for a string valued attribute to the entity instance that has this attribute. The attribute value is further classified as either being specified in the original language or as a translation thereof.

EXPRESS specification:

*)
ENTITY attribute_language_assignment
  SUBTYPE OF (attribute_classification_assignment);
  items : SET [1:?] OF attribute_language_item;
DERIVE
language : label := SELF\attribute_classification_assignment.
                       assigned_class.name;
WHERE
  WR1:  SELF\attribute_classification_assignment.role.name IN ['primary','translated'];
           
  WR2:  'AUTOMOTIVE_DESIGN.'+ 'LANGUAGE' IN
        TYPEOF(SELF\attribute_classification_assignment.assigned_class );
          
END_ENTITY;
(*

Attribute definitions:

items: the set of objects to which the language classification is assigned.

language: The language specifies the name of the assigned_class that provides an identification for the language in which an attribute value is specified.

Formal Propositions:

WR1: The language used to specify the string valued attributes in the set of items shall be marked either as the 'primary' language or as 'translated'.

WR2: The instance referenced as assigned_class shall be of type language.

5.2.3.1.26 barring_hole

A barring_hole is a type of feature_definition representing a hole in a panel part where the punched material is partially bended in the punch direction. See ARM definition for Panel_hole_with_barring for more information.

EXPRESS specification:

*)
ENTITY barring_hole
  SUBTYPE OF (feature_definition);
WHERE
  WR1:  SIZEOF( QUERY( sa <* get_shape_aspects(SELF) |
              (sa.name = 'hole profile') AND
              (sa.description = 'closed profile occurrence') AND
              (SIZEOF( QUERY( sar <* USEDIN( sa, 'AUTOMOTIVE_DESIGN.' +
                'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
                ('AUTOMOTIVE_DESIGN.SHAPE_DEFINING_RELATIONSHIP' IN
                 TYPEOF(sar)) AND
                (sar.description = 'profile usage') AND
                (SIZEOF(['AUTOMOTIVE_DESIGN.CIRCULAR_CLOSED_PROFILE',
                  'AUTOMOTIVE_DESIGN.NGON_CLOSED_PROFILE',
                  'AUTOMOTIVE_DESIGN.RECTANGULAR_CLOSED_PROFILE',
                  'AUTOMOTIVE_DESIGN.CLOSED_PATH_PROFILE']
                  * TYPEOF(sar.relating_shape_aspect)
                 ) = 1 )
               )) = 1 )
             )) = 1;   
  WR2:  SIZEOF( QUERY( sa <* get_shape_aspects(SELF) |
              (sa.name = 'barring profile') AND
              (sa.description = 'closed profile occurrence') AND
              (SIZEOF( QUERY( sar <* USEDIN( sa, 'AUTOMOTIVE_DESIGN.' +
                'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
                ('AUTOMOTIVE_DESIGN.SHAPE_DEFINING_RELATIONSHIP' IN
                 TYPEOF(sar)) AND
                (sar.description = 'profile usage') 
               )) = 1 )
             )) = 1;   
  WR3:  (SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
              'AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
              TYPEOF(pdr.used_representation)
             )) = 1) AND
             (SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) AND
              {1 <= SIZEOF(pdr.used_representation.items) <= 2}
             )) = 1);   
  WR4:  SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
              TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
               NOT( i.name IN ['orientation','base radius'])
               )) > 0)
             )) = 0;   
  WR5:  SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
              TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='base radius') AND
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2)
               )) <> 1)
             )) = 0;   
END_ENTITY;
(*

Formal Propositions:

WR1: The barring_hole shall be the basis shape for exactly one shape_aspect with a name of 'hole profile' and a description of 'closed profile occurrence'. This shape_aspect shall be the related_shape_aspect in exactly one shape_defining_relationship with a description of 'profile usage' and a relating_shape_aspect that references a circular_closed_profile, ngon_closed_profile, rectangular_closed_profile, or closed_path_profile.

WR2: The barring_hole shall be the basis shape for exactly one shape_aspect with a name of 'barring profile' and a description of 'closed profile occurrence'. This shape_aspect shall be the related_shape_aspect in exactly one shape_defining_relationship with a description of of 'profile usage'.

WR3: The barring_hole shall contain exactly one implicit representation of type shape_representation_with_parameters. This implicit representation of the barring_hole shall contain between one and two representation_item in its set of items.

WR4: The implicit representation of a barring_hole shall contain only representation_items with a name of either 'orientation' or 'base radius'.

WR5: The implicit representation of a barring_hole shall contain exactly one representation_item that has a name of 'base radius' and is of type measure_representation_item and length_measure_with_unit.

Informal Propositions:

IP1: The barring profile shall lie in the same plane as the hole profile.

IP2: The barring profile shall lie completely inside the hole profile.

5.2.3.1.27 bead

A bead is a type of feature_definition applicable to panel parts that is used to increase the stiffness of the part. See ARM definition for Bead for more information.

EXPRESS specification:

*)
ENTITY bead
  SUBTYPE OF (feature_definition);
WHERE
  WR1:  (SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
              'AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
              TYPEOF(pdr.used_representation)
             )) <= 1) AND
             (SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) AND
               (SIZEOF(pdr.used_representation.items) > 2)
             )) = 0);   
  WR2:  SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
              TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
               NOT( i.name IN ['orientation','base radius'])
               )) > 0)
             )) = 0;   
  WR3:  SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
              TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='base radius') AND
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2)
               )) > 1)
             )) = 0;   
  WR4:  SIZEOF( QUERY( sa <* get_shape_aspects(SELF) |
              (sa.name = 'sweep path') AND
              (sa.description = 'path feature component occurrence') AND
              (SIZEOF( QUERY( sar <* USEDIN( sa, 'AUTOMOTIVE_DESIGN.' +
                'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
                ('AUTOMOTIVE_DESIGN.SHAPE_DEFINING_RELATIONSHIP' IN
                 TYPEOF(sar)) AND
                (sar.description = 'path feature component usage') AND
                ('AUTOMOTIVE_DESIGN.PATH_FEATURE_COMPONENT' IN
                 TYPEOF(sar.relating_shape_aspect))
               )) = 1 )
             )) = 1;   
  WR5:  SIZEOF( QUERY( sa <* get_shape_aspects(SELF) |
              (sa.name = 'bead profile') AND
              (sa.description = 'open profile occurrence') AND
              (SIZEOF( QUERY( sar <* USEDIN( sa, 'AUTOMOTIVE_DESIGN.' +
                'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
                ('AUTOMOTIVE_DESIGN.SHAPE_DEFINING_RELATIONSHIP' IN
                 TYPEOF(sar)) AND
                (sar.description = 'profile usage') AND
                (SIZEOF(['AUTOMOTIVE_DESIGN.OPEN_PATH_PROFILE',
                  'AUTOMOTIVE_DESIGN.PARTIAL_CIRCULAR_PROFILE',
                  'AUTOMOTIVE_DESIGN.ROUNDED_U_PROFILE',
                  'AUTOMOTIVE_DESIGN.SQUARE_U_PROFILE',
                  'AUTOMOTIVE_DESIGN.TEE_PROFILE',
                  'AUTOMOTIVE_DESIGN.VEE_PROFILE']
                  * TYPEOF(sar.relating_shape_aspect)
                 ) = 1 )
               )) = 1 )
             )) = 1;   
  WR6:  SIZEOF( QUERY( sa <* get_shape_aspects(SELF) |
              (sa.name = 'end condition') AND
              (sa.description = 'bead end occurrence') AND
              (SIZEOF( QUERY( sar <* USEDIN( sa, 'AUTOMOTIVE_DESIGN.' +
                'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
                ('AUTOMOTIVE_DESIGN.FEATURE_COMPONENT_RELATIONSHIP' IN
                 TYPEOF(sar)) AND
                (sar.name = 'bead end usage') AND
                (sar.description = 'starting' 
)  AND
                ('AUTOMOTIVE_DESIGN.BEAD_END' IN
                 TYPEOF(sar.relating_shape_aspect))
               )) = 1 )
             )) = 1;   
  WR7:  SIZEOF( QUERY( sa <* get_shape_aspects(SELF) |
              (sa.name = 'end condition') AND
              (sa.description = 'bead end occurrence') AND
              (SIZEOF( QUERY( sar <* USEDIN( sa, 'AUTOMOTIVE_DESIGN.' +
                'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
                ('AUTOMOTIVE_DESIGN.FEATURE_COMPONENT_RELATIONSHIP' IN
                 TYPEOF(sar)) AND
                (sar.name = 'bead end usage') AND
                (sar.description = 'ending'
)  AND
                ('AUTOMOTIVE_DESIGN.BEAD_END' IN
                 TYPEOF(sar.relating_shape_aspect))
               )) = 1 )
             )) = 1;   
END_ENTITY;
(*

Formal Propositions:

WR1: The bead shall contain at most one implicit representation of type shape_representation_with_parameters. If present, this implicit representation of the bead shall contain at most two representation_items in its set of items.

WR2: The implicit representation of a bead shall only contain representation_items in its set of items that have a name of either 'orientation' or 'base radius'.

WR3: The implicit representation of the bead shall contain at most one representation_item of type measure_representation_item and length_measure_with_unit with a name of 'base radius'.

WR4: The bead shall be the basis shape for exactly one shape_aspect with a name of 'sweep path' and a description of 'path feature component occurrence' that is the related_shape_aspect in exactly one shape_defining_relationship with a description of 'path feature component usage' in which the relating_shape_aspect is a path_feature_component.

WR5: The bead shall be the basis shape for exactly one shape_aspect with a name of 'bead profile' and a description of 'open profile occurrence' that is the related_shape_aspect in exactly one shape_defining_relationship with a description of 'profile usage' in which the relating_shape_aspect is an open_path_profile, a partial_circular_profile, a rounded_u_profile, a square_u_profile, a tee_profile, or a vee_profile.

WR6: The bead shall be the basis shape for exactly one shape_aspect with a name of 'end condition' and a description of 'bead end occurrence' that is the related_shape_aspect in exactly one feature_component_relationship with a name of 'bead end usage' and a description of 'starting' in which the relating_shape_aspect is a bead_end.

WR7: The bead shall be the basis shape for exactly one shape_aspect with a name of 'end condition' and a description of 'bead end occurrence' that is the related_shape_aspect in exactly one feature_component_relationship with a name of 'bead end usage' and a description of 'ending' in which the relating_shape_aspect is a bead_end.

5.2.3.1.28 bead_end

A bead_end is a type of shape_aspect that is the representation of the end condition for a bead. See ARM definition for Bead_end_type, for Open_bead_end_type, for Radiused_bead_end_type, and for Linear_bead_end_type for more information.

EXPRESS specification:

*)
ENTITY bead_end
  SUBTYPE OF (shape_aspect);
WHERE
  WR1:  'AUTOMOTIVE_DESIGN.FEATURE_COMPONENT_DEFINITION' IN
             TYPEOF(SELF.of_shape.definition);   
  WR2:   SELF.description IN ['linear','open','radiused'];
           
  WR3:  (SELF.description <> 'linear') XOR
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) 
              )) > 0);   
  WR4:  (SELF.description <> 'linear') OR
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) AND
               (SIZEOF(pdr.used_representation.items) = 2)
              )) = 1);   
  WR5:  (SELF.description <> 'linear') OR
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='end length') AND
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2)
               )) = 1)
              )) = 1);   
  WR6:  (SELF.description <> 'linear') OR
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
               (i.name = 'end shape') AND 
               (i\descriptive_representation_item.description IN ['straight','tapered']) AND
                ('AUTOMOTIVE_DESIGN.DESCRIPTIVE_REPRESENTATION_ITEM'
                 IN TYPEOF(i))
               )) = 1)
              )) = 1);   
  WR7:  SIZEOF( QUERY( sar <* USEDIN( SELF, 'AUTOMOTIVE_DESIGN.' +
              'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
              ('AUTOMOTIVE_DESIGN.FEATURE_COMPONENT_RELATIONSHIP' IN
               TYPEOF(sar)) AND
              (sar.name = 'bead end usage') AND
              (sar.description IN ['starting'
,'ending'
]) AND
              ('AUTOMOTIVE_DESIGN.BEAD' IN
               TYPEOF(sar.related_shape_aspect.of_shape.definition)) AND
              (sar.related_shape_aspect.of_shape.definition\characterized_object.name = 'end condition') AND
              (sar.related_shape_aspect.of_shape.definition\characterized_object.description = 'bead end occurrence')
             )) = 1;   
END_ENTITY;
(*

Formal Propositions:

WR1: The bead_end shall be an aspect of the shape of a feature_component_definition.

WR2: The description for the bead_end shall be either 'linear', 'open', or 'radiused'.

WR3: A bead_end has an implicit representation if and only if it has a description of 'linear'.

WR4: If the description of the bead_end is 'linear', its implicit representation shall contain exactly two representation_items in its set of items.

WR5: If the description of the bead_end is 'linear', exactly one representation_item used for the implicit representation of the bead_end shall be of type measure_representation_item and length_measure_with_unit with a name of 'end length'.

WR6: If the description of the bead_end is 'linear', exactly one representation_item used for the implicit representation of the bead_end shall be of type descriptive_representation_item with a name of 'end shape' and a description of either 'straight' or 'tapered'.

WR7: The bead_end shall be the relating_shape_aspect in exactly one feature_component_relationship with a name of 'bead end usage' and a description of either 'starting' or 'ending' in which the related_shape_aspect is a shape_aspect of a bead with a name of 'end condition' and a description of 'bead end occurrence'.

5.2.3.1.29 boss

A boss is a type of feature_definition that is the representation of an enclosed shape protrusion that is added to a solid base shape. This added volume is represented by sweeping a closed profile along a linear path represented by a path_feature_component. The top of the boss is represented by a boss_top. The walls of the boss may have a slope that is represented by a taper. See ARM definition for Boss_feature, for Circular_boss, for Rectangular_boss, and for General_boss for more information.

EXPRESS specification:

*)
ENTITY boss
  SUBTYPE OF (feature_definition);
WHERE
  WR1:  SELF.description IN ['circular','rectangular','complex'];
  WR2:  (SELF.description <> 'circular') OR
             (SIZEOF( QUERY( sa <* get_shape_aspects(SELF) |
               (sa.description = 'circular profile occurrence') AND
               (SIZEOF( QUERY( sar <* USEDIN( sa, 'AUTOMOTIVE_DESIGN.' +
                 'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
                 ('AUTOMOTIVE_DESIGN.SHAPE_DEFINING_RELATIONSHIP' IN
                  TYPEOF(sar)) AND
                 (sar.description = 'profile usage')  AND
                 ('AUTOMOTIVE_DESIGN.CIRCULAR_CLOSED_PROFILE' IN
                  TYPEOF(sar.relating_shape_aspect))
                )) = 1 )
              )) = 1);
  WR3:  (SELF.description <> 'complex') OR
             (SIZEOF( QUERY( sa <* get_shape_aspects(SELF) |
               (sa.description = 'enclosed boundary occurrence') AND
               (SIZEOF( QUERY( sar <* USEDIN( sa, 'AUTOMOTIVE_DESIGN.' +
                 'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
                 ('AUTOMOTIVE_DESIGN.SHAPE_DEFINING_RELATIONSHIP' IN
                  TYPEOF(sar)) AND
                 (sar.description = 'profile usage')  AND
                 (SIZEOF(['AUTOMOTIVE_DESIGN.CLOSED_PATH_PROFILE',
 'AUTOMOTIVE_DESIGN.NGON_CLOSED_PROFILE']
                  * TYPEOF(sar.relating_shape_aspect)
                 ) = 1 )
                )) = 1 )
              )) = 1);
  WR4:  (SELF.description <> 'rectangular') OR
             (SIZEOF( QUERY( sa <* get_shape_aspects(SELF) |
               (sa.description = 'rectangular profile occurrence') AND
               (SIZEOF( QUERY( sar <* USEDIN( sa, 'AUTOMOTIVE_DESIGN.' +
                 'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
                 ('AUTOMOTIVE_DESIGN.SHAPE_DEFINING_RELATIONSHIP' IN
                  TYPEOF(sar)) AND
                 (sar.description = 'profile usage')  AND
                 ('AUTOMOTIVE_DESIGN.RECTANGULAR_CLOSED_PROFILE' IN
                  TYPEOF(sar.relating_shape_aspect))
                )) = 1 )
              )) = 1);
  WR5:  (SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
              'AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
              TYPEOF(pdr.used_representation)
             )) <= 1) AND
             (SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) AND
               NOT ({1 <= SIZEOF(pdr.used_representation.items) <= 2})
             )) = 0);
  WR6:  SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
              TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
               NOT( i.name IN ['orientation','fillet radius'])
               )) > 0)
             )) = 0;
  WR7:  SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
              TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='fillet radius') AND
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2)
               )) > 1)
             )) = 0; 
  WR8:  SIZEOF( QUERY( sa <* get_shape_aspects(SELF) |
               (sa.description = 'boss hight occurrence') AND
               (SIZEOF( QUERY( sar <* USEDIN( sa, 'AUTOMOTIVE_DESIGN.' +
                 'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
                 ('AUTOMOTIVE_DESIGN.SHAPE_DEFINING_RELATIONSHIP' IN
                  TYPEOF(sar)) AND
                 (sar.name = 'boss hight')  AND
                 (sar.description = 'path feature component usage')  AND
                 ('AUTOMOTIVE_DESIGN.PATH_FEATURE_COMPONENT' IN
                  TYPEOF(sar.relating_shape_aspect)) AND
                 (sar.relating_shape_aspect.description = 'linear')
                )) = 1 )
              )) = 1;
  WR9:  SIZEOF( QUERY( sa <* get_shape_aspects(SELF) |
              (sa.description = 'top condition occurrence') AND
              (SIZEOF( QUERY( sar <* USEDIN( sa, 'AUTOMOTIVE_DESIGN.' +
                'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
                ('AUTOMOTIVE_DESIGN.FEATURE_COMPONENT_RELATIONSHIP' IN
                 TYPEOF(sar)) AND
                (sar.description = 'boss top usage')  AND
                ('AUTOMOTIVE_DESIGN.BOSS_TOP' IN
                 TYPEOF(sar.relating_shape_aspect))
               )) = 1 )
             )) = 1;
  WR10: NOT(SELF.description IN ['rectangular','complex']) OR
              (SIZEOF( QUERY( sa <* get_shape_aspects(SELF) |
              (sa.description = 'change in boundary occurrence') AND
              (SIZEOF( QUERY( sar <* USEDIN( sa, 'AUTOMOTIVE_DESIGN.' +
                'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
                ('AUTOMOTIVE_DESIGN.FEATURE_COMPONENT_RELATIONSHIP' IN
                 TYPEOF(sar)) AND
                (sar.description = 'taper usage')  AND
                ('AUTOMOTIVE_DESIGN.TAPER' IN
                 TYPEOF(sar.relating_shape_aspect)) AND
                (sar.relating_shape_aspect.description IN ['angle taper','directed taper'])
               )) = 1 )
              )) <= 1);
  WR11: (SELF.description <> 'circular') OR
              (SIZEOF( QUERY( sa <* get_shape_aspects(SELF) |
              (sa.description = 'change in diameter occurrence') AND
              (SIZEOF( QUERY( sar <* USEDIN( sa, 'AUTOMOTIVE_DESIGN.' +
                'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
                ('AUTOMOTIVE_DESIGN.FEATURE_COMPONENT_RELATIONSHIP' IN
                 TYPEOF(sar)) AND
                (sar.description = 'taper usage')  AND
                ('AUTOMOTIVE_DESIGN.TAPER' IN
                 TYPEOF(sar.relating_shape_aspect)) AND
                (sar.relating_shape_aspect.description IN ['angle taper','diameter taper'])
               )) = 1 )
              )) <= 1);
END_ENTITY;
(*

Formal Propositions:

WR1: The description for the boss shall be either 'circular', 'rectangular', or 'complex'.

WR2: If the boss has a description of 'circular' the boss shall be the basis shape for exactly one shape_aspect with a description of 'circular profile occurrence' that is the related_shape_aspect in exactly one shape_defining_relationship with a description of 'profile usage' in which the relating_shape_aspect is a circular_closed_profile.

WR3: If the boss has a description of 'complex', the boss shall be the basis shape for exactly one shape_aspect with a description of 'enclosed boundary occurrence' that is the related_shape_aspect in exactly one shape_defining_relationship with a description of 'profile usage' in which the relating_shape_aspect is either a closed_path_profile or a ngon_closed_profile.

WR4: If the boss has a description of 'rectangular' the boss shall be the basis shape for exactly one shape_aspect with a description of 'rectangular profile occurrence' that is the related_shape_aspect in exactly one shape_defining_relationship with a description of 'profile usage' in which the relating_shape_aspect is a rectangular_closed_profile.

WR5: The boss shall contain at most one implicit representation of type shape_representation_with_parameters. If present, this representation shall contain between one and two representation_items in its set of items.

WR6: The implicit representation of the boss shall contain only representation_items that have a name of either 'orientation' or 'fillet radius'.

WR7: At most one representation_item used for the implicit representation of the boss shall have a name of 'fillet radius'. This representation_item shall be of type measure_representation_item and length_measure_with_unit.

WR8: The boss shall be the basis shape for exactly one shape_aspect with a description of 'boss height occurrence'. This shape_aspect shall be the related_shape_aspect in exactly one shape_defining_relationship with a name of 'boss height' and a description of ' path feature component usage' in which the relating_shape_aspect is a path_feature_component with a description of 'linear'.

WR9: The boss shall be the basis shape for exactly one shape_aspect with a description of 'top condition occurrence'. This shape_aspect shall be the related_shape_aspect in exactly one feature_component_relationship with a description of 'boss top usage' in which the relating_shape_aspect is a boss_top.

WR10: If the boss has a description of 'rectangular' or 'complex', the boss shall be the basis shape for at most one shape_aspect with a description of 'change in boundary occurrence' that is the related_shape_aspect in exactly one feature_component_relationship with a description of 'taper usage' in which the relating_shape_aspect is a taper with a description of either 'angle taper' or 'directed taper'.

WR11: If the boss has a description of 'circular', the boss shall be the basis shape for at most one shape_aspect with a description of 'change in diameter occurrence' that is the related_shape_aspect in exactly one feature_component_relationship with a description of 'taper usage' in which the relating_shape_aspect is a taper with a description of either 'angle taper' or 'diameter taper'.

5.2.3.1.30 boss_top

A boss_top is a type of shape_aspect that is the end condition for a boss. See ARM definition for Boss_top_condition, for Planar_top_condition, and for General_top_condition for more information.

EXPRESS specification:

*)
ENTITY boss_top
  SUBTYPE OF (shape_aspect);
WHERE
  WR1:  'AUTOMOTIVE_DESIGN.FEATURE_COMPONENT_DEFINITION' IN
             TYPEOF(SELF.of_shape.definition);
        
  WR2:  SELF.description IN ['planar','complex'];   
  WR3:  (SELF.description <> 'planar') OR
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.DIRECTION_SHAPE_REPRESENTATION' IN 
                TYPEOF(pdr.used_representation)) 
              )) = 1);
  WR4:  (SELF.description <> 'planar') OR
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.LOCATION_SHAPE_REPRESENTATION' IN 
                TYPEOF(pdr.used_representation)) 
              )) = 1);   
  WR5:   (SELF.description <> 'complex') OR
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.FACE_SHAPE_REPRESENTATION' IN 
                TYPEOF(pdr.used_representation)) 
              )) = 1);   
  WR6:  SIZEOF( QUERY( sar <* USEDIN( SELF, 'AUTOMOTIVE_DESIGN.' +
              'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
              ('AUTOMOTIVE_DESIGN.FEATURE_COMPONENT_RELATIONSHIP' IN
               TYPEOF(sar)) AND
              (sar.name = 'boss top usage') AND
              (sar.description IN ['starting', 'ending' 
]) AND
              ('AUTOMOTIVE_DESIGN.BOSS' IN
               TYPEOF(sar.related_shape_aspect)) AND
              (sar.related_shape_aspect.name = 'top condition occurrence')
             )) = 1;   
  WR7:  (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) 
              )) <= 1) AND
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) AND
               (SIZEOF(pdr.used_representation.items) > 1)
              )) = 0);
           
  WR8:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              ((SIZEOF(pdr.used_representation.items) = 0) XOR
               (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='top radius') AND
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2)
               )) = 1))
              )) <= 1;   
END_ENTITY;
(*

Formal Propositions:

WR1: The boss_top shall be an aspect of the shape of a feature_component_definition.

WR2: The description of the boss_top shall be either 'planar' or 'complex'.

WR3: If the description of the boss_top is 'planar', the boss_top shall have exactly one direction_shape_representation.

WR4: If the description of the boss_top is 'planar', the boss_top shall have exactly one location_shape_representation.

WR5: If the description of the boss_top is 'complex', the boss_top shall have exactly one face_shape_representation.

WR6: The boss_top shall be the relating_shape_aspect in exactly one feature_component_relationship with a name of 'boss top usage' and a description of either 'starting' or 'ending' in which the related_shape_aspect is a shape_aspect of a boss with a name of 'top condition occurrence'.

WR7: The boss_top shall have at most one shape_representation_with_parameters to specify its implicit representation. If present, this implicit representation shall contain at most one representation_item it its set of items.

WR8: If present, the representation_item shall be of type measure_representation_item and length_measure_with_unit and shall have a name of 'top radius'.

5.2.3.1.31 camera_image_2d_with_scale

A camera_image_2d_with_scale is a type of camera_image with a derived scale. The scale is the ratio between the size of the viewport and the size of the view window of the camera_model.

NOTE 1 The viewport specifies the rectangular boundary of the view as it is depicted in the drawing sheet.

NOTE 2 The definition of this entity is identical to the definition in ISO 10303-202.

EXPRESS specification:

*)
ENTITY camera_image_2d_with_scale
  SUBTYPE OF (camera_image);
DERIVE
scale: positive_ratio_measure :=
       (SELF\mapped_item.mapping_target\planar_extent.size_in_x) /
       (SELF\mapped_item.mapping_source.mapping_origin\
             camera_model_d2.view_window\planar_extent.size_in_x);
WHERE
  WR1:  ('AUTOMOTIVE_DESIGN.CAMERA_MODEL_D2' IN
              TYPEOF(SELF\mapped_item.mapping_source.mapping_origin));   
  WR2:  aspect_ratio (SELF\mapped_item.mapping_target) =
             aspect_ratio (SELF\mapped_item.mapping_source.mapping_origin\camera_model_d2.view_window);   
  WR3:  SELF\mapped_item.mapping_source.mapping_origin\camera_model_d2.view_window_clipping;   
END_ENTITY;
(*

Attribute definitions:

scale: The positive_ratio_measure derived from the rectangular size of the viewport and the rectangular size of the view_window of the camera_model_d2.

Formal Propositions:

WR1: The source of the projection shall be a camera_model_d2.

WR2: The aspect ratio of the viewport shall equal the aspect ratio of the view_window of the camera_model.

WR3: The view_window_clipping attribute of the camera_model_d2 shall be true.

5.2.3.1.32 chamfer

A chamfer is a type of transition_feature that is the representation of a linear transition between two joining non-coplanar faces. See ARM definition for Chamfer for more information.

EXPRESS specification:

*)
ENTITY chamfer
  SUBTYPE OF (transition_feature);
WHERE
  WR1:  SIZEOF( QUERY( sar <* USEDIN( SELF, 'AUTOMOTIVE_DESIGN.' +
              'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
              ('AUTOMOTIVE_DESIGN.FEATURE_COMPONENT_RELATIONSHIP' IN
               TYPEOF(sar)) AND
              ('AUTOMOTIVE_DESIGN.CHAMFER_OFFSET' IN
               TYPEOF(sar.related_shape_aspect)) AND
              (sar.related_shape_aspect.description = 'first offset')
             )) = 1;   
  WR2:  SIZEOF( QUERY( sar <* USEDIN( SELF, 'AUTOMOTIVE_DESIGN.' +
              'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
              ('AUTOMOTIVE_DESIGN.FEATURE_COMPONENT_RELATIONSHIP' IN
               TYPEOF(sar)) AND
              ('AUTOMOTIVE_DESIGN.CHAMFER_OFFSET' IN
               TYPEOF(sar.related_shape_aspect)) AND
              (sar.related_shape_aspect.description = 'second offset')
             )) = 1;   
  WR3:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.FACE_SHAPE_REPRESENTATION' IN 
                TYPEOF(pdr.used_representation)) AND
               (pdr.used_representation.name = 'chamfer face')
              )) = 1;   
END_ENTITY;
(*

Formal Propositions:

WR1: The chamfer shall be the relating_shape_aspect in exactly one feature_component_relationship, where the related_shape_aspect is a chamfer_offset with a description of 'first offset'.

WR2: The chamfer shall be the relating_shape_aspect in exactly one feature_component_relationship where the related_shape_aspect is a chamfer_offset with a description of 'second offset'.

WR3: The chamfer shall contain exactly one face_shape_representation of its resulting chamfer face. This representation shall have a name of 'chamfer face'.

5.2.3.1.33 chamfer_offset

A chamfer_offset is a type of shape_aspect that is the representation of the linear setbacks from the edge of two surfaces to create a chamfer feature. See ARM definition for Chamfer_offset and for Chamfer_angle for more information.

EXPRESS specification:

*)
ENTITY chamfer_offset
  SUBTYPE OF (shape_aspect);
WHERE
  WR1:  SELF.description IN ['first offset','second offset'];   
  WR2:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) 
              )) = 1;   
  WR3:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) AND
               (SIZEOF(pdr.used_representation.items) = 1)
              )) = 1;   
  WR4:  (SELF.description <> 'first offset') OR
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='offset amount') AND
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2)
               )) = 1)
              )) = 1);   
  WR5:  (SELF.description <> 'second offset') OR
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              ((SIZEOF( QUERY( i <* pdr.used_representation.items |
                 (i.name='offset amount') AND
                 (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
 'AUTOMOTIVE_DESIGN.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
                  ) = 2)
                )) = 1) OR
               (SIZEOF( QUERY( i <* pdr.used_representation.items |
                 (i.name='offset angle') AND
                 ('AUTOMOTIVE_DESIGN.PLANE_ANGLE_MEASURE_WITH_UNIT' 
                  IN TYPEOF(i))
                )) = 1))
              )) = 1);   
  WR6:  SIZEOF( QUERY( sar <* USEDIN( SELF, 'AUTOMOTIVE_DESIGN.' +
              'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
              ('AUTOMOTIVE_DESIGN.FEATURE_COMPONENT_RELATIONSHIP' IN
               TYPEOF(sar)) AND
              ('AUTOMOTIVE_DESIGN.CHAMFER' IN
               TYPEOF(sar.relating_shape_aspect)) 
             )) >= 1;   
  WR7:  (SELF.description <> 'first offset') OR
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.FACE_SHAPE_REPRESENTATION' IN 
                TYPEOF(pdr.used_representation)) AND
               (pdr.used_representation.name = 'first face shape')
              )) = 1);   
  WR8:  (SELF.description <> 'second offset') OR
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.FACE_SHAPE_REPRESENTATION' IN 
                TYPEOF(pdr.used_representation)) AND
               (pdr.used_representation.name = 'second face shape')
              )) = 1);   
END_ENTITY;
(*

Formal Propositions:

WR1: The description for the chamfer_offset shall be either 'first offset' or 'second offset'.

WR2: The chamfer_offset shall have its implicit representation specified by exactly one shape_representation_with_parameters.

WR3: The chamfer_offset shall have an implicit representation that contains exactly one representation_item in its set of items.

WR4: If the description of the chamfer_offset is 'first offset', exactly one representation_item used for the implicit representation of the chamfer_offset shall be of type measure_representation_item and length_measure_with_unit with a name of 'offset amount'.

WR5: If the description of the chamfer_offset is 'second offset', the implicit representation shall contain a representation_item that is of type measure_representation_item with either a name of 'offset amount' and of type length_measure_with_unit or a name of 'offset angle' that is of type plane_angle_measure_with_unit.

WR6: The chamfer_offset shall be the related_shape_aspect in at least one feature_component_relationship that refers to a chamfer as its relating_shape_aspect.

WR7: If the chamfer_offset has a description of 'first offset', it shall contain exactly one face_shape_representation with a name of 'first face shape'.

WR8: If the chamfer_offset has a description of 'second offset', it shall contain exactly one face_shape_representation with a name of 'second face shape'.

5.2.3.1.34 characterized_class

A characterized_class is a type of class and characterized_object with associated characteristics.

EXPRESS specification:

*)
ENTITY characterized_class
  SUBTYPE OF (characterized_object, class);
END_ENTITY;
(*

5.2.3.1.35 circular_closed_profile

A circular_closed_profile is a type of shape_aspect that consists of an enclosed 2D area and a reference system for the parameters of the circular_closed_profile. The enclosed area is circular and defined by a radius. The reference system is used to define location and orientation of the circular_closed_profile and consists of two orthogonal axes X and Y that intersect in a reference point. See ARM definition for Circular_closed_profile for more information.

EXPRESS specification:

*)
ENTITY circular_closed_profile
  SUBTYPE OF (shape_aspect);
WHERE
  WR1:  'AUTOMOTIVE_DESIGN.FEATURE_COMPONENT_DEFINITION' IN  
             TYPEOF (SELF.of_shape.definition);   
  WR2:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) 
              )) = 1;   
  WR3:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) AND
               (SIZEOF(pdr.used_representation.items) = 2)
              )) = 1;   
  WR4:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
             ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
              TYPEOF(pdr.used_representation)) AND
             (SIZEOF( QUERY( i <* pdr.used_representation.items |
               (i.name='orientation') AND
               ('AUTOMOTIVE_DESIGN.PLACEMENT' IN TYPEOF(i))
              )) = 1)
             )) = 1;   
  WR5:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='diameter') AND
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2)
               )) = 1)
              )) = 1;   
END_ENTITY;
(*

Formal Propositions:

WR1: The circular_closed_profile shall be an aspect of the shape of a feature_component_definition.

WR2: The circular_closed_profile shall have exactly one implicit representation defined by a shape_representation_with_parameters.

WR3: The shape_representation_with_parameters that represents the circular_closed_profile shall contain two representation_items in its set of items.

WR4: Exactly one representation_item used for the implicit representation of a circular_closed_profile shall be of type placement with a name of 'orientation'.

WR5: Exactly one representation_item used for the implicit representation of a circular_closed_profile shall be of type measure_representation_item and length_measure_with_unit with a name of 'diameter'.

Informal Propositions:

IP1: The circular_closed_profile shall be planar and shall lie in the X-Y plane of the reference system.

IP2: The reference point of the circular_closed_profile is defined at the centre of the circle.

5.2.3.1.36 circular_pattern

A circular_pattern is a type of replicate_feature representing a pattern where a number of occurrences of a base feature are equally spaced around a diameter. See ARM definition for Circular_pattern for more information.

EXPRESS specification:

*)
ENTITY circular_pattern
  SUBTYPE OF (replicate_feature);
WHERE
  WR1:  (SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) 
              )) = 1) AND
             (SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) AND
               {2 <= SIZEOF(pdr.used_representation.items) <= 5}
              )) = 1);   
  WR2:  SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='diameter') AND
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2)
               )) = 1)
              )) <= 1;   
  WR3:  SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='base feature rotation') AND
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.PLANE_ANGLE_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2)
               )) = 1)
              )) <= 1;   
  WR4:  SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='number of features') AND
                ('AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND
                ('AUTOMOTIVE_DESIGN.COUNT_MEASURE' IN 
                 TYPEOF(i\measure_with_unit.value_component))
               )) = 1)
              )) = 1;   
  WR5:  SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='angular spacing') AND
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2)
               )) = 1)
              )) = 1;   
END_ENTITY;
(*

Formal Propositions:

WR1: The circular_pattern shall have exactly one implicit representation of type shape_representation_with_parameters. This representation shall contain between two and five representation_items in its set of items.

WR2: The implicit representation of the circular_pattern shall contain at most one representation_item of type measure_representation_item and length_measure_with_unit with a name of 'diameter'.

WR3: The implicit representation of the circular_pattern shall contain at most one representation_item of type measure_representation_item and plane_angle_measure_with_unit with a name of 'base feature rotation'.

WR4: The implicit representation of the circular_pattern shall contain exactly one representation_item of type measure_representation_item with a value_component of type count_measure and a name of 'number of features'.

WR5: The implicit representation of the circular_pattern shall contain exactly one representation_item of type measure_representation_item and plane_angle_measure_with_unit with a name of 'angular spacing'.

Informal Propositions:

IP1: The location of the circular_pattern shall be defined at the centre of the circle.

IP2: The circular_pattern shall be defined in the X-Y plane, with the X direction intersecting the placement position of the first base feature.

5.2.3.1.37 class

A class is a type of group that is a classification of an object which characterizes all objects of the same kind; such a classification is independent from the application of the classified object.

EXPRESS specification:

*)
ENTITY class
  SUBTYPE OF (group);
END_ENTITY;
(*

Associated global rules:

The following global rules defined in this part of ISO 10303 apply to the class entity:

5.2.3.1.38 class_system

A class_system is a type of group that specifies a method for classifying objects.

EXPRESS specification:

*)
ENTITY class_system
  SUBTYPE OF (group);
END_ENTITY;
(*

5.2.3.1.39 class_usage_effectivity_context_assignment

A class_usage_effectivity_context_assignment is a type of effectivity_context_assignment that assigns an applied_effectivity_assignment specifying the effectivity_items that impact the design of a solution for an class_usage_effectivity_context_item.

EXPRESS specification:

*)
ENTITY class_usage_effectivity_context_assignment
  SUBTYPE OF (effectivity_context_assignment);
  items : SET [1:?] OF class_usage_effectivity_context_item;
WHERE
  WR1:  SELF.role.name = 'class usage influence';   
  WR2:  SIZEOF( QUERY( i <* SELF.items |
               NOT ('AUTOMOTIVE_DESIGN.PRODUCT_DEFINITION' IN
                    TYPEOF(i))
              )) = 0;   
  WR3:  ('AUTOMOTIVE_DESIGN.APPLIED_EFFECTIVITY_ASSIGNMENT' IN
              TYPEOF(SELF.assigned_effectivity_assignment)) AND
             (SIZEOF(TYPEOF(SELF.assigned_effectivity_assignment.assigned_effectivity)
               ) = 1) AND
             (SELF.assigned_effectivity_assignment.assigned_effectivity.id = 'class usage') AND
             (SIZEOF( QUERY( i <* SELF.assigned_effectivity_assignment\applied_effectivity_assignment.items |
                NOT('AUTOMOTIVE_DESIGN.PRODUCT_CONCEPT_FEATURE_CATEGORY_USAGE' IN
                    TYPEOF(i))
               )) = 0);
           
END_ENTITY;
(*

Attribute definitions:

items: the set of items for which the applied_effectivity_assignment identifies a design impact.

Formal Propositions:

WR1: The class_usage_effectivity_context_assignment shall have a role with a name of 'class usage influence'.

WR2: The class_usage_effectivity_context_assignment shall only have product_definitions in its set of items which reference as frame_of_reference a product_definition_context with a name of 'conceptual definition'.

WR3: The class_usage_effectivity_context_assignment shall reference an applied_effectivity_assignment with an assigned_effectivity which is not of an effectivity subtype and which has an id of 'class usage' and which has only product_concept_feature_category_usage objects in the set of items.

5.2.3.1.40 closed_path_profile

A closed_path_profile is a type of shape_aspect that consists of a connected set of curves and possibly a reference system that may be used to place the closed_path_profile. See ARM definition for General_closed_profile for more information.

EXPRESS specification:

*)
ENTITY closed_path_profile
  SUBTYPE OF (shape_aspect);
WHERE
  WR1:  'AUTOMOTIVE_DESIGN.FEATURE_COMPONENT_DEFINITION' IN
              TYPEOF(SELF.of_shape.definition);   
  WR2:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) 
              )) = 1;   
  WR3:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) AND
               (SIZEOF(pdr.used_representation.items) = 1)
              )) = 1;
           
  WR4:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='orientation') AND
                ('AUTOMOTIVE_DESIGN.PLACEMENT' IN TYPEOF(i))
               )) = 1)
              )) = 1;   
  WR5:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              'AUTOMOTIVE_DESIGN.PATH_SHAPE_REPRESENTATION' IN 
               TYPEOF(pdr.used_representation)
              )) = 1;   
  WR6:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.PATH_SHAPE_REPRESENTATION' IN 
                TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='profile shape')
               )) = 1)
              )) = 1;   
END_ENTITY;
(*

Formal Propositions:

WR1: The closed_path_profile shall be an aspect of the shape of a feature_component_definition.

WR2: The closed_path_profile shall have exactly one implicit representation defined by a shape_representation_with_parameters.

WR3: The shape_representation_with_parameters that represents the closed_path_profile shall contain one representation_item in its set of items.

WR4: Exactly one representation_item used for the implicit representation of a closed_path_profile shall be of type placement with a name of 'orientation'.

WR5: The closed_path_profile shall have exactly one path_shape_representation.

WR6: The representation_item contained in the path_shape_representation shall have a name of 'profile shape'.

Informal Propositions:

IP1: The closed_path_profile shall be planar and shall lie in the X-Y plane of the reference system if this is present.

5.2.3.1.41 composite_hole

A composite_hole is a type of compound_feature that is the representation of two round_holes for the purpose of creating two commonly used round_hole combinations, the countersunk hole and the counterbore hole. The counterbore hole is the representation of two round_holes with one having a larger diameter than the second. The countersunk hole is the representation of two round_holes, the first having a larger diameter than the second with a linear decrease in diameter until it is the same as the second. This linear decrease shall be represented by a taper. See ARM definition for Compound_hole for more information.

EXPRESS specification:

*)
ENTITY composite_hole
  SUBTYPE OF (compound_feature);
WHERE
  WR1:  SELF\characterized_object.description IN ['counterbore', 'countersunk'];
           
  WR2:  SIZEOF( QUERY( sa <* get_shape_aspects(SELF) |
              ('AUTOMOTIVE_DESIGN.COMPOSITE_SHAPE_ASPECT' IN
                TYPEOF(sa)) AND
              (sa.name = 'compound feature in solid') AND
              (SIZEOF (QUERY (sar <* USEDIN (sa,'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')|
                'AUTOMOTIVE_DESIGN.FEATURE_COMPONENT_RELATIONSHIP' IN
                TYPEOF(sar)
               )) = 2)
              )) = 1;   
  WR3:  SIZEOF( QUERY( sa <* get_shape_aspects(SELF) |
              ('AUTOMOTIVE_DESIGN.COMPOSITE_SHAPE_ASPECT' IN
                TYPEOF(sa)) AND
              (sa.name = 'compound feature in solid') AND
              (SIZEOF (QUERY (sar <* USEDIN (sa,'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')|
                 'AUTOMOTIVE_DESIGN.FEATURE_COMPONENT_RELATIONSHIP' IN
                 TYPEOF(sar)
                )) = 2) AND
              (SIZEOF (get_round_holes_for_composite_hole(bag_to_set( 
                       USEDIN (sa,'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')))
                ) = 2) 
              )) = 1;   
  WR4:  SIZEOF( QUERY( sa <* get_shape_aspects(SELF) |
              ('AUTOMOTIVE_DESIGN.COMPOSITE_SHAPE_ASPECT' IN
                TYPEOF(sa)) AND
              (sa.name = 'compound feature in solid') AND
              (SIZEOF ( QUERY( rh2 <* get_round_holes_for_composite_hole(bag_to_set( 
            USEDIN (sa,'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT'))) |
                (SIZEOF ( QUERY( rh3 <* get_round_holes_for_composite_hole(bag_to_set( 
            USEDIN (sa,'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT'))) |
                  (rh2 :<>: rh3) AND
                  (get_diameter_for_round_hole(rh2) = get_diameter_for_round_hole(rh3))
                  )) = 0)
                )) = 0)
              )) = 1;   
  WR5:  (SELF.description <> 'countersunk') OR
             (SIZEOF( QUERY( sa <* get_shape_aspects(SELF) |
               ('AUTOMOTIVE_DESIGN.COMPOSITE_SHAPE_ASPECT' IN
                 TYPEOF(sa)) AND
               (sa.name = 'compound feature in solid') AND
               (SIZEOF ( QUERY( rh <* get_round_holes_for_composite_hole(bag_to_set( 
          USEDIN (sa,'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT'))) |
                 (SIZEOF( QUERY( sa1 <* get_shape_aspects(rh) |
                   (sa.description = 'change in diameter occurrence') AND
                   (SIZEOF( QUERY( sar <* USEDIN(sa1,'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
                     (sar.description = 'taper usage') AND
                     ('AUTOMOTIVE_DESIGN.TAPER' IN TYPEOF(sar.relating_shape_aspect))
                     )) = 1)
                   )) = 1)
                 )) = 1)
               )) = 1);   
END_ENTITY;
(*

Formal Propositions:

WR1: The description of the composite_hole shall be either 'counterbore' or 'countersunk'.

WR2: The basis shape of the composite_hole shall be refered to by a composite_shape_aspect with a name of 'compound feature in solid'. This shape_aspect shall be the relating_shape_aspect of exactly two instances of feature_component_relationship.

WR3: The feature_component_relationships refering to the basis shape shall refer both either to instances of instanced_feature or to instances of placed_feature as their related_shape_aspect. In case the related_shape_aspects are of type instanced_feature they shall be of type round_hole, else the placed_features shall refer to round_holes as their base features.

WR4: The round_holes that comprise the composite_hole shall not have diameters that are equal in length.

WR5: If the description of the composite_hole is 'countersunk', exactly one round_hole that comprises it shall be a tapered hole.

5.2.3.1.42 compound_feature

A compound_feature is a type of feature_definition that is the representation of several other features and their relationships to one another for the purpose of creating unique user defined features. See ARM definitions for Compound_feature_in_panel and for Compound_feature_in_solid for more information.

EXPRESS specification:

*)
ENTITY compound_feature
  SUBTYPE OF (feature_definition);
WHERE
  WR1:  SIZEOF( QUERY( sa <* get_shape_aspects(SELF) |
              (sa.name IN ['compound feature in solid','compound feature in panel']) AND
              ('AUTOMOTIVE_DESIGN.COMPOSITE_SHAPE_ASPECT' IN
                TYPEOF(sa)) 
              )) = 1;   
  WR2:  SIZEOF( QUERY( sa <* get_shape_aspects(SELF) |
              ('AUTOMOTIVE_DESIGN.COMPOSITE_SHAPE_ASPECT' IN
                TYPEOF(sa)) AND
              (SIZEOF (QUERY (sar <* USEDIN (sa,'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')|
                NOT('AUTOMOTIVE_DESIGN.FEATURE_COMPONENT_RELATIONSHIP' IN
                    TYPEOF(sar))
                )) > 0)
              )) = 0;   
  WR3:  SIZEOF( QUERY( sa <* get_shape_aspects(SELF) |
              ('AUTOMOTIVE_DESIGN.COMPOSITE_SHAPE_ASPECT' IN
                TYPEOF(sa)) AND
              (SIZEOF (QUERY (sar <* USEDIN (sa,'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')|
                NOT(SIZEOF(['AUTOMOTIVE_DESIGN.INSTANCED_FEATURE',
   'AUTOMOTIVE_DESIGN.PLACED_FEATURE',
   'AUTOMOTIVE_DESIGN.APPLIED_AREA',
   'AUTOMOTIVE_DESIGN.TRANSITION_FEATURE']
   *TYPEOF(sar.related_shape_aspect)
                    ) = 1)
               )) > 0)
              )) = 0;   
  WR4:  SIZEOF( QUERY( sa <* get_shape_aspects(SELF) |
              ('AUTOMOTIVE_DESIGN.COMPOSITE_SHAPE_ASPECT' IN
                TYPEOF(sa)) AND
              (SIZEOF (QUERY (sar <* USEDIN (sa,'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')|
                ('AUTOMOTIVE_DESIGN.PLACED_FEATURE' IN TYPEOF(sar.related_shape_aspect)) AND
                (SIZEOF( QUERY( pdr <* get_property_definition_representations(sar.related_shape_aspect.of_shape.definition) |
                  ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                    TYPEOF(pdr.used_representation)) AND
                  (SIZEOF( QUERY( i <* pdr.used_representation.items |
                    (i.name='element placement') AND
                    ('AUTOMOTIVE_DESIGN.PLACEMENT' IN TYPEOF(i))
                   )) <> 1)
                 )) > 0)
               )) > 0)
              )) = 0;   
  WR5:  SIZEOF( QUERY( sa <* get_shape_aspects(SELF) |
              (sa.name = 'compound feature in solid') AND
              (SIZEOF (QUERY (sar <* USEDIN (sa,'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')|
                (SIZEOF(['AUTOMOTIVE_DESIGN.TRANSITION_FEATURE',
   'AUTOMOTIVE_DESIGN.BOSS',
   'AUTOMOTIVE_DESIGN.APPLIED_AREA']
   *TYPEOF(sar.related_shape_aspect)) +
                 SIZEOF(['AUTOMOTIVE_DESIGN.SLOT',
'AUTOMOTIVE_DESIGN.POCKET',
'AUTOMOTIVE_DESIGN.ROUND_HOLE',
'AUTOMOTIVE_DESIGN.RIB',
'AUTOMOTIVE_DESIGN.COMPOUND_FEATURE']
*TYPEOF(sar.related_shape_aspect.of_shape.definition)) = 0 ) 
               )) > 0)
              )) = 0;   
  WR6:  SIZEOF( QUERY( sa <* get_shape_aspects(SELF) |
              (sa.name = 'compound feature in panel') AND
              (SIZEOF (QUERY (sar <* USEDIN (sa,'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')|
                (SIZEOF(['AUTOMOTIVE_DESIGN.TRANSITION_FEATURE']
   *TYPEOF(sar.related_shape_aspect)) +
                 SIZEOF(['AUTOMOTIVE_DESIGN.BEAD',
'AUTOMOTIVE_DESIGN.HOLE_IN_PANEL',
'AUTOMOTIVE_DESIGN.FEATURE_IN_PANEL',
'AUTOMOTIVE_DESIGN.JOGGLE',
'AUTOMOTIVE_DESIGN.LOCATOR',
'AUTOMOTIVE_DESIGN.COMPOUND_FEATURE']
*TYPEOF(sar.related_shape_aspect.of_shape.definition)) = 0 ) 
               )) > 0)
              )) = 0;   
  WR7:  SIZEOF( QUERY( sa <* get_shape_aspects(SELF) |
              (sa.name = 'compound feature in panel') AND
              (SIZEOF (QUERY (sar <* USEDIN (sa,'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')|
                ('AUTOMOTIVE_DESIGN.COMPOUND_FEATURE' IN 
                  TYPEOF(sar.related_shape_aspect.of_shape.definition)) AND
                (sar.related_shape_aspect.name = 'compound feature in solid')
               )) > 0) )) + 
             SIZEOF( QUERY( sa <* get_shape_aspects(SELF) |
              (sa.name = 'compound feature in solid') AND
              (SIZEOF (QUERY (sar <* USEDIN (sa,'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')|
                ('AUTOMOTIVE_DESIGN.COMPOUND_FEATURE' IN 
                  TYPEOF(sar.related_shape_aspect.of_shape.definition)) AND
                (sar.related_shape_aspect.name = 'compound feature in panel')
               )) > 0) ))
             = 0;   
END_ENTITY;
(*

Formal Propositions:

WR1: Each instance of compound_feature shall have a basis shape that has exactly one shape_aspect identified on it that is of type composite_shape_aspect. The composite_shape_aspect shall have a name of either 'compound feature in solid' or 'compound feature in panel'.

WR2: The shape_aspect_relationships that are used to relate the single features with the composite_shape_aspect shall be of type feature_component_relationship.

WR3: The composite_shape_aspect defining a compound_feature shall be the relating_shape_aspect only in shape_aspect_relationships with a related_shape_aspect that is of type instanced_feature, placed_feature, applied_area, or transition_feature.

WR4: Each placed_feature that is specified by the component_relationships of a composite_shape_aspect of a compound_feature shall have a representation_item of type placement with a name of 'element placement' in its shape_representation_with_parameters.

WR5: If the compound_feature is a solid feature, its constituents shall only be of type transition_feature, slot, pocket, boss, round_hole, rib, applied_area, or another compound_feature.

WR6: If the compound_feature is a panel feature, its constituents shall only be of type transition_feature, bead, hole_in_panel, feature_in_panel, joggle, locator, or another compound_feature.

WR7: The compound_feature shall only have constituent compound_features of the same type (i.e. solid feature or panel feature).

Associated global rule:

The following global rule defined in this part of ISO 10303 applies to the compound_feature entity:

5.2.3.1.43 compound_shape_representation

A compound_shape_representation is a type of shape_representation that represents the shape or a portion of the shape of a product using elements of different dimensionality such as wireframes or surface models that are topologically connected. The topology of a compound_shape_representation may be non-manifold. See ARM definition for Compound_model for more information.

EXPRESS specification:

*)
ENTITY compound_shape_representation
  SUBTYPE OF (shape_representation);
WHERE
  WR1:  ('AUTOMOTIVE_DESIGN.GEOMETRIC_REPRESENTATION_CONTEXT' IN
         TYPEOF(SELF.context_of_items)) AND
        (SELF.context_of_items\geometric_representation_context.
              coordinate_space_dimension = 3);
        
              
  WR2:  SIZEOF( QUERY( cbsr_i <* SELF.items |
                SIZEOF( ['AUTOMOTIVE_DESIGN.EDGE_BASED_WIREFRAME_MODEL',
'AUTOMOTIVE_DESIGN.FACE_BASED_SURFACE_MODEL',
'AUTOMOTIVE_DESIGN.MAPPED_ITEM',
'AUTOMOTIVE_DESIGN.AXIS2_PLACEMENT_3D'] * 
                        TYPEOF(cbsr_i)
                ) <> 1
        )) = 0;
              
  WR3:  SIZEOF( QUERY( cbsr_i <* SELF.items |
                SIZEOF( ['AUTOMOTIVE_DESIGN.EDGE_BASED_WIREFRAME_MODEL',
'AUTOMOTIVE_DESIGN.FACE_BASED_SURFACE_MODEL',
'AUTOMOTIVE_DESIGN.MAPPED_ITEM'] *
                        TYPEOF(cbsr_i)
                ) = 1
        )) > 0;
              
  WR4:  SIZEOF( QUERY( cbsr_i <* SELF.items |
           ('AUTOMOTIVE_DESIGN.MAPPED_ITEM' IN TYPEOF(cbsr_i)) AND
           (SIZEOF(['AUTOMOTIVE_DESIGN.COMPOUND_SHAPE_REPRESENTATION',
            'AUTOMOTIVE_DESIGN.EDGE_BASED_WIREFRAME_SHAPE_REPRESENTATION',
            'AUTOMOTIVE_DESIGN.NON_MANIFOLD_SURFACE_SHAPE_REPRESENTATION'] *
                     TYPEOF(cbsr_i\mapped_item.mapping_source)
              ) <> 1 )
        )) = 0;
              
END_ENTITY;
(*

Formal Propositions:

WR1: The compound_shape_representation shall have a coordinate_space_dimension equal to three.

WR2: The items in the compound_shape_representation shall be of type edge_based_wireframe_model, face_based_surface_model, mapped_item or axis2_placement_3d.

WR3: The items of a compound_shape_representation shall include at least one mapped_item or one edge_based_wireframe_model or one face_based_surface_model.

WR4: If there is a mapped_item in a compound_shape_representation, the source of the mapped_item shall be a compound_shape_representation, a edge_based_wireframe_shape_representation, or a non_manifold_surface_shape_representation.

Informal Propositions:

IP1: All elements in a compound_shape_representation shall be topologically connected.

5.2.3.1.44 configured_effectivity_assignment

A configured_effectivity_assignment is a type of effectivity_assignment that defines a valid usage of a configured_effectivity_item in the context of a certain product_class. See Configuration for more information.

EXPRESS specification:

*)
ENTITY configured_effectivity_assignment
  SUBTYPE OF (effectivity_assignment);
  items : SET [1:?] OF configured_effectivity_item;
WHERE
  WR1:  (SIZEOF(['AUTOMOTIVE_DESIGN.EFFECTIVITY'] *
                     TYPEOF(SELF.assigned_effectivity)
               ) = 1) AND
             (SELF.assigned_effectivity.id = 'configuration validity');   
  WR2:  SIZEOF(SELF.items) = 1;   
  WR3:  SIZEOF( QUERY( i <* SELF.items |
               NOT ('AUTOMOTIVE_DESIGN.PRODUCT_DEFINITION' IN TYPEOF(i)) OR
               NOT (i\product_definition.frame_of_reference.name IN
                   ['conceptual definition','part occurrence',
                    'functional definition','alternative definition'])
              )) = 0;   
  WR4:  SELF.role.name IN ['design','usage'];   
  WR5:  (SELF.role.name <> 'design') OR
             (SIZEOF( QUERY( i <* SELF.items |
               ('AUTOMOTIVE_DESIGN.PRODUCT_DEFINITION' IN TYPEOF(i)) AND
               (i\product_definition.frame_of_reference.name = 'part occurrence')
              )) = 0);   
  WR6:  (SELF.role.name <> 'usage') OR
             (SIZEOF( QUERY( i <* SELF.items |
               ('AUTOMOTIVE_DESIGN.PRODUCT_DEFINITION' IN TYPEOF(i)) AND
               (i\product_definition.frame_of_reference.name = 'conceptual definition')
              )) = 0);   
  WR7:  SELF.role.description IN ['exception','inherited','local'];   
  WR8:  SIZEOF( QUERY( x <* USEDIN(SELF,'AUTOMOTIVE_DESIGN.' +
                     'EFFECTIVITY_CONTEXT_ASSIGNMENT.ASSIGNED_EFFECTIVITY_ASSIGNMENT') |
               'AUTOMOTIVE_DESIGN.CONFIGURED_EFFECTIVITY_CONTEXT_ASSIGNMENT' IN
               TYPEOF(x)
              )) = 1;   
END_ENTITY;
(*

Attribute definitions:

items: the set of items to which the configuration information is assigned.

Formal Propositions:

WR1: The configured_effectivity_assignment shall have an assigned_effectivity which is not of an effectivity subtype and which has an id of 'configuration validity'.

WR2: The configured_effectivity_assignment shall have exactly one item in its set of items.

WR3: The configured_effectivity_assignment shall only have product_definitions in its set of items which reference as frame_of_reference a product_definition_context with a name of 'conceptual definition', 'part occurrence', 'functional definition', or 'alternative definition'.

WR4: The configured_effectivity_assignment shall have as role an object_role with a name of 'design' or 'usage'.

WR5: If the configured_effectivity_assignment has as role an object_role with a name of 'design', it may not have product_definitions in its set of items which reference as frame_of_reference a product_definition_context with a name of 'part occurrence'.

WR6: If the configured_effectivity_assignment has as role an object_role with a name of 'usage', it may not have product_definitions in its set of items which reference as frame_of_reference a product_definition_context with a name of 'conceptual definition', or 'functional definition'.

WR7: The configured_effectivity_assignment shall have as role an object_role with a description of 'exception', 'inherited', or 'local'.

WR8: The configured_effectivity_assignment shall be referenced as assigned_effectivity_assignment by exactly one configured_effectivity_context_assignment.

Associated global rule:

The following global rule defined in this part of ISO 10303 applies to the configured_effectivity_assignment entity:

5.2.3.1.45 configured_effectivity_context_assignment

A configured_effectivity_context_assignment is a type of effectivity_context_assignment that specifies the characteristic or combination of characteristics for which the configured_effectivity_context_items in the set of items of the assigned_effectivity_assignment provide a solution.

EXPRESS specification:

*)
ENTITY configured_effectivity_context_assignment
  SUBTYPE OF (effectivity_context_assignment);
  items : SET [1:?] OF configured_effectivity_context_item;
WHERE
  WR1:  'AUTOMOTIVE_DESIGN.CONFIGURED_EFFECTIVITY_ASSIGNMENT' IN
             TYPEOF(SELF.assigned_effectivity_assignment);
           
  WR2:  SIZEOF(SELF.items) = 1;   
END_ENTITY;
(*

Attribute definitions:

items: the set of items that specify the characteristic or combination of characteristics for which the configured_effectivity_items in the set of items of the assigned_effectivity_assignment provide a solution.

Formal Propositions:

WR1: The configured_effectivity_context_assignment shall reference as assigned_effectivity_assignment a configured_effectivity_assignment.

WR2: The configured_effectivity_context_assignment shall have exactly one item in its set of items.

5.2.3.1.46 constructive_geometry_representation

A constructive_geometry_representation is a type of representation that is a collection of non-shape geometry that is used to support the definition of the geometry that is representing the shape of the part. See ARM definition for Constructive_geometry for more information.

EXPRESS specification:

*)
ENTITY constructive_geometry_representation
  SUBTYPE OF (representation);
WHERE
  WR1:  ('AUTOMOTIVE_DESIGN.GEOMETRIC_REPRESENTATION_CONTEXT' IN
         TYPEOF(SELF.context_of_items)) AND
        ({2 <= SELF.context_of_items\geometric_representation_context.
        coordinate_space_dimension <= 3});   
           
  WR2:  SIZEOF( QUERY( cgr_i <* SELF.items | 
                SIZEOF(['AUTOMOTIVE_DESIGN.PLACEMENT',
                        'AUTOMOTIVE_DESIGN.CURVE',
                        'AUTOMOTIVE_DESIGN.EDGE',
                        'AUTOMOTIVE_DESIGN.FACE',
                        'AUTOMOTIVE_DESIGN.POINT',
                        'AUTOMOTIVE_DESIGN.SURFACE',
        	          'AUTOMOTIVE_DESIGN.FACE_SURFACE',
                        'AUTOMOTIVE_DESIGN.VERTEX_POINT'] * TYPEOF(cgr_i)) <> 1
              )) = 0;
           
           
  WR3:  SIZEOF( USEDIN( SELF, 'AUTOMOTIVE_DESIGN.' +
                     'REPRESENTATION_RELATIONSHIP.REP_2') 
              ) > 0;   
           
  WR4:  SIZEOF( USEDIN( SELF, 'AUTOMOTIVE_DESIGN.' +
                     'REPRESENTATION_MAP.MAPPED_REPRESENTATION')
              ) = 0;   
           
END_ENTITY;
(*

Formal Propositions:

WR1: The constructive_geometry_representation shall have a geometric_representation_context as context_of_items. This geometric_representation_context shall have a coordinate_space_dimension of value '2' or '3'.

WR2: The items in the constructive_geometry_representation shall be of type placement, curve, edge, face, point, surface, face_surface or vertex_point.

WR3: The constructive_geometry_representation shall play the role of rep_2 for at least one constructive_geometry_representation_relationship.

WR4: The constructive_geometry_representation shall not play the role of mapped_representation for a representation_map.

5.2.3.1.47 constructive_geometry_representation_relationship

A constructive_geometry_representation_relationship is a type of representation_relationship that associates the geometry representing the shape of a part with the constructive geometry which was used for its definition or a constructive geometry with another constructive geometry which was used for its definition.

EXPRESS specification:

*)
ENTITY constructive_geometry_representation_relationship
  SUBTYPE OF (representation_relationship);
WHERE
  WR1:  (SELF.rep_1.context_of_items :=: SELF.rep_2.context_of_items) AND
             ('AUTOMOTIVE_DESIGN.GEOMETRIC_REPRESENTATION_CONTEXT' IN
              TYPEOF(SELF.rep_1.context_of_items));
           
  WR2:  'AUTOMOTIVE_DESIGN.CONSTRUCTIVE_GEOMETRY_REPRESENTATION' IN
         TYPEOF(SELF.rep_2);   
           
  WR3:  SIZEOF(['AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION',
              'AUTOMOTIVE_DESIGN.CONSTRUCTIVE_GEOMETRY_REPRESENTATION'] *
               TYPEOF(SELF.rep_1)) = 1;
           
           
  WR4:  NOT('AUTOMOTIVE_DESIGN.' +
                 'REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION' IN
            TYPEOF(SELF));   
           
END_ENTITY;
(*

Formal Propositions:

WR1: Both representations playing the roles of rep_1 and rep_2 of the constructive_geometry_representation_relationship shall share the same geometric_representation_context.

WR2: The representation playing the role of rep_2 of the constructive_geometry_representation_relationship shall be of type constructive_geometry_representation.

WR3: The representation playing the role of rep_1 of the constructive_geometry_representation_relationship shall be of type shape_representation or constructive_geometry_representation.

WR4: The constructive_geometry_representation_relationship shall not be of type representation_relationship_with_transformation.

5.2.3.1.48 contact_ratio_representation

A contact_ratio_representation is a type of representation that represents the ratio of contact between an object and a measuring gauge. For more information see ARM definition for Contact_ratio.

EXPRESS specification:

*)
ENTITY contact_ratio_representation
  SUBTYPE OF (representation);
WHERE
  WR1:  (SIZEOF(SELF.items) = 1) AND
             (SIZEOF( QUERY( i <* SELF.items |
               (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
                        'AUTOMOTIVE_DESIGN.VALUE_RANGE'] * TYPEOF(i) 
                 ) = 1) AND
               (i.name = 'ratio value')
               )) = 1);   
  WR2:  (SIZEOF( QUERY( pdr <* USEDIN(SELF,'AUTOMOTIVE_DESIGN.' +
                      'PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION') |
               pdr.name = 'contact ratio reference'
               )) = 1) AND
             (SIZEOF( QUERY( pdr <* USEDIN(SELF,'AUTOMOTIVE_DESIGN.' +
                      'PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION') |
              (pdr.name = 'contact ratio reference') AND
              ('AUTOMOTIVE_DESIGN.PHYSICALLY_MODELLED_PRODUCT_DEFINITION' IN
               TYPEOF(pdr.definition.definition))
              )) = 1);   
  WR3:  (SIZEOF( USEDIN(SELF,'AUTOMOTIVE_DESIGN.' +
                      'PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION')
               ) = 1) AND
             (SIZEOF( QUERY( pdr <* USEDIN(SELF,'AUTOMOTIVE_DESIGN.' +
                      'PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION') |
               SIZEOF( QUERY( gpa <* USEDIN(pdr.definition,'AUTOMOTIVE_DESIGN.' +
                       'GENERAL_PROPERTY_ASSOCIATION.DERIVED_DEFINITION') |
                ('AUTOMOTIVE_DESIGN.GENERAL_PROPERTY' IN TYPEOF( gpa.base_definition)) AND
                (gpa.base_definition.name = 'surface_texture')
                )) = 1
               )) = 1);   
END_ENTITY;
(*

Formal Propositions:

WR1: Each instance of contact_ratio_representation shall contain exactly one representation_item in its set of items. This representation_item shall be of type measure_representation_item or of type value_range and it shall have a name of 'ratio value'.

WR2: Each instance of contact_ratio_representation shall be referenced as the used_representation by exactly one property_definition_representation that has a name of 'contact ratio reference'. This property_definition_representation shall relate the representation with a physically_modelled_product_definition.

WR3: Each instance of contact_ratio_representation shall be referenced by exactly one property_definition_representation. This property_definition_representation shall relate the representation with a property_definition that is the derived_definition of a general_property_association that refers as base_definition to a general_property with a name of 'surface_texture'.

5.2.3.1.49 default_tolerance_table

A default_tolerance_table is a type of representation that specifies information about general tolerances. See ARM definition for General_tolerance_table for more information.

EXPRESS specification:

*)
ENTITY default_tolerance_table
  SUBTYPE OF (representation);
WHERE
  WR1:  SIZEOF( QUERY( i <* SELF.items |
              NOT('AUTOMOTIVE_DESIGN.DEFAULT_TOLERANCE_TABLE_CELL' IN TYPEOF(i))
              )) = 0;
  WR2:  (SIZEOF( QUERY( rr <* USEDIN(SELF,'AUTOMOTIVE_DESIGN.' +
                      'REPRESENTATION_RELATIONSHIP.REP_1') |
               rr.name <> 'general tolerance definition'
               )) = 0) AND
             (SIZEOF( QUERY( rr <* USEDIN(SELF,'AUTOMOTIVE_DESIGN.' +
     'REPRESENTATION_RELATIONSHIP.REP_1') |
               (rr.name = 'general tolerance definition') AND
               (rr.rep_2.name <> 'default tolerances')
               )) = 0) AND
             (SIZEOF( USEDIN(SELF,'AUTOMOTIVE_DESIGN.' +
                      'REPRESENTATION_RELATIONSHIP.REP_2')
               ) = 0);
END_ENTITY;
(*

Formal Propositions:

WR1: An instance of default_tolerance_table shall contain only representation_items of type default_tolerance_table_cell in its set or items.

WR2: An instance of default_tolerance_table shall not be referenced by any representation_relationship except as rep_1 by zero or more representation_relationships with a name of 'general tolerance definition'. If such representation_relationships exist, they shall reference as rep_2 representations with a name of 'default tolerances'.

5.2.3.1.50 default_tolerance_table_cell

A default_tolerance_table_cell is a type of compound_representation_item that specifies one cell entry in a default_tolerance_table. See ARM definition for Tolerance_table_cell for more information.

EXPRESS specification:

*)
ENTITY default_tolerance_table_cell
  SUBTYPE OF (compound_representation_item);
WHERE
  WR1:  SIZEOF( QUERY( x <* USEDIN(SELF,'AUTOMOTIVE_DESIGN.' +
   'REPRESENTATION.ITEMS') |
   'AUTOMOTIVE_DESIGN.DEFAULT_TOLERANCE_TABLE' IN
   TYPEOF(x)))=1;   
  WR2:  default_tolerance_table_cell_wr2(SELF\
        compound_representation_item.item_element);   
  WR3:  default_tolerance_table_cell_wr3(SELF\
        compound_representation_item.item_element);   
  WR4:  default_tolerance_table_cell_wr4(SELF\
        compound_representation_item.item_element);
           
  WR5:  default_tolerance_table_cell_wr5(SELF\
        compound_representation_item.item_element);   
END_ENTITY;
(*

Formal Propositions:

WR1: A default_tolerance_table_cell shall be in the set of items of exactly one default_tolerance_table.

WR2: Each instance of default_tolerance_table_cell shall refer to at most five representation_items as item_element.

WR3: Either exactly one representation_item in the set of item_elements shall be a measure_representation_item with the name of 'significant number of digits' or there shall be two representation_items of type measure_representation_item where one of them has the name of 'lower limit' and the other one has the name of 'upper limit'.

WR4: Either exactly one representation_item in the set of item_elements shall be a measure_representation_item with the name of 'plus minus tolerance value' or there shall be two representation_items of type measure_representation_item where one of them has the name of 'lower tolerance value' and the other one has the name of 'upper tolerance value'.

WR5: At most one representation_item in the set of item_elements shall be of type descriptive_representation_item. If present, this descriptive_representation_item shall have a name of 'cell description'.

5.2.3.1.51 derived_unit_variable

A derived_unit_variable is a type of derived_unit and variable_semantics that represents the unit in an explicitly defined mathematical function.

EXPRESS specification:

*)
ENTITY derived_unit_variable
  SUBTYPE OF (derived_unit, variable_semantics);
INVERSE
associated_variable_environment: environment FOR semantics;
END_ENTITY;
(*

Attribute definitions:

associated_variable_environment: the environment that specifies the representation for the derived unit.

5.2.3.1.52 directed_angle

A directed_angle is a type of shape_aspect that specifies an angle value and the element from which the angle is measured. See ARM definition for Angle_specification for more information.

EXPRESS specification:

*)
ENTITY directed_angle
  SUBTYPE OF (shape_aspect);
WHERE
  WR1:  'AUTOMOTIVE_DESIGN.FEATURE_COMPONENT_DEFINITION' IN
             TYPEOF(SELF.of_shape.definition);   
  WR2:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) 
              )) = 1;   
  WR3:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) AND
               (SIZEOF(pdr.used_representation.items) = 1)
              )) = 1;   
  WR4:  SELF.description IN ['punch direction','profile normal','surface normal'];   
  WR5:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='angle') AND
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.PLANE_ANGLE_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2)
               )) = 1)
              )) = 1;   
END_ENTITY;
(*

Formal Propositions:

WR1: The directed_angle shall be an aspect of the shape of a feature_component_definition.

WR2: The directed_angle shall have exactly one implicit representation defined by a shape_representation_with_parameters.

WR3: The shape_representation_with_parameters that represents the shape of the directed_angle shall contain exactly one representation_item in its set of items.

WR4: The description of the directed_angle shall be either 'punch direction', 'profile normal', or 'surface normal'.

WR5: The implicit representation of the directed_angle shall have exactly one representation_item in its set of items. This representation_item shall be of type measure_representation_item and plane_angle_measure_with_unit and shall have a name of 'angle'.

5.2.3.1.53 directed_dimensional_location

A directed_dimensional_location is a type of dimensional_location that specifies that the direction of the location dimension is of interest, i.e., the dimension is specified from the relating_shape_aspect to the related_shape_aspect.

EXPRESS specification:

*)
ENTITY directed_dimensional_location
  SUBTYPE OF (dimensional_location);
END_ENTITY;
(*

5.2.3.1.54 direction_shape_representation

A direction_shape_representation is a type of shape_representation that represents a direction vector in two or three dimensional space.

EXPRESS specification:

*)
ENTITY direction_shape_representation
  SUBTYPE OF (shape_representation);
WHERE
  WR1:  SIZEOF(SELF.items) = 1;   
  WR2:  SIZEOF( QUERY( i <* SELF.items |
         'AUTOMOTIVE_DESIGN.DIRECTION' IN TYPEOF(i)
              )) = 1;   
END_ENTITY;
(*

Formal Propositions:

WR1: The direction_shape_representation shall have exactly one representation_item in its set of items.

WR2: The geometric element that is used to represent the direction_shape_representation shall be a direction.

5.2.3.1.55 document_file

A document_file is of type document and of type characterized_object and characterizes files with properties, e.g. file size, creating system, etc.

EXPRESS specification:

*)
ENTITY document_file
  SUBTYPE OF (document,characterized_object);
WHERE
  WR1:  SELF\characterized_object.name = '';    
  WR2:  NOT EXISTS(SELF\characterized_object.description);    
  WR3:  SIZEOF( QUERY( drt <* SELF\document.representation_types |
               drt.name IN ['digital','physical']
              )) = 1;
           
END_ENTITY;
(*

Formal Propositions:

WR1: The name of the characterized_object shall not be used, use name of document.

WR2: The description of the characterized_object shall not be used, use description of document.

WR3: The document shall have exactly one document_representation_type with a name of either 'digital' or 'physical'.

Associated global rules:

The following global rules defined in this part of ISO 10303 apply to the document_file entity:

5.2.3.1.56 document_product_equivalence

A document_product_equivalence is a type of document_product_association. It specifies the equivalence of a product, a product_definition, or product_definition_formation instance with a document instance.

EXPRESS specification:

*)
ENTITY document_product_equivalence
  SUBTYPE OF (document_product_association);
WHERE
  WR1:  SELF.name = 'equivalence';      
  WR2:  NOT('AUTOMOTIVE_DESIGN.PRODUCT' IN TYPEOF(SELF.related_product)) OR
        ((SELF.relating_document.kind.
          product_data_type = 'configuration controlled document') AND
         (SIZEOF( QUERY(
           prpc <* USEDIN(SELF.related_product,'AUTOMOTIVE_DESIGN.' +
    'PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') |
                  prpc.name = 'document'
                )) = 1));      
  WR3:  NOT('AUTOMOTIVE_DESIGN.PRODUCT_DEFINITION_FORMATION' IN 
         TYPEOF(SELF.related_product)) OR
         ((SELF.relating_document.kind.product_data_type = 
               'configuration controlled document version') AND
         (SIZEOF( QUERY( prpc <* USEDIN(SELF.related_product\
                  product_definition_formation.of_product,
        'AUTOMOTIVE_DESIGN.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') |
         prpc.name = 'document')) = 1));
              
  WR4:  NOT('AUTOMOTIVE_DESIGN.PRODUCT_DEFINITION' IN 
         TYPEOF(SELF.related_product)) OR
         ((SELF.relating_document.kind.product_data_type = 
         'configuration controlled document definition') AND
         (SIZEOF( QUERY( prpc <* USEDIN(SELF.related_product\
product_definition.formation.of_product,
         'AUTOMOTIVE_DESIGN.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') |
          prpc.name = 'document'
          )) = 1));
              
END_ENTITY;
(*

Formal Propositions:

WR1: The name of the document_product_association shall be 'equivalence'.

WR2: If the related_product is a product then the relating_document shall have a document_type with product_data_type 'configuration controlled document' and there is exactly one product_related_product_category with a name of 'document' for the product.

WR3: If the related_product is a product_definition_formation then the relating_document shall have a document_type with product_data_type 'configuration controlled document version' and there is exactly one product_related_product_category with a name of 'document' for the product of the related product_definition_formation.

WR4: If the related_product is a product_definition then the relating_document shall have a document_type with product_data_type 'configuration controlled document definition' and there is exactly one product_related_product_category with a name of 'document' for the product of the related product_definition.

5.2.3.1.57 draughting_model_item_association

A draughting_model_item_association is a type of item_identified_representation_usage that associates an annotation_occurrence or a draughting_callout with a shape_aspect in the context of a draughting_model

EXPRESS specification:

*)
ENTITY draughting_model_item_association
  SUBTYPE OF (item_identified_representation_usage);
  SELF\item_identified_representation_usage.definition : shape_aspect;
  SELF\item_identified_representation_usage.used_representation : draughting_model;
  SELF\item_identified_representation_usage.identified_item : draughting_model_item_association_select;
WHERE
  WR1: (NOT('AIC_DRAUGHTING_ELEMENTS.'+'DATUM_FEATURE_CALLOUT' IN 
           TYPEOF(SELF\item_identified_representation_usage.identified_item)) OR 
           ('SHAPE_ASPECT_DEFINITION_SCHEMA.'+'DATUM_FEATURE' IN 
           TYPEOF(SELF\item_identified_representation_usage.definition)));
  WR2: (NOT('AIC_DRAUGHTING_ELEMENTS.'+'DATUM_TARGET_CALLOUT' IN 
           TYPEOF(SELF\item_identified_representation_usage.identified_item)) OR 
           ('SHAPE_ASPECT_DEFINITION_SCHEMA.'+'DATUM_TARGET' IN 
           TYPEOF(SELF\item_identified_representation_usage.definition)));
  WR3: (NOT('AIC_DRAUGHTING_ELEMENTS.'+'ANGULAR_DIMENSION' IN 
           TYPEOF(SELF\item_identified_representation_usage.identified_item)) OR 
           ('SHAPE_DIMENSION_SCHEMA.'+'ANGULAR_SIZE' IN 
           TYPEOF(SELF\item_identified_representation_usage.definition)));
  WR4: ((NOT('AIC_DRAUGHTING_ELEMENTS.'+'CURVE_DIMENSION' IN 
           TYPEOF(SELF\item_identified_representation_usage.identified_item))) OR 
           (('SHAPE_DIMENSION_SCHEMA.'+'DIMENSIONAL_SIZE' IN 
           TYPEOF(SELF\item_identified_representation_usage.definition)) AND 
           (SELF\item_identified_representation_usage.definition.name = 'curve dimension')));
  WR5: ((NOT('AIC_DRAUGHTING_ELEMENTS.'+'DIAMETER_DIMENSION' IN 
           TYPEOF(SELF\item_identified_representation_usage.identified_item))) OR 
           (('SHAPE_DIMENSION_SCHEMA.'+'DIMENSIONAL_SIZE' IN 
           TYPEOF(SELF\item_identified_representation_usage.definition)) AND 
           (SELF\item_identified_representation_usage.definition.name = 'diameter')));
  WR6: ((NOT('AIC_DRAUGHTING_ELEMENTS.'+'LINEAR_DIMENSION' IN 
           TYPEOF(SELF\item_identified_representation_usage.identified_item))) OR 
           (('SHAPE_DIMENSION_SCHEMA.'+'DIMENSIONAL_SIZE' IN 
           TYPEOF(SELF\item_identified_representation_usage.definition)) AND 
           ((SELF\item_identified_representation_usage.definition.name = 'heigth') OR 
           (SELF\item_identified_representation_usage.definition.name = 'length') OR 
           (SELF\item_identified_representation_usage.definition.name = 'width'))));
  WR7: ((NOT('AIC_DRAUGHTING_ELEMENTS.'+'RADIUS_DIMENSION' IN 
           TYPEOF(SELF\item_identified_representation_usage.identified_item))) OR 
           (('SHAPE_DIMENSION_SCHEMA.'+'DIMENSIONAL_SIZE' IN 
           TYPEOF(SELF\item_identified_representation_usage.definition)) AND 
           (SELF\item_identified_representation_usage.definition.name = 'radius')));
  WR8: (NOT('AIC_DRAUGHTING_ELEMENTS.'+'GEOMETRICAL_TOLERANCE_CALLOUT' IN 
           TYPEOF(SELF\item_identified_representation_usage.identified_item)) OR 
           ('SHAPE_TOLERANCE_SCHEMA.'+'GEOMETRIC_TOLERANCE' IN 
           TYPEOF(SELF\item_identified_representation_usage.definition)));
  WR9: (NOT('SHAPE_DIMENSION_SCHEMA.'+'DIMENSIONAL_SIZE' IN 
           TYPEOF(SELF\item_identified_representation_usage.definition)) OR 
           (('DRAUGHTING_DIMENSION_SCHEMA.'+'DIMENSION_CALLOUT' IN 
           TYPEOF(SELF\item_identified_representation_usage.identified_item)) OR 
           ('DRAUGHTING_ELEMENT_SCHEMA.'+'DIMENSION_CURVE_DIRECTED_CALLOUT' IN 
           TYPEOF(SELF\item_identified_representation_usage.identified_item)) OR 
           ('AIC_DRAUGHTING_ELEMENTS.'+'LEADER_DIRECTED_DIMENSION' IN 
           TYPEOF(SELF\item_identified_representation_usage.identified_item)) OR 
           ('AIC_DRAUGHTING_ELEMENTS.'+'ORDINATE_DIMENSION' IN 
           TYPEOF(SELF\item_identified_representation_usage.identified_item)) OR 
           ('AIC_DRAUGHTING_ELEMENTS.'+'STRUCTURED_DIMENSION_CALLOUT' IN 
           TYPEOF(SELF\item_identified_representation_usage.identified_item))));
END_ENTITY;
(*

Attribute definitions:

definition: an attribute inherited from the item_identified_represented_usage shall be redeclared as the shape_aspect for the draughting_model_association.

used_representation: an attribute_inherited from the item_identified_represented_usage shall be redeclared as the draughting_model for the draughting_model_item_association.

identified_item: an attribute inherited from the item_identified_represented_usage shall be redeclared as the draughting_model_item_association_select for the draughting_model_item_association.

Formal Propositions:

WR1: If identified_item is of type datum_feature_callout, associated definition must be of type datum_feature.

WR2: If identified_item is of type datum_target_callout, associated definition must be of type datum_target.

WR3: If identified_item is of type angular_dimension, associated definition must be of type angular_size.

WR4: If identified_item is of type curve_dimension, associated definition must be of type dimensional_size and its name must be equal to 'curve dimension'.

WR5: If identified_item is of type diameter_dimension, associated definition must be of type dimensional_size and its name must be equal to 'diameter'.

WR6: If identified_item is of type linear_dimension, associated definition must be of type dimensional_size and its name must be equal to either 'heigth' or 'length' or 'width'.

WR7: If identified_item is of type radius_dimension, associated definition must be of type dimensional_size and its name must be equal to either 'radius'.

WR8: If identified_item is of type geometrical_tolerance_callout, associated definition must be of type geometric_tolerance.

WR9: If associated definition is of type dimensional_size, identified_item must be of type dimension_callout or dimension_curve_directed_callout or leader_directed_dimension or ordinate_dimension or structured_dimension_callout.

5.2.3.1.58 draughting_pre_defined_text_font

The draughting_pre_defined_text_font entity is removed in this revision.

NOTE See entity definition in ISO 10303-46 TC2.

5.2.3.1.59 draughting_specification_reference

A draughting_specification_reference is a type of document_reference that is the designation of an external draughting specification for a drawing revision.

NOTE The definition of this entity is identical to the definition in ISO~10303-505.

EXPRESS specification:

*)
ENTITY draughting_specification_reference
  SUBTYPE OF (document_reference);
  specified_items : SET [1:?] OF specified_item;
WHERE
  WR1:  (SELF.assigned_document.kind.product_data_type =
                   'draughting specification');      
END_ENTITY;
(*

Attribute definitions:

specified_items: The drawing_revisions to which a draughting specification is applied.

Formal Propositions:

WR1: Each document assigned shall be a draughting specification.

5.2.3.1.60 drawing_sheet_layout

A drawing_sheet_layout is a symbol that presents the layout or format for a drawing sheet.

EXPRESS specification:

*)
ENTITY drawing_sheet_layout
  SUBTYPE OF (draughting_symbol_representation);
END_ENTITY;
(*

5.2.3.1.61 edge_round

An edge_round is a type of transition_feature that is the representation of a circular convex transition between two faces. See ARM definition for Edge_round for more information.

EXPRESS specification:

*)
ENTITY edge_round
  SUBTYPE OF (transition_feature);
WHERE
  WR1:  (SELF.description <> 'constant radius') XOR
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation))
              )) = 1);   
  WR2:  (SELF.description <> 'constant radius') OR
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) AND
               {1 <= SIZEOF(pdr.used_representation.items) <= 3}
              )) = 1);   
  WR3:  (SELF.description <> 'constant radius') OR
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) AND
               (SIZEOF( QUERY( i <* pdr.used_representation.items |
                 NOT(i.name IN ['radius','first offset','second offset'])
                )) > 0)
              )) = 0);   
  WR4:  (SELF.description <> 'constant radius') OR
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
              TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='radius') AND
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2)
               )) = 1)
              )) = 1);   
  WR5:  (SELF.description <> 'constant radius') OR
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
              TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='first offset') AND
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2)
               )) <= 1)
              )) = 1);   
  WR6:  (SELF.description <> 'constant radius') OR
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
              TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='second offset') AND
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2)
               )) <= 1)
              )) = 1);   
  WR7:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.FACE_SHAPE_REPRESENTATION' IN 
               TYPEOF(pdr.used_representation)) AND
              (pdr.used_representation.name = 'first face shape')
              )) = 1;   
  WR8:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.FACE_SHAPE_REPRESENTATION' IN 
               TYPEOF(pdr.used_representation)) AND
              (pdr.used_representation.name = 'second face shape')
              )) = 1;   
  WR9:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.FACE_SHAPE_REPRESENTATION' IN 
               TYPEOF(pdr.used_representation)) AND
              (pdr.used_representation.name = 'edge round face')
              )) = 1;   
END_ENTITY;
(*

Formal Propositions:

WR1: An edge_round has an implicit representation of type shape_representation_with_parameters if and only if it has a description of 'constant radius'.

WR2: If the description of the edge_round is 'constant radius', the implicit representation shall contain between one and three representation_items in its set of items.

WR3: If the description of the edge_round is 'constant radius', the implicit representation shall only contain representation_items in its set of items that have a name of either 'radius', 'first offset', or 'second offset'.

WR4: If the description of the edge_round is 'constant radius', exactly one representation_item used for the implicit representation of the edge_round shall be of type measure_representation_item and length_measure_with_unit with a name of 'radius'.

WR5: If the description of the edge_round is 'constant radius', at most one representation_item used for the implicit representation of the edge_round shall be of type measure_representation_item and length_measure_with_unit with a name of 'first offset'.

WR6: If the description of the edge_round is 'constant radius', at most one representation_item used for the implicit representation of the edge_round shall be of type measure_representation_item and length_measure_with_unit with a name of 'second offset'.

WR7: The edge_round shall be defined by exactly one representation of type face_shape_representation with a name of 'first face shape'.

WR8: The edge_round shall be defined by exactly one representation of type face_shape_representation with a name of 'second face shape'.

WR9: The edge_round shall be defined by exactly one representation of type face_shape_representation with a name of 'edge round face'.

5.2.3.1.62 element_delivery

An element_delivery is a type of action that specifies the expected delivery of an activity element defined by an applied_action_assignment. See ARM definition for Element_delivery for more information.

EXPRESS specification:

*)
ENTITY element_delivery
  SUBTYPE OF (action);
WHERE
  WR1:  (SIZEOF( QUERY ( aa <* USEDIN(SELF,'AUTOMOTIVE_DESIGN.ACTION_ASSIGNMENT.ASSIGNED_ACTION')
               | 'AUTOMOTIVE_DESIGN.APPLIED_ACTION_ASSIGNMENT' IN TYPEOF ( aa ) )
               ) = 1)
              AND
             (SIZEOF( QUERY( aaa <* USEDIN(SELF,'AUTOMOTIVE_DESIGN.' +
                      'ACTION_ASSIGNMENT.ASSIGNED_ACTION') |
                ('AUTOMOTIVE_DESIGN.APPLIED_ACTION_ASSIGNMENT' IN TYPEOF ( aaa ) )
                 AND
                (aaa.role.name = 'deliverable element') AND
                (SIZEOF(aaa.items) = 1) AND
                (SIZEOF( QUERY( i <* aaa.items |
                   ('AUTOMOTIVE_DESIGN.APPLIED_ACTION_ASSIGNMENT' IN
                    TYPEOF(i)) AND
                   (SIZEOF(i\applied_action_assignment.items) = 1) AND
                   (SIZEOF( QUERY( i1 <* aaa\applied_action_assignment.items |
                      ('AUTOMOTIVE_DESIGN.CONFIGURATION_ITEM' IN
                       TYPEOF(i1)) OR
                      (('AUTOMOTIVE_DESIGN.PRODUCT_DEFINITION' IN
                        TYPEOF(i1)) AND
                       (i1\product_definition.frame_of_reference.name = 'physical occurrence')) OR
                      (('AUTOMOTIVE_DESIGN.PRODUCT_DEFINITION_FORMATION' IN
                        TYPEOF(i1)) AND
                       (SIZEOF( QUERY( prpc <* USEDIN(i1,'AUTOMOTIVE_DESIGN.' +
       'PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') |
 prpc\product_category.name IN ['part','raw material','tool']
)) = 1))
                     )) = 1)
                  )) = 1)
               )) = 1);   
  WR2:  (SIZEOF( USEDIN( SELF, 'AUTOMOTIVE_DESIGN.' +
        	      'APPLIED_ORGANIZATION_ASSIGNMENT.ITEMS')
               ) = 1) AND
             (SIZEOF( QUERY( aoa <* USEDIN( SELF, 'AUTOMOTIVE_DESIGN.' +
        	      'APPLIED_ORGANIZATION_ASSIGNMENT.ITEMS') |
        	aoa.role.name = 'destination'
               )) = 1 );   
  WR3:  (SIZEOF( USEDIN( SELF, 'AUTOMOTIVE_DESIGN.' +
              	'ACTION_PROPERTY.DEFINITION')) = 1) AND
             (SIZEOF( QUERY( ap <* USEDIN( SELF, 'AUTOMOTIVE_DESIGN.' +
                      'ACTION_PROPERTY.DEFINITION') |
                SIZEOF( USEDIN( ap, 'AUTOMOTIVE_DESIGN.' +
                        'ACTION_PROPERTY_REPRESENTATION.PROPERTY')
                 ) = 1
               )) = 1) AND
              (SIZEOF( QUERY( ap <* USEDIN( SELF, 'AUTOMOTIVE_DESIGN.' +
                       'ACTION_PROPERTY.DEFINITION') |
                 SIZEOF( QUERY( apr <* USEDIN( ap, 'AUTOMOTIVE_DESIGN.' +
                   	 'ACTION_PROPERTY_REPRESENTATION.PROPERTY') |
                   (apr.representation.name = 'delivery quantity') AND
                   (SIZEOF(apr.representation.items) = 1) AND
                   (SIZEOF( QUERY( i <* apr.representation.items |
                      SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
     'AUTOMOTIVE_DESIGN.VALUE_RANGE'] *
     TYPEOF(i)
                       ) = 1
                     )) = 1)
                  )) = 1
                )) = 1);   
  WR4:  SIZEOF( USEDIN(SELF,'AUTOMOTIVE_DESIGN.' +
                     'ACTION_RELATIONSHIP.RELATING_ACTION')) +
             SIZEOF( USEDIN(SELF,'AUTOMOTIVE_DESIGN.' +
                     'ACTION_RELATIONSHIP.RELATED_ACTION')) = 0;   
END_ENTITY;
(*

Formal Propositions:

WR1: The element_delivery shall be referenced as assigned_action by exactly one applied_action_assignment. This applied_action_assignment shall reference as its role an object_role that has a name of 'deliverable element' and shall have exactly one element in its set of items. This element shall be of type applied_action_assignment and shall have exactly one element in its set of items. This element shall be of type configuration_item, or shall be a product_definition which references as frame_of_reference a product_definition_context with a name of 'physical occurrence', or shall be a product_definition_formation which references as of_product a product which is referenced by a product_related_product_category with a name of either 'part', 'raw material', or 'tool'.

WR2: There shall be exactly one instance of applied_organization_assignment that contains the element_delivery in its set of items. This applied_organization_assignment shall reference as its role an organization_role that has a name of 'destination'.

WR3: There shall be exactly one instance of action_property that references the element_delivery as its definition. This action_property shall be referenced as the property by exactly one instance of action_property_representation. This action_property_representation shall reference as its representation a representation that has a name of 'delivery quantity' and that contains exactly one representation_item in its set of items. This representation_item shall be a measure_representation_item, or a value_range.

WR4: The element_delivery shall not be referenced by an action_relationship.

5.2.3.1.63 exclusive_product_concept_feature_category

An exclusive_product_concept_feature_category is a type of product_concept_feature_category in which the contained product_concept_feature instances describe mutually exclusive characteristics of a product. See ARM definition for Specification_category for more information.

EXPRESS specification:

*)
ENTITY exclusive_product_concept_feature_category
  SUBTYPE OF (product_concept_feature_category);
END_ENTITY;
(*

5.2.3.1.64 expression_conversion_based_unit

An expression_conversion_based_unit is a type of context_dependent_unit and variable_semantics that represents the unit in an explicitly defined mathematical function.

EXPRESS specification:

*)
ENTITY expression_conversion_based_unit
  SUBTYPE OF (context_dependent_unit, variable_semantics);
INVERSE
associated_variable_environment: environment FOR semantics;
END_ENTITY;
(*

Attribute definitions:

associated_variable_environment: the environment that specifies the representation for the derived unit.

5.2.3.1.65 externally_defined_class

An externally_defined_class is a type of externally_defined_item and class that represents classification information whose identification and definition is defined externally, i.e., not within this part of ISO 10303.

EXPRESS specification:

*)
ENTITY externally_defined_class
  SUBTYPE OF (class,externally_defined_item);
END_ENTITY;
(*

Associated global rules:

The following global rules defined in this part of ISO 10303 apply to the externally_defined_class entity:

5.2.3.1.66 externally_defined_dimension_definition

An externally_defined_dimension_definition is a type of dimensional_size and externally_defined_item that enables the specification of a kind of dimension that is not defined in this standard.

EXPRESS specification:

*)
ENTITY externally_defined_dimension_definition
  SUBTYPE OF (dimensional_size, externally_defined_item);
WHERE
  WR1: (SELF\externally_defined_item.item_id = 'external size
dimension') AND (SELF\externally_defined_item.source.source_id =
'external size dimension specification');
  WR2: 1 >= SIZEOF(QUERY ( adr <* USEDIN(SELF,
'AUTOMOTIVE_DESIGN.APPLIED_DOCUMENT_REFERENCE.ITEMS')|
(adr.assigned_document.description = 'external size dimension
 specification') ));
END_ENTITY;
(*

Formal Propositions:

WR1: The item_id shall be 'external size dimension' and the source attribute shall reference an external_source with a source_id of 'externally defined dimension specification'.

WR2: The externally_defined_dimension_definition shall be referenced by the items attribute of type applied_document_reference that references through the assigned_document attribute a document with description of 'externally defined dimension specification'.

5.2.3.1.67 externally_defined_feature_definition

An externally_defined_feature_definition is a type of externally_defined_item. It relates the document containing a feature specification to a feature_definition. See ARM definition for Catalogue_thread for more information.

EXPRESS specification:

*)
ENTITY externally_defined_feature_definition
  SUBTYPE OF (feature_definition,externally_defined_item);
WHERE
  WR1:  (SELF\externally_defined_item.item_id = 'external thread') AND
             (SELF\externally_defined_item.source.source_id = 'external feature specification');
  WR2:  (SIZEOF( USEDIN(SELF,'AUTOMOTIVE_DESIGN.APPLIED_CLASSIFICATION_ASSIGNMENT.ITEMS')
               ) = 1) OR
             (SIZEOF( USEDIN(SELF,'AUTOMOTIVE_DESIGN.APPLIED_DOCUMENT_REFERENCE.ITEMS')) + 
              SIZEOF( USEDIN(SELF,'AUTOMOTIVE_DESIGN.APPLIED_DOCUMENT_USAGE_CONSTRAINT_ASSIGNMENT.ITEMS'))
                = 1);
  WR3:  SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) AND
               NOT ({6 <= SIZEOF(pdr.used_representation.items) <= 7})
             )) = 0;
  WR4:  SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
               (SIZEOF( QUERY( i <* pdr.used_representation.items |
                  ('AUTOMOTIVE_DESIGN.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND
                  (i.name = 'thread side') AND
                  (i\descriptive_representation_item.description IN ['internal','external']) 
                 )) = 1)
              )) = 1;      
  WR5:  SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
               (SIZEOF( QUERY( i <* pdr.used_representation.items |
                  (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
  'AUTOMOTIVE_DESIGN.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
                    ) = 2) AND
                  (i.name = 'major diameter') 
                 )) = 1)
              )) = 1;
  WR6:  SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
               (SIZEOF( QUERY( i <* pdr.used_representation.items |
                  (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
  'AUTOMOTIVE_DESIGN.RATIO_MEASURE_WITH_UNIT']*TYPEOF(i)
                    ) = 2) AND
                  (i.name = 'number of threads') 
                 )) = 1)
              )) = 1;
  WR7:  SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
               (SIZEOF( QUERY( i <* pdr.used_representation.items |
                  ('AUTOMOTIVE_DESIGN.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND
                  (i.name = 'fit class') 
                 )) = 1)
              )) = 1;
  WR8:  SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
               (SIZEOF( QUERY( i <* pdr.used_representation.items |
                  ('AUTOMOTIVE_DESIGN.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND
                  (i.name = 'form') 
                 )) = 1)
              )) = 1;
  WR9:  SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
               (SIZEOF( QUERY( i <* pdr.used_representation.items |
                  ('AUTOMOTIVE_DESIGN.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND
                  (i.name = 'hand') AND
                  (i\descriptive_representation_item.description IN ['left hand','right hand'])
                 )) = 1)
              )) = 1;
  WR10: SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
               (SIZEOF( QUERY( i <* pdr.used_representation.items |
                  ('AUTOMOTIVE_DESIGN.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND
                  (i.name = 'qualifier') 
                 )) = 1)
              )) <= 1;
  WR11: SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) AND
               (SIZEOF( QUERY( i <* pdr.used_representation.items |
                  (NOT (i.name IN ['thread side','major diameter','number of threads',
          'fit class','form','hand','qualifier'] ))
                 )) > 0 )
              )) = 0;
END_ENTITY;
(*

Formal Propositions:

WR1: The externally_defined_feature_definition shall have a item_id of 'external thread' and a source of 'external feature specification'.

WR2: The externally_defined_feature_definition shall be referenced in the role of items by an applied_classification_assignment or either an applied_document_reference or an applied_document_usage_constraint_assignment.

WR3: The shape_representation_with_parameters that represents the externally_defined_feature_definition shall contain between six and seven representation_items in its set of items.

WR4: Exactly one representation_item used for the implicit representation of the externally_defined_feature_definition shall be of type descriptive_representation_item with a name of 'thread side' and a description of either 'internal' or 'external'.

WR5: Exactly one representation_item used for the implicit representation of the externally_defined_feature_definition shall be of type measure_representation_item and length_measure_with_unit with a name of 'major diameter'.

WR6: Exactly one representation_item used for the implicit representation of the externally_defined_feature_definition shall be of type measure_representation_item and ratio_measure_with_unit with a name of 'number of threads'.

WR7: Exactly one representation_item used for the implicit representation of the externally_defined_feature_definition shall be of type descriptive_representation_item with a name of 'fit class'.

WR8: Exactly one representation_item used for the implicit representation of the externally_defined_feature_definition shall be of type descriptive_representation_item with a name of 'form'.

WR9: Exactly one representation_item used for the implicit representation of the externally_defined_feature_definition shall be of type descriptive_representation_item with a name of 'hand'. The descriptive_representation_item shall have a description of either 'left hand' or 'right hand'.

WR10: The implicit representation of the externally_defined_feature_definition shall contain at most one representation_item of type descriptive_representation_item that has a name of 'qualifier'.

WR11: The implicit representation of a externally_defined_feature_definition shall contain only representation_items with a name of either 'thread side', 'major diameter', 'number of threads', 'fit class', 'form', 'hand', or 'qualifier'.

5.2.3.1.68 externally_defined_general_property

An externally_defined_general_property is a type of general_property and externally_defined_item that represents general property definition information which is defined externally, i.e., not within this part of ISO 10303.

EXPRESS specification:

*)
ENTITY externally_defined_general_property
  SUBTYPE OF (general_property,externally_defined_item);
END_ENTITY;
(*

Associated global rules:

The following global rules defined in this part of ISO 10303 apply to the externally_defined_general_property entity:

5.2.3.1.69 face_shape_representation

A face_shape_representation is a type of shape_representation that represents a portion of the boundary of a part by a topologically bounded face or shell.

EXPRESS specification:

*)
ENTITY face_shape_representation
  SUBTYPE OF (shape_representation);
WHERE
  WR1:  SIZEOF (SELF.items) = 1;   
  WR2:  SIZEOF( QUERY( i <* SELF.items |
              SIZEOF(['AUTOMOTIVE_DESIGN.FACE',
                      'AUTOMOTIVE_DESIGN.CLOSED_SHELL',
                      'AUTOMOTIVE_DESIGN.OPEN_SHELL']*TYPEOF(i)
               ) = 1
              )) = 1;   
END_ENTITY;
(*

Formal Propositions:

WR1: The face_shape_representation shall have exactly one representation_item in its set of items.

WR2: The item that is used to represent the face_shape_representation shall be a either a face, a closed_shell, or an open_shell.

5.2.3.1.70 feature_component_definition

A feature_component_definition is a type of characterized_object that is used as a constituent of a preconceived form pattern.

EXPRESS specification:

*)
ENTITY feature_component_definition
  SUBTYPE OF (characterized_object);
WHERE
  WR1:  SIZEOF(get_shape_aspects(SELF)) = 1;   
END_ENTITY;
(*

Formal Propositions:

WR1: A feature_component_definition shall be the basis shape for exactly one shape_aspect.

Informal Propositions:

IP1: The feature_component_definitions that serve as definitions for modifications of a circular_pattern or a rectangular_pattern shall be used in at least one definition of a pattern.

NOTE See definition for Circular_offset_pattern, for Circular_omit_pattern, for Rectangular_offset_pattern, and for Rectangular_omit_pattern for further information.

5.2.3.1.71 feature_component_relationship

A feature_component_relationship is a type of shape_aspect_relationship that is used to relate features with implicitly represented components.

EXAMPLE A chamfer may have the implicit chamfer offset amount defined with a feature_component_relationship

.

EXPRESS specification:

.
*)
ENTITY feature_component_relationship
  SUBTYPE OF (shape_aspect_relationship);
WHERE
  WR1:  ('AUTOMOTIVE_DESIGN.TRANSITION_FEATURE' IN
               TYPEOF(SELF.related_shape_aspect)) OR 
             (SIZEOF(['AUTOMOTIVE_DESIGN.FEATURE_DEFINITION',
                      'AUTOMOTIVE_DESIGN.FEATURE_COMPONENT_DEFINITION']
                      *TYPEOF(SELF.related_shape_aspect.of_shape.definition)) = 1);   
END_ENTITY;
(*

Formal Propositions:

WR1: The feature_component_relationship shall reference as related_shape_aspect an aspect of the shape of a transition_feature, a feature_definition or a feature_component_definition.

Associated global rule:

The following global rule defined in this part of ISO 10303 applies to the feature_component_relationship entity:

5.2.3.1.72 feature_definition

A feature_definition is a type of characterized_object that is a preconceived form pattern. See ARM definition for Feature_definition for more information.

EXPRESS specification:

*)
ENTITY feature_definition
  SUBTYPE OF (characterized_object);
WHERE
  WR1:  SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
              'AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
              TYPEOF(pdr.used_representation)
             )) <= 1;   
  WR2:  (SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
               'AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)
              )) = 0) OR
             (SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                 TYPEOF(pdr.used_representation)) AND
               (SIZEOF( QUERY( i <* pdr.used_representation.items |
                 (i.name='orientation') AND
                 ('AUTOMOTIVE_DESIGN.PLACEMENT' IN TYPEOF(i))
                )) <= 1)
              )) = 1);    
  WR3:  NOT((SIZEOF(['AUTOMOTIVE_DESIGN.BARRING_HOLE',
 'AUTOMOTIVE_DESIGN.BEAD',
 'AUTOMOTIVE_DESIGN.HOLE_IN_PANEL',
 'AUTOMOTIVE_DESIGN.FEATURE_IN_PANEL',
 'AUTOMOTIVE_DESIGN.JOGGLE',
 'AUTOMOTIVE_DESIGN.LOCATOR']
 *TYPEOF(SELF)
                  ) = 1) OR
                 ('AUTOMOTIVE_DESIGN.COMPOUND_FEATURE' IN TYPEOF(SELF)) AND
                 (SIZEOF( QUERY( sa <* get_shape_aspects(SELF) |
                   (sa.name = 'compound feature in panel')
                  )) = 1)) OR
             ((SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
                'AUTOMOTIVE_DESIGN.DIRECTION_SHAPE_REPRESENTATION' IN 
                 TYPEOF(pdr.used_representation)
               )) <= 1) AND
              ((SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
                 'AUTOMOTIVE_DESIGN.DIRECTION_SHAPE_REPRESENTATION' IN 
                 TYPEOF(pdr.used_representation)
                )) = 0) OR
               (SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
                 ('AUTOMOTIVE_DESIGN.DIRECTION_SHAPE_REPRESENTATION' IN 
                   TYPEOF(pdr.used_representation)) AND
                 (pdr.used_representation.name = 'punch direction')
                )) = 1)));   
  WR4:  (SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
               'AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)
              )) = 0) OR
             (SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                 TYPEOF(pdr.used_representation)) AND
               ('AUTOMOTIVE_DESIGN.GEOMETRIC_REPRESENTATION_CONTEXT' IN
                 TYPEOF(pdr.used_representation.context_of_items)) AND
               (pdr.used_representation.context_of_items\geometric_representation_context.coordinate_space_dimension = 3)
              )) = 1);   
  WR5:  NOT((SIZEOF(['AUTOMOTIVE_DESIGN.BOSS',
 'AUTOMOTIVE_DESIGN.RIB',
 'AUTOMOTIVE_DESIGN.SLOT',
 'AUTOMOTIVE_DESIGN.ROUND_HOLE',
 'AUTOMOTIVE_DESIGN.POCKET']
 *TYPEOF(SELF)
                  ) = 1) OR
                 ('AUTOMOTIVE_DESIGN.COMPOUND_FEATURE' IN TYPEOF(SELF)) AND
                 (SIZEOF( QUERY( sa <* get_shape_aspects(SELF) |
                   ('AUTOMOTIVE_DESIGN.COMPOSITE_SHAPE_ASPECT' IN 
                     TYPEOF(sa)) AND
                   (sa.name = 'compound feature in solid')
                  )) = 1)) OR
             ((SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
                'AUTOMOTIVE_DESIGN.DIRECTION_SHAPE_REPRESENTATION' IN 
                 TYPEOF(pdr.used_representation)
               )) = 1) AND
              (SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
                ('AUTOMOTIVE_DESIGN.DIRECTION_SHAPE_REPRESENTATION' IN 
                  TYPEOF(pdr.used_representation)) AND
                (SIZEOF( QUERY( i <* pdr.used_representation.items |
                  (i.name = 'orientation') AND 
                  ('AUTOMOTIVE_DESIGN.PLACEMENT' IN
                    TYPEOF(i))
                 )) = 1)
               )) = 1));   
  WR6:  SIZEOF(['AUTOMOTIVE_DESIGN.BEAD',
                        'AUTOMOTIVE_DESIGN.BARRING_HOLE',
                        'AUTOMOTIVE_DESIGN.BOSS',
                        'AUTOMOTIVE_DESIGN.COMPOUND_FEATURE',
                        'AUTOMOTIVE_DESIGN.EXTERNALLY_DEFINED_FEATURE_DEFINITION',
                        'AUTOMOTIVE_DESIGN.FEATURE_IN_PANEL',
                        'AUTOMOTIVE_DESIGN.GENERAL_FEATURE',
                        'AUTOMOTIVE_DESIGN.HOLE_IN_PANEL',
                        'AUTOMOTIVE_DESIGN.JOGGLE',
                        'AUTOMOTIVE_DESIGN.LOCATOR',
                        'AUTOMOTIVE_DESIGN.POCKET',
                        'AUTOMOTIVE_DESIGN.RIB',
                        'AUTOMOTIVE_DESIGN.REPLICATE_FEATURE',
                        'AUTOMOTIVE_DESIGN.ROUND_HOLE',
                        'AUTOMOTIVE_DESIGN.SLOT',
                        'AUTOMOTIVE_DESIGN.THREAD'] *
                        TYPEOF(SELF)) <= 1;
END_ENTITY;
(*

Formal Propositions:

WR1: The feature_definition shall have at most one implicit representation of type shape_representation_with_parameters.

WR2: If a implicit representation is present, at most one representation_item in this representation of the feature_definition shall be a placement with a name of 'orientation'. This placement shall define a reference location and orientation for the origin of the feature_definition.

WR3: If the feature_definition is of type barring_hole, bead, hole_in_panel, feature_in_panel, joggle, or locator, or is a compound_feature with a basis shape of an shape_aspect with a name of 'compound feature in panel', it shall be represented by at most one direction_shape_representation. If present, this representation shall have a name of 'punch direction'.

WR4: If an implicit representation is present, it shall have a geometric_representation_context as its context_of_items that has a coordinate_space_dimension equal to 3.

WR5: If the feature_definition is of type boss, rib, slot, round_hole, or pocket, or is a compound_feature that has a basis shape refered to by a composite_shape_aspect with a name of 'compound feature in solid', The feature_definition shall have exactly one implicit representation, and this representation shall contain a representation_item of type placement and a name of 'orientation'.

WR6: The subtypes bead, barring_hole, boss, compound_feature, externally_defined_feature_definition, feature_in_panel, general_feature, hole_in_panel, joggle, locator, pocket, rib, replicate_feature, round_hole, slot, and thread of feature_definition shall be mutually exclusive.

Associated global rule:

The following global rule defined in this part of ISO 10303 applies to the feature_definition entity:

5.2.3.1.73 feature_in_panel

A feature_in_panel is a type of feature_definition applicable to panel parts. A feature_in_panel consists of a ruled surface between two closed profiles one of which lies on the panel. See ARM definition for Form_feature_in_panel for more information.

EXPRESS specification:

*)
ENTITY feature_in_panel
  SUBTYPE OF (feature_definition);
WHERE
  WR1:  SELF.description IN ['pocket','boss','stairstep'];   
  WR2:  SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) AND
               NOT ({2 <= SIZEOF(pdr.used_representation.items) <= 3})
             )) = 0;   
  WR3:  SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
              TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
               NOT( i.name IN ['orientation','base radius','target radius'])
               )) > 0)
             )) = 0;   
  WR4:  SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
              TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='base radius') AND
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2)
               )) = 1)
             )) = 1;   
  WR5:  SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
              TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='target radius') AND
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2)
               )) = 1)
             )) = 1;   
  WR6:  SIZEOF( QUERY( sa <* get_shape_aspects(SELF) |
              (sa.name = 'base boundary') AND
              (sa.description IN ['directed angle occurrence','closed profile occurrence'])
             )) = 1;   
  WR7:  SIZEOF( QUERY( sa <* get_shape_aspects(SELF) |
              (sa.name = 'target boundary') AND
              (sa.description IN ['directed angle occurrence','closed profile occurrence'])
             )) = 1;   
  WR8:  SIZEOF( QUERY( sa <* get_shape_aspects(SELF) |
              (sa.description = 'directed angle occurrence')
             )) <= 1;   
  WR9:  SIZEOF( QUERY( sa <* get_shape_aspects(SELF) |
               (sa.description = 'directed angle occurrence') AND
               (SIZEOF( QUERY( sar <* USEDIN( sa, 'AUTOMOTIVE_DESIGN.' +
                 'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
                 ('AUTOMOTIVE_DESIGN.SHAPE_DEFINING_RELATIONSHIP' IN
                  TYPEOF(sar)) AND
                 (sar.name = 'directed angle usage')  AND
                 ('AUTOMOTIVE_DESIGN.DIRECTED_ANGLE' IN
                  TYPEOF(sar.relating_shape_aspect))
                )) = 1 )
              )) = 
              SIZEOF( QUERY( sa <* get_shape_aspects(SELF) |
               (sa.description = 'directed angle occurrence')));   
  WR10: SIZEOF( QUERY( sa <* get_shape_aspects(SELF) |
               (sa.description = 'closed profile occurrence') AND
               (SIZEOF( QUERY( sar <* USEDIN( sa, 'AUTOMOTIVE_DESIGN.' +
                 'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
                 ('AUTOMOTIVE_DESIGN.SHAPE_DEFINING_RELATIONSHIP' IN
                  TYPEOF(sar)) AND
                 (sar.description = 'profile usage')  AND
                 (SIZEOF(['AUTOMOTIVE_DESIGN.CIRCULAR_CLOSED_PROFILE',
 'AUTOMOTIVE_DESIGN.NGON_CLOSED_PROFILE',
 'AUTOMOTIVE_DESIGN.RECTANGULAR_CLOSED_PROFILE',
 'AUTOMOTIVE_DESIGN.CLOSED_PATH_PROFILE']
 * TYPEOF(sar.relating_shape_aspect)
                  ) = 1 )
                )) = 1 )
              )) = 
              SIZEOF( QUERY( sa <* get_shape_aspects(SELF) |
               (sa.description = 'closed profile occurrence')));   
  WR11: (SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
              'AUTOMOTIVE_DESIGN.FACE_SHAPE_REPRESENTATION' IN 
              TYPEOF(pdr.used_representation)
             )) <= 1) AND
             (SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.FACE_SHAPE_REPRESENTATION' IN 
                TYPEOF(pdr.used_representation)) AND
               NOT(pdr.used_representation.name = 'target face')
             )) = 0);   
  WR12: (SIZEOF( QUERY( sa <* get_shape_aspects(SELF) |
                (sa.name = 'target boundary') AND
                (sa.description = 'directed angle occurrence')
               )) = 0) OR
              (SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.FACE_SHAPE_REPRESENTATION' IN 
                TYPEOF(pdr.used_representation)) 
              )) = 1);   
END_ENTITY;
(*

Formal Propositions:

WR1: The feature_in_panel shall have a description of either 'pocket', 'boss', or 'stairstep'.

WR2: The implicit representation of the feature_in_panel shall contain two or three representation_items in its set of items.

WR3: The implicit representation of the feature_in_panel shall contain only representation_items with a name of 'orientation', 'base radius', or 'target radius'.

WR4: The implicit representation of a feature_in_panel shall contain exactly one representation_item of type measure_representation_item and length_measure_with_unit with a name of 'base radius'.

WR5: The implicit representation of a feature_in_panel shall contain exactly one representation_item of type measure_representation_item and length_measure_with_unit with a name of 'target radius'.

WR6: The feature_in_panel shall be the basis shape for exactly one shape_aspect with a name of 'base boundary' and a description of either 'directed angle occurrence' or 'closed profile occurrence'.

WR7: The feature_in_panel shall be the basis shape for exactly one shape_aspect with a name of 'target boundary' and a description of either 'directed angle occurrence' or 'closed profile occurrence'.

WR8: The feature_in_panel shall be the basis shape for at most one shape_aspect with a description of 'directed angle occurrence'.

WR9: Each shape_aspect of a feature_in_panel with a description of 'directed angle occurrence' shall be the related_shape_aspect in exactly one shape_defining_relationship with a name of 'directed angle usage' in which the relating_shape_aspect is a directed_angle.

WR10: Each shape_aspect of a feature_in_panel with a description of 'closed profile occurrence' shall be the related_shape_aspect in exactly one shape_defining_relationship with a description of 'profile usage' and a relating_shape_aspect that references a circular_closed_profile, ngon_closed_profile, rectangular_closed_profile, or closed_path_profile.

WR11: The feature_in_panel shall have at most one face_shape_representation. If present, this face_shape_representation shall have a name of 'target face'.

WR12: Each feature_in_panel that is the basis shape for a shape_aspect with a name of 'target boundary' and a description of 'directed angle occurrence' shall have a face_shape_representation.

5.2.3.1.74 feature_pattern

A feature_pattern is a type of replicate_feature that represents additional occurrences of a base feature where the additional occurrences are not arranged in a circular or rectangular pattern. See ARM definition for General_pattern for more information.

EXPRESS specification:

*)
ENTITY feature_pattern
  SUBTYPE OF (replicate_feature);
WHERE
  WR1:  SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
              TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
               (i.name = 'added instance placement') AND
               ('AUTOMOTIVE_DESIGN.PLACEMENT' IN TYPEOF(i))
               )) > 1)
             )) = 1;   
  WR2:  SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
              TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
               NOT('AUTOMOTIVE_DESIGN.PLACEMENT' IN TYPEOF(i))
               )) > 0)
             )) = 0;   
END_ENTITY;
(*

Formal Propositions:

WR1: The implicit representation of a feature_pattern shall contain one or more representation_items in its set of items of type placement with a name of 'added instance placement'.

WR2: The implicit representation of a feature_pattern shall only contain representation_items in its set of items that are of type placement.

5.2.3.1.75 featured_shape

A featured_shape is a type of product_definition_shape that represents a product that includes features. See ARM definition for Featured_shape for more information.

EXPRESS specification:

*)
ENTITY featured_shape
  SUBTYPE OF (product_definition_shape);
WHERE
  WR1:  'AUTOMOTIVE_DESIGN.PRODUCT_DEFINITION' IN
             TYPEOF(SELF.definition);   
  WR2:  (SIZEOF( USEDIN(SELF,'AUTOMOTIVE_DESIGN.' +
                 'PROPERTY_DEFINITION_RELATIONSHIP.' +
                 'RELATED_PROPERTY_DEFINITION')
              ) = 1 ) AND
             (SIZEOF( QUERY( pdr <* USEDIN(SELF,'AUTOMOTIVE_DESIGN.' +
               'PROPERTY_DEFINITION_RELATIONSHIP.RELATED_PROPERTY_DEFINITION') |
               (pdr.name = 'featured shape sequence') AND
               ('AUTOMOTIVE_DESIGN.PRODUCT_DEFINITION_SHAPE' IN
                TYPEOF(pdr.relating_property_definition)) AND
               (pdr.relating_property_definition :<>: SELF)
              )) = 1 );   
  WR3:  SIZEOF( QUERY( pdr <* USEDIN(SELF,'AUTOMOTIVE_DESIGN.' +
              'PROPERTY_DEFINITION_RELATIONSHIP.RELATED_PROPERTY_DEFINITION') |
              SELF.definition :=: pdr.relating_property_definition.definition
              )) = 1;   
  WR4:  SIZEOF( QUERY( sa <* USEDIN(SELF,'AUTOMOTIVE_DESIGN.' +
               'SHAPE_ASPECT.OF_SHAPE') |
               SIZEOF(['AUTOMOTIVE_DESIGN.PLACED_FEATURE',
                       'AUTOMOTIVE_DESIGN.INSTANCED_FEATURE'] *
                       TYPEOF(sa)
                ) =1
              )) >= 1;   
END_ENTITY;
(*

Formal Propositions:

WR1: The featured_shape shall be the shape of a product_definition.

WR2: The featured_shape shall be the related_property_definition in exactly one property_definition_relationship. This property_definition_relationship shall have a name of 'featured shape sequence' and shall reference as relating_property_definition a different instance of product_definition_shape.

WR3: The featured_shape shall refer as definition to the same instance of product_definition as the product_definition_shape it is related with.

WR4: The featured_shape shall have at least one shape_aspect of type placed_feature or instanced_feature.

Informal Propositions:

IP1: If an featured_shape has a shape_representation and if the product_definition_shape it is related with has a shape_representation then these shape_representations shall have the same geometric_representation_context.

5.2.3.1.76 fillet

A fillet is a type of transition_feature that is the representation of a circular concave transition between two faces. See ARM definition for Fillet and for Constant_radius_fillet for more information.

EXPRESS specification:

*)
ENTITY fillet
  SUBTYPE OF (transition_feature);
WHERE
  WR1:  (SELF.description <> 'constant radius') XOR
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation))
              )) = 1);   
  WR2:  (SELF.description <> 'constant radius') OR
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) AND
               {1 <= SIZEOF(pdr.used_representation.items) <= 3}
              )) = 1);   
  WR3:  (SELF.description <> 'constant radius') OR
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
               NOT( i.name IN ['radius','first offset','second offset'])
               )) > 0)
              )) = 0);   
  WR4:  (SELF.description <> 'constant radius') OR
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) AND
               (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='radius') AND
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2)
                )) = 1)
              )) = 1);   
  WR5:  (SELF.description <> 'constant radius') OR
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) AND
               (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='first offset') AND
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2)
                )) <= 1)
              )) = 1);   
  WR6:  (SELF.description <> 'constant radius') OR
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) AND
               (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='second offset') AND
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2)
                )) <= 1)
              )) = 1);   
  WR7:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.FACE_SHAPE_REPRESENTATION' IN 
                TYPEOF(pdr.used_representation)) AND
               (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='first face shape')
                )) = 1) 
              )) = 1;   
  WR8:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.FACE_SHAPE_REPRESENTATION' IN 
                TYPEOF(pdr.used_representation)) AND
               (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='second face shape')
                )) = 1)
              )) = 1;   
  WR9:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.FACE_SHAPE_REPRESENTATION' IN 
                TYPEOF(pdr.used_representation)) AND
               (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='fillet face')
                )) = 1)
               )) = 1;   
END_ENTITY;
(*

Formal Propositions:

WR1: A fillet has an implicit representation if and only if it has a description of 'constant radius'.

WR2: If the description of the fillet is 'constant radius', the implicit representation shall contain between one and three representation_items in its set of items.

WR3: If the description of the fillet is 'constant radius', the implicit representation shall only contain representation_items in its set of items that have a name of either 'radius', 'first offset', or 'second offset'.

WR4: If the description of the fillet is 'constant radius', exactly one representation_item used for the implicit representation of the fillet shall be of type measure_representation_item and length_measure_with_unit with a name of 'radius'.

WR5: If the description of the fillet is 'constant radius', at most one representation_item used for the implicit representation of the fillet shall be of type measure_representation_item and length_measure_with_unit with a name of 'first offset'.

WR6: If the description of the fillet is 'constant radius', at most one representation_item used for the implicit representation of the fillet shall be of type measure_representation_item and length_measure_with_unit with a name of 'second offset'.

WR7: The fillet shall be defined by exactly representation of type face_shape_representation with a name of 'first face shape'.

WR8: The fillet shall be defined by exactly representation of type face_shape_representation with a name of 'second face shape'.

WR9: The fillet shall be defined by exactly representation of type face_shape_representation with a name of 'fillet face'.

5.2.3.1.77 general_feature

A general_feature is a type of feature_definition that provides a mechanism to categorize an area of interest in a shape and to associate additional information with it. See ARM definition for General_feature for more information.

EXPRESS specification:

*)
ENTITY general_feature
  SUBTYPE OF (feature_definition);
WHERE
  WR1:  (SIZEOF(get_property_definition_representations(SELF)) <= 1) AND
             (SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
              'AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
              TYPEOF(pdr.used_representation)
             )) <= 1);   
  WR2:  SIZEOF( QUERY( sa <* get_shape_aspects(SELF) |
               sa.description = 'course of travel occurrence')) =
             SIZEOF( QUERY( sa <* get_shape_aspects(SELF) |
               (sa.description = 'course of travel occurrence') AND
               (SIZEOF( QUERY( sar <* USEDIN( sa, 'AUTOMOTIVE_DESIGN.' +
                 'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
                 ('AUTOMOTIVE_DESIGN.SHAPE_DEFINING_RELATIONSHIP' IN
                  TYPEOF(sar)) AND
                 (sar.name = 'course of travel')
                )) = 1 )));   
  WR3:  SIZEOF( QUERY( sa <* get_shape_aspects(SELF) |
               sa.description = 'course of travel occurrence')) =
             SIZEOF( QUERY( sa <* get_shape_aspects(SELF) |
               (sa.description = 'course of travel occurrence') AND
               (SIZEOF( QUERY( sar <* USEDIN( sa, 'AUTOMOTIVE_DESIGN.' +
                 'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
                 ('AUTOMOTIVE_DESIGN.SHAPE_DEFINING_RELATIONSHIP' IN
                  TYPEOF(sar)) AND
                 ('AUTOMOTIVE_DESIGN.PATH_FEATURE_COMPONENT' IN
                  TYPEOF(sar.relating_shape_aspect))
                )) = 1 )));   
  WR4:  SIZEOF( QUERY( sa <* get_shape_aspects(SELF) |
               sa.description = 'boundary occurrence')) =
             SIZEOF( QUERY( sa <* get_shape_aspects(SELF) |
               (sa.description = 'boundary occurrence') AND
               (SIZEOF( QUERY( sar <* USEDIN( sa, 'AUTOMOTIVE_DESIGN.' +
                 'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
                 ('AUTOMOTIVE_DESIGN.SHAPE_DEFINING_RELATIONSHIP' IN
                  TYPEOF(sar)) AND
                 (sar.description = 'profile usage')
                )) = 1 )));   
  WR5:  (SIZEOF( QUERY( sa <* get_shape_aspects(SELF) |
               ('AUTOMOTIVE_DESIGN.COMPOSITE_SHAPE_ASPECT' IN
                  TYPEOF(sa))
              )) <= 1 ) AND
             (SIZEOF( QUERY( sa <* get_shape_aspects(SELF) |
               ('AUTOMOTIVE_DESIGN.COMPOSITE_SHAPE_ASPECT' IN
                  TYPEOF(sa)) AND
               (sa.name = 'general compound feature') AND
               (SIZEOF( QUERY( sar <* USEDIN( sa, 'AUTOMOTIVE_DESIGN.' +
                 'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
                 ('AUTOMOTIVE_DESIGN.FEATURE_COMPONENT_RELATIONSHIP' IN
                  TYPEOF(sar)) AND
                 ('AUTOMOTIVE_DESIGN.INSTANCED_FEATURE' IN
                  TYPEOF(sar.related_shape_aspect))
                )) >= 2 )
              )) <= 1 );   
END_ENTITY;
(*

Formal Propositions:

WR1: The general_feature shall represented by at most one implicit representation. If present, this representation shall be of type shape_representation_with_parameters.

WR2: If the general_feature is the basis shape for one or more occurrences of shape_aspect with a description of 'course of travel occurrence', these shape_aspects shall be the related_shape_aspect of a shape_defining_relationship that has a name of 'course of travel'.

WR3: The aspects of the basis shape that have a description of 'course of travel occurrence' shall be the related_shape_aspect of a shape_defining_relationship that refers to a path_feature_component as relating_shape_aspect.

WR4: If the general_feature is the basis shape for one or more occurrences of shape_aspect with a description of 'boundary occurrence', these shape_aspects shall be the related_shape_aspect of a shape_defining_relationship that has a description of 'profile usage'.

WR5: The basis shape of a general_feature shall be refered to by at most one shape_aspect that is of type composite_shape_aspect. If present, this shape_aspect shall have a name of 'general compound feature' and shall be the relating_shape_aspect of at least two feature_component_relationships. These feature_component_relationships shall refer to instanced_feature instances as their related_shape_aspect.

5.2.3.1.78 general_material_property

A general_material_property is a type of general_property that depends on material aspects.

EXPRESS specification:

*)
ENTITY general_material_property
  SUBTYPE OF (general_property);
WHERE
  WR1:  SIZEOF( QUERY( gpa <* USEDIN(SELF,'AUTOMOTIVE_DESIGN.GENERAL_PROPERTY_ASSOCIATION.' +
                     'BASE_DEFINITION') |
               NOT ('AUTOMOTIVE_DESIGN.MATERIAL_PROPERTY' IN
                    TYPEOF(gpa.derived_definition))
              )) = 0;
           
END_ENTITY;
(*

Formal Propositions:

WR1: A general_material_property may only be referenced as the base_definition by general_property_association instances which reference as derived_definition a property_definition of type material_property.

5.2.3.1.79 geometric_item_specific_usage

A Geometric_item_specific_usage is a type of item_identified_representation_usage that associates a geometric_representation_item with a shape_aspect in the context of a shape_representation

EXPRESS specification:

*)
ENTITY geometric_item_specific_usage
  SUBTYPE OF (item_identified_representation_usage);
  SELF\item_identified_representation_usage.definition:shape_aspect;
  SELF\item_identified_representation_usage.used_representation:shape_representation;
  SELF\item_identified_representation_usage.identified_item:geometric_representation_item;
END_ENTITY;
(*

Attribute definitions:

definition: an attribute inherited from the item_identified_representation_usage shall be redeclared as the shape_aspect for the geometric_item_specific_usage.

used_representation: an attribute inherited from the item_identified_representation_usage shall be redeclared as the shape_representation for the geometric_item_specific_usage.

identified_item: an attribute inherited from the item_identified_representation_usage shall be redeclared as the geometric_representation_item for the geometric_item_specific_usage.

5.2.3.1.80 hardness_representation

A hardness_representation is a type of representation that represent the hardness of an object. For more information see ARM definition for Hardness.

EXPRESS specification:

*)
ENTITY hardness_representation
  SUBTYPE OF (representation);
WHERE
  WR1:  ({2 <= SIZEOF(SELF.items) <= 4}) AND
             (SIZEOF( QUERY( i <* items |
               ('AUTOMOTIVE_DESIGN.DESCRIPTIVE_REPRESENTATION_ITEM' IN
                 TYPEOF(i)) AND
               (i.name IN ['measuring method','measuring position'])
               )) +
               SIZEOF( QUERY( i <* items |
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.VALUE_RANGE'] *
TYPEOF(i)
                       ) = 1) AND
                (i.name IN ['depth','hardness'])
             )) = SIZEOF(SELF.items));   
  WR2:  SIZEOF( QUERY( i <* SELF.items |
              i.name = 'measuring method')
              ) = 1;   
  WR3:  SIZEOF( QUERY( i <* SELF.items |
              i.name = 'hardness')
              ) = 1;   
  WR4:  SIZEOF( QUERY( i <* SELF.items |
              i.name = 'measuring position')
              ) <= 1;   
  WR5:  SIZEOF( QUERY( i <* SELF.items |
              i.name = 'depth')
              ) <= 1;   
  WR6:  (SIZEOF( USEDIN(SELF,'AUTOMOTIVE_DESIGN.' +
                      'PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION')
               ) = 1) AND
             (SIZEOF( QUERY( pdr <* USEDIN(SELF,'AUTOMOTIVE_DESIGN.' +
                      'PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION') |
               SIZEOF( QUERY( gpa <* USEDIN(pdr.definition,'AUTOMOTIVE_DESIGN.' +
                       'GENERAL_PROPERTY_ASSOCIATION.DERIVED_DEFINITION') |
                ('AUTOMOTIVE_DESIGN.GENERAL_PROPERTY' IN TYPEOF( gpa.base_definition)) AND
                (gpa.base_definition.name = 'surface_texture')
                )) = 1
               )) = 1);   
END_ENTITY;
(*

Formal Propositions:

WR1: Each instance of hardness_representation shall contain between two and four representation_items in its set of items. These representation_items shall either be of type descriptive_representation_item and have a name of either 'measuring method' or 'measuring position', or shall be of type measure_representation_item or value_range and have a name of either 'depth' or 'hardness'.

WR2: Each instance of hardness_representation shall contain exactly one representation_item in its set of items that has a name of 'measuring method'.

WR3: Each instance of hardness_representation shall contain exactly one representation_item in its set of items that has a name of 'hardness'.

WR4: Each instance of hardness_representation shall contain at most one representation_item in its set of items that has a name of 'measuring position'.

WR5: Each instance of hardness_representation shall contain at most one representation_item in its set of items that has a name of 'depth'.

WR6: Each instance of hardness_representation shall be referenced by exactly one property_definition_representation. This property_definition_representation shall relate the representation with a property_definition that is the derived_definition of a general_property_association that refers as base_definition to a general_property with a name of 'surface_texture'.

Informal Propositions:

IP1: If the hardness_representation contains qualified_representation_items that refer to a type_qualifier representing the value determination then all of the representation_items shall also be qualified_representation_items that refer to the same instance of type_qualifier.

5.2.3.1.81 hidden_element_over_riding_styled_item

The hidden_element_over_riding_styled_item is a type of context_dependent_over_riding_styled_item that specifies the handling of hidden elements. See ARM definition for Hidden_element_handling for more information.

EXPRESS specification:

*)
ENTITY hidden_element_over_riding_styled_item
  SUBTYPE OF (context_dependent_over_riding_styled_item);
WHERE
  WR1:  SIZEOF(SELF.style_context) = 1;
           
  WR2:  'AUTOMOTIVE_DESIGN.PRESENTATION_VIEW' IN TYPEOF
                (SELF.style_context[1]);
           
  WR3:  'AUTOMOTIVE_DESIGN.CAMERA_IMAGE' IN TYPEOF
                (SELF.item);
           
  WR4:  'AUTOMOTIVE_DESIGN.CAMERA_MODEL_D3_WITH_HLHSR' IN TYPEOF
                (SELF.item\mapped_item.mapping_source.mapping_origin);
           
  WR5:  SIZEOF( QUERY( rep <* USEDIN(SELF,
                 'AUTOMOTIVE_DESIGN.REPRESENTATION.ITEMS') |
                    'AUTOMOTIVE_DESIGN.PRESENTATION_VIEW'
                    IN TYPEOF(rep)
        )) > 0;
           
END_ENTITY;
(*

Formal Propositions:

WR1: There shall be exactly one style_context.

WR2: The style_context shall be a presentation_view.

WR3: The item where the overriding style is applied for all hidden elements shall be a camera_image.

WR4: The mapping_origin of the item shall be a camera_model_d3_with_hlhsr.

WR5: The hidden_element_over_riding_styled_item shall be included in the set of items of a presentation_view.

5.2.3.1.82 hole_bottom

A hole_bottom is a type of shape_aspect that is the end condition for a round_hole. See ARM definition for Conical_bottom, for Flat_bottom, for Flat_with_taper_bottom, for Flat_with_radius_bottom, for Spherical_bottom, and for Through_hole_bootom_condition for more information.

EXPRESS specification:

*)
ENTITY hole_bottom
  SUBTYPE OF (shape_aspect);
WHERE
  WR1:  'AUTOMOTIVE_DESIGN.FEATURE_COMPONENT_DEFINITION' IN
             TYPEOF(SELF.of_shape.definition);   
  WR2:  SELF.description IN ['through','flat','flat with taper',
        		          'flat with radius','spherical','conical'];   
  WR3:  NOT (SELF.description IN ['through','flat']) OR
             (SIZEOF(get_shape_aspect_property_definition_representations(SELF)
              ) = 0);   
  WR4:  NOT (SELF.description IN 
                  ['flat with radius','flat with taper','spherical','conical']) OR
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) 
              )) = 1);   
  WR5:  (SELF.description <> 'flat with taper') OR
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) AND
               (SIZEOF(pdr.used_representation.items) = 2)
              )) = 1);   
  WR6:  (SELF.description <> 'conical') OR
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) AND
               {1 <= SIZEOF(pdr.used_representation.items) <= 2}
              )) = 1);   
  WR7:  NOT (SELF.description IN ['flat with radius','spherical']) OR
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) AND
               (SIZEOF(pdr.used_representation.items) = 1)
              )) = 1);   
  WR8:  (SELF.description <> 'flat with radius') OR
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='corner radius') AND
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2)
               )) = 1)
              )) = 1);   
  WR9:  (SELF.description <> 'spherical') OR
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='radius') AND
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2)
               )) = 1)
              )) = 1);   
  WR10: (SELF.description <> 'conical') OR
              (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) AND
               (SIZEOF( QUERY( i <* pdr.used_representation.items |
                 (i.name='tip radius') AND
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2)
                )) <= 1)
               )) = 1);   
  WR11: (SELF.description <> 'conical') OR
              (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) AND
               (SIZEOF( QUERY( i <* pdr.used_representation.items |
                 (i.name='tip angle') AND
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.PLANE_ANGLE_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2)
                )) = 1)
               )) = 1);   
  WR12: (SELF.description <> 'flat with taper') OR
              (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) AND
               (SIZEOF( QUERY( i <* pdr.used_representation.items |
                 (i.name='final diameter') AND
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2)
                )) = 1)
               )) = 1);   
  WR13: (SELF.description <> 'flat with taper') OR
              (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) AND
               (SIZEOF( QUERY( i <* pdr.used_representation.items |
                 (i.name='taper diameter') AND
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.PLANE_ANGLE_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2)
                )) = 1)
               )) = 1);   
  WR14: SIZEOF( QUERY( sar <* USEDIN( SELF, 'AUTOMOTIVE_DESIGN.' +
               'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
               ('AUTOMOTIVE_DESIGN.FEATURE_COMPONENT_RELATIONSHIP' IN
                TYPEOF(sar)) AND
               (sar.description = 'hole bottom usage') AND
               (sar.related_shape_aspect.description = 'bottom condition occurrence')
              )) = 1;   
  WR15: (SELF.description = 'through') OR
              (SIZEOF( QUERY( sar <* USEDIN( SELF, 'AUTOMOTIVE_DESIGN.' +
                'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
                ('AUTOMOTIVE_DESIGN.FEATURE_COMPONENT_RELATIONSHIP' IN
                 TYPEOF(sar)) AND
                (sar.name IN ['starting','ending' 
])
               )) = 1);   
END_ENTITY;
(*

Formal Propositions:

WR1: The hole_bottom shall be an aspect of the shape of a feature_component_definition.

WR2: The description of the hole_bottom shall be either 'through', 'flat', 'flat with taper', 'flat with radius', 'spherical', or 'conical'.

WR3: If the description of the hole_bottom is 'flat' or 'through', the hole_bottom shall not have any representation.

WR4: If the description of the hole_bottom is 'flat with radius', 'flat with taper', 'spherical', or 'conical', the hole_bottom shall have exactly one shape_representation_with_parameters to specify its implicit representation.

WR5: If the description of the hole_bottom is 'flat with taper' the shape_representation_with_parameters that represents the hole_bottom shall contain exactly two representation_items in its set of items.

WR6: If the description of the hole_bottom is 'conical', the shape_representation_with_parameters that represents the hole_bottom shall contain one or two representation_items in its set of items.

WR7: If the description of the hole_bottom is 'flat with radius' or 'spherical', there shall be exactly one implicit representation, and it shall contain exactly one representation_item.

WR8: If the description of the hole_bottom is 'flat with radius', exactly one representation_item used for the implicit representation of a hole_bottom shall have a name of 'corner radius'. This representation_item shall be of type measure_representation_item and length_measure_with_unit.

WR9: If the description of the hole_bottom is 'spherical', exactly one representation_item used for the implicit representation of a hole_bottom shall have a name of 'radius'. This representation_item shall be of type measure_representation_item and length_measure_with_unit.

WR10: If the description of the hole_bottom is 'conical', at most one representation_item used for the implicit representation of a hole_bottom shall have a name of 'tip radius'. This representation_item shall be of type measure_representation_item and length_measure_with_unit.

WR11: If the description of the hole_bottom is 'conical', exactly one representation_item used for the implicit representation of a hole_bottom shall have a name of 'tip angle'. This representation_item shall be of type measure_representation_item and plane_angle_measure_with_unit.

WR12: If the description of the hole_bottom is 'flat with taper', the implicit representation shall contain exactly one representation_item that has a name of 'final diameter' and is of type measure_representation_item and length_measure_with_unit.

WR13: If the description of the hole_bottom is 'flat with taper', the implicit representation shall contain exactly one representation_item that has a name of 'taper diameter' and is of type measure_representation_item and plane_angle_measure_with_unit.

WR14: The hole_bottom shall be the relating_shape_aspect in exactly one feature_component_relationship with a description of 'hole bottom usage'. The related_shape_aspect of this feature_component_relationship shall have a description of 'bottom condition occurrence'.

WR15: If the description of the hole_bottom is not 'through', the feature_component_relationship that refers to it, shall have a name of either 'hole depth start' or 'hole depth end'.

5.2.3.1.83 hole_in_panel

A hole_in_panel is a type of feature_definition applicable to panel parts. A hole_in_panel is an opening in a panel bounded by a closed profile that is created by a stamping process. See ARM definition for Hole_feature_in_panel for more information.

EXPRESS specification:

*)
ENTITY hole_in_panel
  SUBTYPE OF (feature_definition);
WHERE
  WR1:  SIZEOF( QUERY( sa <* get_shape_aspects(SELF) |
              (sa.name = 'hole profile') AND
              (sa.description = 'closed profile occurrence') AND
              (SIZEOF( QUERY( sar <* USEDIN( sa, 'AUTOMOTIVE_DESIGN.' +
                'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
                ('AUTOMOTIVE_DESIGN.SHAPE_DEFINING_RELATIONSHIP' IN
                 TYPEOF(sar)) AND
                (sar.description = 'profile usage') AND
                (SIZEOF(['AUTOMOTIVE_DESIGN.CIRCULAR_CLOSED_PROFILE',
                  'AUTOMOTIVE_DESIGN.NGON_CLOSED_PROFILE',
                  'AUTOMOTIVE_DESIGN.RECTANGULAR_CLOSED_PROFILE',
                  'AUTOMOTIVE_DESIGN.CLOSED_PATH_PROFILE']
                  * TYPEOF(sar.relating_shape_aspect)
                 ) = 1 )
               )) = 1 )
             )) = 1;   
  WR2:  SIZEOF( get_property_definition_representations(SELF)) =
             SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
              SIZEOF( pdr.used_representation.items) = 1));   
END_ENTITY;
(*

Formal Propositions:

WR1: The hole_in_panel shall be the basis shape for exactly one shape_aspect with a name of 'hole profile' and a description of 'closed profile occurrence'. This shape_aspect shall be the related_shape_aspect in exactly one shape_defining_relationship with a description of 'profile usage' and a relating_shape_aspect that references a circular_closed_profile, ngon_closed_profile, rectangular_closed_profile, or closed_path_profile.

WR2: If an implicit representation of the hole_in_panel is present, it shall contain at most one representation_item in its set of items.

5.2.3.1.84 homokinetic_pair

A homokinetic_pair is a type of universal_pair, where the rotation of input axis and output axis are uniform.

EXPRESS specification:

*)
ENTITY homokinetic_pair
  SUBTYPE OF (universal_pair);
WHERE
  WR1:  NOT EXISTS(SELF.input_skew_angle);       
END_ENTITY;
(*

Formal Propositions:

WR1: For a homokinetic_pair the input_skew_angle shall be omitted.

5.2.3.1.85 inclusion_product_concept_feature

An inclusion_product_concept_feature is a type of conditional_concept_feature that is the representation of the statement that the application of a product_concept_feature or of a conditional_concept_feature implies the inclusion of an additional product_concept_feature or conditional_concept_feature. See Specification_inclusion for more information

EXPRESS specification:

*)
ENTITY inclusion_product_concept_feature
  SUBTYPE OF (conditional_concept_feature);
WHERE
  WR1:  NOT ('AUTOMOTIVE_DESIGN.PACKAGE_PRODUCT_CONCEPT_FEATURE' IN
                  TYPEOF(SELF));   
  WR2:  SIZEOF( QUERY( cfr <* USEDIN(SELF,'AUTOMOTIVE_DESIGN.CONCEPT_FEATURE_RELATIONSHIP.' +
          'RELATING_PRODUCT_CONCEPT_FEATURE') |
               'AUTOMOTIVE_DESIGN.CONCEPT_FEATURE_RELATIONSHIP_WITH_CONDITION' IN
               TYPEOF(cfr) )) +
             SIZEOF( QUERY( cfr <* USEDIN(SELF,'AUTOMOTIVE_DESIGN.CONCEPT_FEATURE_RELATIONSHIP.' +
          'RELATED_PRODUCT_CONCEPT_FEATURE') |
               'AUTOMOTIVE_DESIGN.CONCEPT_FEATURE_RELATIONSHIP_WITH_CONDITION' IN
               TYPEOF(cfr) ))
              = 0;   
  WR3:  SELF.condition.conditional_operator.name = 'implication';
              
END_ENTITY;
(*

Formal Propositions:

WR1: An inclusion_product_concept_feature shall not be of type package_product_concept_feature.

WR2: An inclusion_product_concept_feature shall not be referenced as relating_product_concept_feature nor as related_product_concept_feature by concept_feature_relationship_with_condition instances.

WR3: An inclusion_product_concept_feature shall reference as condition a concept_feature_relationship_with_condition which references a concept_feature_operator with a name of 'implication'.

5.2.3.1.86 instanced_feature

An instanced_feature is a type of shape_aspect and of feature_definition that is the identification of a preconceived form pattern on a part. See ARM definition for Included_feature for more information.

EXPRESS specification:

*)
ENTITY instanced_feature
  SUBTYPE OF (shape_aspect,feature_definition);
WHERE
  WR1:  'AUTOMOTIVE_DESIGN.PRODUCT_DEFINITION' IN
         TYPEOF(SELF.of_shape.definition);   
  WR2:  SELF.product_definitional;   
  WR3:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.PLANAR_SHAPE_REPRESENTATION' IN 
                TYPEOF(pdr.used_representation)) AND
               (pdr.used_representation.name = 'maximum feature limit')
             )) = 1;   
END_ENTITY;
(*

Formal Propositions:

WR1: The instanced_feature shall be an aspect of the shape of a product_definition.

WR2: The instanced_feature shall lie on the boundary of the part.

WR3: The instanced_feature shall be represented_by exactly one planar_shape_representation. This planar_shape_representation shall have a name of 'maximum feature limit'.

5.2.3.1.87 joggle

A joggle is a type of feature_definition applicable to panel parts. A joggle is a change in elevation of a face along a rim designed to accommodate either clearance for the insertion of another part or a contact point for attachment of another part. See ARM definition for Joggle_feature for more information.

EXPRESS specification:

*)
ENTITY joggle
  SUBTYPE OF (feature_definition);
WHERE
  WR1:  SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) AND
               NOT({5 <= SIZEOF(pdr.used_representation.items) <= 10})
             )) = 0;   
  WR2:  SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) AND
               (SIZEOF( QUERY( i <* pdr.used_representation.items |
                 NOT(i.name IN ['orientation','base radius 1','base radius 2','direction angle 1',
       'direction angle 2','height','slope angle 1','slope angle 2',
       'top radius 1','top radius 2'])
                )) > 0)
             )) = 0;   
  WR3:  SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
              TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='direction angle 1') AND
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.PLANE_ANGLE_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2)
               )) = 1)
             )) = 1;   
  WR4:  SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
              TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='direction angle 2') AND
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.PLANE_ANGLE_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2)
               )) = 1)
             )) = 1;   
  WR5:  SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
              TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='height') AND
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2)
               )) = 1)
             )) <= 1;   
  WR6:  SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
              TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='slope angle 1') AND
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.PLANE_ANGLE_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2)
               )) = 1)
             )) = 1;   
  WR7:  SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
              TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='slope angle 2') AND
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.PLANE_ANGLE_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2)
               )) = 1)
             )) = 1;   
  WR8:  SIZEOF( QUERY( sa <* get_shape_aspects(SELF) |
              (sa.name = 'defining path') AND
              (sa.description = 'path feature component occurrence') AND
              (SIZEOF( QUERY( sar <* USEDIN( sa, 'AUTOMOTIVE_DESIGN.' +
                'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
                ('AUTOMOTIVE_DESIGN.SHAPE_DEFINING_RELATIONSHIP' IN
                 TYPEOF(sar)) AND
                (sar.description = 'path feature component usage')  AND
                ('AUTOMOTIVE_DESIGN.PATH_FEATURE_COMPONENT' IN
                 TYPEOF(sar.relating_shape_aspect)) AND
                (sar.relating_shape_aspect.description = 'linear')
               )) = 1 )
             )) = 1;   
  WR9:  SIZEOF( QUERY( sa <* get_shape_aspects(SELF) |
              (sa.name = 'termination') AND
              (sa.description = 'joggle termination occurrence') AND
              (SIZEOF( QUERY( sar <* USEDIN( sa, 'AUTOMOTIVE_DESIGN.' +
                'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
                ('AUTOMOTIVE_DESIGN.FEATURE_COMPONENT_RELATIONSHIP' IN
                 TYPEOF(sar)) AND
                (sar.name = 'joggle termination usage')  AND
                ('AUTOMOTIVE_DESIGN.JOGGLE_TERMINATION' IN
                 TYPEOF(sar.relating_shape_aspect)) 
               )) = 1 )
             )) = 1;   
  WR10: SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
              TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='base radius 1') AND
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2)
               )) = 1)
             )) <= 1;   
  WR11: SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
              TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='base radius 2') AND
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2)
               )) = 1)
              )) <= 1;   
  WR12: SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
              TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='top radius 1') AND
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2)
               )) = 1)
              )) <= 1;   
  WR13: SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
              TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='top radius 2') AND
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2)
               )) = 1)
              )) <= 1;   
END_ENTITY;
(*

Formal Propositions:

WR1: The implicit representation of a joggle shall contain between five and ten representation_items in its set of items.

WR2: The implicit_representation shall contain only representation_items wit a name of 'orientation', 'base radius 1', 'base radius 2', 'direction angle 1', 'direction angle 2', 'height', 'slope angle 1', 'slope angle 2', 'top radius 1', or 'top radius 2'.

WR3: The implicit representation of a joggle shall contain exactly one representation_item of type measure_representation_item and plane_angle_measure_with_unit with a name of 'direction angle 1'.

WR4: The implicit representation of a joggle shall contain exactly one representation_item of type measure_representation_item and plane_angle_measure_with_unit with a name of 'direction angle 2'.

WR5: The implicit representation of a joggle shall contain exactly one representation_item of type measure_representation_item and length_measure_with_unit with a name of 'height'.

WR6: The implicit representation of a joggle shall contain exactly one representation_item of type measure_representation_item and plane_angle_measure_with_unit with a name of 'slope angle 1'.

WR7: The implicit representation of a joggle shall contain exactly one representation_item of type measure_representation_item and plane_angle_measure_with_unit with a name of 'slope angle 2'.

WR8: The joggle shall be the basis shape for exactly one shape_aspect with a name of 'defining path' and a description of 'path feature component occurrence' that is the related_shape_aspect in exactly one shape_defining_relationship with a description of 'path feature component usage' in which the relating_shape_aspect is a path_feature_component with a description of 'linear'.

WR9: The joggle shall be the basis shape for exactly one shape_aspect with a name of 'termination' and a description of 'joggle termination occurrence' that is the related_shape_aspect in exactly one feature_component_relationship with a name of 'joggle termination usage' in which the relating_shape_aspect is a joggle_termination.

WR10: The implicit representation of a joggle shall contain at most one representation_item of type measure_representation_item and length_measure_with_unit with a name of 'base radius 1'.

WR11: The implicit representation of a joggle shall contain at most one representation_item of type measure_representation_item and length_measure_with_unit with a name of 'base radius 2'.

WR12: The implicit representation of a joggle shall contain at most one representation_item of type measure_representation_item and length_measure_with_unit with a name of 'top radius 1'.

WR13: The implicit representation of a joggle shall contain at most one representation_item of type measure_representation_item and length_measure_with_unit with a name of 'top radius 2'.

5.2.3.1.88 joggle_termination

A joggle_termination is a type of shape_aspect that is the representation of the end condition of a joggle. See ARM definition for Joggle_termination, for Face_termination, and for Value_termination for more information.

EXPRESS specification:

*)
ENTITY joggle_termination
  SUBTYPE OF (shape_aspect);
WHERE
  WR1:  'AUTOMOTIVE_DESIGN.FEATURE_COMPONENT_DEFINITION' IN
              TYPEOF(SELF.of_shape.definition);   
  WR2:  SELF.description IN ['value termination','face termination'];   
  WR3:  (SELF.description = 'value termination') XOR
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) 
              )) = 0);   
  WR4:  (SELF.description <> 'value termination') OR
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) AND
               (SIZEOF(pdr.used_representation.items) = 2)
              )) = 1);   
  WR5:  (SELF.description <> 'value termination') OR
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='depth') AND
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2)
               )) = 1)
              )) = 1);   
  WR6:  (SELF.description <> 'value termination') OR
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='angle') AND
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.PLANE_ANGLE_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2)
               )) = 1)
              )) = 1);   
  WR7:  SIZEOF( QUERY( sar <* USEDIN( SELF, 'AUTOMOTIVE_DESIGN.' +
               'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
               ('AUTOMOTIVE_DESIGN.FEATURE_COMPONENT_RELATIONSHIP' IN
                TYPEOF(sar)) AND
               (sar.name = 'joggle termination usage') AND
               ('AUTOMOTIVE_DESIGN.JOGGLE' IN TYPEOF(sar.related_shape_aspect.of_shape.definition)) AND
               (sar.related_shape_aspect.of_shape.definition\characterized_object.name = 'termination') AND
               (sar.related_shape_aspect.of_shape.definition\characterized_object.description = 'joggle termination occurrence')
              )) = 1;   
END_ENTITY;
(*

Formal Propositions:

WR1: The joggle_termination shall be an aspect of the shape of a feature_component_definition.

WR2: The description for the joggle_termination shall be either 'value termination' or 'face termination'.

WR3: A joggle_termination has an implicit representation if and only if it has a description of 'value termination'.

WR4: If the description of the joggle_termination is 'value termination', its implicit representation shall contain exactly two representation_items in its set of items.

WR5: If the description of the joggle_termination is 'value termination', exactly one representation_item used for the implicit representation of the joggle_termination shall be of type measure_representation_item and length_measure_with_unit with a name of 'depth'.

WR6: If the description of the joggle_termination is 'value termination', exactly one representation_item used for the implicit representation of the joggle_termination shall be of type measure_representation_item and plane_angle_measure_with_unit with a name of 'angle'.

WR7: The joggle_termination shall be the relating_shape_aspect in exactly one feature_component_relationship with a name of 'joggle termination usage' in which the related_shape_aspect is a shape_aspect of a joggle with a name of 'termination' and a description of 'joggle termination occurrence'.

5.2.3.1.89 known_source

A known_source is a type of external_source and of pre_defined_item that is a source of information whose name and content are predetermined. It provides a mechanism to refer to an entry in an external library.

EXPRESS specification:

*)
ENTITY known_source
  SUBTYPE OF (external_source, pre_defined_item);
END_ENTITY;
(*

Informal Propositions:

IP1: The contents of the item_id attribute of externally_defined_items that reference a known_source as their source has to be formatted according to the rules specified for this known_source.

Associated global rule:

The following global rule defined in this part of ISO 10303 applies to the known_source entity:

5.2.3.1.90 language

A language is a type of group that is a a specification of the language in which an information is given. The group shall specify in its name a language code according to ISO 639-2, and, if present, in its description a country code according to ISO 3166-1. See ARM definition for String_with_language for more information.

EXPRESS specification:

*)
ENTITY language
  SUBTYPE OF (group);
END_ENTITY;
(*

Informal Propositions:

IP1: The name shall specify a language code according to ISO 639-2.

IP2: If present, the description shall specify a country code according to to ISO 3166-1.

5.2.3.1.91 language_assignment

A language_assignment is a type of classification_assignment. It specifes a language for the items it is assigned to. This language shall be specified by the language that is referenced in the role of assigned_class.

EXPRESS specification:

*)
ENTITY language_assignment
  SUBTYPE OF (classification_assignment);
  items : SET [1:?] OF language_item;
WHERE
  WR1:  'AUTOMOTIVE_DESIGN.LANGUAGE' IN
             TYPEOF(SELF.assigned_class);
           
  WR2:  SELF.role.name = 'language';
           
  WR3:  SIZEOF( SELF.items ) = 
             SIZEOF( QUERY( i <* SELF.items |
               ('AUTOMOTIVE_DESIGN.REPRESENTATION' IN
                TYPEOF(i)) AND
               (i\representation.name = 'document content')
              ));
           
END_ENTITY;
(*

Attribute definitions:

items: the set of items to which a language is assigned.

Formal Propositions:

WR1: The instance referenced as assigned_class shall be of type language.

WR2: The name of the classification_role referenced as role shall be 'language'.

WR3: The representations in the set of items shall be of name 'document content'.

5.2.3.1.92 location_shape_representation

A location_shape_representation is a type of shape_representation that represents a geometric position or a reference point.

EXPRESS specification:

*)
ENTITY location_shape_representation
  SUBTYPE OF (shape_representation);
WHERE
  WR1:  SIZEOF(SELF.items) = 1;   
  WR2:  SIZEOF( QUERY( i <* SELF.items|
                'AUTOMOTIVE_DESIGN.POINT' IN TYPEOF(i)
              )) = 1;   
END_ENTITY;
(*

Formal Propositions:

WR1: The location_shape_representation shall have exactly one representation_item in its set of items.

WR2: The geometric element that is used to represent the location_shape_representation shall be a point.

5.2.3.1.93 locator

A locator is a type of feature_definition applicable to panel parts. A locator is a conical impression used to locate the panel in the tooling. See ARM definition for Locator_feature for more information.

EXPRESS specification:

*)
ENTITY locator
  SUBTYPE OF (feature_definition);
WHERE
  WR1:  SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) AND
               NOT ({2 <= SIZEOF(pdr.used_representation.items) <= 5})
             )) = 0;   
  WR2:  SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
              TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='diameter') AND
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2)
               )) = 1)
             )) = 1;   
  WR3:  SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
              TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='tip radius') AND
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2)
               )) = 1)
             )) <= 1;   
  WR4:  SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
              TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='tip angle') AND
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.PLANE_ANGLE_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2)
               )) = 1)
             )) = 1;   
  WR5:  SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
              TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='base radius') AND
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2)
               )) = 1)
             )) <= 1;   
END_ENTITY;
(*

Formal Propositions:

WR1: The implicit representation of the locator shall contain between two and five representation_items in its set of items.

WR2: The implicit representation of the locator shall contain exactly one representation_item of type measure_representation_item and length_measure_with_unit with a name of 'diameter'.

WR3: The implicit representation of the locator shall contain at most one representation_item of type measure_representation_item and length_measure_with_unit with a name of 'tip radius'.

WR4: The implicit representation of the locator shall contain exactly one representation_item of type measure_representation_item and plane_angle_measure_with_unit with a name of 'tip angle'.

WR5: The implicit representation of the locator shall contain at most one representation_item of type measure_representation_item and length_measure_with_unit with a name of 'base radius'.

5.2.3.1.94 modified_pattern

A modified_pattern is a type of replicate_feature that represents the result of a collection of omissions and offsets of a base feature in either a rectangular_pattern or a circular_pattern.

EXPRESS specification:

*)
ENTITY modified_pattern
  SUBTYPE OF (replicate_feature);
WHERE
  WR1:  SIZEOF( QUERY( sa <* get_shape_aspects(SELF) |
              (SIZEOF( QUERY( sar <* USEDIN( sa, 'AUTOMOTIVE_DESIGN.' +
                'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
                (sar.description = 'base pattern') AND
                (SIZEOF(['AUTOMOTIVE_DESIGN.CIRCULAR_PATTERN',
                  'AUTOMOTIVE_DESIGN.RECTANGULAR_PATTERN']
                  * TYPEOF(sar.related_shape_aspect.of_shape.definition)
                 ) = 1)
               )) = 1)
             )) = 1;   
  WR2:  SIZEOF( QUERY( sa <* get_shape_aspects(SELF) |
              (SIZEOF( QUERY( sar <* USEDIN( sa, 'AUTOMOTIVE_DESIGN.' +
                'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
                (SIZEOF( QUERY( sar1 <* USEDIN( sar.related_shape_aspect, 'AUTOMOTIVE_DESIGN.' +
                 'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
                 (sar.related_shape_aspect :<>: sar1.related_shape_aspect) AND
                 (SIZEOF(['AUTOMOTIVE_DESIGN.PATTERN_OFFSET_MEMBERSHIP',
 'AUTOMOTIVE_DESIGN.PATTERN_OMIT_MEMBERSHIP']
 * TYPEOF(sar1)
                  ) = 1)
                 )) = 1)
               )) >= 1)
             )) = 1;   
END_ENTITY;
(*

Formal Propositions:

WR1: The basis shape of the modified_pattern shall have an aspect of shape that is the relating_shape_aspect in exactly one shape_aspect_relationship that has a description of 'base pattern'. This shape_aspect_relationship shall refer as related_shape_aspect to an shape_aspect that is an aspect of the basis shape of either a circular_pattern or a rectangular_pattern.

WR2: The basis shape of the modified_pattern shall have an aspect of shape that is the relating_shape_aspect in at least one shape_aspect_relationship in which the related_shape_aspect is the related_shape_aspect in a different instance of shape_aspect_relationship that is either a pattern_offset_membership or pattern_omit_membership.

5.2.3.1.95 moments_of_inertia_representation

A moments_of_inertia_representation is a type of representation that describes the law of inertia in the context of the rotation of a rigid body. The 9 inertia values are represented as a list_representation_item containing 3 elements, each describing one row of the inertia matrix, and each having 3 elements that describe the columns of each row.

EXPRESS specification:

*)
ENTITY moments_of_inertia_representation
  SUBTYPE OF (representation);
WHERE
  WR1:  (SIZEOF(SELF.items) = 1) AND
             (SIZEOF( QUERY( i <* SELF.items |
                ('AUTOMOTIVE_DESIGN.COMPOUND_REPRESENTATION_ITEM' IN
                 TYPEOF(i)) AND
                (i.name = 'moments of inertia matrix')
               )) = 1);
           
  WR2:  SIZEOF( QUERY( i <* SELF.items |
               ('AUTOMOTIVE_DESIGN.COMPOUND_REPRESENTATION_ITEM' IN
                TYPEOF(i)) AND
               (SIZEOF(i\compound_representation_item.item_element) = 3) AND
               ('AUTOMOTIVE_DESIGN.LIST_REPRESENTATION_ITEM' IN
                TYPEOF(i\compound_representation_item.item_element)) AND
               value_range_aggregate_rep_item
                       (i\compound_representation_item.item_element)
              )) = 1;
           
END_ENTITY;
(*

Formal Propositions:

WR1: The moments_of_inertia_representation contains exactly one representation_item in its set of items. This representation_item is of type compound_representation_item and has a name of 'moments of inertia matrix'.

WR2: The compound_representation_item that is contained in the moments_of_inertia_representation references exactly three representation_items. These representation_items are of type compound_representation_item and reached through list_representation_item. Each of these compound_representation_items references three measure_representation_items through list_representation_item.

5.2.3.1.96 multi_language_attribute_assignment

The multi_language_attribute_assignment is a type of attribute_value_assignment. It specifies an alternative value for the string valued attribute of an existing entity and the name of that attribute.

EXPRESS specification:

*)
ENTITY multi_language_attribute_assignment
  SUBTYPE OF (attribute_value_assignment);
  items : SET [1:?] OF multi_language_attribute_item;
DERIVE
language : label := get_multi_language(SELF);
WHERE
  WR1:   SELF\attribute_value_assignment.role.name = 'alternate language';
           
  WR2:  (SIZEOF( USEDIN(SELF,'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')
               ) = 1 ) AND
             (SIZEOF( QUERY( ala <* USEDIN(SELF,'AUTOMOTIVE_DESIGN.' +
                      'ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') |
                ala.attribute_name = 'attribute_value'
               )) = 1 );
           
END_ENTITY;
(*

Attribute definitions:

items: the set of items for which an alternative string value is specified.

language: The language specifies the attribute_language_assignment that refers as items to this object and provides the information concerning the language, in which an attribute value is specified.

Formal Propositions:

WR1: The attribute_value_role specified by the multi_language_attribute_assignment shall have a name of 'alternate language'.

WR2: The multi_language_attribute_assignment shall be used exactly one time in role of items by an attribute_language_assignment. This attribute_language_assignment shall have a attribute_name of 'attribute_value'.

Informal Propositions:

IP1: The attribute_name shall be the name of the attribute for which an alternative value is specified.

5.2.3.1.97 named_unit_variable

A named_unit_variable is a type of named_unit and variable_semantics that represents the unit in an explicitly defined mathematical function.

EXPRESS specification:

*)
ENTITY named_unit_variable
  SUBTYPE OF (named_unit, variable_semantics);
INVERSE
associated_variable_environment: environment FOR semantics;
END_ENTITY;
(*

Attribute definitions:

associated_variable_environment: the environment that specifies the representation for the derived unit.

5.2.3.1.98 ngon_closed_profile

A ngon_closed_profile is a type of shape_aspect that consists of an enclosed 2D area and a reference system for the parameters of the ngon_closed_profile. The enclosed area is defined by three or more straight sides with the corners lying on one circle. The reference system is used to define location and orientation of the square_u_profile and consists of two orthogonal reference axes X and Y that intersect in a reference point. See ARM definition for Ngon_profile for more information.

EXPRESS specification:

*)
ENTITY ngon_closed_profile
  SUBTYPE OF (shape_aspect);
WHERE
  WR1:  'AUTOMOTIVE_DESIGN.FEATURE_COMPONENT_DEFINITION' IN
             TYPEOF(SELF.of_shape.definition);   
  WR2:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) 
              )) = 1;   
  WR3:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) AND
               {3 <= SIZEOF( pdr.used_representation.items) <= 4}
              )) = 1;   
  WR4:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                NOT(i.name IN ['orientation','number of sides','circumscribed diameter',
      'diameter across flats','corner radius'])
               )) = 0)
              )) = 1;   
  WR5:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                ('AUTOMOTIVE_DESIGN.PLACEMENT' IN TYPEOF(i)) AND
                (i.name = 'orientation')
                )) = 1)
              )) = 1;   
  WR6:  SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='number of sides') AND
                ('AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND
                ('AUTOMOTIVE_DESIGN.COUNT_MEASURE' IN 
                 TYPEOF(i\measure_with_unit.value_component))
               )) = 1)
              )) = 1;   
  WR7:  SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name IN ['circumscribed diameter','diameter across flats']) AND
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2)
               )) = 1)
              )) = 1;   
  WR8:  SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name = 'corner radius')
               )) <= 1) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name = 'corner radius') AND
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2)
               )) = 
               SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name = 'corner radius')
                )))
              )) = 1;   
END_ENTITY;
(*

Formal Propositions:

WR1: The ngon_closed_profile shall be an aspect of the shape of a feature_component_definition.

WR2: The ngon_closed_profile shall have exactly one implicit representation defined by a shape_representation_with_parameters.

WR3: The shape_representation_with_parameters that represents the ngon_closed_profile shall contain three or four representation_items in its set of items.

WR4: The implicit representation of an ngon_closed_profile shall contain only representation_items in its set of items that have a name of either 'orientation', 'number of sides', 'circumscribed diameter', 'diameter across flats', or 'corner radius'.

WR5: Exactly one representation_item used for the implicit representation of an ngon_closed_profile shall be of type placement with a name of `orientation'.

WR6: Exactly one representation_item used for the implicit representation of an ngon_closed_profile shall be of type measure_representation_item with a value_component of type count_measure and a name of `number of sides'.

WR7: Exactly one representation_item used for the implicit representation of an ngon_closed_profile shall be of type measure_representation_item and length_measure_with_unit with a name of either `circumscribed diameter' or 'diameter across flats'.

WR8: At most one representation_item used for the implicit representation of an ngon_closed_profile shall have a name of 'corner radius'. If present, this representation_item shall be of type measure_representation_item and length_measure_with_unit.

Informal Propositions:

IP1: The ngon_closed_profile shall be planar and shall lie in the X-Y plane of the reference system.

IP2: The reference point of the ngon_closed_profile is defined at the centre of the defining circle.

IP3: One of the sides of the ngon shall be parallel to the X direction intersecting the negative Y direction.

5.2.3.1.99 open_path_profile

An open_path_profile is a type of shape_aspect that consists of a connected set of curves and a reference system that may be used to place the open_path_profile. The start vertex and end vertex for the set of curves do not connect creating an area open on one side. The reference system consists of two orthogonal reference axes X and Y that intersect in a reference point. See ARM definition for General_open_profile for more information.

EXPRESS specification:

*)
ENTITY open_path_profile
  SUBTYPE OF (shape_aspect);
WHERE
  WR1:  'AUTOMOTIVE_DESIGN.FEATURE_COMPONENT_DEFINITION' IN
             TYPEOF(SELF.of_shape.definition);   
  WR2:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) 
              )) = 1;   
  WR3:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) AND
               (SIZEOF( pdr.used_representation.items) = 1)
              )) = 1;   
  WR4:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                ('AUTOMOTIVE_DESIGN.PLACEMENT' IN TYPEOF(i)) AND
                (i.name = 'orientation')
                )) = 1)
              )) = 1;   
  WR5:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.PATH_SHAPE_REPRESENTATION' IN 
                TYPEOF(pdr.used_representation)) 
              )) = 1;   
  WR6:  (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.PLANAR_SHAPE_REPRESENTATION' IN 
               TYPEOF(pdr.used_representation)) 
              )) <= 1) AND
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.PLANAR_SHAPE_REPRESENTATION' IN 
                TYPEOF(pdr.used_representation)) 
               )) =
              SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.PLANAR_SHAPE_REPRESENTATION' IN 
                TYPEOF(pdr.used_representation)) AND
               (pdr.used_representation.name = 'profile limit')
               )));   
END_ENTITY;
(*

Formal Propositions:

WR1: The open_path_profile shall be an aspect of the shape of a feature_component_definition.

WR2: The open_path_profile shall have exactly one implicit representation defined by a shape_representation_with_parameters.

WR3: The shape_representation_with_parameters that represents the open_path_profile shall contain exactly one representation_items in its set of items.

WR4: Exactly one representation_item used for the implicit representation of an open_path_profile shall be of type placement with a name of 'orientation'.

WR5: The open_path_profile shall have exactly one path_shape_representation.

WR6: The open_path_profile shall be represented by at most one planar_shape_representation. If present, this planar_shape_representation shall have a name of 'profile limit'.

Informal Propositions:

IP1: The open_path_profile shall be planar and shall lie in the X-Y plane of the reference system.

5.2.3.1.100 package_product_concept_feature

A package_product_concept_feature is a type of product_concept_feature that is a combination of product_concept_features that shall be offered to the market as a set. See ARM definition for Specification for more information.

EXPRESS specification:

*)
ENTITY package_product_concept_feature
  SUBTYPE OF (product_concept_feature);
WHERE
  WR1:  NOT ('AUTOMOTIVE_DESIGN.CONDITIONAL_CONCEPT_FEATURE' IN
                  TYPEOF(SELF));   
  WR2:  SIZEOF( QUERY( cfr <* USEDIN(SELF,'AUTOMOTIVE_DESIGN.CONCEPT_FEATURE_RELATIONSHIP.' +
          'RELATING_PRODUCT_CONCEPT_FEATURE') |
               ('AUTOMOTIVE_DESIGN.CONCEPT_FEATURE_RELATIONSHIP_WITH_CONDITION' IN
                TYPEOF(cfr)) AND
               (SIZEOF( QUERY( ipcf <* USEDIN(cfr,'AUTOMOTIVE_DESIGN.CONDITIONAL_CONCEPT_FEATURE.' +
                        'CONDITION') |
                  'AUTOMOTIVE_DESIGN.INCLUSION_PRODUCT_CONCEPT_FEATURE' IN
                  TYPEOF(ipcf)
                 )) = 1)
              )) > 0;
              
END_ENTITY;
(*

Formal Propositions:

WR1: An package_product_concept_feature shall not be of type conditional_concept_feature.

WR2: A package_product_concept_feature shall be referenced as relating_product_concept_feature by at least one concept_feature_relationship_with_condition which is referenced as condition by a conditional_concept_feature of type inclusion_product_concept_feature.

5.2.3.1.101 partial_circular_profile

A partial_circular_profile is a type of shape_aspect that consists of an arc of constant radius and a reference system for the parameters of the partial_circular_profile. The reference system is used to define location and orientation of the partial_circular_profile and consists of two orthogonal reference axes X and Y that intersect in a reference point. See ARM definition for Partial_circular_profile for more information.

EXPRESS specification:

*)
ENTITY partial_circular_profile
  SUBTYPE OF (shape_aspect);
WHERE
  WR1:  'AUTOMOTIVE_DESIGN.FEATURE_COMPONENT_DEFINITION' IN
             TYPEOF(SELF.of_shape.definition);   
  WR2:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) 
              )) = 1;   
  WR3:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) AND
               (SIZEOF( pdr.used_representation.items) = 3)
              )) = 1;   
  WR4:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                NOT(i.name IN ['orientation','sweep angle','radius'])
               )) = 0)
              )) = 1;   
  WR5:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                ('AUTOMOTIVE_DESIGN.PLACEMENT' IN TYPEOF(i)) AND
                (i.name = 'orientation')
                )) = 1)
              )) = 1;   
  WR6:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
             ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
              TYPEOF(pdr.used_representation)) AND
             (SIZEOF( QUERY( i <* pdr.used_representation.items |
               (i.name='radius') AND
               (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
                        'AUTOMOTIVE_DESIGN.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
                ) = 2)
              )) = 1)
             )) = 1;   
  WR7:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
             ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
              TYPEOF(pdr.used_representation)) AND
             (SIZEOF( QUERY( i <* pdr.used_representation.items |
               (i.name='sweep angle') AND
               (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
                        'AUTOMOTIVE_DESIGN.PLANE_ANGLE_MEASURE_WITH_UNIT']*TYPEOF(i)
                ) = 2)
              )) = 1)
             )) = 1;   
  WR8:  (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.PLANAR_SHAPE_REPRESENTATION' IN 
               TYPEOF(pdr.used_representation)) 
              )) <= 1) AND
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.PLANAR_SHAPE_REPRESENTATION' IN 
                TYPEOF(pdr.used_representation)) 
               )) =
              SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.PLANAR_SHAPE_REPRESENTATION' IN 
                TYPEOF(pdr.used_representation)) AND
               (pdr.used_representation.name = 'profile limit')
               )));   
END_ENTITY;
(*

Formal Propositions:

WR1: The partial_circular_profile shall be an aspect of the shape of a feature_component_definition.

WR2: The partial_circular_profile shall have exactly one implicit representation defined by a shape_representation_with_parameters.

WR3: The shape_representation_with_parameters that represents the partial_circular_profile shall contain exactly three representation_items in its set of items.

WR4: The implicit representation of the partial_circular_profile shall contain only representation_items that have a name of 'orientation', 'sweep angle', or 'radius'.

WR5: Exactly one representation_item used for the implicit representation of a partial_circular_profile shall be of type placement with a name of `orientation'.

WR6: Exactly one representation_item used for the implicit representation of a partial_circular_profile shall be of type measure_representation_item and length_measure_with_unit with a name of `radius'.

WR7: Exactly one representation_item used for the implicit representation of a partial_circular_profile shall be of type measure_representation_item and plane_angle_measure_with_unit with a name of `sweep angle'.

WR8: The partial_circular_profile shall be represented by at most one planar_shape_representation. If present, this planar_shape_representation shall have a name of 'profile limit'.

Informal Propositions:

IP1: The partial_circular_profile shall be planar and shall lie in the X-Y plane of the reference system.

IP2: The reference point of the partial_circular_profile is defined at the arc origin.

IP3: The arc that defines the partial_circular_profile shall start at the X axis.

5.2.3.1.102 path_feature_component

A path_feature_component is a type of shape_aspect that represents a path used to define preconceived form patterns. The path_feature_component may be represented explicitly by a curve or a set of curves or implicitly by parameters that are defined in a reference system. The reference system is an axis_placement. See ARM definition for Path, for General_path, for Linear_path, for Circular_path, for Complete_circular_path, and for Partial_circular_path for more information.

EXPRESS specification:

*)
ENTITY path_feature_component
  SUBTYPE OF (shape_aspect);
WHERE
  WR1:  'AUTOMOTIVE_DESIGN.FEATURE_COMPONENT_DEFINITION' IN
             TYPEOF(SELF.of_shape.definition);
           
  WR2:  SELF.description IN ['partial circular','complete circular',
         'linear','complex'];
           
  WR3:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) 
              )) = 1;   
  WR4:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                ('AUTOMOTIVE_DESIGN.PLACEMENT' IN TYPEOF(i)) AND
                (i.name = 'orientation')
                )) = 1)
              )) = 1;   
  WR5:  (SELF.description <> 'partial circular') OR
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) AND
               (SIZEOF(pdr.used_representation.items) = 3)
              )) = 1);   
  WR6:  (SELF.description <> 'partial circular') OR
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='radius') AND
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2)
               )) = 1)
              )) = 1);   
  WR7:  (SELF.description <> 'partial circular') OR
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='sweep angle') AND
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.PLANE_ANGLE_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2)
               )) = 1)
              )) = 1);   
  WR8:  (SELF.description <> 'complete circular') OR
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) AND
               (SIZEOF(pdr.used_representation.items) = 2)
              )) = 1);   
  WR9:  (SELF.description <> 'complete circular') OR
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='radius') AND
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2)
               )) = 1)
              )) = 1);   
  WR10: (SELF.description <> 'linear') OR
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) AND
               (SIZEOF(pdr.used_representation.items) = 2)
              )) = 1);   
  WR11: (SELF.description <> 'linear') OR
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='distance') AND
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2)
               )) = 1)
              )) = 1);   
  WR12:  (SELF.description <> 'complex') OR
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.PATH_SHAPE_REPRESENTATION' IN 
               TYPEOF(pdr.used_representation)) AND
              (pdr.name='sweep path') 
              )) = 1) AND
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.PATH_SHAPE_REPRESENTATION' IN 
               TYPEOF(pdr.used_representation)) AND
              (pdr.name='sweep path') AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='path curve') AND
                ('AUTOMOTIVE_DESIGN.CURVE' IN TYPEOF(i))
               )) = 1)
              )) = 1);   
  WR13: (SELF.description <> 'complex') OR
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) AND
               (SIZEOF(pdr.used_representation.items) = 1)
              )) = 1);   
END_ENTITY;
(*

Formal Propositions:

WR1: The path_feature_component shall be an aspect of the shape of a feature_component_definition.

WR2: The description for the path_feature_component shall be either 'partial circular', 'complete circular', 'linear', or 'complex'.

WR3: The path_feature_component shall have exactly one implicit representation of type shape_representation_with_parameters.

WR4: The implicit representation of the path_feature_component shall contain one representation_item of type placement and a name of 'orientation'.

WR5: If the description of the path_feature_component is 'partial circular', the implicit representation of the path_feature_component shall contain exactly three representation_items in its set of items.

WR6: If the description of the path_feature_component is 'partial circular', exactly one representation_item used for the implicit representation of the path_feature_component shall be of type measure_representation_item and length_measure_with_unit with a name of 'radius'.

WR7: If the description of the path_feature_component is 'partial circular', exactly one representation_item used for the implicit representation of the path_feature_component shall be of type measure_representation_item and plane_angle_measure_with_unit with a name of 'sweep angle'.

WR8: If the description of the path_feature_component is 'complete circular', the implicit representation of the path_feature_component shall contain exactly two representation_items in its set of items.

WR9: If the description of the path_feature_component is 'complete circular', exactly one representation_item used for the implicit representation of the path_feature_component shall be of type measure_representation_item and length_measure_with_unit with a name of 'radius'.

WR10: If the description of the path_feature_component is 'linear', the implicit representation of the path_feature_component shall contain exactly two representation_items in its set of items.

WR11: If the description of the path_feature_component is 'linear', exactly one representation_item used for the implicit representation of the path_feature_component shall be of type measure_representation_item and length_measure_with_unit with a name of 'distance'.

WR12: If the description of the path_feature_component is 'complex', the path_feature_component shall have exactly one path_shape_representation with a name of 'sweep path'. This path_shape_representation shall contain a curve with a name of 'path curve'.

WR13: If the description of the path_feature_component is 'complex', the implicit representation of the path_feature_component shall contain exactly one representation_items in its set of items.

5.2.3.1.103 path_shape_representation

A path_shape_representation is a type of shape_representation that represents a curved path such that the collection of curves is continuous and directed.

EXPRESS specification:

*)
ENTITY path_shape_representation
  SUBTYPE OF (shape_representation);
WHERE
  WR1:  SIZEOF(SELF.items) = 1;
           
  WR2:  SIZEOF( QUERY( i <* SELF.items |
              (SIZEOF(['AUTOMOTIVE_DESIGN.BOUNDED_CURVE',
                       'AUTOMOTIVE_DESIGN.EDGE_CURVE',
                       'AUTOMOTIVE_DESIGN.PATH'] 
                       * TYPEOF(i)
                ) = 1) 
              )) = 1;   
END_ENTITY;
(*

Formal Propositions:

WR1: The path_shape_representation shall have exactly one representation_item in its set of items.

WR2: The geometric element that is used to represent the path_shape_representation shall be a bounded_curve, an edge_curve, or a path.

5.2.3.1.104 pattern_offset_membership

A pattern_offset_membership specifies the relationships necessary to offset a feature from either a rectangular_pattern or a circular_pattern.

EXPRESS specification:

*)
ENTITY pattern_offset_membership
  SUBTYPE OF (feature_component_relationship);
WHERE
  WR1:  SIZEOF(['AUTOMOTIVE_DESIGN.CIRCULAR_PATTERN',
                     'AUTOMOTIVE_DESIGN.RECTANGULAR_PATTERN']
                     * TYPEOF(SELF.relating_shape_aspect.of_shape.definition)
              ) = 1;   
  WR2:  SIZEOF( QUERY( sar <* USEDIN(SELF.related_shape_aspect,
               'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
               ('AUTOMOTIVE_DESIGN.FEATURE_COMPONENT_RELATIONSHIP' IN
                TYPEOF(sar)) AND
               ('AUTOMOTIVE_DESIGN.MODIFIED_PATTERN' IN
                TYPEOF(sar.relating_shape_aspect.of_shape.definition)) AND
               (sar.description = 'modified pattern')
              )) >= 1;   
  WR3:  SIZEOF( get_property_definition_representations(SELF.related_shape_aspect.of_shape.definition) 
              ) = 1;   
  WR4:  NOT('AUTOMOTIVE_DESIGN.CIRCULAR_PATTERN' IN
                 TYPEOF(SELF.relating_shape_aspect.of_shape.definition)) OR
             (SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF.related_shape_aspect.of_shape.definition) |
               (SIZEOF( pdr.used_representation.items) = 2)
              )) = 1);   
  WR5:  NOT('AUTOMOTIVE_DESIGN.CIRCULAR_PATTERN' IN
                 TYPEOF(SELF.relating_shape_aspect.of_shape.definition)) OR
             (SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF.related_shape_aspect.of_shape.definition) |
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='index number') AND
                ('AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND
                ('AUTOMOTIVE_DESIGN.COUNT_MEASURE' IN 
                 TYPEOF(i\measure_with_unit.value_component))
               )) = 1)
              )) = 1);   
  WR6:  NOT('AUTOMOTIVE_DESIGN.CIRCULAR_PATTERN' IN
                 TYPEOF(SELF.relating_shape_aspect.of_shape.definition)) OR
             (SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF.related_shape_aspect.of_shape.definition) |
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='offset') AND
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.PLANE_ANGLE_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2)
               )) = 1)
              )) = 1);   
  WR7:  NOT('AUTOMOTIVE_DESIGN.RECTANGULAR_PATTERN' IN
                 TYPEOF(SELF.relating_shape_aspect.of_shape.definition)) OR
             (SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF.related_shape_aspect.of_shape.definition) |
               (SIZEOF( pdr.used_representation.items) = 3)
              )) = 1);   
  WR8:  NOT('AUTOMOTIVE_DESIGN.RECTANGULAR_PATTERN' IN
                 TYPEOF(SELF.relating_shape_aspect.of_shape.definition)) OR
             (SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF.related_shape_aspect.of_shape.definition) |
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='row index') AND
                ('AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND
                ('AUTOMOTIVE_DESIGN.COUNT_MEASURE' IN 
                 TYPEOF(i\measure_with_unit.value_component))
               )) = 1)
              )) = 1);   
  WR9:  NOT('AUTOMOTIVE_DESIGN.RECTANGULAR_PATTERN' IN
                 TYPEOF(SELF.relating_shape_aspect.of_shape.definition)) OR
             (SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF.related_shape_aspect.of_shape.definition) |
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='column index') AND
                ('AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND
                ('AUTOMOTIVE_DESIGN.COUNT_MEASURE' IN 
                 TYPEOF(i\measure_with_unit.value_component))
               )) = 1)
              )) = 1);   
  WR10: NOT('AUTOMOTIVE_DESIGN.RECTANGULAR_PATTERN' IN
                 TYPEOF(SELF.relating_shape_aspect.of_shape.definition)) OR
              (SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF.related_shape_aspect.of_shape.definition) |
               (SIZEOF( QUERY( i <* pdr.used_representation.items |
                 (i.name='offset distance') AND
                 (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
 'AUTOMOTIVE_DESIGN.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
                  ) = 2)
                )) = 1)
               )) = 1);   
  WR11: NOT('AUTOMOTIVE_DESIGN.RECTANGULAR_PATTERN' IN
                 TYPEOF(SELF.relating_shape_aspect.of_shape.definition)) OR
              (SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF.related_shape_aspect.of_shape.definition) |
                ('AUTOMOTIVE_DESIGN.DIRECTION_SHAPE_REPRESENTATION' IN
                 TYPEOF(pdr.used_representation)) AND
                (pdr.used_representation.name = 'offset direction')
               )) = 1);   
END_ENTITY;
(*

Formal Propositions:

WR1: The pattern_offset_membership shall refer as relating_shape_aspect to an aspect of the basis shape of either a circular_pattern or a rectangular_pattern.

WR2: The related_shape_aspect that defines the offset in the pattern_offset_membership shall be incorporated in at least one basis shape of a modified_pattern by a feature_component_relationship with a description of 'modified pattern'.

WR3: The shape_aspect that is referenced as related_shape_aspect of the pattern_offset_membership shall have exactly one representation.

WR4: If the shape_aspect referenced by the relating_shape_aspect of the pattern_offset_membership is an aspect of the basis shape of a circular_pattern, the representation of the shape_aspect referenced as the related_shape_aspect of the pattern_offset_membership shall contain two representation_items in its set of items.

WR5: If the shape_aspect referenced as the relating_shape_aspect of the pattern_offset_membership is an aspect of the basis shape of a circular_pattern, exactly one representation_item used for the representation of the shape_aspect referenced by the related_shape_aspect of the pattern_offset_membership shall be of type measure_representation_item with a value_component of type count_measure and a name of 'index number'.

WR6: If the shape_aspect referenced by the relating_shape_aspect of the pattern_offset_membership is an aspect of the basis shape of a circular_pattern, exactly one representation_item used for the representation of the shape_aspect referenced by the related_shape_aspect of the pattern_offset_membership shall be of type measure_representation_item and plane_angle_measure_with_unit with a name of 'offset'.

WR7: If the shape_aspect referenced as the relating_shape_aspect of the pattern_offset_membership is an aspect of the basis shape of a rectangular_pattern, the representation of the shape_aspect referenced by the related_shape_aspect of the pattern_offset_membership shall contain three representation_items in its set of items.

WR8: If the shape_aspect referenced as the relating_shape_aspect of the pattern_offset_membership is an aspect of the basis shape of a rectangular_pattern, exactly one representation_item used for the representation of the shape_aspect referenced by the related_shape_aspect of the pattern_offset_membership shall be of type measure_representation_item with a value_component of type count_measure and a name of 'row index'.

WR9: If the shape_aspect referenced as the relating_shape_aspect of the pattern_offset_membership is an aspect of the basis shape of a rectangular_pattern, exactly one representation_item used for the representation of the shape_aspect referenced by the related_shape_aspect of the pattern_offset_membership shall be of type measure_representation_item with a value_component of type count_measure and a name of 'column index'.

WR10: If the shape_aspect referenced as the relating_shape_aspect of the pattern_offset_membership is an aspect of the basis shape of a rectangular_pattern, exactly one representation_item used for the representation of the shape_aspect referenced by the related_shape_aspect of the pattern_offset_membership shall be of type measure_representation_item and length_measure_with_unit with a name of 'offset distance'.

WR11: If the shape_aspect referenced as the relating_shape_aspect of the pattern_offset_membership is an aspect of the basis shape of a rectangular_pattern, the shape_aspect referenced by the related_shape_aspect of the pattern_offset_membership shall have exactly one direction_shape_representation with a name of 'offset direction'.

5.2.3.1.105 pattern_omit_membership

A pattern_omit_membership specifies the relationships necessary to omit a feature from either a rectangular_pattern or a circular_pattern.

EXPRESS specification:

*)
ENTITY pattern_omit_membership
  SUBTYPE OF (feature_component_relationship);
WHERE
  WR1:  SIZEOF(['AUTOMOTIVE_DESIGN.CIRCULAR_PATTERN',
                     'AUTOMOTIVE_DESIGN.RECTANGULAR_PATTERN']
                     * TYPEOF(SELF.relating_shape_aspect.of_shape.definition)
              ) = 1;   
  WR2:  SIZEOF( QUERY( sar <* USEDIN(SELF.related_shape_aspect,
               'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
               ('AUTOMOTIVE_DESIGN.FEATURE_COMPONENT_RELATIONSHIP' IN
                TYPEOF(sar)) AND
               ('AUTOMOTIVE_DESIGN.MODIFIED_PATTERN' IN
                TYPEOF(sar.relating_shape_aspect.of_shape.definition)) AND
               (sar.description = 'modified pattern')
              )) >= 1;   
  WR3:  SIZEOF( get_property_definition_representations(SELF.related_shape_aspect.of_shape.definition) 
              ) = 1;   
  WR4:  NOT('AUTOMOTIVE_DESIGN.CIRCULAR_PATTERN' IN
                 TYPEOF(SELF.relating_shape_aspect.of_shape.definition)) OR
             (SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF.related_shape_aspect.of_shape.definition) |
               (SIZEOF( pdr.used_representation.items) = 1)
              )) = 1);   
  WR5:  NOT('AUTOMOTIVE_DESIGN.CIRCULAR_PATTERN' IN
                 TYPEOF(SELF.relating_shape_aspect.of_shape.definition)) OR
             (SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF.related_shape_aspect.of_shape.definition) |
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='index number') AND
                ('AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND
                ('AUTOMOTIVE_DESIGN.COUNT_MEASURE' IN 
                 TYPEOF(i\measure_with_unit.value_component))
               )) = 1)
              )) = 1);   
  WR6:  NOT('AUTOMOTIVE_DESIGN.RECTANGULAR_PATTERN' IN
                 TYPEOF(SELF.relating_shape_aspect.of_shape.definition)) OR
             (SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF.related_shape_aspect.of_shape.definition) |
               (SIZEOF( pdr.used_representation.items) = 2)
              )) = 1);   
  WR7:  NOT('AUTOMOTIVE_DESIGN.RECTANGULAR_PATTERN' IN
                 TYPEOF(SELF.relating_shape_aspect.of_shape.definition)) OR
             (SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF.related_shape_aspect.of_shape.definition) |
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='row index') AND
                ('AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND
                ('AUTOMOTIVE_DESIGN.COUNT_MEASURE' IN 
                 TYPEOF(i\measure_with_unit.value_component))
               )) = 1)
              )) = 1);   
  WR8:  NOT('AUTOMOTIVE_DESIGN.RECTANGULAR_PATTERN' IN
                 TYPEOF(SELF.relating_shape_aspect.of_shape.definition)) OR
             (SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF.related_shape_aspect.of_shape.definition) |
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='column index') AND
                ('AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND
                ('AUTOMOTIVE_DESIGN.COUNT_MEASURE' IN 
                 TYPEOF(i\measure_with_unit.value_component))
               )) = 1)
              )) = 1);   
END_ENTITY;
(*

Formal Propositions:

WR1: The pattern_omit_membership shall refer as relating_shape_aspect to an aspect of the basis shape of either a circular_pattern or a rectangular_pattern.

WR2: The related_shape_aspect that defines the omission in the pattern_offset_membership shall be incorporated in at least one basis shape of a modified_pattern by a feature_component_relationship with a description of 'modified pattern'.

WR3: The shape_aspect that is referenced by related_shape_aspect of the pattern_omit_membership shall have exactly one representation.

WR4: If the shape_aspect referenced as the relating_shape_aspect of the pattern_omit_membership is an aspect of the shape of the basis shape of a circular_pattern, the representation of the shape_aspect referenced by the related_shape_aspect of the pattern_omit_membership shall contain one representation_item in its set of items.

WR5: If the shape_aspect referenced by the relating_shape_aspect of the pattern_omit_membership is an aspect of the basis shape of a circular_pattern, exactly one representation_item used for the representation of the shape_aspect referenced by the related_shape_aspect of the pattern_omit_membership shall be of type measure_representation_item with a value_component of type count_measure and a name of 'index number'.

WR6: If the shape_aspect referenced by the relating_shape_aspect of the pattern_omit_membership is an aspect of the basis shape of a rectangular_pattern, the representation of the shape_aspect referenced by the related_shape_aspect of the pattern_omit_membership shall contain two representation_items in its set of items.

WR7: If the shape_aspect referenced by the relating_shape_aspect of the pattern_omit_membership is an aspect of the basis shape of a rectangular_pattern, exactly one representation_item used for the representation of the shape_aspect referenced by the related_shape_aspect of the pattern_omit_membership shall be of type measure_representation_item with a value_component of type count_measure and a name of 'row index'.

WR8: If the shape_aspect referenced by the relating_shape_aspect of the pattern_omit_membership is an aspect of the basis shape of a rectangular_pattern, exactly one representation_item used for the representation of the shape_aspect referenced by the related_shape_aspect of the pattern_omit_membership shall be of type measure_representation_item with a value_component of type count_measure and a name of 'column index'.

5.2.3.1.106 person_and_organization_address

A person_and_organization_address is a type of personal_address and organizational_address. It specifies the relevant address of a person_and_organization. See ARM definition for Person_in_organization for more information.

EXPRESS specification:

*)
ENTITY person_and_organization_address
  SUBTYPE OF (organizational_address,personal_address);
WHERE
  WR1:  SIZEOF(SELF\personal_address.people) = 1;
  WR2:  SIZEOF (SELF\organizational_address.organizations) = 1;
  WR3:  SIZEOF(QUERY(pao <* USEDIN (SELF.people[1],
                     'AUTOMOTIVE_DESIGN.PERSON_AND_ORGANIZATION.THE_PERSON') |
                      pao.the_organization :=: SELF\organizational_address.organizations[1]))
                      = 1;
END_ENTITY;
(*

Formal Propositions:

WR1: There shall be exactly one item of type person in the set of people.

WR2: There shall be exactly one item of type organization in the set of organizations.

WR3: For each instance of type person_and_organization_address there exist a corresponding instance of type person_and_organization. The instance referenced by the attribute people of the instance of type person_and_organization_address is identical to the instance referenced by the attribute the_person of the instance of type person_and_organization. The instance referenced by the attribute organizations of the instance of type person_and_organization_address is identical to the instance referenced by the attribute the_organization of the instance of type person_and_organization.

5.2.3.1.107 physically_modelled_product_definition

A physically_modelled_product_definition is a type of product_definition_with_associated_documents that specifies a model of a shape of the part which is physically available. See ARM definition for Physical_model for more information.

EXPRESS specification:

*)
ENTITY physically_modelled_product_definition
  SUBTYPE OF (product_definition_with_associated_documents);
WHERE
  WR1:  SELF.frame_of_reference\application_context_element.name = 'physical model occurrence';   
  WR2:  (SIZEOF(documentation_ids) = 1) AND 
             (SIZEOF(QUERY ( d <* documentation_ids | 
                (SIZEOF(QUERY ( drt <* d.representation_types | 
                   (drt.name = 'physical') 
                  )) = 1) 
               )) = 1);
           
END_ENTITY;
(*

Formal Propositions:

WR1: The physically_modelled_product_definition shall reference as its frame_of_reference a product_definition_context that has a name of 'physical model occurrence'.

WR2: The physically_modelled_product_definition shall have exactly one document in its set of documentation_ids. This document shall reference as its representation_type a document_representation_type that has a name of 'physical'.

Informal Propositions:

IP1: In case the physically_modelled_product_definition is not referenced by a product_definition_shape as the definition, the scale shall be 1:1.

5.2.3.1.108 placed_datum_target_feature

A placed_datum_target_feature is a type of datum_target that represents the implicit definition of a datum target for tolerancing purposes. See ARM definition for Placed_target for more information.

EXPRESS specification:

*)
ENTITY placed_datum_target_feature
  SUBTYPE OF (datum_target);
WHERE
  WR1:  SELF.description IN ['point','line','rectangle','circle'];
           
  WR2:  SIZEOF (QUERY (pdr <* get_shape_aspect_property_definition_representations(SELF) |
              'AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS'
               IN TYPEOF (pdr.used_representation)
              )) = 1;   
  WR3:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
             ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
              TYPEOF(pdr.used_representation)) AND
             (SIZEOF( QUERY( i <* pdr.used_representation.items |
               (i.name='orientation') AND
               ('AUTOMOTIVE_DESIGN.PLACEMENT' IN TYPEOF(i))
              )) = 1)
             )) = 1;   
  WR4:  (SELF.description <> 'point') OR
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF(pdr.used_representation.items)
                = 1)
              )) = 1);   
  WR5:  (SELF.description <> 'circle') OR
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF(pdr.used_representation.items)
                = 2)
              )) = 1);   
  WR6:  (SELF.description <> 'rectangle') OR
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF(pdr.used_representation.items)
                = 3)
              )) = 1);   
  WR7:  (SELF.description <> 'circle') OR
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='target diameter') AND
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2)
               )) = 1)
              )) = 1);   
  WR8:  (SELF.description <> 'line') OR
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='target length') AND
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2)
               )) = 1)
              )) = 1);   
  WR9:  (SELF.description <> 'rectangle') OR
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='target length') AND
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2)
               )) = 1)
              )) = 1);   
  WR10: (SELF.description <> 'rectangle') OR
              (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) AND
               (SIZEOF( QUERY( i <* pdr.used_representation.items |
                 (i.name='target width') AND
                 (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
 'AUTOMOTIVE_DESIGN.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
                  ) = 2)
                )) = 1)
               )) = 1);   
END_ENTITY;
(*

Formal Propositions:

WR1: The description for the placed_datum_target_feature shall be either 'point', 'line', 'rectangle' or 'circle'.

WR2: A placed_datum_target_feature shall have exactly one implicit representation.

WR3: Exactly one representation_item used for the implicit representation of the placed_datum_target_feature shall be of type placement with a name of 'orientation'.

WR4: If the placed_datum_target_feature is a point, the representation shall contain exactly one representation_item in its set of items.

WR5: If the placed_datum_target_feature is a line or circle, the representation shall contain exactly two representation_items in its set of items.

WR6: If the placed_datum_target_feature is a rectangle, the representation shall contain exactly three representation_items in its set of items.

WR7: If the description of the placed_datum_target_feature is 'circle', exactly one representation_item used for the implicit representation of the placed_datum_target_feature shall be of type measure_representation_item and length_measure_with_unit with a name of 'target diameter'.

WR8: If the description of the placed_datum_target_feature is 'line', exactly one representation_item used for the implicit representation of the placed_datum_target_feature shall be of type measure_representation_item and length_measure_with_unit with a name of 'target length'.

WR9: If the description of the placed_datum_target_feature is 'rectangle', exactly one representation_item used for the implicit representation of the placed_datum_target_feature shall be of type measure_representation_item and length_measure_with_unit with a name of 'target length'.

WR10: If the description of the placed_datum_target_feature is 'rectangle', exactly one representation_item used for the implicit representation of the placed_datum_target_feature shall be of type measure_representation_item and length_measure_with_unit with a name of 'target width'.

5.2.3.1.109 placed_feature

A placed_feature is a type of shape_aspect that is the identification of a preconceived form pattern on a part as a result of the placement of a feature_definition which is defined in its own context. See ARM definition for Placed_feature for more information.

EXPRESS specification:

*)
ENTITY placed_feature
  SUBTYPE OF (shape_aspect);
WHERE
  WR1:  'AUTOMOTIVE_DESIGN.PRODUCT_DEFINITION' IN
             TYPEOF(SELF.of_shape.definition);   
  WR2:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION' IN 
               TYPEOF(pdr.used_representation)) AND
              (pdr.used_representation.name = 'feature definition placement') AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                ('AUTOMOTIVE_DESIGN.MAPPED_ITEM' IN
                 TYPEOF(i)) AND
                (SIZEOF( QUERY( pdr1 <* USEDIN(i\mapped_item.mapping_source.mapped_representation,
                        'AUTOMOTIVE_DESIGN.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION') |
                  ('AUTOMOTIVE_DESIGN.FEATURE_DEFINITION' IN 
                   TYPEOF(pdr1.definition\property_definition.definition))
                  )) = 1)
                )) = 1)
              )) = 1;   
  WR3:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.PLANAR_SHAPE_REPRESENTATION' IN 
               TYPEOF(pdr.used_representation)) AND
              (pdr.used_representation.name = 'maximum feature limit')
              )) = 1;   
END_ENTITY;
(*

Formal Propositions:

WR1: The placed_feature shall be an aspect of the shape of a product_definition.

WR2: The placed_feature shall have a shape_representation with a name of 'feature definition placement' that contains a mapped_item in its set of items. This mapped_item shall reference a representation_map that references the shape_representation of a feature_definition as mapped_representation.

WR3: The placed_feature shall be represented by exactly one planar_shape_representation. This planar_shape_representation shall have a name of 'maximum feature limit'.

Informal Propositions:

IP1: If an placed_feature has a shape_representation and if the product_definition_shape that is referenced as of_shape by the placed_feature has a shape_representation then these shape_representations shall have the same geometric_representation_context.

5.2.3.1.110 planar_shape_representation

A planar_shape_representation is a type of shape_representation that represents a plane.

EXPRESS specification:

*)
ENTITY planar_shape_representation
  SUBTYPE OF (shape_representation);
WHERE
  WR1:  SIZEOF(SELF.items) = 1;   
  WR2:  SIZEOF( QUERY( i <* SELF.items |
              'AUTOMOTIVE_DESIGN.PLANE' IN TYPEOF(i)
              )) = 1;   
  WR3:  SELF.name IN ['profile limit','maximum feature limit'];   
  WR4:  (SELF.name <> 'maximum feature limit') OR
             (SIZEOF( QUERY( pdr <* USEDIN(SELF,
                      'AUTOMOTIVE_DESIGN.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION') |
               SIZEOF( QUERY( sa <* get_shape_aspects(pdr.definition\property_definition.definition) |
                 SIZEOF(['AUTOMOTIVE_DESIGN.INSTANCED_FEATURE',
'AUTOMOTIVE_DESIGN.PLACED_FEATURE'] *
TYPEOF(sa)
                  ) = 1
                 )) = 1
               )) = 1);   
  WR5:  (SELF.name <> 'profile limit') OR
             (SIZEOF( QUERY( pdr <* USEDIN(SELF,
                      'AUTOMOTIVE_DESIGN.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION') |
               SIZEOF( QUERY( sa <* get_shape_aspects(pdr.definition\property_definition.definition) |
                 SIZEOF(['AUTOMOTIVE_DESIGN.OPEN_PATH_PROFILE',
'AUTOMOTIVE_DESIGN.PARTIAL_CIRCULAR_PROFILE',
'AUTOMOTIVE_DESIGN.ROUNDED_U_PROFILE',
'AUTOMOTIVE_DESIGN.SQUARE_U_PROFILE',
'AUTOMOTIVE_DESIGN.TEE_PROFILE',
'AUTOMOTIVE_DESIGN.VEE_PROFILE'] *
TYPEOF(sa)
                  ) = 1
                 )) = 1
               )) = 1);   
END_ENTITY;
(*

Formal Propositions:

WR1: The planar_shape_representation shall contain exactly one representation_item in its set of items.

WR2: The planar_shape_representation shall refer to a plane as its representation.

WR3: The planar_shape_representation shall have a name of either 'profile limit' or 'maximum feature limit'.

WR4: If the planar_shape_representation has a name of 'maximum feature limit', it shall be the representation of a shape_aspect that is either of type instanced_feature or placed_feature.

WR5: If the planar_shape_representation has a name of 'profile limit', it shall be the representation of a shape_aspect that is of type open_path_profile, partial_circular_profile, rounded_u_profile, square_u_profile, tee_profile, or vee_profile.

5.2.3.1.111 pocket

A pocket is a type of feature_definition that is the representation of a volume that is removed from a solid base shape. This volume may be enclosed in which case it is represented by sweeping a closed profile along a linear path represented by a path_feature_component. If the removed volume is not enclosed it is represented by sweeping an open profile. The bottom of the pocket is represented by a pocket_bottom. The walls of a pocket may have a slope that is represented by a taper. See ARM definition for General_pocket in paragraph 4.2.299, Rectangular_closed_pocket in paragraph 4.2.421, and Rectangular_open_pocket in paragraph 4.2.425 for more information.

EXPRESS specification:

*)
ENTITY pocket
  SUBTYPE OF (feature_definition);
WHERE
  WR1:  SELF.description IN ['open rectangular','closed rectangular',
         'complex'];   
  WR2:  (SELF.description <> 'complex') OR
             (SIZEOF( QUERY( sa <* get_shape_aspects(SELF) |
               (sa.description = 'boundary occurrence') AND
               (SIZEOF( QUERY( sar <* USEDIN( sa, 'AUTOMOTIVE_DESIGN.' +
                 'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
                 ('AUTOMOTIVE_DESIGN.SHAPE_DEFINING_RELATIONSHIP' IN
                  TYPEOF(sar)) AND
                 (sar.description = 'profile usage')  AND
                 (SIZEOF (['AUTOMOTIVE_DESIGN.CIRCULAR_CLOSED_PROFILE',
  'AUTOMOTIVE_DESIGN.NGON_CLOSED_PROFILE',
  'AUTOMOTIVE_DESIGN.CLOSED_PATH_PROFILE',
  'AUTOMOTIVE_DESIGN.PARTIAL_CIRCULAR_PROFILE',
  'AUTOMOTIVE_DESIGN.ROUNDED_U_PROFILE',
  'AUTOMOTIVE_DESIGN.VEE_PROFILE',
  'AUTOMOTIVE_DESIGN.TEE_PROFILE',
  'AUTOMOTIVE_DESIGN.OPEN_PATH_PROFILE'] 
  * TYPEOF (sar.relating_shape_aspect)
                  ) =1)
                )) = 1 )
              )) = 1);   
  WR3:  (SELF.description <> 'closed rectangular') OR
             (SIZEOF( QUERY( sa <* get_shape_aspects(SELF) |
               (sa.description = 'closed boundary occurrence') AND
               (SIZEOF( QUERY( sar <* USEDIN( sa, 'AUTOMOTIVE_DESIGN.' +
                 'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
                 ('AUTOMOTIVE_DESIGN.SHAPE_DEFINING_RELATIONSHIP' IN
                  TYPEOF(sar)) AND
                 (sar.description = 'profile usage')  AND
                 ('AUTOMOTIVE_DESIGN.RECTANGULAR_CLOSED_PROFILE' IN
                  TYPEOF(sar.relating_shape_aspect))
                )) = 1 )
              )) = 1);   
  WR4:  (SELF.description <> 'open rectangular') OR
             (SIZEOF( QUERY( sa <* get_shape_aspects(SELF) |
               (sa.description = 'open boundary occurrence') AND
               (SIZEOF( QUERY( sar <* USEDIN( sa, 'AUTOMOTIVE_DESIGN.' +
                 'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
                 ('AUTOMOTIVE_DESIGN.SHAPE_DEFINING_RELATIONSHIP' IN
                  TYPEOF(sar)) AND
                 (sar.description = 'profile usage')  AND
                 ('AUTOMOTIVE_DESIGN.SQUARE_U_PROFILE' IN
                  TYPEOF(sar.relating_shape_aspect))
                )) = 1 )
              )) = 1);   
  WR5:  SIZEOF( QUERY( sa <* get_shape_aspects(SELF) |
              (sa.description = 'pocket depth occurrence') AND
              (SIZEOF( QUERY( sar <* USEDIN( sa, 'AUTOMOTIVE_DESIGN.' +
                'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
                ('AUTOMOTIVE_DESIGN.SHAPE_DEFINING_RELATIONSHIP' IN
                 TYPEOF(sar)) AND
                (sar.name = 'pocket depth')  AND
                (sar.description = 'path feature component usage')  AND
                ('AUTOMOTIVE_DESIGN.PATH_FEATURE_COMPONENT' IN
                 TYPEOF(sar.relating_shape_aspect)) AND
                (sar.relating_shape_aspect.description = 'linear')
               )) = 1 )
             )) = 1;   
  WR6:  SIZEOF( QUERY( sa <* get_shape_aspects(SELF) |
              (sa.description = 'bottom condition occurrence') AND
              (SIZEOF( QUERY( sar <* USEDIN( sa, 'AUTOMOTIVE_DESIGN.' +
                'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
                ('AUTOMOTIVE_DESIGN.FEATURE_COMPONENT_RELATIONSHIP' IN
                 TYPEOF(sar)) AND
                (sar.description = 'pocket bottom usage')  AND
                ('AUTOMOTIVE_DESIGN.POCKET_BOTTOM' IN
                 TYPEOF(sar.relating_shape_aspect))
               )) = 1 )
             )) = 1;   
  WR7:  SIZEOF( QUERY( sa <* get_shape_aspects(SELF) |
              (sa.description = 'change in boundary occurrence') AND
              (SIZEOF( QUERY( sar <* USEDIN( sa, 'AUTOMOTIVE_DESIGN.' +
                'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
                ('AUTOMOTIVE_DESIGN.FEATURE_COMPONENT_RELATIONSHIP' IN
                 TYPEOF(sar)) AND
                (sar.description = 'taper usage')  AND
                ('AUTOMOTIVE_DESIGN.TAPER' IN
                 TYPEOF(sar.relating_shape_aspect)) AND
                (sar.relating_shape_aspect.description IN ['angle taper','directed taper'])
               )) = 1 )
             )) <= 1;   
  WR8:  SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) AND
               NOT ({1 <= SIZEOF(pdr.used_representation.items) <= 2})
             )) = 0;   
  WR9:  SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) AND
               (SIZEOF( QUERY( i <* pdr.used_representation.items |
                 NOT(i.name IN ['orientation','fillet radius 1'])
                )) > 0)
             )) = 0;   
  WR10: SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
              TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='base radius') AND
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2)
               )) = 1)
             )) <= 1;   
END_ENTITY;
(*

Formal Propositions:

WR1: The pocket shall have a description of 'open rectangular', 'closed rectangular', or 'complex'.

WR2: If the pocket has a description of 'complex', the pocket shall be the basis shape for exactly one shape_aspect with a description of 'boundary occurrence'. This shape_aspect shall be the related_shape_aspect in exactly one shape_defining_relationship with a description of 'profile usage'in which the relating_shape_aspect is a circular_closed_profile, ngon_closed_profile, closed_path_profile, partial_circular_profile, rounded_u_profile, vee_profile, tee_profile, or open_path_profile.

WR3: If the pocket has a description of 'closed rectangular', the pocket shall be the basis shape for exactly one shape_aspect with a description of 'closed boundary occurrence'. This shape_aspect shall be the related_shape_aspect in exactly one shape_defining_relationship with a description of 'profile usage' in which the relating_shape_aspect is a rectangular_closed_profile.

WR4: If the pocket has a description of 'open rectangular', the pocket shall be the basis shape for exactly one shape_aspect with a description of 'open boundary occurrence'. This shape_aspect shall be the related_shape_aspect in exactly one shape_defining_relationship with a description of 'profile usage' in which the relating_shape_aspect is a square_u_profile.

WR5: The pocket shall be the basis shape for exactly one shape_aspect with a description of 'pocket depth occurrence'. This shape_aspect shall be the related_shape_aspect in exactly one shape_defining_relationship with a name of 'pocket depth' and a description of 'path feature component usage' in which the relating_shape_aspect is a path_feature_component with a description of 'linear'.

WR6: The pocket shall be the basis shape for exactly one shape_aspect with adescription of 'bottom condition occurrence'. This shape_aspect shall be the related_shape_aspect in exactly one feature_component_relationship with a description of 'pocket bottom usage' in which the relating_shape_aspect is a pocket_bottom.

WR7: The pocket shall be the basis shape for at most one shape_aspect with a description of 'change in boundary occurrence'. If present, this shape_aspect shall be the related_shape_aspect in exactly one feature_component_relationship with a description of 'taper usage' in which the relating_shape_aspect is a taper with a description of either 'angle taper' or 'directed taper'.

WR8: The implicit representation of the pocket shall contain between one and two representation_items in its set of items.

WR9: The implicit representation of the pocket shall only contain representation_items in its set of items that have a name of either 'orientation' or 'fillet radius'.

WR10: The implicit representation of the pocket shall contain at most one representation_items in its set of items that has a name of 'base radius'. If present, this representation_item shall be of type measure_representation_item and length_measure_with_unit.

5.2.3.1.112 pocket_bottom

A pocket_bottom is a type of shape_aspect that is the bottom condition for a pocket. See ARM definition for Pocket_bottom_condition, for Planar_bottom_condition, for Through_pocket_bottom_condition, and for General_bottom_condition for more information.

EXPRESS specification:

*)
ENTITY pocket_bottom
  SUBTYPE OF (shape_aspect);
WHERE
  WR1:  'AUTOMOTIVE_DESIGN.FEATURE_COMPONENT_DEFINITION' IN
        TYPEOF(SELF.of_shape.definition);
           
  WR2:  SELF.description IN ['planar','complex','through'];
           
  WR3:  NOT(SELF.description IN ['planar','complex']) OR
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation))
              )) <= 1) AND
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF(pdr.used_representation.items)
                = 1) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='radius') AND
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2)
               )) = 1)
              )) <= 1);   
  WR4:  NOT(SELF.description IN ['planar','complex']) OR
             (SIZEOF( QUERY( sar <* USEDIN(SELF, 
                      'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
               ('AUTOMOTIVE_DESIGN.FEATURE_COMPONENT_RELATIONSHIP' IN
                TYPEOF(sar)) AND
               (sar.name IN ['starting','ending' 
])
              )) = 1);   
  WR5:  (SELF.description <> 'complex') OR
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.FACE_SHAPE_REPRESENTATION' IN 
               TYPEOF(pdr.used_representation))
              )) = 1) AND
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.FACE_SHAPE_REPRESENTATION' IN 
               TYPEOF(pdr.used_representation)) AND
              (pdr.used_representation.name = 'floor')
              )) = 1);   
  WR6:  (SELF.description <> 'planar') OR
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.LOCATION_SHAPE_REPRESENTATION' IN 
               TYPEOF(pdr.used_representation))
              )) = 1) AND
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.LOCATION_SHAPE_REPRESENTATION' IN 
               TYPEOF(pdr.used_representation)) AND
              (pdr.used_representation.name = 'floor location')
              )) = 1);   
  WR7:  (SELF.description <> 'planar') OR
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.DIRECTION_SHAPE_REPRESENTATION' IN 
               TYPEOF(pdr.used_representation))
              )) = 1) AND
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.DIRECTION_SHAPE_REPRESENTATION' IN 
               TYPEOF(pdr.used_representation)) AND
              (pdr.used_representation.name = 'floor normal')
              )) = 1);   
  WR8:  (SELF.description <> 'through') OR
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation))
              )) = 0);   
  WR9:  (SIZEOF( QUERY( sar <* USEDIN(SELF, 
                      'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
               ('AUTOMOTIVE_DESIGN.FEATURE_COMPONENT_RELATIONSHIP' IN
                TYPEOF(sar))
               )) = 1) AND
             (SIZEOF( QUERY( sar <* USEDIN(SELF, 
                      'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
               ('AUTOMOTIVE_DESIGN.FEATURE_COMPONENT_RELATIONSHIP' IN
                TYPEOF(sar)) AND
               (sar.description = 'pocket bottom usage') AND 
               ('AUTOMOTIVE_DESIGN.POCKET' IN TYPEOF(sar.related_shape_aspect.of_shape.definition)) AND
               (sar.related_shape_aspect.of_shape.definition\characterized_object.description = 'bottom condition occurrence')
               )) = 1);   
END_ENTITY;
(*

Formal Propositions:

WR1: The pocket_bottom shall be an aspect of the shape of a feature_component_definition.

WR2: The description of the pocket_bottom shall be either 'planar', 'complex', or 'through'.

WR3: If the pocket_bottom has a description of 'planar' or 'complex', the pocket_bottom shall have its implicit representation specified by at most one shape_representation_with_parameters. If present, the implicit representation shall contain exactly one representation_item in its set of items. It shall be of type measure_representation_item and length_measure_with_unit and shall have a name of 'radius'.

WR4: If the pocket_bottom has a description of 'planar' or 'complex', the feature_component_relationship that refers to the pocket_bottom as the relating_shape_aspect shall have a name of either 'starting' or 'ending' .

WR5: If the description of the pocket_bottom is 'complex', the pocket_bottom shall be represented by exactly one face_shape_representation. This representation shall have a name of 'floor'.

WR6: If the description of the pocket_bottom is 'planar', the pocket_bottom shall be represented by exactly one location_shape_representation. This representation shall have a name of 'floor location'.

WR7: If the description of the pocket_bottom is 'planar', the pocket_bottom shall be represented by exactly one direction_shape_representation. This representation shall have a name of 'floor normal'.

WR8: If the description of the pocket_bottom is 'through', the pocket_bottom shall not be represented implicitly by a shape_representation_with_parameters.

WR9: The pocket_bottom shall be the relating_shape_aspect in exactly one feature_component_relationship. This feature_component_relationship shall have a description of 'pocket bottom usage' and shall reference as the related_shape_aspect an aspect of the shape of a pocket that has a description of 'bottom condition occurrence'.

5.2.3.1.113 point_placement_shape_representation

A point_placement_shape_representation is a type of shape_representation that consists of sequences of pairs of points and directions. See ARM definition for Point_direction_model for more information.

EXPRESS specification:

*)
ENTITY point_placement_shape_representation
  SUBTYPE OF (shape_representation);
WHERE
  WR1:  SIZEOF( QUERY( i <* SELF.items |
                SIZEOF(['AUTOMOTIVE_DESIGN.COMPOUND_REPRESENTATION_ITEM',
                        'AUTOMOTIVE_DESIGN.MAPPED_ITEM',
                        'AUTOMOTIVE_DESIGN.AXIS2_PLACEMENT_3D']
                       * TYPEOF(i)) <> 1
              )) = 0;
           
  WR2:  SIZEOF( QUERY( i <* SELF.items |
                SIZEOF(['AUTOMOTIVE_DESIGN.COMPOUND_REPRESENTATION_ITEM',
                        'AUTOMOTIVE_DESIGN.MAPPED_ITEM']
                       * TYPEOF(i)) = 1
              )) > 0;
           
END_ENTITY;
(*

Formal Propositions:

WR1: The items in a point_placement_shape_representation shall be of type compound_representation_item, mapped_item, or axis2_placement_3d.

WR2: At least one of the items in a point_placement_shape_representation shall be either a compound_representation_item or a mapped_item.

Informal Propositions:

IP1: For each compound_representation_item in the set of items the item_element shall be of type list_representation_item.

IP2: For each compound_representation_item in the set of items the list_representation_item shall include only representation_items of type placement or point.

5.2.3.1.114 pre_defined_dimension_symbol

A pre_defined_dimension_symbol is a pre_defined_symbol that presents a dimension and is identified by name. See ARM definition for Dimension_symbol for more information.

EXPRESS specification:

*)
ENTITY pre_defined_dimension_symbol
  SUBTYPE OF (pre_defined_symbol);
WHERE
  WR1:  SELF.name IN ['arc length','conical taper','counterbore','countersink', 
  'depth', 'diameter', 'plus minus', 'radius', 'slope', 
  'spherical diameter', 'spherical radius', 'square'];   
END_ENTITY;
(*

Formal Propositions:

WR1: The name of the pre_defined_dimension_symbol shall be 'arc length', 'conical taper', 'counterbore', 'countersink', 'depth', 'diameter', 'plus minus', 'radius', 'slope', 'spherical diameter', 'spherical radius', or 'square'.

5.2.3.1.115 pre_defined_geometrical_tolerance_symbol

A pre_defined_geometrical_tolerance_symbol is a pre_defined_symbol that presents a geometrical tolerance and is identified by name. See ARM definition for Geometric_tolerance_symbol for more information.

EXPRESS specification:

*)
ENTITY pre_defined_geometrical_tolerance_symbol
  SUBTYPE OF (pre_defined_symbol);
WHERE
  WR1:  SELF.name IN ['angularity','basic dimension','blanked datum reference',
  'circular runout','circularity','concentricity','cylindricity',
  'datum target identification','diameter','filled datum reference',
  'flatness','least material condition','maximum material condition',
  'parallelism','perpendicularity','position','profile of a line',
  'profile of a surface','projected tolerance zone',
  'regardless of feature size','straightness','symmetry','total runout'];   
END_ENTITY;
(*

Formal Propositions:

WR1: The name of the pre_defined_geometrical_tolerance_symbol shall be 'angularity', 'basic dimension', 'blanked datum reference', 'circular runout', 'circularity', 'concentricity', 'cylindricity', 'datum target identification', 'diameter', 'filled datum reference', 'flatness', 'least material condition', 'maximum material condition', 'parallelism', 'perpendicularity', 'position', 'profile of a line', 'profile of a surface', 'projected tolerance zone', 'regardless of feature size', 'straightness', 'symmetry', or 'total runout'.

5.2.3.1.116 pre_defined_point_marker_symbol

A pre_defined_point_marker_symbol is a type of pre_defined_symbol that presents the position of a point and is identified by name. See ARM definition for Point_marker_symbol for more information.

EXPRESS specification:

*)
ENTITY pre_defined_point_marker_symbol
  SUBTYPE OF (pre_defined_marker,pre_defined_symbol);
WHERE
  WR1:  SELF.name IN ['asterisk','circle','dot','plus','square','triangle','x'];   
END_ENTITY;
(*

Formal Propositions:

WR1: The name of the pre_defined_point_marker_symbol shall be 'asterisk', 'circle', 'dot', 'plus', 'square', 'triangle', or 'x'.

5.2.3.1.117 pre_defined_surface_condition_symbol

A pre_defined_surface_condition_symbol is a pre_defined_symbol that represents a surface quality and is identified by a three digit code represented as the name. See ARM definition for Surface_condition_symbol for more information.

EXPRESS specification:

*)
ENTITY pre_defined_surface_condition_symbol
  SUBTYPE OF (pre_defined_symbol);
WHERE
  WR1:  SELF.name IN
          ['000', '010', '020', '030', '040', '050', '060', '070',
           '001', '011', '021', '031', '041', '051', '061', '071',
           '100', '110', '120', '130', '140', '150', '160', '170',
           '101', '111', '121', '131', '141', '151', '161', '171',
           '200', '210', '220', '230', '240', '250', '260', '270',
           '201', '211', '221', '231', '241', '251', '261', '271'];   
END_ENTITY;
(*

Formal Propositions:

WR1: The name of the pre_defined_surface_condition_symbol shall be '000', '010', '020', '030', '040', '050', '060', '070', '001', '011', '021', '031', '041', '051', '061', '071', '100', '110', '120', '130', '140', '150', '160', '170', '101', '111', '121', '131', '141', '151', '161', '171', '200', '210', '220', '230', '240', '250', '260', '270', '201', '211', '221', '231', '241', '251', '261', or '271'.

5.2.3.1.118 pre_defined_terminator_symbol

A pre_defined_terminator_symbol is a type of pre_defined_symbol that presents a terminator and is identified by name. See ARM definition for Terminator_symbol for more information.

EXPRESS specification:

*)
ENTITY pre_defined_terminator_symbol
  SUBTYPE OF (pre_defined_symbol);
WHERE
  WR1:  SELF.name IN ['blanked arrow','blanked box','blanked dot','dimension origin',
  'filled arrow','filled box','filled dot','integral symbol',
  'open arrow','slash','unfilled arrow'];   
END_ENTITY;
(*

Formal Propositions:

WR1: The name of the pre_defined_terminator_symbol shall be 'blanked arrow', 'blanked box', 'blanked dot', 'dimension origin', 'filled arrow', 'filled box', 'filled dot', 'integral symbol', 'open arrow', 'slash', or 'unfilled arrow'.

5.2.3.1.119 process_operation

A process_operation is the identification of a specific step in a process. It collects all information that is common for all occurrences of this particular step in the processes which make use of this step. See ARM definition for Process_operation_definition for more information.

EXPRESS specification:

*)
ENTITY process_operation
  SUBTYPE OF (action_method);
WHERE
  WR1:  SIZEOF( QUERY( amr <* USEDIN(SELF,'AUTOMOTIVE_DESIGN.ACTION_METHOD_RELATIONSHIP.' +
                     'RELATING_METHOD') |
               NOT('AUTOMOTIVE_DESIGN.PROCESS_OPERATION' IN
                   TYPEOF(amr.related_method)) OR
               (SELF :=: amr.related_method)
              )) = 0;	   
  WR2:  SIZEOF( QUERY( amr <* USEDIN(SELF,'AUTOMOTIVE_DESIGN.ACTION_METHOD_RELATIONSHIP.' +
                     'RELATED_METHOD') |
               NOT('AUTOMOTIVE_DESIGN.PROCESS_OPERATION' IN
                   TYPEOF(amr.relating_method)) OR
               (SELF :=: amr.relating_method)
              )) = 0;   
END_ENTITY;
(*

Formal Propositions:

WR1: A process_operation shall only be refered to by action_method_relationships as relating_method, where the related_method refers to another instance of process_operation.

WR2: A process_operation shall only be refered to by action_method_relationships as related_method, where the relating_method refers to another instance of process_operation.

5.2.3.1.120 process_plan

A process_plan is a type of action that specifies the information necessary for manufacturing planning. See ARM definition for Process_plan for more information.

EXPRESS specification:

*)
ENTITY process_plan
  SUBTYPE OF (action);
WHERE
  WR1:  SIZEOF( QUERY( ar <* USEDIN(SELF,'AUTOMOTIVE_DESIGN.' +
                      'ACTION_RELATIONSHIP.RELATED_ACTION') |
               SIZEOF(['AUTOMOTIVE_DESIGN.PROCESS_PLAN',
                       'AUTOMOTIVE_DESIGN.PRODUCT_PROCESS_PLAN'] *
                       TYPEOF(ar.relating_action)) <> 1
              )) = 0;
           
  WR2:  SIZEOF( QUERY( ar <* USEDIN(SELF,'AUTOMOTIVE_DESIGN.' +
                      'ACTION_RELATIONSHIP.RELATING_ACTION') |
               (SIZEOF(['AUTOMOTIVE_DESIGN.PROCESS_PLAN',
                        'AUTOMOTIVE_DESIGN.PRODUCT_PROCESS_PLAN'] *
                        TYPEOF(ar.related_action)) = 1) OR
               ((ar.name = 'process operation occurrence') AND
                ('AUTOMOTIVE_DESIGN.PROCESS_OPERATION' IN
                 TYPEOF(ar.related_action.chosen_method)))
              )) = 
             SIZEOF(USEDIN(SELF,'AUTOMOTIVE_DESIGN.' +
                    'ACTION_RELATIONSHIP.RELATING_ACTION'));   
END_ENTITY;
(*

Formal Propositions:

WR1: The process_plan shall only be referenced as the related_action by action_relationships that reference as the relating_action a process_plan or a product_process_plan.

WR2: The process_plan shall only be referenced as the relating_action by action_relationships that reference as the related_action a process_plan, or a product_process_plan, or by action_relationships that have a name of 'process operation occurrence' and that reference as the related_action an action that refers to a process_operation as its chosen_method.

5.2.3.1.121 product_class

A product_class is a type of product_concept and characterized_object that is the identification of a set of similar products to be offered to the market. See ARM definition for Product_class for more information.

EXPRESS specification:

*)
ENTITY product_class
  SUBTYPE OF (product_concept,characterized_object);
END_ENTITY;
(*

Associated global rule:

The following global rule defined in this part of ISO 10303 applies to the product_class entity:

5.2.3.1.122 product_concept_feature_category

A product_concept_feature_category is a type of group that specifies a set of similar product_concept_feature instances. See ARM definition for Specification_category for more information.

EXPRESS specification:

*)
ENTITY product_concept_feature_category
  SUBTYPE OF (group);
WHERE
  WR1:  SIZEOF( QUERY( aga <* USEDIN(SELF,'AUTOMOTIVE_DESIGN.GROUP_ASSIGNMENT.' +
          'ASSIGNED_GROUP') |
               ('AUTOMOTIVE_DESIGN.APPLIED_GROUP_ASSIGNMENT' IN
                TYPEOF(aga)) AND 
               ((aga.role.name <> 'specification category member') OR
                (SIZEOF( QUERY( i <* aga.items |
                   ('AUTOMOTIVE_DESIGN.PRODUCT_CONCEPT_FEATURE' IN
                    TYPEOF(i)) AND
                   NOT ('AUTOMOTIVE_DESIGN.CONDITIONAL_CONCEPT_FEATURE' IN
                        TYPEOF(i))
                  )) <> SIZEOF(aga.items)))
              )) = 0;
           
END_ENTITY;
(*

Formal Propositions:

WR1: A product_concept_feature_category shall only be referenced as assigned_group by applied_group_assignment instances which reference as role an object_role with a name of 'specification category member' and which only contain product_concept_features in their set of items which are not of type conditional_concept_feature.

Associated global rules:

The following global rules defined in this part of ISO 10303 apply to the product_concept_feature_category entity:

5.2.3.1.123 product_concept_feature_category_usage

A product_concept_feature_category_usage is a type of group_assignment that is the assignment of a product_concept_feature_category to a product_class. Additionally this assignment specifies if the usage of one or more product_concept_features belonging to this product_concept_feature_category is mandatory or optional for all products of that product_class.

EXPRESS specification:

*)
ENTITY product_concept_feature_category_usage
  SUBTYPE OF (group_assignment);
  items : SET [1:?] OF category_usage_item;
WHERE
  WR1:  'AUTOMOTIVE_DESIGN.PRODUCT_CONCEPT_FEATURE_CATEGORY' IN
             TYPEOF(SELF.assigned_group);   
  WR2:  SELF.role.name IN ['mandatory category usage',
       'optional category usage'];   
END_ENTITY;
(*

Attribute definitions:

items: the set of items to which the product_concept_feature_category is assigned.

Formal Propositions:

WR1: The product_concept_feature_category_usage shall have an assigned_group which is of type product_concept_feature_category.

WR2: The product_concept_feature_category_usage shall have as role an object_role with a name of 'mandatory category usage' or 'optional category usage'.

Associated global rule:

The following global rule defined in this part of ISO 10303 applies to the product_concept_feature_category_usage entity:

5.2.3.1.124 product_definition_resource

A product_definition_resource is a type of product_definition and action_resource that specifies a tool that is used to perform a Process_operation.

EXPRESS specification:

*)
ENTITY product_definition_resource
  SUBTYPE OF (action_resource,product_definition);
WHERE
  WR1:  SIZEOF( USEDIN(SELF,'AUTOMOTIVE_DESIGN.' +
               'REQUIREMENT_FOR_ACTION_RESOURCE.RESOURCES')
               ) > 0;
           
  WR2:  SELF.frame_of_reference.name IN 
        ['part_definition','part occurrence','physical occurrence'];
           
END_ENTITY;
(*

Formal Propositions:

WR1: A product_definition_resource is contained in the set of resources of at least one requirement_for_action_resource.

WR2: A product_definition_resource shall reference as its frame_of_reference a product_definition_context with a name of 'part_definition', 'part occurrence', or 'physical occurrence'.

5.2.3.1.125 product_identification

A product_identification is a type of configuration_item and characterized_object that identifies a manufacturable object, or expected as so, which is defined with respect to the product_class it is a member of.

EXPRESS specification:

*)
ENTITY product_identification
  SUBTYPE OF (configuration_item,characterized_object);
WHERE
  WR1:  SIZEOF( QUERY( cd <* USEDIN(SELF,'AUTOMOTIVE_DESIGN.CONFIGURATION_DESIGN.CONFIGURATION') |
               ('AUTOMOTIVE_DESIGN.PRODUCT_DEFINITION_FORMATION' IN
                TYPEOF(cd.design)) AND
               (SIZEOF( QUERY( prpc <* USEDIN(cd.design\product_definition_formation.of_product,
                        'AUTOMOTIVE_DESIGN.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') |
                  prpc.name IN ['part','raw material','tool']
                 )) > 0)
              )) <= 1;   
  WR2:  'AUTOMOTIVE_DESIGN.PRODUCT_CLASS' IN TYPEOF(SELF.item_concept);   
  WR3:  NOT ('AUTOMOTIVE_DESIGN.CONFIGURABLE_ITEM' IN TYPEOF(SELF)) OR
             ('AUTOMOTIVE_DESIGN.PRODUCT_SPECIFICATION' IN TYPEOF(SELF));
           
END_ENTITY;
(*

Formal Propositions:

WR1: Each product_identification shall be referenced as the configuration by at most one instance of configuration_design that references as design a product_definition_formation which references as of_product a product which is contained in the of products set of a product_related_product_category with a name of either 'part', 'raw material', or 'tool'.

WR2: Each product_identification shall reference as its item_concept a product_class.

WR3: If a product_identification is of type configurable_item it shall also be of type product_specification. If a product_identification is of type product_specification it shall also be of type configurable_item.

5.2.3.1.126 product_process_plan

A product_process_plan is a type of product_definition_process that specifies the information necessary for manufacturing planning to realize or produce a product. See ARM definition for Process_plan for more information.

EXPRESS specification:

*)
ENTITY product_process_plan
  SUBTYPE OF (product_definition_process);
WHERE
  WR1:  SIZEOF( QUERY( ar <* USEDIN(SELF,'AUTOMOTIVE_DESIGN.' +
                     'ACTION_RELATIONSHIP.RELATED_ACTION') |
               SIZEOF(['AUTOMOTIVE_DESIGN.PROCESS_PLAN',
                       'AUTOMOTIVE_DESIGN.PRODUCT_PROCESS_PLAN'] *
                       TYPEOF(ar.relating_action)
                ) <> 1
              )) = 0;
           
  WR2:  SIZEOF( QUERY( ar <* USEDIN(SELF,'AUTOMOTIVE_DESIGN.' +
                      'ACTION_RELATIONSHIP.RELATING_ACTION') |
               (SIZEOF(['AUTOMOTIVE_DESIGN.PROCESS_PLAN',
                        'AUTOMOTIVE_DESIGN.PRODUCT_PROCESS_PLAN'] *
                        TYPEOF(ar.related_action)) = 1) OR
               ((ar.name = 'process operation occurrence') AND
                ('AUTOMOTIVE_DESIGN.PROCESS_OPERATION' IN
                 TYPEOF(ar.related_action.chosen_method)))
              )) = 
             SIZEOF(USEDIN(SELF,'AUTOMOTIVE_DESIGN.' +
                    'ACTION_RELATIONSHIP.RELATING_ACTION'));   
  WR3:  SIZEOF( QUERY( ppa <* USEDIN(SELF,'AUTOMOTIVE_DESIGN.' +
                     'PROCESS_PRODUCT_ASSOCIATION.PROCESS') |
               (ppa.name <> 'produced output') OR
               NOT('AUTOMOTIVE_DESIGN.PRODUCT_DEFINITION' IN
                   TYPEOF(ppa.defined_product))
              )) = 0;
           
END_ENTITY;
(*

Formal Propositions:

WR1: The product_process_plan shall only be referenced as the related_action by action_relationships that reference as the relating_action a process_plan or a product_process_plan.

WR2: The product_process_plan shall only be referenced as the relating_action by action_relationships that reference as the related_action a process_plan or a product_process_plan, or by action_relationships that have a name of 'process operation occurrence' and that reference as the related_action an action that refers to a process_operation as its chosen_method.

WR3: The product_process_plan shall only be referenced as process by process_product_associations that have a name of 'produced output' and that reference as defined_product a product_definition.

5.2.3.1.127 product_specification

A product_specification is a type of product_identification and configurable_item for which one or more product_concept_feature objects enhance the characterization provided for its associated product_class.

EXPRESS specification:

*)
ENTITY product_specification
  SUBTYPE OF (product_identification,configurable_item);
END_ENTITY;
(*

5.2.3.1.128 rectangular_closed_profile

A rectangular_closed_profile is a type of shape_aspect that consists of an enclosed 2D area and a reference system for the parameters of the rectangular_closed_profile. The enclosed area is defined by four straight sides with opposite sides equal in length. The reference system is used to define location and orientation of the rectangular_closed_profile and consists of two orthogonal reference axes X and Y that intersect in a reference point. See ARM definition for Rectangular_closed_profile for more information.

EXPRESS specification:

*)
ENTITY rectangular_closed_profile
  SUBTYPE OF (shape_aspect);
WHERE
  WR1:  'AUTOMOTIVE_DESIGN.FEATURE_COMPONENT_DEFINITION' IN
             TYPEOF(SELF.of_shape.definition);
           
  WR2:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation))
              )) = 1;   
  WR3:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              {3 <= SIZEOF( pdr.used_representation.items) <= 4}
              )) = 1;   
  WR4:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                NOT(i.name IN ['orientation','length','width','corner radius'])
                )) > 0)
              )) = 0;   
  WR5:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                ('AUTOMOTIVE_DESIGN.PLACEMENT' IN TYPEOF(i)) AND
                (i.name = 'orientation')
                )) = 1)
              )) = 1;   
  WR6:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2) AND
                 (i.name = 'width')
                )) = 1)
              )) = 1;   
  WR7:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2) AND
                 (i.name = 'length')
                )) = 1)
              )) = 1;   
  WR8:  (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) AND
               (SIZEOF( QUERY( i <* pdr.used_representation.items |
                 (i.name = 'corner radius')
                 )) = 1) 
               )) <= 1) AND
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) AND
               (SIZEOF( QUERY( i <* pdr.used_representation.items |
                 (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
 'AUTOMOTIVE_DESIGN.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
                  ) = 2)
                 )) = 1)
               )) <= 1);
END_ENTITY;
(*

Formal Propositions:

WR1: The rectangular_closed_profile shall be an aspect of the shape of a feature_component_definition.

WR2: The rectangular_closed_profile shall have exactly one implicit representation defined by a shape_representation_with_parameters.

WR3: The shape_representation_with_parameters that represents the rectangular_closed_profile shall contain three or four representation_items in its set of items.

WR4: The implicit representation of a rectangular_closed_profile shall contain only representation_items in its set of items that have a name of either 'orientation', 'length', 'width', or 'corner radius'.

WR5: Exactly one representation_item used for the implicit representation of a rectangular_closed_profile shall be of type placement with a name of `orientation'.

WR6: Exactly one representation_item used for the implicit representation of a rectangular_closed_profile shall be of type measure_representation_item and length_measure_with_unit with a name of `width'.

WR7: Exactly one representation_item used for the implicit representation of a rectangular_closed_profile shall be of type measure_representation_item and length_measure_with_unit with a name of `length'.

WR8: At most one representation_item used for the implicit representation of a rectangular_closed_profile shall have a name of `corner radius'. If present, this representation_item shall be of type measure_representation_item and length_measure_with_unit.

Informal Propositions:

IP1: The rectangular_closed_profile shall be planar and shall lie in the X-Y plane of the reference system.

IP2: The reference point of the rectangular_closed_profile is defined at the centre of the rectangle.

IP3: The length of the rectangular_closed_profile is defined in the X direction and the width is defined in the Y direction of the reference system.

5.2.3.1.129 rectangular_pattern

A rectangular_pattern is a type of replicate_feature representing a pattern where a number of occurrences of a base feature are equally arranged in rows and columns. See ARM definition for Rectangular_pattern for more information.

EXPRESS specification:

*)
ENTITY rectangular_pattern
  SUBTYPE OF (replicate_feature);
WHERE
  WR1:  SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.DIRECTION_SHAPE_REPRESENTATION' IN 
                TYPEOF(pdr.used_representation)) AND
               (pdr.used_representation.name = 'row layout direction')
              )) = 1;   
  WR2:  SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.DIRECTION_SHAPE_REPRESENTATION' IN 
                TYPEOF(pdr.used_representation)) AND
               (pdr.used_representation.name = 'column layout direction')
              )) = 1;   
  WR3:  SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) AND
               (SIZEOF(pdr.used_representation.items) = 5)
              )) = 1;   
  WR4:  SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='number of rows') AND
                ('AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND
                ('AUTOMOTIVE_DESIGN.COUNT_MEASURE' IN 
                 TYPEOF(i\measure_with_unit.value_component))
               )) = 1)
              )) = 1;   
  WR5:  SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='number of columns') AND
                ('AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND
                ('AUTOMOTIVE_DESIGN.COUNT_MEASURE' IN 
                 TYPEOF(i\measure_with_unit.value_component))
               )) = 1)
              )) = 1;   
  WR6:  SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='row spacing') AND
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2)
               )) = 1)
              )) = 1;   
  WR7:  SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='column spacing') AND
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2)
               )) = 1)
              )) = 1;   
END_ENTITY;
(*

Formal Propositions:

WR1: The rectangular_pattern shall have exactly one direction_shape_representation with a name of 'row layout direction'.

WR2: The rectangular_pattern shall have exactly one direction_shape_representation with a name of 'column layout direction'.

WR3: The implicit representation of the rectangular_pattern shall contain five representation_items in its set of items.

WR4: The implicit representation of the rectangular_pattern shall contain exactly one representation_item of type measure_representation_item with a value_component of type count_measure and a name of 'number of rows'.

WR5: The implicit representation of the rectangular_pattern shall contain exactly one representation_item of type measure_representation_item with a value_component of type count_measure and a name of 'number of columns'.

WR6: The implicit representation of the rectangular_pattern shall contain exactly one representation_item of type measure_representation_item and length_measure_with_unit with a name of 'row spacing'.

WR7: The implicit representation of the rectangular_pattern shall contain exactly one representation_item of type measure_representation_item and length_measure_with_unit with a name of 'column spacing'.

Informal Propositions:

IP1: The location of the rectangular_pattern shall be defined at the position of the first base feature.

IP2: The rectangular_pattern shall be defined in the X-Y plane.

5.2.3.1.130 rep_item_group

A rep_item_group is a type of group and representation_item that may be part of a layer or a template. See ARM definition for Group and for Structuring_method_hierarchy for more information.

EXPRESS specification:

*)
ENTITY rep_item_group
  SUBTYPE OF (group,representation_item);
WHERE
  WR1:  SIZEOF( USEDIN( SELF, 'AUTOMOTIVE_DESIGN.' +
                     'PRESENTATION_LAYER_ASSIGNMENT.ASSIGNED_ITEMS')
              ) > 0;
           
  WR2:  SIZEOF( QUERY( r <* USEDIN( SELF, 'AUTOMOTIVE_DESIGN.' +
                     'REPRESENTATION.ITEMS') |
               r.name = 'group representation'
              )) > 0;   
  WR3:  SIZEOF( QUERY( ga <* USEDIN(SELF,'AUTOMOTIVE_DESIGN.' +
                     'GROUP_ASSIGNMENT.ASSIGNED_GROUP') |
                ga.role.name <> 'group membership'
              )) = 0;   
  WR4:  SIZEOF(['AUTOMOTIVE_DESIGN.GEOMETRIC_REPRESENTATION_ITEM',
                     'AUTOMOTIVE_DESIGN.TOPOLOGICAL_REPRESENTATION_ITEM',
                     'AUTOMOTIVE_DESIGN.MAPPED_ITEM',
                     'AUTOMOTIVE_DESIGN.STYLED_ITEM'] *
                     TYPEOF(SELF)
              ) = 1;   
END_ENTITY;
(*

Formal Propositions:

WR1: A rep_item_group shall be contained in the set of assigned_items of a presentation_layer_assignment.

WR2: A rep_item_group shall be contained in the set of items of a representation with a name of 'group representation'.

WR3: The rep_item_group shall only be referenced by group_assignments that reference as role an object_role that has a name of 'group membership'.

WR4: The items in a rep_item_group shall be of type geometric_representation_item, topological_representation_item, mapped_item, or styled_item.

5.2.3.1.131 replicate_feature

A replicate_feature is a type of feature_definition representing a pattern or a modification of a pattern for the replication of features. See ARM definition for Replicate_feature for more information.

EXPRESS specification:

*)
ENTITY replicate_feature
  SUBTYPE OF (feature_definition);
WHERE
  WR1:  SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) 
              )) = 1;   
  WR2:  SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='orientation') AND
                ('AUTOMOTIVE_DESIGN.PLACEMENT' IN TYPEOF(i))
               )) = 1)
              )) = 1;   
  WR3:  SIZEOF( QUERY( sa <* get_shape_aspects(SELF) |
              (SIZEOF( QUERY( sar <* USEDIN( sa, 'AUTOMOTIVE_DESIGN.' +
                'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
                ('AUTOMOTIVE_DESIGN.FEATURE_COMPONENT_RELATIONSHIP' IN
                 TYPEOF(sar)) AND
                (sar.name = 'pattern basis') AND
                ('AUTOMOTIVE_DESIGN.FEATURE_DEFINITION' IN 
                 TYPEOF(sar.related_shape_aspect.of_shape.definition))
               )) = 1 )
             )) = 1;   
END_ENTITY;
(*

Formal Propositions:

WR1: The replicate_feature shall have exactly one implicit representation of type shape_representation_with_parameters.

WR2: The implicit representation of the replicate_feature shall contain exactly one representation_item that is of type placement and a name of 'orientation'

WR3: The basis shape of the replicate_feature shall have an aspect of shape that is the relating_shape_aspect of a feature_component_relationship with a name of 'pattern basis' and a related_shape_aspect that is an aspect of the basis shape of a feature_definition.

Associated global rule:

The following global rule defined in this part of ISO 10303 applies to the replicate_feature entity:

5.2.3.1.132 retention

A retention is a type of action that defines a period of time that product data needs to be retained due to organizational policy or to legal requirements. See See ARM definition for Retention_period for more information.

EXPRESS specification:

*)
ENTITY retention
  SUBTYPE OF (action);
WHERE
  WR1:  SIZEOF( QUERY( aa <* USEDIN(SELF,'AUTOMOTIVE_DESIGN.' +
           'ACTION_ASSIGNMENT.ASSIGNED_ACTION') |
               ('AUTOMOTIVE_DESIGN.APPLIED_ACTION_ASSIGNMENT' IN
                TYPEOF(aa)) AND
               (aa.role.name = 'retention')
              )) >= 1;   
  WR2:  (SIZEOF( QUERY( atia <* USEDIN(SELF,'AUTOMOTIVE_DESIGN.' +
     'APPLIED_TIME_INTERVAL_ASSIGNMENT.ITEMS') |
                        (atia.role.name = 'minimum retention period') 
                       )) = 1) AND
                     (SIZEOF( QUERY( atia <* USEDIN(SELF,'AUTOMOTIVE_DESIGN.' +
     'APPLIED_TIME_INTERVAL_ASSIGNMENT.ITEMS') |
                        (atia.role.name = 'maximum retention period') 
                       )) = 1) AND
                     (SIZEOF( QUERY( atia1 <* USEDIN(SELF,'AUTOMOTIVE_DESIGN.' +
     'APPLIED_TIME_INTERVAL_ASSIGNMENT.ITEMS') |
                       (atia1.role.name = 'minimum retention period') AND
                       ('AUTOMOTIVE_DESIGN.TIME_INTERVAL_WITH_BOUNDS' IN
                        TYPEOF(atia1.assigned_time_interval)) AND
                       (EXISTS(atia1.assigned_time_interval\time_interval_with_bounds.secondary_bound) OR
                        EXISTS(atia1.assigned_time_interval\time_interval_with_bounds.duration)) AND
                       (SIZEOF( QUERY( atia2 <* USEDIN(SELF,'AUTOMOTIVE_DESIGN.' +
       'APPLIED_TIME_INTERVAL_ASSIGNMENT.ITEMS') |
 (atia2.role.name = 'maximum retention period') AND
 ('AUTOMOTIVE_DESIGN.TIME_INTERVAL_WITH_BOUNDS' IN
  TYPEOF(atia2.assigned_time_interval)) AND
 (EXISTS(atia2.assigned_time_interval\time_interval_with_bounds.secondary_bound) OR
  EXISTS(atia2.assigned_time_interval\time_interval_with_bounds.duration)) AND
 (atia1.assigned_time_interval\time_interval_with_bounds.primary_bound :=: 
  atia2.assigned_time_interval\time_interval_with_bounds.primary_bound)
)) = 1) 
                       )) = 1);
           
  WR3:  SIZEOF( USEDIN(SELF,'AUTOMOTIVE_DESIGN.' +
                      'ACTION_RELATIONSHIP.RELATING_ACTION')) +
              SIZEOF( USEDIN(SELF,'AUTOMOTIVE_DESIGN.' +
                      'ACTION_RELATIONSHIP.RELATED_ACTION')) = 0;   
END_ENTITY;
(*

Formal Propositions:

WR1: The retention shall be referenced as the assigned_action by at least one instance of applied_action_assignment that has a role with name 'retention'.

WR2: The retention shall be contained in the set of items of exactly one applied_time_interval_assignment that references as its role a time_interval_role with a name of 'minimum retention period', and shall be contained in the set of items of exactly one applied_time_interval_assignment that references as its role a time_interval_role with a name of 'maximum retention period'. Both applied_time_interval_assignment instances shall reference as assigned_time_interval a time_interval_with_bounds that has its primary_bound and either one of secondary_bound or duration attributes instantiated. Both applied_time_interval_assignment instances shall have the same primary_bound.

WR3: The retention shall not be referenced by an action_relationship.

Associated global rules:

The following global rules defined in this part of ISO 10303 apply to the retention entity:

5.2.3.1.133 rib

A rib is a type of feature_definition that is the representation of a volume that is added to a solid base shape in order to increase the stability of certain regions of the part. This added volume is represented by sweeping an open profile along a path represented by a path_feature_component. The walls of a rib may have an additional slope that is represented by a taper. See ARM definition for Rib_feature for more information.

EXPRESS specification:

*)
ENTITY rib
  SUBTYPE OF (feature_definition);
WHERE
  WR1:  SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) AND
               NOT ({1 <= SIZEOF(pdr.used_representation.items) <= 3})
             )) = 0;   
  WR2:  SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) AND
               (SIZEOF( QUERY( i <* pdr.used_representation.items |
                 NOT(i.name IN ['orientation','fillet radius','shoulder radius'])
                )) > 0)
             )) = 0;
           
  WR3:  SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
              TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='fillet radius') AND
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2)
               )) = 1)
             )) <= 1;   
  WR4:  SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
              TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='shoulder radius') AND
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2)
               )) = 1)
             )) <= 1;   
  WR5:  SIZEOF( QUERY( sa <* get_shape_aspects(SELF) |
              (sa.description = 'swept shape occurrence') AND
              (SIZEOF( QUERY( sar <* USEDIN( sa, 'AUTOMOTIVE_DESIGN.' +
                'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
                ('AUTOMOTIVE_DESIGN.SHAPE_DEFINING_RELATIONSHIP' IN
                 TYPEOF(sar)) AND
                (sar.description = 'profile usage') AND
                (SIZEOF(['AUTOMOTIVE_DESIGN.PARTIAL_CIRCULAR_PROFILE',
                  'AUTOMOTIVE_DESIGN.SQUARE_U_PROFILE',
                  'AUTOMOTIVE_DESIGN.ROUNDED_U_PROFILE',
                  'AUTOMOTIVE_DESIGN.TEE_PROFILE',
                  'AUTOMOTIVE_DESIGN.VEE_PROFILE',
                  'AUTOMOTIVE_DESIGN.OPEN_PATH_PROFILE']
                  * TYPEOF(sar.relating_shape_aspect)
                 ) = 1 )
               )) = 1 )
             )) = 1;   
  WR6:  SIZEOF( QUERY( sa <* get_shape_aspects(SELF) |
              (sa.description = 'course of travel occurrence') AND
              (SIZEOF( QUERY( sar <* USEDIN( sa, 'AUTOMOTIVE_DESIGN.' +
                'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
                ('AUTOMOTIVE_DESIGN.SHAPE_DEFINING_RELATIONSHIP' IN
                 TYPEOF(sar)) AND
                (sar.name = 'course of travel') AND
                ('AUTOMOTIVE_DESIGN.PATH_FEATURE_COMPONENT' IN
                 TYPEOF(sar.relating_shape_aspect))
               )) = 1 )
             )) = 1;   
  WR7:  SIZEOF( QUERY( sa <* get_shape_aspects(SELF) |
              (sa.description = 'change in boundary occurrence') AND
              (SIZEOF( QUERY( sar <* USEDIN( sa, 'AUTOMOTIVE_DESIGN.' +
                'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
                ('AUTOMOTIVE_DESIGN.FEATURE_COMPONENT_RELATIONSHIP' IN
                 TYPEOF(sar)) AND
                (sar.description = 'taper usage') AND
                ('AUTOMOTIVE_DESIGN.TAPER' IN
                 TYPEOF(sar.relating_shape_aspect)) AND
                (sar.relating_shape_aspect.description = 'directed taper')
               )) = 1 )
             )) <= 1;   
END_ENTITY;
(*

Formal Propositions:

WR1: The implicit representation of the rib shall contain between one and three representation_items in its set of items.

WR2: The implicit representation of a rib shall contain only representation_items in its set of items that have a name of either 'orientation', 'fillet radius', or 'shoulder radius'.

WR3: At most one representation_item used for the implicit representation of the rib shall have a name of 'fillet radius'. If present, this representation_item shall be of type measure_representation_item and length_measure_with_unit.

WR4: At most one representation_item used for the implicit representation of the rib shall have a name of 'shoulder radius'. If present, this representation_item shall be of type measure_representation_item and length_measure_with_unit.

WR5: The rib shall be the basis shape for exactly one shape_aspect with a description of 'swept shape occurrence'. This shape_aspect shall be the related_shape_aspect in exactly one shape_defining_relationship with a name of 'profile usage' and a relating_shape_aspect that is of type partial_circular_profile, square_u_profile, rounded_u_profile, vee_profile, tee_profile, or open_path_profile.

WR6: The rib shall be the basis shape for exactly one shape_aspect with a description of 'course of travel occurrence'. This shape_aspect shall be the related_shape_aspect in exactly one shape_defining_relationship with a name of 'course of travel' and a relating_shape_aspect that is of type path_feature_component.

WR7: The rib shall be the basis shape for at most one shape_aspect with a description of 'change in boundary occurrence'. If present, this shape_aspect shall be the related_shape_aspect in exactly one feature_component_relationship with a description of 'taper usage' and a relating_shape_aspect that is of type taper with a description of 'directed taper'.

Informal Propositions:

IP1: The ends of a rib shall disappear in the base shape.

5.2.3.1.134 round_hole

A round_hole is a type of feature_definition that is the representation of a cylindrical enclosed volume that is removed from a solid base shape. This removed volume is represented by sweeping a circular_closed_profile along a linear path represented by a path_feature_component. The bottom of the round_hole is represented by a hole_bottom. A round_hole may have a change in diameter that is represented by a taper. See ARM definition for Round_hole for more information.

EXPRESS specification:

*)
ENTITY round_hole
  SUBTYPE OF (feature_definition);
WHERE
  WR1:  SIZEOF( QUERY( sa <* get_shape_aspects(SELF) |
              (sa.description = 'diameter occurrence') AND
              (SIZEOF( QUERY( sar <* USEDIN( sa, 'AUTOMOTIVE_DESIGN.' +
                'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
                ('AUTOMOTIVE_DESIGN.SHAPE_DEFINING_RELATIONSHIP' IN
                 TYPEOF(sar)) AND
                (sar.name = 'diameter') AND
                (sar.description = 'profile usage') AND
                ('AUTOMOTIVE_DESIGN.CIRCULAR_CLOSED_PROFILE' IN
                 TYPEOF(sar.relating_shape_aspect)) 
               )) = 1 )
             )) = 1;   
  WR2:  SIZEOF( QUERY( sa <* get_shape_aspects(SELF) |
              (sa.description = 'hole depth occurrence') AND
              (SIZEOF( QUERY( sar <* USEDIN( sa, 'AUTOMOTIVE_DESIGN.' +
                'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
                ('AUTOMOTIVE_DESIGN.SHAPE_DEFINING_RELATIONSHIP' IN
                 TYPEOF(sar)) AND
                (sar.name = 'hole depth') AND
                (sar.description = 'path feature component usage') AND
                ('AUTOMOTIVE_DESIGN.PATH_FEATURE_COMPONENT' IN
                 TYPEOF(sar.relating_shape_aspect)) AND
                (sar.relating_shape_aspect.description = 'linear')
               )) = 1 )
             )) = 1;   
  WR3:  SIZEOF( QUERY( sa <* get_shape_aspects(SELF) |
              (sa.description = 'bottom condition occurrence') AND
              (SIZEOF( QUERY( sar <* USEDIN( sa, 'AUTOMOTIVE_DESIGN.' +
                'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
                ('AUTOMOTIVE_DESIGN.FEATURE_COMPONENT_RELATIONSHIP' IN
                 TYPEOF(sar)) AND
                (sar.description = 'hole bottom usage') AND
                ('AUTOMOTIVE_DESIGN.HOLE_BOTTOM' IN
                 TYPEOF(sar.relating_shape_aspect)) 
               )) = 1 )
             )) <= 1;   
  WR4:  SIZEOF( QUERY( sa <* get_shape_aspects(SELF) |
              (sa.description = 'change in diameter occurrence') AND
              (SIZEOF( QUERY( sar <* USEDIN( sa, 'AUTOMOTIVE_DESIGN.' +
                'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
                ('AUTOMOTIVE_DESIGN.FEATURE_COMPONENT_RELATIONSHIP' IN
                 TYPEOF(sar)) AND
                (sar.description = 'taper usage') AND
                ('AUTOMOTIVE_DESIGN.TAPER' IN
                 TYPEOF(sar.relating_shape_aspect)) 
               )) = 1 )
             )) = 1;   
  WR5:  SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) AND
               (SIZEOF(pdr.used_representation.items) <> 1)
             )) = 0;
           
END_ENTITY;
(*

Formal Propositions:

WR1: The round_hole shall be the basis shape for exactly one shape_aspect with a description of 'diameter occurrence'. This shape_aspect shall be the related_shape_aspect in exactly one shape_defining_relationship with a name of 'diameter', a description of 'profile usage', and a relating_shape_aspect of type circular_closed_profile.

WR2: The round_hole shall be the basis shape for exactly one shape_aspect with a description of 'hole depth occurrence'. This shape_aspect shall be the related_shape_aspect in exactly one shape_defining_relationship with a name of 'hole depth', a description of 'path feature component usage' and a relating_shape_aspect that is of type path_feature_component with a description of 'linear'.

WR3: The round_hole shall be the basis shape for exactly one shape_aspect with a description of 'bottom condition occurrence'. This shape_aspect shall be the related_shape_aspect in exactly one feature_component_relationship with a description of 'hole bottom usage' and a relating_shape_aspect of type hole_bottom.

WR4: The round_hole shall be the basis shape for at most one shape_aspect with a description of 'change in diameter occurrence'. If present, this shape_aspect shall be the related_shape_aspect in exactly one feature_component_relationship with a description of 'taper usage' and a relating_shape_aspect of type taper.

WR5: The implicit representation of a round_hole shall contain exactly one representation_item.

5.2.3.1.135 rounded_u_profile

A rounded_u_profile is a type of shape_aspect that consists of an arc with connected straight lines at each end and a reference system. The reference system consists of two orthogonal reference axes X and Y that intersect in a reference point. See ARM definition for Rounded_U_profile for more information.

EXPRESS specification:

*)
ENTITY rounded_u_profile
  SUBTYPE OF (shape_aspect);
WHERE
  WR1:  'AUTOMOTIVE_DESIGN.FEATURE_COMPONENT_DEFINITION' IN
             TYPEOF(SELF.of_shape.definition);   
  WR2:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation))
              )) = 1;   
  WR3:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF(pdr.used_representation.items) = 2)
              )) = 1;   
  WR4:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                NOT(i.name IN ['width','orientation'])
                )) > 0)
              )) = 0;   
  WR5:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                ('AUTOMOTIVE_DESIGN.PLACEMENT' IN TYPEOF(i)) AND
                (i.name = 'orientation')
                )) = 1)
              )) = 1;   
  WR6:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2) AND
                 (i.name = 'width')
                )) = 1)
              )) = 1;   
  WR7:  (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.PLANAR_SHAPE_REPRESENTATION' IN 
                TYPEOF(pdr.used_representation))
               )) <= 1) AND
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.PLANAR_SHAPE_REPRESENTATION' IN 
                TYPEOF(pdr.used_representation)) AND
               (pdr.used_representation.name = 'profile limit')
               )) <= 1);   
END_ENTITY;
(*

Formal Propositions:

WR1: The rounded_u_profile shall be an aspect of the shape of a feature_component_definition.

WR2: The rounded_u_profile shall have exactly one implicit representation defined by a relationship to a shape_representation_with_parameters.

WR3: The shape_representation_with_parameters that represents the rounded_u_profile shall contain exactly two representation_items in its set of items.

WR4: The implicit representation of the rounded_u_profile shall only contain representation_items that have a name of 'width' or 'orientation'.

WR5: Exactly one representation_item used for the implicit representation of a rounded_u_profile shall be of type placement with a name of `orientation'.

WR6: Exactly one representation_item used for the implicit representation of a rounded_u_profile shall be of type measure_representation_item and length_measure_with_unit with a name of `width'.

WR7: The rounded_u_profile shall be represented by at most one planar_shape_representation. If present, this planar_shape_representation shall have a name of 'profile limit'.

Informal Propositions:

IP1: The rounded_u_profile shall be planar and shall lie in the X-Y plane of the reference system.

IP2: The reference point of the rounded_u_profile is defined at the midpoint of the arc.

IP3: The rounded_u_profile is defined with the X direction tangent to the arc at the midpoint, and the Y direction in the direction of the open end of the profile.

5.2.3.1.136 shape_aspect_transition

A shape_aspect_transition is a type of shape_aspect_relationship that specifies a relationship between two shape_aspects that represent either two edges or two faces of a product for the purpose of specifying the geometric continuity at the transition of those two shape_aspects. See ARM definition for Edge_transition and for Face_transition for more information.

EXPRESS specification:

*)
ENTITY shape_aspect_transition
  SUBTYPE OF (shape_aspect_relationship);
WHERE
  WR1:  SIZEOF( QUERY(pdr_1 <* get_shape_aspect_property_definition_representations(SELF.relating_shape_aspect) |
               SIZEOF( QUERY( pdr_2 <* get_shape_aspect_property_definition_representations(SELF.related_shape_aspect) |
                 SIZEOF( QUERY( item_1 <* pdr_1.used_representation.items |
                   SIZEOF( QUERY( item_2 <* pdr_2.used_representation.items |
                     NOT ((('AUTOMOTIVE_DESIGN.EDGE' IN TYPEOF(item_1)) AND
  ('AUTOMOTIVE_DESIGN.EDGE' IN TYPEOF(item_2))) XOR
 (('AUTOMOTIVE_DESIGN.FACE' IN TYPEOF(item_1)) AND
  ('AUTOMOTIVE_DESIGN.FACE' IN TYPEOF(item_2)))) 
                    )) > 0
                  )) > 0
                )) > 0
              )) = 0; 
           
  WR2:  SIZEOF( QUERY(pdr_1 <* get_shape_aspect_property_definition_representations(SELF.relating_shape_aspect) |
               SIZEOF( QUERY( pdr_2 <* get_shape_aspect_property_definition_representations(SELF.related_shape_aspect) |
                 SIZEOF( QUERY( item_1 <* pdr_1.used_representation.items |
                   SIZEOF( QUERY( item_2 <* pdr_2.used_representation.items |
                     ('AUTOMOTIVE_DESIGN.EDGE' IN TYPEOF(item_1)) AND
                     ('AUTOMOTIVE_DESIGN.EDGE' IN TYPEOF(item_2)) AND
                     NOT ((item_1\edge.edge_start :=: item_2\edge.edge_start) OR
 (item_1\edge.edge_start :=: item_2\edge.edge_end) OR
 (item_1\edge.edge_end   :=: item_2\edge.edge_start) OR
 (item_1\edge.edge_end   :=: item_2\edge.edge_end))
                    )) > 0
                  )) > 0
                )) > 0
              )) = 0;   
  WR3:  SIZEOF( QUERY(pdr_1 <* get_shape_aspect_property_definition_representations(SELF.relating_shape_aspect) |
               SIZEOF( QUERY( pdr_2 <* get_shape_aspect_property_definition_representations(SELF.related_shape_aspect) |
                 SIZEOF( QUERY( item_1 <* pdr_1.used_representation.items |
                   SIZEOF( QUERY( item_2 <* pdr_2.used_representation.items |
                     ('AUTOMOTIVE_DESIGN.FACE' IN TYPEOF(item_1)) AND
                     ('AUTOMOTIVE_DESIGN.FACE' IN TYPEOF(item_2)) AND
                     (SIZEOF( QUERY( f_1 <* item_1\face.bounds |
                        ('AUTOMOTIVE_DESIGN.EDGE_LOOP' IN TYPEOF(f_1.bound)) AND
                        (SIZEOF( QUERY( f_2 <* item_2\face.bounds |
  ('AUTOMOTIVE_DESIGN.EDGE_LOOP' IN TYPEOF(f_2.bound)) AND
  (SIZEOF( QUERY( oe_1 <* f_1.bound\path.edge_list |
     SIZEOF( QUERY( oe_2 <* f_2.bound\path.edge_list |
       oe_1.edge_element :=: oe_2.edge_element 
      )) = 0
    )) = 0)
 )) = 0)
                       )) = 0)
                    )) = 0
                  )) = 0
                )) = 0
              )) = 0;   
  WR4:  SELF.name IN ['g0','g1','g2'];
           
END_ENTITY;
(*

Formal Propositions:

WR1: The shape_aspects that play the role of either relating_shape_aspect or related_shape_aspect shall be associated to representations that contain either an edge in both or a face in both.

WR2: If the representations contain edges they shall share at least one instance of vertex.

WR3: If the representations contain faces they shall share at least one instance of edge.

WR4: The shape_aspect_transition shall have a name of either 'g0','g1, or 'g2'.

5.2.3.1.137 shape_defining_relationship

A shape_defining_relationship is a type of shape_aspect_relationship that is used to relate features with components that define the basic shape of the feature such as profiles or sweep paths.

EXPRESS specification:

*)
ENTITY shape_defining_relationship
  SUBTYPE OF (shape_aspect_relationship);
WHERE
  WR1:  (SELF\shape_aspect_relationship.description <> 'profile usage') OR
             (SIZEOF( ['AUTOMOTIVE_DESIGN.RECTANGULAR_CLOSED_PROFILE',
                       'AUTOMOTIVE_DESIGN.CIRCULAR_CLOSED_PROFILE',
                       'AUTOMOTIVE_DESIGN.NGON_CLOSED_PROFILE',
                       'AUTOMOTIVE_DESIGN.CLOSED_PATH_PROFILE',
                       'AUTOMOTIVE_DESIGN.OPEN_PATH_PROFILE',
                       'AUTOMOTIVE_DESIGN.PARTIAL_CIRCULAR_PROFILE',
                       'AUTOMOTIVE_DESIGN.ROUNDED_U_PROFILE',
                       'AUTOMOTIVE_DESIGN.SQUARE_U_PROFILE',
                       'AUTOMOTIVE_DESIGN.TEE_PROFILE',
                       'AUTOMOTIVE_DESIGN.VEE_PROFILE'] *
                       TYPEOF(SELF\shape_aspect_relationship.relating_shape_aspect)
               ) = 1);   
        
  WR2:  (SELF\shape_aspect_relationship.description <> 'path feature component usage') OR
             ('AUTOMOTIVE_DESIGN.PATH_FEATURE_COMPONENT' IN
               TYPEOF(SELF\shape_aspect_relationship.relating_shape_aspect));   
END_ENTITY;
(*

Formal Propositions:

WR1: If the shape_defining_relationship has a description of 'profile usage', the relating_shape_aspect shall be of type rectangular_closed_profile, circular_closed_profile, ngon_closed_profile, closed_path_profile, open_path_profile, partial_circular_profile, rounded_u_profile, square_u_profile, tee_profile, or vee_profile.

WR2: If the shape_defining_relationship has a description of 'path feature component usage', the relating_shape_aspect shall be of type path_feature_component.

5.2.3.1.138 shape_representation_with_parameters

A shape_representation_with_parameters is a type of shape_representation in which the shape of a product_definition or shape_aspect is defined implicitly using measurements and descriptive parameters.

EXAMPLE The shape of a box may be specified by a shape_representation_with_parameters by giving measurements for its height, length, and width.

EXPRESS specification:

*)
ENTITY shape_representation_with_parameters
  SUBTYPE OF (shape_representation);
WHERE
  WR1:  SIZEOF( QUERY( i <* SELF.items |
                SIZEOF(['AUTOMOTIVE_DESIGN.PLACEMENT',
                        'AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
                        'AUTOMOTIVE_DESIGN.DESCRIPTIVE_REPRESENTATION_ITEM']
                       * TYPEOF(i)) = 1
              )) = SIZEOF(SELF.items);
           
END_ENTITY;
(*

Formal Propositions:

WR1: The elements that specify the parameters for a shape_representation_with_parameters shall be of type placement, measure_representation_item, or descriptive_representation_item.

5.2.3.1.139 slot

A slot is a type of feature_definition that is the representation of a volume that is removed from a solid base shape. This removed volume is represented by sweeping an open profile along a path represented by a path_feature_component. Each end of the slot is represented by a slot_end. See ARM definition for Slot_feature for more information.

EXPRESS specification:

*)
ENTITY slot
  SUBTYPE OF (feature_definition);
WHERE
  WR1:  SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) AND
               (SIZEOF(pdr.used_representation.items) = 1)
             )) = 1;   
  WR2:  SIZEOF( QUERY( sa <* get_shape_aspects(SELF) |
              (sa.description = 'swept shape occurrence') AND
              (SIZEOF( QUERY( sar <* USEDIN( sa, 'AUTOMOTIVE_DESIGN.' +
                'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
                ('AUTOMOTIVE_DESIGN.SHAPE_DEFINING_RELATIONSHIP' IN
                 TYPEOF(sar)) AND
                (sar.description = 'profile usage') AND
                (SIZEOF(['AUTOMOTIVE_DESIGN.SQUARE_U_PROFILE',
'AUTOMOTIVE_DESIGN.PARTIAL_CIRCULAR_PROFILE',
'AUTOMOTIVE_DESIGN.ROUNDED_U_PROFILE',
'AUTOMOTIVE_DESIGN.VEE_PROFILE',
'AUTOMOTIVE_DESIGN.TEE_PROFILE',
'AUTOMOTIVE_DESIGN.OPEN_PATH_PROFILE']
* TYPEOF(sar.relating_shape_aspect)
                 ) = 1 )
               )) = 1 )
             )) = 1;   
  WR3:  SIZEOF( QUERY( sa <* get_shape_aspects(SELF) |
              (sa.description = 'course of travel occurrence') AND
              (SIZEOF( QUERY( sar <* USEDIN( sa, 'AUTOMOTIVE_DESIGN.' +
                'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
                ('AUTOMOTIVE_DESIGN.SHAPE_DEFINING_RELATIONSHIP' IN
                 TYPEOF(sar)) AND
                (sar.name = 'course of travel') AND
                (sar.description = 'path feature component usage') AND
                ('AUTOMOTIVE_DESIGN.PATH_FEATURE_COMPONENT' IN
                 TYPEOF(sar.relating_shape_aspect))
               )) = 1 )
             )) = 1;   
  
  WR4:  SIZEOF( QUERY( sa <* get_shape_aspects(SELF) |
              (sa.description = 'end condition occurrence') AND
              (SIZEOF( QUERY( sar <* USEDIN( sa, 'AUTOMOTIVE_DESIGN.' +
                'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
                ('AUTOMOTIVE_DESIGN.FEATURE_COMPONENT_RELATIONSHIP' IN
                 TYPEOF(sar)) AND
                (sar.name = 'starting') AND
                (sar.description = 'slot end usage') AND
                ('AUTOMOTIVE_DESIGN.SLOT_END' IN
                 TYPEOF(sar.relating_shape_aspect))
               )) = 1 )
             )) = 1;   
  WR5:  SIZEOF( QUERY( sa <* get_shape_aspects(SELF) |
              (sa.description = 'end condition occurrence') AND
              (SIZEOF( QUERY( sar <* USEDIN( sa, 'AUTOMOTIVE_DESIGN.' +
                'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
                ('AUTOMOTIVE_DESIGN.FEATURE_COMPONENT_RELATIONSHIP' IN
                 TYPEOF(sar)) AND
                (sar.name = 'ending' 
) AND
                (sar.description = 'slot end usage') AND
                ('AUTOMOTIVE_DESIGN.SLOT_END' IN
                 TYPEOF(sar.relating_shape_aspect))
               )) = 1 )
             )) = 1;   
END_ENTITY;
(*

Formal Propositions:

WR1: The implicit representation of the slot shall contain exactly one representation_items in its set of items.

WR2: The slot shall be the basis shape for exactly one shape_aspect with a description of 'swept shape occurrence'. This shape_aspect shall be the related_shape_aspect in exactly one shape_defining_relationship with a description of 'profile usage' and a relating_shape_aspect of type square_u_profile, partial_circular_profile, rounded_u_profile, vee_profile, tee_profile, or open_path_profile.

WR3: The slot shall be the basis shape for exactly one shape_aspect with a description of 'course of travel occurrence'. This shape_aspect shall be the related_shape_aspect in exactly one shape_defining_relationship with a name of 'course of travel', a description of 'path feature component usage' and a relating_shape_aspect of type path_feature_component.

WR4: The slot shall be the basis shape for exactly one shape_aspect with a description of 'end condition occurrence'. This shape_aspect shall be the related_shape_aspect in exactly one feature_component_relationship with a description of 'slot end usage' and a a name of 'starting' in which the relating_shape_aspect is a slot_end.

WR5: The slot shall be the basis shape for exactly one shape_aspect with a description of 'end condition occurrence'. This shape_aspect shall be the related_shape_aspect in exactly one feature_component_relationship with a description of 'slot end usage' and a name of 'ending' in which the relating_shape_aspect is a slot_end.

5.2.3.1.140 slot_end

A slot_end is a type of shape_aspect that is the representation of the end condition for a slot. For more information see ARM definition for Slot_end_type, for Flat_slot_end_type, for Open_slot_end_type, for Radiused_slot_end_type, and for Woodruff_slot_end_type.

EXPRESS specification:

*)
ENTITY slot_end
  SUBTYPE OF (shape_aspect);
WHERE
  WR1:  'AUTOMOTIVE_DESIGN.FEATURE_COMPONENT_DEFINITION' IN
             TYPEOF(SELF.of_shape.definition);
           
  WR2:  SELF.description IN ['open','radiused','flat','woodruff'];   
  WR3:  (SELF.description IN ['open','radiused']) XOR
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) 
              )) = 0);   
  WR4:  NOT(SELF.description IN ['flat','woodruff']) XOR
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) 
              )) = 1);   
  WR5:  (SELF.description <> 'flat') OR
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) AND
               (SIZEOF(pdr.used_representation.items) = 2)
              )) = 1);   
  WR6:  (SELF.description <> 'flat') OR
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='first radius') AND
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2)
               )) = 1)
              )) = 1);   
  WR7:  (SELF.description <> 'flat') OR
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='second radius') AND
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2)
               )) = 1)
              )) = 1);   
  WR8:  (SELF.description <> 'woodruff') OR
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) AND
               (SIZEOF(pdr.used_representation.items) = 1)
              )) = 1);   
  WR9:  (SELF.description <> ' woodruff ') OR
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='radius') AND
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2)
               )) = 1)
              )) = 1);   
  WR10: SIZEOF( QUERY( sar <* USEDIN( SELF, 'AUTOMOTIVE_DESIGN.' +
              'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
              ('AUTOMOTIVE_DESIGN.FEATURE_COMPONENT_RELATIONSHIP' IN
               TYPEOF(sar)) AND
              (sar.name IN ['starting','ending'
]) AND
              (sar.description = 'slot end usage') AND
              ('AUTOMOTIVE_DESIGN.SLOT' IN
               TYPEOF(sar.related_shape_aspect.of_shape.definition)) AND
              (sar.related_shape_aspect.of_shape.definition\characterized_object.name = 'end condition') AND
              (sar.related_shape_aspect.of_shape.definition\characterized_object.description = 'slot end occurrence')
             )) = 1;   
END_ENTITY;
(*

Formal Propositions:

WR1: The slot_end shall be an aspect of the shape of a feature_component_definition.

WR2: The description for the slot_end shall be either 'open', 'radiused', 'flat', or 'woodruff'.

WR3: If the description of the slot_end is 'open' or 'radiused', the slot_end shall not have any implicit representation.

WR4: If the description of the slot_end is 'flat' or 'woodruff' the slot_end shall have its implicit representation specified by exactly one shape_representation_with_parameters.

WR5: If the description of the slot_end is 'flat', the slot_end shall have an implicit representation that contains exactly two representation_items in its set of items.

WR6: If the description of the slot_end is 'flat', exactly one representation_item used for the implicit representation of the slot_end shall be of type measure_representation_item and length_measure_with_unit with a name of 'first radius'.

WR7: If the description of the slot_end is 'flat', exactly one representation_item used for the implicit representation of the slot_end shall be of type measure_representation_item and length_measure_with_unit with a name of 'second radius'.

WR8: If the description of the slot_end is 'woodruff', the slot_end shall have an implicit representation that contains exactly one representation_item in its set of items.

WR9: If the description of the slot_end is 'woodruff', exactly one representation_item used for the implicit representation of the slot_end shall be of type measure_representation_item and length_measure_with_unit with a name of 'radius'.

WR10: The slot_end shall be the relating_shape_aspect in exactly one feature_component_relationship with a description of 'slot end usage' and a name of either 'starting' or 'ending' in which the related_shape_aspect is an aspect of the shape of a slot with a name of 'end condition' and a description of 'slot end occurrence'.

5.2.3.1.141 square_u_profile

A square_u_profile is a type of shape_aspect that consists of three connected straight lines and a reference system for the parameters of the square_u_profile. The reference system is used to define location and orientation of the square_u_profile and consists of two orthogonal reference axes X and Y that intersect in a reference point. See ARM definition for Square_u_profile for more information.

EXPRESS specification:

*)
ENTITY square_u_profile
  SUBTYPE OF (shape_aspect);
WHERE
  WR1:  'AUTOMOTIVE_DESIGN.FEATURE_COMPONENT_DEFINITION' IN
             TYPEOF(SELF.of_shape.definition);   
  WR2:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation))
              )) = 1;   
  WR3:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              {4 <= SIZEOF( pdr.used_representation.items) <= 6}
              )) = 1;   
  WR4:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                NOT(i.name IN ['orientation','width','first angle','second angle','first radius','second radius'])
                )) > 0)
              )) = 0;   
  WR5:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                ('AUTOMOTIVE_DESIGN.PLACEMENT' IN TYPEOF(i)) AND
                (i.name = 'orientation')
                )) = 1)
              )) = 1;   
  WR6:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2) AND
                 (i.name = 'width')
                )) = 1)
              )) = 1;   
  WR7:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.PLANE_ANGLE_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2) AND
                 (i.name = 'first angle')
                )) = 1)
              )) = 1;   
  WR8:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.PLANE_ANGLE_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2) AND
                 (i.name = 'second angle')
                )) = 1)
              )) = 1;   
  WR9:  (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) AND
               (SIZEOF( QUERY( i <* pdr.used_representation.items |
                  (i.name = 'first radius')
                 )) = 1)
               )) <= 1) AND
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) AND
               (SIZEOF( QUERY( i <* pdr.used_representation.items |
                 (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
 'AUTOMOTIVE_DESIGN.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
                  ) = 2) AND
                  (i.name = 'first radius')
                 )) = 1)
               )) <= 1);   
  WR10: (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) AND
               (SIZEOF( QUERY( i <* pdr.used_representation.items |
                  (i.name = 'second radius')
                 )) = 1)
               )) <= 1) AND
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) AND
               (SIZEOF( QUERY( i <* pdr.used_representation.items |
                 (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
 'AUTOMOTIVE_DESIGN.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
                  ) = 2) AND
                  (i.name = 'second radius')
                 )) = 1)
               )) <= 1);   
  WR11: (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
                ('AUTOMOTIVE_DESIGN.PLANAR_SHAPE_REPRESENTATION' IN 
                 TYPEOF(pdr.used_representation))
                )) <= 1) AND
              (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
                ('AUTOMOTIVE_DESIGN.PLANAR_SHAPE_REPRESENTATION' IN 
                 TYPEOF(pdr.used_representation)) AND 
                (pdr.used_representation.name = 'profile limit')
                )) <= 1);   
END_ENTITY;
(*

Formal Propositions:

WR1: The square_u_profile shall be an aspect of the shape of a feature_component_definition.

WR2: The square_u_profile shall have exactly one implicit representation defined by a shape_representation_with_parameters.

WR3: The shape_representation_with_parameters that represents the square_u_profile shall contain between four and six representation_items in its set of items.

WR4: The implicit representation of a square_u_profile shall contain only representation_items in its set of items that have a name of either 'orientation', 'width', 'first angle', 'second angle', 'first radius', or 'second radius'.

WR5: Exactly one representation_item used for the implicit representation of a square_u_profile shall be of type placement with a name of `orientation'.

WR6: Exactly one representation_item used for the implicit representation of a square_u_profile shall be of type measure_representation_item and length_measure_with_unit with a name of `width'.

WR7: Exactly one representation_item used for the implicit representation of a square_u_profile shall be of type measure_representation_item and plane_angle_measure_with_unit with a name of `first angle'.

WR8: Exactly one representation_item used for the implicit representation of a square_u_profile shall be of type measure_representation_item and plane_angle_measure_with_unit with a name of `second angle'.

WR9: At most one representation_item used for the implicit representation of a square_u_profile shall have a name of 'first radius'. If present, this representation_item shall be of type measure_representation_item and length_measure_with_unit.

WR10: At most one representation_item used for the implicit representation of a square_u_profile shall have a name of 'second radius'. If present, this representation_item shall be of type measure_representation_item and length_measure_with_unit.

WR11: The square_u_profile shall be represented by at most one planar_shape_representation. If present, this planar_shape_representation shall have a name of 'profile limit'.

Informal Propositions:

IP1: The square_u_profile shall be planar and shall lie in the X-Y plane of the reference system.

IP2: The reference point of the square_u_profile is defined at the midpoint of the base line.

IP3: The square_u_profile is defined with the base line in the X direction and the Y direction in the direction of the open end of the profile.

5.2.3.1.142 surface_condition_callout

A surface_condition_callout is a type of draughting_callout that presents a surface condition.

EXPRESS specification:

*)
ENTITY surface_condition_callout
  SUBTYPE OF (draughting_callout);
WHERE
  WR1:  SIZEOF( QUERY( c <* SELF.contents |
              SIZEOF(['AUTOMOTIVE_DESIGN.ANNOTATION_CURVE_OCCURRENCE',
                      'AUTOMOTIVE_DESIGN.ANNOTATION_SYMBOL_OCCURRENCE',
                      'AUTOMOTIVE_DESIGN.ANNOTATION_TEXT_OCCURRENCE'] *
                      TYPEOF(c)
               ) <> 1
              )) = 0;   
END_ENTITY;
(*

Formal Propositions:

WR1: The elements in the inherited attribute contents shall be of type annotation_curve_occurrence, annotation_symbol_occurrence, or annotation_text_occurrence.

5.2.3.1.143 surface_texture_representation

A surface_texture_representation is a type of representation that represents a surface texture such as roughness or waviness. The kind of surface texture that is represented is given in the names of the representation_items. The method or standard according to which the surface texture is represented is specified in the description of the descriptive_representation_item. For more information see ARM definition for Surface_texture.

EXPRESS specification:

*)
ENTITY surface_texture_representation
  SUBTYPE OF (representation);
WHERE
  WR1:  SIZEOF( QUERY( i <* SELF.items |
              SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
                      'AUTOMOTIVE_DESIGN.VALUE_RANGE',
                      'AUTOMOTIVE_DESIGN.DESCRIPTIVE_REPRESENTATION_ITEM'] *
                      TYPEOF(i) 
               ) <> 1)
              ) = 0;   
  WR2:  (SIZEOF( QUERY( i <* SELF.items |
                'AUTOMOTIVE_DESIGN.DESCRIPTIVE_REPRESENTATION_ITEM' IN
                TYPEOF(i)
               )) = 1) AND
             (SIZEOF( QUERY( i <* SELF.items |
                ('AUTOMOTIVE_DESIGN.DESCRIPTIVE_REPRESENTATION_ITEM' IN
                 TYPEOF(i)) AND
                (i.name = 'measuring method') 
               )) = 1);   
  WR3:  SIZEOF( QUERY( i <* SELF.items |
               SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
                       'AUTOMOTIVE_DESIGN.VALUE_RANGE'] *
                       TYPEOF(i) 
                ) = 1)
              ) > 0;   
  WR4:  (SIZEOF( USEDIN(SELF,'AUTOMOTIVE_DESIGN.' +
                     'REPRESENTATION_RELATIONSHIP.REP_1')) <= 1) AND
             (SIZEOF( USEDIN(SELF,'AUTOMOTIVE_DESIGN.' +
                     'REPRESENTATION_RELATIONSHIP.REP_2')) = 0) AND
             (SIZEOF( QUERY( rr <* USEDIN(SELF,'AUTOMOTIVE_DESIGN.' +
                     'REPRESENTATION_RELATIONSHIP.REP_1') |
                rr.rep_2.name = 'measuring direction'))
               = SIZEOF( USEDIN(SELF,'AUTOMOTIVE_DESIGN.' +
'REPRESENTATION_RELATIONSHIP.REP_1')));   
  WR5:  (SIZEOF( USEDIN(SELF,'AUTOMOTIVE_DESIGN.' +
                      'PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION')
               ) = 1) AND
             (SIZEOF( QUERY( pdr <* USEDIN(SELF,'AUTOMOTIVE_DESIGN.' +
                      'PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION') |
               SIZEOF( QUERY( gpa <* USEDIN(pdr.definition,'AUTOMOTIVE_DESIGN.' +
                       'GENERAL_PROPERTY_ASSOCIATION.DERIVED_DEFINITION') |
                ('AUTOMOTIVE_DESIGN.GENERAL_PROPERTY' IN TYPEOF( gpa.base_definition)) AND
                (gpa.base_definition.name = 'surface_texture')
                )) = 1
               )) = 1);   
END_ENTITY;
(*

Formal Propositions:

WR1: Each instance of surface_texture_representation shall contain only representation_items that are of type measure_representation_item, value_range, or descriptive_representation_item.

WR2: Each instance of surface_texture_representation shall contain exactly one descriptive_representation_item. The name of this descriptive_representation_item shall be 'measuring method'.

WR3: Each instance of surface_texture_representation shall contain at least one measure_representation_item or value_range.

WR4: Each instance of surface_texture_representation shall be referenced by at most one representation_relationship. If such a relationship is present, the surface_texture_representation shall be the rep_1 and the rep_2 shall be a representation whose name is 'measuring direction'.

WR5: Each instance of surface_texture_representation shall be referenced by exactly one property_definition_representation. This property_definition_representation shall relate the representation with a property_definition that is the derived_definition of a general_property_association that refers as base_definition to a general_property with a name of 'surface_texture'.

Informal Propositions:

IP1: If the surface_texture_representation contains qualified_representation_items that refer to a type_qualifier representing the value determination then all of the representation_items except the descriptive_representation_item shall also be qualified_representation_items that refer to the same instance of type_qualifier.

5.2.3.1.144 tactile_appearance_representation

A tactile_appearance_representation is a type of representation that represent the tactile appearance of an object. For more information see ARM definition for Tactile_appearance.

EXPRESS specification:

*)
ENTITY tactile_appearance_representation
  SUBTYPE OF (representation);
WHERE
  WR1:  SIZEOF( QUERY( i <* SELF.items |
              SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
                      'AUTOMOTIVE_DESIGN.VALUE_RANGE'] *
                      TYPEOF(i) 
               ) <> 1)
              ) = 0;   
  WR2:  SIZEOF( QUERY( i <* SELF.items |
               name = 'depth'
              )) <= 1;   
  WR3:  (SIZEOF( USEDIN(SELF,'AUTOMOTIVE_DESIGN.' +
                      'PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION')
               ) = 1) AND
             (SIZEOF( QUERY( pdr <* USEDIN(SELF,'AUTOMOTIVE_DESIGN.' +
                      'PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION') |
               SIZEOF( QUERY( gpa <* USEDIN(pdr.definition,'AUTOMOTIVE_DESIGN.' +
                       'GENERAL_PROPERTY_ASSOCIATION.DERIVED_DEFINITION') |
                ('AUTOMOTIVE_DESIGN.GENERAL_PROPERTY' IN TYPEOF( gpa.base_definition)) AND
                (gpa.base_definition.name = 'surface_texture')
                )) = 1
               )) = 1);
END_ENTITY;
(*

Formal Propositions:

WR1: Each instance of tactile_appearance_representation shall only representation_items of type measure_representation_item or value_range in its set of items.

WR2: At most one representation_item in the set of items shall have a name of 'depth'.

WR3: Each instance of tactile_appearance_representation shall be referenced by exactly one property_definition_representation. This property_definition_representation shall relate the representation with a property_definition that is the derived_definition of a general_property_association that refers as base_definition to a general_property with a name of 'surface_texture'.

Informal Propositions:

IP1: If the tactile_appearance_representation contains qualified_representation_items that refer to a type_qualifier representing the value determination then all of the representation_items shall also be qualified_representation_items that refer to the same instance of type_qualifier.

5.2.3.1.145 taper

A taper is a type of shape_aspect which represents a linear change of shape applied to a feature. See ARM definition for Angle_taper, for Diameter_taper, and for Directed_taper for more information.

EXPRESS specification:

*)
ENTITY taper
  SUBTYPE OF (shape_aspect);
WHERE
  WR1:  'AUTOMOTIVE_DESIGN.FEATURE_COMPONENT_DEFINITION' IN
             TYPEOF(SELF.of_shape.definition);
           
  WR2:  SELF.description IN ['angle taper','diameter taper','directed taper'];
           
  WR3:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation))
              )) = 1;   
  WR4:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( pdr.used_representation.items) = 1)
              )) = 1;   
  WR5:  (SELF.description <> 'angle taper') OR
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.PLANE_ANGLE_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2) AND
                 (i.name = 'taper angle')
                )) = 1)
              )) = 1);   
  WR6:  (SELF.description <> 'diameter taper') OR
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2) AND
                 (i.name = 'taper diameter')
                )) = 1)
              )) = 1);   
  WR7:  (SELF.description <> 'directed taper') OR
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.PLANE_ANGLE_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2) AND
                 (i.name = 'angle')
                )) = 1)
              )) = 1);   
  WR8:  (SELF.description <> 'directed taper') OR
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.DIRECTION_SHAPE_REPRESENTATION' IN 
               TYPEOF(pdr.used_representation))
              )) = 1) AND
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.DIRECTION_SHAPE_REPRESENTATION' IN 
               TYPEOF(pdr.used_representation)) AND
              (pdr.used_representation.name = 'direction')
              )) = 1);   
END_ENTITY;
(*

Formal Propositions:

WR1: The taper shall be an aspect of the shape of a feature_component_definition.

WR2: The description of the taper shall be either 'angle taper', 'diameter taper', or 'directed taper'.

WR3: The taper shall have exactly one implicit representation defined by a shape_representation_with_parameters.

WR4: The shape_representation_with_parameters that represents the shape of the taper shall contain exactly one representation_item in its set of items.

WR5: If the description of the taper is 'angle taper', the implicit representation of the taper shall contain exactly one representation_item of type measure_representation_item and plane_angle_measure_with_unit with a name of 'taper angle'.

WR6: If the description of the taper is 'diameter taper', the implicit representation of the taper shall contain exactly one representation_item of type measure_representation_item and length_measure_with_unit with a name of 'taper diameter'.

WR7: If the description of the taper is 'directed taper', the implicit representation of the taper shall contain exactly one representation_item of type measure_representation_item and plane_angle_measure_with_unit with a name of 'angle'.

WR8: If the description of the taper is 'directed taper', its shape shall be represented by exactly one direction_shape_representation. This direction_shape_representation shall have a name of 'direction'.

5.2.3.1.146 tee_profile

A tee_profile is a type of shape_aspect that consists of an upside down T shape and a reference system for the parameters of the tee_profile. The tee_profile consist of a stem and a perpendicular crossbar. The stem has two parallel lines connected at their ends by the crossbar. The crossbar is a rectangle. The profile is symmetric about the centreline of the stem. The reference system is used to define location and orientation of the tee_profile and consists of two orthogonal reference axes X and Y that intersect in a reference point. See ARM definition for Tee_profile for more information.

EXPRESS specification:

*)
ENTITY tee_profile
  SUBTYPE OF (shape_aspect);
WHERE
  WR1:  'AUTOMOTIVE_DESIGN.FEATURE_COMPONENT_DEFINITION' IN
             TYPEOF(SELF.of_shape.definition);   
  WR2:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation))
              )) = 1;   
  WR3:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              {9 <= SIZEOF( pdr.used_representation.items) <= 10}
              )) = 1;   
  WR4:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                NOT(i.name IN ['orientation','width','depth','cross bar width','cross bar depth','first offset',
      'second offset','first angle','second angle','radius'])
                )) > 0)
              )) = 0;   
  WR5:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                ('AUTOMOTIVE_DESIGN.PLACEMENT' IN TYPEOF(i)) AND
                (i.name = 'orientation')
                )) = 1)
              )) = 1;   
  WR6:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2) AND
                 (i.name = 'width')
                )) = 1)
              )) = 1;   
  WR7:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2) AND
                 (i.name = 'depth')
                )) = 1)
              )) = 1;   
  WR8:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2) AND
                 (i.name = 'cross bar width')
                )) = 1)
              )) = 1;   
  WR9:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2) AND
                 (i.name = 'cross bar depth')
                )) = 1)
              )) = 1;   
  WR10: SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2) AND
                 (i.name = 'first offset')
                )) = 1)
              )) = 1;   
  WR11: SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2) AND
                 (i.name = 'second offset')
                )) = 1)
              )) = 1;   
  WR12: SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.PLANE_ANGLE_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2) AND
                 (i.name = 'first angle')
                )) = 1)
              )) = 1;   
  WR13: SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.PLANE_ANGLE_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2) AND
                 (i.name = 'second angle')
                )) = 1)
              )) = 1;   
  WR14: (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) AND
               (SIZEOF( QUERY( i <* pdr.used_representation.items |
                  (i.name = 'radius')
                 )) = 1)
               )) <= 1) AND
              (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) AND
               (SIZEOF( QUERY( i <* pdr.used_representation.items |
                 (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
 'AUTOMOTIVE_DESIGN.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
                  ) = 2) AND
                  (i.name = 'radius')
                 )) = 1)
               )) <= 1);   
  WR15: (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
                ('AUTOMOTIVE_DESIGN.PLANAR_SHAPE_REPRESENTATION' IN 
                 TYPEOF(pdr.used_representation))
                )) <= 1) AND
              (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
                ('AUTOMOTIVE_DESIGN.PLANAR_SHAPE_REPRESENTATION' IN 
                 TYPEOF(pdr.used_representation)) AND 
                (pdr.used_representation.name = 'profile limit')
                )) <= 1);   
END_ENTITY;
(*

Formal Propositions:

WR1: The tee_profile shall be an aspect of the shape of a feature_component_definition.

WR2: The tee_profile shall have exactly one implicit representation defined by a shape_representation_with_parameters.

WR3: The shape_representation_with_parameters that represents the tee_profile shall contain between nine and ten representation_items in its set of items.

WR4: The implicit representation of a tee_profile shall contain only representation_items in its set of items that have a name of either 'orientation', 'width', 'depth', 'cross bar width', 'cross bar depth', 'first offset', 'second offset', 'first angle', 'second angle', or 'radius'.

WR5: Exactly one representation_item used for the implicit representation of a tee_profile shall be of type placement with a name of `orientation'.

WR6: Exactly one representation_item used for the implicit representation of a tee_profile shall be of type measure_representation_item and length_measure_with_unit with a name of `width'.

WR7: Exactly one representation_item used for the implicit representation of a tee_profile shall be of type measure_representation_item and length_measure_with_unit with a name of `depth'.

WR8: Exactly one representation_item used for the implicit representation of a tee_profile shall be of type measure_representation_item and length_measure_with_unit with a name of `cross bar width'.

WR9: Exactly one representation_item used for the implicit representation of a tee_profile shall be of type measure_representation_item and length_measure_with_unit with a name of `cross bar depth'.

WR10: Exactly one representation_item used for the implicit representation of a tee_profile shall be of type measure_representation_item and length_measure_with_unit with a name of `first offset'.

WR11: Exactly one representation_item used for the implicit representation of a tee_profile shall be of type measure_representation_item and length_measure_with_unit with a name of `second offset'.

WR12: Exactly one representation_item used for the implicit representation of a tee_profile shall be of type measure_representation_item and plane_angle_measure_with_unit with a name of `first angle'.

WR13: Exactly one representation_item used for the implicit representation of a tee_profile shall be of type measure_representation_item and plane_angle_measure_with_unit with a name of `second angle'.

WR14: At most one representation_item used for the implicit representation of a tee_profile shall have a name of `radius'. If present, this representation_item shall be of type measure_representation_item and length_measure_with_unit.

WR15: The tee_profile shall be represented by at most one planar_shape_representation. If present, this planar_shape_representation shall have a name of 'profile limit'.

Informal Propositions:

IP1: The tee_profile shall be planar and shall lie in the X-Y plane of the reference system.

IP2: The reference point of the tee_profile is defined at the midpoint of the side of the crossbar opposite the stem.

IP3: The tee_profile is defined with the side of the crossbar opposite the stem in the X direction and the profile symmetric with respect to the Y direction.

5.2.3.1.147 thread

A thread is a type of feature_definition that is the specification of a thread. See ARM definition for Thread_specification and for Defined_thread for more information.

EXPRESS specification:

*)
ENTITY thread
  SUBTYPE OF (feature_definition);
WHERE
  WR1:  SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) AND
               NOT ({7 <= SIZEOF(pdr.used_representation.items) <= 10})
              )) = 0;   
  WR2:  SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i\descriptive_representation_item.description IN ['internal','external']) AND
                ('AUTOMOTIVE_DESIGN.DESCRIPTIVE_REPRESENTATION_ITEM'
                 IN TYPEOF(i))
               )) = 1)
              )) = 1;   
  WR3:  SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='major diameter') AND
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2)
               )) = 1)
              )) = 1;   
  WR4:  SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='minor diameter') AND
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2)
               )) = 1)
              )) <= 1;   
  WR5:  SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='pitch diameter') AND
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2)
               )) = 1)
              )) = 1;   
  WR6:  SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
              TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='crest') AND
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2)
               )) = 1)
              )) <= 1;   
  WR7:  SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='number of threads') AND
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.RATIO_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2)
               )) = 1)
              )) = 1;   
  WR8:  SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='fit class') AND
                ('AUTOMOTIVE_DESIGN.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(i))
               )) = 1)
              )) = 1;   
  WR9:  SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='form') AND
                ('AUTOMOTIVE_DESIGN.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(i))
               )) = 1)
              )) = 1;   
  WR10: SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) AND
               (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='hand') AND
                (i\descriptive_representation_item.description IN ['left hand','right hand']) AND
                ('AUTOMOTIVE_DESIGN.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(i))
                )) = 1)
               )) = 1;   
  WR11: SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) AND
               (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (i.name='qualifier') AND
                ('AUTOMOTIVE_DESIGN.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(i))
                )) = 1)
               )) <= 1;   
  WR12: SIZEOF( QUERY( pdr <* get_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) AND
               (SIZEOF( QUERY( i <* pdr.used_representation.items |
                 NOT(i.name IN ['thread side','major diameter','minor diameter','pitch diameter',
       'crest','number of threads','fit class','form','hand','qualifier'])
                )) > 0)
               )) = 0;   
END_ENTITY;
(*

Formal Propositions:

WR1: The shape_representation_with_parameters that represents the thread shall contain between seven and ten representation_items in its set of items.

WR2: Exactly one representation_item used for the implicit representation of the thread shall be of type descriptive_representation_item with a name of 'thread side' and a description of either 'internal' or 'external'.

WR3: Exactly one representation_item used for the implicit representation of the thread shall be of type measure_representation_item and length_measure_with_unit with a name of 'major diameter'.

WR4: At most one representation_item used for the implicit representation of the thread shall be of type measure_representation_item and length_measure_with_unit with a name of 'minor diameter'.

WR5: Exactly one representation_item used for the implicit representation of the thread shall be of type measure_representation_item and length_measure_with_unit with a name of 'pitch diameter'.

WR6: At most one representation_item used for the implicit representation of the thread shall be of type measure_representation_item and length_measure_with_unit with a name of 'crest'.

WR7: Exactly one representation_item used for the implicit representation of the thread shall be of type measure_representation_item and ratio_measure_with_unit with a name of 'number of threads'.

WR8: Exactly one representation_item used for the implicit representation of the thread shall be of type descriptive_representation_item with a name of 'fit class'.

WR9: Exactly one representation_item used for the implicit representation of the thread shall be of type descriptive_representation_item with a name of 'form'.

WR10: Exactly one representation_item used for the implicit representation of the thread shall be of type descriptive_representation_item with a name of 'hand'. The descriptive_representation_item shall have a description of either 'left hand' or 'right hand'.

WR11: The implicit representation of the thread shall contain at most one representation_item of type descriptive_representation_item that has a name of 'qualifier'.

WR12: The implicit representation of a thread shall contain only representation_items with a name of either ''thread side', 'major diameter', 'minor diameter', 'pitch diameter', 'crest', 'number of threads', 'fit class', 'form', 'hand', or 'qualifier'.

5.2.3.1.148 transition_feature

A transition_feature is a type of shape_aspect that is the representation of a transition between two surfaces. See ARM definition for Transition_feature for more information.

EXPRESS specification:

*)
ENTITY transition_feature
  SUBTYPE OF (shape_aspect);
WHERE
  WR1:  'AUTOMOTIVE_DESIGN.PRODUCT_DEFINITION' IN
             TYPEOF(SELF.of_shape.definition);   
  WR2:  SIZEOF(['AUTOMOTIVE_DESIGN.CHAMFER',
                     'AUTOMOTIVE_DESIGN.EDGE_ROUND',
                     'AUTOMOTIVE_DESIGN.FILLET'] *
                     TYPEOF(SELF)) = 1;   
END_ENTITY;
(*

Formal Propositions:

WR1: The transition_feature shall be an aspect of the shape of a product_definition.

WR2: Each instance of transition_feature shall be either a chamfer, an edge_round, or a fillet.

Associated global rule:

The following global rule defined in this part of ISO 10303 applies to the transition_feature entity:

5.2.3.1.149 value_range

A value_range is a type of compound_representation_item that specifies a range of values defined either by two measure_representation_items, or two value_representation_items. See ARM definition for Value_range for more information.

EXPRESS specification:

*)
ENTITY value_range
  SUBTYPE OF (compound_representation_item);
WHERE
  WR1:  ('AUTOMOTIVE_DESIGN.SET_REPRESENTATION_ITEM' IN 
              TYPEOF(item_element)) AND 
             value_range_wr1(item_element);
           
  WR2:  value_range_wr2(item_element);
           
  WR3:  value_range_wr3(item_element);
           
END_ENTITY;
(*

Formal Propositions:

WR1: The value_range shall have a set_representation_item as its item_element. This set_representation_item shall have exactly two representation_items of the same type in its set that are either measure_representation_items or value_representation_items.

WR2: One of the representation_items in the set specified by item_element shall have a name of 'upper limit', and the other a name of 'lower limit'.

WR3: If the set specified by item_element consists of measure_representation_items, then the measure_representation_items shall point to the same instance of named_unit or derived_unit as their respective unit_component.

5.2.3.1.150 vector_style

A vector_style is a type of curve_style and pre_defined_terminator_symbol that defines the visual appearance of a vector.

EXPRESS specification:

*)
ENTITY vector_style
  SUBTYPE OF (pre_defined_terminator_symbol,curve_style);
END_ENTITY;
(*

5.2.3.1.151 vee_profile

A vee_profile is a type of shape_aspect that consists of two connected straight lines and a reference system for the parameters of the vee_profile. The reference system consists of two orthogonal reference axes X and Y that intersect in a reference point. See ARM definition for Vee_profile for more information.

EXPRESS specification:

*)
ENTITY vee_profile
  SUBTYPE OF (shape_aspect);
WHERE
  WR1:  'AUTOMOTIVE_DESIGN.FEATURE_COMPONENT_DEFINITION' IN
             TYPEOF(SELF.of_shape.definition);   
  WR2:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation))
              )) = 1;   
  WR3:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              {3 <= SIZEOF( pdr.used_representation.items) <= 4}
              )) = 1;   
  WR4:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                NOT(i.name IN ['orientation','profile angle','tilt angle','profile radius'])
                )) > 0)
              )) = 0;   
  WR5:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                ('AUTOMOTIVE_DESIGN.PLACEMENT' IN TYPEOF(i)) AND
                (i.name = 'orientation')
                )) = 1)
              )) = 1;   
  WR6:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.PLANE_ANGLE_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2) AND
                 (i.name = 'profile angle')
                )) = 1)
              )) = 1;   
  WR7:  SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
              ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
               TYPEOF(pdr.used_representation)) AND
              (SIZEOF( QUERY( i <* pdr.used_representation.items |
                (SIZEOF(['AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM',
'AUTOMOTIVE_DESIGN.PLANE_ANGLE_MEASURE_WITH_UNIT']*TYPEOF(i)
                 ) = 2) AND
                 (i.name = 'tilt angle')
                )) = 1)
              )) = 1;   
  WR8:  (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) AND
               (SIZEOF( QUERY( i <* pdr.used_representation.items |
                 (i.name = 'profile radius')
                 )) = 1)
               )) <= 1) AND
             (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
               ('AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
                TYPEOF(pdr.used_representation)) AND
               (SIZEOF( QUERY( i <* pdr.used_representation.items |
                 (i.name = 'profile radius') AND
                 ('AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND
                 ('AUTOMOTIVE_DESIGN.LENGTH_MEASURE_WITH_UNIT' IN TYPEOF(i))
                 )) = 1)
               )) <= 1);   
  WR9:  (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
                ('AUTOMOTIVE_DESIGN.PLANAR_SHAPE_REPRESENTATION' IN 
                 TYPEOF(pdr.used_representation))
                )) <= 1) AND
              (SIZEOF( QUERY( pdr <* get_shape_aspect_property_definition_representations(SELF) |
                ('AUTOMOTIVE_DESIGN.PLANAR_SHAPE_REPRESENTATION' IN 
                 TYPEOF(pdr.used_representation)) AND 
                (pdr.used_representation.name = 'profile limit')
                )) <= 1);   
END_ENTITY;
(*

Formal Propositions:

WR1: The vee_profile shall be an aspect of the shape of a feature_component_definition.

WR2: The vee_profile shall have exactly one implicit representation defined by a shape_representation_with_parameters.

WR3: The shape_representation_with_parameters that represents the vee_profile shall contain between three and four representation_items in its set of items.

WR4: The implicit representation of a vee_profile shall contain only representation_items in its set of items that have a name of either 'orientation', 'profile angle', 'tilt angle', or 'profile radius'.

WR5: Exactly one representation_item used for the implicit representation of a vee_profile shall be of type placement with a name of `orientation'.

WR6: Exactly one representation_item used for the implicit representation of a vee_profile shall be of type measure_representation_item and plane_angle_measure_with_unit with a name of `profile angle'.

WR7: Exactly one representation_item used for the implicit representation of a vee_profile shall be of type measure_representation_item and plane_angle_measure_with_unit with a name of `tilt angle'.

WR8: At most one representation_item used for the implicit representation of a vee_profile shall have a name of `profile radius'. If present, this representation_item shall be of type measure_representation_item with a value_component of type length_measure_with_unit.

WR9: The vee_profile shall be represented by at most one planar_shape_representation. If present, this planar_shape_representation shall have a name of 'profile limit'.

Informal Propositions:

IP1: The vee_profile shall be planar and shall lie in the X-Y plane of the reference system.

IP2: The reference point of the vee_profile is defined at the position where the two lines connect.

5.2.3.1.152 visual_appearance_representation

A visual_appearance_representation is a type of representation that represent the visual appearance of an object. For more information see ARM definition for Visual_appearance.

EXPRESS specification:

*)
ENTITY visual_appearance_representation
  SUBTYPE OF (representation);
WHERE
  WR1:  ({2 <= SIZEOF(SELF.items) <= 5}) AND
             (SIZEOF( QUERY( i <* items |
                ('AUTOMOTIVE_DESIGN.DESCRIPTIVE_REPRESENTATION_ITEM' IN
                 TYPEOF(i)) AND
                (i.name IN ['colour id','colour name','lustre','pattern','transparency'])
               )) = SIZEOF(SELF.items));   
  WR2:  SIZEOF( QUERY( i <* SELF.items |
                i.name = 'colour id')
              ) = 1;   
  WR3:  SIZEOF( QUERY( i <* SELF.items |
                i.name = 'lustre')
              ) = 1;   
  WR4:  SIZEOF( QUERY( i <* SELF.items |
                i.name = 'colour name')
              ) <= 1;   
  WR5:  SIZEOF( QUERY( i <* SELF.items |
                i.name = 'pattern')
              ) <= 1;   
  WR6:  SIZEOF( QUERY( i <* SELF.items |
                i.name = 'transparency')
              ) <= 1;   
  WR7:  (SIZEOF( USEDIN(SELF,'AUTOMOTIVE_DESIGN.' +
                      'PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION')
               ) = 1) AND
             (SIZEOF( QUERY( pdr <* USEDIN(SELF,'AUTOMOTIVE_DESIGN.' +
                      'PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION') |
               SIZEOF( QUERY( gpa <* USEDIN(pdr.definition,'AUTOMOTIVE_DESIGN.' +
                       'GENERAL_PROPERTY_ASSOCIATION.DERIVED_DEFINITION') |
                ('AUTOMOTIVE_DESIGN.GENERAL_PROPERTY' IN TYPEOF( gpa.base_definition)) AND
                (gpa.base_definition.name = 'surface_texture')
                )) = 1
               )) = 1);   
END_ENTITY;
(*

Formal Propositions:

WR1: Each instance of visual_appearance_representation shall contain between two and five representation_items in its set of items. These representation_items shall be of type descriptive_representation_item and have a name of 'colour id', 'colour name', 'lustre', 'pattern', or 'transparency'.

WR2: Each instance of visual_appearance_representation shall contain exactly one representation_item in its set of items that has a name of 'colour id'.

WR3: Each instance of visual_appearance_representation shall contain exactly one representation_item in its set of items that has a name of 'lustre'.

WR4: Each instance of visual_appearance_representation shall contain at most one representation_item in its set of items that has a name of 'colour name'.

WR5: Each instance of visual_appearance_representation shall contain at most one representation_item in its set of items that has a name of 'pattern'.

WR6: Each instance of visual_appearance_representation shall contain at most one representation_item in its set of items that has a name of 'transparency'.

WR7: Each instance of visual_appearance_representation shall be referenced by exactly one property_definition_representation. This property_definition_representation shall relate the representation with a property_definition that is the derived_definition of a general_property_association that refers as base_definition to a general_property with a name of 'surface_texture'.

Informal Propositions:

IP1: If the visual_appearance_representation contains qualified_representation_items that refer to a type_qualifier representing the value determination then all of the representation_items shall also be qualified_representation_items that refer to the same instance of type_qualifier.

© ISO 2010 — All rights reserved