Integrated application resource: Mechanical features ISO 10303-113:2021(E)
© ISO

Cover page
Table of contents
Copyright
Foreword
Introduction
1 Scope
2 Normative references
3 Terms, definitions and abbreviated terms
    3.1 Terms and definitions
    3.2 Abbreviated terms

4 Counterbore countersink
   4.1 General
   4.2 Fundamental concepts and assumptions
   4.3 Counterbore countersink type definitions
   4.4 Counterbore countersink entity definitions
   4.5 Counterbore countersink subtype constraint definition
5 Machining feature
   5.1 General
   5.2 Fundamental concepts and assumptions
   5.3 Machining feature type definition
   5.4 Machining feature entity definitions
   5.5 Machining feature subtype constraint definition
   5.6 Machining feature rule definitions
6 Mechanical design
   6.1 General
   6.2 Fundamental concepts and assumptions
   6.3 Mechanical design type definitions
   6.4 Mechanical design entity definitions
   6.5 Mechanical design function definitions
   6.6 Mechanical design rule definitions

A Short names of entities
B Information object registration
C Computer interpretable listings
D EXPRESS-G diagrams
E Technical discussion
F Change history
Bibliography
Index

5 Machining feature schema

5.1 General

The machining_feature_schema provides resources to identify the specific characteristics of part shape used in manufacturing. These characteristics are used to define manufacturing features. These shapes can be represented either by machining features defined in this schema, or by a boundary representation solid model, shared by other application protocols and used as application interpreted constructs in application protocols.

This clause defines the information requirements to which implementations shall conform using the EXPRESS language as defined in ISO 10303-11. The following EXPRESS declaration begins the machining_feature_schema and identifies the necessary external references.

Each implementation of an AP that uses this schema and that encodes entity names shall use the encoding specified in Annex A. Each reference to this schema in an open system shall use the identifier encoding specified in Annex B. This schema is illustrated in Annex D using the EXPRESS-G notation.

EXPRESS specification:

*)
SCHEMA machining_feature_schema;

REFERENCE FROM counterbore_countersink_schema    --  ISO 10303-113
  (explicit_composite_hole,
   explicit_round_hole);

REFERENCE FROM external_reference_schema    --  ISO 10303-41
  (externally_defined_item);

REFERENCE FROM geometry_schema    --  ISO 10303-42
  (bounded_curve,
   direction,
   plane,
   placement,
   point);

REFERENCE FROM measure_schema    --  ISO 10303-41
  (count_measure,
   length_measure_with_unit,
   measure_with_unit,
   named_unit,
   plane_angle_measure_with_unit,
   ratio_measure_with_unit);

REFERENCE FROM product_definition_schema    --  ISO 10303-41
  (product_definition);

REFERENCE FROM product_property_definition_schema    --  ISO 10303-41
  (characterized_object,
   product_definition_shape,
   property_definition,
   shape_aspect,
   shape_aspect_relationship);

REFERENCE FROM product_property_representation_schema    --  ISO 10303-41
  (get_property_definition_representations,
   property_definition_representation,
   shape_representation);

REFERENCE FROM qualified_measure_schema    --  ISO 10303-45
  (descriptive_representation_item,
   measure_representation_item);

REFERENCE FROM shape_aspect_definition_schema    --  ISO 10303-47
  (composite_shape_aspect,
   feature_definition,
   instanced_feature,
   shape_representation_with_parameters);

REFERENCE FROM topology_schema    --  ISO 10303-42
  (edge_curve,
   face_surface,
   oriented_face,
   path);
(*

NOTE 1   The schemas referenced above are specified in the following parts:

counterbore_countersink_schema ISO 10303-113
external_reference_schema ISO 10303-41
geometry_schema ISO 10303-42
measure_schema ISO 10303-41
product_definition_schema ISO 10303-41
product_property_definition_schema ISO 10303-41
product_property_representation_schema ISO 10303-41
qualified_measure_schema ISO 10303-45
shape_aspect_definition_schema ISO 10303-47
topology_schema ISO 10303-42

NOTE 2   See Annex D for a graphical representation of this schema.

5.2 Fundamental concepts and assumptions

The purpose of manufacturing features is to facilitate the identification of manufacturing shapes that are human and computer interpretable.

5.3 machining_feature_schema type definition

5.3.1 machining_feature_definition   EXPRESS-G

The machining_feature_definition type is a list of alternate data types. It provides a mechanism to refer to an instance of one of these data types.

EXPRESS specification:

*)
TYPE machining_feature_definition = SELECT
   (boss,
    compound_feature,
    externally_defined_feature_definition,
    flat_face,
    gear,
    marking,
    outer_round,
    outside_profile,
    pocket,
    protrusion,
    removal_volume,
    replicate_feature,
    revolved_profile,
    rib_top,
    round_hole,
    rounded_end,
    spherical_cap,
    step,
    slot,
    thread,
    turned_knurl);
END_TYPE;
(*

5.4 machining_feature_schema entity definitions

5.4.1 applied_area   EXPRESS-G

An applied_area is a type of shape_aspect that is the representation of the bounded enclosed area used in the definition of the thread and turned_knurl feature_definitions.

NOTE    Partial_area_definition is defined in ISO 10303-1814 [5] and defines the requirement for applied_area.

EXPRESS specification:

*)
ENTITY applied_area
  SUBTYPE OF (shape_aspect);
WHERE
  WR1: ('PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(SELF.of_shape));
  WR2: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) )) = 1)) )) = 0);
  WR3: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (( 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr. used_representation)) ) | (NOT({2 <= SIZEOF(impl_rep.used_representation.items) <= 3} ) ) )) = 0)) )) = 0);
  WR4: SIZEOF( QUERY( pd <* USEDIN( SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (SIZEOF( QUERY( pdr <* USEDIN( pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND (SIZEOF( QUERY( srwp_i <* pdr.used_representation.items | NOT (srwp_i.name IN ['orientation','effective length', 'maximum length']) )) > 0 ) )) = 0 ) )) = 0;
  WR5: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF([ 'QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'effective length')) )) = 1)) )) = 0)) )) <= 1);
  WR6: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF([ 'QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'maximum length')) )) <= 1)) )) = 0)) )) = 0);
  WR7: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | (('GEOMETRY_SCHEMA.PLACEMENT' IN TYPEOF(it)) AND (it.name = 'orientation')) )) = 1)) )) = 0)) )) = 0);
END_ENTITY;
(*

Formal propositions:

WR1: The applied_area shall be an aspect of the shape of a product_definition_shape.

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

WR3: The applied_area shall have an implicit representation that contains at least two and at most three representation_items in its set of items.

WR4: The implicit representation of an applied_area shall contain only representation_items in its set name of either 'orientation', 'effective length', or 'maximum length'.

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

WR6: At most one representation_item used for the implicit representation of the applied_area shall be of type measure_representation_item and length_measure_with_unit with a name of 'maximum length'.

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

Informal propositions:

IP1: When applied to a turned_knurl , the length_measure_with_unit with name of 'effective length' defines the overall length of the turned_knurl .

5.4.2 boss   EXPRESS-G

A boss is a type of feature_definition that is an enclosed shape protrusion with a reference location and position. A boss shall be circular, rectangular, or complex.

NOTE    Boss is defined in ISO 10303-1814 [5] and defines the requirement for boss.

EXPRESS specification:

*)
ENTITY boss
  SUBTYPE OF (feature_definition);
WHERE
  WR1: SELF\characterized_object.description IN ['circular', 'complex', 'rectangular'];
  WR2: SIZEOF (QUERY (pds <* QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF (pd)) | NOT (SIZEOF (QUERY (sa_occ <* USEDIN (pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | (sa_occ.description = 'boss height occurrence') AND (SIZEOF (QUERY (sdr <* QUERY (sar <* USEDIN (sa_occ, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | (sar.description = 'path feature component usage') AND ('MACHINING_FEATURE_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF (sar))) | ('TOPOLOGY_SCHEMA.PATH_FEATURE_COMPONENT' IN TYPEOF (sdr.relating_shape_aspect)) AND (sdr.relating_shape_aspect.description = 'linear') AND (sdr.name = 'boss height'))) = 1))) = 1))) = 0;
  WR3: SIZEOF( QUERY( pd <* USEDIN( SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | SIZEOF( QUERY( pdr <* USEDIN( pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND ({1 <= SIZEOF(pdr.used_representation.items) <= 2} ) )) = 1 )) = 1;
  WR4: SIZEOF( QUERY( pd <* USEDIN( SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | SIZEOF( QUERY( pdr <* USEDIN( pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND (SIZEOF( QUERY( srwp_i <* pdr.used_representation.items | (srwp_i.name = 'orientation') OR (srwp_i.name = 'fillet radius'))) = SIZEOF(pdr.used_representation.items)) )) = 1 )) = 1;
  WR5: SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (impl_rep <* QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF (pdr.used_representation)) | NOT (SIZEOF (QUERY (it <* impl_rep.used_representation.items | (SIZEOF ( ['QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF (it)) = 2) AND (it.name = 'fillet radius'))) <= 1))) = 0))) = 0;
  WR6: (NOT (SELF\characterized_object.description = 'circular')) OR (SIZEOF (QUERY (pds <* QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF (pd)) | NOT (SIZEOF (QUERY (sa_occ <* USEDIN (pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | (sa_occ.description = 'circular profile occurrence') AND (SIZEOF (QUERY (sdr <* QUERY (sar <* USEDIN (sa_occ, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | (sar.description = 'profile usage') AND ('MACHINING_FEATURE_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF (sar))) | 'MACHINING_FEATURE_SCHEMA.CIRCULAR_CLOSED_PROFILE' IN TYPEOF (sdr.relating_shape_aspect))) = 1))) = 1))) = 0);
  WR7: SIZEOF(QUERY ( pds <* QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | ('PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)) ) | (NOT (SIZEOF(QUERY ( sa_occ <* USEDIN(pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | ((sa_occ.description = 'top condition occurrence') AND (SIZEOF(QUERY ( fcr <* QUERY ( sar <* USEDIN(sa_occ, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | ((sar.description = 'boss top usage') AND ('MACHINING_FEATURE_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar))) ) | (('MACHINING_FEATURE_SCHEMA.BOSS_TOP' IN TYPEOF(fcr.relating_shape_aspect)) ) )) = 1)) )) = 1)) )) = 0;
  WR8: (NOT (SELF\characterized_object.description = 'circular')) OR (SIZEOF (QUERY (pds <* QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF (pd)) | NOT (SIZEOF (QUERY (sa_occ <* USEDIN (pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | (sa_occ.description = 'change in diameter occurrence') AND (SIZEOF (QUERY (fcr <* QUERY (sar <* USEDIN (sa_occ, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | (sar.description = 'taper usage') AND ('MACHINING_FEATURE_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF (sar))) | (('MACHINING_FEATURE_SCHEMA.TAPER' IN TYPEOF (fcr.related_shape_aspect)) AND ('MACHINING_FEATURE_SCHEMA.BOSS' IN TYPEOF (fcr.relating_shape_aspect))) ) )= 1))) <= 1))) = 0);
  WR9: (NOT (SELF\characterized_object.description = 'complex')) OR (SIZEOF (QUERY (pds <* QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF (pd)) | NOT (SIZEOF (QUERY (sa_occ <* USEDIN (pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | (sa_occ.description = 'enclosed boundary occurrence') AND (SIZEOF (QUERY (sdr <* QUERY (sar <* USEDIN (sa_occ, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | (sar.description = 'profile usage') AND ('MACHINING_FEATURE_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF (sar))) | SIZEOF (['MACHINING_FEATURE_SCHEMA.NGON_CLOSED_PROFILE', 'MACHINING_FEATURE_SCHEMA.CLOSED_PATH_PROFILE'] * TYPEOF (sdr.relating_shape_aspect)) = 1)) = 1)))= 1))) = 0);
  WR10: (NOT (SELF\characterized_object.description IN ['complex','rectangular'])) OR (SIZEOF (QUERY (pds <* QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF (pd)) | NOT (SIZEOF (QUERY (sa_occ <* USEDIN (pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | (sa_occ.description = 'change in boundary occurrence') AND (SIZEOF (QUERY (fcr <* QUERY (sar <* USEDIN (sa_occ, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') | (sar.description = 'taper usage') AND ('MACHINING_FEATURE_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF (sar))) | (('MACHINING_FEATURE_SCHEMA.TAPER' IN TYPEOF (fcr.related_shape_aspect)) AND ('MACHINING_FEATURE_SCHEMA.BOSS' IN TYPEOF (fcr.relating_shape_aspect)) AND (fcr.related_shape_aspect.description IN ['angle taper','directed taper'])) )) = 1))) <= 1))) = 0);
  WR11: (NOT (SELF\characterized_object.description = 'rectangular')) OR (SIZEOF (QUERY (pds <* QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF (pd)) | NOT (SIZEOF (QUERY (sa_occ <* USEDIN (pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | (sa_occ.description = 'rectangular profile occurrence') AND (SIZEOF (QUERY (sdr <* QUERY (sar <* USEDIN (sa_occ, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | (sar.description = 'profile usage') AND ('MACHINING_FEATURE_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF (sar))) | 'MACHINING_FEATURE_SCHEMA.RECTANGULAR_CLOSED_PROFILE' IN TYPEOF (sdr.relating_shape_aspect))) = 1))) = 1))) = 0);
  WR12: SIZEOF (QUERY(pdr <* get_property_definition_representations (SELF) | ( 'MACHINING_FEATURE_SCHEMA.PLANAR_SHAPE_REPRESENTATION' IN TYPEOF ( pdr.used_representation ) ) AND ( pdr.used_representation.name ='maximum feature limit'))) >=0;
END_ENTITY;
(*

Formal propositions:

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

WR2: The boss shall be the basis shape for exactly one shape_aspect with a description of 'boss height occurrence' that is 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'.

WR3: The implicit representation of the boss shall contain between one and two representation_items.

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

WR5: The implicit representation of the boss shall have at most one representation_item of type measure_representation_item and length_measure_with_unit with a name of 'fillet radius'.

WR6: 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.

WR7: The boss shall be the basis shape for exactly one shape_aspect with a description of 'top condition occurrence' that is 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.

WR8: 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.

WR9: 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 an ngon_closed_profile, or closed_path_profile.

WR10: If the boss has a description of 'complex' or 'rectangular', 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 'angle taper' or 'directed taper'.

WR11: 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.

WR12: The boss shall have at most one planar_shape_representation with a name of 'maximum feature limit'.

Informal propositions:

IP1: The location shall be defined at the top of the boss at the approximate centre of the feature.

IP2: The boss may be positioned on the face of a part with the Z-axis in the direction away from the part, or at the top of the Boss with the Z-axis in the direction of the part face.

IP3: The location, X direction, and Y direction of the path_feature_component with a description of 'boss height' shall be the same as the boss.

IP4: The placement of the circular_closed_profile that defines the diameter of a boss with a description of 'circular' shall be with the origin, X direction, and Y direction equal to that of the boss.

IP5: The placement of the rectangular_closed_profile, ngon_closed_profile, or closed_path_profile that defines the shape of a boss with a description of 'complex' shall be with the origin, X direction, and Y direction equal to that of the boss.

5.4.3 boss_top   EXPRESS-G

A boss_top is a type of shape_aspect that is the end condition for a boss feature_definition.

NOTE    Boss_top_condition is defined in ISO 10303-1814 [5], and defines the requirement for boss_top.

EXPRESS specification:

*)
ENTITY boss_top
  SUBTYPE OF (shape_aspect);
WHERE
  WR1: ('MACHINING_FEATURE_SCHEMA.FEATURE_COMPONENT_DEFINITION' IN TYPEOF(SELF.of_shape.definition));
  WR2: (SELF.description IN ['planar','complex']);
  WR3: ((NOT (SELF.description = 'planar')) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('MACHINING_FEATURE_SCHEMA.DIRECTION_SHAPE_REPRESENTATION') IN TYPEOF(pdr.used_representation)) )) = 1)) )) = 0));
  WR4: ((NOT (SELF.description = 'planar')) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('MACHINING_FEATURE_SCHEMA.LOCATION_SHAPE_REPRESENTATION') IN TYPEOF(pdr.used_representation)) )) = 1)) )) = 0));
  WR5: (NOT (SELF.description = 'complex')) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ('MACHINING_FEATURE_SCHEMA.FACE_SHAPE_REPRESENTATION') IN TYPEOF(pdr.used_representation) )) = 1)) )) = 0);
  WR6: (SIZEOF(QUERY ( fcr <* QUERY ( sar <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' + 'RELATING_SHAPE_ASPECT') | ((sar.description = 'boss top usage') AND (sar.name IN ['boss height start','boss height end']))AND ('MACHINING_FEATURE_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar))) | ((fcr.related_shape_aspect.description = 'top condition occurrence') AND ('MACHINING_FEATURE_SCHEMA.BOSS' IN TYPEOF(fcr.related_shape_aspect.of_shape.definition)) AND ('MACHINING_FEATURE_SCHEMA.BOSS_TOP' IN TYPEOF(fcr.relating_shape_aspect)) ) )) >= 1);
  WR7: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) )) <= 1)) )) = 0);
  WR8: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(impl_rep.used_representation.items) = 1)) )) = 0)) )) = 0);
  WR9: SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (impl_rep <* QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF (pdr.used_representation)) | NOT (SIZEOF (QUERY (it <* impl_rep.used_representation.items | (SIZEOF ( ['QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF (it)) = 2) AND (it.name = 'top radius'))) <= 1))) = 0))) = 0;
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 at least one feature_component_relationship with a description of 'boss top usage' and a name of either 'boss height start' or 'boss height end' 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.

WR8: The boss_top shall be represented implicitly by exactly one representation_item.

WR9: The implicit representation of the boss_top shall have at most one representation_item of type measure_representation_item and length_measure_with_unit with a name of 'top radius'.

Informal propositions:

IP1: The location of the boss_top shall be at the centre of the face that is the mating face to a boss feature.

IP2: The boss_top shall be defined on the mating face in the X-Y plane with the Z direction coincident to that of the mating boss feature.

5.4.4 chamfer   EXPRESS-G

A chamfer is a type of transition_feature that is the representation of a linear transition between two shape_aspects. A chamfer defines the outside profile of a part.

NOTE    Chamfer is defined in ISO 10303-1814 [5], and defines the requirement for chamfer.

EXPRESS specification:

*)
ENTITY chamfer
  SUBTYPE OF (transition_feature);
WHERE
  WR1: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('MACHINING_FEATURE_SCHEMA.FACE_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)) AND (pdr.used_representation.name = 'chamfer face')) )) <= 1)) )) = 0);
  WR2: (SIZEOF(QUERY ( fcr <* QUERY ( sar <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') | ('MACHINING_FEATURE_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)) ) | (('MACHINING_FEATURE_SCHEMA.CHAMFER_OFFSET' IN TYPEOF(fcr.related_shape_aspect))AND ('MACHINING_FEATURE_SCHEMA.CHAMFER' IN TYPEOF(fcr.relating_shape_aspect)) AND (fcr.related_shape_aspect.description = 'first offset') ) )) = 1);
  WR3: (SIZEOF(QUERY ( fcr <* QUERY ( sar <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') | ('MACHINING_FEATURE_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)) ) | (('MACHINING_FEATURE_SCHEMA.CHAMFER_OFFSET' IN TYPEOF(fcr.related_shape_aspect)) AND ('MACHINING_FEATURE_SCHEMA.CHAMFER' IN TYPEOF(fcr.relating_shape_aspect))AND (fcr.related_shape_aspect.description = 'second offset')) )) = 1);
END_ENTITY;
(*

Formal propositions:

WR1: The chamfer shall have at most one face_shape_representation in the role of the chamfer face.

WR2: The chamfer shall be related to exactly one chamfer_offset that specifies the first offset for the chamfer.

WR3: The chamfer shall be related to exactly one chamfer_offset that specifies the second offset for the chamfer.

5.4.5 chamfer_offset   EXPRESS-G

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_definition.

NOTE    First_chamfer_offset and Second_chamfer_offset are defined in ISO 10303-1814 [5] and define the requirement for chamfer_offset.

EXPRESS specification:

*)
ENTITY chamfer_offset
  SUBTYPE OF (shape_aspect);
WHERE
  WR1: (SELF.description IN ['first offset','second offset']);
  WR2: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) )) = 1)) )) = 0);
  WR3: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(impl_rep.used_representation.items) = 1)) )) = 0)) )) = 0);
  WR4: ((NOT (SELF.description = 'first offset')) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF([ 'QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'offset amount')) )) = 1)) )) = 0)) )) = 0));
  WR5: ((NOT (SELF.description = 'first offset')) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('MACHINING_FEATURE_SCHEMA.FACE_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)) AND (pdr.used_representation.name = 'first face shape')) )) <= 1)) )) = 0));
  WR6: ((NOT (SELF.description = 'second offset')) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | (((SIZEOF([ 'QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'offset amount')) OR ((SIZEOF([ 'QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'GEOMETRY_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'offset angle'))) )) = 1)) )) = 0)) )) = 0));
  WR7: ((NOT (SELF.description = 'second offset')) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('MACHINING_FEATURE_SCHEMA.FACE_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)) AND (pdr.used_representation.name = 'second face shape')) )) <= 1)) )) = 0));
  WR8: (SIZEOF(QUERY ( sdr <* QUERY ( sar <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | (('MACHINING_FEATURE_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP') IN TYPEOF(sar)) ) | (('MACHINING_FEATURE_SCHEMA.CHAMFER' IN TYPEOF(sdr.relating_shape_aspect))AND ('MACHINING_FEATURE_SCHEMA.CHAMFER_OFFSET' IN TYPEOF(sdr.related_shape_aspect))) )) = 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 'first offset', the chamfer_offset shall have at most one face_shape_representation with a name of 'first face shape'.

WR6: If the description of the chamfer_offset is 'second offset', exactly one representation_item used for the implicit representation of the chamfer_offset shall be either of type measure_representation_item and length_measure_with_unit with a name of 'offset amount', or of type measure_representation_item and plane_angle_measure_with_unit with a name of 'offset angle'.

WR7: If the description of the chamfer_offset is 'second offset', the chamfer_offset shall have at most one face_shape_representation with a name of 'second face shape'.

WR8: The chamfer_offset shall be the related_shape_aspect in at exactly one feature_component_relationship in which the relating_shape_aspect is a chamfer.

5.4.6 circular_closed_profile   EXPRESS-G

A circular_closed_profile is a type of shape_aspect that is an enclosed 2D area defined by a radius, with orientation and location. The location is defined to be at the centre of the circular arc, and the orientation of the circular_closed_profile is the X-Y plane.

NOTE    Circular_closed_profile is defined in ISO 10303-1814 [5] and defines the requirement for circular_closed_profile.

EXPRESS specification:

*)
ENTITY circular_closed_profile
  SUBTYPE OF (shape_aspect);
WHERE
  WR1: ('MACHINING_FEATURE_SCHEMA.FEATURE_COMPONENT_DEFINITION' IN TYPEOF(SELF.of_shape.definition));
  WR2: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) )) = 1)) )) = 0);
  WR3: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (( 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(impl_rep.used_representation.items) = 2)) )) = 0)) )) = 0);
  WR4: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | NOT(SIZEOF(QUERY ( it <* impl_rep.used_representation.items | (('GEOMETRY_SCHEMA.PLACEMENT' IN TYPEOF(it)) AND (it.name = 'orientation')) )) = 1) )) = 0)) )) = 0);
  WR5: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF([ 'QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'diameter')) )) = 1)) )) = 0)) )) = 0);
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 relationship to 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 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 location of the circular_closed_profile shall be defined at the centre of the circle.

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

5.4.7 circular_pattern   EXPRESS-G

A circular_pattern is a type of replicate_feature that relates a base feature and one or more shape_aspects which are the placement of the base feature at a specified circular location on the base part. A diameter is defined with a placement on the part and two or more base features that are equally spaced around this diameter.

NOTE    Circular_pattern is defined in ISO 10303-1814 [5] and defines the requirement for circular_pattern.

EXPRESS specification:

*)
ENTITY circular_pattern
  SUBTYPE OF (replicate_feature);
WHERE
  WR1: (SIZEOF(QUERY ( pds <* QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | ('PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)) ) | (NOT (SIZEOF(QUERY ( sa_occ <* USEDIN (pds,'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | ((SIZEOF(QUERY ( sdr <* QUERY ( sar <* USEDIN(sa_occ, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' + 'RELATING_SHAPE_ASPECT') | ((('MACHINING_FEATURE_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP') IN TYPEOF(sar))) ) | ('PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT' IN TYPEOF(sdr.related_shape_aspect)) )) = 1)) )) <= 3)) )) = 0);
  WR2: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) )) = 1)) )) = 0);
  WR3: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) ) | (NOT ((SIZEOF (impl_rep.used_representation.items) >= 3) AND (SIZEOF(impl_rep.used_representation.items) <= 5))) )) = 0)) )) = 0);
  WR4: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF( ['QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'diameter')) )) <= 1)) )) = 0)) )) = 0);
  WR5: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF( ['QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'GEOMETRY_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'base feature rotation')) )) <= 1)) )) = 0)) )) = 0);
  WR6: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | (('QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND ('MEASURE_SCHEMA.COUNT_MEASURE' IN TYPEOF(it\measure_with_unit.value_component)) AND (it.name = 'number of features')) )) = 1)) )) = 0)) )) = 0);
  WR7: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF( ['QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'GEOMETRY_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'angular spacing'))))= 1)) )) = 0)) )) = 0);
  WR8: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | (('GEOMETRY_SCHEMA.PLACEMENT' IN TYPEOF(it)) AND (it.name = 'orientation')) )) = 1)) )) = 0)) )) = 0);
END_ENTITY;
(*

Formal propositions:

WR1: The circular_pattern shall be the relating_shape_aspect in no more than three shape_aspect_relationships.

WR2: The circular_pattern shall have exactly one implicit representation.

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

WR4: 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'.

WR5: 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'.

WR6: 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'.

WR7: 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'.

WR8: The implicit representation of the circular_pattern shall contain exactly one representation_item of type placement with a name of 'orientation'.

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.4.8 closed_path_profile   EXPRESS-G

A closed_path_profile is a type of shape_aspect that is a closed two-dimensional area defined by a connected set of curves with a location and orientation. The start vertex and end vertex for the set of curves are the same point creating an enclosed area. The closed_path_profile is located at the approximate centre of the enclosed area, and the orientation is in the X-Y plane.

NOTE    General_closed_profile is defined in ISO 10303-1814 [5] and defines the requirement for closed_path_profile.

EXPRESS specification:

*)
ENTITY closed_path_profile
  SUBTYPE OF (shape_aspect);
WHERE
  WR1: ('MACHINING_FEATURE_SCHEMA.FEATURE_COMPONENT_DEFINITION' IN TYPEOF(SELF.of_shape.definition));
  WR2: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) )) = 1)) )) = 0);
  WR3: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(impl_rep.used_representation.items) = 1)) )) = 0)) )) = 0);
  WR4: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | (('GEOMETRY_SCHEMA.PLACEMENT' IN TYPEOF(it)) AND (it.name = 'orientation')) )) = 1)) )) = 0)) )) = 0);
  WR5: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('TOPOLOGY_SCHEMA.PATH_SHAPE_REPRESENTATION') IN TYPEOF(pdr.used_representation)) )) = 1)) )) = 0);
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 relationship to a shape_representation_with_parameters.

WR3: The shape_representation_with_parameters that represents the closed_path_profile shall contain one representation_items 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.

Informal propositions:

IP1: The location of the closed_path_profile shall be defined at the approximate centre of the enclosed area.

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

5.4.9 composite_hole   EXPRESS-G

A composite_hole is a type of compound_feature that is the representation of two round_holes for the purpose of creating two 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.

NOTE    Counterbore_hole and Countersunk_hole are defined in ISO 10303-1814 [5] and define the requirement for composite_hole.

EXPRESS specification:

*)
ENTITY composite_hole
  SUBTYPE OF (compound_feature);
