| Integrated application resource: Mechanical features | ISO 10303-113:2021(E)  © ISO  | 
         
         (*
ISO/TC 184/SC 4/WG 12 N10600 - ISO 10303-113 Mechanical features - EXPRESS
*)
         
            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);
         
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; 
         
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
ENTITY shape_defining_relationship
           SUBTYPE OF (shape_aspect_relationship);
         
         END_ENTITY;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
         
         END_SCHEMA;  -- machining_feature_schema
© ISO 2021 — All rights reserved