WHERE
  WR1: ('COUNTERBORE_COUNTERSINK_SCHEMA.EXPLICIT_COMPOSITE_HOLE' IN TYPEOF(SELF)) XOR (SELF\characterized_object.description IN ['counterbore', 'countersunk']);
  WR2: ('COUNTERBORE_COUNTERSINK_SCHEMA.EXPLICIT_COMPOSITE_HOLE' IN TYPEOF(SELF)) XOR (SIZEOF(QUERY ( pds <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (('PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pds)) AND (SIZEOF(QUERY ( csa <* USEDIN(pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.COMPOSITE_SHAPE_ASPECT' IN TYPEOF(csa)) AND (SIZEOF(QUERY ( sar <* csa.component_relationships | ((('MACHINING_FEATURE_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)) AND ('MACHINING_FEATURE_SCHEMA.ROUND_HOLE' IN TYPEOF(sar.related_shape_aspect))) ))) = 2)) )) = 1)) )) = 1);
  WR3: ('COUNTERBORE_COUNTERSINK_SCHEMA.EXPLICIT_COMPOSITE_HOLE' IN TYPEOF(SELF)) XOR ((NOT (SELF\characterized_object.description = 'countersunk')) OR (SIZEOF(QUERY ( pds <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (('PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pds)) AND (SIZEOF(QUERY ( csa <* USEDIN(pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.COMPOSITE_SHAPE_ASPECT' IN TYPEOF(csa)) AND (SIZEOF(QUERY ( sar <* csa.component_relationships | (('MACHINING_FEATURE_SCHEMA.ROUND_HOLE' IN TYPEOF(sar.related_shape_aspect)) AND (NOT (SIZEOF(QUERY ( pds <* QUERY ( pd <* USEDIN(sar.related_shape_aspect, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | ('PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)) ) | (NOT (SIZEOF(QUERY ( sa_occ <* USEDIN(pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | ((sa_occ.description = 'change in diameter occurrence') AND (SIZEOF(QUERY ( fcr2 <* QUERY ( sar2 <* USEDIN(sa_occ, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') | ((sar2.description = 'taper usage') AND ('MACHINING_FEATURE_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar2))) ) | ('MACHINING_FEATURE_SCHEMA.TAPER' IN TYPEOF(fcr2.related_shape_aspect)) )) = 1)) )) = 0)) )) = 0))) )) = 1)) )) = 1)) )) = 1));
END_ENTITY;
(*

Formal propositions:

WR1: The composite_hole shall either be an instance of the explicit_composite_hole subtype, or the description of the composite_hole shall be either 'counterbore' or 'countersunk'.

WR2: The composite_hole shall be either an instance of the explicit_composite_hole subtype, or the relating_shape_aspect in exactly two instances of feature_component_relationship with a related_shape_aspect of type round_hole.

WR3: The composite_hole shall either be an instance of the explicit_composite_hole subtype, or if the description of the composite_hole is 'countersunk', exactly one round_hole that comprises it shall be a tapered hole.

Informal propositions:

IP1: Each round_holes that comprise the composite_hole shall not have diameters that are equal in length.

5.4.10 compound_feature   EXPRESS-G

A compound_feature is a type of feature_definition that is the representation of several instanced_features and their relationships to one another for the purpose of creating unique user defined features.

EXPRESS specification:

*)
ENTITY compound_feature
  SUBTYPE OF (feature_definition);
WHERE
  WR1: ('COUNTERBORE_COUNTERSINK_SCHEMA.EXPLICIT_COMPOSITE_HOLE' IN TYPEOF(SELF)) XOR (SIZEOF( QUERY( pds <* USEDIN( SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | ('PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pds)) AND (SIZEOF( QUERY( csa <* USEDIN( pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | ((csa.name='compound feature in solid') AND ('SHAPE_ASPECT_DEFINITION_SCHEMA.COMPOSITE_SHAPE_ASPECT' IN TYPEOF(csa))) )) = 1) )) = 1);
  WR2: ('COUNTERBORE_COUNTERSINK_SCHEMA.EXPLICIT_COMPOSITE_HOLE' IN TYPEOF(SELF)) XOR (SIZEOF( QUERY( pds <* USEDIN( SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | ('PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pds)) AND (SIZEOF( QUERY( csa <* USEDIN( pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.COMPOSITE_SHAPE_ASPECT' IN TYPEOF(csa) )) = 1) )) = 1);
  WR3: ('COUNTERBORE_COUNTERSINK_SCHEMA.EXPLICIT_COMPOSITE_HOLE' IN TYPEOF(SELF)) XOR (SIZEOF(QUERY ( pds <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (('PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pds)) AND (SIZEOF(QUERY ( csa <* USEDIN(pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.COMPOSITE_SHAPE_ASPECT' IN TYPEOF(csa)) AND (SIZEOF(QUERY ( fcr <* csa.component_relationships | (NOT ('MACHINING_FEATURE_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(fcr))) )) = 0)) )) = 1)) )) = 1);
  WR4: ('COUNTERBORE_COUNTERSINK_SCHEMA.EXPLICIT_COMPOSITE_HOLE' IN TYPEOF(SELF)) XOR (SIZEOF (QUERY (pds <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF (pds)) AND (SIZEOF (QUERY (csa <* USEDIN (pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| ('SHAPE_ASPECT_DEFINITION_SCHEMA.COMPOSITE_SHAPE_ASPECT' IN TYPEOF (csa)) )) = 1) )) = 1);
  WR5: ('COUNTERBORE_COUNTERSINK_SCHEMA.EXPLICIT_COMPOSITE_HOLE' IN TYPEOF(SELF)) XOR (SIZEOF(QUERY ( pds <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (('PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pds)) AND (SIZEOF(QUERY ( csa <* USEDIN(pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.COMPOSITE_SHAPE_ASPECT' IN TYPEOF(csa)) AND (SIZEOF(QUERY ( sar <* csa.component_relationships | ('MACHINING_FEATURE_SCHEMA.THREAD' IN TYPEOF(sar.related_shape_aspect)) )) = 0) ) )) = 1)) )) = 1);
  WR6: ('COUNTERBORE_COUNTERSINK_SCHEMA.EXPLICIT_COMPOSITE_HOLE' IN TYPEOF(SELF)) XOR (SIZEOF (QUERY (pds <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF (pds)) AND (SIZEOF (QUERY (csa <* USEDIN (pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| ('SHAPE_ASPECT_DEFINITION_SCHEMA.COMPOSITE_SHAPE_ASPECT' IN TYPEOF (csa)) AND (SIZEOF (QUERY (sar <* csa.component_relationships | (('MACHINING_FEATURE_SCHEMA.COMPOUND_FEATURE' IN TYPEOF (sar.related_shape_aspect)) AND (sar.related_shape_aspect\characterized_object.name <> SELF\characterized_object.name)) )) = 0) )) = 1) )) = 1);
END_ENTITY;
(*

Formal propositions:

WR1: The compound_feature shall either be an instance of the explicit_composite_hole subtype, or the name of the compound_feature shall be 'compound feature in solid'.

WR2: Each instance of compound_feature shall be an instance of the explicit_composite_hole subtype, or shall have a shape that has exactly one shape_aspect identified on it that is of type composite_shape_aspect.

WR3: The compound_feature shall either be an instance of the explicit_composite_hole subtype, or the shape_aspect_relationships that are used to relate the single features with the composite_shape_aspect shall be feature_component_relationships.

WR4: The compound_feature shall either be an instance of the explicit_composite_hole subtype, or the composite_shape_aspect defining a compound_feature shall be the relating_shape_aspect only in shape_aspect_relationships.

WR5: The compound_feature shall either be an instance of the explicit_composite_hole subtype, or 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 not of type thread.

NOTE    A thread feature cannot be related to a compound_feature. The applied_area of the thread is related to a compound_feature.

WR6: The compound_feature shall either be an instance of the explicit_composite_hole subtype, or shall only have constituent compound_features of the same type.

5.4.11 direction_shape_representation   EXPRESS-G

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

EXPRESS specification:

*)
ENTITY direction_shape_representation
  SUBTYPE OF (shape_representation);
WHERE
  WR1: (SIZEOF(SELF.items) = 1);
  WR2: (SIZEOF(QUERY ( it <* SELF.items | (NOT ( 'MACHINING_FEATURE_SCHEMA.DIRECTION' IN TYPEOF(it))) )) = 0);
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.4.12 edge_round   EXPRESS-G

An edge_round is a type of transition_feature that is the representation of a circular convex transition between two shape_aspects. An edge_round defines the outside profile of a part.

NOTE    Edge_round and Constant_radius_edge_round are defined in ISO 10303-1814 [5] and define the requirement for edge_round.

EXPRESS specification:

*)
ENTITY edge_round
  SUBTYPE OF (transition_feature);
WHERE
  WR1: (NOT (SELF\shape_aspect.description = 'constant radius')) OR (SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF (pdr.used_representation))) = 1))) = 0);
  WR2: (NOT (SELF\shape_aspect.description = 'constant radius')) OR (SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (impl_rep <* QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF (pdr.used_representation)) | (NOT (SIZEOF (impl_rep.used_representation.items) >= 1) AND (SIZEOF (impl_rep.used_representation.items) <= 3)))) = 0))) = 0);
  WR3: (NOT (SELF.description = 'constant radius')) OR (SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (impl_rep <* QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF (pdr.used_representation)) | NOT (SIZEOF (QUERY (it <* impl_rep.used_representation.items | (SIZEOF (['QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF (it)) = 2) AND (it.name = 'radius'))) = 1))) = 0))) = 0);
  WR4: (NOT (SELF.description = 'constant radius')) OR (SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (impl_rep <* QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF (pdr.used_representation)) | NOT (SIZEOF (QUERY (it <* impl_rep.used_representation.items | (SIZEOF (['QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF (it)) = 2) AND (it.name = 'first offset'))) <= 1))) = 0))) = 0);
  WR5: (NOT (SELF.description = 'constant radius')) OR (SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (impl_rep <* QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF (pdr.used_representation)) | NOT (SIZEOF (QUERY (it <* impl_rep.used_representation.items | (SIZEOF (['QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF (it)) = 2) AND (it.name = 'second offset'))) <= 1))) = 0))) = 0);
  WR6: SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ('MACHINING_FEATURE_SCHEMA.FACE_SHAPE_REPRESENTATION' IN TYPEOF (pdr.used_representation)) AND (pdr.used_representation.name = 'edge round face'))) <= 1))) = 0;
  WR7: SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ('MACHINING_FEATURE_SCHEMA.FACE_SHAPE_REPRESENTATION' IN TYPEOF (pdr.used_representation)) AND (pdr.used_representation.name = 'first face shape'))) <= 1))) = 0;
  WR8: SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ('MACHINING_FEATURE_SCHEMA.FACE_SHAPE_REPRESENTATION' IN TYPEOF (pdr.used_representation)) AND (pdr.used_representation.name = 'second face shape'))) <= 1))) = 0;
END_ENTITY;
(*

Formal propositions:

WR1: An edge_round has an implicit representation 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 at least one and at most three representation_items in its set of items.

WR3: 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'.

WR4: 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'.

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 'second offset'.

WR6: The edge_round shall have at most one face_shape_representation with a name of 'edge round face'.

WR7: The edge_round shall have at most one face_shape_representation with a name of 'first face shape'.

WR8: The edge_round shall have at most one face_shape_representation with a name of 'second face shape'.

5.4.13 externally_defined_feature_definition   EXPRESS-G

An externally_defined_feature_definition is a type of externally_defined_item and a type of feature_definition. An externally_defined_feature_definition relates the document containing a feature specification to a feature_definition.

NOTE 1   Catalogue_gear, Catalogue_knurl, Catalogue_marking, and Catalogue_thread are defined in ISO 10303-1814 [5] and define the requirements for externally_defined_feature_definition.

NOTE 2   Local rules for externally_defined_feature_definition define constrained usage for document_file, defined in ISO 10303-1127 [4], applied_document_reference, and applied_document_usage_constraint_assignment, defined in ISO 10303-1122 [3]. Similar entities are defined in non-modular application protocols using this document. See Annex E for additional information.

EXPRESS specification:

*)
ENTITY externally_defined_feature_definition
  SUBTYPE OF (feature_definition, externally_defined_item);
WHERE
  WR1: (((SELF\characterized_object.description = 'thread') AND (SELF\externally_defined_item.item_id='external thread') AND (SELF\externally_defined_item.source.source_id= 'external feature specification') ) OR ((SELF\characterized_object.description = 'gear') AND (SELF\externally_defined_item.item_id='external gear') AND (SELF\externally_defined_item.source.source_id= 'external feature specification')) OR ((SELF\characterized_object.description = 'marking') AND (SELF\externally_defined_item.item_id='external marking') AND (SELF\externally_defined_item.source.source_id= 'external feature specification')) OR ((SELF\characterized_object.description = 'knurl') AND (SELF\externally_defined_item.item_id='external knurl') AND (SELF\externally_defined_item.source.source_id= 'external feature specification')));
  WR2: ((NOT (SELF\characterized_object.description = 'thread')) OR (SIZEOF( QUERY( pd <* USEDIN( SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | SIZEOF( QUERY( pdr <* USEDIN( pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND ({5 <= SIZEOF(pdr.used_representation.items) <= 10} ) )) = 1 )) = 1));
  WR3: ((NOT (SELF\characterized_object.description = 'marking')) OR (SIZEOF( QUERY( pd <* USEDIN( SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | SIZEOF( QUERY( pdr <* USEDIN( pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND (SIZEOF(pdr.used_representation.items) = 2) )) = 1 )) = 1));
  WR4: ((NOT (SELF\characterized_object.description = 'knurl')) OR (SIZEOF( QUERY( pd <* USEDIN( SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | SIZEOF( QUERY( pdr <* USEDIN( pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND (SIZEOF(pdr.used_representation.items) = 1) )) = 1 )) = 1));
  WR5: (NOT (SELF\characterized_object.description IN [ 'knurl', 'thread'])) OR (SIZEOF(QUERY ( pds <* QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | ('PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)) ) | (NOT (SIZEOF(QUERY ( sa_occ <* USEDIN (pds,'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | ((sa_occ.description = 'partial area occurrence') AND (SIZEOF(QUERY ( sdr <* QUERY ( sar <* USEDIN(sa_occ, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' + 'RELATED_SHAPE_ASPECT') | ((sar.description = 'applied area usage') AND (('MACHINING_FEATURE_SCHEMA.SHAPE_DEFINING_RELATIONSHIP') IN TYPEOF(sar))) ) | ('MACHINING_FEATURE_SCHEMA.APPLIED_AREA' IN TYPEOF(sdr.relating_shape_aspect)) )) = 1)) )) <= 1)) )) = 0);
  WR6: ((NOT (SELF\characterized_object.description = 'marking')) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN (pd,'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | (('QUALIFIED_MEASURE_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND (it.name = 'marking text')) )) = 1)) )) = 0)) )) = 0));
  WR7: ((NOT (SELF\characterized_object.description = 'thread')) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN (pd,'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | (('QUALIFIED_MEASURE_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND (it.name = 'removal direction') AND ((it.description = 'internal') OR (it.description = 'external'))) )) = 1)) )) = 0)) )) = 0));
  WR8: ((NOT (SELF\characterized_object.description = 'thread')) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN (pd,'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | (('QUALIFIED_MEASURE_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND (it.name = 'qualifier')) ))<= 1)) ))= 0)) )) = 0));
  WR9: ((NOT (SELF\characterized_object.description = 'thread')) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN (pd,'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | (('QUALIFIED_MEASURE_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND (it.name = 'hand')) )) = 1)) )) = 0)) )) = 0));
  WR10: ((NOT (SELF\characterized_object.description = 'thread')) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN (pd,'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | (('QUALIFIED_MEASURE_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND (it.name = 'fit class')) )) = 1)) )) = 0)) )) = 0));
  WR11: ((NOT (SELF\characterized_object.description = 'thread')) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN (pd,'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | (('QUALIFIED_MEASURE_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND (it.name = 'form')) )) = 1)) )) = 0)) )) = 0));
  WR12: ((NOT (SELF\characterized_object.description = 'thread')) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN (pd,'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF([ 'QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'major diameter')) )) <= 1)) )) = 0)) )) = 0));
  WR13: ((NOT (SELF\characterized_object.description = 'thread')) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN (pd,'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF([ 'QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.RATIO_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'number of threads')) )) = 1)) )) = 0)) )) = 0));
  WR14: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | (('QUALIFIED_MEASURE_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND (it.name = 'fit class 2')) )) <= 1)) )) = 0)) )) = 0);
  WR15: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF([ 'QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'nominal size')) )) <= 1)) )) = 0)) )) = 0);
  WR16: (NOT (SELF\characterized_object.description IN [ 'knurl', 'gear', 'thread'])) OR (SIZEOF(QUERY ( pds <* QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | ('PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)) ) | (NOT (SIZEOF(QUERY ( sa_occ <* USEDIN (pds,'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | ((SIZEOF(QUERY ( sdr <* QUERY ( sar <* USEDIN(sa_occ, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' + 'RELATED_SHAPE_ASPECT') | ((sar.description = 'applied shape') AND (('MACHINING_FEATURE_SCHEMA.SHAPE_DEFINING_RELATIONSHIP') IN TYPEOF(sar))) ) | ('PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT' IN TYPEOF(sdr.relating_shape_aspect)) )) = 1)) )) <= 1)) )) = 0);
  WR17: ((NOT (SELF\characterized_object.description IN ['gear'])) OR (SIZEOF( QUERY( pd <* USEDIN( SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | SIZEOF( QUERY( pdr <* USEDIN( pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND (10 <= SIZEOF(pdr.used_representation.items)) AND (SIZEOF(pdr.used_representation.items) >= 11) )) = 1 )) = 1));
  WR18: ((NOT (SELF\characterized_object.description IN ['gear'])) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN (pd,'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF([ 'QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.RATIO_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'number of teeth')) )) = 1)) )) = 0)) )) = 0));
  WR19: ((NOT (SELF\characterized_object.description IN ['gear'])) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN (pd,'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF([ 'QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'GEOMETRY_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'reference pressure angle')) )) = 1)) )) = 0)) )) = 0));
  WR20: ((NOT (SELF\characterized_object.description IN ['gear'])) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN (pd,'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF([ 'QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'rake shift factor')) )) = 1)) )) = 0)) )) = 0));
  WR21: ((NOT (SELF\characterized_object.description IN ['gear'])) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN (pd,'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF([ 'QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'nominal tooth depth')) )) = 1)) )) = 0)) )) = 0));
  WR22: ((NOT (SELF\characterized_object.description IN ['gear'])) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN (pd,'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF([ 'QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'face width')) )) = 1)) )) = 0)) )) = 0));
  WR23: ((NOT (SELF\characterized_object.description IN ['gear'])) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN (pd,'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF([ 'QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'tip diameter')) )) = 1)) )) = 0)) )) = 0));
  WR24: ((NOT (SELF\characterized_object.description IN ['gear'])) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN (pd,'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | (('QUALIFIED_MEASURE_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND (it.name = 'module or diametral pitch') AND ((it.description = 'module') OR (it.description = 'diametral pitch'))) )) = 1)) )) = 0)) )) = 0));
  WR25: ((NOT (SELF\characterized_object.description IN ['gear'])) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN (pd,'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF([ 'QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'normal attribute')) )) = 1)) )) = 0)) )) = 0));
  WR26: ((NOT (SELF\characterized_object.description IN ['gear'])) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN (pd,'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | (('QUALIFIED_MEASURE_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND (it.name = 'internal or external gear') AND ((it.description = 'internal') OR (it.description = 'external'))) )) = 1)) )) = 0)) )) = 0));
  WR27: ((NOT (SELF\characterized_object.description IN ['gear'])) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN (pd,'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF([ 'QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'GEOMETRY_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'root fillet radius')) )) <= 1)) )) = 0)) )) = 0));
END_ENTITY;
(*

Formal propositions:

WR1: If the description of the externally_defined_feature_definition is 'thread', then the item_id is 'external thread', and the source_id of the external_source referenced by the source of the externally_defined_feature_definition is 'external feature specification'. If the description of the externally_defined_feature_definition is 'marking', then the item_id is 'external marking', and the source_id of the external_source referenced by the source of the externally_defined_feature_definition is 'external feature specification'. If the description of the externally_defined_feature_definition is 'knurl', then the item_id is 'external knurl', and the source_id of the external_source referenced by the source of the externally_defined_feature_definition is 'external feature specification'. If the description of the externally_defined_feature_definition is 'gear', then the item_id is 'external gear', and the source_id of the external_source referenced by the source of the externally_defined_feature_definition is 'external feature specification'.

WR2: If the description of the externally_defined_feature_definition is 'thread', the implicit representation of the externally_defined_feature_definition shall contain between five and ten representation_items in its set of items.

WR3: If the description of the externally_defined_feature_definition is 'marking', the implicit representation of the externally_defined_feature_definition shall contain exactly three representation_items in its set of items.

WR4: If the description of the externally_defined_feature_definition is 'knurl', the implicit representation of the externally_defined_feature_definition shall contain exactly one representation_item in its set of items.

WR5: If the description of the externally_defined_feature_definition is 'marking', or 'thread' there shall be the basis shape for at most one shape_aspect with a description of 'partial area occurrence' that is the related_shape_aspect in at most one shape_defining_relationship with a description of 'applied area usage' in which the relating_shape_aspect is an applied_area.

WR6: If the description of the externally_defined_feature_definition is 'marking', 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 'marking text'.

WR7: If the description of the externally_defined_feature_definition is 'thread', then 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 'removal direction' and a description of either 'internal' or 'external'.

WR8: If the description of the externally_defined_feature_definition is 'thread', at most 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 'qualifier'.

WR9: If the description of the externally_defined_feature_definition is 'thread', 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'.

WR10: If the description of the externally_defined_feature_definition is 'thread', at most 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'.

WR11: If the description of the externally_defined_feature_definition is 'thread', 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'.

WR12: If the description of the externally_defined_feature_definition is 'thread', at most 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'.

WR13: If the description of the externally_defined_feature_definition is 'thread', 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'.

WR14: If the description of the externally_defined_feature_definition is 'thread', at most 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 2'.

WR15: If the description of the externally_defined_feature_definition is 'thread', at most 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 'nominal size'.

WR16: If the description of the externally_defined_feature_definition is 'marking', 'gear' or 'thread' there shall be the basis shape for exactly one shape_aspect that is the related_shape_aspect in at most one shape_defining_relationship with a description of 'applied shape' in which the relating_shape_aspect is a shape_aspect.

WR17: If the description of the externally_defined_feature_definition is 'gear', the implicit representation of the externally_defined_feature_definition shall contain exactly nine representation_items in its set of items.

WR18: If the description of the externally_defined_feature_definition is 'gear', 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 teeth'.

WR19: If the description of the externally_defined_feature_definition is 'gear', exactly one representation_item used for the implicit representation of the externally_defined_feature_definition shall be of type measure_representation_item and plane_angle_measure_with_unit with a name of 'reference pressure angle'.

WR20: If the description of the externally_defined_feature_definition is 'gear', 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 'rake shift factor'.

WR21: If the description of the externally_defined_feature_definition is 'gear', 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 'nominal tool depth'.

WR22: If the description of the externally_defined_feature_definition is 'gear', 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 'face width'.

WR23: If the description of the externally_defined_feature_definition is 'gear', 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 'tip diameter'.

WR24: If the description of the externally_defined_feature_definition is 'gear', then 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 'module or diametral pitch' and a description of either 'module' or 'diameter pitch'.

WR25: If the description of the externally_defined_feature_definition is 'gear', 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 'normal attribute'.

WR26: If the description of the externally_defined_feature_definition is 'gear', then 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 'internal or external gear' and a description of either 'internal ' or 'external'.

WR27: If the description of the externally_defined_feature_definition is 'gear', exactly one representation_item used for the implicit representation of the externally_defined_feature_definition shall be of type measure_representation_item and plane_angle_measure_with_unit with a name of 'root fillet radius'.

Informal propositions:

IP1: If the name of the descriptive_representation_item is 'fit class' and the first character of the description is 'M', then the thread is metric.

5.4.14 face_shape_representation   EXPRESS-G

A face_shape_representation is a type of shape_representation that represents geometry defined by a portion of an associated surface.

EXPRESS specification:

*)
ENTITY face_shape_representation
  SUBTYPE OF (shape_representation);
WHERE
  WR1: (SIZEOF(SELF.items) >= 1);
  WR2: (SIZEOF(QUERY ( it <* SELF.items | (NOT ( ('TOPOLOGY_SCHEMA.FACE_SURFACE' IN TYPEOF(it)) OR ('TOPOLOGY_SCHEMA.ORIENTED_FACE' IN TYPEOF(it)) )) )) = 0);
END_ENTITY;
(*

Formal propositions:

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

WR2: The geometric element that is used to represent the face_shape_representation shall be a face_surface, oriented_face.

5.4.15 feature_component_definition   EXPRESS-G

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(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(USEDIN(pd, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE')) = 1)) )) = 0);
END_ENTITY;
(*

Formal propositions:

WR1: The feature_component_definition shall be the item for which exactly one shape_aspect is defined.

5.4.16 feature_component_relationship   EXPRESS-G

A feature_component_relationship is a type of shape_aspect_relationship in which the related_shape_aspect is an implicitly represented component, such as a taper, of the relating_shape_aspect.

EXAMPLE    A Chamfer may have the implicit chamfer offset amount defined with a feature_component_relationship and the explicit geometry for the chamfer defined with a shape_defining_relationship.

A feature_component_relationship may be either a pattern_omit_membership or a pattern_offset_membership.

EXPRESS specification:

*)
ENTITY feature_component_relationship
  SUPERTYPE OF (ONEOF (pattern_omit_membership,
                       pattern_offset_membership))
  SUBTYPE OF (shape_aspect_relationship);
WHERE
  WR1: ((SIZEOF([ 'SHAPE_ASPECT_DEFINITION_SCHEMA.COMPOSITE_SHAPE_ASPECT', 'MACHINING_FEATURE_SCHEMA.REPLICATE_FEATURE', 'MACHINING_FEATURE_SCHEMA.TRANSITION_FEATURE', 'MACHINING_FEATURE_SCHEMA.MODIFIED_PATTERN'] * TYPEOF (SELF.relating_shape_aspect)) = 1) OR ('MACHINING_FEATURE_SCHEMA.MACHINING_FEATURE_DEFINITION' IN TYPEOF(SELF.relating_shape_aspect.of_shape.definition)) OR ('MACHINING_FEATURE_SCHEMA.FEATURE_COMPONENT_DEFINITION' IN TYPEOF(SELF.relating_shape_aspect.of_shape.definition)));
END_ENTITY;
(*

Formal propositions:

WR1: The shape_aspect referenced as the relating_shape_aspect shall be of type replicate_feature, transition_feature, composite_shape_aspect, or modified_pattern or shall be an aspect of the shape of a feature_definition or a feature_component_definition.

5.4.17 feature_pattern   EXPRESS-G

A feature_pattern is a type of replicate_feature that relates a base feature and one or more shape_aspects which are the placement of the base feature at a specified location on the base part.

EXPRESS specification:

*)
ENTITY feature_pattern
  SUBTYPE OF (replicate_feature);
WHERE
  WR1: SIZEOF( QUERY( pd <* USEDIN( SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | SIZEOF( QUERY( pdr <* USEDIN( pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND (SIZEOF( QUERY( srwp_i <* pdr.used_representation.items | NOT ('GEOMETRY_SCHEMA.PLACEMENT' IN TYPEOF(srwp_i)) )) > 0 ) )) > 0 )) = 0;
  WR2: SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (impl_rep <* QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF (pdr.used_representation)) | NOT (SIZEOF (QUERY (it <* impl_rep.used_representation.items | ('GEOMETRY_SCHEMA.PLACEMENT' IN TYPEOF (it)) AND (it.name = 'base feature placement'))) > 1))) = 0))) = 0;
END_ENTITY;
(*

Formal propositions:

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

WR2: The feature_pattern shall have an implicit representation defined by a shape_representation_with_parameters which contains one or more representation_items in its set of items of type placement with the name of 'base feature placement'.

5.4.18 fillet   EXPRESS-G

A fillet is a type of transition_feature that is the representation of a circular concave transition between two shape_aspects. A fillet defines the outside profile of a part.

NOTE    Fillet and Constant_radius_fillet are defined in ISO 10303-1814 [5] and define the requirement for fillet.

EXPRESS specification:

*)
ENTITY fillet
  SUBTYPE OF (transition_feature);
WHERE
  WR1: (NOT (SELF\shape_aspect.description = 'constant radius')) OR (SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF (pdr.used_representation))) = 1))) = 0);
  WR2: (NOT (SELF\shape_aspect.description = 'constant radius')) OR (SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (impl_rep <* QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF (pdr.used_representation)) | (NOT (SIZEOF (impl_rep.used_representation.items) >= 1) AND(SIZEOF (impl_rep.used_representation.items) <= 3)))) = 0))) = 0);
  WR3: (NOT (SELF.description = 'constant radius')) OR (SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (impl_rep <* QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF (pdr.used_representation)) | NOT (SIZEOF (QUERY (it <* impl_rep.used_representation.items | (SIZEOF (['QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF (it)) = 2) AND (it.name = 'radius'))) = 1))) = 0))) = 0);
  WR4: (NOT (SELF.description = 'constant radius')) OR (SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (impl_rep <* QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF (pdr.used_representation)) | NOT (SIZEOF (QUERY (it <* impl_rep.used_representation.items | (SIZEOF (['QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF (it)) = 2) AND (it.name = 'first offset'))) <= 1))) = 0))) = 0);
  WR5: (NOT (SELF.description = 'constant radius')) OR (SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (impl_rep <* QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF (pdr.used_representation)) | NOT (SIZEOF (QUERY (it <* impl_rep.used_representation.items | (SIZEOF (['QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF (it)) = 2) AND (it.name = 'second offset'))) <= 1))) = 0))) = 0);
  WR6: SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ('MACHINING_FEATURE_SCHEMA.FACE_SHAPE_REPRESENTATION' IN TYPEOF (pdr.used_representation)) AND (pdr.used_representation.name = 'fillet face'))) = 1))) = 0;
  WR7: SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ('MACHINING_FEATURE_SCHEMA.FACE_SHAPE_REPRESENTATION' IN TYPEOF (pdr.used_representation)) AND (pdr.used_representation.name = 'first face shape'))) = 1))) = 0;
  WR8: SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ('MACHINING_FEATURE_SCHEMA.FACE_SHAPE_REPRESENTATION' IN TYPEOF (pdr.used_representation)) AND (pdr.used_representation.name = 'second face shape'))) = 1))) = 0;
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 at least one and at most three representation_items in its set of items.

WR3: 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'.

WR4: 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'.

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 'second offset'.

WR6: The fillet shall have exactly one face_shape_representation with a name of 'fillet face'.

WR7: The fillet shall have exactly one face_shape_representation with a name of 'first face shape'.

WR8: The fillet shall have exactly one face_shape_representation with a name of 'second face shape'.

5.4.19 flat_face   EXPRESS-G

A flat_face is a type of feature_definition that is the representation of a volume that is removed from the base shape. This removal shall be planar, and representation shall be a linear_profile moving along a linear path_feature_component.

NOTE    Planar_face is defined in ISO 10303-1814 [5] and defines the requirement for flat_face.

EXPRESS specification:

*)
ENTITY flat_face
  SUBTYPE OF (feature_definition);
WHERE
  WR1: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('MACHINING_FEATURE_SCHEMA.DIRECTION_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)) AND (pdr.used_representation.name = 'removal direction')) )) = 1)) )) = 0);
  WR2: (SIZEOF(QUERY ( pds <* QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | ('PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)) ) | (NOT (SIZEOF(QUERY ( sa_occ <* USEDIN(pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | ((sa_occ.description = 'course of travel occurrence') AND (SIZEOF(QUERY ( sdr <* QUERY ( sar <* USEDIN(sa_occ, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | ((sar.description = 'path feature component usage') AND (('MACHINING_FEATURE_SCHEMA.SHAPE_DEFINING_RELATIONSHIP') IN TYPEOF(sar))) ) | (('TOPOLOGY_SCHEMA.PATH_FEATURE_COMPONENT' IN TYPEOF(sdr.relating_shape_aspect)) AND (sdr.relating_shape_aspect.description = 'linear') AND (sdr.name = 'course of travel')) )) = 1)) )) = 1)) )) = 0);
  WR3: (SIZEOF(QUERY ( pds <* QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | ('PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)) ) | (NOT (SIZEOF(QUERY ( sa_occ <* USEDIN(pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | ((sa_occ.description = 'removal boundary occurrence') AND (SIZEOF(QUERY ( sdr <* QUERY ( sar <* USEDIN(sa_occ, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | ((sar.description = 'profile usage') AND (('MACHINING_FEATURE_SCHEMA.SHAPE_DEFINING_RELATIONSHIP') IN TYPEOF(sar))) ) | (('MACHINING_FEATURE_SCHEMA.LINEAR_PROFILE' IN TYPEOF(sdr.relating_shape_aspect)) AND (sdr.name = 'removal boundary')) )) = 1)) )) = 1)) )) = 0);
  WR4: SIZEOF (QUERY (pds <* QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF (pd)) | NOT (SIZEOF (QUERY (sa_occ <* USEDIN (pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | (sa_occ.description = 'enclosed boundary occurrence') AND (SIZEOF (QUERY (sdr <* QUERY (sar <* USEDIN (sa_occ, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | (sar.description = 'profile usage') AND ('MACHINING_FEATURE_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF (sar))) | (SIZEOF (['MACHINING_FEATURE_SCHEMA.CIRCULAR_CLOSED_PROFILE', 'MACHINING_FEATURE_SCHEMA.NGON_CLOSED_PROFILE', 'MACHINING_FEATURE_SCHEMA.RECTANGULAR_CLOSED_PROFILE', 'MACHINING_FEATURE_SCHEMA.CLOSED_PATH_PROFILE'] * TYPEOF (sdr.relating_shape_aspect)) = 1) AND (sdr.relating_shape_aspect.description = 'boundary'))) = 1))) <= 1))) = 0;
  WR5: SIZEOF(QUERY( pdr <* get_property_definition_representations (SELF) | ( 'MACHINING_FEATURE_SCHEMA.PLANAR_SHAPE_REPRESENTATION' IN TYPEOF ( pdr.used_representation ) ) AND ( pdr.used_representation.name ='maximum feature limit'))) >=0;
  WR6: SIZEOF(QUERY ( pds <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (('PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pds)) AND (SIZEOF(QUERY ( csa <* USEDIN(pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.COMPOSITE_SHAPE_ASPECT' IN TYPEOF(csa)) AND (csa.name='uncut volume') AND (SIZEOF(QUERY ( sar <* csa.component_relationships | (('MACHINING_FEATURE_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)) AND (SIZEOF([ 'MACHINING_FEATURE_SCHEMA.BOSS', 'MACHINING_FEATURE_SCHEMA.PROTRUSION'] * TYPEOF(sar. related_shape_aspect)) = 1)) )) = 1)) )) <= 1)) )) = 1;
  WR7: SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (impl_rep <* QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF (pdr.used_representation)) | NOT (SIZEOF (QUERY (it <* impl_rep.used_representation.items | (SIZEOF ( ['QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF (it)) = 2) AND (it.name = 'removal depth'))) <= 1))) = 0))) = 0;
END_ENTITY;
(*

Formal propositions:

WR1: The flat_face shall have exactly one direction_shape_representation with a name of 'removal direction'.

WR2: The flat_face shall be the basis shape for exactly one shape_aspect with a description of 'course of travel occurrence' that is the related_shape_aspect in exactly one shape_defining_relationship with a description of 'path feature component usage' and a name of 'course of travel' and a relating_shape_aspect that references a path_feature_component with a description of 'linear'.

WR3: The flat_face shall be the basis shape for exactly one shape_aspect with a description of 'removal boundary occurrence' that is the related_shape_aspect in exactly one shape_defining_relationship with a description of 'profile usage' and a name of 'removal boundary' and a relating_shape_aspect that references a linear_profile.

WR4: The flat_face shall be the basis shape for at most 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' and a name of 'boundary' and a relating_shape_aspect that references a circular_closed_profile, ngon_closed_profile, rectangular_closed_profile, or closed_path_profile.

WR5: The flat_face shall have at most one planar_shape_representation with a name of 'maximum feature limit'.

WR6: The flat_face shall have the uncut volume defined by exactly one product_definition_shape that is referenced by zero or more composite_shape_aspect with name of 'uncut volume' through the of_shape attribute that references a feature_component_relationship through the component_relationships attribute that references either a boss or a protrusion.

WR7: The implicit representation of the flat_face shall have at most one representation_item of type measure_representation_item and length_measure_with_unit with a name of 'removal depth'.

Informal propositions:

IP1: The location of the flat_face shall be defined at one of the corners of the removal volume.

IP2: The direction of volume removal of the flat_face shall be in the Z direction.

IP3: The origin, X direction, and Y direction of the path_feature_component shall be equal to that of the flat_face.

IP4: The origin, X direction, Y direction of the flat_face shall be equal to that of the linear_profile.

5.4.20 gear   EXPRESS-G

A gear is a type of feature_definition that is the representation of a gear shape that is applied to all or a portion of a shape_aspect.

NOTE    Gear is defined in ISO 10303-1814 [5] and defines the requirement for gear.

EXPRESS specification:

*)
ENTITY gear
  SUBTYPE OF (feature_definition);
WHERE
  WR1: SIZEOF(QUERY(pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | SIZEOF(QUERY(pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND (10 <= SIZEOF(pdr.used_representation.items)) AND (SIZEOF(pdr.used_representation.items) <= 13))) = 1)) = 1;
  WR2: NOT (SELF\characterized_object.description IN ['straight bevel gear', 'helical bevel gear', 'spur gear', 'helical gear']) OR (SIZEOF(QUERY(pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF(QUERY(impl_rep <* QUERY(pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) | NOT (SIZEOF(QUERY(it <* impl_rep.used_representation.items | (SIZEOF([ 'QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.RATIO_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'number of teeth'))) = 1))) = 0))) = 0);
  WR3: NOT (SELF\characterized_object.description IN ['straight bevel gear', 'helical bevel gear', 'spur gear', 'helical gear']) OR (SIZEOF(QUERY(pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF(QUERY(impl_rep <* QUERY(pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) | NOT (SIZEOF(QUERY(it <* impl_rep.used_representation.items | (SIZEOF([ 'QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'GEOMETRY_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT']* TYPEOF(it))= 2) AND (it.name = 'reference pressure angle'))) = 1))) = 0))) = 0);
  WR4: NOT (SELF\characterized_object.description IN ['straight bevel gear', 'helical bevel gear', 'spur gear', 'helical gear']) OR (SIZEOF(QUERY(pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF(QUERY(impl_rep <* QUERY(pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) | NOT (SIZEOF(QUERY(it <* impl_rep.used_representation.items | (SIZEOF([ 'QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'rake shift factor'))) = 1))) = 0))) = 0);
  WR5: NOT (SELF\characterized_object.description IN ['straight bevel gear', 'helical bevel gear', 'spur gear', 'helical gear']) OR (SIZEOF(QUERY(pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF(QUERY(impl_rep <* QUERY(pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation))| NOT (SIZEOF(QUERY(it <* impl_rep.used_representation.items | (SIZEOF([ 'QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT']* TYPEOF(it)) = 2) AND (it.name = 'nominal tooth depth'))) = 1))) = 0))) = 0);
  WR6: NOT (SELF\characterized_object.description IN ['straight bevel gear', 'helical bevel gear', 'spur gear', 'helical gear']) OR (SIZEOF(QUERY(pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF(QUERY(impl_rep <* QUERY(pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation))| NOT (SIZEOF(QUERY(it <* impl_rep.used_representation.items | (SIZEOF([ 'QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT']* TYPEOF(it)) = 2) AND (it.name = 'face width'))) = 1))) = 0))) = 0);
  WR7: NOT (SELF\characterized_object.description IN ['straight bevel gear', 'helical bevel gear', 'spur gear', 'helical gear']) OR (SIZEOF(QUERY(pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF(QUERY(impl_rep <* QUERY(pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation))| NOT (SIZEOF(QUERY(it <* impl_rep.used_representation.items | (SIZEOF([ 'QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT']* TYPEOF(it)) = 2) AND (it.name = 'tip diameter'))) = 1))) = 0))) = 0);
  WR8: NOT (SELF\characterized_object.description IN ['straight bevel gear', 'helical bevel gear', 'spur gear', 'helical gear']) OR (SIZEOF(QUERY(pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF(QUERY(impl_rep <* QUERY(pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation))| NOT (SIZEOF(QUERY(it <* impl_rep.used_representation.items | ('QUALIFIED_MEASURE_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND (it.name = 'module or diametral pitch') AND ((it.description ='module') OR (it.description = 'diametral pitch')))) = 1))) = 0))) = 0);
  WR9: NOT (SELF\characterized_object.description IN ['straight bevel gear', 'helical bevel gear', 'spur gear', 'helical gear']) OR (SIZEOF(QUERY(pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF(QUERY(impl_rep <* QUERY(pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation))| NOT (SIZEOF(QUERY(it <* impl_rep.used_representation.items | ('QUALIFIED_MEASURE_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND (it.name = 'internal or external gear') AND ((it.description ='internal') OR (it.description = 'external')))) = 1))) = 0))) = 0);
  WR10: NOT (SELF\characterized_object.description IN ['straight bevel gear', 'helical bevel gear', 'spur gear', 'helical gear']) OR (SIZEOF(QUERY(pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF(QUERY(impl_rep <* QUERY(pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation))| NOT (SIZEOF(QUERY(it <* impl_rep.used_representation.items | (SIZEOF([ 'QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT']* TYPEOF(it)) = 2) AND (it.name = 'normal attribute'))) = 1))) = 0))) = 0);
  WR11: NOT (SELF\characterized_object.description IN ['straight bevel gear', 'helical bevel gear', 'spur gear', 'helical gear']) OR (SIZEOF(QUERY(pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF(QUERY(impl_rep <* QUERY(pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation))| NOT (SIZEOF(QUERY(it <* impl_rep.used_representation.items | (SIZEOF([ 'QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT']* TYPEOF(it)) = 2) AND (it.name = 'root fillet radius'))) <= 1))) = 0))) = 0);
  WR12: NOT (SELF\characterized_object.description IN ['helix gear','helical bevel gear']) OR (SIZEOF(QUERY(pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF(QUERY(impl_rep <* QUERY(pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) | NOT (SIZEOF(QUERY(it <* impl_rep.used_representation.items | (SIZEOF([ 'QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'GEOMETRY_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT']* TYPEOF(it))= 2) AND (it.name = 'reference helix angle'))) = 1))) = 0))) = 0);
  WR13: NOT (SELF\characterized_object.description IN ['helix gear','helical bevel gear']) OR (SIZEOF(QUERY(pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF(QUERY(impl_rep <* QUERY(pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation))| NOT (SIZEOF(QUERY(it <* impl_rep.used_representation.items | ('QUALIFIED_MEASURE_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND (it.name = 'gear tooth') AND ((it.description = 'left hand tooth') OR (it.description = 'right hand tooth')))) = 1))) = 0))) = 0);
  WR14: NOT (SELF\characterized_object.description IN ['straight bevel gear','helical bevel gear']) OR (SIZEOF(QUERY(pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF(QUERY(impl_rep <* QUERY(pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) | NOT (SIZEOF(QUERY(it <* impl_rep.used_representation.items | (SIZEOF([ 'QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'GEOMETRY_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT']* TYPEOF(it))= 2) AND (it.name = 'tip angle'))) = 1))) = 0))) = 0);
  WR15: NOT (SELF\characterized_object.description IN ['straight bevel gear','helical bevel gear']) OR (SIZEOF(QUERY(pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF(QUERY(impl_rep <* QUERY(pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) | NOT (SIZEOF(QUERY(it <* impl_rep.used_representation.items | (SIZEOF([ 'QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'GEOMETRY_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT']* TYPEOF(it))= 2) AND (it.name = 'root angle'))) = 1))) = 0))) = 0);
  WR16: SIZEOF(QUERY(pds <* QUERY(pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)) | NOT (SIZEOF(QUERY(sa_occ <* USEDIN(pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | SIZEOF( QUERY(sdr <* QUERY(sar <* USEDIN(sa_occ, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | (sar.description = 'applied shape') AND ('MACHINING_FEATURE_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar))) | 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT' IN TYPEOF(sdr.relating_shape_aspect))) = 1)) = 1))) = 0;
END_ENTITY;
(*

Formal propositions:

WR1: The implicit representation of the gear shall contain between ten and thirteen representation_items.

WR2: Exactly one representation_item used for the implicit representation of the gear shall be of type measure_representation_item and ratio_measure_with_unit with a name of 'number of teeth'.

WR3: Exactly one representation_item used for the implicit representation of the gear shall be of type measure_representation_item and plane_angle_measure_with_unit with a name of 'reference pressure angle'.

WR4: Exactly one representation_item used for the implicit representation of the gear shall be of type measure_representation_item and length_measure_with_unit with a name of 'profile shift'.

WR5: Exactly one representation_item used for the implicit representation of the gear shall be of type measure_representation_item and length_measure_with_unit with a name of 'nominal tooth depth'.

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

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

WR8: Exactly one representation_item used for the implicit representation of the gear shall be of type descriptive_representation_item with a name of 'module or diametral pitch' and a description of either 'module' or 'diametral pitch'.

WR9: Exactly one representation_item used for the implicit representation of the gear shall be of type descriptive_representation_item with a name of 'internal or external gear' and a description of either 'internal ' or 'external pitch'.

WR10: Exactly one representation_item used for the implicit representation of the gear shall be of type measure_representation_item and length_measure_with_unit with a name of 'normal attribute'.

WR11: Either zero or one representation_item used for the implicit representation of the gear shall be of type measure_representation_item and length_measure_with_unit with a name of 'root fillet radius'.

WR12: If the gear has a description of either 'helix gear', or 'helix bevel gear', exactly one representation_item used for the implicit representation of the gear shall be of type measure_representation_item and length_measure_with_unit with a name of 'reference helix angle'.

WR13: If the gear has a description of either 'helix gear', or 'helix bevel gear', exactly one representation_item used for the implicit representation of the gear shall be of type descriptive_representation_item with a name of 'gear tooth' and a description of either 'left hand' or 'right hand'.

WR14: If the gear has a description of either 'straight bevel gear', or 'helix bevel gear', exactly one representation_item used for the implicit representation of the gear shall be of type measure_representation_item and plane_angle_measure_with_unit with a name of 'root angle'.

WR15: If the gear has a description of either 'straight bevel gear', or 'helix bevel gear', exactly one representation_item used for the implicit representation of the gear shall be of type measure_representation_item and plane_angle_measure_with_unit with a name of 'tip angle'.

WR16: Exactly one gear shall be the basis shape for exactly one shape_aspect that is the related_shape_aspect in at most one shape_defining_relationship with a description of 'applied shape' in which the relating_shape_aspect is a shape_aspect.

Informal propositions:

IP1: The location of the gear shall be at a distance from the end of a cylindrical face, and on the axis of the cylindrical face.

IP2: The Z direction of the gear shall be in the direction of the centre axis of the cylindrical face.

5.4.21 hole_bottom   EXPRESS-G

A hole_bottom is a type of shape_aspect that is the representation of the end condition for a hole feature_definition.

NOTE    Blind_bottom_condition and Through_bottom_condition are defined in ISO 10303-1814 [5] and define the requirement for hole_bottom.

EXPRESS specification:

*)
ENTITY hole_bottom
  SUBTYPE OF (shape_aspect);
WHERE
  WR1: ('MACHINING_FEATURE_SCHEMA.FEATURE_COMPONENT_DEFINITION' IN TYPEOF(SELF.of_shape.definition));
  WR2: (SELF.description IN ['through', 'flat', 'flat with radius', 'flat with taper','spherical', 'conical']);
  WR3: ((NOT (SELF.description = 'through')) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')) = 0)) )) = 0));
  WR4: ((NOT (SELF.description IN ['flat with radius', 'flat with taper', 'spherical','conical'])) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) )) = 1)) )) = 0));
  WR5: ((NOT (SELF.description = 'flat')) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(impl_rep.used_representation.items) = 0)) )) = 0)) )) = 0));
  WR6: ((NOT (SELF.description IN ['flat with radius','spherical'])) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(impl_rep.used_representation.items) = 1)) )) = 0)) )) = 0));
  WR7: ((NOT (SELF.description = 'flat with taper')) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(impl_rep.used_representation.items) = 2)) )) = 0)) )) = 0));
  WR8: ((NOT (SELF.description = 'conical')) OR (SIZEOF( QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF (impl_rep.used_representation.items) >= 1) AND (SIZEOF (impl_rep.used_representation.items) <= 2)) )) = 0)) )) = 0));
  WR9: ((SELF.description = 'through') OR (SIZEOF(QUERY ( fcr <* QUERY ( sar <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') | ((sar.description = 'hole bottom usage') AND ('MACHINING_FEATURE_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar))) ) | ((fcr.name IN ['hole depth start','hole depth end'])) )) >= 1));
  WR10: ((NOT (SELF.description = 'flat with radius')) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF([ 'QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'corner radius')))) = 1)) )) = 0)) )) = 0));
  WR11: ((NOT (SELF.description = 'spherical')) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF([ 'QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'radius')) )) = 1)) )) = 0)) )) = 0));
  WR12: ((NOT (SELF.description = 'conical')) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF([ 'QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'tip radius')) )) <= 1)) )) = 0)) )) = 0));
  WR13: ((NOT (SELF.description = 'conical')) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF([ 'QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'GEOMETRY_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'tip angle')) )) = 1)) )) = 0)) )) = 0));
  WR14: (SIZEOF(QUERY ( fcr <* QUERY ( sar <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') | ((sar.description = 'hole bottom usage') AND ('MACHINING_FEATURE_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar))) ) | ((fcr.related_shape_aspect.description ='bottom condition occurrence') AND ('MACHINING_FEATURE_SCHEMA.ROUND_HOLE' IN TYPEOF(fcr.related_shape_aspect.of_shape.definition)) AND ('MACHINING_FEATURE_SCHEMA.HOLE_BOTTOM' IN TYPEOF(fcr.relating_shape_aspect))) )) >= 1);
  WR15: ((NOT (SELF.description = 'flat with taper')) OR (SIZEOF( QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF([ 'QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'final diameter')))) = 1)) )) = 0)) )) = 0));
  WR16: ((NOT (SELF.description = 'flat with taper')) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF([ 'QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'GEOMETRY_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'taper diameter')) )) = 1)) )) = 0)) )) = 0));
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 radius', 'flat with taper', 'spherical', or 'conical'.

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

WR4: If the description of the hole_bottom is 'flat with radius', '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', the hole_bottom shall be represented implicitly by exactly zero representation_item.

WR6: If the description of the hole_bottom is 'flat with radius' or 'spherical', the hole_bottom shall be represented implicitly by exactly one representation_item.

WR7: If the description of the hole_bottom is 'flat with taper', the hole_bottom shall be represented implicitly by exactly two representation_items.

WR8: If the description of the hole_bottom is 'conical', the hole_bottom shall be represented implicitly by at least one and at most two representation_items.

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

WR10: If the description of the hole_bottom is 'flat with radius', the implicit representation of the hole_bottom shall have exactly one representation_item in its items set which is a measure_representation_item and length_measure_with_unit with a name of 'corner radius'.

WR11: If the description of the hole_bottom is 'spherical', the implicit representation of the hole_bottom shall have exactly one representation_item in its items set which is a measure_representation_item and length_measure_with_unit with a name of 'radius'.

WR12: If the description of the hole_bottom is 'conical', the implicit representation of the hole_bottom shall have at most one representation_item in its items set which is a measure_representation_item and length_measure_with_unit with a name of 'tip radius'.

WR13: If the description of the hole_bottom is 'conical', the implicit representation of the hole_bottom shall have exactly one representation_item in its items set which is a measure_representation_item and plane_angle_measure_with_unit with a name of 'tip angle'.

WR14: The hole_bottom shall be the relating_shape_aspect in at least one feature_component_relationship with a description of 'hole bottom usage' in which the related_shape_aspect is an aspect of the shape of a round_hole with a description of 'bottom condition occurrence'.

WR15: If the description of the hole_bottom is 'flat with taper', the implicit representation of the hole_bottom shall have exactly one representation_item in its items set which is a measure_representation_item and length_measure_with_unit with a name of 'final diameter'.

WR16: If the description of the hole_bottom is 'flat with taper', the implicit representation of the hole_bottom shall have exactly one representation_item in its items set which is a measure_representation_item and plane_angle_measure_with_unit with a name of 'taper diameter'.

Informal propositions:

IP1: The location of the hole_bottom shall be at the centre of the circular face that is the mating face to a hole feature for 'spherical', 'conical', and 'flat' hole bottom types. For 'flat with radius' and 'flat with taper', the location shall be at the absolute bottom.

IP2: The hole_bottom shall be defined on the mating face in the X-Y plane with the Z direction coincident to that of the mating hole feature.

5.4.22 linear_profile   EXPRESS-G

A linear_profile is a type of shape_aspect that is the representation of a straight line with orientation and location.

NOTE    Linear_profile is defined in ISO 10303-1814 [5] and defines the requirement for linear_profile.

EXPRESS specification:

*)
ENTITY linear_profile
  SUBTYPE OF (shape_aspect);
WHERE
  WR1: ('MACHINING_FEATURE_SCHEMA.FEATURE_COMPONENT_DEFINITION' IN TYPEOF(SELF.of_shape.definition));
  WR2: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) )) = 1)) )) = 0);
  WR3: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(impl_rep.used_representation.items) = 2)) )) = 0)) )) = 0);
  WR4: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | (('GEOMETRY_SCHEMA.PLACEMENT' IN TYPEOF(it)) AND (it.name = 'orientation')) )) = 1)) )) = 0)) )) = 0);
  WR5: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF([ 'QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'profile length')) )) = 1)) )) = 0)) )) = 0);
END_ENTITY;
(*

Formal propositions:

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

WR2: The linear_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 linear_profile shall contain two representation_items in its set of items.

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

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

Informal propositions:

IP1: The location of the linear_profile shall be one end of the profile.

IP2: The X direction of the linear_profile shall be defined coincident to the X direction of the mating feature.

5.4.23 location_shape_representation   EXPRESS-G

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 ( it <* SELF.items | (NOT ('GEOMETRY_SCHEMA.POINT' IN TYPEOF(it))) )) = 0);
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.4.24 marking   EXPRESS-G

A marking is a type of feature_definition that is the representation of a text or symbol shapes that are applied to all or a portion of a shape_aspect.

NOTE    Defined_marking is defined in ISO 10303-1814 [5] and defines the requirement for marking.

EXPRESS specification:

*)
ENTITY marking
  SUBTYPE OF (feature_definition);
WHERE
  WR1: SIZEOF( QUERY( pd <* USEDIN( SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | SIZEOF( QUERY( pdr <* USEDIN( pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND ({2 <= SIZEOF(pdr.used_representation.items) <=6} ) )) = 1 )) = 1;
  WR2: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd,'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | (('QUALIFIED_MEASURE_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND (it.name = 'marking text')) )) = 1)) )) = 0)) )) = 0);
  WR3: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | (('QUALIFIED_MEASURE_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND (it.name = 'special instructions')) )) <= 1)) )) = 0)) )) = 0);
  WR4: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | (('QUALIFIED_MEASURE_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND (it.name = 'font name')))) <= 1)))) = 0)) )) = 0);
  WR5: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF([ 'QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'character height')) )) <= 1)) )) = 0)) )) = 0);
  WR6: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF([ 'QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'character spacing')) )) <= 1)) )) = 0)) )) = 0);
  WR7: (SIZEOF(QUERY ( pds <* QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | ('PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)) ) | (NOT (SIZEOF(QUERY ( sa_occ <* USEDIN(pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | ((SIZEOF(QUERY ( sdr <* QUERY ( sar <* USEDIN(sa_occ, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' + 'RELATED_SHAPE_ASPECT') | ((sar.description = 'applied shape') AND (('MACHINING_FEATURE_SCHEMA.SHAPE_DEFINING_RELATIONSHIP') IN TYPEOF(sar))) ) | ('PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT' IN TYPEOF(sdr.relating_shape_aspect)) )) = 1)) )) = 1)) )) = 0);
END_ENTITY;
(*

Formal propositions:

WR1: The implicit representation of the marking shall contain between two and six representation_items.

WR2: Exactly one representation_item used for the implicit representation of the marking shall be of type descriptive_representation_item with a name of 'marking text'.

WR3: At most one representation_item used for the implicit representation of the marking shall be of type descriptive_representation_item with a name of 'special instructions'.

WR4: At most one representation_item used for the implicit representation of the marking shall be of type descriptive_representation_item with a name of 'font name'.

WR5: At most one representation_item used for the implicit representation of the marking shall be of type measure_representation_item and length_measure_with_unit with a name of 'character height'.

WR6: At most one representation_item used for the implicit representation of the marking shall be of type measure_representation_item and length_measure_with_unit with a name of 'character spacing'.

WR7: Exactly one marking shall be the basis shape for exactly one shape_aspect that is the related_shape_aspect in at most one shape_defining_relationship with a description of 'applied shape' in which the relating_shape_aspect is a shape_aspect.

5.4.25 modified_pattern   EXPRESS-G

A modified_pattern is a type of shape_aspect 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 (shape_aspect);
WHERE
  WR1: SIZEOF( QUERY (fcr <* QUERY(sar <* USEDIN( SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') | 'MACHINING_FEATURE_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF (sar)) | (SIZEOF( ['MACHINING_FEATURE_SCHEMA.REPLICATE_FEATURE', 'SHAPE_ASPECT_DEFINITION_SCHEMA.INSTANCED_FEATURE'] * TYPEOF (fcr.related_shape_aspect.of_shape.definition)) >= 1) AND (fcr.description = 'base shape')) ) = 1;
  WR2: SIZEOF( QUERY (fcr <* QUERY(sar <* USEDIN( SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') | 'MACHINING_FEATURE_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF (sar)) | (SIZEOF( ['MACHINING_FEATURE_SCHEMA.CIRCULAR_PATTERN', 'MACHINING_FEATURE_SCHEMA.RECTANGULAR_PATTERN'] * TYPEOF(fcr.related_shape_aspect.of_shape.definition)) = 1) AND (fcr.description = 'base pattern')) ) = 1;
  WR3: SIZEOF(QUERY ( sar <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') | (SIZEOF(QUERY ( msar <* USEDIN(sar.related_shape_aspect, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | (SIZEOF([ 'MACHINING_FEATURE_SCHEMA.PATTERN_OFFSET_MEMBERSHIP', 'MACHINING_FEATURE_SCHEMA.PATTERN_OMIT_MEMBERSHIP'] * TYPEOF(sar)) = 1) AND (sar.description='modified pattern') AND (sar :<>: msar) )) >= 1) )) = 0;
END_ENTITY;
(*

Formal propositions:

WR1: The modified_pattern shall be the relating_shape_aspect in exactly one shape_aspect_relationship that is of type feature_component_relationship with a name of 'base shape' and a related_shape_aspect that is either of type replicate_feature or instanced_feature.

WR2: The modified_pattern shall be the relating_shape_aspect in exactly one shape_aspect_relationship and has the description of 'base pattern', with a related_shape_aspect that references either a circular_pattern or a rectangular_pattern.

WR3: The modified_pattern shall be the related_shape_aspect in at least one shape_aspect_relationship and has the description of 'modified pattern', 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.4.26 ngon_closed_profile   EXPRESS-G

An ngon_closed_profile is a type of shape_aspect that represents an enclosed 2D area with location and orientation. The enclosed area is defined by three or more straight sides. The location is defined to be at the centre of the enclosed area, and the orientation of the ngon_closed_profile is the X-Y plane with the X direction parallel to one of the sides of the ngon.

NOTE    Ngon_profile is defined in ISO 10303-1814 [5] and defines the requirement for ngon_closed_profile.

EXPRESS specification:

*)
ENTITY ngon_closed_profile
  SUBTYPE OF (shape_aspect);
WHERE
  WR1: 'MACHINING_FEATURE_SCHEMA.FEATURE_COMPONENT_DEFINITION' IN TYPEOF (SELF.of_shape.definition);
  WR2: SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF (pdr.used_representation))) = 1))) = 0;
  WR3: SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (impl_rep <* QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF (pdr.used_representation)) | NOT ((SIZEOF (impl_rep.used_representation.items) >= 3) AND (SIZEOF(impl_rep.used_representation.items) <= 4)))) = 0))) = 0;
  WR4: SIZEOF( QUERY( pd <* USEDIN( SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | SIZEOF( QUERY( pdr <* USEDIN( pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND (SIZEOF( QUERY( srwp_i <* pdr.used_representation.items | (srwp_i.name = 'orientation') OR (srwp_i.name = 'number of sides') OR (srwp_i.name = 'circumscribed diameter') OR (srwp_i.name = 'corner radius') OR (srwp_i.name = 'diameter across flats'))) = SIZEOF(pdr.used_representation.items)) )) = 1 )) = 1;
  WR5: SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (impl_rep <* QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF (pdr.used_representation)) | NOT (SIZEOF (QUERY (it <* impl_rep.used_representation.items | ('GEOMETRY_SCHEMA.PLACEMENT' IN TYPEOF (it)) AND (it.name = 'orientation'))) = 1))) = 0))) = 0;
  WR6: SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (impl_rep <* QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF (pdr.used_representation)) | NOT (SIZEOF (QUERY (it <* impl_rep.used_representation.items | ('QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM' IN TYPEOF (it)) AND ('MEASURE_SCHEMA.COUNT_MEASURE' IN TYPEOF (it\measure_with_unit.value_component)) AND (it.name = 'number of sides'))) = 1))) = 0))) = 0;
  WR7: SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (impl_rep <* QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF (pdr.used_representation)) | NOT (SIZEOF (QUERY (it <* impl_rep.used_representation.items | (SIZEOF (['QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF (it)) = 2) AND (it.name IN ['circumscribed diameter','diameter across flats']) )) = 1) )) = 0))) = 0;
  WR8: SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (impl_rep <* QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF (pdr.used_representation)) | NOT (SIZEOF (QUERY (it <* impl_rep.used_representation.items | (SIZEOF (['QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF (it)) = 2) AND (it.name = 'corner radius'))) <= 1))) = 0))) = 0;
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 at least three and at most 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 with a name of 'orientation', 'number of sides', 'diameter across flats', 'circumscribed diameter', and 'corner radius'.

WR5: Exactly one representation_item used for the implicit representation of an ngon_closed_profile shall be of type placement with the 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 'circumscribed diameter' or 'diameter across flats'.

WR8: At most 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 'corner radius'.

Informal propositions:

IP1: The location of the ngon_closed_profile shall be defined at the centre of the enclosed area.

IP2: The ngon_closed_profile shall be defined in the X-Y plane with one of the sides of the ngon parallel to the X direction intersecting the negative Y direction.

5.4.27 open_path_profile   EXPRESS-G

An open_path_profile is a type of shape_aspect that represents a connected set of curves with a location and orientation. The start vertex and end vertex for the set of curves do not connect creating an area open on one side. The open_path_profile orientation is in the X-Y plane.

NOTE    General_path_feature_component is defined in ISO 10303-1814 [5] and defines the requirement for open_path_profile.

EXPRESS specification:

*)
ENTITY open_path_profile
  SUBTYPE OF (shape_aspect);
WHERE
  WR1: ('MACHINING_FEATURE_SCHEMA.FEATURE_COMPONENT_DEFINITION' IN TYPEOF(SELF.of_shape.definition));
  WR2: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) )) = 1)) )) = 0);
  WR3: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF (impl_rep.used_representation.items) = 1)) )) = 0)) )) = 0);
  WR4: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | (('GEOMETRY_SCHEMA.PLACEMENT' IN TYPEOF(it)) AND (it.name = 'orientation')) )) = 1)) )) = 0)) )) = 0);
  WR5: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ('TOPOLOGY_SCHEMA.PATH_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)) )) = 1)) )) = 0);
  WR6: SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ('MACHINING_FEATURE_SCHEMA.PLANAR_SHAPE_REPRESENTATION' IN TYPEOF (pdr.used_representation))AND (pdr.used_representation.name = 'profile limit') )) <= 1))) = 0;
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 at least one and at most two 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 the name of 'orientation'.

WR5: The open_path_profile shall have exactly one path_shape_representation.

WR6: The open_path_profile shall have at most one planar_shape_representation with a name of 'profile limit'.

Informal propositions:

IP1: The open_path_profile shall be defined in the X-Y plane.

5.4.28 outer_round   EXPRESS-G

An outer_round is a type of feature_definition that is the representation of a volume that is removed from the base shape. The outer_round may be represented in one of two ways. This first shall be a removal of a cylindrical volume represented by a diameter about the Z direction of the feature_definition placement axis. It may have a change in diameter which is represented by a taper. The second shall be a removal of a cylindrical volume represented by sweeping a vee_profile about the Z direction of the feature_definition placement axis.

NOTE    Outer_diameter and Outer_diameter_to_shoulder are defined in ISO 10303-1814 [5] and define the requirement for outer_round.

EXPRESS specification:

*)
ENTITY outer_round
  SUBTYPE OF (feature_definition);
WHERE
  WR1: ((NOT (SELF\characterized_object.description = 'outer diameter')) OR (SIZEOF( QUERY( pd <* USEDIN( SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | SIZEOF( QUERY( pdr <* USEDIN( pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND (SIZEOF (pdr.used_representation.items) = 3) )) = 1 )) = 1));
  WR2: ((NOT (SELF\characterized_object.description = 'outer diameter to shoulder')) OR (SIZEOF( QUERY( pd <* USEDIN( SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | SIZEOF( QUERY( pdr <* USEDIN( pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND ( {2 <= SIZEOF(pdr.used_representation.items) <= 3}) )) = 1 )) = 1));
  WR3: (SELF\characterized_object.description IN ['outer diameter', 'outer diameter to shoulder']);
  WR4: ((NOT (SELF\characterized_object.description = 'outer diameter')) OR (SIZEOF( QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF([ 'QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'length')) )) = 1)) )) = 0)) )) = 0));
  WR5: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF (['QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'diameter')) )) = 1)) )) = 0)) )) = 0);
  WR6: ((NOT (SELF\characterized_object.description = 'outer diameter to shoulder')) OR ( SIZEOF(QUERY ( pds <* QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | ('PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)) ) | (NOT (SIZEOF(QUERY ( sa_occ <* USEDIN(pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | ((sa_occ.description = 'v-shape boundary occurrence') AND (SIZEOF(QUERY ( sdr <* QUERY ( sar <* USEDIN(sa_occ, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | ((sar.description = 'profile usage') AND (('MACHINING_FEATURE_SCHEMA.SHAPE_DEFINING_RELATIONSHIP') IN TYPEOF(sar))) ) | (('MACHINING_FEATURE_SCHEMA.VEE_PROFILE' IN TYPEOF(sdr.relating_shape_aspect)) AND (sdr.relating_shape_aspect.description = 'v-shape')) )) = 1)) )) = 1)) )) = 0));
  WR7: ((NOT (SELF\characterized_object.description = 'outer diameter')) OR (SIZEOF(QUERY ( pds <* QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | ('PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)) ) | (NOT (SIZEOF(QUERY ( sa_occ <* USEDIN(pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | ((sa_occ.description = 'reduced size occurrence') AND (SIZEOF(QUERY ( sdr <* QUERY ( sar <* USEDIN(sa_occ, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | ((sar.description = 'taper usage') AND (('MACHINING_FEATURE_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP') IN TYPEOF(sar))) ) | (('MACHINING_FEATURE_SCHEMA.TAPER' IN TYPEOF(sdr.relating_shape_aspect)) AND ('MACHINING_FEATURE_SCHEMA.OUTER_ROUND' IN TYPEOF(sdr.related_shape_aspect.of_shape.definition)) AND (sdr.name = 'reduced size')) )) = 1)) )) <= 1)) )) = 0));
  WR8: ((NOT (SELF\characterized_object.description = 'outer diameter to shoulder')) OR (SIZEOF( QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF([ 'QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'length')) )) <= 1)) )) = 0)) )) = 0));
  WR9: ((NOT (SELF\characterized_object.description = 'outer diameter to shoulder')) OR (SIZEOF( QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF([ 'QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'feature length')) )) <= 1)) )) = 0)) )) = 0));
END_ENTITY;
(*

Formal propositions:

WR1: The implicit representation of the outer_round with description 'outer diameter' shall contain exactly three representation_items.

WR2: The implicit representation of the outer_round with description 'outer diameter to shoulder' shall contain zero or one representation_item.

WR3: The outer_round shall have a description of either 'outer diameter' or 'outer diameter to shoulder'.

WR4: If the description of the outer_round is 'outer diameter', exactly one representation_item used for the implicit representation of the outer_round shall be of type measure_representation_item and length_measure_with_unit with a name of 'length'.

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

WR6: If the description of the outer_round is 'outer diameter to shoulder', the outer_round shall be the basis shape for at most one shape_aspect with a description of 'v-shape boundary occurrence' that is the related_shape_aspect in exactly one shape_defining_relationship with a description of 'profile usage' and a relating_shape_aspect that references a vee_profile with a description of 'v-shape'.

WR7: If the description of the outer_round is 'outer diameter', the outer_round shall be the basis shape for at most one shape_aspect with a description of 'reduced size occurrence' that is the related_shape_aspect in exactly one feature_component_relationship with a description of 'taper usage' and a relating_shape_aspect that references a taper with a description of 'reduced size'.

WR8: If the description of the outer_round is 'outer diameter to shoulder', zero or one representation_item used for the implicit representation of the outer_round shall be of type measure_representation_item and length_measure_with_unit with a name of 'length'.

WR9: If the description of the outer_round is 'outer diameter to shoulder', zero or one representation_item used for the implicit representation of the outer_round shall be of type measure_representation_item and length_measure_with_unit with a name of 'feature length'.

Informal propositions:

IP1: The location of the outer_round shall be defined at a position in the Z direction.

IP2: The Z direction of the outer_round is the axis of revolution.

IP3: If the description of the outer_round is 'outer diameter to shoulder', the placement of the vee_profile shall be along the X direction of the outer_round at a specified distance from the origin. The orientation of the vee_profile shall be in the same direction in the Y axis. The Y axis of the vee_profile shall be in the same direction as the X axis of the outer_round.

5.4.29 outside_profile   EXPRESS-G

An outside_profile is a type of feature_definition that is the representation of the outside boundary of the base shape. This boundary may be enclosed and have either a rectangular base shape that is represented by a rectangular_closed_profile or it may have a non-rectangular base shape that is represented by either an ngon_closed_profile, a rectangular_closed_profile, a closed_path_profile, or a circular_closed_profile. If the boundary is not enclosed the base shape would be defined by a linear_profile, square_u_profile, partial_circular_profile, rounded_u_profile, vee_profile, tee_profile, or an open_path_profile.

NOTE    General_outside_profile, Shape_profile, Circular_closed_shape_profile, Partial_circular_shape_profile, General_shape_profile, Rectangular_closed_shape_profile, and Rectangular_open_shape_profile are defined in ISO 10303-1814 [5] and define the requirement for outside_profile.

EXPRESS specification:

*)
ENTITY outside_profile
  SUBTYPE OF (feature_definition);
WHERE
  WR1: SIZEOF( QUERY( pd <* USEDIN( SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | SIZEOF( QUERY( pdr <* USEDIN( pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND (SIZEOF (pdr.used_representation.items) = 1) )) = 1 )) = 1;
  WR2: SIZEOF (QUERY (pds <* QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF (pd)) | NOT (SIZEOF (QUERY (sa_occ <* USEDIN (pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | (sa_occ.description IN ['boundary occurrence', 'non-planar boundary occurrence', 'partial circular boundary occurrence', 'closed circular boundary occurrence', 'open rectangular boundary occurrence', 'closed rectangular boundary occurrence']) )) =1) ))=0;
  WR3: (NOT(SIZEOF (QUERY (pds <* QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF (pd)) | NOT (SIZEOF (QUERY (sa_occ <* USEDIN (pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | (sa_occ.description = 'boundary occurrence') )) =1) ))=0)) OR (SIZEOF (QUERY (pds <* QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF (pd)) | NOT (SIZEOF (QUERY (sa_occ <* USEDIN (pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | (SIZEOF (QUERY (sdr <* QUERY (sar <* USEDIN (sa_occ, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | (sar.description = 'profile usage') AND ('MACHINING_FEATURE_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF (sar))) | (SIZEOF (['MACHINING_FEATURE_SCHEMA.CIRCULAR_CLOSED_PROFILE', 'MACHINING_FEATURE_SCHEMA.NGON_CLOSED_PROFILE', 'MACHINING_FEATURE_SCHEMA.RECTANGULAR_CLOSED_PROFILE', 'MACHINING_FEATURE_SCHEMA.CLOSED_PATH_PROFILE', 'MACHINING_FEATURE_SCHEMA.SQUARE_U_PROFILE', 'MACHINING_FEATURE_SCHEMA.PARTIAL_CIRCULAR_PROFILE', 'MACHINING_FEATURE_SCHEMA.ROUNDED_U_PROFILE', 'MACHINING_FEATURE_SCHEMA.LINEAR_PROFILE', 'MACHINING_FEATURE_SCHEMA.VEE_PROFILE', 'MACHINING_FEATURE_SCHEMA.TEE_PROFILE', 'MACHINING_FEATURE_SCHEMA.OPEN_PATH_PROFILE'] * TYPEOF (sdr.relating_shape_aspect)) = 1) AND (sdr.relating_shape_aspect.description = 'outside boundary'))) = 1))) = 1))) = 0);
  WR4: (NOT(SIZEOF (QUERY (pds <* QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF (pd)) | NOT (SIZEOF (QUERY (sa_occ <* USEDIN (pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | (sa_occ.description IN ['complex boundary occurrence', 'partial circular boundary occurrence', 'closed circular boundary occurrence', 'open rectangular boundary occurrence', 'closed rectangular boundary occurrence']) ))=1) ))=0)) OR (SIZEOF (QUERY (pds <* QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF (pd)) | NOT (SIZEOF (QUERY (sa_occ <* USEDIN (pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | NOT(SIZEOF (QUERY (sdr <* QUERY (sar <* USEDIN (sa_occ, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | (sar.description = 'profile floor usage') AND ('MACHINING_FEATURE_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF (sar))) | (('MACHINING_FEATURE_SCHEMA.PROFILE_FLOOR' IN TYPEOF (sdr.relating_shape_aspect)) AND ('MACHINING_FEATURE_SCHEMA.OUTSIDE_PROFILE' IN TYPEOF (sdr.related_shape_aspect.of_shape.definition))) )) = 1))) = 0))) = 0);
  WR5: (NOT(SIZEOF (QUERY (pds <* QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF (pd)) | NOT (SIZEOF (QUERY (sa_occ <* USEDIN (pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | (sa_occ.description IN ['outside boundary', 'complex boundary occurrence', 'partial circular boundary occurrence', 'closed circular boundary occurrence', 'open rectangular boundary occurrence', 'closed rectangular boundary occurrence']) ))=1) ))=0)) OR (SIZEOF (QUERY (pds <* QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF (pd)) | NOT (SIZEOF (QUERY (sa_occ <* USEDIN (pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | (SIZEOF (QUERY (sdr <* QUERY (sar <* USEDIN (sa_occ, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | (sar.description = 'path feature component usage') AND ('MACHINING_FEATURE_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF (sar))) | (SIZEOF (['TOPOLOGY_SCHEMA.PATH_FEATURE_COMPONENT'] * TYPEOF (sdr.relating_shape_aspect)) = 1) AND (sdr.name = 'profile swept shape') AND (sdr.relating_shape_aspect.description='linear') )) = 1))) = 1))) = 0);
  WR6: (NOT(SIZEOF (QUERY (pds <* QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF (pd)) | NOT (SIZEOF (QUERY (sa_occ <* USEDIN (pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | (sa_occ.description = 'complex boundary occurrence') )) =1) ))=0)) OR (SIZEOF (QUERY (pds <* QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF (pd)) | NOT (SIZEOF (QUERY (sa_occ <* USEDIN (pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | (SIZEOF (QUERY (sdr <* QUERY (sar <* USEDIN (sa_occ, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | (sar.description = 'profile usage') AND ('MACHINING_FEATURE_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF (sar))) | (SIZEOF (['MACHINING_FEATURE_SCHEMA.CIRCULAR_CLOSED_PROFILE', 'MACHINING_FEATURE_SCHEMA.NGON_CLOSED_PROFILE', 'MACHINING_FEATURE_SCHEMA.RECTANGULAR_CLOSED_PROFILE', 'MACHINING_FEATURE_SCHEMA.CLOSED_PATH_PROFILE', 'MACHINING_FEATURE_SCHEMA.SQUARE_U_PROFILE', 'MACHINING_FEATURE_SCHEMA.PARTIAL_CIRCULAR_PROFILE', 'MACHINING_FEATURE_SCHEMA.ROUNDED_U_PROFILE', 'MACHINING_FEATURE_SCHEMA.VEE_PROFILE', 'MACHINING_FEATURE_SCHEMA.TEE_PROFILE', 'MACHINING_FEATURE_SCHEMA.LINEAR_PROFILE', 'MACHINING_FEATURE_SCHEMA.OPEN_PATH_PROFILE'] * TYPEOF (sdr.relating_shape_aspect)) =1)) ) = 1)))= 1))) = 0);
  WR7: (NOT(SIZEOF (QUERY (pds <* QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF (pd)) | NOT (SIZEOF (QUERY (sa_occ <* USEDIN (pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | (sa_occ.description = 'partial circular boundary occurrence') )) =1) ))=0)) OR (SIZEOF (QUERY (pds <* QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF (pd)) | NOT (SIZEOF (QUERY (sa_occ <* USEDIN (pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | (SIZEOF (QUERY (sdr <* QUERY (sar <* USEDIN (sa_occ, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | (sar.description = 'profile usage') AND ('MACHINING_FEATURE_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF (sar))) | ('MACHINING_FEATURE_SCHEMA.PARTIAL_CIRCULAR_PROFILE' IN TYPEOF (sdr.relating_shape_aspect)))) = 1)))= 1))) = 0);
  WR8: (NOT(SIZEOF (QUERY (pds <* QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF (pd)) | NOT (SIZEOF (QUERY (sa_occ <* USEDIN (pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | (sa_occ.description = 'closed circular boundary occurrence') )) =1) ))=0)) OR (SIZEOF (QUERY (pds <* QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF (pd)) | NOT (SIZEOF (QUERY (sa_occ <* USEDIN (pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | (SIZEOF (QUERY (sdr <* QUERY (sar <* USEDIN (sa_occ, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | (sar.description = 'profile usage') AND ('MACHINING_FEATURE_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF (sar))) | ('MACHINING_FEATURE_SCHEMA.CIRCULAR_CLOSED_PROFILE' IN TYPEOF (sdr.relating_shape_aspect)))) = 1)))= 1))) = 0);
  WR9: (NOT(SIZEOF (QUERY (pds <* QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF (pd)) | NOT (SIZEOF (QUERY (sa_occ <* USEDIN (pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | (sa_occ.description = 'open rectangular boundary occurrence') )) =1) ))=0)) OR (SIZEOF (QUERY (pds <* QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF (pd)) | NOT (SIZEOF (QUERY (sa_occ <* USEDIN (pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | (SIZEOF (QUERY (sdr <* QUERY (sar <* USEDIN (sa_occ, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | (sar.description = 'profile usage') AND ('MACHINING_FEATURE_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF (sar))) | ('MACHINING_FEATURE_SCHEMA.SQUARE_U_PROFILE' IN TYPEOF (sdr.relating_shape_aspect)))) = 1)))= 1))) = 0);
  WR10: (NOT(SIZEOF (QUERY (pds <* QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF (pd)) | NOT (SIZEOF (QUERY (sa_occ <* USEDIN (pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | (sa_occ.description = 'closed rectangular boundary occurrence') )) =1) ))=0)) OR (SIZEOF (QUERY (pds <* QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF (pd)) | NOT (SIZEOF (QUERY (sa_occ <* USEDIN (pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | (SIZEOF (QUERY (sdr <* QUERY (sar <* USEDIN (sa_occ, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | (sar.description = 'profile usage') AND ('MACHINING_FEATURE_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF (sar))) | ('MACHINING_FEATURE_SCHEMA.RECTANGULAR_CLOSED_PROFILE' IN TYPEOF (sdr.relating_shape_aspect)) )) = 1))) = 1))) = 0);
  WR11: (SIZEOF (QUERY (pds <* QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF (pd)) | NOT (SIZEOF (QUERY (sa_occ <* USEDIN (pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | (sa_occ.description IN ['boundary occurrence', 'complex boundary occurrence', 'partial circular boundary occurrence', 'closed circular boundary occurrence', 'open rectangular boundary occurrence', 'closed rectangular boundary occurrence']) )) =1) ))=0) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('MACHINING_FEATURE_SCHEMA.DIRECTION_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)) AND (pdr.used_representation.name = 'removal direction')) )) = 1)) )) = 0);
  WR12: SIZEOF(QUERY(pdr <* get_property_definition_representations (SELF) | ( 'MACHINING_FEATURE_SCHEMA.PLANAR_SHAPE_REPRESENTATION' IN TYPEOF ( pdr.used_representation ) ) AND ( pdr.used_representation.name ='maximum feature limit'))) >=0;
END_ENTITY;
(*

Formal propositions:

WR1: The implicit representation of the outside_profile shall contain exactly one representation_item.

WR2: The outside_profile shall be the basis shape for exactly one shape_aspect with a description of 'boundary occurrence' , 'complex boundary occurrence', 'partial circular boundary occurrence', 'closed circular boundary occurrence', 'open rectangular boundary occurrence', or 'closed rectangular boundary occurrence'.

WR3: If the outside_profile has a shape_aspect with a description of 'boundary occurrence', then the shape_aspect is 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, closed_path_profile, square_u_profile, partial_circular_profile, rounded_u_profile, linear_profile, vee_profile, tee_profile, or open_path_profile with a description of 'outside boundary'.

WR4: If the outside_profile has a shape_aspect with a description of 'complex boundary occurrence', 'partial circular boundary occurrence', 'closed circular boundary occurrence', 'open rectangular boundary occurrence', 'closed rectangular boundary occurrence', then the outside_profile shall be the basis shape for exactly one shape_aspect that is the related_shape_aspect in exactly one feature_component_relationship with a description of 'profile floor usage' and a relating_shape_aspect that references a profile_floor.

WR5: If the outside_profile has a shape_aspect with a description of 'outside boundary', 'complex boundary occurrence', 'partial circular boundary occurrence', 'closed circular boundary occurrence', 'open rectangular boundary occurrence', 'closed rectangular boundary occurrence', then the outside_profile shall be the basis shape for exactly one shape_aspect that is the related_shape_aspect in exactly one shape_defining_relationship with a description of 'path feature component usage' and a relating_shape_aspect that references a path_feature_component with a description of 'linear'.

WR6: If the outside_profile has a shape_aspect with a description of 'complex boundary occurrence', then the outside_profile shall be the basis shape for exactly one shape_aspect 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 circular_closed_profile, ngon_closed_profile, rectangular_closed_profile, closed_path_profile, square_u_profile, partial_circular_profile, rounded_u_profile, vee_profile, tee_profile, linear_profile, or open_path_profile.

WR7: If the outside_profile has a shape_aspect with a description of 'partial circular boundary occurrence', then the outside_profile shall be the basis shape for exactly one shape_aspect 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 partial_circular_profile.

WR8: If the outside_profile has a shape_aspect with a description of 'closed circular boundary occurrence', then the outside_profile shall be the basis shape for exactly one shape_aspect 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.

WR9: If the outside_profile has a shape_aspect with a description of 'open rectangular boundary occurrence', then the outside_profile shall be the basis shape for exactly one shape_aspect 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 square_u_profile.

WR10: If the outside_profile has a shape_aspect with a description of 'closed rectangular boundary occurrence', then the outside_profile shall be the basis shape for exactly one shape_aspect 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.

WR11: If the outside_profile has a shape_aspect with a description of 'complex boundary occurrence', 'partial circular boundary occurrence', 'closed circular boundary occurrence', 'open rectangular boundary occurrence', 'closed rectangular boundary occurrence', then the outside_profile shall have exactly one direction_shape_representation with a name of 'removal direction'.

WR12: The outside_profile shall have at most one planar_shape_representation with a name of 'maximum feature limit'.

Informal propositions:

IP1: The outside_profile shall be linear along the Z-axis of the feature.

IP2: The origin, X direction, Y direction of the profile that defines the shape of the outside_profile shall be with the X and Y axes equal to those specified by the placement of the outside_profile.

5.4.30 partial_circular_profile   EXPRESS-G

A partial_circular_profile is a type of shape_aspect that is the representation of arc of constant radius, with a location and a position. The partial_circular_profile is located at the arc origin; the X direction starts at the arc origin in the direction of one of the arc end points and the Y direction orthogonal in the direction of volume removal.

NOTE    Partial_circular_profile is defined in ISO 10303-1814 [5] and defines the requirement for partial_circular_profile.

EXPRESS specification:

*)
ENTITY partial_circular_profile
  SUBTYPE OF (shape_aspect);
WHERE
  WR1: ('MACHINING_FEATURE_SCHEMA.FEATURE_COMPONENT_DEFINITION' IN TYPEOF(SELF.of_shape.definition));
  WR2: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) )) = 1)) )) = 0);
  WR3: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF (impl_rep.used_representation.items) >= 3)) )) = 0)) )) = 0);
  WR4: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | (('GEOMETRY_SCHEMA.PLACEMENT' IN TYPEOF(it)) AND (it.name = 'orientation')) )) = 1)) )) = 0)) )) = 0);
  WR5: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF([ 'QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'radius')))) = 1)) )) = 0)) )) = 0);
  WR6: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF([ 'QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'GEOMETRY_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'sweep angle')) )) = 1)) )) = 0)) )) = 0);
  WR7: SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ('MACHINING_FEATURE_SCHEMA.PLANAR_SHAPE_REPRESENTATION' IN TYPEOF (pdr.used_representation))AND (pdr.used_representation.name = 'profile limit'))) <= 1))) = 0;
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 at least three and at most four representation_items in its set of items.

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

WR5: 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'.

WR6: 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'.

WR7: The partial_circular_profile shall have at most one planar_shape_representation with a name of 'profile limit'.

Informal propositions:

IP1: The location of the partial_circular_profile shall be at the arc origin.

IP2: The partial_circular_profile shall be defined with the X direction starting at the arc origin in the direction of one of the arc end points and the Y direction orthogonal.

5.4.31 path_feature_component   EXPRESS-G

A path_feature_component is a type of shape_aspect that is the representation 2D or 3D curve or set of curves.

NOTE    Path_element is defined in ISO 10303-1814 [5] and defines the requirement for path_feature_component.

EXPRESS specification:

*)
ENTITY path_feature_component
  SUBTYPE OF (shape_aspect);
WHERE
  WR1: ('MACHINING_FEATURE_SCHEMA.FEATURE_COMPONENT_DEFINITION' IN TYPEOF(SELF.of_shape.definition));
  WR2: (SELF.description IN ['partial circular','complete circular', 'linear','complex']);
  WR3: ((NOT (SELF.description = 'complex')) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) )) = 1)) )) = 0));
  WR4: ((SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | (('GEOMETRY_SCHEMA.PLACEMENT' IN TYPEOF(it)) AND (it.name = 'orientation')) )) = 1)) )) = 0)) )) = 0));
  WR5: ((NOT (SELF.description = 'partial circular')) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(impl_rep.used_representation.items) = 3)) )) = 0)) )) = 0));
  WR6: ((NOT (SELF.description = 'partial circular')) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF([ 'QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'radius')) )) = 1)) )) = 0)) )) = 0));
  WR7: ((NOT (SELF.description = 'partial circular')) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF([ 'QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'GEOMETRY_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'sweep angle')) )) = 1)) )) = 0)) )) = 0));
  WR8: ((NOT (SELF.description = 'complete circular')) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(impl_rep.used_representation.items) = 2)) )) = 0)) )) = 0));
  WR9: ((NOT (SELF.description = 'complete circular')) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF([ 'QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'radius')) )) = 1)) )) = 0)) )) = 0));
  WR10: ((NOT (SELF.description = 'linear')) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(impl_rep.used_representation.items) = 2)) )) = 0)) )) = 0));
  WR11: ((NOT (SELF.description = 'linear')) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF([ 'QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'distance')) )) = 1)) )) = 0)) )) = 0));
  WR12: ((NOT (SELF.description = 'linear')) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ('MACHINING_FEATURE_SCHEMA.DIRECTION_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)) )) = 1)) )) = 0));
  WR13: ((NOT (SELF.description = 'complex')) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('TOPOLOGY_SCHEMA.PATH_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)) AND (pdr.used_representation.name = 'sweep path')AND (SIZEOF( QUERY( srwp_i <* pdr.used_representation.items | (srwp_i.name = 'profile shape') )) = 1) ) )) = 1)) )) = 0));
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: If the description of the path_feature_component is 'complex', the path_feature_component shall have its implicit representation specified by exactly one shape_representation_with_parameters.

WR4: The path_feature_component shall have one representation_item used for the implicit representation specified by a shape_representation_with_parameters. This shape_representation_with_parameters shall contain exactly one representation_item of type placement with a name of 'orientation'.

WR5: If the description of the path_feature_component is 'partial circular', the path_feature_component shall have an implicit representation that contains 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 path_feature_component shall have an implicit representation that contains 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 path_feature_component shall have an implicit representation that contains 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 'linear', the path_feature_component shall have exactly one direction_shape_representation.

WR13: 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 exactly one representation_item with a name of 'profile shape'.

Informal propositions:

IP1: The location of the path_feature_component may be the same location used by the feature that references path_feature_component.

IP2: The origin, X direction, and Y direction of the path_feature_component may be the same as that used by the feature that references path_feature_component.

5.4.32 path_shape_representation   EXPRESS-G

A path_shape_representation is a type of shape_representation which represents a curved path using an ordered collection of geometric curves 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([ 'MACHINING_FEATURE_SCHEMA.BOUNDED_CURVE', 'TOPOLOGY_SCHEMA.EDGE_CURVE', 'TOPOLOGY_SCHEMA.PATH'] * TYPEOF(i)) = 1) )) >= 1);
END_ENTITY;
(*

Formal propositions:

WR1: The path_shape_representation shall have one or more representation_items in its set of items.

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

5.4.33 pattern_offset_membership   EXPRESS-G

A pattern_offset_membership is a type of feature_component_relationship. A pattern_offset_membership specifies the relationships necessary to offset a base feature from either a rectangular_pattern or a circular_pattern.

EXPRESS specification:

*)
ENTITY pattern_offset_membership
  SUBTYPE OF (feature_component_relationship);
WHERE
  WR1: (SIZEOF(QUERY ( fcr <* QUERY ( sar <* USEDIN( SELF.relating_shape_aspect, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' + 'RELATING_SHAPE_ASPECT') | (('MACHINING_FEATURE_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)) AND (sar :<>: SELF)) ) | ((SIZEOF (QUERY( pdr <*(QUERY(pd <* USEDIN (fcr.related_shape_aspect.of_shape, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd))) | SIZEOF (['MACHINING_FEATURE_SCHEMA.CIRCULAR_PATTERN', 'MACHINING_FEATURE_SCHEMA.RECTANGULAR_PATTERN'] * TYPEOF(pdr.definition)) =1 )) = 0 )) )) = 0);
  WR2: (SIZEOF(QUERY ( fcr <* QUERY ( sar <* USEDIN( SELF.related_shape_aspect, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | (('MACHINING_FEATURE_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)) AND (sar :<>: SELF)) ) | (fcr.description='modified pattern') AND ('MACHINING_FEATURE_SCHEMA.MODIFIED_PATTERN' IN TYPEOF(fcr.relating_shape_aspect)) )) >= 1);
  WR3: (SIZEOF(QUERY ( fcr <* QUERY ( sar <* USEDIN( SELF.related_shape_aspect, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | (('MACHINING_FEATURE_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)) AND (sar :<>: SELF)) ) | (('MACHINING_FEATURE_SCHEMA.MODIFIED_PATTERN' IN TYPEOF(fcr.relating_shape_aspect)) AND (NOT (SIZEOF(QUERY ( modfcr <* QUERY ( modsar <* USEDIN( fcr.relating_shape_aspect,'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') | ((SIZEOF(['MACHINING_FEATURE_SCHEMA.CIRCULAR_PATTERN', 'MACHINING_FEATURE_SCHEMA.RECTANGULAR_PATTERN'] * TYPEOF(modsar.related_shape_aspect.of_shape.definition)) = 1) AND (modsar :<>: fcr)) ) | (NOT (modfcr.related_shape_aspect.of_shape.definition :=: SELF.relating_shape_aspect.of_shape.definition)) )) = 0))) )) = 0);
  WR4: ((NOT ('MACHINING_FEATURE_SCHEMA.RECTANGULAR_PATTERN' IN TYPEOF(SELF.relating_shape_aspect.of_shape.definition))) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF.related_shape_aspect, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(USEDIN(pd,'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')) = 2)) )) = 0));
  WR5: ((NOT ('MACHINING_FEATURE_SCHEMA.CIRCULAR_PATTERN' IN TYPEOF(SELF.relating_shape_aspect.of_shape.definition))) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF.related_shape_aspect, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(USEDIN(pd,'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')) = 1)) )) = 0));
  WR6: ((NOT ('MACHINING_FEATURE_SCHEMA.CIRCULAR_PATTERN' IN TYPEOF(SELF.relating_shape_aspect.of_shape.definition))) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF.related_shape_aspect, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (NOT (SIZEOF(pdr.used_representation.items) = 2)) )) = 0)) )) = 0));
  WR7: ((NOT ('MACHINING_FEATURE_SCHEMA.CIRCULAR_PATTERN' IN TYPEOF(SELF.relating_shape_aspect.of_shape.definition))) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF.related_shape_aspect, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | (('QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND ('MEASURE_SCHEMA.COUNT_MEASURE' IN TYPEOF(it\measure_with_unit.value_component)) AND (it.name = 'index number')) )) = 1)) )) = 0)) )) = 0));
  WR8: ((NOT ('MACHINING_FEATURE_SCHEMA.CIRCULAR_PATTERN' IN TYPEOF(SELF.relating_shape_aspect.of_shape.definition))) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF.related_shape_aspect, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | (('GEOMETRY_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT' IN TYPEOF(it)) AND (it.name = 'offset')) )) = 1)) )) = 0)) )) = 0));
  WR9: ((NOT ('MACHINING_FEATURE_SCHEMA.RECTANGULAR_PATTERN' IN TYPEOF(SELF.relating_shape_aspect.of_shape.definition))) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF.related_shape_aspect, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(impl_rep.used_representation.items ) = 3)) )) = 0)) )) = 0));
  WR10: ((NOT ('MACHINING_FEATURE_SCHEMA.RECTANGULAR_PATTERN' IN TYPEOF(SELF.relating_shape_aspect.of_shape.definition))) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF.related_shape_aspect, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | (('QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND ('MEASURE_SCHEMA.COUNT_MEASURE' IN TYPEOF(it\measure_with_unit.value_component)) AND (it.name = 'row index')) )) = 1)) )) = 0)) )) = 0));
  WR11: ((NOT ('MACHINING_FEATURE_SCHEMA.RECTANGULAR_PATTERN' IN TYPEOF(SELF.relating_shape_aspect.of_shape.definition))) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF.related_shape_aspect, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | (('QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND ('MEASURE_SCHEMA.COUNT_MEASURE' IN TYPEOF(it\measure_with_unit.value_component)) AND (it.name = 'column index')) )) = 1)) )) = 0)) )) = 0));
  WR12: ((NOT ('MACHINING_FEATURE_SCHEMA.RECTANGULAR_PATTERN' IN TYPEOF(SELF.relating_shape_aspect.of_shape.definition))) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF.related_shape_aspect, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | (('MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT' IN TYPEOF(it)) AND (it.name = 'offset distance')) )) = 1)) )) = 0)) )) = 0));
  WR13: ((NOT ('MACHINING_FEATURE_SCHEMA.RECTANGULAR_PATTERN' IN TYPEOF(SELF.relating_shape_aspect.of_shape.definition))) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF.related_shape_aspect, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('MACHINING_FEATURE_SCHEMA.DIRECTION_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)) AND (pdr.used_representation.name = 'offset direction')) )) = 1)) )) = 0));
END_ENTITY;
(*

Formal propositions:

WR1: The pattern_offset_membership shall define an offset relationship for a member of either a circular_pattern or a rectangular_pattern.

WR2: The shape_aspect that defines the offset is defined by a related_shape_aspect that defines the omission in the pattern_offset_membership. This 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 pattern_offset_membership shall define a set of instances such that the related_shape_aspect defines the offset which is used as the related_shape_aspect in an instance of a feature_component_relationship that relates the offset to the modified_pattern that incorporates all of the offsets for exactly one circular_pattern or a rectangular_pattern.

NOTE    Figure 6 depicts the instances defined by this constraint.



Figure 6 —  Pattern offset required instances

Figure 6 —  Pattern offset required instances

WR4: If the shape_aspect referenced by the relating_shape_aspect of the pattern_offset_membership is a rectangular_pattern, it shall have exactly two representations.

WR5: If the shape_aspect referenced by the relating_shape_aspect of the pattern_offset_membership is a circular_pattern, it shall have exactly one representation.

WR6: If the shape_aspect referenced by the relating_shape_aspect of the pattern_offset_membership is a circular_pattern, the representation of the shape_aspect referenced by the related_shape_aspect of the pattern_offset_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_offset_membership is 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'.

WR8: If the shape_aspect referenced by the relating_shape_aspect of the pattern_offset_membership is 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'.

WR9: If the shape_aspect referenced by the relating_shape_aspect of the pattern_offset_membership is 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.

WR10: If the shape_aspect referenced by the relating_shape_aspect of the pattern_offset_membership is 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'.

WR11: If the shape_aspect referenced by the relating_shape_aspect of the pattern_offset_membership is 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'.

WR12: If the shape_aspect referenced by the relating_shape_aspect of the pattern_offset_membership is 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'.

WR13: If the shape_aspect referenced by the relating_shape_aspect of the pattern_offset_membership is 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.4.34 pattern_omit_membership   EXPRESS-G

A pattern_omit_membership is a type of feature_component_relationship. A pattern_omit_membership specifies the relationships necessary to omit a base feature from either a rectangular_pattern or a circular_pattern.

EXPRESS specification:

*)
ENTITY pattern_omit_membership
  SUBTYPE OF (feature_component_relationship);
WHERE
  WR1: (SIZEOF(QUERY ( fcr <* QUERY ( sar <* USEDIN( SELF.relating_shape_aspect, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' + 'RELATING_SHAPE_ASPECT') | (('MACHINING_FEATURE_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)) AND (sar :<>: SELF)) ) | ((SIZEOF (QUERY( pdr <*(QUERY(pd <* USEDIN (fcr.related_shape_aspect.of_shape, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd))) | SIZEOF (['MACHINING_FEATURE_SCHEMA.CIRCULAR_PATTERN', 'MACHINING_FEATURE_SCHEMA.RECTANGULAR_PATTERN'] * TYPEOF(pdr.definition)) =1 )) = 0 )) )) = 0);
  WR2: (SIZEOF(QUERY ( fcr <* QUERY ( sar <* USEDIN( SELF.related_shape_aspect, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | (('MACHINING_FEATURE_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)) AND (sar :<>: SELF)) ) | (fcr.description='modified pattern') AND ('MACHINING_FEATURE_SCHEMA.MODIFIED_PATTERN' IN TYPEOF(fcr.relating_shape_aspect)) )) >= 1);
  WR3: (SIZEOF(QUERY ( fcr <* QUERY ( sar <* USEDIN( SELF.related_shape_aspect, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | (('MACHINING_FEATURE_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)) AND (sar :<>: SELF)) ) | (('MACHINING_FEATURE_SCHEMA.MODIFIED_PATTERN' IN TYPEOF(fcr.relating_shape_aspect)) AND (NOT (SIZEOF(QUERY ( modfcr <* QUERY ( modsar <* USEDIN( fcr.relating_shape_aspect,'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') | ((SIZEOF(['MACHINING_FEATURE_SCHEMA.CIRCULAR_PATTERN', 'MACHINING_FEATURE_SCHEMA.RECTANGULAR_PATTERN'] * TYPEOF(modsar.related_shape_aspect.of_shape.definition)) = 1) AND (modsar :<>: fcr)) ) | (NOT (modfcr.related_shape_aspect.of_shape.definition :=: SELF.relating_shape_aspect.of_shape.definition)) )) = 0))) )) = 0);
  WR4: (SIZEOF(QUERY ( pd <* USEDIN(SELF.related_shape_aspect, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(USEDIN(pd,'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')) = 1)) )) = 0);
  WR5: ((NOT ('MACHINING_FEATURE_SCHEMA.CIRCULAR_PATTERN' IN TYPEOF(SELF.relating_shape_aspect.of_shape.definition))) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF.related_shape_aspect, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (NOT (SIZEOF(pdr.used_representation.items) = 1)) )) = 0)) )) = 0));
  WR6: ((NOT ('MACHINING_FEATURE_SCHEMA.CIRCULAR_PATTERN' IN TYPEOF(SELF.relating_shape_aspect.of_shape.definition))) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF.related_shape_aspect, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | (('QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND ('MEASURE_SCHEMA.COUNT_MEASURE' IN TYPEOF(it\measure_with_unit.value_component)) AND (it.name = 'index number')) )) = 1)) )) = 0)) )) = 0));
  WR7: ((NOT ('MACHINING_FEATURE_SCHEMA.RECTANGULAR_PATTERN' IN TYPEOF(SELF.relating_shape_aspect.of_shape.definition))) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF.related_shape_aspect, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (NOT (SIZEOF(pdr.used_representation.items) = 2)) )) = 0)) )) = 0));
  WR8: ((NOT ('MACHINING_FEATURE_SCHEMA.RECTANGULAR_PATTERN' IN TYPEOF(SELF.relating_shape_aspect.of_shape.definition))) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF.related_shape_aspect, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | (('QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND ('MEASURE_SCHEMA.COUNT_MEASURE' IN TYPEOF(it\measure_with_unit.value_component)) AND (it.name = 'row index')) )) = 1)) )) = 0)) )) = 0));
  WR9: ((NOT ('MACHINING_FEATURE_SCHEMA.RECTANGULAR_PATTERN' IN TYPEOF(SELF.relating_shape_aspect.of_shape.definition))) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF.related_shape_aspect, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | (('QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND ('MEASURE_SCHEMA.COUNT_MEASURE' IN TYPEOF(it\measure_with_unit.value_component)) AND (it.name = 'column index')) )) = 1)) )) = 0)) )) = 0));
END_ENTITY;
(*

Formal propositions:

WR1: The pattern_omit_membership shall define an omit relationship for a member of either a circular_pattern or a rectangular_pattern.

WR2: The related_shape_aspect that defines the omission in the pattern_omit_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 pattern_omit_membership shall define a set of entity instances such that the related_shape_aspect defines the offset which is used as the related_shape_aspect in an instance of a feature_component_relationship that relates the offset to the modified_pattern that incorporates all of the offsets for exactly one circular_pattern or a rectangular_pattern.

NOTE    Figure 7 depicts the instances defined by this constraint.



Figure 7 —  Pattern omit required instances

Figure 7 —  Pattern omit required instances

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

WR5: If the shape_aspect referenced by the relating_shape_aspect of the pattern_omit_membership is 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.

WR6: If the shape_aspect referenced by the relating_shape_aspect of the pattern_omit_membership is 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'.

WR7: If the shape_aspect referenced by the relating_shape_aspect of the pattern_omit_membership is 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.

WR8: If the shape_aspect referenced by the relating_shape_aspect of the pattern_omit_membership is 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'.

WR9: If the shape_aspect referenced by the relating_shape_aspect of the pattern_omit_membership is 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.4.35 planar_shape_representation   EXPRESS-G

A planar_shape_representation is a type of shape_representation that represents a direction vector in two-dimensional or three-dimensional space, and location.

EXPRESS specification:

*)
ENTITY planar_shape_representation
  SUBTYPE OF (shape_representation);
WHERE
  WR1: SIZEOF (SELF.items) = 1;
  WR2: SIZEOF (QUERY (it <* SELF.items | ('GEOMETRY_SCHEMA.PLANE' IN TYPEOF (it)))) = 1;
END_ENTITY;
(*

Formal propositions:

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

WR2: The geometric element that is used to represent the planar_shape_representation shall be a plane.

5.4.36 pocket   EXPRESS-G

A pocket is a type of feature_definition that is the representation of a volume that is removed from the base shape. This volume may be enclosed and have either a rectangular base shape that is represented by a rectangular_closed_profile or it may have a non-rectangular base shape that is represented by either an ngon_closed_profile, a rectangular_closed_profile, a closed_path_profile, or a circular_closed_profile. If the volume is not enclosed the base shape would be defined by a square_u_profile, partial_circular_profile, rounded_u_profile, vee_profile, tee_profile, or an open_path_profile. The bottom of the pocket is represented by a pocket_bottom.

NOTE    Cutout_feature, Circular_cutout, General_cutout, General_pocket, Recess, Rectangular_closed_pocket, and Rectangular_open_pocket are defined in ISO 10303-1814 [5] and define the requirement for pocket.

EXPRESS specification:

*)
ENTITY pocket
  SUBTYPE OF (feature_definition);
WHERE
  WR1: (SELF\characterized_object.description IN ['closed rectangular','open rectangular', 'complex', 'circular cutout', 'complex cutout', 'recess']);
  WR2: (SIZEOF(QUERY ( pds <* QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | ('PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)) ) | (NOT (SIZEOF(QUERY ( sa_occ <* USEDIN(pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | ((sa_occ.description = 'pocket depth occurrence') AND (SIZEOF(QUERY ( sdr <* QUERY ( sar <* USEDIN(sa_occ, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | ((sar.description = 'path feature component usage') AND (sar.name = 'pocket depth') AND (('MACHINING_FEATURE_SCHEMA.SHAPE_DEFINING_RELATIONSHIP') IN TYPEOF(sar))) ) | (('TOPOLOGY_SCHEMA.PATH_FEATURE_COMPONENT' IN TYPEOF(sdr.relating_shape_aspect)) AND (sdr.relating_shape_aspect.description ='linear')) )) = 1)) )) = 1)) )) = 0);
  WR3: SIZEOF(QUERY(pdr <* get_property_definition_representations (SELF) | ( 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF ( pdr.used_representation ) ) )) =1;
  WR4: SIZEOF( QUERY( pd <* USEDIN( SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | SIZEOF( QUERY( pdr <* USEDIN( pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND ({1 <= SIZEOF(pdr.used_representation.items) <= 2} ) )) = 1 )) = 1;
  WR5: SIZEOF( QUERY( pd <* USEDIN( SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | SIZEOF( QUERY( pdr <* USEDIN( pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND (SIZEOF( QUERY( srwp_i <* pdr.used_representation.items | (srwp_i.name = 'orientation') OR (srwp_i.name = 'fillet radius'))) = SIZEOF(pdr.used_representation.items)) )) = 1 )) = 1;
  WR6: SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (impl_rep <* QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF (pdr.used_representation)) | NOT (SIZEOF (QUERY (it <* impl_rep.used_representation.items | (SIZEOF ( ['QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF (it)) = 2) AND (it.name = 'fillet radius'))) <= 1))) = 0))) = 0;
  WR7: ((NOT (SELF\characterized_object.description IN ['complex', 'non-circular cutout','recess'])) OR (SIZEOF(QUERY ( pds <* QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | ('PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)) ) | (NOT (SIZEOF(QUERY ( sa_occ <* USEDIN(pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | ((sa_occ.description = 'boundary occurrence') AND (SIZEOF(QUERY ( sdr <* QUERY ( sar <* USEDIN(sa_occ, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | ((sar.description = 'profile usage') AND (('MACHINING_FEATURE_SCHEMA.SHAPE_DEFINING_RELATIONSHIP') IN TYPEOF(sar))) ) | ((SIZEOF([ 'MACHINING_FEATURE_SCHEMA.CIRCULAR_CLOSED_PROFILE', 'MACHINING_FEATURE_SCHEMA.NGON_CLOSED_PROFILE', 'MACHINING_FEATURE_SCHEMA.RECTANGULAR_CLOSED_PROFILE', 'MACHINING_FEATURE_SCHEMA.CLOSED_PATH_PROFILE', 'MACHINING_FEATURE_SCHEMA.SQUARE_U_PROFILE', 'MACHINING_FEATURE_SCHEMA.PARTIAL_CIRCULAR_PROFILE', 'MACHINING_FEATURE_SCHEMA.ROUNDED_U_PROFILE', 'MACHINING_FEATURE_SCHEMA.VEE_PROFILE', 'MACHINING_FEATURE_SCHEMA.TEE_PROFILE', 'MACHINING_FEATURE_SCHEMA.OPEN_PATH_PROFILE'] * TYPEOF(sdr.relating_shape_aspect)) = 1)) )) = 1)) )) = 1)) )) = 0));
  WR8: ((NOT (SELF\characterized_object.description = 'closed rectangular')) OR (SIZEOF(QUERY ( pds <* QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | ('PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)) ) | (NOT (SIZEOF(QUERY ( sa_occ <* USEDIN(pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | ((sa_occ.description = 'closed boundary occurrence') AND (SIZEOF(QUERY ( sdr <* QUERY ( sar <* USEDIN(sa_occ, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | ((sar.description = 'profile usage') AND (('MACHINING_FEATURE_SCHEMA.SHAPE_DEFINING_RELATIONSHIP') IN TYPEOF(sar))) ) | (('MACHINING_FEATURE_SCHEMA.RECTANGULAR_CLOSED_PROFILE' IN TYPEOF(sdr.relating_shape_aspect))) )) = 1)) )) = 1)) )) = 0));
  WR9: ((NOT (SELF\characterized_object.description = 'open rectangular')) OR (SIZEOF(QUERY ( pds <* QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | ('PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)) ) | (NOT (SIZEOF(QUERY ( sa_occ <* USEDIN(pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | ((sa_occ.description = 'open boundary occurrence') AND (SIZEOF(QUERY ( sdr <* QUERY ( sar <* USEDIN(sa_occ, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | ((sar.description = 'profile usage') AND (('MACHINING_FEATURE_SCHEMA.SHAPE_DEFINING_RELATIONSHIP') IN TYPEOF(sar))) ) | (('MACHINING_FEATURE_SCHEMA.SQUARE_U_PROFILE' IN TYPEOF(sdr.relating_shape_aspect))) )) = 1)) )) = 1)) )) = 0));
  WR10: (SIZEOF(QUERY ( pds <* QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | ('PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)) ) | (NOT (SIZEOF(QUERY ( sa_occ <* USEDIN(pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | ((sa_occ.description = 'bottom condition occurrence') AND (SIZEOF(QUERY ( sdr <* QUERY ( sar <* USEDIN(sa_occ, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | ((sar.description = 'pocket bottom usage') AND (('MACHINING_FEATURE_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP') IN TYPEOF(sar))) ) | (('MACHINING_FEATURE_SCHEMA.POCKET_BOTTOM' IN TYPEOF(sdr.relating_shape_aspect)) AND ('MACHINING_FEATURE_SCHEMA.POCKET' IN TYPEOF(sdr.related_shape_aspect.of_shape.definition))) )) = 1)) )) = 1)) )) = 0);
  WR11: ((NOT (SELF\characterized_object.description IN ['complex', 'non-circular cutout','recess'])) OR (SIZEOF(QUERY ( pds <* QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | ('PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)) ) | (NOT (SIZEOF(QUERY ( sa_occ <* USEDIN(pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | ((sa_occ.description = 'change in boundary occurrence') AND (SIZEOF(QUERY ( fcr <* QUERY ( sar <* USEDIN(sa_occ, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') | ((sar.description = 'taper usage') AND (('MACHINING_FEATURE_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP') IN TYPEOF(sar))) ) | (('MACHINING_FEATURE_SCHEMA.TAPER' IN TYPEOF(fcr.relating_shape_aspect)) AND ('MACHINING_FEATURE_SCHEMA.POCKET' IN TYPEOF(fcr.related_shape_aspect.of_shape.definition)) AND (fcr.related_shape_aspect.description IN ['angle taper','directed taper'])) )) = 1)) )) <= 1)) )) = 0));
  WR12: (NOT (SELF\characterized_object.description = 'circular cutout')) OR (SIZEOF (QUERY (pds <* QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF (pd)) | NOT (SIZEOF (QUERY (sa_occ <* USEDIN (pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | (sa_occ.description = 'enclosed boundary occurrence') AND (SIZEOF (QUERY (sdr <* QUERY (sar <* USEDIN (sa_occ, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | (sar.description = 'profile usage') AND ('MACHINING_FEATURE_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF (sar))) | ('MACHINING_FEATURE_SCHEMA.CIRCULAR_CLOSED_PROFILE' IN TYPEOF (sdr.relating_shape_aspect)))) = 1))) = 1))) = 0);
  WR13: (NOT (SELF\characterized_object.description IN ['circular cutout','complex cutout'])) OR (SIZEOF (QUERY (pds <* QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF (pd)) | NOT (SIZEOF (QUERY (sa_occ <* USEDIN (pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | (sa_occ.description = 'bottom condition occurrence') AND (SIZEOF (QUERY (sdr <* QUERY (sar <* USEDIN (sa_occ, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | (sar.description = 'pocket bottom usage') AND ('MACHINING_FEATURE_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF (sar))) | (('MACHINING_FEATURE_SCHEMA.POCKET_BOTTOM' IN TYPEOF (sdr.relating_shape_aspect)) AND ('MACHINING_FEATURE_SCHEMA.POCKET' IN TYPEOF (sdr.related_shape_aspect.of_shape.definition))AND (sdr.relating_shape_aspect.description = 'through') ) )) = 1))) = 1))) = 0);
  WR14: (NOT (SELF\characterized_object.description = 'recess')) OR (SIZEOF (QUERY (pds <* QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF (pd)) | NOT (SIZEOF (QUERY (sa_occ <* USEDIN (pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | (sa_occ.description = 'bottom condition occurrence') AND (SIZEOF (QUERY (sdr <* QUERY (sar <* USEDIN (sa_occ, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | (sar.description = 'pocket bottom usage') AND ('MACHINING_FEATURE_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF (sar))) | (('MACHINING_FEATURE_SCHEMA.POCKET_BOTTOM' IN TYPEOF (sdr.relating_shape_aspect)) AND ('MACHINING_FEATURE_SCHEMA.POCKET' IN TYPEOF (sdr.related_shape_aspect.of_shape.definition)) AND (sdr.relating_shape_aspect.description IN ['planar','complex']) ) )) = 1))) = 1))) = 0);
  WR15: SIZEOF(QUERY(pdr <* get_property_definition_representations (SELF) | ( 'MACHINING_FEATURE_SCHEMA.PLANAR_SHAPE_REPRESENTATION' IN TYPEOF ( pdr.used_representation ) ) AND ( pdr.used_representation.name ='maximum feature limit'))) >=0;
  WR16: ((NOT (SELF\characterized_object.description IN ['closed rectangular','open rectangular', 'complex', 'recess'])) OR (SIZEOF(QUERY ( pds <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (('PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pds)) AND (SIZEOF(QUERY ( csa <* USEDIN(pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.COMPOSITE_SHAPE_ASPECT' IN TYPEOF(csa)) AND (csa.name='uncut volume') AND (SIZEOF(QUERY ( sar <* csa.component_relationships | ((('MACHINING_FEATURE_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)) AND (SIZEOF(['MACHINING_FEATURE_SCHEMA.BOSS','MACHINING_FEATURE_SCHEMA.PROTRUSION'] * TYPEOF(sar.related_shape_aspect))=1) ) ))) = 1)) )) <= 1)) )) = 1));
  WR17: ((NOT (SELF\characterized_object.description IN ['closed rectangular','open rectangular'])) OR (SIZEOF(QUERY ( pds <* QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | ('PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)) ) | (NOT (SIZEOF(QUERY ( sa_occ <* USEDIN(pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | ((sa_occ.description = 'change in boundary occurrence') AND (SIZEOF(QUERY ( fcr <* QUERY ( sar <* USEDIN(sa_occ, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') | ((sar.description = 'taper usage') AND (('MACHINING_FEATURE_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP') IN TYPEOF(sar))) ) | (('MACHINING_FEATURE_SCHEMA.TAPER' IN TYPEOF(fcr.relating_shape_aspect)) AND ('MACHINING_FEATURE_SCHEMA.POCKET' IN TYPEOF(fcr.related_shape_aspect.of_shape.definition)) AND (fcr.related_shape_aspect.description IN ['angle taper','directed taper'])) )) >= 1)) )) <=1)) )) = 0));
END_ENTITY;
(*

Formal propositions:

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

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

WR3: The pocket shall have exactly one implicit representation.

WR4: The implicit representation of the pocket shall contain between one and two representation_items.

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

WR6: The implicit representation of the pocket shall have at most one representation_item of type measure_representation_item and length_measure_with_unit with a name of 'fillet radius'.

WR7: If the pocket has a description of 'complex', 'complex cutout', or 'recess', the pocket shall be the basis shape for exactly one shape_aspect with a description of 'boundary occurrence' that is 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, closed_path_profile, square_u_profile, partial_circular_profile, rounded_u_profile, vee_profile, tee_profile, or open_path_profile.

WR8: 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' that is the related_shape_aspect in exactly one shape_defining_relationship with a description of 'profile usage' and a relating_shape_aspect that references a rectangular_closed_profile.

WR9: 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' that is the related_shape_aspect in exactly one shape_defining_relationship with a description of 'profile usage' and a relating_shape_aspect that references a square_u_profile.

WR10: The pocket shall be the basis shape for exactly one shape_aspect with a description of 'bottom condition occurrence' that is the related_shape_aspect in exactly one feature_component_relationship with a description of 'pocket bottom usage' and a relating_shape_aspect that references a pocket_bottom.

WR11: If the pocket has a description of 'complex', 'complex cutout', or 'recess', the pocket 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 'angle taper' or 'directed taper'.

WR12: If the pocket has a description of 'circular cutout', the pocket 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' and a relating_shape_aspect that references a circular_closed_profile.

WR13: If the pocket has a description of 'circular cutout', or 'complex cutout', the pocket shall be the basis shape for exactly one shape_aspect with a description of 'bottom condition occurrence' that is the related_shape_aspect in exactly one feature_component_relationship with a description of 'pocket bottom usage' and a relating_shape_aspect that references a pocket_bottom with a description of 'through'.

WR14: If the pocket has a description of 'recess' the pocket shall be the basis shape for exactly one shape_aspect with a description of 'bottom condition occurrence' that is the related_shape_aspect in exactly one feature_component_relationship with a description of 'pocket bottom usage' and a relating_shape_aspect that references a pocket_bottom with a description of 'planar' or 'complex'.

WR15: The pocket shall have at most one planar_shape_representation with a name of 'maximum feature limit'.

WR16: The pocket shall have the uncut volume defined by exactly one product_definition_shape that is referenced by zero or more composite_shape_aspect with name of 'uncut volume' through the of_shape attribute that references a feature_component_relationship through the component_relationships attribute that references either a boss or a protrusion.

WR17: If the pocket has a description of 'open rectangular' or 'closed rectangular' the pocket shall be the basis shape for one or more 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 'angle taper' or 'directed taper'.

Informal propositions:

IP1: The volume removal of the pocket shall be in the Z direction.

IP2: The placement of the circular_closed_profile, ngon_closed_profile, rectangular_closed_profile, closed_path_profile, square_u_profile, partial_circular_profile, rounded_u_profile, vee_profile, tee_profile, or open_path_profile that defines the shape of the pocket shall be with the origin, X direction, and Y direction equal to that of the pocket.

IP3: If the description of the pocket is 'open rectangular', the origin, X direction, Y direction of the square_u_profile shall be equal to that of the pocket.

IP4: If the description of the pocket is 'open rectangular'or 'closed rectangular' , and the number of taper usages is greater than one, then the pocket side that is intersected by a plane in the X direction shall have the first taper applied. Additional tapers shall be applied to the pocket walls going in a clockwise direction from the X direction.

5.4.37 pocket_bottom   EXPRESS-G

A pocket_bottom is a type of shape_aspect that is the representation of the end condition for a pocket feature_definition.

NOTE    Pocket_bottom_condition, General_pocket_bottom_condition, Planar_pocket_bottom_condition, and Through_pocket_bottom_condition are defined in ISO 10303-1814 [5] and define the requirement for pocket_bottom.

EXPRESS specification:

*)
ENTITY pocket_bottom
  SUBTYPE OF (shape_aspect);
WHERE
  WR1: 'MACHINING_FEATURE_SCHEMA.FEATURE_COMPONENT_DEFINITION' IN TYPEOF (SELF.of_shape.definition);
  WR2: SELF.description IN ['planar', 'complex', 'through'];
  WR3: ((NOT (SELF.description = 'planar')) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('MACHINING_FEATURE_SCHEMA.DIRECTION_SHAPE_REPRESENTATION') IN TYPEOF(pdr.used_representation)) AND (pdr.used_representation.name = 'floor normal') )) = 1)) )) = 0));
  WR4: ((NOT (SELF.description = 'planar')) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('MACHINING_FEATURE_SCHEMA.LOCATION_SHAPE_REPRESENTATION') IN TYPEOF(pdr.used_representation)) AND (pdr.used_representation.name = 'floor location'))) = 1)) )) = 0));
  WR5: ((NOT (SELF.description = 'complex')) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ('MACHINING_FEATURE_SCHEMA.FACE_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)) AND (pdr.used_representation.name = 'floor face') )) = 1)) )) = 0));
  WR6: (NOT (SELF.description IN ['planar', 'complex']) OR (SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF (pdr.used_representation))) = 1))) = 0));
  WR7: (NOT (SELF.description IN ['planar', 'complex']) OR (SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (impl_rep <* QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF (pdr.used_representation)) | NOT (SIZEOF (impl_rep.used_representation.items) <= 1) )) = 0))) = 0));
  WR8: (NOT (SELF.description = 'through') OR (SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF (pdr.used_representation))) = 0))) = 0));
  WR9: (NOT (SELF.description IN ['planar', 'complex'])) OR (SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (impl_rep <* QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF (pdr.used_representation)) | NOT (SIZEOF (QUERY (it <* impl_rep.used_representation.items | (SIZEOF (['QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF (it)) = 2) AND (it.name = 'radius'))) <= 1))) = 0))) = 0);
  WR10: SIZEOF (QUERY (fcr <* QUERY (sar <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') | (sar.description = 'pocket bottom usage') AND ('MACHINING_FEATURE_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF (sar))) | ((fcr.related_shape_aspect.description = 'bottom condition occurrence') AND ('MACHINING_FEATURE_SCHEMA.POCKET' IN TYPEOF(fcr.related_shape_aspect.of_shape.definition)) AND ('MACHINING_FEATURE_SCHEMA.POCKET_BOTTOM' IN TYPEOF(fcr.relating_shape_aspect)) ) )) >= 1;
  WR11: ((NOT (SELF.description IN ['planar','complex'])) OR (SIZEOF (QUERY (fcr <* QUERY (sar <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') | (sar.description = 'pocket bottom usage') AND ('MACHINING_FEATURE_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF (sar))) | (fcr.related_shape_aspect.description = 'bottom condition occurrence') AND (fcr.related_shape_aspect.name IN ['pocket depth start', 'pocket depth end']) )) = 0));
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 description of the pocket_bottom is 'planar', the pocket_bottom shall have exactly one direction_shape_representation with a name of 'floor normal'.

WR4: If the description of the pocket_bottom is 'planar', the pocket_bottom shall have exactly one location_shape_representation with a name of 'floor location'.

WR5: If the description of the pocket_bottom is 'complex', the pocket_bottom shall have exactly one face_shape_representation with a name of 'floor'.

WR6: If the description of the pocket_bottom is 'planar' or 'complex', the pocket_bottom shall have its implicit representation specified by exactly one shape_representation_with_parameters.

WR7: If the description of the pocket_bottom is 'planar' or 'complex', the pocket_bottom shall be represented implicitly by at most one representation_item.

WR8: If the description of the pocket_bottom is 'through', the pocket_bottom shall have its implicit representation specified by exactly one shape_representation_with_parameters.

WR9: If the description of the pocket_bottom is 'planar' or 'complex', at most one representation_item used for the implicit representation of the pocket_bottom shall be of type measure_representation_item and length_measure_with_unit with a name of 'radius'.

WR10: The pocket_bottom shall be the relating_shape_aspect in at least one feature_component_relationship with a description of 'pocket bottom usage' in which the related_shape_aspect is an aspect of the shape of a pocket with a description of 'bottom condition occurrence'.

WR11: If the description of the pocket_bottom is 'planar' or 'complex', the pocket_bottom shall be the relating_shape_aspect in at least one feature_component_relationship with a description of 'pocket bottom usage' and with a name of 'pocket depth start', or 'pocket depth end'.

Informal propositions:

IP1: The location of the pocket_bottom shall be at the approximate centre of the mating pocket feature.

IP2: The pocket_bottom shall be defined with the volume removal in Z direction of the pocket feature.

5.4.38 profile_floor   EXPRESS-G

A profile_floor is a type of shape_aspect that is the representation of the bottom condition for an outside_profile feature_definition.

NOTE    Profile_floor, General_profile_floor, and Planar_profile_floor are defined in ISO 10303-1814 [5] and define the requirement for profile_floor.

EXPRESS specification:

*)
ENTITY profile_floor
  SUBTYPE OF (shape_aspect);
WHERE
  WR1: 'MACHINING_FEATURE_SCHEMA.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 (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF (pdr.used_representation))) = 1))) = 0));
  WR4: (NOT (SELF.description IN ['planar', 'complex'])) OR (SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (impl_rep <* QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF (pdr.used_representation)) | NOT (SIZEOF (impl_rep.used_representation.items) >= 1)AND (SIZEOF (impl_rep.used_representation.items) <= 2))) = 0))) = 0);
  WR5: (NOT (SELF.description = 'through') OR (SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF (pdr.used_representation))) = 0))) = 0));
  WR6: (NOT (SELF.description IN ['planar', 'complex'])) OR (SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (impl_rep <* QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF (pdr.used_representation)) | NOT (SIZEOF (QUERY (it <* impl_rep.used_representation.items | (SIZEOF (['QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF (it)) = 2) AND (it.name = 'radius'))) = 1))) = 0))) = 0);
  WR7: SIZEOF (QUERY (fcr <* QUERY (sar <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') | (sar.description = 'profile floor usage') AND ('MACHINING_FEATURE_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF (sar))) | (('MACHINING_FEATURE_SCHEMA.OUTSIDE_PROFILE' IN TYPEOF (fcr.related_shape_aspect.of_shape.definition))AND ('MACHINING_FEATURE_SCHEMA.PROFILE_FLOOR' IN TYPEOF (fcr.relating_shape_aspect))) )) >= 1;
  WR8: ((NOT (SELF.description IN ['planar','complex'])) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (( 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr. used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | (('QUALIFIED_MEASURE_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND (it.name = 'shape profile floor orientation') AND (it.description IN ['shape profile start','shape profile end'])) )) = 1)) )) = 0)) )) = 0));
  WR9: (NOT (SELF.description = 'complex')) OR (SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ('MACHINING_FEATURE_SCHEMA.FACE_SHAPE_REPRESENTATION' IN TYPEOF (pdr.used_representation)) AND (pdr.used_representation.name='floor'))) = 1))) = 1);
  WR10: (NOT (SELF.description = 'planar')) OR (SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ('MACHINING_FEATURE_SCHEMA.PLANAR_SHAPE_REPRESENTATION' IN TYPEOF (pdr.used_representation)) AND (pdr.used_representation.name='floor'))) = 1))) = 1);
END_ENTITY;
(*

Formal propositions:

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

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

WR3: If the description of the profile_floor is 'planar' or 'complex', the profile_floor shall have its implicit representation specified by exactly one shape_representation_with_parameters.

WR4: If the description of the profile_floor is 'planar' or 'complex', the profile_floor shall be represented implicitly by at least one and at most two representation_items.

WR5: If the description of the profile_floor is 'through', the profile_floor shall have its implicit representation specified by exactly zero shape_representation_with_parameters.

WR6: If the description of the profile_floor is 'planar' or 'complex', at most one representation_item used for the implicit representation of the profile_floor shall be of type measure_representation_item and length_measure_with_unit with a name of 'radius'.

WR7: The profile_floor shall be the relating_shape_aspect in at least one feature_component_relationship with a description of 'profile floor usage' in which the related_shape_aspect is an aspect of the shape of a outside_profile.

WR8: If the description of the profile_floor is 'planar' or 'complex', the implicit representation of the profile_floor shall have exactly one representation_item in its items set which is a descriptive_representation_item with a name of 'shape profile floor orientation' and a description of either 'shape profile start', or 'shape profile end'.

WR9: If the description of the profile_floor is 'complex', the profile_floor shall have exactly one face_shape_representation with a name of 'floor'.

WR10: If the description of the profile_floor is 'planar', the profile_floor shall have exactly one planar_shape_representation with a name of 'floor'.

5.4.39 protrusion   EXPRESS-G

A protrusion is a type of feature_definition that is the representation of a volume that is extruding from the base shape. This volume shall be enclosed, except for the mating surface which may or may not be included in the definition of the volume, and have a shape defining representation.

NOTE    Protrusion is defined in ISO 10303-1814 [5] and defines the requirement for protrusion.

EXPRESS specification:

*)
ENTITY protrusion
  SUBTYPE OF (feature_definition);
WHERE
  WR1: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(impl_rep.used_representation.items) = 1)) )) = 0)) )) = 0);
  WR2: (SIZEOF(QUERY ( pds <* QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | ('PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)) ) | (NOT (SIZEOF(QUERY ( sa_occ <* USEDIN(pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | ((sa_occ.description = 'shape volume occurrence') AND (SIZEOF(QUERY ( sdr <* QUERY ( sar <* USEDIN(sa_occ, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | ((sar.description = 'volume shape usage') AND (('MACHINING_FEATURE_SCHEMA.SHAPE_DEFINING_RELATIONSHIP') IN TYPEOF(sar))) ) | (sdr.relating_shape_aspect.description = 'volume shape') )) = 1)) )) = 1)) )) = 0);
  WR3: SIZEOF(QUERY(pdr <* get_property_definition_representations (SELF) | ( 'MACHINING_FEATURE_SCHEMA.PLANAR_SHAPE_REPRESENTATION' IN TYPEOF ( pdr.used_representation ) ) AND ( pdr.used_representation.name ='maximum feature limit'))) >=0;
END_ENTITY;
(*

Formal propositions:

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

WR2: The protrusion shall be the basis shape for exactly one shape_aspect with a description of 'shape volume occurrence' that is the related_shape_aspect in exactly one shape_defining_relationship with a description of 'volume shape usage' and relating_shape_aspect with a description of 'volume shape'.

WR3: The protrusion shall have at most one planar_shape_representation with a name of 'maximum feature limit'.

Informal propositions:

IP1: The representation of the shape_aspect that is the relating_shape_aspect in the shape_defining_relationship shall define a volume of the protrusion.

IP2: The location of the protrusion shall be at a position on the base of the feature where it mates with the part.

IP3: The Z direction of the protrusion shall be with in a direction away from the part.

5.4.40 rectangular_closed_profile   EXPRESS-G

A rectangular_closed_profile is a type of shape_aspect that represents an enclosed 2D area with location and orientation. The enclosed area is defined by four straight sides with opposite sides equal in length. The location is defined to be at the centre of the rectangle, and the orientation of the rectangular_closed_profile is the X-Y plane with the X direction along the length of the rectangle and the Y direction orthogonal to the X direction in the direction of the width.

NOTE    Rectangular_closed_profile is defined in ISO 10303-1814 [5] and defines the requirement for rectangular_closed_profile.

EXPRESS specification:

*)
ENTITY rectangular_closed_profile
  SUBTYPE OF (shape_aspect);
WHERE
  WR1: 'MACHINING_FEATURE_SCHEMA.FEATURE_COMPONENT_DEFINITION' IN TYPEOF (SELF.of_shape.definition);
  WR2: SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF (pdr.used_representation))) = 1))) = 0;
  WR3: SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (impl_rep <* QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF (pdr.used_representation)) | NOT ((SIZEOF (impl_rep.used_representation.items) >= 3) AND (SIZEOF(impl_rep.used_representation.items) <= 4)))) = 0))) = 0;
  WR4: SIZEOF( QUERY( pd <* USEDIN( SELF,'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | SIZEOF( QUERY( pdr <* USEDIN( pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND (SIZEOF( QUERY( srwp_i <* pdr.used_representation.items | (srwp_i.name = 'orientation') OR (srwp_i.name = 'length') OR (srwp_i.name = 'width') OR (srwp_i.name = 'corner radius') )) = SIZEOF(pdr.used_representation.items)) )) = 1 )) = 1;
  WR5: SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (impl_rep <* QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF (pdr.used_representation)) | NOT (SIZEOF (QUERY (it <* impl_rep.used_representation.items | ('GEOMETRY_SCHEMA.PLACEMENT' IN TYPEOF (it)) AND (it.name = 'orientation'))) = 1))) = 0))) = 0;
  WR6: SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (impl_rep <* QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF (pdr.used_representation)) | NOT (SIZEOF (QUERY (it <* impl_rep.used_representation.items | (SIZEOF (['QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF (it)) = 2) AND (it.name = 'width'))) = 1))) = 0))) = 0;
  WR7: SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (impl_rep <* QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF (pdr.used_representation)) | NOT (SIZEOF (QUERY (it <* impl_rep.used_representation.items | (SIZEOF (['QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF (it)) = 2) AND (it.name = 'length'))) = 1))) = 0))) = 0;
  WR8: SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (impl_rep <* QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF (pdr.used_representation)) | NOT (SIZEOF (QUERY (it <* impl_rep.used_representation.items | (SIZEOF (['QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF (it)) = 2) AND (it.name = 'corner radius'))) <= 1))) = 0))) = 0;
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 relationship to a shape_representation_with_parameters.

WR3: The shape_representation_with_parameters that represents the rectangular_closed_profile shall contain at least three and at most 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 with a name of 'orientation', 'length', 'width', and '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 be of type measure_representation_item and length_measure_with_unit with a name of 'corner radius'.

Informal propositions:

IP1: The location of the rectangular_closed_profile shall be defined at the centre of the rectangle.

IP2: The rectangular_closed_profile shall be defined in the X-Y plane with the length in the X direction and the width in the Y direction of the rectangle. The X direction is orthogonal to the Y direction.

5.4.41 rectangular_pattern   EXPRESS-G

A rectangular_pattern is a type of replicate_feature that relates a base feature and one or more shape_aspects which are the placement of the base feature at a specified row and column location on the base part. A position is defined on the part and more than one base features are equally place in rows and columns.

NOTE    Rectangular_pattern is defined in ISO 10303-1814 [5] and defines the requirement for rectangular_pattern.

EXPRESS specification:

*)
ENTITY rectangular_pattern
  SUBTYPE OF (replicate_feature);
WHERE
  WR1: (SIZEOF(QUERY ( pds <* QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | ('PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)) ) | (NOT (SIZEOF(QUERY ( sa_occ <* USEDIN (pds,'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | ((SIZEOF(QUERY ( sdr <* QUERY ( sar <* USEDIN(sa_occ, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' + 'RELATING_SHAPE_ASPECT') | ((('MACHINING_FEATURE_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP') IN TYPEOF(sar))) ) | ('PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT' IN TYPEOF(sdr.related_shape_aspect)) )) = 1)) )) <= 5)) )) = 0);
  WR2: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('MACHINING_FEATURE_SCHEMA.DIRECTION_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)) AND (pdr.used_representation.name = 'row layout direction') ) )) = 1)) )) = 0);
  WR3: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('MACHINING_FEATURE_SCHEMA.DIRECTION_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)) AND (pdr.used_representation.name = 'column layout direction')) )) = 1)) )) = 0);
  WR4: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) )) = 1)) )) = 0);
  WR5: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(impl_rep.used_representation.items) = 5)) )) = 0)) )) = 0);
  WR6: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | (('QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND ('MEASURE_SCHEMA.COUNT_MEASURE' IN TYPEOF(it\measure_with_unit.value_component)) AND (it.name = 'number of rows')) )) = 1)) )) = 0)) )) = 0);
  WR7: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | (('QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND ('MEASURE_SCHEMA.COUNT_MEASURE' IN TYPEOF(it\measure_with_unit.value_component)) AND (it.name = 'number of columns')) )) = 1)) )) = 0)) )) = 0);
  WR8: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF([ 'QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'row spacing')) )) = 1)) )) = 0)) )) = 0);
  WR9: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF([ 'QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'column spacing'))))= 1)) )) = 0)) )) = 0);
  WR10: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | (('GEOMETRY_SCHEMA.PLACEMENT' IN TYPEOF(it)) AND (it.name = 'orientation')) )) = 1)) )) = 0)) )) = 0);
END_ENTITY;
(*

Formal propositions:

WR1: The rectangular_pattern shall be the relating_shape_aspect in no more than five shape_aspect_relationships.

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

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

WR4: The rectangular_pattern shall have exactly one implicit representation.

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

WR6: 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'.

WR7: 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'.

WR8: 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'.

WR9: 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'.

WR10: The implicit representation of the rectangular_pattern shall contain exactly one representation_item of type placement with a name of 'orientation'.

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.4.42 removal_volume   EXPRESS-G

A removal_volume is a type of feature_definition that is the representation of a volume that is removed from the base shape. This volume may or may not be enclosed but in either case shall have a shape defining representation.

NOTE    General_removal_volume is defined in ISO 10303-1814 [5] and defines the requirement for removal_volume.

EXPRESS specification:

*)
ENTITY removal_volume
  SUBTYPE OF (feature_definition);
WHERE
  WR1: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(impl_rep.used_representation.items) = 1)) )) = 0)) )) = 0);
  WR2: (SIZEOF(QUERY ( pds <* QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | ('PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)) ) | (NOT (SIZEOF(QUERY ( sa_occ <* USEDIN(pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | ((sa_occ.description = 'shape volume occurrence') AND (SIZEOF(QUERY ( sdr <* QUERY ( sar <* USEDIN(sa_occ, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' + 'RELATED_SHAPE_ASPECT') | ((sar.description = 'volume shape usage') AND (('MACHINING_FEATURE_SCHEMA.SHAPE_DEFINING_RELATIONSHIP') IN TYPEOF(sar))) ) | (sdr.relating_shape_aspect.description = 'volume shape') )) = 1)) )) = 1)) )) = 0);
END_ENTITY;
(*

Formal propositions:

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

WR2: The removal_volume shall be the basis shape for exactly one shape_aspect with a description of 'shape volume occurrence' that is the related_shape_aspect in exactly one shape_defining_relationship with a description of 'volume shape usage' and a relating_shape_aspect with a description of 'volume shape'.

Informal propositions:

IP1: The location of the removal_volume shall be defined at the bottom and approximate centre of the removal_volume.

IP2: The Z direction of the removal_volume shall be in the direction of volume removal.

5.4.43 replicate_feature   EXPRESS-G

A replicate_feature is a type of feature_definition that is either a feature_definition or another replicate_feature for the purpose of multiple representations. A replicate_feature may be either a circular_pattern or a rectangular_pattern, or a feature_pattern.

EXPRESS specification:

*)
ENTITY replicate_feature
  SUPERTYPE OF (ONEOF (circular_pattern,
                       rectangular_pattern,
                       feature_pattern))
  SUBTYPE OF (feature_definition);
WHERE
  WR1: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (( 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr. used_representation)) )) = 1)) )) = 0);
  WR2: (SIZEOF(QUERY ( fcr <* QUERY ( sar <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' + 'RELATING_SHAPE_ASPECT') | ('MACHINING_FEATURE_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)) ) | ((SIZEOF(['MACHINING_FEATURE_SCHEMA.REPLICATE_FEATURE', 'SHAPE_ASPECT_DEFINITION_SCHEMA.INSTANCED_FEATURE'] * TYPEOF(fcr.related_shape_aspect)) >= 1) AND (fcr.name = 'pattern basis')) )) = 1);
  WR3: ((SIZEOF(QUERY ( sar <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' + 'RELATING_SHAPE_ASPECT') | (NOT ('MACHINING_FEATURE_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar))) )) + SIZEOF(QUERY ( sar <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' + 'RELATED_SHAPE_ASPECT') | (NOT ('MACHINING_FEATURE_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar))) ))) = 0);
END_ENTITY;
(*

Formal propositions:

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

WR2: The replicate_feature shall be the relating_shape_aspect in exactly one shape_aspect_relationship that is of type feature_component_relationship with a name of 'pattern basis' and a related_shape_aspect that is either of type replicate_feature or instanced_feature.

WR3: A replicate_feature shall be referenced by shape_aspect_relationships only if they are of type feature_component_relationship or shape_defining_relationship.

5.4.44 revolved_profile   EXPRESS-G

A revolved_profile is a type of feature_definition that is the representation of a volume that is removed from the base shape. The volume of removal is defined by either sweeping a linear_profile about an axis.

NOTE 1   Revolved_feature, General_revolution, Groove, Revolved_flat, and Revolved_round are defined in ISO 10303-1814 [5] and define the requirement for revolved_profile.

EXPRESS specification:

*)
ENTITY revolved_profile
  SUBTYPE OF (feature_definition);
WHERE
  WR1: (SELF\characterized_object.description IN ['groove','flat','round','open profile']);
  WR2: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(impl_rep.used_representation.items) = 2)) )) = 0)) )) = 0);
  WR3: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF([ 'QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'radius')))) = 1)) )) = 0)) )) = 0);
  WR4: SIZEOF(QUERY(pdr <* get_property_definition_representations (SELF) | ( 'MACHINING_FEATURE_SCHEMA.DIRECTION_SHAPE_REPRESENTATION' IN TYPEOF ( pdr.used_representation ) ) AND ( pdr.used_representation.name ='removal direction'))) =1;
  WR5: ((NOT (SELF\characterized_object.description = 'open profile')) OR (SIZEOF(QUERY ( pds <* QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | ('PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)) ) | (NOT (SIZEOF(QUERY ( sa_occ <* USEDIN(pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | ((sa_occ.description = 'outer edge shape occurrence') AND (SIZEOF(QUERY ( sdr <* QUERY ( sar <* USEDIN(sa_occ, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | ((sar.description = 'profile usage') AND (('MACHINING_FEATURE_SCHEMA.SHAPE_DEFINING_RELATIONSHIP') IN TYPEOF(sar))) ) | (('MACHINING_FEATURE_SCHEMA.OPEN_PATH_PROFILE' IN TYPEOF(sdr.relating_shape_aspect)) AND (sdr.relating_shape_aspect.description = 'outer edge shape')) )) = 1)) )) = 1)) )) = 0));
  WR6: (NOT (SELF\characterized_object.description = 'flat')) OR (SIZEOF(QUERY ( pds <* QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)) ) | (NOT (SIZEOF(QUERY ( sa_occ <* USEDIN(pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | (( sa_occ.description = 'flat edge shape occurrence') AND (SIZEOF(QUERY ( sdr <* QUERY ( sar <* USEDIN(sa_occ, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | ((sar.description = 'profile usage') AND (('MACHINING_FEATURE_SCHEMA.SHAPE_DEFINING_RELATIONSHIP') IN TYPEOF(sar))) ) | (('MACHINING_FEATURE_SCHEMA.LINEAR_PROFILE' IN TYPEOF(sdr.relating_shape_aspect)) AND (sdr.relating_shape_aspect.description = 'flat edge shape')) )) = 1)) )) = 1)) )) = 0);
  WR7: ((NOT (SELF\characterized_object.description = 'round')) OR (SIZEOF(QUERY ( pds <* QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | ('PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)) ) | (NOT (SIZEOF(QUERY ( sa_occ <* USEDIN(pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | ((sa_occ.description = 'rounded edge shape occurrence') AND (SIZEOF(QUERY ( sdr <* QUERY ( sar <* USEDIN(sa_occ, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | ((sar.description = 'profile usage') AND (('MACHINING_FEATURE_SCHEMA.SHAPE_DEFINING_RELATIONSHIP') IN TYPEOF(sar))) ) | (('MACHINING_FEATURE_SCHEMA.PARTIAL_CIRCULAR_PROFILE' IN TYPEOF(sdr.relating_shape_aspect)) AND (sdr.relating_shape_aspect.description = 'rounded edge shape')) )) = 1)) )) = 1)) )) = 0));
  WR8: ((NOT (SELF\characterized_object.description = 'groove')) OR (SIZEOF(QUERY ( pds <* QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | ('PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)) ) | (NOT (SIZEOF(QUERY ( sa_occ <* USEDIN(pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | ((sa_occ.description = 'sweep occurrence') AND (SIZEOF(QUERY ( sdr <* QUERY ( sar <* USEDIN(sa_occ, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | ((sar.description = 'profile usage') AND (('MACHINING_FEATURE_SCHEMA.SHAPE_DEFINING_RELATIONSHIP') IN TYPEOF(sar))) ) | ((SIZEOF(['MACHINING_FEATURE_SCHEMA.SQUARE_U_PROFILE', 'MACHINING_FEATURE_SCHEMA.PARTIAL_CIRCULAR_PROFILE', 'MACHINING_FEATURE_SCHEMA.ROUNDED_U_PROFILE', 'MACHINING_FEATURE_SCHEMA.VEE_PROFILE', 'MACHINING_FEATURE_SCHEMA.TEE_PROFILE', 'MACHINING_FEATURE_SCHEMA.OPEN_PATH_PROFILE'] * TYPEOF(sdr.relating_shape_aspect)) = 1) AND (sdr.relating_shape_aspect.description = 'sweep')) )) = 1)) )) = 1)) )) = 0));
  WR9: SIZEOF(QUERY(pdr <* get_property_definition_representations (SELF) | ( 'MACHINING_FEATURE_SCHEMA.PLANAR_SHAPE_REPRESENTATION' IN TYPEOF ( pdr.used_representation ) ) AND ( pdr.used_representation.name ='maximum feature limit'))) >=0;
END_ENTITY;
(*

Formal propositions:

WR1: The revolved_profile shall have a description of 'groove', 'flat', 'round', or 'open profile'.

WR2: The revolved_profile shall have an implicit representation that contains exactly two representation_items in its set of items.

WR3: The revolved_profile shall contain exactly one representation_item in its set of items which is a measure_representation_item and length_measure_with_unit with a name of 'radius'.

WR4: The revolved_profile shall have exactly one direction_shape_representation with a name of 'removal direction'.

WR5: If the revolved_profile has a description of 'open profile', the revolved_profile shall be the basis shape for exactly one shape_aspect with a description of 'outer edge shape occurrence' that is the related_shape_aspect in exactly one shape_defining_relationship with a description of 'profile usage' and a relating_shape_aspect that references an open_path_profile with a description of 'outer edge shape'.

WR6: If the revolved_profile has a description of 'flat', the revolved_profile shall be the basis shape for exactly one shape_aspect with a description of 'flat edge occurrence' that is the related_shape_aspect in exactly one shape_defining_relationship with a description of 'profile usage' and a relating_shape_aspect that references a linear_profile with a description of 'flat edge shape'.

WR7: If the revolved_profile has a description of 'round', the revolved_profile shall be the basis shape for exactly one shape_aspect with a description of 'rounded edge shape occurrence' that is the related_shape_aspect in exactly one shape_defining_relationship with a description of 'profile usage' and a relating_shape_aspect that references an partial_circular_profile with a description of 'rounded edge shape'.

WR8: If the revolved_profile has a description of 'groove', the revolved_profile shall be the basis shape for exactly one shape_aspect with a description of 'sweep occurrence' that is the related_shape_aspect in exactly one shape_defining_relationship with a description of 'profile usage' and a relating_shape_aspect that references a square_u_profile, partial_circular_profile, rounded_u_profile, vee_profile, tee_profile, or open_path_profile with a description of 'sweep'.

WR9: The revolved_profile shall have at most one planar_shape_representation with a name of 'maximum feature limit'.

Informal propositions:

IP1: If the orientation of the revolved_profile causes the feature to be self intersecting, the intersecting edges shall be trimmed at the axis of revolution.

IP2: If the description of the revolved_profile is 'open profile', then the placement of the open_path_profile that defines the shape of the revolved_profile shall be with the origin, x direction, and y direction equal to that of the revolved_profile.

IP3: If the description of the revolved_profile is 'groove', then the placement of the linear_profile, square_u_profile, partial_circular_profile, rounded_u_profile, vee_profile, tee_profile, or open_path_profile that defines the shape of the revolved_profile shall be placed a specified distance away from the origin of the revolved_profile along the X direction.

NOTE 2   The orientation of the linear_profile, square_u_profile, partial_circular_profile, rounded_u_profile, vee_profile, tee_profile, or open_path_profile is independent of the origin of the revolved_profile. The revolved_profile may be defined on different faces of a part dependent upon the orientation of the profile.

IP4: If the description of the revolved_profile is 'flat', then the placement of the linear_profile that defines the shape of the revolved_profile shall be placed a specified distance away from the origin of the revolved_profile along the X direction. The Y direction of the linear_profile shall be equal to that of the revolved_profile. The X direction and Z direction of the linear_profile shall be independent from that of the revolved_profile.

IP5: If the description of the revolved_profile is 'round', then the placement of the partial_circular_profile that defines the shape of the revolved_profile shall be placed a specified distance away from the origin of the revolved_profile along the X direction. The Z direction of the partial_circular_profile shall be equal to the Y direction of the revolved_profile. The X direction and Y direction of the partial_circular_profile shall be independent from that of the revolved_profile.

5.4.45 rib_top   EXPRESS-G

A rib_top is a type of feature_definition that is the representation of a volume that is removed from the top of a shape. The floor of the rib_top is represented by a rib_top_floor.

NOTE    Rib_top is defined in ISO 10303-1814 [5] and defines the requirement for rib_top.

EXPRESS specification:

*)
ENTITY rib_top
  SUBTYPE OF (feature_definition);
WHERE
  WR1: SIZEOF (QUERY (pds <* QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF (pd)) | NOT (SIZEOF (QUERY (sa_occ <* USEDIN (pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | (sa_occ.description = 'rib top condition occurrence') AND (SIZEOF (QUERY (sdr <* QUERY (sar <* USEDIN (sa_occ, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | (sar.description = 'rib top usage') AND ('MACHINING_FEATURE_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF (sar))) | (('MACHINING_FEATURE_SCHEMA.RIB_TOP_FLOOR' IN TYPEOF (sdr.relating_shape_aspect)) AND ('MACHINING_FEATURE_SCHEMA.RIB_TOP' IN TYPEOF (sdr.related_shape_aspect.of_shape.definition)) ) )) = 1))) = 1))) = 0;
  WR2: SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ('MACHINING_FEATURE_SCHEMA.DIRECTION_SHAPE_REPRESENTATION' IN TYPEOF (pdr.used_representation))AND (pdr.used_representation.name = 'removal direction'))) = 1))) = 1;
  WR3: SIZEOF(QUERY(pdr <* get_property_definition_representations (SELF) | ( 'MACHINING_FEATURE_SCHEMA.PLANAR_SHAPE_REPRESENTATION' IN TYPEOF ( pdr.used_representation ) ) AND ( pdr.used_representation.name ='maximum feature limit'))) >=0;
END_ENTITY;
(*

Formal propositions:

WR1: The rib_top shall be the basis shape for exactly one shape_aspect with a description of 'rib top condition occurrence' that is the related_shape_aspect in exactly one feature_component_relationship with a description of 'rib top usage' and a relating_shape_aspect that references a rib_top_floor.

WR2: The rib_top shall have exactly one direction_shape_representation with a name of 'removal direction'.

WR3: The rib_top shall have at most one planar_shape_representation with a name of 'maximum feature limit'.

5.4.46 rib_top_floor   EXPRESS-G

A rib_top_floor is a type of shape_aspect that is the representation of the floor condition for a rib_top feature_definition.

NOTE    Rib_top_floor is defined in ISO 10303-1814 [5] and defines the requirement for rib_top_floor.

EXPRESS specification:

*)
ENTITY rib_top_floor
  SUBTYPE OF (shape_aspect);
WHERE
  WR1: 'MACHINING_FEATURE_SCHEMA.FEATURE_COMPONENT_DEFINITION' IN TYPEOF (SELF.of_shape.definition);
  WR2: SELF.description IN ['planar', 'complex'];
  WR3: SIZEOF (QUERY (fcr <* QUERY (sar <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') | (sar.description = 'rib top usage') AND ('MACHINING_FEATURE_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF (sar))) | ((fcr.related_shape_aspect.description = 'rib top condition occurrence') AND ('MACHINING_FEATURE_SCHEMA.RIB_TOP' IN TYPEOF (fcr.related_shape_aspect.of_shape.definition)) AND ('MACHINING_FEATURE_SCHEMA.RIB_TOP_FLOOR' IN TYPEOF (fcr.relating_shape_aspect)) ) )) >= 1;
  WR4: (NOT (SELF.description = 'complex')) OR (SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ('MACHINING_FEATURE_SCHEMA.FACE_SHAPE_REPRESENTATION' IN TYPEOF (pdr.used_representation))AND (pdr.used_representation.name = 'rib top face'))) = 1))) = 0);
  WR5: (NOT (SELF.description = 'planar')) OR (SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ('MACHINING_FEATURE_SCHEMA.PLANAR_SHAPE_REPRESENTATION' IN TYPEOF (pdr.used_representation))AND (pdr.used_representation.name = 'rib top face'))) = 1))) = 0);
  WR6: (NOT (SELF.description = 'planar')) OR (SIZEOF (QUERY (pds <* QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF (pd)) | NOT (SIZEOF (QUERY (sa_occ <* USEDIN (pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | (sa_occ.description = 'boundary occurrence') AND (SIZEOF (QUERY (sdr <* QUERY (sar <* USEDIN (sa_occ, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | (sar.description = 'profile usage') AND ('MACHINING_FEATURE_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF (sar))) | (SIZEOF (['MACHINING_FEATURE_SCHEMA.CIRCULAR_CLOSED_PROFILE', 'MACHINING_FEATURE_SCHEMA.NGON_CLOSED_PROFILE', 'MACHINING_FEATURE_SCHEMA.RECTANGULAR_CLOSED_PROFILE', 'MACHINING_FEATURE_SCHEMA.CLOSED_PATH_PROFILE'] * TYPEOF (sdr.relating_shape_aspect)) = 1) AND (sdr.relating_shape_aspect.description = 'rib top floor boundary'))) = 1))) = 1))) = 0);
END_ENTITY;
(*

Formal propositions:

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

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

WR3: The rib_top_floor shall be the relating_shape_aspect in at least one feature_component_relationship with a description of 'rib top usage' in which the related_shape_aspect is an aspect of the shape of a rib_top with a description of 'rib top condition occurrence'.

WR4: If the description of the rib_top_floor is 'complex', the rib_top_floor shall have exactly one face_shape_representation with a name of 'rib top face'.

WR5: If the description of the rib_top_floor is 'planar', the rib_top_floor shall have exactly one planar_shape_representation with a name of 'rib top face'.

WR6: If the rib_top_floor has a description of 'planar', the boss shall be the basis shape for exactly one shape_aspect with a description of 'boundary occurrence' that is the related_shape_aspect in exactly one feature_component_relationship with a description of 'profile usage' in which the relating_shape_aspect is either a circular_closed_profile, rectangular_closed_profile, ngon_closed_profile, or closed_path_profile.

Informal propositions:

IP1: The location of the rib_top_floor shall be at the approximate centre of the mating rib_top feature.

IP2: The rib_top_floor shall be defined with the volume removal in Z direction of the rib_top feature.

5.4.47 round_hole   EXPRESS-G

A round_hole is a type of feature_definition that is the representation of a circular enclosed volume this is removed from the base shape. The bottom of the round_hole is represented by a hole_bottom.

NOTE 1   A round_hole may have a change in diameter which is represented by a taper. Round_hole is defined in ISO 10303-1814 [5] and defines the requirement for round_hole.

EXPRESS specification:

*)
ENTITY round_hole
  SUBTYPE OF (feature_definition);
WHERE
  WR1: (SIZEOF(['COUNTERBORE_COUNTERSINK_SCHEMA.EXPLICIT_ROUND_HOLE', 'COUNTERBORE_COUNTERSINK_SCHEMA.BASIC_ROUND_HOLE'] * TYPEOF(SELF)) = 1) XOR (SIZEOF(QUERY ( pds <* QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)) ) | (NOT (SIZEOF(QUERY ( sa_occ <* USEDIN(pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | ((sa_occ.description = 'diameter occurrence') AND (SIZEOF(QUERY ( sdr <* QUERY ( sar <* USEDIN(sa_occ, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | ((sar.description = 'profile usage') AND (('MACHINING_FEATURE_SCHEMA.SHAPE_DEFINING_RELATIONSHIP') IN TYPEOF(sar))) ) | (('MACHINING_FEATURE_SCHEMA.CIRCULAR_CLOSED_PROFILE' IN TYPEOF(sdr.relating_shape_aspect)) AND (sdr.name = 'diameter')) )) = 1)) )) = 1)) )) = 0);
  WR2: (SIZEOF(['COUNTERBORE_COUNTERSINK_SCHEMA.EXPLICIT_ROUND_HOLE', 'COUNTERBORE_COUNTERSINK_SCHEMA.BASIC_ROUND_HOLE'] * TYPEOF(SELF)) = 1) XOR (SIZEOF(QUERY ( pds <* QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | ('PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)) ) | (NOT (SIZEOF(QUERY ( sa_occ <* USEDIN(pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | ((sa_occ.description = 'hole depth occurrence') AND (SIZEOF(QUERY ( sdr <* QUERY ( sar <* USEDIN(sa_occ, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | ((sar.description = 'path feature component usage') AND (('MACHINING_FEATURE_SCHEMA.SHAPE_DEFINING_RELATIONSHIP') IN TYPEOF(sar))) ) | (('TOPOLOGY_SCHEMA.PATH_FEATURE_COMPONENT' IN TYPEOF(sdr.relating_shape_aspect)) AND (sdr.name = 'hole depth') AND (sdr.relating_shape_aspect.description = 'linear')) )) = 1)) )) = 1)) )) = 0);
  WR3: (SIZEOF(['COUNTERBORE_COUNTERSINK_SCHEMA.EXPLICIT_ROUND_HOLE', 'COUNTERBORE_COUNTERSINK_SCHEMA.BASIC_ROUND_HOLE'] * TYPEOF(SELF)) = 1) XOR (SIZEOF(QUERY ( pds <* QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | ('PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)) ) | (NOT (SIZEOF(QUERY ( sa_occ <* USEDIN(pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | ((sa_occ.description = 'bottom condition occurrence') AND (SIZEOF(QUERY ( fcr <* QUERY ( sar <* USEDIN(sa_occ, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | ((sar.description = 'hole bottom usage') AND (('MACHINING_FEATURE_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP') IN TYPEOF(sar))) ) | (('MACHINING_FEATURE_SCHEMA.HOLE_BOTTOM' IN TYPEOF(fcr.relating_shape_aspect)) AND ('MACHINING_FEATURE_SCHEMA.ROUND_HOLE' IN TYPEOF(fcr.related_shape_aspect.of_shape.definition))) )) = 1)) )) = 1)) )) = 0);
  WR4: (SIZEOF(['COUNTERBORE_COUNTERSINK_SCHEMA.EXPLICIT_ROUND_HOLE', 'COUNTERBORE_COUNTERSINK_SCHEMA.BASIC_ROUND_HOLE'] * TYPEOF(SELF)) = 1) XOR (SIZEOF(QUERY ( pds <* QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | ('PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)) ) | (NOT (SIZEOF(QUERY ( sa_occ <* USEDIN(pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | ((sa_occ.description = 'change in diameter occurrence') AND (SIZEOF(QUERY ( fcr <* QUERY ( sar <* USEDIN(sa_occ, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | ((sar.description = 'taper usage') AND (('MACHINING_FEATURE_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP') IN TYPEOF(sar))) ) | (('MACHINING_FEATURE_SCHEMA.TAPER' IN TYPEOF(fcr.relating_shape_aspect)) AND ('MACHINING_FEATURE_SCHEMA.ROUND_HOLE' IN TYPEOF(fcr.related_shape_aspect.of_shape.definition)) ) )) = 1)) )) <= 1)) )) = 0);
  WR5: (SIZEOF(['COUNTERBORE_COUNTERSINK_SCHEMA.EXPLICIT_ROUND_HOLE', 'COUNTERBORE_COUNTERSINK_SCHEMA.BASIC_ROUND_HOLE'] * TYPEOF(SELF)) = 1) XOR (SIZEOF(QUERY(pdr <* get_property_definition_representations (SELF) | ( 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF ( pdr.used_representation ) ) )) =1);
END_ENTITY;
(*

Formal propositions:

WR1: The round_hole shall either be an instance of the explicit_round_hole subtype, or basic_round_hole subtype, or shall be the basis shape for exactly one shape_aspect with a description of 'diameter occurrence' that is the related_shape_aspect in exactly one shape_defining_relationship with a description of 'profile usage' and a name of 'diameter' and a relating_shape_aspect that is a circular_closed_profile.

WR2: The round_hole shall either be an instance of the explicit_round_hole subtype, or basic_round_hole subtype, or shall be the basis shape for exactly one shape_aspect with a description of 'hole depth occurrence' that is the related_shape_aspect in exactly one shape_defining_relationship with a description of 'path feature component usage' and a name of 'hole depth' in which the relating_shape_aspect is a path_feature_component with a description of 'linear'.

NOTE 2   The specification of the hole depth places a limitation on the depth of the round_hole so that it will not interfere with other features of the part that are nearby.

WR3: The round_hole shall either be an instance of the explicit_round_hole subtype, or basic_round_hole subtype, or shall be the basis shape for exactly one shape_aspect with a description of 'bottom condition occurrence' that is the related_shape_aspect in exactly one feature_component_relationship with a description of 'hole bottom usage' and the relating_shape_aspect is a hole_bottom.

WR4: The round_hole shall either be an instance of the explicit_round_hole subtype, or basic_round_hole subtype, or 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' and the relating_shape_aspect is a taper.

WR5: The round_hole shall either be an instance of the explicit_round_hole subtype, or basic_round_hole subtype, or shall contain exactly one implicit representation.

Informal propositions:

IP1: The location of the round_hole shall be defined at either the bottom or the top centre of the hole.

IP2: The Z direction of the round_hole shall be in the direction of volume removal.

IP3: The origin, X direction, Y direction of the circular_closed_profile shall be equal to that of the round_hole.

IP4: The origin, X direction, Y direction of the path_feature_component shall be equal to that of the round_hole.

5.4.48 rounded_end   EXPRESS-G

A rounded_end is a type of feature_definition that is the representation of a volume that is removed from the base shape. The removal shall be represented by partial_circular_profile swept along about a linear path represented by a path_feature_component.

NOTE    Rounded_end is defined in ISO 10303-1814 [5] and defines the requirement for rounded_end.

EXPRESS specification:

*)
ENTITY rounded_end
  SUBTYPE OF (feature_definition);
WHERE
  WR1: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(impl_rep.used_representation.items) = 1)) )) = 0)) )) = 0);
  WR2: (SIZEOF(QUERY ( pds <* QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | ('PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)) ) | (NOT (SIZEOF(QUERY ( sa_occ <* USEDIN(pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | ((sa_occ.description = 'partial circular boundary occurrence') AND (SIZEOF(QUERY ( sdr <* QUERY ( sar <* USEDIN(sa_occ, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | ((sar.description = 'profile usage') AND (('MACHINING_FEATURE_SCHEMA.SHAPE_DEFINING_RELATIONSHIP') IN TYPEOF(sar))) ) | (('MACHINING_FEATURE_SCHEMA.PARTIAL_CIRCULAR_PROFILE' IN TYPEOF(sdr.relating_shape_aspect)) ) )) = 1)) )) = 1)) )) = 0);
  WR3: (SIZEOF(QUERY ( pds <* QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | ('PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)) ) | (NOT (SIZEOF(QUERY ( sa_occ <* USEDIN(pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | ((sa_occ.description = 'course of travel occurrence') AND (SIZEOF(QUERY ( sdr <* QUERY ( sar <* USEDIN(sa_occ, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | ((sar.description = 'path feature component usage') AND (('MACHINING_FEATURE_SCHEMA.SHAPE_DEFINING_RELATIONSHIP') IN TYPEOF(sar))) ) | (('TOPOLOGY_SCHEMA.PATH_FEATURE_COMPONENT' IN TYPEOF(sdr.relating_shape_aspect)) AND (sdr.relating_shape_aspect.description = 'linear')) )) = 1)) )) = 1)) )) = 0);
  WR4: SIZEOF(QUERY(pdr <* get_property_definition_representations (SELF) | ( 'MACHINING_FEATURE_SCHEMA.PLANAR_SHAPE_REPRESENTATION' IN TYPEOF ( pdr.used_representation ) ) AND ( pdr.used_representation.name ='maximum feature limit'))) >=0;
END_ENTITY;
(*

Formal propositions:

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

WR2: The rounded_end shall be the basis shape for exactly one shape_aspect with a description of 'partial circular 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 references a partial_circular_profile.

WR3: The rounded_end shall be the basis shape for exactly one shape_aspect with a description of 'course of travel occurrence' that is the related_shape_aspect in exactly one shape_defining_relationship with a description of 'path feature component usage' and a relating_shape_aspect that references a path_feature_component with a description of 'linear'.

WR4: The rounded_end shall have at most one planar_shape_representation with a name of 'maximum feature limit'.

Informal propositions:

IP1: The origin, X direction, Y direction of the partial_circular_profile shall be equal to that of the rounded_end.

IP2: The origin, X direction, Y direction of the path_feature_component shall be equal to that of the rounded_end.

5.4.49 rounded_u_profile   EXPRESS-G

A rounded_u_profile is a type of shape_aspect that is the representation of an arc with connected straight lines at each end, with a location, and a position. The rounded_u_profile is located at the midpoint of the arc and positioned in the X-Y plane with the X direction tangent to the arc at the midpoint, and the Y direction orthogonal in the direction of volume removal.

NOTE    Rounded_u_profile is defined in ISO 10303-1814 [5] and defines the requirement for rounded_u_profile.

EXPRESS specification:

*)
ENTITY rounded_u_profile
  SUBTYPE OF (shape_aspect);
WHERE
  WR1: ('MACHINING_FEATURE_SCHEMA.FEATURE_COMPONENT_DEFINITION' IN TYPEOF(SELF.of_shape.definition));
  WR2: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) )) = 1)) )) = 0);
  WR3: SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (impl_rep <* QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF (pdr.used_representation)) | (NOT (SIZEOF (impl_rep.used_representation.items) >= 1) AND (SIZEOF (impl_rep.used_representation.items) <= 2)))) = 0))) = 0;
  WR4: SIZEOF( QUERY( pd <* USEDIN( SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | SIZEOF( QUERY( pdr <* USEDIN( pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND (SIZEOF( QUERY( srwp_i <* pdr.used_representation.items | (srwp_i.name = 'orientation') OR (srwp_i.name = 'depth') )) = SIZEOF(pdr.used_representation.items)) )) = 1 )) = 1;
  WR5: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF([ 'QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'width'))))= 1))))= 0))))= 0);
  WR6: SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ('MACHINING_FEATURE_SCHEMA.PLANAR_SHAPE_REPRESENTATION' IN TYPEOF (pdr.used_representation))AND (pdr.used_representation.name = 'profile limit'))) <= 1))) = 0;
  WR7: SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (impl_rep <* QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF (pdr.used_representation)) | NOT (SIZEOF (QUERY (it <* impl_rep.used_representation.items | (SIZEOF (['QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF (it)) = 2) AND (it.name = 'depth'))) <= 1))) = 0))) = 0;
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 at least one and at most two representation_items in its set of items.

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

WR5: 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'.

WR6: The rounded_u_profile shall have at most one planar_shape_representation with a name of 'profile limit'.

WR7: 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 'depth'.

Informal propositions:

IP1: The location of the rounded_u_profile shall be at the midpoint of the arc.

IP2: The rounded_u_profile shall be defined with the X direction tangent to the arc at the midpoint, and the Y direction orthogonal in the direction of the open end of the profile.

IP3: The depth of the rounded_u_profile shall be defined at the midpoint of the arc and along the Y direction in the direction of the open end of the profile.

5.4.50 shape_defining_relationship   EXPRESS-G

A shape_defining_relationship is a type of shape_aspect_relationship in which the related_shape_aspect takes a part in the definition of the shape of the relating_shape_aspect.

EXAMPLE    A Chamfer may have the implicit chamfer offset amount defined with a feature_component_relationship and the explicit geometry for the chamfer defined with a shape_defining_relationship.

EXPRESS specification:

*)
ENTITY shape_defining_relationship
  SUBTYPE OF (shape_aspect_relationship);
END_ENTITY;
(*

5.4.51 slot   EXPRESS-G

A slot is a type of feature_definition that is the representation of a volume that is removed from the base shape. This removal shall be represented by sweeping either a square_u_profile, partial_circular_profile, rounded_u_profile, vee_profile, tee_profile, or an open_path_profile swept along a path represented by a path_feature_component. Each end of the slot shall be represented by a slot_end.

NOTE    Slot is defined in ISO 10303-1814 [5] and defines the requirement for slot.

EXPRESS specification:

*)
ENTITY slot
  SUBTYPE OF (feature_definition);
WHERE
  WR1: SIZEOF(QUERY ( pd <* USEDIN(SELF,'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (( 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr. used_representation)) ) | (NOT (SIZEOF(impl_rep. used_representation.items) = 1)) )) = 0)) )) = 0;
  WR2: SIZEOF(QUERY ( pds <* QUERY ( pd <* USEDIN(SELF,'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | ( 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)) ) | (NOT (SIZEOF(QUERY ( sa_occ <* USEDIN(pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | (( sa_occ.description = 'swept shape occurrence') AND (SIZEOF( QUERY ( sdr <* QUERY ( sar <* USEDIN(sa_occ, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' + 'RELATED_SHAPE_ASPECT') | ((sar.description = 'profile usage') AND ('MACHINING_FEATURE_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar))) ) | (SIZEOF([ 'MACHINING_FEATURE_SCHEMA.SQUARE_U_PROFILE', 'MACHINING_FEATURE_SCHEMA.PARTIAL_CIRCULAR_PROFILE', 'MACHINING_FEATURE_SCHEMA.ROUNDED_U_PROFILE', 'MACHINING_FEATURE_SCHEMA.VEE_PROFILE', 'MACHINING_FEATURE_SCHEMA.TEE_PROFILE', 'MACHINING_FEATURE_SCHEMA.OPEN_PATH_PROFILE'] * TYPEOF(sdr.relating_shape_aspect)) = 1) )) = 1)) )) = 1)) )) = 0;
  WR3: SIZEOF(QUERY ( pds <* QUERY ( pd <* USEDIN(SELF,'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | ( 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)) ) | (NOT (SIZEOF(QUERY ( sa_occ <* USEDIN(pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | (( sa_occ.description = 'course of travel occurrence') AND ( SIZEOF(QUERY ( sdr <* QUERY ( sar <* USEDIN(sa_occ, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' + 'RELATED_SHAPE_ASPECT') | ((sar.description = 'path feature component usage') AND ((sar.name = 'course of travel') AND ('MACHINING_FEATURE_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)))) ) | ( 'TOPOLOGY_SCHEMA.PATH_FEATURE_COMPONENT' IN TYPEOF(sdr.relating_shape_aspect)) )) = 1)) )) = 1)) )) = 0;
  WR4: SIZEOF(QUERY ( pds <* QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | ('PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)) ) | (NOT((SIZEOF(QUERY ( sa_occ <* USEDIN(pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | ((sa_occ.description = 'end condition occurrence') AND (SIZEOF(QUERY ( fcr <* QUERY ( sar <* USEDIN(sa_occ, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | (((sar.description = 'slot end usage') AND (sar.name IN ['course of travel start','course of travel end'])) AND ('MACHINING_FEATURE_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar))) ) | ((('MACHINING_FEATURE_SCHEMA.SLOT_END' IN TYPEOF(fcr.relating_shape_aspect)) AND (fcr.relating_shape_aspect.description IN ['open','radiused','flat','woodruff'])) AND ('MACHINING_FEATURE_SCHEMA.SLOT' IN TYPEOF(fcr.related_shape_aspect.of_shape.definition))) )) = 1) ) )) = 2) OR (SIZEOF(QUERY ( sa_occ <* USEDIN(pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | ((sa_occ.description = 'end condition occurrence') AND (SIZEOF(QUERY ( fcr <* QUERY ( sar <* USEDIN(sa_occ, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | (((sar.description = 'slot end usage') AND (sar.name IN ['course of travel start','course of travel end'])) AND ('MACHINING_FEATURE_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar))) ) | ((('MACHINING_FEATURE_SCHEMA.SLOT_END' IN TYPEOF(fcr.relating_shape_aspect)) AND (fcr.relating_shape_aspect.description IN ['loop'])) AND ('MACHINING_FEATURE_SCHEMA.SLOT' IN TYPEOF(fcr.related_shape_aspect.of_shape.definition))) )) = 1) ) )) = 1))) )) =0;
  WR5: (NOT (SIZEOF(QUERY ( pds <* QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | ('PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)) ) | (NOT (SIZEOF(QUERY ( sa_occ <* USEDIN(pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | ((sa_occ.description = 'end condition occurrence') AND (SIZEOF(QUERY ( fcr <* QUERY ( sar <* USEDIN(sa_occ, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | (((sar.description = 'slot end usage') AND (sar.name IN ['course of travel start','course of travel end'])) AND ('MACHINING_FEATURE_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar))) ) | ((('MACHINING_FEATURE_SCHEMA.SLOT_END' IN TYPEOF(fcr.relating_shape_aspect)) AND (fcr.relating_shape_aspect.description IN ['loop'])) AND ('MACHINING_FEATURE_SCHEMA.SLOT' IN TYPEOF(fcr.related_shape_aspect.of_shape.definition))) )) = 1)) )) = 1)) )) =0) OR (SIZEOF(QUERY ( pds <* QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| ('PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)) ) | (NOT (SIZEOF(QUERY ( sa_occ <* USEDIN(pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | ((sa_occ.description = 'course of travel occurrence') AND (SIZEOF(QUERY ( sdr <* QUERY ( sar <* USEDIN(sa_occ, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | ((sar.description = 'path feature component usage') AND ((sar.name = 'course of travel') AND ('MACHINING_FEATURE_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)))) ) | (('TOPOLOGY_SCHEMA.PATH_FEATURE_COMPONENT' IN TYPEOF(sdr.relating_shape_aspect)) AND (sdr.relating_shape_aspect.description IN ['complex','complete circular'])) )) = 1)) )) = 1)) )) = 0));
  WR6: SIZEOF(QUERY ( pdr <* get_property_definition_representations( SELF) | (( 'MACHINING_FEATURE_SCHEMA.PLANAR_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)) AND (pdr. used_representation.name = 'maximum feature limit')) )) >= 0;
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 occurence' that is the related_shape_aspect in exactly one shape_defining_relationship with a description of 'profile usage' and a relating_shape_aspect that references a 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' that is the related_shape_aspect in exactly one shape_defining_relationship with a description of 'path feature component usage', and a name of 'course of travel' and a relating_shape_aspect that references a path_feature_component.

WR4: The slot shall be the basis shape for: either exactly two shape_aspects with a description of 'end condition occurrence' that are each the related_shape_aspect in exactly one feature_component_relationship with a description of 'slot end usage' and a relating_shape_aspect that references a slot_end if the slot_end has a description of 'open', 'radiused', 'flat', 'woodruff' OR exactly one shape_aspect with a description of 'end condition occurrence' that are each the related_shape_aspect in exactly one feature_component_relationship with a description of 'slot end usage' and a relating_shape_aspect that references a slot_end if the slot_end has a description of 'loop'.

WR5: The slot shall be the basis shape for exactly one shape_aspect with a description of 'end condition occurrence' that are each the related_shape_aspect in exactly one feature_component_relationship with a description of 'slot end usage' and a relating_shape_aspect that references a slot_end if the slot_end has a description of 'loop'. And the slot shall be the basis shape for exactly one shape_aspect with a description of 'course of travel occurrence' that is the related_shape_aspect in exactly one shape_defining_relationship with a description of 'path feature component usage', and a name of 'course of travel' and a relating_shape_aspect that references a path_feature_component with a description of 'complex', or 'complete circular'.

WR6: The slot shall have at most one planar_shape_representation with a name of 'maximum feature limit'.

Informal propositions:

IP1: The location of the slot shall be defined at one end of the slot.

IP2: If the description of the path_feature_component relating to the slot is 'linear' or 'complex', then the Z direction of the slot shall be in the direction of slot end and the volume removal in the Y direction.

IP3: If the description of the path_feature_component relating to the slot is 'circular' or 'partial circular', then the Z direction of the slot shall be the axis of revolution.

IP4: If the description of the path_feature_component relating to the slot is 'linear' or 'complex', then the origin, X direction, Y direction of the square_u_profile, partial_circular_profile, rounded_u_profile, vee_profile, tee_profile, or open_path_profile shall be equal to that of the slot.

IP5: If the description of the path_feature_component relating to the slot is 'circular' or 'partial circular', then the origin, X direction, Y direction of the square_u_profile, partial_circular_profile, rounded_u_profile, vee_profile, tee_profile, or open_path_profile shall be in the X direction of the slot at a distance equal to the radius of the path_feature_component away from the origin of the slot.

IP6: The origin, X direction, Y direction of the path_feature_component shall be equal to that of the slot.

5.4.52 slot_end   EXPRESS-G

A slot_end is a type of shape_aspect that is the representation of the end condition for a slot feature_definition.

NOTE    Slot_end_type is defined in ISO 10303-1814 [5] and defines the requirement for slot_end.

EXPRESS specification:

*)
ENTITY slot_end
  SUBTYPE OF (shape_aspect);
WHERE
  WR1: 'MACHINING_FEATURE_SCHEMA.FEATURE_COMPONENT_DEFINITION' IN TYPEOF(SELF.of_shape.definition);
  WR2: SELF.description IN ['open','radiused','flat','woodruff', 'loop'];
  WR3: (NOT (SELF.description IN ['open','radiused','loop'])) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (NOT (SIZEOF(QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) )) = 0)) )) = 0);
  WR4: (NOT (SELF.description IN ['flat','woodruff'])) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) )) = 1)) )) = 0);
  WR5: (NOT (SELF.description IN ['flat'])) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(impl_rep.used_representation.items) = 2)) )) = 0)) )) = 0);
  WR6: (NOT (SELF.description = 'flat')) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF([ 'QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'first radius')) )) = 1)) )) = 0)) )) = 0);
  WR7: (NOT (SELF.description = 'flat')) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF([ 'QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'second radius')) )) = 1)) )) = 0)) )) = 0);
  WR8: (NOT (SELF.description = 'woodruff')) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | (('MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT' IN TYPEOF(it)) AND (it.name = 'radius')) )) = 1)) )) = 0)) )) = 0);
  WR9: (NOT (SELF.description IN ['woodruff'])) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(impl_rep.used_representation.items) = 1)) )) = 0)) )) = 0);
  WR10: SIZEOF(QUERY ( fcr <* QUERY ( sar <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' + 'RELATING_SHAPE_ASPECT') | (((sar.description = 'slot end usage') AND (sar.name IN ['course of travel start','course of travel end'])) AND ('MACHINING_FEATURE_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar))) ) | (((fcr.related_shape_aspect.description = 'end condition occurrence') AND ('MACHINING_FEATURE_SCHEMA.SLOT' IN TYPEOF(fcr.related_shape_aspect.of_shape.definition))) AND ('MACHINING_FEATURE_SCHEMA.SLOT_END' IN TYPEOF(fcr.relating_shape_aspect))) )) >= 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', 'loop' or 'woodruff'.

WR3: If the description of the slot_end is 'open', 'loop' 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', 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'.

WR9: 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.

WR10: The slot_end shall be the relating_shape_aspect in at least one feature_component_relationship with a description of 'slot end usage' and with a name of 'course of travel start', or 'course of travel end' in which the related_shape_aspect is an aspect of the shape of a slot with a description of 'end condition occurrence'.

Informal propositions:

IP1: If the description of the slot_end is 'open' or 'loop', then it shall have no placement or orientation.

IP2: If the description of the slot_end is 'flat', then location shall be at the midpoint of the base line.

IP3: If the description of the slot_end is 'radiused', then location shall be at the midpoint of the radius.

IP4: If the description of the slot_end is 'woodruff', then location shall be at the point where the slot floor makes contact with the radius.

IP5: If the description of the slot_end is 'open', 'radiused', or 'woodruff', then the slot_end is defined with the base line in the X direction and the Y direction orthogonal in the direction of volume removal. The Z direction is coincident to that of the mating slot feature.

5.4.53 spherical_cap   EXPRESS-G

A spherical_cap is a type of feature_definition that is the representation of a volume that is extruding from the base shape. The volume shall be spherical of a defined radius.

NOTE    Spherical_cap is defined in ISO 10303-1814 [5] and defines the requirement for spherical_cap.

EXPRESS specification:

*)
ENTITY spherical_cap
  SUBTYPE OF (feature_definition);
WHERE
  WR1: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(impl_rep.used_representation.items) = 3)) )) = 0)) )) = 0);
  WR2: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF([ 'QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'radius')) )) = 1)))) = 0)) )) = 0);
  WR3: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF([ 'QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'GEOMETRY_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'internal angle')))) = 1)) )) = 0)) )) = 0);
END_ENTITY;
(*

Formal propositions:

WR1: The spherical_cap shall have an implicit representation that contains exactly three representation_items in its set of items.

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

WR3: Exactly one representation_item used for the implicit representation of the spherical_cap shall be of type measure_representation_item and plane_angle_measure_with_unit with a name of 'internal angle'.

Informal propositions:

IP1: The orientation of the spherical_cap shall be with the Z-axis away from material.

IP2: The X-axis shall define the start of the spherical_cap and the internal angle is measured from the X-axis.

IP3: The location of the spherical_cap shall be at a position on the base of the feature where it mates with the part.

IP4: The Z direction of the spherical_cap shall be in the direction of away from the part.

5.4.54 square_u_profile   EXPRESS-G

A square_u_profile is a type of shape_aspect that is the representation of three connected straight lines, a location and a position. The square_u_profile is located at the midpoint of the base line and positioned in the X-Y plane with the base line on the X direction and the Y direction orthogonal in the direction of volume removal.

NOTE    Square_u_profile is defined in ISO 10303-1814 [5] and defines the requirement for square_u_profile.

EXPRESS specification:

*)
ENTITY square_u_profile
  SUBTYPE OF (shape_aspect);
WHERE
  WR1: 'MACHINING_FEATURE_SCHEMA.FEATURE_COMPONENT_DEFINITION' IN TYPEOF (SELF.of_shape.definition);
  WR2: SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF (pdr.used_representation))) = 1))) = 0;
  WR3: SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (impl_rep <* QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF (pdr.used_representation)) | (NOT (SIZEOF (impl_rep.used_representation.items) >= 4) AND (SIZEOF (impl_rep.used_representation.items) <= 7)))) = 0))) = 0;
  WR4: SIZEOF( QUERY( pd <* USEDIN( SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | SIZEOF( QUERY( pdr <* USEDIN( pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND (SIZEOF( QUERY( srwp_i <* pdr.used_representation.items | (srwp_i.name = 'orientation') OR (srwp_i.name = 'width') OR (srwp_i.name = 'first angle') OR (srwp_i.name = 'second angle') OR (srwp_i.name = 'first radius') OR (srwp_i.name = 'second radius') OR (srwp_i.name = 'profile limit') OR (srwp_i.name = 'depth') )) = SIZEOF(pdr.used_representation.items)) )) = 1 )) = 1;
  WR5: SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (impl_rep <* QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF (pdr.used_representation)) | NOT (SIZEOF (QUERY (it <* impl_rep.used_representation.items | ('GEOMETRY_SCHEMA.PLACEMENT' IN TYPEOF (it)) AND (it.name = 'orientation'))) = 1))) = 0))) = 0;
  WR6: SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (impl_rep <* QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF (pdr.used_representation)) | NOT (SIZEOF (QUERY (it <* impl_rep.used_representation.items | (SIZEOF (['QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF (it)) = 2) AND (it.name = 'width'))) = 1))) = 0))) = 0;
  WR7: SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (impl_rep <* QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF (pdr.used_representation)) | NOT (SIZEOF (QUERY (it <* impl_rep.used_representation.items | (SIZEOF (['QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF (it)) = 2) AND (it.name = 'first radius'))) <= 1))) = 0))) = 0;
  WR8: SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (impl_rep <* QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF (pdr.used_representation)) | NOT (SIZEOF (QUERY (it <* impl_rep.used_representation.items | (SIZEOF (['QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF (it)) = 2) AND (it.name = 'second radius'))) <= 1))) = 0))) = 0;
  WR9: SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (impl_rep <* QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF (pdr.used_representation)) | NOT (SIZEOF (QUERY (it <* impl_rep.used_representation.items | (SIZEOF (['QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'GEOMETRY_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT'] * TYPEOF (it)) = 2) AND (it.name = 'first angle'))) = 1))) = 0))) = 0;
  WR10: SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (impl_rep <* QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF (pdr.used_representation)) | NOT (SIZEOF (QUERY (it <* impl_rep.used_representation.items | (SIZEOF (['QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'GEOMETRY_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT'] * TYPEOF (it)) = 2) AND (it.name = 'second angle'))) = 1))) = 0))) = 0;
  WR11: SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ('MACHINING_FEATURE_SCHEMA.PLANAR_SHAPE_REPRESENTATION' IN TYPEOF (pdr.used_representation))AND (pdr.used_representation.name = 'profile limit'))) <= 1))) = 0;
  WR12: SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (impl_rep <* QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF (pdr.used_representation)) | NOT (SIZEOF (QUERY (it <* impl_rep.used_representation.items | (SIZEOF (['QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF (it)) = 2) AND (it.name = 'depth'))) <= 1))) = 0))) = 0;
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 relationship to a shape_representation_with_parameters.

WR3: The shape_representation_with_parameters that represents the square_u_profile shall contain at least four and at most seven 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 with a name of 'orientation','depth','width', 'first angle', 'second angle', 'first radius', and '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: At most 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 'first radius'.

WR8: At most 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 'second radius'.

WR9: 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'.

WR10: 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'.

WR11: The square_u_profile shall have at most one planar_shape_representation with a name of 'profile limit'.

WR12: At most 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 'depth'.

Informal propositions:

IP1: The location of the square_u_profile shall be defined at the midpoint of the base line.

IP2: The square_u_profile shall be defined in the X-Y plane with the base line in the X direction and the Y direction orthogonal in the direction of the open end of the profile.

IP3: The depth of the square_u_profile shall be defined at the midpoint of the base line and along the Y direction in the direction of the open end of the profile.

5.4.55 step   EXPRESS-G

A step is a type of feature_definition that is the representation of a volume that is removed from the base shape. This removal shall be represented by sweeping a vee_profile along a path represented by a path_feature_component.

NOTE    Step is defined in ISO 10303-1814 [5] and defines the requirement for step.

EXPRESS specification:

*)
ENTITY step
  SUBTYPE OF (feature_definition);
WHERE
  WR1: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(impl_rep.used_representation.items) = 1)) )) = 0)) )) = 0);
  WR2: (SIZEOF(QUERY ( pds <* QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | ('PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)) ) | (NOT (SIZEOF(QUERY ( sa_occ <* USEDIN(pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | ((sa_occ.description = 'course of travel occurrence') AND (SIZEOF(QUERY ( sdr <* QUERY ( sar <* USEDIN(sa_occ, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | ((sar.description = 'path feature component usage') AND (('MACHINING_FEATURE_SCHEMA.SHAPE_DEFINING_RELATIONSHIP') IN TYPEOF(sar))) ) | (('TOPOLOGY_SCHEMA.PATH_FEATURE_COMPONENT' IN TYPEOF(sdr.relating_shape_aspect)) AND (sdr.relating_shape_aspect.description = 'linear')) )) = 1)) )) = 1)) )) = 0);
  WR3: (SIZEOF(QUERY ( pds <* QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | ('PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)) ) | (NOT (SIZEOF(QUERY ( sa_occ <* USEDIN(pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | ((sa_occ.description = 'removal boundary occurrence') AND (SIZEOF(QUERY ( sdr <* QUERY ( sar <* USEDIN(sa_occ, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | ((sar.description = 'profile usage') AND (('MACHINING_FEATURE_SCHEMA.SHAPE_DEFINING_RELATIONSHIP') IN TYPEOF(sar))) ) | ('MACHINING_FEATURE_SCHEMA.VEE_PROFILE' IN TYPEOF(sdr.relating_shape_aspect)) )) = 1)) )) = 1)) )) = 0);
  WR4: SIZEOF(QUERY(pdr <* get_property_definition_representations (SELF) | ( 'MACHINING_FEATURE_SCHEMA.PLANAR_SHAPE_REPRESENTATION' IN TYPEOF ( pdr.used_representation ) ) AND ( pdr.used_representation.name ='maximum feature limit'))) >=0;
  WR5: SIZEOF(QUERY ( pds <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (('PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pds)) AND (SIZEOF(QUERY ( csa <* USEDIN(pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.COMPOSITE_SHAPE_ASPECT' IN TYPEOF(csa)) AND (csa.name='uncut volume') AND (SIZEOF(QUERY ( sar <* csa.component_relationships | (('MACHINING_FEATURE_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)) AND (SIZEOF([ 'MACHINING_FEATURE_SCHEMA.BOSS', 'MACHINING_FEATURE_SCHEMA.PROTRUSION'] * TYPEOF(sar. related_shape_aspect)) = 1)) )) = 1)) )) <= 1)) )) = 1;
END_ENTITY;
(*

Formal propositions:

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

WR2: The step shall be the basis shape for exactly one shape_aspect with a description of 'course of travel occurrence' that is the related_shape_aspect in exactly one shape_defining_relationship with a description of 'path feature component usage' and a relating_shape_aspect that references a path_feature_component with a description of 'linear'.

WR3: The step shall be the basis shape for exactly one shape_aspect with a description of 'removal boundary occurrence' that is the related_shape_aspect in exactly one shape_defining_relationship with a description of 'profile usage' and a relating_shape_aspect that references a vee_profile.

WR4: The step shall have at most one planar_shape_representation with a name of 'maximum feature limit'.

WR5: The step shall have the uncut volume defined by exactly one product_definition_shape that is referenced by zero or more composite_shape_aspect with name of 'uncut volume' through the of_shape attribute that references a feature_component_relationship through the component_relationships attribute that references either a boss or a protrusion.

Informal propositions:

IP1: The origin, X direction, Y direction of the vee_profile shall be equal to that of the step.

IP2: The origin, X direction, Y direction of the path_feature_component shall be equal to that of the step.

5.4.56 taper   EXPRESS-G

A taper is a type of shape_aspect which represents a linear change applied to a machining feature.

NOTE    Angle_taper, Directed_taper, and Diameter_taper are defined in ISO 10303-1814 [5] and define the requirement for taper.

EXPRESS specification:

*)
ENTITY taper
  SUBTYPE OF (shape_aspect);
WHERE
  WR1: ('MACHINING_FEATURE_SCHEMA.FEATURE_COMPONENT_DEFINITION' IN TYPEOF(SELF.of_shape.definition));
  WR2: (SELF.description IN ['angle taper','diameter taper', 'directed taper']);
  WR3: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) )) = 1)) )) = 0);
  WR4: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(impl_rep.used_representation.items) = 1)) )) = 0)) )) = 0);
  WR5: ((NOT (SELF.description = 'angle taper')) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF([ 'QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'GEOMETRY_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'taper angle')) )) = 1)) )) = 0)) )) = 0));
  WR6: ((NOT (SELF.description = 'diameter taper')) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF([ 'QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'final diameter')) )) = 1)) )) = 0)) )) = 0));
  WR7: ((NOT (SELF.description = 'directed taper')) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF([ 'QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'GEOMETRY_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'angle')) )) = 1)) )) = 0)) )) = 0));
  WR8: ((NOT (SELF.description = 'directed taper')) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ('MACHINING_FEATURE_SCHEMA.DIRECTION_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)) AND (pdr.used_representation.name = 'direction') )) = 1)) )) = 0));
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 relationship to a shape_representation_with_parameters.

WR4: The shape_representation_with_parameters that represents the taper shall contain exactly one representation_item in its set of items.

WR5: The representation_item used for the implicit representation of an angular taper shall be of type measure_representation_item and plane_angle_measure_with_unit with a name of 'taper angle'.

WR6: The representation_item used for the implicit representation of a diameter taper shall be 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'.

Informal propositions:

IP1: The taper angle shall be -90 degrees < taper < 90 degrees.

5.4.57 tee_profile   EXPRESS-G

A tee_profile is a type of shape_aspect which is the representation of an upside-down T shape with a location and a position. The tee_profile consist of a stem and a perpendicular cross bar. The stem has two parallel lines connected at their ends by the cross bar. The cross bar is a rectangle. The profile is symmetric about the centreline of the stem. The tee_profile is located at the midpoint of the side of the cross bar opposite the stem, and positioned with the side of the cross bar opposite the stem on the X direction and the profile symmetric with respect to the Y direction.

NOTE    Tee_profile is defined in ISO 10303-1814 [5] and defines the requirement for tee_profile.

EXPRESS specification:

*)
ENTITY tee_profile
  SUBTYPE OF (shape_aspect);
WHERE
  WR1: 'MACHINING_FEATURE_SCHEMA.FEATURE_COMPONENT_DEFINITION' IN TYPEOF (SELF.of_shape.definition);
  WR2: SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF (pdr.used_representation))) = 1))) = 0;
  WR3: SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (impl_rep <* QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF (pdr.used_representation)) | (NOT (SIZEOF (impl_rep.used_representation.items) >= 9) AND (SIZEOF (impl_rep.used_representation.items) <= 10)))) = 0))) = 0;
  WR4: SIZEOF( QUERY( pd <* USEDIN( SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | SIZEOF( QUERY( pdr <* USEDIN( pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND (SIZEOF( QUERY( srwp_i <* pdr.used_representation.items | (srwp_i.name = 'orientation') OR (srwp_i.name = 'width') OR (srwp_i.name = 'depth') OR (srwp_i.name = 'cross bar width') OR (srwp_i.name = 'cross bar depth') OR (srwp_i.name = 'first offset') OR (srwp_i.name = 'second offset') OR (srwp_i.name = 'first angle') OR (srwp_i.name = 'second angle') OR (srwp_i.name = 'radius') )) = SIZEOF(pdr.used_representation.items)) )) = 1 )) = 1;
  WR5: SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (impl_rep <* QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF (pdr.used_representation)) | NOT (SIZEOF (QUERY (it <* impl_rep.used_representation.items | ('GEOMETRY_SCHEMA.PLACEMENT' IN TYPEOF (it)) AND (it.name = 'orientation'))) = 1))) = 0))) = 0;
  WR6: SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (impl_rep <* QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF (pdr.used_representation)) | NOT (SIZEOF (QUERY (it <* impl_rep.used_representation.items | (SIZEOF (['QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF (it)) = 2) AND (it.name = 'width'))) = 1))) = 0))) = 0;
  WR7: SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (impl_rep <* QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF (pdr.used_representation)) | NOT (SIZEOF (QUERY (it <* impl_rep.used_representation.items | (SIZEOF (['QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF (it)) = 2) AND (it.name = 'depth'))) = 1))) = 0))) = 0;
  WR8: SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (impl_rep <* QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF (pdr.used_representation)) | NOT (SIZEOF (QUERY (it <* impl_rep.used_representation.items | (SIZEOF (['QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF (it)) = 2) AND (it.name = 'cross bar width'))) = 1))) = 0))) = 0;
  WR9: SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (impl_rep <* QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF (pdr.used_representation)) | NOT (SIZEOF (QUERY (it <* impl_rep.used_representation.items | (SIZEOF (['QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF (it)) = 2) AND (it.name = 'cross bar depth'))) = 1))) = 0))) = 0;
  WR10: SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (impl_rep <* QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF (pdr.used_representation)) | NOT (SIZEOF (QUERY (it <* impl_rep.used_representation.items | (SIZEOF (['QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF (it)) = 2) AND (it.name = 'first offset'))) = 1))) = 0))) = 0;
  WR11: SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (impl_rep <* QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF (pdr.used_representation)) | NOT (SIZEOF (QUERY (it <* impl_rep.used_representation.items | (SIZEOF (['QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF (it)) = 2) AND (it.name = 'second offset'))) = 1))) = 0))) = 0;
  WR12: SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (impl_rep <* QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF (pdr.used_representation)) | NOT (SIZEOF (QUERY (it <* impl_rep.used_representation.items | (SIZEOF (['QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'GEOMETRY_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT'] * TYPEOF (it)) = 2) AND (it.name = 'first angle'))) = 1))) = 0))) = 0;
  WR13: SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (impl_rep <* QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF (pdr.used_representation)) | NOT (SIZEOF (QUERY (it <* impl_rep.used_representation.items | (SIZEOF (['QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'GEOMETRY_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT'] * TYPEOF (it)) = 2) AND (it.name = 'second angle'))) = 1))) = 0))) = 0;
  WR14: SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (impl_rep <* QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF (pdr.used_representation)) | NOT (SIZEOF (QUERY (it <* impl_rep.used_representation.items | (SIZEOF (['QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF (it)) = 2) AND (it.name = 'radius'))) <= 1))) = 0))) = 0;
  WR15: SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ('MACHINING_FEATURE_SCHEMA.PLANAR_SHAPE_REPRESENTATION' IN TYPEOF (pdr.used_representation))AND (pdr.used_representation.name = 'profile limit'))) <= 1))) = 0;
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 relationship to a shape_representation_with_parameters.

WR3: The shape_representation_with_parameters that represents the tee_profile shall contain at least nine and at most 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 with a name of 'orientation', 'width', 'depth', 'cross bar width', 'cross bar depth', 'first offset', 'second offset', 'first angle', 'second angle', and '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 be of type measure_representation_item and length_measure_with_unit with a name of 'radius'.

WR15: The tee_profile shall have at most one planar_shape_representation with a name of 'profile limit'.

Informal propositions:

IP1: The location of the tee_profile shall be at the midpoint of the side of the cross bar opposite the stem.

IP2: The tee_profile shall be defined with the side of the cross bar opposite the stem in the X direction and the profile symmetric with respect to the Y direction.

5.4.58 thread   EXPRESS-G

A thread is a type of feature_definition that is the representation of a thread shape that is applied to all or a portion of a shape_aspect.

NOTE    Thread is defined in ISO 10303-1814 [5] and defines the requirement for thread.

EXPRESS specification:

*)
ENTITY thread
  SUBTYPE OF (feature_definition);
WHERE
  WR1: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (SIZEOF(QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ((('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) AND (8 <= SIZEOF(pdr.used_representation.items)) AND (SIZEOF(pdr.used_representation.items) <= 11)) )) = 1) )) = 1);
  WR2: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF([ 'QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'major diameter')) )) = 1)) )) = 0)) )) = 0);
  WR3: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF([ 'QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'minor diameter')) )) <= 1)) )) = 0)) )) = 0);
  WR4: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF([ 'QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'pitch diameter')) )) <= 1)) )) = 0)) )) = 0);
  WR5: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF([ 'QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.RATIO_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'number of threads')) )) = 1)) )) = 0)) )) = 0);
  WR6: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | (('QUALIFIED_MEASURE_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND (it.name = 'fit class')) )) = 1)) )) = 0)) )) = 0);
  WR7: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | (('QUALIFIED_MEASURE_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND (it.name = 'form')) )) = 1)) )) = 0)) )) = 0);
  WR8: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | (('QUALIFIED_MEASURE_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND (it.name = 'hand')AND (it.description IN ['left', 'right']) ) )) = 1)) )) = 0)) )) = 0);
  WR9: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | (('QUALIFIED_MEASURE_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND (it.name = 'qualifier')) )) <= 1)) )) = 0)) )) = 0);
  WR10: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | (('QUALIFIED_MEASURE_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND (it.name = 'thread side') AND ((it.description = 'internal') OR (it.description = 'external'))) )) = 1)) )) = 0)) )) = 0);
  WR11: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF([ 'QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'crest')) )) <= 1)) )) = 0)) )) = 0);
  WR12: (SIZEOF(QUERY ( pds <* QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | ('PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)) ) | (NOT (SIZEOF(QUERY ( sa_occ <* USEDIN(pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | ((sa_occ.description = 'partial area occurrence') AND (SIZEOF(QUERY ( sdr <* QUERY ( sar <* USEDIN(sa_occ, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | ((sar.description = 'applied area usage') AND (('MACHINING_FEATURE_SCHEMA.SHAPE_DEFINING_RELATIONSHIP') IN TYPEOF(sar))) ) | ('MACHINING_FEATURE_SCHEMA.APPLIED_AREA' IN TYPEOF(sdr.relating_shape_aspect)) )) = 1)) )) = 1)) )) = 0);
  WR13: (SIZEOF(QUERY ( pds <* QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | ('PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)) ) | (NOT (SIZEOF(QUERY ( sa_occ <* USEDIN(pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | ((SIZEOF(QUERY ( sdr <* QUERY ( sar <* USEDIN(sa_occ, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | ((sar.description = 'applied shape') AND (('MACHINING_FEATURE_SCHEMA.SHAPE_DEFINING_RELATIONSHIP') IN TYPEOF(sar))) ) | ('PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT' IN TYPEOF(sdr.relating_shape_aspect)) )) = 1)) )) = 1)) )) = 0);
  WR14: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | (('QUALIFIED_MEASURE_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND (it.name = 'fit class 2')) )) <= 1)) )) = 0)) )) = 0);
  WR15: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF([ 'QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'nominal size')) )) <= 1)) )) = 0)) )) = 0);
  WR16: (SIZEOF(QUERY ( pds <* QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | ('PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)) ) | (NOT (SIZEOF(QUERY ( sa_occ <* USEDIN(pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | ((sa_occ.description = 'thread runout') AND (SIZEOF(QUERY ( sdr <* QUERY ( sar <* USEDIN(sa_occ, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | ((sar.description = 'thread runout usage') AND (('MACHINING_FEATURE_SCHEMA.SHAPE_DEFINING_RELATIONSHIP') IN TYPEOF(sar))) ) | ('MACHINING_FEATURE_SCHEMA.THREAD_RUNOUT' IN TYPEOF(sdr.relating_shape_aspect)) )) <= 1)) )) = 1)) )) = 0);
END_ENTITY;
(*

Formal propositions:

WR1: The implicit representation of the thread shall contain between six and eleven representation_items.

WR2: 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'.

WR3: 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'.

WR4: 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'.

WR5: 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'.

WR6: 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'.

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

WR8: Exactly one representation_item used for the implicit representation of the thread shall be of type descriptive_representation_item with a name of 'hand' and description of 'left' or 'right'.

WR9: At most one representation_item used for the implicit representation of the thread shall be of type descriptive_representation_item with a name of 'qualifier'.

WR10: 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'.

WR11: 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'.

WR12: The thread shall be the basis shape for at most one shape_aspect with a description of 'partial area occurrence' that is the related_shape_aspect in exactly one shape_defining_relationship with a description of 'applied area usage' and the relating_shape_aspect is an applied_area.

WR13: Exactly one thread shall be the basis shape for exactly one shape_aspect that is the related_shape_aspect in at most one shape_defining_relationship with a description of 'applied shape' in which the relating_shape_aspect is a shape_aspect.

WR14: 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 2'.

WR15: 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 'nominal size'.

WR16: The thread shall be the basis shape for at most one shape_aspect with a description of 'thread runout occurrence' that is the related_shape_aspect in exactly one shape_defining_relationship with a description of 'thread runout usage' and the relating_shape_aspect is a thread_runout.

Informal propositions:

IP1: The location of the thread shall be at a distance from the end of a cylindrical face, and on the axis of the cylindrical face.

IP2: The Z direction of the thread shall be in the direction of the centre axis of the cylindrical face.

IP3: If the name of the descriptive_representation_item is 'fit class' and the first character of the description is 'M', then the thread is metric.

5.4.59 thread_runout   EXPRESS-G

A thread_runout is a type of shape_aspect that is the representation of the thread runout requirements used in the definition of the thread feature_definition.

NOTE    Thread_runout is defined in ISO 10303-1814 [5] and defines the requirement for thread_runout.

EXPRESS specification:

*)
ENTITY thread_runout
  SUBTYPE OF (shape_aspect);
WHERE
  WR1: ('PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(SELF.of_shape));
  WR2: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) )) = 1)) )) = 0);
  WR3: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF (impl_rep.used_representation.items) = 3)) )) = 0)) )) = 0);
  WR4: SIZEOF( QUERY( pd <* USEDIN( SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (SIZEOF( QUERY( pdr <* USEDIN( pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND (SIZEOF( QUERY( srwp_i <* pdr.used_representation.items | NOT (srwp_i.name IN ['length of runout','pitch or dimension', 'included or extra']) )) > 0 ) )) = 0 ) )) = 0;
  WR5: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF([ 'QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'length of runout')) )) = 1)) )) = 0)) )) <= 1);
  WR6: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (( 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr. used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | (('QUALIFIED_MEASURE_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND (it.name = 'pitch or dimension') AND (it.description IN ['pitch','pitch or dimension'])) )) = 1)) )) = 0)) )) = 0);
  WR7: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (( 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr. used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | (('QUALIFIED_MEASURE_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND (it.name = 'included or extra') AND (it.description IN ['included','extra'])) )) = 1)) )) = 0)) )) = 0);
END_ENTITY;
(*

Formal propositions:

WR1: The thread_runout shall be an aspect of the shape of a product_definition_shape.

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

WR3: The thread_runout shall have an implicit representation that contains exactly three representation_items in its set of items.

WR4: The implicit representation of a thread_runout shall contain only representation_items in its set of items with a name of 'length of runout', 'pitch or dimension' or 'included or extra'.

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

WR6: Exactly one representation_item used for the implicit representation of the thread_runout shall be of type descriptive_representation_item with a name of 'pitch or dimension' and a description of either 'pitch' or 'dimension'.

WR7: Exactly one representation_item used for the implicit representation of the thread_runout shall be of type descriptive_representation_item with a name of 'included or extra' and a description of either 'included' or 'extra'.

5.4.60 transition_feature   EXPRESS-G

A transition_feature is a type of shape_aspect that is the representation of a transition between two shape_aspect entities. The placement of a transition_feature is dependent on the placement of the two shape_aspect entities. A transition_feature may be either a chamfer or an edge_round, or a fillet.

EXPRESS specification:

*)
ENTITY transition_feature
  SUPERTYPE OF (ONEOF (chamfer,
                       edge_round,
                       fillet))
  SUBTYPE OF (shape_aspect);
WHERE
  WR1: SIZEOF(['PRODUCT_DEFINITION_SCHEMA.PRODUCT_DEFINITION', 'MACHINING_FEATURE_SCHEMA.COMPOUND_FEATURE'] * TYPEOF(SELF.of_shape.definition)) = 1;
  WR2: SIZEOF(['MACHINING_FEATURE_SCHEMA.CHAMFER', 'MACHINING_FEATURE_SCHEMA.EDGE_ROUND', 'MACHINING_FEATURE_SCHEMA.FILLET'] * TYPEOF(SELF)) = 1;
END_ENTITY;
(*

Formal propositions:

WR1: The transition_feature shall identify an aspect of the shape of a product_definition or a compound_feature.

WR2: The transition_feature shall be a fillet, edge_round, or a chamfer.

5.4.61 turned_knurl   EXPRESS-G

A turned_knurl is a type of feature_definition that is the representation of a diamond, diagonal, or straight shape that is applied to all or a portion of a shape_aspect.

NOTE    Turned_knurl is defined in ISO 10303-1814 [5] and defines the requirement for turned_knurl.

EXPRESS specification:

*)
ENTITY turned_knurl
  SUBTYPE OF (feature_definition);
WHERE
  WR1: (SELF\characterized_object.description IN ['diamond','diagonal','straight']);
  WR2: SIZEOF( QUERY( pd <* USEDIN( SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | SIZEOF( QUERY( pdr <* USEDIN( pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND ({6 <= SIZEOF(pdr.used_representation.items) <= 9}) )) = 1 )) = 1;
  WR3: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | (('QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND ('MEASURE_SCHEMA.COUNT_MEASURE' IN TYPEOF(it\measure_with_unit.value_component)) AND (it.name = 'number of teeth')) )) <= 1)) )) = 0)) )) = 0);
  WR4: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF([ 'QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'major diameter'))))= 1)) )) = 0)) )) = 0);
  WR5: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF([ 'QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'nominal diameter')) )) = 1)) )) = 0)) )) = 0);
  WR6: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd,'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (( 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr. used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF([ 'QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'tooth depth')) )) <= 1)) )) = 0)) )) = 0);
  WR7: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF([ 'QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'root fillet')) )) <= 1)) )) = 0)) )) = 0);
  WR8: (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF([ 'QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'diametral pitch')) )) = 1)) )) = 0)) )) = 0);
  WR9: ((NOT (SELF\characterized_object.description IN ['diamond','diagonal'])) OR ( SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd,'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (( 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr. used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | ((SIZEOF([ 'QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'GEOMETRY_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT'] * TYPEOF(it)) = 2) AND (it.name = 'helix angle')) )) = 1)) )) = 0)) )) = 0));
  WR10: ((NOT (SELF\characterized_object.description = 'diagonal')) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(QUERY ( impl_rep <* QUERY ( pdr <* USEDIN(pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS') IN TYPEOF(pdr.used_representation)) ) | (NOT (SIZEOF(QUERY ( it <* impl_rep.used_representation.items | (('QUALIFIED_MEASURE_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(it)) AND (it.name = 'helix hand')) )) = 1)) )) = 0)) )) = 0));
  WR11: (SIZEOF(QUERY ( pds <* QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | ('PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)) ) | (NOT (SIZEOF(QUERY ( sa_occ <* USEDIN(pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | ((sa_occ.description = 'partial area occurrence') AND (SIZEOF(QUERY ( sdr <* QUERY ( sar <* USEDIN(sa_occ, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | ((sar.description = 'applied area usage') AND (('MACHINING_FEATURE_SCHEMA.SHAPE_DEFINING_RELATIONSHIP') IN TYPEOF(sar))) ) | ('MACHINING_FEATURE_SCHEMA.APPLIED_AREA' IN TYPEOF(sdr.relating_shape_aspect)) )) = 1)) )) = 1)) )) = 0);
  WR12: (SIZEOF(QUERY ( pds <* QUERY ( pd <* USEDIN(SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | ('PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)) ) | (NOT (SIZEOF(QUERY ( sa_occ <* USEDIN(pds, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE') | ((SIZEOF(QUERY ( sdr <* QUERY ( sar <* USEDIN(sa_occ, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | ((sar.description = 'applied shape') AND (('MACHINING_FEATURE_SCHEMA.SHAPE_DEFINING_RELATIONSHIP') IN TYPEOF(sar))) ) | ('PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT' IN TYPEOF(sdr.relating_shape_aspect)) )) = 1)) )) = 1)) )) = 0);
END_ENTITY;
(*

Formal propositions:

WR1: The description for the turned_knurl shall be either 'diamond', 'diagonal', or 'straight'.

WR2: The implicit representation of the turned_knurl shall contain between six and nine representation_items.

WR3: At most one representation_item used for the implicit representation of the turned_knurl shall be of type measure_representation_item with a value_component of type count_measure and a name of 'number of teeth'.

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

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

WR6: At most one representation_item used for the implicit representation of the turned_knurl shall be of type measure_representation_item and length_measure_with_unit with a name of 'tooth depth'.

WR7: At most one representation_item used for the implicit representation of the turned_knurl shall be of type measure_representation_item and plane_angle_measure_with_unit with a name of 'root fillet'.

WR8: Exactly one representation_item used for the implicit representation of the turned_knurl shall be of type measure_representation_item and plane_angle_measure_with_unit with a name of 'diametral pitch'.

WR9: If the turned_knurl has a description of either 'diagonal' or 'diamond', exactly one representation_item used for the implicit representation of the turned_knurl shall be of type measure_representation_item and length_measure_with_unit with a name of 'helix angle'.

WR10: If the turned_knurl has a description of 'diagonal' exactly one representation_item used for the implicit representation of the turned_knurl shall be of type descriptive_representation_item with a name of 'helix hand'.

WR11: The turned_knurl shall be the basis shape for at most one shape_aspect with a description of 'partial area occurrence' that is the related_shape_aspect in exactly one shape_defining_relationship with a description of 'applied area usage' and a relating_shape_aspect that is an applied_area.

WR12: Exactly one turned_knurl shall be the basis shape for exactly one shape_aspect that is the related_shape_aspect in at most one shape_defining_relationship with a description of 'applied shape' in which the relating_shape_aspect is a shape_aspect.

Informal propositions:

IP1: The location of the turned_knurl shall be at a distance from the end of a cylindrical face, and on the axis of the cylindrical face.

IP2: The Z direction of the turned_knurl shall be in the direction of the centre axis of the cylindrical face.

5.4.62 vee_profile   EXPRESS-G

A vee_profile is a type of shape_aspect that is the representation of two connected straight lines, with a location and a position. The vee_profile is located at the position where the two lines connect, the X direction intersects the angle between the two connected lines in the direction of volume removal, and the Y direction is orthogonal to the X direction.

NOTE    Vee_profile is defined in ISO 10303-1814 [5] defines the requirement for vee_profile.

EXPRESS specification:

*)
ENTITY vee_profile
  SUBTYPE OF (shape_aspect);
WHERE
  WR1: 'MACHINING_FEATURE_SCHEMA.FEATURE_COMPONENT_DEFINITION' IN TYPEOF (SELF.of_shape.definition);
  WR2: SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF (pdr.used_representation))) = 1))) = 0;
  WR3: SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (impl_rep <* QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF (pdr.used_representation)) | (NOT (SIZEOF (impl_rep.used_representation.items) >= 3) AND (SIZEOF (impl_rep.used_representation.items) <= 6)))) = 0))) = 0;
  WR4: SIZEOF( QUERY( pd <* USEDIN( SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | SIZEOF( QUERY( pdr <* USEDIN( pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ('SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) AND (SIZEOF( QUERY( srwp_i <* pdr.used_representation.items | (srwp_i.name = 'orientation') OR (srwp_i.name = 'profile angle') OR (srwp_i.name = 'tilt angle') OR (srwp_i.name = 'profile radius') OR (srwp_i.name = 'first length') OR (srwp_i.name = 'second length') )) = SIZEOF(pdr.used_representation.items)) )) = 1 )) = 1;
  WR5: SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (impl_rep <* QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF (pdr.used_representation)) | NOT (SIZEOF (QUERY (it <* impl_rep.used_representation.items | ('GEOMETRY_SCHEMA.PLACEMENT' IN TYPEOF (it)) AND (it.name = 'orientation'))) = 1))) = 0))) = 0;
  WR6: SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (impl_rep <* QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF (pdr.used_representation)) | NOT (SIZEOF (QUERY (it <* impl_rep.used_representation.items | ('QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM' IN TYPEOF (it)) AND ('MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT' IN TYPEOF (it\measure_with_unit.value_component)) AND (it.name = 'profile radius'))) <= 1))) = 0))) = 0;
  WR7: SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (impl_rep <* QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF (pdr.used_representation)) | NOT (SIZEOF (QUERY (it <* impl_rep.used_representation.items | (SIZEOF (['QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'GEOMETRY_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT'] * TYPEOF (it)) = 2) AND (it.name = 'profile angle'))) = 1))) = 0))) = 0;
  WR8: SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (impl_rep <* QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF (pdr.used_representation)) | NOT (SIZEOF (QUERY (it <* impl_rep.used_representation.items | (SIZEOF (['QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM', 'GEOMETRY_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT'] * TYPEOF (it)) = 2) AND (it.name = 'tilt angle'))) = 1))) = 0))) = 0;
  WR9: SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ('MACHINING_FEATURE_SCHEMA.PLANAR_SHAPE_REPRESENTATION' IN TYPEOF (pdr.used_representation))AND (pdr.used_representation.name = 'profile limit'))) <= 1))) = 0;
  WR10: SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (impl_rep <* QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF (pdr.used_representation)) | NOT (SIZEOF (QUERY (it <* impl_rep.used_representation.items | ('QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM' IN TYPEOF (it)) AND ('MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT' IN TYPEOF (it\measure_with_unit.value_component)) AND (it.name = 'first length'))) <= 1))) = 0))) = 0;
  WR11: SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (impl_rep <* QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF (pdr.used_representation)) | NOT (SIZEOF (QUERY (it <* impl_rep.used_representation.items | ('QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM' IN TYPEOF (it)) AND ('MEASURE_SCHEMA.LENGTH_MEASURE_WITH_UNIT' IN TYPEOF (it\measure_with_unit.value_component)) AND (it.name = 'second length'))) <= 1))) = 0))) = 0;
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 relationship to a shape_representation_with_parameters.

WR3: The shape_representation_with_parameters that represents the vee_profile shall contain at least three and at most 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 with a name of 'orientation', 'profile angle', 'tilt angle', and '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: At most one representation_item used for the implicit representation of a vee_profile shall be of type measure_representation_item with a value_component of type length_measure_with_unit and a name of 'profile radius'.

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 'profile angle'.

WR8: 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'.

WR9: The vee_profile shall have at most one planar_shape_representation with a name of 'profile limit'.

WR10: At most one representation_item used for the implicit representation of a vee_profile shall be of type measure_representation_item with a value_component of type length_measure_with_unit and a name of 'first length'.

WR11: At most one representation_item used for the implicit representation of a vee_profile shall be of type measure_representation_item with a value_component of type length_measure_with_unit and a name of 'second length'.

Informal propositions:

IP1: The location of the vee_profile shall be at the position where the two lines connect.

IP2: The vee_profile shall be defined with the tilt angle measured from the X-axis and the opening of the profile in the direction of the Y-axis.

5.5 machining_feature_schema subtype constraint definition

5.5.1 machining_feature_definition_subtypes   EXPRESS-G

The machining_feature_definition_subtypes constraint specifies a constraint that applies to instances of subtypes of feature_definition.

A machining_feature_definition_subtypes is a constraint that applies to instances of subtypes of feature_definition.

EXPRESS specification:

*)
SUBTYPE_CONSTRAINT machining_feature_definition_subtypes FOR feature_definition;
  ONEOF (boss,
         compound_feature,
         externally_defined_feature_definition,
         flat_face,
         gear,
         marking,
         outer_round,
         outside_profile,
         pocket,
         protrusion,
         removal_volume,
         replicate_feature,
         revolved_profile,
         rib_top,
         round_hole,
         rounded_end,
         spherical_cap,
         step,
         slot,
         thread,
         turned_knurl);
END_SUBTYPE_CONSTRAINT;
(*

5.6 machining_feature_schema rule definition

5.6.1 machining_feature_definition_constraints

A machining_feature_definition_constraints defines constraint for subtypes for feature_definition defined in this document.

EXPRESS specification:

*)
RULE machining_feature_definition_constraints FOR
(feature_definition);

LOCAL
  mfds : SET OF feature_definition := [];
END_LOCAL;
  mfds := QUERY(temp <* feature_definition | 'MACHINING_FEATURE_SCHEMA.MACHINING_FEATURE_DEFINITION' IN TYPEOF (temp) );
WHERE
  WR1: SIZEOF(QUERY( mfd <* mfds | NOT (SIZEOF(QUERY( pdr <* get_property_definition_representations (mfd) | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF ( pdr.used_representation ) ) ) <=1 ) ) ) = 0;
  WR2: SIZEOF(QUERY( mfd <* mfds | NOT (SIZEOF (QUERY (pd <* USEDIN (mfd, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (impl_rep <* QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF (pdr.used_representation)) | NOT (SIZEOF (QUERY (it <* impl_rep.used_representation.items | ('GEOMETRY_SCHEMA.PLACEMENT' IN TYPEOF (it)) AND (it.name = 'orientation'))) = 1))) = 0))) = 0 ) ) ) = 0;
  WR3: SIZEOF(QUERY( mfd <* mfds | NOT ((NOT (SIZEOF(['MACHINING_FEATURE_SCHEMA.ROUND_HOLE', 'MACHINING_FEATURE_SCHEMA.BOSS', 'MACHINING_FEATURE_SCHEMA.OUTSIDE_PROFILE', 'MACHINING_FEATURE_SCHEMA.REMOVAL_VOLUME', 'MACHINING_FEATURE_SCHEMA.FLAT_FACE', 'MACHINING_FEATURE_SCHEMA.POCKET', 'MACHINING_FEATURE_SCHEMA.PROTRUSION', 'MACHINING_FEATURE_SCHEMA.RIB_TOP', 'MACHINING_FEATURE_SCHEMA.ROUNDED_END', 'MACHINING_FEATURE_SCHEMA.SLOT', 'MACHINING_FEATURE_SCHEMA.STEP'] * TYPEOF(mfds)) = 1)) OR ((SIZEOF(QUERY(pdr <* get_property_definition_representations (mfd) | ( 'MACHINING_FEATURE_SCHEMA.PLANAR_SHAPE_REPRESENTATION' IN TYPEOF ( pdr.used_representation ) ) AND ( pdr.used_representation.name ='maximum feature limit'))) >=0)) ) ) ) = 0;
END_RULE;
(*

Argument definitions:

feature_definition : the set of all instances of feature_definition.

Formal propositions:

WR1: A feature_definition that is a machining_feature_definition shall have exactly one implicit representation which shall be of type shape_representation_with_parameters.

WR2: Exactly one representation_item used for the implicit representation of a feature_definition that is a machining_feature_definition shall be of type placement with a name of 'orientation'. The placement shall define a reference location and orientation for the origin of the feature_definition.

WR3: If the feature_definition is a boss, outside_profile, flat_face, removal_volume, protrusion, pocket, rib_top, round_hole, rounded_end, slot, or step the instanced_feature shall have at most one planar_shape_representation with a name of 'maximum feature limit'.



*)
END_SCHEMA;  -- machining_feature_schema
(*


© ISO 2021 — All rights reserved