Annex A
(normative)

AIM EXPRESS expanded listing

This annex specifies the EXPRESS schema to which an implementation shall conform, using the EXPRESS language as defined in ISO 10303-11.

NOTE The EXPRESS in this annex is the expanded form of the short form schema given in 5.2.

AIM longform EXPRESS of ISO 10303-214:2010
--
--
-- Title: Core data for automotive mechanical design processes
-- Author:  MSc. Antonio Álvaro de Assis Moura 
--              SCPM, Methodist University of Piracicaba
--              Rod. Luis Ometto (SP 306), Km 1
--              13451-900 Santa Barbara d'Oeste, SP - Brazil
--              Telephone: +55 19 31241792 or 31241810
--              Telefacsimile: +55 19 31241788 or 34551361
--              Email: labscpm@unimep.br
--              Internet: http://www.unimep.br/feau/scpm
--              Tool used: PDTec LongformGenerator V 3.1-15
-- Date: 2010-06-30
--
-- Information object registration: Schema identification:
-- { iso standard 10303 part(214) version(3) object(1) automotive-design-schema(1) }
	

SCHEMA AUTOMOTIVE_DESIGN;
 
(* Original schemas: 
  schema = action_schema ;
  schema = aic_advanced_brep ;
  schema = aic_associative_draughting_elements ;
  schema = aic_csg ;
  schema = aic_draughting_annotation ;
  schema = aic_draughting_elements ;
  schema = aic_edge_based_wireframe ;
  schema = aic_faceted_brep ;
  schema = aic_geometric_tolerances ;
  schema = aic_geometrically_bounded_2d_wireframe ;
  schema = aic_geometrically_bounded_surface ;
  schema = aic_geometrically_bounded_wireframe ;
  schema = aic_manifold_subsurface ;
  schema = aic_manifold_surface ;
  schema = aic_mechanical_design_geometric_presentation ;
  schema = aic_non_manifold_surface ;
  schema = aic_topologically_bounded_surface ;
  schema = application_context_schema ;
  schema = approval_schema ;
  schema = automotive_design ;
  schema = basic_attribute_schema ;
  schema = certification_schema ;
  schema = configuration_management_schema ;
  schema = contract_schema ;
  schema = date_time_schema ;
  schema = document_schema ;
  schema = draughting_dimension_schema ;
  schema = draughting_element_schema ;
  schema = drawing_definition_schema ;
  schema = effectivity_schema ;
  schema = experience_schema ;
  schema = external_reference_schema ;
  schema = geometric_model_schema ;
  schema = geometry_schema ;
  schema = group_schema ;
  schema = iso13584_expressions_schema ;
  schema = iso13584_generic_expressions_schema ;
  schema = kinematic_analysis_control_and_result_schema ;
  schema = kinematic_motion_representation_schema ;
  schema = kinematic_structure_schema ;
  schema = location_schema ;
  schema = management_resources_schema ;
  schema = material_property_definition_schema ;
  schema = material_property_representation_schema ;
  schema = measure_schema ;
  schema = method_definition_schema ;
  schema = person_organization_schema ;
  schema = presentation_appearance_schema ;
  schema = presentation_definition_schema ;
  schema = presentation_organization_schema ;
  schema = presentation_resource_schema ;
  schema = process_property_representation_schema ;
  schema = process_property_schema ;
  schema = product_concept_schema ;
  schema = product_definition_schema ;
  schema = product_property_definition_schema ;
  schema = product_property_representation_schema ;
  schema = product_structure_schema ;
  schema = qualifications_schema ;
  schema = qualified_measure_schema ;
  schema = representation_schema ;
  schema = security_classification_schema ;
  schema = shape_aspect_definition_schema ;
  schema = shape_dimension_schema ;
  schema = shape_tolerance_schema ;
  schema = support_resource_schema ;
  schema = topology_schema ;
*)
 
CONSTANT
  dummy_gri : geometric_representation_item := representation_item('')||
  geometric_representation_item(); -- 10303-42: geometry_schema
  dummy_tri : topological_representation_item := representation_item('')||
  topological_representation_item(); -- 10303-42: topology_schema
END_CONSTANT;
 
TYPE action_item = SELECT
  (action, action_directive, action_method, action_property, 
  action_relationship, action_request_solution, alternate_product_relationship
  , applied_action_assignment, applied_classification_assignment, 
  applied_person_and_organization_assignment, approval_status, 
  assembly_component_usage_substitute, certification, class, class_system, 
  configuration_design, configuration_effectivity, configuration_item, 
  configured_effectivity_assignment, contract, document_file, draughting_model
  , drawing_revision, executed_action, general_property, material_designation, 
  mechanical_design_geometric_presentation_representation, 
  organization_relationship, organizational_project, person_and_organization, 
  presentation_area, product, product_concept, product_concept_feature, 
  product_concept_feature_association, product_concept_feature_category, 
  product_concept_feature_category_usage, product_definition, 
  product_definition_formation, product_definition_formation_relationship, 
  product_definition_relationship, product_definition_substitute, 
  property_definition, requirement_for_action_resource, resource_property, 
  security_classification, security_classification_level, shape_aspect, 
  shape_representation, versioned_action_request);
END_TYPE; -- 10303-214: automotive_design
 
TYPE action_request_item = SELECT
  (action, action_method, action_property, action_relationship, 
  alternate_product_relationship, assembly_component_usage_substitute, 
  configuration_design, configuration_effectivity, configuration_item, 
  configured_effectivity_assignment, document_file, draughting_model, 
  drawing_revision, general_property, material_designation, 
  mechanical_design_geometric_presentation_representation, 
  organizational_project, presentation_area, product, product_concept, 
  product_concept_feature, product_concept_feature_association, 
  product_concept_feature_category, product_concept_feature_category_usage, 
  product_definition, product_definition_formation, 
  product_definition_relationship, product_definition_substitute, 
  property_definition, resource_property, shape_aspect, shape_representation);
END_TYPE; -- 10303-214: automotive_design
 
TYPE ahead_or_behind = ENUMERATION OF
  (ahead, exact, behind);
END_TYPE; -- 10303-41: date_time_schema
 
TYPE amount_of_substance_measure = REAL;
END_TYPE; -- 10303-41: measure_schema
 
TYPE angle_relator = ENUMERATION OF
  (equal, large, small);
END_TYPE; -- 10303-47: shape_dimension_schema
 
TYPE annotation_plane_element = SELECT 
  (draughting_callout, styled_item);
END_TYPE; (* declared in: draughting_element_schema *)

TYPE annotation_symbol_occurrence_item = SELECT 
  (annotation_symbol, defined_symbol);
END_TYPE; (* declared in: presentation_definition_schema *)
 
TYPE annotation_text_occurrence_item = SELECT 
  (text_literal, annotation_text, annotation_text_character, 
  defined_character_glyph, composite_text);
END_TYPE; (* declared in: presentation_definition_schema *)
  
TYPE approval_item = SELECT
  (action, action_directive, action_property, action_request_solution, 
  alternate_product_relationship, applied_action_assignment, 
  applied_classification_assignment, assembly_component_usage_substitute, 
  certification, class, class_system, configuration_design, 
  configuration_effectivity, configured_effectivity_assignment, contract, 
  document_file, draughting_model, drawing_revision, executed_action, 
  general_property, material_designation, 
  mechanical_design_geometric_presentation_representation, 
  organizational_project, presentation_area, product, product_concept, 
  product_concept_feature, product_concept_feature_association, 
  product_concept_feature_category, product_concept_feature_category_usage, 
  product_definition, product_definition_formation, 
  product_definition_relationship, product_definition_substitute, 
  property_definition, resource_property, shape_representation, 
  versioned_action_request);
END_TYPE; -- 10303-214: automotive_design
 
TYPE approximation_method = ENUMERATION OF
  (chordal_deviation, chordal_length);
END_TYPE; -- 10303-46: presentation_appearance_schema
 
TYPE area_measure = REAL;
END_TYPE; -- 10303-41: measure_schema
 
TYPE area_or_view = SELECT
  (presentation_area, presentation_view);
END_TYPE; -- 10303-46: presentation_organization_schema
 
TYPE attribute_language_item = SELECT
  (action, action_directive, action_method, action_property, 
  action_relationship, alternate_product_relationship, application_context, 
  approval_relationship, assembly_component_usage_substitute, 
  attribute_value_assignment, certification, configuration_design, 
  configuration_item, contract, data_environment, date_role, date_time_role, 
  descriptive_representation_item, document_relationship, draughting_title, 
  effectivity, effectivity_relationship, event_occurrence, external_source, 
  general_property, general_property_relationship, 
  geometric_representation_item, geometric_tolerance, group, group_relationship
  , identification_role, kinematic_pair, mapped_item, name_assignment, 
  organization_relationship, organization_role, organizational_project, 
  organizational_project_relationship, pair_actuator, 
  person_and_organization_role, presentation_layer_assignment, 
  process_product_association, product, product_concept, 
  product_concept_feature, product_concept_feature_association, 
  product_concept_relationship, product_definition, 
  product_definition_formation, product_definition_formation_relationship, 
  product_definition_relationship, product_definition_substitute, 
  product_related_product_category, property_definition, 
  property_definition_relationship, representation, representation_relationship
  , requirement_for_action_resource, resource_property, 
  resource_requirement_type, security_classification, shape_aspect, 
  shape_aspect_relationship, styled_item, time_interval_role, 
  topological_representation_item, uncertainty_measure_with_unit, 
  uncertainty_qualifier, versioned_action_request, 
  versioned_action_request_relationship);
END_TYPE; -- 10303-214: automotive_design
 
TYPE attribute_type = SELECT
  (label, text);
END_TYPE; -- 10303-41: management_resources_schema
 
TYPE axis2_placement = SELECT
  (axis2_placement_2d, axis2_placement_3d);
END_TYPE; -- 10303-42: geometry_schema
 
TYPE b_spline_curve_form = ENUMERATION OF
  (polyline_form, circular_arc, elliptic_arc, parabolic_arc, hyperbolic_arc, 
  unspecified);
END_TYPE; -- 10303-42: geometry_schema
 
TYPE b_spline_surface_form = ENUMERATION OF
  (plane_surf, cylindrical_surf, conical_surf, spherical_surf, toroidal_surf, 
  surf_of_revolution, ruled_surf, generalised_cone, quadric_surf, 
  surf_of_linear_extrusion, unspecified);
END_TYPE; -- 10303-42: geometry_schema
 
TYPE boolean_operand = SELECT
  (solid_model, half_space_solid, csg_primitive, boolean_result);
END_TYPE; -- 10303-42: geometric_model_schema
 
TYPE boolean_operator = ENUMERATION OF
  (union, intersection, difference);
END_TYPE; -- 10303-42: geometric_model_schema
 
TYPE box_characteristic_select = SELECT
  (box_height, box_width, box_slant_angle, box_rotate_angle);
END_TYPE; -- 10303-46: presentation_appearance_schema
 
TYPE box_height = positive_ratio_measure;
END_TYPE; -- 10303-46: presentation_appearance_schema
 
TYPE box_rotate_angle = plane_angle_measure;
END_TYPE; -- 10303-46: presentation_appearance_schema
 
TYPE box_slant_angle = plane_angle_measure;
END_TYPE; -- 10303-46: presentation_appearance_schema
 
TYPE box_width = positive_ratio_measure;
END_TYPE; -- 10303-46: presentation_appearance_schema
 
TYPE category_usage_item = SELECT
  (product_class);
END_TYPE; -- 10303-214: automotive_design
 
TYPE celsius_temperature_measure = REAL;
END_TYPE; -- 10303-41: measure_schema
 
TYPE central_or_parallel = ENUMERATION OF
  (central, parallel);
END_TYPE; -- 10303-46: presentation_organization_schema
 
TYPE certification_item = SELECT
  (product_definition, product_definition_formation, 
  product_definition_formation_relationship, product_definition_relationship);
END_TYPE; -- 10303-214: automotive_design
 
TYPE character_spacing_select = SELECT
  (length_measure, ratio_measure, measure_with_unit, descriptive_measure);
END_TYPE; -- 10303-46: presentation_appearance_schema
 
TYPE character_style_select = SELECT
  (text_style_for_defined_font);
END_TYPE; -- 10303-46: presentation_appearance_schema
 
TYPE characterized_action_definition = SELECT
  (action, action_method, action_method_relationship, action_relationship);
END_TYPE; -- 10303-49: process_property_schema
 
TYPE characterized_definition = SELECT
  (characterized_object, characterized_product_definition, shape_definition);
END_TYPE; -- 10303-41: product_property_definition_schema
 
TYPE characterized_material_property = SELECT
  (material_property_representation);
END_TYPE; -- 10303-45: material_property_definition_schema
 
TYPE characterized_product_definition = SELECT
  (product_definition, product_definition_relationship);
END_TYPE; -- 10303-41: product_property_definition_schema
 
TYPE characterized_resource_definition = SELECT
  (action_resource, action_resource_requirement);
END_TYPE; -- 10303-49: process_property_schema
 
TYPE class_usage_effectivity_context_item = SELECT
  (product_definition);
END_TYPE; -- 10303-214: automotive_design
 
TYPE classification_item = SELECT
  (action, action_directive, action_method, action_property, 
  action_relationship, approval_status, class, configuration_item, contract, 
  descriptive_representation_item, document_file, document_type, effectivity, 
  executed_action, feature_definition, general_feature, general_property, 
  material_designation, organizational_project, plus_minus_tolerance, 
  process_operation, product, product_concept, product_concept_feature, 
  product_concept_feature_category, product_definition, 
  product_definition_formation, product_definition_relationship, 
  property_definition, resource_property, security_classification_level, 
  shape_aspect, versioned_action_request);
END_TYPE; -- 10303-214: automotive_design
 
TYPE compound_item_definition = SELECT
  (list_representation_item, set_representation_item);
END_TYPE; -- 10303-43: representation_schema
 
TYPE configuration_design_item = SELECT
  (product_definition, product_definition_formation);
END_TYPE; -- 10303-44: configuration_management_schema
 
TYPE configured_effectivity_context_item = SELECT
  (product_concept_feature_association);
END_TYPE; -- 10303-214: automotive_design
 
TYPE configured_effectivity_item = SELECT
  (action_relationship, process_plan, product_definition, product_process_plan)
  ;
END_TYPE; -- 10303-214: automotive_design
 
TYPE context_dependent_measure = REAL;
END_TYPE; -- 10303-41: measure_schema
 
TYPE contract_item = SELECT
  (drawing_revision, executed_action, product_definition_formation);
END_TYPE; -- 10303-214: automotive_design
 
TYPE count_measure = NUMBER;
END_TYPE; -- 10303-41: measure_schema
 
TYPE csg_primitive = SELECT
  (sphere, block, right_angular_wedge, torus, right_circular_cone, 
  right_circular_cylinder);
END_TYPE; -- 10303-42: geometric_model_schema
 
TYPE csg_select = SELECT
  (boolean_result, csg_primitive);
END_TYPE; -- 10303-42: geometric_model_schema
 
TYPE curve_font_or_scaled_curve_font_select = SELECT
  (curve_style_font_select);
END_TYPE; -- 10303-46: presentation_appearance_schema
 
TYPE curve_on_surface = SELECT
  (pcurve, surface_curve, composite_curve_on_surface);
END_TYPE; -- 10303-42: geometry_schema
 
TYPE curve_or_render = SELECT
  (curve_style, curve_style_rendering);
END_TYPE; -- 10303-46: presentation_appearance_schema
 
TYPE curve_style_font_select = SELECT
  (curve_style_font, pre_defined_curve_font, externally_defined_curve_font);
END_TYPE; -- 10303-46: presentation_appearance_schema
 
TYPE curve_tolerance_deviation = positive_length_measure;
END_TYPE; -- 10303-46: presentation_appearance_schema
 
TYPE curve_tolerance_parameter = REAL;
END_TYPE; -- 10303-46: presentation_appearance_schema
 
TYPE date_and_time_item = SELECT
  (action, action_directive, action_method, action_property, 
  action_relationship, action_request_solution, alternate_product_relationship
  , applied_action_assignment, applied_classification_assignment, 
  applied_organization_assignment, applied_person_and_organization_assignment, 
  approval_person_organization, approval_status, 
  assembly_component_usage_substitute, certification, class, class_system, 
  configuration_design, configuration_item, configured_effectivity_assignment, 
  contract, document_file, draughting_model, drawing_revision, effectivity, 
  event_occurrence, executed_action, general_property, material_designation, 
  mechanical_design_geometric_presentation_representation, 
  organization_relationship, organizational_project, person_and_organization, 
  presentation_area, product, product_concept, product_concept_feature, 
  product_concept_feature_association, product_concept_feature_category, 
  product_concept_feature_category_usage, product_definition, 
  product_definition_formation, product_definition_formation_relationship, 
  product_definition_relationship, product_definition_substitute, 
  property_definition, requirement_for_action_resource, resource_property, 
  security_classification, security_classification_level, shape_representation
  , versioned_action_request);
END_TYPE; -- 10303-214: automotive_design
 
TYPE date_item = SELECT
  (action, action_directive, action_method, action_property, 
  action_relationship, action_request_solution, alternate_product_relationship
  , applied_action_assignment, applied_classification_assignment, 
  applied_organization_assignment, applied_person_and_organization_assignment, 
  approval_person_organization, approval_status, 
  assembly_component_usage_substitute, certification, class, class_system, 
  configuration_design, configuration_item, configured_effectivity_assignment, 
  contract, document_file, draughting_model, drawing_revision, effectivity, 
  event_occurrence, executed_action, general_property, material_designation, 
  mechanical_design_geometric_presentation_representation, 
  organization_relationship, organizational_project, person_and_organization, 
  presentation_area, product, product_concept, product_concept_feature, 
  product_concept_feature_association, product_concept_feature_category, 
  product_concept_feature_category_usage, product_definition, 
  product_definition_formation, product_definition_formation_relationship, 
  product_definition_relationship, product_definition_substitute, 
  property_definition, requirement_for_action_resource, resource_property, 
  security_classification, security_classification_level, shape_representation
  , versioned_action_request);
END_TYPE; -- 10303-214: automotive_design
 
TYPE date_time_or_event_occurrence = SELECT
  (date_time_select, event_occurrence);
END_TYPE; -- 10303-41: date_time_schema
 
TYPE date_time_select = SELECT
  (date, local_time, date_and_time);
END_TYPE; -- 10303-41: date_time_schema
 
TYPE day_in_month_number = INTEGER;
WHERE
  wr1 : {1 <= SELF <= 31};
END_TYPE; -- 10303-41: date_time_schema
 
TYPE defined_glyph_select = SELECT
  (externally_defined_character_glyph);
END_TYPE; -- 10303-46: presentation_definition_schema
 
TYPE defined_symbol_select = SELECT
  (pre_defined_symbol, externally_defined_symbol);
END_TYPE; -- 10303-46: presentation_definition_schema
 
TYPE derived_property_select = SELECT
  (property_definition, action_property, resource_property);
END_TYPE; -- 10303-41: product_property_definition_schema
 
TYPE description_attribute_select = SELECT
  (action_request_solution, application_context, approval_role, 
  configuration_design, date_role, date_time_role, 
  context_dependent_shape_representation, effectivity, external_source, 
  organization_role, person_and_organization_role, person_and_organization, 
  property_definition_representation, representation);
END_TYPE; -- 10303-41: basic_attribute_schema
 
TYPE descriptive_measure = STRING;
END_TYPE; -- 10303-41: measure_schema
 
TYPE dimension_count = INTEGER;
WHERE
  wr1 : SELF > 0;
END_TYPE; -- 10303-42: geometry_schema
 
TYPE dimension_extent_usage = ENUMERATION OF
  (origin, target);
END_TYPE; -- 10303-101: draughting_element_schema
 
TYPE dimensional_characteristic = SELECT
  (dimensional_location, dimensional_size);
END_TYPE; -- 10303-47: shape_dimension_schema
 
TYPE direction_count_select = SELECT
  (u_direction_count, v_direction_count);
END_TYPE; -- 10303-46: presentation_appearance_schema
 
TYPE document_reference_item = SELECT
  (action_directive, action_method, action_relationship, 
  applied_action_assignment, approval, certification, class, class_system, 
  configuration_design, configuration_item, contract, 
  descriptive_representation_item, executed_action, 
  externally_defined_dimension_definition, feature_definition, general_property
  , material_designation, organization, organizational_project, person, 
  presentation_area, process_plan, product, product_concept, 
  product_concept_feature, product_concept_feature_category, product_definition
  , product_definition_formation, product_definition_formation_relationship, 
  product_definition_process, product_definition_relationship, 
  product_definition_substitute, product_related_product_category, 
  property_definition, representation, resource_requirement_type, retention, 
  security_classification, shape_aspect, shape_aspect_relationship, 
  versioned_action_request);
END_TYPE; -- 10303-214: automotive_design
 
TYPE draughting_callout_element = SELECT
  (annotation_text_occurrence, annotation_symbol_occurrence, 
  annotation_curve_occurrence);
END_TYPE; -- 10303-101: draughting_element_schema
 
TYPE draughting_model_item_association_select = SELECT 
  (annotation_occurrence, draughting_callout);
END_TYPE; (* declared in: automotive_design *)
 
TYPE draughting_titled_item = SELECT
  (drawing_revision, drawing_sheet_revision);
END_TYPE; -- 10303-101: drawing_definition_schema
 
TYPE effectivity_item = SELECT
  (action, action_method, action_method_relationship, action_property, 
  action_relationship, assembly_component_usage_substitute, class, class_system
  , configuration_design, configuration_item, configured_effectivity_assignment
  , document_file, draughting_model, drawing_revision, general_property, 
  material_designation, mechanical_design_geometric_presentation_representation
  , presentation_area, product, product_concept, product_concept_feature, 
  product_concept_feature_association, product_concept_feature_category, 
  product_concept_feature_category_usage, product_definition, 
  product_definition_formation, product_definition_formation_relationship, 
  product_definition_relationship, product_definition_substitute, 
  property_definition, requirement_for_action_resource, resource_property, 
  security_classification, shape_aspect, shape_representation);
END_TYPE; -- 10303-214: automotive_design
 
TYPE electric_current_measure = REAL;
END_TYPE; -- 10303-41: measure_schema
 
TYPE event_occurrence_item = SELECT
  (action, action_directive, action_method, action_property, 
  action_relationship, action_request_solution, alternate_product_relationship
  , applied_action_assignment, applied_classification_assignment, 
  applied_person_and_organization_assignment, approval_status, 
  assembly_component_usage_substitute, certification, class, class_system, 
  configuration_design, configuration_effectivity, configuration_item, 
  configured_effectivity_assignment, contract, document_file, draughting_model
  , drawing_revision, executed_action, general_property, material_designation, 
  mechanical_design_geometric_presentation_representation, 
  organization_relationship, organizational_project, person_and_organization, 
  presentation_area, product, product_concept, product_concept_feature, 
  product_concept_feature_association, product_concept_feature_category, 
  product_concept_feature_category_usage, product_definition, 
  product_definition_formation, product_definition_formation_relationship, 
  product_definition_relationship, product_definition_substitute, 
  property_definition, requirement_for_action_resource, resource_property, 
  security_classification, security_classification_level, shape_representation
  , versioned_action_request);
END_TYPE; -- 10303-214: automotive_design
 
TYPE external_identification_item = SELECT
  (document_file, externally_defined_class, externally_defined_general_property
  , product_definition);
END_TYPE; -- 10303-214: automotive_design
 
TYPE fill_area_style_tile_shape_select = SELECT
  (fill_area_style_tile_symbol_with_style);
END_TYPE; -- 10303-46: presentation_appearance_schema
 
TYPE fill_style_select = SELECT
  (fill_area_style_colour, externally_defined_tile_style, fill_area_style_tiles
  , externally_defined_hatch_style, fill_area_style_hatching);
END_TYPE; -- 10303-46: presentation_appearance_schema
 
TYPE font_select = SELECT
  (pre_defined_text_font, externally_defined_text_font);
END_TYPE; -- 10303-46: presentation_resource_schema
 
TYPE founded_item_select = SELECT
  (founded_item, representation_item);
END_TYPE; -- 10303-43: representation_schema
 
TYPE geometric_set_select = SELECT
  (point, curve, surface);
END_TYPE; -- 10303-42: geometric_model_schema
 
TYPE group_item = SELECT
  (geometric_representation_item, mapped_item, product_concept_feature, 
  shape_aspect, styled_item, topological_representation_item);
END_TYPE; -- 10303-214: automotive_design
 
TYPE hour_in_day = INTEGER;
WHERE
  wr1 : {0 <= SELF < 24};
END_TYPE; -- 10303-41: date_time_schema
 
TYPE id_attribute_select = SELECT
  (action, address, product_category, property_definition, shape_aspect, 
  shape_aspect_relationship, application_context, group, organizational_project
  , representation);
END_TYPE; -- 10303-41: basic_attribute_schema
 
TYPE identification_item = SELECT
  (action, action_directive, action_method, action_property, 
  applied_identification_assignment, approval_status, class, class_system, 
  configuration_item, dimensional_size, document_file, document_type, 
  draughting_model, effectivity, general_property, measure_representation_item
  , mechanical_design_geometric_presentation_representation, organization, 
  person_and_organization, presentation_area, product, product_concept, 
  product_concept_feature, product_concept_feature_category, product_definition
  , product_definition_formation, product_definition_relationship, 
  property_definition, property_definition_relationship, 
  security_classification_level, shape_aspect_relationship, 
  shape_representation);
END_TYPE; -- 10303-214: automotive_design
 
TYPE identifier = STRING;
END_TYPE; -- 10303-41: support_resource_schema
 
TYPE interpolation_type = ENUMERATION OF
  (undefined, synchronous, linear);
END_TYPE; -- 10303-105: kinematic_analysis_control_and_result_schema
 
TYPE invisibility_context = SELECT
  (presentation_representation, presentation_set);
END_TYPE; -- 10303-46: presentation_appearance_schema
 
TYPE invisible_item = SELECT
  (styled_item, presentation_layer_assignment, representation);
END_TYPE; -- 10303-46: presentation_appearance_schema
 
TYPE kinematic_analysis_definition = SELECT
  (interpolated_configuration_sequence);
END_TYPE; -- 10303-105: kinematic_analysis_control_and_result_schema
 
TYPE kinematic_frame_background = SELECT
  (point, curve, surface);
END_TYPE; -- 10303-105: kinematic_structure_schema
 
TYPE kinematic_result = SELECT
  (interpolated_configuration_sequence, resulting_path);
END_TYPE; -- 10303-105: kinematic_analysis_control_and_result_schema
 
TYPE knot_type = ENUMERATION OF
  (uniform_knots, quasi_uniform_knots, piecewise_bezier_knots, unspecified);
END_TYPE; -- 10303-42: geometry_schema
 
TYPE label = STRING;
END_TYPE; -- 10303-41: support_resource_schema
 
TYPE language_item = SELECT
  (representation);
END_TYPE; -- 10303-214: automotive_design
 
TYPE layered_item = SELECT
  (presentation_representation, representation_item);
END_TYPE; -- 10303-46: presentation_organization_schema
 
TYPE length_measure = REAL;
END_TYPE; -- 10303-41: measure_schema
 
TYPE limit_condition = ENUMERATION OF
  (maximum_material_condition, least_material_condition, 
  regardless_of_feature_size);
END_TYPE; -- 10303-47: shape_aspect_definition_schema
 
TYPE list_of_reversible_topology_item =  LIST OF reversible_topology_item;
END_TYPE; -- 10303-42: topology_schema
 
TYPE list_representation_item =  LIST [1:?] OF representation_item;
END_TYPE; -- 10303-43: representation_schema
 
TYPE luminous_intensity_measure = REAL;
END_TYPE; -- 10303-41: measure_schema
 
TYPE marker_select = SELECT
  (marker_type, pre_defined_marker);
END_TYPE; -- 10303-46: presentation_appearance_schema
 
TYPE marker_type = ENUMERATION OF
  (dot, x, plus, asterisk, ring, square, triangle);
END_TYPE; -- 10303-46: presentation_appearance_schema
 
TYPE mass_measure = REAL;
END_TYPE; -- 10303-41: measure_schema
 
TYPE measure_value = SELECT
  (length_measure, mass_measure, time_measure, electric_current_measure, 
  thermodynamic_temperature_measure, celsius_temperature_measure, 
  amount_of_substance_measure, luminous_intensity_measure, plane_angle_measure
  , solid_angle_measure, area_measure, volume_measure, ratio_measure, 
  parameter_value, numeric_measure, context_dependent_measure, 
  descriptive_measure, positive_length_measure, positive_plane_angle_measure, 
  positive_ratio_measure, count_measure);
END_TYPE; -- 10303-41: measure_schema
 
TYPE minute_in_hour = INTEGER;
WHERE
  wr1 : {0 <= SELF <= 59};
END_TYPE; -- 10303-41: date_time_schema
 
TYPE month_in_year_number = INTEGER;
WHERE
  wr1 : {1 <= SELF <= 12};
END_TYPE; -- 10303-41: date_time_schema
 
TYPE motion_parameter_measure = SELECT
  (parameter_value, measure_with_unit);
END_TYPE; -- 10303-105: kinematic_motion_representation_schema
 
TYPE multi_language_attribute_item = SELECT
  (action, action_directive, action_method, action_property, 
  action_relationship, alternate_product_relationship, application_context, 
  approval_relationship, assembly_component_usage_substitute, certification, 
  configuration_design, configuration_item, contract, data_environment, 
  date_role, date_time_role, descriptive_representation_item, 
  document_relationship, draughting_title, effectivity, 
  effectivity_relationship, event_occurrence, external_source, general_property
  , general_property_relationship, geometric_representation_item, 
  geometric_tolerance, group, group_relationship, identification_role, 
  kinematic_pair, mapped_item, name_assignment, organization_relationship, 
  organization_role, organizational_project, 
  organizational_project_relationship, pair_actuator, 
  person_and_organization_role, presentation_layer_assignment, 
  process_product_association, product, product_concept, 
  product_concept_feature, product_concept_feature_association, 
  product_concept_relationship, product_definition, 
  product_definition_formation, product_definition_formation_relationship, 
  product_definition_relationship, product_definition_substitute, 
  product_related_product_category, property_definition, 
  property_definition_relationship, representation, representation_relationship
  , requirement_for_action_resource, resource_property, 
  resource_requirement_type, security_classification, shape_aspect, 
  shape_aspect_relationship, styled_item, time_interval_role, 
  topological_representation_item, uncertainty_measure_with_unit, 
  uncertainty_qualifier, versioned_action_request, 
  versioned_action_request_relationship);
END_TYPE; -- 10303-214: automotive_design
 
TYPE name_attribute_select = SELECT
  (action_request_solution, address, configuration_design, 
  context_dependent_shape_representation, derived_unit, effectivity, 
  person_and_organization, product_definition, product_definition_substitute, 
  property_definition_representation);
END_TYPE; -- 10303-41: basic_attribute_schema
 
TYPE name_item = SELECT
  (kinematic_joint, kinematic_link, kinematic_structure);
END_TYPE; -- 10303-214: automotive_design
 
TYPE non_negative_length_measure = length_measure;
WHERE
  wr1 : SELF >= 0.0;
END_TYPE; (* declared in: measure_schema *)
 
TYPE null_style = ENUMERATION OF
  (null);
END_TYPE; -- 10303-46: presentation_appearance_schema
 
TYPE numeric_measure = NUMBER;
END_TYPE; -- 10303-41: measure_schema
 
TYPE organization_item = SELECT
  (action, action_directive, action_method, action_property, 
  action_relationship, action_request_solution, alternate_product_relationship
  , applied_action_assignment, applied_classification_assignment, 
  applied_identification_assignment, applied_organization_assignment, 
  applied_person_and_organization_assignment, approval, approval_status, 
  assembly_component_usage_substitute, certification, class, class_system, 
  configuration_design, configuration_effectivity, configuration_item, 
  configured_effectivity_assignment, contract, document_file, draughting_model
  , drawing_revision, effectivity, event_occurrence, executed_action, 
  general_property, material_designation, 
  mechanical_design_geometric_presentation_representation, 
  organization_relationship, organizational_project, person_and_organization, 
  presentation_area, product, product_concept, product_concept_feature, 
  product_concept_feature_association, product_concept_feature_category, 
  product_concept_feature_category_usage, product_definition, 
  product_definition_formation, product_definition_formation_relationship, 
  product_definition_relationship, product_definition_substitute, 
  property_definition, requirement_for_action_resource, resource_property, 
  security_classification, security_classification_level, shape_representation
  , versioned_action_request);
END_TYPE; -- 10303-214: automotive_design
 
TYPE organizational_project_item = SELECT
  (assembly_component_usage, configuration_item, executed_action, product, 
  product_concept, product_definition, product_definition_formation);
END_TYPE; -- 10303-214: automotive_design
 
TYPE parameter_value = REAL;
END_TYPE; -- 10303-41: measure_schema
 
TYPE pcurve_or_surface = SELECT
  (pcurve, surface);
END_TYPE; -- 10303-42: geometry_schema
 
TYPE person_and_organization_item = SELECT
  (action, action_directive, action_method, action_property, 
  action_relationship, action_request_solution, alternate_product_relationship
  , applied_action_assignment, applied_classification_assignment, 
  applied_organization_assignment, applied_person_and_organization_assignment, 
  approval_status, assembly_component_usage_substitute, certification, class, 
  class_system, configuration_design, configuration_effectivity, 
  configuration_item, configured_effectivity_assignment, contract, 
  document_file, draughting_model, drawing_revision, event_occurrence, 
  executed_action, general_property, material_designation, 
  mechanical_design_geometric_presentation_representation, 
  organization_relationship, organizational_project, person_and_organization, 
  presentation_area, product, product_concept, product_concept_feature, 
  product_concept_feature_association, product_concept_feature_category, 
  product_concept_feature_category_usage, product_definition, 
  product_definition_formation, product_definition_formation_relationship, 
  product_definition_relationship, product_definition_substitute, 
  property_definition, requirement_for_action_resource, resource_property, 
  security_classification, security_classification_level, shape_representation
  , versioned_action_request);
END_TYPE; -- 10303-214: automotive_design
 
TYPE person_organization_select = SELECT
  (person, organization, person_and_organization);
END_TYPE; -- 10303-41: person_organization_schema
 
TYPE plane_angle_measure = REAL;
END_TYPE; -- 10303-41: measure_schema
 
TYPE plane_or_planar_box = SELECT 
  (plane, planar_box);
END_TYPE; (* declared in: draughting_element_schema *)

TYPE positive_length_measure = length_measure;
WHERE
  wr1 : SELF > 0.000000;
END_TYPE; -- 10303-41: measure_schema
 
TYPE positive_plane_angle_measure = plane_angle_measure;
WHERE
  wr1 : SELF > 0.000000;
END_TYPE; -- 10303-41: measure_schema
 
TYPE positive_ratio_measure = ratio_measure;
WHERE
  wr1 : SELF > 0.000000;
END_TYPE; -- 10303-41: measure_schema
 
TYPE preferred_surface_curve_representation = ENUMERATION OF
  (curve_3d, pcurve_s1, pcurve_s2);
END_TYPE; -- 10303-42: geometry_schema
 
TYPE presentable_text = STRING;
END_TYPE; -- 10303-46: presentation_resource_schema
 
TYPE presentation_representation_select = SELECT
  (presentation_representation, presentation_set);
END_TYPE; -- 10303-46: presentation_organization_schema
 
TYPE presentation_size_assignment_select = SELECT
  (presentation_view, presentation_area, area_in_set);
END_TYPE; -- 10303-46: presentation_organization_schema
 
TYPE presentation_style_select = SELECT
  (pre_defined_presentation_style, point_style, curve_style, 
  surface_style_usage, symbol_style, fill_area_style, text_style, 
  approximation_tolerance, externally_defined_style, null_style);
END_TYPE; -- 10303-46: presentation_appearance_schema
 
TYPE presented_item_select = SELECT
  (action, action_method, action_relationship, product_concept, 
  product_concept_feature, product_concept_feature_category, product_definition
  , product_definition_formation, product_definition_relationship);
END_TYPE; -- 10303-214: automotive_design
 
TYPE product_or_formation_or_definition = SELECT
  (product, product_definition_formation, product_definition);
END_TYPE; -- 10303-41: document_schema
 
TYPE product_or_presentation_space = ENUMERATION OF
  (product_shape_space, presentation_area_space);
END_TYPE; -- 10303-46: presentation_appearance_schema
 
TYPE property_or_shape_select = SELECT
  (property_definition, shape_definition);
END_TYPE; -- 10303-49: process_property_schema
 
TYPE ratio_measure = REAL;
END_TYPE; -- 10303-41: measure_schema
 
TYPE rendering_properties_select = SELECT
  (surface_style_reflectance_ambient, surface_style_transparent);
END_TYPE; -- 10303-46: presentation_appearance_schema
 
TYPE represented_definition = SELECT
  (general_property, property_definition, property_definition_relationship, 
  shape_aspect, shape_aspect_relationship);
END_TYPE; -- 10303-41: product_property_representation_schema
 
TYPE reversible_topology = SELECT
  (reversible_topology_item, list_of_reversible_topology_item, 
  set_of_reversible_topology_item);
END_TYPE; -- 10303-42: topology_schema
 
TYPE reversible_topology_item = SELECT
  (edge, path, face, face_bound, closed_shell, open_shell);
END_TYPE; -- 10303-42: topology_schema
 
TYPE rigid_placement = SELECT
  (axis2_placement_3d);
END_TYPE; -- 10303-105: kinematic_structure_schema
 
TYPE role_select = SELECT
  (action_assignment, action_request_assignment, approval_assignment, 
  approval_date_time, certification_assignment, contract_assignment, 
  document_reference, effectivity_assignment, group_assignment, name_assignment
  , security_classification_assignment);
END_TYPE; -- 10303-41: basic_attribute_schema
 
TYPE rotational_range_measure = SELECT
  (plane_angle_measure, unlimited_range);
END_TYPE; -- 10303-105: kinematic_structure_schema
 
TYPE second_in_minute = REAL;
WHERE
  wr1 : {0 <= SELF <= 60.000000};
END_TYPE; -- 10303-41: date_time_schema
 
TYPE security_classification_item = SELECT
  (action, action_directive, action_property, applied_action_assignment, 
  assembly_component_usage_substitute, class_system, configuration_design, 
  configuration_effectivity, configured_effectivity_assignment, document_file, 
  draughting_model, drawing_revision, executed_action, general_property, 
  material_designation, mechanical_design_geometric_presentation_representation
  , organizational_project, presentation_area, product, product_concept, 
  product_concept_feature, product_concept_feature_category, product_definition
  , product_definition_formation, product_definition_relationship, 
  property_definition, resource_property, shape_representation, 
  versioned_action_request);
END_TYPE; -- 10303-214: automotive_design
 
TYPE set_of_reversible_topology_item = SET OF reversible_topology_item;
END_TYPE; -- 10303-42: topology_schema
 
TYPE set_representation_item = SET [1:?] OF representation_item;
END_TYPE; -- 10303-43: representation_schema
 
TYPE shading_curve_method = ENUMERATION OF
  (constant_colour, linear_colour);
END_TYPE; -- 10303-46: presentation_appearance_schema
 
TYPE shading_surface_method = ENUMERATION OF
  (constant_shading, colour_shading, dot_shading, normal_shading);
END_TYPE; -- 10303-46: presentation_appearance_schema
 
TYPE shape_definition = SELECT
  (product_definition_shape, shape_aspect, shape_aspect_relationship);
END_TYPE; -- 10303-41: product_property_definition_schema
 
TYPE shell = SELECT
  (open_shell, closed_shell);
END_TYPE; -- 10303-42: topology_schema
 
TYPE si_prefix = ENUMERATION OF
  (exa, peta, tera, giga, mega, kilo, hecto, deca, deci, centi, milli, micro, 
  nano, pico, femto, atto);
END_TYPE; -- 10303-41: measure_schema
 
TYPE si_unit_name = ENUMERATION OF
  (metre, gram, second, ampere, kelvin, mole, candela, radian, steradian, hertz
  , newton, pascal, joule, watt, coulomb, volt, farad, ohm, siemens, weber, 
  tesla, henry, degree_celsius, lumen, lux, becquerel, gray, sievert);
END_TYPE; -- 10303-41: measure_schema
 
TYPE size_select = SELECT
  (positive_length_measure, measure_with_unit, descriptive_measure);
END_TYPE; -- 10303-46: presentation_appearance_schema
 
TYPE solid_angle_measure = REAL;
END_TYPE; -- 10303-41: measure_schema
 
TYPE source = ENUMERATION OF
  (made, bought, not_known);
END_TYPE; -- 10303-41: product_definition_schema
 
TYPE source_item = SELECT
  (identifier);
END_TYPE; -- 10303-41: external_reference_schema
 
TYPE spatial_rotation = SELECT
  (ypr_rotation, rotation_about_direction);
END_TYPE; -- 10303-105: kinematic_structure_schema
 
TYPE specified_item = SELECT
  (drawing_revision);
END_TYPE; -- 10303-214: automotive_design
 
TYPE style_context_select = SELECT
  (group, presentation_layer_assignment, representation, representation_item, 
  presentation_set);
END_TYPE; -- 10303-46: presentation_appearance_schema
 
TYPE supported_item = SELECT
  (action_directive, action, action_method);
END_TYPE; -- 10303-41: action_schema
 
TYPE surface_side = ENUMERATION OF
  (positive, negative, both);
END_TYPE; -- 10303-46: presentation_appearance_schema
 
TYPE surface_side_style_select = SELECT
  (surface_side_style);
END_TYPE; -- 10303-46: presentation_appearance_schema
 
TYPE surface_style_element_select = SELECT
  (surface_style_fill_area, surface_style_boundary, surface_style_silhouette, 
  surface_style_segmentation_curve, surface_style_control_grid, 
  surface_style_parameter_line, surface_style_rendering);
END_TYPE; -- 10303-46: presentation_appearance_schema
 
TYPE surface_tolerance_deviation = positive_length_measure;
END_TYPE; -- 10303-46: presentation_appearance_schema
 
TYPE surface_tolerance_parameter = REAL;
END_TYPE; -- 10303-46: presentation_appearance_schema
 
TYPE symbol_style_select = SELECT
  (symbol_colour);
END_TYPE; -- 10303-46: presentation_appearance_schema
 
TYPE text = STRING;
END_TYPE; -- 10303-41: support_resource_schema
 
TYPE text_alignment = label;
END_TYPE; -- 10303-46: presentation_definition_schema
 
TYPE text_delineation = label;
END_TYPE; -- 10303-46: presentation_definition_schema
 
TYPE text_or_character = SELECT
  (annotation_text, annotation_text_character, defined_character_glyph, 
  composite_text, text_literal);
END_TYPE; -- 10303-46: presentation_definition_schema
 
TYPE text_path = ENUMERATION OF
  (left, right, up, down);
END_TYPE; -- 10303-46: presentation_definition_schema
 
TYPE text_string_representation_item = SELECT 
  (text_literal, annotation_text, annotation_text_character, 
  defined_character_glyph, composite_text, axis2_placement);
END_TYPE; (* declared in: presentation_definition_schema *)
 
TYPE thermodynamic_temperature_measure = REAL;
END_TYPE; -- 10303-41: measure_schema
 
TYPE time_interval_item = SELECT
  (action, action_directive, action_method, action_property, 
  action_relationship, action_request_solution, alternate_product_relationship
  , applied_action_assignment, applied_classification_assignment, 
  applied_person_and_organization_assignment, approval_status, 
  assembly_component_usage_substitute, certification, class, class_system, 
  configuration_design, configuration_effectivity, configuration_item, 
  configured_effectivity_assignment, contract, document_file, draughting_model
  , drawing_revision, executed_action, general_property, material_designation, 
  mechanical_design_geometric_presentation_representation, 
  organization_relationship, organizational_project, person_and_organization, 
  presentation_area, product, product_concept, product_concept_feature, 
  product_concept_feature_association, product_concept_feature_category, 
  product_concept_feature_category_usage, product_definition, 
  product_definition_formation, product_definition_formation_relationship, 
  product_definition_relationship, product_definition_substitute, 
  property_definition, requirement_for_action_resource, resource_property, 
  security_classification, security_classification_level, shape_representation
  , versioned_action_request);
END_TYPE; -- 10303-214: automotive_design
 
TYPE time_measure = REAL;
END_TYPE; -- 10303-41: measure_schema
 
TYPE tolerance_deviation_select = SELECT
  (curve_tolerance_deviation, surface_tolerance_deviation);
END_TYPE; -- 10303-46: presentation_appearance_schema
 
TYPE tolerance_method_definition = SELECT
  (tolerance_value, limits_and_fits);
END_TYPE; -- 10303-47: shape_tolerance_schema
 
TYPE tolerance_parameter_select = SELECT
  (curve_tolerance_parameter, surface_tolerance_parameter);
END_TYPE; -- 10303-46: presentation_appearance_schema
 
TYPE tolerance_select = SELECT
  (approximation_tolerance_deviation, approximation_tolerance_parameter);
END_TYPE; -- 10303-46: presentation_appearance_schema
 
TYPE transformation = SELECT
  (item_defined_transformation, functionally_defined_transformation);
END_TYPE; -- 10303-43: representation_schema
 
TYPE transition_code = ENUMERATION OF
  (discontinuous, continuous, cont_same_gradient, 
  cont_same_gradient_same_curvature);
END_TYPE; -- 10303-42: geometry_schema
 
TYPE translational_range_measure = SELECT
  (length_measure, unlimited_range);
END_TYPE; -- 10303-105: kinematic_structure_schema
 
TYPE trimming_preference = ENUMERATION OF
  (cartesian, parameter, unspecified);
END_TYPE; -- 10303-42: geometry_schema
 
TYPE trimming_select = SELECT
  (cartesian_point, parameter_value);
END_TYPE; -- 10303-42: geometry_schema
 
TYPE u_direction_count = INTEGER;
WHERE
  wr1 : SELF > 1;
END_TYPE; -- 10303-46: presentation_appearance_schema
 
TYPE unit = SELECT
  (named_unit, derived_unit);
END_TYPE; -- 10303-41: measure_schema
 
TYPE unlimited_range = ENUMERATION OF
  (unlimited);
END_TYPE; -- 10303-105: kinematic_structure_schema
 
TYPE v_direction_count = INTEGER;
WHERE
  wr1 : SELF > 1;
END_TYPE; -- 10303-46: presentation_appearance_schema
 
TYPE value_qualifier = SELECT
  (precision_qualifier, type_qualifier, uncertainty_qualifier);
END_TYPE; -- 10303-45: qualified_measure_schema
 
TYPE vector_or_direction = SELECT
  (vector, direction);
END_TYPE; -- 10303-42: geometry_schema
 
TYPE volume_measure = REAL;
END_TYPE; -- 10303-41: measure_schema
 
TYPE year_number = INTEGER;
END_TYPE; -- 10303-41: date_time_schema
 
TYPE ypr_enumeration = ENUMERATION OF
  (yaw, pitch, roll);
END_TYPE; -- 10303-105: kinematic_structure_schema
 
TYPE ypr_rotation =  ARRAY [ypr_index(yaw) : ypr_index(roll)] OF
  plane_angle_measure;
END_TYPE; -- 10303-105: kinematic_structure_schema
 
ENTITY abs_function
SUBTYPE OF (unary_function_call);
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY acos_function
SUBTYPE OF (unary_function_call);
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY action;
  name : label;
  description :  OPTIONAL text;
  chosen_method : action_method;
DERIVE
  id : identifier := get_id_value(SELF);
WHERE
  wr1 : SIZEOF(USEDIN(SELF, 'AUTOMOTIVE_DESIGN.ID_ATTRIBUTE.IDENTIFIED_ITEM'
    )) <= 1;
END_ENTITY; -- 10303-41: action_schema
 
ENTITY action_assignment ABSTRACT SUPERTYPE;
  assigned_action : action;
DERIVE
  role : object_role := get_role(SELF);
WHERE
  wr1 : SIZEOF(USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
END_ENTITY; -- 10303-41: management_resources_schema
 
ENTITY action_directive;
  name : label;
  description :  OPTIONAL text;
  analysis : text;
  comment : text;
  requests : SET [1:?] OF versioned_action_request;
END_ENTITY; -- 10303-41: action_schema
 
ENTITY action_method;
  name : label;
  description :  OPTIONAL text;
  consequence : text;
  purpose : text;
END_ENTITY; -- 10303-41: action_schema
 
ENTITY action_method_relationship;
  name : label;
  description :  OPTIONAL text;
  relating_method : action_method;
  related_method : action_method;
END_ENTITY; -- 10303-41: action_schema
 
ENTITY action_property;
  name : label;
  description : text;
  definition : characterized_action_definition;
END_ENTITY; -- 10303-49: process_property_schema
 
ENTITY action_property_representation;
  name : label;
  description : text;
  property : action_property;
  representation : representation;
END_ENTITY; -- 10303-49: process_property_representation_schema
 
ENTITY action_relationship;
  name : label;
  description :  OPTIONAL text;
  relating_action : action;
  related_action : action;
END_ENTITY; -- 10303-41: action_schema
 
ENTITY action_request_assignment ABSTRACT SUPERTYPE;
  assigned_action_request : versioned_action_request;
DERIVE
  role : object_role := get_role(SELF);
WHERE
  wr1 : SIZEOF(USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
END_ENTITY; -- 10303-41: management_resources_schema
 
ENTITY action_request_solution;
  method : action_method;
  request : versioned_action_request;
DERIVE
  description : text := get_description_value(SELF);
  name : label := get_name_value(SELF);
WHERE
  wr1 : SIZEOF(USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
  wr2 : SIZEOF(USEDIN(SELF, 'AUTOMOTIVE_DESIGN.NAME_ATTRIBUTE.NAMED_ITEM'))
     <= 1;
END_ENTITY; -- 10303-41: action_schema
 
ENTITY action_request_status;
  status : label;
  assigned_request : versioned_action_request;
END_ENTITY; -- 10303-41: action_schema
 
ENTITY action_resource;
  name : label;
  description :  OPTIONAL text;
  usage : SET [1:?] OF supported_item;
  kind : action_resource_type;
END_ENTITY; -- 10303-41: action_schema
 
ENTITY action_resource_requirement;
  name : label;
  description : text;
  kind : resource_requirement_type;
  operations : SET [1:?] OF characterized_action_definition;
END_ENTITY; -- 10303-49: process_property_schema
 
ENTITY action_resource_type;
  name : label;
END_ENTITY; -- 10303-41: action_schema
 
ENTITY action_status;
  status : label;
  assigned_action : executed_action;
END_ENTITY; -- 10303-41: action_schema
 
ENTITY address;
  internal_location :  OPTIONAL label;
  street_number :  OPTIONAL label;
  street :  OPTIONAL label;
  postal_box :  OPTIONAL label;
  town :  OPTIONAL label;
  region :  OPTIONAL label;
  postal_code :  OPTIONAL label;
  country :  OPTIONAL label;
  facsimile_number :  OPTIONAL label;
  telephone_number :  OPTIONAL label;
  electronic_mail_address :  OPTIONAL label;
  telex_number :  OPTIONAL label;
DERIVE
  name : label := get_name_value(SELF);
  url : identifier := get_id_value(SELF);
WHERE
  wr1 : EXISTS(internal_location) OR EXISTS(street_number) OR EXISTS(street) OR
     EXISTS(postal_box) OR EXISTS(town) OR EXISTS(region) OR EXISTS(postal_code
    ) OR EXISTS(country) OR EXISTS(facsimile_number) OR EXISTS(telephone_number
    ) OR EXISTS(electronic_mail_address) OR EXISTS(telex_number);
END_ENTITY; -- 10303-41: person_organization_schema
 
ENTITY advanced_brep_shape_representation
SUBTYPE OF (shape_representation);
WHERE
  wr1 : SIZEOF(QUERY(it <* SELF.items | NOT (SIZEOF([
    'AUTOMOTIVE_DESIGN.MANIFOLD_SOLID_BREP', 
    'AUTOMOTIVE_DESIGN.FACETED_BREP', 'AUTOMOTIVE_DESIGN.MAPPED_ITEM', 
    'AUTOMOTIVE_DESIGN.AXIS2_PLACEMENT_3D'] * TYPEOF(it)) = 1))) = 0;
  wr2 : SIZEOF(QUERY(it <* SELF.items | SIZEOF([
    'AUTOMOTIVE_DESIGN.MANIFOLD_SOLID_BREP', 
    'AUTOMOTIVE_DESIGN.MAPPED_ITEM'] * TYPEOF(it)) = 1)) > 0;
  wr3 : SIZEOF(QUERY(msb <* QUERY(it <* SELF.items | 
    'AUTOMOTIVE_DESIGN.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) | NOT (SIZEOF(
    QUERY(csh <* msb_shells(msb) | NOT (SIZEOF(QUERY(fcs <* csh\
    connected_face_set.cfs_faces | NOT ('AUTOMOTIVE_DESIGN.ADVANCED_FACE' IN
     TYPEOF(fcs)))) = 0))) = 0))) = 0;
  wr4 : SIZEOF(QUERY(msb <* QUERY(it <* items | 
    'AUTOMOTIVE_DESIGN.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) | 
    'AUTOMOTIVE_DESIGN.ORIENTED_CLOSED_SHELL' IN TYPEOF(msb\
    manifold_solid_brep.outer))) = 0;
  wr5 : SIZEOF(QUERY(brv <* QUERY(it <* items | 
    'AUTOMOTIVE_DESIGN.BREP_WITH_VOIDS' IN TYPEOF(it)) | NOT (SIZEOF(QUERY(
    csh <* brv\brep_with_voids.voids | csh\oriented_closed_shell.orientation))
     = 0))) = 0;
  wr6 : SIZEOF(QUERY(mi <* QUERY(it <* items | 
    'AUTOMOTIVE_DESIGN.MAPPED_ITEM' IN TYPEOF(it)) | NOT (
    'AUTOMOTIVE_DESIGN.ADVANCED_BREP_SHAPE_REPRESENTATION' IN TYPEOF(mi\
    mapped_item.mapping_source.mapped_representation)))) = 0;
END_ENTITY; -- 10303-514: aic_advanced_brep
 
ENTITY advanced_face
SUBTYPE OF (face_surface);
WHERE
  wr1 : SIZEOF(['AUTOMOTIVE_DESIGN.ELEMENTARY_SURFACE', 
    'AUTOMOTIVE_DESIGN.B_SPLINE_SURFACE', 
    'AUTOMOTIVE_DESIGN.SWEPT_SURFACE'] * TYPEOF(face_geometry)) = 1;
  wr2 : SIZEOF(QUERY(elp_fbnds <* QUERY(bnds <* bounds | 
    'AUTOMOTIVE_DESIGN.EDGE_LOOP' IN TYPEOF(bnds.bound)) | NOT (SIZEOF(
    QUERY(oe <* elp_fbnds.bound\path.edge_list | NOT (
    'AUTOMOTIVE_DESIGN.EDGE_CURVE' IN TYPEOF(oe\oriented_edge.edge_element))
    )) = 0))) = 0;
  wr3 : SIZEOF(QUERY(elp_fbnds <* QUERY(bnds <* bounds | 
    'AUTOMOTIVE_DESIGN.EDGE_LOOP' IN TYPEOF(bnds.bound)) | NOT (SIZEOF(
    QUERY(oe <* elp_fbnds.bound\path.edge_list | NOT (SIZEOF([
    'AUTOMOTIVE_DESIGN.LINE', 'AUTOMOTIVE_DESIGN.CONIC', 
    'AUTOMOTIVE_DESIGN.POLYLINE', 'AUTOMOTIVE_DESIGN.SURFACE_CURVE', 
    'AUTOMOTIVE_DESIGN.B_SPLINE_CURVE'] * TYPEOF(oe.edge_element\edge_curve.
    edge_geometry)) = 1))) = 0))) = 0;
  wr4 : SIZEOF(QUERY(elp_fbnds <* QUERY(bnds <* bounds | 
    'AUTOMOTIVE_DESIGN.EDGE_LOOP' IN TYPEOF(bnds.bound)) | NOT (SIZEOF(
    QUERY(oe <* elp_fbnds.bound\path.edge_list | NOT ((
    'AUTOMOTIVE_DESIGN.VERTEX_POINT' IN TYPEOF(oe\edge.edge_start)) AND (
    'AUTOMOTIVE_DESIGN.CARTESIAN_POINT' IN TYPEOF(oe\edge.edge_start\
    vertex_point.vertex_geometry)) AND ('AUTOMOTIVE_DESIGN.VERTEX_POINT' IN 
    TYPEOF(oe\edge.edge_end)) AND ('AUTOMOTIVE_DESIGN.CARTESIAN_POINT' IN 
    TYPEOF(oe\edge.edge_end\vertex_point.vertex_geometry))))) = 0))) = 0;
  wr5 : SIZEOF(QUERY(elp_fbnds <* QUERY(bnds <* bounds | 
    'AUTOMOTIVE_DESIGN.EDGE_LOOP' IN TYPEOF(bnds.bound)) | 
    'AUTOMOTIVE_DESIGN.ORIENTED_PATH' IN TYPEOF(elp_fbnds.bound))) = 0;
  wr6 : NOT ('AUTOMOTIVE_DESIGN.SWEPT_SURFACE' IN TYPEOF(face_geometry)) OR 
    (SIZEOF(['AUTOMOTIVE_DESIGN.LINE', 'AUTOMOTIVE_DESIGN.CONIC', 
    'AUTOMOTIVE_DESIGN.POLYLINE', 'AUTOMOTIVE_DESIGN.B_SPLINE_CURVE'] * 
    TYPEOF(face_geometry\swept_surface.swept_curve)) = 1);
  wr7 : SIZEOF(QUERY(vlp_fbnds <* QUERY(bnds <* bounds | 
    'AUTOMOTIVE_DESIGN.VERTEX_LOOP' IN TYPEOF(bnds.bound)) | NOT ((
    'AUTOMOTIVE_DESIGN.VERTEX_POINT' IN TYPEOF(vlp_fbnds\face_bound.bound\
    vertex_loop.loop_vertex)) AND ('AUTOMOTIVE_DESIGN.CARTESIAN_POINT' IN 
    TYPEOF(vlp_fbnds\face_bound.bound\vertex_loop.loop_vertex\vertex_point.
    vertex_geometry))))) = 0;
  wr8 : SIZEOF(QUERY(bnd <* bounds | NOT (SIZEOF([
    'AUTOMOTIVE_DESIGN.EDGE_LOOP', 'AUTOMOTIVE_DESIGN.VERTEX_LOOP'] * 
    TYPEOF(bnd.bound)) = 1))) = 0;
  wr9 : SIZEOF(QUERY(elp_fbnds <* QUERY(bnds <* bounds | 
    'AUTOMOTIVE_DESIGN.EDGE_LOOP' IN TYPEOF(bnds.bound)) | NOT (SIZEOF(
    QUERY(oe <* elp_fbnds.bound\path.edge_list | (
    'AUTOMOTIVE_DESIGN.SURFACE_CURVE' IN TYPEOF(oe\oriented_edge.
    edge_element\edge_curve.edge_geometry)) AND NOT (SIZEOF(QUERY(sc_ag <* oe.
    edge_element\edge_curve.edge_geometry\surface_curve.associated_geometry | 
    NOT ('AUTOMOTIVE_DESIGN.PCURVE' IN TYPEOF(sc_ag)))) = 0))) = 0))) = 0;
  wr10 : (NOT ('AUTOMOTIVE_DESIGN.SWEPT_SURFACE' IN TYPEOF(face_geometry)) 
    OR NOT ('AUTOMOTIVE_DESIGN.POLYLINE' IN TYPEOF(face_geometry\
    swept_surface.swept_curve)) OR (SIZEOF(face_geometry\swept_surface.swept_curve\
    polyline.points) >= 3)) AND (SIZEOF(QUERY(elp_fbnds <* QUERY(
    bnds <* bounds | 'AUTOMOTIVE_DESIGN.EDGE_LOOP' IN TYPEOF(bnds.bound)) | 
    NOT (SIZEOF(QUERY(oe <* elp_fbnds.bound\path.edge_list | (
    'AUTOMOTIVE_DESIGN.POLYLINE' IN TYPEOF(oe\oriented_edge.edge_element\
    edge_curve.edge_geometry)) AND NOT (SIZEOF(oe\oriented_edge.edge_element\
    edge_curve.edge_geometry\polyline.points) >= 3))) = 0))) = 0);
END_ENTITY; -- 10303-511: aic_topologically_bounded_surface
 
ENTITY alternate_product_relationship;
  name : label;
  definition :  OPTIONAL text;
  alternate : product;
  base : product;
  basis : text;
UNIQUE
  ur1 : alternate, base;
WHERE
  wr1 : alternate :<>: base;
END_ENTITY; -- 10303-44: product_structure_schema
 
ENTITY amount_of_substance_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
  wr1 : 'AUTOMOTIVE_DESIGN.AMOUNT_OF_SUBSTANCE_UNIT' IN TYPEOF(SELF\
    measure_with_unit.unit_component);
END_ENTITY; -- 10303-41: measure_schema
 
ENTITY amount_of_substance_unit
SUBTYPE OF (named_unit);
WHERE
  wr1 : (SELF\named_unit.dimensions.length_exponent = 0.000000) AND (SELF\
    named_unit.dimensions.mass_exponent = 0.000000) AND (SELF\named_unit
    .dimensions.time_exponent = 0.000000) AND (SELF\named_unit.dimensions.
    electric_current_exponent = 0.000000) AND (SELF\named_unit.dimensions.
    thermodynamic_temperature_exponent = 0.000000) AND (SELF\named_unit.
    dimensions.amount_of_substance_exponent = 1.000000) AND (SELF\named_unit.
    dimensions.luminous_intensity_exponent = 0.000000);
END_ENTITY; -- 10303-41: measure_schema
 
ENTITY and_expression
SUBTYPE OF (multiple_arity_boolean_expression);
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY angular_dimension
SUBTYPE OF (dimension_curve_directed_callout);
END_ENTITY; -- 10303-506: aic_draughting_elements
 
ENTITY angular_location
SUBTYPE OF (dimensional_location);
  angle_selection : angle_relator;
END_ENTITY; -- 10303-47: shape_dimension_schema
 
ENTITY angular_size
SUBTYPE OF (dimensional_size);
  angle_selection : angle_relator;
END_ENTITY; -- 10303-47: shape_dimension_schema
 
ENTITY angularity_tolerance
SUBTYPE OF (geometric_tolerance_with_datum_reference);
WHERE
  wr1 : SIZEOF(SELF\geometric_tolerance_with_datum_reference.datum_system) < 3;
END_ENTITY; -- 10303-519: aic_geometric_tolerances
 
ENTITY annotation_curve_occurrence
SUBTYPE OF (annotation_occurrence);
WHERE
  wr1 : 'AUTOMOTIVE_DESIGN.CURVE' IN TYPEOF(SELF\styled_item.item);
END_ENTITY; -- 10303-46: presentation_definition_schema
 
ENTITY annotation_fill_area
SUBTYPE OF (geometric_representation_item);
  boundaries : SET [1:?] OF curve;
END_ENTITY; -- 10303-46: presentation_definition_schema
 
ENTITY annotation_fill_area_occurrence
SUBTYPE OF (annotation_occurrence);
  fill_style_target : point;
WHERE
  wr1 : 'AUTOMOTIVE_DESIGN.ANNOTATION_FILL_AREA' IN TYPEOF(SELF.item);
END_ENTITY; -- 10303-46: presentation_definition_schema
 
ENTITY annotation_occurrence
SUPERTYPE OF (ONEOF (annotation_curve_occurrence, 
annotation_fill_area_occurrence, annotation_text_occurrence, 
annotation_symbol_occurrence))
SUBTYPE OF (styled_item);
WHERE
  wr1 : 'AUTOMOTIVE_DESIGN.GEOMETRIC_REPRESENTATION_ITEM' IN TYPEOF(SELF);
END_ENTITY; -- 10303-46: presentation_definition_schema
 
ENTITY annotation_occurrence_associativity
SUBTYPE OF (annotation_occurrence_relationship);
WHERE
  wr1 : SIZEOF(TYPEOF(SELF.related_annotation_occurrence) * [
    'AUTOMOTIVE_DESIGN.ANNOTATION_FILL_AREA_OCCURRENCE', 
    'AUTOMOTIVE_DESIGN.PROJECTION_CURVE', 
    'AUTOMOTIVE_DESIGN.LEADER_CURVE']) = 1;
END_ENTITY; -- 10303-520: aic_associative_draughting_elements
 
ENTITY annotation_occurrence_relationship;
  name : label;
  description : text;
  relating_annotation_occurrence : annotation_occurrence;
  related_annotation_occurrence : annotation_occurrence;
END_ENTITY; -- 10303-46: presentation_definition_schema
 
ENTITY annotation_plane
SUBTYPE OF (annotation_occurrence, geometric_representation_item);
  elements :  OPTIONAL SET [1:?] OF annotation_plane_element;
  SELF\styled_item.item : plane_or_planar_box;
WHERE
  wr1 : SELF\geometric_representation_item.dim = 3;
  wr2 : NOT ('AUTOMOTIVE_DESIGN_LF.' + 'PLANAR_BOX' IN TYPEOF(SELF\styled_item.
    item)) OR ('AUTOMOTIVE_DESIGN_LF.' + 'AXIS2_PLACEMENT_3D' IN TYPEOF(SELF\
    styled_item.item\planar_box.placement));
  wr3 : ('AUTOMOTIVE_DESIGN_LF.' + 'PLANAR_BOX' IN TYPEOF(SELF\styled_item.item
    )) AND ('AUTOMOTIVE_DESIGN_LF.' + 'CURVE_STYLE' IN TYPEOF(SELF\styled_item.
    styles[1]\presentation_style_assignment.styles[1])) OR (
    'AUTOMOTIVE_DESIGN_LF.' + 'PLANE' IN TYPEOF(SELF\styled_item.item)) AND (
    'AUTOMOTIVE_DESIGN_LF.' + 'FILL_AREA_STYLE' IN TYPEOF(SELF\styled_item.
    styles[1]\presentation_style_assignment.styles[1]));
  wr4 : (SIZEOF(SELF\styled_item.styles) = 1) AND (SIZEOF(SELF\styled_item.
    styles[1]\presentation_style_assignment.styles) = 1);
END_ENTITY; (* declared in: draughting_element_schema *)
 
ENTITY annotation_subfigure_occurrence
SUBTYPE OF (annotation_symbol_occurrence);
WHERE
  wr1 : SIZEOF(QUERY(sty <* SELF.styles | NOT (SIZEOF(sty.styles) = 1))) = 0;
  wr2 : SIZEOF(QUERY(sty <* SELF.styles | NOT (
    'AUTOMOTIVE_DESIGN.NULL_STYLE' IN TYPEOF(sty.styles[1])))) = 0;
  wr3 : 'AUTOMOTIVE_DESIGN.ANNOTATION_SYMBOL' IN TYPEOF(SELF.item);
  wr4 : 'AUTOMOTIVE_DESIGN.DRAUGHTING_SUBFIGURE_REPRESENTATION' IN TYPEOF(
    SELF.item\mapped_item.mapping_source.mapped_representation);
END_ENTITY; -- 10303-504: aic_draughting_annotation
 
ENTITY annotation_symbol
SUBTYPE OF (mapped_item);
WHERE
  wr1 : 'AUTOMOTIVE_DESIGN.SYMBOL_REPRESENTATION_MAP' IN TYPEOF(SELF\
    mapped_item.mapping_source);
  wr2 : 'AUTOMOTIVE_DESIGN.SYMBOL_TARGET' IN TYPEOF(SELF\mapped_item.
    mapping_target);
  wr3 : 'AUTOMOTIVE_DESIGN.GEOMETRIC_REPRESENTATION_ITEM' IN TYPEOF(SELF);
END_ENTITY; -- 10303-46: presentation_definition_schema
 
ENTITY annotation_symbol_occurrence
SUBTYPE OF (annotation_occurrence);
WHERE
  wr1 : SIZEOF(['AUTOMOTIVE_DESIGN.ANNOTATION_SYMBOL', 
    'AUTOMOTIVE_DESIGN.DEFINED_SYMBOL'] * TYPEOF(SELF\styled_item.item)) > 0
    ;
END_ENTITY; -- 10303-46: presentation_definition_schema
 
ENTITY annotation_text
SUBTYPE OF (mapped_item);
WHERE
  wr1 : 'AUTOMOTIVE_DESIGN.AXIS2_PLACEMENT' IN TYPEOF(SELF\mapped_item.
    mapping_target);
  wr2 : 'AUTOMOTIVE_DESIGN.TEXT_STRING_REPRESENTATION' IN TYPEOF(SELF\
    mapped_item.mapping_source.mapped_representation);
  wr3 : 'AUTOMOTIVE_DESIGN.GEOMETRIC_REPRESENTATION_ITEM' IN TYPEOF(SELF);
END_ENTITY; -- 10303-46: presentation_definition_schema
 
ENTITY annotation_text_character
SUBTYPE OF (mapped_item);
  alignment : text_alignment;
WHERE
  wr1 : 'AUTOMOTIVE_DESIGN.CHARACTER_GLYPH_SYMBOL' IN TYPEOF(SELF\
    mapped_item.mapping_source.mapped_representation);
  wr2 : 'AUTOMOTIVE_DESIGN.AXIS2_PLACEMENT' IN TYPEOF(SELF\mapped_item.
    mapping_target);
  wr3 : 'AUTOMOTIVE_DESIGN.GEOMETRIC_REPRESENTATION_ITEM' IN TYPEOF(SELF);
END_ENTITY; -- 10303-46: presentation_definition_schema
 
ENTITY annotation_text_occurrence
SUBTYPE OF (annotation_occurrence);
WHERE
  wr1 : SIZEOF(['AUTOMOTIVE_DESIGN.TEXT_LITERAL', 
    'AUTOMOTIVE_DESIGN.ANNOTATION_TEXT', 
    'AUTOMOTIVE_DESIGN.ANNOTATION_TEXT_CHARACTER', 
    'AUTOMOTIVE_DESIGN.DEFINED_CHARACTER_GLYPH', 
    'AUTOMOTIVE_DESIGN.COMPOSITE_TEXT'] * TYPEOF(SELF\styled_item.item)) > 0
    ;
END_ENTITY; -- 10303-46: presentation_definition_schema
 
ENTITY apex
SUBTYPE OF (derived_shape_aspect);
END_ENTITY; -- 10303-47: shape_aspect_definition_schema
 
ENTITY application_context;
  application : label;
DERIVE
  description : text := get_description_value(SELF);
  id : identifier := get_id_value(SELF);
INVERSE
  context_elements : SET [1:?] OF application_context_element FOR 
  frame_of_reference;
WHERE
  wr1 : SIZEOF(USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
  wr2 : SIZEOF(USEDIN(SELF, 'AUTOMOTIVE_DESIGN.ID_ATTRIBUTE.IDENTIFIED_ITEM'
    )) <= 1;
END_ENTITY; -- 10303-41: application_context_schema
 
ENTITY application_context_element
SUPERTYPE OF (ONEOF (product_concept_context, product_context, 
product_definition_context));
  name : label;
  frame_of_reference : application_context;
END_ENTITY; -- 10303-41: application_context_schema
 
ENTITY application_context_relationship;
  name : label;
  description :  OPTIONAL text;
  relating_context : application_context;
  related_context : application_context;
END_ENTITY; -- 10303-41: application_context_schema
 
ENTITY application_protocol_definition;
  status : label;
  application_interpreted_model_schema_name : label;
  application_protocol_year : year_number;
  application : application_context;
END_ENTITY; -- 10303-41: application_context_schema
 
ENTITY applied_action_assignment
SUBTYPE OF (action_assignment);
  items : SET [1:?] OF action_item;
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY applied_action_request_assignment
SUBTYPE OF (action_request_assignment);
  items : SET [1:?] OF action_request_item;
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY applied_approval_assignment
SUBTYPE OF (approval_assignment);
  items : SET [1:?] OF approval_item;
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY applied_area
SUBTYPE OF (shape_aspect);
WHERE
  wr1 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | 
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation))) = 1;
  wr2 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND {2 <= SIZEOF(pdr.used_representation.items)
     <= 3})) = 1;
  wr3 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | NOT (i.name IN ['orientation', 'effective length', 'maximum length'
    ]))) > 0))) = 0;
  wr4 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'orientation') AND ('AUTOMOTIVE_DESIGN.' + 'PLACEMENT'
     IN TYPEOF(i)))) = 1))) = 1;
  wr5 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'effective length') AND (SIZEOF(['AUTOMOTIVE_DESIGN.'
     + 'MEASURE_REPRESENTATION_ITEM', 'AUTOMOTIVE_DESIGN.' + 
    'LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2))) = 1))) = 1;
  wr6 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'effective length') AND (SIZEOF(['AUTOMOTIVE_DESIGN.'
     + 'MEASURE_REPRESENTATION_ITEM', 'AUTOMOTIVE_DESIGN.' + 
    'LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2))) = 1))) = 1;
  wr7 : SIZEOF(QUERY(sar <* USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)) AND
     (sar.description = 'applied area usage') AND (('AUTOMOTIVE_DESIGN.' + 
    'THREAD' IN TYPEOF(sar.relating_shape_aspect.of_shape.definition)) OR (
    'AUTOMOTIVE_DESIGN.' + 'EXTERNALLY_DEFINED_FEATURE_DEFINITION' IN TYPEOF
    (sar.relating_shape_aspect.of_shape.definition)) AND (sar.
    relating_shape_aspect.of_shape.definition\externally_defined_item.item_id
     = 'external thread') AND (sar.relating_shape_aspect.of_shape.definition\
    externally_defined_item.source.source_id = 'external thread specification')
    ) AND (sar.relating_shape_aspect.of_shape.definition.description = 
    'partial area occurrence'))) = 1;
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY applied_certification_assignment
SUBTYPE OF (certification_assignment);
  items : SET [1:?] OF certification_item;
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY applied_classification_assignment
SUBTYPE OF (classification_assignment);
  items : SET [1:?] OF classification_item;
WHERE
  wr1 : NOT ('AUTOMOTIVE_DESIGN.' + 'CLASS' IN TYPEOF(SELF.assigned_class)) 
    OR (SIZEOF(QUERY(i <* SELF.items | SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'ACTION', 'AUTOMOTIVE_DESIGN.' + 'ACTION_DIRECTIVE', 
    'AUTOMOTIVE_DESIGN.' + 'ACTION_METHOD', 'AUTOMOTIVE_DESIGN.' + 
    'ACTION_PROPERTY', 'AUTOMOTIVE_DESIGN.' + 'ACTION_RELATIONSHIP', 
    'AUTOMOTIVE_DESIGN.' + 'APPROVAL_STATUS', 'AUTOMOTIVE_DESIGN.' + 
    'ASSEMBLY_COMPONENT_USAGE', 'AUTOMOTIVE_DESIGN.' + 'CONFIGURATION_ITEM'
    , 'AUTOMOTIVE_DESIGN.' + 'CONTRACT', 'AUTOMOTIVE_DESIGN.' + 
    'DOCUMENT_FILE', 'AUTOMOTIVE_DESIGN.' + 'DOCUMENT_TYPE', 
    'AUTOMOTIVE_DESIGN.' + 'FEATURE_DEFINITION', 'AUTOMOTIVE_DESIGN.' + 
    'GENERAL_PROPERTY', 'AUTOMOTIVE_DESIGN.' + 'MATERIAL_DESIGNATION', 
    'AUTOMOTIVE_DESIGN.' + 'ORGANIZATIONAL_PROJECT', 'AUTOMOTIVE_DESIGN.'
     + 'PRODUCT', 'AUTOMOTIVE_DESIGN.' + 'PRODUCT_CONCEPT', 
    'AUTOMOTIVE_DESIGN.' + 'PRODUCT_CONCEPT_FEATURE_CATEGORY', 
    'AUTOMOTIVE_DESIGN.' + 'PRODUCT_DEFINITION', 'AUTOMOTIVE_DESIGN.' + 
    'PRODUCT_DEFINITION_FORMATION', 'AUTOMOTIVE_DESIGN.' + 
    'PROPERTY_DEFINITION', 'AUTOMOTIVE_DESIGN.' + 'RESOURCE_PROPERTY', 
    'AUTOMOTIVE_DESIGN.' + 'SECURITY_CLASSIFICATION_LEVEL', 
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_ASPECT', 'AUTOMOTIVE_DESIGN.' + 
    'VERSIONED_ACTION_REQUEST'] * TYPEOF(i)) <> 1)) = 0);
  wr2 : NOT (('AUTOMOTIVE_DESIGN.' + 'GROUP' IN TYPEOF(SELF.assigned_class))
     AND (SELF.assigned_class\group.name = 'E') AND (SELF.assigned_class\group
    .description = 'dimensioning principle')) OR (SIZEOF(QUERY(i <* SELF.items
     | NOT ('AUTOMOTIVE_DESIGN.' + 'PLUS_MINUS_TOLERANCE' IN TYPEOF(i)))) = 
    0);
  wr3 : NOT (('AUTOMOTIVE_DESIGN.' + 'CLASS_SYSTEM' IN TYPEOF(SELF.
    assigned_class)) AND (SELF.role.name = 'class system membership')) OR (
    SIZEOF(QUERY(i <* SELF.items | SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'APPROVAL_STATUS', 'AUTOMOTIVE_DESIGN.' + 'CLASS', 
    'AUTOMOTIVE_DESIGN.' + 'DESCRIPTIVE_REPRESENTATION_ITEM', 
    'AUTOMOTIVE_DESIGN.' + 'DOCUMENT_TYPE', 'AUTOMOTIVE_DESIGN.' + 
    'PLANAR_EXTENT', 'AUTOMOTIVE_DESIGN.' + 'SECURITY_CLASSIFICATION_LEVEL']
     * TYPEOF(i)) <> 1)) = 0);
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY applied_contract_assignment
SUBTYPE OF (contract_assignment);
  items : SET [1:?] OF contract_item;
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY applied_date_and_time_assignment
SUBTYPE OF (date_and_time_assignment);
  items : SET [1:?] OF date_and_time_item;
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY applied_date_assignment
SUBTYPE OF (date_assignment);
  items : SET [1:?] OF date_item;
WHERE
  wr1 : NOT (SELF.role.name = 'actual end') OR item_correlation(SELF.items, [
    'ACTION', 'ORGANIZATIONAL_PROJECT', 'EFFECTIVITY']);
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY applied_document_reference
SUBTYPE OF (document_reference);
  items : SET [1:?] OF document_reference_item;
WHERE
  wr1 : NOT (SELF.role.name = 'general tolerance definition') OR 
    item_correlation(SELF.items, ['REPRESENTATION']);
  wr2 : (SELF.role.name = 'general tolerance definition') OR item_correlation(
    SELF.items, ['ACTION', 'ACTION_DIRECTIVE', 'ACTION_METHOD', 
    'ACTION_RELATIONSHIP', 'APPLIED_ACTION_ASSIGNMENT', 'APPROVAL', 
    'CERTIFICATION', 'CLASS', 'CLASS_SYSTEM', 'CONFIGURATION_DESIGN', 
    'CONFIGURATION_ITEM', 'CONTRACT', 'FEATURE_DEFINITION', 'GENERAL_PROPERTY'
    , 'MATERIAL_DESIGNATION', 'ORGANIZATION', 'ORGANIZATIONAL_PROJECT', 
    'PERSON', 'PRODUCT_CONCEPT', 'PRODUCT_CONCEPT_FEATURE', 
    'PRODUCT_CONCEPT_FEATURE_CATEGORY', 'PRODUCT_DEFINITION', 
    'PRODUCT_DEFINITION_FORMATION', 'PRODUCT_DEFINITION_FORMATION_RELATIONSHIP'
    , 'PRODUCT_DEFINITION_RELATIONSHIP', 'PRODUCT_DEFINITION_SUBSTITUTE', 
    'PRODUCT_RELATED_PRODUCT_CATEGORY', 'PROPERTY_DEFINITION', 'REPRESENTATION'
    , 'RESOURCE_REQUIREMENT_TYPE', 'SECURITY_CLASSIFICATION', 'SHAPE_ASPECT', 
    'SHAPE_ASPECT_RELATIONSHIP', 'VERSIONED_ACTION_REQUEST']);
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY applied_document_usage_constraint_assignment
SUBTYPE OF (document_usage_constraint_assignment);
  items : SET [1:?] OF document_reference_item;
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY applied_effectivity_assignment
SUBTYPE OF (effectivity_assignment);
  items : SET [1:?] OF effectivity_item;
WHERE
  wr1 : SIZEOF(['AUTOMOTIVE_DESIGN.' + 'LOT_EFFECTIVITY', 
    'AUTOMOTIVE_DESIGN.' + 'SERIAL_NUMBERED_EFFECTIVITY', 
    'AUTOMOTIVE_DESIGN.' + 'PRODUCT_DEFINITION_EFFECTIVITY'] * TYPEOF(SELF.
    assigned_effectivity)) = 0;
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY applied_event_occurrence_assignment
SUBTYPE OF (event_occurrence_assignment);
  items : SET [1:?] OF event_occurrence_item;
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY applied_external_identification_assignment
SUBTYPE OF (external_identification_assignment);
  items : SET [1:?] OF external_identification_item;
WHERE
  wr1 : NOT (SELF.role.name = 'alternative document id and location') OR 
    item_correlation(SELF.items, ['DOCUMENT_FILE']);
  wr2 : NOT (SELF.role.name = 'version') OR item_correlation(SELF.items, [
    'EXTERNALLY_DEFINED_CLASS', 'EXTERNALLY_DEFINED_GENERAL_PROPERTY']);
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY applied_group_assignment
SUBTYPE OF (group_assignment);
  items : SET [1:?] OF group_item;
WHERE
  wr1 : NOT (SELF.role.name = 'exclusiveness') OR item_correlation(SELF.items, 
    ['ACTION']);
  wr2 : NOT (SELF.role.name = 'simultaneity') OR item_correlation(SELF.items, [
    'ACTION']);
  wr3 : NOT (SELF.role.name = 'specification category member') OR 
    item_correlation(SELF.items, ['PRODUCT_CONCEPT_FEATURE']);
  wr4 : NOT (SELF.role.name = 'group membership') OR item_correlation(SELF.
    items, ['GEOMETRIC_REPRESENTATION_ITEM', 'SHAPE_ASPECT']);
  wr5 : NOT (SELF.role.name = 'group membership') OR (SIZEOF(SELF.items) = 
    SIZEOF(QUERY(i <* SELF.items | 'AUTOMOTIVE_DESIGN.' + 
    'GEOMETRIC_REPRESENTATION_ITEM' IN TYPEOF(i)))) OR (SIZEOF(SELF.items) = 
    SIZEOF(QUERY(i <* SELF.items | 'AUTOMOTIVE_DESIGN.' + 'SHAPE_ASPECT' IN 
    TYPEOF(i))));
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY applied_identification_assignment
SUBTYPE OF (identification_assignment);
  items : SET [1:?] OF identification_item;
WHERE
  wr1 : NOT (SELF.role.name = 'version') OR item_correlation(SELF.items, [
    'ACTION', 'ACTION_DIRECTIVE', 'SHAPE_REPRESENTATION', 'EFFECTIVITY', 
    'PRODUCT_CONCEPT', 'CONFIGURATION_ITEM', 'PRODUCT_DEFINITION', 
    'PRODUCT_CONCEPT_FEATURE', 'DOCUMENT_FILE', 'CLASS', 
    'APPLIED_IDENTIFICATION_ASSIGNMENT', 'DRAUGHTING_MODEL', 
    'MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION', 
    'PRESENTATION_AREA']);
  wr2 : NOT (SELF.role.name = 'lot context') OR item_correlation(SELF.items, [
    'PRODUCT']);
  wr3 : NOT (SELF.role.name = 'property change id context') OR item_correlation
    (SELF.items, ['PROPERTY_DEFINITION_RELATIONSHIP', 
    'SHAPE_ASPECT_RELATIONSHIP', 'ACTION_PROPERTY']);
  wr4 : NOT (SELF.role.name = 'size id') OR item_correlation(SELF.items, [
    'DIMENSIONAL_SIZE']);
  wr5 : NOT (SELF.role.name = 'model change id') OR item_correlation(SELF.items
    , ['PROPERTY_DEFINITION', 'ACTION_PROPERTY']);
  wr6 : NOT (SELF.role.name = 'alias') OR item_correlation(SELF.items, [
    'APPLICATION_CONTEXT', 'APPROVAL_STATUS', 'ASSEMBLY_COMPONENT_USAGE', 
    'CLASS', 'CLASS_SYSTEM', 'DOCUMENT_TYPE', 'DRAUGHTING_MODEL', 
    'GENERAL_PROPERTY', 
    'MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION', 'ORGANIZATION', 
    'PRODUCT', 'PRODUCT_CONCEPT', 'PRODUCT_CONCEPT_FEATURE', 
    'PRODUCT_CONCEPT_FEATURE_CATEGORY', 'PRODUCT_DEFINITION', 
    'PRODUCT_DEFINITION_FORMATION', 'PROPERTY_DEFINITION', 
    'SECURITY_CLASSIFICATION_LEVEL', 'SHAPE_REPRESENTATION']);
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY applied_ineffectivity_assignment
SUBTYPE OF (effectivity_assignment);
  items : SET [1:?] OF effectivity_item;
WHERE
  wr1 : SIZEOF(['AUTOMOTIVE_DESIGN.' + 'LOT_EFFECTIVITY', 
    'AUTOMOTIVE_DESIGN.' + 'SERIAL_NUMBERED_EFFECTIVITY', 
    'AUTOMOTIVE_DESIGN.' + 'PRODUCT_DEFINITION_EFFECTIVITY'] * TYPEOF(SELF.
    assigned_effectivity)) = 0;
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY applied_name_assignment
SUBTYPE OF (name_assignment);
  items : SET [1:?] OF name_item;
WHERE
  wr1 : NOT (SELF.role.name = 'kinematic element name') OR item_correlation(
    SELF.items, ['KINEMATIC_STRUCTURE', 'KINEMATIC_JOINT', 'KINEMATIC_LINK']);
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY applied_organization_assignment
SUBTYPE OF (organization_assignment);
  items : SET [1:?] OF organization_item;
WHERE
  wr1 : NOT (SELF.role.name = 'organization in contract') OR item_correlation(
    SELF.items, ['CONTRACT']);
  wr2 : NOT (SELF.role.name = 'signing for contract') OR item_correlation(SELF.
    items, ['APPLIED_ORGANIZATION_ASSIGNMENT']);
  wr3 : NOT (SELF.role.name = 'validity context') OR item_correlation(SELF.
    items, ['ACTION_PROPERTY', 'RESOURCE_PROPERTY', 'PROPERTY_DEFINITION']);
  wr4 : NOT (SELF.role.name = 'alias scope') OR item_correlation(SELF.items, [
    'APPLIED_IDENTIFICATION_ASSIGNMENT']);
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY applied_organizational_project_assignment
SUBTYPE OF (organizational_project_assignment);
  items : SET [1:?] OF organizational_project_item;
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY applied_person_and_organization_assignment
SUBTYPE OF (person_and_organization_assignment);
  items : SET [1:?] OF person_and_organization_item;
WHERE
  wr1 : NOT (SELF.role.name = 'signing for contract') OR item_correlation(SELF.
    items, ['APPLIED_ORGANIZATION_ASSIGNMENT']);
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY applied_presented_item
SUBTYPE OF (presented_item);
  items : SET [1:?] OF presented_item_select;
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY applied_security_classification_assignment
SUBTYPE OF (security_classification_assignment);
  items : SET [1:?] OF security_classification_item;
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY applied_time_interval_assignment
SUBTYPE OF (time_interval_assignment);
  items : SET [1:?] OF time_interval_item;
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY approval;
  status : approval_status;
  level : label;
END_ENTITY; -- 10303-41: approval_schema
 
ENTITY approval_assignment ABSTRACT SUPERTYPE;
  assigned_approval : approval;
DERIVE
  role : object_role := get_role(SELF);
WHERE
  wr1 : SIZEOF(USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
END_ENTITY; -- 10303-41: management_resources_schema
 
ENTITY approval_date_time;
  date_time : date_time_select;
  dated_approval : approval;
DERIVE
  role : object_role := get_role(SELF);
WHERE
  wr1 : SIZEOF(USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
END_ENTITY; -- 10303-41: approval_schema
 
ENTITY approval_person_organization;
  person_organization : person_organization_select;
  authorized_approval : approval;
  role : approval_role;
END_ENTITY; -- 10303-41: approval_schema
 
ENTITY approval_relationship;
  name : label;
  description :  OPTIONAL text;
  relating_approval : approval;
  related_approval : approval;
END_ENTITY; -- 10303-41: approval_schema
 
ENTITY approval_role;
  role : label;
DERIVE
  description : text := get_description_value(SELF);
WHERE
  wr1 : SIZEOF(USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
END_ENTITY; -- 10303-41: approval_schema
 
ENTITY approval_status;
  name : label;
END_ENTITY; -- 10303-41: approval_schema
 
ENTITY approximation_tolerance;
  tolerance : tolerance_select;
END_ENTITY; -- 10303-46: presentation_appearance_schema
 
ENTITY approximation_tolerance_deviation;
  tessellation_type : approximation_method;
  tolerances : SET [1:2] OF tolerance_deviation_select;
  definition_space : product_or_presentation_space;
WHERE
  wr1 : (HIINDEX(SELF.tolerances) = 1) XOR (TYPEOF(SELF.tolerances[1]) <> 
    TYPEOF(SELF.tolerances[2]));
END_ENTITY; -- 10303-46: presentation_appearance_schema
 
ENTITY approximation_tolerance_parameter;
  tolerances : SET [1:2] OF tolerance_parameter_select;
WHERE
  wr1 : (HIINDEX(SELF.tolerances) = 1) XOR (TYPEOF(SELF.tolerances[1]) <> 
    TYPEOF(SELF.tolerances[2]));
END_ENTITY; -- 10303-46: presentation_appearance_schema
 
ENTITY area_in_set;
  area : presentation_area;
  in_set : presentation_set;
END_ENTITY; -- 10303-46: presentation_organization_schema
 
ENTITY area_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
  wr1 : 'AUTOMOTIVE_DESIGN.AREA_UNIT' IN TYPEOF(SELF\measure_with_unit.
    unit_component);
END_ENTITY; -- 10303-41: measure_schema
 
ENTITY area_unit
SUBTYPE OF (named_unit);
WHERE
  wr1 : (SELF\named_unit.dimensions.length_exponent = 2.000000) AND (SELF\
    named_unit.dimensions.mass_exponent = 0.000000) AND (SELF\named_unit
    .dimensions.time_exponent = 0.000000) AND (SELF\named_unit.dimensions.
    electric_current_exponent = 0.000000) AND (SELF\named_unit.dimensions.
    thermodynamic_temperature_exponent = 0.000000) AND (SELF\named_unit.
    dimensions.amount_of_substance_exponent = 0.000000) AND (SELF\named_unit.
    dimensions.luminous_intensity_exponent = 0.000000);
END_ENTITY; -- 10303-41: measure_schema
 
ENTITY asin_function
SUBTYPE OF (unary_function_call);
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY assembly_component_usage
SUPERTYPE OF (ONEOF (next_assembly_usage_occurrence, 
specified_higher_usage_occurrence, promissory_usage_occurrence))
SUBTYPE OF (product_definition_usage);
  reference_designator :  OPTIONAL identifier;
END_ENTITY; -- 10303-44: product_structure_schema
 
ENTITY assembly_component_usage_substitute;
  name : label;
  definition :  OPTIONAL text;
  base : assembly_component_usage;
  substitute : assembly_component_usage;
UNIQUE
  ur1 : base, substitute;
WHERE
  wr1 : base.relating_product_definition :=: substitute.
    relating_product_definition;
  wr2 : base :<>: substitute;
END_ENTITY; -- 10303-44: product_structure_schema
 
ENTITY atan_function
SUBTYPE OF (binary_function_call);
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY attribute_classification_assignment ABSTRACT SUPERTYPE;
  assigned_class : group;
  attribute_name : label;
  role : classification_role;
END_ENTITY; -- 10303-41: management_resources_schema
 
ENTITY attribute_language_assignment
SUBTYPE OF (attribute_classification_assignment);
  items : SET [1:?] OF attribute_language_item;
DERIVE
  language : label := SELF\attribute_classification_assignment.assigned_class.
  name;
WHERE
  wr1 : SELF\attribute_classification_assignment.role.name IN ['primary', 
    'translated'];
  wr2 : 'AUTOMOTIVE_DESIGN.' + 'LANGUAGE' IN TYPEOF(SELF\
    attribute_classification_assignment.assigned_class);
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY attribute_value_assignment ABSTRACT SUPERTYPE;
  attribute_name : label;
  attribute_value : attribute_type;
  role : attribute_value_role;
END_ENTITY; -- 10303-41: management_resources_schema
 
ENTITY attribute_value_role;
  name : label;
  description :  OPTIONAL text;
END_ENTITY; -- 10303-41: management_resources_schema
 
ENTITY axis1_placement
SUBTYPE OF (placement);
  axis :  OPTIONAL direction;
DERIVE
  z : direction := NVL(normalise(axis), dummy_gri||direction([0.0, 0.0, 1.0]));
WHERE
  wr1 : SELF\geometric_representation_item.dim = 3;
END_ENTITY; -- 10303-42: geometry_schema
 
ENTITY axis2_placement_2d
SUBTYPE OF (placement);
  ref_direction :  OPTIONAL direction;
DERIVE
  p :  LIST [2:2] OF direction := build_2axes(ref_direction);
WHERE
  wr1 : SELF\geometric_representation_item.dim = 2;
END_ENTITY; -- 10303-42: geometry_schema
 
ENTITY axis2_placement_3d
SUBTYPE OF (placement);
  axis :  OPTIONAL direction;
  ref_direction :  OPTIONAL direction;
DERIVE
  p :  LIST [3:3] OF direction := build_axes(axis, ref_direction);
WHERE
  wr1 : SELF\placement.location.dim = 3;
  wr2 : NOT EXISTS(axis) OR (axis.dim = 3);
  wr3 : NOT EXISTS(ref_direction) OR (ref_direction.dim = 3);
  wr4 : NOT EXISTS(axis) OR NOT EXISTS(ref_direction) OR (cross_product(axis, 
    ref_direction).magnitude > 0.0);
END_ENTITY; -- 10303-42: geometry_schema
 
ENTITY b_spline_curve
SUPERTYPE OF (ONEOF (uniform_curve, b_spline_curve_with_knots, 
quasi_uniform_curve, bezier_curve) ANDOR rational_b_spline_curve)
SUBTYPE OF (bounded_curve);
  degree : INTEGER;
  control_points_list :  LIST [2:?] OF cartesian_point;
  curve_form : b_spline_curve_form;
  closed_curve : LOGICAL;
  self_intersect : LOGICAL;
DERIVE
  upper_index_on_control_points : INTEGER := SIZEOF(control_points_list) - 1;
  control_points :  ARRAY [0 : upper_index_on_control_points] OF 
  cartesian_point := list_to_array(control_points_list, 0, 
  upper_index_on_control_points);
WHERE
  wr1 : ('AUTOMOTIVE_DESIGN.UNIFORM_CURVE' IN TYPEOF(SELF)) OR (
    'AUTOMOTIVE_DESIGN.QUASI_UNIFORM_CURVE' IN TYPEOF(SELF)) OR (
    'AUTOMOTIVE_DESIGN.BEZIER_CURVE' IN TYPEOF(SELF)) OR (
    'AUTOMOTIVE_DESIGN.B_SPLINE_CURVE_WITH_KNOTS' IN TYPEOF(SELF));
END_ENTITY; -- 10303-42: geometry_schema
 
ENTITY b_spline_curve_with_knots
SUBTYPE OF (b_spline_curve);
  knot_multiplicities :  LIST [2:?] OF INTEGER;
  knots :  LIST [2:?] OF parameter_value;
  knot_spec : knot_type;
DERIVE
  upper_index_on_knots : INTEGER := SIZEOF(knots);
WHERE
  wr1 : constraints_param_b_spline(degree, upper_index_on_knots, 
    upper_index_on_control_points, knot_multiplicities, knots);
  wr2 : SIZEOF(knot_multiplicities) = upper_index_on_knots;
END_ENTITY; -- 10303-42: geometry_schema
 
ENTITY b_spline_surface
SUPERTYPE OF (ONEOF (b_spline_surface_with_knots, uniform_surface, 
quasi_uniform_surface, bezier_surface) ANDOR rational_b_spline_surface)
SUBTYPE OF (bounded_surface);
  u_degree : INTEGER;
  v_degree : INTEGER;
  control_points_list :  LIST [2:?] OF  LIST [2:?] OF cartesian_point;
  surface_form : b_spline_surface_form;
  u_closed : LOGICAL;
  v_closed : LOGICAL;
  self_intersect : LOGICAL;
DERIVE
  u_upper : INTEGER := SIZEOF(control_points_list) - 1;
  v_upper : INTEGER := SIZEOF(control_points_list[1]) - 1;
  control_points :  ARRAY [0 : u_upper] OF  ARRAY [0 : v_upper] OF 
  cartesian_point := make_array_of_array(control_points_list, 0, u_upper, 0, 
  v_upper);
WHERE
  wr1 : ('AUTOMOTIVE_DESIGN.UNIFORM_SURFACE' IN TYPEOF(SELF)) OR (
    'AUTOMOTIVE_DESIGN.QUASI_UNIFORM_SURFACE' IN TYPEOF(SELF)) OR (
    'AUTOMOTIVE_DESIGN.BEZIER_SURFACE' IN TYPEOF(SELF)) OR (
    'AUTOMOTIVE_DESIGN.B_SPLINE_SURFACE_WITH_KNOTS' IN TYPEOF(SELF));
END_ENTITY; -- 10303-42: geometry_schema
 
ENTITY b_spline_surface_with_knots
SUBTYPE OF (b_spline_surface);
  u_multiplicities :  LIST [2:?] OF INTEGER;
  v_multiplicities :  LIST [2:?] OF INTEGER;
  u_knots :  LIST [2:?] OF parameter_value;
  v_knots :  LIST [2:?] OF parameter_value;
  knot_spec : knot_type;
DERIVE
  knot_u_upper : INTEGER := SIZEOF(u_knots);
  knot_v_upper : INTEGER := SIZEOF(v_knots);
WHERE
  wr1 : constraints_param_b_spline(SELF\b_spline_surface.u_degree, knot_u_upper
    , SELF\b_spline_surface.u_upper, u_multiplicities, u_knots);
  wr2 : constraints_param_b_spline(SELF\b_spline_surface.v_degree, knot_v_upper
    , SELF\b_spline_surface.v_upper, v_multiplicities, v_knots);
  wr3 : SIZEOF(u_multiplicities) = knot_u_upper;
  wr4 : SIZEOF(v_multiplicities) = knot_v_upper;
END_ENTITY; -- 10303-42: geometry_schema
 
ENTITY background_colour
SUBTYPE OF (colour);
  presentation : area_or_view;
UNIQUE
  ur1 : presentation;
END_ENTITY; -- 10303-46: presentation_organization_schema
 
ENTITY barring_hole
SUBTYPE OF (feature_definition);
WHERE
  wr1 : SIZEOF(QUERY(sa <* get_shape_aspects(SELF) | (sa.name = 'hole profile')
     AND (sa.description = 'closed profile occurrence') AND (SIZEOF(QUERY(sar
     <* USEDIN(sa, 
    'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)) AND
     (sar.description = 'profile usage') AND (SIZEOF(['AUTOMOTIVE_DESIGN.'
     + 'CIRCULAR_CLOSED_PROFILE', 'AUTOMOTIVE_DESIGN.' + 
    'NGON_CLOSED_PROFILE', 'AUTOMOTIVE_DESIGN.' + 
    'RECTANGULAR_CLOSED_PROFILE', 'AUTOMOTIVE_DESIGN.' + 
    'CLOSED_PATH_PROFILE'] * TYPEOF(sar.relating_shape_aspect)) = 1))) = 1)))
     = 1;
  wr2 : SIZEOF(QUERY(sa <* get_shape_aspects(SELF) | (sa.name = 
    'barring profile') AND (sa.description = 'closed profile occurrence') AND (
    SIZEOF(QUERY(sar <* USEDIN(sa, 
    'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)) AND
     (sar.description = 'profile usage'))) = 1))) = 1;
  wr3 : (SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | 
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation))) = 1) AND (SIZEOF(QUERY(pdr <* 
    get_property_definition_representations(SELF) | ('AUTOMOTIVE_DESIGN.' + 
    'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) 
    AND {1 <= SIZEOF(pdr.used_representation.items) <= 2})) = 1);
  wr4 : SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | NOT (i.name IN ['orientation', 'base radius']))) > 0))) = 0;
  wr5 : SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'base radius') AND (SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'MEASURE_REPRESENTATION_ITEM', 'AUTOMOTIVE_DESIGN.' + 
    'LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2))) <> 1))) = 0;
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY bead
SUBTYPE OF (feature_definition);
WHERE
  wr1 : (SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | 
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation))) <= 1) AND (SIZEOF(QUERY(pdr <* 
    get_property_definition_representations(SELF) | ('AUTOMOTIVE_DESIGN.' + 
    'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) 
    AND (SIZEOF(pdr.used_representation.items) > 2))) = 0);
  wr2 : SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | NOT (i.name IN ['orientation', 'base radius']))) > 0))) = 0;
  wr3 : SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'base radius') AND (SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'MEASURE_REPRESENTATION_ITEM', 'AUTOMOTIVE_DESIGN.' + 
    'LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2))) > 1))) = 0;
  wr4 : SIZEOF(QUERY(sa <* get_shape_aspects(SELF) | (sa.name = 'sweep path') 
    AND (sa.description = 'path feature component occurrence') AND (SIZEOF(
    QUERY(sar <* USEDIN(sa, 
    'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)) AND
     (sar.description = 'path feature component usage') AND (
    'AUTOMOTIVE_DESIGN.' + 'PATH_FEATURE_COMPONENT' IN TYPEOF(sar.
    relating_shape_aspect)))) = 1))) = 1;
  wr5 : SIZEOF(QUERY(sa <* get_shape_aspects(SELF) | (sa.name = 'bead profile')
     AND (sa.description = 'open profile occurrence') AND (SIZEOF(QUERY(sar <* 
    USEDIN(sa, 
    'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)) AND
     (sar.description = 'profile usage') AND (SIZEOF(['AUTOMOTIVE_DESIGN.'
     + 'OPEN_PATH_PROFILE', 'AUTOMOTIVE_DESIGN.' + 
    'PARTIAL_CIRCULAR_PROFILE', 'AUTOMOTIVE_DESIGN.' + 'ROUNDED_U_PROFILE', 
    'AUTOMOTIVE_DESIGN.' + 'SQUARE_U_PROFILE', 'AUTOMOTIVE_DESIGN.' + 
    'TEE_PROFILE', 'AUTOMOTIVE_DESIGN.' + 'VEE_PROFILE'] * TYPEOF(sar.
    relating_shape_aspect)) = 1))) = 1))) = 1;
  wr6 : SIZEOF(QUERY(sa <* get_shape_aspects(SELF) | (sa.name = 'end condition'
    ) AND (sa.description = 'bead end occurrence') AND (SIZEOF(QUERY(sar <* 
    USEDIN(sa, 
    'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | (
    'AUTOMOTIVE_DESIGN.' + 'FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)) 
    AND (sar.name = 'bead end usage') AND (sar.description = 'starting') AND (
    'AUTOMOTIVE_DESIGN.' + 'BEAD_END' IN TYPEOF(sar.relating_shape_aspect)))
    ) = 1))) = 1;
  wr7 : SIZEOF(QUERY(sa <* get_shape_aspects(SELF) | (sa.name = 'end condition'
    ) AND (sa.description = 'bead end occurrence') AND (SIZEOF(QUERY(sar <* 
    USEDIN(sa, 
    'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | (
    'AUTOMOTIVE_DESIGN.' + 'FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)) 
    AND (sar.name = 'bead end usage') AND (sar.description = 'ending') AND (
    'AUTOMOTIVE_DESIGN.' + 'BEAD_END' IN TYPEOF(sar.relating_shape_aspect)))
    ) = 1))) = 1;
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY bead_end
SUBTYPE OF (shape_aspect);
WHERE
  wr1 : 'AUTOMOTIVE_DESIGN.' + 'FEATURE_COMPONENT_DEFINITION' IN TYPEOF(SELF
    .of_shape.definition);
  wr2 : SELF.description IN ['linear', 'open', 'radiused'];
  wr3 : (SELF.description <> 'linear') XOR (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | 
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation))) > 0);
  wr4 : (SELF.description <> 'linear') OR (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(pdr.used_representation.items) = 2)))
     = 1);
  wr5 : (SELF.description <> 'linear') OR (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'end length') AND (SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'MEASURE_REPRESENTATION_ITEM', 'AUTOMOTIVE_DESIGN.' + 
    'LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2))) = 1))) = 1);
  wr6 : (SELF.description <> 'linear') OR (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'end shape') AND (i\descriptive_representation_item.
    description IN ['straight', 'tapered']) AND ('AUTOMOTIVE_DESIGN.' + 
    'DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(i)))) = 1))) = 1);
  wr7 : SIZEOF(QUERY(sar <* USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') | (
    'AUTOMOTIVE_DESIGN.' + 'FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)) 
    AND (sar.name = 'bead end usage') AND (sar.description IN ['starting', 
    'ending']) AND ('AUTOMOTIVE_DESIGN.' + 'BEAD' IN TYPEOF(sar.
    related_shape_aspect.of_shape.definition)) AND (sar.related_shape_aspect.
    of_shape.definition\characterized_object.name = 'end condition') AND (sar.
    related_shape_aspect.of_shape.definition\characterized_object.description
     = 'bead end occurrence'))) = 1;
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY bezier_curve
SUBTYPE OF (b_spline_curve);
END_ENTITY; -- 10303-42: geometry_schema
 
ENTITY bezier_surface
SUBTYPE OF (b_spline_surface);
END_ENTITY; -- 10303-42: geometry_schema
 
ENTITY binary_boolean_expression
ABSTRACT SUPERTYPE OF (ONEOF (xor_expression, equals_expression))
SUBTYPE OF (boolean_expression, binary_generic_expression);
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY binary_function_call
ABSTRACT SUPERTYPE OF (ONEOF (atan_function))
SUBTYPE OF (binary_numeric_expression);
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY binary_generic_expression ABSTRACT SUPERTYPE
SUBTYPE OF (generic_expression);
  operands :  LIST [2:2] OF generic_expression;
END_ENTITY; (* declared in: iso13584_generic_expressions_schema *)
 
ENTITY binary_numeric_expression
ABSTRACT SUPERTYPE OF (ONEOF (minus_expression, div_expression, mod_expression
, slash_expression, power_expression, binary_function_call))
SUBTYPE OF (numeric_expression, binary_generic_expression);
  SELF\binary_generic_expression.operands :  LIST [2:2] OF numeric_expression;
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY block
SUBTYPE OF (geometric_representation_item);
  position : axis2_placement_3d;
  x : positive_length_measure;
  y : positive_length_measure;
  z : positive_length_measure;
END_ENTITY; -- 10303-42: geometric_model_schema
 
ENTITY boolean_defined_function ABSTRACT SUPERTYPE
SUBTYPE OF (defined_function, boolean_expression);
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY boolean_expression
ABSTRACT SUPERTYPE OF (ONEOF (simple_boolean_expression, 
unary_boolean_expression, binary_boolean_expression, 
multiple_arity_boolean_expression, comparison_expression, interval_expression, 
boolean_defined_function))
SUBTYPE OF (expression);
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY boolean_literal
SUBTYPE OF (simple_boolean_expression, generic_literal);
  the_value : BOOLEAN;
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY boolean_result
SUBTYPE OF (geometric_representation_item);
  operator : boolean_operator;
  first_operand : boolean_operand;
  second_operand : boolean_operand;
END_ENTITY; -- 10303-42: geometric_model_schema
 
ENTITY boolean_variable
SUBTYPE OF (simple_boolean_expression, variable);
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY boss
SUBTYPE OF (feature_definition);
WHERE
  wr1 : SELF.description IN ['circular', 'rectangular', 'complex'];
  wr2 : (SELF.description <> 'circular') OR (SIZEOF(QUERY(sa <* 
    get_shape_aspects(SELF) | (sa.description = 'circular profile occurrence') 
    AND (SIZEOF(QUERY(sar <* USEDIN(sa, 
    'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)) AND
     (sar.description = 'profile usage') AND ('AUTOMOTIVE_DESIGN.' + 
    'CIRCULAR_CLOSED_PROFILE' IN TYPEOF(sar.relating_shape_aspect)))) = 1))) = 
    1);
  wr3 : (SELF.description <> 'complex') OR (SIZEOF(QUERY(sa <* 
    get_shape_aspects(SELF) | (sa.description = 'enclosed boundary occurrence')
     AND (SIZEOF(QUERY(sar <* USEDIN(sa, 
    'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)) AND
     (sar.description = 'profile usage') AND (SIZEOF(['AUTOMOTIVE_DESIGN.'
     + 'CLOSED_PATH_PROFILE', 'AUTOMOTIVE_DESIGN.' + 'NGON_CLOSED_PROFILE']
     * TYPEOF(sar.relating_shape_aspect)) = 1))) = 1))) = 1);
  wr4 : (SELF.description <> 'rectangular') OR (SIZEOF(QUERY(sa <* 
    get_shape_aspects(SELF) | (sa.description = 
    'rectangular profile occurrence') AND (SIZEOF(QUERY(sar <* USEDIN(sa, 
    'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)) AND
     (sar.description = 'profile usage') AND ('AUTOMOTIVE_DESIGN.' + 
    'RECTANGULAR_CLOSED_PROFILE' IN TYPEOF(sar.relating_shape_aspect)))) = 1)))
     = 1);
  wr5 : (SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | 
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation))) <= 1) AND (SIZEOF(QUERY(pdr <* 
    get_property_definition_representations(SELF) | ('AUTOMOTIVE_DESIGN.' + 
    'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) 
    AND NOT ({1 <= SIZEOF(pdr.used_representation.items) <= 2}))) = 0);
  wr6 : SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | NOT (i.name IN ['orientation', 'fillet radius']))) > 0))) = 0;
  wr7 : SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'fillet radius') AND (SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'MEASURE_REPRESENTATION_ITEM', 'AUTOMOTIVE_DESIGN.' + 
    'LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2))) > 1))) = 0;
  wr8 : SIZEOF(QUERY(sa <* get_shape_aspects(SELF) | (sa.description = 
    'boss hight occurrence') AND (SIZEOF(QUERY(sar <* USEDIN(sa, 
    'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)) AND
     (sar.name = 'boss hight') AND (sar.description = 
    'path feature component usage') AND ('AUTOMOTIVE_DESIGN.' + 
    'PATH_FEATURE_COMPONENT' IN TYPEOF(sar.relating_shape_aspect)) AND (sar.
    relating_shape_aspect.description = 'linear'))) = 1))) = 1;
  wr9 : SIZEOF(QUERY(sa <* get_shape_aspects(SELF) | (sa.description = 
    'top condition occurrence') AND (SIZEOF(QUERY(sar <* USEDIN(sa, 
    'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | (
    'AUTOMOTIVE_DESIGN.' + 'FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)) 
    AND (sar.description = 'boss top usage') AND ('AUTOMOTIVE_DESIGN.' + 
    'BOSS_TOP' IN TYPEOF(sar.relating_shape_aspect)))) = 1))) = 1;
  wr10 : NOT (SELF.description IN ['rectangular', 'complex']) OR (SIZEOF(QUERY(
    sa <* get_shape_aspects(SELF) | (sa.description = 
    'change in boundary occurrence') AND (SIZEOF(QUERY(sar <* USEDIN(sa, 
    'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | (
    'AUTOMOTIVE_DESIGN.' + 'FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)) 
    AND (sar.description = 'taper usage') AND ('AUTOMOTIVE_DESIGN.' + 
    'TAPER' IN TYPEOF(sar.relating_shape_aspect)) AND (sar.
    relating_shape_aspect.description IN ['angle taper', 'directed taper'])))
     = 1))) <= 1);
  wr11 : (SELF.description <> 'circular') OR (SIZEOF(QUERY(sa <* 
    get_shape_aspects(SELF) | (sa.description = 'change in diameter occurrence'
    ) AND (SIZEOF(QUERY(sar <* USEDIN(sa, 
    'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | (
    'AUTOMOTIVE_DESIGN.' + 'FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)) 
    AND (sar.description = 'taper usage') AND ('AUTOMOTIVE_DESIGN.' + 
    'TAPER' IN TYPEOF(sar.relating_shape_aspect)) AND (sar.
    relating_shape_aspect.description IN ['angle taper', 'diameter taper'])))
     = 1))) <= 1);
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY boss_top
SUBTYPE OF (shape_aspect);
WHERE
  wr1 : 'AUTOMOTIVE_DESIGN.' + 'FEATURE_COMPONENT_DEFINITION' IN TYPEOF(SELF
    .of_shape.definition);
  wr2 : SELF.description IN ['planar', 'complex'];
  wr3 : (SELF.description <> 'planar') OR (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | 
    'AUTOMOTIVE_DESIGN.' + 'DIRECTION_SHAPE_REPRESENTATION' IN TYPEOF(pdr.
    used_representation))) = 1);
  wr4 : (SELF.description <> 'planar') OR (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | 
    'AUTOMOTIVE_DESIGN.' + 'LOCATION_SHAPE_REPRESENTATION' IN TYPEOF(pdr.
    used_representation))) = 1);
  wr5 : (SELF.description <> 'complex') OR (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | 
    'AUTOMOTIVE_DESIGN.' + 'FACE_SHAPE_REPRESENTATION' IN TYPEOF(pdr.
    used_representation))) = 1);
  wr6 : SIZEOF(QUERY(sar <* USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') | (
    'AUTOMOTIVE_DESIGN.' + 'FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)) 
    AND (sar.name = 'boss top usage') AND (sar.description IN ['starting', 
    'ending']) AND ('AUTOMOTIVE_DESIGN.' + 'BOSS' IN TYPEOF(sar.
    related_shape_aspect)) AND (sar.related_shape_aspect.name = 
    'top condition occurrence'))) = 1;
  wr7 : (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | 
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation))) <= 1) AND (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(pdr.used_representation.items) > 1)))
     = 0);
  wr8 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND ((SIZEOF(pdr.used_representation.items) = 0) 
    XOR (SIZEOF(QUERY(i <* pdr.used_representation.items | (i.name = 
    'top radius') AND (SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'MEASURE_REPRESENTATION_ITEM', 'AUTOMOTIVE_DESIGN.' + 
    'LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2))) = 1)))) <= 1;
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY boundary_curve
SUBTYPE OF (composite_curve_on_surface);
WHERE
  wr1 : SELF\composite_curve.closed_curve;
END_ENTITY; -- 10303-42: geometry_schema
 
ENTITY bounded_curve
SUPERTYPE OF (ONEOF (polyline, b_spline_curve, trimmed_curve, bounded_pcurve, 
bounded_surface_curve, composite_curve))
SUBTYPE OF (curve);
END_ENTITY; -- 10303-42: geometry_schema
 
ENTITY bounded_pcurve
SUBTYPE OF (pcurve, bounded_curve);
WHERE
  wr1 : 'AUTOMOTIVE_DESIGN.BOUNDED_CURVE' IN TYPEOF(SELF\pcurve.
    reference_to_curve.items[1]);
END_ENTITY; -- 10303-42: geometry_schema
 
ENTITY bounded_surface
SUPERTYPE OF (ONEOF (b_spline_surface, rectangular_trimmed_surface, 
curve_bounded_surface, rectangular_composite_surface))
SUBTYPE OF (surface);
END_ENTITY; -- 10303-42: geometry_schema
 
ENTITY bounded_surface_curve
SUBTYPE OF (surface_curve, bounded_curve);
WHERE
  wr1 : 'AUTOMOTIVE_DESIGN.BOUNDED_CURVE' IN TYPEOF(SELF\surface_curve.
    curve_3d);
END_ENTITY; -- 10303-42: geometry_schema
 
ENTITY box_domain
SUBTYPE OF (founded_item);
  corner : cartesian_point;
  xlength : positive_length_measure;
  ylength : positive_length_measure;
  zlength : positive_length_measure;
WHERE
  wr1 : SIZEOF(QUERY(item <* USEDIN(SELF, '') | NOT (
    'AUTOMOTIVE_DESIGN.BOXED_HALF_SPACE' IN TYPEOF(item)))) = 0;
END_ENTITY; -- 10303-42: geometric_model_schema
 
ENTITY boxed_half_space
SUBTYPE OF (half_space_solid);
  enclosure : box_domain;
END_ENTITY; -- 10303-42: geometric_model_schema
 
ENTITY brep_with_voids
SUBTYPE OF (manifold_solid_brep);
  voids : SET [1:?] OF oriented_closed_shell;
END_ENTITY; -- 10303-42: geometric_model_schema
 
ENTITY calendar_date
SUBTYPE OF (date);
  day_component : day_in_month_number;
  month_component : month_in_year_number;
WHERE
  wr1 : valid_calendar_date(SELF);
END_ENTITY; -- 10303-41: date_time_schema
 
ENTITY camera_image
SUBTYPE OF (mapped_item);
WHERE
  wr1 : 'AUTOMOTIVE_DESIGN.CAMERA_USAGE' IN TYPEOF(SELF\mapped_item.
    mapping_source);
  wr2 : 'AUTOMOTIVE_DESIGN.PLANAR_BOX' IN TYPEOF(SELF\mapped_item.
    mapping_target);
  wr3 : 'AUTOMOTIVE_DESIGN.GEOMETRIC_REPRESENTATION_ITEM' IN TYPEOF(SELF);
END_ENTITY; -- 10303-46: presentation_organization_schema
 
ENTITY camera_image_2d_with_scale
SUBTYPE OF (camera_image);
DERIVE
  scale : positive_ratio_measure := SELF\mapped_item.mapping_target\
  planar_extent.size_in_x/SELF\mapped_item.mapping_source.mapping_origin\
  camera_model_d2.view_window\planar_extent.size_in_x;
WHERE
  wr1 : 'AUTOMOTIVE_DESIGN.' + 'CAMERA_MODEL_D2' IN TYPEOF(SELF\mapped_item.
    mapping_source.mapping_origin);
  wr2 : aspect_ratio(SELF\mapped_item.mapping_target) = aspect_ratio(SELF\
    mapped_item.mapping_source.mapping_origin\camera_model_d2.view_window);
  wr3 : SELF\mapped_item.mapping_source.mapping_origin\camera_model_d2.
    view_window_clipping;
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY camera_image_3d_with_scale
SUBTYPE OF (camera_image);
DERIVE
  scale : positive_ratio_measure := SELF\mapped_item.mapping_target\
  planar_extent.size_in_x/SELF\mapped_item.mapping_source.mapping_origin\
  camera_model_d3.perspective_of_volume.view_window.size_in_x;
WHERE
  wr1 : 'AUTOMOTIVE_DESIGN.CAMERA_MODEL_D3' IN TYPEOF(SELF\mapped_item.
    mapping_source.mapping_origin);
  wr2 : aspect_ratio(SELF\mapped_item.mapping_target) = aspect_ratio(SELF\
    mapped_item.mapping_source.mapping_origin\camera_model_d3.
    perspective_of_volume.view_window);
  wr3 : SELF\mapped_item.mapping_source.mapping_origin\camera_model_d3.
    perspective_of_volume.front_plane_clipping AND SELF\mapped_item.
    mapping_source.mapping_origin\camera_model_d3.perspective_of_volume.
    view_volume_sides_clipping;
  wr4 : (SELF\mapped_item.mapping_target\planar_extent.size_in_x > 0) AND (SELF
    \mapped_item.mapping_target\planar_extent.size_in_y > 0);
  wr5 : (SELF\mapped_item.mapping_source.mapping_origin\camera_model_d3.
    perspective_of_volume.view_window.size_in_x > 0) AND (SELF\mapped_item.
    mapping_source.mapping_origin\camera_model_d3.perspective_of_volume.
    view_window.size_in_y > 0);
  wr6 : ('AUTOMOTIVE_DESIGN.' + 'AXIS2_PLACEMENT_2D' IN TYPEOF(SELF\
    mapped_item.mapping_target\planar_box.placement)) AND NOT (
    'AUTOMOTIVE_DESIGN.' + 'AXIS2_PLACEMENT_3D' IN TYPEOF(SELF\mapped_item.
    mapping_target\planar_box.placement));
END_ENTITY; -- 10303-46: presentation_organization_schema
 
ENTITY camera_model
SUPERTYPE OF (ONEOF (camera_model_d2, camera_model_d3))
SUBTYPE OF (geometric_representation_item);
WHERE
  wr1 : SIZEOF(USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.ITEM_DEFINED_TRANSFORMATION.TRANSFORM_ITEM_1')) + 
    SIZEOF(USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.REPRESENTATION_MAP.MAPPING_ORIGIN')) > 0;
  wr2 : SIZEOF(USEDIN(SELF, 'AUTOMOTIVE_DESIGN.STYLED_ITEM.ITEM')) = 0;
END_ENTITY; -- 10303-46: presentation_organization_schema
 
ENTITY camera_model_d2
SUBTYPE OF (camera_model);
  view_window : planar_box;
  view_window_clipping : BOOLEAN;
WHERE
  wr1 : SELF\geometric_representation_item.dim = 2;
END_ENTITY; -- 10303-46: presentation_organization_schema
 
ENTITY camera_model_d3
SUBTYPE OF (camera_model);
  view_reference_system : axis2_placement_3d;
  perspective_of_volume : view_volume;
WHERE
  wr1 : (dot_product(SELF.view_reference_system.p[3], SELF.
    perspective_of_volume.view_window.placement.p[3]) = 1.0) AND (SELF.
    view_reference_system.location.coordinates[3] = SELF.perspective_of_volume.
    view_window.placement.location.coordinates[3]);
  wr2 : SELF\geometric_representation_item.dim = 3;
END_ENTITY; -- 10303-46: presentation_organization_schema
 
ENTITY camera_model_d3_with_hlhsr
SUBTYPE OF (camera_model_d3);
  hidden_line_surface_removal : BOOLEAN;
END_ENTITY; -- 10303-46: presentation_organization_schema
 
ENTITY camera_usage
SUBTYPE OF (representation_map);
WHERE
  wr1 : NOT ('AUTOMOTIVE_DESIGN.PRESENTATION_REPRESENTATION' IN TYPEOF(SELF\
    representation_map.mapped_representation));
  wr2 : 'AUTOMOTIVE_DESIGN.CAMERA_MODEL' IN TYPEOF(SELF\representation_map.
    mapping_origin);
END_ENTITY; -- 10303-46: presentation_organization_schema
 
ENTITY cartesian_point
SUBTYPE OF (point);
  coordinates :  LIST [1:3] OF length_measure;
END_ENTITY; -- 10303-42: geometry_schema
 
ENTITY cartesian_transformation_operator
SUPERTYPE OF (ONEOF (cartesian_transformation_operator_2d, 
cartesian_transformation_operator_3d))
SUBTYPE OF (geometric_representation_item, functionally_defined_transformation)
  ;
  axis1 :  OPTIONAL direction;
  axis2 :  OPTIONAL direction;
  local_origin : cartesian_point;
  scale :  OPTIONAL REAL;
DERIVE
  scl : REAL := NVL(scale, 1.0);
WHERE
  wr1 : scl > 0.0;
END_ENTITY; -- 10303-42: geometry_schema
 
ENTITY cartesian_transformation_operator_2d
SUBTYPE OF (cartesian_transformation_operator);
DERIVE
  u :  LIST [2:2] OF direction := base_axis(2, SELF\
  cartesian_transformation_operator.axis1, SELF\
  cartesian_transformation_operator.axis2, ?);
WHERE
  wr1 : SELF\geometric_representation_item.dim = 2;
END_ENTITY; -- 10303-42: geometry_schema
 
ENTITY cartesian_transformation_operator_3d
SUBTYPE OF (cartesian_transformation_operator);
  axis3 :  OPTIONAL direction;
DERIVE
  u :  LIST [3:3] OF direction := base_axis(3, SELF\
  cartesian_transformation_operator.axis1, SELF\
  cartesian_transformation_operator.axis2, axis3);
WHERE
  wr1 : SELF\geometric_representation_item.dim = 3;
END_ENTITY; -- 10303-42: geometry_schema
 
ENTITY celsius_temperature_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
  wr1 : 'AUTOMOTIVE_DESIGN.THERMODYNAMIC_TEMPERATURE_UNIT' IN TYPEOF(SELF\
    measure_with_unit.unit_component);
END_ENTITY; -- 10303-41: measure_schema
 
ENTITY centre_of_symmetry
SUBTYPE OF (derived_shape_aspect);
WHERE
  wr1 : SIZEOF(QUERY(sadr <* SELF\derived_shape_aspect.deriving_relationships
     | NOT ('AUTOMOTIVE_DESIGN.SYMMETRIC_SHAPE_ASPECT' IN TYPEOF(sadr\
    shape_aspect_relationship.related_shape_aspect)))) = 0;
END_ENTITY; -- 10303-47: shape_aspect_definition_schema
 
ENTITY certification;
  name : label;
  purpose : text;
  kind : certification_type;
END_ENTITY; -- 10303-41: certification_schema
 
ENTITY certification_assignment ABSTRACT SUPERTYPE;
  assigned_certification : certification;
DERIVE
  role : object_role := get_role(SELF);
WHERE
  wr1 : SIZEOF(USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
END_ENTITY; -- 10303-41: management_resources_schema
 
ENTITY certification_type;
  description : label;
END_ENTITY; -- 10303-41: certification_schema
 
ENTITY chamfer
SUBTYPE OF (transition_feature);
WHERE
  wr1 : SIZEOF(QUERY(sar <* USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') | (
    'AUTOMOTIVE_DESIGN.' + 'FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)) 
    AND ('AUTOMOTIVE_DESIGN.' + 'CHAMFER_OFFSET' IN TYPEOF(sar.
    related_shape_aspect)) AND (sar.related_shape_aspect.description = 
    'first offset'))) = 1;
  wr2 : SIZEOF(QUERY(sar <* USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') | (
    'AUTOMOTIVE_DESIGN.' + 'FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)) 
    AND ('AUTOMOTIVE_DESIGN.' + 'CHAMFER_OFFSET' IN TYPEOF(sar.
    related_shape_aspect)) AND (sar.related_shape_aspect.description = 
    'second offset'))) = 1;
  wr3 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'FACE_SHAPE_REPRESENTATION' IN TYPEOF(pdr.
    used_representation)) AND (pdr.used_representation.name = 'chamfer face')))
     = 1;
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY chamfer_offset
SUBTYPE OF (shape_aspect);
WHERE
  wr1 : SELF.description IN ['first offset', 'second offset'];
  wr2 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | 
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation))) = 1;
  wr3 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(pdr.used_representation.items) = 1)))
     = 1;
  wr4 : (SELF.description <> 'first offset') OR (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'offset amount') AND (SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'MEASURE_REPRESENTATION_ITEM', 'AUTOMOTIVE_DESIGN.' + 
    'LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2))) = 1))) = 1);
  wr5 : (SELF.description <> 'second offset') OR (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND ((SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'offset amount') AND (SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'MEASURE_REPRESENTATION_ITEM', 'AUTOMOTIVE_DESIGN.' + 
    'LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2))) = 1) OR (SIZEOF(QUERY(i <* 
    pdr.used_representation.items | (i.name = 'offset angle') AND (
    'AUTOMOTIVE_DESIGN.' + 'PLANE_ANGLE_MEASURE_WITH_UNIT' IN TYPEOF(i))))
     = 1)))) = 1);
  wr6 : SIZEOF(QUERY(sar <* USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | (
    'AUTOMOTIVE_DESIGN.' + 'FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)) 
    AND ('AUTOMOTIVE_DESIGN.' + 'CHAMFER' IN TYPEOF(sar.
    relating_shape_aspect)))) >= 1;
  wr7 : (SELF.description <> 'first offset') OR (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'FACE_SHAPE_REPRESENTATION' IN TYPEOF(pdr.
    used_representation)) AND (pdr.used_representation.name = 
    'first face shape'))) = 1);
  wr8 : (SELF.description <> 'second offset') OR (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'FACE_SHAPE_REPRESENTATION' IN TYPEOF(pdr.
    used_representation)) AND (pdr.used_representation.name = 
    'second face shape'))) = 1);
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY character_glyph_symbol
SUBTYPE OF (symbol_representation);
  character_box : planar_extent;
  baseline_ratio : ratio_measure;
DERIVE
  box_height : length_measure := character_box.size_in_y;
WHERE
  wr1 : {0.0 <= baseline_ratio <= 1.0};
  wr2 : item_in_context(SELF.character_box, SELF\representation.
    context_of_items);
  wr3 : 'AUTOMOTIVE_DESIGN.POSITIVE_LENGTH_MEASURE' IN TYPEOF(SELF.
    box_height);
END_ENTITY; -- 10303-46: presentation_resource_schema
 
ENTITY characterized_class
SUBTYPE OF (characterized_object, class);
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY characterized_object;
  name : label;
  description :  OPTIONAL text;
END_ENTITY; -- 10303-41: product_property_definition_schema
 
ENTITY circle
SUBTYPE OF (conic);
  radius : positive_length_measure;
END_ENTITY; -- 10303-42: geometry_schema
 
ENTITY circular_closed_profile
SUBTYPE OF (shape_aspect);
WHERE
  wr1 : 'AUTOMOTIVE_DESIGN.' + 'FEATURE_COMPONENT_DEFINITION' IN TYPEOF(SELF
    .of_shape.definition);
  wr2 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | 
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation))) = 1;
  wr3 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(pdr.used_representation.items) = 2)))
     = 1;
  wr4 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'orientation') AND ('AUTOMOTIVE_DESIGN.' + 'PLACEMENT'
     IN TYPEOF(i)))) = 1))) = 1;
  wr5 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'diameter') AND (SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'MEASURE_REPRESENTATION_ITEM', 'AUTOMOTIVE_DESIGN.' + 
    'LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2))) = 1))) = 1;
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY circular_pattern
SUBTYPE OF (replicate_feature);
WHERE
  wr1 : (SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | 
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation))) = 1) AND (SIZEOF(QUERY(pdr <* 
    get_property_definition_representations(SELF) | ('AUTOMOTIVE_DESIGN.' + 
    'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) 
    AND {2 <= SIZEOF(pdr.used_representation.items) <= 5})) = 1);
  wr2 : SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'diameter') AND (SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'MEASURE_REPRESENTATION_ITEM', 'AUTOMOTIVE_DESIGN.' + 
    'LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2))) = 1))) <= 1;
  wr3 : SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'base feature rotation') AND (SIZEOF([
    'AUTOMOTIVE_DESIGN.' + 'MEASURE_REPRESENTATION_ITEM', 
    'AUTOMOTIVE_DESIGN.' + 'PLANE_ANGLE_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2
    ))) = 1))) <= 1;
  wr4 : SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'number of features') AND ('AUTOMOTIVE_DESIGN.' + 
    'MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND ('AUTOMOTIVE_DESIGN.' + 
    'COUNT_MEASURE' IN TYPEOF(i\measure_with_unit.value_component)))) = 1))) = 
    1;
  wr5 : SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'angular spacing') AND (SIZEOF(['AUTOMOTIVE_DESIGN.'
     + 'MEASURE_REPRESENTATION_ITEM', 'AUTOMOTIVE_DESIGN.' + 
    'LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2))) = 1))) = 1;
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY circular_runout_tolerance
SUBTYPE OF (geometric_tolerance_with_datum_reference);
WHERE
  wr1 : SIZEOF(SELF\geometric_tolerance_with_datum_reference.datum_system) <= 2
    ;
END_ENTITY; -- 10303-519: aic_geometric_tolerances
 
ENTITY class
SUBTYPE OF (group);
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY class_system
SUBTYPE OF (group);
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY class_usage_effectivity_context_assignment
SUBTYPE OF (effectivity_context_assignment);
  items : SET [1:?] OF class_usage_effectivity_context_item;
WHERE
  wr1 : SELF.role.name = 'class usage influence';
  wr2 : SIZEOF(QUERY(i <* SELF.items | NOT ('AUTOMOTIVE_DESIGN.' + 
    'PRODUCT_DEFINITION' IN TYPEOF(i)))) = 0;
  wr3 : ('AUTOMOTIVE_DESIGN.' + 'APPLIED_EFFECTIVITY_ASSIGNMENT' IN TYPEOF(
    SELF.assigned_effectivity_assignment)) AND (SIZEOF(TYPEOF(SELF.
    assigned_effectivity_assignment.assigned_effectivity)) = 1) AND (SELF.
    assigned_effectivity_assignment.assigned_effectivity.id = 'class usage') 
    AND (SIZEOF(QUERY(i <* SELF.assigned_effectivity_assignment\
    applied_effectivity_assignment.items | NOT ('AUTOMOTIVE_DESIGN.' + 
    'PRODUCT_CONCEPT_FEATURE_CATEGORY_USAGE' IN TYPEOF(i)))) = 0);
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY classification_assignment ABSTRACT SUPERTYPE;
  assigned_class : group;
  role : classification_role;
END_ENTITY; -- 10303-41: management_resources_schema
 
ENTITY classification_role;
  name : label;
  description :  OPTIONAL text;
END_ENTITY; -- 10303-41: management_resources_schema
 
ENTITY closed_path_profile
SUBTYPE OF (shape_aspect);
WHERE
  wr1 : 'AUTOMOTIVE_DESIGN.' + 'FEATURE_COMPONENT_DEFINITION' IN TYPEOF(SELF
    .of_shape.definition);
  wr2 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | 
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation))) = 1;
  wr3 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(pdr.used_representation.items) = 1)))
     = 1;
  wr4 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'orientation') AND ('AUTOMOTIVE_DESIGN.' + 'PLACEMENT'
     IN TYPEOF(i)))) = 1))) = 1;
  wr5 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | 
    'AUTOMOTIVE_DESIGN.' + 'PATH_SHAPE_REPRESENTATION' IN TYPEOF(pdr.
    used_representation))) = 1;
  wr6 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'PATH_SHAPE_REPRESENTATION' IN TYPEOF(pdr.
    used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.items
     | i.name = 'profile shape')) = 1))) = 1;
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY closed_shell
SUBTYPE OF (connected_face_set);
END_ENTITY; -- 10303-42: topology_schema
 
ENTITY coaxiality_tolerance
SUBTYPE OF (geometric_tolerance_with_datum_reference);
WHERE
  wr1 : SIZEOF(SELF\geometric_tolerance_with_datum_reference.datum_system) <= 2
    ;
END_ENTITY; -- 10303-519: aic_geometric_tolerances
 
ENTITY colour;
END_ENTITY; -- 10303-46: presentation_resource_schema
 
ENTITY colour_rgb
SUBTYPE OF (colour_specification);
  red : REAL;
  green : REAL;
  blue : REAL;
WHERE
  wr1 : {0.0 <= red <= 1.0};
  wr2 : {0.0 <= green <= 1.0};
  wr3 : {0.0 <= blue <= 1.0};
END_ENTITY; -- 10303-46: presentation_resource_schema
 
ENTITY colour_specification
SUBTYPE OF (colour);
  name : label;
END_ENTITY; -- 10303-46: presentation_resource_schema
 
ENTITY common_datum
SUBTYPE OF (composite_shape_aspect, datum);
WHERE
  wr1 : SIZEOF(SELF.component_relationships) = 2;
  wr2 : SIZEOF(QUERY(sar <* SELF.component_relationships | NOT ((
    'AUTOMOTIVE_DESIGN.DATUM' IN TYPEOF(sar.related_shape_aspect)) AND NOT (
    'AUTOMOTIVE_DESIGN.COMMON_DATUM' IN TYPEOF(sar.related_shape_aspect)))))
     = 0;
END_ENTITY; -- 10303-519: aic_geometric_tolerances
 
ENTITY comparison_equal
SUBTYPE OF (comparison_expression);
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY comparison_expression
ABSTRACT SUPERTYPE OF (ONEOF (comparison_equal, comparison_greater, 
comparison_greater_equal, comparison_less, comparison_less_equal, 
comparison_not_equal, like_expression))
SUBTYPE OF (boolean_expression, binary_generic_expression);
  SELF\binary_generic_expression.operands :  LIST [2:2] OF expression;
WHERE
  wr1 : ('AUTOMOTIVE_DESIGN.NUMERIC_EXPRESSION' IN TYPEOF(SELF\
    binary_generic_expression.operands[1])) AND (
    'AUTOMOTIVE_DESIGN.NUMERIC_EXPRESSION' IN TYPEOF(SELF\
    binary_generic_expression.operands[2])) OR (
    'AUTOMOTIVE_DESIGN.BOOLEAN_EXPRESSION' IN TYPEOF(SELF\
    binary_generic_expression.operands[1])) AND (
    'AUTOMOTIVE_DESIGN.BOOLEAN_EXPRESSION' IN TYPEOF(SELF\
    binary_generic_expression.operands[2])) OR (
    'AUTOMOTIVE_DESIGN.STRING_EXPRESSION' IN TYPEOF(SELF\
    binary_generic_expression.operands[1])) AND (
    'AUTOMOTIVE_DESIGN.STRING_EXPRESSION' IN TYPEOF(SELF\
    binary_generic_expression.operands[2]));
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY comparison_greater
SUBTYPE OF (comparison_expression);
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY comparison_greater_equal
SUBTYPE OF (comparison_expression);
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY comparison_less
SUBTYPE OF (comparison_expression);
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY comparison_less_equal
SUBTYPE OF (comparison_expression);
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY comparison_not_equal
SUBTYPE OF (comparison_expression);
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY composite_curve
SUBTYPE OF (bounded_curve);
  segments :  LIST [1:?] OF composite_curve_segment;
  self_intersect : LOGICAL;
DERIVE
  n_segments : INTEGER := SIZEOF(segments);
  closed_curve : LOGICAL := segments[n_segments].transition <> discontinuous;
WHERE
  wr1 : NOT closed_curve AND (SIZEOF(QUERY(temp <* segments | temp.transition
     = discontinuous)) = 1) OR closed_curve AND (SIZEOF(QUERY(temp <* segments
     | temp.transition = discontinuous)) = 0);
END_ENTITY; -- 10303-42: geometry_schema
 
ENTITY composite_curve_on_surface
SUPERTYPE OF (boundary_curve)
SUBTYPE OF (composite_curve);
DERIVE
  basis_surface : SET [0:2] OF surface := get_basis_surface(SELF);
WHERE
  wr1 : SIZEOF(basis_surface) > 0;
  wr2 : constraints_composite_curve_on_surface(SELF);
END_ENTITY; -- 10303-42: geometry_schema
 
ENTITY composite_curve_segment
SUBTYPE OF (founded_item);
  transition : transition_code;
  same_sense : BOOLEAN;
  parent_curve : curve;
INVERSE
  using_curves : BAG [1:?] OF composite_curve FOR segments;
WHERE
  wr1 : 'AUTOMOTIVE_DESIGN.BOUNDED_CURVE' IN TYPEOF(parent_curve);
END_ENTITY; -- 10303-42: geometry_schema
 
ENTITY composite_hole
SUBTYPE OF (compound_feature);
WHERE
  wr1 : SELF\characterized_object.description IN ['counterbore', 'countersunk']
    ;
  wr2 : SIZEOF(QUERY(sa <* get_shape_aspects(SELF) | ('AUTOMOTIVE_DESIGN.'
     + 'COMPOSITE_SHAPE_ASPECT' IN TYPEOF(sa)) AND (sa.name = 
    'compound feature in solid') AND (SIZEOF(QUERY(sar <* USEDIN(sa, 
    'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') | 
    'AUTOMOTIVE_DESIGN.' + 'FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)))
     = 2))) = 1;
  wr3 : SIZEOF(QUERY(sa <* get_shape_aspects(SELF) | ('AUTOMOTIVE_DESIGN.'
     + 'COMPOSITE_SHAPE_ASPECT' IN TYPEOF(sa)) AND (sa.name = 
    'compound feature in solid') AND (SIZEOF(QUERY(sar <* USEDIN(sa, 
    'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') | 
    'AUTOMOTIVE_DESIGN.' + 'FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)))
     = 2) AND (SIZEOF(get_round_holes_for_composite_hole(bag_to_set(USEDIN(sa, 
    'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT'))))
     = 2))) = 1;
  wr4 : SIZEOF(QUERY(sa <* get_shape_aspects(SELF) | ('AUTOMOTIVE_DESIGN.'
     + 'COMPOSITE_SHAPE_ASPECT' IN TYPEOF(sa)) AND (sa.name = 
    'compound feature in solid') AND (SIZEOF(QUERY(rh1 <* 
    get_round_holes_for_composite_hole(bag_to_set(USEDIN(sa, 
    'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')))
     | SIZEOF(QUERY(rh2 <* get_round_holes_for_composite_hole(bag_to_set(USEDIN
    (sa, 'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT'
    ))) | (rh1 :<>: rh2) AND (get_diameter_for_round_hole(rh1) = 
    get_diameter_for_round_hole(rh2)))) = 0)) = 0))) = 1;
  wr5 : (SELF.description <> 'countersunk') OR (SIZEOF(QUERY(sa <* 
    get_shape_aspects(SELF) | ('AUTOMOTIVE_DESIGN.' + 
    'COMPOSITE_SHAPE_ASPECT' IN TYPEOF(sa)) AND (sa.name = 
    'compound feature in solid') AND (SIZEOF(QUERY(rh <* 
    get_round_holes_for_composite_hole(bag_to_set(USEDIN(sa, 
    'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')))
     | SIZEOF(QUERY(sa1 <* get_shape_aspects(rh) | (sa.description = 
    'change in diameter occurrence') AND (SIZEOF(QUERY(sar <* USEDIN(sa1, 
    'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | (
    sar.description = 'taper usage') AND ('AUTOMOTIVE_DESIGN.' + 'TAPER' IN 
    TYPEOF(sar.relating_shape_aspect)))) = 1))) = 1)) = 1))) = 1);
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY composite_shape_aspect
SUBTYPE OF (shape_aspect);
INVERSE
  component_relationships : SET [2:?] OF shape_aspect_relationship FOR 
  relating_shape_aspect;
END_ENTITY; -- 10303-47: shape_aspect_definition_schema
 
ENTITY composite_text
SUBTYPE OF (geometric_representation_item);
  collected_text : SET [2:?] OF text_or_character;
WHERE
  wr1 : acyclic_composite_text(SELF, SELF.collected_text);
END_ENTITY; -- 10303-46: presentation_definition_schema
 
ENTITY composite_text_with_associated_curves
SUBTYPE OF (composite_text);
  associated_curves : SET [1:?] OF curve;
END_ENTITY; -- 10303-46: presentation_definition_schema
 
ENTITY composite_text_with_blanking_box
SUBTYPE OF (composite_text);
  blanking : planar_box;
END_ENTITY; -- 10303-46: presentation_definition_schema
 
ENTITY composite_text_with_extent
SUBTYPE OF (composite_text);
  extent : planar_extent;
END_ENTITY; -- 10303-46: presentation_definition_schema
 
ENTITY compound_feature
SUBTYPE OF (feature_definition);
WHERE
  wr1 : SIZEOF(QUERY(sa <* get_shape_aspects(SELF) | (sa.name IN [
    'compound feature in solid', 'compound feature in panel']) AND (
    'AUTOMOTIVE_DESIGN.' + 'COMPOSITE_SHAPE_ASPECT' IN TYPEOF(sa)))) = 1;
  wr2 : SIZEOF(QUERY(sa <* get_shape_aspects(SELF) | ('AUTOMOTIVE_DESIGN.'
     + 'COMPOSITE_SHAPE_ASPECT' IN TYPEOF(sa)) AND (SIZEOF(QUERY(sar <* USEDIN(
    sa, 'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')
     | NOT ('AUTOMOTIVE_DESIGN.' + 'FEATURE_COMPONENT_RELATIONSHIP' IN 
    TYPEOF(sar)))) > 0))) = 0;
  wr3 : SIZEOF(QUERY(sa <* get_shape_aspects(SELF) | ('AUTOMOTIVE_DESIGN.'
     + 'COMPOSITE_SHAPE_ASPECT' IN TYPEOF(sa)) AND (SIZEOF(QUERY(sar <* USEDIN(
    sa, 'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')
     | NOT (SIZEOF(['AUTOMOTIVE_DESIGN.' + 'INSTANCED_FEATURE', 
    'AUTOMOTIVE_DESIGN.' + 'PLACED_FEATURE', 'AUTOMOTIVE_DESIGN.' + 
    'APPLIED_AREA', 'AUTOMOTIVE_DESIGN.' + 'TRANSITION_FEATURE'] * TYPEOF(
    sar.related_shape_aspect)) = 1))) > 0))) = 0;
  wr4 : SIZEOF(QUERY(sa <* get_shape_aspects(SELF) | ('AUTOMOTIVE_DESIGN.'
     + 'COMPOSITE_SHAPE_ASPECT' IN TYPEOF(sa)) AND (SIZEOF(QUERY(sar <* USEDIN(
    sa, 'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')
     | ('AUTOMOTIVE_DESIGN.' + 'PLACED_FEATURE' IN TYPEOF(sar.
    related_shape_aspect)) AND (SIZEOF(QUERY(pdr <* 
    get_property_definition_representations(sar.related_shape_aspect.of_shape.
    definition) | ('AUTOMOTIVE_DESIGN.' + 
    'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) 
    AND (SIZEOF(QUERY(i <* pdr.used_representation.items | (i.name = 
    'element placement') AND ('AUTOMOTIVE_DESIGN.' + 'PLACEMENT' IN TYPEOF(i
    )))) <> 1))) > 0))) > 0))) = 0;
  wr5 : SIZEOF(QUERY(sa <* get_shape_aspects(SELF) | (sa.name = 
    'compound feature in solid') AND (SIZEOF(QUERY(sar <* USEDIN(sa, 
    'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') | 
    SIZEOF(['AUTOMOTIVE_DESIGN.' + 'TRANSITION_FEATURE', 
    'AUTOMOTIVE_DESIGN.' + 'BOSS', 'AUTOMOTIVE_DESIGN.' + 'APPLIED_AREA']
     * TYPEOF(sar.related_shape_aspect)) + SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'SLOT', 'AUTOMOTIVE_DESIGN.' + 'POCKET', 'AUTOMOTIVE_DESIGN.' + 
    'ROUND_HOLE', 'AUTOMOTIVE_DESIGN.' + 'RIB', 'AUTOMOTIVE_DESIGN.' + 
    'COMPOUND_FEATURE'] * TYPEOF(sar.related_shape_aspect.of_shape.definition))
     = 0)) > 0))) = 0;
  wr6 : SIZEOF(QUERY(sa <* get_shape_aspects(SELF) | (sa.name = 
    'compound feature in panel') AND (SIZEOF(QUERY(sar <* USEDIN(sa, 
    'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') | 
    SIZEOF(['AUTOMOTIVE_DESIGN.' + 'TRANSITION_FEATURE'] * TYPEOF(sar.
    related_shape_aspect)) + SIZEOF(['AUTOMOTIVE_DESIGN.' + 'BEAD', 
    'AUTOMOTIVE_DESIGN.' + 'HOLE_IN_PANEL', 'AUTOMOTIVE_DESIGN.' + 
    'FEATURE_IN_PANEL', 'AUTOMOTIVE_DESIGN.' + 'JOGGLE', 
    'AUTOMOTIVE_DESIGN.' + 'LOCATOR', 'AUTOMOTIVE_DESIGN.' + 
    'COMPOUND_FEATURE'] * TYPEOF(sar.related_shape_aspect.of_shape.definition))
     = 0)) > 0))) = 0;
  wr7 : SIZEOF(QUERY(sa <* get_shape_aspects(SELF) | (sa.name = 
    'compound feature in panel') AND (SIZEOF(QUERY(sar <* USEDIN(sa, 
    'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') | (
    'AUTOMOTIVE_DESIGN.' + 'COMPOUND_FEATURE' IN TYPEOF(sar.
    related_shape_aspect.of_shape.definition)) AND (sar.related_shape_aspect.
    name = 'compound feature in solid'))) > 0))) + SIZEOF(QUERY(sa <* 
    get_shape_aspects(SELF) | (sa.name = 'compound feature in solid') AND (
    SIZEOF(QUERY(sar <* USEDIN(sa, 
    'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') | (
    'AUTOMOTIVE_DESIGN.' + 'COMPOUND_FEATURE' IN TYPEOF(sar.
    related_shape_aspect.of_shape.definition)) AND (sar.related_shape_aspect.
    name = 'compound feature in panel'))) > 0))) = 0;
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY compound_representation_item
SUBTYPE OF (representation_item);
  item_element : compound_item_definition;
END_ENTITY; -- 10303-43: representation_schema
 
ENTITY compound_shape_representation
SUBTYPE OF (shape_representation);
WHERE
  wr1 : ('AUTOMOTIVE_DESIGN.' + 'GEOMETRIC_REPRESENTATION_CONTEXT' IN TYPEOF
    (SELF.context_of_items)) AND (SELF.context_of_items\
    geometric_representation_context.coordinate_space_dimension = 3);
  wr2 : SIZEOF(QUERY(cbsr_i <* SELF.items | SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'EDGE_BASED_WIREFRAME_MODEL', 'AUTOMOTIVE_DESIGN.' + 
    'FACE_BASED_SURFACE_MODEL', 'AUTOMOTIVE_DESIGN.' + 'MAPPED_ITEM', 
    'AUTOMOTIVE_DESIGN.' + 'AXIS2_PLACEMENT_3D'] * TYPEOF(cbsr_i)) <> 1)) = 
    0;
  wr3 : SIZEOF(QUERY(cbsr_i <* SELF.items | SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'EDGE_BASED_WIREFRAME_MODEL', 'AUTOMOTIVE_DESIGN.' + 
    'FACE_BASED_SURFACE_MODEL', 'AUTOMOTIVE_DESIGN.' + 'MAPPED_ITEM'] * 
    TYPEOF(cbsr_i)) = 1)) > 0;
  wr4 : SIZEOF(QUERY(cbsr_i <* SELF.items | ('AUTOMOTIVE_DESIGN.' + 
    'MAPPED_ITEM' IN TYPEOF(cbsr_i)) AND (SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'COMPOUND_SHAPE_REPRESENTATION', 'AUTOMOTIVE_DESIGN.' + 
    'EDGE_BASED_WIREFRAME_SHAPE_REPRESENTATION', 'AUTOMOTIVE_DESIGN.' + 
    'NON_MANIFOLD_SURFACE_SHAPE_REPRESENTATION'] * TYPEOF(cbsr_i\mapped_item.
    mapping_source)) <> 1))) = 0;
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY concat_expression
SUBTYPE OF (string_expression, multiple_arity_generic_expression);
  SELF\multiple_arity_generic_expression.operands :  LIST [2:?] OF 
  string_expression;
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY concentricity_tolerance
SUBTYPE OF (geometric_tolerance_with_datum_reference);
WHERE
  wr1 : SIZEOF(SELF\geometric_tolerance_with_datum_reference.datum_system) = 1;
END_ENTITY; -- 10303-519: aic_geometric_tolerances
 
ENTITY concept_feature_operator;
  name : label;
  description :  OPTIONAL text;
END_ENTITY; -- 10303-44: product_concept_schema
 
ENTITY concept_feature_relationship;
  name : label;
  description :  OPTIONAL text;
  relating_product_concept_feature : product_concept_feature;
  related_product_concept_feature : product_concept_feature;
END_ENTITY; -- 10303-44: product_concept_schema
 
ENTITY concept_feature_relationship_with_condition
SUBTYPE OF (concept_feature_relationship);
  conditional_operator : concept_feature_operator;
END_ENTITY; -- 10303-44: product_concept_schema
 
ENTITY conditional_concept_feature
SUBTYPE OF (product_concept_feature);
  condition : concept_feature_relationship_with_condition;
END_ENTITY; -- 10303-44: product_concept_schema
 
ENTITY configurable_item
SUBTYPE OF (configuration_item);
  item_concept_feature : SET [1:?] OF product_concept_feature_association;
END_ENTITY; -- 10303-44: configuration_management_schema
 
ENTITY configuration_definition;
  pair_values : SET [1:?] OF pair_value;
  t_parameter : motion_parameter_measure;
END_ENTITY; -- 10303-105: kinematic_analysis_control_and_result_schema
 
ENTITY configuration_design;
  configuration : configuration_item;
  design : configuration_design_item;
DERIVE
  name : label := get_name_value(SELF);
  description : text := get_description_value(SELF);
UNIQUE
  ur1 : configuration, design;
WHERE
  wr1 : SIZEOF(USEDIN(SELF, 'AUTOMOTIVE_DESIGN.NAME_ATTRIBUTE.NAMED_ITEM'))
     <= 1;
  wr2 : SIZEOF(USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
END_ENTITY; -- 10303-44: configuration_management_schema
 
ENTITY configuration_effectivity
SUBTYPE OF (product_definition_effectivity);
  configuration : configuration_design;
UNIQUE
  ur1 : configuration, usage, id;
WHERE
  wr1 : 'AUTOMOTIVE_DESIGN.PRODUCT_DEFINITION_USAGE' IN TYPEOF(SELF\
    product_definition_effectivity.usage);
END_ENTITY; -- 10303-44: configuration_management_schema
 
ENTITY configuration_interpolation;
  previous_configuration_definition : configuration_definition;
  next_configuration_definition : configuration_definition;
  interpolation : interpolation_type;
END_ENTITY; -- 10303-105: kinematic_analysis_control_and_result_schema
 
ENTITY configuration_item;
  id : identifier;
  name : label;
  description :  OPTIONAL text;
  item_concept : product_concept;
  purpose :  OPTIONAL label;
END_ENTITY; -- 10303-44: configuration_management_schema
 
ENTITY configured_effectivity_assignment
SUBTYPE OF (effectivity_assignment);
  items : SET [1:?] OF configured_effectivity_item;
WHERE
  wr1 : (SIZEOF(['AUTOMOTIVE_DESIGN.' + 'EFFECTIVITY'] * TYPEOF(SELF.
    assigned_effectivity)) = 1) AND (SELF.assigned_effectivity.id = 
    'configuration validity');
  wr2 : SIZEOF(SELF.items) = 1;
  wr3 : SIZEOF(QUERY(i <* SELF.items | NOT ('AUTOMOTIVE_DESIGN.' + 
    'PRODUCT_DEFINITION' IN TYPEOF(i)) OR NOT (i\product_definition.
    frame_of_reference.name IN ['conceptual definition', 'part occurrence', 
    'functional definition', 'alternative definition']))) = 0;
  wr4 : SELF.role.name IN ['design', 'usage'];
  wr5 : (SELF.role.name <> 'design') OR (SIZEOF(QUERY(i <* SELF.items | (
    'AUTOMOTIVE_DESIGN.' + 'PRODUCT_DEFINITION' IN TYPEOF(i)) AND (i\
    product_definition.frame_of_reference.name = 'part occurrence'))) = 0);
  wr6 : (SELF.role.name <> 'usage') OR (SIZEOF(QUERY(i <* SELF.items | (
    'AUTOMOTIVE_DESIGN.' + 'PRODUCT_DEFINITION' IN TYPEOF(i)) AND (i\
    product_definition.frame_of_reference.name = 'conceptual definition'))) = 0
    );
  wr7 : SELF.role.description IN ['exception', 'inherited', 'local'];
  wr8 : SIZEOF(QUERY(x <* USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.EFFECTIVITY_CONTEXT_ASSIGNMENT.ASSIGNED_EFFECTIVITY_ASSIGNMENT'
    ) | 'AUTOMOTIVE_DESIGN.' + 'CONFIGURED_EFFECTIVITY_CONTEXT_ASSIGNMENT' 
    IN TYPEOF(x))) = 1;
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY configured_effectivity_context_assignment
SUBTYPE OF (effectivity_context_assignment);
  items : SET [1:?] OF configured_effectivity_context_item;
WHERE
  wr1 : 'AUTOMOTIVE_DESIGN.' + 'CONFIGURED_EFFECTIVITY_ASSIGNMENT' IN TYPEOF
    (SELF.assigned_effectivity_assignment);
  wr2 : SIZEOF(SELF.items) = 1;
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY conic
SUPERTYPE OF (ONEOF (circle, ellipse, hyperbola, parabola))
SUBTYPE OF (curve);
  position : axis2_placement;
END_ENTITY; -- 10303-42: geometry_schema
 
ENTITY conical_surface
SUBTYPE OF (elementary_surface);
  radius : length_measure;
  semi_angle : plane_angle_measure;
WHERE
  wr1 : radius >= 0.0;
END_ENTITY; -- 10303-42: geometry_schema
 
ENTITY connected_edge_set
SUBTYPE OF (topological_representation_item);
  ces_edges : SET [1:?] OF edge;
END_ENTITY; -- 10303-42: topology_schema
 
ENTITY connected_face_set
SUPERTYPE OF (ONEOF (closed_shell, open_shell))
SUBTYPE OF (topological_representation_item);
  cfs_faces : SET [1:?] OF face;
END_ENTITY; -- 10303-42: topology_schema
 
ENTITY connected_face_sub_set
SUBTYPE OF (connected_face_set);
  parent_face_set : connected_face_set;
END_ENTITY; -- 10303-42: topology_schema
 
ENTITY constructive_geometry_representation
SUBTYPE OF (representation);
WHERE
  wr1 : ('AUTOMOTIVE_DESIGN.' + 'GEOMETRIC_REPRESENTATION_CONTEXT' IN TYPEOF
    (SELF.context_of_items)) AND {2 <= SELF.context_of_items\
    geometric_representation_context.coordinate_space_dimension <= 3};
  wr2 : SIZEOF(QUERY(cgr_i <* SELF.items | SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'PLACEMENT', 'AUTOMOTIVE_DESIGN.' + 'CURVE', 'AUTOMOTIVE_DESIGN.' + 
    'EDGE', 'AUTOMOTIVE_DESIGN.' + 'FACE', 'AUTOMOTIVE_DESIGN.' + 'POINT'
    , 'AUTOMOTIVE_DESIGN.' + 'SURFACE', 'AUTOMOTIVE_DESIGN.' + 
    'FACE_SURFACE', 'AUTOMOTIVE_DESIGN.' + 'VERTEX_POINT'] * TYPEOF(cgr_i))
     <> 1)) = 0;
  wr3 : SIZEOF(USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.REPRESENTATION_RELATIONSHIP.REP_2')) > 0;
  wr4 : SIZEOF(USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.REPRESENTATION_MAP.MAPPED_REPRESENTATION')) = 0;
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY constructive_geometry_representation_relationship
SUBTYPE OF (representation_relationship);
WHERE
  wr1 : (SELF.rep_1.context_of_items :=: SELF.rep_2.context_of_items) AND (
    'AUTOMOTIVE_DESIGN.' + 'GEOMETRIC_REPRESENTATION_CONTEXT' IN TYPEOF(SELF
    .rep_1.context_of_items));
  wr2 : 'AUTOMOTIVE_DESIGN.' + 'CONSTRUCTIVE_GEOMETRY_REPRESENTATION' IN 
    TYPEOF(SELF.rep_2);
  wr3 : SIZEOF(['AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION', 
    'AUTOMOTIVE_DESIGN.' + 'CONSTRUCTIVE_GEOMETRY_REPRESENTATION'] * TYPEOF(
    SELF.rep_1)) = 1;
  wr4 : NOT ('AUTOMOTIVE_DESIGN.' + 
    'REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION' IN TYPEOF(SELF));
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY contact_ratio_representation
SUBTYPE OF (representation);
WHERE
  wr1 : (SIZEOF(SELF.items) = 1) AND (SIZEOF(QUERY(i <* SELF.items | (SIZEOF([
    'AUTOMOTIVE_DESIGN.' + 'MEASURE_REPRESENTATION_ITEM', 
    'AUTOMOTIVE_DESIGN.' + 'VALUE_RANGE'] * TYPEOF(i)) = 1) AND (i.name = 
    'ratio value'))) = 1);
  wr2 : (SIZEOF(QUERY(pdr <* USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION'
    ) | pdr.name = 'contact ratio reference')) = 1) AND (SIZEOF(QUERY(pdr <* 
    USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION'
    ) | (pdr.name = 'contact ratio reference') AND ('AUTOMOTIVE_DESIGN.' + 
    'PHYSICALLY_MODELLED_PRODUCT_DEFINITION' IN TYPEOF(pdr.definition.
    definition)))) = 1);
  wr3 : (SIZEOF(USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION'
    )) = 1) AND (SIZEOF(QUERY(pdr <* USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION'
    ) | SIZEOF(QUERY(gpa <* USEDIN(pdr.definition, 
    'AUTOMOTIVE_DESIGN.GENERAL_PROPERTY_ASSOCIATION.DERIVED_DEFINITION') | (
    'AUTOMOTIVE_DESIGN.' + 'GENERAL_PROPERTY' IN TYPEOF(gpa.base_definition)
    ) AND (gpa.base_definition.name = 'surface_texture'))) = 1)) = 1);
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY context_dependent_invisibility
SUBTYPE OF (invisibility);
  presentation_context : invisibility_context;
END_ENTITY; -- 10303-46: presentation_appearance_schema
 
ENTITY context_dependent_over_riding_styled_item
SUBTYPE OF (over_riding_styled_item);
  style_context : SET [1:2] OF style_context_select;
WHERE
  wr1 : (SIZEOF(QUERY(sc <* SELF.style_context | 
    'AUTOMOTIVE_DESIGN.REPRESENTATION' IN TYPEOF(sc))) = 1) AND (SIZEOF(
    QUERY(sc <* SELF.style_context | 'AUTOMOTIVE_DESIGN.REPRESENTATION_ITEM'
     IN TYPEOF(sc))) = 1);
END_ENTITY; -- 10303-46: presentation_appearance_schema
 
ENTITY context_dependent_shape_representation;
  representation_relation : shape_representation_relationship;
  represented_product_relation : product_definition_shape;
DERIVE
  description : text := get_description_value(SELF);
  name : label := get_name_value(SELF);
WHERE
  wr1 : 'AUTOMOTIVE_DESIGN.PRODUCT_DEFINITION_RELATIONSHIP' IN TYPEOF(SELF.
    represented_product_relation.definition);
  wr2 : SIZEOF(USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
  wr3 : SIZEOF(USEDIN(SELF, 'AUTOMOTIVE_DESIGN.NAME_ATTRIBUTE.NAMED_ITEM'))
     <= 1;
END_ENTITY; -- 10303-41: product_property_representation_schema
 
ENTITY context_dependent_unit
SUBTYPE OF (named_unit);
  name : label;
END_ENTITY; -- 10303-41: measure_schema
 
ENTITY contract;
  name : label;
  purpose : text;
  kind : contract_type;
END_ENTITY; -- 10303-41: contract_schema
 
ENTITY contract_assignment ABSTRACT SUPERTYPE;
  assigned_contract : contract;
DERIVE
  role : object_role := get_role(SELF);
WHERE
  wr1 : SIZEOF(USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
END_ENTITY; -- 10303-41: management_resources_schema
 
ENTITY contract_type;
  description : label;
END_ENTITY; -- 10303-41: contract_schema
 
ENTITY conversion_based_unit
SUBTYPE OF (named_unit);
  name : label;
  conversion_factor : measure_with_unit;
END_ENTITY; -- 10303-41: measure_schema
 
ENTITY coordinated_universal_time_offset;
  hour_offset : INTEGER;
  minute_offset :  OPTIONAL INTEGER;
  sense : ahead_or_behind;
DERIVE
  actual_minute_offset : INTEGER := NVL(minute_offset, 0);
WHERE
  wr1 : {0 <= hour_offset < 24};
  wr2 : {0 <= actual_minute_offset <= 59};
  wr3 : NOT (((hour_offset <> 0) OR (actual_minute_offset <> 0)) AND (sense = 
    exact));
END_ENTITY; -- 10303-41: date_time_schema
 
ENTITY cos_function
SUBTYPE OF (unary_function_call);
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY csg_shape_representation
SUBTYPE OF (shape_representation);
WHERE
  wr1 : SELF.context_of_items\geometric_representation_context.
    coordinate_space_dimension = 3;
  wr2 : SIZEOF(QUERY(it <* SELF.items | SIZEOF([
    'AUTOMOTIVE_DESIGN.CSG_SOLID', 'AUTOMOTIVE_DESIGN.MAPPED_ITEM', 
    'AUTOMOTIVE_DESIGN.AXIS2_PLACEMENT_3D', 
    'AUTOMOTIVE_DESIGN.SOLID_REPLICA', 
    'AUTOMOTIVE_DESIGN.REVOLVED_FACE_SOLID', 
    'AUTOMOTIVE_DESIGN.EXTRUDED_FACE_SOLID'] * TYPEOF(it)) <> 1)) = 0;
  wr3 : SIZEOF(QUERY(mi <* QUERY(it <* SELF.items | 
    'AUTOMOTIVE_DESIGN.MAPPED_ITEM' IN TYPEOF(it)) | NOT (
    'AUTOMOTIVE_DESIGN.CSG_SHAPE_REPRESENTATION' IN TYPEOF(mi\mapped_item.
    mapping_source.mapped_representation)))) = 0;
  wr4 : SIZEOF(QUERY(sr <* QUERY(it <* SELF.items | 
    'AUTOMOTIVE_DESIGN.SOLID_REPLICA' IN TYPEOF(it)) | SIZEOF([
    'AUTOMOTIVE_DESIGN.CSG_SOLID', 
    'AUTOMOTIVE_DESIGN.REVOLVED_FACE_SOLID', 
    'AUTOMOTIVE_DESIGN.EXTRUDED_FACE_SOLID'] * TYPEOF(sr\solid_replica.
    parent_solid)) = 0)) = 0;
  wr5 : SIZEOF(QUERY(it <* SELF.items | NOT (
    'AUTOMOTIVE_DESIGN.AXIS2_PLACEMENT_3D' IN TYPEOF(it)))) > 0;
END_ENTITY; -- 10303-515: aic_csg
 
ENTITY csg_solid
SUBTYPE OF (solid_model);
  tree_root_expression : csg_select;
END_ENTITY; -- 10303-42: geometric_model_schema
 
ENTITY curve
SUPERTYPE OF (ONEOF (line, conic, pcurve, surface_curve, offset_curve_2d, 
offset_curve_3d, curve_replica))
SUBTYPE OF (geometric_representation_item);
END_ENTITY; -- 10303-42: geometry_schema
 
ENTITY curve_bounded_surface
SUBTYPE OF (bounded_surface);
  basis_surface : surface;
  boundaries : SET [1:?] OF boundary_curve;
  implicit_outer : BOOLEAN;
WHERE
  wr1 : NOT implicit_outer OR (SIZEOF(QUERY(temp <* boundaries | 
    'AUTOMOTIVE_DESIGN.OUTER_BOUNDARY_CURVE' IN TYPEOF(temp))) = 0);
  wr2 : NOT implicit_outer OR ('AUTOMOTIVE_DESIGN.BOUNDED_SURFACE' IN TYPEOF
    (basis_surface));
  wr3 : SIZEOF(QUERY(temp <* boundaries | 
    'AUTOMOTIVE_DESIGN.OUTER_BOUNDARY_CURVE' IN TYPEOF(temp))) <= 1;
  wr4 : SIZEOF(QUERY(temp <* boundaries | temp\composite_curve_on_surface.
    basis_surface[1] <> SELF.basis_surface)) = 0;
END_ENTITY; -- 10303-42: geometry_schema
 
ENTITY curve_dimension
SUBTYPE OF (dimension_curve_directed_callout);
END_ENTITY; -- 10303-506: aic_draughting_elements
 
ENTITY curve_replica
SUBTYPE OF (curve);
  parent_curve : curve;
  transformation : cartesian_transformation_operator;
WHERE
  wr1 : transformation.dim = parent_curve.dim;
  wr2 : acyclic_curve_replica(SELF, parent_curve);
END_ENTITY; -- 10303-42: geometry_schema
 
ENTITY curve_style;
  name : label;
  curve_font : curve_font_or_scaled_curve_font_select;
  curve_width : size_select;
  curve_colour : colour;
END_ENTITY; -- 10303-46: presentation_appearance_schema
 
ENTITY curve_style_font;
  name : label;
  pattern_list :  LIST [1:?] OF curve_style_font_pattern;
END_ENTITY; -- 10303-46: presentation_appearance_schema
 
ENTITY curve_style_font_pattern;
  visible_segment_length : positive_length_measure;
  invisible_segment_length : positive_length_measure;
END_ENTITY; -- 10303-46: presentation_appearance_schema
 
ENTITY curve_style_rendering;
  rendering_method : shading_curve_method;
  rendering_properties : surface_rendering_properties;
END_ENTITY; -- 10303-46: presentation_appearance_schema
 
ENTITY curve_swept_solid_shape_representation
SUBTYPE OF (shape_representation);
WHERE
  wr1 : SIZEOF(QUERY(it <* SELF.items | NOT (SIZEOF([
    'AUTOMOTIVE_DESIGN_LF.SWEPT_AREA_SOLID', 
    'AUTOMOTIVE_DESIGN_LF.SWEPT_DISK_SOLID', 'AUTOMOTIVE_DESIGN_LF.MAPPED_ITEM'
    , 'AUTOMOTIVE_DESIGN_LF.AXIS2_PLACEMENT_3D'] * TYPEOF(it)) = 1))) = 0;
  wr2 : SIZEOF(QUERY(it <* SELF.items | SIZEOF([
    'AUTOMOTIVE_DESIGN_LF.SWEPT_AREA_SOLID', 
    'AUTOMOTIVE_DESIGN_LF.SWEPT_DISK_SOLID', 'AUTOMOTIVE_DESIGN_LF.MAPPED_ITEM'
    ] * TYPEOF(it)) = 1)) > 0;
  wr3 : SIZEOF(QUERY(mi <* QUERY(it <* items | 
    'AUTOMOTIVE_DESIGN_LF.MAPPED_ITEM' IN TYPEOF(it)) | NOT (
    'AUTOMOTIVE_DESIGN_LF.CURVE_SWEPT_SOLID_SHAPE_REPRESENTATION' IN TYPEOF(mi\
    mapped_item.mapping_source.mapped_representation)))) = 0;
  wr4 : SIZEOF(QUERY(scsas <* QUERY(it <* SELF.items | 
    'AUTOMOTIVE_DESIGN_LF.SURFACE_CURVE_SWEPT_AREA_SOLID' IN TYPEOF(it)) | NOT 
    (('AUTOMOTIVE_DESIGN_LF.SURFACE_CURVE' IN TYPEOF(scsas.directrix)) OR (
    'AUTOMOTIVE_DESIGN_LF.PCURVE' IN TYPEOF(scsas.directrix))))) = 0;
END_ENTITY; (* declared in: aic_curve_swept_solid *)
 
ENTITY cylindrical_pair
SUBTYPE OF (kinematic_pair);
END_ENTITY; -- 10303-105: kinematic_structure_schema
 
ENTITY cylindrical_pair_range
SUBTYPE OF (simple_pair_range);
  SELF\simple_pair_range.applies_to_pair : cylindrical_pair;
  lower_limit_actual_translation : translational_range_measure;
  upper_limit_actual_translation : translational_range_measure;
  lower_limit_actual_rotation : rotational_range_measure;
  upper_limit_actual_rotation : rotational_range_measure;
WHERE
  wr1 : ('AUTOMOTIVE_DESIGN.UNLIMITED_RANGE' IN TYPEOF(
    lower_limit_actual_translation)) OR ('AUTOMOTIVE_DESIGN.UNLIMITED_RANGE'
     IN TYPEOF(upper_limit_actual_translation)) XOR (
    lower_limit_actual_translation < upper_limit_actual_translation);
  wr2 : ('AUTOMOTIVE_DESIGN.UNLIMITED_RANGE' IN TYPEOF(
    lower_limit_actual_rotation)) OR ('AUTOMOTIVE_DESIGN.UNLIMITED_RANGE' IN
     TYPEOF(upper_limit_actual_rotation)) XOR (lower_limit_actual_rotation < 
    upper_limit_actual_rotation);
END_ENTITY; -- 10303-105: kinematic_structure_schema
 
ENTITY cylindrical_pair_value
SUBTYPE OF (pair_value);
  SELF\pair_value.applies_to_pair : cylindrical_pair;
  actual_translation : length_measure;
  actual_rotation : plane_angle_measure;
END_ENTITY; -- 10303-105: kinematic_structure_schema
 
ENTITY cylindrical_surface
SUBTYPE OF (elementary_surface);
  radius : positive_length_measure;
END_ENTITY; -- 10303-42: geometry_schema
 
ENTITY cylindricity_tolerance
SUBTYPE OF (geometric_tolerance);
WHERE
  wr1 : NOT ('AUTOMOTIVE_DESIGN.' + 
    'GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE' IN TYPEOF(SELF));
END_ENTITY; -- 10303-519: aic_geometric_tolerances
 
ENTITY data_environment;
  name : label;
  description : text;
  elements : SET [1:?] OF property_definition_representation;
END_ENTITY; -- 10303-45: material_property_representation_schema
 
ENTITY date
SUPERTYPE OF (calendar_date);
  year_component : year_number;
END_ENTITY; -- 10303-41: date_time_schema
 
ENTITY date_and_time;
  date_component : date;
  time_component : local_time;
END_ENTITY; -- 10303-41: date_time_schema
 
ENTITY date_and_time_assignment ABSTRACT SUPERTYPE;
  assigned_date_and_time : date_and_time;
  role : date_time_role;
END_ENTITY; -- 10303-41: management_resources_schema
 
ENTITY date_assignment ABSTRACT SUPERTYPE;
  assigned_date : date;
  role : date_role;
END_ENTITY; -- 10303-41: management_resources_schema
 
ENTITY date_role;
  name : label;
DERIVE
  description : text := get_description_value(SELF);
WHERE
  wr1 : SIZEOF(USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
END_ENTITY; -- 10303-41: date_time_schema
 
ENTITY date_time_role;
  name : label;
DERIVE
  description : text := get_description_value(SELF);
WHERE
  wr1 : SIZEOF(USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
END_ENTITY; -- 10303-41: date_time_schema
 
ENTITY dated_effectivity
SUBTYPE OF (effectivity);
  effectivity_end_date :  OPTIONAL date_time_or_event_occurrence;
  effectivity_start_date : date_time_or_event_occurrence;
END_ENTITY; -- 10303-41: effectivity_schema
 
ENTITY datum
SUBTYPE OF (shape_aspect);
  identification : identifier;
INVERSE
  established_by_relationships : SET [1:?] OF shape_aspect_relationship FOR 
  related_shape_aspect;
WHERE
  wr1 : SIZEOF(QUERY(x <* SELF\datum.established_by_relationships | SIZEOF(
    TYPEOF(x\shape_aspect_relationship.relating_shape_aspect) * [
    'AUTOMOTIVE_DESIGN.DATUM_FEATURE', 'AUTOMOTIVE_DESIGN.DATUM_TARGET'])
     <> 1)) = 0;
END_ENTITY; -- 10303-47: shape_aspect_definition_schema
 
ENTITY datum_feature
SUBTYPE OF (shape_aspect);
INVERSE
  feature_basis_relationship : shape_aspect_relationship FOR 
  relating_shape_aspect;
WHERE
  wr1 : SIZEOF(QUERY(sar <* bag_to_set(USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')) | 
    NOT ('AUTOMOTIVE_DESIGN.DATUM' IN TYPEOF(sar\shape_aspect_relationship.
    related_shape_aspect)))) = 0;
  wr2 : SELF\shape_aspect.product_definitional = TRUE;
END_ENTITY; -- 10303-47: shape_aspect_definition_schema
 
ENTITY datum_feature_callout
SUBTYPE OF (draughting_callout);
END_ENTITY; -- 10303-506: aic_draughting_elements
 
ENTITY datum_reference;
  precedence : INTEGER;
  referenced_datum : datum;
WHERE
  wr1 : precedence > 0;
END_ENTITY; -- 10303-47: shape_aspect_definition_schema
 
ENTITY datum_target
SUBTYPE OF (shape_aspect);
  target_id : identifier;
INVERSE
  target_basis_relationship : shape_aspect_relationship FOR 
  relating_shape_aspect;
WHERE
  wr1 : SIZEOF(QUERY(sar <* bag_to_set(USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')) | 
    NOT ('AUTOMOTIVE_DESIGN.DATUM' IN TYPEOF(sar\shape_aspect_relationship.
    related_shape_aspect)))) = 0;
  wr2 : SELF\shape_aspect.product_definitional = TRUE;
END_ENTITY; -- 10303-47: shape_aspect_definition_schema
 
ENTITY datum_target_callout
SUBTYPE OF (draughting_callout);
END_ENTITY; -- 10303-506: aic_draughting_elements
 
ENTITY default_tolerance_table
SUBTYPE OF (representation);
WHERE
  wr1 : SIZEOF(QUERY(i <* SELF.items | NOT ('AUTOMOTIVE_DESIGN.' + 
    'DEFAULT_TOLERANCE_TABLE_CELL' IN TYPEOF(i)))) = 0;
  wr2 : (SIZEOF(QUERY(rr <* USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.REPRESENTATION_RELATIONSHIP.REP_1') | rr.name <> 
    'general tolerance definition')) = 0) AND (SIZEOF(QUERY(rr <* USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.REPRESENTATION_RELATIONSHIP.REP_1') | (rr.name = 
    'general tolerance definition') AND (rr.rep_2.name <> 'default tolerances')
    )) = 0) AND (SIZEOF(USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.REPRESENTATION_RELATIONSHIP.REP_2')) = 0);
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY default_tolerance_table_cell
SUBTYPE OF (compound_representation_item);
WHERE
  wr1 : SIZEOF(QUERY(x <* USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.REPRESENTATION.ITEMS') | 'AUTOMOTIVE_DESIGN.' + 
    'DEFAULT_TOLERANCE_TABLE' IN TYPEOF(x))) = 1;
  wr2 : default_tolerance_table_cell_wr2(SELF\compound_representation_item.
    item_element);
  wr3 : default_tolerance_table_cell_wr3(SELF\compound_representation_item.
    item_element);
  wr4 : default_tolerance_table_cell_wr4(SELF\compound_representation_item.
    item_element);
  wr5 : default_tolerance_table_cell_wr5(SELF\compound_representation_item.
    item_element);
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY defined_character_glyph
SUBTYPE OF (geometric_representation_item);
  definition : defined_glyph_select;
  placement : axis2_placement;
END_ENTITY; -- 10303-46: presentation_definition_schema
 
ENTITY defined_function
ABSTRACT SUPERTYPE OF (ONEOF (numeric_defined_function, string_defined_function
, boolean_defined_function) ANDOR sql_mappable_defined_function);
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY defined_symbol
SUBTYPE OF (geometric_representation_item);
  definition : defined_symbol_select;
  target : symbol_target;
END_ENTITY; -- 10303-46: presentation_definition_schema
 
ENTITY definitional_representation
SUBTYPE OF (representation);
WHERE
  wr1 : 'AUTOMOTIVE_DESIGN.PARAMETRIC_REPRESENTATION_CONTEXT' IN TYPEOF(SELF
    \representation.context_of_items);
END_ENTITY; -- 10303-43: representation_schema
 
ENTITY degenerate_pcurve
SUBTYPE OF (point);
  basis_surface : surface;
  reference_to_curve : definitional_representation;
WHERE
  wr1 : SIZEOF(reference_to_curve\representation.items) = 1;
  wr2 : 'AUTOMOTIVE_DESIGN.CURVE' IN TYPEOF(reference_to_curve\
    representation.items[1]);
  wr3 : reference_to_curve\representation.items[1]\
    geometric_representation_item.dim = 2;
END_ENTITY; -- 10303-42: geometry_schema
 
ENTITY degenerate_toroidal_surface
SUBTYPE OF (toroidal_surface);
  select_outer : BOOLEAN;
WHERE
  wr1 : major_radius < minor_radius;
END_ENTITY; -- 10303-42: geometry_schema
 
ENTITY derived_shape_aspect
SUPERTYPE OF (ONEOF (apex, centre_of_symmetry, geometric_alignment, 
geometric_intersection, parallel_offset, perpendicular_to, extension, tangent))
SUBTYPE OF (shape_aspect);
INVERSE
  deriving_relationships : SET [1:?] OF shape_aspect_relationship FOR 
  relating_shape_aspect;
WHERE
  wr1 : SIZEOF(QUERY(dr <* SELF\derived_shape_aspect.deriving_relationships | 
    NOT ('AUTOMOTIVE_DESIGN.' + 'SHAPE_ASPECT_DERIVING_RELATIONSHIP' IN 
    TYPEOF(dr)))) = 0;
END_ENTITY; -- 10303-47: shape_aspect_definition_schema
 
ENTITY derived_unit;
  elements : SET [1:?] OF derived_unit_element;
DERIVE
  name : label := get_name_value(SELF);
WHERE
  wr1 : (SIZEOF(elements) > 1) OR (SIZEOF(elements) = 1) AND (elements[1].
    exponent <> 1.000000);
  wr2 : SIZEOF(USEDIN(SELF, 'AUTOMOTIVE_DESIGN.NAME_ATTRIBUTE.NAMED_ITEM'))
     <= 1;
END_ENTITY; -- 10303-41: measure_schema
 
ENTITY derived_unit_element;
  unit : named_unit;
  exponent : REAL;
END_ENTITY; -- 10303-41: measure_schema
 
ENTITY derived_unit_variable
SUBTYPE OF (derived_unit, variable_semantics);
INVERSE
  associated_variable_environment : environment FOR semantics;
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY description_attribute;
  attribute_value : text;
  described_item : description_attribute_select;
END_ENTITY; -- 10303-41: basic_attribute_schema
 
ENTITY descriptive_representation_item
SUBTYPE OF (representation_item);
  description : text;
END_ENTITY; -- 10303-45: qualified_measure_schema
 
ENTITY diameter_dimension
SUBTYPE OF (dimension_curve_directed_callout);
END_ENTITY; -- 10303-506: aic_draughting_elements
 
ENTITY dimension_callout
SUBTYPE OF (draughting_callout);
WHERE
  wr1 : ('AUTOMOTIVE_DESIGN_LF.LEADER_DIRECTED_CALLOUT' IN TYPEOF(SELF)) XOR (
    SIZEOF(QUERY(dce_1 <* SELF\draughting_callout.contents | 
    'AUTOMOTIVE_DESIGN_LF.LEADER_CURVE' IN TYPEOF(dce_1))) = 0);
  wr2 : ('AUTOMOTIVE_DESIGN_LF.PROJECTION_DIRECTED_CALLOUT' IN TYPEOF(SELF)) 
    XOR (SIZEOF(QUERY(dce_1 <* SELF\draughting_callout.contents | 
    'AUTOMOTIVE_DESIGN_LF.PROJECTION_CURVE' IN TYPEOF(dce_1))) = 0);
  wr3 : ('AUTOMOTIVE_DESIGN_LF.DIMENSION_CURVE_DIRECTED_CALLOUT' IN TYPEOF(SELF
    )) XOR (SIZEOF(QUERY(dce_1 <* SELF\draughting_callout.contents | 
    'AUTOMOTIVE_DESIGN_LF.DIMENSION_CURVE' IN TYPEOF(dce_1))) = 0);
END_ENTITY; (* declared in: draughting_dimension_schema *)
 
ENTITY dimension_callout_component_relationship
SUBTYPE OF (draughting_callout_relationship);
WHERE
  wr1 : SELF.name IN ['prefix', 'suffix'];
  wr2 : 'AUTOMOTIVE_DESIGN.STRUCTURED_DIMENSION_CALLOUT' IN TYPEOF(SELF.
    relating_draughting_callout);
  wr3 : SIZEOF(TYPEOF(SELF.related_draughting_callout) * [
    'AUTOMOTIVE_DESIGN.LEADER_DIRECTED_CALLOUT', 
    'AUTOMOTIVE_DESIGN.PROJECTION_DIRECTED_CALLOUT', 
    'AUTOMOTIVE_DESIGN.DIMENSION_CURVE_DIRECTED_CALLOUT', 
    'AUTOMOTIVE_DESIGN.STRUCTURED_DIMENSION_CALLOUT']) = 0;
  wr4 : SELF.related_draughting_callout.contents * SELF.
    relating_draughting_callout.contents = SELF.related_draughting_callout.
    contents;
  wr5 : (SELF.name = 'prefix') AND (SIZEOF(QUERY(ato <* QUERY(con <* SELF.
    related_draughting_callout.contents | 
    'AUTOMOTIVE_DESIGN.ANNOTATION_TEXT_OCCURRENCE' IN TYPEOF(con)) | NOT (
    ato.name = 'prefix text'))) = 0);
  wr6 : (SELF.name = 'suffix') AND (SIZEOF(QUERY(ato <* QUERY(con <* SELF.
    related_draughting_callout.contents | 
    'AUTOMOTIVE_DESIGN.ANNOTATION_TEXT_OCCURRENCE' IN TYPEOF(con)) | NOT (
    ato.name = 'suffix text'))) = 0);
END_ENTITY; -- 10303-506: aic_draughting_elements
 
ENTITY dimension_callout_relationship
SUBTYPE OF (draughting_callout_relationship);
WHERE
  wr1 : SELF.name IN ['primary', 'secondary'];
  wr2 : SIZEOF(TYPEOF(SELF.relating_draughting_callout) * [
    'AUTOMOTIVE_DESIGN.ANGULAR_DIMENSION', 
    'AUTOMOTIVE_DESIGN.CURVE_DIMENSION', 
    'AUTOMOTIVE_DESIGN.DIAMETER_DIMENSION', 
    'AUTOMOTIVE_DESIGN.LEADER_DIRECTED_DIMENSION', 
    'AUTOMOTIVE_DESIGN.LINEAR_DIMENSION', 
    'AUTOMOTIVE_DESIGN.ORDINATE_DIMENSION', 
    'AUTOMOTIVE_DESIGN.RADIUS_DIMENSION']) >= 1;
  wr3 : SIZEOF(TYPEOF(SELF.related_draughting_callout) * [
    'AUTOMOTIVE_DESIGN.DIMENSION_CURVE_DIRECTED_CALLOUT', 
    'AUTOMOTIVE_DESIGN.PROJECTION_DIRECTED_CALLOUT', 
    'AUTOMOTIVE_DESIGN.LEADER_DIRECTED_CALLOUT']) = 0;
  wr4 : SELF.related_draughting_callout.contents * SELF.
    relating_draughting_callout.contents = SELF.related_draughting_callout.
    contents;
END_ENTITY; -- 10303-506: aic_draughting_elements
 
ENTITY dimension_curve
SUBTYPE OF (annotation_curve_occurrence);
WHERE
  wr1 : SIZEOF(QUERY(dct <* USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.TERMINATOR_SYMBOL.ANNOTATED_CURVE') | 
    'AUTOMOTIVE_DESIGN.' + 'DIMENSION_CURVE_TERMINATOR' IN TYPEOF(dct))) <= 
    2;
  wr2 : SIZEOF(QUERY(dcdc <* USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.DRAUGHTING_CALLOUT.CONTENTS') | 
    'AUTOMOTIVE_DESIGN.' + 'DIMENSION_CURVE_DIRECTED_CALLOUT' IN TYPEOF(dcdc
    ))) >= 1;
  wr3 : (SIZEOF(QUERY(dct1 <* USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.TERMINATOR_SYMBOL.ANNOTATED_CURVE') | (
    'AUTOMOTIVE_DESIGN.' + 'DIMENSION_CURVE_TERMINATOR' IN TYPEOF(dct1)) AND
     (dct1.role = origin))) <= 1) AND (SIZEOF(QUERY(dct2 <* USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.TERMINATOR_SYMBOL.ANNOTATED_CURVE') | (
    'AUTOMOTIVE_DESIGN.' + 'DIMENSION_CURVE_TERMINATOR' IN TYPEOF(dct2)) AND
     (dct2.role = target))) <= 1);
END_ENTITY; -- 10303-101: draughting_element_schema
 
ENTITY dimension_curve_directed_callout
SUBTYPE OF (draughting_callout);
WHERE
  wr1 : SIZEOF(QUERY(d_c <* SELF\draughting_callout.contents | 
    'AUTOMOTIVE_DESIGN.DIMENSION_CURVE' IN TYPEOF(d_c))) = 1;
  wr2 : SIZEOF(SELF\draughting_callout.contents) >= 2;
END_ENTITY; -- 10303-101: draughting_element_schema
 
ENTITY dimension_curve_terminator
SUBTYPE OF (terminator_symbol);
  role : dimension_extent_usage;
WHERE
  wr1 : 'AUTOMOTIVE_DESIGN.DIMENSION_CURVE' IN TYPEOF(SELF\terminator_symbol
    .annotated_curve);
END_ENTITY; -- 10303-101: draughting_element_schema
 
ENTITY dimension_pair
SUBTYPE OF (draughting_callout_relationship);
WHERE
  wr1 : SELF.name IN ['chained', 'parallel'];
  wr2 : SIZEOF(TYPEOF(SELF.relating_draughting_callout) * [
    'AUTOMOTIVE_DESIGN.ANGULAR_DIMENSION', 
    'AUTOMOTIVE_DESIGN.CURVE_DIMENSION', 
    'AUTOMOTIVE_DESIGN.DIAMETER_DIMENSION', 
    'AUTOMOTIVE_DESIGN.LINEAR_DIMENSION', 
    'AUTOMOTIVE_DESIGN.ORDINATE_DIMENSION', 
    'AUTOMOTIVE_DESIGN.RADIUS_DIMENSION']) = 1;
  wr3 : SIZEOF(TYPEOF(SELF.related_draughting_callout) * [
    'AUTOMOTIVE_DESIGN.ANGULAR_DIMENSION', 
    'AUTOMOTIVE_DESIGN.CURVE_DIMENSION', 
    'AUTOMOTIVE_DESIGN.DIAMETER_DIMENSION', 
    'AUTOMOTIVE_DESIGN.LINEAR_DIMENSION', 
    'AUTOMOTIVE_DESIGN.ORDINATE_DIMENSION', 
    'AUTOMOTIVE_DESIGN.RADIUS_DIMENSION']) = 1;
END_ENTITY; -- 10303-506: aic_draughting_elements
 
ENTITY dimension_related_tolerance_zone_element;
  related_dimension : dimensional_location;
  related_element : tolerance_zone_definition;
END_ENTITY; -- 10303-47: shape_tolerance_schema
 
ENTITY dimension_text_associativity
SUBTYPE OF (text_literal, mapped_item);
WHERE
  wr1 : 'AUTOMOTIVE_DESIGN.SHAPE_DIMENSION_REPRESENTATION' IN TYPEOF(SELF\
    mapped_item.mapping_source.mapped_representation);
  wr2 : 'AUTOMOTIVE_DESIGN.DRAUGHTING_CALLOUT' IN TYPEOF(SELF\mapped_item.
    mapping_target);
  wr3 : SIZEOF(QUERY(ato <* QUERY(si <* USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.STYLED_ITEM.ITEM') | 
    'AUTOMOTIVE_DESIGN.ANNOTATION_TEXT_OCCURRENCE' IN TYPEOF(si)) | NOT (
    SIZEOF(QUERY(dc <* USEDIN(ato, 
    'AUTOMOTIVE_DESIGN.DRAUGHTING_CALLOUT.CONTENTS') | 
    'AUTOMOTIVE_DESIGN.DRAUGHTING_CALLOUT' IN TYPEOF(dc)) * [SELF\
    mapped_item.mapping_target]) = 1))) = 0;
END_ENTITY; -- 10303-520: aic_associative_draughting_elements
 
ENTITY dimensional_characteristic_representation;
  dimension : dimensional_characteristic;
  representation : shape_dimension_representation;
END_ENTITY; -- 10303-47: shape_dimension_schema
 
ENTITY dimensional_exponents;
  length_exponent : REAL;
  mass_exponent : REAL;
  time_exponent : REAL;
  electric_current_exponent : REAL;
  thermodynamic_temperature_exponent : REAL;
  amount_of_substance_exponent : REAL;
  luminous_intensity_exponent : REAL;
END_ENTITY; -- 10303-41: measure_schema
 
ENTITY dimensional_location
SUPERTYPE OF (ONEOF (angular_location, dimensional_location_with_path))
SUBTYPE OF (shape_aspect_relationship);
END_ENTITY; -- 10303-47: shape_dimension_schema
 
ENTITY dimensional_location_with_path
SUBTYPE OF (dimensional_location);
  path : shape_aspect;
END_ENTITY; -- 10303-47: shape_dimension_schema
 
ENTITY dimensional_size
SUPERTYPE OF (ONEOF (angular_size, dimensional_size_with_path));
  applies_to : shape_aspect;
  name : label;
WHERE
  wr1 : applies_to.product_definitional = TRUE;
END_ENTITY; -- 10303-47: shape_dimension_schema
 
ENTITY dimensional_size_with_path
SUBTYPE OF (dimensional_size);
  path : shape_aspect;
END_ENTITY; -- 10303-47: shape_dimension_schema
 
ENTITY directed_action
SUBTYPE OF (executed_action);
  directive : action_directive;
END_ENTITY; -- directed_action: action_schema
 
ENTITY directed_angle
SUBTYPE OF (shape_aspect);
WHERE
  wr1 : 'AUTOMOTIVE_DESIGN.' + 'FEATURE_COMPONENT_DEFINITION' IN TYPEOF(SELF
    .of_shape.definition);
  wr2 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | 
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation))) = 1;
  wr3 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(pdr.used_representation.items) = 1)))
     = 1;
  wr4 : SELF.description IN ['punch direction', 'profile normal', 
    'surface normal'];
  wr5 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'angle') AND (SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'MEASURE_REPRESENTATION_ITEM', 'AUTOMOTIVE_DESIGN.' + 
    'PLANE_ANGLE_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2))) = 1))) = 1;
END_ENTITY; -- directed_angle: automotive_design
 
ENTITY directed_dimensional_location
SUBTYPE OF (dimensional_location);
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY direction
SUBTYPE OF (geometric_representation_item);
  direction_ratios :  LIST [2:3] OF REAL;
WHERE
  wr1 : SIZEOF(QUERY(tmp <* direction_ratios | tmp <> 0.0)) > 0;
END_ENTITY; -- 10303-42: geometry_schema
 
ENTITY direction_shape_representation
SUBTYPE OF (shape_representation);
WHERE
  wr1 : SIZEOF(SELF.items) = 1;
  wr2 : SIZEOF(QUERY(i <* SELF.items | 'AUTOMOTIVE_DESIGN.' + 'DIRECTION' IN
     TYPEOF(i))) = 1;
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY div_expression
SUBTYPE OF (binary_numeric_expression);
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY document;
  id : identifier;
  name : label;
  description :  OPTIONAL text;
  kind : document_type;
INVERSE
  representation_types : SET OF document_representation_type FOR 
  represented_document;
END_ENTITY; -- 10303-41: document_schema
 
ENTITY document_file
SUBTYPE OF (document, characterized_object);
WHERE
  wr1 : SELF\characterized_object.name = '';
  wr2 : NOT EXISTS(SELF\characterized_object.description);
  wr3 : SIZEOF(QUERY(drt <* SELF\document.representation_types | drt.name IN [
    'digital', 'physical'])) = 1;
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY document_product_association;
  name : label;
  description :  OPTIONAL text;
  relating_document : document;
  related_product : product_or_formation_or_definition;
END_ENTITY; -- 10303-41: document_schema
 
ENTITY document_product_equivalence
SUBTYPE OF (document_product_association);
WHERE
  wr1 : SELF.name = 'equivalence';
  wr2 : NOT ('AUTOMOTIVE_DESIGN.' + 'PRODUCT' IN TYPEOF(SELF.related_product
    )) OR (SELF.relating_document.kind.product_data_type = 
    'configuration controlled document') AND (SIZEOF(QUERY(prpc <* USEDIN(SELF.
    related_product, 
    'AUTOMOTIVE_DESIGN.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') | prpc.
    name = 'document')) = 1);
  wr3 : NOT ('AUTOMOTIVE_DESIGN.' + 'PRODUCT_DEFINITION_FORMATION' IN TYPEOF
    (SELF.related_product)) OR (SELF.relating_document.kind.product_data_type
     = 'configuration controlled document version') AND (SIZEOF(QUERY(prpc <* 
    USEDIN(SELF.related_product\product_definition_formation.of_product, 
    'AUTOMOTIVE_DESIGN.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') | prpc.
    name = 'document')) = 1);
  wr4 : NOT ('AUTOMOTIVE_DESIGN.' + 'PRODUCT_DEFINITION' IN TYPEOF(SELF.
    related_product)) OR (SELF.relating_document.kind.product_data_type = 
    'configuration controlled document definition') AND (SIZEOF(QUERY(prpc <* 
    USEDIN(SELF.related_product\product_definition.formation.of_product, 
    'AUTOMOTIVE_DESIGN.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') | prpc.
    name = 'document')) = 1);
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY document_reference ABSTRACT SUPERTYPE;
  assigned_document : document;
  source : label;
DERIVE
  role : object_role := get_role(SELF);
WHERE
  wr1 : SIZEOF(USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
END_ENTITY; -- 10303-41: management_resources_schema
 
ENTITY document_relationship;
  name : label;
  description :  OPTIONAL text;
  relating_document : document;
  related_document : document;
END_ENTITY; -- 10303-41: document_schema
 
ENTITY document_representation_type;
  name : label;
  represented_document : document;
END_ENTITY; -- 10303-41: document_schema
 
ENTITY document_type;
  product_data_type : label;
END_ENTITY; -- 10303-41: document_schema
 
ENTITY document_usage_constraint;
  source : document;
  subject_element : label;
  subject_element_value : text;
END_ENTITY; -- 10303-41: document_schema
 
ENTITY document_usage_constraint_assignment ABSTRACT SUPERTYPE;
  assigned_document_usage : document_usage_constraint;
  role : document_usage_role;
END_ENTITY; -- 10303-41: management_resources_schema
 
ENTITY document_usage_role;
  name : label;
  description :  OPTIONAL text;
END_ENTITY; -- 10303-41: management_resources_schema
 
ENTITY draughting_annotation_occurrence
SUBTYPE OF (annotation_occurrence);
WHERE
  wr1 : NOT ('AUTOMOTIVE_DESIGN.ANNOTATION_CURVE_OCCURRENCE' IN TYPEOF(SELF)
    ) OR (SIZEOF(QUERY(sty <* SELF.styles | NOT ((SIZEOF(sty.styles) = 1) AND (
    'AUTOMOTIVE_DESIGN.CURVE_STYLE' IN TYPEOF(sty.styles[1]))))) = 0);
  wr2 : NOT ('AUTOMOTIVE_DESIGN.ANNOTATION_FILL_AREA_OCCURRENCE' IN TYPEOF(
    SELF)) OR (SIZEOF(QUERY(sty <* SELF.styles | NOT ((SIZEOF(sty.styles) = 1) 
    AND ('AUTOMOTIVE_DESIGN.FILL_AREA_STYLE' IN TYPEOF(sty.styles[1]))))) = 
    0);
  wr3 : NOT ('AUTOMOTIVE_DESIGN.ANNOTATION_FILL_AREA_OCCURRENCE' IN TYPEOF(
    SELF)) OR (SIZEOF(QUERY(bound <* SELF.item\annotation_fill_area.boundaries
     | NOT (SIZEOF(QUERY(si <* USEDIN(bound, 
    'AUTOMOTIVE_DESIGN.STYLED_ITEM.ITEM') | 'AUTOMOTIVE_DESIGN.' + 
    'ANNOTATION_CURVE_OCCURRENCE' IN TYPEOF(si))) > 0))) = 0);
  wr4 : NOT ('AUTOMOTIVE_DESIGN.ANNOTATION_SYMBOL_OCCURRENCE' IN TYPEOF(SELF
    )) OR (SIZEOF(QUERY(sty <* SELF.styles | NOT ((SIZEOF(sty.styles) = 1) AND 
    (SIZEOF(TYPEOF(sty.styles[1]) * ['AUTOMOTIVE_DESIGN.SYMBOL_STYLE', 
    'AUTOMOTIVE_DESIGN.NULL_STYLE']) = 1)))) = 0);
  wr5 : NOT (('AUTOMOTIVE_DESIGN.ANNOTATION_SYMBOL_OCCURRENCE' IN TYPEOF(
    SELF)) AND ('AUTOMOTIVE_DESIGN.ANNOTATION_SYMBOL' IN TYPEOF(SELF.item)))
     OR (SIZEOF(['AUTOMOTIVE_DESIGN.' + 'DRAUGHTING_SYMBOL_REPRESENTATION', 
    'AUTOMOTIVE_DESIGN.' + 'DRAUGHTING_SUBFIGURE_REPRESENTATION'] * TYPEOF(
    SELF.item\mapped_item.mapping_source.mapped_representation)) = 1);
  wr6 : NOT ('AUTOMOTIVE_DESIGN.ANNOTATION_TEXT_OCCURRENCE' IN TYPEOF(SELF))
     OR (SIZEOF(QUERY(sty <* SELF.styles | NOT ((SIZEOF(sty.styles) = 1) AND (
    'AUTOMOTIVE_DESIGN.TEXT_STYLE' IN TYPEOF(sty.styles[1]))))) = 0);
  wr7 : ('AUTOMOTIVE_DESIGN.ANNOTATION_TEXT_OCCURRENCE' IN TYPEOF(SELF)) OR 
    (SIZEOF(TYPEOF(SELF.item) * ['AUTOMOTIVE_DESIGN.COMPOSITE_TEXT', 
    'AUTOMOTIVE_DESIGN.TEXT_LITERAL']) = 1);
  wr8 : NOT (('AUTOMOTIVE_DESIGN.ANNOTATION_TEXT_OCCURRENCE' IN TYPEOF(SELF)
    ) AND ('AUTOMOTIVE_DESIGN.COMPOSITE_TEXT' IN TYPEOF(SELF.item))) OR (
    SIZEOF(QUERY(tl <* SELF.item\composite_text.collected_text | NOT (
    'AUTOMOTIVE_DESIGN.TEXT_LITERAL' IN TYPEOF(tl)))) = 0);
  wr9 : NOT (('AUTOMOTIVE_DESIGN.ANNOTATION_TEXT_OCCURRENCE' IN TYPEOF(SELF)
    ) AND ('AUTOMOTIVE_DESIGN.TEXT_LITERAL' IN TYPEOF(SELF.item))) OR (SELF.
    item\text_literal.alignment IN ['baseline left', 'baseline centre', 
    'baseline right']);
  wr10 : NOT (('AUTOMOTIVE_DESIGN.ANNOTATION_TEXT_OCCURRENCE' IN TYPEOF(SELF
    )) AND ('AUTOMOTIVE_DESIGN.COMPOSITE_TEXT' IN TYPEOF(SELF.item))) OR (
    SIZEOF(QUERY(tl <* QUERY(text <* SELF.item\composite_text.collected_text | 
    'AUTOMOTIVE_DESIGN.TEXT_LITERAL' IN TYPEOF(text)) | NOT (tl\text_literal
    .alignment IN ['baseline left', 'baseline centre', 'baseline right']))) = 0
    );
  wr11 : NOT (('AUTOMOTIVE_DESIGN.ANNOTATION_TEXT_OCCURRENCE' IN TYPEOF(SELF
    )) AND ('AUTOMOTIVE_DESIGN.COMPOSITE_TEXT' IN TYPEOF(SELF.item))) OR 
    check_text_alignment(SELF.item);
  wr12 : NOT (('AUTOMOTIVE_DESIGN.ANNOTATION_TEXT_OCCURRENCE' IN TYPEOF(SELF
    )) AND ('AUTOMOTIVE_DESIGN.COMPOSITE_TEXT' IN TYPEOF(SELF.item))) OR 
    check_text_font(SELF.item);
  wr13 : NOT (('AUTOMOTIVE_DESIGN.ANNOTATION_TEXT_OCCURRENCE' IN TYPEOF(SELF
    )) AND ('AUTOMOTIVE_DESIGN.COMPOSITE_TEXT' IN TYPEOF(SELF.item))) OR (
    SIZEOF(QUERY(tl <* QUERY(text <* SELF.item\composite_text.collected_text | 
    'AUTOMOTIVE_DESIGN.TEXT_LITERAL' IN TYPEOF(text)) | NOT (SIZEOF(TYPEOF(
    tl) * ['AUTOMOTIVE_DESIGN.' + 'TEXT_LITERAL_WITH_BLANKING_BOX', 
    'AUTOMOTIVE_DESIGN.' + 'TEXT_LITERAL_WITH_ASSOCIATED_CURVES']) = 0))) = 
    0);
  wr14 : NOT (('AUTOMOTIVE_DESIGN.ANNOTATION_TEXT_OCCURRENCE' IN TYPEOF(SELF
    )) AND ('AUTOMOTIVE_DESIGN.TEXT_LITERAL_WITH_ASSOCIATED_CURVES' IN 
    TYPEOF(SELF.item))) OR (SIZEOF(QUERY(crv <* SELF.item\
    text_literal_with_associated_curves.associated_curves | NOT (SIZEOF(QUERY(
    si <* USEDIN(crv, 'AUTOMOTIVE_DESIGN.STYLED_ITEM.ITEM') | 
    'AUTOMOTIVE_DESIGN.ANNOTATION_CURVE_OCCURRENCE' IN TYPEOF(si))) > 0)))
     = 0);
  wr15 : NOT (('AUTOMOTIVE_DESIGN.ANNOTATION_TEXT_OCCURRENCE' IN TYPEOF(SELF
    )) AND ('AUTOMOTIVE_DESIGN.COMPOSITE_TEXT_WITH_ASSOCIATED_CURVES' IN 
    TYPEOF(SELF.item))) OR (SIZEOF(QUERY(crv <* SELF.item\
    composite_text_with_associated_curves.associated_curves | NOT (SIZEOF(
    QUERY(si <* USEDIN(crv, 'AUTOMOTIVE_DESIGN.STYLED_ITEM.ITEM') | 
    'AUTOMOTIVE_DESIGN.ANNOTATION_CURVE_OCCURRENCE' IN TYPEOF(si))) > 0)))
     = 0);
  wr16 : SIZEOF(QUERY(cs <* QUERY(sty <* SELF.styles | 
    'AUTOMOTIVE_DESIGN.CURVE_STYLE' IN TYPEOF(sty.styles[1])) | NOT ((
    'AUTOMOTIVE_DESIGN.LENGTH_MEASURE_WITH_UNIT' IN TYPEOF(cs.styles[1]\
    curve_style.curve_width)) AND (
    'AUTOMOTIVE_DESIGN.POSITIVE_LENGTH_MEASURE' IN TYPEOF(cs.styles[1]\
    curve_style.curve_width\measure_with_unit.value_component))))) = 0;
  wr17 : SIZEOF(QUERY(fas <* QUERY(sty <* SELF.styles | 
    'AUTOMOTIVE_DESIGN.FILL_AREA_STYLE' IN TYPEOF(sty.styles[1])) | NOT ((
    SIZEOF(QUERY(fs <* fas.styles[1]\fill_area_style.fill_styles | 
    'AUTOMOTIVE_DESIGN.FILL_AREA_STYLE_TILES' IN TYPEOF(fs))) <= 1) AND (
    SIZEOF(QUERY(fst <* QUERY(fs <* fas.styles[1]\fill_area_style.fill_styles
     | 'AUTOMOTIVE_DESIGN.FILL_AREA_STYLE_TILES' IN TYPEOF(fs)) | NOT (
    SIZEOF(fst\fill_area_style_tiles.tiles) = 1))) = 0)))) = 0;
  wr18 : SIZEOF(QUERY(fas <* QUERY(sty <* SELF.styles | 
    'AUTOMOTIVE_DESIGN.FILL_AREA_STYLE' IN TYPEOF(sty.styles[1])) | NOT (
    SIZEOF(QUERY(fsh <* QUERY(fs <* fas.styles[1]\fill_area_style.fill_styles
     | 'AUTOMOTIVE_DESIGN.FILL_AREA_STYLE_HATCHING' IN TYPEOF(fs)) | NOT (
    fsh\fill_area_style_hatching.point_of_reference_hatch_line :=: fsh\
    fill_area_style_hatching.pattern_start))) = 0))) = 0;
  wr19 : SIZEOF(QUERY(ts <* QUERY(sty <* SELF.styles | 
    'AUTOMOTIVE_DESIGN.TEXT_STYLE' IN TYPEOF(sty.styles[1])) | NOT (
    'AUTOMOTIVE_DESIGN.' + 'TEXT_STYLE_WITH_BOX_CHARACTERISTICS' IN TYPEOF(
    ts.styles[1])))) = 0;
  wr20 : SIZEOF(QUERY(ts <* QUERY(sty <* SELF.styles | 
    'AUTOMOTIVE_DESIGN.TEXT_STYLE_WITH_BOX_CHARACTERISTICS' IN TYPEOF(sty.
    styles[1])) | NOT (SIZEOF(ts.styles[1]\text_style_with_box_characteristics.
    characteristics) = 4))) = 0;
END_ENTITY; -- 10303-504: aic_draughting_annotation
 
ENTITY draughting_callout
SUBTYPE OF (geometric_representation_item);
  contents : SET [1:?] OF draughting_callout_element;
END_ENTITY; -- 10303-101: draughting_element_schema
 
ENTITY draughting_callout_relationship;
  name : label;
  description : text;
  relating_draughting_callout : draughting_callout;
  related_draughting_callout : draughting_callout;
END_ENTITY; -- 10303-101: draughting_element_schema
 
ENTITY draughting_elements
SUBTYPE OF (draughting_callout);
WHERE
  wr1 : SIZEOF(QUERY(l_c <* QUERY(con <* SELF.contents | 
    'AUTOMOTIVE_DESIGN.LEADER_CURVE' IN TYPEOF(con)) | NOT (SIZEOF(QUERY(ldc
     <* USEDIN(l_c, 'AUTOMOTIVE_DESIGN.DRAUGHTING_CALLOUT.CONTENTS') | 
    'AUTOMOTIVE_DESIGN.LEADER_DIRECTED_CALLOUT' IN TYPEOF(ldc))) <= 1))) = 0
    ;
  wr2 : NOT ('AUTOMOTIVE_DESIGN.DIMENSION_CURVE_DIRECTED_CALLOUT' IN TYPEOF(
    SELF)) OR (SIZEOF(QUERY(con <* SELF.contents | 
    'AUTOMOTIVE_DESIGN.PROJECTION_CURVE' IN TYPEOF(con))) <= 2);
  wr3 : SIZEOF(QUERY(rc <* USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.DRAUGHTING_CALLOUT_RELATIONSHIP.RELATING_DRAUGHTING_CALLOUT'
    ) | ('AUTOMOTIVE_DESIGN.' + 'DIMENSION_CALLOUT_RELATIONSHIP' IN TYPEOF(
    rc)) AND (rc.name = 'primary'))) <= 1;
  wr4 : SIZEOF(QUERY(rc <* USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.DRAUGHTING_CALLOUT_RELATIONSHIP.RELATING_DRAUGHTING_CALLOUT'
    ) | ('AUTOMOTIVE_DESIGN.' + 'DIMENSION_CALLOUT_RELATIONSHIP' IN TYPEOF(
    rc)) AND (rc.name = 'secondary'))) <= 1;
  wr5 : SIZEOF(QUERY(sec <* QUERY(rc <* USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.DRAUGHTING_CALLOUT_RELATIONSHIP.RELATING_DRAUGHTING_CALLOUT'
    ) | ('AUTOMOTIVE_DESIGN.' + 'DIMENSION_CALLOUT_RELATIONSHIP' IN TYPEOF(
    rc)) AND (rc.name = 'secondary')) | NOT (SIZEOF(QUERY(prim <* USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.DRAUGHTING_CALLOUT_RELATIONSHIP.RELATING_DRAUGHTING_CALLOUT'
    ) | ('AUTOMOTIVE_DESIGN.' + 'DIMENSION_CALLOUT_RELATIONSHIP' IN TYPEOF(
    prim)) AND (prim.name = 'primary'))) = 1))) = 0;
END_ENTITY; -- 10303-506: aic_draughting_elements
 
ENTITY draughting_model
SUBTYPE OF (representation);
UNIQUE
  ur1 : SELF\representation.name;
WHERE
  wr1 : SIZEOF(QUERY(it <* SELF.items | NOT (SIZEOF([
    'AUTOMOTIVE_DESIGN.MAPPED_ITEM', 'AUTOMOTIVE_DESIGN.STYLED_ITEM', 
    'AUTOMOTIVE_DESIGN.AXIS2_PLACEMENT', 'AUTOMOTIVE_DESIGN.CAMERA_MODEL'
    ] * TYPEOF(it)) = 1))) = 0;
  wr2 : SIZEOF(QUERY(mi <* QUERY(it <* SELF.items | 
    'AUTOMOTIVE_DESIGN.MAPPED_ITEM' IN TYPEOF(it)) | NOT (SIZEOF([
    'AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION', 
    'AUTOMOTIVE_DESIGN.DRAUGHTING_MODEL'] * TYPEOF(mi\mapped_item.
    mapping_source.mapped_representation)) = 1))) = 0;
  wr3 : SIZEOF(QUERY(smi <* QUERY(si <* QUERY(it <* SELF.items | 
    'AUTOMOTIVE_DESIGN.STYLED_ITEM' IN TYPEOF(it)) | 
    'AUTOMOTIVE_DESIGN.MAPPED_ITEM' IN TYPEOF(si\styled_item.item)) | NOT ((
    'AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION' IN TYPEOF(smi\styled_item.item\
    mapped_item.mapping_source.mapped_representation)) AND (SIZEOF(QUERY(sty
     <* smi\styled_item.styles | NOT (SIZEOF(QUERY(psa <* sty.styles | NOT (
    'AUTOMOTIVE_DESIGN.CURVE_STYLE' IN TYPEOF(psa)))) = 1))) = 1)))) = 0;
END_ENTITY; -- 10303-520: aic_associative_draughting_elements

ENTITY draughting_model_item_association
SUBTYPE OF (item_identified_representation_usage);
  SELF\item_identified_representation_usage.definition : shape_aspect;
  SELF\item_identified_representation_usage.used_representation : 
  draughting_model;
  SELF\item_identified_representation_usage.identified_item : 
  draughting_model_item_association_select;
WHERE
  wr1 : NOT ('AUTOMOTIVE_DESIGN_LF.' + 'DATUM_FEATURE_CALLOUT' IN TYPEOF(SELF\
    item_identified_representation_usage.identified_item)) OR (
    'AUTOMOTIVE_DESIGN_LF.' + 'DATUM_FEATURE' IN TYPEOF(SELF\
    item_identified_representation_usage.definition));
  wr2 : NOT ('AUTOMOTIVE_DESIGN_LF.' + 'DATUM_TARGET_CALLOUT' IN TYPEOF(SELF\
    item_identified_representation_usage.identified_item)) OR (
    'AUTOMOTIVE_DESIGN_LF.' + 'DATUM_TARGET' IN TYPEOF(SELF\
    item_identified_representation_usage.definition));
  wr3 : NOT ('AUTOMOTIVE_DESIGN_LF.' + 'ANGULAR_DIMENSION' IN TYPEOF(SELF\
    item_identified_representation_usage.identified_item)) OR (
    'AUTOMOTIVE_DESIGN_LF.' + 'ANGULAR_SIZE' IN TYPEOF(SELF\
    item_identified_representation_usage.definition));
  wr4 : NOT ('AUTOMOTIVE_DESIGN_LF.' + 'CURVE_DIMENSION' IN TYPEOF(SELF\
    item_identified_representation_usage.identified_item)) OR (
    'AUTOMOTIVE_DESIGN_LF.' + 'DIMENSIONAL_SIZE' IN TYPEOF(SELF\
    item_identified_representation_usage.definition)) AND (SELF\
    item_identified_representation_usage.definition.name = 'curve dimension');
  wr5 : NOT ('AUTOMOTIVE_DESIGN_LF.' + 'DIAMETER_DIMENSION' IN TYPEOF(SELF\
    item_identified_representation_usage.identified_item)) OR (
    'AUTOMOTIVE_DESIGN_LF.' + 'DIMENSIONAL_SIZE' IN TYPEOF(SELF\
    item_identified_representation_usage.definition)) AND (SELF\
    item_identified_representation_usage.definition.name = 'diameter');
  wr6 : NOT ('AUTOMOTIVE_DESIGN_LF.' + 'LINEAR_DIMENSION' IN TYPEOF(SELF\
    item_identified_representation_usage.identified_item)) OR (
    'AUTOMOTIVE_DESIGN_LF.' + 'DIMENSIONAL_SIZE' IN TYPEOF(SELF\
    item_identified_representation_usage.definition)) AND ((SELF\
    item_identified_representation_usage.definition.name = 'heigth') OR (SELF\
    item_identified_representation_usage.definition.name = 'length') OR (SELF\
    item_identified_representation_usage.definition.name = 'width'));
  wr7 : NOT ('AUTOMOTIVE_DESIGN_LF.' + 'RADIUS_DIMENSION' IN TYPEOF(SELF\
    item_identified_representation_usage.identified_item)) OR (
    'AUTOMOTIVE_DESIGN_LF.' + 'DIMENSIONAL_SIZE' IN TYPEOF(SELF\
    item_identified_representation_usage.definition)) AND (SELF\
    item_identified_representation_usage.definition.name = 'radius');
  wr8 : NOT ('AUTOMOTIVE_DESIGN_LF.' + 'GEOMETRICAL_TOLERANCE_CALLOUT' IN 
    TYPEOF(SELF\item_identified_representation_usage.identified_item)) OR (
    'AUTOMOTIVE_DESIGN_LF.' + 'GEOMETRIC_TOLERANCE' IN TYPEOF(SELF\
    item_identified_representation_usage.definition));
  wr9 : NOT ('AUTOMOTIVE_DESIGN_LF.' + 'DIMENSIONAL_SIZE' IN TYPEOF(SELF\
    item_identified_representation_usage.definition)) OR (
    'AUTOMOTIVE_DESIGN_LF.' + 'DIMENSION_CALLOUT' IN TYPEOF(SELF\
    item_identified_representation_usage.identified_item)) OR (
    'AUTOMOTIVE_DESIGN_LF.' + 'DIMENSION_CURVE_DIRECTED_CALLOUT' IN TYPEOF(SELF
    \item_identified_representation_usage.identified_item)) OR (
    'AUTOMOTIVE_DESIGN_LF.' + 'LEADER_DIRECTED_DIMENSION' IN TYPEOF(SELF\
    item_identified_representation_usage.identified_item)) OR (
    'AUTOMOTIVE_DESIGN_LF.' + 'ORDINATE_DIMENSION' IN TYPEOF(SELF\
    item_identified_representation_usage.identified_item)) OR (
    'AUTOMOTIVE_DESIGN_LF.' + 'STRUCTURED_DIMENSION_CALLOUT' IN TYPEOF(SELF\
    item_identified_representation_usage.identified_item));
END_ENTITY; -- draughting_model_item_association: automotive_design
 
ENTITY draughting_pre_defined_colour
SUBTYPE OF (pre_defined_colour);
WHERE
  wr1 : SELF.name IN ['red', 'green', 'blue', 'yellow', 'magenta', 'cyan', 
    'black', 'white'];
END_ENTITY; -- 10303-46: presentation_resource_schema
 
ENTITY draughting_pre_defined_curve_font
SUBTYPE OF (pre_defined_curve_font);
WHERE
  wr1 : SELF.name IN ['continuous', 'chain', 'chain double dash', 'dashed', 
    'dotted'];
END_ENTITY; -- 10303-46: presentation_appearance_schema
 
ENTITY draughting_pre_defined_text_font
SUBTYPE OF (pre_defined_text_font);
WHERE
  wr1 : SELF.name[1:8] = 'ISO 3098';
END_ENTITY; -- 10303-46: presentation_resource_schema
 
ENTITY draughting_specification_reference
SUBTYPE OF (document_reference);
  specified_items : SET [1:?] OF specified_item;
WHERE
  wr1 : SELF.assigned_document.kind.product_data_type = 
    'draughting specification';
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY draughting_subfigure_representation
SUBTYPE OF (symbol_representation);
WHERE
  wr1 : SIZEOF(QUERY(item <* SELF\representation.items | NOT (SIZEOF([
    'AUTOMOTIVE_DESIGN.ANNOTATION_OCCURRENCE', 
    'AUTOMOTIVE_DESIGN.DRAUGHTING_CALLOUT', 
    'AUTOMOTIVE_DESIGN.AXIS2_PLACEMENT'] * TYPEOF(item)) = 1))) = 0;
  wr2 : SIZEOF(QUERY(item <* SELF\representation.items | SIZEOF([
    'AUTOMOTIVE_DESIGN.ANNOTATION_OCCURRENCE', 
    'AUTOMOTIVE_DESIGN.DRAUGHTING_CALLOUT'] * TYPEOF(item)) = 1)) >= 1;
  wr3 : SIZEOF(QUERY(srm <* QUERY(rm <* USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.REPRESENTATION_MAP.MAPPED_REPRESENTATION') | 
    'AUTOMOTIVE_DESIGN.SYMBOL_REPRESENTATION_MAP' IN TYPEOF(rm)) | NOT (
    SIZEOF(QUERY(a_s <* QUERY(mi <* srm.map_usage | 
    'AUTOMOTIVE_DESIGN.ANNOTATION_SYMBOL' IN TYPEOF(mi)) | NOT (SIZEOF(
    QUERY(aso <* USEDIN(a_s, 'AUTOMOTIVE_DESIGN.STYLED_ITEM.ITEM') | NOT (
    'AUTOMOTIVE_DESIGN.ANNOTATION_SUBFIGURE_OCCURRENCE' IN TYPEOF(aso)))) = 
    0))) = 0))) > 0;
  wr4 : NOT acyclic_mapped_item_usage(SELF);
  wr5 : SIZEOF(SELF.context_of_items.representations_in_context) = 1;
END_ENTITY; -- 10303-504: aic_draughting_annotation
 
ENTITY draughting_symbol_representation
SUBTYPE OF (symbol_representation);
UNIQUE
  ur1 : SELF\representation.name;
WHERE
  wr1 : SIZEOF(QUERY(item <* SELF\representation.items | NOT (SIZEOF(TYPEOF(
    item) * ['AUTOMOTIVE_DESIGN.ANNOTATION_CURVE_OCCURRENCE', 
    'AUTOMOTIVE_DESIGN.ANNOTATION_SYMBOL_OCCURRENCE', 
    'AUTOMOTIVE_DESIGN.ANNOTATION_FILL_AREA_OCCURRENCE', 
    'AUTOMOTIVE_DESIGN.ANNOTATION_TEXT_OCCURRENCE', 
    'AUTOMOTIVE_DESIGN.AXIS2_PLACEMENT']) = 1))) = 0;
  wr2 : SIZEOF(QUERY(item <* SELF\representation.items | SIZEOF(TYPEOF(item) * 
    ['AUTOMOTIVE_DESIGN.ANNOTATION_CURVE_OCCURRENCE', 
    'AUTOMOTIVE_DESIGN.ANNOTATION_SYMBOL_OCCURRENCE', 
    'AUTOMOTIVE_DESIGN.ANNOTATION_FILL_AREA_OCCURRENCE', 
    'AUTOMOTIVE_DESIGN.ANNOTATION_TEXT_OCCURRENCE']) = 1)) >= 1;
  wr3 : SIZEOF(QUERY(item <* SELF\representation.items | 
    'AUTOMOTIVE_DESIGN.ANNOTATION_SUBFIGURE_OCCURRENCE' IN TYPEOF(item))) = 
    0;
  wr4 : SIZEOF(QUERY(srm <* QUERY(rm <* USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.REPRESENTATION_MAP.MAPPED_REPRESENTATION') | 
    'AUTOMOTIVE_DESIGN.SYMBOL_REPRESENTATION_MAP' IN TYPEOF(rm)) | NOT (
    SIZEOF(QUERY(a_s <* QUERY(mi <* srm.map_usage | 
    'AUTOMOTIVE_DESIGN.ANNOTATION_SYMBOL' IN TYPEOF(mi)) | NOT (SIZEOF(
    QUERY(aso <* USEDIN(a_s, 'AUTOMOTIVE_DESIGN.STYLED_ITEM.ITEM') | NOT (
    'AUTOMOTIVE_DESIGN.ANNOTATION_SYMBOL_OCCURRENCE' IN TYPEOF(aso)))) = 0))
    ) = 0))) > 0;
  wr5 : NOT acyclic_mapped_item_usage(SELF);
  wr6 : SIZEOF(SELF.context_of_items.representations_in_context) = 1;
END_ENTITY; -- 10303-504: aic_draughting_annotation
 
ENTITY draughting_text_literal_with_delineation
SUBTYPE OF (text_literal_with_delineation);
WHERE
  wr1 : SELF.delineation IN ['underline', 'overline'];
END_ENTITY; -- 10303-504: aic_draughting_annotation
 
ENTITY draughting_title;
  items : SET [1:?] OF draughting_titled_item;
  language : label;
  contents : text;
END_ENTITY; -- 10303-101: drawing_definition_schema
 
ENTITY drawing_definition;
  drawing_number : identifier;
  drawing_type :  OPTIONAL label;
END_ENTITY; -- 10303-101: drawing_definition_schema
 
ENTITY drawing_revision
SUBTYPE OF (presentation_set);
  revision_identifier : identifier;
  drawing_identifier : drawing_definition;
  intended_scale :  OPTIONAL text;
UNIQUE
  ur1 : revision_identifier, drawing_identifier;
END_ENTITY; -- 10303-101: drawing_definition_schema
 
ENTITY drawing_revision_sequence;
  predecessor : drawing_revision;
  successor : drawing_revision;
WHERE
  wr1 : predecessor :<>: successor;
END_ENTITY; -- 10303-101: drawing_definition_schema
 
ENTITY drawing_sheet_layout
SUBTYPE OF (draughting_symbol_representation);
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY drawing_sheet_revision
SUBTYPE OF (presentation_area);
  revision_identifier : identifier;
WHERE
  wr1 : SIZEOF(QUERY(item <* SELF\representation.items | (
    'AUTOMOTIVE_DESIGN.MAPPED_ITEM' IN TYPEOF(item)) AND (
    'AUTOMOTIVE_DESIGN.DRAWING_SHEET_REVISION' IN TYPEOF(item\mapped_item.
    mapping_source.mapped_representation)))) = 0;
END_ENTITY; -- 10303-101: drawing_definition_schema
 
ENTITY drawing_sheet_revision_usage
SUBTYPE OF (area_in_set);
  sheet_number : identifier;
UNIQUE
  ur1 : sheet_number, in_set;
WHERE
  wr1 : ('AUTOMOTIVE_DESIGN.DRAWING_SHEET_REVISION' IN TYPEOF(SELF\
    area_in_set.area)) AND ('AUTOMOTIVE_DESIGN.DRAWING_REVISION' IN TYPEOF(
    SELF\area_in_set.in_set));
END_ENTITY; -- 10303-101: drawing_definition_schema
 
ENTITY edge
SUPERTYPE OF (ONEOF (edge_curve, oriented_edge, subedge))
SUBTYPE OF (topological_representation_item);
  edge_start : vertex;
  edge_end : vertex;
END_ENTITY; -- 10303-42: topology_schema
 
ENTITY edge_based_wireframe_model
SUBTYPE OF (geometric_representation_item);
  ebwm_boundary : SET [1:?] OF connected_edge_set;
END_ENTITY; -- 10303-42: geometric_model_schema
 
ENTITY edge_based_wireframe_shape_representation
SUBTYPE OF (shape_representation);
WHERE
  wr1 : SIZEOF(QUERY(it <* SELF.items | NOT (SIZEOF([
    'AUTOMOTIVE_DESIGN.EDGE_BASED_WIREFRAME_MODEL', 
    'AUTOMOTIVE_DESIGN.MAPPED_ITEM', 
    'AUTOMOTIVE_DESIGN.AXIS2_PLACEMENT_3D'] * TYPEOF(it)) = 1))) = 0;
  wr2 : SIZEOF(QUERY(it <* SELF.items | SIZEOF([
    'AUTOMOTIVE_DESIGN.EDGE_BASED_WIREFRAME_MODEL', 
    'AUTOMOTIVE_DESIGN.MAPPED_ITEM'] * TYPEOF(it)) = 1)) >= 1;
  wr3 : SIZEOF(QUERY(ebwm <* QUERY(it <* SELF.items | 
    'AUTOMOTIVE_DESIGN.EDGE_BASED_WIREFRAME_MODEL' IN TYPEOF(it)) | NOT (
    SIZEOF(QUERY(eb <* ebwm\edge_based_wireframe_model.ebwm_boundary | NOT (
    SIZEOF(QUERY(edges <* eb.ces_edges | NOT ('AUTOMOTIVE_DESIGN.EDGE_CURVE'
     IN TYPEOF(edges)))) = 0))) = 0))) = 0;
  wr4 : SIZEOF(QUERY(ebwm <* QUERY(it <* SELF.items | 
    'AUTOMOTIVE_DESIGN.EDGE_BASED_WIREFRAME_MODEL' IN TYPEOF(it)) | NOT (
    SIZEOF(QUERY(eb <* ebwm\edge_based_wireframe_model.ebwm_boundary | NOT (
    SIZEOF(QUERY(pline_edges <* QUERY(edges <* eb.ces_edges | 
    'AUTOMOTIVE_DESIGN.POLYLINE' IN TYPEOF(edges\edge_curve.edge_geometry))
     | NOT (SIZEOF(pline_edges\edge_curve.edge_geometry\polyline.points) > 2)))
     = 0))) = 0))) = 0;
  wr5 : SIZEOF(QUERY(ebwm <* QUERY(it <* SELF.items | 
    'AUTOMOTIVE_DESIGN.EDGE_BASED_WIREFRAME_MODEL' IN TYPEOF(it)) | NOT (
    SIZEOF(QUERY(eb <* ebwm\edge_based_wireframe_model.ebwm_boundary | NOT (
    SIZEOF(QUERY(edges <* eb.ces_edges | NOT ((
    'AUTOMOTIVE_DESIGN.VERTEX_POINT' IN TYPEOF(edges.edge_start)) AND (
    'AUTOMOTIVE_DESIGN.VERTEX_POINT' IN TYPEOF(edges.edge_end))))) = 0))) = 
    0))) = 0;
  wr6 : SIZEOF(QUERY(ebwm <* QUERY(it <* SELF.items | 
    'AUTOMOTIVE_DESIGN.EDGE_BASED_WIREFRAME_MODEL' IN TYPEOF(it)) | NOT (
    SIZEOF(QUERY(eb <* ebwm\edge_based_wireframe_model.ebwm_boundary | NOT (
    SIZEOF(QUERY(edges <* eb.ces_edges | NOT valid_wireframe_edge_curve(edges\
    edge_curve.edge_geometry))) = 0))) = 0))) = 0;
  wr7 : SIZEOF(QUERY(ebwm <* QUERY(it <* SELF.items | 
    'AUTOMOTIVE_DESIGN.EDGE_BASED_WIREFRAME_MODEL' IN TYPEOF(it)) | NOT (
    SIZEOF(QUERY(eb <* ebwm\edge_based_wireframe_model.ebwm_boundary | NOT (
    SIZEOF(QUERY(edges <* eb.ces_edges | NOT (valid_wireframe_vertex_point(
    edges.edge_start\vertex_point.vertex_geometry) AND 
    valid_wireframe_vertex_point(edges.edge_end\vertex_point.vertex_geometry)))
    ) = 0))) = 0))) = 0;
  wr8 : SIZEOF(QUERY(mi <* QUERY(it <* SELF.items | 
    'AUTOMOTIVE_DESIGN.MAPPED_ITEM' IN TYPEOF(it)) | NOT (
    'AUTOMOTIVE_DESIGN.' + 'EDGE_BASED_WIREFRAME_SHAPE_REPRESENTATION' IN 
    TYPEOF(mi\mapped_item.mapping_source.mapped_representation)))) = 0;
  wr9 : SELF.context_of_items\geometric_representation_context.
    coordinate_space_dimension = 3;
END_ENTITY; -- 10303-501: aic_edge_based_wireframe
 
ENTITY edge_curve
SUBTYPE OF (edge, geometric_representation_item);
  edge_geometry : curve;
  same_sense : BOOLEAN;
END_ENTITY; -- 10303-42: topology_schema
 
ENTITY edge_loop
SUBTYPE OF (loop, path);
DERIVE
  ne : INTEGER := SIZEOF(SELF\path.edge_list);
WHERE
  wr1 : SELF\path.edge_list[1].edge_start :=: SELF\path.edge_list[ne].edge_end;
END_ENTITY; -- 10303-42: topology_schema
 
ENTITY edge_round
SUBTYPE OF (transition_feature);
WHERE
  wr1 : (SELF.description <> 'constant radius') XOR (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | 
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation))) = 1);
  wr2 : (SELF.description <> 'constant radius') OR (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND {1 <= SIZEOF(pdr.used_representation.items)
     <= 3})) = 1);
  wr3 : (SELF.description <> 'constant radius') OR (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | NOT (i.name IN ['radius', 'first offset', 'second offset']))) > 0))
    ) = 0);
  wr4 : (SELF.description <> 'constant radius') OR (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'radius') AND (SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'MEASURE_REPRESENTATION_ITEM', 'AUTOMOTIVE_DESIGN.' + 
    'LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2))) = 1))) = 1);
  wr5 : (SELF.description <> 'constant radius') OR (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'first offset') AND (SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'MEASURE_REPRESENTATION_ITEM', 'AUTOMOTIVE_DESIGN.' + 
    'LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2))) <= 1))) = 1);
  wr6 : (SELF.description <> 'constant radius') OR (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'second offset') AND (SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'MEASURE_REPRESENTATION_ITEM', 'AUTOMOTIVE_DESIGN.' + 
    'LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2))) <= 1))) = 1);
  wr7 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'FACE_SHAPE_REPRESENTATION' IN TYPEOF(pdr.
    used_representation)) AND (pdr.used_representation.name = 
    'first face shape'))) = 1;
  wr8 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'FACE_SHAPE_REPRESENTATION' IN TYPEOF(pdr.
    used_representation)) AND (pdr.used_representation.name = 
    'second face shape'))) = 1;
  wr9 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'FACE_SHAPE_REPRESENTATION' IN TYPEOF(pdr.
    used_representation)) AND (pdr.used_representation.name = 'edge round face'
    ))) = 1;
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY effectivity
SUPERTYPE OF (ONEOF (serial_numbered_effectivity, dated_effectivity, 
lot_effectivity, time_interval_based_effectivity));
  id : identifier;
DERIVE
  name : label := get_name_value(SELF);
  description : text := get_description_value(SELF);
WHERE
  wr1 : SIZEOF(USEDIN(SELF, 'AUTOMOTIVE_DESIGN.NAME_ATTRIBUTE.NAMED_ITEM'))
     <= 1;
  wr2 : SIZEOF(USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
END_ENTITY; -- 10303-41: effectivity_schema
 
ENTITY effectivity_assignment ABSTRACT SUPERTYPE;
  assigned_effectivity : effectivity;
DERIVE
  role : object_role := get_role(SELF);
WHERE
  wr1 : SIZEOF(USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
END_ENTITY; -- 10303-41: management_resources_schema
 
ENTITY effectivity_context_assignment ABSTRACT SUPERTYPE;
  assigned_effectivity_assignment : effectivity_assignment;
  role : effectivity_context_role;
END_ENTITY; -- 10303-41: management_resources_schema
 
ENTITY effectivity_context_role;
  name : label;
  description :  OPTIONAL text;
END_ENTITY; -- 10303-41: management_resources_schema
 
ENTITY effectivity_relationship;
  name : label;
  description :  OPTIONAL text;
  related_effectivity : effectivity;
  relating_effectivity : effectivity;
END_ENTITY; -- 10303-41: effectivity_schema
 
ENTITY electric_current_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
  wr1 : 'AUTOMOTIVE_DESIGN.ELECTRIC_CURRENT_UNIT' IN TYPEOF(SELF\
    measure_with_unit.unit_component);
END_ENTITY; -- 10303-41: measure_schema
 
ENTITY electric_current_unit
SUBTYPE OF (named_unit);
WHERE
  wr1 : (SELF\named_unit.dimensions.length_exponent = 0.000000) AND (SELF\
    named_unit.dimensions.mass_exponent = 0.000000) AND (SELF\named_unit
    .dimensions.time_exponent = 0.000000) AND (SELF\named_unit.dimensions.
    electric_current_exponent = 1.000000) AND (SELF\named_unit.dimensions.
    thermodynamic_temperature_exponent = 0.000000) AND (SELF\named_unit.
    dimensions.amount_of_substance_exponent = 0.000000) AND (SELF\named_unit.
    dimensions.luminous_intensity_exponent = 0.000000);
END_ENTITY; -- 10303-41: measure_schema
 
ENTITY element_delivery
SUBTYPE OF (action);
WHERE
  wr1 : (SIZEOF(QUERY(aa <* USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.ACTION_ASSIGNMENT.ASSIGNED_ACTION') | 
    'AUTOMOTIVE_DESIGN.' + 'APPLIED_ACTION_ASSIGNMENT' IN TYPEOF(aa))) = 1) 
    AND (SIZEOF(QUERY(aaa <* USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.ACTION_ASSIGNMENT.ASSIGNED_ACTION') | (
    'AUTOMOTIVE_DESIGN.' + 'APPLIED_ACTION_ASSIGNMENT' IN TYPEOF(aaa)) AND (
    aaa.role.name = 'deliverable element') AND (SIZEOF(aaa.items) = 1) AND (
    SIZEOF(QUERY(i <* aaa.items | ('AUTOMOTIVE_DESIGN.' + 
    'APPLIED_ACTION_ASSIGNMENT' IN TYPEOF(i)) AND (SIZEOF(i\
    applied_action_assignment.items) = 1) AND (SIZEOF(QUERY(i1 <* aaa\
    applied_action_assignment.items | ('AUTOMOTIVE_DESIGN.' + 
    'CONFIGURATION_ITEM' IN TYPEOF(i1)) OR ('AUTOMOTIVE_DESIGN.' + 
    'PRODUCT_DEFINITION' IN TYPEOF(i1)) AND (i1\product_definition.
    frame_of_reference.name = 'physical occurrence') OR (
    'AUTOMOTIVE_DESIGN.' + 'PRODUCT_DEFINITION_FORMATION' IN TYPEOF(i1)) AND
     (SIZEOF(QUERY(prpc <* USEDIN(i1, 
    'AUTOMOTIVE_DESIGN.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') | prpc\
    product_category.name IN ['part', 'raw material', 'tool'])) = 1))) = 1)))
     = 1))) = 1);
  wr2 : (SIZEOF(USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.APPLIED_ORGANIZATION_ASSIGNMENT.ITEMS')) = 1) AND (
    SIZEOF(QUERY(aoa <* USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.APPLIED_ORGANIZATION_ASSIGNMENT.ITEMS') | aoa.role.
    name = 'destination')) = 1);
  wr3 : (SIZEOF(USEDIN(SELF, 'AUTOMOTIVE_DESIGN.ACTION_PROPERTY.DEFINITION')
    ) = 1) AND (SIZEOF(QUERY(ap <* USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.ACTION_PROPERTY.DEFINITION') | SIZEOF(USEDIN(ap, 
    'AUTOMOTIVE_DESIGN.ACTION_PROPERTY_REPRESENTATION.PROPERTY')) = 1)) = 1)
     AND (SIZEOF(QUERY(ap <* USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.ACTION_PROPERTY.DEFINITION') | SIZEOF(QUERY(apr <* 
    USEDIN(ap, 'AUTOMOTIVE_DESIGN.ACTION_PROPERTY_REPRESENTATION.PROPERTY')
     | (apr.representation.name = 'delivery quantity') AND (SIZEOF(apr.
    representation.items) = 1) AND (SIZEOF(QUERY(i <* apr.representation.i
     | SIZEOF(['AUTOMOTIVE_DESIGN.' + 'MEASURE_REPRESENTATION_ITEM', 
    'AUTOMOTIVE_DESIGN.' + 'VALUE_RANGE'] * TYPEOF(i)) = 1)) = 1))) = 1)) = 
    1);
  wr4 : SIZEOF(USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.ACTION_RELATIONSHIP.RELATING_ACTION')) + SIZEOF(
    USEDIN(SELF, 'AUTOMOTIVE_DESIGN.ACTION_RELATIONSHIP.RELATED_ACTION')) = 
    0;
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY elementary_surface
SUPERTYPE OF (ONEOF (plane, cylindrical_surface, conical_surface, 
spherical_surface, toroidal_surface))
SUBTYPE OF (surface);
  position : axis2_placement_3d;
END_ENTITY; -- 10303-42: geometry_schema
 
ENTITY ellipse
SUBTYPE OF (conic);
  semi_axis_1 : positive_length_measure;
  semi_axis_2 : positive_length_measure;
END_ENTITY; -- 10303-42: geometry_schema
 
ENTITY environment;
  syntactic_representation : generic_variable;
  semantics : variable_semantics;
END_ENTITY; (* declared in: iso13584_generic_expressions_schema *)
 
ENTITY equals_expression
SUBTYPE OF (binary_boolean_expression);
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY evaluated_degenerate_pcurve
SUBTYPE OF (degenerate_pcurve);
  equivalent_point : cartesian_point;
END_ENTITY; -- 10303-42: geometry_schema
 
ENTITY event_occurrence;
  id : identifier;
  name : label;
  description :  OPTIONAL text;
END_ENTITY; -- 10303-41: date_time_schema
 
ENTITY event_occurrence_assignment ABSTRACT SUPERTYPE;
  assigned_event_occurrence : event_occurrence;
  role : event_occurrence_role;
END_ENTITY; -- 10303-41: management_resources_schema
 
ENTITY event_occurrence_context_assignment ABSTRACT SUPERTYPE;
  assigned_event_occurrence_assignment : event_occurrence_assignment;
  role : event_occurrence_context_role;
END_ENTITY; -- 10303-41: management_resources_schema
 
ENTITY event_occurrence_context_role;
  name : label;
  description :  OPTIONAL text;
END_ENTITY; -- 10303-41: date_time_schema
 
ENTITY event_occurrence_role;
  name : label;
  description :  OPTIONAL text;
END_ENTITY; -- 10303-41: date_time_schema
 
ENTITY exclusive_product_concept_feature_category
SUBTYPE OF (product_concept_feature_category);
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY executed_action
SUBTYPE OF (action);
END_ENTITY; -- 10303-41: action_schema
 
ENTITY exp_function
SUBTYPE OF (unary_function_call);
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY expression
ABSTRACT SUPERTYPE OF (ONEOF (numeric_expression, boolean_expression, 
string_expression))
SUBTYPE OF (generic_expression);
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY expression_conversion_based_unit
SUBTYPE OF (context_dependent_unit, variable_semantics);
INVERSE
  associated_variable_environment : environment FOR semantics;
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY extension
SUBTYPE OF (derived_shape_aspect);
WHERE
  wr1 : SIZEOF(SELF\derived_shape_aspect.deriving_relationships) = 1;
END_ENTITY; -- 10303-47: shape_aspect_definition_schema
 
ENTITY external_identification_assignment ABSTRACT SUPERTYPE
SUBTYPE OF (identification_assignment);
  source : external_source;
END_ENTITY; -- 10303-41: management_resources_schema
 
ENTITY external_source;
  source_id : source_item;
DERIVE
  description : text := get_description_value(SELF);
WHERE
  wr1 : SIZEOF(USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
END_ENTITY; -- 10303-41: external_reference_schema
 
ENTITY externally_defined_character_glyph
SUBTYPE OF (externally_defined_item);
END_ENTITY; -- 10303-46: presentation_definition_schema
 
ENTITY externally_defined_class
SUBTYPE OF (class, externally_defined_item);
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY externally_defined_curve_font
SUBTYPE OF (externally_defined_item);
END_ENTITY; -- 10303-46: presentation_appearance_schema
 
ENTITY externally_defined_dimension_definition
SUBTYPE OF (dimensional_size, externally_defined_item);
WHERE
  wr1 : (SELF\externally_defined_item.item_id = 'external size dimension') AND 
    (SELF\externally_defined_item.source.source_id = 
    'external size dimension specification');
  wr2 : 1 >= SIZEOF(QUERY(adr <* USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.APPLIED_DOCUMENT_REFERENCE.ITEMS') | adr.
    assigned_document.description = 'external size dimension specification'));
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY externally_defined_feature_definition
SUBTYPE OF (feature_definition, externally_defined_item);
WHERE
  wr1 : (SELF\externally_defined_item.item_id = 'external thread') AND (SELF\
    externally_defined_item.source.source_id = 'external feature specification'
    );
  wr2 : (SIZEOF(USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.APPLIED_CLASSIFICATION_ASSIGNMENT.ITEMS')) = 1) OR (
    SIZEOF(USEDIN(SELF, 'AUTOMOTIVE_DESIGN.APPLIED_DOCUMENT_REFERENCE.ITEMS'
    )) + SIZEOF(USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.APPLIED_DOCUMENT_USAGE_CONSTRAINT_ASSIGNMENT.ITEMS'))
     = 1);
  wr3 : SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND NOT ({6 <= SIZEOF(pdr.used_representation.
    items) <= 7}))) = 0;
  wr4 : SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | ('AUTOMOTIVE_DESIGN.' + 'DESCRIPTIVE_REPRESENTATION_ITEM' IN 
    TYPEOF(i)) AND (i.name = 'thread side') AND (i\
    descriptive_representation_item.description IN ['internal', 'external'])))
     = 1))) = 1;
  wr5 : SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (SIZEOF(['AUTOMOTIVE_DESIGN.' + 'MEASURE_REPRESENTATION_ITEM', 
    'AUTOMOTIVE_DESIGN.' + 'LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2) AND
     (i.name = 'major diameter'))) = 1))) = 1;
  wr6 : SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (SIZEOF(['AUTOMOTIVE_DESIGN.' + 'MEASURE_REPRESENTATION_ITEM', 
    'AUTOMOTIVE_DESIGN.' + 'RATIO_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2) AND 
    (i.name = 'number of threads'))) = 1))) = 1;
  wr7 : SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | ('AUTOMOTIVE_DESIGN.' + 'DESCRIPTIVE_REPRESENTATION_ITEM' IN 
    TYPEOF(i)) AND (i.name = 'fit class'))) = 1))) = 1;
  wr8 : SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | ('AUTOMOTIVE_DESIGN.' + 'DESCRIPTIVE_REPRESENTATION_ITEM' IN 
    TYPEOF(i)) AND (i.name = 'form'))) = 1))) = 1;
  wr9 : SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | ('AUTOMOTIVE_DESIGN.' + 'DESCRIPTIVE_REPRESENTATION_ITEM' IN 
    TYPEOF(i)) AND (i.name = 'hand') AND (i\descriptive_representation_item.
    description IN ['left hand', 'right hand']))) = 1))) = 1;
  wr10 : SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | ('AUTOMOTIVE_DESIGN.' + 'DESCRIPTIVE_REPRESENTATION_ITEM' IN 
    TYPEOF(i)) AND (i.name = 'qualifier'))) = 1))) <= 1;
  wr11 : SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | NOT (i.name IN ['thread side', 'major diameter', 
    'number of threads', 'fit class', 'form', 'hand', 'qualifier']))) > 0))) = 
    0;
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY externally_defined_general_property
SUBTYPE OF (general_property, externally_defined_item);
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY externally_defined_hatch_style
SUBTYPE OF (externally_defined_item, geometric_representation_item);
END_ENTITY; -- 10303-46: presentation_appearance_schema
 
ENTITY externally_defined_item;
  item_id : source_item;
  source : external_source;
END_ENTITY; -- 10303-41: external_reference_schema
 
ENTITY externally_defined_item_relationship;
  name : label;
  description :  OPTIONAL text;
  relating_item : externally_defined_item;
  related_item : externally_defined_item;
END_ENTITY; -- 10303-41: external_reference_schema
 
ENTITY externally_defined_style
SUBTYPE OF (externally_defined_item);
END_ENTITY; -- 10303-46: presentation_appearance_schema
 
ENTITY externally_defined_symbol
SUBTYPE OF (externally_defined_item);
END_ENTITY; -- 10303-46: presentation_definition_schema
 
ENTITY externally_defined_text_font
SUBTYPE OF (externally_defined_item);
END_ENTITY; -- 10303-46: presentation_resource_schema
 
ENTITY externally_defined_tile_style
SUBTYPE OF (externally_defined_item, geometric_representation_item);
END_ENTITY; -- 10303-46: presentation_appearance_schema
 
ENTITY extruded_area_solid
SUBTYPE OF (swept_area_solid);
  extruded_direction : direction;
  depth : positive_length_measure;
WHERE
  wr1 : dot_product(SELF\swept_area_solid.swept_area.basis_surface\
    elementary_surface.position.p[3], extruded_direction) <> 0.0;
END_ENTITY; (* declared in: geometric_model_schema *)
 
ENTITY extruded_face_solid
SUBTYPE OF (swept_face_solid);
  extruded_direction : direction;
  depth : positive_length_measure;
WHERE
  wr1 : dot_product(SELF\swept_face_solid.swept_face.face_geometry\
    elementary_surface.position.p[3], extruded_direction) <> 0.0;
END_ENTITY; -- 10303-42: geometric_model_schema
 
ENTITY face
SUPERTYPE OF (ONEOF (face_surface, subface, oriented_face))
SUBTYPE OF (topological_representation_item);
  bounds : SET [1:?] OF face_bound;
WHERE
  wr1 : NOT mixed_loop_type_set(list_to_set(list_face_loops(SELF)));
  wr2 : SIZEOF(QUERY(temp <* bounds | 'AUTOMOTIVE_DESIGN.FACE_OUTER_BOUND' 
    IN TYPEOF(temp))) <= 1;
END_ENTITY; -- 10303-42: topology_schema
 
ENTITY face_based_surface_model
SUBTYPE OF (geometric_representation_item);
  fbsm_faces : SET [1:?] OF connected_face_set;
END_ENTITY; -- 10303-42: geometric_model_schema
 
ENTITY face_bound
SUBTYPE OF (topological_representation_item);
  bound : loop;
  orientation : BOOLEAN;
END_ENTITY; -- 10303-42: topology_schema
 
ENTITY face_outer_bound
SUBTYPE OF (face_bound);
END_ENTITY; -- 10303-42: topology_schema
 
ENTITY face_shape_representation
SUBTYPE OF (shape_representation);
WHERE
  wr1 : SIZEOF(SELF.items) = 1;
  wr2 : SIZEOF(QUERY(i <* SELF.items | SIZEOF(['AUTOMOTIVE_DESIGN.' + 'FACE'
    , 'AUTOMOTIVE_DESIGN.' + 'CLOSED_SHELL', 'AUTOMOTIVE_DESIGN.' + 
    'OPEN_SHELL'] * TYPEOF(i)) = 1)) = 1;
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY face_surface
SUBTYPE OF (face, geometric_representation_item);
  face_geometry : surface;
  same_sense : BOOLEAN;
WHERE
  wr1 : NOT ('AUTOMOTIVE_DESIGN.ORIENTED_SURFACE' IN TYPEOF(face_geometry));
END_ENTITY; -- 10303-42: topology_schema
 
ENTITY faceted_brep
SUBTYPE OF (manifold_solid_brep);
END_ENTITY; -- 10303-42: geometric_model_schema
 
ENTITY faceted_brep_shape_representation
SUBTYPE OF (shape_representation);
WHERE
  wr1 : SIZEOF(QUERY(it <* items | NOT (SIZEOF([
    'AUTOMOTIVE_DESIGN.FACETED_BREP', 'AUTOMOTIVE_DESIGN.MAPPED_ITEM', 
    'AUTOMOTIVE_DESIGN.AXIS2_PLACEMENT_3D'] * TYPEOF(it)) = 1))) = 0;
  wr2 : SIZEOF(QUERY(it <* items | SIZEOF(['AUTOMOTIVE_DESIGN.FACETED_BREP'
    , 'AUTOMOTIVE_DESIGN.MAPPED_ITEM'] * TYPEOF(it)) = 1)) > 0;
  wr3 : SIZEOF(QUERY(fbrep <* QUERY(it <* items | 
    'AUTOMOTIVE_DESIGN.FACETED_BREP' IN TYPEOF(it)) | NOT (SIZEOF(QUERY(csh
     <* msb_shells(fbrep) | NOT (SIZEOF(QUERY(fcs <* csh\connected_face_set.
    cfs_faces | NOT (('AUTOMOTIVE_DESIGN.FACE_SURFACE' IN TYPEOF(fcs)) AND (
    'AUTOMOTIVE_DESIGN.PLANE' IN TYPEOF(fcs\face_surface.face_geometry)) AND
     ('AUTOMOTIVE_DESIGN.CARTESIAN_POINT' IN TYPEOF(fcs\face_surface.
    face_geometry\elementary_surface.position.location))))) = 0))) = 0))) = 0;
  wr4 : SIZEOF(QUERY(fbrep <* QUERY(it <* items | 
    'AUTOMOTIVE_DESIGN.FACETED_BREP' IN TYPEOF(it)) | NOT (SIZEOF(QUERY(csh
     <* msb_shells(fbrep) | NOT (SIZEOF(QUERY(fcs <* csh\connected_face_set.
    cfs_faces | NOT (SIZEOF(QUERY(bnds <* fcs.bounds | 
    'AUTOMOTIVE_DESIGN.FACE_OUTER_BOUND' IN TYPEOF(bnds))) = 1))) = 0))) = 0
    ))) = 0;
  wr5 : SIZEOF(QUERY(msb <* QUERY(it <* items | 
    'AUTOMOTIVE_DESIGN.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) | 
    'AUTOMOTIVE_DESIGN.ORIENTED_CLOSED_SHELL' IN TYPEOF(msb\
    manifold_solid_brep.outer))) = 0;
  wr6 : SIZEOF(QUERY(brv <* QUERY(it <* items | 
    'AUTOMOTIVE_DESIGN.BREP_WITH_VOIDS' IN TYPEOF(it)) | NOT (SIZEOF(QUERY(
    csh <* brv\brep_with_voids.voids | csh\oriented_closed_shell.orientation))
     = 0))) = 0;
  wr7 : SIZEOF(QUERY(mi <* QUERY(it <* items | 
    'AUTOMOTIVE_DESIGN.MAPPED_ITEM' IN TYPEOF(it)) | NOT (
    'AUTOMOTIVE_DESIGN.FACETED_BREP_SHAPE_REPRESENTATION' IN TYPEOF(mi\
    mapped_item.mapping_source.mapped_representation)))) = 0;
END_ENTITY; -- 10303-512: aic_faceted_brep
 
ENTITY feature_component_definition
SUBTYPE OF (characterized_object);
WHERE
  wr1 : SIZEOF(get_shape_aspects(SELF)) = 1;
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY feature_component_relationship
SUBTYPE OF (shape_aspect_relationship);
WHERE
  wr1 : ('AUTOMOTIVE_DESIGN.' + 'TRANSITION_FEATURE' IN TYPEOF(SELF.
    related_shape_aspect)) OR (SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'FEATURE_DEFINITION', 'AUTOMOTIVE_DESIGN.' + 
    'FEATURE_COMPONENT_DEFINITION'] * TYPEOF(SELF.related_shape_aspect.of_shape
    .definition)) = 1);
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY feature_definition
SUBTYPE OF (characterized_object);
WHERE
  wr1 : SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | 
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation))) <= 1;
  wr2 : (SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | 
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation))) = 0) OR (SIZEOF(QUERY(pdr <* 
    get_property_definition_representations(SELF) | ('AUTOMOTIVE_DESIGN.' + 
    'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) 
    AND (SIZEOF(QUERY(i <* pdr.used_representation.items | (i.name = 
    'orientation') AND ('AUTOMOTIVE_DESIGN.' + 'PLACEMENT' IN TYPEOF(i))))
     <= 1))) = 1);
  wr3 : NOT ((SIZEOF(['AUTOMOTIVE_DESIGN.' + 'BARRING_HOLE', 
    'AUTOMOTIVE_DESIGN.' + 'BEAD', 'AUTOMOTIVE_DESIGN.' + 'HOLE_IN_PANEL'
    , 'AUTOMOTIVE_DESIGN.' + 'FEATURE_IN_PANEL', 'AUTOMOTIVE_DESIGN.' + 
    'JOGGLE', 'AUTOMOTIVE_DESIGN.' + 'LOCATOR'] * TYPEOF(SELF)) = 1) OR (
    'AUTOMOTIVE_DESIGN.' + 'COMPOUND_FEATURE' IN TYPEOF(SELF)) AND (SIZEOF(
    QUERY(sa <* get_shape_aspects(SELF) | sa.name = 'compound feature in panel'
    )) = 1)) OR (SIZEOF(QUERY(pdr <* get_property_definition_representations(
    SELF) | 'AUTOMOTIVE_DESIGN.' + 'DIRECTION_SHAPE_REPRESENTATION' IN 
    TYPEOF(pdr.used_representation))) <= 1) AND ((SIZEOF(QUERY(pdr <* 
    get_property_definition_representations(SELF) | 'AUTOMOTIVE_DESIGN.' + 
    'DIRECTION_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation))) = 0) 
    OR (SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'DIRECTION_SHAPE_REPRESENTATION' IN TYPEOF(pdr.
    used_representation)) AND (pdr.used_representation.name = 'punch direction'
    ))) = 1));
  wr4 : (SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | 
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation))) = 0) OR (SIZEOF(QUERY(pdr <* 
    get_property_definition_representations(SELF) | ('AUTOMOTIVE_DESIGN.' + 
    'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.used_representation)) 
    AND ('AUTOMOTIVE_DESIGN.' + 'GEOMETRIC_REPRESENTATION_CONTEXT' IN TYPEOF
    (pdr.used_representation.context_of_items)) AND (pdr.used_representation.
    context_of_items\geometric_representation_context.
    coordinate_space_dimension = 3))) = 1);
  wr5 : NOT ((SIZEOF(['AUTOMOTIVE_DESIGN.' + 'BOSS', 'AUTOMOTIVE_DESIGN.'
     + 'RIB', 'AUTOMOTIVE_DESIGN.' + 'SLOT', 'AUTOMOTIVE_DESIGN.' + 
    'ROUND_HOLE', 'AUTOMOTIVE_DESIGN.' + 'POCKET'] * TYPEOF(SELF)) = 1) OR (
    'AUTOMOTIVE_DESIGN.' + 'COMPOUND_FEATURE' IN TYPEOF(SELF)) AND (SIZEOF(
    QUERY(sa <* get_shape_aspects(SELF) | ('AUTOMOTIVE_DESIGN.' + 
    'COMPOSITE_SHAPE_ASPECT' IN TYPEOF(sa)) AND (sa.name = 
    'compound feature in solid'))) = 1)) OR (SIZEOF(QUERY(pdr <* 
    get_property_definition_representations(SELF) | 'AUTOMOTIVE_DESIGN.' + 
    'DIRECTION_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation))) = 1) 
    AND (SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'DIRECTION_SHAPE_REPRESENTATION' IN TYPEOF(pdr.
    used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.items
     | (i.name = 'orientation') AND ('AUTOMOTIVE_DESIGN.' + 'PLACEMENT' IN 
    TYPEOF(i)))) = 1))) = 1);
  wr6 : SIZEOF(['AUTOMOTIVE_DESIGN.' + 'BEAD', 'AUTOMOTIVE_DESIGN.' + 
    'BARRING_HOLE', 'AUTOMOTIVE_DESIGN.' + 'BOSS', 'AUTOMOTIVE_DESIGN.'
     + 'COMPOUND_FEATURE', 'AUTOMOTIVE_DESIGN.' + 
    'EXTERNALLY_DEFINED_FEATURE_DEFINITION', 'AUTOMOTIVE_DESIGN.' + 
    'FEATURE_IN_PANEL', 'AUTOMOTIVE_DESIGN.' + 'GENERAL_FEATURE', 
    'AUTOMOTIVE_DESIGN.' + 'HOLE_IN_PANEL', 'AUTOMOTIVE_DESIGN.' + 
    'JOGGLE', 'AUTOMOTIVE_DESIGN.' + 'LOCATOR', 'AUTOMOTIVE_DESIGN.' + 
    'POCKET', 'AUTOMOTIVE_DESIGN.' + 'RIB', 'AUTOMOTIVE_DESIGN.' + 
    'REPLICATE_FEATURE', 'AUTOMOTIVE_DESIGN.' + 'ROUND_HOLE', 
    'AUTOMOTIVE_DESIGN.' + 'SLOT', 'AUTOMOTIVE_DESIGN.' + 'THREAD'] * 
    TYPEOF(SELF)) <= 1;
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY feature_in_panel
SUBTYPE OF (feature_definition);
WHERE
  wr1 : SELF.description IN ['pocket', 'boss', 'stairstep'];
  wr2 : SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND NOT ({2 <= SIZEOF(pdr.used_representation.
    items) <= 3}))) = 0;
  wr3 : SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | NOT (i.name IN ['orientation', 'base radius', 'target radius'])))
     > 0))) = 0;
  wr4 : SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'base radius') AND (SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'MEASURE_REPRESENTATION_ITEM', 'AUTOMOTIVE_DESIGN.' + 
    'LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2))) = 1))) = 1;
  wr5 : SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'target radius') AND (SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'MEASURE_REPRESENTATION_ITEM', 'AUTOMOTIVE_DESIGN.' + 
    'LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2))) = 1))) = 1;
  wr6 : SIZEOF(QUERY(sa <* get_shape_aspects(SELF) | (sa.name = 'base boundary'
    ) AND (sa.description IN ['directed angle occurrence', 
    'closed profile occurrence']))) = 1;
  wr7 : SIZEOF(QUERY(sa <* get_shape_aspects(SELF) | (sa.name = 
    'target boundary') AND (sa.description IN ['directed angle occurrence', 
    'closed profile occurrence']))) = 1;
  wr8 : SIZEOF(QUERY(sa <* get_shape_aspects(SELF) | sa.description = 
    'directed angle occurrence')) <= 1;
  wr9 : SIZEOF(QUERY(sa <* get_shape_aspects(SELF) | (sa.description = 
    'directed angle occurrence') AND (SIZEOF(QUERY(sar <* USEDIN(sa, 
    'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)) AND
     (sar.name = 'directed angle usage') AND ('AUTOMOTIVE_DESIGN.' + 
    'DIRECTED_ANGLE' IN TYPEOF(sar.relating_shape_aspect)))) = 1))) = SIZEOF(
    QUERY(sa <* get_shape_aspects(SELF) | sa.description = 
    'directed angle occurrence'));
  wr10 : SIZEOF(QUERY(sa <* get_shape_aspects(SELF) | (sa.description = 
    'closed profile occurrence') AND (SIZEOF(QUERY(sar <* USEDIN(sa, 
    'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)) AND
     (sar.description = 'profile usage') AND (SIZEOF(['AUTOMOTIVE_DESIGN.'
     + 'CIRCULAR_CLOSED_PROFILE', 'AUTOMOTIVE_DESIGN.' + 
    'NGON_CLOSED_PROFILE', 'AUTOMOTIVE_DESIGN.' + 
    'RECTANGULAR_CLOSED_PROFILE', 'AUTOMOTIVE_DESIGN.' + 
    'CLOSED_PATH_PROFILE'] * TYPEOF(sar.relating_shape_aspect)) = 1))) = 1)))
     = SIZEOF(QUERY(sa <* get_shape_aspects(SELF) | sa.description = 
    'closed profile occurrence'));
  wr11 : (SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | 
    'AUTOMOTIVE_DESIGN.' + 'FACE_SHAPE_REPRESENTATION' IN TYPEOF(pdr.
    used_representation))) <= 1) AND (SIZEOF(QUERY(pdr <* 
    get_property_definition_representations(SELF) | ('AUTOMOTIVE_DESIGN.' + 
    'FACE_SHAPE_REPRESENTATION' IN TYPEOF(pdr.used_representation)) AND NOT (
    pdr.used_representation.name = 'target face'))) = 0);
  wr12 : (SIZEOF(QUERY(sa <* get_shape_aspects(SELF) | (sa.name = 
    'target boundary') AND (sa.description = 'directed angle occurrence'))) = 0
    ) OR (SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | 
    'AUTOMOTIVE_DESIGN.' + 'FACE_SHAPE_REPRESENTATION' IN TYPEOF(pdr.
    used_representation))) = 1);
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY feature_pattern
SUBTYPE OF (replicate_feature);
WHERE
  wr1 : SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'added instance placement') AND ('AUTOMOTIVE_DESIGN.'
     + 'PLACEMENT' IN TYPEOF(i)))) > 1))) = 1;
  wr2 : SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | NOT ('AUTOMOTIVE_DESIGN.' + 'PLACEMENT' IN TYPEOF(i)))) > 0)))
     = 0;
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY featured_shape
SUBTYPE OF (product_definition_shape);
WHERE
  wr1 : 'AUTOMOTIVE_DESIGN.' + 'PRODUCT_DEFINITION' IN TYPEOF(SELF.
    definition);
  wr2 : (SIZEOF(USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.PROPERTY_DEFINITION_RELATIONSHIP.RELATED_PROPERTY_DEFINITION'
    )) = 1) AND (SIZEOF(QUERY(pdr <* USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.PROPERTY_DEFINITION_RELATIONSHIP.RELATED_PROPERTY_DEFINITION'
    ) | (pdr.name = 'featured shape sequence') AND ('AUTOMOTIVE_DESIGN.' + 
    'PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pdr.relating_property_definition)) AND
     (pdr.relating_property_definition :<>: SELF))) = 1);
  wr3 : SIZEOF(QUERY(pdr <* USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.PROPERTY_DEFINITION_RELATIONSHIP.RELATED_PROPERTY_DEFINITION'
    ) | SELF.definition :=: pdr.relating_property_definition.definition)) = 1;
  wr4 : SIZEOF(QUERY(sa <* USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.SHAPE_ASPECT.OF_SHAPE') | SIZEOF([
    'AUTOMOTIVE_DESIGN.' + 'PLACED_FEATURE', 'AUTOMOTIVE_DESIGN.' + 
    'INSTANCED_FEATURE'] * TYPEOF(sa)) = 1)) >= 1;
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY fill_area_style;
  name : label;
  fill_styles : SET [1:?] OF fill_style_select;
WHERE
  wr1 : SIZEOF(QUERY(fill_style <* SELF.fill_styles | 'AUTOMOTIVE_DESIGN.'
     + 'FILL_AREA_STYLE_COLOUR' IN TYPEOF(fill_style))) <= 1;
END_ENTITY; -- 10303-46: presentation_appearance_schema
 
ENTITY fill_area_style_colour;
  name : label;
  fill_colour : colour;
END_ENTITY; -- 10303-46: presentation_appearance_schema
 
ENTITY fill_area_style_hatching
SUBTYPE OF (geometric_representation_item);
  hatch_line_appearance : curve_style;
  start_of_next_hatch_line : one_direction_repeat_factor;
  point_of_reference_hatch_line : cartesian_point;
  pattern_start : cartesian_point;
  hatch_line_angle : plane_angle_measure;
END_ENTITY; -- 10303-46: presentation_appearance_schema
 
ENTITY fill_area_style_tile_symbol_with_style
SUBTYPE OF (geometric_representation_item);
  symbol : annotation_symbol_occurrence;
END_ENTITY; -- 10303-46: presentation_appearance_schema
 
ENTITY fill_area_style_tiles
SUBTYPE OF (geometric_representation_item);
  tiling_pattern : two_direction_repeat_factor;
  tiles : SET [1:?] OF fill_area_style_tile_shape_select;
  tiling_scale : positive_ratio_measure;
END_ENTITY; -- 10303-46: presentation_appearance_schema
 
ENTITY fillet
SUBTYPE OF (transition_feature);
WHERE
  wr1 : (SELF.description <> 'constant radius') XOR (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | 
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation))) = 1);
  wr2 : (SELF.description <> 'constant radius') OR (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND {1 <= SIZEOF(pdr.used_representation.items)
     <= 3})) = 1);
  wr3 : (SELF.description <> 'constant radius') OR (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | NOT (i.name IN ['radius', 'first offset', 'second offset']))) > 0))
    ) = 0);
  wr4 : (SELF.description <> 'constant radius') OR (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'radius') AND (SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'MEASURE_REPRESENTATION_ITEM', 'AUTOMOTIVE_DESIGN.' + 
    'LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2))) = 1))) = 1);
  wr5 : (SELF.description <> 'constant radius') OR (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'first offset') AND (SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'MEASURE_REPRESENTATION_ITEM', 'AUTOMOTIVE_DESIGN.' + 
    'LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2))) <= 1))) = 1);
  wr6 : (SELF.description <> 'constant radius') OR (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'second offset') AND (SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'MEASURE_REPRESENTATION_ITEM', 'AUTOMOTIVE_DESIGN.' + 
    'LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2))) <= 1))) = 1);
  wr7 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'FACE_SHAPE_REPRESENTATION' IN TYPEOF(pdr.
    used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.items
     | i.name = 'first face shape')) = 1))) = 1;
  wr8 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'FACE_SHAPE_REPRESENTATION' IN TYPEOF(pdr.
    used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.items
     | i.name = 'second face shape')) = 1))) = 1;
  wr9 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'FACE_SHAPE_REPRESENTATION' IN TYPEOF(pdr.
    used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.items
     | i.name = 'fillet face')) = 1))) = 1;
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY flatness_tolerance
SUBTYPE OF (geometric_tolerance);
WHERE
  wr1 : NOT ('AUTOMOTIVE_DESIGN.' + 
    'GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE' IN TYPEOF(SELF));
END_ENTITY; -- 10303-519: aic_geometric_tolerances
 
ENTITY format_function
SUBTYPE OF (string_expression, binary_generic_expression);
DERIVE
  value_to_format : generic_expression := SELF\binary_generic_expression.
  operands[1];
  format_string : generic_expression := SELF\binary_generic_expression.operands
  [2];
WHERE
  wr1 : ('AUTOMOTIVE_DESIGN.NUMERIC_EXPRESSION' IN TYPEOF(value_to_format)) 
    AND ('AUTOMOTIVE_DESIGN.STRING_EXPRESSION' IN TYPEOF(format_string));
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY founded_item;
END_ENTITY; -- 10303-43: representation_schema
 
ENTITY founded_kinematic_path
SUBTYPE OF (representation);
  SELF\representation.items : SET [1:?] OF kinematic_path;
  SELF\representation.context_of_items : geometric_representation_context;
DERIVE
  paths : SET [1:?] OF kinematic_path := SELF\representation.items;
  founding : geometric_representation_context := SELF\representation.
  context_of_items;
END_ENTITY; -- 10303-105: kinematic_analysis_control_and_result_schema
 
ENTITY fully_constrained_pair
SUBTYPE OF (kinematic_pair);
END_ENTITY; -- 10303-105: kinematic_structure_schema
 
ENTITY functionally_defined_transformation;
  name : label;
  description :  OPTIONAL text;
END_ENTITY; -- 10303-43: representation_schema
 
ENTITY gear_pair
SUBTYPE OF (kinematic_pair);
  radius_first_link : length_measure;
  radius_second_link : length_measure;
  bevel : plane_angle_measure;
  helical_angle : plane_angle_measure;
  gear_ratio : REAL;
END_ENTITY; -- 10303-105: kinematic_structure_schema
 
ENTITY gear_pair_range
SUBTYPE OF (simple_pair_range);
  SELF\simple_pair_range.applies_to_pair : gear_pair;
  lower_limit_actual_rotation_1 : rotational_range_measure;
  upper_limit_actual_rotation_1 : rotational_range_measure;
WHERE
  wr1 : ('AUTOMOTIVE_DESIGN.UNLIMITED_RANGE' IN TYPEOF(
    lower_limit_actual_rotation_1)) OR ('AUTOMOTIVE_DESIGN.UNLIMITED_RANGE' 
    IN TYPEOF(upper_limit_actual_rotation_1)) XOR (
    lower_limit_actual_rotation_1 < upper_limit_actual_rotation_1);
END_ENTITY; -- 10303-105: kinematic_structure_schema
 
ENTITY gear_pair_value
SUBTYPE OF (pair_value);
  SELF\pair_value.applies_to_pair : gear_pair;
  actual_rotation_1 : plane_angle_measure;
DERIVE
  actual_rotation_2 : plane_angle_measure := -actual_rotation_1 * SELF\
  pair_value.applies_to_pair\gear_pair.gear_ratio;
END_ENTITY; -- 10303-105: kinematic_structure_schema
 
ENTITY general_feature
SUBTYPE OF (feature_definition);
WHERE
  wr1 : (SIZEOF(get_property_definition_representations(SELF)) <= 1) AND (
    SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | 
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation))) <= 1);
  wr2 : SIZEOF(QUERY(sa <* get_shape_aspects(SELF) | sa.description = 
    'course of travel occurrence')) = SIZEOF(QUERY(sa <* get_shape_aspects(SELF
    ) | (sa.description = 'course of travel occurrence') AND (SIZEOF(QUERY(sar
     <* USEDIN(sa, 
    'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)) AND
     (sar.name = 'course of travel'))) = 1)));
  wr3 : SIZEOF(QUERY(sa <* get_shape_aspects(SELF) | sa.description = 
    'course of travel occurrence')) = SIZEOF(QUERY(sa <* get_shape_aspects(SELF
    ) | (sa.description = 'course of travel occurrence') AND (SIZEOF(QUERY(sar
     <* USEDIN(sa, 
    'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)) AND
     ('AUTOMOTIVE_DESIGN.' + 'PATH_FEATURE_COMPONENT' IN TYPEOF(sar.
    relating_shape_aspect)))) = 1)));
  wr4 : SIZEOF(QUERY(sa <* get_shape_aspects(SELF) | sa.description = 
    'boundary occurrence')) = SIZEOF(QUERY(sa <* get_shape_aspects(SELF) | (sa.
    description = 'boundary occurrence') AND (SIZEOF(QUERY(sar <* USEDIN(sa, 
    'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)) AND
     (sar.description = 'profile usage'))) = 1)));
  wr5 : (SIZEOF(QUERY(sa <* get_shape_aspects(SELF) | 'AUTOMOTIVE_DESIGN.'
     + 'COMPOSITE_SHAPE_ASPECT' IN TYPEOF(sa))) <= 1) AND (SIZEOF(QUERY(sa <* 
    get_shape_aspects(SELF) | ('AUTOMOTIVE_DESIGN.' + 
    'COMPOSITE_SHAPE_ASPECT' IN TYPEOF(sa)) AND (sa.name = 
    'general compound feature') AND (SIZEOF(QUERY(sar <* USEDIN(sa, 
    'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') | (
    'AUTOMOTIVE_DESIGN.' + 'FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)) 
    AND ('AUTOMOTIVE_DESIGN.' + 'INSTANCED_FEATURE' IN TYPEOF(sar.
    related_shape_aspect)))) >= 2))) <= 1);
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY general_material_property
SUBTYPE OF (general_property);
WHERE
  wr1 : SIZEOF(QUERY(gpa <* USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.GENERAL_PROPERTY_ASSOCIATION.BASE_DEFINITION') | NOT 
    ('AUTOMOTIVE_DESIGN.' + 'MATERIAL_PROPERTY' IN TYPEOF(gpa.
    derived_definition)))) = 0;
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY general_property;
  id : identifier;
  name : label;
  description :  OPTIONAL text;
END_ENTITY; -- 10303-41: product_property_definition_schema
 
ENTITY general_property_association;
  name : label;
  description :  OPTIONAL text;
  base_definition : general_property;
  derived_definition : derived_property_select;
WHERE
  wr1 : SIZEOF(USEDIN(derived_definition, 
    'AUTOMOTIVE_DESIGN.GENERAL_PROPERTY_ASSOCIATION.DERIVED_DEFINITION')) = 
    1;
  wr2 : derived_definition.name = base_definition.name;
END_ENTITY; -- 10303-41: product_property_definition_schema
 
ENTITY general_property_relationship;
  name : label;
  description :  OPTIONAL text;
  relating_property : general_property;
  related_property : general_property;
END_ENTITY; -- 10303-41: product_property_definition_schema
 
ENTITY generic_character_glyph_symbol ABSTRACT SUPERTYPE
SUBTYPE OF (symbol_representation);
END_ENTITY; (* declared in: presentation_resource_schema *)
 
ENTITY generic_expression
ABSTRACT SUPERTYPE OF (ONEOF (simple_generic_expression, 
unary_generic_expression, binary_generic_expression, 
multiple_arity_generic_expression));
WHERE
  wr1 : is_acyclic(SELF);
END_ENTITY; (* declared in: iso13584_generic_expressions_schema *)
 
ENTITY generic_literal ABSTRACT SUPERTYPE
SUBTYPE OF (simple_generic_expression);
END_ENTITY; (* declared in: iso13584_generic_expressions_schema *)
 
ENTITY generic_variable ABSTRACT SUPERTYPE
SUBTYPE OF (simple_generic_expression);
INVERSE
  interpretation : environment FOR syntactic_representation;
END_ENTITY; (* declared in: iso13584_generic_expressions_schema *)
 
ENTITY geometric_alignment
SUBTYPE OF (derived_shape_aspect);
WHERE
  wr1 : SIZEOF(SELF\derived_shape_aspect.deriving_relationships) > 1;
END_ENTITY; -- 10303-47: shape_aspect_definition_schema
 
ENTITY geometric_curve_set
SUBTYPE OF (geometric_set);
WHERE
  wr1 : SIZEOF(QUERY(temp <* SELF\geometric_set.elements | 
    'AUTOMOTIVE_DESIGN.SURFACE' IN TYPEOF(temp))) = 0;
END_ENTITY; -- 10303-42: geometric_model_schema
 
ENTITY geometric_intersection
SUBTYPE OF (derived_shape_aspect);
WHERE
  wr1 : SIZEOF(SELF\derived_shape_aspect.deriving_relationships) > 1;
END_ENTITY; -- 10303-47: shape_aspect_definition_schema
 
ENTITY geometric_item_specific_usage
SUBTYPE OF (item_identified_representation_usage);
  SELF\item_identified_representation_usage.definition : shape_aspect;
  SELF\item_identified_representation_usage.used_representation : 
  shape_representation;
  SELF\item_identified_representation_usage.identified_item : 
  geometric_representation_item;
END_ENTITY; (* declared in: automotive_design *)
 
ENTITY geometric_representation_context
SUBTYPE OF (representation_context);
  coordinate_space_dimension : dimension_count;
END_ENTITY; -- 10303-42: geometry_schema
 
ENTITY geometric_representation_item
SUPERTYPE OF (ONEOF (point, direction, vector, placement, 
cartesian_transformation_operator, curve, surface, edge_curve, face_surface, 
poly_loop, vertex_point, solid_model, boolean_result, sphere, 
right_circular_cone, right_circular_cylinder, torus, block, right_angular_wedge
, half_space_solid, shell_based_surface_model, face_based_surface_model, 
edge_based_wireframe_model, geometric_set))
SUBTYPE OF (representation_item);
DERIVE
  dim : dimension_count := dimension_of(SELF);
WHERE
  wr1 : SIZEOF(QUERY(using_rep <* using_representations(SELF) | NOT (
    'AUTOMOTIVE_DESIGN.GEOMETRIC_REPRESENTATION_CONTEXT' IN TYPEOF(using_rep
    .context_of_items)))) = 0;
END_ENTITY; -- 10303-42: geometry_schema
 
ENTITY geometric_set
SUPERTYPE OF (geometric_curve_set)
SUBTYPE OF (geometric_representation_item);
  elements : SET [1:?] OF geometric_set_select;
END_ENTITY; -- 10303-42: geometric_model_schema
 
ENTITY geometric_tolerance;
  name : label;
  description : text;
  magnitude : measure_with_unit;
  toleranced_shape_aspect : shape_aspect;
WHERE
  wr1 : ('NUMBER' IN TYPEOF(magnitude\measure_with_unit.value_component)) AND (
    magnitude\measure_with_unit.value_component >= 0.0);
END_ENTITY; -- 10303-47: shape_tolerance_schema
 
ENTITY geometric_tolerance_relationship;
  name : label;
  description : text;
  relating_geometric_tolerance : geometric_tolerance;
  related_geometric_tolerance : geometric_tolerance;
END_ENTITY; -- 10303-47: shape_tolerance_schema
 
ENTITY geometric_tolerance_with_datum_reference
SUBTYPE OF (geometric_tolerance);
  datum_system : SET [1:?] OF datum_reference;
END_ENTITY; -- 10303-47: shape_tolerance_schema
 
ENTITY geometric_tolerance_with_defined_unit
SUBTYPE OF (geometric_tolerance);
  unit_size : measure_with_unit;
WHERE
  wr1 : ('NUMBER' IN TYPEOF(unit_size\measure_with_unit.value_component)) AND (
    unit_size\measure_with_unit.value_component > 0.0);
END_ENTITY; -- 10303-47: shape_tolerance_schema
 
ENTITY geometrical_tolerance_callout
SUBTYPE OF (draughting_callout);
END_ENTITY; -- 10303-506: aic_draughting_elements
 
ENTITY geometrically_bounded_2d_wireframe_representation
SUBTYPE OF (shape_representation);
WHERE
  wr1 : SELF.context_of_items\geometric_representation_context.
    coordinate_space_dimension = 2;
  wr2 : SIZEOF(QUERY(item <* SELF.items | NOT (SIZEOF(TYPEOF(item) * [
    'AUTOMOTIVE_DESIGN.GEOMETRIC_CURVE_SET', 
    'AUTOMOTIVE_DESIGN.AXIS2_PLACEMENT_2D', 
    'AUTOMOTIVE_DESIGN.MAPPED_ITEM']) = 1))) = 0;
  wr3 : SIZEOF(QUERY(item <* SELF.items | SIZEOF(TYPEOF(item) * [
    'AUTOMOTIVE_DESIGN.GEOMETRIC_CURVE_SET', 
    'AUTOMOTIVE_DESIGN.MAPPED_ITEM']) = 1)) >= 1;
  wr4 : SIZEOF(QUERY(mi <* QUERY(item <* SELF.items | 
    'AUTOMOTIVE_DESIGN.MAPPED_ITEM' IN TYPEOF(item)) | NOT (
    'AUTOMOTIVE_DESIGN.' + 
    'GEOMETRICALLY_BOUNDED_2D_WIREFRAME_REPRESENTATION' IN TYPEOF(mi\
    mapped_item.mapping_source.mapped_representation)))) = 0;
  wr5 : SIZEOF(QUERY(gcs <* QUERY(item <* SELF.items | 
    'AUTOMOTIVE_DESIGN.GEOMETRIC_CURVE_SET' IN TYPEOF(item)) | NOT (SIZEOF(
    QUERY(elem <* gcs\geometric_set.elements | NOT (SIZEOF(TYPEOF(elem) * [
    'AUTOMOTIVE_DESIGN.B_SPLINE_CURVE', 'AUTOMOTIVE_DESIGN.CIRCLE', 
    'AUTOMOTIVE_DESIGN.COMPOSITE_CURVE', 'AUTOMOTIVE_DESIGN.ELLIPSE', 
    'AUTOMOTIVE_DESIGN.OFFSET_CURVE_2D', 'AUTOMOTIVE_DESIGN.POINT', 
    'AUTOMOTIVE_DESIGN.POLYLINE', 'AUTOMOTIVE_DESIGN.TRIMMED_CURVE']) = 1
    ))) = 0))) = 0;
  wr6 : SIZEOF(QUERY(gcs <* QUERY(item <* SELF.items | 
    'AUTOMOTIVE_DESIGN.GEOMETRIC_CURVE_SET' IN TYPEOF(item)) | NOT (SIZEOF(
    QUERY(crv <* QUERY(elem <* gcs\geometric_set.elements | 
    'AUTOMOTIVE_DESIGN.CURVE' IN TYPEOF(elem)) | NOT 
    valid_basis_curve_in_2d_wireframe(crv))) = 0))) = 0;
  wr7 : SIZEOF(QUERY(gcs <* QUERY(item <* SELF.items | 
    'AUTOMOTIVE_DESIGN.GEOMETRIC_CURVE_SET' IN TYPEOF(item)) | NOT (SIZEOF(
    QUERY(pnt <* QUERY(elem <* gcs\geometric_set.elements | 
    'AUTOMOTIVE_DESIGN.POINT' IN TYPEOF(elem)) | NOT (SIZEOF(TYPEOF(pnt) * [
    'AUTOMOTIVE_DESIGN.CARTESIAN_POINT', 
    'AUTOMOTIVE_DESIGN.POINT_ON_CURVE']) = 1))) = 0))) = 0;
  wr8 : SIZEOF(QUERY(gcs <* QUERY(item <* SELF.items | 
    'AUTOMOTIVE_DESIGN.GEOMETRIC_CURVE_SET' IN TYPEOF(item)) | NOT (SIZEOF(
    QUERY(pl <* QUERY(elem <* gcs\geometric_set.elements | 
    'AUTOMOTIVE_DESIGN.POLYLINE' IN TYPEOF(elem)) | NOT (SIZEOF(pl\polyline.
    points) > 2))) = 0))) = 0;
END_ENTITY; -- 10303-503: aic_geometrically_bounded_2d_wireframe
 
ENTITY geometrically_bounded_surface_shape_representation
SUBTYPE OF (shape_representation);
WHERE
  wr1 : SIZEOF(QUERY(it <* SELF.items | NOT (SIZEOF([
    'AUTOMOTIVE_DESIGN.GEOMETRIC_SET', 'AUTOMOTIVE_DESIGN.MAPPED_ITEM', 
    'AUTOMOTIVE_DESIGN.AXIS2_PLACEMENT_3D'] * TYPEOF(it)) = 1))) = 0;
  wr2 : SIZEOF(QUERY(it <* SELF.items | SIZEOF([
    'AUTOMOTIVE_DESIGN.GEOMETRIC_SET', 'AUTOMOTIVE_DESIGN.MAPPED_ITEM']
     * TYPEOF(it)) = 1)) > 0;
  wr3 : SIZEOF(QUERY(mi <* QUERY(it <* SELF.items | 
    'AUTOMOTIVE_DESIGN.MAPPED_ITEM' IN TYPEOF(it)) | NOT ((
    'AUTOMOTIVE_DESIGN.' + 
    'GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION' IN TYPEOF(mi\
    mapped_item.mapping_source.mapped_representation)) AND (SIZEOF(QUERY(mr_it
     <* mi\mapped_item.mapping_source.mapped_representation.items | 
    'AUTOMOTIVE_DESIGN.GEOMETRIC_SET' IN TYPEOF(mr_it))) > 0)))) = 0;
  wr4 : SIZEOF(QUERY(gs <* QUERY(it <* SELF.items | 
    'AUTOMOTIVE_DESIGN.GEOMETRIC_SET' IN TYPEOF(it)) | NOT (SIZEOF(QUERY(pnt
     <* QUERY(gsel <* gs\geometric_set.elements | 'AUTOMOTIVE_DESIGN.POINT' 
    IN TYPEOF(gsel)) | NOT gbsf_check_point(pnt))) = 0))) = 0;
  wr5 : SIZEOF(QUERY(gs <* QUERY(it <* SELF.items | 
    'AUTOMOTIVE_DESIGN.GEOMETRIC_SET' IN TYPEOF(it)) | NOT (SIZEOF(QUERY(cv
     <* QUERY(gsel <* gs\geometric_set.elements | 'AUTOMOTIVE_DESIGN.CURVE' 
    IN TYPEOF(gsel)) | NOT gbsf_check_curve(cv))) = 0))) = 0;
  wr6 : SIZEOF(QUERY(gs <* QUERY(it <* SELF.items | 
    'AUTOMOTIVE_DESIGN.GEOMETRIC_SET' IN TYPEOF(it)) | NOT (SIZEOF(QUERY(sf
     <* QUERY(gsel <* gs\geometric_set.elements | 
    'AUTOMOTIVE_DESIGN.SURFACE' IN TYPEOF(gsel)) | NOT gbsf_check_surface(sf
    ))) = 0))) = 0;
  wr7 : SIZEOF(QUERY(gs <* QUERY(it <* SELF.items | 
    'AUTOMOTIVE_DESIGN.GEOMETRIC_SET' IN TYPEOF(it)) | SIZEOF(QUERY(gsel <* 
    gs\geometric_set.elements | 'AUTOMOTIVE_DESIGN.SURFACE' IN TYPEOF(gsel))
    ) > 0)) > 0;
END_ENTITY; -- 10303-507: aic_geometrically_bounded_surface
 
ENTITY geometrically_bounded_wireframe_shape_representation
SUBTYPE OF (shape_representation);
WHERE
  wr1 : SIZEOF(QUERY(it <* SELF.items | NOT (SIZEOF(TYPEOF(it) * [
    'AUTOMOTIVE_DESIGN.GEOMETRIC_CURVE_SET', 
    'AUTOMOTIVE_DESIGN.AXIS2_PLACEMENT_3D', 
    'AUTOMOTIVE_DESIGN.MAPPED_ITEM']) = 1))) = 0;
  wr2 : SIZEOF(QUERY(it <* SELF.items | SIZEOF(TYPEOF(it) * [
    'AUTOMOTIVE_DESIGN.GEOMETRIC_CURVE_SET', 
    'AUTOMOTIVE_DESIGN.MAPPED_ITEM']) = 1)) >= 1;
  wr3 : SIZEOF(QUERY(gcs <* QUERY(it <* SELF.items | 
    'AUTOMOTIVE_DESIGN.GEOMETRIC_CURVE_SET' IN TYPEOF(it)) | NOT (SIZEOF(
    QUERY(crv <* QUERY(elem <* gcs\geometric_set.elements | 
    'AUTOMOTIVE_DESIGN.CURVE' IN TYPEOF(elem)) | NOT 
    valid_geometrically_bounded_wf_curve(crv))) = 0))) = 0;
  wr4 : SIZEOF(QUERY(gcs <* QUERY(it <* SELF.items | 
    'AUTOMOTIVE_DESIGN.GEOMETRIC_CURVE_SET' IN TYPEOF(it)) | NOT (SIZEOF(
    QUERY(pnts <* QUERY(elem <* gcs\geometric_set.elements | 
    'AUTOMOTIVE_DESIGN.POINT' IN TYPEOF(elem)) | NOT 
    valid_geometrically_bounded_wf_point(pnts))) = 0))) = 0;
  wr5 : SIZEOF(QUERY(gcs <* QUERY(it <* SELF.items | 
    'AUTOMOTIVE_DESIGN.GEOMETRIC_CURVE_SET' IN TYPEOF(it)) | NOT (SIZEOF(
    QUERY(cnc <* QUERY(elem <* gcs\geometric_set.elements | 
    'AUTOMOTIVE_DESIGN.CONIC' IN TYPEOF(elem)) | NOT (
    'AUTOMOTIVE_DESIGN.AXIS2_PLACEMENT_3D' IN TYPEOF(cnc\conic.position))))
     = 0))) = 0;
  wr6 : SIZEOF(QUERY(gcs <* QUERY(it <* SELF.items | 
    'AUTOMOTIVE_DESIGN.GEOMETRIC_CURVE_SET' IN TYPEOF(it)) | NOT (SIZEOF(
    QUERY(pline <* QUERY(elem <* gcs\geometric_set.elements | 
    'AUTOMOTIVE_DESIGN.POLYLINE' IN TYPEOF(elem)) | NOT (SIZEOF(pline\
    polyline.points) > 2))) = 0))) = 0;
  wr7 : SIZEOF(QUERY(mi <* QUERY(it <* SELF.items | 
    'AUTOMOTIVE_DESIGN.MAPPED_ITEM' IN TYPEOF(it)) | NOT (
    'AUTOMOTIVE_DESIGN.' + 
    'GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION' IN TYPEOF(mi\
    mapped_item.mapping_source.mapped_representation)))) = 0;
END_ENTITY; -- 10303-510: aic_geometrically_bounded_wireframe
 
ENTITY global_uncertainty_assigned_context
SUBTYPE OF (representation_context);
  uncertainty : SET [1:?] OF uncertainty_measure_with_unit;
END_ENTITY; -- 10303-43: representation_schema
 
ENTITY global_unit_assigned_context
SUBTYPE OF (representation_context);
  units : SET [1:?] OF unit;
END_ENTITY; -- 10303-41: measure_schema
 
ENTITY group;
  name : label;
  description :  OPTIONAL text;
DERIVE
  id : identifier := get_id_value(SELF);
WHERE
  wr1 : SIZEOF(USEDIN(SELF, 'AUTOMOTIVE_DESIGN.ID_ATTRIBUTE.IDENTIFIED_ITEM'
    )) <= 1;
END_ENTITY; -- 10303-41: group_schema
 
ENTITY group_assignment ABSTRACT SUPERTYPE;
  assigned_group : group;
DERIVE
  role : object_role := get_role(SELF);
WHERE
  wr1 : SIZEOF(USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
END_ENTITY; -- 10303-41: management_resources_schema
 
ENTITY group_relationship;
  name : label;
  description :  OPTIONAL text;
  relating_group : group;
  related_group : group;
END_ENTITY; -- 10303-41: group_schema
 
ENTITY half_space_solid
SUBTYPE OF (geometric_representation_item);
  base_surface : surface;
  agreement_flag : BOOLEAN;
END_ENTITY; -- 10303-42: geometric_model_schema
 
ENTITY hardness_representation
SUBTYPE OF (representation);
WHERE
  wr1 : {2 <= SIZEOF(SELF.items) <= 4} AND (SIZEOF(QUERY(i <* items | (
    'AUTOMOTIVE_DESIGN.' + 'DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(i)) 
    AND (i.name IN ['measuring method', 'measuring position']))) + SIZEOF(
    QUERY(i <* items | (SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'MEASURE_REPRESENTATION_ITEM', 'AUTOMOTIVE_DESIGN.' + 'VALUE_RANGE'] * 
    TYPEOF(i)) = 1) AND (i.name IN ['depth', 'hardness']))) = SIZEOF(SELF.items
    ));
  wr2 : SIZEOF(QUERY(i <* SELF.items | i.name = 'measuring method')) = 1;
  wr3 : SIZEOF(QUERY(i <* SELF.items | i.name = 'hardness')) = 1;
  wr4 : SIZEOF(QUERY(i <* SELF.items | i.name = 'measuring position')) <= 1;
  wr5 : SIZEOF(QUERY(i <* SELF.items | i.name = 'depth')) <= 1;
  wr6 : (SIZEOF(USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION'
    )) = 1) AND (SIZEOF(QUERY(pdr <* USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION'
    ) | SIZEOF(QUERY(gpa <* USEDIN(pdr.definition, 
    'AUTOMOTIVE_DESIGN.GENERAL_PROPERTY_ASSOCIATION.DERIVED_DEFINITION') | (
    'AUTOMOTIVE_DESIGN.' + 'GENERAL_PROPERTY' IN TYPEOF(gpa.base_definition)
    ) AND (gpa.base_definition.name = 'surface_texture'))) = 1)) = 1);
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY hidden_element_over_riding_styled_item
SUBTYPE OF (context_dependent_over_riding_styled_item);
WHERE
  wr1 : SIZEOF(SELF.style_context) = 1;
  wr2 : 'AUTOMOTIVE_DESIGN.' + 'PRESENTATION_VIEW' IN TYPEOF(SELF.
    style_context[1]);
  wr3 : 'AUTOMOTIVE_DESIGN.' + 'CAMERA_IMAGE' IN TYPEOF(SELF.item);
  wr4 : 'AUTOMOTIVE_DESIGN.' + 'CAMERA_MODEL_D3_WITH_HLHSR' IN TYPEOF(SELF.
    item\mapped_item.mapping_source.mapping_origin);
  wr5 : SIZEOF(QUERY(rep <* USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.REPRESENTATION.ITEMS') | 'AUTOMOTIVE_DESIGN.' + 
    'PRESENTATION_VIEW' IN TYPEOF(rep))) > 0;
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY hole_bottom
SUBTYPE OF (shape_aspect);
WHERE
  wr1 : 'AUTOMOTIVE_DESIGN.' + 'FEATURE_COMPONENT_DEFINITION' IN TYPEOF(SELF
    .of_shape.definition);
  wr2 : SELF.description IN ['through', 'flat', 'flat with taper', 
    'flat with radius', 'spherical', 'conical'];
  wr3 : NOT (SELF.description IN ['through', 'flat']) OR (SIZEOF(
    get_shape_aspect_property_definition_representations(SELF)) = 0);
  wr4 : NOT (SELF.description IN ['flat with radius', 'flat with taper', 
    'spherical', 'conical']) OR (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | 
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation))) = 1);
  wr5 : (SELF.description <> 'flat with taper') OR (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(pdr.used_representation.items) = 2)))
     = 1);
  wr6 : (SELF.description <> 'conical') OR (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND {1 <= SIZEOF(pdr.used_representation.items)
     <= 2})) = 1);
  wr7 : NOT (SELF.description IN ['flat with radius', 'spherical']) OR (SIZEOF(
    QUERY(pdr <* get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(pdr.used_representation.items) = 1)))
     = 1);
  wr8 : (SELF.description <> 'flat with radius') OR (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'corner radius') AND (SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'MEASURE_REPRESENTATION_ITEM', 'AUTOMOTIVE_DESIGN.' + 
    'LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2))) = 1))) = 1);
  wr9 : (SELF.description <> 'spherical') OR (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'radius') AND (SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'MEASURE_REPRESENTATION_ITEM', 'AUTOMOTIVE_DESIGN.' + 
    'LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2))) = 1))) = 1);
  wr10 : (SELF.description <> 'conical') OR (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'tip radius') AND (SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'MEASURE_REPRESENTATION_ITEM', 'AUTOMOTIVE_DESIGN.' + 
    'LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2))) <= 1))) = 1);
  wr11 : (SELF.description <> 'conical') OR (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'tip angle') AND (SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'MEASURE_REPRESENTATION_ITEM', 'AUTOMOTIVE_DESIGN.' + 
    'PLANE_ANGLE_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2))) = 1))) = 1);
  wr12 : (SELF.description <> 'flat with taper') OR (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'final diameter') AND (SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'MEASURE_REPRESENTATION_ITEM', 'AUTOMOTIVE_DESIGN.' + 
    'LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2))) = 1))) = 1);
  wr13 : (SELF.description <> 'flat with taper') OR (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'taper diameter') AND (SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'MEASURE_REPRESENTATION_ITEM', 'AUTOMOTIVE_DESIGN.' + 
    'PLANE_ANGLE_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2))) = 1))) = 1);
  wr14 : SIZEOF(QUERY(sar <* USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') | (
    'AUTOMOTIVE_DESIGN.' + 'FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)) 
    AND (sar.description = 'hole bottom usage') AND (sar.related_shape_aspect.
    description = 'bottom condition occurrence'))) = 1;
  wr15 : (SELF.description = 'through') OR (SIZEOF(QUERY(sar <* USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') | (
    'AUTOMOTIVE_DESIGN.' + 'FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)) 
    AND (sar.name IN ['starting', 'ending']))) = 1);
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY hole_in_panel
SUBTYPE OF (feature_definition);
WHERE
  wr1 : SIZEOF(QUERY(sa <* get_shape_aspects(SELF) | (sa.name = 'hole profile')
     AND (sa.description = 'closed profile occurrence') AND (SIZEOF(QUERY(sar
     <* USEDIN(sa, 
    'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)) AND
     (sar.description = 'profile usage') AND (SIZEOF(['AUTOMOTIVE_DESIGN.'
     + 'CIRCULAR_CLOSED_PROFILE', 'AUTOMOTIVE_DESIGN.' + 
    'NGON_CLOSED_PROFILE', 'AUTOMOTIVE_DESIGN.' + 
    'RECTANGULAR_CLOSED_PROFILE', 'AUTOMOTIVE_DESIGN.' + 
    'CLOSED_PATH_PROFILE'] * TYPEOF(sar.relating_shape_aspect)) = 1))) = 1)))
     = 1;
  wr2 : SIZEOF(get_property_definition_representations(SELF)) = SIZEOF(QUERY(
    pdr <* get_property_definition_representations(SELF) | SIZEOF(pdr.
    used_representation.items) = 1));
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY homokinetic_pair
SUBTYPE OF (universal_pair);
WHERE
  wr1 : NOT EXISTS(SELF.input_skew_angle);
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY hyperbola
SUBTYPE OF (conic);
  semi_axis : positive_length_measure;
  semi_imag_axis : positive_length_measure;
END_ENTITY; -- 10303-42: geometry_schema
 
ENTITY id_attribute;
  attribute_value : identifier;
  identified_item : id_attribute_select;
END_ENTITY; -- 10303-41: basic_attribute_schema
 
ENTITY identification_assignment ABSTRACT SUPERTYPE;
  assigned_id : identifier;
  role : identification_role;
END_ENTITY; -- 10303-41: management_resources_schema
 
ENTITY identification_role;
  name : label;
  description :  OPTIONAL text;
END_ENTITY; -- 10303-41: management_resources_schema
 
ENTITY inclusion_product_concept_feature
SUBTYPE OF (conditional_concept_feature);
WHERE
  wr1 : NOT ('AUTOMOTIVE_DESIGN.' + 'PACKAGE_PRODUCT_CONCEPT_FEATURE' IN 
    TYPEOF(SELF));
  wr2 : SIZEOF(QUERY(cfr <* USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.CONCEPT_FEATURE_RELATIONSHIP.RELATING_PRODUCT_CONCEPT_FEATURE'
    ) | 'AUTOMOTIVE_DESIGN.' + 'CONCEPT_FEATURE_RELATIONSHIP_WITH_CONDITION'
     IN TYPEOF(cfr))) + SIZEOF(QUERY(cfr <* USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.CONCEPT_FEATURE_RELATIONSHIP.RELATED_PRODUCT_CONCEPT_FEATURE'
    ) | 'AUTOMOTIVE_DESIGN.' + 'CONCEPT_FEATURE_RELATIONSHIP_WITH_CONDITION'
     IN TYPEOF(cfr))) = 0;
  wr3 : SELF.condition.conditional_operator.name = 'implication';
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY index_expression
SUBTYPE OF (string_expression, binary_generic_expression);
DERIVE
  operand : generic_expression := SELF\binary_generic_expression.operands[1];
  index : generic_expression := SELF\binary_generic_expression.operands[2];
WHERE
  wr1 : ('AUTOMOTIVE_DESIGN.STRING_EXPRESSION' IN TYPEOF(operand)) AND (
    'AUTOMOTIVE_DESIGN.NUMERIC_EXPRESSION' IN TYPEOF(index));
  wr2 : is_int_expr(index);
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY initial_state;
  applies_to_mechanism : mechanism;
  pair_values : SET [1:?] OF pair_value;
WHERE
  wr1 : SIZEOF(QUERY(joint <* applies_to_mechanism.structure_definition.joints
     | SIZEOF(QUERY(init_val <* pair_values | init_val.applies_to_pair.joint
     :=: joint)) <> 1)) = 0;
END_ENTITY; -- 10303-105: kinematic_structure_schema
 
ENTITY instanced_feature
SUBTYPE OF (shape_aspect, feature_definition);
WHERE
  wr1 : 'AUTOMOTIVE_DESIGN.' + 'PRODUCT_DEFINITION' IN TYPEOF(SELF.of_shape.
    definition);
  wr2 : SELF.product_definitional;
  wr3 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'PLANAR_SHAPE_REPRESENTATION' IN TYPEOF(pdr.
    used_representation)) AND (pdr.used_representation.name = 
    'maximum feature limit'))) = 1;
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY int_literal
SUBTYPE OF (literal_number);
  SELF\literal_number.the_value : INTEGER;
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY int_numeric_variable
SUBTYPE OF (numeric_variable);
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY int_value_function
SUBTYPE OF (value_function);
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY integer_defined_function ABSTRACT SUPERTYPE
SUBTYPE OF (numeric_defined_function);
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY interpolated_configuration_sequence;
  interpolation : SET [1:?] OF configuration_interpolation;
END_ENTITY; -- 10303-105: kinematic_analysis_control_and_result_schema
 
ENTITY intersection_curve
SUBTYPE OF (surface_curve);
WHERE
  wr1 : SIZEOF(SELF\surface_curve.associated_geometry) = 2;
  wr2 : associated_surface(SELF\surface_curve.associated_geometry[1]) <> 
    associated_surface(SELF\surface_curve.associated_geometry[2]);
END_ENTITY; -- 10303-42: geometry_schema
 
ENTITY interval_expression
SUBTYPE OF (boolean_expression, multiple_arity_generic_expression);
DERIVE
  interval_low : generic_expression := SELF\multiple_arity_generic_expression.
  operands[1];
  interval_item : generic_expression := SELF\multiple_arity_generic_expression.
  operands[2];
  interval_high : generic_expression := SELF\multiple_arity_generic_expression.
  operands[3];
WHERE
  wr1 : ('AUTOMOTIVE_DESIGN.EXPRESSION' IN TYPEOF(interval_low)) AND (
    'AUTOMOTIVE_DESIGN.EXPRESSION' IN TYPEOF(interval_item)) AND (
    'AUTOMOTIVE_DESIGN.EXPRESSION' IN TYPEOF(interval_high));
  wr2 : ('AUTOMOTIVE_DESIGN.STRING_EXPRESSION' IN TYPEOF(SELF.interval_low))
     AND ('AUTOMOTIVE_DESIGN.STRING_EXPRESSION' IN TYPEOF(SELF.interval_high
    )) AND ('AUTOMOTIVE_DESIGN.STRING_EXPRESSION' IN TYPEOF(SELF.
    interval_item)) OR ('AUTOMOTIVE_DESIGN.STRING_EXPRESSION' IN TYPEOF(SELF
    .interval_low)) AND ('AUTOMOTIVE_DESIGN.NUMERIC_EXPRESSION' IN TYPEOF(
    SELF.interval_item)) AND ('AUTOMOTIVE_DESIGN.NUMERIC_EXPRESSION' IN 
    TYPEOF(SELF.interval_high));
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY invisibility;
  invisible_items : SET [1:?] OF invisible_item;
END_ENTITY; -- 10303-46: presentation_appearance_schema
 
ENTITY item_defined_transformation;
  name : label;
  description :  OPTIONAL text;
  transform_item_1 : representation_item;
  transform_item_2 : representation_item;
END_ENTITY; -- 10303-43: representation_schema
 
ENTITY item_identified_representation_usage;
  name : label;
  description :  OPTIONAL text;
  definition : represented_definition;
  used_representation : representation;
  identified_item : representation_item;
WHERE
  wr1 : SELF.used_representation IN using_representations(SELF.identified_item)
    ;
END_ENTITY; (* declared in: product_property_representation_schema *)
 
ENTITY joggle
SUBTYPE OF (feature_definition);
WHERE
  wr1 : SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND NOT ({5 <= SIZEOF(pdr.used_representation.
    items) <= 10}))) = 0;
  wr2 : SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | NOT (i.name IN ['orientation', 'base radius 1', 'base radius 2', 
    'direction angle 1', 'direction angle 2', 'height', 'slope angle 1',
    'slope angle 2', 'top radius 1', 'top radius 2']))) > 0))) = 0;
  wr3 : SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'direction angle 1') AND (SIZEOF(['AUTOMOTIVE_DESIGN.'
     + 'MEASURE_REPRESENTATION_ITEM', 'AUTOMOTIVE_DESIGN.' + 
    'PLANE_ANGLE_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2))) = 1))) = 1;
  wr4 : SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'direction angle 2') AND (SIZEOF(['AUTOMOTIVE_DESIGN.'
     + 'MEASURE_REPRESENTATION_ITEM', 'AUTOMOTIVE_DESIGN.' + 
    'PLANE_ANGLE_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2))) = 1))) = 1;
  wr5 : SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'height') AND (SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'MEASURE_REPRESENTATION_ITEM', 'AUTOMOTIVE_DESIGN.' + 
    'LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2))) = 1))) <= 1;
  wr6 : SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'slope angle 1') AND (SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'MEASURE_REPRESENTATION_ITEM', 'AUTOMOTIVE_DESIGN.' + 
    'PLANE_ANGLE_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2))) = 1))) = 1;
  wr7 : SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'slope angle 2') AND (SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'MEASURE_REPRESENTATION_ITEM', 'AUTOMOTIVE_DESIGN.' + 
    'PLANE_ANGLE_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2))) = 1))) = 1;
  wr8 : SIZEOF(QUERY(sa <* get_shape_aspects(SELF) | (sa.name = 'defining path'
    ) AND (sa.description = 'path feature component occurrence') AND (SIZEOF(
    QUERY(sar <* USEDIN(sa, 
    'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)) AND
     (sar.description = 'path feature component usage') AND (
    'AUTOMOTIVE_DESIGN.' + 'PATH_FEATURE_COMPONENT' IN TYPEOF(sar.
    relating_shape_aspect)) AND (sar.relating_shape_aspect.description = 
    'linear'))) = 1))) = 1;
  wr9 : SIZEOF(QUERY(sa <* get_shape_aspects(SELF) | (sa.name = 'termination') 
    AND (sa.description = 'joggle termination occurrence') AND (SIZEOF(QUERY(
    sar <* USEDIN(sa, 
    'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | (
    'AUTOMOTIVE_DESIGN.' + 'FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)) 
    AND (sar.name = 'joggle termination usage') AND ('AUTOMOTIVE_DESIGN.' + 
    'JOGGLE_TERMINATION' IN TYPEOF(sar.relating_shape_aspect)))) = 1))) = 1;
  wr10 : SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'base radius 1') AND (SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'MEASURE_REPRESENTATION_ITEM', 'AUTOMOTIVE_DESIGN.' + 
    'LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2))) = 1))) <= 1;
  wr11 : SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'base radius 2') AND (SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'MEASURE_REPRESENTATION_ITEM', 'AUTOMOTIVE_DESIGN.' + 
    'LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2))) = 1))) <= 1;
  wr12 : SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'top radius 1') AND (SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'MEASURE_REPRESENTATION_ITEM', 'AUTOMOTIVE_DESIGN.' + 
    'LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2))) = 1))) <= 1;
  wr13 : SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'top radius 2') AND (SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'MEASURE_REPRESENTATION_ITEM', 'AUTOMOTIVE_DESIGN.' + 
    'LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2))) = 1))) <= 1;
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY joggle_termination
SUBTYPE OF (shape_aspect);
WHERE
  wr1 : 'AUTOMOTIVE_DESIGN.' + 'FEATURE_COMPONENT_DEFINITION' IN TYPEOF(SELF
    .of_shape.definition);
  wr2 : SELF.description IN ['value termination', 'face termination'];
  wr3 : (SELF.description = 'value termination') XOR (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | 
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation))) = 0);
  wr4 : (SELF.description <> 'value termination') OR (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(pdr.used_representation.items) = 2)))
     = 1);
  wr5 : (SELF.description <> 'value termination') OR (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'depth') AND (SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'MEASURE_REPRESENTATION_ITEM', 'AUTOMOTIVE_DESIGN.' + 
    'LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2))) = 1))) = 1);
  wr6 : (SELF.description <> 'value termination') OR (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'angle') AND (SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'MEASURE_REPRESENTATION_ITEM', 'AUTOMOTIVE_DESIGN.' + 
    'PLANE_ANGLE_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2))) = 1))) = 1);
  wr7 : SIZEOF(QUERY(sar <* USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') | (
    'AUTOMOTIVE_DESIGN.' + 'FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)) 
    AND (sar.name = 'joggle termination usage') AND ('AUTOMOTIVE_DESIGN.' + 
    'JOGGLE' IN TYPEOF(sar.related_shape_aspect.of_shape.definition)) AND (sar.
    related_shape_aspect.of_shape.definition\characterized_object.name = 
    'termination') AND (sar.related_shape_aspect.of_shape.definition\
    characterized_object.description = 'joggle termination occurrence'))) = 1;
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY kinematic_analysis_consistency;
  control : kinematic_control;
  result : kinematic_analysis_result;
WHERE
  wr1 : control.controlled_mechanism :=: result.analysed_mechanism;
END_ENTITY; -- 10303-105: kinematic_analysis_control_and_result_schema
 
ENTITY kinematic_analysis_result;
  analysed_mechanism : mechanism;
  contained_kinematic_results : SET [1:?] OF kinematic_result;
WHERE
  wr1 : (SIZEOF(QUERY(result <* contained_kinematic_results | 
    'AUTOMOTIVE_DESIGN.RESULTING_PATH' IN TYPEOF(result))) > 0) XOR (SIZEOF(
    QUERY(result <* contained_kinematic_results | ('AUTOMOTIVE_DESIGN.' + 
    'INTERPOLATED_CONFIGURATION_SEQUENCE' IN TYPEOF(result)) AND (SIZEOF(QUERY(
    sequence <* result\interpolated_configuration_sequence.interpolation | 
    sequence.interpolation <> undefined)) > 0))) = 0);
END_ENTITY; -- 10303-105: kinematic_analysis_control_and_result_schema
 
ENTITY kinematic_control;
  controlled_mechanism : mechanism;
  contained_kinematic_programs : SET [1:?] OF kinematic_analysis_definition;
END_ENTITY; -- 10303-105: kinematic_analysis_control_and_result_schema
 
ENTITY kinematic_frame_background_representation
SUBTYPE OF (representation);
  SELF\representation.items : SET [1:?] OF kinematic_frame_background;
  SELF\representation.context_of_items : geometric_representation_context;
WHERE
  wr1 : SELF\representation.context_of_items\geometric_representation_context.
    coordinate_space_dimension = 3;
END_ENTITY; -- 10303-105: kinematic_structure_schema
 
ENTITY kinematic_frame_background_representation_association
SUBTYPE OF (representation_relationship_with_transformation);
  SELF\representation_relationship_with_transformation.transformation_operator
   : kinematic_frame_based_transformation;
WHERE
  wr1 : 'AUTOMOTIVE_DESIGN.KINEMATIC_LINK_REPRESENTATION' IN TYPEOF(SELF\
    representation_relationship.rep_1);
  wr2 : 'AUTOMOTIVE_DESIGN.KINEMATIC_FRAME_BACKGROUND_REPRESENTATION' IN 
    TYPEOF(SELF\representation_relationship.rep_2);
  wr3 : SELF\representation_relationship_with_transformation.
    transformation_operator\kinematic_frame_based_transformation.transformator 
    IN SELF\representation_relationship.rep_1.items;
END_ENTITY; -- 10303-105: kinematic_structure_schema
 
ENTITY kinematic_frame_based_transformation
SUBTYPE OF (geometric_representation_item, functionally_defined_transformation)
  ;
  transformator : rigid_placement;
WHERE
  wr1 : SELF\geometric_representation_item.dim = 3;
END_ENTITY; -- 10303-105: kinematic_structure_schema
 
ENTITY kinematic_ground_representation
SUBTYPE OF (representation);
INVERSE
  property : kinematic_property_representation_relation FOR used_representation
  ;
WHERE
  wr1 : 'AUTOMOTIVE_DESIGN.GEOMETRIC_REPRESENTATION_CONTEXT' IN TYPEOF(SELF\
    representation.context_of_items);
END_ENTITY; -- 10303-105: kinematic_structure_schema
 
ENTITY kinematic_joint;
  first_link : kinematic_link;
  second_link : kinematic_link;
INVERSE
  structure : kinematic_structure FOR joints;
WHERE
  wr1 : first_link :<>: second_link;
END_ENTITY; -- 10303-105: kinematic_structure_schema
 
ENTITY kinematic_link;
WHERE
  wr1 : SIZEOF(USEDIN(SELF, 'AUTOMOTIVE_DESIGN.KINEMATIC_JOINT.FIRST_LINK')
     + USEDIN(SELF, 'AUTOMOTIVE_DESIGN.KINEMATIC_JOINT.SECOND_LINK')) > 0;
  wr2 : unique_link_usage(SELF);
END_ENTITY; -- 10303-105: kinematic_structure_schema
 
ENTITY kinematic_link_representation
SUBTYPE OF (representation);
  SELF\representation.context_of_items : geometric_representation_context;
DERIVE
  link_frame : geometric_representation_context := SELF\representation.
  context_of_items;
INVERSE
  link_representation_relation : kinematic_link_representation_relation FOR 
  geometric_aspects;
WHERE
  wr1 : SIZEOF(QUERY(item <* SELF\representation.items | NOT ((
    'AUTOMOTIVE_DESIGN.RIGID_PLACEMENT' IN TYPEOF(item)) OR (
    'AUTOMOTIVE_DESIGN.CARTESIAN_TRANSFORMATION_OPERATOR_3D' IN TYPEOF(item)
    )))) = 0;
END_ENTITY; -- 10303-105: kinematic_structure_schema
 
ENTITY kinematic_link_representation_association
SUBTYPE OF (representation_relationship);
  SELF\representation_relationship.rep_1 : kinematic_link_representation;
WHERE
  wr1 : SELF\representation_relationship.rep_2.context_of_items :=: SELF\
    representation_relationship.rep_1\representation.context_of_items;
  wr2 : SIZEOF(['AUTOMOTIVE_DESIGN.KINEMATIC_GROUND_REPRESENTATION', 
    'AUTOMOTIVE_DESIGN.KINEMATIC_LINK_REPRESENTATION'] * TYPEOF(SELF\
    representation_relationship.rep_2)) = 0;
END_ENTITY; -- 10303-105: kinematic_structure_schema
 
ENTITY kinematic_link_representation_relation;
  topological_aspects : kinematic_link;
  geometric_aspects : kinematic_link_representation;
UNIQUE
  ur1 : topological_aspects;
END_ENTITY; -- 10303-105: kinematic_structure_schema
 
ENTITY kinematic_pair
SUBTYPE OF (item_defined_transformation);
  joint : kinematic_joint;
DERIVE
  pair_placement_in_first_link_context : rigid_placement := SELF\
  item_defined_transformation.transform_item_1;
  pair_placement_in_second_link_context : rigid_placement := SELF\
  item_defined_transformation.transform_item_2;
UNIQUE
  ur1 : joint;
WHERE
  wr1 : coordinated_pair_link_representation(joint.first_link, 
    pair_placement_in_first_link_context);
  wr2 : coordinated_pair_link_representation(joint.second_link, 
    pair_placement_in_second_link_context);
END_ENTITY; -- 10303-105: kinematic_structure_schema
 
ENTITY kinematic_path
SUBTYPE OF (representation_item);
END_ENTITY; -- 10303-105: kinematic_motion_representation_schema
 
ENTITY kinematic_property_definition
SUBTYPE OF (property_definition);
  ground_definition : characterized_definition;
END_ENTITY; -- 10303-105: kinematic_structure_schema
 
ENTITY kinematic_property_representation_relation
SUBTYPE OF (property_definition_representation);
UNIQUE
  ur1 : SELF\property_definition_representation.definition;
WHERE
  wr1 : 'AUTOMOTIVE_DESIGN.KINEMATIC_PROPERTY_DEFINITION' IN TYPEOF(SELF\
    property_definition_representation.definition);
  wr2 : 'AUTOMOTIVE_DESIGN.KINEMATIC_GROUND_REPRESENTATION' IN TYPEOF(SELF\
    property_definition_representation.used_representation);
END_ENTITY; -- 10303-105: kinematic_structure_schema
 
ENTITY kinematic_structure;
  joints : SET [1:?] OF kinematic_joint;
END_ENTITY; -- 10303-105: kinematic_structure_schema
 
ENTITY known_source
SUBTYPE OF (external_source, pre_defined_item);
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY language
SUBTYPE OF (group);
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY language_assignment
SUBTYPE OF (classification_assignment);
  items : SET [1:?] OF language_item;
WHERE
  wr1 : 'AUTOMOTIVE_DESIGN.' + 'LANGUAGE' IN TYPEOF(SELF.assigned_class);
  wr2 : SELF.role.name = 'language';
  wr3 : SIZEOF(SELF.items) = SIZEOF(QUERY(i <* SELF.items | (
    'AUTOMOTIVE_DESIGN.' + 'REPRESENTATION' IN TYPEOF(i)) AND (i\
    representation.name = 'document content')));
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY leader_curve
SUBTYPE OF (annotation_curve_occurrence);
WHERE
  wr1 : SIZEOF(QUERY(ldc <* USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.DRAUGHTING_CALLOUT.CONTENTS') | 
    'AUTOMOTIVE_DESIGN.' + 'LEADER_DIRECTED_CALLOUT' IN TYPEOF(ldc))) >= 1;
END_ENTITY; -- 10303-101: draughting_element_schema
 
ENTITY leader_directed_callout
SUBTYPE OF (draughting_callout);
WHERE
  wr1 : SIZEOF(QUERY(l_1 <* SELF\draughting_callout.contents | 
    'AUTOMOTIVE_DESIGN.LEADER_CURVE' IN TYPEOF(l_1))) >= 1;
  wr2 : SIZEOF(SELF\draughting_callout.contents) >= 2;
END_ENTITY; -- 10303-101: draughting_element_schema
 
ENTITY leader_directed_dimension
SUBTYPE OF (leader_directed_callout);
WHERE
  wr1 : SIZEOF(QUERY(con <* SELF.contents | 'AUTOMOTIVE_DESIGN.LEADER_CURVE'
     IN TYPEOF(con))) = 1;
END_ENTITY; -- 10303-506: aic_draughting_elements
 
ENTITY leader_terminator
SUBTYPE OF (terminator_symbol);
WHERE
  wr1 : 'AUTOMOTIVE_DESIGN.LEADER_CURVE' IN TYPEOF(SELF\terminator_symbol.
    annotated_curve);
END_ENTITY; -- 10303-101: draughting_element_schema
 
ENTITY length_function
SUBTYPE OF (numeric_expression, unary_generic_expression);
  SELF\unary_generic_expression.operand : string_expression;
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY length_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
  wr1 : 'AUTOMOTIVE_DESIGN.LENGTH_UNIT' IN TYPEOF(SELF\measure_with_unit.
    unit_component);
END_ENTITY; -- 10303-41: measure_schema
 
ENTITY length_unit
SUBTYPE OF (named_unit);
WHERE
  wr1 : (SELF\named_unit.dimensions.length_exponent = 1.000000) AND (SELF\
    named_unit.dimensions.mass_exponent = 0.000000) AND (SELF\named_unit
    .dimensions.time_exponent = 0.000000) AND (SELF\named_unit.dimensions.
    electric_current_exponent = 0.000000) AND (SELF\named_unit.dimensions.
    thermodynamic_temperature_exponent = 0.000000) AND (SELF\named_unit.
    dimensions.amount_of_substance_exponent = 0.000000) AND (SELF\named_unit.
    dimensions.luminous_intensity_exponent = 0.000000);
END_ENTITY; -- 10303-41: measure_schema
 
ENTITY light_source
SUPERTYPE OF (ONEOF (light_source_ambient, light_source_directional, 
light_source_positional, light_source_spot))
SUBTYPE OF (geometric_representation_item);
  light_colour : colour;
WHERE
  wr1 : SIZEOF(USEDIN(SELF, 'AUTOMOTIVE_DESIGN.STYLED_ITEM.ITEM')) = 0;
END_ENTITY; -- 10303-46: presentation_organization_schema
 
ENTITY light_source_ambient
SUBTYPE OF (light_source);
END_ENTITY; -- 10303-46: presentation_organization_schema
 
ENTITY light_source_directional
SUBTYPE OF (light_source);
  orientation : direction;
END_ENTITY; -- 10303-46: presentation_organization_schema
 
ENTITY light_source_positional
SUBTYPE OF (light_source);
  position : cartesian_point;
  constant_attenuation : REAL;
  distance_attenuation : REAL;
END_ENTITY; -- 10303-46: presentation_organization_schema
 
ENTITY light_source_spot
SUBTYPE OF (light_source);
  position : cartesian_point;
  orientation : direction;
  concentration_exponent : REAL;
  constant_attenuation : REAL;
  distance_attenuation : REAL;
  spread_angle : positive_plane_angle_measure;
END_ENTITY; -- 10303-46: presentation_organization_schema
 
ENTITY like_expression
SUBTYPE OF (comparison_expression);
WHERE
  wr1 : ('AUTOMOTIVE_DESIGN.STRING_EXPRESSION' IN TYPEOF(SELF\
    comparison_expression.operands[1])) AND (
    'AUTOMOTIVE_DESIGN.STRING_EXPRESSION' IN TYPEOF(SELF\
    comparison_expression.operands[2]));
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY limits_and_fits;
  form_variance : label;
  zone_variance : label;
  grade : label;
  source : text;
END_ENTITY; -- 10303-47: shape_tolerance_schema
 
ENTITY line
SUBTYPE OF (curve);
  pnt : cartesian_point;
  dir : vector;
WHERE
  wr1 : dir.dim = pnt.dim;
END_ENTITY; -- 10303-42: geometry_schema
 
ENTITY line_profile_tolerance
SUBTYPE OF (geometric_tolerance);
WHERE
  wr1 : NOT ('AUTOMOTIVE_DESIGN.' + 
    'GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE' IN TYPEOF(SELF)) OR (SIZEOF(SELF
    \geometric_tolerance_with_datum_reference.datum_system) <= 3);
  wr2 : SIZEOF(QUERY(sar <* USEDIN(SELF\geometric_tolerance.
    toleranced_shape_aspect, 
    'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') | 
    sar.name IN ['affected plane association', 
    'resulting intersection curve association'])) = 1;
END_ENTITY; -- 10303-519: aic_geometric_tolerances
 
ENTITY linear_dimension
SUBTYPE OF (dimension_curve_directed_callout);
END_ENTITY; -- 10303-506: aic_draughting_elements
 
ENTITY literal_number
ABSTRACT SUPERTYPE OF (ONEOF (int_literal, real_literal))
SUBTYPE OF (simple_numeric_expression, generic_literal);
  the_value : NUMBER;
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY local_time;
  hour_component : hour_in_day;
  minute_component :  OPTIONAL minute_in_hour;
  second_component :  OPTIONAL second_in_minute;
  zone : coordinated_universal_time_offset;
WHERE
  wr1 : valid_time(SELF);
END_ENTITY; -- 10303-41: date_time_schema
 
ENTITY location_shape_representation
SUBTYPE OF (shape_representation);
WHERE
  wr1 : SIZEOF(SELF.items) = 1;
  wr2 : SIZEOF(QUERY(i <* SELF.items | 'AUTOMOTIVE_DESIGN.' + 'POINT' IN 
    TYPEOF(i))) = 1;
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY locator
SUBTYPE OF (feature_definition);
WHERE
  wr1 : SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND NOT ({2 <= SIZEOF(pdr.used_representation.
    items) <= 5}))) = 0;
  wr2 : SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'diameter') AND (SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'MEASURE_REPRESENTATION_ITEM', 'AUTOMOTIVE_DESIGN.' + 
    'LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2))) = 1))) = 1;
  wr3 : SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'tip radius') AND (SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'MEASURE_REPRESENTATION_ITEM', 'AUTOMOTIVE_DESIGN.' + 
    'LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2))) = 1))) <= 1;
  wr4 : SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'tip angle') AND (SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'MEASURE_REPRESENTATION_ITEM', 'AUTOMOTIVE_DESIGN.' + 
    'PLANE_ANGLE_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2))) = 1))) = 1;
  wr5 : SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'base radius') AND (SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'MEASURE_REPRESENTATION_ITEM', 'AUTOMOTIVE_DESIGN.' + 
    'LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2))) = 1))) <= 1;
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY log10_function
SUBTYPE OF (unary_function_call);
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY log2_function
SUBTYPE OF (unary_function_call);
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY log_function
SUBTYPE OF (unary_function_call);
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY loop
SUPERTYPE OF (ONEOF (vertex_loop, edge_loop, poly_loop))
SUBTYPE OF (topological_representation_item);
END_ENTITY; -- 10303-42: topology_schema
 
ENTITY lot_effectivity
SUBTYPE OF (effectivity);
  effectivity_lot_id : identifier;
  effectivity_lot_size : measure_with_unit;
END_ENTITY; -- 10303-41: effectivity_schema
 
ENTITY luminous_intensity_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
  wr1 : 'AUTOMOTIVE_DESIGN.LUMINOUS_INTENSITY_UNIT' IN TYPEOF(SELF\
    measure_with_unit.unit_component);
END_ENTITY; -- 10303-41: measure_schema
 
ENTITY luminous_intensity_unit
SUBTYPE OF (named_unit);
WHERE
  wr1 : (SELF\named_unit.dimensions.length_exponent = 0.000000) AND (SELF\
    named_unit.dimensions.mass_exponent = 0.000000) AND (SELF\named_unit
    .dimensions.time_exponent = 0.000000) AND (SELF\named_unit.dimensions.
    electric_current_exponent = 0.000000) AND (SELF\named_unit.dimensions.
    thermodynamic_temperature_exponent = 0.000000) AND (SELF\named_unit.
    dimensions.amount_of_substance_exponent = 0.000000) AND (SELF\named_unit.
    dimensions.luminous_intensity_exponent = 1.000000);
END_ENTITY; -- 10303-41: measure_schema
 
ENTITY make_from_usage_option
SUBTYPE OF (product_definition_usage);
  ranking : INTEGER;
  ranking_rationale : text;
  quantity : measure_with_unit;
WHERE
  wr1 : NOT ('NUMBER' IN TYPEOF(quantity.value_component)) OR (quantity.
    value_component > 0);
END_ENTITY; -- 10303-44: product_structure_schema
 
ENTITY manifold_solid_brep
SUBTYPE OF (solid_model);
  outer : closed_shell;
END_ENTITY; -- 10303-42: geometric_model_schema
 
ENTITY manifold_subsurface_shape_representation
SUBTYPE OF (shape_representation);
WHERE
  wr1 : SIZEOF(QUERY(it <* SELF.items | NOT (SIZEOF([
    'AUTOMOTIVE_DESIGN.CONNECTED_FACE_SUB_SET', 
    'AUTOMOTIVE_DESIGN.MAPPED_ITEM', 
    'AUTOMOTIVE_DESIGN.AXIS2_PLACEMENT_3D'] * TYPEOF(it)) = 1))) = 0;
  wr2 : SIZEOF(QUERY(it <* SELF.items | SIZEOF([
    'AUTOMOTIVE_DESIGN.CONNECTED_FACE_SUB_SET', 
    'AUTOMOTIVE_DESIGN.MAPPED_ITEM'] * TYPEOF(it)) = 1)) > 0;
  wr3 : SIZEOF(QUERY(mi <* QUERY(it <* items | 
    'AUTOMOTIVE_DESIGN.MAPPED_ITEM' IN TYPEOF(it)) | NOT (
    'AUTOMOTIVE_DESIGN.MANIFOLD_SUBSURFACE_SHAPE_REPRESENTATION' IN TYPEOF(
    mi\mapped_item.mapping_source.mapped_representation)))) = 0;
  wr4 : SIZEOF(QUERY(cfss <* QUERY(it <* SELF.items | 
    'AUTOMOTIVE_DESIGN.CONNECTED_FACE_SUB_SET' IN TYPEOF(it)) | NOT (
    'AUTOMOTIVE_DESIGN.OPEN_SHELL' IN TYPEOF(cfss)))) = 0;
  wr5 : SIZEOF(QUERY(cfss <* QUERY(it <* SELF.items | 
    'AUTOMOTIVE_DESIGN.CONNECTED_FACE_SUB_SET' IN TYPEOF(it)) | NOT ((
    'AUTOMOTIVE_DESIGN.CONNECTED_FACE_SUB_SET' IN TYPEOF(cfss.
    parent_face_set)) AND (SIZEOF(QUERY(fac <* cfss.parent_face_set.cfs_faces
     | NOT advanced_face_properties(fac))) = 0) OR (SIZEOF(QUERY(fac <* cfss.
    parent_face_set.cfs_faces | NOT ('AUTOMOTIVE_DESIGN.ADVANCED_FACE' IN 
    TYPEOF(fac)))) = 0)))) = 0;
  wr6 : SIZEOF(QUERY(cfss <* QUERY(it <* SELF.items | 
    'AUTOMOTIVE_DESIGN.CONNECTED_FACE_SUB_SET' IN TYPEOF(it)) | SIZEOF(
    QUERY(fac <* cfss\connected_face_set.cfs_faces | NOT 
    advanced_face_properties(fac))) = 0)) = 0;
  wr7 : SIZEOF(QUERY(cfss <* QUERY(it <* SELF.items | 
    'AUTOMOTIVE_DESIGN.CONNECTED_FACE_SUB_SET' IN TYPEOF(it)) | NOT (SIZEOF(
    QUERY(fcs <* cfss\connected_face_set.cfs_faces | (
    'AUTOMOTIVE_DESIGN.SUBFACE' IN TYPEOF(fcs)) AND NOT (SIZEOF(QUERY(
    elp_fbnds <* QUERY(bnds <* fcs.bounds | 'AUTOMOTIVE_DESIGN.EDGE_LOOP' IN
     TYPEOF(bnds.bound)) | NOT (SIZEOF(QUERY(oe <* elp_fbnds.bound\path.
    edge_list | NOT (('AUTOMOTIVE_DESIGN.EDGE_CURVE' IN TYPEOF(oe.
    edge_element)) OR ('AUTOMOTIVE_DESIGN.SUBEDGE' IN TYPEOF(oe.edge_element
    ))))) = 0))) = 0))) = 0))) = 0;
  wr8 : SIZEOF(QUERY(cfss <* QUERY(it <* SELF.items | 
    'AUTOMOTIVE_DESIGN.CONNECTED_FACE_SUB_SET' IN TYPEOF(it)) | NOT (SIZEOF(
    QUERY(fcs <* cfss\connected_face_set.cfs_faces | (
    'AUTOMOTIVE_DESIGN.SUBFACE' IN TYPEOF(fcs)) AND NOT (SIZEOF(QUERY(
    elp_fbnds <* QUERY(bnds <* fcs.bounds | 'AUTOMOTIVE_DESIGN.EDGE_LOOP' IN
     TYPEOF(bnds.bound)) | NOT (SIZEOF(QUERY(oe <* elp_fbnds.bound\path.
    edge_list | NOT (('AUTOMOTIVE_DESIGN.VERTEX_POINT' IN TYPEOF(oe.
    edge_start)) AND ('AUTOMOTIVE_DESIGN.VERTEX_POINT' IN TYPEOF(oe.edge_end
    ))))) = 0))) = 0))) = 0))) = 0;
  wr9 : SIZEOF(QUERY(cfss <* QUERY(it <* SELF.items | 
    'AUTOMOTIVE_DESIGN.CONNECTED_FACE_SUB_SET' IN TYPEOF(it)) | NOT (SIZEOF(
    QUERY(fcs <* cfss\connected_face_set.cfs_faces | (
    'AUTOMOTIVE_DESIGN.SUBFACE' IN TYPEOF(fcs)) AND NOT (SIZEOF(QUERY(bnds
     <* fcs.bounds | NOT (SIZEOF(['AUTOMOTIVE_DESIGN.EDGE_LOOP', 
    'AUTOMOTIVE_DESIGN.VERTEX_LOOP'] * TYPEOF(bnds.bound)) = 1))) = 0))) = 0
    ))) = 0;
  wr10 : SIZEOF(QUERY(cfss <* QUERY(it <* SELF.items | 
    'AUTOMOTIVE_DESIGN.CONNECTED_FACE_SUB_SET' IN TYPEOF(it)) | NOT (SIZEOF(
    QUERY(fcs <* cfss\connected_face_set.cfs_faces | (
    'AUTOMOTIVE_DESIGN.SUBFACE' IN TYPEOF(fcs)) AND NOT (SIZEOF(QUERY(
    elp_fbnds <* QUERY(bnds <* fcs.bounds | 'AUTOMOTIVE_DESIGN.EDGE_LOOP' IN
     TYPEOF(bnds.bound)) | NOT (SIZEOF(QUERY(oe <* elp_fbnds.bound\path.
    edge_list | NOT (SIZEOF(['AUTOMOTIVE_DESIGN.LINE', 
    'AUTOMOTIVE_DESIGN.CONIC', 'AUTOMOTIVE_DESIGN.POLYLINE', 
    'AUTOMOTIVE_DESIGN.SURFACE_CURVE', 'AUTOMOTIVE_DESIGN.B_SPLINE_CURVE'
    ] * TYPEOF(oe.edge_element\edge_curve.edge_geometry)) = 1))) = 0))) = 0)))
     = 0))) = 0;
  wr11 : SIZEOF(QUERY(cfss <* QUERY(it <* SELF.items | 
    'AUTOMOTIVE_DESIGN.CONNECTED_FACE_SUB_SET' IN TYPEOF(it)) | NOT (SIZEOF(
    QUERY(fcs <* cfss\connected_face_set.cfs_faces | (
    'AUTOMOTIVE_DESIGN.SUBFACE' IN TYPEOF(fcs)) AND NOT (SIZEOF(QUERY(
    elp_fbnds <* QUERY(bnds <* fcs.bounds | 'AUTOMOTIVE_DESIGN.EDGE_LOOP' IN
     TYPEOF(bnds.bound)) | NOT (SIZEOF(QUERY(oe <* elp_fbnds.bound\path.
    edge_list | ('AUTOMOTIVE_DESIGN.SURFACE_CURVE' IN TYPEOF(oe.edge_element
    \edge_curve.edge_geometry)) AND NOT (SIZEOF(QUERY(sc_ag <* oe.edge_element\
    edge_curve.edge_geometry\surface_curve.associated_geometry | NOT (
    'AUTOMOTIVE_DESIGN.PCURVE' IN TYPEOF(sc_ag)))) = 0))) = 0))) = 0))) = 0)
    )) = 0;
  wr12 : SIZEOF(QUERY(cfss <* QUERY(it <* SELF.items | 
    'AUTOMOTIVE_DESIGN.CONNECTED_FACE_SUB_SET' IN TYPEOF(it)) | NOT (SIZEOF(
    QUERY(fcs <* cfss\connected_face_set.cfs_faces | (
    'AUTOMOTIVE_DESIGN.SUBFACE' IN TYPEOF(fcs)) AND NOT (SIZEOF(QUERY(
    elp_fbnds <* QUERY(bnds <* fcs.bounds | 'AUTOMOTIVE_DESIGN.EDGE_LOOP' IN
     TYPEOF(bnds.bound)) | NOT (SIZEOF(QUERY(oe <* elp_fbnds.bound\path.
    edge_list | ('AUTOMOTIVE_DESIGN.POLYLINE' IN TYPEOF(oe.edge_element\
    edge_curve.edge_geometry)) AND NOT (SIZEOF(oe\oriented_edge.edge_element\
    edge_curve.edge_geometry\polyline.points) >= 3))) = 0))) = 0))) = 0))) = 0;
END_ENTITY; -- 10303-521: aic_manifold_subsurface
 
ENTITY manifold_surface_shape_representation
SUBTYPE OF (shape_representation);
WHERE
  wr1 : SIZEOF(QUERY(it <* SELF.items | NOT (SIZEOF([
    'AUTOMOTIVE_DESIGN.SHELL_BASED_SURFACE_MODEL', 
    'AUTOMOTIVE_DESIGN.MAPPED_ITEM', 
    'AUTOMOTIVE_DESIGN.AXIS2_PLACEMENT_3D'] * TYPEOF(it)) = 1))) = 0;
  wr2 : SIZEOF(QUERY(it <* SELF.items | SIZEOF([
    'AUTOMOTIVE_DESIGN.SHELL_BASED_SURFACE_MODEL', 
    'AUTOMOTIVE_DESIGN.MAPPED_ITEM'] * TYPEOF(it)) = 1)) > 0;
  wr3 : SIZEOF(QUERY(mi <* QUERY(it <* SELF.items | 
    'AUTOMOTIVE_DESIGN.MAPPED_ITEM' IN TYPEOF(it)) | NOT ((
    'AUTOMOTIVE_DESIGN.MANIFOLD_SURFACE_SHAPE_REPRESENTATION' IN TYPEOF(mi\
    mapped_item.mapping_source.mapped_representation)) AND (SIZEOF(QUERY(mr_it
     <* mi\mapped_item.mapping_source.mapped_representation.items | 
    'AUTOMOTIVE_DESIGN.SHELL_BASED_SURFACE_MODEL' IN TYPEOF(mr_it))) > 0))))
     = 0;
  wr4 : SIZEOF(QUERY(sbsm <* QUERY(it <* SELF.items | 
    'AUTOMOTIVE_DESIGN.SHELL_BASED_SURFACE_MODEL' IN TYPEOF(it)) | NOT (
    SIZEOF(QUERY(sh <* sbsm\shell_based_surface_model.sbsm_boundary | NOT (
    SIZEOF(['AUTOMOTIVE_DESIGN.OPEN_SHELL', 
    'AUTOMOTIVE_DESIGN.ORIENTED_CLOSED_SHELL', 
    'AUTOMOTIVE_DESIGN.CLOSED_SHELL'] * TYPEOF(sh)) = 1))) = 0))) = 0;
  wr5 : SIZEOF(QUERY(sbsm <* QUERY(it <* SELF.items | 
    'AUTOMOTIVE_DESIGN.SHELL_BASED_SURFACE_MODEL' IN TYPEOF(it)) | NOT (
    SIZEOF(QUERY(cfs <* sbsm\shell_based_surface_model.sbsm_boundary | NOT (
    SIZEOF(QUERY(fa <* cfs\connected_face_set.cfs_faces | NOT (
    'AUTOMOTIVE_DESIGN.FACE_SURFACE' IN TYPEOF(fa)))) = 0))) = 0))) = 0;
  wr6 : SIZEOF(QUERY(sbsm <* QUERY(it <* SELF.items | 
    'AUTOMOTIVE_DESIGN.SHELL_BASED_SURFACE_MODEL' IN TYPEOF(it)) | NOT (
    SIZEOF(QUERY(cfs <* sbsm\shell_based_surface_model.sbsm_boundary | NOT (
    SIZEOF(QUERY(fa <* cfs\connected_face_set.cfs_faces | NOT ((
    'AUTOMOTIVE_DESIGN.ADVANCED_FACE' IN TYPEOF(fa)) OR msf_surface_check(fa
    \face_surface.face_geometry)))) = 0))) = 0))) = 0;
  wr7 : SIZEOF(QUERY(sbsm <* QUERY(it <* SELF.items | 
    'AUTOMOTIVE_DESIGN.SHELL_BASED_SURFACE_MODEL' IN TYPEOF(it)) | NOT (
    SIZEOF(QUERY(cfs <* sbsm\shell_based_surface_model.sbsm_boundary | NOT (
    SIZEOF(QUERY(fa <* cfs\connected_face_set.cfs_faces | NOT ((
    'AUTOMOTIVE_DESIGN.ADVANCED_FACE' IN TYPEOF(fa)) OR (SIZEOF(QUERY(bnds
     <* fa.bounds | NOT (SIZEOF(['AUTOMOTIVE_DESIGN.EDGE_LOOP', 
    'AUTOMOTIVE_DESIGN.VERTEX_LOOP'] * TYPEOF(bnds.bound)) = 1))) = 0)))) = 
    0))) = 0))) = 0;
  wr8 : SIZEOF(QUERY(sbsm <* QUERY(it <* SELF.items | 
    'AUTOMOTIVE_DESIGN.SHELL_BASED_SURFACE_MODEL' IN TYPEOF(it)) | NOT (
    SIZEOF(QUERY(cfs <* sbsm\shell_based_surface_model.sbsm_boundary | NOT (
    SIZEOF(QUERY(fa <* cfs\connected_face_set.cfs_faces | NOT ((
    'AUTOMOTIVE_DESIGN.ADVANCED_FACE' IN TYPEOF(fa)) OR (SIZEOF(QUERY(
    elp_fbnds <* QUERY(bnds <* fa.bounds | 'AUTOMOTIVE_DESIGN.EDGE_LOOP' IN 
    TYPEOF(bnds.bound)) | NOT (SIZEOF(QUERY(oe <* elp_fbnds\path.edge_list | 
    NOT ('AUTOMOTIVE_DESIGN.EDGE_CURVE' IN TYPEOF(oe.edge_element)))) = 0)))
     = 0)))) = 0))) = 0))) = 0;
  wr9 : SIZEOF(QUERY(sbsm <* QUERY(it <* SELF.items | 
    'AUTOMOTIVE_DESIGN.SHELL_BASED_SURFACE_MODEL' IN TYPEOF(it)) | NOT (
    SIZEOF(QUERY(cfs <* sbsm\shell_based_surface_model.sbsm_boundary | NOT (
    SIZEOF(QUERY(fa <* cfs\connected_face_set.cfs_faces | NOT ((
    'AUTOMOTIVE_DESIGN.ADVANCED_FACE' IN TYPEOF(fa)) OR (SIZEOF(QUERY(
    elp_fbnds <* QUERY(bnds <* fa.bounds | 'AUTOMOTIVE_DESIGN.EDGE_LOOP' IN 
    TYPEOF(bnds.bound)) | NOT (SIZEOF(QUERY(oe_cv <* QUERY(oe <* elp_fbnds\path
    .edge_list | 'AUTOMOTIVE_DESIGN.EDGE_CURVE' IN TYPEOF(oe.edge_element))
     | NOT (SIZEOF(['AUTOMOTIVE_DESIGN.B_SPLINE_CURVE', 
    'AUTOMOTIVE_DESIGN.CONIC', 'AUTOMOTIVE_DESIGN.CURVE_REPLICA', 
    'AUTOMOTIVE_DESIGN.LINE', 'AUTOMOTIVE_DESIGN.OFFSET_CURVE_3D', 
    'AUTOMOTIVE_DESIGN.PCURVE', 'AUTOMOTIVE_DESIGN.POLYLINE', 
    'AUTOMOTIVE_DESIGN.SURFACE_CURVE'] * TYPEOF(oe_cv.edge_element\
    edge_curve.edge_geometry)) = 1))) = 0))) = 0)))) = 0))) = 0))) = 0;
  wr10 : SIZEOF(QUERY(sbsm <* QUERY(it <* SELF.items | 
    'AUTOMOTIVE_DESIGN.SHELL_BASED_SURFACE_MODEL' IN TYPEOF(it)) | NOT (
    SIZEOF(QUERY(cfs <* sbsm\shell_based_surface_model.sbsm_boundary | NOT (
    SIZEOF(QUERY(fa <* cfs\connected_face_set.cfs_faces | NOT ((
    'AUTOMOTIVE_DESIGN.ADVANCED_FACE' IN TYPEOF(fa)) OR (SIZEOF(QUERY(
    elp_fbnds <* QUERY(bnds <* fa.bounds | 'AUTOMOTIVE_DESIGN.EDGE_LOOP' IN 
    TYPEOF(bnds.bound)) | NOT (SIZEOF(QUERY(oe <* elp_fbnds\path.edge_list | 
    NOT msf_curve_check(oe.edge_element\edge_curve.edge_geometry))) = 0))) = 0)
    ))) = 0))) = 0))) = 0;
  wr11 : SIZEOF(QUERY(sbsm <* QUERY(it <* SELF.items | 
    'AUTOMOTIVE_DESIGN.SHELL_BASED_SURFACE_MODEL' IN TYPEOF(it)) | NOT (
    SIZEOF(QUERY(cfs <* sbsm\shell_based_surface_model.sbsm_boundary | NOT (
    SIZEOF(QUERY(fa <* cfs\connected_face_set.cfs_faces | NOT ((
    'AUTOMOTIVE_DESIGN.ADVANCED_FACE' IN TYPEOF(fa)) OR (SIZEOF(QUERY(
    elp_fbnds <* QUERY(bnds <* fa.bounds | 'AUTOMOTIVE_DESIGN.EDGE_LOOP' IN 
    TYPEOF(bnds.bound)) | NOT (SIZEOF(QUERY(oe <* elp_fbnds\path.edge_list | 
    NOT (('AUTOMOTIVE_DESIGN.VERTEX_POINT' IN TYPEOF(oe.edge_element.
    edge_start)) AND ('AUTOMOTIVE_DESIGN.VERTEX_POINT' IN TYPEOF(oe.
    edge_element.edge_end))))) = 0))) = 0)))) = 0))) = 0))) = 0;
  wr12 : SIZEOF(QUERY(sbsm <* QUERY(it <* SELF.items | 
    'AUTOMOTIVE_DESIGN.SHELL_BASED_SURFACE_MODEL' IN TYPEOF(it)) | NOT (
    SIZEOF(QUERY(cfs <* sbsm\shell_based_surface_model.sbsm_boundary | NOT (
    SIZEOF(QUERY(fa <* cfs\connected_face_set.cfs_faces | NOT ((
    'AUTOMOTIVE_DESIGN.ADVANCED_FACE' IN TYPEOF(fa)) OR (SIZEOF(QUERY(
    elp_fbnds <* QUERY(bnds <* fa.bounds | 'AUTOMOTIVE_DESIGN.EDGE_LOOP' IN 
    TYPEOF(bnds.bound)) | NOT (SIZEOF(QUERY(oe <* elp_fbnds\path.edge_list | 
    NOT ((SIZEOF(['AUTOMOTIVE_DESIGN.CARTESIAN_POINT', 
    'AUTOMOTIVE_DESIGN.DEGENERATE_PCURVE', 
    'AUTOMOTIVE_DESIGN.POINT_ON_CURVE', 
    'AUTOMOTIVE_DESIGN.POINT_ON_SURFACE'] * TYPEOF(oe.edge_element.
    edge_start\vertex_point.vertex_geometry)) = 1) AND (SIZEOF([
    'AUTOMOTIVE_DESIGN.CARTESIAN_POINT', 
    'AUTOMOTIVE_DESIGN.DEGENERATE_PCURVE', 
    'AUTOMOTIVE_DESIGN.POINT_ON_CURVE', 
    'AUTOMOTIVE_DESIGN.POINT_ON_SURFACE'] * TYPEOF(oe.edge_element.edge_end\
    vertex_point.vertex_geometry)) = 1)))) = 0))) = 0)))) = 0))) = 0))) = 0;
  wr13 : SIZEOF(QUERY(sbsm <* QUERY(it <* SELF.items | 
    'AUTOMOTIVE_DESIGN.SHELL_BASED_SURFACE_MODEL' IN TYPEOF(it)) | NOT (
    SIZEOF(QUERY(cfs <* sbsm\shell_based_surface_model.sbsm_boundary | NOT (
    SIZEOF(QUERY(fa <* cfs\connected_face_set.cfs_faces | NOT ((
    'AUTOMOTIVE_DESIGN.ADVANCED_FACE' IN TYPEOF(fa)) OR (SIZEOF(QUERY(
    vlp_fbnds <* QUERY(bnds <* fa.bounds | 'AUTOMOTIVE_DESIGN.VERTEX_LOOP' 
    IN TYPEOF(bnds.bound)) | NOT ('AUTOMOTIVE_DESIGN.VERTEX_POINT' IN TYPEOF
    (vlp_fbnds\vertex_loop.loop_vertex)))) = 0)))) = 0))) = 0))) = 0;
  wr14 : SIZEOF(QUERY(sbsm <* QUERY(it <* SELF.items | 
    'AUTOMOTIVE_DESIGN.SHELL_BASED_SURFACE_MODEL' IN TYPEOF(it)) | NOT (
    SIZEOF(QUERY(cfs <* sbsm\shell_based_surface_model.sbsm_boundary | NOT (
    SIZEOF(QUERY(fa <* cfs\connected_face_set.cfs_faces | NOT ((
    'AUTOMOTIVE_DESIGN.ADVANCED_FACE' IN TYPEOF(fa)) OR (SIZEOF(QUERY(
    vlp_fbnds <* QUERY(bnds <* fa.bounds | 'AUTOMOTIVE_DESIGN.VERTEX_LOOP' 
    IN TYPEOF(bnds.bound)) | NOT (SIZEOF([
    'AUTOMOTIVE_DESIGN.CARTESIAN_POINT', 
    'AUTOMOTIVE_DESIGN.DEGENERATE_PCURVE', 
    'AUTOMOTIVE_DESIGN.POINT_ON_CURVE', 
    'AUTOMOTIVE_DESIGN.POINT_ON_SURFACE'] * TYPEOF(vlp_fbnds\vertex_loop.
    loop_vertex\vertex_point.vertex_geometry)) = 1))) = 0)))) = 0))) = 0))) = 0
    ;
END_ENTITY; -- 10303-509: aic_manifold_surface
 
ENTITY mapped_item
SUBTYPE OF (representation_item);
  mapping_source : representation_map;
  mapping_target : representation_item;
WHERE
  wr1 : acyclic_mapped_representation(using_representations(SELF), [SELF]);
END_ENTITY; -- 10303-43: representation_schema
 
ENTITY mass_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
  wr1 : 'AUTOMOTIVE_DESIGN.MASS_UNIT' IN TYPEOF(SELF\measure_with_unit.
    unit_component);
END_ENTITY; -- 10303-41: measure_schema
 
ENTITY mass_unit
SUBTYPE OF (named_unit);
WHERE
  wr1 : (SELF\named_unit.dimensions.length_exponent = 0.000000) AND (SELF\
    named_unit.dimensions.mass_exponent = 1.000000) AND (SELF\named_unit
    .dimensions.time_exponent = 0.000000) AND (SELF\named_unit.dimensions.
    electric_current_exponent = 0.000000) AND (SELF\named_unit.dimensions.
    thermodynamic_temperature_exponent = 0.000000) AND (SELF\named_unit.
    dimensions.amount_of_substance_exponent = 0.000000) AND (SELF\named_unit.
    dimensions.luminous_intensity_exponent = 0.000000);
END_ENTITY; -- 10303-41: measure_schema
 
ENTITY material_designation;
  name : label;
  definitions : SET [1:?] OF characterized_definition;
END_ENTITY; -- 10303-45: material_property_definition_schema
 
ENTITY material_designation_characterization;
  name : label;
  description : text;
  designation : material_designation;
  property : characterized_material_property;
END_ENTITY; -- 10303-45: material_property_definition_schema
 
ENTITY material_property
SUBTYPE OF (property_definition);
UNIQUE
  ur1 : SELF\property_definition.name, SELF\property_definition.definition;
WHERE
  wr1 : ('AUTOMOTIVE_DESIGN.CHARACTERIZED_OBJECT' IN TYPEOF(SELF\
    property_definition.definition)) OR (SIZEOF(bag_to_set(USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')) - 
    QUERY(temp <* bag_to_set(USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')) | 
    'AUTOMOTIVE_DESIGN.' + 'MATERIAL_PROPERTY_REPRESENTATION' IN TYPEOF(temp
    ))) = 0);
END_ENTITY; -- 10303-45: material_property_definition_schema
 
ENTITY material_property_representation
SUBTYPE OF (property_definition_representation);
  dependent_environment : data_environment;
END_ENTITY; -- 10303-45: material_property_representation_schema
 
ENTITY maximum_function
SUBTYPE OF (multiple_arity_function_call);
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY measure_qualification;
  name : label;
  description : text;
  qualified_measure : measure_with_unit;
  qualifiers : SET [1:?] OF value_qualifier;
WHERE
  wr1 : SIZEOF(QUERY(temp <* qualifiers | 
    'AUTOMOTIVE_DESIGN.PRECISION_QUALIFIER' IN TYPEOF(temp))) < 2;
END_ENTITY; -- 10303-45: qualified_measure_schema
 
ENTITY measure_representation_item
SUBTYPE OF (representation_item, measure_with_unit);
END_ENTITY; -- 10303-45: qualified_measure_schema
 
ENTITY measure_with_unit
SUPERTYPE OF (ONEOF (length_measure_with_unit, mass_measure_with_unit, 
time_measure_with_unit, electric_current_measure_with_unit, 
thermodynamic_temperature_measure_with_unit, 
celsius_temperature_measure_with_unit, amount_of_substance_measure_with_unit, 
luminous_intensity_measure_with_unit, plane_angle_measure_with_unit, 
solid_angle_measure_with_unit, area_measure_with_unit, volume_measure_with_unit
, ratio_measure_with_unit));
  value_component : measure_value;
  unit_component : unit;
WHERE
  wr1 : valid_units(SELF);
END_ENTITY; -- 10303-41: measure_schema
 
ENTITY mechanical_design_geometric_presentation_area
SUBTYPE OF (presentation_area);
WHERE
  wr1 : SIZEOF(QUERY(it1 <* SELF.items | NOT ((
    'AUTOMOTIVE_DESIGN.AXIS2_PLACEMENT' IN TYPEOF(it1)) OR (
    'AUTOMOTIVE_DESIGN.MAPPED_ITEM' IN TYPEOF(it1)) AND (
    'AUTOMOTIVE_DESIGN.PRESENTATION_VIEW' IN TYPEOF(it1\mapped_item.
    mapping_source.mapped_representation))))) = 0;
  wr2 : SIZEOF(QUERY(pv <* QUERY(mi1 <* QUERY(it1 <* SELF.items | 
    'AUTOMOTIVE_DESIGN.MAPPED_ITEM' IN TYPEOF(it1)) | 
    'AUTOMOTIVE_DESIGN.PRESENTATION_VIEW' IN TYPEOF(mi1\mapped_item.
    mapping_source.mapped_representation)) | NOT (SIZEOF(QUERY(it2 <* pv\
    mapped_item.mapping_source.mapped_representation\representation.items | 
    NOT (('AUTOMOTIVE_DESIGN.AXIS2_PLACEMENT' IN TYPEOF(it2)) OR (
    'AUTOMOTIVE_DESIGN.MAPPED_ITEM' IN TYPEOF(it2)) AND NOT (
    'AUTOMOTIVE_DESIGN.' + 'CAMERA_IMAGE_3D_WITH_SCALE' IN TYPEOF(it2)) AND 
    NOT ('AUTOMOTIVE_DESIGN.PRESENTATION_VIEW' IN TYPEOF(it2\mapped_item.
    mapping_source.mapped_representation))) OR ('AUTOMOTIVE_DESIGN.' + 
    'CAMERA_IMAGE_3D_WITH_SCALE' IN TYPEOF(it2)) AND NOT (
    'AUTOMOTIVE_DESIGN.' + 
    'MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION' IN TYPEOF(it2\
    mapped_item.mapping_source.mapped_representation)))) = 0))) = 0;
  wr3 : (SIZEOF(QUERY(ps <* USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.PRESENTATION_SIZE.UNIT') | (ps.size\planar_extent.
    size_in_x <= 0) OR (ps.size\planar_extent.size_in_y <= 0))) = 0) AND (
    SIZEOF(QUERY(ais <* USEDIN(SELF, 'AUTOMOTIVE_DESIGN.AREA_IN_SET.AREA')
     | SIZEOF(QUERY(ps <* USEDIN(ais, 
    'AUTOMOTIVE_DESIGN.PRESENTATION_SIZE.UNIT') | (ps.size\planar_extent.
    size_in_x <= 0) OR (ps.size\planar_extent.size_in_y <= 0))) > 0)) = 0);
  wr4 : (SIZEOF(QUERY(ps <* USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.PRESENTATION_SIZE.UNIT') | 'AUTOMOTIVE_DESIGN.' + 
    'AXIS2_PLACEMENT_2D' IN TYPEOF(ps.size.placement))) = 1) AND (SIZEOF(QUERY(
    ps <* USEDIN(SELF, 'AUTOMOTIVE_DESIGN.PRESENTATION_SIZE.UNIT') | 
    'AUTOMOTIVE_DESIGN.' + 'AXIS2_PLACEMENT_3D' IN TYPEOF(ps.size.placement)
    )) = 0) OR (SIZEOF(QUERY(ais <* USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.AREA_IN_SET.AREA') | SIZEOF(QUERY(ps <* USEDIN(ais, 
    'AUTOMOTIVE_DESIGN.PRESENTATION_SIZE.UNIT') | 'AUTOMOTIVE_DESIGN.' + 
    'AXIS2_PLACEMENT_2D' IN TYPEOF(ps.size.placement))) = 1)) = 1) AND (SIZEOF(
    QUERY(ais <* USEDIN(SELF, 'AUTOMOTIVE_DESIGN.AREA_IN_SET.AREA') | SIZEOF
    (QUERY(ps <* USEDIN(ais, 'AUTOMOTIVE_DESIGN.PRESENTATION_SIZE.UNIT') | 
    'AUTOMOTIVE_DESIGN.' + 'AXIS2_PLACEMENT_3D' IN TYPEOF(ps.size.placement)
    )) = 0)) = 1);
END_ENTITY; -- 10303-517: aic_mechanical_design_geometric_presentation
 
ENTITY mechanical_design_geometric_presentation_representation
SUBTYPE OF (representation);
WHERE
  wr1 : SIZEOF(QUERY(it <* SELF.items | NOT (SIZEOF([
    'AUTOMOTIVE_DESIGN.MAPPED_ITEM', 'AUTOMOTIVE_DESIGN.STYLED_ITEM', 
    'AUTOMOTIVE_DESIGN.AXIS2_PLACEMENT', 
    'AUTOMOTIVE_DESIGN.CAMERA_MODEL_D3'] * TYPEOF(it)) = 1))) = 0;
  wr2 : SIZEOF(QUERY(mi <* QUERY(it <* SELF.items | 
    'AUTOMOTIVE_DESIGN.MAPPED_ITEM' IN TYPEOF(it)) | NOT (SIZEOF([
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION', 'AUTOMOTIVE_DESIGN.'
     + 'MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION'] * TYPEOF(mi\
    mapped_item.mapping_source.mapped_representation)) = 1))) = 0;
  wr3 : SIZEOF(QUERY(smi <* QUERY(si <* QUERY(it <* SELF.items | 
    'AUTOMOTIVE_DESIGN.STYLED_ITEM' IN TYPEOF(it)) | 
    'AUTOMOTIVE_DESIGN.MAPPED_ITEM' IN TYPEOF(si\styled_item.item)) | NOT (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION' IN TYPEOF(smi\styled_item.
    item\mapped_item.mapping_source.mapped_representation)))) = 0;
  wr4 : SIZEOF(QUERY(si <* QUERY(it <* SELF.items | 
    'AUTOMOTIVE_DESIGN.STYLED_ITEM' IN TYPEOF(it)) | NOT (SIZEOF(QUERY(psa
     <* si\styled_item.styles | NOT (SIZEOF(QUERY(pss <* psa.styles | NOT (
    SIZEOF(['AUTOMOTIVE_DESIGN.POINT_STYLE', 
    'AUTOMOTIVE_DESIGN.CURVE_STYLE', 
    'AUTOMOTIVE_DESIGN.SURFACE_STYLE_USAGE'] * TYPEOF(pss)) = 1))) = 0))) = 
    0))) = 0;
  wr5 : SIZEOF(QUERY(si <* QUERY(it <* SELF.items | 
    'AUTOMOTIVE_DESIGN.STYLED_ITEM' IN TYPEOF(it)) | NOT (SIZEOF(QUERY(psbc
     <* QUERY(psa <* si\styled_item.styles | 'AUTOMOTIVE_DESIGN.' + 
    'PRESENTATION_STYLE_BY_CONTEXT' IN TYPEOF(psa)) | NOT (SIZEOF([
    'AUTOMOTIVE_DESIGN.' + 'REPRESENTATION_ITEM', 
    'AUTOMOTIVE_DESIGN.REPRESENTATION'] * TYPEOF(psbc\
    presentation_style_by_context.style_context)) = 1))) = 0))) = 0;
  wr6 : SIZEOF(QUERY(si <* QUERY(it <* SELF.items | 
    'AUTOMOTIVE_DESIGN.STYLED_ITEM' IN TYPEOF(it)) | NOT (SIZEOF(QUERY(psa
     <* si\styled_item.styles | NOT (SIZEOF(QUERY(ps <* QUERY(pss <* psa.styles
     | 'AUTOMOTIVE_DESIGN.POINT_STYLE' IN TYPEOF(pss)) | NOT ((
    'AUTOMOTIVE_DESIGN.' + 'POSITIVE_LENGTH_MEASURE' IN TYPEOF(ps\
    point_style.marker_size)) AND (SIZEOF(['AUTOMOTIVE_DESIGN.COLOUR_RGB', 
    'AUTOMOTIVE_DESIGN.' + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF(ps\
    point_style.marker_colour)) = 1)))) = 0))) = 0))) = 0;
  wr7 : SIZEOF(QUERY(si <* QUERY(it <* SELF.items | 
    'AUTOMOTIVE_DESIGN.STYLED_ITEM' IN TYPEOF(it)) | NOT (SIZEOF(QUERY(psa
     <* si\styled_item.styles | NOT (SIZEOF(QUERY(cs <* QUERY(pss <* psa.styles
     | 'AUTOMOTIVE_DESIGN.CURVE_STYLE' IN TYPEOF(pss)) | NOT ((SIZEOF([
    'AUTOMOTIVE_DESIGN.COLOUR_RGB', 'AUTOMOTIVE_DESIGN.' + 
    'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF(cs\curve_style.curve_colour)) = 1
    ) AND ('AUTOMOTIVE_DESIGN.' + 'POSITIVE_LENGTH_MEASURE' IN TYPEOF(cs\
    curve_style.curve_width)) AND (SIZEOF([
    'AUTOMOTIVE_DESIGN.CURVE_STYLE_FONT', 'AUTOMOTIVE_DESIGN.' + 
    'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] * TYPEOF(cs\curve_style.curve_font))
     = 1)))) = 0))) = 0))) = 0;
  wr8 : SIZEOF(QUERY(si <* QUERY(it <* SELF.items | 
    'AUTOMOTIVE_DESIGN.STYLED_ITEM' IN TYPEOF(it)) | NOT (SIZEOF(QUERY(psa
     <* si\styled_item.styles | NOT (SIZEOF(QUERY(ssu <* QUERY(pss <* psa.
    styles | 'AUTOMOTIVE_DESIGN.SURFACE_STYLE_USAGE' IN TYPEOF(pss)) | NOT (
    'AUTOMOTIVE_DESIGN.' + 'SURFACE_SIDE_STYLE' IN TYPEOF(ssu\
    surface_style_usage.style)))) = 0))) = 0))) = 0;
  wr9 : SIZEOF(QUERY(si <* QUERY(it <* SELF.items | 
    'AUTOMOTIVE_DESIGN.STYLED_ITEM' IN TYPEOF(it)) | NOT (SIZEOF(QUERY(psa
     <* si\styled_item.styles | NOT (SIZEOF(QUERY(ssu <* QUERY(pss <* psa.
    styles | 'AUTOMOTIVE_DESIGN.SURFACE_STYLE_USAGE' IN TYPEOF(pss)) | NOT (
    SIZEOF(QUERY(sses <* ssu\surface_style_usage.style\surface_side_style.
    styles | NOT (SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'SURFACE_STYLE_PARAMETER_LINE', 'AUTOMOTIVE_DESIGN.' + 
    'SURFACE_STYLE_CONTROL_GRID', 'AUTOMOTIVE_DESIGN.' + 
    'SURFACE_STYLE_SILHOUETTE', 'AUTOMOTIVE_DESIGN.' + 
    'SURFACE_STYLE_SEGMENTATION_CURVE', 'AUTOMOTIVE_DESIGN.' + 
    'SURFACE_STYLE_FILL_AREA', 'AUTOMOTIVE_DESIGN.' + 
    'SURFACE_STYLE_BOUNDARY'] * TYPEOF(sses)) = 1))) = 0))) = 0))) = 0))) = 0;
  wr10 : SIZEOF(QUERY(si <* QUERY(it <* SELF.items | 
    'AUTOMOTIVE_DESIGN.STYLED_ITEM' IN TYPEOF(it)) | NOT (SIZEOF(QUERY(psa
     <* si\styled_item.styles | NOT (SIZEOF(QUERY(ssu <* QUERY(pss <* psa.
    styles | 'AUTOMOTIVE_DESIGN.SURFACE_STYLE_USAGE' IN TYPEOF(pss)) | NOT (
    SIZEOF(QUERY(sspl <* QUERY(sses <* ssu\surface_style_usage.style\
    surface_side_style.styles | 'AUTOMOTIVE_DESIGN.' + 
    'SURFACE_STYLE_PARAMETER_LINE' IN TYPEOF(sses)) | NOT ((
    'AUTOMOTIVE_DESIGN.CURVE_STYLE' IN TYPEOF(sspl\
    surface_style_parameter_line.style_of_parameter_lines)) AND (SIZEOF([
    'AUTOMOTIVE_DESIGN.COLOUR_RGB', 'AUTOMOTIVE_DESIGN.' + 
    'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF(sspl\surface_style_parameter_line
    .style_of_parameter_lines\curve_style.curve_colour)) = 1) AND (
    'AUTOMOTIVE_DESIGN.' + 'POSITIVE_LENGTH_MEASURE' IN TYPEOF(sspl\
    surface_style_parameter_line.style_of_parameter_lines\curve_style.
    curve_width)) AND (SIZEOF(['AUTOMOTIVE_DESIGN.CURVE_STYLE_FONT', 
    'AUTOMOTIVE_DESIGN.' + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] * TYPEOF(
    sspl\surface_style_parameter_line.style_of_parameter_lines\curve_style.
    curve_font)) = 1)))) = 0))) = 0))) = 0))) = 0;
  wr11 : SIZEOF(QUERY(si <* QUERY(it <* SELF.items | 
    'AUTOMOTIVE_DESIGN.STYLED_ITEM' IN TYPEOF(it)) | NOT (SIZEOF(QUERY(psa
     <* si\styled_item.styles | NOT (SIZEOF(QUERY(ssu <* QUERY(pss <* psa.
    styles | 'AUTOMOTIVE_DESIGN.SURFACE_STYLE_USAGE' IN TYPEOF(pss)) | NOT (
    SIZEOF(QUERY(sscg <* QUERY(sses <* ssu\surface_style_usage.style\
    surface_side_style.styles | 'AUTOMOTIVE_DESIGN.' + 
    'SURFACE_STYLE_CONTROL_GRID' IN TYPEOF(sses)) | NOT ((
    'AUTOMOTIVE_DESIGN.CURVE_STYLE' IN TYPEOF(sscg\
    surface_style_control_grid.style_of_control_grid)) AND (SIZEOF([
    'AUTOMOTIVE_DESIGN.COLOUR_RGB', 'AUTOMOTIVE_DESIGN.' + 
    'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF(sscg\surface_style_control_grid.
    style_of_control_grid\curve_style.curve_colour)) = 1) AND (
    'AUTOMOTIVE_DESIGN.' + 'POSITIVE_LENGTH_MEASURE' IN TYPEOF(sscg\
    surface_style_control_grid.style_of_control_grid\curve_style.curve_width)) 
    AND (SIZEOF(['AUTOMOTIVE_DESIGN.CURVE_STYLE_FONT', 
    'AUTOMOTIVE_DESIGN.' + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] * TYPEOF(
    sscg\surface_style_control_grid.style_of_control_grid\curve_style.
    curve_font)) = 1)))) = 0))) = 0))) = 0))) = 0;
  wr12 : SIZEOF(QUERY(si <* QUERY(it <* SELF.items | 
    'AUTOMOTIVE_DESIGN.STYLED_ITEM' IN TYPEOF(it)) | NOT (SIZEOF(QUERY(psa
     <* si\styled_item.styles | NOT (SIZEOF(QUERY(ssu <* QUERY(pss <* psa.
    styles | 'AUTOMOTIVE_DESIGN.SURFACE_STYLE_USAGE' IN TYPEOF(pss)) | NOT (
    SIZEOF(QUERY(sssh <* QUERY(sses <* ssu\surface_style_usage.style\
    surface_side_style.styles | 'AUTOMOTIVE_DESIGN.' + 
    'SURFACE_STYLE_SILHOUETTE' IN TYPEOF(sses)) | NOT ((
    'AUTOMOTIVE_DESIGN.CURVE_STYLE' IN TYPEOF(sssh\surface_style_silhouette.
    style_of_silhouette)) AND (SIZEOF(['AUTOMOTIVE_DESIGN.COLOUR_RGB', 
    'AUTOMOTIVE_DESIGN.' + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF(sssh\
    surface_style_silhouette.style_of_silhouette\curve_style.curve_colour)) = 1
    ) AND ('AUTOMOTIVE_DESIGN.' + 'POSITIVE_LENGTH_MEASURE' IN TYPEOF(sssh\
    surface_style_silhouette.style_of_silhouette\curve_style.curve_width)) AND 
    (SIZEOF(['AUTOMOTIVE_DESIGN.CURVE_STYLE_FONT', 'AUTOMOTIVE_DESIGN.'
     + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] * TYPEOF(sssh\
    surface_style_silhouette.style_of_silhouette\curve_style.curve_font)) = 1))
    )) = 0))) = 0))) = 0))) = 0;
  wr13 : SIZEOF(QUERY(si <* QUERY(it <* SELF.items | 
    'AUTOMOTIVE_DESIGN.STYLED_ITEM' IN TYPEOF(it)) | NOT (SIZEOF(QUERY(psa
     <* si\styled_item.styles | NOT (SIZEOF(QUERY(ssu <* QUERY(pss <* psa.
    styles | 'AUTOMOTIVE_DESIGN.SURFACE_STYLE_USAGE' IN TYPEOF(pss)) | NOT (
    SIZEOF(QUERY(sssc <* QUERY(sses <* ssu\surface_style_usage.style\
    surface_side_style.styles | 'AUTOMOTIVE_DESIGN.' + 
    'SURFACE_STYLE_SEGMENTATION_CURVE' IN TYPEOF(sses)) | NOT ((
    'AUTOMOTIVE_DESIGN.CURVE_STYLE' IN TYPEOF(sssc\
    surface_style_segmentation_curve.style_of_segmentation_curve)) AND (SIZEOF(
    ['AUTOMOTIVE_DESIGN.COLOUR_RGB', 'AUTOMOTIVE_DESIGN.' + 
    'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF(sssc\
    surface_style_segmentation_curve.style_of_segmentation_curve\curve_style.
    curve_colour)) = 1) AND ('AUTOMOTIVE_DESIGN.' + 
    'POSITIVE_LENGTH_MEASURE' IN TYPEOF(sssc\surface_style_segmentation_curve.
    style_of_segmentation_curve\curve_style.curve_width)) AND (SIZEOF([
    'AUTOMOTIVE_DESIGN.CURVE_STYLE_FONT', 'AUTOMOTIVE_DESIGN.' + 
    'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] * TYPEOF(sssc\
    surface_style_segmentation_curve.style_of_segmentation_curve\curve_style.
    curve_font)) = 1)))) = 0))) = 0))) = 0))) = 0;
  wr14 : SIZEOF(QUERY(si <* QUERY(it <* SELF.items | 
    'AUTOMOTIVE_DESIGN.STYLED_ITEM' IN TYPEOF(it)) | NOT (SIZEOF(QUERY(psa
     <* si\styled_item.styles | NOT (SIZEOF(QUERY(ssu <* QUERY(pss <* psa.
    styles | 'AUTOMOTIVE_DESIGN.SURFACE_STYLE_USAGE' IN TYPEOF(pss)) | NOT (
    SIZEOF(QUERY(ssbd <* QUERY(sses <* ssu\surface_style_usage.style\
    surface_side_style.styles | 'AUTOMOTIVE_DESIGN.' + 
    'SURFACE_STYLE_BOUNDARY' IN TYPEOF(sses)) | NOT ((
    'AUTOMOTIVE_DESIGN.CURVE_STYLE' IN TYPEOF(ssbd\surface_style_boundary.
    style_of_boundary)) AND (SIZEOF(['AUTOMOTIVE_DESIGN.COLOUR_RGB', 
    'AUTOMOTIVE_DESIGN.' + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF(ssbd\
    surface_style_boundary.style_of_boundary\curve_style.curve_colour)) = 1) 
    AND ('AUTOMOTIVE_DESIGN.' + 'POSITIVE_LENGTH_MEASURE' IN TYPEOF(ssbd\
    surface_style_boundary.style_of_boundary\curve_style.curve_width)) AND (
    SIZEOF(['AUTOMOTIVE_DESIGN.CURVE_STYLE_FONT', 'AUTOMOTIVE_DESIGN.' + 
    'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] * TYPEOF(ssbd\surface_style_boundary.
    style_of_boundary\curve_style.curve_font)) = 1)))) = 0))) = 0))) = 0))) = 0
    ;
END_ENTITY; -- 10303-517: aic_mechanical_design_geometric_presentation
 
ENTITY mechanism;
  structure_definition : kinematic_structure;
  base : kinematic_link;
  containing_property : kinematic_property_definition;
WHERE
  wr1 : SIZEOF(QUERY(joint <* structure_definition.joints | (base :=: joint.
    first_link) OR (base :=: joint.second_link))) > 0;
END_ENTITY; -- 10303-105: kinematic_structure_schema
 
ENTITY mechanism_base_placement
SUBTYPE OF (representation_relationship_with_transformation);
  base_of_mechanism : mechanism;
  SELF\representation_relationship_with_transformation.transformation_operator
   : cartesian_transformation_operator_3d;
DERIVE
  SELF\representation_relationship.rep_2 : kinematic_link_representation := 
  representation_of_link(base_of_mechanism.base);
UNIQUE
  ur1 : base_of_mechanism;
WHERE
  wr1 : ('AUTOMOTIVE_DESIGN.KINEMATIC_GROUND_REPRESENTATION' IN TYPEOF(SELF\
    representation_relationship.rep_1)) OR (
    'AUTOMOTIVE_DESIGN.KINEMATIC_LINK_REPRESENTATION' IN TYPEOF(SELF\
    representation_relationship.rep_1));
  wr2 : suitably_based_mechanism(SELF, base_of_mechanism);
  wr3 : SELF\representation_relationship_with_transformation.
    transformation_operator IN SELF\representation_relationship.rep_1.items;
END_ENTITY; -- 10303-105: kinematic_structure_schema
 
ENTITY minimum_function
SUBTYPE OF (multiple_arity_function_call);
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY minus_expression
SUBTYPE OF (binary_numeric_expression);
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY minus_function
SUBTYPE OF (unary_function_call);
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY mod_expression
SUBTYPE OF (binary_numeric_expression);
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY modified_geometric_tolerance
SUBTYPE OF (geometric_tolerance);
  modifier : limit_condition;
END_ENTITY; -- 10303-47: shape_tolerance_schema
 
ENTITY modified_pattern
SUBTYPE OF (replicate_feature);
WHERE
  wr1 : SIZEOF(QUERY(sa <* get_shape_aspects(SELF) | SIZEOF(QUERY(sar <* USEDIN
    (sa, 'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT'
    ) | (sar.description = 'base pattern') AND (SIZEOF(['AUTOMOTIVE_DESIGN.'
     + 'CIRCULAR_PATTERN', 'AUTOMOTIVE_DESIGN.' + 'RECTANGULAR_PATTERN'] * 
    TYPEOF(sar.related_shape_aspect.of_shape.definition)) = 1))) = 1)) = 1;
  wr2 : SIZEOF(QUERY(sa <* get_shape_aspects(SELF) | SIZEOF(QUERY(sar <* USEDIN
    (sa, 'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT'
    ) | SIZEOF(QUERY(sar1 <* USEDIN(sar.related_shape_aspect, 
    'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | (
    sar.related_shape_aspect :<>: sar1.related_shape_aspect) AND (SIZEOF([
    'AUTOMOTIVE_DESIGN.' + 'PATTERN_OFFSET_MEMBERSHIP', 
    'AUTOMOTIVE_DESIGN.' + 'PATTERN_OMIT_MEMBERSHIP'] * TYPEOF(sar1)) = 1)))
     = 1)) >= 1)) = 1;
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY moments_of_inertia_representation
SUBTYPE OF (representation);
WHERE
  wr1 : (SIZEOF(SELF.items) = 1) AND (SIZEOF(QUERY(i <* SELF.items | (
    'AUTOMOTIVE_DESIGN.' + 'COMPOUND_REPRESENTATION_ITEM' IN TYPEOF(i)) AND 
    (i.name = 'moments of inertia matrix'))) = 1);
  wr2 : SIZEOF(QUERY(i <* SELF.items | ('AUTOMOTIVE_DESIGN.' + 
    'COMPOUND_REPRESENTATION_ITEM' IN TYPEOF(i)) AND (SIZEOF(i\
    compound_representation_item.item_element) = 3) AND (
    'AUTOMOTIVE_DESIGN.' + 'LIST_REPRESENTATION_ITEM' IN TYPEOF(i\
    compound_representation_item.item_element)) AND 
    value_range_aggregate_rep_item(i\compound_representation_item.item_element)
    )) = 1;
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY motion_link_relationship
SUPERTYPE OF (resulting_path)
SUBTYPE OF (representation_relationship);
  SELF\representation_relationship.rep_1 : founded_kinematic_path;
  SELF\representation_relationship.rep_2 : kinematic_link_representation;
  related_frame : rigid_placement;
DERIVE
  motion : founded_kinematic_path := SELF\representation_relationship.rep_1;
  frame_link : kinematic_link_representation := SELF\
  representation_relationship.rep_2;
WHERE
  wr1 : related_frame IN frame_link\representation.items;
END_ENTITY; -- 10303-105: kinematic_analysis_control_and_result_schema
 
ENTITY mult_expression
SUBTYPE OF (multiple_arity_numeric_expression);
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY multi_language_attribute_assignment
SUBTYPE OF (attribute_value_assignment);
  items : SET [1:?] OF multi_language_attribute_item;
DERIVE
  language : label := get_multi_language(SELF);
WHERE
  wr1 : SELF\attribute_value_assignment.role.name = 'alternate language';
  wr2 : (SIZEOF(USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')) = 1) AND (
    SIZEOF(QUERY(ala <* USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | ala.
    attribute_name = 'attribute_value')) = 1);
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY multiple_arity_boolean_expression
ABSTRACT SUPERTYPE OF (ONEOF (and_expression, or_expression))
SUBTYPE OF (boolean_expression, multiple_arity_generic_expression);
  SELF\multiple_arity_generic_expression.operands :  LIST [2:?] OF 
  boolean_expression;
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY multiple_arity_function_call
ABSTRACT SUPERTYPE OF (ONEOF (maximum_function, minimum_function))
SUBTYPE OF (multiple_arity_numeric_expression);
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY multiple_arity_generic_expression ABSTRACT SUPERTYPE
SUBTYPE OF (generic_expression);
  operands :  LIST [2:?] OF generic_expression;
END_ENTITY; (* declared in: iso13584_generic_expressions_schema *)
 
ENTITY multiple_arity_numeric_expression
ABSTRACT SUPERTYPE OF (ONEOF (plus_expression, mult_expression, 
multiple_arity_function_call))
SUBTYPE OF (numeric_expression, multiple_arity_generic_expression);
  SELF\multiple_arity_generic_expression.operands :  LIST [2:?] OF 
  numeric_expression;
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY name_assignment ABSTRACT SUPERTYPE;
  assigned_name : label;
DERIVE
  role : object_role := get_role(SELF);
WHERE
  wr1 : SIZEOF(USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
END_ENTITY; -- 10303-41: management_resources_schema
 
ENTITY name_attribute;
  attribute_value : label;
  named_item : name_attribute_select;
END_ENTITY; -- 10303-41: basic_attribute_schema
 
ENTITY named_unit
SUPERTYPE OF (ONEOF (si_unit, conversion_based_unit, context_dependent_unit)
 ANDOR ONEOF (length_unit, mass_unit, time_unit, electric_current_unit, 
thermodynamic_temperature_unit, amount_of_substance_unit, 
luminous_intensity_unit, plane_angle_unit, solid_angle_unit, area_unit, 
volume_unit, ratio_unit));
  dimensions : dimensional_exponents;
END_ENTITY; -- 10303-41: measure_schema
 
ENTITY named_unit_variable
SUBTYPE OF (named_unit, variable_semantics);
INVERSE
  associated_variable_environment : environment FOR semantics;
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY next_assembly_usage_occurrence
SUBTYPE OF (assembly_component_usage);
END_ENTITY; -- 10303-44: product_structure_schema
 
ENTITY ngon_closed_profile
SUBTYPE OF (shape_aspect);
WHERE
  wr1 : 'AUTOMOTIVE_DESIGN.' + 'FEATURE_COMPONENT_DEFINITION' IN TYPEOF(SELF
    .of_shape.definition);
  wr2 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | 
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation))) = 1;
  wr3 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND {3 <= SIZEOF(pdr.used_representation.items)
     <= 4})) = 1;
  wr4 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | NOT (i.name IN ['orientation', 'number of sides', 
    'circumscibed diameter', 'diameter across flats', 'corner radius']))) = 0))
    ) = 1;
  wr5 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | ('AUTOMOTIVE_DESIGN.' + 'PLACEMENT' IN TYPEOF(i)) AND (i.name = 
    'orientation'))) = 1))) = 1;
  wr6 : SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'number of sides') AND ('AUTOMOTIVE_DESIGN.' + 
    'MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND ('AUTOMOTIVE_DESIGN.' + 
    'COUNT_MEASURE' IN TYPEOF(i\measure_with_unit.value_component)))) = 1))) = 
    1;
  wr7 : SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name IN ['circumscribed diameter', 'diameter across flats']) AND
     (SIZEOF(['AUTOMOTIVE_DESIGN.' + 'MEASURE_REPRESENTATION_ITEM', 
    'AUTOMOTIVE_DESIGN.' + 'LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2)))
     = 1))) = 1;
  wr8 : SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | i.name = 'corner radius')) <= 1) AND (SIZEOF(QUERY(i <* pdr.
    used_representation.items | (i.name = 'corner radius') AND (SIZEOF([
    'AUTOMOTIVE_DESIGN.' + 'MEASURE_REPRESENTATION_ITEM', 
    'AUTOMOTIVE_DESIGN.' + 'LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2)))
     = SIZEOF(QUERY(i <* pdr.used_representation.items | i.name = 
    'corner radius'))))) = 1;
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY non_manifold_surface_shape_representation
SUBTYPE OF (shape_representation);
WHERE
  wr1 : SIZEOF(QUERY(it <* SELF.items | NOT (SIZEOF([
    'AUTOMOTIVE_DESIGN.FACE_BASED_SURFACE_MODEL', 
    'AUTOMOTIVE_DESIGN.MAPPED_ITEM', 
    'AUTOMOTIVE_DESIGN.AXIS2_PLACEMENT_3D'] * TYPEOF(it)) = 1))) = 0;
  wr2 : SIZEOF(QUERY(it <* SELF.items | SIZEOF([
    'AUTOMOTIVE_DESIGN.FACE_BASED_SURFACE_MODEL', 
    'AUTOMOTIVE_DESIGN.MAPPED_ITEM'] * TYPEOF(it)) = 1)) > 0;
  wr3 : SIZEOF(QUERY(mi <* QUERY(it <* SELF.items | 
    'AUTOMOTIVE_DESIGN.MAPPED_ITEM' IN TYPEOF(it)) | NOT ((
    'AUTOMOTIVE_DESIGN.' + 'NON_MANIFOLD_SURFACE_SHAPE_REPRESENTATION' IN 
    TYPEOF(mi\mapped_item.mapping_source.mapped_representation)) AND (SIZEOF(
    QUERY(mr_it <* mi\mapped_item.mapping_source.mapped_representation.items | 
    'AUTOMOTIVE_DESIGN.FACE_BASED_SURFACE_MODEL' IN TYPEOF(mr_it))) > 0))))
     = 0;
  wr4 : SIZEOF(QUERY(fbsm <* QUERY(it <* SELF.items | 
    'AUTOMOTIVE_DESIGN.FACE_BASED_SURFACE_MODEL' IN TYPEOF(it)) | NOT (
    SIZEOF(QUERY(cfs <* fbsm\face_based_surface_model.fbsm_faces | NOT (SIZEOF(
    QUERY(fa <* cfs.cfs_faces | NOT (SIZEOF([
    'AUTOMOTIVE_DESIGN.FACE_SURFACE', 'AUTOMOTIVE_DESIGN.ORIENTED_FACE']
     * TYPEOF(fa)) = 1))) = 0))) = 0))) = 0;
  wr5 : SIZEOF(QUERY(fbsm <* QUERY(it <* SELF.items | 
    'AUTOMOTIVE_DESIGN.FACE_BASED_SURFACE_MODEL' IN TYPEOF(it)) | NOT (
    SIZEOF(QUERY(cfs <* fbsm\face_based_surface_model.fbsm_faces | NOT (SIZEOF(
    QUERY(f_sf <* QUERY(fa <* cfs.cfs_faces | 
    'AUTOMOTIVE_DESIGN.FACE_SURFACE' IN TYPEOF(fa)) | NOT ((
    'AUTOMOTIVE_DESIGN.ADVANCED_FACE' IN TYPEOF(f_sf)) OR nmsf_surface_check
    (f_sf\face_surface.face_geometry)))) = 0))) = 0))) = 0;
  wr6 : SIZEOF(QUERY(fbsm <* QUERY(it <* SELF.items | 
    'AUTOMOTIVE_DESIGN.FACE_BASED_SURFACE_MODEL' IN TYPEOF(it)) | NOT (
    SIZEOF(QUERY(cfs <* fbsm\face_based_surface_model.fbsm_faces | NOT (SIZEOF(
    QUERY(o_fa <* QUERY(fa <* cfs.cfs_faces | 
    'AUTOMOTIVE_DESIGN.ORIENTED_FACE' IN TYPEOF(fa)) | NOT ((
    'AUTOMOTIVE_DESIGN.ADVANCED_FACE' IN TYPEOF(o_fa\oriented_face.
    face_element)) OR nmsf_surface_check(o_fa\oriented_face.face_element\
    face_surface.face_geometry)))) = 0))) = 0))) = 0;
  wr7 : SIZEOF(QUERY(fbsm <* QUERY(it <* SELF.items | 
    'AUTOMOTIVE_DESIGN.FACE_BASED_SURFACE_MODEL' IN TYPEOF(it)) | NOT (
    SIZEOF(QUERY(cfs <* fbsm\face_based_surface_model.fbsm_faces | NOT (SIZEOF(
    QUERY(fa <* cfs.cfs_faces | NOT (('AUTOMOTIVE_DESIGN.ADVANCED_FACE' IN 
    TYPEOF(fa)) OR (SIZEOF(QUERY(bnds <* fa.bounds | NOT (SIZEOF([
    'AUTOMOTIVE_DESIGN.EDGE_LOOP', 'AUTOMOTIVE_DESIGN.VERTEX_LOOP'] * 
    TYPEOF(bnds.bound)) = 1))) = 0)))) = 0))) = 0))) = 0;
  wr8 : SIZEOF(QUERY(fbsm <* QUERY(it <* SELF.items | 
    'AUTOMOTIVE_DESIGN.FACE_BASED_SURFACE_MODEL' IN TYPEOF(it)) | NOT (
    SIZEOF(QUERY(cfs <* fbsm\face_based_surface_model.fbsm_faces | NOT (SIZEOF(
    QUERY(fa <* cfs.cfs_faces | NOT (('AUTOMOTIVE_DESIGN.ADVANCED_FACE' IN 
    TYPEOF(fa)) OR (SIZEOF(QUERY(elp_fbnds <* QUERY(bnds <* fa.bounds | 
    'AUTOMOTIVE_DESIGN.EDGE_LOOP' IN TYPEOF(bnds.bound)) | NOT (SIZEOF(
    QUERY(oe <* elp_fbnds\path.edge_list | NOT (
    'AUTOMOTIVE_DESIGN.EDGE_CURVE' IN TYPEOF(oe.edge_element)))) = 0))) = 0)
    ))) = 0))) = 0))) = 0;
  wr9 : SIZEOF(QUERY(fbsm <* QUERY(it <* SELF.items | 
    'AUTOMOTIVE_DESIGN.FACE_BASED_SURFACE_MODEL' IN TYPEOF(it)) | NOT (
    SIZEOF(QUERY(cfs <* fbsm\face_based_surface_model.fbsm_faces | NOT (SIZEOF(
    QUERY(fa <* cfs.cfs_faces | NOT (('AUTOMOTIVE_DESIGN.ADVANCED_FACE' IN 
    TYPEOF(fa)) OR (SIZEOF(QUERY(elp_fbnds <* QUERY(bnds <* fa.bounds | 
    'AUTOMOTIVE_DESIGN.EDGE_LOOP' IN TYPEOF(bnds.bound)) | NOT (SIZEOF(
    QUERY(oe_cv <* QUERY(oe <* elp_fbnds\path.edge_list | 
    'AUTOMOTIVE_DESIGN.EDGE_CURVE' IN TYPEOF(oe.edge_element)) | NOT (SIZEOF
    (['AUTOMOTIVE_DESIGN.B_SPLINE_CURVE', 'AUTOMOTIVE_DESIGN.CONIC', 
    'AUTOMOTIVE_DESIGN.CURVE_REPLICA', 'AUTOMOTIVE_DESIGN.LINE', 
    'AUTOMOTIVE_DESIGN.OFFSET_CURVE_3D', 'AUTOMOTIVE_DESIGN.PCURVE', 
    'AUTOMOTIVE_DESIGN.POLYLINE', 'AUTOMOTIVE_DESIGN.SURFACE_CURVE'] * 
    TYPEOF(oe_cv.edge_element\edge_curve.edge_geometry)) = 1))) = 0))) = 0))))
     = 0))) = 0))) = 0;
  wr10 : SIZEOF(QUERY(fbsm <* QUERY(it <* SELF.items | 
    'AUTOMOTIVE_DESIGN.FACE_BASED_SURFACE_MODEL' IN TYPEOF(it)) | NOT (
    SIZEOF(QUERY(cfs <* fbsm\face_based_surface_model.fbsm_faces | NOT (SIZEOF(
    QUERY(fa <* cfs.cfs_faces | NOT (('AUTOMOTIVE_DESIGN.ADVANCED_FACE' IN 
    TYPEOF(fa)) OR (SIZEOF(QUERY(elp_fbnds <* QUERY(bnds <* fa.bounds | 
    'AUTOMOTIVE_DESIGN.EDGE_LOOP' IN TYPEOF(bnds.bound)) | NOT (SIZEOF(
    QUERY(oe <* elp_fbnds\path.edge_list | NOT nmsf_curve_check(oe.edge_element
    \edge_curve.edge_geometry))) = 0))) = 0)))) = 0))) = 0))) = 0;
  wr11 : SIZEOF(QUERY(fbsm <* QUERY(it <* SELF.items | 
    'AUTOMOTIVE_DESIGN.FACE_BASED_SURFACE_MODEL' IN TYPEOF(it)) | NOT (
    SIZEOF(QUERY(cfs <* fbsm\face_based_surface_model.fbsm_faces | NOT (SIZEOF(
    QUERY(fa <* cfs.cfs_faces | NOT (('AUTOMOTIVE_DESIGN.ADVANCED_FACE' IN 
    TYPEOF(fa)) OR (SIZEOF(QUERY(elp_fbnds <* QUERY(bnds <* fa.bounds | 
    'AUTOMOTIVE_DESIGN.EDGE_LOOP' IN TYPEOF(bnds.bound)) | NOT (SIZEOF(
    QUERY(oe <* elp_fbnds\path.edge_list | NOT ((
    'AUTOMOTIVE_DESIGN.VERTEX_POINT' IN TYPEOF(oe.edge_element.edge_start)) 
    AND ('AUTOMOTIVE_DESIGN.VERTEX_POINT' IN TYPEOF(oe.edge_element.edge_end
    ))))) = 0))) = 0)))) = 0))) = 0))) = 0;
  wr12 : SIZEOF(QUERY(fbsm <* QUERY(it <* SELF.items | 
    'AUTOMOTIVE_DESIGN.FACE_BASED_SURFACE_MODEL' IN TYPEOF(it)) | NOT (
    SIZEOF(QUERY(cfs <* fbsm\face_based_surface_model.fbsm_faces | NOT (SIZEOF(
    QUERY(fa <* cfs.cfs_faces | NOT (('AUTOMOTIVE_DESIGN.ADVANCED_FACE' IN 
    TYPEOF(fa)) OR (SIZEOF(QUERY(elp_fbnds <* QUERY(bnds <* fa.bounds | 
    'AUTOMOTIVE_DESIGN.EDGE_LOOP' IN TYPEOF(bnds.bound)) | NOT (SIZEOF(
    QUERY(oe <* elp_fbnds\path.edge_list | NOT ((SIZEOF([
    'AUTOMOTIVE_DESIGN.CARTESIAN_POINT', 
    'AUTOMOTIVE_DESIGN.DEGENERATE_PCURVE', 
    'AUTOMOTIVE_DESIGN.POINT_ON_CURVE', 
    'AUTOMOTIVE_DESIGN.POINT_ON_SURFACE'] * TYPEOF(oe.edge_element.
    edge_start\vertex_point.vertex_geometry)) = 1) AND (SIZEOF([
    'AUTOMOTIVE_DESIGN.CARTESIAN_POINT', 
    'AUTOMOTIVE_DESIGN.DEGENERATE_PCURVE', 
    'AUTOMOTIVE_DESIGN.POINT_ON_CURVE', 
    'AUTOMOTIVE_DESIGN.POINT_ON_SURFACE'] * TYPEOF(oe.edge_element.edge_end\
    vertex_point.vertex_geometry)) = 1)))) = 0))) = 0)))) = 0))) = 0))) = 0;
  wr13 : SIZEOF(QUERY(fbsm <* QUERY(it <* SELF.items | 
    'AUTOMOTIVE_DESIGN.FACE_BASED_SURFACE_MODEL' IN TYPEOF(it)) | NOT (
    SIZEOF(QUERY(cfs <* fbsm\face_based_surface_model.fbsm_faces | NOT (SIZEOF(
    QUERY(fa <* cfs.cfs_faces | NOT (('AUTOMOTIVE_DESIGN.ADVANCED_FACE' IN 
    TYPEOF(fa)) OR (SIZEOF(QUERY(vlp_fbnds <* QUERY(bnds <* fa.bounds | 
    'AUTOMOTIVE_DESIGN.VERTEX_LOOP' IN TYPEOF(bnds.bound)) | NOT (
    'AUTOMOTIVE_DESIGN.VERTEX_POINT' IN TYPEOF(vlp_fbnds\vertex_loop.
    loop_vertex)))) = 0)))) = 0))) = 0))) = 0;
  wr14 : SIZEOF(QUERY(fbsm <* QUERY(it <* SELF.items | 
    'AUTOMOTIVE_DESIGN.FACE_BASED_SURFACE_MODEL' IN TYPEOF(it)) | NOT (
    SIZEOF(QUERY(cfs <* fbsm\face_based_surface_model.fbsm_faces | NOT (SIZEOF(
    QUERY(fa <* cfs.cfs_faces | NOT (('AUTOMOTIVE_DESIGN.ADVANCED_FACE' IN 
    TYPEOF(fa)) OR (SIZEOF(QUERY(vlp_fbnds <* QUERY(bnds <* fa.bounds | 
    'AUTOMOTIVE_DESIGN.VERTEX_LOOP' IN TYPEOF(bnds.bound)) | NOT (SIZEOF([
    'AUTOMOTIVE_DESIGN.CARTESIAN_POINT', 
    'AUTOMOTIVE_DESIGN.DEGENERATE_PCURVE', 
    'AUTOMOTIVE_DESIGN.POINT_ON_CURVE', 
    'AUTOMOTIVE_DESIGN.POINT_ON_SURFACE'] * TYPEOF(vlp_fbnds\vertex_loop.
    loop_vertex\vertex_point.vertex_geometry)) = 1))) = 0)))) = 0))) = 0))) = 0
    ;
END_ENTITY; -- 10303-508: aic_non_manifold_surface
 
ENTITY not_expression
SUBTYPE OF (unary_boolean_expression);
  SELF\unary_generic_expression.operand : boolean_expression;
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY numeric_defined_function
ABSTRACT SUPERTYPE OF (ONEOF (integer_defined_function, real_defined_function))
SUBTYPE OF (numeric_expression, defined_function);
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY numeric_expression
ABSTRACT SUPERTYPE OF (ONEOF (simple_numeric_expression, 
unary_numeric_expression, binary_numeric_expression, 
multiple_arity_numeric_expression, length_function, value_function, 
numeric_defined_function))
SUBTYPE OF (expression);
DERIVE
  is_int : BOOLEAN := is_int_expr(SELF);
  sql_mappable : BOOLEAN := is_sql_mappable(SELF);
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY numeric_variable
SUPERTYPE OF (ONEOF (int_numeric_variable, real_numeric_variable))
SUBTYPE OF (simple_numeric_expression, variable);
WHERE
  wr1 : ('AUTOMOTIVE_DESIGN.INT_NUMERIC_VARIABLE' IN TYPEOF(SELF)) OR (
    'AUTOMOTIVE_DESIGN.REAL_NUMERIC_VARIABLE' IN TYPEOF(SELF));
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY object_role;
  name : label;
  description :  OPTIONAL text;
END_ENTITY; -- 10303-41: basic_attribute_schema
 
ENTITY odd_function
SUBTYPE OF (unary_boolean_expression);
  SELF\unary_generic_expression.operand : numeric_expression;
WHERE
  wr1 : is_int_expr(SELF);
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY offset_curve_2d
SUBTYPE OF (curve);
  basis_curve : curve;
  distance : length_measure;
  self_intersect : LOGICAL;
WHERE
  wr1 : basis_curve.dim = 2;
END_ENTITY; -- 10303-42: geometry_schema
 
ENTITY offset_curve_3d
SUBTYPE OF (curve);
  basis_curve : curve;
  distance : length_measure;
  self_intersect : LOGICAL;
  ref_direction : direction;
WHERE
  wr1 : (basis_curve.dim = 3) AND (ref_direction.dim = 3);
END_ENTITY; -- 10303-42: geometry_schema
 
ENTITY offset_surface
SUBTYPE OF (surface);
  basis_surface : surface;
  distance : length_measure;
  self_intersect : LOGICAL;
END_ENTITY; -- 10303-42: geometry_schema
 
ENTITY one_direction_repeat_factor
SUBTYPE OF (geometric_representation_item);
  repeat_factor : vector;
END_ENTITY; -- 10303-46: presentation_appearance_schema
 
ENTITY open_path_profile
SUBTYPE OF (shape_aspect);
WHERE
  wr1 : 'AUTOMOTIVE_DESIGN.' + 'FEATURE_COMPONENT_DEFINITION' IN TYPEOF(SELF
    .of_shape.definition);
  wr2 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | 
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation))) = 1;
  wr3 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(pdr.used_representation.items) = 1)))
     = 1;
  wr4 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | ('AUTOMOTIVE_DESIGN.' + 'PLACEMENT' IN TYPEOF(i)) AND (i.name = 
    'orientation'))) = 1))) = 1;
  wr5 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | 
    'AUTOMOTIVE_DESIGN.' + 'PATH_SHAPE_REPRESENTATION' IN TYPEOF(pdr.
    used_representation))) = 1;
  wr6 : (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | 
    'AUTOMOTIVE_DESIGN.' + 'PLANAR_SHAPE_REPRESENTATION' IN TYPEOF(pdr.
    used_representation))) <= 1) AND (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | 
    'AUTOMOTIVE_DESIGN.' + 'PLANAR_SHAPE_REPRESENTATION' IN TYPEOF(pdr.
    used_representation))) = SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'PLANAR_SHAPE_REPRESENTATION' IN TYPEOF(pdr.
    used_representation)) AND (pdr.used_representation.name = 'profile limit'))
    ));
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY open_shell
SUBTYPE OF (connected_face_set);
END_ENTITY; -- 10303-42: topology_schema
 
ENTITY or_expression
SUBTYPE OF (multiple_arity_boolean_expression);
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY ordinate_dimension
SUBTYPE OF (projection_directed_callout);
END_ENTITY; -- 10303-506: aic_draughting_elements
 
ENTITY organization;
  id :  OPTIONAL identifier;
  name : label;
  description :  OPTIONAL text;
END_ENTITY; -- 10303-41: person_organization_schema
 
ENTITY organization_assignment ABSTRACT SUPERTYPE;
  assigned_organization : organization;
  role : organization_role;
END_ENTITY; -- 10303-41: management_resources_schema
 
ENTITY organization_relationship;
  name : label;
  description :  OPTIONAL text;
  relating_organization : organization;
  related_organization : organization;
END_ENTITY; -- 10303-41: person_organization_schema
 
ENTITY organization_role;
  name : label;
DERIVE
  description : text := get_description_value(SELF);
WHERE
  wr1 : SIZEOF(USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
END_ENTITY; -- 10303-41: person_organization_schema
 
ENTITY organizational_address
SUBTYPE OF (address);
  organizations : SET [1:?] OF organization;
  description :  OPTIONAL text;
END_ENTITY; -- 10303-41: person_organization_schema
 
ENTITY organizational_project;
  name : label;
  description :  OPTIONAL text;
  responsible_organizations : SET [1:?] OF organization;
DERIVE
  id : identifier := get_id_value(SELF);
WHERE
  wr1 : SIZEOF(USEDIN(SELF, 'AUTOMOTIVE_DESIGN.ID_ATTRIBUTE.IDENTIFIED_ITEM'
    )) <= 1;
END_ENTITY; -- 10303-41: person_organization_schema
 
ENTITY organizational_project_assignment ABSTRACT SUPERTYPE;
  assigned_organizational_project : organizational_project;
  role : organizational_project_role;
END_ENTITY; -- 10303-41: management_resources_schema
 
ENTITY organizational_project_relationship;
  name : label;
  description :  OPTIONAL text;
  relating_organizational_project : organizational_project;
  related_organizational_project : organizational_project;
END_ENTITY; -- 10303-41: person_organization_schema
 
ENTITY organizational_project_role;
  name : label;
  description :  OPTIONAL text;
END_ENTITY; -- 10303-41: management_resources_schema
 
ENTITY oriented_closed_shell
SUBTYPE OF (closed_shell);
  closed_shell_element : closed_shell;
  orientation : BOOLEAN;
DERIVE
  SELF\connected_face_set.cfs_faces : SET [1:?] OF face := conditional_reverse(
  SELF.orientation, SELF.closed_shell_element.cfs_faces);
WHERE
  wr1 : NOT ('AUTOMOTIVE_DESIGN.ORIENTED_CLOSED_SHELL' IN TYPEOF(SELF.
    closed_shell_element));
END_ENTITY; -- 10303-42: topology_schema
 
ENTITY oriented_edge
SUBTYPE OF (edge);
  edge_element : edge;
  orientation : BOOLEAN;
DERIVE
  SELF\edge.edge_start : vertex := boolean_choose(SELF.orientation, SELF.
  edge_element.edge_start, SELF.edge_element.edge_end);
  SELF\edge.edge_end : vertex := boolean_choose(SELF.orientation, SELF.
  edge_element.edge_end, SELF.edge_element.edge_start);
WHERE
  wr1 : NOT ('AUTOMOTIVE_DESIGN.ORIENTED_EDGE' IN TYPEOF(SELF.edge_element))
    ;
END_ENTITY; -- 10303-42: topology_schema
 
ENTITY oriented_face
SUBTYPE OF (face);
  face_element : face;
  orientation : BOOLEAN;
DERIVE
  SELF\face.bounds : SET [1:?] OF face_bound := conditional_reverse(SELF.
  orientation, SELF.face_element.bounds);
WHERE
  wr1 : NOT ('AUTOMOTIVE_DESIGN.ORIENTED_FACE' IN TYPEOF(SELF.face_element))
    ;
END_ENTITY; -- 10303-42: topology_schema
 
ENTITY oriented_open_shell
SUBTYPE OF (open_shell);
  open_shell_element : open_shell;
  orientation : BOOLEAN;
DERIVE
  SELF\connected_face_set.cfs_faces : SET [1:?] OF face := conditional_reverse(
  SELF.orientation, SELF.open_shell_element.cfs_faces);
WHERE
  wr1 : NOT ('AUTOMOTIVE_DESIGN.ORIENTED_OPEN_SHELL' IN TYPEOF(SELF.
    open_shell_element));
END_ENTITY; -- 10303-42: topology_schema
 
ENTITY oriented_path
SUBTYPE OF (path);
  path_element : path;
  orientation : BOOLEAN;
DERIVE
  SELF\path.edge_list :  LIST [1:?] OF UNIQUE oriented_edge := 
  conditional_reverse(SELF.orientation, SELF.path_element.edge_list);
WHERE
  wr1 : NOT ('AUTOMOTIVE_DESIGN.ORIENTED_PATH' IN TYPEOF(SELF.path_element))
    ;
END_ENTITY; -- 10303-42: topology_schema
 
ENTITY oriented_surface
SUBTYPE OF (surface);
  orientation : BOOLEAN;
END_ENTITY; -- 10303-42: geometry_schema
 
ENTITY outer_boundary_curve
SUBTYPE OF (boundary_curve);
END_ENTITY; -- 10303-42: geometry_schema
 
ENTITY over_riding_styled_item
SUBTYPE OF (styled_item);
  over_ridden_style : styled_item;
END_ENTITY; -- 10303-46: presentation_appearance_schema
 
ENTITY package_product_concept_feature
SUBTYPE OF (product_concept_feature);
WHERE
  wr1 : NOT ('AUTOMOTIVE_DESIGN.' + 'CONDITIONAL_CONCEPT_FEATURE' IN TYPEOF(
    SELF));
  wr2 : SIZEOF(QUERY(cfr <* USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.CONCEPT_FEATURE_RELATIONSHIP.RELATING_PRODUCT_CONCEPT_FEATURE'
    ) | ('AUTOMOTIVE_DESIGN.' + 
    'CONCEPT_FEATURE_RELATIONSHIP_WITH_CONDITION' IN TYPEOF(cfr)) AND (SIZEOF(
    QUERY(ipcf <* USEDIN(cfr, 
    'AUTOMOTIVE_DESIGN.CONDITIONAL_CONCEPT_FEATURE.CONDITION') | 
    'AUTOMOTIVE_DESIGN.' + 'INCLUSION_PRODUCT_CONCEPT_FEATURE' IN TYPEOF(
    ipcf))) = 1))) > 0;
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY pair_actuator;
  actuated_pair : kinematic_pair;
  name : label;
UNIQUE
  ur1 : actuated_pair;
END_ENTITY; -- 10303-105: kinematic_structure_schema
 
ENTITY pair_value;
  applies_to_pair : kinematic_pair;
END_ENTITY; -- 10303-105: kinematic_structure_schema
 
ENTITY parabola
SUBTYPE OF (conic);
  focal_dist : length_measure;
WHERE
  wr1 : focal_dist <> 0.0;
END_ENTITY; -- 10303-42: geometry_schema
 
ENTITY parallel_offset
SUBTYPE OF (derived_shape_aspect);
  offset : measure_with_unit;
WHERE
  wr1 : SIZEOF(SELF\derived_shape_aspect.deriving_relationships) = 1;
END_ENTITY; -- 10303-47: shape_aspect_definition_schema
 
ENTITY parallelism_tolerance
SUBTYPE OF (geometric_tolerance_with_datum_reference);
WHERE
  wr1 : SIZEOF(SELF\geometric_tolerance_with_datum_reference.datum_system) < 3;
END_ENTITY; -- 10303-519: aic_geometric_tolerances
 
ENTITY parametric_representation_context
SUBTYPE OF (representation_context);
END_ENTITY; -- 10303-43: representation_schema
 
ENTITY partial_circular_profile
SUBTYPE OF (shape_aspect);
WHERE
  wr1 : 'AUTOMOTIVE_DESIGN.' + 'FEATURE_COMPONENT_DEFINITION' IN TYPEOF(SELF
    .of_shape.definition);
  wr2 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | 
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation))) = 1;
  wr3 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(pdr.used_representation.items) = 3)))
     = 1;
  wr4 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | NOT (i.name IN ['orientation', 'sweep angle', 'radius']))) = 0)))
     = 1;
  wr5 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | ('AUTOMOTIVE_DESIGN.' + 'PLACEMENT' IN TYPEOF(i)) AND (i.name = 
    'orientation'))) = 1))) = 1;
  wr6 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'radius') AND (SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'MEASURE_REPRESENTATION_ITEM', 'AUTOMOTIVE_DESIGN.' + 
    'LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2))) = 1))) = 1;
  wr7 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'sweep angle') AND (SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'MEASURE_REPRESENTATION_ITEM', 'AUTOMOTIVE_DESIGN.' + 
    'PLANE_ANGLE_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2))) = 1))) = 1;
  wr8 : (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | 
    'AUTOMOTIVE_DESIGN.' + 'PLANAR_SHAPE_REPRESENTATION' IN TYPEOF(pdr.
    used_representation))) <= 1) AND (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | 
    'AUTOMOTIVE_DESIGN.' + 'PLANAR_SHAPE_REPRESENTATION' IN TYPEOF(pdr.
    used_representation))) = SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'PLANAR_SHAPE_REPRESENTATION' IN TYPEOF(pdr.
    used_representation)) AND (pdr.used_representation.name = 'profile limit'))
    ));
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY path
SUPERTYPE OF (ONEOF (edge_loop, oriented_path))
SUBTYPE OF (topological_representation_item);
  edge_list :  LIST [1:?] OF UNIQUE oriented_edge;
WHERE
  wr1 : path_head_to_tail(SELF);
END_ENTITY; -- 10303-42: topology_schema
 
ENTITY path_feature_component
SUBTYPE OF (shape_aspect);
WHERE
  wr1 : 'AUTOMOTIVE_DESIGN.' + 'FEATURE_COMPONENT_DEFINITION' IN TYPEOF(SELF
    .of_shape.definition);
  wr2 : SELF.description IN ['partial circular', 'complete circular', 'linear'
    , 'complex'];
  wr3 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | 
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation))) = 1;
  wr4 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | ('AUTOMOTIVE_DESIGN.' + 'PLACEMENT' IN TYPEOF(i)) AND (i.name = 
    'orientation'))) = 1))) = 1;
  wr5 : (SELF.description <> 'partial circular') OR (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(pdr.used_representation.items) = 3)))
     = 1);
  wr6 : (SELF.description <> 'partial circular') OR (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'radius') AND (SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'MEASURE_REPRESENTATION_ITEM', 'AUTOMOTIVE_DESIGN.' + 
    'LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2))) = 1))) = 1);
  wr7 : (SELF.description <> 'partial circular') OR (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'sweep angle') AND (SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'MEASURE_REPRESENTATION_ITEM', 'AUTOMOTIVE_DESIGN.' + 
    'PLANE_ANGLE_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2))) = 1))) = 1);
  wr8 : (SELF.description <> 'complete circular') OR (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(pdr.used_representation.items) = 2)))
     = 1);
  wr9 : (SELF.description <> 'complete circular') OR (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'radius') AND (SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'MEASURE_REPRESENTATION_ITEM', 'AUTOMOTIVE_DESIGN.' + 
    'LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2))) = 1))) = 1);
  wr10 : (SELF.description <> 'linear') OR (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(pdr.used_representation.items) = 2)))
     = 1);
  wr11 : (SELF.description <> 'linear') OR (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'distance') AND (SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'MEASURE_REPRESENTATION_ITEM', 'AUTOMOTIVE_DESIGN.' + 
    'LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2))) = 1))) = 1);
  wr12 : (SELF.description <> 'complex') OR (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'PATH_SHAPE_REPRESENTATION' IN TYPEOF(pdr.
    used_representation)) AND (pdr.name = 'sweep path'))) = 1) AND (SIZEOF(
    QUERY(pdr <* get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'PATH_SHAPE_REPRESENTATION' IN TYPEOF(pdr.
    used_representation)) AND (pdr.name = 'sweep path') AND (SIZEOF(QUERY(i <* 
    pdr.used_representation.items | (i.name = 'path curve') AND (
    'AUTOMOTIVE_DESIGN.' + 'CURVE' IN TYPEOF(i)))) = 1))) = 1);
  wr13 : (SELF.description <> 'complex') OR (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(pdr.used_representation.items) = 1)))
     = 1);
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY path_shape_representation
SUBTYPE OF (shape_representation);
WHERE
  wr1 : SIZEOF(SELF.items) = 1;
  wr2 : SIZEOF(QUERY(i <* SELF.items | SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'BOUNDED_CURVE', 'AUTOMOTIVE_DESIGN.' + 'EDGE_CURVE', 
    'AUTOMOTIVE_DESIGN.' + 'PATH'] * TYPEOF(i)) = 1)) = 1;
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY pattern_offset_membership
SUBTYPE OF (feature_component_relationship);
WHERE
  wr1 : SIZEOF(['AUTOMOTIVE_DESIGN.' + 'CIRCULAR_PATTERN', 
    'AUTOMOTIVE_DESIGN.' + 'RECTANGULAR_PATTERN'] * TYPEOF(SELF.
    relating_shape_aspect.of_shape.definition)) = 1;
  wr2 : SIZEOF(QUERY(sar <* USEDIN(SELF.related_shape_aspect, 
    'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | (
    'AUTOMOTIVE_DESIGN.' + 'FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)) 
    AND ('AUTOMOTIVE_DESIGN.' + 'MODIFIED_PATTERN' IN TYPEOF(sar.
    relating_shape_aspect.of_shape.definition)) AND (sar.description = 
    'modified pattern'))) >= 1;
  wr3 : SIZEOF(get_property_definition_representations(SELF.
    related_shape_aspect.of_shape.definition)) = 1;
  wr4 : NOT ('AUTOMOTIVE_DESIGN.' + 'CIRCULAR_PATTERN' IN TYPEOF(SELF.
    relating_shape_aspect.of_shape.definition)) OR (SIZEOF(QUERY(pdr <* 
    get_property_definition_representations(SELF.related_shape_aspect.of_shape.
    definition) | SIZEOF(pdr.used_representation.items) = 2)) = 1);
  wr5 : NOT ('AUTOMOTIVE_DESIGN.' + 'CIRCULAR_PATTERN' IN TYPEOF(SELF.
    relating_shape_aspect.of_shape.definition)) OR (SIZEOF(QUERY(pdr <* 
    get_property_definition_representations(SELF.related_shape_aspect.of_shape.
    definition) | SIZEOF(QUERY(i <* pdr.used_representation.items | (i.name = 
    'index number') AND ('AUTOMOTIVE_DESIGN.' + 
    'MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND ('AUTOMOTIVE_DESIGN.' + 
    'COUNT_MEASURE' IN TYPEOF(i\measure_with_unit.value_component)))) = 1)) = 1
    );
  wr6 : NOT ('AUTOMOTIVE_DESIGN.' + 'CIRCULAR_PATTERN' IN TYPEOF(SELF.
    relating_shape_aspect.of_shape.definition)) OR (SIZEOF(QUERY(pdr <* 
    get_property_definition_representations(SELF.related_shape_aspect.of_shape.
    definition) | SIZEOF(QUERY(i <* pdr.used_representation.items | (i.name = 
    'offset') AND (SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'MEASURE_REPRESENTATION_ITEM', 'AUTOMOTIVE_DESIGN.' + 
    'PLANE_ANGLE_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2))) = 1)) = 1);
  wr7 : NOT ('AUTOMOTIVE_DESIGN.' + 'RECTANGULAR_PATTERN' IN TYPEOF(SELF.
    relating_shape_aspect.of_shape.definition)) OR (SIZEOF(QUERY(pdr <* 
    get_property_definition_representations(SELF.related_shape_aspect.of_shape.
    definition) | SIZEOF(pdr.used_representation.items) = 3)) = 1);
  wr8 : NOT ('AUTOMOTIVE_DESIGN.' + 'RECTANGULAR_PATTERN' IN TYPEOF(SELF.
    relating_shape_aspect.of_shape.definition)) OR (SIZEOF(QUERY(pdr <* 
    get_property_definition_representations(SELF.related_shape_aspect.of_shape.
    definition) | SIZEOF(QUERY(i <* pdr.used_representation.items | (i.name = 
    'row index') AND ('AUTOMOTIVE_DESIGN.' + 'MEASURE_REPRESENTATION_ITEM' 
    IN TYPEOF(i)) AND ('AUTOMOTIVE_DESIGN.' + 'COUNT_MEASURE' IN TYPEOF(i\
    measure_with_unit.value_component)))) = 1)) = 1);
  wr9 : NOT ('AUTOMOTIVE_DESIGN.' + 'RECTANGULAR_PATTERN' IN TYPEOF(SELF.
    relating_shape_aspect.of_shape.definition)) OR (SIZEOF(QUERY(pdr <* 
    get_property_definition_representations(SELF.related_shape_aspect.of_shape.
    definition) | SIZEOF(QUERY(i <* pdr.used_representation.items | (i.name = 
    'column index') AND ('AUTOMOTIVE_DESIGN.' + 
    'MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND ('AUTOMOTIVE_DESIGN.' + 
    'COUNT_MEASURE' IN TYPEOF(i\measure_with_unit.value_component)))) = 1)) = 1
    );
  wr10 : NOT ('AUTOMOTIVE_DESIGN.' + 'RECTANGULAR_PATTERN' IN TYPEOF(SELF.
    relating_shape_aspect.of_shape.definition)) OR (SIZEOF(QUERY(pdr <* 
    get_property_definition_representations(SELF.related_shape_aspect.of_shape.
    definition) | SIZEOF(QUERY(i <* pdr.used_representation.items | (i.name = 
    'offset distance') AND (SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'MEASURE_REPRESENTATION_ITEM', 'AUTOMOTIVE_DESIGN.' + 
    'LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2))) = 1)) = 1);
  wr11 : NOT ('AUTOMOTIVE_DESIGN.' + 'RECTANGULAR_PATTERN' IN TYPEOF(SELF.
    relating_shape_aspect.of_shape.definition)) OR (SIZEOF(QUERY(pdr <* 
    get_property_definition_representations(SELF.related_shape_aspect.of_shape.
    definition) | ('AUTOMOTIVE_DESIGN.' + 'DIRECTION_SHAPE_REPRESENTATION' 
    IN TYPEOF(pdr.used_representation)) AND (pdr.used_representation.name = 
    'offset direction'))) = 1);
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY pattern_omit_membership
SUBTYPE OF (feature_component_relationship);
WHERE
  wr1 : SIZEOF(['AUTOMOTIVE_DESIGN.' + 'CIRCULAR_PATTERN', 
    'AUTOMOTIVE_DESIGN.' + 'RECTANGULAR_PATTERN'] * TYPEOF(SELF.
    relating_shape_aspect.of_shape.definition)) = 1;
  wr2 : SIZEOF(QUERY(sar <* USEDIN(SELF.related_shape_aspect, 
    'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | (
    'AUTOMOTIVE_DESIGN.' + 'FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)) 
    AND ('AUTOMOTIVE_DESIGN.' + 'MODIFIED_PATTERN' IN TYPEOF(sar.
    relating_shape_aspect.of_shape.definition)) AND (sar.description = 
    'modified pattern'))) >= 1;
  wr3 : SIZEOF(get_property_definition_representations(SELF.
    related_shape_aspect.of_shape.definition)) = 1;
  wr4 : NOT ('AUTOMOTIVE_DESIGN.' + 'CIRCULAR_PATTERN' IN TYPEOF(SELF.
    relating_shape_aspect.of_shape.definition)) OR (SIZEOF(QUERY(pdr <* 
    get_property_definition_representations(SELF.related_shape_aspect.of_shape.
    definition) | SIZEOF(pdr.used_representation.items) = 1)) = 1);
  wr5 : NOT ('AUTOMOTIVE_DESIGN.' + 'CIRCULAR_PATTERN' IN TYPEOF(SELF.
    relating_shape_aspect.of_shape.definition)) OR (SIZEOF(QUERY(pdr <* 
    get_property_definition_representations(SELF.related_shape_aspect.of_shape.
    definition) | SIZEOF(QUERY(i <* pdr.used_representation.items | (i.name = 
    'index number') AND ('AUTOMOTIVE_DESIGN.' + 
    'MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND ('AUTOMOTIVE_DESIGN.' + 
    'COUNT_MEASURE' IN TYPEOF(i\measure_with_unit.value_component)))) = 1)) = 1
    );
  wr6 : NOT ('AUTOMOTIVE_DESIGN.' + 'RECTANGULAR_PATTERN' IN TYPEOF(SELF.
    relating_shape_aspect.of_shape.definition)) OR (SIZEOF(QUERY(pdr <* 
    get_property_definition_representations(SELF.related_shape_aspect.of_shape.
    definition) | SIZEOF(pdr.used_representation.items) = 2)) = 1);
  wr7 : NOT ('AUTOMOTIVE_DESIGN.' + 'RECTANGULAR_PATTERN' IN TYPEOF(SELF.
    relating_shape_aspect.of_shape.definition)) OR (SIZEOF(QUERY(pdr <* 
    get_property_definition_representations(SELF.related_shape_aspect.of_shape.
    definition) | SIZEOF(QUERY(i <* pdr.used_representation.items | (i.name = 
    'row index') AND ('AUTOMOTIVE_DESIGN.' + 'MEASURE_REPRESENTATION_ITEM' 
    IN TYPEOF(i)) AND ('AUTOMOTIVE_DESIGN.' + 'COUNT_MEASURE' IN TYPEOF(i\
    measure_with_unit.value_component)))) = 1)) = 1);
  wr8 : NOT ('AUTOMOTIVE_DESIGN.' + 'RECTANGULAR_PATTERN' IN TYPEOF(SELF.
    relating_shape_aspect.of_shape.definition)) OR (SIZEOF(QUERY(pdr <* 
    get_property_definition_representations(SELF.related_shape_aspect.of_shape.
    definition) | SIZEOF(QUERY(i <* pdr.used_representation.items | (i.name = 
    'column index') AND ('AUTOMOTIVE_DESIGN.' + 
    'MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND ('AUTOMOTIVE_DESIGN.' + 
    'COUNT_MEASURE' IN TYPEOF(i\measure_with_unit.value_component)))) = 1)) = 1
    );
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY pcurve
SUBTYPE OF (curve);
  basis_surface : surface;
  reference_to_curve : definitional_representation;
WHERE
  wr1 : SIZEOF(reference_to_curve\representation.items) = 1;
  wr2 : 'AUTOMOTIVE_DESIGN.CURVE' IN TYPEOF(reference_to_curve\
    representation.items[1]);
  wr3 : reference_to_curve\representation.items[1]\
    geometric_representation_item.dim = 2;
END_ENTITY; -- 10303-42: geometry_schema
 
ENTITY perpendicular_to
SUBTYPE OF (derived_shape_aspect);
WHERE
  wr1 : SIZEOF(SELF\derived_shape_aspect.deriving_relationships) = 1;
END_ENTITY; -- 10303-47: shape_aspect_definition_schema
 
ENTITY perpendicularity_tolerance
SUBTYPE OF (geometric_tolerance_with_datum_reference);
WHERE
  wr1 : SIZEOF(SELF\geometric_tolerance_with_datum_reference.datum_system) <= 3
    ;
END_ENTITY; -- 10303-519: aic_geometric_tolerances
 
ENTITY person;
  id : identifier;
  last_name :  OPTIONAL label;
  first_name :  OPTIONAL label;
  middle_names :  OPTIONAL  LIST [1:?] OF label;
  prefix_titles :  OPTIONAL  LIST [1:?] OF label;
  suffix_titles :  OPTIONAL  LIST [1:?] OF label;
WHERE
  wr1 : EXISTS(last_name) OR EXISTS(first_name);
END_ENTITY; -- 10303-41: person_organization_schema
 
ENTITY person_and_organization;
  the_person : person;
  the_organization : organization;
DERIVE
  name : label := get_name_value(SELF);
  description : text := get_description_value(SELF);
WHERE
  wr1 : SIZEOF(USEDIN(SELF, 'AUTOMOTIVE_DESIGN.NAME_ATTRIBUTE.NAMED_ITEM'))
     <= 1;
  wr2 : SIZEOF(USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
END_ENTITY; -- 10303-41: person_organization_schema
 
ENTITY person_and_organization_address
SUBTYPE OF (organizational_address, personal_address);
WHERE
  wr1 : SIZEOF(SELF\personal_address.people) = 1;
  wr2 : SIZEOF(SELF\organizational_address.organizations) = 1;
  wr3 : SIZEOF(QUERY(pao <* USEDIN(SELF.people[1], 
    'AUTOMOTIVE_DESIGN.PERSON_AND_ORGANIZATION.THE_PERSON') | pao.
    the_organization :=: SELF\organizational_address.organizations[1])) = 1;
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY person_and_organization_assignment ABSTRACT SUPERTYPE;
  assigned_person_and_organization : person_and_organization;
  role : person_and_organization_role;
END_ENTITY; -- 10303-41: management_resources_schema
 
ENTITY person_and_organization_role;
  name : label;
DERIVE
  description : text := get_description_value(SELF);
WHERE
  wr1 : SIZEOF(USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
END_ENTITY; -- 10303-41: person_organization_schema
 
ENTITY personal_address
SUBTYPE OF (address);
  people : SET [1:?] OF person;
  description :  OPTIONAL text;
END_ENTITY; -- 10303-41: person_organization_schema
 
ENTITY physically_modelled_product_definition
SUBTYPE OF (product_definition_with_associated_documents);
WHERE
  wr1 : SELF.frame_of_reference\application_context_element.name = 
    'physical model occurrence';
  wr2 : (SIZEOF(documentation_ids) = 1) AND (SIZEOF(QUERY(d <* 
    documentation_ids | SIZEOF(QUERY(drt <* d.representation_types | drt.name
     = 'physical')) = 1)) = 1);
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY placed_datum_target_feature
SUBTYPE OF (datum_target);
WHERE
  wr1 : SELF.description IN ['point', 'line', 'rectangle', 'circle'];
  wr2 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | 
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation))) = 1;
  wr3 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'orientation') AND ('AUTOMOTIVE_DESIGN.' + 'PLACEMENT'
     IN TYPEOF(i)))) = 1))) = 1;
  wr4 : (SELF.description <> 'point') OR (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(pdr.used_representation.items) = 1)))
     = 1);
  wr5 : (SELF.description <> 'circle') OR (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(pdr.used_representation.items) = 2)))
     = 1);
  wr6 : (SELF.description <> 'rectangle') OR (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(pdr.used_representation.items) = 3)))
     = 1);
  wr7 : (SELF.description <> 'circle') OR (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'target diameter') AND (SIZEOF(['AUTOMOTIVE_DESIGN.'
     + 'MEASURE_REPRESENTATION_ITEM', 'AUTOMOTIVE_DESIGN.' + 
    'LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2))) = 1))) = 1);
  wr8 : (SELF.description <> 'line') OR (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'target length') AND (SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'MEASURE_REPRESENTATION_ITEM', 'AUTOMOTIVE_DESIGN.' + 
    'LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2))) = 1))) = 1);
  wr9 : (SELF.description <> 'rectangle') OR (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'target length') AND (SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'MEASURE_REPRESENTATION_ITEM', 'AUTOMOTIVE_DESIGN.' + 
    'LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2))) = 1))) = 1);
  wr10 : (SELF.description <> 'rectangle') OR (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'target width') AND (SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'MEASURE_REPRESENTATION_ITEM', 'AUTOMOTIVE_DESIGN.' + 
    'LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2))) = 1))) = 1);
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY placed_feature
SUBTYPE OF (shape_aspect);
WHERE
  wr1 : 'AUTOMOTIVE_DESIGN.' + 'PRODUCT_DEFINITION' IN TYPEOF(SELF.of_shape.
    definition);
  wr2 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION' IN TYPEOF(pdr.
    used_representation)) AND (pdr.used_representation.name = 
    'feature definition placement') AND (SIZEOF(QUERY(i <* pdr.
    used_representation.items | ('AUTOMOTIVE_DESIGN.' + 'MAPPED_ITEM' IN 
    TYPEOF(i)) AND (SIZEOF(QUERY(pdr1 <* USEDIN(i\mapped_item.mapping_source.
    mapped_representation, 
    'AUTOMOTIVE_DESIGN.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION'
    ) | 'AUTOMOTIVE_DESIGN.' + 'FEATURE_DEFINITION' IN TYPEOF(pdr1.
    definition\property_definition.definition))) = 1))) = 1))) = 1;
  wr3 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'PLANAR_SHAPE_REPRESENTATION' IN TYPEOF(pdr.
    used_representation)) AND (pdr.used_representation.name = 
    'maximum feature limit'))) = 1;
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY placement
SUPERTYPE OF (ONEOF (axis1_placement, axis2_placement_2d, axis2_placement_3d))
SUBTYPE OF (geometric_representation_item);
  location : cartesian_point;
END_ENTITY; -- 10303-42: geometry_schema
 
ENTITY planar_box
SUBTYPE OF (planar_extent);
  placement : axis2_placement;
END_ENTITY; -- 10303-46: presentation_resource_schema
 
ENTITY planar_curve_pair
SUBTYPE OF (kinematic_pair);
  curve_1 : curve;
  curve_2 : curve;
  orientation : BOOLEAN;
WHERE
  wr1 : frame_associated_to_background(SELF\kinematic_pair.
    pair_placement_in_first_link_context, curve_1);
  wr2 : frame_associated_to_background(SELF\kinematic_pair.
    pair_placement_in_second_link_context, curve_2);
END_ENTITY; -- 10303-105: kinematic_structure_schema
 
ENTITY planar_curve_pair_range
SUBTYPE OF (simple_pair_range);
  SELF\simple_pair_range.applies_to_pair : planar_curve_pair;
  range_on_curve_1 : trimmed_curve;
  range_on_curve_2 : trimmed_curve;
WHERE
  wr1 : SELF\simple_pair_range.applies_to_pair\planar_curve_pair.curve_1 :=: 
    range_on_curve_1.basis_curve;
  wr2 : SELF\simple_pair_range.applies_to_pair\planar_curve_pair.curve_2 :=: 
    range_on_curve_2.basis_curve;
END_ENTITY; -- 10303-105: kinematic_structure_schema
 
ENTITY planar_extent
SUBTYPE OF (geometric_representation_item);
  size_in_x : length_measure;
  size_in_y : length_measure;
END_ENTITY; -- 10303-46: presentation_resource_schema
 
ENTITY planar_pair
SUBTYPE OF (kinematic_pair);
END_ENTITY; -- 10303-105: kinematic_structure_schema
 
ENTITY planar_pair_range
SUBTYPE OF (simple_pair_range);
  SELF\simple_pair_range.applies_to_pair : planar_pair;
  lower_limit_actual_rotation : rotational_range_measure;
  upper_limit_actual_rotation : rotational_range_measure;
  lower_limit_actual_translation_x : translational_range_measure;
  upper_limit_actual_translation_x : translational_range_measure;
  lower_limit_actual_translation_y : translational_range_measure;
  upper_limit_actual_translation_y : translational_range_measure;
WHERE
  wr1 : ('AUTOMOTIVE_DESIGN.UNLIMITED_RANGE' IN TYPEOF(
    lower_limit_actual_rotation)) OR ('AUTOMOTIVE_DESIGN.UNLIMITED_RANGE' IN
     TYPEOF(upper_limit_actual_rotation)) XOR (lower_limit_actual_rotation < 
    upper_limit_actual_rotation);
  wr2 : ('AUTOMOTIVE_DESIGN.UNLIMITED_RANGE' IN TYPEOF(
    lower_limit_actual_translation_x)) OR (
    'AUTOMOTIVE_DESIGN.UNLIMITED_RANGE' IN TYPEOF(
    upper_limit_actual_translation_x)) XOR (lower_limit_actual_translation_x < 
    upper_limit_actual_translation_x);
  wr3 : ('AUTOMOTIVE_DESIGN.UNLIMITED_RANGE' IN TYPEOF(
    lower_limit_actual_translation_y)) OR (
    'AUTOMOTIVE_DESIGN.UNLIMITED_RANGE' IN TYPEOF(
    upper_limit_actual_translation_y)) XOR (lower_limit_actual_translation_y < 
    upper_limit_actual_translation_y);
END_ENTITY; -- 10303-105: kinematic_structure_schema
 
ENTITY planar_pair_value
SUBTYPE OF (pair_value);
  SELF\pair_value.applies_to_pair : planar_pair;
  actual_rotation : plane_angle_measure;
  actual_translation_x : length_measure;
  actual_translation_y : length_measure;
END_ENTITY; -- 10303-105: kinematic_structure_schema
 
ENTITY planar_shape_representation
SUBTYPE OF (shape_representation);
WHERE
  wr1 : SIZEOF(SELF.items) = 1;
  wr2 : SIZEOF(QUERY(i <* SELF.items | 'AUTOMOTIVE_DESIGN.' + 'PLANE' IN 
    TYPEOF(i))) = 1;
  wr3 : SELF.name IN ['profile limit', 'maximum feature limit'];
  wr4 : (SELF.name <> 'maximum feature limit') OR (SIZEOF(QUERY(pdr <* USEDIN(
    SELF, 
    'AUTOMOTIVE_DESIGN.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION'
    ) | SIZEOF(QUERY(sa <* get_shape_aspects(pdr.definition\property_definition
    .definition) | SIZEOF(['AUTOMOTIVE_DESIGN.' + 'INSTANCED_FEATURE', 
    'AUTOMOTIVE_DESIGN.' + 'PLACED_FEATURE'] * TYPEOF(sa)) = 1)) = 1)) = 1);
  wr5 : (SELF.name <> 'profile limit') OR (SIZEOF(QUERY(pdr <* USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION'
    ) | SIZEOF(QUERY(sa <* get_shape_aspects(pdr.definition\property_definition
    .definition) | SIZEOF(['AUTOMOTIVE_DESIGN.' + 'OPEN_PATH_PROFILE', 
    'AUTOMOTIVE_DESIGN.' + 'PARTIAL_CIRCULAR_PROFILE', 
    'AUTOMOTIVE_DESIGN.' + 'ROUNDED_U_PROFILE', 'AUTOMOTIVE_DESIGN.' + 
    'SQUARE_U_PROFILE', 'AUTOMOTIVE_DESIGN.' + 'TEE_PROFILE', 
    'AUTOMOTIVE_DESIGN.' + 'VEE_PROFILE'] * TYPEOF(sa)) = 1)) = 1)) = 1);
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY plane
SUBTYPE OF (elementary_surface);
END_ENTITY; -- 10303-42: geometry_schema
 
ENTITY plane_angle_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
  wr1 : 'AUTOMOTIVE_DESIGN.PLANE_ANGLE_UNIT' IN TYPEOF(SELF\
    measure_with_unit.unit_component);
END_ENTITY; -- 10303-41: measure_schema
 
ENTITY plane_angle_unit
SUBTYPE OF (named_unit);
WHERE
  wr1 : (SELF\named_unit.dimensions.length_exponent = 0.000000) AND (SELF\
    named_unit.dimensions.mass_exponent = 0.000000) AND (SELF\named_unit
    .dimensions.time_exponent = 0.000000) AND (SELF\named_unit.dimensions.
    electric_current_exponent = 0.000000) AND (SELF\named_unit.dimensions.
    thermodynamic_temperature_exponent = 0.000000) AND (SELF\named_unit.
    dimensions.amount_of_substance_exponent = 0.000000) AND (SELF\named_unit.
    dimensions.luminous_intensity_exponent = 0.000000);
END_ENTITY; -- 10303-41: measure_schema
 
ENTITY plus_expression
SUBTYPE OF (multiple_arity_numeric_expression);
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY plus_minus_tolerance;
  range : tolerance_method_definition;
  toleranced_dimension : dimensional_characteristic;
UNIQUE
  ur1 : toleranced_dimension;
END_ENTITY; -- 10303-47: shape_tolerance_schema
 
ENTITY pocket
SUBTYPE OF (feature_definition);
WHERE
  wr1 : SELF.description IN ['open rectangular', 'closed rectangular', 
    'complex'];
  wr2 : (SELF.description <> 'complex') OR (SIZEOF(QUERY(sa <* 
    get_shape_aspects(SELF) | (sa.description = 'boundary occurrence') AND (
    SIZEOF(QUERY(sar <* USEDIN(sa, 
    'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)) AND
     (sar.description = 'profile usage') AND (SIZEOF(['AUTOMOTIVE_DESIGN.'
     + 'CIRCULAR_CLOSED_PROFILE', 'AUTOMOTIVE_DESIGN.' + 
    'NGON_CLOSED_PROFILE', 'AUTOMOTIVE_DESIGN.' + 'CLOSED_PATH_PROFILE', 
    'AUTOMOTIVE_DESIGN.' + 'PARTIAL_CIRCULAR_PROFILE', 
    'AUTOMOTIVE_DESIGN.' + 'ROUNDED_U_PROFILE', 'AUTOMOTIVE_DESIGN.' + 
    'VEE_PROFILE', 'AUTOMOTIVE_DESIGN.' + 'TEE_PROFILE', 
    'AUTOMOTIVE_DESIGN.' + 'OPEN_PATH_PROFILE'] * TYPEOF(sar.
    relating_shape_aspect)) = 1))) = 1))) = 1);
  wr3 : (SELF.description <> 'closed rectangular') OR (SIZEOF(QUERY(sa <* 
    get_shape_aspects(SELF) | (sa.description = 'closed boundary occurrence') 
    AND (SIZEOF(QUERY(sar <* USEDIN(sa, 
    'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)) AND
     (sar.description = 'profile usage') AND ('AUTOMOTIVE_DESIGN.' + 
    'RECTANGULAR_CLOSED_PROFILE' IN TYPEOF(sar.relating_shape_aspect)))) = 1)))
     = 1);
  wr4 : (SELF.description <> 'open rectangular') OR (SIZEOF(QUERY(sa <* 
    get_shape_aspects(SELF) | (sa.description = 'open boundary occurrence') AND
     (SIZEOF(QUERY(sar <* USEDIN(sa, 
    'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)) AND
     (sar.description = 'profile usage') AND ('AUTOMOTIVE_DESIGN.' + 
    'SQUARE_U_PROFILE' IN TYPEOF(sar.relating_shape_aspect)))) = 1))) = 1);
  wr5 : SIZEOF(QUERY(sa <* get_shape_aspects(SELF) | (sa.description = 
    'pocket depth occurrence') AND (SIZEOF(QUERY(sar <* USEDIN(sa, 
    'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)) AND
     (sar.name = 'pocket depth') AND (sar.description = 
    'path feature component usage') AND ('AUTOMOTIVE_DESIGN.' + 
    'PATH_FEATURE_COMPONENT' IN TYPEOF(sar.relating_shape_aspect)) AND (sar.
    relating_shape_aspect.description = 'linear'))) = 1))) = 1;
  wr6 : SIZEOF(QUERY(sa <* get_shape_aspects(SELF) | (sa.description = 
    'bottom condition occurrence') AND (SIZEOF(QUERY(sar <* USEDIN(sa, 
    'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | (
    'AUTOMOTIVE_DESIGN.' + 'FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)) 
    AND (sar.description = 'pocket bottom usage') AND ('AUTOMOTIVE_DESIGN.'
     + 'POCKET_BOTTOM' IN TYPEOF(sar.relating_shape_aspect)))) = 1))) = 1;
  wr7 : SIZEOF(QUERY(sa <* get_shape_aspects(SELF) | (sa.description = 
    'change in boundary occurrence') AND (SIZEOF(QUERY(sar <* USEDIN(sa, 
    'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | (
    'AUTOMOTIVE_DESIGN.' + 'FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)) 
    AND (sar.description = 'taper usage') AND ('AUTOMOTIVE_DESIGN.' + 
    'TAPER' IN TYPEOF(sar.relating_shape_aspect)) AND (sar.
    relating_shape_aspect.description IN ['angle taper', 'directed taper'])))
     = 1))) <= 1;
  wr8 : SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND NOT ({1 <= SIZEOF(pdr.used_representation.
    items) <= 2}))) = 0;
  wr9 : SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | NOT (i.name IN ['orientation', 'fillet radius 1']))) > 0))) = 0;
  wr10 : SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'base radius') AND (SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'MEASURE_REPRESENTATION_ITEM', 'AUTOMOTIVE_DESIGN.' + 
    'LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2))) = 1))) <= 1;
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY pocket_bottom
SUBTYPE OF (shape_aspect);
WHERE
  wr1 : 'AUTOMOTIVE_DESIGN.' + 'FEATURE_COMPONENT_DEFINITION' IN TYPEOF(SELF
    .of_shape.definition);
  wr2 : SELF.description IN ['planar', 'complex', 'through'];
  wr3 : NOT (SELF.description IN ['planar', 'complex']) OR (SIZEOF(QUERY(pdr
     <* get_shape_aspect_property_definition_representations(SELF) | 
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation))) <= 1) AND (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(pdr.used_representation.items) = 1) 
    AND (SIZEOF(QUERY(i <* pdr.used_representation.items | (i.name = 'radius') 
    AND (SIZEOF(['AUTOMOTIVE_DESIGN.' + 'MEASURE_REPRESENTATION_ITEM', 
    'AUTOMOTIVE_DESIGN.' + 'LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2)))
     = 1))) <= 1);
  wr4 : NOT (SELF.description IN ['planar', 'complex']) OR (SIZEOF(QUERY(sar
     <* USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') | (
    'AUTOMOTIVE_DESIGN.' + 'FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)) 
    AND (sar.name IN ['starting', 'ending']))) = 1);
  wr5 : (SELF.description <> 'complex') OR (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | 
    'AUTOMOTIVE_DESIGN.' + 'FACE_SHAPE_REPRESENTATION' IN TYPEOF(pdr.
    used_representation))) = 1) AND (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'FACE_SHAPE_REPRESENTATION' IN TYPEOF(pdr.
    used_representation)) AND (pdr.used_representation.name = 'floor'))) = 1);
  wr6 : (SELF.description <> 'planar') OR (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | 
    'AUTOMOTIVE_DESIGN.' + 'LOCATION_SHAPE_REPRESENTATION' IN TYPEOF(pdr.
    used_representation))) = 1) AND (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'LOCATION_SHAPE_REPRESENTATION' IN TYPEOF(pdr.
    used_representation)) AND (pdr.used_representation.name = 'floor location')
    )) = 1);
  wr7 : (SELF.description <> 'planar') OR (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | 
    'AUTOMOTIVE_DESIGN.' + 'DIRECTION_SHAPE_REPRESENTATION' IN TYPEOF(pdr.
    used_representation))) = 1) AND (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'DIRECTION_SHAPE_REPRESENTATION' IN TYPEOF(pdr.
    used_representation)) AND (pdr.used_representation.name = 'floor normal')))
     = 1);
  wr8 : (SELF.description <> 'through') OR (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | 
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation))) = 0);
  wr9 : (SIZEOF(QUERY(sar <* USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') | 
    'AUTOMOTIVE_DESIGN.' + 'FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)))
     = 1) AND (SIZEOF(QUERY(sar <* USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') | (
    'AUTOMOTIVE_DESIGN.' + 'FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)) 
    AND (sar.description = 'pocket bottom usage') AND ('AUTOMOTIVE_DESIGN.'
     + 'POCKET' IN TYPEOF(sar.related_shape_aspect.of_shape.definition)) AND (
    sar.related_shape_aspect.of_shape.definition\characterized_object.
    description = 'bottom condition occurrence'))) = 1);
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY point
SUPERTYPE OF (ONEOF (cartesian_point, point_on_curve, point_on_surface, 
point_replica, degenerate_pcurve))
SUBTYPE OF (geometric_representation_item);
END_ENTITY; -- 10303-42: geometry_schema
 
ENTITY point_on_curve
SUBTYPE OF (point);
  basis_curve : curve;
  point_parameter : parameter_value;
END_ENTITY; -- 10303-42: geometry_schema
 
ENTITY point_on_planar_curve_pair
SUBTYPE OF (kinematic_pair);
  pair_curve : curve;
  orientation : BOOLEAN;
WHERE
  wr1 : frame_associated_to_background(SELF\kinematic_pair.
    pair_placement_in_first_link_context, pair_curve);
END_ENTITY; -- 10303-105: kinematic_structure_schema
 
ENTITY point_on_planar_curve_pair_range
SUBTYPE OF (simple_pair_range);
  SELF\simple_pair_range.applies_to_pair : point_on_planar_curve_pair;
  range_on_pair_curve : trimmed_curve;
  lower_limit_yaw : rotational_range_measure;
  upper_limit_yaw : rotational_range_measure;
  lower_limit_pitch : rotational_range_measure;
  upper_limit_pitch : rotational_range_measure;
  lower_limit_roll : rotational_range_measure;
  upper_limit_roll : rotational_range_measure;
WHERE
  wr1 : SELF\simple_pair_range.applies_to_pair\point_on_planar_curve_pair.
    pair_curve :=: range_on_pair_curve.basis_curve;
  wr2 : ('AUTOMOTIVE_DESIGN.UNLIMITED_RANGE' IN TYPEOF(lower_limit_yaw)) OR 
    ('AUTOMOTIVE_DESIGN.UNLIMITED_RANGE' IN TYPEOF(upper_limit_yaw)) XOR (
    lower_limit_yaw < upper_limit_yaw);
  wr3 : ('AUTOMOTIVE_DESIGN.UNLIMITED_RANGE' IN TYPEOF(lower_limit_pitch)) 
    OR ('AUTOMOTIVE_DESIGN.UNLIMITED_RANGE' IN TYPEOF(upper_limit_pitch)) 
    XOR (lower_limit_pitch < upper_limit_pitch);
  wr4 : ('AUTOMOTIVE_DESIGN.UNLIMITED_RANGE' IN TYPEOF(lower_limit_roll)) OR
     ('AUTOMOTIVE_DESIGN.UNLIMITED_RANGE' IN TYPEOF(upper_limit_roll)) XOR (
    lower_limit_roll < upper_limit_roll);
END_ENTITY; -- 10303-105: kinematic_structure_schema
 
ENTITY point_on_planar_curve_pair_value
SUBTYPE OF (pair_value);
  SELF\pair_value.applies_to_pair : point_on_planar_curve_pair;
  actual_point_on_curve : point_on_curve;
  input_orientation : spatial_rotation;
DERIVE
  actual_orientation : ypr_rotation := convert_spatial_to_ypr_rotation(SELF\
  pair_value.applies_to_pair, input_orientation);
WHERE
  wr1 : SELF\pair_value.applies_to_pair\point_on_planar_curve_pair.pair_curve
     :=: actual_point_on_curve.basis_curve;
END_ENTITY; -- 10303-105: kinematic_structure_schema
 
ENTITY point_on_surface
SUBTYPE OF (point);
  basis_surface : surface;
  point_parameter_u : parameter_value;
  point_parameter_v : parameter_value;
END_ENTITY; -- 10303-42: geometry_schema
 
ENTITY point_on_surface_pair
SUBTYPE OF (kinematic_pair);
  pair_surface : surface;
WHERE
  wr1 : frame_associated_to_background(SELF\kinematic_pair.
    pair_placement_in_first_link_context, pair_surface);
END_ENTITY; -- 10303-105: kinematic_structure_schema
 
ENTITY point_on_surface_pair_range
SUBTYPE OF (simple_pair_range);
  SELF\simple_pair_range.applies_to_pair : point_on_surface_pair;
  range_on_pair_surface : rectangular_trimmed_surface;
  lower_limit_yaw : rotational_range_measure;
  upper_limit_yaw : rotational_range_measure;
  lower_limit_pitch : rotational_range_measure;
  upper_limit_pitch : rotational_range_measure;
  lower_limit_roll : rotational_range_measure;
  upper_limit_roll : rotational_range_measure;
WHERE
  wr1 : SELF\simple_pair_range.applies_to_pair\point_on_surface_pair.
    pair_surface :=: range_on_pair_surface.basis_surface;
  wr2 : ('AUTOMOTIVE_DESIGN.UNLIMITED_RANGE' IN TYPEOF(lower_limit_yaw)) OR 
    ('AUTOMOTIVE_DESIGN.UNLIMITED_RANGE' IN TYPEOF(upper_limit_yaw)) XOR (
    lower_limit_yaw < upper_limit_yaw);
  wr3 : ('AUTOMOTIVE_DESIGN.UNLIMITED_RANGE' IN TYPEOF(lower_limit_pitch)) 
    OR ('AUTOMOTIVE_DESIGN.UNLIMITED_RANGE' IN TYPEOF(upper_limit_pitch)) 
    XOR (lower_limit_pitch < upper_limit_pitch);
  wr4 : ('AUTOMOTIVE_DESIGN.UNLIMITED_RANGE' IN TYPEOF(lower_limit_roll)) OR
     ('AUTOMOTIVE_DESIGN.UNLIMITED_RANGE' IN TYPEOF(upper_limit_roll)) XOR (
    lower_limit_roll < upper_limit_roll);
END_ENTITY; -- 10303-105: kinematic_structure_schema
 
ENTITY point_on_surface_pair_value
SUBTYPE OF (pair_value);
  SELF\pair_value.applies_to_pair : point_on_surface_pair;
  actual_point_on_surface : point_on_surface;
  input_orientation : spatial_rotation;
DERIVE
  actual_orientation : ypr_rotation := convert_spatial_to_ypr_rotation(SELF\
  pair_value.applies_to_pair, input_orientation);
WHERE
  wr1 : SELF\pair_value.applies_to_pair\point_on_surface_pair.pair_surface :=: 
    actual_point_on_surface.basis_surface;
END_ENTITY; -- 10303-105: kinematic_structure_schema
 
ENTITY point_placement_shape_representation
SUBTYPE OF (shape_representation);
WHERE
  wr1 : SIZEOF(QUERY(i <* SELF.items | SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'COMPOUND_REPRESENTATION_ITEM', 'AUTOMOTIVE_DESIGN.' + 'MAPPED_ITEM', 
    'AUTOMOTIVE_DESIGN.' + 'AXIS2_PLACEMENT_3D'] * TYPEOF(i)) <> 1)) = 0;
  wr2 : SIZEOF(QUERY(i <* SELF.items | SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'COMPOUND_REPRESENTATION_ITEM', 'AUTOMOTIVE_DESIGN.' + 'MAPPED_ITEM'] * 
    TYPEOF(i)) = 1)) > 0;
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY point_replica
SUBTYPE OF (point);
  parent_pt : point;
  transformation : cartesian_transformation_operator;
WHERE
  wr1 : transformation.dim = parent_pt.dim;
  wr2 : acyclic_point_replica(SELF, parent_pt);
END_ENTITY; -- 10303-42: geometry_schema
 
ENTITY point_style;
  name : label;
  marker : marker_select;
  marker_size : size_select;
  marker_colour : colour;
END_ENTITY; -- 10303-46: presentation_appearance_schema
 
ENTITY poly_loop
SUBTYPE OF (loop, geometric_representation_item);
  polygon :  LIST [3:?] OF UNIQUE cartesian_point;
END_ENTITY; -- 10303-42: topology_schema
 
ENTITY polyline
SUBTYPE OF (bounded_curve);
  points :  LIST [2:?] OF cartesian_point;
END_ENTITY; -- 10303-42: geometry_schema
 
ENTITY position_tolerance
SUBTYPE OF (geometric_tolerance);
WHERE
  wr1 : NOT ('AUTOMOTIVE_DESIGN.' + 
    'GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE' IN TYPEOF(SELF)) OR (SIZEOF(SELF
    \geometric_tolerance_with_datum_reference.datum_system) <= 3);
END_ENTITY; -- 10303-519: aic_geometric_tolerances
 
ENTITY power_expression
SUBTYPE OF (binary_numeric_expression);
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY pre_defined_colour
SUBTYPE OF (pre_defined_item, colour);
END_ENTITY; -- 10303-46: presentation_resource_schema
 
ENTITY pre_defined_curve_font
SUBTYPE OF (pre_defined_item);
END_ENTITY; -- 10303-46: presentation_appearance_schema
 
ENTITY pre_defined_dimension_symbol
SUBTYPE OF (pre_defined_symbol);
WHERE
  wr1 : SELF.name IN ['arc length', 'conical taper', 'counterbore', 
    'countersink', 'depth', 'diameter', 'plus minus', 'radius', 'slope', 
    'spherical diameter', 'spherical radius', 'square'];
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY pre_defined_geometrical_tolerance_symbol
SUBTYPE OF (pre_defined_symbol);
WHERE
  wr1 : SELF.name IN ['angularity', 'basic dimension', 
    'blanked datum reference', 'circular runout', 'circularity', 
    'concentricity', 'cylindricity', 'datum target identification', 'diameter'
    , 'filled datum reference', 'flatness', 'least material condition', 
    'maximum material condition', 'parallelism', 'perpendicularity', 'position'
    , 'profile of a line', 'profile of a surface', 'projected tolerance zone', 
    'regardless of feature size', 'straightness', 'symmetry', 'total runout'];
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY pre_defined_item;
  name : label;
END_ENTITY; -- 10303-41: external_reference_schema
 
ENTITY pre_defined_marker
SUBTYPE OF (pre_defined_item);
END_ENTITY; -- 10303-46: presentation_appearance_schema
 
ENTITY pre_defined_point_marker_symbol
SUBTYPE OF (pre_defined_marker, pre_defined_symbol);
WHERE
  wr1 : SELF.name IN ['asterisk', 'circle', 'dot', 'plus', 'square', 'triangle'
    , 'x'];
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY pre_defined_presentation_style
SUBTYPE OF (pre_defined_item);
END_ENTITY; -- 10303-46: presentation_appearance_schema
 
ENTITY pre_defined_surface_condition_symbol
SUBTYPE OF (pre_defined_symbol);
WHERE
  wr1 : SELF.name IN ['000', '010', '020', '030', '040', '050', '060', '070', 
    '001', '011', '021', '031', '041', '051', '061', '071', '100', '110', '120'
    , '130', '140', '150', '160', '170', '101', '111', '121', '131', '141', 
    '151', '161', '171', '200', '210', '220', '230', '240', '250', '260', '270'
    , '201', '211', '221', '231', '241', '251', '261', '271'];
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY pre_defined_symbol
SUBTYPE OF (pre_defined_item);
END_ENTITY; -- 10303-46: presentation_definition_schema
 
ENTITY pre_defined_terminator_symbol
SUBTYPE OF (pre_defined_symbol);
WHERE
  wr1 : SELF.name IN ['blanked arrow', 'blanked box', 'blanked dot', 
    'dimension origin', 'filled arrow', 'filled box', 'filled dot', 
    'integral symbol', 'open arrow', 'slash', 'unfilled arrow'];
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY pre_defined_text_font
SUBTYPE OF (pre_defined_item);
END_ENTITY; -- 10303-46: presentation_resource_schema
 
ENTITY precision_qualifier;
  precision_value : INTEGER;
END_ENTITY; -- 10303-45: qualified_measure_schema
 
ENTITY presentation_area
SUBTYPE OF (presentation_representation);
WHERE
  wr1 : (SIZEOF(QUERY(ais <* USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.AREA_IN_SET.AREA') | SIZEOF(USEDIN(ais, 
    'AUTOMOTIVE_DESIGN.PRESENTATION_SIZE.UNIT')) = 1)) > 0) OR (SIZEOF(
    USEDIN(SELF, 'AUTOMOTIVE_DESIGN.PRESENTATION_SIZE.UNIT')) = 1);
END_ENTITY; -- 10303-46: presentation_organization_schema
 
ENTITY presentation_layer_assignment;
  name : label;
  description : text;
  assigned_items : SET [1:?] OF layered_item;
END_ENTITY; -- 10303-46: presentation_organization_schema
 
ENTITY presentation_representation
SUBTYPE OF (representation);
WHERE
  wr1 : SELF\representation.context_of_items\geometric_representation_context.
    coordinate_space_dimension = 2;
  wr2 : 'AUTOMOTIVE_DESIGN.GEOMETRIC_REPRESENTATION_CONTEXT' IN TYPEOF(SELF\
    representation.context_of_items);
END_ENTITY; -- 10303-46: presentation_organization_schema
 
ENTITY presentation_set;
INVERSE
  areas : SET [1:?] OF area_in_set FOR in_set;
END_ENTITY; -- 10303-46: presentation_organization_schema
 
ENTITY presentation_size;
  unit : presentation_size_assignment_select;
  size : planar_box;
WHERE
  wr1 : ('AUTOMOTIVE_DESIGN.PRESENTATION_REPRESENTATION' IN TYPEOF(SELF.unit
    )) AND item_in_context(SELF.size, SELF.unit\representation.context_of_items
    ) OR ('AUTOMOTIVE_DESIGN.AREA_IN_SET' IN TYPEOF(SELF.unit)) AND (SIZEOF(
    QUERY(ais <* SELF.unit\area_in_set.in_set.areas | NOT item_in_context(SELF.
    size, ais.area\representation.context_of_items))) = 0);
END_ENTITY; -- 10303-46: presentation_organization_schema
 
ENTITY presentation_style_assignment;
  styles : SET [1:?] OF presentation_style_select;
WHERE
  wr1 : SIZEOF(QUERY(style1 <* SELF.styles | NOT (SIZEOF(QUERY(style2 <* SELF.
    styles - style1 | NOT ((TYPEOF(style1) <> TYPEOF(style2)) OR (SIZEOF([
    'AUTOMOTIVE_DESIGN.' + 'SURFACE_STYLE_USAGE', 'AUTOMOTIVE_DESIGN.' + 
    'EXTERNALLY_DEFINED_STYLE'] * TYPEOF(style1)) = 1)))) = 0))) = 0;
  wr2 : SIZEOF(QUERY(style1 <* SELF.styles | 
    'AUTOMOTIVE_DESIGN.SURFACE_STYLE_USAGE' IN TYPEOF(style1))) <= 2;
END_ENTITY; -- 10303-46: presentation_appearance_schema
 
ENTITY presentation_style_by_context
SUBTYPE OF (presentation_style_assignment);
  style_context : style_context_select;
END_ENTITY; -- 10303-46: presentation_appearance_schema
 
ENTITY presentation_view
SUBTYPE OF (presentation_representation);
END_ENTITY; -- 10303-46: presentation_organization_schema
 
ENTITY presented_item ABSTRACT SUPERTYPE;
END_ENTITY; -- 10303-46: presentation_organization_schema
 
ENTITY presented_item_representation;
  presentation : presentation_representation_select;
  item : presented_item;
END_ENTITY; -- 10303-46: presentation_organization_schema
 
ENTITY prismatic_pair
SUBTYPE OF (kinematic_pair);
END_ENTITY; -- 10303-105: kinematic_structure_schema
 
ENTITY prismatic_pair_range
SUBTYPE OF (simple_pair_range);
  SELF\simple_pair_range.applies_to_pair : prismatic_pair;
  lower_limit_actual_translation : translational_range_measure;
  upper_limit_actual_translation : translational_range_measure;
WHERE
  wr1 : ('AUTOMOTIVE_DESIGN.UNLIMITED_RANGE' IN TYPEOF(
    lower_limit_actual_translation)) OR ('AUTOMOTIVE_DESIGN.UNLIMITED_RANGE'
     IN TYPEOF(upper_limit_actual_translation)) XOR (
    lower_limit_actual_translation < upper_limit_actual_translation);
END_ENTITY; -- 10303-105: kinematic_structure_schema
 
ENTITY prismatic_pair_value
SUBTYPE OF (pair_value);
  SELF\pair_value.applies_to_pair : prismatic_pair;
  actual_translation : length_measure;
END_ENTITY; -- 10303-105: kinematic_structure_schema
 
ENTITY process_operation
SUBTYPE OF (action_method);
WHERE
  wr1 : SIZEOF(QUERY(amr <* USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.ACTION_METHOD_RELATIONSHIP.RELATING_METHOD') | NOT (
    'AUTOMOTIVE_DESIGN.' + 'PROCESS_OPERATION' IN TYPEOF(amr.related_method)
    ) OR (SELF :=: amr.related_method))) = 0;
  wr2 : SIZEOF(QUERY(amr <* USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.ACTION_METHOD_RELATIONSHIP.RELATED_METHOD') | NOT (
    'AUTOMOTIVE_DESIGN.' + 'PROCESS_OPERATION' IN TYPEOF(amr.relating_method
    )) OR (SELF :=: amr.relating_method))) = 0;
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY process_plan
SUBTYPE OF (action);
WHERE
  wr1 : SIZEOF(QUERY(ar <* USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.ACTION_RELATIONSHIP.RELATED_ACTION') | SIZEOF([
    'AUTOMOTIVE_DESIGN.' + 'PROCESS_PLAN', 'AUTOMOTIVE_DESIGN.' + 
    'PRODUCT_PROCESS_PLAN'] * TYPEOF(ar.relating_action)) <> 1)) = 0;
  wr2 : SIZEOF(QUERY(ar <* USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.ACTION_RELATIONSHIP.RELATING_ACTION') | (SIZEOF([
    'AUTOMOTIVE_DESIGN.' + 'PROCESS_PLAN', 'AUTOMOTIVE_DESIGN.' + 
    'PRODUCT_PROCESS_PLAN'] * TYPEOF(ar.related_action)) = 1) OR (ar.name = 
    'process operation occurrence') AND ('AUTOMOTIVE_DESIGN.' + 
    'PROCESS_OPERATION' IN TYPEOF(ar.related_action.chosen_method)))) = SIZEOF(
    USEDIN(SELF, 'AUTOMOTIVE_DESIGN.ACTION_RELATIONSHIP.RELATING_ACTION'));
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY process_product_association;
  name : label;
  description : text;
  defined_product : characterized_product_definition;
  process : product_definition_process;
END_ENTITY; -- 10303-49: process_property_schema
 
ENTITY process_property_association;
  name : label;
  description : text;
  process : property_process;
  property_or_shape : property_or_shape_select;
END_ENTITY; -- 10303-49: process_property_schema
 
ENTITY product;
  id : identifier;
  name : label;
  description :  OPTIONAL text;
  frame_of_reference : SET [1:?] OF product_context;
END_ENTITY; -- 10303-41: product_definition_schema
 
ENTITY product_category;
  name : label;
  description :  OPTIONAL text;
DERIVE
  id : identifier := get_id_value(SELF);
WHERE
  wr1 : SIZEOF(USEDIN(SELF, 'AUTOMOTIVE_DESIGN.ID_ATTRIBUTE.IDENTIFIED_ITEM'
    )) <= 1;
END_ENTITY; -- 10303-41: product_definition_schema
 
ENTITY product_category_relationship;
  name : label;
  description :  OPTIONAL text;
  category : product_category;
  sub_category : product_category;
WHERE
  wr1 : acyclic_product_category_relationship(SELF, [SELF.sub_category]);
END_ENTITY; -- 10303-41: product_definition_schema
 
ENTITY product_class
SUBTYPE OF (product_concept, characterized_object);
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY product_concept;
  id : identifier;
  name : label;
  description :  OPTIONAL text;
  market_context : product_concept_context;
UNIQUE
  ur1 : id;
END_ENTITY; -- 10303-44: product_concept_schema
 
ENTITY product_concept_context
SUBTYPE OF (application_context_element);
  market_segment_type : label;
END_ENTITY; -- 10303-41: application_context_schema
 
ENTITY product_concept_feature;
  id : identifier;
  name : label;
  description :  OPTIONAL text;
END_ENTITY; -- 10303-44: product_concept_schema
 
ENTITY product_concept_feature_association;
  name : label;
  description :  OPTIONAL text;
  concept : product_concept;
  feature : product_concept_feature;
END_ENTITY; -- 10303-44: product_concept_schema
 
ENTITY product_concept_feature_category
SUBTYPE OF (group);
WHERE
  wr1 : SIZEOF(QUERY(aga <* USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.GROUP_ASSIGNMENT.ASSIGNED_GROUP') | (
    'AUTOMOTIVE_DESIGN.' + 'APPLIED_GROUP_ASSIGNMENT' IN TYPEOF(aga)) AND ((
    aga.role.name <> 'specification category member') OR (SIZEOF(QUERY(i <* aga
    .items | ('AUTOMOTIVE_DESIGN.' + 'PRODUCT_CONCEPT_FEATURE' IN TYPEOF(i))
     AND NOT ('AUTOMOTIVE_DESIGN.' + 'CONDITIONAL_CONCEPT_FEATURE' IN TYPEOF
    (i)))) <> SIZEOF(aga.items))))) = 0;
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY product_concept_feature_category_usage
SUBTYPE OF (group_assignment);
  items : SET [1:?] OF category_usage_item;
WHERE
  wr1 : 'AUTOMOTIVE_DESIGN.' + 'PRODUCT_CONCEPT_FEATURE_CATEGORY' IN TYPEOF(
    SELF.assigned_group);
  wr2 : SELF.role.name IN ['mandatory category usage', 
    'optional category usage'];
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY product_concept_relationship;
  name : label;
  description :  OPTIONAL text;
  relating_product_concept : product_concept;
  related_product_concept : product_concept;
END_ENTITY; -- 10303-44: product_concept_schema
 
ENTITY product_context
SUBTYPE OF (application_context_element);
  discipline_type : label;
END_ENTITY; -- 10303-41: application_context_schema
 
ENTITY product_definition;
  id : identifier;
  description :  OPTIONAL text;
  formation : product_definition_formation;
  frame_of_reference : product_definition_context;
DERIVE
  name : label := get_name_value(SELF);
WHERE
  wr1 : SIZEOF(USEDIN(SELF, 'AUTOMOTIVE_DESIGN.NAME_ATTRIBUTE.NAMED_ITEM'))
     <= 1;
END_ENTITY; -- 10303-41: product_definition_schema
 
ENTITY product_definition_context
SUBTYPE OF (application_context_element);
  life_cycle_stage : label;
END_ENTITY; -- 10303-41: application_context_schema
 
ENTITY product_definition_context_association;
  definition : product_definition;
  frame_of_reference : product_definition_context;
  role : product_definition_context_role;
END_ENTITY; -- 10303-41: product_definition_schema
 
ENTITY product_definition_context_role;
  name : label;
  description :  OPTIONAL text;
END_ENTITY; -- 10303-41: product_definition_schema
 
ENTITY product_definition_effectivity
SUBTYPE OF (effectivity);
  usage : product_definition_relationship;
WHERE
  wr1 : SIZEOF(USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.EFFECTIVITY_ASSIGNMENT.ASSIGNED_EFFECTIVITY')) = 0;
END_ENTITY; -- 10303-41: product_definition_schema
 
ENTITY product_definition_formation;
  id : identifier;
  description :  OPTIONAL text;
  of_product : product;
UNIQUE
  ur1 : id, of_product;
END_ENTITY; -- 10303-41: product_definition_schema
 
ENTITY product_definition_formation_relationship;
  id : identifier;
  name : label;
  description :  OPTIONAL text;
  relating_product_definition_formation : product_definition_formation;
  related_product_definition_formation : product_definition_formation;
END_ENTITY; -- 10303-41: product_definition_schema
 
ENTITY product_definition_formation_with_specified_source
SUBTYPE OF (product_definition_formation);
  make_or_buy : source;
END_ENTITY; -- 10303-41: product_definition_schema
 
ENTITY product_definition_occurrence_relationship;
  name : label;
  description :  OPTIONAL text;
  occurrence : product_definition;
  occurrence_usage : assembly_component_usage;
WHERE
  wr1 : occurrence_usage.relating_product_definition :<>: occurrence;
  wr2 : occurrence_usage.related_product_definition :<>: occurrence;
  wr3 : occurrence.formation :=: occurrence_usage.related_product_definition.
    formation;
END_ENTITY; -- 10303-44: product_structure_schema
 
ENTITY product_definition_process
SUBTYPE OF (action);
  identification : identifier;
INVERSE
  product_definitions : SET [1:?] OF process_product_association FOR process;
END_ENTITY; -- 10303-49: process_property_schema
 
ENTITY product_definition_relationship;
  id : identifier;
  name : label;
  description :  OPTIONAL text;
  relating_product_definition : product_definition;
  related_product_definition : product_definition;
END_ENTITY; -- 10303-41: product_definition_schema
 
ENTITY product_definition_resource
SUBTYPE OF (action_resource, product_definition);
WHERE
  wr1 : SIZEOF(USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.REQUIREMENT_FOR_ACTION_RESOURCE.RESOURCES')) > 0;
  wr2 : SELF.frame_of_reference.name IN ['part_definition', 'part occurrence', 
    'physical occurrence'];
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY product_definition_shape
SUBTYPE OF (property_definition);
UNIQUE
  ur1 : SELF\property_definition.definition;
WHERE
  wr1 : SIZEOF(['AUTOMOTIVE_DESIGN.CHARACTERIZED_PRODUCT_DEFINITION', 
    'AUTOMOTIVE_DESIGN.CHARACTERIZED_OBJECT'] * TYPEOF(SELF\
    property_definition.definition)) > 0;
END_ENTITY; -- 10303-41: product_property_definition_schema
 
ENTITY product_definition_substitute;
  description :  OPTIONAL text;
  context_relationship : product_definition_relationship;
  substitute_definition : product_definition;
DERIVE
  name : label := get_name_value(SELF);
WHERE
  wr1 : context_relationship.related_product_definition :<>: 
    substitute_definition;
  wr2 : SIZEOF(USEDIN(SELF, 'AUTOMOTIVE_DESIGN.NAME_ATTRIBUTE.NAMED_ITEM'))
     <= 1;
END_ENTITY; -- 10303-41: product_definition_schema
 
ENTITY product_definition_usage
SUPERTYPE OF (ONEOF (make_from_usage_option, assembly_component_usage))
SUBTYPE OF (product_definition_relationship);
UNIQUE
  ur1 : SELF\product_definition_relationship.id, SELF\
    product_definition_relationship.relating_product_definition, SELF\
    product_definition_relationship.related_product_definition;
WHERE
  wr1 : acyclic_product_definition_relationship(SELF, [SELF\
    product_definition_relationship.related_product_definition], 
    'AUTOMOTIVE_DESIGN.PRODUCT_DEFINITION_USAGE');
END_ENTITY; -- 10303-44: product_structure_schema
 
ENTITY product_definition_with_associated_documents
SUBTYPE OF (product_definition);
  documentation_ids : SET [1:?] OF document;
END_ENTITY; -- 10303-41: product_definition_schema
 
ENTITY product_identification
SUBTYPE OF (configuration_item, characterized_object);
WHERE
  wr1 : SIZEOF(QUERY(cd <* USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.CONFIGURATION_DESIGN.CONFIGURATION') | (
    'AUTOMOTIVE_DESIGN.' + 'PRODUCT_DEFINITION_FORMATION' IN TYPEOF(cd.
    design)) AND (SIZEOF(QUERY(prpc <* USEDIN(cd.design\
    product_definition_formation.of_product, 
    'AUTOMOTIVE_DESIGN.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') | prpc.
    name IN ['part', 'raw material', 'tool'])) > 0))) <= 1;
  wr2 : 'AUTOMOTIVE_DESIGN.' + 'PRODUCT_CLASS' IN TYPEOF(SELF.item_concept);
  wr3 : NOT ('AUTOMOTIVE_DESIGN.' + 'CONFIGURABLE_ITEM' IN TYPEOF(SELF)) OR 
    ('AUTOMOTIVE_DESIGN.' + 'PRODUCT_SPECIFICATION' IN TYPEOF(SELF));
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY product_process_plan
SUBTYPE OF (product_definition_process);
WHERE
  wr1 : SIZEOF(QUERY(ar <* USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.ACTION_RELATIONSHIP.RELATED_ACTION') | SIZEOF([
    'AUTOMOTIVE_DESIGN.' + 'PROCESS_PLAN', 'AUTOMOTIVE_DESIGN.' + 
    'PRODUCT_PROCESS_PLAN'] * TYPEOF(ar.relating_action)) <> 1)) = 0;
  wr2 : SIZEOF(QUERY(ar <* USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.ACTION_RELATIONSHIP.RELATING_ACTION') | (SIZEOF([
    'AUTOMOTIVE_DESIGN.' + 'PROCESS_PLAN', 'AUTOMOTIVE_DESIGN.' + 
    'PRODUCT_PROCESS_PLAN'] * TYPEOF(ar.related_action)) = 1) OR (ar.name = 
    'process operation occurrence') AND ('AUTOMOTIVE_DESIGN.' + 
    'PROCESS_OPERATION' IN TYPEOF(ar.related_action.chosen_method)))) = SIZEOF(
    USEDIN(SELF, 'AUTOMOTIVE_DESIGN.ACTION_RELATIONSHIP.RELATING_ACTION'));
  wr3 : SIZEOF(QUERY(ppa <* USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.PROCESS_PRODUCT_ASSOCIATION.PROCESS') | (ppa.name <> 
    'produced output') OR NOT ('AUTOMOTIVE_DESIGN.' + 'PRODUCT_DEFINITION' 
    IN TYPEOF(ppa.defined_product)))) = 0;
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY product_related_product_category
SUBTYPE OF (product_category);
  products : SET [1:?] OF product;
END_ENTITY; -- 10303-41: product_definition_schema
 
ENTITY product_specification
SUBTYPE OF (product_identification, configurable_item);
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY projected_zone_definition
SUBTYPE OF (tolerance_zone_definition);
  projection_end : shape_aspect;
  projected_length : measure_with_unit;
WHERE
  wr1 : ('NUMBER' IN TYPEOF(projected_length\measure_with_unit.value_component)
    ) AND (projected_length\measure_with_unit.value_component > 0.0);
  wr2 : derive_dimensional_exponents(projected_length\measure_with_unit.
    unit_component) = dimensional_exponents(1, 0, 0, 0, 0, 0, 0);
END_ENTITY; -- 10303-47: shape_tolerance_schema
 
ENTITY projection_curve
SUBTYPE OF (annotation_curve_occurrence);
END_ENTITY; -- 10303-101: draughting_element_schema
 
ENTITY projection_directed_callout
SUBTYPE OF (draughting_callout);
WHERE
  wr1 : SIZEOF(QUERY(p_1 <* SELF\draughting_callout.contents | 
    'AUTOMOTIVE_DESIGN.PROJECTION_CURVE' IN TYPEOF(p_1))) = 1;
  wr2 : SIZEOF(SELF\draughting_callout.contents) >= 2;
END_ENTITY; -- 10303-101: draughting_element_schema
 
ENTITY promissory_usage_occurrence
SUBTYPE OF (assembly_component_usage);
END_ENTITY; -- 10303-44: product_structure_schema
 
ENTITY property_definition;
  name : label;
  description :  OPTIONAL text;
  definition : characterized_definition;
DERIVE
  id : identifier := get_id_value(SELF);
WHERE
  wr1 : SIZEOF(USEDIN(SELF, 'AUTOMOTIVE_DESIGN.ID_ATTRIBUTE.IDENTIFIED_ITEM'
    )) <= 1;
END_ENTITY; -- 10303-41: product_property_definition_schema
 
ENTITY property_definition_relationship;
  name : label;
  description : text;
  relating_property_definition : property_definition;
  related_property_definition : property_definition;
END_ENTITY; -- 10303-45: material_property_definition_schema
 
ENTITY property_definition_representation;
  definition : represented_definition;
  used_representation : representation;
DERIVE
  description : text := get_description_value(SELF);
  name : label := get_name_value(SELF);
WHERE
  wr1 : SIZEOF(USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
  wr2 : SIZEOF(USEDIN(SELF, 'AUTOMOTIVE_DESIGN.NAME_ATTRIBUTE.NAMED_ITEM'))
     <= 1;
END_ENTITY; -- 10303-41: product_property_representation_schema
 
ENTITY property_process
SUBTYPE OF (action);
  identification : identifier;
INVERSE
  properties : SET [1:?] OF process_property_association FOR process;
END_ENTITY; -- 10303-49: process_property_schema
 
ENTITY qualified_representation_item
SUBTYPE OF (representation_item);
  qualifiers : SET [1:?] OF value_qualifier;
WHERE
  wr1 : SIZEOF(QUERY(temp <* qualifiers | 
    'AUTOMOTIVE_DESIGN.PRECISION_QUALIFIER' IN TYPEOF(temp))) < 2;
END_ENTITY; -- 10303-45: qualified_measure_schema
 
ENTITY qualitative_uncertainty
SUBTYPE OF (uncertainty_qualifier);
  uncertainty_value : text;
END_ENTITY; -- 10303-45: qualified_measure_schema
 
ENTITY quantified_assembly_component_usage
SUBTYPE OF (assembly_component_usage);
  quantity : measure_with_unit;
WHERE
  wr1 : NOT ('NUMBER' IN TYPEOF(quantity.value_component)) OR (quantity.
    value_component > 0);
END_ENTITY; -- 10303-44: product_structure_schema
 
ENTITY quasi_uniform_curve
SUBTYPE OF (b_spline_curve);
END_ENTITY; -- 10303-42: geometry_schema
 
ENTITY quasi_uniform_surface
SUBTYPE OF (b_spline_surface);
END_ENTITY; -- 10303-42: geometry_schema
 
ENTITY rack_and_pinion_pair
SUBTYPE OF (kinematic_pair);
  pinion_radius : length_measure;
END_ENTITY; -- 10303-105: kinematic_structure_schema
 
ENTITY rack_and_pinion_pair_range
SUBTYPE OF (simple_pair_range);
  SELF\simple_pair_range.applies_to_pair : rack_and_pinion_pair;
  lower_limit_rack_displacement : translational_range_measure;
  upper_limit_rack_displacement : translational_range_measure;
WHERE
  wr1 : ('AUTOMOTIVE_DESIGN.UNLIMITED_RANGE' IN TYPEOF(
    lower_limit_rack_displacement)) OR ('AUTOMOTIVE_DESIGN.UNLIMITED_RANGE' 
    IN TYPEOF(upper_limit_rack_displacement)) XOR (
    lower_limit_rack_displacement < upper_limit_rack_displacement);
END_ENTITY; -- 10303-105: kinematic_structure_schema
 
ENTITY rack_and_pinion_pair_value
SUBTYPE OF (pair_value);
  SELF\pair_value.applies_to_pair : rack_and_pinion_pair;
  actual_displacement : length_measure;
DERIVE
  actual_rotation : plane_angle_measure := 
  convert_plane_angle_for_pair_from_radian(SELF\pair_value.applies_to_pair, -
  actual_displacement/SELF\pair_value.applies_to_pair\rack_and_pinion_pair.
  pinion_radius);
END_ENTITY; -- 10303-105: kinematic_structure_schema
 
ENTITY radius_dimension
SUBTYPE OF (dimension_curve_directed_callout);
WHERE
  wr1 : SIZEOF(QUERY(con <* SELF.contents | 
    'AUTOMOTIVE_DESIGN.PROJECTION_CURVE' IN TYPEOF(con))) <= 1;
END_ENTITY; -- 10303-506: aic_draughting_elements
 
ENTITY ratio_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
  wr1 : 'AUTOMOTIVE_DESIGN.RATIO_UNIT' IN TYPEOF(SELF\measure_with_unit.
    unit_component);
END_ENTITY; -- 10303-41: measure_schema
 
ENTITY ratio_unit
SUBTYPE OF (named_unit);
WHERE
  wr1 : (SELF\named_unit.dimensions.length_exponent = 0.000000) AND (SELF\
    named_unit.dimensions.mass_exponent = 0.000000) AND (SELF\named_unit
    .dimensions.time_exponent = 0.000000) AND (SELF\named_unit.dimensions.
    electric_current_exponent = 0.000000) AND (SELF\named_unit.dimensions.
    thermodynamic_temperature_exponent = 0.000000) AND (SELF\named_unit.
    dimensions.amount_of_substance_exponent = 0.000000) AND (SELF\named_unit.
    dimensions.luminous_intensity_exponent = 0.000000);
END_ENTITY; -- 10303-41: measure_schema
 
ENTITY rational_b_spline_curve
SUBTYPE OF (b_spline_curve);
  weights_data :  LIST [2:?] OF REAL;
DERIVE
  weights :  ARRAY [0 : upper_index_on_control_points] OF REAL := list_to_array
  (weights_data, 0, upper_index_on_control_points);
WHERE
  wr1 : SIZEOF(weights_data) = SIZEOF(SELF\b_spline_curve.control_points_list);
  wr2 : curve_weights_positive(SELF);
END_ENTITY; -- 10303-42: geometry_schema
 
ENTITY rational_b_spline_surface
SUBTYPE OF (b_spline_surface);
  weights_data :  LIST [2:?] OF  LIST [2:?] OF REAL;
DERIVE
  weights :  ARRAY [0 : u_upper] OF  ARRAY [0 : v_upper] OF REAL := 
  make_array_of_array(weights_data, 0, u_upper, 0, v_upper);
WHERE
  wr1 : (SIZEOF(weights_data) = SIZEOF(SELF\b_spline_surface.
    control_points_list)) AND (SIZEOF(weights_data[1]) = SIZEOF(SELF\
    b_spline_surface.control_points_list[1]));
  wr2 : surface_weights_positive(SELF);
END_ENTITY; -- 10303-42: geometry_schema
 
ENTITY real_defined_function ABSTRACT SUPERTYPE
SUBTYPE OF (numeric_defined_function);
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY real_literal
SUBTYPE OF (literal_number);
  SELF\literal_number.the_value : REAL;
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY real_numeric_variable
SUBTYPE OF (numeric_variable);
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY rectangular_closed_profile
SUBTYPE OF (shape_aspect);
WHERE
  wr1 : 'AUTOMOTIVE_DESIGN.' + 'FEATURE_COMPONENT_DEFINITION' IN TYPEOF(SELF
    .of_shape.definition);
  wr2 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | 
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation))) = 1;
  wr3 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND {3 <= SIZEOF(pdr.used_representation.items)
     <= 4})) = 1;
  wr4 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | NOT (i.name IN ['orientation', 'length', 'width', 'corner radius'])
    )) > 0))) = 0;
  wr5 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | ('AUTOMOTIVE_DESIGN.' + 'PLACEMENT' IN TYPEOF(i)) AND (i.name = 
    'orientation'))) = 1))) = 1;
  wr6 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (SIZEOF(['AUTOMOTIVE_DESIGN.' + 'MEASURE_REPRESENTATION_ITEM', 
    'AUTOMOTIVE_DESIGN.' + 'LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2) AND
     (i.name = 'width'))) = 1))) = 1;
  wr7 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (SIZEOF(['AUTOMOTIVE_DESIGN.' + 'MEASURE_REPRESENTATION_ITEM', 
    'AUTOMOTIVE_DESIGN.' + 'LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2) AND
     (i.name = 'length'))) = 1))) = 1;
  wr8 : (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | i.name = 'corner radius')) = 1))) <= 1) AND (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | SIZEOF(['AUTOMOTIVE_DESIGN.' + 'MEASURE_REPRESENTATION_ITEM', 
    'AUTOMOTIVE_DESIGN.' + 'LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2)) = 
    1))) <= 1);
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY rectangular_composite_surface
SUBTYPE OF (bounded_surface);
  segments :  LIST [1:?] OF  LIST [1:?] OF surface_patch;
DERIVE
  n_u : INTEGER := SIZEOF(segments);
  n_v : INTEGER := SIZEOF(segments[1]);
WHERE
  wr1 : SIZEOF(QUERY(s <* segments | n_v <> SIZEOF(s))) = 0;
  wr2 : constraints_rectangular_composite_surface(SELF);
END_ENTITY; -- 10303-42: geometry_schema
 
ENTITY rectangular_pattern
SUBTYPE OF (replicate_feature);
WHERE
  wr1 : SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'DIRECTION_SHAPE_REPRESENTATION' IN TYPEOF(pdr.
    used_representation)) AND (pdr.used_representation.name = 
    'row layout direction'))) = 1;
  wr2 : SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'DIRECTION_SHAPE_REPRESENTATION' IN TYPEOF(pdr.
    used_representation)) AND (pdr.used_representation.name = 
    'column layout direction'))) = 1;
  wr3 : SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(pdr.used_representation.items) = 5)))
     = 1;
  wr4 : SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'number of rows') AND ('AUTOMOTIVE_DESIGN.' + 
    'MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND ('AUTOMOTIVE_DESIGN.' + 
    'COUNT_MEASURE' IN TYPEOF(i\measure_with_unit.value_component)))) = 1))) = 
    1;
  wr5 : SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'number of columnws') AND ('AUTOMOTIVE_DESIGN.' + 
    'MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND ('AUTOMOTIVE_DESIGN.' + 
    'COUNT_MEASURE' IN TYPEOF(i\measure_with_unit.value_component)))) = 1))) = 
    1;
  wr6 : SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'row spacing') AND (SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'MEASURE_REPRESENTATION_ITEM', 'AUTOMOTIVE_DESIGN.' + 
    'LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2))) = 1))) = 1;
  wr7 : SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'column spacing') AND (SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'MEASURE_REPRESENTATION_ITEM', 'AUTOMOTIVE_DESIGN.' + 
    'LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2))) = 1))) = 1;
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY rectangular_trimmed_surface
SUBTYPE OF (bounded_surface);
  basis_surface : surface;
  u1 : parameter_value;
  u2 : parameter_value;
  v1 : parameter_value;
  v2 : parameter_value;
  usense : BOOLEAN;
  vsense : BOOLEAN;
WHERE
  wr1 : u1 <> u2;
  wr2 : v1 <> v2;
  wr3 : ('AUTOMOTIVE_DESIGN.ELEMENTARY_SURFACE' IN TYPEOF(basis_surface)) 
    AND NOT ('AUTOMOTIVE_DESIGN.PLANE' IN TYPEOF(basis_surface)) OR (
    'AUTOMOTIVE_DESIGN.SURFACE_OF_REVOLUTION' IN TYPEOF(basis_surface)) OR (
    usense = (u2 > u1));
  wr4 : ('AUTOMOTIVE_DESIGN.SPHERICAL_SURFACE' IN TYPEOF(basis_surface)) OR 
    ('AUTOMOTIVE_DESIGN.TOROIDAL_SURFACE' IN TYPEOF(basis_surface)) OR (
    vsense = (v2 > v1));
END_ENTITY; -- 10303-42: geometry_schema
 
ENTITY referenced_modified_datum
SUBTYPE OF (datum_reference);
  modifier : limit_condition;
END_ENTITY; -- 10303-47: shape_aspect_definition_schema
 
ENTITY relative_event_occurrence
SUBTYPE OF (event_occurrence);
  base_event : event_occurrence;
  offset : time_measure_with_unit;
END_ENTITY; -- 10303-41: date_time_schema
 
ENTITY rep_item_group
SUBTYPE OF (group, representation_item);
WHERE
  wr1 : SIZEOF(USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.PRESENTATION_LAYER_ASSIGNMENT.ASSIGNED_ITEMS')) > 0;
  wr2 : SIZEOF(QUERY(r <* USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.REPRESENTATION.ITEMS') | r.name = 
    'group representation')) > 0;
  wr3 : SIZEOF(QUERY(ga <* USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.GROUP_ASSIGNMENT.ASSIGNED_GROUP') | ga.role.name <> 
    'group membership')) = 0;
  wr4 : SIZEOF(['AUTOMOTIVE_DESIGN.' + 'GEOMETRIC_REPRESENTATION_ITEM', 
    'AUTOMOTIVE_DESIGN.' + 'TOPOLOGICAL_REPRESENTATION_ITEM', 
    'AUTOMOTIVE_DESIGN.' + 'MAPPED_ITEM', 'AUTOMOTIVE_DESIGN.' + 
    'STYLED_ITEM'] * TYPEOF(SELF)) = 1;
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY reparametrised_composite_curve_segment
SUBTYPE OF (composite_curve_segment);
  param_length : parameter_value;
WHERE
  wr1 : param_length > 0.0;
END_ENTITY; -- 10303-42: geometry_schema
 
ENTITY replicate_feature
SUBTYPE OF (feature_definition);
WHERE
  wr1 : SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | 
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation))) = 1;
  wr2 : SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'orientation') AND ('AUTOMOTIVE_DESIGN.' + 'PLACEMENT'
     IN TYPEOF(i)))) = 1))) = 1;
  wr3 : SIZEOF(QUERY(sa <* get_shape_aspects(SELF) | SIZEOF(QUERY(sar <* USEDIN
    (sa, 'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT'
    ) | ('AUTOMOTIVE_DESIGN.' + 'FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(
    sar)) AND (sar.name = 'pattern basis') AND ('AUTOMOTIVE_DESIGN.' + 
    'FEATURE_DEFINITION' IN TYPEOF(sar.related_shape_aspect.of_shape.definition
    )))) = 1)) = 1;
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY representation;
  name : label;
  items : SET [1:?] OF representation_item;
  context_of_items : representation_context;
DERIVE
  id : identifier := get_id_value(SELF);
  description : text := get_description_value(SELF);
WHERE
  wr1 : SIZEOF(USEDIN(SELF, 'AUTOMOTIVE_DESIGN.ID_ATTRIBUTE.IDENTIFIED_ITEM'
    )) <= 1;
  wr2 : SIZEOF(USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
END_ENTITY; -- 10303-43: representation_schema
 
ENTITY representation_context;
  context_identifier : identifier;
  context_type : text;
INVERSE
  representations_in_context : SET [1:?] OF representation FOR context_of_items
  ;
END_ENTITY; -- 10303-43: representation_schema
 
ENTITY representation_item;
  name : label;
WHERE
  wr1 : SIZEOF(using_representations(SELF)) > 0;
END_ENTITY; -- 10303-43: representation_schema
 
ENTITY representation_map;
  mapping_origin : representation_item;
  mapped_representation : representation;
INVERSE
  map_usage : SET [1:?] OF mapped_item FOR mapping_source;
WHERE
  wr1 : item_in_context(SELF.mapping_origin, SELF.mapped_representation.
    context_of_items);
END_ENTITY; -- 10303-43: representation_schema
 
ENTITY representation_relationship;
  name : label;
  description :  OPTIONAL text;
  rep_1 : representation;
  rep_2 : representation;
END_ENTITY; -- 10303-43: representation_schema
 
ENTITY representation_relationship_with_transformation
SUBTYPE OF (representation_relationship);
  transformation_operator : transformation;
WHERE
  wr1 : SELF\representation_relationship.rep_1.context_of_items :<>: SELF\
    representation_relationship.rep_2.context_of_items;
END_ENTITY; -- 10303-43: representation_schema
 
ENTITY requirement_for_action_resource
SUBTYPE OF (action_resource_requirement);
  resources : SET [1:?] OF action_resource;
END_ENTITY; -- 10303-49: process_property_schema
 
ENTITY resource_property;
  name : label;
  description : text;
  resource : characterized_resource_definition;
END_ENTITY; -- 10303-49: process_property_schema
 
ENTITY resource_property_representation;
  name : label;
  description : text;
  property : resource_property;
  representation : representation;
END_ENTITY; -- 10303-49: process_property_representation_schema
 
ENTITY resource_requirement_type;
  name : label;
  description : text;
END_ENTITY; -- 10303-49: process_property_schema
 
ENTITY resulting_path
SUBTYPE OF (motion_link_relationship);
  controlling_joints : SET [1:?] OF kinematic_joint;
END_ENTITY; -- 10303-105: kinematic_analysis_control_and_result_schema
 
ENTITY retention
SUBTYPE OF (action);
WHERE
  wr1 : SIZEOF(QUERY(aa <* USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.ACTION_ASSIGNMENT.ASSIGNED_ACTION') | (
    'AUTOMOTIVE_DESIGN.' + 'APPLIED_ACTION_ASSIGNMENT' IN TYPEOF(aa)) AND (
    aa.role.name = 'retention'))) >= 1;
  wr2 : (SIZEOF(QUERY(atia <* USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.APPLIED_TIME_INTERVAL_ASSIGNMENT.ITEMS') | atia.role.
    name = 'minimum retention period')) = 1) AND (SIZEOF(QUERY(atia <* USEDIN(
    SELF, 'AUTOMOTIVE_DESIGN.APPLIED_TIME_INTERVAL_ASSIGNMENT.ITEMS') | atia
    .role.name = 'maximum retention period')) = 1) AND (SIZEOF(QUERY(atia1 <* 
    USEDIN(SELF, 'AUTOMOTIVE_DESIGN.APPLIED_TIME_INTERVAL_ASSIGNMENT.ITEMS')
     | (atia1.role.name = 'minimum retention period') AND (
    'AUTOMOTIVE_DESIGN.' + 'TIME_INTERVAL_WITH_BOUNDS' IN TYPEOF(atia1.
    assigned_time_interval)) AND (EXISTS(atia1.assigned_time_interval\
    time_interval_with_bounds.secondary_bound) OR EXISTS(atia1.
    assigned_time_interval\time_interval_with_bounds.duration)) AND (SIZEOF(
    QUERY(atia2 <* USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.APPLIED_TIME_INTERVAL_ASSIGNMENT.ITEMS') | (atia2.
    role.name = 'maximum retention period') AND ('AUTOMOTIVE_DESIGN.' + 
    'TIME_INTERVAL_WITH_BOUNDS' IN TYPEOF(atia2.assigned_time_interval)) AND (
    EXISTS(atia2.assigned_time_interval\time_interval_with_bounds.
    secondary_bound) OR EXISTS(atia2.assigned_time_interval\
    time_interval_with_bounds.duration)) AND (atia1.assigned_time_interval\
    time_interval_with_bounds.primary_bound :=: atia2.assigned_time_interval\
    time_interval_with_bounds.primary_bound))) = 1))) = 1);
  wr3 : SIZEOF(USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.ACTION_RELATIONSHIP.RELATING_ACTION')) + SIZEOF(
    USEDIN(SELF, 'AUTOMOTIVE_DESIGN.ACTION_RELATIONSHIP.RELATED_ACTION')) = 
    0;
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY revolute_pair
SUBTYPE OF (kinematic_pair);
END_ENTITY; -- 10303-105: kinematic_structure_schema
 
ENTITY revolute_pair_range
SUBTYPE OF (simple_pair_range);
  SELF\simple_pair_range.applies_to_pair : revolute_pair;
  lower_limit_actual_rotation : rotational_range_measure;
  upper_limit_actual_rotation : rotational_range_measure;
WHERE
  wr1 : ('AUTOMOTIVE_DESIGN.UNLIMITED_RANGE' IN TYPEOF(
    lower_limit_actual_rotation)) OR ('AUTOMOTIVE_DESIGN.UNLIMITED_RANGE' IN
     TYPEOF(upper_limit_actual_rotation)) XOR (lower_limit_actual_rotation < 
    upper_limit_actual_rotation);
END_ENTITY; -- 10303-105: kinematic_structure_schema
 
ENTITY revolute_pair_value
SUBTYPE OF (pair_value);
  SELF\pair_value.applies_to_pair : revolute_pair;
  actual_rotation : plane_angle_measure;
END_ENTITY; -- 10303-105: kinematic_structure_schema
  
ENTITY revolved_area_solid
SUBTYPE OF (swept_area_solid);
  axis : axis1_placement;
  angle : plane_angle_measure;
DERIVE
  axis_line : line := representation_item('')||geometric_representation_item()
  ||curve()||line(axis.location, representation_item('')||
  geometric_representation_item()||vector(axis.z, 1.0));
END_ENTITY; -- 10303-42: geometric_model_schema
 
ENTITY revolved_face_solid
SUBTYPE OF (swept_face_solid);
  axis : axis1_placement;
  angle : plane_angle_measure;
DERIVE
  axis_line : line := representation_item('')||geometric_representation_item()
  ||curve()||line(axis.location, representation_item('')||
  geometric_representation_item()||vector(axis.z, 1.0));
END_ENTITY; -- 10303-42: geometric_model_schema
 
ENTITY rib
SUBTYPE OF (feature_definition);
WHERE
  wr1 : SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND NOT ({1 <= SIZEOF(pdr.used_representation.
    items) <= 3}))) = 0;
  wr2 : SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | NOT (i.name IN ['orientation', 'fillet radius', 'shoulder radius'])
    )) > 0))) = 0;
  wr3 : SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'fillet radius') AND (SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'MEASURE_REPRESENTATION_ITEM', 'AUTOMOTIVE_DESIGN.' + 
    'LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2))) = 1))) <= 1;
  wr4 : SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'shoulder radius') AND (SIZEOF(['AUTOMOTIVE_DESIGN.'
     + 'MEASURE_REPRESENTATION_ITEM', 'AUTOMOTIVE_DESIGN.' + 
    'LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2))) = 1))) <= 1;
  wr5 : SIZEOF(QUERY(sa <* get_shape_aspects(SELF) | (sa.description = 
    'swept shape occurrence') AND (SIZEOF(QUERY(sar <* USEDIN(sa, 
    'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)) AND
     (sar.description = 'profile usage') AND (SIZEOF(['AUTOMOTIVE_DESIGN.'
     + 'PARTIAL_CIRCULAR_PROFILE', 'AUTOMOTIVE_DESIGN.' + 'SQUARE_U_PROFILE'
    , 'AUTOMOTIVE_DESIGN.' + 'ROUNDED_U_PROFILE', 'AUTOMOTIVE_DESIGN.' + 
    'TEE_PROFILE', 'AUTOMOTIVE_DESIGN.' + 'VEE_PROFILE', 
    'AUTOMOTIVE_DESIGN.' + 'OPEN_PATH_PROFILE'] * TYPEOF(sar.
    relating_shape_aspect)) = 1))) = 1))) = 1;
  wr6 : SIZEOF(QUERY(sa <* get_shape_aspects(SELF) | (sa.description = 
    'course of travel occurrence') AND (SIZEOF(QUERY(sar <* USEDIN(sa, 
    'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)) AND
     (sar.name = 'course of travel') AND ('AUTOMOTIVE_DESIGN.' + 
    'PATH_FEATURE_COMPONENT' IN TYPEOF(sar.relating_shape_aspect)))) = 1))) = 1
    ;
  wr7 : SIZEOF(QUERY(sa <* get_shape_aspects(SELF) | (sa.description = 
    'change in boundary occurrence') AND (SIZEOF(QUERY(sar <* USEDIN(sa, 
    'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | (
    'AUTOMOTIVE_DESIGN.' + 'FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)) 
    AND (sar.description = 'taper usage') AND ('AUTOMOTIVE_DESIGN.' + 
    'TAPER' IN TYPEOF(sar.relating_shape_aspect)) AND (sar.
    relating_shape_aspect.description = 'directed taper'))) = 1))) <= 1;
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY right_angular_wedge
SUBTYPE OF (geometric_representation_item);
  position : axis2_placement_3d;
  x : positive_length_measure;
  y : positive_length_measure;
  z : positive_length_measure;
  ltx : length_measure;
WHERE
  wr1 : (0.0 <= ltx) AND (ltx < x);
END_ENTITY; -- 10303-42: geometric_model_schema
 
ENTITY right_circular_cone
SUBTYPE OF (geometric_representation_item);
  position : axis1_placement;
  height : positive_length_measure;
  radius : length_measure;
  semi_angle : plane_angle_measure;
WHERE
  wr1 : radius >= 0.0;
END_ENTITY; -- 10303-42: geometric_model_schema
 
ENTITY right_circular_cylinder
SUBTYPE OF (geometric_representation_item);
  position : axis1_placement;
  height : positive_length_measure;
  radius : positive_length_measure;
END_ENTITY; -- 10303-42: geometric_model_schema
 
ENTITY role_association;
  role : object_role;
  item_with_role : role_select;
END_ENTITY; -- 10303-41: basic_attribute_schema
 
ENTITY rolling_curve_pair
SUBTYPE OF (planar_curve_pair);
END_ENTITY; -- 10303-105: kinematic_structure_schema
 
ENTITY rolling_curve_pair_value
SUBTYPE OF (pair_value);
  SELF\pair_value.applies_to_pair : rolling_curve_pair;
  actual_point_on_curve_1 : point_on_curve;
WHERE
  wr1 : SELF\pair_value.applies_to_pair\planar_curve_pair.curve_1 :=: 
    actual_point_on_curve_1.basis_curve;
END_ENTITY; -- 10303-105: kinematic_structure_schema
 
ENTITY rolling_surface_pair
SUBTYPE OF (surface_pair);
END_ENTITY; -- 10303-105: kinematic_structure_schema
 
ENTITY rolling_surface_pair_value
SUBTYPE OF (pair_value);
  SELF\pair_value.applies_to_pair : rolling_surface_pair;
  actual_point_on_surface : point_on_surface;
  actual_rotation : plane_angle_measure;
WHERE
  wr1 : SELF\pair_value.applies_to_pair\surface_pair.surface_1 :=: 
    actual_point_on_surface.basis_surface;
END_ENTITY; -- 10303-105: kinematic_structure_schema
 
ENTITY rotation_about_direction;
  direction_of_axis : direction;
  rotation_angle : plane_angle_measure;
WHERE
  wr1 : SIZEOF(direction_of_axis.direction_ratios) = 3;
END_ENTITY; -- 10303-105: kinematic_structure_schema
 
ENTITY round_hole
SUBTYPE OF (feature_definition);
WHERE
  wr1 : SIZEOF(QUERY(sa <* get_shape_aspects(SELF) | (sa.description = 
    'diameter occurrence') AND (SIZEOF(QUERY(sar <* USEDIN(sa, 
    'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)) AND
     (sar.name = 'diameter') AND (sar.description = 'profile usage') AND (
    'AUTOMOTIVE_DESIGN.' + 'CIRCULAR_CLOSED_PROFILE' IN TYPEOF(sar.
    relating_shape_aspect)))) = 1))) = 1;
  wr2 : SIZEOF(QUERY(sa <* get_shape_aspects(SELF) | (sa.description = 
    'hole depth occurrence') AND (SIZEOF(QUERY(sar <* USEDIN(sa, 
    'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)) AND
     (sar.name = 'hole depth') AND (sar.description = 
    'path feature component usage') AND ('AUTOMOTIVE_DESIGN.' + 
    'PATH_FEATURE_COMPONENT' IN TYPEOF(sar.relating_shape_aspect)) AND (sar.
    relating_shape_aspect.description = 'linear'))) = 1))) = 1;
  wr3 : SIZEOF(QUERY(sa <* get_shape_aspects(SELF) | (sa.description = 
    'bottom condition occurrence') AND (SIZEOF(QUERY(sar <* USEDIN(sa, 
    'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | (
    'AUTOMOTIVE_DESIGN.' + 'FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)) 
    AND (sar.description = 'hole bottom usage') AND ('AUTOMOTIVE_DESIGN.' + 
    'HOLE_BOTTOM' IN TYPEOF(sar.relating_shape_aspect)))) = 1))) <= 1;
  wr4 : SIZEOF(QUERY(sa <* get_shape_aspects(SELF) | (sa.description = 
    'change in diameter occurrence') AND (SIZEOF(QUERY(sar <* USEDIN(sa, 
    'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | (
    'AUTOMOTIVE_DESIGN.' + 'FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)) 
    AND (sar.description = 'taper usage') AND ('AUTOMOTIVE_DESIGN.' + 
    'TAPER' IN TYPEOF(sar.relating_shape_aspect)))) = 1))) = 1;
  wr5 : SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(pdr.used_representation.items) <> 1))
    ) = 0;
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY rounded_u_profile
SUBTYPE OF (shape_aspect);
WHERE
  wr1 : 'AUTOMOTIVE_DESIGN.' + 'FEATURE_COMPONENT_DEFINITION' IN TYPEOF(SELF
    .of_shape.definition);
  wr2 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | 
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation))) = 1;
  wr3 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(pdr.used_representation.items) = 2)))
     = 1;
  wr4 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | NOT (i.name IN ['width', 'orientation']))) > 0))) = 0;
  wr5 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | ('AUTOMOTIVE_DESIGN.' + 'PLACEMENT' IN TYPEOF(i)) AND (i.name = 
    'orientation'))) = 1))) = 1;
  wr6 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (SIZEOF(['AUTOMOTIVE_DESIGN.' + 'MEASURE_REPRESENTATION_ITEM', 
    'AUTOMOTIVE_DESIGN.' + 'LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2) AND
     (i.name = 'width'))) = 1))) = 1;
  wr7 : (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | 
    'AUTOMOTIVE_DESIGN.' + 'PLANAR_SHAPE_REPRESENTATION' IN TYPEOF(pdr.
    used_representation))) <= 1) AND (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'PLANAR_SHAPE_REPRESENTATION' IN TYPEOF(pdr.
    used_representation)) AND (pdr.used_representation.name = 'profile limit'))
    ) <= 1);
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY roundness_tolerance
SUBTYPE OF (geometric_tolerance);
WHERE
  wr1 : NOT ('AUTOMOTIVE_DESIGN.' + 
    'GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE' IN TYPEOF(SELF));
END_ENTITY; -- 10303-519: aic_geometric_tolerances
 
ENTITY ruled_surface_swept_area_solid
SUBTYPE OF (surface_curve_swept_area_solid);
WHERE
  wr1 : ('AUTOMOTIVE_DESIGN_LF.B_SPLINE_SURFACE' IN TYPEOF(SELF.
    reference_surface)) AND (SELF.reference_surface\b_spline_surface.u_degree
     = 1);
  wr2 : ('AUTOMOTIVE_DESIGN_LF.PCURVE' IN TYPEOF(SELF.directrix)) OR (
    'AUTOMOTIVE_DESIGN_LF.B_SPLINE_CURVE' IN TYPEOF(SELF.directrix\
    surface_curve.curve_3d)) AND (SELF.directrix\surface_curve.curve_3d\
    b_spline_curve.degree = SELF.reference_surface\b_spline_surface.v_degree);
END_ENTITY; (* declared in: aic_curve_swept_solid *)
 
ENTITY runout_zone_definition
SUBTYPE OF (tolerance_zone_definition);
  orientation : runout_zone_orientation;
END_ENTITY; -- 10303-47: shape_tolerance_schema
 
ENTITY runout_zone_orientation;
  angle : measure_with_unit;
END_ENTITY; -- 10303-47: shape_tolerance_schema
 
ENTITY runout_zone_orientation_reference_direction
SUBTYPE OF (runout_zone_orientation);
  orientation_defining_relationship : shape_aspect_relationship;
END_ENTITY; -- 10303-47: shape_tolerance_schema
 
ENTITY screw_pair
SUBTYPE OF (kinematic_pair);
  pitch : length_measure;
END_ENTITY; -- 10303-105: kinematic_structure_schema
 
ENTITY screw_pair_range
SUBTYPE OF (simple_pair_range);
  SELF\simple_pair_range.applies_to_pair : screw_pair;
  lower_limit_actual_rotation : rotational_range_measure;
  upper_limit_actual_rotation : rotational_range_measure;
WHERE
  wr1 : ('AUTOMOTIVE_DESIGN.UNLIMITED_RANGE' IN TYPEOF(
    lower_limit_actual_rotation)) OR ('AUTOMOTIVE_DESIGN.UNLIMITED_RANGE' IN
     TYPEOF(upper_limit_actual_rotation)) XOR (lower_limit_actual_rotation < 
    upper_limit_actual_rotation);
END_ENTITY; -- 10303-105: kinematic_structure_schema
 
ENTITY screw_pair_value
SUBTYPE OF (pair_value);
  SELF\pair_value.applies_to_pair : screw_pair;
  actual_rotation : plane_angle_measure;
DERIVE
  actual_translation : length_measure := SELF\pair_value.applies_to_pair\
  screw_pair.pitch * plane_angle_for_pair_in_radian(SELF\pair_value.
  applies_to_pair, actual_rotation)/2 * PI;
END_ENTITY; -- 10303-105: kinematic_structure_schema
 
ENTITY seam_curve
SUBTYPE OF (surface_curve);
WHERE
  wr1 : SIZEOF(SELF\surface_curve.associated_geometry) = 2;
  wr2 : associated_surface(SELF\surface_curve.associated_geometry[1]) = 
    associated_surface(SELF\surface_curve.associated_geometry[2]);
  wr3 : 'AUTOMOTIVE_DESIGN.PCURVE' IN TYPEOF(SELF\surface_curve.
    associated_geometry[1]);
  wr4 : 'AUTOMOTIVE_DESIGN.PCURVE' IN TYPEOF(SELF\surface_curve.
    associated_geometry[2]);
END_ENTITY; -- 10303-42: geometry_schema
 
ENTITY seam_edge
SUBTYPE OF (oriented_edge);
  pcurve_reference : pcurve;
WHERE
  wr1 : ('AUTOMOTIVE_DESIGN.EDGE_CURVE' IN TYPEOF(edge_element)) AND (
    'AUTOMOTIVE_DESIGN.SEAM_CURVE' IN TYPEOF(edge_element\edge_curve.
    edge_geometry));
  wr2 : pcurve_reference IN edge_element\edge_curve.edge_geometry\surface_curve
    .associated_geometry;
END_ENTITY; -- 10303-42: topology_schema
 
ENTITY security_classification;
  name : label;
  purpose : text;
  security_level : security_classification_level;
END_ENTITY; -- 10303-41: security_classification_schema
 
ENTITY security_classification_assignment ABSTRACT SUPERTYPE;
  assigned_security_classification : security_classification;
DERIVE
  role : object_role := get_role(SELF);
WHERE
  wr1 : SIZEOF(USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
END_ENTITY; -- 10303-41: management_resources_schema
 
ENTITY security_classification_level;
  name : label;
END_ENTITY; -- 10303-41: security_classification_schema
 
ENTITY serial_numbered_effectivity
SUBTYPE OF (effectivity);
  effectivity_start_id : identifier;
  effectivity_end_id :  OPTIONAL identifier;
END_ENTITY; -- 10303-41: effectivity_schema
 
ENTITY shape_aspect;
  name : label;
  description :  OPTIONAL text;
  of_shape : product_definition_shape;
  product_definitional : LOGICAL;
DERIVE
  id : identifier := get_id_value(SELF);
WHERE
  wr1 : SIZEOF(USEDIN(SELF, 'AUTOMOTIVE_DESIGN.ID_ATTRIBUTE.IDENTIFIED_ITEM'
    )) <= 1;
END_ENTITY; -- 10303-41: product_property_definition_schema
 
ENTITY shape_aspect_associativity
SUBTYPE OF (shape_aspect_relationship);
WHERE
  wr1 : SELF.relating_shape_aspect.product_definitional;
  wr2 : NOT SELF.related_shape_aspect.product_definitional;
  wr3 : SIZEOF(QUERY(pd <* USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF(QUERY(
    sdr <* QUERY(pdr <* USEDIN(pd, 
    'AUTOMOTIVE_DESIGN.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 
    'AUTOMOTIVE_DESIGN.SHAPE_DEFINITION_REPRESENTATION' IN TYPEOF(pdr)) | 
    NOT (SIZEOF(QUERY(it <* sdr.used_representation.items | NOT (
    'AUTOMOTIVE_DESIGN.CURVE' IN TYPEOF(it)) AND (SIZEOF(QUERY(aco <* USEDIN
    (it, 'AUTOMOTIVE_DESIGN.STYLED_ITEM.ITEM') | SIZEOF(TYPEOF(aco) * [
    'AUTOMOTIVE_DESIGN.LEADER_CURVE', 
    'AUTOMOTIVE_DESIGN.PROJECTION_CURVE']) = 1)) + SIZEOF(USEDIN(it, 
    'AUTOMOTIVE_DESIGN.ANNOTATION_FILL_AREA.BOUNDARIES')) >= 1))) = 1))) = 0
    ))) = 0;
  wr4 : SIZEOF(QUERY(pd <* USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF(QUERY(
    sdr <* QUERY(pdr <* USEDIN(pd, 
    'AUTOMOTIVE_DESIGN.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 
    'AUTOMOTIVE_DESIGN.SHAPE_DEFINITION_REPRESENTATION' IN TYPEOF(pdr)) | 
    NOT check_associative_shape_aspects(sdr))) = 0))) = 0;
END_ENTITY; -- 10303-520: aic_associative_draughting_elements
 
ENTITY shape_aspect_deriving_relationship
SUBTYPE OF (shape_aspect_relationship);
WHERE
  wr1 : 'AUTOMOTIVE_DESIGN.DERIVED_SHAPE_ASPECT' IN TYPEOF(SELF\
    shape_aspect_relationship.relating_shape_aspect);
END_ENTITY; -- 10303-47: shape_aspect_definition_schema
 
ENTITY shape_aspect_relationship;
  name : label;
  description :  OPTIONAL text;
  relating_shape_aspect : shape_aspect;
  related_shape_aspect : shape_aspect;
DERIVE
  id : identifier := get_id_value(SELF);
WHERE
  wr1 : SIZEOF(USEDIN(SELF, 'AUTOMOTIVE_DESIGN.ID_ATTRIBUTE.IDENTIFIED_ITEM'
    )) <= 1;
END_ENTITY; -- 10303-41: product_property_definition_schema
 
ENTITY shape_aspect_transition
SUBTYPE OF (shape_aspect_relationship);
WHERE
  wr1 : SIZEOF(QUERY(pdr_1 <* 
    get_shape_aspect_property_definition_representations(SELF.
    relating_shape_aspect) | SIZEOF(QUERY(pdr_2 <* 
    get_shape_aspect_property_definition_representations(SELF.
    related_shape_aspect) | SIZEOF(QUERY(item_1 <* pdr_1.used_representation.
    items | SIZEOF(QUERY(item_2 <* pdr_2.used_representation.items | NOT ((
    'AUTOMOTIVE_DESIGN.' + 'EDGE' IN TYPEOF(item_1)) AND (
    'AUTOMOTIVE_DESIGN.' + 'EDGE' IN TYPEOF(item_2)) XOR (
    'AUTOMOTIVE_DESIGN.' + 'FACE' IN TYPEOF(item_1)) AND (
    'AUTOMOTIVE_DESIGN.' + 'FACE' IN TYPEOF(item_2))))) > 0)) > 0)) > 0)) = 
    0;
  wr2 : SIZEOF(QUERY(pdr_1 <* 
    get_shape_aspect_property_definition_representations(SELF.
    relating_shape_aspect) | SIZEOF(QUERY(pdr_2 <* 
    get_shape_aspect_property_definition_representations(SELF.
    related_shape_aspect) | SIZEOF(QUERY(item_1 <* pdr_1.used_representation.
    items | SIZEOF(QUERY(item_2 <* pdr_2.used_representation.items | (
    'AUTOMOTIVE_DESIGN.' + 'EDGE' IN TYPEOF(item_1)) AND (
    'AUTOMOTIVE_DESIGN.' + 'EDGE' IN TYPEOF(item_2)) AND NOT ((item_1\edge.
    edge_start :=: item_2\edge.edge_start) OR (item_1\edge.edge_start :=:
    item_2\edge.edge_end) OR (item_1\edge.edge_end :=: item_2\edge.edge_start) 
    OR (item_1\edge.edge_end :=: item_2\edge.edge_end)))) > 0)) > 0)) > 0)) = 0
    ;
  wr3 : SIZEOF(QUERY(pdr_1 <* 
    get_shape_aspect_property_definition_representations(SELF.
    relating_shape_aspect) | SIZEOF(QUERY(pdr_2 <* 
    get_shape_aspect_property_definition_representations(SELF.
    related_shape_aspect) | SIZEOF(QUERY(item_1 <* pdr_1.used_representation.
    items | SIZEOF(QUERY(item_2 <* pdr_2.used_representation.items | (
    'AUTOMOTIVE_DESIGN.' + 'FACE' IN TYPEOF(item_1)) AND (
    'AUTOMOTIVE_DESIGN.' + 'FACE' IN TYPEOF(item_2)) AND (SIZEOF(QUERY(f_1
     <* item_1\face.bounds | ('AUTOMOTIVE_DESIGN.' + 'EDGE_LOOP' IN TYPEOF(
    f_1.bound)) AND (SIZEOF(QUERY(f_2 <* item_2\face.bounds | (
    'AUTOMOTIVE_DESIGN.' + 'EDGE_LOOP' IN TYPEOF(f_2.bound)) AND (SIZEOF(
    QUERY(oe_1 <* f_1.bound\path.edge_list | SIZEOF(QUERY(oe_2 <* f_2.bound\
    path.edge_list | oe_1.edge_element :=: oe_2.edge_element)) = 0)) = 0))) = 0
    ))) = 0))) = 0)) = 0)) = 0)) = 0;
  wr4 : SELF.name IN ['g0', 'g1', 'g2'];
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY shape_defining_relationship
SUBTYPE OF (shape_aspect_relationship);
WHERE
  wr1 : (SELF\shape_aspect_relationship.description <> 'profile usage') OR (
    SIZEOF(['AUTOMOTIVE_DESIGN.' + 'RECTANGULAR_CLOSED_PROFILE', 
    'AUTOMOTIVE_DESIGN.' + 'CIRCULAR_CLOSED_PROFILE', 
    'AUTOMOTIVE_DESIGN.' + 'NGON_CLOSED_PROFILE', 'AUTOMOTIVE_DESIGN.' + 
    'CLOSED_PATH_PROFILE', 'AUTOMOTIVE_DESIGN.' + 'OPEN_PATH_PROFILE', 
    'AUTOMOTIVE_DESIGN.' + 'PARTIAL_CIRCULAR_PROFILE', 
    'AUTOMOTIVE_DESIGN.' + 'ROUNDED_U_PROFILE', 'AUTOMOTIVE_DESIGN.' + 
    'SQUARE_U_PROFILE', 'AUTOMOTIVE_DESIGN.' + 'TEE_PROFILE', 
    'AUTOMOTIVE_DESIGN.' + 'VEE_PROFILE'] * TYPEOF(SELF\
    shape_aspect_relationship.relating_shape_aspect)) = 1);
  wr2 : (SELF\shape_aspect_relationship.description <> 
    'path feature component usage') OR ('AUTOMOTIVE_DESIGN.' + 
    'PATH_FEATURE_COMPONENT' IN TYPEOF(SELF\shape_aspect_relationship.
    relating_shape_aspect));
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY shape_definition_representation
SUBTYPE OF (property_definition_representation);
WHERE
  wr1 : ('AUTOMOTIVE_DESIGN.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(SELF.
    definition)) OR ('AUTOMOTIVE_DESIGN.SHAPE_DEFINITION' IN TYPEOF(SELF.
    definition.definition));
  wr2 : 'AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION' IN TYPEOF(SELF.
    used_representation);
END_ENTITY; -- 10303-41: product_property_representation_schema
 
ENTITY shape_dimension_representation
SUBTYPE OF (shape_representation);
WHERE
  wr1 : SIZEOF(QUERY(temp <* SELF\representation.items | NOT (
    'AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(temp)))) = 0;
  wr2 : SIZEOF(SELF\representation.items) <= 3;
  wr3 : SIZEOF(QUERY(pos_mri <* QUERY(real_mri <* SELF\representation.items | 
    'REAL' IN TYPEOF(real_mri\measure_with_unit.value_component)) | NOT (
    pos_mri\measure_with_unit.value_component > 0.0))) = 0;
END_ENTITY; -- 10303-47: shape_dimension_schema
 
ENTITY shape_representation
SUBTYPE OF (representation);
END_ENTITY; -- 10303-41: product_property_representation_schema
 
ENTITY shape_representation_relationship
SUBTYPE OF (representation_relationship);
WHERE
  wr1 : 'AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION' IN TYPEOF(SELF\
    representation_relationship.rep_1) + TYPEOF(SELF\
    representation_relationship.rep_2);
END_ENTITY; -- 10303-41: product_property_representation_schema
 
ENTITY shape_representation_with_parameters
SUBTYPE OF (shape_representation);
WHERE
  wr1 : SIZEOF(QUERY(i <* SELF.items | SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'PLACEMENT', 'AUTOMOTIVE_DESIGN.' + 'MEASURE_REPRESENTATION_ITEM', 
    'AUTOMOTIVE_DESIGN.' + 'DESCRIPTIVE_REPRESENTATION_ITEM'] * TYPEOF(i))
     = 1)) = SIZEOF(SELF.items);
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY shell_based_surface_model
SUBTYPE OF (geometric_representation_item);
  sbsm_boundary : SET [1:?] OF shell;
WHERE
  wr1 : constraints_geometry_shell_based_surface_model(SELF);
END_ENTITY; -- 10303-42: geometric_model_schema
 
ENTITY si_unit
SUBTYPE OF (named_unit);
  prefix :  OPTIONAL si_prefix;
  name : si_unit_name;
DERIVE
  SELF\named_unit.dimensions : dimensional_exponents := dimensions_for_si_unit(
  name);
END_ENTITY; -- 10303-41: measure_schema
 
ENTITY simple_boolean_expression
ABSTRACT SUPERTYPE OF (ONEOF (boolean_literal, boolean_variable))
SUBTYPE OF (boolean_expression, simple_generic_expression);
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY simple_generic_expression
ABSTRACT SUPERTYPE OF (ONEOF (generic_literal, generic_variable))
SUBTYPE OF (generic_expression);
END_ENTITY; (* declared in: iso13584_generic_expressions_schema *)
 
ENTITY simple_numeric_expression
ABSTRACT SUPERTYPE OF (ONEOF (literal_number, numeric_variable))
SUBTYPE OF (numeric_expression, simple_generic_expression);
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY simple_pair_range;
  applies_to_pair : kinematic_pair;
END_ENTITY; -- 10303-105: kinematic_structure_schema
 
ENTITY simple_string_expression
ABSTRACT SUPERTYPE OF (ONEOF (string_literal, string_variable))
SUBTYPE OF (string_expression, simple_generic_expression);
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY sin_function
SUBTYPE OF (unary_function_call);
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY slash_expression
SUBTYPE OF (binary_numeric_expression);
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY sliding_curve_pair
SUBTYPE OF (planar_curve_pair);
END_ENTITY; -- 10303-105: kinematic_structure_schema
 
ENTITY sliding_curve_pair_value
SUBTYPE OF (pair_value);
  SELF\pair_value.applies_to_pair : sliding_curve_pair;
  actual_point_on_curve_1 : point_on_curve;
  actual_point_on_curve_2 : point_on_curve;
WHERE
  wr1 : SELF\pair_value.applies_to_pair\planar_curve_pair.curve_1 :=: 
    actual_point_on_curve_1.basis_curve;
  wr2 : SELF\pair_value.applies_to_pair\planar_curve_pair.curve_2 :=: 
    actual_point_on_curve_2.basis_curve;
END_ENTITY; -- 10303-105: kinematic_structure_schema
 
ENTITY sliding_surface_pair
SUBTYPE OF (surface_pair);
END_ENTITY; -- 10303-105: kinematic_structure_schema
 
ENTITY sliding_surface_pair_value
SUBTYPE OF (pair_value);
  SELF\pair_value.applies_to_pair : sliding_surface_pair;
  actual_point_on_surface_1 : point_on_surface;
  actual_point_on_surface_2 : point_on_surface;
  actual_rotation : plane_angle_measure;
WHERE
  wr1 : SELF\pair_value.applies_to_pair\surface_pair.surface_1 :=: 
    actual_point_on_surface_1.basis_surface;
  wr2 : SELF\pair_value.applies_to_pair\surface_pair.surface_2 :=: 
    actual_point_on_surface_2.basis_surface;
END_ENTITY; -- 10303-105: kinematic_structure_schema
 
ENTITY slot
SUBTYPE OF (feature_definition);
WHERE
  wr1 : SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(pdr.used_representation.items) = 1)))
     = 1;
  wr2 : SIZEOF(QUERY(sa <* get_shape_aspects(SELF) | (sa.description = 
    'swept shape occurrence') AND (SIZEOF(QUERY(sar <* USEDIN(sa, 
    'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)) AND
     (sar.description = 'profile usage') AND (SIZEOF(['AUTOMOTIVE_DESIGN.'
     + 'SQUARE_U_PROFILE', 'AUTOMOTIVE_DESIGN.' + 'PARTIAL_CIRCULAR_PROFILE'
    , 'AUTOMOTIVE_DESIGN.' + 'ROUNDED_U_PROFILE', 'AUTOMOTIVE_DESIGN.' + 
    'VEE_PROFILE', 'AUTOMOTIVE_DESIGN.' + 'TEE_PROFILE', 
    'AUTOMOTIVE_DESIGN.' + 'OPEN_PATH_PROFILE'] * TYPEOF(sar.
    relating_shape_aspect)) = 1))) = 1))) = 1;
  wr3 : SIZEOF(QUERY(sa <* get_shape_aspects(SELF) | (sa.description = 
    'course of travel occurrence') AND (SIZEOF(QUERY(sar <* USEDIN(sa, 
    'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)) AND
     (sar.name = 'course of travel') AND (sar.description = 
    'path feature component usage') AND ('AUTOMOTIVE_DESIGN.' + 
    'PATH_FEATURE_COMPONENT' IN TYPEOF(sar.relating_shape_aspect)))) = 1))) = 1
    ;
  wr4 : SIZEOF(QUERY(sa <* get_shape_aspects(SELF) | (sa.description = 
    'end condition occurrence') AND (SIZEOF(QUERY(sar <* USEDIN(sa, 
    'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | (
    'AUTOMOTIVE_DESIGN.' + 'FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)) 
    AND (sar.name = 'starting') AND (sar.description = 'slot end usage') AND (
    'AUTOMOTIVE_DESIGN.' + 'SLOT_END' IN TYPEOF(sar.relating_shape_aspect)))
    ) = 1))) = 1;
  wr5 : SIZEOF(QUERY(sa <* get_shape_aspects(SELF) | (sa.description = 
    'end condition occurrence') AND (SIZEOF(QUERY(sar <* USEDIN(sa, 
    'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | (
    'AUTOMOTIVE_DESIGN.' + 'FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)) 
    AND (sar.name = 'ending') AND (sar.description = 'slot end usage') AND (
    'AUTOMOTIVE_DESIGN.' + 'SLOT_END' IN TYPEOF(sar.relating_shape_aspect)))
    ) = 1))) = 1;
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY slot_end
SUBTYPE OF (shape_aspect);
WHERE
  wr1 : 'AUTOMOTIVE_DESIGN.' + 'FEATURE_COMPONENT_DEFINITION' IN TYPEOF(SELF
    .of_shape.definition);
  wr2 : SELF.description IN ['open', 'radiused', 'flat', 'woodruff'];
  wr3 : (SELF.description IN ['open', 'radiused']) XOR (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | 
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation))) = 0);
  wr4 : NOT (SELF.description IN ['flat', 'woodruff']) XOR (SIZEOF(QUERY(pdr
     <* get_shape_aspect_property_definition_representations(SELF) | 
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation))) = 1);
  wr5 : (SELF.description <> 'flat') OR (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(pdr.used_representation.items) = 2)))
     = 1);
  wr6 : (SELF.description <> 'flat') OR (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'first radius') AND (SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'MEASURE_REPRESENTATION_ITEM', 'AUTOMOTIVE_DESIGN.' + 
    'LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2))) = 1))) = 1);
  wr7 : (SELF.description <> 'flat') OR (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'second radius') AND (SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'MEASURE_REPRESENTATION_ITEM', 'AUTOMOTIVE_DESIGN.' + 
    'LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2))) = 1))) = 1);
  wr8 : (SELF.description <> 'woodruff') OR (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(pdr.used_representation.items) = 1)))
     = 1);
  wr9 : (SELF.description <> 'woodruff') OR (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'radius') AND (SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'MEASURE_REPRESENTATION_ITEM', 'AUTOMOTIVE_DESIGN.' + 
    'LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2))) = 1))) = 1);
  wr10 : SIZEOF(QUERY(sar <* USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') | (
    'AUTOMOTIVE_DESIGN.' + 'FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)) 
    AND (sar.name IN ['starting', 'ending']) AND (sar.description = 
    'slot end usage') AND ('AUTOMOTIVE_DESIGN.' + 'SLOT' IN TYPEOF(sar.
    related_shape_aspect.of_shape.definition)) AND (sar.related_shape_aspect.
    of_shape.definition\characterized_object.name = 'end condition') AND (sar.
    related_shape_aspect.of_shape.definition\characterized_object.description
     = 'slot end occurrence'))) = 1;
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY solid_angle_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
  wr1 : 'AUTOMOTIVE_DESIGN.SOLID_ANGLE_UNIT' IN TYPEOF(SELF\
    measure_with_unit.unit_component);
END_ENTITY; -- 10303-41: measure_schema
 
ENTITY solid_angle_unit
SUBTYPE OF (named_unit);
WHERE
  wr1 : (SELF\named_unit.dimensions.length_exponent = 0.000000) AND (SELF\
    named_unit.dimensions.mass_exponent = 0.000000) AND (SELF\named_unit
    .dimensions.time_exponent = 0.000000) AND (SELF\named_unit.dimensions.
    electric_current_exponent = 0.000000) AND (SELF\named_unit.dimensions.
    thermodynamic_temperature_exponent = 0.000000) AND (SELF\named_unit.
    dimensions.amount_of_substance_exponent = 0.000000) AND (SELF\named_unit.
    dimensions.luminous_intensity_exponent = 0.000000);
END_ENTITY; -- 10303-41: measure_schema
 
ENTITY solid_model
SUPERTYPE OF (ONEOF (csg_solid, manifold_solid_brep, swept_face_solid, 
solid_replica))
SUBTYPE OF (geometric_representation_item);
END_ENTITY; -- 10303-42: geometric_model_schema
 
ENTITY solid_replica
SUBTYPE OF (solid_model);
  parent_solid : solid_model;
  transformation : cartesian_transformation_operator_3d;
WHERE
  wr1 : acyclic_solid_replica(SELF, parent_solid);
  wr2 : parent_solid\geometric_representation_item.dim = 3;
END_ENTITY; -- 10303-42: geometric_model_schema
 
ENTITY specified_higher_usage_occurrence
SUBTYPE OF (assembly_component_usage);
  upper_usage : assembly_component_usage;
  next_usage : next_assembly_usage_occurrence;
UNIQUE
  ur1 : upper_usage, next_usage;
WHERE
  wr1 : SELF :<>: upper_usage;
  wr2 : SELF\product_definition_relationship.relating_product_definition :=: 
    upper_usage.relating_product_definition;
  wr3 : SELF\product_definition_relationship.related_product_definition :=: 
    next_usage.related_product_definition;
  wr4 : (upper_usage.related_product_definition :=: next_usage.
    relating_product_definition) OR (SIZEOF(QUERY(pdr <* USEDIN(upper_usage.
    related_product_definition, 
    'AUTOMOTIVE_DESIGN.PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION'
    ) | pdr.relating_product_definition :=: next_usage.
    relating_product_definition)) = 1);
  wr5 : SIZEOF(['AUTOMOTIVE_DESIGN.NEXT_ASSEMBLY_USAGE_OCCURRENCE', 
    'AUTOMOTIVE_DESIGN.SPECIFIED_HIGHER_USAGE_OCCURRENCE'] * TYPEOF(
    upper_usage)) = 1;
END_ENTITY; -- 10303-44: product_structure_schema
 
ENTITY sphere
SUBTYPE OF (geometric_representation_item);
  radius : positive_length_measure;
  centre : point;
END_ENTITY; -- 10303-42: geometric_model_schema
 
ENTITY spherical_pair
SUBTYPE OF (kinematic_pair);
END_ENTITY; -- 10303-105: kinematic_structure_schema
 
ENTITY spherical_pair_range
SUBTYPE OF (simple_pair_range);
  SELF\simple_pair_range.applies_to_pair : spherical_pair;
  lower_limit_yaw : rotational_range_measure;
  upper_limit_yaw : rotational_range_measure;
  lower_limit_pitch : rotational_range_measure;
  upper_limit_pitch : rotational_range_measure;
  lower_limit_roll : rotational_range_measure;
  upper_limit_roll : rotational_range_measure;
WHERE
  wr1 : ('AUTOMOTIVE_DESIGN.UNLIMITED_RANGE' IN TYPEOF(lower_limit_yaw)) OR 
    ('AUTOMOTIVE_DESIGN.UNLIMITED_RANGE' IN TYPEOF(upper_limit_yaw)) XOR (
    lower_limit_yaw < upper_limit_yaw);
  wr2 : ('AUTOMOTIVE_DESIGN.UNLIMITED_RANGE' IN TYPEOF(lower_limit_pitch)) 
    OR ('AUTOMOTIVE_DESIGN.UNLIMITED_RANGE' IN TYPEOF(upper_limit_pitch)) 
    XOR (lower_limit_pitch < upper_limit_pitch);
  wr3 : ('AUTOMOTIVE_DESIGN.UNLIMITED_RANGE' IN TYPEOF(lower_limit_roll)) OR
     ('AUTOMOTIVE_DESIGN.UNLIMITED_RANGE' IN TYPEOF(upper_limit_roll)) XOR (
    lower_limit_roll < upper_limit_roll);
END_ENTITY; -- 10303-105: kinematic_structure_schema
 
ENTITY spherical_pair_value
SUBTYPE OF (pair_value);
  SELF\pair_value.applies_to_pair : spherical_pair;
  input_orientation : spatial_rotation;
DERIVE
  actual_orientation : ypr_rotation := convert_spatial_to_ypr_rotation(SELF\
  pair_value.applies_to_pair, input_orientation);
END_ENTITY; -- 10303-105: kinematic_structure_schema
 
ENTITY spherical_surface
SUBTYPE OF (elementary_surface);
  radius : positive_length_measure;
END_ENTITY; -- 10303-42: geometry_schema
 
ENTITY sql_mappable_defined_function ABSTRACT SUPERTYPE
SUBTYPE OF (defined_function);
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY square_root_function
SUBTYPE OF (unary_function_call);
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY square_u_profile
SUBTYPE OF (shape_aspect);
WHERE
  wr1 : 'AUTOMOTIVE_DESIGN.' + 'FEATURE_COMPONENT_DEFINITION' IN TYPEOF(SELF
    .of_shape.definition);
  wr2 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | 
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation))) = 1;
  wr3 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND {4 <= SIZEOF(pdr.used_representation.items)
     <= 6})) = 1;
  wr4 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | NOT (i.name IN ['orientation', 'width', 'first angle', 
    'second angle', 'first radius', 'second radius']))) > 0))) = 0;
  wr5 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | ('AUTOMOTIVE_DESIGN.' + 'PLACEMENT' IN TYPEOF(i)) AND (i.name = 
    'orientation'))) = 1))) = 1;
  wr6 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (SIZEOF(['AUTOMOTIVE_DESIGN.' + 'MEASURE_REPRESENTATION_ITEM', 
    'AUTOMOTIVE_DESIGN.' + 'LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2) AND
     (i.name = 'width'))) = 1))) = 1;
  wr7 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (SIZEOF(['AUTOMOTIVE_DESIGN.' + 'MEASURE_REPRESENTATION_ITEM', 
    'AUTOMOTIVE_DESIGN.' + 'PLANE_ANGLE_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2
    ) AND (i.name = 'first angle'))) = 1))) = 1;
  wr8 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (SIZEOF(['AUTOMOTIVE_DESIGN.' + 'MEASURE_REPRESENTATION_ITEM', 
    'AUTOMOTIVE_DESIGN.' + 'PLANE_ANGLE_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2
    ) AND (i.name = 'second angle'))) = 1))) = 1;
  wr9 : (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | i.name = 'first radius')) = 1))) <= 1) AND (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (SIZEOF(['AUTOMOTIVE_DESIGN.' + 'MEASURE_REPRESENTATION_ITEM', 
    'AUTOMOTIVE_DESIGN.' + 'LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2) AND
     (i.name = 'first radius'))) = 1))) <= 1);
  wr10 : (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | i.name = 'second radius')) = 1))) <= 1) AND (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (SIZEOF(['AUTOMOTIVE_DESIGN.' + 'MEASURE_REPRESENTATION_ITEM', 
    'AUTOMOTIVE_DESIGN.' + 'LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2) AND
     (i.name = 'second radius'))) = 1))) <= 1);
  wr11 : (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | 
    'AUTOMOTIVE_DESIGN.' + 'PLANAR_SHAPE_REPRESENTATION' IN TYPEOF(pdr.
    used_representation))) <= 1) AND (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'PLANAR_SHAPE_REPRESENTATION' IN TYPEOF(pdr.
    used_representation)) AND (pdr.used_representation.name = 'profile limit'))
    ) <= 1);
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY standard_uncertainty
SUBTYPE OF (uncertainty_qualifier);
  uncertainty_value : REAL;
END_ENTITY; -- 10303-45: qualified_measure_schema
 
ENTITY straightness_tolerance
SUBTYPE OF (geometric_tolerance);
WHERE
  wr1 : NOT ('AUTOMOTIVE_DESIGN.' + 
    'GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE' IN TYPEOF(SELF));
END_ENTITY; -- 10303-519: aic_geometric_tolerances
 
ENTITY string_defined_function ABSTRACT SUPERTYPE
SUBTYPE OF (defined_function, string_expression);
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY string_expression
ABSTRACT SUPERTYPE OF (ONEOF (simple_string_expression, index_expression, 
substring_expression, concat_expression, format_function, 
string_defined_function))
SUBTYPE OF (expression);
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY string_literal
SUBTYPE OF (simple_string_expression, generic_literal);
  the_value : STRING;
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY string_variable
SUBTYPE OF (simple_string_expression, variable);
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY structured_dimension_callout
SUBTYPE OF (draughting_callout);
WHERE
  wr1 : SIZEOF(TYPEOF(SELF) * ['AUTOMOTIVE_DESIGN.DATUM_FEATURE_CALLOUT', 
    'AUTOMOTIVE_DESIGN.DATUM_TARGET_CALLOUT', 
    'AUTOMOTIVE_DESIGN.GEOMETRICAL_TOLERANCE_CALLOUT', 
    'AUTOMOTIVE_DESIGN.LEADER_DIRECTED_CALLOUT', 
    'AUTOMOTIVE_DESIGN.PROJECTION_DIRECTED_CALLOUT', 
    'AUTOMOTIVE_DESIGN.DIMENSION_CURVE_DIRECTED_CALLOUT']) = 0;
  wr2 : SIZEOF(QUERY(ato <* QUERY(con <* SELF.contents | 
    'AUTOMOTIVE_DESIGN.ANNOTATION_TEXT_OCCURRENCE' IN TYPEOF(con)) | NOT (
    ato.name IN ['dimension value', 'tolerance value', 'unit text', 
    'prefix text', 'suffix text']))) = 0;
  wr3 : SIZEOF(QUERY(ato <* QUERY(con <* SELF.contents | 
    'AUTOMOTIVE_DESIGN.ANNOTATION_TEXT_OCCURRENCE' IN TYPEOF(con)) | ato.
    name = 'dimension value')) >= 1;
  wr4 : SIZEOF(QUERY(dcr <* USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.DRAUGHTING_CALLOUT_RELATIONSHIP.RELATING_DRAUGHTING_CALLOUT'
    ) | ('AUTOMOTIVE_DESIGN.' + 'DIMENSION_CALLOUT_COMPONENT_RELATIONSHIP' 
    IN TYPEOF(dcr)) AND (dcr.name = 'prefix'))) <= 1;
  wr5 : SIZEOF(QUERY(dcr <* USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.DRAUGHTING_CALLOUT_RELATIONSHIP.RELATING_DRAUGHTING_CALLOUT'
    ) | ('AUTOMOTIVE_DESIGN.' + 'DIMENSION_CALLOUT_COMPONENT_RELATIONSHIP' 
    IN TYPEOF(dcr)) AND (dcr.name = 'suffix'))) <= 1;
  wr6 : NOT (SIZEOF(QUERY(ato <* QUERY(con <* SELF.contents | 
    'AUTOMOTIVE_DESIGN.ANNOTATION_TEXT_OCCURRENCE' IN TYPEOF(con)) | ato.
    name = 'prefix text')) > 0) OR (SIZEOF(QUERY(dcr <* USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.DRAUGHTING_CALLOUT_RELATIONSHIP.RELATING_DRAUGHTING_CALLOUT'
    ) | ('AUTOMOTIVE_DESIGN.' + 'DIMENSION_CALLOUT_COMPONENT_RELATIONSHIP' 
    IN TYPEOF(dcr)) AND (dcr.name = 'prefix'))) = 1);
  wr7 : NOT (SIZEOF(QUERY(ato <* QUERY(con <* SELF.contents | 
    'AUTOMOTIVE_DESIGN.ANNOTATION_TEXT_OCCURRENCE' IN TYPEOF(con)) | ato.
    name = 'suffix text')) > 0) OR (SIZEOF(QUERY(dcr <* USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.DRAUGHTING_CALLOUT_RELATIONSHIP.RELATING_DRAUGHTING_CALLOUT'
    ) | ('AUTOMOTIVE_DESIGN.' + 'DIMENSION_CALLOUT_COMPONENT_RELATIONSHIP' 
    IN TYPEOF(dcr)) AND (dcr.name = 'suffix'))) = 1);
END_ENTITY; -- 10303-506: aic_draughting_elements
 
ENTITY styled_item
SUBTYPE OF (representation_item);
  styles : SET [1:?] OF presentation_style_assignment;
  item : representation_item;
WHERE
  wr1 : (SIZEOF(SELF.styles) = 1) XOR (SIZEOF(QUERY(pres_style <* SELF.styles
     | NOT ('AUTOMOTIVE_DESIGN.' + 'PRESENTATION_STYLE_BY_CONTEXT' IN TYPEOF
    (pres_style)))) = 0);
END_ENTITY; -- 10303-46: presentation_appearance_schema
 
ENTITY subedge
SUBTYPE OF (edge);
  parent_edge : edge;
END_ENTITY; -- 10303-42: topology_schema
 
ENTITY subface
SUBTYPE OF (face);
  parent_face : face;
WHERE
  wr1 : NOT mixed_loop_type_set(list_to_set(list_face_loops(SELF)) + 
    list_to_set(list_face_loops(parent_face)));
END_ENTITY; -- 10303-42: topology_schema
 
ENTITY substring_expression
SUBTYPE OF (string_expression, multiple_arity_generic_expression);
DERIVE
  operand : generic_expression := SELF\multiple_arity_generic_expression.
  operands[1];
  index1 : generic_expression := SELF\multiple_arity_generic_expression.
  operands[2];
  index2 : generic_expression := SELF\multiple_arity_generic_expression.
  operands[3];
WHERE
  wr1 : ('AUTOMOTIVE_DESIGN.STRING_EXPRESSION' IN TYPEOF(operand)) AND (
    'AUTOMOTIVE_DESIGN.NUMERIC_EXPRESSION' IN TYPEOF(index1)) AND (
    'AUTOMOTIVE_DESIGN.NUMERIC_EXPRESSION' IN TYPEOF(index2));
  wr2 : SIZEOF(SELF\multiple_arity_generic_expression.operands) = 3;
  wr3 : is_int_expr(index1);
  wr4 : is_int_expr(index2);
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY surface
SUPERTYPE OF (ONEOF (elementary_surface, swept_surface, bounded_surface, 
offset_surface, surface_replica))
SUBTYPE OF (geometric_representation_item);
END_ENTITY; -- 10303-42: geometry_schema
 
ENTITY surface_condition_callout
SUBTYPE OF (draughting_callout);
WHERE
  wr1 : SIZEOF(QUERY(c <* SELF.contents | SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'ANNOTATION_CURVE_OCCURRENCE', 'AUTOMOTIVE_DESIGN.' + 
    'ANNOTATION_SYMBOL_OCCURRENCE', 'AUTOMOTIVE_DESIGN.' + 
    'ANNOTATION_TEXT_OCCURRENCE'] * TYPEOF(c)) <> 1)) = 0;
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY surface_curve
SUPERTYPE OF (ONEOF (intersection_curve, seam_curve) ANDOR 
bounded_surface_curve)
SUBTYPE OF (curve);
  curve_3d : curve;
  associated_geometry :  LIST [1:2] OF pcurve_or_surface;
  master_representation : preferred_surface_curve_representation;
DERIVE
  basis_surface : SET [1:2] OF surface := get_basis_surface(SELF);
WHERE
  wr1 : curve_3d.dim = 3;
  wr2 : ('AUTOMOTIVE_DESIGN.PCURVE' IN TYPEOF(associated_geometry[1])) OR (
    master_representation <> pcurve_s1);
  wr3 : ('AUTOMOTIVE_DESIGN.PCURVE' IN TYPEOF(associated_geometry[2])) OR (
    master_representation <> pcurve_s2);
  wr4 : NOT ('AUTOMOTIVE_DESIGN.PCURVE' IN TYPEOF(curve_3d));
END_ENTITY; -- 10303-42: geometry_schema
 
ENTITY surface_of_linear_extrusion
SUBTYPE OF (swept_surface);
  extrusion_axis : vector;
END_ENTITY; -- 10303-42: geometry_schema
 
ENTITY surface_curve_swept_area_solid
SUBTYPE OF (swept_area_solid);
  directrix : curve;
  start_param : REAL;
  end_param : REAL;
  reference_surface : surface;
WHERE
  wr1 : NOT ('AUTOMOTIVE_DESIGN_LF.SURFACE_CURVE' IN TYPEOF(directrix)) OR (
    reference_surface IN directrix\surface_curve.basis_surface);
END_ENTITY; (* declared in: geometric_model_schema *)
 
ENTITY surface_of_revolution
SUBTYPE OF (swept_surface);
  axis_position : axis1_placement;
DERIVE
  axis_line : line := representation_item('')||geometric_representation_item()
  ||curve()||line(axis_position.location, representation_item('')||
  geometric_representation_item()||vector(axis_position.z, 1.0));
END_ENTITY; -- 10303-42: geometry_schema
 
ENTITY surface_pair
SUBTYPE OF (kinematic_pair);
  surface_1 : surface;
  surface_2 : surface;
  orientation : BOOLEAN;
WHERE
  wr1 : frame_associated_to_background(SELF\kinematic_pair.
    pair_placement_in_first_link_context, surface_1);
  wr2 : frame_associated_to_background(SELF\kinematic_pair.
    pair_placement_in_second_link_context, surface_2);
END_ENTITY; -- 10303-105: kinematic_structure_schema
 
ENTITY surface_pair_range
SUBTYPE OF (simple_pair_range);
  SELF\simple_pair_range.applies_to_pair : surface_pair;
  range_on_surface_1 : rectangular_trimmed_surface;
  range_on_surface_2 : rectangular_trimmed_surface;
  lower_limit_actual_rotation : rotational_range_measure;
  upper_limit_actual_rotation : rotational_range_measure;
WHERE
  wr1 : SELF\simple_pair_range.applies_to_pair\surface_pair.surface_1 :=: 
    range_on_surface_1.basis_surface;
  wr2 : SELF\simple_pair_range.applies_to_pair\surface_pair.surface_2 :=: 
    range_on_surface_2.basis_surface;
  wr3 : ('AUTOMOTIVE_DESIGN.UNLIMITED_RANGE' IN TYPEOF(
    lower_limit_actual_rotation)) OR ('AUTOMOTIVE_DESIGN.UNLIMITED_RANGE' IN
     TYPEOF(upper_limit_actual_rotation)) XOR (lower_limit_actual_rotation < 
    upper_limit_actual_rotation);
END_ENTITY; -- 10303-105: kinematic_structure_schema
 
ENTITY surface_patch
SUBTYPE OF (founded_item);
  parent_surface : bounded_surface;
  u_transition : transition_code;
  v_transition : transition_code;
  u_sense : BOOLEAN;
  v_sense : BOOLEAN;
INVERSE
  using_surfaces : BAG [1:?] OF rectangular_composite_surface FOR segments;
WHERE
  wr1 : NOT ('AUTOMOTIVE_DESIGN.CURVE_BOUNDED_SURFACE' IN TYPEOF(
    parent_surface));
END_ENTITY; -- 10303-42: geometry_schema
 
ENTITY surface_profile_tolerance
SUBTYPE OF (geometric_tolerance);
WHERE
  wr1 : NOT ('AUTOMOTIVE_DESIGN.' + 
    'GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE' IN TYPEOF(SELF)) OR (SIZEOF(SELF
    \geometric_tolerance_with_datum_reference.datum_system) <= 3);
END_ENTITY; -- 10303-519: aic_geometric_tolerances
 
ENTITY surface_rendering_properties;
  rendered_colour : colour;
END_ENTITY; -- 10303-46: presentation_appearance_schema
 
ENTITY surface_replica
SUBTYPE OF (surface);
  parent_surface : surface;
  transformation : cartesian_transformation_operator_3d;
WHERE
  wr1 : acyclic_surface_replica(SELF, parent_surface);
END_ENTITY; -- 10303-42: geometry_schema
 
ENTITY surface_side_style;
  name : label;
  styles : SET [1:7] OF surface_style_element_select;
WHERE
  wr1 : SIZEOF(QUERY(style1 <* SELF.styles | SIZEOF(QUERY(style2 <* SELF.styles
     - style1 | TYPEOF(style1) = TYPEOF(style2))) > 0)) = 0;
END_ENTITY; -- 10303-46: presentation_appearance_schema
 
ENTITY surface_style_boundary;
  style_of_boundary : curve_or_render;
END_ENTITY; -- 10303-46: presentation_appearance_schema
 
ENTITY surface_style_control_grid;
  style_of_control_grid : curve_or_render;
END_ENTITY; -- 10303-46: presentation_appearance_schema
 
ENTITY surface_style_fill_area;
  fill_area : fill_area_style;
END_ENTITY; -- 10303-46: presentation_appearance_schema
 
ENTITY surface_style_parameter_line;
  style_of_parameter_lines : curve_or_render;
  direction_counts : SET [1:2] OF direction_count_select;
WHERE
  wr1 : (HIINDEX(SELF.direction_counts) = 1) XOR (TYPEOF(SELF.direction_counts[
    1]) <> TYPEOF(SELF.direction_counts[2]));
END_ENTITY; -- 10303-46: presentation_appearance_schema
 
ENTITY surface_style_reflectance_ambient;
  ambient_reflectance : REAL;
END_ENTITY; -- 10303-46: presentation_appearance_schema
 
ENTITY surface_style_reflectance_ambient_diffuse
SUBTYPE OF (surface_style_reflectance_ambient);
  diffuse_reflectance : REAL;
END_ENTITY; -- 10303-46: presentation_appearance_schema
 
ENTITY surface_style_reflectance_ambient_diffuse_specular
SUBTYPE OF (surface_style_reflectance_ambient_diffuse);
  specular_reflectance : REAL;
  specular_exponent : REAL;
  specular_colour : colour;
END_ENTITY; -- 10303-46: presentation_appearance_schema
 
ENTITY surface_style_rendering;
  rendering_method : shading_surface_method;
  surface_colour : colour;
END_ENTITY; -- 10303-46: presentation_appearance_schema
 
ENTITY surface_style_rendering_with_properties
SUBTYPE OF (surface_style_rendering);
  properties : SET [1:2] OF rendering_properties_select;
WHERE
  wr1 : (HIINDEX(SELF.properties) = 1) XOR (TYPEOF(SELF.properties[1]) <> 
    TYPEOF(SELF.properties[2]));
END_ENTITY; -- 10303-46: presentation_appearance_schema
 
ENTITY surface_style_segmentation_curve;
  style_of_segmentation_curve : curve_or_render;
END_ENTITY; -- 10303-46: presentation_appearance_schema
 
ENTITY surface_style_silhouette;
  style_of_silhouette : curve_or_render;
END_ENTITY; -- 10303-46: presentation_appearance_schema
 
ENTITY surface_style_transparent;
  transparency : REAL;
WHERE
  wr1 : {0.0 <= transparency <= 1.0};
END_ENTITY; -- 10303-46: presentation_appearance_schema
 
ENTITY surface_style_usage;
  side : surface_side;
  style : surface_side_style_select;
END_ENTITY; -- 10303-46: presentation_appearance_schema
 
ENTITY surface_texture_representation
SUBTYPE OF (representation);
WHERE
  wr1 : SIZEOF(QUERY(i <* SELF.items | SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'MEASURE_REPRESENTATION_ITEM', 'AUTOMOTIVE_DESIGN.' + 'VALUE_RANGE', 
    'AUTOMOTIVE_DESIGN.' + 'DESCRIPTIVE_REPRESENTATION_ITEM'] * TYPEOF(i))
     <> 1)) = 0;
  wr2 : (SIZEOF(QUERY(i <* SELF.items | 'AUTOMOTIVE_DESIGN.' + 
    'DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(i))) = 1) AND (SIZEOF(QUERY(i
     <* SELF.items | ('AUTOMOTIVE_DESIGN.' + 
    'DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND (i.name = 
    'measuring method'))) = 1);
  wr3 : SIZEOF(QUERY(i <* SELF.items | SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'MEASURE_REPRESENTATION_ITEM', 'AUTOMOTIVE_DESIGN.' + 'VALUE_RANGE'] * 
    TYPEOF(i)) = 1)) > 0;
  wr4 : (SIZEOF(USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.REPRESENTATION_RELATIONSHIP.REP_1')) <= 1) AND (
    SIZEOF(USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.REPRESENTATION_RELATIONSHIP.REP_2')) = 0) AND (SIZEOF
    (QUERY(rr <* USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.REPRESENTATION_RELATIONSHIP.REP_1') | rr.rep_2.name
     = 'measuring direction')) = SIZEOF(USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.REPRESENTATION_RELATIONSHIP.REP_1')));
  wr5 : (SIZEOF(USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION'
    )) = 1) AND (SIZEOF(QUERY(pdr <* USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION'
    ) | SIZEOF(QUERY(gpa <* USEDIN(pdr.definition, 
    'AUTOMOTIVE_DESIGN.GENERAL_PROPERTY_ASSOCIATION.DERIVED_DEFINITION') | (
    'AUTOMOTIVE_DESIGN.' + 'GENERAL_PROPERTY' IN TYPEOF(gpa.base_definition)
    ) AND (gpa.base_definition.name = 'surface_texture'))) = 1)) = 1);
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY swept_area_solid
SUPERTYPE OF (ONEOF (revolved_area_solid, extruded_area_solid, 
surface_curve_swept_area_solid))
SUBTYPE OF (solid_model);
  swept_area : curve_bounded_surface;
WHERE
  wr1 : 'AUTOMOTIVE_DESIGN_LF.PLANE' IN TYPEOF(swept_area.basis_surface);
END_ENTITY; (* declared in: geometric_model_schema *)
 
ENTITY swept_disk_solid
SUBTYPE OF (solid_model);
  directrix : curve;
  radius : positive_length_measure;
  inner_radius :  OPTIONAL positive_length_measure;
  start_param : REAL;
  end_param : REAL;
WHERE
  wr1 : directrix.dim = 3;
  wr2 : NOT EXISTS(inner_radius) OR (radius > inner_radius);
END_ENTITY; (* declared in: geometric_model_schema *)

ENTITY swept_face_solid
SUPERTYPE OF (ONEOF (extruded_face_solid, revolved_face_solid))
SUBTYPE OF (solid_model);
  swept_face : face_surface;
WHERE
  wr1 : 'AUTOMOTIVE_DESIGN.PLANE' IN TYPEOF(swept_face.face_geometry);
END_ENTITY; -- 10303-42: geometric_model_schema
 
ENTITY swept_surface
SUPERTYPE OF (ONEOF (surface_of_linear_extrusion, surface_of_revolution))
SUBTYPE OF (surface);
  swept_curve : curve;
END_ENTITY; -- 10303-42: geometry_schema
 
ENTITY symbol_colour;
  colour_of_symbol : colour;
END_ENTITY; -- 10303-46: presentation_appearance_schema
 
ENTITY symbol_representation
SUBTYPE OF (representation);
END_ENTITY; -- 10303-46: presentation_definition_schema
 
ENTITY symbol_representation_map
SUBTYPE OF (representation_map);
WHERE
  wr1 : 'AUTOMOTIVE_DESIGN.SYMBOL_REPRESENTATION' IN TYPEOF(SELF\
    representation_map.mapped_representation);
  wr2 : 'AUTOMOTIVE_DESIGN.AXIS2_PLACEMENT' IN TYPEOF(SELF\
    representation_map.mapping_origin);
END_ENTITY; -- 10303-46: presentation_definition_schema
 
ENTITY symbol_style;
  name : label;
  style_of_symbol : symbol_style_select;
END_ENTITY; -- 10303-46: presentation_appearance_schema
 
ENTITY symbol_target
SUBTYPE OF (geometric_representation_item);
  placement : axis2_placement;
  x_scale : positive_ratio_measure;
  y_scale : positive_ratio_measure;
END_ENTITY; -- 10303-46: presentation_definition_schema
 
ENTITY symmetric_shape_aspect
SUBTYPE OF (shape_aspect);
INVERSE
  basis_relationships : SET [1:?] OF shape_aspect_relationship FOR 
  relating_shape_aspect;
WHERE
  wr1 : SIZEOF(QUERY(x <* SELF\symmetric_shape_aspect.basis_relationships | 
    'AUTOMOTIVE_DESIGN.CENTRE_OF_SYMMETRY' IN TYPEOF(x\
    shape_aspect_relationship.related_shape_aspect))) >= 1;
END_ENTITY; -- 10303-47: shape_aspect_definition_schema
 
ENTITY symmetry_tolerance
SUBTYPE OF (geometric_tolerance_with_datum_reference);
WHERE
  wr1 : SIZEOF(SELF\geometric_tolerance_with_datum_reference.datum_system) <= 3
    ;
END_ENTITY; -- 10303-519: aic_geometric_tolerances
 
ENTITY tactile_appearance_representation
SUBTYPE OF (representation);
WHERE
  wr1 : SIZEOF(QUERY(i <* SELF.items | SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'MEASURE_REPRESENTATION_ITEM', 'AUTOMOTIVE_DESIGN.' + 'VALUE_RANGE'] * 
    TYPEOF(i)) <> 1)) = 0;
  wr2 : SIZEOF(QUERY(i <* SELF.items | name = 'depth')) <= 1;
  wr3 : (SIZEOF(USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION'
    )) = 1) AND (SIZEOF(QUERY(pdr <* USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION'
    ) | SIZEOF(QUERY(gpa <* USEDIN(pdr.definition, 
    'AUTOMOTIVE_DESIGN.GENERAL_PROPERTY_ASSOCIATION.DERIVED_DEFINITION') | (
    'AUTOMOTIVE_DESIGN.' + 'GENERAL_PROPERTY' IN TYPEOF(gpa.base_definition)
    ) AND (gpa.base_definition.name = 'surface_texture'))) = 1)) = 1);
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY tan_function
SUBTYPE OF (unary_function_call);
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY tangent
SUBTYPE OF (derived_shape_aspect);
WHERE
  wr1 : SIZEOF(SELF\derived_shape_aspect.deriving_relationships) = 1;
END_ENTITY; -- 10303-47: shape_aspect_definition_schema
 
ENTITY taper
SUBTYPE OF (shape_aspect);
WHERE
  wr1 : 'AUTOMOTIVE_DESIGN.' + 'FEATURE_COMPONENT_DEFINITION' IN TYPEOF(SELF
    .of_shape.definition);
  wr2 : SELF.description IN ['angle taper', 'diameter taper', 'directed taper']
    ;
  wr3 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | 
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation))) = 1;
  wr4 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(pdr.used_representation.items) = 1)))
     = 1;
  wr5 : (SELF.description <> 'angle taper') OR (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (SIZEOF(['AUTOMOTIVE_DESIGN.' + 'MEASURE_REPRESENTATION_ITEM', 
    'AUTOMOTIVE_DESIGN.' + 'PLANE_ANGLE_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2
    ) AND (i.name = 'taper angle'))) = 1))) = 1);
  wr6 : (SELF.description <> 'diameter taper') OR (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (SIZEOF(['AUTOMOTIVE_DESIGN.' + 'MEASURE_REPRESENTATION_ITEM', 
    'AUTOMOTIVE_DESIGN.' + 'LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2) AND
     (i.name = 'taper diameter'))) = 1))) = 1);
  wr7 : (SELF.description <> 'directed taper') OR (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (SIZEOF(['AUTOMOTIVE_DESIGN.' + 'MEASURE_REPRESENTATION_ITEM', 
    'AUTOMOTIVE_DESIGN.' + 'PLANE_ANGLE_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2
    ) AND (i.name = 'angle'))) = 1))) = 1);
  wr8 : (SELF.description <> 'directed taper') OR (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | 
    'AUTOMOTIVE_DESIGN.' + 'DIRECTION_SHAPE_REPRESENTATION' IN TYPEOF(pdr.
    used_representation))) = 1) AND (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'DIRECTION_SHAPE_REPRESENTATION' IN TYPEOF(pdr.
    used_representation)) AND (pdr.used_representation.name = 'direction'))) = 
    1);
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY tee_profile
SUBTYPE OF (shape_aspect);
WHERE
  wr1 : 'AUTOMOTIVE_DESIGN.' + 'FEATURE_COMPONENT_DEFINITION' IN TYPEOF(SELF
    .of_shape.definition);
  wr2 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | 
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation))) = 1;
  wr3 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND {9 <= SIZEOF(pdr.used_representation.items)
     <= 10})) = 1;
  wr4 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | NOT (i.name IN ['orientation', 'width', 'depth', 'cross bar width'
    , 'cross bar depth', 'first offset', 'second offset', 'first angle', 
    'second angle', 'radius']))) > 0))) = 0;
  wr5 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | ('AUTOMOTIVE_DESIGN.' + 'PLACEMENT' IN TYPEOF(i)) AND (i.name = 
    'orientation'))) = 1))) = 1;
  wr6 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (SIZEOF(['AUTOMOTIVE_DESIGN.' + 'MEASURE_REPRESENTATION_ITEM', 
    'AUTOMOTIVE_DESIGN.' + 'LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2) AND
     (i.name = 'width'))) = 1))) = 1;
  wr7 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (SIZEOF(['AUTOMOTIVE_DESIGN.' + 'MEASURE_REPRESENTATION_ITEM', 
    'AUTOMOTIVE_DESIGN.' + 'LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2) AND
     (i.name = 'depth'))) = 1))) = 1;
  wr8 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (SIZEOF(['AUTOMOTIVE_DESIGN.' + 'MEASURE_REPRESENTATION_ITEM', 
    'AUTOMOTIVE_DESIGN.' + 'LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2) AND
     (i.name = 'cross bar width'))) = 1))) = 1;
  wr9 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (SIZEOF(['AUTOMOTIVE_DESIGN.' + 'MEASURE_REPRESENTATION_ITEM', 
    'AUTOMOTIVE_DESIGN.' + 'LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2) AND
     (i.name = 'cross bar depth'))) = 1))) = 1;
  wr10 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (SIZEOF(['AUTOMOTIVE_DESIGN.' + 'MEASURE_REPRESENTATION_ITEM', 
    'AUTOMOTIVE_DESIGN.' + 'LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2) AND
     (i.name = 'first offset'))) = 1))) = 1;
  wr11 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (SIZEOF(['AUTOMOTIVE_DESIGN.' + 'MEASURE_REPRESENTATION_ITEM', 
    'AUTOMOTIVE_DESIGN.' + 'LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2) AND
     (i.name = 'second offset'))) = 1))) = 1;
  wr12 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (SIZEOF(['AUTOMOTIVE_DESIGN.' + 'MEASURE_REPRESENTATION_ITEM', 
    'AUTOMOTIVE_DESIGN.' + 'PLANE_ANGLE_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2
    ) AND (i.name = 'first angle'))) = 1))) = 1;
  wr13 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (SIZEOF(['AUTOMOTIVE_DESIGN.' + 'MEASURE_REPRESENTATION_ITEM', 
    'AUTOMOTIVE_DESIGN.' + 'PLANE_ANGLE_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2
    ) AND (i.name = 'second angle'))) = 1))) = 1;
  wr14 : (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | i.name = 'radius')) = 1))) <= 1) AND (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (SIZEOF(['AUTOMOTIVE_DESIGN.' + 'MEASURE_REPRESENTATION_ITEM', 
    'AUTOMOTIVE_DESIGN.' + 'LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2) AND
     (i.name = 'radius'))) = 1))) <= 1);
  wr15 : (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | 
    'AUTOMOTIVE_DESIGN.' + 'PLANAR_SHAPE_REPRESENTATION' IN TYPEOF(pdr.
    used_representation))) <= 1) AND (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'PLANAR_SHAPE_REPRESENTATION' IN TYPEOF(pdr.
    used_representation)) AND (pdr.used_representation.name = 'profile limit'))
    ) <= 1);
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY terminator_symbol
SUBTYPE OF (annotation_symbol_occurrence);
  annotated_curve : annotation_curve_occurrence;
END_ENTITY; -- 10303-101: draughting_element_schema
 
ENTITY text_literal
SUBTYPE OF (geometric_representation_item);
  literal : presentable_text;
  placement : axis2_placement;
  alignment : text_alignment;
  path : text_path;
  font : font_select;
END_ENTITY; -- 10303-46: presentation_definition_schema
 
ENTITY text_literal_with_associated_curves
SUBTYPE OF (text_literal);
  associated_curves : SET [1:?] OF curve;
END_ENTITY; -- 10303-46: presentation_definition_schema
 
ENTITY text_literal_with_blanking_box
SUBTYPE OF (text_literal);
  blanking : planar_box;
END_ENTITY; -- 10303-46: presentation_definition_schema
 
ENTITY text_literal_with_delineation
SUBTYPE OF (text_literal);
  delineation : text_delineation;
END_ENTITY; -- 10303-46: presentation_definition_schema
 
ENTITY text_literal_with_extent
SUBTYPE OF (text_literal);
  extent : planar_extent;
END_ENTITY; -- 10303-46: presentation_definition_schema
 
ENTITY text_string_representation
SUBTYPE OF (representation);
WHERE
  wr1 : SIZEOF(QUERY(item <* SELF\representation.items | SIZEOF([
    'AUTOMOTIVE_DESIGN.TEXT_LITERAL', 'AUTOMOTIVE_DESIGN.ANNOTATION_TEXT'
    , 'AUTOMOTIVE_DESIGN.ANNOTATION_TEXT_CHARACTER', 
    'AUTOMOTIVE_DESIGN.DEFINED_CHARACTER_GLYPH', 
    'AUTOMOTIVE_DESIGN.COMPOSITE_TEXT', 
    'AUTOMOTIVE_DESIGN.AXIS2_PLACEMENT'] * TYPEOF(item)) = 0)) = 0;
  wr2 : SIZEOF(QUERY(item <* SELF\representation.items | NOT (SIZEOF([
    'AUTOMOTIVE_DESIGN.TEXT_LITERAL', 'AUTOMOTIVE_DESIGN.ANNOTATION_TEXT'
    , 'AUTOMOTIVE_DESIGN.ANNOTATION_TEXT_CHARACTER', 
    'AUTOMOTIVE_DESIGN.DEFINED_CHARACTER_GLYPH', 
    'AUTOMOTIVE_DESIGN.COMPOSITE_TEXT'] * TYPEOF(item)) = 0))) >= 1;
  wr3 : SIZEOF(QUERY(a2p <* QUERY(item <* SELF\representation.items | 
    'AUTOMOTIVE_DESIGN.AXIS2_PLACEMENT' IN TYPEOF(item)) | NOT ((SIZEOF(
    QUERY(at <* QUERY(item <* SELF\representation.items | 
    'AUTOMOTIVE_DESIGN.' + 'ANNOTATION_TEXT' IN TYPEOF(item)) | at\
    mapped_item.mapping_target :=: a2p)) >= 1) OR (SIZEOF(QUERY(atc <* QUERY(
    item <* SELF\representation.items | 'AUTOMOTIVE_DESIGN.' + 
    'ANNOTATION_TEXT_CHARACTER' IN TYPEOF(item)) | atc\mapped_item.
    mapping_target :=: a2p)) >= 1)))) = 0;
END_ENTITY; -- 10303-46: presentation_definition_schema
 
ENTITY text_style;
  name : label;
  character_appearance : character_style_select;
END_ENTITY; -- 10303-46: presentation_appearance_schema
 
ENTITY text_style_for_defined_font;
  text_colour : colour;
END_ENTITY; -- 10303-46: presentation_appearance_schema
 
ENTITY text_style_with_box_characteristics
SUBTYPE OF (text_style);
  characteristics : SET [1:4] OF box_characteristic_select;
WHERE
  wr1 : SIZEOF(QUERY(c1 <* SELF.characteristics | SIZEOF(QUERY(c2 <* SELF.
    characteristics - c1 | TYPEOF(c1) = TYPEOF(c2))) > 0)) = 0;
END_ENTITY; -- 10303-46: presentation_appearance_schema
 
ENTITY text_style_with_mirror
SUBTYPE OF (text_style);
  mirror_placement : axis2_placement;
END_ENTITY; -- 10303-46: presentation_appearance_schema
 
ENTITY text_style_with_spacing
SUBTYPE OF (text_style);
  character_spacing : character_spacing_select;
END_ENTITY; -- 10303-46: presentation_appearance_schema
 
ENTITY thermodynamic_temperature_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
  wr1 : 'AUTOMOTIVE_DESIGN.THERMODYNAMIC_TEMPERATURE_UNIT' IN TYPEOF(SELF\
    measure_with_unit.unit_component);
END_ENTITY; -- 10303-41: measure_schema
 
ENTITY thermodynamic_temperature_unit
SUBTYPE OF (named_unit);
WHERE
  wr1 : (SELF\named_unit.dimensions.length_exponent = 0.000000) AND (SELF\
    named_unit.dimensions.mass_exponent = 0.000000) AND (SELF\named_unit
    .dimensions.time_exponent = 0.000000) AND (SELF\named_unit.dimensions.
    electric_current_exponent = 0.000000) AND (SELF\named_unit.dimensions.
    thermodynamic_temperature_exponent = 1.000000) AND (SELF\named_unit.
    dimensions.amount_of_substance_exponent = 0.000000) AND (SELF\named_unit.
    dimensions.luminous_intensity_exponent = 0.000000);
END_ENTITY; -- 10303-41: measure_schema
 
ENTITY thread
SUBTYPE OF (feature_definition);
WHERE
  wr1 : SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND NOT ({7 <= SIZEOF(pdr.used_representation.
    items) <= 10}))) = 0;
  wr2 : SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i\descriptive_representation_item.description IN ['internal', 
    'external']) AND ('AUTOMOTIVE_DESIGN.' + 
    'DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(i)))) = 1))) = 1;
  wr3 : SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'major diameter') AND (SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'MEASURE_REPRESENTATION_ITEM', 'AUTOMOTIVE_DESIGN.' + 
    'LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2))) = 1))) = 1;
  wr4 : SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'minor diameter') AND (SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'MEASURE_REPRESENTATION_ITEM', 'AUTOMOTIVE_DESIGN.' + 
    'LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2))) = 1))) <= 1;
  wr5 : SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'pitch diameter') AND (SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'MEASURE_REPRESENTATION_ITEM', 'AUTOMOTIVE_DESIGN.' + 
    'LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2))) = 1))) = 1;
  wr6 : SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'crest') AND (SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'MEASURE_REPRESENTATION_ITEM', 'AUTOMOTIVE_DESIGN.' + 
    'LENGTH_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2))) = 1))) <= 1;
  wr7 : SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'number of threads') AND (SIZEOF(['AUTOMOTIVE_DESIGN.'
     + 'MEASURE_REPRESENTATION_ITEM', 'AUTOMOTIVE_DESIGN.' + 
    'RATIO_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2))) = 1))) = 1;
  wr8 : SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'fit class') AND ('AUTOMOTIVE_DESIGN.' + 
    'DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(i)))) = 1))) = 1;
  wr9 : SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'form') AND ('AUTOMOTIVE_DESIGN.' + 
    'DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(i)))) = 1))) = 1;
  wr10 : SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'hand') AND (i\descriptive_representation_item.
    description IN ['left hand', 'right hand']) AND ('AUTOMOTIVE_DESIGN.' + 
    'DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(i)))) = 1))) = 1;
  wr11 : SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'qualifier') AND ('AUTOMOTIVE_DESIGN.' + 
    'DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(i)))) = 1))) <= 1;
  wr12 : SIZEOF(QUERY(pdr <* get_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | NOT (i.name IN ['thread side', 'major diameter', 'minor diameter', 
    'pitch diameter', 'crest', 'number of threads', 'fit class', 'form', 'hand'
    , 'qualifier']))) > 0))) = 0;
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY time_interval;
  id : identifier;
  name : label;
  description :  OPTIONAL text;
END_ENTITY; -- 10303-41: date_time_schema
 
ENTITY time_interval_assignment ABSTRACT SUPERTYPE;
  assigned_time_interval : time_interval;
  role : time_interval_role;
END_ENTITY; -- 10303-41: management_resources_schema
 
ENTITY time_interval_based_effectivity
SUBTYPE OF (effectivity);
  effectivity_period : time_interval;
END_ENTITY; -- 10303-41: effectivity_schema
 
ENTITY time_interval_role;
  name : label;
  description :  OPTIONAL text;
END_ENTITY; -- 10303-41: date_time_schema
 
ENTITY time_interval_with_bounds
SUBTYPE OF (time_interval);
  primary_bound :  OPTIONAL date_time_or_event_occurrence;
  secondary_bound :  OPTIONAL date_time_or_event_occurrence;
  duration :  OPTIONAL time_measure_with_unit;
WHERE
  wr1 : NOT (EXISTS(secondary_bound) AND EXISTS(duration));
  wr2 : EXISTS(primary_bound) OR EXISTS(secondary_bound);
END_ENTITY; -- 10303-41: date_time_schema
 
ENTITY time_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
  wr1 : 'AUTOMOTIVE_DESIGN.TIME_UNIT' IN TYPEOF(SELF\measure_with_unit.
    unit_component);
END_ENTITY; -- 10303-41: measure_schema
 
ENTITY time_unit
SUBTYPE OF (named_unit);
WHERE
  wr1 : (SELF\named_unit.dimensions.length_exponent = 0.000000) AND (SELF\
    named_unit.dimensions.mass_exponent = 0.000000) AND (SELF\named_unit
    .dimensions.time_exponent = 1.000000) AND (SELF\named_unit.dimensions.
    electric_current_exponent = 0.000000) AND (SELF\named_unit.dimensions.
    thermodynamic_temperature_exponent = 0.000000) AND (SELF\named_unit.
    dimensions.amount_of_substance_exponent = 0.000000) AND (SELF\named_unit.
    dimensions.luminous_intensity_exponent = 0.000000);
END_ENTITY; -- 10303-41: measure_schema
 
ENTITY tolerance_value;
  lower_bound : measure_with_unit;
  upper_bound : measure_with_unit;
WHERE
  wr1 : upper_bound\measure_with_unit.value_component > lower_bound\
    measure_with_unit.value_component;
  wr2 : upper_bound\measure_with_unit.unit_component = lower_bound\
    measure_with_unit.unit_component;
END_ENTITY; -- 10303-47: shape_tolerance_schema
 
ENTITY tolerance_zone
SUBTYPE OF (shape_aspect);
  defining_tolerance : SET [1:?] OF geometric_tolerance;
  form : tolerance_zone_form;
END_ENTITY; -- 10303-47: shape_tolerance_schema
 
ENTITY tolerance_zone_definition
SUPERTYPE OF (ONEOF (projected_zone_definition, runout_zone_definition));
  zone : tolerance_zone;
  boundaries : SET [1:?] OF shape_aspect;
END_ENTITY; -- 10303-47: shape_tolerance_schema
 
ENTITY tolerance_zone_form;
  name : label;
END_ENTITY; -- 10303-47: shape_tolerance_schema
 
ENTITY topological_representation_item
SUPERTYPE OF (ONEOF (vertex, edge, face_bound, face, connected_edge_set, 
connected_face_set, loop ANDOR path))
SUBTYPE OF (representation_item);
END_ENTITY; -- 10303-42: topology_schema
 
ENTITY toroidal_surface
SUBTYPE OF (elementary_surface);
  major_radius : positive_length_measure;
  minor_radius : positive_length_measure;
END_ENTITY; -- 10303-42: geometry_schema
 
ENTITY torus
SUBTYPE OF (geometric_representation_item);
  position : axis1_placement;
  major_radius : positive_length_measure;
  minor_radius : positive_length_measure;
WHERE
  wr1 : major_radius > minor_radius;
END_ENTITY; -- 10303-42: geometric_model_schema
 
ENTITY total_runout_tolerance
SUBTYPE OF (geometric_tolerance_with_datum_reference);
WHERE
  wr1 : SIZEOF(SELF\geometric_tolerance_with_datum_reference.datum_system) <= 2
    ;
END_ENTITY; -- 10303-519: aic_geometric_tolerances
 
ENTITY transition_feature
SUBTYPE OF (shape_aspect);
WHERE
  wr1 : 'AUTOMOTIVE_DESIGN.' + 'PRODUCT_DEFINITION' IN TYPEOF(SELF.of_shape.
    definition);
  wr2 : SIZEOF(['AUTOMOTIVE_DESIGN.' + 'CHAMFER', 'AUTOMOTIVE_DESIGN.' + 
    'EDGE_ROUND', 'AUTOMOTIVE_DESIGN.' + 'FILLET'] * TYPEOF(SELF)) = 1;
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY trimmed_curve
SUBTYPE OF (bounded_curve);
  basis_curve : curve;
  trim_1 : SET [1:2] OF trimming_select;
  trim_2 : SET [1:2] OF trimming_select;
  sense_agreement : BOOLEAN;
  master_representation : trimming_preference;
WHERE
  wr1 : (HIINDEX(trim_1) = 1) OR (TYPEOF(trim_1[1]) <> TYPEOF(trim_1[2]));
  wr2 : (HIINDEX(trim_2) = 1) OR (TYPEOF(trim_2[1]) <> TYPEOF(trim_2[2]));
END_ENTITY; -- 10303-42: geometry_schema
 
ENTITY two_direction_repeat_factor
SUBTYPE OF (one_direction_repeat_factor);
  second_repeat_factor : vector;
END_ENTITY; -- 10303-46: presentation_appearance_schema
 
ENTITY type_qualifier;
  name : label;
END_ENTITY; -- 10303-45: qualified_measure_schema
 
ENTITY unary_boolean_expression
ABSTRACT SUPERTYPE OF (ONEOF (not_expression, odd_function))
SUBTYPE OF (boolean_expression, unary_generic_expression);
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY unary_function_call
ABSTRACT SUPERTYPE OF (ONEOF (abs_function, minus_function, sin_function, 
cos_function, tan_function, asin_function, acos_function, exp_function, 
log_function, log2_function, log10_function, square_root_function))
SUBTYPE OF (unary_numeric_expression);
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY unary_generic_expression ABSTRACT SUPERTYPE
SUBTYPE OF (generic_expression);
  operand : generic_expression;
END_ENTITY; (* declared in: iso13584_generic_expressions_schema *)
 
ENTITY unary_numeric_expression
ABSTRACT SUPERTYPE OF (ONEOF (unary_function_call))
SUBTYPE OF (numeric_expression, unary_generic_expression);
  SELF\unary_generic_expression.operand : numeric_expression;
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY uncertainty_assigned_representation
SUBTYPE OF (representation);
  uncertainty : SET [1:?] OF uncertainty_measure_with_unit;
END_ENTITY; -- 10303-43: representation_schema
 
ENTITY uncertainty_measure_with_unit
SUBTYPE OF (measure_with_unit);
  name : label;
  description :  OPTIONAL text;
WHERE
  wr1 : valid_measure_value(SELF\measure_with_unit.value_component);
END_ENTITY; -- 10303-43: representation_schema
 
ENTITY uncertainty_qualifier
SUPERTYPE OF (ONEOF (standard_uncertainty, qualitative_uncertainty));
  measure_name : label;
  description : text;
END_ENTITY; -- 10303-45: qualified_measure_schema
 
ENTITY unconstrained_pair
SUBTYPE OF (kinematic_pair);
END_ENTITY; -- 10303-105: kinematic_structure_schema
 
ENTITY unconstrained_pair_value
SUBTYPE OF (pair_value);
  SELF\pair_value.applies_to_pair : unconstrained_pair;
  actual_placement : axis2_placement_3d;
END_ENTITY; -- 10303-105: kinematic_structure_schema
 
ENTITY uniform_curve
SUBTYPE OF (b_spline_curve);
END_ENTITY; -- 10303-42: geometry_schema
 
ENTITY uniform_surface
SUBTYPE OF (b_spline_surface);
END_ENTITY; -- 10303-42: geometry_schema
 
ENTITY universal_pair
SUBTYPE OF (kinematic_pair);
  input_skew_angle :  OPTIONAL plane_angle_measure;
DERIVE
  skew_angle : plane_angle_measure := NVL(input_skew_angle, 0.0);
WHERE
  wr1 : COS(plane_angle_for_pair_in_radian(SELF, skew_angle)) > 0.0;
END_ENTITY; -- 10303-105: kinematic_structure_schema
 
ENTITY universal_pair_range
SUBTYPE OF (simple_pair_range);
  SELF\simple_pair_range.applies_to_pair : universal_pair;
  lower_limit_first_rotation : rotational_range_measure;
  upper_limit_first_rotation : rotational_range_measure;
  lower_limit_second_rotation : rotational_range_measure;
  upper_limit_second_rotation : rotational_range_measure;
WHERE
  wr1 : ('AUTOMOTIVE_DESIGN.UNLIMITED_RANGE' IN TYPEOF(
    lower_limit_first_rotation)) OR ('AUTOMOTIVE_DESIGN.UNLIMITED_RANGE' IN 
    TYPEOF(upper_limit_first_rotation)) XOR (lower_limit_first_rotation < 
    upper_limit_first_rotation);
  wr2 : ('AUTOMOTIVE_DESIGN.UNLIMITED_RANGE' IN TYPEOF(
    lower_limit_second_rotation)) OR ('AUTOMOTIVE_DESIGN.UNLIMITED_RANGE' IN
     TYPEOF(upper_limit_second_rotation)) XOR (lower_limit_second_rotation < 
    upper_limit_second_rotation);
END_ENTITY; -- 10303-105: kinematic_structure_schema
 
ENTITY universal_pair_value
SUBTYPE OF (pair_value);
  SELF\pair_value.applies_to_pair : universal_pair;
  first_rotation_angle : plane_angle_measure;
  second_rotation_angle : plane_angle_measure;
END_ENTITY; -- 10303-105: kinematic_structure_schema
 
ENTITY value_function
SUPERTYPE OF (int_value_function)
SUBTYPE OF (numeric_expression, unary_generic_expression);
  SELF\unary_generic_expression.operand : string_expression;
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY value_range
SUBTYPE OF (compound_representation_item);
WHERE
  wr1 : ('AUTOMOTIVE_DESIGN.' + 'SET_REPRESENTATION_ITEM' IN TYPEOF(
    item_element)) AND value_range_wr1(item_element);
  wr2 : value_range_wr2(item_element);
  wr3 : value_range_wr3(item_element);
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY value_representation_item
SUBTYPE OF (representation_item);
  value_component : measure_value;
WHERE
  wr1 : SIZEOF(QUERY(rep <* using_representations(SELF) | NOT (
    'AUTOMOTIVE_DESIGN.GLOBAL_UNIT_ASSIGNED_CONTEXT' IN TYPEOF(rep.
    context_of_items)))) = 0;
END_ENTITY; -- 10303-43: representation_schema
 
ENTITY variable
ABSTRACT SUPERTYPE OF (ONEOF (numeric_variable, boolean_variable, 
string_variable))
SUBTYPE OF (generic_variable);
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
ENTITY variable_semantics ABSTRACT SUPERTYPE;
END_ENTITY; (* declared in: iso13584_generic_expressions_schema *)
 
ENTITY vector
SUBTYPE OF (geometric_representation_item);
  orientation : direction;
  magnitude : length_measure;
WHERE
  wr1 : magnitude >= 0.0;
END_ENTITY; -- 10303-42: geometry_schema
 
ENTITY vector_style
SUBTYPE OF (pre_defined_terminator_symbol, curve_style);
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY vee_profile
SUBTYPE OF (shape_aspect);
WHERE
  wr1 : 'AUTOMOTIVE_DESIGN.' + 'FEATURE_COMPONENT_DEFINITION' IN TYPEOF(SELF
    .of_shape.definition);
  wr2 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | 
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation))) = 1;
  wr3 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND {3 <= SIZEOF(pdr.used_representation.items)
     <= 4})) = 1;
  wr4 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | NOT (i.name IN ['orientation', 'profile angle', 'tilt angle', 
    'profile radius']))) > 0))) = 0;
  wr5 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | ('AUTOMOTIVE_DESIGN.' + 'PLACEMENT' IN TYPEOF(i)) AND (i.name = 
    'orientation'))) = 1))) = 1;
  wr6 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (SIZEOF(['AUTOMOTIVE_DESIGN.' + 'MEASURE_REPRESENTATION_ITEM', 
    'AUTOMOTIVE_DESIGN.' + 'PLANE_ANGLE_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2
    ) AND (i.name = 'profile angle'))) = 1))) = 1;
  wr7 : SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (SIZEOF(['AUTOMOTIVE_DESIGN.' + 'MEASURE_REPRESENTATION_ITEM', 
    'AUTOMOTIVE_DESIGN.' + 'PLANE_ANGLE_MEASURE_WITH_UNIT'] * TYPEOF(i)) = 2
    ) AND (i.name = 'tilt angle'))) = 1))) = 1;
  wr8 : (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | i.name = 'profile radius')) = 1))) <= 1) AND (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(
    pdr.used_representation)) AND (SIZEOF(QUERY(i <* pdr.used_representation.
    items | (i.name = 'profile radius') AND ('AUTOMOTIVE_DESIGN.' + 
    'MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND ('AUTOMOTIVE_DESIGN.' + 
    'LENGTH_MEASURE_WITH_UNIT' IN TYPEOF(i)))) = 1))) <= 1);
  wr9 : (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | 
    'AUTOMOTIVE_DESIGN.' + 'PLANAR_SHAPE_REPRESENTATION' IN TYPEOF(pdr.
    used_representation))) <= 1) AND (SIZEOF(QUERY(pdr <* 
    get_shape_aspect_property_definition_representations(SELF) | (
    'AUTOMOTIVE_DESIGN.' + 'PLANAR_SHAPE_REPRESENTATION' IN TYPEOF(pdr.
    used_representation)) AND (pdr.used_representation.name = 'profile limit'))
    ) <= 1);
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY versioned_action_request;
  id : identifier;
  version : label;
  purpose : text;
  description :  OPTIONAL text;
END_ENTITY; -- 10303-41: action_schema
 
ENTITY versioned_action_request_relationship;
  id : identifier;
  name : label;
  description :  OPTIONAL text;
  relating_versioned_action_request : versioned_action_request;
  related_versioned_action_request : versioned_action_request;
END_ENTITY; -- 10303-41: action_schema
 
ENTITY vertex
SUBTYPE OF (topological_representation_item);
END_ENTITY; -- 10303-42: topology_schema
 
ENTITY vertex_loop
SUBTYPE OF (loop);
  loop_vertex : vertex;
END_ENTITY; -- 10303-42: topology_schema
 
ENTITY vertex_point
SUBTYPE OF (vertex, geometric_representation_item);
  vertex_geometry : point;
END_ENTITY; -- 10303-42: topology_schema
 
ENTITY view_volume
SUBTYPE OF (founded_item);
  projection_type : central_or_parallel;
  projection_point : cartesian_point;
  view_plane_distance : length_measure;
  front_plane_distance : length_measure;
  front_plane_clipping : BOOLEAN;
  back_plane_distance : length_measure;
  back_plane_clipping : BOOLEAN;
  view_volume_sides_clipping : BOOLEAN;
  view_window : planar_box;
END_ENTITY; -- 10303-46: presentation_organization_schema
 
ENTITY visual_appearance_representation
SUBTYPE OF (representation);
WHERE
  wr1 : {2 <= SIZEOF(SELF.items) <= 5} AND (SIZEOF(QUERY(i <* items | (
    'AUTOMOTIVE_DESIGN.' + 'DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(i)) 
    AND (i.name IN ['colour id', 'colour name', 'lustre', 'pattern', 
    'transparency']))) = SIZEOF(SELF.items));
  wr2 : SIZEOF(QUERY(i <* SELF.items | i.name = 'colour id')) = 1;
  wr3 : SIZEOF(QUERY(i <* SELF.items | i.name = 'lustre')) = 1;
  wr4 : SIZEOF(QUERY(i <* SELF.items | i.name = 'colour name')) <= 1;
  wr5 : SIZEOF(QUERY(i <* SELF.items | i.name = 'pattern')) <= 1;
  wr6 : SIZEOF(QUERY(i <* SELF.items | i.name = 'transparency')) <= 1;
  wr7 : (SIZEOF(USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION'
    )) = 1) AND (SIZEOF(QUERY(pdr <* USEDIN(SELF, 
    'AUTOMOTIVE_DESIGN.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION'
    ) | SIZEOF(QUERY(gpa <* USEDIN(pdr.definition, 
    'AUTOMOTIVE_DESIGN.GENERAL_PROPERTY_ASSOCIATION.DERIVED_DEFINITION') | (
    'AUTOMOTIVE_DESIGN.' + 'GENERAL_PROPERTY' IN TYPEOF(gpa.base_definition)
    ) AND (gpa.base_definition.name = 'surface_texture'))) = 1)) = 1);
END_ENTITY; -- 10303-214: automotive_design
 
ENTITY volume_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
  wr1 : 'AUTOMOTIVE_DESIGN.VOLUME_UNIT' IN TYPEOF(SELF\measure_with_unit.
    unit_component);
END_ENTITY; -- 10303-41: measure_schema
 
ENTITY volume_unit
SUBTYPE OF (named_unit);
WHERE
  wr1 : (SELF\named_unit.dimensions.length_exponent = 3.000000) AND (SELF\
    named_unit.dimensions.mass_exponent = 0.000000) AND (SELF\named_unit
    .dimensions.time_exponent = 0.000000) AND (SELF\named_unit.dimensions.
    electric_current_exponent = 0.000000) AND (SELF\named_unit.dimensions.
    thermodynamic_temperature_exponent = 0.000000) AND (SELF\named_unit.
    dimensions.amount_of_substance_exponent = 0.000000) AND (SELF\named_unit.
    dimensions.luminous_intensity_exponent = 0.000000);
END_ENTITY; -- 10303-41: measure_schema
 
ENTITY xor_expression
SUBTYPE OF (binary_boolean_expression);
  SELF\binary_generic_expression.operands :  LIST [2:2] OF boolean_expression;
END_ENTITY; (* declared in: iso13584_expressions_schema *)
 
FUNCTION acyclic(arg1 : generic_expression; arg2 : SET OF generic_expression)
   : BOOLEAN;
LOCAL
  result : BOOLEAN;
END_LOCAL;
  IF 'AUTOMOTIVE_DESIGN.SIMPLE_GENERIC_EXPRESSION' IN TYPEOF(arg1) THEN
    RETURN (TRUE);
  END_IF;
  IF arg1 IN arg2 THEN
    RETURN (FALSE);
  END_IF;
  IF 'AUTOMOTIVE_DESIGN.UNARY_GENERIC_EXPRESSION' IN TYPEOF(arg1) THEN
    RETURN (acyclic(arg1\unary_generic_expression.operand, arg2 + [arg1]));
  END_IF;
  IF 'AUTOMOTIVE_DESIGN.BINARY_GENERIC_EXPRESSION' IN TYPEOF(arg1) THEN
    RETURN (acyclic(arg1\binary_generic_expression.operands[1], arg2 + [arg1]) 
    AND acyclic(arg1\binary_generic_expression.operands[2], arg2 + [arg1]));
  END_IF;
  IF 'AUTOMOTIVE_DESIGN.MULTIPLE_ARITY_GENERIC_EXPRESSION' IN TYPEOF(arg1)
   THEN
    result := TRUE;
    REPEAT i := 1 TO SIZEOF(arg1\multiple_arity_generic_expression.operands);
      result := result AND acyclic(arg1\multiple_arity_generic_expression.
      operands[i], arg2 + [arg1]);
    END_REPEAT;
    RETURN (result);
  END_IF;
END_FUNCTION; (* declared in: iso13584_generic_expressions_schema *)
 
FUNCTION acyclic_composite_text(start_composite : composite_text; child_text :
  SET [1:?] OF text_or_character) : LOGICAL;
LOCAL
  i : INTEGER;
  local_composite_text : SET OF composite_text;
  local_annotation_text : SET OF annotation_text;
  local_children : SET OF text_or_character;
END_LOCAL;
  local_composite_text := QUERY(child <* child_text | 
  'AUTOMOTIVE_DESIGN.COMPOSITE_TEXT' IN TYPEOF(child));
  IF SIZEOF(local_composite_text) > 0 THEN
    REPEAT i := 1 TO HIINDEX(local_composite_text);
      IF start_composite :=: local_composite_text[i] THEN
        RETURN (FALSE);
      END_IF;
    END_REPEAT;
  END_IF;
  local_children := child_text;
  IF SIZEOF(local_composite_text) > 0 THEN
    REPEAT i := 1 TO HIINDEX(local_composite_text);
      local_children := local_children + local_composite_text[i].collected_text
      ;
    END_REPEAT;
  END_IF;
  local_annotation_text := QUERY(child <* child_text | 
  'AUTOMOTIVE_DESIGN.ANNOTATION_TEXT' IN TYPEOF(child));
  IF SIZEOF(local_annotation_text) > 0 THEN
    REPEAT i := 1 TO HIINDEX(local_annotation_text);
      local_children := local_children + QUERY(item <* local_annotation_text[i]
      \mapped_item.mapping_source.mapped_representation.items | SIZEOF([
      'AUTOMOTIVE_DESIGN.ANNOTATION_TEXT', 
      'AUTOMOTIVE_DESIGN.COMPOSITE_TEXT'] * TYPEOF(item)) > 0);
    END_REPEAT;
  END_IF;
  IF local_children :<>: child_text THEN
    RETURN (acyclic_composite_text(start_composite, local_children));
  ELSE
    RETURN (TRUE);
  END_IF;
END_FUNCTION; -- 10303-46: presentation_definition_schema
 
FUNCTION acyclic_curve_replica(rep : curve_replica; parent : curve) : BOOLEAN;
  IF NOT ('AUTOMOTIVE_DESIGN.CURVE_REPLICA' IN TYPEOF(parent)) THEN
    RETURN (TRUE);
  END_IF;
  IF parent :=: rep THEN
    RETURN (FALSE);
  ELSE
    RETURN (acyclic_curve_replica(rep, parent\curve_replica.parent_curve));
  END_IF;
END_FUNCTION; -- 10303-42: geometry_schema
 
FUNCTION acyclic_mapped_item_usage(rep : representation) : BOOLEAN;
LOCAL
  items : SET OF representation_item;
END_LOCAL;
  items := QUERY(item <* rep.items | 'AUTOMOTIVE_DESIGN.MAPPED_ITEM' IN 
  TYPEOF(item));
  IF SIZEOF(items) = 0 THEN
    RETURN (FALSE);
  ELSE
    REPEAT i := 1 TO HIINDEX(items);
      IF items[i]\mapped_item.mapping_source.mapped_representation :=: rep THEN
        RETURN (TRUE);
      ELSE
        RETURN (acyclic_mapped_item_usage(items[i]\mapped_item.mapping_source.
        mapped_representation));
      END_IF;
    END_REPEAT;
    RETURN (FALSE);
  END_IF;
END_FUNCTION; -- 10303-504: aic_draughting_annotation
 
FUNCTION acyclic_mapped_representation(parent_set : SET OF representation;
  children_set : SET OF representation_item) : BOOLEAN;
LOCAL
  x : SET OF representation_item;
  y : SET OF representation_item;
END_LOCAL;
  x := QUERY(z <* children_set | 'AUTOMOTIVE_DESIGN.MAPPED_ITEM' IN TYPEOF(z
  ));
  IF SIZEOF(x) > 0 THEN
    REPEAT i := 1 TO HIINDEX(x);
      IF x[i]\mapped_item.mapping_source.mapped_representation IN parent_set
       THEN
        RETURN (FALSE);
      END_IF;
      IF NOT acyclic_mapped_representation(parent_set + x[i]\mapped_item.
      mapping_source.mapped_representation, x[i]\mapped_item.mapping_source.
      mapped_representation.items) THEN
        RETURN (FALSE);
      END_IF;
    END_REPEAT;
  END_IF;
  x := children_set - x;
  IF SIZEOF(x) > 0 THEN
    REPEAT i := 1 TO HIINDEX(x);
      y := QUERY(z <* bag_to_set(USEDIN(x[i], '')) | 
      'AUTOMOTIVE_DESIGN.REPRESENTATION_ITEM' IN TYPEOF(z));
      IF NOT acyclic_mapped_representation(parent_set, y) THEN
        RETURN (FALSE);
      END_IF;
    END_REPEAT;
  END_IF;
  RETURN (TRUE);
END_FUNCTION; -- 10303-43: representation_schema
 
FUNCTION acyclic_point_replica(rep : point_replica; parent : point) : BOOLEAN;
  IF NOT ('AUTOMOTIVE_DESIGN.POINT_REPLICA' IN TYPEOF(parent)) THEN
    RETURN (TRUE);
  END_IF;
  IF parent :=: rep THEN
    RETURN (FALSE);
  ELSE
    RETURN (acyclic_point_replica(rep, parent\point_replica.parent_pt));
  END_IF;
END_FUNCTION; -- 10303-42: geometry_schema
 
FUNCTION acyclic_product_category_relationship(relation :
  product_category_relationship; children : SET OF product_category) : BOOLEAN;
LOCAL
  x : SET OF product_category_relationship;
  local_children : SET OF product_category;
END_LOCAL;
  REPEAT i := 1 TO HIINDEX(children);
    IF relation.category :=: children[i] THEN
      RETURN (FALSE);
    END_IF;
  END_REPEAT;
  x := bag_to_set(USEDIN(relation.category, 
  'AUTOMOTIVE_DESIGN.PRODUCT_CATEGORY_RELATIONSHIP.SUB_CATEGORY'));
  local_children := children + relation.category;
  IF SIZEOF(x) > 0 THEN
    REPEAT i := 1 TO HIINDEX(x);
      IF NOT acyclic_product_category_relationship(x[i], local_children) THEN
        RETURN (FALSE);
      END_IF;
    END_REPEAT;
  END_IF;
  RETURN (TRUE);
END_FUNCTION; -- 10303-41: product_definition_schema
 
FUNCTION acyclic_product_definition_relationship(relation :
  product_definition_relationship; relatives : SET [1:?] OF product_definition
  ; specific_relation : STRING) : BOOLEAN;
LOCAL
  x : SET OF product_definition_relationship;
END_LOCAL;
  IF relation.relating_product_definition IN relatives THEN
    RETURN (FALSE);
  END_IF;
  x := QUERY(pd <* bag_to_set(USEDIN(relation.relating_product_definition, 
  'AUTOMOTIVE_DESIGN.PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION'
  )) | specific_relation IN TYPEOF(pd));
  REPEAT i := 1 TO HIINDEX(x);
    IF NOT acyclic_product_definition_relationship(x[i], relatives + relation.
    relating_product_definition, specific_relation) THEN
      RETURN (FALSE);
    END_IF;
  END_REPEAT;
  RETURN (TRUE);
END_FUNCTION; -- 10303-41: product_definition_schema
 
FUNCTION acyclic_solid_replica(rep : solid_replica; parent : solid_model) :
  BOOLEAN;
  IF NOT ('AUTOMOTIVE_DESIGN.SOLID_REPLICA' IN TYPEOF(parent)) THEN
    RETURN (TRUE);
  END_IF;
  IF parent :=: rep THEN
    RETURN (FALSE);
  ELSE
    RETURN (acyclic_solid_replica(rep, parent\solid_replica.parent_solid));
  END_IF;
END_FUNCTION; -- 10303-42: geometric_model_schema
 
FUNCTION acyclic_surface_replica(rep : surface_replica; parent : surface) :
  BOOLEAN;
  IF NOT ('AUTOMOTIVE_DESIGN.SURFACE_REPLICA' IN TYPEOF(parent)) THEN
    RETURN (TRUE);
  END_IF;
  IF parent :=: rep THEN
    RETURN (FALSE);
  ELSE
    RETURN (acyclic_surface_replica(rep, parent\surface_replica.parent_surface)
    );
  END_IF;
END_FUNCTION; -- 10303-42: geometry_schema
 
FUNCTION advanced_face_properties(testface : face) : BOOLEAN;
  IF 'AUTOMOTIVE_DESIGN.ADVANCED_FACE' IN TYPEOF(testface) THEN
    RETURN (TRUE);
  END_IF;
  IF 'AUTOMOTIVE_DESIGN.SUBFACE' IN TYPEOF(testface) THEN
    RETURN (advanced_face_properties(testface.parent_face));
  ELSE
    RETURN (FALSE);
  END_IF;
END_FUNCTION; -- 10303-521: aic_manifold_subsurface
 
FUNCTION aspect_ratio(p : planar_box) : positive_ratio_measure;
  IF (p.size_in_x > 0.) AND (p.size_in_y > 0.) THEN
    RETURN (p.size_in_x/p.size_in_y);
  ELSE
    RETURN (?);
  END_IF;
END_FUNCTION; -- 10303-46: presentation_organization_schema
 
FUNCTION assembly_shape_is_defined(assy : next_assembly_usage_occurrence) :
  BOOLEAN;
LOCAL
  sdr_set : SET OF shape_definition_representation := [];
  srr_set : SET OF shape_representation_relationship := [];
  sdr1_set : SET OF shape_definition_representation := [];
  pd_set : SET OF property_definition := [];
  pdr_set : SET OF product_definition_relationship := [];
  pds_set : SET OF product_definition_shape := [];
  prop_set : SET OF property_definition := [];
END_LOCAL;
  pd_set := bag_to_set(USEDIN(assy.related_product_definition, 
  'AUTOMOTIVE_DESIGN.PROPERTY_DEFINITION.DEFINITION'));
  pdr_set := QUERY(pdr <* bag_to_set(USEDIN(assy.related_product_definition, 
  'AUTOMOTIVE_DESIGN.PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION'
  )) | SIZEOF(USEDIN(pdr, 'AUTOMOTIVE_DESIGN.PROPERTY_DEFINITION.DEFINITION'
  )) > 0);
  IF SIZEOF(pd_set) > 0 THEN
    REPEAT i := 1 TO HIINDEX(pd_set);
      sdr_set := sdr_set + QUERY(pdr <* USEDIN(pd_set[i], 
      'AUTOMOTIVE_DESIGN.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 
      'AUTOMOTIVE_DESIGN.SHAPE_DEFINITION_REPRESENTATION' IN TYPEOF(pdr));
    END_REPEAT;
  END_IF;
  IF SIZEOF(pdr_set) > 0 THEN
    REPEAT i := 1 TO HIINDEX(pdr_set);
      prop_set := prop_set + bag_to_set(USEDIN(pdr_set[i], 
      'AUTOMOTIVE_DESIGN.PROPERTY_DEFINITION.DEFINITION'));
    END_REPEAT;
    IF SIZEOF(prop_set) > 0 THEN
      REPEAT i := 1 TO HIINDEX(prop_set);
        sdr_set := sdr_set + QUERY(pdr <* USEDIN(prop_set[i], 
        'AUTOMOTIVE_DESIGN.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
         | 'AUTOMOTIVE_DESIGN.SHAPE_DEFINITION_REPRESENTATION' IN TYPEOF(pdr
        ));
      END_REPEAT;
    END_IF;
  END_IF;
  IF SIZEOF(sdr_set) > 0 THEN
    REPEAT i := 1 TO HIINDEX(sdr_set);
      srr_set := QUERY(rr <* bag_to_set(USEDIN(sdr_set[i]\
      property_definition_representation.used_representation, 
      'AUTOMOTIVE_DESIGN.REPRESENTATION_RELATIONSHIP.REP_2')) | 
      'AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_RELATIONSHIP' IN TYPEOF(rr));
      pd_set := bag_to_set(USEDIN(assy.relating_product_definition, 
      'AUTOMOTIVE_DESIGN.PROPERTY_DEFINITION.DEFINITION'));
      IF SIZEOF(pd_set) > 0 THEN
        REPEAT i := 1 TO HIINDEX(pd_set);
          sdr1_set := sdr1_set + QUERY(pdr <* USEDIN(pd_set[i], 
          'AUTOMOTIVE_DESIGN.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')
           | 'AUTOMOTIVE_DESIGN.SHAPE_DEFINITION_REPRESENTATION' IN TYPEOF(
          pdr));
        END_REPEAT;
      END_IF;
      IF (SIZEOF(sdr_set) > 0) AND (SIZEOF(sdr1_set) > 0) THEN
        IF SIZEOF(srr_set) > 0 THEN
          REPEAT j := 1 TO HIINDEX(srr_set);
            IF SIZEOF(QUERY(pdr <* bag_to_set(USEDIN(srr_set[j]\
            representation_relationship.rep_1, 
            'AUTOMOTIVE_DESIGN.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION'
            )) | 'AUTOMOTIVE_DESIGN.SHAPE_DEFINITION_REPRESENTATION' IN 
            TYPEOF(pdr)) * sdr1_set) >= 1 THEN
              pds_set := QUERY(x <* bag_to_set(USEDIN(assy, 
              'AUTOMOTIVE_DESIGN.PROPERTY_DEFINITION.DEFINITION')) | 
              'AUTOMOTIVE_DESIGN.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(x));
              IF SIZEOF(pds_set) = 0 THEN
                RETURN (FALSE);
              END_IF;
              REPEAT k := 1 TO HIINDEX(pds_set);
                IF SIZEOF(QUERY(cdsr <* USEDIN(pds_set[k], 
                'AUTOMOTIVE_DESIGN.CONTEXT_DEPENDENT_SHAPE_REPRESENTATION.REPRESENTED_PRODUCT_RELATION'
                ) | cdsr.representation_relation :=: srr_set[j])) > 0 THEN
                  RETURN (FALSE);
                END_IF;
              END_REPEAT;
            END_IF;
          END_REPEAT;
        END_IF;
      END_IF;
    END_REPEAT;
  END_IF;
  RETURN (TRUE);
END_FUNCTION; -- 10303-214: automotive_design
 
FUNCTION associated_surface(arg : pcurve_or_surface) : surface;
LOCAL
  surf : surface;
END_LOCAL;
  IF 'AUTOMOTIVE_DESIGN.PCURVE' IN TYPEOF(arg) THEN
    surf := arg.basis_surface;
  ELSE
    surf := arg;
  END_IF;
  RETURN (surf);
END_FUNCTION; -- 10303-42: geometry_schema
 
FUNCTION bag_to_set(the_bag :  BAG  OF GENERIC : intype) : SET OF GENERIC :
  intype;
LOCAL
  the_set : SET OF GENERIC : intype := [];
END_LOCAL;
  IF SIZEOF(the_bag) > 0 THEN
    REPEAT i := 1 TO HIINDEX(the_bag);
      the_set := the_set + the_bag[i];
    END_REPEAT;
  END_IF;
  RETURN (the_set);
END_FUNCTION; -- 10303-41: support_resource_schema
 
FUNCTION base_axis(dim : INTEGER; axis1 : direction; axis2 : direction; axis3
   : direction) :  LIST [2:3] OF direction;
LOCAL
  u :  LIST [2:3] OF direction;
  factor : REAL;
  d1 : direction;
  d2 : direction;
END_LOCAL;
  IF dim = 3 THEN
    d1 := NVL(normalise(axis3), dummy_gri||direction([0.0, 0.0, 1.0]));
    d2 := first_proj_axis(d1, axis1);
    u := [d2, second_proj_axis(d1, d2, axis2), d1];
  ELSE
    IF EXISTS(axis1) THEN
      d1 := normalise(axis1);
      u := [d1, orthogonal_complement(d1)];
      IF EXISTS(axis2) THEN
        factor := dot_product(axis2, u[2]);
        IF factor < 0.0 THEN
          u[2].direction_ratios[1] := -u[2].direction_ratios[1];
          u[2].direction_ratios[2] := -u[2].direction_ratios[2];
        END_IF;
      END_IF;
    ELSE
      IF EXISTS(axis2) THEN
        d1 := normalise(axis2);
        u := [orthogonal_complement(d1), d1];
        u[1].direction_ratios[1] := -u[1].direction_ratios[1];
        u[1].direction_ratios[2] := -u[1].direction_ratios[2];
      ELSE
        u := [dummy_gri||direction([1.0, 0.0]), dummy_gri||direction([0.0, 1.0]
        )];
      END_IF;
    END_IF;
  END_IF;
  RETURN (u);
END_FUNCTION; -- 10303-42: geometry_schema
 
FUNCTION boolean_choose(b : BOOLEAN; choice1 : GENERIC : item; choice2 :
  GENERIC : item) : GENERIC : item;
  IF b THEN
    RETURN (choice1);
  ELSE
    RETURN (choice2);
  END_IF;
END_FUNCTION; -- 10303-42: topology_schema
 
FUNCTION build_2axes(ref_direction : direction) :  LIST [2:2] OF direction;
LOCAL
  d : direction := NVL(normalise(ref_direction), dummy_gri||direction([1.0
  ]));
END_LOCAL;
  RETURN ([d, orthogonal_complement(d)]);
END_FUNCTION; -- 10303-42: geometry_schema
 
FUNCTION build_axes(axis : direction; ref_direction : direction) :  LIST [3:3]
   OF direction;
LOCAL
  d1 : direction;
  d2 : direction;
END_LOCAL;
  d1 := NVL(normalise(axis), dummy_gri||direction([0.0, 0.0, 1.0]));
  d2 := first_proj_axis(d1, ref_direction);
  RETURN ([d2, normalise(cross_product(d1, d2)).orientation, d1]);
END_FUNCTION; -- 10303-42: geometry_schema
 
FUNCTION check_associative_shape_aspects(sdr : shape_definition_representation)
   : BOOLEAN;
LOCAL
  sr1 : SET OF representation;
  sr2 : SET OF representation;
  dm : SET OF representation;
  pv : SET OF representation;
END_LOCAL;
  IF SIZEOF(sdr.used_representation.items) <> 2 THEN
    RETURN (FALSE);
  END_IF;
  sr1 := using_representations(sdr.used_representation.items[1]);
  sr2 := using_representations(sdr.used_representation.items[2]);
  REPEAT i := 1 TO HIINDEX(sr1);
    dm := representations_mapped_into(sr1[i]);
    REPEAT j := 1 TO HIINDEX(dm);
      IF 'AUTOMOTIVE_DESIGN.DRAUGHTING_MODEL' IN TYPEOF(dm[j]) THEN
        IF dm[j] IN sr2 THEN
          RETURN (TRUE);
        END_IF;
        pv := representations_mapped_into(dm[j]);
        REPEAT k := 1 TO HIINDEX(pv);
          IF 'AUTOMOTIVE_DESIGN.PRESENTATION_VIEW' IN TYPEOF(pv[k]) THEN
            IF pv[k] IN sr2 THEN
              RETURN (TRUE);
            END_IF;
          END_IF;
        END_REPEAT;
      END_IF;
    END_REPEAT;
  END_REPEAT;
  REPEAT i := 1 TO HIINDEX(sr2);
    dm := representations_mapped_into(sr2[i]);
    REPEAT j := 1 TO HIINDEX(dm);
      IF 'AUTOMOTIVE_DESIGN.DRAUGHTING_MODEL' IN TYPEOF(dm[j]) THEN
        IF dm[j] IN sr1 THEN
          RETURN (TRUE);
        END_IF;
        pv := representations_mapped_into(dm[j]);
        REPEAT k := 1 TO HIINDEX(pv);
          IF 'AUTOMOTIVE_DESIGN.PRESENTATION_VIEW' IN TYPEOF(pv[k]) THEN
            IF pv[k] IN sr1 THEN
              RETURN (TRUE);
            END_IF;
          END_IF;
        END_REPEAT;
      END_IF;
    END_REPEAT;
  END_REPEAT;
  RETURN (FALSE);
END_FUNCTION; -- 10303-520: aic_associative_draughting_elements
 
FUNCTION check_text_alignment(ct : composite_text) : BOOLEAN;
LOCAL
  a : SET OF text_alignment := [];
END_LOCAL;
  REPEAT i := 1 TO HIINDEX(ct.collected_text);
    a := a + [ct.collected_text[i]\text_literal.alignment];
  END_REPEAT;
  RETURN (SIZEOF(a) = 1);
END_FUNCTION; -- 10303-504: aic_draughting_annotation
 
FUNCTION check_text_font(ct : composite_text) : BOOLEAN;
LOCAL
  f : SET OF font_select := [];
END_LOCAL;
  REPEAT i := 1 TO HIINDEX(ct.collected_text);
    f := f + [ct.collected_text[i]\text_literal.font];
  END_REPEAT;
  RETURN (SIZEOF(f) <= 1);
END_FUNCTION; -- 10303-504: aic_draughting_annotation
 
FUNCTION closed_shell_reversed(a_shell : closed_shell) : oriented_closed_shell;
LOCAL
  the_reverse : oriented_closed_shell;
END_LOCAL;
  IF 'AUTOMOTIVE_DESIGN.ORIENTED_CLOSED_SHELL' IN TYPEOF(a_shell) THEN
    the_reverse := dummy_tri||connected_face_set(a_shell\connected_face_set
    .cfs_faces)||closed_shell()||oriented_closed_shell(a_shell\
    oriented_closed_shell.closed_shell_element, NOT a_shell\
    oriented_closed_shell.orientation);
  ELSE
    the_reverse := dummy_tri||connected_face_set(a_shell\connected_face_set
    .cfs_faces)||closed_shell()||oriented_closed_shell(a_shell, FALSE);
  END_IF;
  RETURN (the_reverse);
END_FUNCTION; -- 10303-42: topology_schema
 
FUNCTION conditional_reverse(p : BOOLEAN; an_item : reversible_topology) :
  reversible_topology;
  IF p THEN
    RETURN (an_item);
  ELSE
    RETURN (topology_reversed(an_item));
  END_IF;
END_FUNCTION; -- 10303-42: topology_schema
 
FUNCTION constraints_composite_curve_on_surface(c : composite_curve_on_surface)
   : BOOLEAN;
LOCAL
  n_segments : INTEGER := SIZEOF(c.segments);
END_LOCAL;
  REPEAT k := 1 TO n_segments;
    IF NOT ('AUTOMOTIVE_DESIGN.PCURVE' IN TYPEOF(c\composite_curve.segments[
    k].parent_curve)) AND NOT ('AUTOMOTIVE_DESIGN.SURFACE_CURVE' IN TYPEOF(c
    \composite_curve.segments[k].parent_curve)) AND NOT (
    'AUTOMOTIVE_DESIGN.COMPOSITE_CURVE_ON_SURFACE' IN TYPEOF(c\
    composite_curve.segments[k].parent_curve)) THEN
      RETURN (FALSE);
    END_IF;
  END_REPEAT;
  RETURN (TRUE);
END_FUNCTION; -- 10303-42: geometry_schema
 
FUNCTION constraints_geometry_shell_based_surface_model(m :
  shell_based_surface_model) : BOOLEAN;
LOCAL
  result : BOOLEAN := TRUE;
END_LOCAL;
  REPEAT j := 1 TO SIZEOF(m.sbsm_boundary);
    IF NOT ('AUTOMOTIVE_DESIGN.OPEN_SHELL' IN TYPEOF(m.sbsm_boundary[j])) 
    AND NOT ('AUTOMOTIVE_DESIGN.CLOSED_SHELL' IN TYPEOF(m.sbsm_boundary[j]))
     THEN
      result := FALSE;
      RETURN (result);
    END_IF;
  END_REPEAT;
  RETURN (result);
END_FUNCTION; -- 10303-42: geometric_model_schema
 
FUNCTION constraints_param_b_spline(degree : INTEGER; up_knots : INTEGER; up_cp
   : INTEGER; knot_mult : LIST OF INTEGER; knots : LIST OF parameter_value) : 
  BOOLEAN;
LOCAL
  result : BOOLEAN := TRUE;
  k : INTEGER;
  sum : INTEGER;
END_LOCAL;
  sum := knot_mult[1];
  REPEAT i := 2 TO up_knots;
    sum := sum + knot_mult[i];
  END_REPEAT;
  IF (degree < 1) OR (up_knots < 2) OR (up_cp < degree) OR (sum <> degree + 
  up_cp + 2) THEN
    result := FALSE;
    RETURN (result);
  END_IF;
  k := knot_mult[1];
  IF (k < 1) OR (k > degree + 1) THEN
    result := FALSE;
    RETURN (result);
  END_IF;
  REPEAT i := 2 TO up_knots;
    IF (knot_mult[i] < 1) OR (knots[i] <= knots[i - 1]) THEN
      result := FALSE;
      RETURN (result);
    END_IF;
    k := knot_mult[i];
    IF (i < up_knots) AND (k > degree) THEN
      result := FALSE;
      RETURN (result);
    END_IF;
    IF (i = up_knots) AND (k > degree + 1) THEN
      result := FALSE;
      RETURN (result);
    END_IF;
  END_REPEAT;
  RETURN (result);
END_FUNCTION; -- 10303-42: geometry_schema
 
FUNCTION constraints_rectangular_composite_surface(s :
  rectangular_composite_surface) : BOOLEAN;
  REPEAT i := 1 TO s.n_u;
    REPEAT j := 1 TO s.n_v;
      IF NOT (('AUTOMOTIVE_DESIGN.B_SPLINE_SURFACE' IN TYPEOF(s.segments[i][
      j].parent_surface)) OR (
      'AUTOMOTIVE_DESIGN.RECTANGULAR_TRIMMED_SURFACE' IN TYPEOF(s.segments[i
      ][j].parent_surface))) THEN
        RETURN (FALSE);
      END_IF;
    END_REPEAT;
  END_REPEAT;
  REPEAT i := 1 TO s.n_u - 1;
    REPEAT j := 1 TO s.n_v;
      IF s.segments[i][j].u_transition = discontinuous THEN
        RETURN (FALSE);
      END_IF;
    END_REPEAT;
  END_REPEAT;
  REPEAT i := 1 TO s.n_u;
    REPEAT j := 1 TO s.n_v - 1;
      IF s.segments[i][j].v_transition = discontinuous THEN
        RETURN (FALSE);
      END_IF;
    END_REPEAT;
  END_REPEAT;
  RETURN (TRUE);
END_FUNCTION; -- 10303-42: geometry_schema
 
FUNCTION control_characters_free(s : STRING) : BOOLEAN;
LOCAL
  ch : STRING;
END_LOCAL;
  REPEAT i := 1 TO LENGTH(s);
    ch := s[i];
    IF (ch = '\x9') OR (ch = '\xA') OR (ch = '\xD') THEN
      RETURN (FALSE);
    END_IF;
  END_REPEAT;
  RETURN (TRUE);
END_FUNCTION; (* declared in: presentation_definition_schema *)
 
FUNCTION convert_plane_angle_for_pair_from_radian(pair : kinematic_pair;
  angle_expr : REAL) : plane_angle_measure;
LOCAL
  link_rep : kinematic_link_representation := representation_of_link(pair.joint
  .first_link);
  link_cntxt : representation_context;
  pa_units : SET OF unit := [];
  pau : unit;
  conv_factor : REAL := 1.0;
  result : plane_angle_measure;
END_LOCAL;
  link_cntxt := link_rep\representation.context_of_items;
  IF NOT ('AUTOMOTIVE_DESIGN.GLOBAL_UNIT_ASSIGNED_CONTEXT' IN TYPEOF(
  link_cntxt)) THEN
    RETURN (?);
  END_IF;
  pa_units := QUERY(unit <* link_cntxt\global_unit_assigned_context.units | 
  'AUTOMOTIVE_DESIGN.PLANE_ANGLE_UNIT' IN TYPEOF(unit));
  IF SIZEOF(pa_units) <> 1 THEN
    RETURN (?);
  END_IF;
  pau := pa_units[1];
  IF NOT ('AUTOMOTIVE_DESIGN.SI_UNIT' IN TYPEOF(pau)) AND NOT (
  'AUTOMOTIVE_DESIGN.CONVERSION_BASED_UNIT' IN TYPEOF(pau)) THEN
    RETURN (?);
  END_IF;
  REPEAT WHILE 'AUTOMOTIVE_DESIGN.CONVERSION_BASED_UNIT' IN TYPEOF(pau);
    conv_factor := conv_factor * pau\conversion_based_unit.conversion_factor.
    value_component;
    pau := pau\conversion_based_unit.conversion_factor.unit_component;
    IF NOT ('AUTOMOTIVE_DESIGN.SI_UNIT' IN TYPEOF(pau)) AND NOT (
    'AUTOMOTIVE_DESIGN.CONVERSION_BASED_UNIT' IN TYPEOF(pau)) OR NOT (
    'AUTOMOTIVE_DESIGN.PLANE_ANGLE_UNIT' IN TYPEOF(pau)) THEN
      RETURN (?);
    END_IF;
  END_REPEAT;
  IF pau\si_unit.name <> si_unit_name.radian THEN
    RETURN (?);
  END_IF;
  CASE pau\si_unit.prefix OF 
     si_prefix.exa : 
    conv_factor := 1.E18 * conv_factor;
     si_prefix.peta : 
    conv_factor := 1.E15 * conv_factor;
     si_prefix.tera : 
    conv_factor := 1.E12 * conv_factor;
     si_prefix.giga : 
    conv_factor := 1.E9 * conv_factor;
     si_prefix.mega : 
    conv_factor := 1.E6 * conv_factor;
     si_prefix.kilo : 
    conv_factor := 1.E3 * conv_factor;
     si_prefix.hecto : 
    conv_factor := 1.E2 * conv_factor;
     si_prefix.deca : 
    conv_factor := 1.E1 * conv_factor;
     si_prefix.deci : 
    conv_factor := 1.E-1 * conv_factor;
     si_prefix.centi : 
    conv_factor := 1.E-2 * conv_factor;
     si_prefix.milli : 
    conv_factor := 1.E-3 * conv_factor;
     si_prefix.micro : 
    conv_factor := 1.E-6 * conv_factor;
     si_prefix.nano : 
    conv_factor := 1.E-9 * conv_factor;
     si_prefix.pico : 
    conv_factor := 1.E-12 * conv_factor;
     si_prefix.femto : 
    conv_factor := 1.E-15 * conv_factor;
     si_prefix.atto : 
    conv_factor := 1.E-18 * conv_factor;
  END_CASE;
  result := angle_expr/conv_factor;
  RETURN (result);
END_FUNCTION; -- 10303-105: kinematic_structure_schema
 
FUNCTION convert_spatial_to_ypr_rotation(pair : kinematic_pair; rotation :
  spatial_rotation) : ypr_rotation;
LOCAL
  axis : direction;
  angle : plane_angle_measure;
  conv_angle : plane_angle_measure;
  ya : plane_angle_measure;
  pa : plane_angle_measure;
  ra : plane_angle_measure;
  ucf : REAL;
  dx : REAL;
  dy : REAL;
  dz : REAL;
  s_a : REAL;
  c_a : REAL;
  rotmat :  ARRAY [1:3] OF  ARRAY [1:3] OF REAL;
  cm1 : REAL;
  s_y : REAL;
  c_y : REAL;
  s_r : REAL;
  c_r : REAL;
END_LOCAL;
  IF 'AUTOMOTIVE_DESIGN.YPR_ROTATION' IN TYPEOF(rotation) THEN
    RETURN (rotation);
  END_IF;
  axis := normalise(rotation\rotation_about_direction.direction_of_axis);
  angle := rotation\rotation_about_direction.rotation_angle;
  IF angle = 0.0 THEN
    RETURN ([0.0, 0.0, 0.0]);
  END_IF;
  dx := axis.direction_ratios[1];
  dy := axis.direction_ratios[2];
  dz := axis.direction_ratios[3];
  conv_angle := plane_angle_for_pair_in_radian(pair, angle);
  IF conv_angle = ? THEN
    RETURN (?);
  END_IF;
  ucf := angle/conv_angle;
  s_a := SIN(conv_angle);
  c_a := COS(conv_angle);
  IF (dy = 0.0) AND (dx * dz = 0.0) THEN
    REPEAT WHILE conv_angle <= -PI;
      conv_angle := conv_angle + 2.0 * PI;
    END_REPEAT;
    REPEAT WHILE conv_angle > PI;
      conv_angle := conv_angle - 2.0 * PI;
    END_REPEAT;
    ya := ucf * conv_angle;
    IF conv_angle <> PI THEN
      ra := -ya;
    ELSE
      ra := ya;
    END_IF;
    IF dx <> 0.0 THEN
      IF dx > 0.0 THEN
        RETURN ([0.0, 0.0, ya]);
      ELSE
        RETURN ([0.0, 0.0, ra]);
      END_IF;
    ELSE
      IF dz > 0.0 THEN
        RETURN ([ya, 0.0, 0.0]);
      ELSE
        RETURN ([ra, 0.0, 0.0]);
      END_IF;
    END_IF;
  END_IF;
  IF (dy <> 0.0) AND (dx = 0.0) AND (dz = 0.0) THEN
    IF c_a >= 0.0 THEN
      ya := 0.0;
      ra := 0.0;
    ELSE
      ya := ucf * PI;
      ra := ya;
    END_IF;
    pa := ucf * ATAN(s_a, ABS(c_a));
    IF dy < 0.0 THEN
      pa := -pa;
    END_IF;
    RETURN ([ya, pa, ra]);
  END_IF;
  cm1 := 1.0 - c_a;
  rotmat := [[dx * dx * cm1 + c_a, dx * dy * cm1 - dz * s_a, dx * dz * cm1 + dy
   * s_a], [dx * dy * cm1 + dz * s_a, dy * dy * cm1 + c_a, dy * dz * cm1 - dx
   * s_a], [dx * dz * cm1 - dy * s_a, dy * dz * cm1 + dx * s_a, dz * dz * cm1
   + c_a]];
  IF ABS(rotmat[1][3]) = 1.0 THEN
    IF rotmat[1][3] = 1.0 THEN
      pa := 0.5 * PI;
    ELSE
      pa := -0.5 * PI;
    END_IF;
    ra := 0.0;
    ya := ATAN(rotmat[2][1], rotmat[2][2]);
    IF rotmat[2][2] < 0.0 THEN
      IF ya <= 0.0 THEN
        ya := ya + PI;
      ELSE
        ya := ya - PI;
      END_IF;
    END_IF;
  ELSE
    ya := ATAN(-rotmat[1][2], rotmat[1][1]);
    IF rotmat[1][1] < 0.0 THEN
      IF ya <= 0.0 THEN
        ya := ya + PI;
      ELSE
        ya := ya - PI;
      END_IF;
    END_IF;
    ra := ATAN(-rotmat[2][3], rotmat[3][3]);
    IF rotmat[3][3] < 0.0 THEN
      IF ra <= 0.0 THEN
        ra := ra + PI;
      ELSE
        ra := ra - PI;
      END_IF;
    END_IF;
    s_y := SIN(ya);
    c_y := COS(ya);
    s_r := SIN(ra);
    c_r := COS(ra);
    IF (ABS(s_y) > ABS(c_y)) AND (ABS(s_y) > ABS(s_r)) AND (ABS(s_y) > ABS(c_r)
    ) THEN
      cm1 := -rotmat[1][2]/s_y;
    ELSE
      IF (ABS(c_y) > ABS(s_r)) AND (ABS(c_y) > ABS(c_r)) THEN
        cm1 := rotmat[1][1]/c_y;
      ELSE
        IF ABS(s_r) > ABS(c_r) THEN
          cm1 := -rotmat[2][3]/s_r;
        ELSE
          cm1 := rotmat[3][3]/c_r;
        END_IF;
      END_IF;
    END_IF;
    pa := ATAN(rotmat[1][3], cm1);
  END_IF;
  ya := ya * ucf;
  pa := pa * ucf;
  ra := ra * ucf;
  RETURN ([ya, pa, ra]);
END_FUNCTION; -- 10303-105: kinematic_structure_schema
 
FUNCTION coordinated_pair_link_representation(link : kinematic_link;
  pair_placement : rigid_placement) : BOOLEAN;
LOCAL
  link_rep : kinematic_link_representation;
END_LOCAL;
  link_rep := representation_of_link(link);
  IF link_rep = ? THEN
    RETURN (FALSE);
  ELSE
    IF NOT (pair_placement IN link_rep\representation.items) THEN
      RETURN (FALSE);
    ELSE
      RETURN (TRUE);
    END_IF;
  END_IF;
END_FUNCTION; -- 10303-105: kinematic_structure_schema
 
FUNCTION cross_product(arg1 : direction; arg2 : direction) : vector;
LOCAL
  mag : REAL;
  res : direction;
  v1 :  LIST [3:3] OF REAL;
  v2 :  LIST [3:3] OF REAL;
  result : vector;
END_LOCAL;
  IF NOT EXISTS(arg1) OR (arg1.dim = 2) OR NOT EXISTS(arg2) OR (arg2.dim = 2)
   THEN
    RETURN (?);
  ELSE
    v1 := normalise(arg1).direction_ratios;
    v2 := normalise(arg2).direction_ratios;
    res := dummy_gri||direction([v1[2] * v2[3] - v1[3] * v2[2], v1[3] * v2[1]
     - v1[1] * v2[3], v1[1] * v2[2] - v1[2] * v2[1]]);
    mag := 0.0;
    REPEAT i := 1 TO 3;
      mag := mag + res.direction_ratios[i] * res.direction_ratios[i];
    END_REPEAT;
    IF mag > 0.0 THEN
      result := dummy_gri||vector(res, SQRT(mag));
    ELSE
      result := dummy_gri||vector(arg1, 0.0);
    END_IF;
    RETURN (result);
  END_IF;
END_FUNCTION; -- 10303-42: geometry_schema
 
FUNCTION curve_weights_positive(b : rational_b_spline_curve) : BOOLEAN;
LOCAL
  result : BOOLEAN := TRUE;
END_LOCAL;
  REPEAT i := 0 TO b.upper_index_on_control_points;
    IF b.weights[i] <= 0.0 THEN
      result := FALSE;
      RETURN (result);
    END_IF;
  END_REPEAT;
  RETURN (result);
END_FUNCTION; -- 10303-42: geometry_schema
 
FUNCTION default_tolerance_table_cell_wr2(agg :  AGGREGATE OF
  representation_item) : BOOLEAN;
  IF SIZEOF(agg) <= 5 THEN
    RETURN (TRUE);
  ELSE
    RETURN (FALSE);
  END_IF;
END_FUNCTION; -- 10303-214: automotive_design
 
FUNCTION default_tolerance_table_cell_wr3(agg :  AGGREGATE OF
  representation_item) : BOOLEAN;
  IF (SIZEOF(QUERY(i <* agg | (
  'AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND (i\
  representation_item.name = 'significant number of digits'))) = 1) OR (SIZEOF(
  QUERY(i <* agg | ('AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM' IN 
  TYPEOF(i)) AND (i\representation_item.name = 'lower limit'))) = 1) AND (
  SIZEOF(QUERY(i <* agg | ('AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM' 
  IN TYPEOF(i)) AND (i\representation_item.name = 'upper limit'))) = 1) THEN
    RETURN (TRUE);
  ELSE
    RETURN (FALSE);
  END_IF;
END_FUNCTION; -- 10303-214: automotive_design
 
FUNCTION default_tolerance_table_cell_wr4(agg :  AGGREGATE OF
  representation_item) : BOOLEAN;
  IF (SIZEOF(QUERY(i <* agg | (
  'AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND (i\
  representation_item.name = 'plus minus tolerance value'))) = 1) OR (SIZEOF(
  QUERY(i <* agg | ('AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM' IN 
  TYPEOF(i)) AND (i\representation_item.name = 'lower tolerance value'))) = 1) 
  AND (SIZEOF(QUERY(i <* agg | (
  'AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND (i\
  representation_item.name = 'upper tolerance value'))) = 1) THEN
    RETURN (TRUE);
  ELSE
    RETURN (FALSE);
  END_IF;
END_FUNCTION; -- 10303-214: automotive_design
 
FUNCTION default_tolerance_table_cell_wr5(agg :  AGGREGATE OF
  representation_item) : BOOLEAN;
  IF (SIZEOF(QUERY(i <* agg | 
  'AUTOMOTIVE_DESIGN.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(i))) <= 1) 
  AND (SIZEOF(QUERY(i <* agg | 
  'AUTOMOTIVE_DESIGN.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(i))) = 
  SIZEOF(QUERY(i <* agg | (
  'AUTOMOTIVE_DESIGN.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND (i\
  representation_item.name = 'cell description')))) THEN
    RETURN (TRUE);
  ELSE
    RETURN (FALSE);
  END_IF;
END_FUNCTION; -- 10303-214: automotive_design
 
FUNCTION dependently_instantiated(set_of_input_instances : SET OF GENERIC; 
  set_of_input_types : SET OF STRING; previous_in_chain : LIST OF GENERIC) : 
  BOOLEAN;
   (* generated by longform-generator *)
LOCAL
  number_of_input_instances : INTEGER;
  number_of_referring_instances : INTEGER;
  bag_of_referring_instances :  BAG  OF GENERIC := [];
  dependently_instantiated_flag : BOOLEAN;
  previous_in_chain_plus : LIST OF GENERIC := [];
  recursion : BOOLEAN;
  result : BOOLEAN := TRUE;
  set_of_types : SET OF STRING := [];
END_LOCAL;
  IF EXISTS(set_of_input_instances) THEN
    number_of_input_instances := SIZEOF(set_of_input_instances);
    set_of_input_types := set_of_input_types + 'GENERIC';
    REPEAT i := 1 TO number_of_input_instances;
      bag_of_referring_instances := USEDIN(set_of_input_instances[i], '');
      IF EXISTS(bag_of_referring_instances) THEN
        number_of_referring_instances := SIZEOF(bag_of_referring_instances);
        dependently_instantiated_flag := FALSE;
        REPEAT j := 1 TO number_of_referring_instances;
          set_of_types := TYPEOF(bag_of_referring_instances[j]);
          IF set_of_types <= set_of_input_types THEN
            IF EXISTS(previous_in_chain) THEN
              recursion := TRUE;
              REPEAT k := 1 TO SIZEOF(previous_in_chain);
                IF previous_in_chain[k] :=: bag_of_referring_instances[j] THEN
                  recursion := FALSE;
                  ESCAPE;
                END_IF;
              END_REPEAT;
            END_IF;
            IF recursion THEN
              previous_in_chain_plus := previous_in_chain + 
              set_of_input_instances[i];
              IF dependently_instantiated([bag_of_referring_instances[j]], 
              set_of_input_types, previous_in_chain_plus) THEN
                dependently_instantiated_flag := TRUE;
                ESCAPE;
              ELSE
                SKIP;
              END_IF;
            END_IF;
          ELSE
            dependently_instantiated_flag := TRUE;
            ESCAPE;
          END_IF;
        END_REPEAT;
        IF NOT dependently_instantiated_flag THEN
          RETURN (FALSE);
        END_IF;
      ELSE
        RETURN (FALSE);
      END_IF;
    END_REPEAT;
  ELSE
    RETURN (FALSE);
  END_IF;
  RETURN (TRUE);
END_FUNCTION;
 
FUNCTION derive_dimensional_exponents(x : unit) : dimensional_exponents;
LOCAL
  result : dimensional_exponents := dimensional_exponents(0.0, 0.0, 0.0, 0.0, 
  0.0, 0.0, 0.0);
END_LOCAL;
  IF 'AUTOMOTIVE_DESIGN.DERIVED_UNIT' IN TYPEOF(x) THEN
    REPEAT i := LOINDEX(x.elements) TO HIINDEX(x.elements);
      result.length_exponent := result.length_exponent + x.elements[i].exponent
       * x.elements[i].unit.dimensions.length_exponent;
      result.mass_exponent := result.mass_exponent + x.elements[i].exponent * x
      .elements[i].unit.dimensions.mass_exponent;
      result.time_exponent := result.time_exponent + x.elements[i].exponent * x
      .elements[i].unit.dimensions.time_exponent;
      result.electric_current_exponent := result.electric_current_exponent + x.
      elements[i].exponent * x.elements[i].unit.dimensions.
      electric_current_exponent;
      result.thermodynamic_temperature_exponent := result.
      thermodynamic_temperature_exponent + x.elements[i].exponent * x.elements[
      i].unit.dimensions.thermodynamic_temperature_exponent;
      result.amount_of_substance_exponent := result.
      amount_of_substance_exponent + x.elements[i].exponent * x.elements[i].
      unit.dimensions.amount_of_substance_exponent;
      result.luminous_intensity_exponent := result.luminous_intensity_exponent
       + x.elements[i].exponent * x.elements[i].unit.dimensions.
      luminous_intensity_exponent;
    END_REPEAT;
  ELSE
    result := x.dimensions;
  END_IF;
  RETURN (result);
END_FUNCTION; -- 10303-41: measure_schema
 
FUNCTION dimension_of(item : geometric_representation_item) : dimension_count;
LOCAL
  x : SET OF representation;
  y : representation_context;
  dim : dimension_count;
END_LOCAL;
  IF 'AUTOMOTIVE_DESIGN.CARTESIAN_POINT' IN TYPEOF(item) THEN
    dim := SIZEOF(item\cartesian_point.coordinates);
    RETURN (dim);
  END_IF;
  IF 'AUTOMOTIVE_DESIGN.DIRECTION' IN TYPEOF(item) THEN
    dim := SIZEOF(item\direction.direction_ratios);
    RETURN (dim);
  END_IF;
  IF 'AUTOMOTIVE_DESIGN.VECTOR' IN TYPEOF(item) THEN
    dim := SIZEOF(item\vector.orientation\direction.direction_ratios);
    RETURN (dim);
  END_IF;
  x := using_representations(item);
  y := x[1].context_of_items;
  dim := y\geometric_representation_context.coordinate_space_dimension;
  RETURN (dim);
END_FUNCTION; -- 10303-42: geometry_schema
 
FUNCTION dimensions_for_si_unit(n : si_unit_name) : dimensional_exponents;
  CASE n OF 
     metre : 
    RETURN (dimensional_exponents(1.000000, 0.000000, 0.000000, 0.000000, 
    0.000000, 0.000000, 0.000000));
     gram : 
    RETURN (dimensional_exponents(0.000000, 1.000000, 0.000000, 0.000000, 
    0.000000, 0.000000, 0.000000));
     second : 
    RETURN (dimensional_exponents(0.000000, 0.000000, 1.000000, 0.000000, 
    0.000000, 0.000000, 0.000000));
     ampere : 
    RETURN (dimensional_exponents(0.000000, 0.000000, 0.000000, 1.000000, 
    0.000000, 0.000000, 0.000000));
     kelvin : 
    RETURN (dimensional_exponents(0.000000, 0.000000, 0.000000, 0.000000, 
    1.000000, 0.000000, 0.000000));
     mole : 
    RETURN (dimensional_exponents(0.000000, 0.000000, 0.000000, 0.000000, 
    0.000000, 1.000000, 0.000000));
     candela : 
    RETURN (dimensional_exponents(0.000000, 0.000000, 0.000000, 0.000000, 
    0.000000, 0.000000, 1.000000));
     radian : 
    RETURN (dimensional_exponents(0.000000, 0.000000, 0.000000, 0.000000, 
    0.000000, 0.000000, 0.000000));
     steradian : 
    RETURN (dimensional_exponents(0.000000, 0.000000, 0.000000, 0.000000, 
    0.000000, 0.000000, 0.000000));
     hertz : 
    RETURN (dimensional_exponents(0.000000, 0.000000, -1.000000, 0.000000, 
    0.000000, 0.000000, 0.000000));
     newton : 
    RETURN (dimensional_exponents(1.000000, 1.000000, -2.000000, 0.000000, 
    0.000000, 0.000000, 0.000000));
     pascal : 
    RETURN (dimensional_exponents(-1.000000, 1.000000, -2.000000, 0.000000, 
    0.000000, 0.000000, 0.000000));
     joule : 
    RETURN (dimensional_exponents(2.000000, 1.000000, -2.000000, 0.000000, 
    0.000000, 0.000000, 0.000000));
     watt : 
    RETURN (dimensional_exponents(2.000000, 1.000000, -3.000000, 0.000000, 
    0.000000, 0.000000, 0.000000));
     coulomb : 
    RETURN (dimensional_exponents(0.000000, 0.000000, 1.000000, 1.000000, 
    0.000000, 0.000000, 0.000000));
     volt : 
    RETURN (dimensional_exponents(2.000000, 1.000000, -3.000000, -1.000000, 
    0.000000, 0.000000, 0.000000));
     farad : 
    RETURN (dimensional_exponents(-2.000000, -1.000000, 4.000000, 1.000000, 
    0.000000, 0.000000, 0.000000));
     ohm : 
    RETURN (dimensional_exponents(2.000000, 1.000000, -3.000000, -2.000000, 
    0.000000, 0.000000, 0.000000));
     siemens : 
    RETURN (dimensional_exponents(-2.000000, -1.000000, 3.000000, 2.000000, 
    0.000000, 0.000000, 0.000000));
     weber : 
    RETURN (dimensional_exponents(2.000000, 1.000000, -2.000000, -1.000000, 
    0.000000, 0.000000, 0.000000));
     tesla : 
    RETURN (dimensional_exponents(0.000000, 1.000000, -2.000000, -1.000000, 
    0.000000, 0.000000, 0.000000));
     henry : 
    RETURN (dimensional_exponents(2.000000, 1.000000, -2.000000, -2.000000, 
    0.000000, 0.000000, 0.000000));
     degree_celsius : 
    RETURN (dimensional_exponents(0.000000, 0.000000, 0.000000, 0.000000, 
    1.000000, 0.000000, 0.000000));
     lumen : 
    RETURN (dimensional_exponents(0.000000, 0.000000, 0.000000, 0.000000, 
    0.000000, 0.000000, 1.000000));
     lux : 
    RETURN (dimensional_exponents(-2.000000, 0.000000, 0.000000, 0.000000, 
    0.000000, 0.000000, 1.000000));
     becquerel : 
    RETURN (dimensional_exponents(0.000000, 0.000000, -1.000000, 0.000000, 
    0.000000, 0.000000, 0.000000));
     gray : 
    RETURN (dimensional_exponents(2.000000, 0.000000, -2.000000, 0.000000, 
    0.000000, 0.000000, 0.000000));
     sievert : 
    RETURN (dimensional_exponents(2.000000, 0.000000, -2.000000, 0.000000, 
    0.000000, 0.000000, 0.000000));
    OTHERWISE  : RETURN (?);
  END_CASE;
END_FUNCTION; -- 10303-41: measure_schema
 
FUNCTION dot_product(arg1 : direction; arg2 : direction) : REAL;
LOCAL
  scalar : REAL;
  vec1 : direction;
  vec2 : direction;
  ndim : INTEGER;
END_LOCAL;
  IF NOT EXISTS(arg1) OR NOT EXISTS(arg2) THEN
    scalar := ?;
  ELSE
    IF arg1.dim <> arg2.dim THEN
      scalar := ?;
    ELSE
      vec1 := normalise(arg1);
      vec2 := normalise(arg2);
      ndim := arg1.dim;
      scalar := 0.0;
      REPEAT i := 1 TO ndim;
        scalar := scalar + vec1.direction_ratios[i] * vec2.direction_ratios[i];
      END_REPEAT;
    END_IF;
  END_IF;
  RETURN (scalar);
END_FUNCTION; -- 10303-42: geometry_schema
 
FUNCTION edge_reversed(an_edge : edge) : oriented_edge;
LOCAL
  the_reverse : oriented_edge;
END_LOCAL;
  IF 'AUTOMOTIVE_DESIGN.ORIENTED_EDGE' IN TYPEOF(an_edge) THEN
    the_reverse := dummy_tri||edge(an_edge.edge_end, an_edge.edge_start)||
    oriented_edge(an_edge\oriented_edge.edge_element, NOT an_edge\oriented_edge
    .orientation);
  ELSE
    the_reverse := dummy_tri||edge(an_edge.edge_end, an_edge.edge_start)||
    oriented_edge(an_edge, FALSE);
  END_IF;
  RETURN (the_reverse);
END_FUNCTION; -- 10303-42: topology_schema
 
FUNCTION face_bound_reversed(a_face_bound : face_bound) : face_bound;
LOCAL
  the_reverse : face_bound;
END_LOCAL;
  IF 'AUTOMOTIVE_DESIGN.FACE_OUTER_BOUND' IN TYPEOF(a_face_bound) THEN
    the_reverse := dummy_tri||face_bound(a_face_bound\face_bound.bound, NOT
    a_face_bound\face_bound.orientation)||face_outer_bound();
  ELSE
    the_reverse := dummy_tri||face_bound(a_face_bound.bound, NOT a_face_bound.
    orientation);
  END_IF;
  RETURN (the_reverse);
END_FUNCTION; -- 10303-42: topology_schema
 
FUNCTION face_reversed(a_face : face) : oriented_face;
LOCAL
  the_reverse : oriented_face;
END_LOCAL;
  IF 'AUTOMOTIVE_DESIGN.ORIENTED_FACE' IN TYPEOF(a_face) THEN
    the_reverse := dummy_tri||face(set_of_topology_reversed(a_face.bounds))||
    oriented_face(a_face\oriented_face.face_element, NOT a_face\oriented_face.
    orientation);
  ELSE
    the_reverse := dummy_tri||face(set_of_topology_reversed(a_face.bounds))||
    oriented_face(a_face, FALSE);
  END_IF;
  RETURN (the_reverse);
END_FUNCTION; -- 10303-42: topology_schema
 
FUNCTION first_proj_axis(z_axis : direction; arg : direction) : direction;
LOCAL
  x_axis : direction;
  v : direction;
  z : direction;
  x_vec : vector;
END_LOCAL;
  IF NOT EXISTS(z_axis) THEN
    RETURN (?);
  ELSE
    z := normalise(z_axis);
    IF NOT EXISTS(arg) THEN
      IF (z.direction_ratios <> [1.0, 0.0, 0.0]) AND (z.direction_ratios <> [-
      1.0, 0.0, 0.0]) THEN
        v := dummy_gri||direction([1.0, 0.0, 0.0]);
      ELSE
        v := dummy_gri||direction([0.0, 1.0, 0.0]);
      END_IF;
    ELSE
      IF arg.dim <> 3 THEN
        RETURN (?);
      END_IF;
      IF cross_product(arg, z).magnitude = 0.0 THEN
        RETURN (?);
      ELSE
        v := normalise(arg);
      END_IF;
    END_IF;
    x_vec := scalar_times_vector(dot_product(v, z), z);
    x_axis := vector_difference(v, x_vec).orientation;
    x_axis := normalise(x_axis);
  END_IF;
  RETURN (x_axis);
END_FUNCTION; -- 10303-42: geometry_schema
 
FUNCTION frame_associated_to_background(frame : rigid_placement; background :
  kinematic_frame_background) : BOOLEAN;
LOCAL
  rep_bag :  BAG  OF kinematic_frame_background_representation;
  trf_bag :  BAG  OF kinematic_frame_based_transformation;
  trm_bag :  BAG  OF kinematic_frame_based_transformation;
  ass_bag :  BAG  OF kinematic_frame_background_representation_association;
  rep : kinematic_frame_background_representation;
  ass : kinematic_frame_background_representation_association;
END_LOCAL;
  rep_bag := QUERY(bg <* USEDIN(background, 
  'AUTOMOTIVE_DESIGN.REPRESENTATION.ITEMS') | 'AUTOMOTIVE_DESIGN.' + 
  'KINEMATIC_FRAME_BACKGROUND_REPRESENTATION' IN TYPEOF(bg));
  IF SIZEOF(rep_bag) = 0 THEN
    RETURN (FALSE);
  END_IF;
  trf_bag := USEDIN(frame, 
  'AUTOMOTIVE_DESIGN.KINEMATIC_FRAME_BASED_TRANSFORMATION.TRANSFORMATOR');
  IF SIZEOF(trf_bag) = 0 THEN
    RETURN (FALSE);
  END_IF;
  REPEAT i := 1 TO HIINDEX(rep_bag);
    rep := rep_bag[i];
    ass_bag := QUERY(kfbra <* USEDIN(rep, 
    'AUTOMOTIVE_DESIGN.REPRESENTATION_RELATIONSHIP.REP_2') | 
    'AUTOMOTIVE_DESIGN.' + 
    'KINEMATIC_FRAME_BACKGROUND_REPRESENTATION_ASSOCIATION' IN TYPEOF(kfbra));
    IF SIZEOF(ass_bag) > 0 THEN
      REPEAT j := 1 TO HIINDEX(ass_bag);
        ass := ass_bag[j];
        trm_bag := QUERY(trm <* trf_bag | trm :=: ass\
        representation_relationship_with_transformation.transformation_operator
        );
        IF SIZEOF(trm_bag) > 0 THEN
          RETURN (TRUE);
        END_IF;
      END_REPEAT;
    END_IF;
  END_REPEAT;
  RETURN (FALSE);
END_FUNCTION; -- 10303-105: kinematic_structure_schema
 
FUNCTION gbsf_check_curve(cv : representation_item) : BOOLEAN;
  IF SIZEOF(['AUTOMOTIVE_DESIGN.BOUNDED_CURVE', 'AUTOMOTIVE_DESIGN.CONIC'
  , 'AUTOMOTIVE_DESIGN.CURVE_REPLICA', 'AUTOMOTIVE_DESIGN.LINE', 
  'AUTOMOTIVE_DESIGN.OFFSET_CURVE_3D'] * TYPEOF(cv)) > 1 THEN
    RETURN (FALSE);
  END_IF;
  IF SIZEOF(['AUTOMOTIVE_DESIGN.CIRCLE', 'AUTOMOTIVE_DESIGN.ELLIPSE', 
  'AUTOMOTIVE_DESIGN.TRIMMED_CURVE'] * TYPEOF(cv)) = 1 THEN
    RETURN (TRUE);
  ELSE
    IF ('AUTOMOTIVE_DESIGN.B_SPLINE_CURVE' IN TYPEOF(cv)) AND (cv\
    b_spline_curve.self_intersect = FALSE) OR (cv\b_spline_curve.self_intersect
     = UNKNOWN) THEN
      RETURN (TRUE);
    ELSE
      IF ('AUTOMOTIVE_DESIGN.COMPOSITE_CURVE' IN TYPEOF(cv)) AND (cv\
      composite_curve.self_intersect = FALSE) OR (cv\composite_curve
      .self_intersect = UNKNOWN) THEN
        RETURN (SIZEOF(QUERY(seg <* cv\composite_curve.segments | NOT 
        gbsf_check_curve(seg.parent_curve))) = 0);
      ELSE
        IF 'AUTOMOTIVE_DESIGN.CURVE_REPLICA' IN TYPEOF(cv) THEN
          RETURN (gbsf_check_curve(cv\curve_replica.parent_curve));
        ELSE
          IF ('AUTOMOTIVE_DESIGN.OFFSET_CURVE_3D' IN TYPEOF(cv)) AND ((cv\
          offset_curve_3d.self_intersect = FALSE) OR (cv\offset_curve_3d
          .self_intersect = UNKNOWN)) AND NOT ('AUTOMOTIVE_DESIGN.POLYLINE' 
          IN TYPEOF(cv\offset_curve_3d.basis_curve)) THEN
            RETURN (gbsf_check_curve(cv\offset_curve_3d.basis_curve));
          ELSE
            IF 'AUTOMOTIVE_DESIGN.PCURVE' IN TYPEOF(cv) THEN
              RETURN (gbsf_check_curve(cv\pcurve.reference_to_curve\
              representation.items[1]) AND gbsf_check_surface(cv\pcurve.
              basis_surface));
            ELSE
              IF 'AUTOMOTIVE_DESIGN.POLYLINE' IN TYPEOF(cv) THEN
                IF SIZEOF(cv\polyline.points) >= 3 THEN
                  RETURN (TRUE);
                END_IF;
              ELSE
                IF 'AUTOMOTIVE_DESIGN.SURFACE_CURVE' IN TYPEOF(cv) THEN
                  IF gbsf_check_curve(cv\surface_curve.curve_3d) THEN
                    REPEAT i := 1 TO SIZEOF(cv\surface_curve.
                      associated_geometry);
                      IF 'AUTOMOTIVE_DESIGN.SURFACE' IN TYPEOF(cv\
                      surface_curve.associated_geometry[i]) THEN
                        IF NOT gbsf_check_surface(cv\surface_curve.
                        associated_geometry[i]) THEN
                          RETURN (FALSE);
                        END_IF;
                      ELSE
                        IF 'AUTOMOTIVE_DESIGN.PCURVE' IN TYPEOF(cv\
                        surface_curve.associated_geometry[i]) THEN
                          IF NOT gbsf_check_curve(cv\surface_curve.
                          associated_geometry[i]) THEN
                            RETURN (FALSE);
                          END_IF;
                        END_IF;
                      END_IF;
                    END_REPEAT;
                    RETURN (TRUE);
                  END_IF;
                END_IF;
              END_IF;
            END_IF;
          END_IF;
        END_IF;
      END_IF;
    END_IF;
  END_IF;
  RETURN (FALSE);
END_FUNCTION; -- 10303-507: aic_geometrically_bounded_surface
 
FUNCTION gbsf_check_point(pnt : point) : BOOLEAN;
  IF 'AUTOMOTIVE_DESIGN.CARTESIAN_POINT' IN TYPEOF(pnt) THEN
    RETURN (TRUE);
  ELSE
    IF 'AUTOMOTIVE_DESIGN.POINT_ON_CURVE' IN TYPEOF(pnt) THEN
      RETURN (gbsf_check_curve(pnt\point_on_curve.basis_curve));
    ELSE
      IF 'AUTOMOTIVE_DESIGN.POINT_ON_SURFACE' IN TYPEOF(pnt) THEN
        RETURN (gbsf_check_surface(pnt\point_on_surface.basis_surface));
      ELSE
        IF 'AUTOMOTIVE_DESIGN.DEGENERATE_PCURVE' IN TYPEOF(pnt) THEN
          RETURN (gbsf_check_curve(pnt\degenerate_pcurve.reference_to_curve\
          representation.items[1]) AND gbsf_check_surface(pnt\degenerate_pcurve
          .basis_surface));
        END_IF;
      END_IF;
    END_IF;
  END_IF;
  RETURN (FALSE);
END_FUNCTION; -- 10303-507: aic_geometrically_bounded_surface
 
FUNCTION gbsf_check_surface(sf : surface) : BOOLEAN;
  IF ('AUTOMOTIVE_DESIGN.B_SPLINE_SURFACE' IN TYPEOF(sf)) AND (sf\
  b_spline_surface.self_intersect = FALSE) OR (sf\b_spline_surface
  .self_intersect = UNKNOWN) THEN
    RETURN (TRUE);
  ELSE
    IF SIZEOF(['AUTOMOTIVE_DESIGN.SPHERICAL_SURFACE', 
    'AUTOMOTIVE_DESIGN.TOROIDAL_SURFACE', 
    'AUTOMOTIVE_DESIGN.CURVE_BOUNDED_SURFACE', 
    'AUTOMOTIVE_DESIGN.RECTANGULAR_TRIMMED_SURFACE'] * TYPEOF(sf)) = 1 THEN
      RETURN (TRUE);
    ELSE
      IF ('AUTOMOTIVE_DESIGN.OFFSET_SURFACE' IN TYPEOF(sf)) AND (sf\
      offset_surface.self_intersect = FALSE) OR (sf\offset_surface
      .self_intersect = UNKNOWN) THEN
        RETURN (gbsf_check_surface(sf\offset_surface.basis_surface));
      ELSE
        IF 'AUTOMOTIVE_DESIGN.RECTANGULAR_COMPOSITE_SURFACE' IN TYPEOF(sf)
         THEN
          REPEAT i := 1 TO SIZEOF(sf\rectangular_composite_surface.segments);
            REPEAT j := 1 TO SIZEOF(sf\rectangular_composite_surface.segments[i
              ]);
              IF NOT gbsf_check_surface(sf\rectangular_composite_surface.
              segments[i][j].parent_surface) THEN
                RETURN (FALSE);
              END_IF;
            END_REPEAT;
          END_REPEAT;
          RETURN (TRUE);
        ELSE
          IF 'AUTOMOTIVE_DESIGN.SURFACE_REPLICA' IN TYPEOF(sf) THEN
            RETURN (gbsf_check_surface(sf\surface_replica.parent_surface));
          ELSE
            IF 'AUTOMOTIVE_DESIGN.SURFACE_OF_REVOLUTION' IN TYPEOF(sf) THEN
              RETURN (gbsf_check_curve(sf\swept_surface.swept_curve));
            END_IF;
          END_IF;
        END_IF;
      END_IF;
    END_IF;
  END_IF;
  RETURN (FALSE);
END_FUNCTION; -- 10303-507: aic_geometrically_bounded_surface
 
FUNCTION get_basis_surface(c : curve_on_surface) : SET [0:2] OF surface;
LOCAL
  surfs : SET [0:2] OF surface;
  n : INTEGER;
END_LOCAL;
  surfs := [];
  IF 'AUTOMOTIVE_DESIGN.PCURVE' IN TYPEOF(c) THEN
    surfs := [c\pcurve.basis_surface];
  ELSE
    IF 'AUTOMOTIVE_DESIGN.SURFACE_CURVE' IN TYPEOF(c) THEN
      n := SIZEOF(c\surface_curve.associated_geometry);
      REPEAT i := 1 TO n;
        surfs := surfs + associated_surface(c\surface_curve.associated_geometry
        [i]);
      END_REPEAT;
    END_IF;
  END_IF;
  IF 'AUTOMOTIVE_DESIGN.COMPOSITE_CURVE_ON_SURFACE' IN TYPEOF(c) THEN
    n := SIZEOF(c\composite_curve.segments);
    surfs := get_basis_surface(c\composite_curve.segments[1].parent_curve);
    IF n > 1 THEN
      REPEAT i := 2 TO n;
        surfs := surfs * get_basis_surface(c\composite_curve.segments[i].
        parent_curve);
      END_REPEAT;
    END_IF;
  END_IF;
  RETURN (surfs);
END_FUNCTION; -- 10303-42: geometry_schema
 
FUNCTION get_description_value(obj : description_attribute_select) : text;
LOCAL
  description_bag :  BAG  OF description_attribute := USEDIN(obj, 
  'AUTOMOTIVE_DESIGN.DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM');
END_LOCAL;
  IF SIZEOF(description_bag) = 1 THEN
    RETURN (description_bag[1].attribute_value);
  ELSE
    RETURN (?);
  END_IF;
END_FUNCTION; -- 10303-41: basic_attribute_schema
 
FUNCTION get_diameter_for_round_hole(rh : round_hole) : REAL;
LOCAL
  sa_set : SET OF shape_aspect;
  sar_set : SET OF shape_aspect_relationship;
  pdr_set : SET OF property_definition_representation;
  ri_set : SET OF representation_item;
END_LOCAL;
  sa_set := get_shape_aspects(rh);
  REPEAT i := 1 TO HIINDEX(sa_set);
    IF sa_set[i].description = 'diameter occurrence' THEN
      sar_set := bag_to_set(USEDIN(sa_set[i], 
      'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'));
      REPEAT j := 1 TO HIINDEX(sar_set);
        IF (sar_set[j].name = 'diameter') AND (sar_set[j].description = 
        'profile usage') AND (
        'AUTOMOTIVE_DESIGN.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar_set[j]
        )) AND ('AUTOMOTIVE_DESIGN.CIRCULAR_CLOSED_PROFILE' IN TYPEOF(
        sar_set[j].relating_shape_aspect)) THEN
          pdr_set := get_shape_aspect_property_definition_representations(
          sar_set[j].relating_shape_aspect);
          REPEAT k := 1 TO HIINDEX(pdr_set);
            IF 'AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN 
            TYPEOF(pdr_set[k].used_representation) THEN
              ri_set := pdr_set[k].used_representation.items;
              REPEAT l := 1 TO HIINDEX(ri_set);
                IF ('AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM' IN 
                TYPEOF(ri_set[l])) AND (
                'AUTOMOTIVE_DESIGN.LENGTH_MEASURE_WITH_UNIT' IN TYPEOF(
                ri_set[l])) THEN
                  RETURN (ri_set[l]\measure_with_unit.value_component);
                END_IF;
              END_REPEAT;
            END_IF;
          END_REPEAT;
        END_IF;
      END_REPEAT;
    END_IF;
  END_REPEAT;
  RETURN (?);
END_FUNCTION; -- 10303-214: automotive_design
 
FUNCTION get_id_value(obj : id_attribute_select) : identifier;
LOCAL
  id_bag :  BAG  OF id_attribute := USEDIN(obj, 
  'AUTOMOTIVE_DESIGN.ID_ATTRIBUTE.IDENTIFIED_ITEM');
END_LOCAL;
  IF SIZEOF(id_bag) = 1 THEN
    RETURN (id_bag[1].attribute_value);
  ELSE
    RETURN (?);
  END_IF;
END_FUNCTION; -- 10303-41: basic_attribute_schema
 
FUNCTION get_multi_language(x : multi_language_attribute_assignment) : label;
LOCAL
  alas :  BAG  OF attribute_language_assignment := USEDIN(x, 
  'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS');
END_LOCAL;
  IF SIZEOF(alas) > 0 THEN
    RETURN (alas[1].language);
  END_IF;
  RETURN (?);
END_FUNCTION; -- 10303-214: automotive_design
 
FUNCTION get_name_value(obj : name_attribute_select) : label;
LOCAL
  name_bag :  BAG  OF name_attribute := USEDIN(obj, 
  'AUTOMOTIVE_DESIGN.NAME_ATTRIBUTE.NAMED_ITEM');
END_LOCAL;
  IF SIZEOF(name_bag) = 1 THEN
    RETURN (name_bag[1].attribute_value);
  ELSE
    RETURN (?);
  END_IF;
END_FUNCTION; -- 10303-41: basic_attribute_schema
 
FUNCTION get_property_definition_representations(c_def_instance :
  characterized_definition) : SET OF property_definition_representation;
LOCAL
  pd_set : SET OF property_definition := [];
  pdr_set : SET OF property_definition_representation := [];
END_LOCAL;
  pd_set := bag_to_set(USEDIN(c_def_instance, 
  'AUTOMOTIVE_DESIGN.PROPERTY_DEFINITION.DEFINITION'));
  IF SIZEOF(pd_set) < 1 THEN
    RETURN (pdr_set);
  END_IF;
  REPEAT i := 1 TO HIINDEX(pd_set);
    pdr_set := pdr_set + bag_to_set(USEDIN(pd_set[i], 
    'AUTOMOTIVE_DESIGN.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'));
  END_REPEAT;
  RETURN (pdr_set);
END_FUNCTION; -- 10303-41: product_property_representation_schema
 
FUNCTION get_role(obj : role_select) : object_role;
LOCAL
  role_bag :  BAG  OF role_association := USEDIN(obj, 
  'AUTOMOTIVE_DESIGN.ROLE_ASSOCIATION.ITEM_WITH_ROLE');
END_LOCAL;
  IF SIZEOF(role_bag) = 1 THEN
    RETURN (role_bag[1].role);
  ELSE
    RETURN (?);
  END_IF;
END_FUNCTION; -- 10303-41: basic_attribute_schema
 
FUNCTION get_round_holes_for_composite_hole(sar_instance_set : SET OF
  shape_aspect_relationship) : SET OF round_hole;
LOCAL
  rh_set : SET OF round_hole := [];
  pdr_set : SET OF property_definition_representation;
  pdr_set1 : SET OF property_definition_representation;
  ri_set : SET OF representation_item;
END_LOCAL;
  REPEAT i := 1 TO HIINDEX(sar_instance_set);
    IF SIZEOF(['AUTOMOTIVE_DESIGN.INSTANCED_FEATURE', 
    'AUTOMOTIVE_DESIGN.ROUND_HOLE'] * TYPEOF(sar_instance_set[i].
    related_shape_aspect)) >= 2 THEN
      rh_set := rh_set + sar_instance_set[i].related_shape_aspect;
    END_IF;
    IF 'AUTOMOTIVE_DESIGN.PLACED_FEATURE' IN TYPEOF(sar_instance_set[i])
     THEN
      pdr_set := get_shape_aspect_property_definition_representations(
      sar_instance_set[i].related_shape_aspect);
      REPEAT j := 1 TO HIINDEX(pdr_set);
        IF (pdr_set[j].used_representation.name = 
        'feature definition placement') AND (
        'AUTOMOTIVE_DESIGN.SHAPE_REPRESENTATION' IN TYPEOF(pdr_set[j].
        used_representation)) THEN
          ri_set := pdr_set[j].used_representation.items;
          REPEAT k := 1 TO HIINDEX(ri_set);
            IF ('AUTOMOTIVE_DESIGN.MAPPED_ITEM' IN TYPEOF(ri_set[k])) AND (
            'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
             TYPEOF(ri_set[k]\mapped_item.mapping_source.mapped_representation)
            ) THEN
              pdr_set1 := bag_to_set(USEDIN(ri_set[k]\mapped_item.
              mapping_source.mapped_representation, 
              'AUTOMOTIVE_DESIGN.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION'
              ));
              REPEAT l := 1 TO HIINDEX(pdr_set1);
                IF 'AUTOMOTIVE_DESIGN.ROUND_HOLE' IN TYPEOF(pdr_set1[l].
                definition.definition) THEN
                  rh_set := rh_set + pdr_set1[l].definition.definition;
                END_IF;
              END_REPEAT;
            END_IF;
          END_REPEAT;
        END_IF;
      END_REPEAT;
    END_IF;
  END_REPEAT;
  RETURN (rh_set);
END_FUNCTION; -- 10303-214: automotive_design
 
FUNCTION get_shape_aspect_property_definition_representations(s_a_instance :
  shape_aspect) : SET OF property_definition_representation;
LOCAL
  pd_set : SET OF property_definition := [];
  pdr_set : SET OF property_definition_representation := [];
END_LOCAL;
  pd_set := bag_to_set(USEDIN(s_a_instance, 
  'AUTOMOTIVE_DESIGN.PROPERTY_DEFINITION.DEFINITION'));
  IF SIZEOF(pd_set) < 1 THEN
    RETURN (pdr_set);
  END_IF;
  REPEAT i := 1 TO HIINDEX(pd_set);
    pdr_set := pdr_set + QUERY(pdr <* USEDIN(pd_set[i], 
    'AUTOMOTIVE_DESIGN.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 
    'AUTOMOTIVE_DESIGN.SHAPE_DEFINITION_REPRESENTATION' IN TYPEOF(pdr));
  END_REPEAT;
  RETURN (pdr_set);
END_FUNCTION; -- 10303-214: automotive_design
 
FUNCTION get_shape_aspects(c_def_instance : characterized_definition) : SET OF
  shape_aspect;
LOCAL
  pd_set : SET OF product_definition_shape := [];
  pdr_set : SET OF shape_aspect := [];
END_LOCAL;
  pd_set := bag_to_set(QUERY(pd <* USEDIN(c_def_instance, 
  'AUTOMOTIVE_DESIGN.PROPERTY_DEFINITION.DEFINITION') | 
  'AUTOMOTIVE_DESIGN.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)));
  IF SIZEOF(pd_set) < 1 THEN
    RETURN (pdr_set);
  END_IF;
  REPEAT i := 1 TO HIINDEX(pd_set);
    pdr_set := pdr_set + bag_to_set(USEDIN(pd_set[i], 
    'AUTOMOTIVE_DESIGN.SHAPE_ASPECT.OF_SHAPE'));
  END_REPEAT;
  RETURN (pdr_set);
END_FUNCTION; -- 10303-41: product_property_definition_schema
 
FUNCTION is_acyclic(arg : generic_expression) : BOOLEAN;
  RETURN (acyclic(arg, []));
END_FUNCTION; (* declared in: iso13584_generic_expressions_schema *)
 
FUNCTION is_int_expr(arg : numeric_expression) : BOOLEAN;
LOCAL
  i : INTEGER;
END_LOCAL;
  IF 'AUTOMOTIVE_DESIGN.INT_LITERAL' IN TYPEOF(arg) THEN
    RETURN (TRUE);
  END_IF;
  IF 'AUTOMOTIVE_DESIGN.REAL_LITERAL' IN TYPEOF(arg) THEN
    RETURN (FALSE);
  END_IF;
  IF 'AUTOMOTIVE_DESIGN.INT_NUMERIC_VARIABLE' IN TYPEOF(arg) THEN
    RETURN (TRUE);
  END_IF;
  IF 'AUTOMOTIVE_DESIGN.REAL_NUMERIC_VARIABLE' IN TYPEOF(arg) THEN
    RETURN (FALSE);
  END_IF;
  IF 'AUTOMOTIVE_DESIGN.ABS_FUNCTION' IN TYPEOF(arg) THEN
    RETURN (is_int_expr(arg\unary_numeric_expression.operand));
  END_IF;
  IF 'AUTOMOTIVE_DESIGN.MINUS_FUNCTION' IN TYPEOF(arg) THEN
    RETURN (is_int_expr(arg\unary_numeric_expression.operand));
  END_IF;
  IF ('AUTOMOTIVE_DESIGN.SIN_FUNCTION' IN TYPEOF(arg)) OR (
  'AUTOMOTIVE_DESIGN.COS_FUNCTION' IN TYPEOF(arg)) OR (
  'AUTOMOTIVE_DESIGN.TAN_FUNCTION' IN TYPEOF(arg)) OR (
  'AUTOMOTIVE_DESIGN.ASIN_FUNCTION' IN TYPEOF(arg)) OR (
  'AUTOMOTIVE_DESIGN.ACOS_FUNCTION' IN TYPEOF(arg)) OR (
  'AUTOMOTIVE_DESIGN.ATAN_FUNCTION' IN TYPEOF(arg)) OR (
  'AUTOMOTIVE_DESIGN.EXP_FUNCTION' IN TYPEOF(arg)) OR (
  'AUTOMOTIVE_DESIGN.LOG_FUNCTION' IN TYPEOF(arg)) OR (
  'AUTOMOTIVE_DESIGN.LOG2_FUNCTION' IN TYPEOF(arg)) OR (
  'AUTOMOTIVE_DESIGN.LOG10_FUNCTION' IN TYPEOF(arg)) OR (
  'AUTOMOTIVE_DESIGN.SQUARE_ROOT_FUNCTION' IN TYPEOF(arg)) THEN
    RETURN (FALSE);
  END_IF;
  IF ('AUTOMOTIVE_DESIGN.PLUS_EXPRESSION' IN TYPEOF(arg)) OR (
  'AUTOMOTIVE_DESIGN.MULT_EXPRESSION' IN TYPEOF(arg)) OR (
  'AUTOMOTIVE_DESIGN.MAXIMUM_FUNCTION' IN TYPEOF(arg)) OR (
  'AUTOMOTIVE_DESIGN.MINIMUM_FUNCTION' IN TYPEOF(arg)) THEN
    REPEAT i := 1 TO SIZEOF(arg\multiple_arity_numeric_expression.operands);
      IF NOT is_int_expr(arg\multiple_arity_numeric_expression.operands[i])
       THEN
        RETURN (FALSE);
      END_IF;
    END_REPEAT;
    RETURN (TRUE);
  END_IF;
  IF ('AUTOMOTIVE_DESIGN.MINUS_EXPRESSION' IN TYPEOF(arg)) OR (
  'AUTOMOTIVE_DESIGN.POWER_EXPRESSION' IN TYPEOF(arg)) THEN
    RETURN (is_int_expr(arg\binary_numeric_expression.operands[1]) AND 
    is_int_expr(arg\binary_numeric_expression.operands[2]));
  END_IF;
  IF ('AUTOMOTIVE_DESIGN.DIV_EXPRESSION' IN TYPEOF(arg)) OR (
  'AUTOMOTIVE_DESIGN.MOD_EXPRESSION' IN TYPEOF(arg)) THEN
    RETURN (TRUE);
  END_IF;
  IF 'AUTOMOTIVE_DESIGN.SLASH_EXPRESSION' IN TYPEOF(arg) THEN
    RETURN (FALSE);
  END_IF;
  IF 'AUTOMOTIVE_DESIGN.LENGTH_FUNCTION' IN TYPEOF(arg) THEN
    RETURN (TRUE);
  END_IF;
  IF 'AUTOMOTIVE_DESIGN.VALUE_FUNCTION' IN TYPEOF(arg) THEN
    IF 'AUTOMOTIVE_DESIGN.INT_VALUE_FUNCTION' IN TYPEOF(arg) THEN
      RETURN (TRUE);
    ELSE
      RETURN (FALSE);
    END_IF;
  END_IF;
  IF 'AUTOMOTIVE_DESIGN.INTEGER_DEFINED_FUNCTION' IN TYPEOF(arg) THEN
    RETURN (TRUE);
  END_IF;
  IF 'AUTOMOTIVE_DESIGN.REAL_DEFINED_FUNCTION' IN TYPEOF(arg) THEN
    RETURN (FALSE);
  END_IF;
  IF 'AUTOMOTIVE_DESIGN.BOOLEAN_DEFINED_FUNCTION' IN TYPEOF(arg) THEN
    RETURN (FALSE);
  END_IF;
  IF 'AUTOMOTIVE_DESIGN.STRING_DEFINED_FUNCTION' IN TYPEOF(arg) THEN
    RETURN (FALSE);
  END_IF;
  RETURN (FALSE);
END_FUNCTION; (* declared in: iso13584_expressions_schema *)
 
FUNCTION is_sql_mappable(arg : expression) : BOOLEAN;
LOCAL
  i : INTEGER;
END_LOCAL;
  IF 'AUTOMOTIVE_DESIGN.SIMPLE_NUMERIC_EXPRESSION' IN TYPEOF(arg) THEN
    RETURN (TRUE);
  END_IF;
  IF 'AUTOMOTIVE_DESIGN.SQL_MAPPABLE_DEFINED_FUNCTION' IN TYPEOF(arg) THEN
    RETURN (TRUE);
  END_IF;
  IF 'AUTOMOTIVE_DESIGN.MINUS_FUNCTION' IN TYPEOF(arg) THEN
    RETURN (is_sql_mappable(arg\unary_numeric_expression.operand));
  END_IF;
  IF ('AUTOMOTIVE_DESIGN.ABS_FUNCTION' IN TYPEOF(arg)) OR (
  'AUTOMOTIVE_DESIGN.SIN_FUNCTION' IN TYPEOF(arg)) OR (
  'AUTOMOTIVE_DESIGN.COS_FUNCTION' IN TYPEOF(arg)) OR (
  'AUTOMOTIVE_DESIGN.TAN_FUNCTION' IN TYPEOF(arg)) OR (
  'AUTOMOTIVE_DESIGN.ASIN_FUNCTION' IN TYPEOF(arg)) OR (
  'AUTOMOTIVE_DESIGN.ACOS_FUNCTION' IN TYPEOF(arg)) OR (
  'AUTOMOTIVE_DESIGN.ATAN_FUNCTION' IN TYPEOF(arg)) OR (
  'AUTOMOTIVE_DESIGN.EXP_FUNCTION' IN TYPEOF(arg)) OR (
  'AUTOMOTIVE_DESIGN.LOG_FUNCTION' IN TYPEOF(arg)) OR (
  'AUTOMOTIVE_DESIGN.LOG2_FUNCTION' IN TYPEOF(arg)) OR (
  'AUTOMOTIVE_DESIGN.LOG10_FUNCTION' IN TYPEOF(arg)) OR (
  'AUTOMOTIVE_DESIGN.SQUARE_ROOT_FUNCTION' IN TYPEOF(arg)) OR (
  'AUTOMOTIVE_DESIGN.VALUE_FUNCTION' IN TYPEOF(arg)) OR (
  'AUTOMOTIVE_DESIGN.LENGTH_FUNCTION' IN TYPEOF(arg)) THEN
    RETURN (FALSE);
  END_IF;
  IF ('AUTOMOTIVE_DESIGN.PLUS_EXPRESSION' IN TYPEOF(arg)) OR (
  'AUTOMOTIVE_DESIGN.MULT_EXPRESSION' IN TYPEOF(arg)) OR (
  'AUTOMOTIVE_DESIGN.MAXIMUM_FUNCTION' IN TYPEOF(arg)) OR (
  'AUTOMOTIVE_DESIGN.MINIMUM_FUNCTION' IN TYPEOF(arg)) THEN
    REPEAT i := 1 TO SIZEOF(arg\multiple_arity_numeric_expression.operands);
      IF NOT is_sql_mappable(arg\multiple_arity_numeric_expression.operands[i])
       THEN
        RETURN (FALSE);
      END_IF;
    END_REPEAT;
    RETURN (TRUE);
  END_IF;
  IF ('AUTOMOTIVE_DESIGN.MINUS_EXPRESSION' IN TYPEOF(arg)) OR (
  'AUTOMOTIVE_DESIGN.SLASH_EXPRESSION' IN TYPEOF(arg)) THEN
    RETURN (is_sql_mappable(arg\binary_numeric_expression.operands[1]) AND 
    is_sql_mappable(arg\binary_numeric_expression.operands[2]));
  END_IF;
  IF ('AUTOMOTIVE_DESIGN.DIV_EXPRESSION' IN TYPEOF(arg)) OR (
  'AUTOMOTIVE_DESIGN.MOD_EXPRESSION' IN TYPEOF(arg)) OR (
  'AUTOMOTIVE_DESIGN.POWER_EXPRESSION' IN TYPEOF(arg)) THEN
    RETURN (FALSE);
  END_IF;
  IF 'AUTOMOTIVE_DESIGN.SIMPLE_BOOLEAN_EXPRESSION' IN TYPEOF(arg) THEN
    RETURN (TRUE);
  END_IF;
  IF 'AUTOMOTIVE_DESIGN.NOT_EXPRESSION' IN TYPEOF(arg) THEN
    RETURN (is_sql_mappable(arg\unary_generic_expression.operand));
  END_IF;
  IF ('AUTOMOTIVE_DESIGN.ODD_FUNCTION' IN TYPEOF(arg)) OR (
  'AUTOMOTIVE_DESIGN.XOR_EXPRESSION' IN TYPEOF(arg)) THEN
    RETURN (FALSE);
  END_IF;
  IF ('AUTOMOTIVE_DESIGN.AND_EXPRESSION' IN TYPEOF(arg)) OR (
  'AUTOMOTIVE_DESIGN.OR_EXPRESSION' IN TYPEOF(arg)) THEN
    REPEAT i := 1 TO SIZEOF(arg\multiple_arity_boolean_expression.operands);
      IF NOT is_sql_mappable(arg\multiple_arity_boolean_expression.operands[i])
       THEN
        RETURN (FALSE);
      END_IF;
    END_REPEAT;
    RETURN (TRUE);
  END_IF;
  IF 'AUTOMOTIVE_DESIGN.EQUALS_EXPRESSION' IN TYPEOF(arg) THEN
    RETURN (is_sql_mappable(arg\binary_generic_expression.operands[1]) AND 
    is_sql_mappable(arg\binary_generic_expression.operands[2]));
  END_IF;
  IF ('AUTOMOTIVE_DESIGN.COMPARISON_EQUAL' IN TYPEOF(arg)) OR (
  'AUTOMOTIVE_DESIGN.COMPARISON_GREATER' IN TYPEOF(arg)) OR (
  'AUTOMOTIVE_DESIGN.COMPARISON_GREATER_EQUAL' IN TYPEOF(arg)) OR (
  'AUTOMOTIVE_DESIGN.COMPARISON_LESS' IN TYPEOF(arg)) OR (
  'AUTOMOTIVE_DESIGN.COMPARISON_LESS_EQUAL' IN TYPEOF(arg)) OR (
  'AUTOMOTIVE_DESIGN.COMPARISON_NOT_EQUAL' IN TYPEOF(arg)) OR (
  'AUTOMOTIVE_DESIGN.LIKE_EXPRESSION' IN TYPEOF(arg)) THEN
    RETURN (is_sql_mappable(arg\comparison_expression.operands[1]) AND 
    is_sql_mappable(arg\comparison_expression.operands[2]));
  END_IF;
  IF 'AUTOMOTIVE_DESIGN.INTERVAL_EXPRESSION' IN TYPEOF(arg) THEN
    RETURN (is_sql_mappable(arg\interval_expression.interval_low) AND 
    is_sql_mappable(arg\interval_expression.interval_high) AND is_sql_mappable
    (arg\interval_expression.interval_item));
  END_IF;
  IF ('AUTOMOTIVE_DESIGN.NUMERIC_DEFINED_FUNCTION' IN TYPEOF(arg)) OR (
  'AUTOMOTIVE_DESIGN.BOOLEAN_DEFINED_FUNCTION' IN TYPEOF(arg)) OR (
  'AUTOMOTIVE_DESIGN.STRING_DEFINED_FUNCTION' IN TYPEOF(arg)) THEN
    RETURN (FALSE);
  END_IF;
  IF 'AUTOMOTIVE_DESIGN.SIMPLE_STRING_EXPRESSION' IN TYPEOF(arg) THEN
    RETURN (TRUE);
  END_IF;
  IF ('AUTOMOTIVE_DESIGN.INDEX_EXPRESSION' IN TYPEOF(arg)) OR (
  'AUTOMOTIVE_DESIGN.SUBSTRING_EXPRESSION' IN TYPEOF(arg)) OR (
  'AUTOMOTIVE_DESIGN.CONCAT_EXPRESSION' IN TYPEOF(arg)) OR (
  'AUTOMOTIVE_DESIGN.FORMAT_FUNCTION' IN TYPEOF(arg)) THEN
    RETURN (FALSE);
  END_IF;
  RETURN (FALSE);
END_FUNCTION; (* declared in: iso13584_expressions_schema *)
 
FUNCTION item_correlation(items : SET OF GENERIC; c_items : SET OF STRING) :
  LOGICAL;
LOCAL
  c_types : SET OF STRING := [];
  c_hit : INTEGER := 0;
END_LOCAL;
  REPEAT i := 1 TO HIINDEX(c_items);
    c_types := c_types + ['AUTOMOTIVE_DESIGN.' + c_items[i]];
  END_REPEAT;
  REPEAT i := 1 TO HIINDEX(items);
    IF SIZEOF(c_types * TYPEOF(items[i])) = 1 THEN
      c_hit := c_hit + 1;
    END_IF;
  END_REPEAT;
  IF SIZEOF(items) = c_hit THEN
    RETURN (TRUE);
  ELSE
    RETURN (FALSE);
  END_IF;
END_FUNCTION; -- 10303-214: automotive_design
 
FUNCTION item_in_context(item : representation_item; cntxt :
  representation_context) : BOOLEAN;
LOCAL
  y :  BAG  OF representation_item;
END_LOCAL;
  IF SIZEOF(USEDIN(item, 'AUTOMOTIVE_DESIGN.REPRESENTATION.ITEMS') * cntxt.
  representations_in_context) > 0 THEN
    RETURN (TRUE);
  ELSE
    y := QUERY(z <* USEDIN(item, '') | 
    'AUTOMOTIVE_DESIGN.REPRESENTATION_ITEM' IN TYPEOF(z));
    IF SIZEOF(y) > 0 THEN
      REPEAT i := 1 TO HIINDEX(y);
        IF item_in_context(y[i], cntxt) THEN
          RETURN (TRUE);
        END_IF;
      END_REPEAT;
    END_IF;
  END_IF;
  RETURN (FALSE);
END_FUNCTION; -- 10303-43: representation_schema
 
FUNCTION leap_year(year : year_number) : BOOLEAN;
  IF (year MOD 4 = 0) AND (year MOD 100 <> 0) OR (year MOD 400 = 0) THEN
    RETURN (TRUE);
  ELSE
    RETURN (FALSE);
  END_IF;
END_FUNCTION; -- 10303-41: date_time_schema
 
FUNCTION list_face_loops(f : face) : LIST OF loop;
LOCAL
  loops : LIST OF loop := [];
END_LOCAL;
  REPEAT i := 1 TO SIZEOF(f.bounds);
    loops := loops + f.bounds[i].bound;
  END_REPEAT;
  RETURN (loops);
END_FUNCTION; -- 10303-42: topology_schema
 
FUNCTION list_of_topology_reversed(a_list : list_of_reversible_topology_item)
   : list_of_reversible_topology_item;
LOCAL
  the_reverse : list_of_reversible_topology_item;
END_LOCAL;
  the_reverse := [];
  REPEAT i := 1 TO SIZEOF(a_list);
    the_reverse := topology_reversed(a_list[i]) + the_reverse;
  END_REPEAT;
  RETURN (the_reverse);
END_FUNCTION; -- 10303-42: topology_schema
 
FUNCTION list_to_array(lis : LIST OF GENERIC : t; low : INTEGER; u : INTEGER)
   :  ARRAY [low:u] OF GENERIC : t;
LOCAL
  n : INTEGER;
  res :  ARRAY [low:u] OF GENERIC : t;
END_LOCAL;
  n := SIZEOF(lis);
  IF n <> u - low + 1 THEN
    RETURN (?);
  ELSE
    res := [lis[1] : n];
    REPEAT i := 2 TO n;
      res[low + i - 1] := lis[i];
    END_REPEAT;
    RETURN (res);
  END_IF;
END_FUNCTION; -- 10303-42: geometry_schema
 
FUNCTION list_to_set(l : LIST OF GENERIC : t) : SET OF GENERIC : t;
LOCAL
  s : SET OF GENERIC : t := [];
END_LOCAL;
  REPEAT i := 1 TO SIZEOF(l);
    s := s + l[i];
  END_REPEAT;
  RETURN (s);
END_FUNCTION; -- 10303-42: topology_schema
 
FUNCTION make_array_of_array(lis :  LIST [1:?] OF  LIST [1:?] OF GENERIC : t;
  low1 : INTEGER; u1 : INTEGER; low2 : INTEGER; u2 : INTEGER) :  ARRAY [low1:u1
  ] OF  ARRAY [low2:u2] OF GENERIC : t;
LOCAL
  res :  ARRAY [low1:u1] OF  ARRAY [low2:u2] OF GENERIC : t;
END_LOCAL;
  IF u1 - low1 + 1 <> SIZEOF(lis) THEN
    RETURN (?);
  END_IF;
  IF u2 - low2 + 1 <> SIZEOF(lis[1]) THEN
    RETURN (?);
  END_IF;
  res := [list_to_array(lis[1], low2, u2) : u1 - low1 + 1];
  REPEAT i := 2 TO HIINDEX(lis);
    IF u2 - low2 + 1 <> SIZEOF(lis[i]) THEN
      RETURN (?);
    END_IF;
    res[low1 + i - 1] := list_to_array(lis[i], low2, u2);
  END_REPEAT;
  RETURN (res);
END_FUNCTION; -- 10303-42: geometry_schema
 
FUNCTION mixed_loop_type_set(l : SET OF loop) : LOGICAL;
LOCAL
  poly_loop_type : LOGICAL;
END_LOCAL;
  IF SIZEOF(l) <= 1 THEN
    RETURN (FALSE);
  END_IF;
  poly_loop_type := 'AUTOMOTIVE_DESIGN.POLY_LOOP' IN TYPEOF(l[1]);
  REPEAT i := 2 TO SIZEOF(l);
    IF ('AUTOMOTIVE_DESIGN.POLY_LOOP' IN TYPEOF(l[i])) <> poly_loop_type
     THEN
      RETURN (TRUE);
    END_IF;
  END_REPEAT;
  RETURN (FALSE);
END_FUNCTION; -- 10303-42: topology_schema
 
FUNCTION msb_shells(brep : manifold_solid_brep) : SET [1:?] OF closed_shell;
  IF SIZEOF(QUERY(msbtype <* TYPEOF(brep) | msbtype LIKE '*BREP_WITH_VOIDS'))
   >= 1 THEN
    RETURN (brep\brep_with_voids.voids + brep.outer);
  ELSE
    RETURN ([brep.outer]);
  END_IF;
END_FUNCTION; -- 10303-42: geometric_model_schema
 
FUNCTION msf_curve_check(cv : representation_item) : BOOLEAN;
  IF SIZEOF(['AUTOMOTIVE_DESIGN.BOUNDED_CURVE', 'AUTOMOTIVE_DESIGN.CONIC'
  , 'AUTOMOTIVE_DESIGN.CURVE_REPLICA', 'AUTOMOTIVE_DESIGN.LINE', 
  'AUTOMOTIVE_DESIGN.OFFSET_CURVE_3D'] * TYPEOF(cv)) > 1 THEN
    RETURN (FALSE);
  END_IF;
  IF ('AUTOMOTIVE_DESIGN.B_SPLINE_CURVE' IN TYPEOF(cv)) AND (cv\
  b_spline_curve.self_intersect = FALSE) OR (cv\b_spline_curve.self_intersect
   = UNKNOWN) THEN
    RETURN (TRUE);
  ELSE
    IF SIZEOF(['AUTOMOTIVE_DESIGN.CONIC', 'AUTOMOTIVE_DESIGN.LINE'] * 
    TYPEOF(cv)) = 1 THEN
      RETURN (TRUE);
    ELSE
      IF 'AUTOMOTIVE_DESIGN.CURVE_REPLICA' IN TYPEOF(cv) THEN
        RETURN (msf_curve_check(cv\curve_replica.parent_curve));
      ELSE
        IF ('AUTOMOTIVE_DESIGN.OFFSET_CURVE_3D' IN TYPEOF(cv)) AND ((cv\
        offset_curve_3d.self_intersect = FALSE) OR (cv\offset_curve_3d
        .self_intersect = UNKNOWN)) AND NOT ('AUTOMOTIVE_DESIGN.POLYLINE' IN 
        TYPEOF(cv\offset_curve_3d.basis_curve)) THEN
          RETURN (msf_curve_check(cv\offset_curve_3d.basis_curve));
        ELSE
          IF 'AUTOMOTIVE_DESIGN.PCURVE' IN TYPEOF(cv) THEN
            RETURN (msf_curve_check(cv\pcurve.reference_to_curve\representation
            .items[1]) AND msf_surface_check(cv\pcurve.basis_surface));
          ELSE
            IF 'AUTOMOTIVE_DESIGN.SURFACE_CURVE' IN TYPEOF(cv) THEN
              IF msf_curve_check(cv\surface_curve.curve_3d) THEN
                REPEAT i := 1 TO SIZEOF(cv\surface_curve.associated_geometry);
                  IF 'AUTOMOTIVE_DESIGN.SURFACE' IN TYPEOF(cv\surface_curve.
                  associated_geometry[i]) THEN
                    IF NOT msf_surface_check(cv\surface_curve.
                    associated_geometry[i]) THEN
                      RETURN (FALSE);
                    END_IF;
                  ELSE
                    IF 'AUTOMOTIVE_DESIGN.PCURVE' IN TYPEOF(cv\surface_curve
                    .associated_geometry[i]) THEN
                      IF NOT msf_curve_check(cv\surface_curve.
                      associated_geometry[i]) THEN
                        RETURN (FALSE);
                      END_IF;
                    END_IF;
                  END_IF;
                END_REPEAT;
                RETURN (TRUE);
              END_IF;
            ELSE
              IF 'AUTOMOTIVE_DESIGN.POLYLINE' IN TYPEOF(cv) THEN
                IF SIZEOF(cv\polyline.points) >= 3 THEN
                  RETURN (TRUE);
                END_IF;
              END_IF;
            END_IF;
          END_IF;
        END_IF;
      END_IF;
    END_IF;
  END_IF;
  RETURN (FALSE);
END_FUNCTION; -- 10303-509: aic_manifold_surface
 
FUNCTION msf_surface_check(surf : surface) : BOOLEAN;
  IF 'AUTOMOTIVE_DESIGN.ELEMENTARY_SURFACE' IN TYPEOF(surf) THEN
    RETURN (TRUE);
  ELSE
    IF 'AUTOMOTIVE_DESIGN.SWEPT_SURFACE' IN TYPEOF(surf) THEN
      RETURN (msf_curve_check(surf\swept_surface.swept_curve));
    ELSE
      IF ('AUTOMOTIVE_DESIGN.OFFSET_SURFACE' IN TYPEOF(surf)) AND (surf\
      offset_surface.self_intersect = FALSE) OR (surf\offset_surface
      .self_intersect = UNKNOWN) THEN
        RETURN (msf_surface_check(surf\offset_surface.basis_surface));
      ELSE
        IF 'AUTOMOTIVE_DESIGN.SURFACE_REPLICA' IN TYPEOF(surf) THEN
          RETURN (msf_surface_check(surf\surface_replica.parent_surface));
        ELSE
          IF ('AUTOMOTIVE_DESIGN.B_SPLINE_SURFACE' IN TYPEOF(surf)) AND (
          surf\b_spline_surface.self_intersect = FALSE) OR (surf\
          b_spline_surface.self_intersect = UNKNOWN) THEN
            RETURN (TRUE);
          END_IF;
        END_IF;
      END_IF;
    END_IF;
  END_IF;
  RETURN (FALSE);
END_FUNCTION; -- 10303-509: aic_manifold_surface
 
FUNCTION nmsf_curve_check(cv : representation_item) : BOOLEAN;
  IF SIZEOF(['AUTOMOTIVE_DESIGN.BOUNDED_CURVE', 'AUTOMOTIVE_DESIGN.CONIC'
  , 'AUTOMOTIVE_DESIGN.CURVE_REPLICA', 'AUTOMOTIVE_DESIGN.LINE', 
  'AUTOMOTIVE_DESIGN.OFFSET_CURVE_3D'] * TYPEOF(cv)) > 1 THEN
    RETURN (FALSE);
  ELSE
    IF ('AUTOMOTIVE_DESIGN.B_SPLINE_CURVE' IN TYPEOF(cv)) AND (cv\
    b_spline_curve.self_intersect = FALSE) OR (cv\b_spline_curve.self_intersect
     = UNKNOWN) THEN
      RETURN (TRUE);
    ELSE
      IF SIZEOF(['AUTOMOTIVE_DESIGN.CONIC', 'AUTOMOTIVE_DESIGN.LINE'] * 
      TYPEOF(cv)) = 1 THEN
        RETURN (TRUE);
      ELSE
        IF 'AUTOMOTIVE_DESIGN.CURVE_REPLICA' IN TYPEOF(cv) THEN
          RETURN (nmsf_curve_check(cv\curve_replica.parent_curve));
        ELSE
          IF ('AUTOMOTIVE_DESIGN.OFFSET_CURVE_3D' IN TYPEOF(cv)) AND ((cv\
          offset_curve_3d.self_intersect = FALSE) OR (cv\offset_curve_3d
          .self_intersect = UNKNOWN)) AND NOT ('AUTOMOTIVE_DESIGN.POLYLINE' 
          IN TYPEOF(cv\offset_curve_3d.basis_curve)) THEN
            RETURN (nmsf_curve_check(cv\offset_curve_3d.basis_curve));
          ELSE
            IF 'AUTOMOTIVE_DESIGN.PCURVE' IN TYPEOF(cv) THEN
              RETURN (nmsf_curve_check(cv\pcurve.reference_to_curve\
              representation.items[1]) AND nmsf_surface_check(cv\pcurve.
              basis_surface));
            ELSE
              IF 'AUTOMOTIVE_DESIGN.SURFACE_CURVE' IN TYPEOF(cv) THEN
                IF nmsf_curve_check(cv\surface_curve.curve_3d) THEN
                  REPEAT i := 1 TO SIZEOF(cv\surface_curve.associated_geometry)
                    ;
                    IF 'AUTOMOTIVE_DESIGN.SURFACE' IN TYPEOF(cv\
                    surface_curve.associated_geometry[i]) THEN
                      IF NOT nmsf_surface_check(cv\surface_curve.
                      associated_geometry[i]) THEN
                        RETURN (FALSE);
                      END_IF;
                    ELSE
                      IF 'AUTOMOTIVE_DESIGN.PCURVE' IN TYPEOF(cv\
                      surface_curve.associated_geometry[i]) THEN
                        IF NOT nmsf_curve_check(cv\surface_curve.
                        associated_geometry[i]) THEN
                          RETURN (FALSE);
                        END_IF;
                      END_IF;
                    END_IF;
                  END_REPEAT;
                  RETURN (TRUE);
                END_IF;
              ELSE
                IF 'AUTOMOTIVE_DESIGN.POLYLINE' IN TYPEOF(cv) THEN
                  IF SIZEOF(cv\polyline.points) >= 3 THEN
                    RETURN (TRUE);
                  END_IF;
                END_IF;
              END_IF;
            END_IF;
          END_IF;
        END_IF;
      END_IF;
    END_IF;
  END_IF;
  RETURN (FALSE);
END_FUNCTION; -- 10303-508: aic_non_manifold_surface
 
FUNCTION nmsf_surface_check(surf : surface) : BOOLEAN;
  IF 'AUTOMOTIVE_DESIGN.ELEMENTARY_SURFACE' IN TYPEOF(surf) THEN
    RETURN (TRUE);
  ELSE
    IF 'AUTOMOTIVE_DESIGN.SWEPT_SURFACE' IN TYPEOF(surf) THEN
      RETURN (nmsf_curve_check(surf\swept_surface.swept_curve));
    ELSE
      IF ('AUTOMOTIVE_DESIGN.OFFSET_SURFACE' IN TYPEOF(surf)) AND (surf\
      offset_surface.self_intersect = FALSE) OR (surf\offset_surface
      .self_intersect = UNKNOWN) THEN
        RETURN (nmsf_surface_check(surf\offset_surface.basis_surface));
      ELSE
        IF 'AUTOMOTIVE_DESIGN.SURFACE_REPLICA' IN TYPEOF(surf) THEN
          RETURN (nmsf_surface_check(surf\surface_replica.parent_surface));
        ELSE
          IF ('AUTOMOTIVE_DESIGN.B_SPLINE_SURFACE' IN TYPEOF(surf)) AND (
          surf\b_spline_surface.self_intersect = FALSE) OR (surf\
          b_spline_surface.self_intersect = UNKNOWN) THEN
            RETURN (TRUE);
          END_IF;
        END_IF;
      END_IF;
    END_IF;
  END_IF;
  RETURN (FALSE);
END_FUNCTION; -- 10303-508: aic_non_manifold_surface
 
FUNCTION normalise(arg : vector_or_direction) : vector_or_direction;
LOCAL
  ndim : INTEGER;
  v : direction;
  result : vector_or_direction;
  vec : vector;
  mag : REAL;
END_LOCAL;
  IF NOT EXISTS(arg) THEN
    result := ?;
  ELSE
    ndim := arg.dim;
    IF 'AUTOMOTIVE_DESIGN.VECTOR' IN TYPEOF(arg) THEN
      v := dummy_gri||direction(arg.orientation.direction_ratios);
      IF arg.magnitude = 0.0 THEN
        RETURN (?);
      ELSE
        vec := dummy_gri||vector(v, 1.0);
      END_IF;
    ELSE
      v := dummy_gri||direction(arg.direction_ratios);
    END_IF;
    mag := 0.0;
    REPEAT i := 1 TO ndim;
      mag := mag + v.direction_ratios[i] * v.direction_ratios[i];
    END_REPEAT;
    IF mag > 0.0 THEN
      mag := SQRT(mag);
      REPEAT i := 1 TO ndim;
        v.direction_ratios[i] := v.direction_ratios[i]/mag;
      END_REPEAT;
      IF 'AUTOMOTIVE_DESIGN.VECTOR' IN TYPEOF(arg) THEN
        vec.orientation := v;
        result := vec;
      ELSE
        result := v;
      END_IF;
    ELSE
      RETURN (?);
    END_IF;
  END_IF;
  RETURN (result);
END_FUNCTION; -- 10303-42: geometry_schema
 
FUNCTION open_shell_reversed(a_shell : open_shell) : oriented_open_shell;
LOCAL
  the_reverse : oriented_open_shell;
END_LOCAL;
  IF 'AUTOMOTIVE_DESIGN.ORIENTED_OPEN_SHELL' IN TYPEOF(a_shell) THEN
    the_reverse := dummy_tri||connected_face_set(a_shell\connected_face_set
    .cfs_faces)||open_shell()||oriented_open_shell(a_shell\oriented_open_shell
    .open_shell_element, NOT a_shell\oriented_open_shell.orientation);
  ELSE
    the_reverse := dummy_tri||connected_face_set(a_shell\connected_face_set
    .cfs_faces)||open_shell()||oriented_open_shell(a_shell, FALSE);
  END_IF;
  RETURN (the_reverse);
END_FUNCTION; -- 10303-42: topology_schema
 
FUNCTION orthogonal_complement(vec : direction) : direction;
LOCAL
  result : direction;
END_LOCAL;
  IF (vec.dim <> 2) OR NOT EXISTS(vec) THEN
    RETURN (?);
  ELSE
    result := dummy_gri||direction([-vec.direction_ratios[2], vec.
    direction_ratios[1]]);
    RETURN (result);
  END_IF;
END_FUNCTION; -- 10303-42: geometry_schema
 
FUNCTION path_head_to_tail(a_path : path) : LOGICAL;
LOCAL
  n : INTEGER;
  p : LOGICAL := TRUE;
END_LOCAL;
  n := SIZEOF(a_path.edge_list);
  REPEAT i := 2 TO n;
    p := p AND (a_path.edge_list[i - 1].edge_end :=: a_path.edge_list[i].
    edge_start);
  END_REPEAT;
  RETURN (p);
END_FUNCTION; -- 10303-42: topology_schema
 
FUNCTION path_reversed(a_path : path) : oriented_path;
LOCAL
  the_reverse : oriented_path;
END_LOCAL;
  IF 'AUTOMOTIVE_DESIGN.ORIENTED_PATH' IN TYPEOF(a_path) THEN
    the_reverse := dummy_tri||path(list_of_topology_reversed(a_path.edge_list))
    ||oriented_path(a_path\oriented_path.path_element, NOT a_path\oriented_path
    .orientation);
  ELSE
    the_reverse := dummy_tri||path(list_of_topology_reversed(a_path.edge_list))
    ||oriented_path(a_path, FALSE);
  END_IF;
  RETURN (the_reverse);
END_FUNCTION; -- 10303-42: topology_schema
 
FUNCTION plane_angle_for_pair_in_radian(pair : kinematic_pair; angle :
  plane_angle_measure) : plane_angle_measure;
LOCAL
  converted_angle : plane_angle_measure := angle;
  link_rep : kinematic_link_representation := representation_of_link(pair.joint
  .first_link);
  link_cntxt : representation_context;
  pa_units : SET OF unit := [];
  pau : unit;
END_LOCAL;
  link_cntxt := link_rep\representation.context_of_items;
  IF NOT ('AUTOMOTIVE_DESIGN.GLOBAL_UNIT_ASSIGNED_CONTEXT' IN TYPEOF(
  link_cntxt)) THEN
    RETURN (?);
  END_IF;
  pa_units := QUERY(unit <* link_cntxt\global_unit_assigned_context.units | 
  'AUTOMOTIVE_DESIGN.PLANE_ANGLE_UNIT' IN TYPEOF(unit));
  IF SIZEOF(pa_units) <> 1 THEN
    RETURN (?);
  END_IF;
  pau := pa_units[1];
  IF NOT ('AUTOMOTIVE_DESIGN.SI_UNIT' IN TYPEOF(pau)) AND NOT (
  'AUTOMOTIVE_DESIGN.CONVERSION_BASED_UNIT' IN TYPEOF(pau)) THEN
    RETURN (?);
  END_IF;
  REPEAT WHILE 'AUTOMOTIVE_DESIGN.CONVERSION_BASED_UNIT' IN TYPEOF(pau);
    converted_angle := converted_angle * pau\conversion_based_unit.
    conversion_factor.value_component;
    pau := pau\conversion_based_unit.conversion_factor.unit_component;
    IF NOT ('AUTOMOTIVE_DESIGN.SI_UNIT' IN TYPEOF(pau)) AND NOT (
    'AUTOMOTIVE_DESIGN.CONVERSION_BASED_UNIT' IN TYPEOF(pau)) OR NOT (
    'AUTOMOTIVE_DESIGN.PLANE_ANGLE_UNIT' IN TYPEOF(pau)) THEN
      RETURN (?);
    END_IF;
  END_REPEAT;
  IF pau\si_unit.name <> si_unit_name.radian THEN
    RETURN (?);
  END_IF;
  CASE pau\si_unit.prefix OF 
     si_prefix.exa : 
    RETURN (1.E18 * converted_angle);
     si_prefix.peta : 
    RETURN (1.E15 * converted_angle);
     si_prefix.tera : 
    RETURN (1.E12 * converted_angle);
     si_prefix.giga : 
    RETURN (1.E9 * converted_angle);
     si_prefix.mega : 
    RETURN (1.E6 * converted_angle);
     si_prefix.kilo : 
    RETURN (1.E3 * converted_angle);
     si_prefix.hecto : 
    RETURN (1.E2 * converted_angle);
     si_prefix.deca : 
    RETURN (1.E1 * converted_angle);
     si_prefix.deci : 
    RETURN (1.E-1 * converted_angle);
     si_prefix.centi : 
    RETURN (1.E-2 * converted_angle);
     si_prefix.milli : 
    RETURN (1.E-3 * converted_angle);
     si_prefix.micro : 
    RETURN (1.E-6 * converted_angle);
     si_prefix.nano : 
    RETURN (1.E-9 * converted_angle);
     si_prefix.pico : 
    RETURN (1.E-12 * converted_angle);
     si_prefix.femto : 
    RETURN (1.E-15 * converted_angle);
     si_prefix.atto : 
    RETURN (1.E-18 * converted_angle);
    OTHERWISE  : RETURN (converted_angle);
  END_CASE;
END_FUNCTION; -- 10303-105: kinematic_structure_schema
 
FUNCTION representation_of_link(link : kinematic_link) :
  kinematic_link_representation;
LOCAL
  link_rep_rel :  BAG  OF kinematic_link_representation_relation;
END_LOCAL;
  link_rep_rel := USEDIN(link, 
  'AUTOMOTIVE_DESIGN.KINEMATIC_LINK_REPRESENTATION_RELATION.TOPOLOGICAL_ASPECTS'
  );
  IF SIZEOF(link_rep_rel) = 0 THEN
    RETURN (?);
  ELSE
    RETURN (link_rep_rel[1].geometric_aspects);
  END_IF;
END_FUNCTION; -- 10303-105: kinematic_structure_schema
 
FUNCTION representations_mapped_into(rep : representation) : SET OF
  representation;
LOCAL
  results : SET OF representation := [];
  rm : SET OF representation_map;
  mi : SET OF mapped_item := [];
END_LOCAL;
  rm := bag_to_set(USEDIN(rep, 
  'AUTOMOTIVE_DESIGN.REPRESENTATION_MAP.MAPPED_REPRESENTATION'));
  REPEAT i := 1 TO HIINDEX(rm);
    mi := mi + rm[i].map_usage;
  END_REPEAT;
  REPEAT j := 1 TO HIINDEX(mi);
    results := results + USEDIN(mi[j], 
    'AUTOMOTIVE_DESIGN.REPRESENTATION.ITEMS');
  END_REPEAT;
  RETURN (results);
END_FUNCTION; -- 10303-520: aic_associative_draughting_elements
 
FUNCTION scalar_times_vector(scalar : REAL; vec : vector_or_direction) : vector
  ;
LOCAL
  v : direction;
  mag : REAL;
  result : vector;
END_LOCAL;
  IF NOT EXISTS(scalar) OR NOT EXISTS(vec) THEN
    RETURN (?);
  ELSE
    IF 'AUTOMOTIVE_DESIGN.VECTOR' IN TYPEOF(vec) THEN
      v := dummy_gri||direction(vec.orientation.direction_ratios);
      mag := scalar * vec.magnitude;
    ELSE
      v := dummy_gri||direction(vec.direction_ratios);
      mag := scalar;
    END_IF;
    IF mag < 0.0 THEN
      REPEAT i := 1 TO SIZEOF(v.direction_ratios);
        v.direction_ratios[i] := -v.direction_ratios[i];
      END_REPEAT;
      mag := -mag;
    END_IF;
    result := dummy_gri||vector(normalise(v), mag);
  END_IF;
  RETURN (result);
END_FUNCTION; -- 10303-42: geometry_schema
 
FUNCTION second_proj_axis(z_axis : direction; x_axis : direction; arg :
  direction) : direction;
LOCAL
  y_axis : vector;
  v : direction;
  temp : vector;
END_LOCAL;
  IF NOT EXISTS(arg) THEN
    v := dummy_gri||direction([0.0, 1.0, 0.0]);
  ELSE
    v := arg;
  END_IF;
  temp := scalar_times_vector(dot_product(v, z_axis), z_axis);
  y_axis := vector_difference(v, temp);
  temp := scalar_times_vector(dot_product(v, x_axis), x_axis);
  y_axis := vector_difference(y_axis, temp);
  y_axis := normalise(y_axis);
  RETURN (y_axis.orientation);
END_FUNCTION; -- 10303-42: geometry_schema
 
FUNCTION set_of_topology_reversed(a_set : set_of_reversible_topology_item) :
  set_of_reversible_topology_item;
LOCAL
  the_reverse : set_of_reversible_topology_item;
END_LOCAL;
  the_reverse := [];
  REPEAT i := 1 TO SIZEOF(a_set);
    the_reverse := the_reverse + topology_reversed(a_set[i]);
  END_REPEAT;
  RETURN (the_reverse);
END_FUNCTION; -- 10303-42: topology_schema
 
FUNCTION shell_reversed(a_shell : shell) : shell;
  IF 'AUTOMOTIVE_DESIGN.OPEN_SHELL' IN TYPEOF(a_shell) THEN
    RETURN (open_shell_reversed(a_shell));
  ELSE
    IF 'AUTOMOTIVE_DESIGN.CLOSED_SHELL' IN TYPEOF(a_shell) THEN
      RETURN (closed_shell_reversed(a_shell));
    ELSE
      RETURN (?);
    END_IF;
  END_IF;
END_FUNCTION; -- 10303-42: topology_schema
 
FUNCTION suitably_based_mechanism(mbp : mechanism_base_placement; mech :
  mechanism) : BOOLEAN;
LOCAL
  kprop : kinematic_property_definition;
  kgrep : kinematic_ground_representation;
  klrep : kinematic_link_representation;
  klnk : kinematic_link;
  kjnts :  BAG  OF kinematic_joint;
  nmechs :  BAG  OF mechanism;
  nmbps :  BAG  OF mechanism_base_placement;
END_LOCAL;
  kprop := mech.containing_property;
  IF 'AUTOMOTIVE_DESIGN.KINEMATIC_GROUND_REPRESENTATION' IN TYPEOF(mbp\
  representation_relationship.rep_1) THEN
    kgrep := mbp\representation_relationship.rep_1;
    IF kgrep.property\property_definition_representation.definition :=: kprop
     THEN
      RETURN (TRUE);
    ELSE
      RETURN (FALSE);
    END_IF;
  ELSE
    klrep := mbp\representation_relationship.rep_1;
    klnk := klrep.link_representation_relation.topological_aspects;
    kjnts := USEDIN(klnk, 'AUTOMOTIVE_DESIGN.KINEMATIC_JOINT.FIRST_LINK') + 
    USEDIN(klnk, 'AUTOMOTIVE_DESIGN.KINEMATIC_JOINT.SECOND_LINK');
    nmechs := USEDIN(kjnts[1].structure, 
    'AUTOMOTIVE_DESIGN.MECHANISM.STRUCTURE_DEFINITION');
    IF nmechs[1] :=: mech THEN
      RETURN (FALSE);
    ELSE
      IF nmechs[1].containing_property :<>: kprop THEN
        RETURN (FALSE);
      ELSE
        nmbps := USEDIN(nmechs[1], 
        'AUTOMOTIVE_DESIGN.MECHANISM_BASE_PLACEMENT.BASE_OF_MECHANISM');
        IF SIZEOF(nmbps) = 0 THEN
          RETURN (FALSE);
        ELSE
          RETURN (suitably_based_mechanism(nmbps[1], mech));
        END_IF;
      END_IF;
    END_IF;
  END_IF;
END_FUNCTION; -- 10303-105: kinematic_structure_schema
 
FUNCTION surface_condition_correlation(pd : property_definition; rep :
  representation) : LOGICAL;
  CASE pd.name OF 
     'visual appearance', 'tactile appearance', 'contact ratio', 'hardness', 
    'treatment result', 'surface texture' : 
    RETURN (pd.name = rep.name);
    OTHERWISE  : RETURN (UNKNOWN);
  END_CASE;
END_FUNCTION; -- 10303-214: automotive_design
 
FUNCTION surface_weights_positive(b : rational_b_spline_surface) : BOOLEAN;
LOCAL
  result : BOOLEAN := TRUE;
END_LOCAL;
  REPEAT i := 0 TO b.u_upper;
    REPEAT j := 0 TO b.v_upper;
      IF b.weights[i][j] <= 0.0 THEN
        result := FALSE;
        RETURN (result);
      END_IF;
    END_REPEAT;
  END_REPEAT;
  RETURN (result);
END_FUNCTION; -- 10303-42: geometry_schema
 
FUNCTION topology_reversed(an_item : reversible_topology) : reversible_topology
  ;
  IF 'AUTOMOTIVE_DESIGN.EDGE' IN TYPEOF(an_item) THEN
    RETURN (edge_reversed(an_item));
  END_IF;
  IF 'AUTOMOTIVE_DESIGN.PATH' IN TYPEOF(an_item) THEN
    RETURN (path_reversed(an_item));
  END_IF;
  IF 'AUTOMOTIVE_DESIGN.FACE_BOUND' IN TYPEOF(an_item) THEN
    RETURN (face_bound_reversed(an_item));
  END_IF;
  IF 'AUTOMOTIVE_DESIGN.FACE' IN TYPEOF(an_item) THEN
    RETURN (face_reversed(an_item));
  END_IF;
  IF 'AUTOMOTIVE_DESIGN.SHELL' IN TYPEOF(an_item) THEN
    RETURN (shell_reversed(an_item));
  END_IF;
  IF 'SET' IN TYPEOF(an_item) THEN
    RETURN (set_of_topology_reversed(an_item));
  END_IF;
  IF 'LIST' IN TYPEOF(an_item) THEN
    RETURN (list_of_topology_reversed(an_item));
  END_IF;
  RETURN (?);
END_FUNCTION; -- 10303-42: topology_schema
 
FUNCTION type_check_function(the_type : GENERIC; sub_names : SET OF STRING;
  criterion : INTEGER) : LOGICAL;
  IF NOT EXISTS(the_type) OR NOT ({0 <= criterion <= 3}) OR (SIZEOF(sub_names)
   = 0) THEN
    RETURN (UNKNOWN);
  ELSE
    CASE criterion OF 
       0 : 
      RETURN (SIZEOF(sub_names * TYPEOF(the_type)) > 0);
       1 : 
      RETURN (SIZEOF(sub_names * TYPEOF(the_type)) = 0);
       2 : 
      RETURN (SIZEOF(sub_names * TYPEOF(the_type)) = 1);
       3 : 
      RETURN (SIZEOF(sub_names * TYPEOF(the_type)) <= 1);
    END_CASE;
  END_IF;
END_FUNCTION; -- 10303-41: support_resource_schema
 
FUNCTION unique_link_usage(link : kinematic_link) : BOOLEAN;
LOCAL
  mechs : SET OF mechanism;
  joints : SET OF kinematic_joint;
  struct : kinematic_structure;
END_LOCAL;
  joints := bag_to_set(USEDIN(link, 
  'AUTOMOTIVE_DESIGN.KINEMATIC_JOINT.FIRST_LINK') + USEDIN(link, 
  'AUTOMOTIVE_DESIGN.KINEMATIC_JOINT.SECOND_LINK'));
  struct := joints[1].structure;
  REPEAT i := 2 TO SIZEOF(joints);
    IF joints[i].structure :<>: struct THEN
      RETURN (FALSE);
    END_IF;
  END_REPEAT;
  mechs := bag_to_set(USEDIN(struct, 
  'AUTOMOTIVE_DESIGN.MECHANISM.STRUCTURE_DEFINITION'));
  IF SIZEOF(mechs) <> 1 THEN
    RETURN (FALSE);
  END_IF;
  RETURN (TRUE);
END_FUNCTION; -- 10303-105: kinematic_structure_schema
 
FUNCTION using_items(item : founded_item_select; checked_items : SET OF
  founded_item_select) : SET OF founded_item_select;
LOCAL
  new_check_items : SET OF founded_item_select;
  result_items : SET OF founded_item_select;
  next_items : SET OF founded_item_select;
END_LOCAL;
  result_items := [];
  new_check_items := checked_items + item;
  next_items := QUERY(z <* bag_to_set(USEDIN(item, '')) | (
  'AUTOMOTIVE_DESIGN.REPRESENTATION_ITEM' IN TYPEOF(z)) OR (
  'AUTOMOTIVE_DESIGN.FOUNDED_ITEM' IN TYPEOF(z)));
  IF SIZEOF(next_items) > 0 THEN
    REPEAT i := 1 TO HIINDEX(next_items);
      IF NOT (next_items[i] IN new_check_items) THEN
        result_items := result_items + next_items[i] + using_items(next_items[i
        ], new_check_items);
      END_IF;
    END_REPEAT;
  END_IF;
  RETURN (result_items);
END_FUNCTION; -- 10303-43: representation_schema
 
FUNCTION using_representations(item : founded_item_select) : SET OF
  representation;
LOCAL
  results : SET OF representation;
  result_bag :  BAG  OF representation;
  intermediate_items : SET OF founded_item_select;
END_LOCAL;
  results := [];
  result_bag := USEDIN(item, 'AUTOMOTIVE_DESIGN.REPRESENTATION.ITEMS');
  IF SIZEOF(result_bag) > 0 THEN
    REPEAT i := 1 TO HIINDEX(result_bag);
      results := results + result_bag[i];
    END_REPEAT;
  END_IF;
  intermediate_items := using_items(item, []);
  IF SIZEOF(intermediate_items) > 0 THEN
    REPEAT i := 1 TO HIINDEX(intermediate_items);
      result_bag := USEDIN(intermediate_items[i], 
      'AUTOMOTIVE_DESIGN.REPRESENTATION.ITEMS');
      IF SIZEOF(result_bag) > 0 THEN
        REPEAT j := 1 TO HIINDEX(result_bag);
          results := results + result_bag[j];
        END_REPEAT;
      END_IF;
    END_REPEAT;
  END_IF;
  RETURN (results);
END_FUNCTION; -- 10303-43: representation_schema
 
FUNCTION valid_basis_curve_in_2d_wireframe(crv : curve) : BOOLEAN;
  IF SIZEOF(['AUTOMOTIVE_DESIGN.POLYLINE', 
  'AUTOMOTIVE_DESIGN.B_SPLINE_CURVE', 'AUTOMOTIVE_DESIGN.ELLIPSE', 
  'AUTOMOTIVE_DESIGN.CIRCLE'] * TYPEOF(crv)) = 1 THEN
    RETURN (TRUE);
  ELSE
    IF 'AUTOMOTIVE_DESIGN.TRIMMED_CURVE' IN TYPEOF(crv) THEN
      IF SIZEOF(['AUTOMOTIVE_DESIGN.LINE', 'AUTOMOTIVE_DESIGN.PARABOLA', 
      'AUTOMOTIVE_DESIGN.HYPERBOLA'] * TYPEOF(crv\trimmed_curve.basis_curve)
      ) = 1 THEN
        RETURN (TRUE);
      ELSE
        RETURN (valid_basis_curve_in_2d_wireframe(crv\trimmed_curve.basis_curve
        ));
      END_IF;
    ELSE
      IF 'AUTOMOTIVE_DESIGN.OFFSET_CURVE_2D' IN TYPEOF(crv) THEN
        RETURN (valid_basis_curve_in_2d_wireframe(crv\offset_curve_2d.
        basis_curve));
      ELSE
        IF 'AUTOMOTIVE_DESIGN.CURVE_REPLICA' IN TYPEOF(crv) THEN
          RETURN (valid_basis_curve_in_2d_wireframe(crv\curve_replica.
          parent_curve));
        ELSE
          IF 'AUTOMOTIVE_DESIGN.COMPOSITE_CURVE' IN TYPEOF(crv) THEN
            RETURN (SIZEOF(QUERY(ccs <* crv\composite_curve.segments | NOT 
            valid_basis_curve_in_2d_wireframe(ccs.parent_curve))) = 0);
          END_IF;
        END_IF;
      END_IF;
    END_IF;
  END_IF;
  RETURN (FALSE);
END_FUNCTION; -- 10303-503: aic_geometrically_bounded_2d_wireframe
 
FUNCTION valid_calendar_date(date : calendar_date) : LOGICAL;
  CASE date.month_component OF 
     1 : 
    RETURN ({1 <= date.day_component <= 31});
     2 : 
      BEGIN
        IF leap_year(date.year_component) THEN
          RETURN ({1 <= date.day_component <= 29});
        ELSE
          RETURN ({1 <= date.day_component <= 28});
        END_IF;
      END;
     3 : 
    RETURN ({1 <= date.day_component <= 31});
     4 : 
    RETURN ({1 <= date.day_component <= 30});
     5 : 
    RETURN ({1 <= date.day_component <= 31});
     6 : 
    RETURN ({1 <= date.day_component <= 30});
     7 : 
    RETURN ({1 <= date.day_component <= 31});
     8 : 
    RETURN ({1 <= date.day_component <= 31});
     9 : 
    RETURN ({1 <= date.day_component <= 30});
     10 : 
    RETURN ({1 <= date.day_component <= 31});
     11 : 
    RETURN ({1 <= date.day_component <= 30});
     12 : 
    RETURN ({1 <= date.day_component <= 31});
  END_CASE;
  RETURN (FALSE);
END_FUNCTION; -- 10303-41: date_time_schema
 
FUNCTION valid_geometrically_bounded_wf_curve(crv : curve) : BOOLEAN;
  IF SIZEOF(['AUTOMOTIVE_DESIGN.POLYLINE', 
  'AUTOMOTIVE_DESIGN.B_SPLINE_CURVE', 'AUTOMOTIVE_DESIGN.ELLIPSE', 
  'AUTOMOTIVE_DESIGN.CIRCLE'] * TYPEOF(crv)) = 1 THEN
    RETURN (TRUE);
  ELSE
    IF 'AUTOMOTIVE_DESIGN.TRIMMED_CURVE' IN TYPEOF(crv) THEN
      IF SIZEOF(['AUTOMOTIVE_DESIGN.LINE', 'AUTOMOTIVE_DESIGN.PARABOLA', 
      'AUTOMOTIVE_DESIGN.HYPERBOLA'] * TYPEOF(crv\trimmed_curve.basis_curve)
      ) = 1 THEN
        RETURN (TRUE);
      ELSE
        RETURN (valid_geometrically_bounded_wf_curve(crv\trimmed_curve.
        basis_curve));
      END_IF;
    ELSE
      IF 'AUTOMOTIVE_DESIGN.OFFSET_CURVE_3D' IN TYPEOF(crv) THEN
        RETURN (valid_geometrically_bounded_wf_curve(crv\offset_curve_3d.
        basis_curve));
      ELSE
        IF 'AUTOMOTIVE_DESIGN.CURVE_REPLICA' IN TYPEOF(crv) THEN
          RETURN (valid_geometrically_bounded_wf_curve(crv\curve_replica.
          parent_curve));
        ELSE
          IF 'AUTOMOTIVE_DESIGN.COMPOSITE_CURVE' IN TYPEOF(crv) THEN
            RETURN (SIZEOF(QUERY(ccs <* crv\composite_curve.segments | NOT 
            valid_geometrically_bounded_wf_curve(ccs.parent_curve))) = 0);
          END_IF;
        END_IF;
      END_IF;
    END_IF;
  END_IF;
  RETURN (FALSE);
END_FUNCTION; -- 10303-510: aic_geometrically_bounded_wireframe
 
FUNCTION valid_geometrically_bounded_wf_point(pnt : point) : BOOLEAN;
  IF 'AUTOMOTIVE_DESIGN.CARTESIAN_POINT' IN TYPEOF(pnt) THEN
    RETURN (TRUE);
  ELSE
    IF 'AUTOMOTIVE_DESIGN.POINT_ON_CURVE' IN TYPEOF(pnt) THEN
      RETURN (valid_geometrically_bounded_wf_curve(pnt\point_on_curve.
      basis_curve));
    ELSE
      IF 'AUTOMOTIVE_DESIGN.POINT_REPLICA' IN TYPEOF(pnt) THEN
        RETURN (valid_geometrically_bounded_wf_point(pnt\point_replica.
        parent_pt));
      END_IF;
    END_IF;
  END_IF;
  RETURN (FALSE);
END_FUNCTION; -- 10303-510: aic_geometrically_bounded_wireframe
 
FUNCTION valid_measure_value(m : measure_value) : BOOLEAN;
  IF 'REAL' IN TYPEOF(m) THEN
    RETURN (m > 0.0);
  ELSE
    IF 'INTEGER' IN TYPEOF(m) THEN
      RETURN (m > 0);
    ELSE
      RETURN (TRUE);
    END_IF;
  END_IF;
END_FUNCTION; -- 10303-43: representation_schema
 
FUNCTION valid_time(time : local_time) : BOOLEAN;
  IF EXISTS(time.second_component) THEN
    RETURN (EXISTS(time.minute_component));
  ELSE
    RETURN (TRUE);
  END_IF;
END_FUNCTION; -- 10303-41: date_time_schema
 
FUNCTION valid_units(m : measure_with_unit) : BOOLEAN;
  IF 'AUTOMOTIVE_DESIGN.LENGTH_MEASURE' IN TYPEOF(m.value_component) THEN
    IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(
    1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000) THEN
      RETURN (FALSE);
    END_IF;
  END_IF;
  IF 'AUTOMOTIVE_DESIGN.MASS_MEASURE' IN TYPEOF(m.value_component) THEN
    IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(
    0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000) THEN
      RETURN (FALSE);
    END_IF;
  END_IF;
  IF 'AUTOMOTIVE_DESIGN.TIME_MEASURE' IN TYPEOF(m.value_component) THEN
    IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(
    0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 0.000000) THEN
      RETURN (FALSE);
    END_IF;
  END_IF;
  IF 'AUTOMOTIVE_DESIGN.ELECTRIC_CURRENT_MEASURE' IN TYPEOF(m.
  value_component) THEN
    IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(
    0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000) THEN
      RETURN (FALSE);
    END_IF;
  END_IF;
  IF 'AUTOMOTIVE_DESIGN.THERMODYNAMIC_TEMPERATURE_MEASURE' IN TYPEOF(m.
  value_component) THEN
    IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(
    0.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000) THEN
      RETURN (FALSE);
    END_IF;
  END_IF;
  IF 'AUTOMOTIVE_DESIGN.CELSIUS_TEMPERATURE_MEASURE' IN TYPEOF(m.
  value_component) THEN
    IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(
    0.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000) THEN
      RETURN (FALSE);
    END_IF;
  END_IF;
  IF 'AUTOMOTIVE_DESIGN.AMOUNT_OF_SUBSTANCE_MEASURE' IN TYPEOF(m.
  value_component) THEN
    IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(
    0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000) THEN
      RETURN (FALSE);
    END_IF;
  END_IF;
  IF 'AUTOMOTIVE_DESIGN.LUMINOUS_INTENSITY_MEASURE' IN TYPEOF(m.
  value_component) THEN
    IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(
    0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000) THEN
      RETURN (FALSE);
    END_IF;
  END_IF;
  IF 'AUTOMOTIVE_DESIGN.PLANE_ANGLE_MEASURE' IN TYPEOF(m.value_component)
   THEN
    IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(
    0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000) THEN
      RETURN (FALSE);
    END_IF;
  END_IF;
  IF 'AUTOMOTIVE_DESIGN.SOLID_ANGLE_MEASURE' IN TYPEOF(m.value_component)
   THEN
    IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(
    0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000) THEN
      RETURN (FALSE);
    END_IF;
  END_IF;
  IF 'AUTOMOTIVE_DESIGN.AREA_MEASURE' IN TYPEOF(m.value_component) THEN
    IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(
    2.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000) THEN
      RETURN (FALSE);
    END_IF;
  END_IF;
  IF 'AUTOMOTIVE_DESIGN.VOLUME_MEASURE' IN TYPEOF(m.value_component) THEN
    IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(
    3.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000) THEN
      RETURN (FALSE);
    END_IF;
  END_IF;
  IF 'AUTOMOTIVE_DESIGN.RATIO_MEASURE' IN TYPEOF(m.value_component) THEN
    IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(
    0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000) THEN
      RETURN (FALSE);
    END_IF;
  END_IF;
  IF 'AUTOMOTIVE_DESIGN.POSITIVE_LENGTH_MEASURE' IN TYPEOF(m.value_component
  ) THEN
    IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(
    1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000) THEN
      RETURN (FALSE);
    END_IF;
  END_IF;
  IF 'AUTOMOTIVE_DESIGN.POSITIVE_PLANE_ANGLE_MEASURE' IN TYPEOF(m.
  value_component) THEN
    IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(
    0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000) THEN
      RETURN (FALSE);
    END_IF;
  END_IF;
  RETURN (TRUE);
END_FUNCTION; -- 10303-41: measure_schema
 
FUNCTION valid_wireframe_edge_curve(crv : curve) : BOOLEAN;
  IF SIZEOF(['AUTOMOTIVE_DESIGN.LINE', 'AUTOMOTIVE_DESIGN.CONIC', 
  'AUTOMOTIVE_DESIGN.B_SPLINE_CURVE', 'AUTOMOTIVE_DESIGN.POLYLINE'] * 
  TYPEOF(crv)) = 1 THEN
    RETURN (TRUE);
  ELSE
    IF 'AUTOMOTIVE_DESIGN.CURVE_REPLICA' IN TYPEOF(crv) THEN
      RETURN (valid_wireframe_edge_curve(crv\curve_replica.parent_curve));
    ELSE
      IF 'AUTOMOTIVE_DESIGN.OFFSET_CURVE_3D' IN TYPEOF(crv) THEN
        RETURN (valid_wireframe_edge_curve(crv\offset_curve_3d.basis_curve));
      END_IF;
    END_IF;
  END_IF;
  RETURN (FALSE);
END_FUNCTION; -- 10303-501: aic_edge_based_wireframe
 
FUNCTION valid_wireframe_vertex_point(pnt : point) : BOOLEAN;
  IF 'AUTOMOTIVE_DESIGN.CARTESIAN_POINT' IN TYPEOF(pnt) THEN
    RETURN (TRUE);
  ELSE
    IF 'AUTOMOTIVE_DESIGN.POINT_REPLICA' IN TYPEOF(pnt) THEN
      RETURN (valid_wireframe_vertex_point(pnt\point_replica.parent_pt));
    END_IF;
  END_IF;
  RETURN (FALSE);
END_FUNCTION; -- 10303-501: aic_edge_based_wireframe
 
FUNCTION value_range_aggregate_rep_item(agg :  AGGREGATE OF representation_item
  ) : BOOLEAN;
   
  FUNCTION cri(agg :  AGGREGATE OF representation_item) : BOOLEAN;
    IF (SIZEOF(agg) = 3) AND (SIZEOF(QUERY(i1 <* agg | 'AUTOMOTIVE_DESIGN.'
     + 'MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i1))) = 3) THEN
      RETURN (TRUE);
    ELSE
      RETURN (FALSE);
    END_IF;
  END_FUNCTION; -- 10303-214: automotive_design
  IF (SIZEOF(agg) = 3) AND (SIZEOF(QUERY(i <* agg | ('AUTOMOTIVE_DESIGN.' + 
  'COMPOUND_REPRESENTATION_ITEM' IN TYPEOF(i)) AND cri(i\
  compound_representation_item.item_element))) = 1) THEN
    RETURN (TRUE);
  ELSE
    RETURN (FALSE);
  END_IF;
END_FUNCTION; -- 10303-214: automotive_design
 
FUNCTION value_range_wr1(agg :  AGGREGATE OF representation_item) : BOOLEAN;
  IF (SIZEOF(agg) = 2) AND ((SIZEOF(QUERY(i1 <* agg | 
  'AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i1))) = 2) OR (
  SIZEOF(QUERY(i2 <* agg | 'AUTOMOTIVE_DESIGN.VALUE_REPRESENTATION_ITEM' IN 
  TYPEOF(i2))) = 2)) THEN
    RETURN (TRUE);
  ELSE
    RETURN (FALSE);
  END_IF;
END_FUNCTION; -- 10303-214: automotive_design
 
FUNCTION value_range_wr2(agg :  AGGREGATE OF representation_item) : BOOLEAN;
  IF (SIZEOF(QUERY(i <* agg | i.name = 'upper limit')) = 1) AND (SIZEOF(QUERY(i
   <* agg | i.name = 'lower limit')) = 1) THEN
    RETURN (TRUE);
  ELSE
    RETURN (FALSE);
  END_IF;
END_FUNCTION; -- 10303-214: automotive_design
 
FUNCTION value_range_wr3(agg :  AGGREGATE OF representation_item) : BOOLEAN;
  IF SIZEOF(QUERY(i1 <* agg | (
  'AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i1)) AND (SIZEOF
  (QUERY(i2 <* agg | ('AUTOMOTIVE_DESIGN.MEASURE_REPRESENTATION_ITEM' IN 
  TYPEOF(i2)) AND (i1 :<>: i2) AND (i1\measure_with_unit.unit_component :=: i2\
  measure_with_unit.unit_component))) = 1))) = 2 THEN
    RETURN (TRUE);
  ELSE
    RETURN (FALSE);
  END_IF;
END_FUNCTION; -- 10303-214: automotive_design
 
FUNCTION vector_difference(arg1 : vector_or_direction; arg2 :
  vector_or_direction) : vector;
LOCAL
  result : vector;
  res : direction;
  vec1 : direction;
  vec2 : direction;
  mag : REAL;
  mag1 : REAL;
  mag2 : REAL;
  ndim : INTEGER;
END_LOCAL;
  IF NOT EXISTS(arg1) OR NOT EXISTS(arg2) OR (arg1.dim <> arg2.dim) THEN
    RETURN (?);
  ELSE
    IF 'AUTOMOTIVE_DESIGN.VECTOR' IN TYPEOF(arg1) THEN
      mag1 := arg1.magnitude;
      vec1 := arg1.orientation;
    ELSE
      mag1 := 1.0;
      vec1 := arg1;
    END_IF;
    IF 'AUTOMOTIVE_DESIGN.VECTOR' IN TYPEOF(arg2) THEN
      mag2 := arg2.magnitude;
      vec2 := arg2.orientation;
    ELSE
      mag2 := 1.0;
      vec2 := arg2;
    END_IF;
    vec1 := normalise(vec1);
    vec2 := normalise(vec2);
    ndim := SIZEOF(vec1.direction_ratios);
    mag := 0.0;
    res := dummy_gri||direction(vec1.direction_ratios);
    REPEAT i := 1 TO ndim;
      res.direction_ratios[i] := mag1 * vec1.direction_ratios[i] + mag2 * vec2.
      direction_ratios[i];
      mag := mag + res.direction_ratios[i] * res.direction_ratios[i];
    END_REPEAT;
    IF mag > 0.0 THEN
      result := dummy_gri||vector(res, SQRT(mag));
    ELSE
      result := dummy_gri||vector(vec1, 0.0);
    END_IF;
  END_IF;
  RETURN (result);
END_FUNCTION; -- 10303-42: geometry_schema
 
FUNCTION ypr_index(ypr : ypr_enumeration) : INTEGER;
  CASE ypr OF 
     yaw : 
    RETURN (1);
     pitch : 
    RETURN (2);
     roll : 
    RETURN (3);
  END_CASE;
  RETURN (?);
END_FUNCTION; -- 10303-105: kinematic_structure_schema
 
RULE application_protocol_definition_required FOR (application_context);
WHERE
  wr1 : SIZEOF(QUERY(ac <* application_context | SIZEOF(QUERY(apd <* USEDIN(ac
    , 'AUTOMOTIVE_DESIGN.APPLICATION_PROTOCOL_DEFINITION.APPLICATION') | apd
    .application_interpreted_model_schema_name = 'AUTOMOTIVE_DESIGN')) > 0))
     > 0;
END_RULE; -- 10303-214: automotive_design
 
RULE approval_person_organization_requires_date_time FOR (
  approval_person_organization);
WHERE
  wr1 : SIZEOF(QUERY(apo <* approval_person_organization | SIZEOF(QUERY(u <* 
    USEDIN(apo, 'AUTOMOTIVE_DESIGN.APPLIED_DATE_ASSIGNMENT.ITEMS') | u.role.
    name = 'sign off')) + SIZEOF(QUERY(u <* USEDIN(apo, 
    'AUTOMOTIVE_DESIGN.APPLIED_DATE_AND_TIME_ASSIGNMENT.ITEMS') | u.role.
    name = 'sign off')) <> 1)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE approval_requires_approval_assignment FOR (approval);
WHERE
  wr1 : SIZEOF(QUERY(a <* approval | SIZEOF(USEDIN(a, 
    'AUTOMOTIVE_DESIGN.APPROVAL_ASSIGNMENT.ASSIGNED_APPROVAL')) = 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE compatible_dimension FOR (cartesian_point, direction,
  representation_context, geometric_representation_context);
WHERE
  wr1 : SIZEOF(QUERY(x <* cartesian_point | SIZEOF(QUERY(y <* 
    geometric_representation_context | item_in_context(x, y) AND (HIINDEX(x.
    coordinates) <> y.coordinate_space_dimension))) > 0)) = 0;
  wr2 : SIZEOF(QUERY(x <* direction | SIZEOF(QUERY(y <* 
    geometric_representation_context | item_in_context(x, y) AND (HIINDEX(x.
    direction_ratios) <> y.coordinate_space_dimension))) > 0)) = 0;
END_RULE; -- 10303-42: geometry_schema
 
RULE complex_product_requires_product_definition FOR (product_definition,
  product_definition_formation, product_related_product_category);
WHERE
  wr1 : SIZEOF(QUERY(pdf <* product_definition_formation | (SIZEOF(QUERY(prpc
     <* USEDIN(pdf.of_product, 
    'AUTOMOTIVE_DESIGN.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') | prpc.
    name = 'functionality')) = 1) AND (SIZEOF(QUERY(pd <* USEDIN(pdf, 
    'AUTOMOTIVE_DESIGN.PRODUCT_DEFINITION.FORMATION') | pd.
    frame_of_reference.name = 'functional definition')) <> 1) OR (SIZEOF(QUERY(
    prpc <* USEDIN(pdf.of_product, 
    'AUTOMOTIVE_DESIGN.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') | prpc.
    name = 'conceptual design')) = 1) AND (SIZEOF(QUERY(pd <* USEDIN(pdf, 
    'AUTOMOTIVE_DESIGN.PRODUCT_DEFINITION.FORMATION') | pd.
    frame_of_reference.name = 'conceptual definition')) <> 1) OR (SIZEOF(QUERY(
    prpc <* USEDIN(pdf.of_product, 
    'AUTOMOTIVE_DESIGN.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') | prpc.
    name = 'alternative solution')) = 1) AND (SIZEOF(QUERY(pd <* USEDIN(pdf, 
    'AUTOMOTIVE_DESIGN.PRODUCT_DEFINITION.FORMATION') | pd.
    frame_of_reference.name = 'alternative definition')) <> 1))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE compound_features_of_equal_type FOR (compound_feature,
  shape_aspect_relationship);
WHERE
  wr1 : SIZEOF(QUERY(sar <* shape_aspect_relationship | (sar.name = 
    'compound feature ordering') AND (SIZEOF(QUERY(fcr <* USEDIN(sar.
    relating_shape_aspect, 
    'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | (
    'AUTOMOTIVE_DESIGN.' + 'FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(fcr)) 
    AND ('AUTOMOTIVE_DESIGN.' + 'COMPOSITE_SHAPE_ASPECT' IN TYPEOF(fcr.
    relating_shape_aspect)) AND (fcr.relating_shape_aspect.name IN [
    'compound feature in solid', 'compound feature in panel']))) = 0) AND (
    SIZEOF(QUERY(fcr <* USEDIN(sar.related_shape_aspect, 
    'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') | (
    'AUTOMOTIVE_DESIGN.' + 'FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(fcr)) 
    AND ('AUTOMOTIVE_DESIGN.' + 'COMPOSITE_SHAPE_ASPECT' IN TYPEOF(fcr.
    relating_shape_aspect)) AND (fcr.relating_shape_aspect.name IN [
    'compound feature in solid', 'compound feature in panel']))) = 0))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE consistent_uncertainty FOR (global_uncertainty_assigned_context,
  qualified_representation_item, uncertainty_assigned_representation);
WHERE
  wr1 : SIZEOF(QUERY(guac <* global_uncertainty_assigned_context | SIZEOF(
    QUERY(u1 <* guac.uncertainty | SIZEOF(QUERY(u2 <* guac.uncertainty | u2.
    name = u1.name)) > 1)) > 0)) = 0;
  wr2 : SIZEOF(QUERY(uar <* uncertainty_assigned_representation | SIZEOF(QUERY(
    u1 <* uar.uncertainty | SIZEOF(QUERY(u2 <* uar.uncertainty | u2.name = u1.
    name)) > 0)) > 0)) = 0;
  wr3 : SIZEOF(QUERY(qri <* qualified_representation_item | SIZEOF(QUERY(u1 <* 
    qri.qualifiers | ('AUTOMOTIVE_DESIGN.' + 'UNCERTAINTY_QUALIFIER' IN 
    TYPEOF(u1)) AND (SIZEOF(QUERY(u2 <* qri.qualifiers | (
    'AUTOMOTIVE_DESIGN.' + 'UNCERTAINTY_QUALIFIER' IN TYPEOF(u2)) AND (u2\
    uncertainty_qualifier.measure_name = u1\uncertainty_qualifier.measure_name)
    )) > 0))) > 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE coordinated_assembly_and_shape FOR (next_assembly_usage_occurrence);
WHERE
  wr1 : SIZEOF(QUERY(nauo <* next_assembly_usage_occurrence | NOT 
    assembly_shape_is_defined(nauo))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE curve_font_usage FOR (curve_style_font, externally_defined_curve_font,
  pre_defined_curve_font);
WHERE
  wr1 : SIZEOF(QUERY(csf <* curve_style_font | SIZEOF(USEDIN(csf, 
    'AUTOMOTIVE_DESIGN.CURVE_STYLE.CURVE_FONT')) = 0)) = 0;
  wr2 : SIZEOF(QUERY(pdcf <* pre_defined_curve_font | SIZEOF(USEDIN(pdcf, 
    'AUTOMOTIVE_DESIGN.CURVE_STYLE.CURVE_FONT')) = 0)) = 0;
  wr3 : SIZEOF(QUERY(edcf <* externally_defined_curve_font | NOT (SIZEOF(USEDIN
    (edcf, 'AUTOMOTIVE_DESIGN.CURVE_STYLE.CURVE_FONT')) >= 1))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE dependent_instantiable_action_directive FOR (action_directive);
WHERE
  wr1 : SIZEOF(QUERY(a <* action_directive | NOT (SIZEOF(USEDIN(a, '')) > 0)))
     = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE dependent_instantiable_action_resource_type FOR (action_resource_type);
WHERE
  wr1 : SIZEOF(QUERY(a <* action_resource_type | NOT (SIZEOF(USEDIN(a, '')) > 0
    ))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE dependent_instantiable_approval_role FOR (approval_role);
WHERE
  wr1 : SIZEOF(QUERY(a <* approval_role | NOT (SIZEOF(USEDIN(a, '')) > 0))) = 0
    ;
END_RULE; -- 10303-214: automotive_design
 
RULE dependent_instantiable_attribute_value_role FOR (attribute_value_role);
WHERE
  wr1 : SIZEOF(QUERY(a <* attribute_value_role | NOT (SIZEOF(USEDIN(a, '')) > 0
    ))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE dependent_instantiable_classification_role FOR (classification_role);
WHERE
  wr1 : SIZEOF(QUERY(c <* classification_role | NOT (SIZEOF(USEDIN(c, '')) > 0)
    )) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE dependent_instantiable_colour_rgb FOR (colour_rgb);
WHERE
  wr1 : SIZEOF(QUERY(c <* colour_rgb | NOT (SIZEOF(USEDIN(c, '')) > 0))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE dependent_instantiable_contract_type FOR (contract_type);
WHERE
  wr1 : SIZEOF(QUERY(c <* contract_type | NOT (SIZEOF(USEDIN(c, '')) > 0))) = 0
    ;
END_RULE; -- 10303-214: automotive_design
 
RULE dependent_instantiable_curve_style FOR (curve_style);
WHERE
  wr1 : SIZEOF(QUERY(c <* curve_style | NOT (SIZEOF(USEDIN(c, '')) > 0))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE dependent_instantiable_date FOR (date);
WHERE
  wr1 : SIZEOF(QUERY(d <* date | NOT (SIZEOF(USEDIN(d, '')) > 0))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE dependent_instantiable_date_and_time FOR (date_and_time);
WHERE
  wr1 : SIZEOF(QUERY(d <* date_and_time | NOT (SIZEOF(USEDIN(d, '')) > 0))) = 0
    ;
END_RULE; -- 10303-214: automotive_design
 
RULE dependent_instantiable_date_role FOR (date_role);
WHERE
  wr1 : SIZEOF(QUERY(d <* date_role | NOT (SIZEOF(USEDIN(d, '')) > 0))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE dependent_instantiable_date_time_role FOR (date_time_role);
WHERE
  wr1 : SIZEOF(QUERY(d <* date_time_role | NOT (SIZEOF(USEDIN(d, '')) > 0))) = 
    0;
END_RULE; -- 10303-214: automotive_design
 
RULE dependent_instantiable_derived_unit FOR (derived_unit);
WHERE
  wr1 : SIZEOF(QUERY(d <* derived_unit | NOT (SIZEOF(USEDIN(d, '')) > 0))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE dependent_instantiable_dimensional_size FOR (dimensional_size);
WHERE
  wr1 : SIZEOF(QUERY(d <* dimensional_size | NOT (SIZEOF(USEDIN(d, '')) > 0)))
     = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE dependent_instantiable_document_usage_role FOR (document_usage_role);
WHERE
  wr1 : SIZEOF(QUERY(d <* document_usage_role | NOT (SIZEOF(USEDIN(d, '')) > 0)
    )) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE dependent_instantiable_effectivity_context_role FOR (
  effectivity_context_role);
WHERE
  wr1 : SIZEOF(QUERY(e <* effectivity_context_role | NOT (SIZEOF(USEDIN(e, ''))
     > 0))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE dependent_instantiable_event_occurrence_role FOR (event_occurrence_role);
WHERE
  wr1 : SIZEOF(QUERY(e <* event_occurrence_role | NOT (SIZEOF(USEDIN(e, '')) > 
    0))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE dependent_instantiable_externally_defined_symbol FOR (
  externally_defined_symbol);
WHERE
  wr1 : SIZEOF(QUERY(e <* externally_defined_symbol | NOT (SIZEOF(USEDIN(e, '')
    ) > 0))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE dependent_instantiable_fill_area_style FOR (fill_area_style);
WHERE
  wr1 : SIZEOF(QUERY(f <* fill_area_style | NOT (SIZEOF(USEDIN(f, '')) > 0)))
     = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE dependent_instantiable_fill_area_style_colour FOR (fill_area_style_colour
  );
WHERE
  wr1 : SIZEOF(QUERY(f <* fill_area_style_colour | NOT (SIZEOF(USEDIN(f, ''))
     > 0))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE dependent_instantiable_identification_role FOR (identification_role);
WHERE
  wr1 : SIZEOF(QUERY(i <* identification_role | NOT (SIZEOF(USEDIN(i, '')) > 0)
    )) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE dependent_instantiable_measure_with_unit FOR (measure_with_unit);
WHERE
  wr1 : SIZEOF(QUERY(m <* measure_with_unit | NOT (SIZEOF(USEDIN(m, '')) > 0)))
     = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE dependent_instantiable_named_unit FOR (named_unit);
WHERE
  wr1 : SIZEOF(QUERY(n <* named_unit | NOT (SIZEOF(USEDIN(n, '')) > 0))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE dependent_instantiable_object_role FOR (object_role);
WHERE
  wr1 : SIZEOF(QUERY(o <* object_role | NOT (SIZEOF(USEDIN(o, '')) > 0))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE dependent_instantiable_organization_role FOR (organization_role);
WHERE
  wr1 : SIZEOF(QUERY(o <* organization_role | NOT (SIZEOF(USEDIN(o, '')) > 0)))
     = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE dependent_instantiable_organizational_project_role FOR (
  organizational_project_role);
WHERE
  wr1 : SIZEOF(QUERY(o <* organizational_project_role | NOT (SIZEOF(USEDIN(o, 
    '')) > 0))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE dependent_instantiable_person_and_organization_role FOR (
  person_and_organization_role);
WHERE
  wr1 : SIZEOF(QUERY(p <* person_and_organization_role | NOT (SIZEOF(USEDIN(p, 
    '')) > 0))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE dependent_instantiable_pre_defined_colour FOR (pre_defined_colour);
WHERE
  wr1 : SIZEOF(QUERY(p <* pre_defined_colour | NOT (SIZEOF(USEDIN(p, '')) > 0))
    ) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE dependent_instantiable_pre_defined_symbol FOR (pre_defined_symbol);
WHERE
  wr1 : SIZEOF(QUERY(p <* pre_defined_symbol | NOT (SIZEOF(USEDIN(p, '')) > 0))
    ) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE dependent_instantiable_precision_qualifier FOR (precision_qualifier);
WHERE
  wr1 : SIZEOF(QUERY(p <* precision_qualifier | NOT (SIZEOF(USEDIN(p, '')) > 0)
    )) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE dependent_instantiable_presentation_style_by_context FOR (
  presentation_style_by_context);
WHERE
  wr1 : SIZEOF(QUERY(p <* presentation_style_by_context | NOT (SIZEOF(USEDIN(p
    , '')) > 0))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE dependent_instantiable_product_definition_context_role FOR (
  product_definition_context_role);
WHERE
  wr1 : SIZEOF(QUERY(p <* product_definition_context_role | NOT (SIZEOF(USEDIN(
    p, '')) > 0))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE dependent_instantiable_resource_requirement_type FOR (
  resource_requirement_type);
WHERE
  wr1 : SIZEOF(QUERY(r <* resource_requirement_type | NOT (SIZEOF(USEDIN(r, '')
    ) > 0))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE dependent_instantiable_retention FOR (retention);
WHERE
  wr1 : SIZEOF(QUERY(r <* retention | NOT (SIZEOF(USEDIN(r, '')) > 0))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE dependent_instantiable_standard_uncertainty FOR (standard_uncertainty);
WHERE
  wr1 : SIZEOF(QUERY(s <* standard_uncertainty | NOT (SIZEOF(USEDIN(s, '')) > 0
    ))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE dependent_instantiable_symbol_colour FOR (symbol_colour);
WHERE
  wr1 : SIZEOF(QUERY(s <* symbol_colour | NOT (SIZEOF(USEDIN(s, '')) > 0))) = 0
    ;
END_RULE; -- 10303-214: automotive_design
 
RULE dependent_instantiable_text_style FOR (text_style);
WHERE
  wr1 : SIZEOF(QUERY(t <* text_style | NOT (SIZEOF(USEDIN(t, '')) > 0))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE dependent_instantiable_text_style_for_defined_font FOR (
  text_style_for_defined_font);
WHERE
  wr1 : SIZEOF(QUERY(t <* text_style_for_defined_font | NOT (SIZEOF(USEDIN(t, 
    '')) > 0))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE dependent_instantiable_time_interval_role FOR (time_interval_role);
WHERE
  wr1 : SIZEOF(QUERY(t <* time_interval_role | NOT (SIZEOF(USEDIN(t, '')) > 0))
    ) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE dependent_instantiable_tolerance_value FOR (tolerance_value);
WHERE
  wr1 : SIZEOF(QUERY(t <* tolerance_value | NOT (SIZEOF(USEDIN(t, '')) > 0)))
     = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE dependent_instantiable_type_qualifier FOR (type_qualifier);
WHERE
  wr1 : SIZEOF(QUERY(t <* type_qualifier | NOT (SIZEOF(USEDIN(t, '')) > 0))) = 
    0;
END_RULE; -- 10303-214: automotive_design
 
RULE dependent_instantiable_uncertainty_qualifier FOR (uncertainty_qualifier);
WHERE
  wr1 : SIZEOF(QUERY(u <* uncertainty_qualifier | NOT (SIZEOF(USEDIN(u, '')) > 
    0))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE design_constraint_requires_product_definition FOR (product_definition,
  product_definition_formation, product_related_product_category);
WHERE
  wr1 : SIZEOF(QUERY(pdf <* product_definition_formation | (SIZEOF(QUERY(prpc
     <* USEDIN(pdf.of_product, 
    'AUTOMOTIVE_DESIGN.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') | prpc.
    name = 'requirement')) > 0) AND (SIZEOF(QUERY(pd <* USEDIN(pdf, 
    'AUTOMOTIVE_DESIGN.PRODUCT_DEFINITION.FORMATION') | pd.
    frame_of_reference.name = 'design constraint definition')) <> 1))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE dimensionality_is_two_or_three FOR (geometric_representation_context);
WHERE
  wr1 : SIZEOF(QUERY(g <* geometric_representation_context | NOT ((g.
    coordinate_space_dimension = 2) OR (g.coordinate_space_dimension = 3)))) = 
    0;
END_RULE; -- 10303-214: automotive_design
 
RULE draughting_subfigure_representation_layers FOR (
  draughting_subfigure_representation);
WHERE
  wr1 : SIZEOF(QUERY(dsr <* draughting_subfigure_representation | NOT (SIZEOF(
    QUERY(item <* dsr\representation.items | ('AUTOMOTIVE_DESIGN.' + 
    'ANNOTATION_OCCURRENCE' IN TYPEOF(item)) AND (SIZEOF(USEDIN(item, 
    'AUTOMOTIVE_DESIGN.PRESENTATION_LAYER_ASSIGNMENT.ASSIGNED_ITEMS')) = 0))
    ) = 0))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE drawing_sheet_annotation_layers FOR (drawing_sheet_revision);
WHERE
  wr1 : SIZEOF(QUERY(dsr <* drawing_sheet_revision | NOT (SIZEOF(QUERY(ao <* 
    QUERY(it <* dsr\representation.items | 'AUTOMOTIVE_DESIGN.' + 
    'ANNOTATION_OCCURRENCE' IN TYPEOF(it)) | NOT (SIZEOF(USEDIN(ao, 
    'AUTOMOTIVE_DESIGN.PRESENTATION_LAYER_ASSIGNMENT.ASSIGNED_ITEMS')) >= 1)
    )) = 0))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE drawing_sheet_layout_usage FOR (mapped_item);
WHERE
  wr1 : SIZEOF(QUERY(dsl <* QUERY(mi <* mapped_item | 'AUTOMOTIVE_DESIGN.'
     + 'DRAWING_SHEET_LAYOUT' IN TYPEOF(mi.mapping_source.mapped_representation
    )) | NOT (SIZEOF(USEDIN(dsl, '')) = SIZEOF(QUERY(dsr <* USEDIN(dsl, 
    'AUTOMOTIVE_DESIGN.REPRESENTATION.ITEMS') | 'AUTOMOTIVE_DESIGN.' + 
    'DRAWING_SHEET_REVISION' IN TYPEOF(dsr)))))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE drawing_view_annotation_layers FOR (presentation_view);
WHERE
  wr1 : SIZEOF(QUERY(pv <* presentation_view | NOT (SIZEOF(QUERY(ao <* QUERY(it
     <* pv\representation.items | 'AUTOMOTIVE_DESIGN.' + 
    'ANNOTATION_OCCURRENCE' IN TYPEOF(it)) | NOT (SIZEOF(USEDIN(ao, 
    'AUTOMOTIVE_DESIGN.PRESENTATION_LAYER_ASSIGNMENT.ASSIGNED_ITEMS')) >= 1)
    )) = 0))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE event_occurrence_requires_event_occurrence_assignment FOR (
  event_occurrence, event_occurrence_assignment, relative_event_occurrence);
WHERE
  wr1 : SIZEOF(QUERY(eo <* event_occurrence | (SIZEOF(USEDIN(eo, 
    'AUTOMOTIVE_DESIGN.RELATIVE_EVENT_OCCURRENCE.BASE_EVENT')) = 0) AND (
    SIZEOF(USEDIN(eo, 
    'AUTOMOTIVE_DESIGN.EVENT_OCCURRENCE_ASSIGNMENT.ASSIGNED_EVENT_OCCURRENCE'
    )) = 0))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE executed_action_requires_action_status FOR (executed_action);
WHERE
  wr1 : SIZEOF(QUERY(ea <* executed_action | SIZEOF(USEDIN(ea, 
    'AUTOMOTIVE_DESIGN.ACTION_STATUS.ASSIGNED_ACTION')) > 1)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE externally_defined_class_with_known_source_requirement FOR (
  externally_defined_class);
WHERE
  wr1 : SIZEOF(QUERY(edc <* externally_defined_class | ('AUTOMOTIVE_DESIGN.'
     + 'KNOWN_SOURCE' IN TYPEOF(edc.source)) AND (SIZEOF(QUERY(aoa <* USEDIN(
    edc, 'AUTOMOTIVE_DESIGN.APPLIED_ORGANIZATION_ASSIGNMENT.ITEMS') | aoa.
    role.name = 'class supplier')) = 0))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE fill_area_style_tile_symbol_constraint FOR (
  fill_area_style_tile_symbol_with_style);
WHERE
  wr1 : SIZEOF(QUERY(fast <* fill_area_style_tile_symbol_with_style | (
    'AUTOMOTIVE_DESIGN.' + 'DEFINED_SYMBOL' IN TYPEOF(fast.symbol\
    styled_item.item)) AND NOT ('AUTOMOTIVE_DESIGN.' + 
    'EXTERNALLY_DEFINED_SYMBOL' IN TYPEOF(fast.symbol\styled_item.item\
    defined_symbol.definition)))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE full_model_change_completeness_for_action_property FOR (action_property);
WHERE
  wr1 : SIZEOF(QUERY(ap <* action_property | (ap.name = 'full model change') 
    AND (SIZEOF(QUERY(apr <* USEDIN(ap, 
    'AUTOMOTIVE_DESIGN.ACTION_PROPERTY_REPRESENTATION.PROPERTY') | apr.name
     = 'original representation')) = 0))) = 0;
  wr2 : SIZEOF(QUERY(ap <* action_property | (ap.name = 'full model change') 
    AND (SIZEOF(QUERY(apr <* USEDIN(ap, 
    'AUTOMOTIVE_DESIGN.ACTION_PROPERTY_REPRESENTATION.PROPERTY') | apr.name
     = 'replacement representation')) = 0))) = 0;
  wr3 : SIZEOF(QUERY(ap <* action_property | SIZEOF(QUERY(apr1 <* USEDIN(ap, 
    'AUTOMOTIVE_DESIGN.ACTION_PROPERTY_REPRESENTATION.PROPERTY') | (apr1.
    name = 'added elements') AND (SIZEOF(QUERY(apr2 <* USEDIN(ap, 
    'AUTOMOTIVE_DESIGN.ACTION_PROPERTY_REPRESENTATION.PROPERTY') | (apr2.
    name = 'replacement representation') AND (SIZEOF(QUERY(i1 <* apr1.
    representation.items | SIZEOF(QUERY(i2 <* apr2.representation.items | i1
     :=: i2)) > 0)) <> SIZEOF(apr1.representation.items)))) > 0))) > 0)) = 0;
  wr4 : SIZEOF(QUERY(ap <* action_property | SIZEOF(QUERY(apr1 <* USEDIN(ap, 
    'AUTOMOTIVE_DESIGN.ACTION_PROPERTY_REPRESENTATION.PROPERTY') | (apr1.
    name = 'deleted elements') AND (SIZEOF(QUERY(apr2 <* USEDIN(ap, 
    'AUTOMOTIVE_DESIGN.ACTION_PROPERTY_REPRESENTATION.PROPERTY') | (apr2.
    name = 'original representation') AND (SIZEOF(QUERY(i1 <* apr1.
    representation.items | SIZEOF(QUERY(i2 <* apr2.representation.items | i1
     :=: i2)) > 0)) <> SIZEOF(apr1.representation.items)))) > 0))) > 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE full_model_change_completeness_for_property_definition FOR (
  property_definition);
WHERE
  wr1 : SIZEOF(QUERY(pd <* property_definition | (pd.name = 'full model change'
    ) AND (SIZEOF(QUERY(pdr <* USEDIN(pd, 
    'AUTOMOTIVE_DESIGN.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | pdr
    .name = 'original representation')) = 0))) = 0;
  wr2 : SIZEOF(QUERY(pd <* property_definition | (pd.name = 'full model change'
    ) AND (SIZEOF(QUERY(pdr <* USEDIN(pd, 
    'AUTOMOTIVE_DESIGN.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | pdr
    .name = 'replacement representation')) = 0))) = 0;
  wr3 : SIZEOF(QUERY(pd <* property_definition | SIZEOF(QUERY(pdr <* USEDIN(pd
    , 'AUTOMOTIVE_DESIGN.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (
    pdr.name = 'added elements') AND (SIZEOF(QUERY(i <* pdr.used_representation
    .items | SIZEOF(QUERY(pdr1 <* USEDIN(pd, 
    'AUTOMOTIVE_DESIGN.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (
    pdr1.name = 'replacement representation') AND NOT (i IN pdr1.
    used_representation.items))) > 0)) > 0))) > 0)) = 0;
  wr4 : SIZEOF(QUERY(pd <* property_definition | SIZEOF(QUERY(pdr <* USEDIN(pd
    , 'AUTOMOTIVE_DESIGN.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (
    pdr.name = 'deleted elements') AND (SIZEOF(QUERY(i <* pdr.
    used_representation.items | SIZEOF(QUERY(pdr1 <* USEDIN(pd, 
    'AUTOMOTIVE_DESIGN.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (
    pdr1.name = 'original representation') AND NOT (i IN pdr1.
    used_representation.items))) > 0)) > 0))) > 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE global_length_and_angle_units_2d_or_3d FOR (global_unit_assigned_context);
WHERE
  wr1 : SIZEOF(QUERY(guac <* global_unit_assigned_context | SIZEOF(guac.units)
     < 2)) = 0;
  wr2 : SIZEOF(QUERY(guac <* global_unit_assigned_context | (SIZEOF(QUERY(x <* 
    guac.units | 'AUTOMOTIVE_DESIGN.' + 'LENGTH_UNIT' IN TYPEOF(x))) <> 1) 
    OR (SIZEOF(QUERY(x <* guac.units | 'AUTOMOTIVE_DESIGN.' + 
    'PLANE_ANGLE_UNIT' IN TYPEOF(x))) <> 1))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE person_requires_person_and_organization FOR (person);
WHERE
  wr1 : SIZEOF(QUERY(p <* person | SIZEOF(USEDIN(p, 
    'AUTOMOTIVE_DESIGN.PERSON_AND_ORGANIZATION.THE_PERSON')) = 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE physical_instance_requires_product_definition FOR (product_definition,
  product_definition_formation, product_related_product_category);
WHERE
  wr1 : SIZEOF(QUERY(pdf <* product_definition_formation | (SIZEOF(QUERY(prpc
     <* USEDIN(pdf.of_product, 
    'AUTOMOTIVE_DESIGN.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') | prpc.
    name = 'physically realized product')) > 0) AND (SIZEOF(QUERY(pd <* USEDIN(
    pdf, 'AUTOMOTIVE_DESIGN.PRODUCT_DEFINITION.FORMATION') | pd.
    frame_of_reference.name = 'physical occurrence')) <> 1))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE plib_class_reference_requires_version FOR (externally_defined_class);
WHERE
  wr1 : SIZEOF(QUERY(edc <* externally_defined_class | ('AUTOMOTIVE_DESIGN.'
     + 'KNOWN_SOURCE' IN TYPEOF(edc.source)) AND (SIZEOF(QUERY(aei <* USEDIN(
    edc, 
    'AUTOMOTIVE_DESIGN.APPLIED_EXTERNAL_IDENTIFICATION_ASSIGNMENT.ITEMS') | 
    aei.role.name = 'version')) <> 1))) = 0;
  wr2 : SIZEOF(QUERY(edc <* externally_defined_class | ('AUTOMOTIVE_DESIGN.'
     + 'KNOWN_SOURCE' IN TYPEOF(edc.source)) AND (SIZEOF(QUERY(aei <* USEDIN(
    edc, 'AUTOMOTIVE_DESIGN.APPLIED_IDENTIFICATION_ASSIGNMENT.ITEMS') | aei.
    role.name = 'version')) > 0))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE plib_property_reference_requires_name_scope FOR (
  externally_defined_general_property);
WHERE
  wr1 : SIZEOF(QUERY(edgp <* externally_defined_general_property | (
    'AUTOMOTIVE_DESIGN.' + 'KNOWN_SOURCE' IN TYPEOF(edgp.source)) AND (
    SIZEOF(QUERY(edir <* USEDIN(edgp, 
    'AUTOMOTIVE_DESIGN.EXTERNALLY_DEFINED_ITEM_RELATIONSHIP.RELATING_ITEM')
     | (edir.name = 'name scope') AND ('AUTOMOTIVE_DESIGN.' + 
    'EXTERNALLY_DEFINED_CLASS' IN TYPEOF(edir.related_item)) AND (
    'AUTOMOTIVE_DESIGN.' + 'KNOWN_SOURCE' IN TYPEOF(edir.related_item.source
    )))) <> 1))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE plib_property_reference_requires_version FOR (
  externally_defined_general_property);
WHERE
  wr1 : SIZEOF(QUERY(edgp <* externally_defined_general_property | (
    'AUTOMOTIVE_DESIGN.' + 'KNOWN_SOURCE' IN TYPEOF(edgp.source)) AND (
    SIZEOF(QUERY(edir <* USEDIN(edgp, 
    'AUTOMOTIVE_DESIGN.APPLIED_EXTERNAL_IDENTIFICATION_ASSIGNMENT.ITEMS') | 
    edir.role.name = 'version')) <> 1))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE presentation_layer_assignment_constraint_2d_or_3d FOR (
  presentation_layer_assignment);
WHERE
  wr1 : SIZEOF(QUERY(pla <* presentation_layer_assignment | NOT (SIZEOF(QUERY(
    pnt <* QUERY(item <* pla.assigned_items | 'AUTOMOTIVE_DESIGN.' + 'POINT'
     IN TYPEOF(item)) | NOT (SIZEOF(QUERY(rep <* USEDIN(pnt, 
    'AUTOMOTIVE_DESIGN.REPRESENTATION.ITEMS') | 'AUTOMOTIVE_DESIGN.' + 
    'SHAPE_REPRESENTATION' IN TYPEOF(rep))) = 0))) = 0))) = 0;
  wr2 : SIZEOF(QUERY(pla <* presentation_layer_assignment | NOT (SIZEOF(QUERY(
    crv <* QUERY(item <* pla.assigned_items | 'AUTOMOTIVE_DESIGN.' + 'CURVE'
     IN TYPEOF(item)) | NOT (SIZEOF(QUERY(rep <* USEDIN(crv, 
    'AUTOMOTIVE_DESIGN.REPRESENTATION.ITEMS') | 'AUTOMOTIVE_DESIGN.' + 
    'SHAPE_REPRESENTATION' IN TYPEOF(rep))) = 0))) = 0))) = 0;
  wr3 : SIZEOF(QUERY(pla <* presentation_layer_assignment | NOT (SIZEOF(QUERY(
    srf <* QUERY(item <* pla.assigned_items | 'AUTOMOTIVE_DESIGN.' + 
    'SURFACE' IN TYPEOF(item)) | NOT (SIZEOF(QUERY(rep <* USEDIN(srf, 
    'AUTOMOTIVE_DESIGN.REPRESENTATION.ITEMS') | 'AUTOMOTIVE_DESIGN.' + 
    'SHAPE_REPRESENTATION' IN TYPEOF(rep))) = 0))) = 0))) = 0;
  wr4 : SIZEOF(QUERY(pla <* presentation_layer_assignment | NOT (SIZEOF(QUERY(
    ao <* QUERY(item <* pla.assigned_items | 'AUTOMOTIVE_DESIGN.' + 
    'ANNOTATION_OCCURRENCE' IN TYPEOF(item)) | NOT (SIZEOF(QUERY(ur <* 
    using_representations(ao) | NOT (SIZEOF(TYPEOF(ur) * [
    'AUTOMOTIVE_DESIGN.' + 'DRAUGHTING_SUBFIGURE_REPRESENTATION', 
    'AUTOMOTIVE_DESIGN.' + 'DRAUGHTING_MODEL', 'AUTOMOTIVE_DESIGN.' + 
    'PRESENTATION_AREA', 'AUTOMOTIVE_DESIGN.' + 'PRESENTATION_VIEW']) = 1)))
     = 0))) = 0))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE presentation_view_presented_once FOR (presentation_view);
WHERE
  wr1 : SIZEOF(QUERY(pv <* presentation_view | SIZEOF(QUERY(rm <* USEDIN(pv, 
    'AUTOMOTIVE_DESIGN.REPRESENTATION_MAP.MAPPED_REPRESENTATION') | (SIZEOF(
    USEDIN(rm, 'AUTOMOTIVE_DESIGN.MAPPED_ITEM.MAPPING_SOURCE')) <> 1) OR (
    SIZEOF(QUERY(mi <* USEDIN(rm, 
    'AUTOMOTIVE_DESIGN.MAPPED_ITEM.MAPPING_SOURCE') | (SIZEOF(USEDIN(mi, 
    'AUTOMOTIVE_DESIGN.REPRESENTATION.ITEMS')) <> 1) OR (SIZEOF(QUERY(r <* 
    USEDIN(mi, 'AUTOMOTIVE_DESIGN.REPRESENTATION.ITEMS') | NOT (
    'AUTOMOTIVE_DESIGN.' + 'PRESENTATION_AREA' IN TYPEOF(r)))) <> 0))) <> 0)
    )) <> 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE product_concept_feature_requires_category FOR (product_concept_feature,
  product_concept_feature_category);
WHERE
  wr1 : SIZEOF(QUERY(pcf <* product_concept_feature | (SIZEOF([
    'AUTOMOTIVE_DESIGN.' + 'INCLUSION_PRODUCT_CONCEPT_FEATURE', 
    'AUTOMOTIVE_DESIGN.' + 'CONDITIONAL_CONCEPT_FEATURE'] * TYPEOF(pcf)) = 0
    ) AND (SIZEOF(QUERY(aga <* USEDIN(pcf, 
    'AUTOMOTIVE_DESIGN.APPLIED_GROUP_ASSIGNMENT.ITEMS') | (aga.role.name = 
    'specification category member') AND ('AUTOMOTIVE_DESIGN.' + 
    'PRODUCT_CONCEPT_FEATURE_CATEGORY' IN TYPEOF(aga.assigned_group)))) <> 1)))
     = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE product_definition_replacement_requires_effectivity_assignment FOR (
  applied_effectivity_assignment, product_definition_relationship);
WHERE
  wr1 : SIZEOF(QUERY(pdr <* product_definition_relationship | (pdr.name = 
    'definition replacement') AND (SIZEOF(USEDIN(pdr, 
    'AUTOMOTIVE_DESIGN.APPLIED_EFFECTIVITY_ASSIGNMENT.ITEMS')) = 0))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE product_requires_category FOR (product, product_related_product_category);
WHERE
  wr1 : SIZEOF(QUERY(p <* product | SIZEOF(USEDIN(p, 
    'AUTOMOTIVE_DESIGN.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS')) = 0)) = 
    0;
END_RULE; -- 10303-214: automotive_design
 
RULE product_requires_id_owner FOR (product);
WHERE
  wr1 : SIZEOF(QUERY(prod <* product | (SIZEOF(QUERY(prpc <* USEDIN(prod, 
    'AUTOMOTIVE_DESIGN.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') | prpc.
    name IN ['part', 'tool', 'raw material'])) > 0) AND (SIZEOF(QUERY(apoa <* 
    USEDIN(prod, 
    'AUTOMOTIVE_DESIGN.APPLIED_PERSON_AND_ORGANIZATION_ASSIGNMENT.ITEMS') | 
    apoa\person_and_organization_assignment.role.name = 'id owner')) + SIZEOF(
    QUERY(oa <* USEDIN(prod, 
    'AUTOMOTIVE_DESIGN.APPLIED_ORGANIZATION_ASSIGNMENT.ITEMS') | oa\
    organization_assignment.role.name = 'id owner')) <> 1))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE product_requires_version FOR (product);
WHERE
  wr1 : SIZEOF(QUERY(prod <* product | SIZEOF(USEDIN(prod, 
    'AUTOMOTIVE_DESIGN.PRODUCT_DEFINITION_FORMATION.OF_PRODUCT')) = 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_action_resource_requirement_for_process_operation FOR (action,
  action_resource_requirement);
WHERE
  wr1 : SIZEOF(QUERY(a <* action | (a.name = 'process operation') AND (SIZEOF(
    QUERY(arr <* USEDIN(a, 
    'AUTOMOTIVE_DESIGN.ACTION_RESOURCE_REQUIREMENT.OPERATIONS') | arr.name
     = 'reference tool')) > 1))) = 0;
  wr2 : SIZEOF(QUERY(arr <* action_resource_requirement | (arr.name = 
    'reference tool') AND NOT ('AUTOMOTIVE_DESIGN.' + 
    'REQUIREMENT_FOR_ACTION_RESOURCE' IN TYPEOF(arr)) AND (SIZEOF(QUERY(ar <* 
    arr\requirement_for_action_resource.resources | 'AUTOMOTIVE_DESIGN.' + 
    'PRODUCT_DEFINITION_RESOURCE' IN TYPEOF(ar))) <> 1))) = 0;
  wr3 : SIZEOF(QUERY(arr <* action_resource_requirement | (arr.name <> 
    'reference tool') AND (arr.name <> 'non reference tool'))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_alternative_definition FOR (product_definition,
  product_definition_context);
WHERE
  wr1 : SIZEOF(QUERY(pd <* product_definition | (pd.frame_of_reference.name = 
    'alternative definition') AND (SIZEOF(QUERY(pdr <* USEDIN(pd, 
    'AUTOMOTIVE_DESIGN.PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION'
    ) | pdr.name = 'solution alternative definition')) <> 1))) = 0;
  wr2 : SIZEOF(QUERY(pd <* product_definition | (pd.frame_of_reference.name = 
    'alternative definition') AND NOT (pd.name IN ['technical', 'supplier', 
    'final', 'technical supplier', 'technical final', 'supplier final', 
    'technical supplier final', '']))) = 0;
  wr3 : SIZEOF(QUERY(pd <* product_definition | (pd.frame_of_reference.name = 
    'alternative definition') AND (pd.name IN ['supplier', 'technical supplier'
    , 'supplier final', 'technical supplier final']) AND (SIZEOF(QUERY(aoa <* 
    USEDIN(pd.formation, 
    'AUTOMOTIVE_DESIGN.APPLIED_ORGANIZATION_ASSIGNMENT.ITEMS') | aoa.role.
    name = 'supplier')) <> 1))) = 0;
  wr4 : SIZEOF(QUERY(pd <* product_definition | (pd.frame_of_reference.name = 
    'alternative definition') AND (pd.name IN ['final', 'technical final', 
    'supplier final', 'technical supplier final']) AND (SIZEOF(QUERY(pdr <* 
    USEDIN(pd, 
    'AUTOMOTIVE_DESIGN.PRODUCT_DEFINITION_RELATIONSHIP.RELATING_PRODUCT_DEFINITION'
    ) | pdr.name = 'final specification')) = 0) AND (SIZEOF(QUERY(pd <* USEDIN(
    pd, 'AUTOMOTIVE_DESIGN.PROPERTY_DEFINITION.DEFINITION') | SIZEOF(QUERY(
    pdr <* USEDIN(pd, 
    'AUTOMOTIVE_DESIGN.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (
    pdr.used_representation.name = 'final item characteristics') AND (SIZEOF(
    QUERY(i <* pdr.used_representation.items | 'AUTOMOTIVE_DESIGN.' + 
    'DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(i))) = SIZEOF(pdr.
    used_representation.items)) AND (SIZEOF(pdr.used_representation.items) >= 2
    ) AND (SIZEOF(QUERY(i <* pdr.used_representation.items | i.name = 
    'final item status')) = 1))) > 0)) = 0))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_applied_action_assignment FOR (applied_action_assignment,
  object_role);
WHERE
  wr1 : SIZEOF(QUERY(aaa <* applied_action_assignment | (aaa.role.description
     = 'activity element') AND NOT ('AUTOMOTIVE_DESIGN.' + 'EXECUTED_ACTION'
     IN TYPEOF(aaa.assigned_action)))) = 0;
  wr2 : SIZEOF(QUERY(aaa <* applied_action_assignment | (aaa.role.description
     = 'activity element') AND NOT item_correlation(aaa.items, ['ACTION', 
    'ACTION_METHOD', 'ACTION_PROPERTY', 'ASSEMBLY_COMPONENT_USAGE_SUBSTITUTE', 
    'CONFIGURATION_ITEM', 'CONFIGURATION_EFFECTIVITY', 
    'CONFIGURED_EFFECTIVITY_ASSIGNMENT', 'DOCUMENT_FILE', 'DRAUGHTING_MODEL', 
    'DRAWING_REVISION', 'GENERAL_PROPERTY', 'MATERIAL_DESIGNATION', 
    'MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION', 
    'PRESENTATION_AREA', 'PRODUCT', 'PRODUCT_CONCEPT', 
    'PRODUCT_CONCEPT_FEATURE', 'PRODUCT_CONCEPT_FEATURE_ASSOCIATION', 
    'PRODUCT_CONCEPT_FEATURE_CATEGORY', 
    'PRODUCT_CONCEPT_FEATURE_CATEGORY_USAGE', 'PRODUCT_DEFINITION', 
    'PRODUCT_DEFINITION_FORMATION', 'PRODUCT_DEFINITION_RELATIONSHIP', 
    'PRODUCT_DEFINITION_SUBSTITUTE', 'PROPERTY_DEFINITION', 'RESOURCE_PROPERTY'
    , 'SHAPE_ASPECT', 'SHAPE_REPRESENTATION']))) = 0;
  wr3 : SIZEOF(QUERY(aaa <* applied_action_assignment | (NOT EXISTS(aaa.role) 
    OR (aaa.role.description = 'activity element')) AND (SIZEOF(QUERY(i <* aaa.
    items | 'AUTOMOTIVE_DESIGN.' + 'APPLIED_ACTION_ASSIGNMENT' IN TYPEOF(i))
    ) > 0))) = 0;
  wr4 : SIZEOF(QUERY(aaa <* applied_action_assignment | (aaa.role.name = 
    'deliverable element') AND (NOT ('AUTOMOTIVE_DESIGN.' + 
    'ELEMENT_DELIVERY' IN TYPEOF(aaa.assigned_action)) OR (SIZEOF(QUERY(i <* 
    aaa.items | 'AUTOMOTIVE_DESIGN.' + 'APPLIED_ACTION_ASSIGNMENT' IN TYPEOF
    (i))) > 1) OR (SIZEOF(QUERY(i <* aaa.items | ('AUTOMOTIVE_DESIGN.' + 
    'APPLIED_ACTION_ASSIGNMENT' IN TYPEOF(i)) AND (i\action_assignment.role.
    description <> 'activity element'))) > 0)))) = 0;
  wr5 : SIZEOF(QUERY(aaa <* applied_action_assignment | (aaa.role.name = 
    'retention') AND NOT ('AUTOMOTIVE_DESIGN.' + 'RETENTION' IN TYPEOF(aaa.
    assigned_action)))) = 0;
  wr6 : SIZEOF(QUERY(aaa <* applied_action_assignment | (aaa.role.name = 
    'retention') AND NOT item_correlation(aaa.items, ['ACTION', 
    'ACTION_DIRECTIVE', 'ACTION_PROPERTY', 'ACTION_RELATIONSHIP', 
    'APPLIED_ACTION_ASSIGNMENT', 'APPLIED_CLASSIFICATION_ASSIGNMENT', 
    'ASSEMBLY_COMPONENT_USAGE_SUBSTITUTE', 'CERTIFICATION', 'CLASS_SYSTEM', 
    'CONFIGURATION_EFFECTIVITY', 'CONFIGURATION_ITEM', 
    'CONFIGURED_EFFECTIVITY_ASSIGNMENT', 'DOCUMENT_FILE', 'DRAUGHTING_MODEL', 
    'DRAWING_REVISION', 'GENERAL_PROPERTY', 'MATERIAL_DESIGNATION', 
    'MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION', 
    'ORGANIZATIONAL_PROJECT', 'PRESENTATION_AREA', 'PRODUCT', 'PRODUCT_CONCEPT'
    , 'PRODUCT_CONCEPT_FEATURE', 'PRODUCT_CONCEPT_FEATURE_ASSOCIATION', 
    'PRODUCT_CONCEPT_FEATURE_CATEGORY', 
    'PRODUCT_CONCEPT_FEATURE_CATEGORY_USAGE', 'PRODUCT_DEFINITION', 
    'PRODUCT_DEFINITION_FORMATION', 'PRODUCT_DEFINITION_RELATIONSHIP', 
    'PRODUCT_DEFINITION_SUBSTITUTE', 'PROPERTY_DEFINITION', 'RESOURCE_PROPERTY'
    , 'SHAPE_REPRESENTATION', 'VERSIONED_ACTION_REQUEST']))) = 0;
  wr7 : SIZEOF(QUERY(aaa <* applied_action_assignment | (aaa.role.name = 
    'test activity') AND NOT item_correlation(aaa.items, ['PROPERTY_DEFINITION'
    ]))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_applied_action_request_assignment FOR (
  applied_action_request_assignment, object_role);
WHERE
  wr1 : SIZEOF(QUERY(aara <* applied_action_request_assignment | aara.role.name
     <> 'scope')) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_applied_classification_assignment_role FOR (
  applied_classification_assignment);
WHERE
  wr1 : SIZEOF(QUERY(aca <* applied_classification_assignment | (
    'AUTOMOTIVE_DESIGN.' + 'CLASS' IN TYPEOF(aca.assigned_class)) AND NOT (
    aca.role.name IN ['definitional', 'non-definitional', '']))) = 0;
  wr2 : SIZEOF(QUERY(aca <* applied_classification_assignment | (aca.role.name 
    IN ['definitional', 'non-definitional', '']) AND NOT (
    'AUTOMOTIVE_DESIGN.' + 'CLASS' IN TYPEOF(aca.assigned_class)))) = 0;
  wr3 : SIZEOF(QUERY(aca <* applied_classification_assignment | (
    'AUTOMOTIVE_DESIGN.' + 'CLASS_SYSTEM' IN TYPEOF(aca.assigned_class)) AND
     (aca.role.name <> 'class system membership'))) = 0;
  wr4 : SIZEOF(QUERY(aca <* applied_classification_assignment | (aca.role.name
     = 'class system membership') AND NOT ('AUTOMOTIVE_DESIGN.' + 
    'CLASS_SYSTEM' IN TYPEOF(aca.assigned_class)))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_applied_event_occurrence_assignment FOR (
  applied_event_occurrence_assignment);
WHERE
  wr1 : SIZEOF(QUERY(eo <* applied_event_occurrence_assignment | (eo\
    event_occurrence_assignment.role.name = 'event context') AND (SIZEOF(eo.
    items) > 1))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_applied_organizational_project_assignment FOR (
  applied_organizational_project_assignment, object_role);
WHERE
  wr1 : SIZEOF(QUERY(aopa <* applied_organizational_project_assignment | (aopa.
    role.name = 'affecting project') AND NOT item_correlation(aopa.items, [
    'PRODUCT_CONCEPT']))) = 0;
  wr2 : SIZEOF(QUERY(aopa <* applied_organizational_project_assignment | (aopa.
    role.name = 'work program') AND NOT item_correlation(aopa.items, [
    'EXECUTED_ACTION']))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_approval FOR (approval, approval_date_time);
WHERE
  wr1 : SIZEOF(QUERY(a <* approval | SIZEOF(USEDIN(a, 
    'AUTOMOTIVE_DESIGN.APPROVAL_DATE_TIME.DATED_APPROVAL')) > 2)) = 0;
  wr2 : SIZEOF(QUERY(adt <* approval_date_time | NOT EXISTS(adt.role) OR NOT (
    adt.role.name IN ['actual', 'planned']))) = 0;
  wr3 : SIZEOF(QUERY(a <* approval | SIZEOF(QUERY(adt <* USEDIN(a, 
    'AUTOMOTIVE_DESIGN.APPROVAL_DATE_TIME.DATED_APPROVAL') | adt.role.name
     = 'actual')) > 1)) = 0;
  wr4 : SIZEOF(QUERY(a <* approval | SIZEOF(QUERY(adt <* USEDIN(a, 
    'AUTOMOTIVE_DESIGN.APPROVAL_DATE_TIME.DATED_APPROVAL') | adt.role.name
     = 'planned')) > 1)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_camera_image_in_view FOR (camera_image, presentation_view);
WHERE
  wr1 : SIZEOF(QUERY(ci <* camera_image | SIZEOF(QUERY(r <* USEDIN(ci, 
    'AUTOMOTIVE_DESIGN.REPRESENTATION.ITEMS') | 'AUTOMOTIVE_DESIGN.' + 
    'PRESENTATION_VIEW' IN TYPEOF(r))) <> 1)) = 0;
  wr2 : SIZEOF(QUERY(pv <* presentation_view | SIZEOF(QUERY(ri <* pv\
    representation.items | 'AUTOMOTIVE_DESIGN.' + 'CAMERA_IMAGE' IN TYPEOF(
    ri))) > 1)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_centre_of_mass_representation FOR (representation);
WHERE
  wr1 : SIZEOF(QUERY(r <* representation | (r.name = 'centre of mass') AND ((
    SIZEOF(r.items) <> 1) OR (SIZEOF(QUERY(i <* r.items | (
    'AUTOMOTIVE_DESIGN.' + 'POINT' IN TYPEOF(i)) AND (i.name = 
    'centre point'))) <> 1)))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_class_system_assignment_for_approval_status FOR (
  applied_classification_assignment, approval_status);
WHERE
  wr1 : SIZEOF(QUERY(ent <* approval_status | SIZEOF(QUERY(ia <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.APPLIED_CLASSIFICATION_ASSIGNMENT.ITEMS') | ia.role.
    name = 'class system membership')) > 1)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_class_system_assignment_for_class FOR (
  applied_classification_assignment, class);
WHERE
  wr1 : SIZEOF(QUERY(c <* class | SIZEOF(QUERY(aca <* USEDIN(c, 
    'AUTOMOTIVE_DESIGN.CLASSIFICATION_ASSIGNMENT.ASSIGNED_CLASS') | (aca.
    role.name = 'class system membership') AND ('AUTOMOTIVE_DESIGN.' + 
    'APPLIED_CLASSIFICATION_ASSIGNMENT' IN TYPEOF(aca)))) > 1)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_class_system_assignment_for_descriptive_representation_item FOR (
  applied_classification_assignment, descriptive_representation_item);
WHERE
  wr1 : SIZEOF(QUERY(ent <* descriptive_representation_item | SIZEOF(QUERY(ia
     <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.APPLIED_CLASSIFICATION_ASSIGNMENT.ITEMS') | ia.role.
    name = 'class system membership')) > 1)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_class_system_assignment_for_document_type FOR (
  applied_classification_assignment, document_type);
WHERE
  wr1 : SIZEOF(QUERY(ent <* document_type | SIZEOF(QUERY(ia <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.APPLIED_CLASSIFICATION_ASSIGNMENT.ITEMS') | ia.role.
    name = 'class system membership')) > 1)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_class_system_assignment_for_security_classification_level FOR (
  applied_classification_assignment, security_classification_level);
WHERE
  wr1 : SIZEOF(QUERY(ent <* security_classification_level | SIZEOF(QUERY(ia <* 
    USEDIN(ent, 'AUTOMOTIVE_DESIGN.APPLIED_CLASSIFICATION_ASSIGNMENT.ITEMS')
     | ia.role.name = 'class system membership')) > 1)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_concept_feature_operator FOR (concept_feature_operator);
WHERE
  wr1 : SIZEOF(QUERY(cfo <* concept_feature_operator | NOT (cfo.name IN ['and'
    , 'or', 'oneof', 'not', 'implication']))) = 0;
  wr2 : SIZEOF(QUERY(cfo <* concept_feature_operator | (cfo.name = 
    'implication') AND (SIZEOF(QUERY(cfrwc <* USEDIN(cfo, 
    'AUTOMOTIVE_DESIGN.CONCEPT_FEATURE_RELATIONSHIP_WITH_CONDITION.CONDITIONAL_OPERATOR'
    ) | SIZEOF(QUERY(ccf <* USEDIN(cfrwc, 
    'AUTOMOTIVE_DESIGN.CONDITIONAL_CONCEPT_FEATURE.CONDITION') | NOT (
    'AUTOMOTIVE_DESIGN.' + 'INCLUSION_PRODUCT_CONCEPT_FEATURE' IN TYPEOF(ccf
    )))) > 0)) > 0))) = 0;
  wr3 : SIZEOF(QUERY(cfo <* concept_feature_operator | (cfo.name = 'not') AND (
    SIZEOF(QUERY(cfrwc <* USEDIN(cfo, 
    'AUTOMOTIVE_DESIGN.CONCEPT_FEATURE_RELATIONSHIP_WITH_CONDITION.CONDITIONAL_OPERATOR'
    ) | cfrwc.related_product_concept_feature :<>: cfrwc.
    relating_product_concept_feature)) > 0))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_configuration_design_for_product_class FOR (configuration_design
  , product_class);
WHERE
  wr1 : SIZEOF(QUERY(cd <* configuration_design | (cd.name = 'functionality') 
    AND (NOT ('AUTOMOTIVE_DESIGN.' + 'PRODUCT_DEFINITION' IN TYPEOF(cd.
    design)) OR (cd.design\product_definition.frame_of_reference.name <> 
    'functional definition')))) = 0;
  wr2 : SIZEOF(QUERY(cd <* configuration_design | (cd.name = 'realization') AND
     (NOT ('AUTOMOTIVE_DESIGN.' + 'PRODUCT_DEFINITION' IN TYPEOF(cd.design))
     OR (cd.design\product_definition.frame_of_reference.name <> 
    'conceptual definition')))) = 0;
  wr3 : SIZEOF(QUERY(cd <* configuration_design | (cd.name IN ['functionality'
    , 'realization']) AND NOT ('AUTOMOTIVE_DESIGN.' + 'PRODUCT_CLASS' IN 
    TYPEOF(cd.configuration.item_concept)))) = 0;
  wr4 : SIZEOF(QUERY(cd <* configuration_design | (cd.name = 
    'design constraint usage') AND (NOT ('AUTOMOTIVE_DESIGN.' + 
    'PRODUCT_DEFINITION' IN TYPEOF(cd.design)) OR (cd.design\product_definition
    .frame_of_reference.name <> 'design constraint definition')))) = 0;
  wr5 : SIZEOF(QUERY(cd <* configuration_design | (cd.name = 
    'physical instance basis') AND (NOT ('AUTOMOTIVE_DESIGN.' + 
    'PRODUCT_DEFINITION' IN TYPEOF(cd.design)) OR (cd.design\product_definition
    .frame_of_reference.name <> 'physical occurrence')))) = 0;
  wr6 : SIZEOF(QUERY(cd <* configuration_design | (cd.name = 
    'physical instance basis') AND NOT ('AUTOMOTIVE_DESIGN.' + 
    'PRODUCT_IDENTIFICATION' IN TYPEOF(cd.configuration)))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_default_settings FOR (applied_document_reference, representation
  );
WHERE
  wr1 : (SIZEOF(QUERY(r <* representation | (r.name = 'default tolerances') AND
     (r.context_of_items.context_type = 'default setting') AND (SIZEOF(r.items)
     <> 1))) = 0) AND (SIZEOF(QUERY(r <* representation | (r.name = 
    'default tolerances') AND (r.context_of_items.context_type = 
    'default setting') AND (SIZEOF(QUERY(i <* r.items | (
    'AUTOMOTIVE_DESIGN.' + 'DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(i)) 
    AND (i.name = 'tolerance class'))) <> 1))) = 0);
  wr2 : SIZEOF(QUERY(r <* representation | (r.name = 'default tolerances') AND 
    (r.context_of_items.context_type = 'default setting') AND (SIZEOF(QUERY(adr
     <* USEDIN(r, 'AUTOMOTIVE_DESIGN.APPLIED_DOCUMENT_REFERENCE.ITEMS') | 
    adr.role.name = 'general tolerance definition')) + SIZEOF(QUERY(rr <* 
    USEDIN(r, 'AUTOMOTIVE_DESIGN.REPRESENTATION_RELATIONSHIP.REP_2') | (rr.
    name = 'general tolerance definition') AND ('AUTOMOTIVE_DESIGN.' + 
    'DEFAULT_TOLERANCE_TABLE' IN TYPEOF(rr.rep_1)))) <> 1))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_default_thickness FOR (representation);
WHERE
  wr1 : (SIZEOF(QUERY(r <* representation | (r.name = 'default thickness') AND 
    (r.context_of_items.context_type = 'default setting') AND (SIZEOF(QUERY(i
     <* r.items | 'AUTOMOTIVE_DESIGN.' + 'DESCRIPTIVE_REPRESENTATION_ITEM' 
    IN TYPEOF(i))) > 1))) = 0) AND (SIZEOF(QUERY(r <* representation | (r.name
     = 'default thickness') AND (r.context_of_items.context_type = 
    'default setting') AND (SIZEOF(QUERY(i <* r.items | (
    'AUTOMOTIVE_DESIGN.' + 'DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(i)) 
    AND (i.name <> 'parameter name'))) > 0))) = 0);
  wr2 : (SIZEOF(QUERY(r <* representation | (r.name = 'default thickness') AND 
    (r.context_of_items.context_type = 'default setting') AND (SIZEOF(r.items)
     > 2))) = 0) AND (SIZEOF(QUERY(r <* representation | (r.name = 
    'default thickness') AND (r.context_of_items.context_type = 
    'default setting') AND (SIZEOF(QUERY(i <* r.items | SIZEOF([
    'AUTOMOTIVE_DESIGN.' + 'DESCRIPTIVE_REPRESENTATION_ITEM', 
    'AUTOMOTIVE_DESIGN.' + 'MEASURE_REPRESENTATION_ITEM'] * TYPEOF(i)) <> 1)
    ) > 0))) = 0);
  wr3 : SIZEOF(QUERY(r <* representation | (r.name = 'default thickness') AND (
    r.context_of_items.context_type = 'default setting') AND (SIZEOF(QUERY(i
     <* r.items | ('AUTOMOTIVE_DESIGN.' + 'MEASURE_REPRESENTATION_ITEM' IN 
    TYPEOF(i)) AND (i.name = 'thickness value'))) <> 1))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_drawing FOR (draughting_title, drawing_revision);
WHERE
  wr1 : SIZEOF(QUERY(dr <* drawing_revision | (SIZEOF(dr.areas) = 0) OR (SIZEOF
    (QUERY(ais <* dr.areas | NOT ('AUTOMOTIVE_DESIGN.' + 
    'DRAWING_SHEET_REVISION' IN TYPEOF(ais.area)))) > 0))) = 0;
  wr2 : SIZEOF(QUERY(dr <* drawing_revision | SIZEOF(USEDIN(dr, 
    'AUTOMOTIVE_DESIGN.DRAUGHTING_TITLE.ITEMS')) > 1)) = 0;
  wr3 : SIZEOF(QUERY(dr <* drawing_revision | SIZEOF(QUERY(ais <* dr.areas | 
    SIZEOF(USEDIN(ais.area, 'AUTOMOTIVE_DESIGN.DRAUGHTING_TITLE.ITEMS')) > 1
    )) > 0)) = 0;
  wr4 : SIZEOF(QUERY(dr <* drawing_revision | SIZEOF(QUERY(ais <* dr.areas | 
    SIZEOF(QUERY(item <* ais.area.items | SIZEOF(TYPEOF(item) * [
    'AUTOMOTIVE_DESIGN.' + 'STYLED_ITEM', 'AUTOMOTIVE_DESIGN.' + 
    'MAPPED_ITEM', 'AUTOMOTIVE_DESIGN.' + 'AXIS2_PLACEMENT', 
    'AUTOMOTIVE_DESIGN.' + 'PLANAR_BOX']) <> 1)) > 0)) > 0)) = 0;
  wr5 : SIZEOF(QUERY(dr <* drawing_revision | SIZEOF(QUERY(ais <* dr.areas | 
    SIZEOF(QUERY(item <* ais.area.items | SIZEOF(TYPEOF(item) * [
    'AUTOMOTIVE_DESIGN.' + 'STYLED_ITEM', 'AUTOMOTIVE_DESIGN.' + 
    'MAPPED_ITEM']) = 0)) > 0)) > 0)) = 0;
  wr6 : SIZEOF(QUERY(dr <* drawing_revision | SIZEOF(QUERY(ais <* dr.areas | 
    SIZEOF(QUERY(p_b <* QUERY(item <* ais.area.items | 'AUTOMOTIVE_DESIGN.'
     + 'PLANAR_BOX' IN TYPEOF(item)) | SIZEOF(USEDIN(p_b, 
    'AUTOMOTIVE_DESIGN.PRESENTATION_SIZE.SIZE')) <> 1)) > 0)) > 0)) = 0;
  wr7 : SIZEOF(QUERY(dr <* drawing_revision | SIZEOF(QUERY(ais <* dr.areas | 
    SIZEOF(QUERY(mi <* QUERY(item <* ais.area.items | 'AUTOMOTIVE_DESIGN.'
     + 'MAPPED_ITEM' IN TYPEOF(item)) | 'AUTOMOTIVE_DESIGN.' + 
    'PRESENTATION_VIEW' IN TYPEOF(mi\mapped_item.mapping_source.
    mapped_representation))) = 0)) > 0)) = 0;
  wr8 : SIZEOF(QUERY(dr <* drawing_revision | SIZEOF(QUERY(ais <* dr.areas | 
    SIZEOF(QUERY(a2p <* QUERY(item <* ais.area.items | 'AUTOMOTIVE_DESIGN.'
     + 'AXIS2_PLACEMENT' IN TYPEOF(item)) | SIZEOF(USEDIN(a2p, 
    'AUTOMOTIVE_DESIGN.MAPPED_ITEM.MAPPING_TARGET')) = 0)) > 0)) > 0)) = 0;
  wr9 : SIZEOF(QUERY(dr <* drawing_revision | SIZEOF(QUERY(ais <* dr.areas | 
    SIZEOF(ais.area.context_of_items.representations_in_context) > 1)) > 0)) = 
    0;
  wr10 : SIZEOF(QUERY(dr <* drawing_revision | SIZEOF(QUERY(ais <* dr.areas | 
    SIZEOF(QUERY(mi <* QUERY(item <* ais.area.items | 'AUTOMOTIVE_DESIGN.'
     + 'MAPPED_ITEM' IN TYPEOF(item)) | SIZEOF(USEDIN(mi\mapped_item.
    mapping_source.mapped_representation, 
    'AUTOMOTIVE_DESIGN.REPRESENTATION_MAP.MAPPED_REPRESENTATION')) <> 1)) > 
    0)) > 0)) = 0;
  wr11 : SIZEOF(QUERY(dr <* drawing_revision | SIZEOF(QUERY(ais <* dr.areas | 
    SIZEOF(QUERY(mi <* QUERY(item <* ais.area.items | 'AUTOMOTIVE_DESIGN.'
     + 'MAPPED_ITEM' IN TYPEOF(item)) | SIZEOF(QUERY(pv_item <* mi\mapped_item.
    mapping_source.mapped_representation.items | SIZEOF(TYPEOF(pv_item) * [
    'AUTOMOTIVE_DESIGN.' + 'STYLED_ITEM', 'AUTOMOTIVE_DESIGN.' + 
    'CAMERA_IMAGE', 'AUTOMOTIVE_DESIGN.' + 'AXIS2_PLACEMENT']) <> 1)) > 0))
     > 0)) > 0)) = 0;
  wr12 : SIZEOF(QUERY(dr <* drawing_revision | SIZEOF(QUERY(ais <* dr.areas | 
    SIZEOF(QUERY(mi <* QUERY(item <* ais.area.items | 'AUTOMOTIVE_DESIGN.'
     + 'MAPPED_ITEM' IN TYPEOF(item)) | SIZEOF(QUERY(a2p <* QUERY(pv_item <* mi
    \mapped_item.mapping_source.mapped_representation.items | 
    'AUTOMOTIVE_DESIGN.' + 'AXIS2_PLACEMENT' IN TYPEOF(pv_item)) | SIZEOF(
    QUERY(rm <* USEDIN(a2p, 
    'AUTOMOTIVE_DESIGN.REPRESENTATION_MAP.MAPPING_ORIGIN') | SIZEOF(QUERY(mi
     <* QUERY(item <* ais.area.items | 'AUTOMOTIVE_DESIGN.' + 'MAPPED_ITEM' 
    IN TYPEOF(item)) | mi\mapped_item.mapping_source :=: rm)) > 0)) = 1)) <> 1)
    ) > 0)) > 0)) = 0;
  wr13 : SIZEOF(QUERY(dr <* drawing_revision | SIZEOF(QUERY(ais <* dr.areas | 
    SIZEOF(QUERY(mi <* QUERY(item <* ais.area.items | 'AUTOMOTIVE_DESIGN.'
     + 'MAPPED_ITEM' IN TYPEOF(item)) | SIZEOF(mi\mapped_item.mapping_source.
    mapped_representation.context_of_items.representations_in_context) <> 1))
     > 0)) > 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_effectivity_assignment_for_class_category_usage FOR (
  applied_effectivity_assignment, product_concept_feature_category_usage);
WHERE
  wr1 : SIZEOF(QUERY(aea <* applied_effectivity_assignment | (SIZEOF(QUERY(i
     <* aea.items | 
    'AUTOMOTIVE_DESIGN.PRODUCT_CONCEPT_FEATURE_CATEGORY_USAGE' IN TYPEOF(i))
    ) > 0) AND ((SIZEOF(QUERY(i <* aea.items | 
    'AUTOMOTIVE_DESIGN.PRODUCT_CONCEPT_FEATURE_CATEGORY_USAGE' IN TYPEOF(i))
    ) <> SIZEOF(aea.items)) OR (SIZEOF(TYPEOF(aea.assigned_effectivity) * [
    'AUTOMOTIVE_DESIGN.TIME_INTERVAL_BASED_EFFECTIVITY', 
    'AUTOMOTIVE_DESIGN.DATED_EFFECTIVITY', 
    'AUTOMOTIVE_DESIGN.SERIAL_NUMBERED_EFFECTIVITY', 
    'AUTOMOTIVE_DESIGN.LOT_EFFECTIVITY', 
    'AUTOMOTIVE_DESIGN.PRODUCT_DEFINITION_EFFECTIVITY']) > 0) OR (aea.
    assigned_effectivity.id <> 'class usage') OR (SIZEOF(QUERY(cueca <* USEDIN(
    aea, 
    'AUTOMOTIVE_DESIGN.EFFECTIVITY_CONTEXT_ASSIGNMENT.ASSIGNED_EFFECTIVITY_ASSIGNMENT'
    ) | 'AUTOMOTIVE_DESIGN.CLASS_USAGE_EFFECTIVITY_CONTEXT_ASSIGNMENT' IN 
    TYPEOF(cueca))) = 0)))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_effectivity_for_effectivity_relationship FOR (
  effectivity_relationship);
WHERE
  wr1 : SIZEOF(QUERY(er <* effectivity_relationship | (SIZEOF([
    'AUTOMOTIVE_DESIGN.' + 'LOT_EFFECTIVITY', 'AUTOMOTIVE_DESIGN.' + 
    'SERIAL_NUMBERED_EFFECTIVITY', 'AUTOMOTIVE_DESIGN.' + 
    'PRODUCT_DEFINITION_EFFECTIVITY'] * TYPEOF(er.relating_effectivity)) > 0) 
    OR (SIZEOF(['AUTOMOTIVE_DESIGN.' + 'LOT_EFFECTIVITY', 
    'AUTOMOTIVE_DESIGN.' + 'SERIAL_NUMBERED_EFFECTIVITY', 
    'AUTOMOTIVE_DESIGN.' + 'PRODUCT_DEFINITION_EFFECTIVITY'] * TYPEOF(er.
    related_effectivity)) > 0))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_effectivity_usage FOR (configured_effectivity_assignment,
  effectivity);
WHERE
  wr1 : SIZEOF(QUERY(e <* effectivity | (SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'DATED_EFFECTIVITY', 'AUTOMOTIVE_DESIGN.' + 
    'TIME_INTERVAL_BASED_EFFECTIVITY'] * TYPEOF(e)) = 0) AND (SIZEOF(QUERY(er
     <* USEDIN(e, 
    'AUTOMOTIVE_DESIGN.EFFECTIVITY_RELATIONSHIP.RELATED_EFFECTIVITY') | er.
    name = 'inheritance')) = 0) AND (e.id = 'configuration validity') AND (
    SIZEOF(QUERY(cea <* USEDIN(e, 
    'AUTOMOTIVE_DESIGN.EFFECTIVITY_ASSIGNMENT.ASSIGNED_EFFECTIVITY') | 
    'AUTOMOTIVE_DESIGN.' + 'CONFIGURED_EFFECTIVITY_ASSIGNMENT' IN TYPEOF(cea
    ))) = 0) AND (e.id = 'class usage') AND (SIZEOF(QUERY(aea <* USEDIN(e, 
    'AUTOMOTIVE_DESIGN.EFFECTIVITY_ASSIGNMENT.ASSIGNED_EFFECTIVITY') | (
    'AUTOMOTIVE_DESIGN.' + 'APPLIED_EFFECTIVITY_ASSIGNMENT' IN TYPEOF(aea)) 
    AND (SIZEOF(QUERY(i <* aea.items | 'AUTOMOTIVE_DESIGN.' + 
    'PRODUCT_CONCEPT_FEATURE_CATEGORY_USAGE' IN TYPEOF(i))) > 0))) = 0))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_externally_defined_item_relationship FOR (
  externally_defined_item_relationship);
WHERE
  wr1 : SIZEOF(QUERY(edir <* externally_defined_item_relationship | (edir.name
     = 'name scope') AND (NOT ('AUTOMOTIVE_DESIGN.' + 
    'EXTERNALLY_DEFINED_GENERAL_PROPERTY' IN TYPEOF(edir.relating_item)) OR 
    NOT ('AUTOMOTIVE_DESIGN.' + 'KNOWN_SOURCE' IN TYPEOF(edir.relating_item.
    source)) OR NOT ('AUTOMOTIVE_DESIGN.' + 'EXTERNALLY_DEFINED_CLASS' IN 
    TYPEOF(edir.related_item)) OR NOT ('AUTOMOTIVE_DESIGN.' + 'KNOWN_SOURCE'
     IN TYPEOF(edir.related_item.source))))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_group_relationship_for_general_classification_hierarchy FOR (
  class, group_relationship);
WHERE
  wr1 : SIZEOF(QUERY(gr <* group_relationship | (gr.name = 'class hierarchy') 
    AND (NOT ('AUTOMOTIVE_DESIGN.' + 'CLASS' IN TYPEOF(gr.related_group)) OR
     NOT ('AUTOMOTIVE_DESIGN.' + 'CLASS' IN TYPEOF(gr.relating_group))))) = 
    0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_group_relationship_for_specification_category FOR (
  group_relationship, product_concept_feature_category);
WHERE
  wr1 : SIZEOF(QUERY(gr <* group_relationship | (gr.name = 
    'specification category hierarchy') AND (NOT ('AUTOMOTIVE_DESIGN.' + 
    'PRODUCT_CONCEPT_FEATURE_CATEGORY' IN TYPEOF(gr.related_group)) OR NOT (
    'AUTOMOTIVE_DESIGN.' + 'PRODUCT_CONCEPT_FEATURE_CATEGORY' IN TYPEOF(gr.
    relating_group))))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_multi_language_for_action FOR (action);
WHERE
  wr1 : SIZEOF(QUERY(ent <* action | SIZEOF(QUERY(mlaa <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa.
    attribute_name <> 'description') AND (mlaa.attribute_name <> 'name'))) > 0)
    ) = 0;
  wr2 : SIZEOF(QUERY(ent <* action | SIZEOF(QUERY(ala <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala.
    attribute_name <> 'description') AND (ala.attribute_name <> 'name'))) > 0))
     = 0;
  wr3 : SIZEOF(QUERY(ent <* action | SIZEOF(QUERY(mlaa1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | SIZEOF(
    QUERY(mlaa2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa1.
    attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language
    ))) > 1)) + SIZEOF(QUERY(ala1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | SIZEOF(QUERY(
    ala2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala1.
    attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language)))
     > 1)) > 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_multi_language_for_action_directive FOR (action_directive);
WHERE
  wr1 : SIZEOF(QUERY(ent <* action_directive | SIZEOF(QUERY(mlaa <* USEDIN(ent
    , 'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | mlaa.
    attribute_name <> 'comment')) > 0)) = 0;
  wr2 : SIZEOF(QUERY(ent <* action_directive | SIZEOF(QUERY(ala <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | ala.
    attribute_name <> 'comment')) > 0)) = 0;
  wr3 : SIZEOF(QUERY(ent <* action_directive | SIZEOF(QUERY(mlaa1 <* USEDIN(ent
    , 'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | 
    SIZEOF(QUERY(mlaa2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa1.
    attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language
    ))) > 1)) + SIZEOF(QUERY(ala1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | SIZEOF(QUERY(
    ala2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala1.
    attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language)))
     > 1)) > 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_multi_language_for_action_method FOR (action_method);
WHERE
  wr1 : SIZEOF(QUERY(ent <* action_method | SIZEOF(QUERY(mlaa <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa.
    attribute_name <> 'description') AND (mlaa.attribute_name <> 'name'))) > 0)
    ) = 0;
  wr2 : SIZEOF(QUERY(ent <* action_method | SIZEOF(QUERY(ala <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala.
    attribute_name <> 'description') AND (ala.attribute_name <> 'name'))) > 0))
     = 0;
  wr3 : SIZEOF(QUERY(ent <* action_method | SIZEOF(QUERY(mlaa1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | SIZEOF(
    QUERY(mlaa2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa1.
    attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language
    ))) > 1)) + SIZEOF(QUERY(ala1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | SIZEOF(QUERY(
    ala2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala1.
    attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language)))
     > 1)) > 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_multi_language_for_action_property FOR (action_property);
WHERE
  wr1 : SIZEOF(QUERY(ent <* action_property | SIZEOF(QUERY(mlaa <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | mlaa.
    attribute_name <> 'description')) > 0)) = 0;
  wr2 : SIZEOF(QUERY(ent <* action_property | SIZEOF(QUERY(ala <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | ala.
    attribute_name <> 'description')) > 0)) = 0;
  wr3 : SIZEOF(QUERY(ent <* action_property | SIZEOF(QUERY(mlaa1 <* USEDIN(ent
    , 'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | 
    SIZEOF(QUERY(mlaa2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa1.
    attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language
    ))) > 1)) + SIZEOF(QUERY(ala1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | SIZEOF(QUERY(
    ala2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala1.
    attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language)))
     > 1)) > 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_multi_language_for_action_relationship FOR (action_relationship);
WHERE
  wr1 : SIZEOF(QUERY(ent <* action_relationship | SIZEOF(QUERY(mlaa <* USEDIN(
    ent, 'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | 
    mlaa.attribute_name <> 'description')) > 0)) = 0;
  wr2 : SIZEOF(QUERY(ent <* action_relationship | SIZEOF(QUERY(ala <* USEDIN(
    ent, 'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | ala.
    attribute_name <> 'description')) > 0)) = 0;
  wr3 : SIZEOF(QUERY(ent <* action_relationship | SIZEOF(QUERY(mlaa1 <* USEDIN(
    ent, 'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | 
    SIZEOF(QUERY(mlaa2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa1.
    attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language
    ))) > 1)) + SIZEOF(QUERY(ala1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | SIZEOF(QUERY(
    ala2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala1.
    attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language)))
     > 1)) > 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_multi_language_for_alternate_product_relationship FOR (
  alternate_product_relationship);
WHERE
  wr1 : SIZEOF(QUERY(ent <* alternate_product_relationship | SIZEOF(QUERY(mlaa
     <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | mlaa.
    attribute_name <> 'basis')) > 0)) = 0;
  wr2 : SIZEOF(QUERY(ent <* alternate_product_relationship | SIZEOF(QUERY(ala
     <* USEDIN(ent, 'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')
     | ala.attribute_name <> 'basis')) > 0)) = 0;
  wr3 : SIZEOF(QUERY(ent <* alternate_product_relationship | SIZEOF(QUERY(mlaa1
     <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | SIZEOF(
    QUERY(mlaa2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa1.
    attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language
    ))) > 1)) + SIZEOF(QUERY(ala1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | SIZEOF(QUERY(
    ala2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala1.
    attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language)))
     > 1)) > 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_multi_language_for_application_context FOR (application_context);
WHERE
  wr1 : SIZEOF(QUERY(ent <* application_context | SIZEOF(QUERY(mlaa <* USEDIN(
    ent, 'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | 
    mlaa.attribute_name <> 'description')) > 0)) = 0;
  wr2 : SIZEOF(QUERY(ent <* application_context | SIZEOF(QUERY(ala <* USEDIN(
    ent, 'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | ala.
    attribute_name <> 'description')) > 0)) = 0;
  wr3 : SIZEOF(QUERY(ent <* application_context | SIZEOF(QUERY(mlaa1 <* USEDIN(
    ent, 'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | 
    SIZEOF(QUERY(mlaa2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa1.
    attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language
    ))) > 1)) + SIZEOF(QUERY(ala1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | SIZEOF(QUERY(
    ala2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala1.
    attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language)))
     > 1)) > 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_multi_language_for_approval_relationship FOR (
  approval_relationship);
WHERE
  wr1 : SIZEOF(QUERY(ent <* approval_relationship | SIZEOF(QUERY(mlaa <* USEDIN
    (ent, 'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | 
    mlaa.attribute_name <> 'description')) > 0)) = 0;
  wr2 : SIZEOF(QUERY(ent <* approval_relationship | SIZEOF(QUERY(ala <* USEDIN(
    ent, 'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | ala.
    attribute_name <> 'description')) > 0)) = 0;
  wr3 : SIZEOF(QUERY(ent <* approval_relationship | SIZEOF(QUERY(mlaa1 <* 
    USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | SIZEOF(
    QUERY(mlaa2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa1.
    attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language
    ))) > 1)) + SIZEOF(QUERY(ala1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | SIZEOF(QUERY(
    ala2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala1.
    attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language)))
     > 1)) > 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_multi_language_for_assembly_component_usage_substitute FOR (
  assembly_component_usage_substitute);
WHERE
  wr1 : SIZEOF(QUERY(ent <* assembly_component_usage_substitute | SIZEOF(QUERY(
    mlaa <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | mlaa.
    attribute_name <> 'definition')) > 0)) = 0;
  wr2 : SIZEOF(QUERY(ent <* assembly_component_usage_substitute | SIZEOF(QUERY(
    ala <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | ala.
    attribute_name <> 'definition')) > 0)) = 0;
  wr3 : SIZEOF(QUERY(ent <* assembly_component_usage_substitute | SIZEOF(QUERY(
    mlaa1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | SIZEOF(
    QUERY(mlaa2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa1.
    attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language
    ))) > 1)) + SIZEOF(QUERY(ala1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | SIZEOF(QUERY(
    ala2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala1.
    attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language)))
     > 1)) > 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_multi_language_for_certification FOR (certification);
WHERE
  wr1 : SIZEOF(QUERY(ent <* certification | SIZEOF(QUERY(mlaa <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa.
    attribute_name <> 'name') AND (mlaa.attribute_name <> 'purpose'))) > 0)) = 
    0;
  wr2 : SIZEOF(QUERY(ent <* certification | SIZEOF(QUERY(ala <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala.
    attribute_name <> 'name') AND (ala.attribute_name <> 'purpose'))) > 0)) = 0
    ;
  wr3 : SIZEOF(QUERY(ent <* certification | SIZEOF(QUERY(mlaa1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | SIZEOF(
    QUERY(mlaa2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa1.
    attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language
    ))) > 1)) + SIZEOF(QUERY(ala1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | SIZEOF(QUERY(
    ala2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala1.
    attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language)))
     > 1)) > 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_multi_language_for_configuration_design FOR (configuration_design
  );
WHERE
  wr1 : SIZEOF(QUERY(ent <* configuration_design | SIZEOF(QUERY(mlaa <* USEDIN(
    ent, 'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | 
    mlaa.attribute_name <> 'description')) > 0)) = 0;
  wr2 : SIZEOF(QUERY(ent <* configuration_design | SIZEOF(QUERY(ala <* USEDIN(
    ent, 'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | ala.
    attribute_name <> 'description')) > 0)) = 0;
  wr3 : SIZEOF(QUERY(ent <* configuration_design | SIZEOF(QUERY(mlaa1 <* USEDIN
    (ent, 'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | 
    SIZEOF(QUERY(mlaa2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa1.
    attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language
    ))) > 1)) + SIZEOF(QUERY(ala1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | SIZEOF(QUERY(
    ala2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala1.
    attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language)))
     > 1)) > 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_multi_language_for_configuration_item FOR (configuration_item);
WHERE
  wr1 : SIZEOF(QUERY(ent <* configuration_item | SIZEOF(QUERY(mlaa <* USEDIN(
    ent, 'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (
    mlaa.attribute_name <> 'description') AND (mlaa.attribute_name <> 'name')))
     > 0)) = 0;
  wr2 : SIZEOF(QUERY(ent <* configuration_item | SIZEOF(QUERY(ala <* USEDIN(ent
    , 'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala.
    attribute_name <> 'description') AND (ala.attribute_name <> 'name'))) > 0))
     = 0;
  wr3 : SIZEOF(QUERY(ent <* configuration_item | SIZEOF(QUERY(mlaa1 <* USEDIN(
    ent, 'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | 
    SIZEOF(QUERY(mlaa2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa1.
    attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language
    ))) > 1)) + SIZEOF(QUERY(ala1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | SIZEOF(QUERY(
    ala2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala1.
    attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language)))
     > 1)) > 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_multi_language_for_contract FOR (contract);
WHERE
  wr1 : SIZEOF(QUERY(ent <* contract | SIZEOF(QUERY(mlaa <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | mlaa.
    attribute_name <> 'purpose')) > 0)) = 0;
  wr2 : SIZEOF(QUERY(ent <* contract | SIZEOF(QUERY(ala <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | ala.
    attribute_name <> 'purpose')) > 0)) = 0;
  wr3 : SIZEOF(QUERY(ent <* contract | SIZEOF(QUERY(mlaa1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | SIZEOF(
    QUERY(mlaa2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa1.
    attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language
    ))) > 1)) + SIZEOF(QUERY(ala1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | SIZEOF(QUERY(
    ala2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala1.
    attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language)))
     > 1)) > 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_multi_language_for_data_environment FOR (data_environment);
WHERE
  wr1 : SIZEOF(QUERY(ent <* data_environment | SIZEOF(QUERY(mlaa <* USEDIN(ent
    , 'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | mlaa.
    attribute_name <> 'description')) > 0)) = 0;
  wr2 : SIZEOF(QUERY(ent <* data_environment | SIZEOF(QUERY(ala <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | ala.
    attribute_name <> 'description')) > 0)) = 0;
  wr3 : SIZEOF(QUERY(ent <* data_environment | SIZEOF(QUERY(mlaa1 <* USEDIN(ent
    , 'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | 
    SIZEOF(QUERY(mlaa2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa1.
    attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language
    ))) > 1)) + SIZEOF(QUERY(ala1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | SIZEOF(QUERY(
    ala2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala1.
    attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language)))
     > 1)) > 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_multi_language_for_date_role FOR (date_role);
WHERE
  wr1 : SIZEOF(QUERY(ent <* date_role | SIZEOF(QUERY(mlaa <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | mlaa.
    attribute_name <> 'description')) > 0)) = 0;
  wr2 : SIZEOF(QUERY(ent <* date_role | SIZEOF(QUERY(ala <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | ala.
    attribute_name <> 'description')) > 0)) = 0;
  wr3 : SIZEOF(QUERY(ent <* date_role | SIZEOF(QUERY(mlaa1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | SIZEOF(
    QUERY(mlaa2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa1.
    attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language
    ))) > 1)) + SIZEOF(QUERY(ala1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | SIZEOF(QUERY(
    ala2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala1.
    attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language)))
     > 1)) > 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_multi_language_for_date_time_role FOR (date_time_role);
WHERE
  wr1 : SIZEOF(QUERY(ent <* date_time_role | SIZEOF(QUERY(mlaa <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | mlaa.
    attribute_name <> 'description')) > 0)) = 0;
  wr2 : SIZEOF(QUERY(ent <* date_time_role | SIZEOF(QUERY(ala <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | ala.
    attribute_name <> 'description')) > 0)) = 0;
  wr3 : SIZEOF(QUERY(ent <* date_time_role | SIZEOF(QUERY(mlaa1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | SIZEOF(
    QUERY(mlaa2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa1.
    attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language
    ))) > 1)) + SIZEOF(QUERY(ala1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | SIZEOF(QUERY(
    ala2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala1.
    attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language)))
     > 1)) > 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_multi_language_for_descriptive_representation_item FOR (
  descriptive_representation_item);
WHERE
  wr1 : SIZEOF(QUERY(ent <* descriptive_representation_item | SIZEOF(QUERY(mlaa
     <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | mlaa.
    attribute_name <> 'description')) > 0)) = 0;
  wr2 : SIZEOF(QUERY(ent <* descriptive_representation_item | SIZEOF(QUERY(ala
     <* USEDIN(ent, 'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')
     | ala.attribute_name <> 'description')) > 0)) = 0;
  wr3 : SIZEOF(QUERY(ent <* descriptive_representation_item | SIZEOF(QUERY(
    mlaa1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | SIZEOF(
    QUERY(mlaa2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa1.
    attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language
    ))) > 1)) + SIZEOF(QUERY(ala1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | SIZEOF(QUERY(
    ala2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala1.
    attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language)))
     > 1)) > 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_multi_language_for_document_relationship FOR (
  document_relationship);
WHERE
  wr1 : SIZEOF(QUERY(ent <* document_relationship | SIZEOF(QUERY(mlaa <* USEDIN
    (ent, 'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | 
    mlaa.attribute_name <> 'description')) > 0)) = 0;
  wr2 : SIZEOF(QUERY(ent <* document_relationship | SIZEOF(QUERY(ala <* USEDIN(
    ent, 'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | ala.
    attribute_name <> 'description')) > 0)) = 0;
  wr3 : SIZEOF(QUERY(ent <* document_relationship | SIZEOF(QUERY(mlaa1 <* 
    USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | SIZEOF(
    QUERY(mlaa2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa1.
    attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language
    ))) > 1)) + SIZEOF(QUERY(ala1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | SIZEOF(QUERY(
    ala2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala1.
    attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language)))
     > 1)) > 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_multi_language_for_draughting_title FOR (draughting_title);
WHERE
  wr1 : SIZEOF(QUERY(ent <* draughting_title | SIZEOF(QUERY(mlaa <* USEDIN(ent
    , 'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | mlaa.
    attribute_name <> 'contents')) > 0)) = 0;
  wr2 : SIZEOF(QUERY(ent <* draughting_title | SIZEOF(QUERY(ala <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala.
    attribute_name <> 'contents') AND (ala.attribute_name <> 'language'))) > 0)
    ) = 0;
  wr3 : SIZEOF(QUERY(ent <* draughting_title | SIZEOF(QUERY(mlaa1 <* USEDIN(ent
    , 'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | 
    SIZEOF(QUERY(mlaa2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa1.
    attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language
    ))) > 1)) + SIZEOF(QUERY(ala1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | SIZEOF(QUERY(
    ala2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala1.
    attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language)))
     > 1)) > 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_multi_language_for_effectivity FOR (effectivity);
WHERE
  wr1 : SIZEOF(QUERY(ent <* effectivity | SIZEOF(QUERY(mlaa <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | mlaa.
    attribute_name <> 'description')) > 0)) = 0;
  wr2 : SIZEOF(QUERY(ent <* effectivity | SIZEOF(QUERY(ala <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | ala.
    attribute_name <> 'description')) > 0)) = 0;
  wr3 : SIZEOF(QUERY(ent <* effectivity | SIZEOF(QUERY(mlaa1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | SIZEOF(
    QUERY(mlaa2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa1.
    attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language
    ))) > 1)) + SIZEOF(QUERY(ala1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | SIZEOF(QUERY(
    ala2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala1.
    attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language)))
     > 1)) > 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_multi_language_for_effectivity_relationship FOR (
  effectivity_relationship);
WHERE
  wr1 : SIZEOF(QUERY(ent <* effectivity_relationship | SIZEOF(QUERY(mlaa <* 
    USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | mlaa.
    attribute_name <> 'description')) > 0)) = 0;
  wr2 : SIZEOF(QUERY(ent <* effectivity_relationship | SIZEOF(QUERY(ala <* 
    USEDIN(ent, 'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | 
    ala.attribute_name <> 'description')) > 0)) = 0;
  wr3 : SIZEOF(QUERY(ent <* effectivity_relationship | SIZEOF(QUERY(mlaa1 <* 
    USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | SIZEOF(
    QUERY(mlaa2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa1.
    attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language
    ))) > 1)) + SIZEOF(QUERY(ala1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | SIZEOF(QUERY(
    ala2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala1.
    attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language)))
     > 1)) > 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_multi_language_for_event_occurrence FOR (event_occurrence);
WHERE
  wr1 : SIZEOF(QUERY(ent <* event_occurrence | SIZEOF(QUERY(mlaa <* USEDIN(ent
    , 'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | mlaa.
    attribute_name <> 'description')) > 0)) = 0;
  wr2 : SIZEOF(QUERY(ent <* event_occurrence | SIZEOF(QUERY(ala <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | ala.
    attribute_name <> 'description')) > 0)) = 0;
  wr3 : SIZEOF(QUERY(ent <* event_occurrence | SIZEOF(QUERY(mlaa1 <* USEDIN(ent
    , 'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | 
    SIZEOF(QUERY(mlaa2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa1.
    attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language
    ))) > 1)) + SIZEOF(QUERY(ala1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | SIZEOF(QUERY(
    ala2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala1.
    attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language)))
     > 1)) > 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_multi_language_for_external_source FOR (external_source);
WHERE
  wr1 : SIZEOF(QUERY(ent <* external_source | SIZEOF(QUERY(mlaa <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | mlaa.
    attribute_name <> 'description')) > 0)) = 0;
  wr2 : SIZEOF(QUERY(ent <* external_source | SIZEOF(QUERY(ala <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | ala.
    attribute_name <> 'description')) > 0)) = 0;
  wr3 : SIZEOF(QUERY(ent <* external_source | SIZEOF(QUERY(mlaa1 <* USEDIN(ent
    , 'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | 
    SIZEOF(QUERY(mlaa2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa1.
    attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language
    ))) > 1)) + SIZEOF(QUERY(ala1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | SIZEOF(QUERY(
    ala2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala1.
    attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language)))
     > 1)) > 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_multi_language_for_general_property FOR (general_property);
WHERE
  wr1 : SIZEOF(QUERY(ent <* general_property | SIZEOF(QUERY(mlaa <* USEDIN(ent
    , 'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | mlaa.
    attribute_name <> 'description')) > 0)) = 0;
  wr2 : SIZEOF(QUERY(ent <* general_property | SIZEOF(QUERY(ala <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | ala.
    attribute_name <> 'description')) > 0)) = 0;
  wr3 : SIZEOF(QUERY(ent <* general_property | SIZEOF(QUERY(mlaa1 <* USEDIN(ent
    , 'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | 
    SIZEOF(QUERY(mlaa2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa1.
    attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language
    ))) > 1)) + SIZEOF(QUERY(ala1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | SIZEOF(QUERY(
    ala2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala1.
    attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language)))
     > 1)) > 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_multi_language_for_general_property_relationship FOR (
  general_property_relationship);
WHERE
  wr1 : SIZEOF(QUERY(ent <* general_property_relationship | SIZEOF(QUERY(mlaa
     <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | mlaa.
    attribute_name <> 'description')) > 0)) = 0;
  wr2 : SIZEOF(QUERY(ent <* general_property_relationship | SIZEOF(QUERY(ala
     <* USEDIN(ent, 'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')
     | ala.attribute_name <> 'description')) > 0)) = 0;
  wr3 : SIZEOF(QUERY(ent <* general_property_relationship | SIZEOF(QUERY(mlaa1
     <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | SIZEOF(
    QUERY(mlaa2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa1.
    attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language
    ))) > 1)) + SIZEOF(QUERY(ala1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | SIZEOF(QUERY(
    ala2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala1.
    attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language)))
     > 1)) > 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_multi_language_for_geometric_representation_item FOR (
  geometric_representation_item);
WHERE
  wr1 : SIZEOF(QUERY(ent <* geometric_representation_item | SIZEOF(QUERY(mlaa
     <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | mlaa.
    attribute_name <> 'name')) > 0)) = 0;
  wr2 : SIZEOF(QUERY(ent <* geometric_representation_item | SIZEOF(QUERY(ala
     <* USEDIN(ent, 'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')
     | ala.attribute_name <> 'name')) > 0)) = 0;
  wr3 : SIZEOF(QUERY(ent <* geometric_representation_item | SIZEOF(QUERY(mlaa1
     <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | SIZEOF(
    QUERY(mlaa2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa1.
    attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language
    ))) > 1)) + SIZEOF(QUERY(ala1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | SIZEOF(QUERY(
    ala2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala1.
    attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language)))
     > 1)) > 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_multi_language_for_geometric_tolerance FOR (geometric_tolerance);
WHERE
  wr1 : SIZEOF(QUERY(ent <* geometric_tolerance | SIZEOF(QUERY(mlaa <* USEDIN(
    ent, 'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (
    mlaa.attribute_name <> 'description') AND (mlaa.attribute_name <> 'name')))
     > 0)) = 0;
  wr2 : SIZEOF(QUERY(ent <* geometric_tolerance | SIZEOF(QUERY(ala <* USEDIN(
    ent, 'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala.
    attribute_name <> 'description') AND (ala.attribute_name <> 'name'))) > 0))
     = 0;
  wr3 : SIZEOF(QUERY(ent <* geometric_tolerance | SIZEOF(QUERY(mlaa1 <* USEDIN(
    ent, 'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | 
    SIZEOF(QUERY(mlaa2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa1.
    attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language
    ))) > 1)) + SIZEOF(QUERY(ala1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | SIZEOF(QUERY(
    ala2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala1.
    attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language)))
     > 1)) > 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_multi_language_for_group FOR (group);
WHERE
  wr1 : SIZEOF(QUERY(ent <* group | SIZEOF(QUERY(mlaa <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa.
    attribute_name <> 'description') AND (mlaa.attribute_name <> 'name'))) > 0)
    ) = 0;
  wr2 : SIZEOF(QUERY(ent <* group | SIZEOF(QUERY(ala <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala.
    attribute_name <> 'description') AND (ala.attribute_name <> 'name'))) > 0))
     = 0;
  wr3 : SIZEOF(QUERY(ent <* group | SIZEOF(QUERY(mlaa1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | SIZEOF(
    QUERY(mlaa2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa1.
    attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language
    ))) > 1)) + SIZEOF(QUERY(ala1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | SIZEOF(QUERY(
    ala2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala1.
    attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language)))
     > 1)) > 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_multi_language_for_group_relationship FOR (group_relationship);
WHERE
  wr1 : SIZEOF(QUERY(ent <* group_relationship | SIZEOF(QUERY(mlaa <* USEDIN(
    ent, 'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | 
    mlaa.attribute_name <> 'description')) > 0)) = 0;
  wr2 : SIZEOF(QUERY(ent <* group_relationship | SIZEOF(QUERY(ala <* USEDIN(ent
    , 'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | ala.
    attribute_name <> 'description')) > 0)) = 0;
  wr3 : SIZEOF(QUERY(ent <* group_relationship | SIZEOF(QUERY(mlaa1 <* USEDIN(
    ent, 'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | 
    SIZEOF(QUERY(mlaa2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa1.
    attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language
    ))) > 1)) + SIZEOF(QUERY(ala1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | SIZEOF(QUERY(
    ala2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala1.
    attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language)))
     > 1)) > 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_multi_language_for_identification_role FOR (identification_role);
WHERE
  wr1 : SIZEOF(QUERY(ent <* identification_role | SIZEOF(QUERY(mlaa <* USEDIN(
    ent, 'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | 
    mlaa.attribute_name <> 'description')) > 0)) = 0;
  wr2 : SIZEOF(QUERY(ent <* identification_role | SIZEOF(QUERY(ala <* USEDIN(
    ent, 'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | ala.
    attribute_name <> 'description')) > 0)) = 0;
  wr3 : SIZEOF(QUERY(ent <* identification_role | SIZEOF(QUERY(mlaa1 <* USEDIN(
    ent, 'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | 
    SIZEOF(QUERY(mlaa2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa1.
    attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language
    ))) > 1)) + SIZEOF(QUERY(ala1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | SIZEOF(QUERY(
    ala2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala1.
    attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language)))
     > 1)) > 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_multi_language_for_kinematic_pair FOR (kinematic_pair);
WHERE
  wr1 : SIZEOF(QUERY(ent <* kinematic_pair | SIZEOF(QUERY(mlaa <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | mlaa.
    attribute_name <> 'name')) > 0)) = 0;
  wr2 : SIZEOF(QUERY(ent <* kinematic_pair | SIZEOF(QUERY(ala <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | ala.
    attribute_name <> 'name')) > 0)) = 0;
  wr3 : SIZEOF(QUERY(ent <* kinematic_pair | SIZEOF(QUERY(mlaa1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | SIZEOF(
    QUERY(mlaa2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa1.
    attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language
    ))) > 1)) + SIZEOF(QUERY(ala1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | SIZEOF(QUERY(
    ala2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala1.
    attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language)))
     > 1)) > 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_multi_language_for_mapped_item FOR (mapped_item);
WHERE
  wr1 : SIZEOF(QUERY(ent <* mapped_item | SIZEOF(QUERY(mlaa <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | mlaa.
    attribute_name <> 'name')) > 0)) = 0;
  wr2 : SIZEOF(QUERY(ent <* mapped_item | SIZEOF(QUERY(ala <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | ala.
    attribute_name <> 'name')) > 0)) = 0;
  wr3 : SIZEOF(QUERY(ent <* mapped_item | SIZEOF(QUERY(mlaa1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | SIZEOF(
    QUERY(mlaa2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa1.
    attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language
    ))) > 1)) + SIZEOF(QUERY(ala1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | SIZEOF(QUERY(
    ala2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala1.
    attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language)))
     > 1)) > 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_multi_language_for_name_assignment FOR (name_assignment);
WHERE
  wr1 : SIZEOF(QUERY(ent <* name_assignment | SIZEOF(QUERY(mlaa <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | mlaa.
    attribute_name <> 'assigned_name')) > 0)) = 0;
  wr2 : SIZEOF(QUERY(ent <* name_assignment | SIZEOF(QUERY(ala <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | ala.
    attribute_name <> 'assigned_name')) > 0)) = 0;
  wr3 : SIZEOF(QUERY(ent <* name_assignment | SIZEOF(QUERY(mlaa1 <* USEDIN(ent
    , 'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | 
    SIZEOF(QUERY(mlaa2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa1.
    attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language
    ))) > 1)) + SIZEOF(QUERY(ala1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | SIZEOF(QUERY(
    ala2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala1.
    attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language)))
     > 1)) > 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_multi_language_for_organization_relationship FOR (
  organization_relationship);
WHERE
  wr1 : SIZEOF(QUERY(ent <* organization_relationship | SIZEOF(QUERY(mlaa <* 
    USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | mlaa.
    attribute_name <> 'description')) > 0)) = 0;
  wr2 : SIZEOF(QUERY(ent <* organization_relationship | SIZEOF(QUERY(ala <* 
    USEDIN(ent, 'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | 
    ala.attribute_name <> 'description')) > 0)) = 0;
  wr3 : SIZEOF(QUERY(ent <* organization_relationship | SIZEOF(QUERY(mlaa1 <* 
    USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | SIZEOF(
    QUERY(mlaa2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa1.
    attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language
    ))) > 1)) + SIZEOF(QUERY(ala1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | SIZEOF(QUERY(
    ala2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala1.
    attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language)))
     > 1)) > 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_multi_language_for_organization_role FOR (organization_role);
WHERE
  wr1 : SIZEOF(QUERY(ent <* organization_role | SIZEOF(QUERY(mlaa <* USEDIN(ent
    , 'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | mlaa.
    attribute_name <> 'description')) > 0)) = 0;
  wr2 : SIZEOF(QUERY(ent <* organization_role | SIZEOF(QUERY(ala <* USEDIN(ent
    , 'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | ala.
    attribute_name <> 'description')) > 0)) = 0;
  wr3 : SIZEOF(QUERY(ent <* organization_role | SIZEOF(QUERY(mlaa1 <* USEDIN(
    ent, 'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | 
    SIZEOF(QUERY(mlaa2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa1.
    attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language
    ))) > 1)) + SIZEOF(QUERY(ala1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | SIZEOF(QUERY(
    ala2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala1.
    attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language)))
     > 1)) > 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_multi_language_for_organizational_project FOR (
  organizational_project);
WHERE
  wr1 : SIZEOF(QUERY(ent <* organizational_project | SIZEOF(QUERY(mlaa <* 
    USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa.
    attribute_name <> 'description') AND (mlaa.attribute_name <> 'name'))) > 0)
    ) = 0;
  wr2 : SIZEOF(QUERY(ent <* organizational_project | SIZEOF(QUERY(ala <* USEDIN
    (ent, 'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala.
    attribute_name <> 'description') AND (ala.attribute_name <> 'name'))) > 0))
     = 0;
  wr3 : SIZEOF(QUERY(ent <* organizational_project | SIZEOF(QUERY(mlaa1 <* 
    USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | SIZEOF(
    QUERY(mlaa2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa1.
    attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language
    ))) > 1)) + SIZEOF(QUERY(ala1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | SIZEOF(QUERY(
    ala2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala1.
    attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language)))
     > 1)) > 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_multi_language_for_organizational_project_relationship FOR (
  organizational_project_relationship);
WHERE
  wr1 : SIZEOF(QUERY(ent <* organizational_project_relationship | SIZEOF(QUERY(
    mlaa <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | mlaa.
    attribute_name <> 'description')) > 0)) = 0;
  wr2 : SIZEOF(QUERY(ent <* organizational_project_relationship | SIZEOF(QUERY(
    ala <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | ala.
    attribute_name <> 'description')) > 0)) = 0;
  wr3 : SIZEOF(QUERY(ent <* organizational_project_relationship | SIZEOF(QUERY(
    mlaa1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | SIZEOF(
    QUERY(mlaa2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa1.
    attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language
    ))) > 1)) + SIZEOF(QUERY(ala1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | SIZEOF(QUERY(
    ala2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala1.
    attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language)))
     > 1)) > 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_multi_language_for_pair_actuator FOR (pair_actuator);
WHERE
  wr1 : SIZEOF(QUERY(ent <* pair_actuator | SIZEOF(QUERY(mlaa <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | mlaa.
    attribute_name <> 'name')) > 0)) = 0;
  wr2 : SIZEOF(QUERY(ent <* pair_actuator | SIZEOF(QUERY(ala <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | ala.
    attribute_name <> 'name')) > 0)) = 0;
  wr3 : SIZEOF(QUERY(ent <* pair_actuator | SIZEOF(QUERY(mlaa1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | SIZEOF(
    QUERY(mlaa2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa1.
    attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language
    ))) > 1)) + SIZEOF(QUERY(ala1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | SIZEOF(QUERY(
    ala2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala1.
    attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language)))
     > 1)) > 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_multi_language_for_person_and_organization_role FOR (
  person_and_organization_role);
WHERE
  wr1 : SIZEOF(QUERY(ent <* person_and_organization_role | SIZEOF(QUERY(mlaa
     <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | mlaa.
    attribute_name <> 'description')) > 0)) = 0;
  wr2 : SIZEOF(QUERY(ent <* person_and_organization_role | SIZEOF(QUERY(ala <* 
    USEDIN(ent, 'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | 
    ala.attribute_name <> 'description')) > 0)) = 0;
  wr3 : SIZEOF(QUERY(ent <* person_and_organization_role | SIZEOF(QUERY(mlaa1
     <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | SIZEOF(
    QUERY(mlaa2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa1.
    attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language
    ))) > 1)) + SIZEOF(QUERY(ala1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | SIZEOF(QUERY(
    ala2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala1.
    attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language)))
     > 1)) > 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_multi_language_for_presentation_layer_assignment FOR (
  presentation_layer_assignment);
WHERE
  wr1 : SIZEOF(QUERY(ent <* presentation_layer_assignment | SIZEOF(QUERY(mlaa
     <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | mlaa.
    attribute_name <> 'description')) > 0)) = 0;
  wr2 : SIZEOF(QUERY(ent <* presentation_layer_assignment | SIZEOF(QUERY(ala
     <* USEDIN(ent, 'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')
     | ala.attribute_name <> 'description')) > 0)) = 0;
  wr3 : SIZEOF(QUERY(ent <* presentation_layer_assignment | SIZEOF(QUERY(mlaa1
     <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | SIZEOF(
    QUERY(mlaa2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa1.
    attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language
    ))) > 1)) + SIZEOF(QUERY(ala1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | SIZEOF(QUERY(
    ala2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala1.
    attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language)))
     > 1)) > 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_multi_language_for_process_product_association FOR (
  process_product_association);
WHERE
  wr1 : SIZEOF(QUERY(ent <* process_product_association | SIZEOF(QUERY(mlaa <* 
    USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | mlaa.
    attribute_name <> 'description')) > 0)) = 0;
  wr2 : SIZEOF(QUERY(ent <* process_product_association | SIZEOF(QUERY(ala <* 
    USEDIN(ent, 'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | 
    ala.attribute_name <> 'description')) > 0)) = 0;
  wr3 : SIZEOF(QUERY(ent <* process_product_association | SIZEOF(QUERY(mlaa1
     <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | SIZEOF(
    QUERY(mlaa2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa1.
    attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language
    ))) > 1)) + SIZEOF(QUERY(ala1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | SIZEOF(QUERY(
    ala2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala1.
    attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language)))
     > 1)) > 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_multi_language_for_product FOR (product);
WHERE
  wr1 : SIZEOF(QUERY(ent <* product | SIZEOF(QUERY(mlaa <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa.
    attribute_name <> 'description') AND (mlaa.attribute_name <> 'name'))) > 0)
    ) = 0;
  wr2 : SIZEOF(QUERY(ent <* product | SIZEOF(QUERY(ala <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala.
    attribute_name <> 'description') AND (ala.attribute_name <> 'name'))) > 0))
     = 0;
  wr3 : SIZEOF(QUERY(ent <* product | SIZEOF(QUERY(mlaa1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | SIZEOF(
    QUERY(mlaa2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa1.
    attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language
    ))) > 1)) + SIZEOF(QUERY(ala1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | SIZEOF(QUERY(
    ala2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala1.
    attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language)))
     > 1)) > 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_multi_language_for_product_concept FOR (product_concept);
WHERE
  wr1 : SIZEOF(QUERY(ent <* product_concept | SIZEOF(QUERY(mlaa <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa.
    attribute_name <> 'description') AND (mlaa.attribute_name <> 'name'))) > 0)
    ) = 0;
  wr2 : SIZEOF(QUERY(ent <* product_concept | SIZEOF(QUERY(ala <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala.
    attribute_name <> 'description') AND (ala.attribute_name <> 'name'))) > 0))
     = 0;
  wr3 : SIZEOF(QUERY(ent <* product_concept | SIZEOF(QUERY(mlaa1 <* USEDIN(ent
    , 'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | 
    SIZEOF(QUERY(mlaa2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa1.
    attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language
    ))) > 1)) + SIZEOF(QUERY(ala1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | SIZEOF(QUERY(
    ala2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala1.
    attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language)))
     > 1)) > 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_multi_language_for_product_concept_feature FOR (
  product_concept_feature);
WHERE
  wr1 : SIZEOF(QUERY(ent <* product_concept_feature | SIZEOF(QUERY(mlaa <* 
    USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa.
    attribute_name <> 'description') AND (mlaa.attribute_name <> 'name'))) > 0)
    ) = 0;
  wr2 : SIZEOF(QUERY(ent <* product_concept_feature | SIZEOF(QUERY(ala <* 
    USEDIN(ent, 'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (
    ala.attribute_name <> 'description') AND (ala.attribute_name <> 'name')))
     > 0)) = 0;
  wr3 : SIZEOF(QUERY(ent <* product_concept_feature | SIZEOF(QUERY(mlaa1 <* 
    USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | SIZEOF(
    QUERY(mlaa2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa1.
    attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language
    ))) > 1)) + SIZEOF(QUERY(ala1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | SIZEOF(QUERY(
    ala2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala1.
    attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language)))
     > 1)) > 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_multi_language_for_product_concept_feature_association FOR (
  product_concept_feature_association);
WHERE
  wr1 : SIZEOF(QUERY(ent <* product_concept_feature_association | SIZEOF(QUERY(
    mlaa <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | mlaa.
    attribute_name <> 'description')) > 0)) = 0;
  wr2 : SIZEOF(QUERY(ent <* product_concept_feature_association | SIZEOF(QUERY(
    ala <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | ala.
    attribute_name <> 'description')) > 0)) = 0;
  wr3 : SIZEOF(QUERY(ent <* product_concept_feature_association | SIZEOF(QUERY(
    mlaa1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | SIZEOF(
    QUERY(mlaa2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa1.
    attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language
    ))) > 1)) + SIZEOF(QUERY(ala1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | SIZEOF(QUERY(
    ala2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala1.
    attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language)))
     > 1)) > 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_multi_language_for_product_concept_relationship FOR (
  product_concept_relationship);
WHERE
  wr1 : SIZEOF(QUERY(ent <* product_concept_relationship | SIZEOF(QUERY(mlaa
     <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | mlaa.
    attribute_name <> 'description')) > 0)) = 0;
  wr2 : SIZEOF(QUERY(ent <* product_concept_relationship | SIZEOF(QUERY(ala <* 
    USEDIN(ent, 'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | 
    ala.attribute_name <> 'description')) > 0)) = 0;
  wr3 : SIZEOF(QUERY(ent <* product_concept_relationship | SIZEOF(QUERY(mlaa1
     <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | SIZEOF(
    QUERY(mlaa2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa1.
    attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language
    ))) > 1)) + SIZEOF(QUERY(ala1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | SIZEOF(QUERY(
    ala2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala1.
    attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language)))
     > 1)) > 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_multi_language_for_product_definition FOR (product_definition);
WHERE
  wr1 : SIZEOF(QUERY(ent <* product_definition | SIZEOF(QUERY(mlaa <* USEDIN(
    ent, 'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (
    mlaa.attribute_name <> 'description') AND (mlaa.attribute_name <> 'name')))
     > 0)) = 0;
  wr2 : SIZEOF(QUERY(ent <* product_definition | SIZEOF(QUERY(ala <* USEDIN(ent
    , 'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala.
    attribute_name <> 'description') AND (ala.attribute_name <> 'name'))) > 0))
     = 0;
  wr3 : SIZEOF(QUERY(ent <* product_definition | SIZEOF(QUERY(mlaa1 <* USEDIN(
    ent, 'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | 
    SIZEOF(QUERY(mlaa2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa1.
    attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language
    ))) > 1)) + SIZEOF(QUERY(ala1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | SIZEOF(QUERY(
    ala2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala1.
    attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language)))
     > 1)) > 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_multi_language_for_product_definition_formation FOR (
  product_definition_formation);
WHERE
  wr1 : SIZEOF(QUERY(ent <* product_definition_formation | SIZEOF(QUERY(mlaa
     <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | mlaa.
    attribute_name <> 'description')) > 0)) = 0;
  wr2 : SIZEOF(QUERY(ent <* product_definition_formation | SIZEOF(QUERY(ala <* 
    USEDIN(ent, 'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | 
    ala.attribute_name <> 'description')) > 0)) = 0;
  wr3 : SIZEOF(QUERY(ent <* product_definition_formation | SIZEOF(QUERY(mlaa1
     <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | SIZEOF(
    QUERY(mlaa2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa1.
    attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language
    ))) > 1)) + SIZEOF(QUERY(ala1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | SIZEOF(QUERY(
    ala2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala1.
    attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language)))
     > 1)) > 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_multi_language_for_product_definition_formation_relationship
   FOR (product_definition_formation_relationship);
WHERE
  wr1 : SIZEOF(QUERY(ent <* product_definition_formation_relationship | SIZEOF(
    QUERY(mlaa <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | mlaa.
    attribute_name <> 'description')) > 0)) = 0;
  wr2 : SIZEOF(QUERY(ent <* product_definition_formation_relationship | SIZEOF(
    QUERY(ala <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | ala.
    attribute_name <> 'description')) > 0)) = 0;
  wr3 : SIZEOF(QUERY(ent <* product_definition_formation_relationship | SIZEOF(
    QUERY(mlaa1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | SIZEOF(
    QUERY(mlaa2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa1.
    attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language
    ))) > 1)) + SIZEOF(QUERY(ala1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | SIZEOF(QUERY(
    ala2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala1.
    attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language)))
     > 1)) > 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_multi_language_for_product_definition_relationship FOR (
  product_definition_relationship);
WHERE
  wr1 : SIZEOF(QUERY(ent <* product_definition_relationship | SIZEOF(QUERY(mlaa
     <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | mlaa.
    attribute_name <> 'description')) > 0)) = 0;
  wr2 : SIZEOF(QUERY(ent <* product_definition_relationship | SIZEOF(QUERY(ala
     <* USEDIN(ent, 'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')
     | ala.attribute_name <> 'description')) > 0)) = 0;
  wr3 : SIZEOF(QUERY(ent <* product_definition_relationship | SIZEOF(QUERY(
    mlaa1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | SIZEOF(
    QUERY(mlaa2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa1.
    attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language
    ))) > 1)) + SIZEOF(QUERY(ala1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | SIZEOF(QUERY(
    ala2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala1.
    attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language)))
     > 1)) > 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_multi_language_for_product_definition_substitute FOR (
  product_definition_substitute);
WHERE
  wr1 : SIZEOF(QUERY(ent <* product_definition_substitute | SIZEOF(QUERY(mlaa
     <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | mlaa.
    attribute_name <> 'description')) > 0)) = 0;
  wr2 : SIZEOF(QUERY(ent <* product_definition_substitute | SIZEOF(QUERY(ala
     <* USEDIN(ent, 'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')
     | ala.attribute_name <> 'description')) > 0)) = 0;
  wr3 : SIZEOF(QUERY(ent <* product_definition_substitute | SIZEOF(QUERY(mlaa1
     <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | SIZEOF(
    QUERY(mlaa2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa1.
    attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language
    ))) > 1)) + SIZEOF(QUERY(ala1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | SIZEOF(QUERY(
    ala2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala1.
    attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language)))
     > 1)) > 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_multi_language_for_product_related_product_category FOR (
  product_related_product_category);
WHERE
  wr1 : SIZEOF(QUERY(ent <* product_related_product_category | SIZEOF(QUERY(
    mlaa <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | mlaa.
    attribute_name <> 'description')) > 0)) = 0;
  wr2 : SIZEOF(QUERY(ent <* product_related_product_category | SIZEOF(QUERY(ala
     <* USEDIN(ent, 'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')
     | ala.attribute_name <> 'description')) > 0)) = 0;
  wr3 : SIZEOF(QUERY(ent <* product_related_product_category | SIZEOF(QUERY(
    mlaa1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | SIZEOF(
    QUERY(mlaa2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa1.
    attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language
    ))) > 1)) + SIZEOF(QUERY(ala1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | SIZEOF(QUERY(
    ala2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala1.
    attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language)))
     > 1)) > 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_multi_language_for_property_definition FOR (property_definition);
WHERE
  wr1 : SIZEOF(QUERY(ent <* property_definition | SIZEOF(QUERY(mlaa <* USEDIN(
    ent, 'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (
    mlaa.attribute_name <> 'description') AND (mlaa.attribute_name <> 'name')))
     > 0)) = 0;
  wr2 : SIZEOF(QUERY(ent <* property_definition | SIZEOF(QUERY(ala <* USEDIN(
    ent, 'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala.
    attribute_name <> 'description') AND (ala.attribute_name <> 'name'))) > 0))
     = 0;
  wr3 : SIZEOF(QUERY(ent <* property_definition | SIZEOF(QUERY(mlaa1 <* USEDIN(
    ent, 'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | 
    SIZEOF(QUERY(mlaa2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa1.
    attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language
    ))) > 1)) + SIZEOF(QUERY(ala1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | SIZEOF(QUERY(
    ala2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala1.
    attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language)))
     > 1)) > 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_multi_language_for_property_definition_relationship FOR (
  property_definition_relationship);
WHERE
  wr1 : SIZEOF(QUERY(ent <* property_definition_relationship | SIZEOF(QUERY(
    mlaa <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | mlaa.
    attribute_name <> 'description')) > 0)) = 0;
  wr2 : SIZEOF(QUERY(ent <* property_definition_relationship | SIZEOF(QUERY(ala
     <* USEDIN(ent, 'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')
     | ala.attribute_name <> 'description')) > 0)) = 0;
  wr3 : SIZEOF(QUERY(ent <* property_definition_relationship | SIZEOF(QUERY(
    mlaa1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | SIZEOF(
    QUERY(mlaa2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa1.
    attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language
    ))) > 1)) + SIZEOF(QUERY(ala1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | SIZEOF(QUERY(
    ala2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala1.
    attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language)))
     > 1)) > 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_multi_language_for_representation FOR (representation);
WHERE
  wr1 : SIZEOF(QUERY(ent <* representation | SIZEOF(QUERY(mlaa <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa.
    attribute_name <> 'description') AND (mlaa.attribute_name <> 'name'))) > 0)
    ) = 0;
  wr2 : SIZEOF(QUERY(ent <* representation | SIZEOF(QUERY(ala <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala.
    attribute_name <> 'description') AND (ala.attribute_name <> 'name'))) > 0))
     = 0;
  wr3 : SIZEOF(QUERY(ent <* representation | SIZEOF(QUERY(mlaa1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | SIZEOF(
    QUERY(mlaa2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa1.
    attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language
    ))) > 1)) + SIZEOF(QUERY(ala1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | SIZEOF(QUERY(
    ala2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala1.
    attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language)))
     > 1)) > 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_multi_language_for_representation_relationship FOR (
  representation_relationship);
WHERE
  wr1 : SIZEOF(QUERY(ent <* representation_relationship | SIZEOF(QUERY(mlaa <* 
    USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | mlaa.
    attribute_name <> 'description')) > 0)) = 0;
  wr2 : SIZEOF(QUERY(ent <* representation_relationship | SIZEOF(QUERY(ala <* 
    USEDIN(ent, 'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | 
    ala.attribute_name <> 'description')) > 0)) = 0;
  wr3 : SIZEOF(QUERY(ent <* representation_relationship | SIZEOF(QUERY(mlaa1
     <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | SIZEOF(
    QUERY(mlaa2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa1.
    attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language
    ))) > 1)) + SIZEOF(QUERY(ala1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | SIZEOF(QUERY(
    ala2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala1.
    attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language)))
     > 1)) > 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_multi_language_for_requirement_for_action_resource FOR (
  requirement_for_action_resource);
WHERE
  wr1 : SIZEOF(QUERY(ent <* requirement_for_action_resource | SIZEOF(QUERY(mlaa
     <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | mlaa.
    attribute_name <> 'description')) > 0)) = 0;
  wr2 : SIZEOF(QUERY(ent <* requirement_for_action_resource | SIZEOF(QUERY(ala
     <* USEDIN(ent, 'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')
     | ala.attribute_name <> 'description')) > 0)) = 0;
  wr3 : SIZEOF(QUERY(ent <* requirement_for_action_resource | SIZEOF(QUERY(
    mlaa1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | SIZEOF(
    QUERY(mlaa2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa1.
    attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language
    ))) > 1)) + SIZEOF(QUERY(ala1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | SIZEOF(QUERY(
    ala2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala1.
    attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language)))
     > 1)) > 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_multi_language_for_resource_property FOR (resource_property);
WHERE
  wr1 : SIZEOF(QUERY(ent <* resource_property | SIZEOF(QUERY(mlaa <* USEDIN(ent
    , 'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | mlaa.
    attribute_name <> 'description')) > 0)) = 0;
  wr2 : SIZEOF(QUERY(ent <* resource_property | SIZEOF(QUERY(ala <* USEDIN(ent
    , 'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | ala.
    attribute_name <> 'description')) > 0)) = 0;
  wr3 : SIZEOF(QUERY(ent <* resource_property | SIZEOF(QUERY(mlaa1 <* USEDIN(
    ent, 'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | 
    SIZEOF(QUERY(mlaa2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa1.
    attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language
    ))) > 1)) + SIZEOF(QUERY(ala1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | SIZEOF(QUERY(
    ala2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala1.
    attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language)))
     > 1)) > 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_multi_language_for_resource_requirement_type FOR (
  resource_requirement_type);
WHERE
  wr1 : SIZEOF(QUERY(ent <* resource_requirement_type | SIZEOF(QUERY(mlaa <* 
    USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | mlaa.
    attribute_name <> 'description')) > 0)) = 0;
  wr2 : SIZEOF(QUERY(ent <* resource_requirement_type | SIZEOF(QUERY(ala <* 
    USEDIN(ent, 'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | 
    ala.attribute_name <> 'description')) > 0)) = 0;
  wr3 : SIZEOF(QUERY(ent <* resource_requirement_type | SIZEOF(QUERY(mlaa1 <* 
    USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | SIZEOF(
    QUERY(mlaa2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa1.
    attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language
    ))) > 1)) + SIZEOF(QUERY(ala1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | SIZEOF(QUERY(
    ala2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala1.
    attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language)))
     > 1)) > 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_multi_language_for_security_classification FOR (
  security_classification);
WHERE
  wr1 : SIZEOF(QUERY(ent <* security_classification | SIZEOF(QUERY(mlaa <* 
    USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa.
    attribute_name <> 'name') AND (mlaa.attribute_name <> 'purpose'))) > 0)) = 
    0;
  wr2 : SIZEOF(QUERY(ent <* security_classification | SIZEOF(QUERY(ala <* 
    USEDIN(ent, 'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (
    ala.attribute_name <> 'name') AND (ala.attribute_name <> 'purpose'))) > 0))
     = 0;
  wr3 : SIZEOF(QUERY(ent <* security_classification | SIZEOF(QUERY(mlaa1 <* 
    USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | SIZEOF(
    QUERY(mlaa2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa1.
    attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language
    ))) > 1)) + SIZEOF(QUERY(ala1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | SIZEOF(QUERY(
    ala2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala1.
    attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language)))
     > 1)) > 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_multi_language_for_shape_aspect FOR (shape_aspect);
WHERE
  wr1 : SIZEOF(QUERY(ent <* shape_aspect | SIZEOF(QUERY(mlaa <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | mlaa.
    attribute_name <> 'description')) > 0)) = 0;
  wr2 : SIZEOF(QUERY(ent <* shape_aspect | SIZEOF(QUERY(ala <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | ala.
    attribute_name <> 'description')) > 0)) = 0;
  wr3 : SIZEOF(QUERY(ent <* shape_aspect | SIZEOF(QUERY(mlaa1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | SIZEOF(
    QUERY(mlaa2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa1.
    attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language
    ))) > 1)) + SIZEOF(QUERY(ala1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | SIZEOF(QUERY(
    ala2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala1.
    attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language)))
     > 1)) > 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_multi_language_for_shape_aspect_relationship FOR (
  shape_aspect_relationship);
WHERE
  wr1 : SIZEOF(QUERY(ent <* shape_aspect_relationship | SIZEOF(QUERY(mlaa <* 
    USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | mlaa.
    attribute_name <> 'description')) > 0)) = 0;
  wr2 : SIZEOF(QUERY(ent <* shape_aspect_relationship | SIZEOF(QUERY(ala <* 
    USEDIN(ent, 'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | 
    ala.attribute_name <> 'description')) > 0)) = 0;
  wr3 : SIZEOF(QUERY(ent <* shape_aspect_relationship | SIZEOF(QUERY(mlaa1 <* 
    USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | SIZEOF(
    QUERY(mlaa2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa1.
    attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language
    ))) > 1)) + SIZEOF(QUERY(ala1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | SIZEOF(QUERY(
    ala2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala1.
    attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language)))
     > 1)) > 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_multi_language_for_styled_item FOR (styled_item);
WHERE
  wr1 : SIZEOF(QUERY(ent <* styled_item | SIZEOF(QUERY(mlaa <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | mlaa.
    attribute_name <> 'name')) > 0)) = 0;
  wr2 : SIZEOF(QUERY(ent <* styled_item | SIZEOF(QUERY(ala <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | ala.
    attribute_name <> 'name')) > 0)) = 0;
  wr3 : SIZEOF(QUERY(ent <* styled_item | SIZEOF(QUERY(mlaa1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | SIZEOF(
    QUERY(mlaa2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa1.
    attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language
    ))) > 1)) + SIZEOF(QUERY(ala1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | SIZEOF(QUERY(
    ala2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala1.
    attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language)))
     > 1)) > 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_multi_language_for_time_interval_role FOR (time_interval_role);
WHERE
  wr1 : SIZEOF(QUERY(ent <* time_interval_role | SIZEOF(QUERY(mlaa <* USEDIN(
    ent, 'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | 
    mlaa.attribute_name <> 'description')) > 0)) = 0;
  wr2 : SIZEOF(QUERY(ent <* time_interval_role | SIZEOF(QUERY(ala <* USEDIN(ent
    , 'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | ala.
    attribute_name <> 'description')) > 0)) = 0;
  wr3 : SIZEOF(QUERY(ent <* time_interval_role | SIZEOF(QUERY(mlaa1 <* USEDIN(
    ent, 'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | 
    SIZEOF(QUERY(mlaa2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa1.
    attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language
    ))) > 1)) + SIZEOF(QUERY(ala1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | SIZEOF(QUERY(
    ala2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala1.
    attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language)))
     > 1)) > 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_multi_language_for_topological_representation_item FOR (
  topological_representation_item);
WHERE
  wr1 : SIZEOF(QUERY(ent <* topological_representation_item | SIZEOF(QUERY(mlaa
     <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | mlaa.
    attribute_name <> 'name')) > 0)) = 0;
  wr2 : SIZEOF(QUERY(ent <* topological_representation_item | SIZEOF(QUERY(ala
     <* USEDIN(ent, 'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')
     | ala.attribute_name <> 'name')) > 0)) = 0;
  wr3 : SIZEOF(QUERY(ent <* topological_representation_item | SIZEOF(QUERY(
    mlaa1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | SIZEOF(
    QUERY(mlaa2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa1.
    attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language
    ))) > 1)) + SIZEOF(QUERY(ala1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | SIZEOF(QUERY(
    ala2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala1.
    attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language)))
     > 1)) > 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_multi_language_for_uncertainty_measure_with_unit FOR (
  uncertainty_measure_with_unit);
WHERE
  wr1 : SIZEOF(QUERY(ent <* uncertainty_measure_with_unit | SIZEOF(QUERY(mlaa
     <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | mlaa.
    attribute_name <> 'description')) > 0)) = 0;
  wr2 : SIZEOF(QUERY(ent <* uncertainty_measure_with_unit | SIZEOF(QUERY(ala
     <* USEDIN(ent, 'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')
     | ala.attribute_name <> 'description')) > 0)) = 0;
  wr3 : SIZEOF(QUERY(ent <* uncertainty_measure_with_unit | SIZEOF(QUERY(mlaa1
     <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | SIZEOF(
    QUERY(mlaa2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa1.
    attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language
    ))) > 1)) + SIZEOF(QUERY(ala1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | SIZEOF(QUERY(
    ala2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala1.
    attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language)))
     > 1)) > 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_multi_language_for_uncertainty_qualifier FOR (
  uncertainty_qualifier);
WHERE
  wr1 : SIZEOF(QUERY(ent <* uncertainty_qualifier | SIZEOF(QUERY(mlaa <* USEDIN
    (ent, 'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | 
    mlaa.attribute_name <> 'description')) > 0)) = 0;
  wr2 : SIZEOF(QUERY(ent <* uncertainty_qualifier | SIZEOF(QUERY(ala <* USEDIN(
    ent, 'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | ala.
    attribute_name <> 'description')) > 0)) = 0;
  wr3 : SIZEOF(QUERY(ent <* uncertainty_qualifier | SIZEOF(QUERY(mlaa1 <* 
    USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | SIZEOF(
    QUERY(mlaa2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa1.
    attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language
    ))) > 1)) + SIZEOF(QUERY(ala1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | SIZEOF(QUERY(
    ala2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala1.
    attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language)))
     > 1)) > 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_multi_language_for_versioned_action_request FOR (
  versioned_action_request);
WHERE
  wr1 : SIZEOF(QUERY(ent <* versioned_action_request | SIZEOF(QUERY(mlaa <* 
    USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | mlaa.
    attribute_name <> 'description')) > 0)) = 0;
  wr2 : SIZEOF(QUERY(ent <* versioned_action_request | SIZEOF(QUERY(ala <* 
    USEDIN(ent, 'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | 
    ala.attribute_name <> 'description')) > 0)) = 0;
  wr3 : SIZEOF(QUERY(ent <* versioned_action_request | SIZEOF(QUERY(mlaa1 <* 
    USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | SIZEOF(
    QUERY(mlaa2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa1.
    attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language
    ))) > 1)) + SIZEOF(QUERY(ala1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | SIZEOF(QUERY(
    ala2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala1.
    attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language)))
     > 1)) > 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_multi_language_for_versioned_action_request_relationship FOR (
  versioned_action_request_relationship);
WHERE
  wr1 : SIZEOF(QUERY(ent <* versioned_action_request_relationship | SIZEOF(
    QUERY(mlaa <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | mlaa.
    attribute_name <> 'description')) > 0)) = 0;
  wr2 : SIZEOF(QUERY(ent <* versioned_action_request_relationship | SIZEOF(
    QUERY(ala <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | ala.
    attribute_name <> 'description')) > 0)) = 0;
  wr3 : SIZEOF(QUERY(ent <* versioned_action_request_relationship | SIZEOF(
    QUERY(mlaa1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | SIZEOF(
    QUERY(mlaa2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | (mlaa1.
    attribute_name = mlaa2.attribute_name) AND (mlaa1.language = mlaa2.language
    ))) > 1)) + SIZEOF(QUERY(ala1 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | SIZEOF(QUERY(
    ala2 <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala1.
    attribute_name = ala2.attribute_name) AND (ala1.language = ala2.language)))
     > 1)) > 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_name_assignment_for_kinematic_joint FOR (kinematic_joint);
WHERE
  wr1 : SIZEOF(QUERY(ent <* kinematic_joint | SIZEOF(USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.APPLIED_NAME_ASSIGNMENT.ITEMS')) > 1)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_name_assignment_for_kinematic_link FOR (kinematic_link);
WHERE
  wr1 : SIZEOF(QUERY(ent <* kinematic_link | SIZEOF(USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.APPLIED_NAME_ASSIGNMENT.ITEMS')) > 1)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_name_assignment_for_kinematic_structure FOR (kinematic_structure
  );
WHERE
  wr1 : SIZEOF(QUERY(ent <* kinematic_structure | SIZEOF(USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.APPLIED_NAME_ASSIGNMENT.ITEMS')) > 1)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_name_for_known_source FOR (known_source);
WHERE
  wr1 : SIZEOF(QUERY(ks <* known_source | ks.name <> 'ISO 13584 library')) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_part_occurrence FOR (product_definition,
  product_definition_occurrence_relationship);
WHERE
  wr1 : SIZEOF(QUERY(pd <* product_definition | (pd.frame_of_reference.name = 
    'part occurrence') AND NOT (pd.name IN ['single instance', 
    'selected instance', 'quantified instance', 'specified instance']))) = 0;
  wr2 : SIZEOF(QUERY(pd <* product_definition | (pd.frame_of_reference.name = 
    'part occurrence') AND (SIZEOF(QUERY(pdr <* USEDIN(pd, 
    'AUTOMOTIVE_DESIGN.PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION'
    ) | pdr.name = 'definition usage')) <> 1) AND (SIZEOF(QUERY(cd <* USEDIN(pd
    , 'AUTOMOTIVE_DESIGN.CONFIGURATION_DESIGN.DESIGN') | (cd.name = 
    'occurrence usage definition') AND NOT ('AUTOMOTIVE_DESIGN.' + 
    'PRODUCT_IDENTIFICATION' IN TYPEOF(cd.configuration)))) <> 1))) = 0;
  wr3 : SIZEOF(QUERY(pd <* product_definition | (pd.frame_of_reference.name = 
    'part occurrence') AND (SIZEOF(QUERY(cd <* USEDIN(pd, 
    'AUTOMOTIVE_DESIGN.PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION'
    ) | 'AUTOMOTIVE_DESIGN.' + 'PRODUCT_DEFINITION_USAGE' IN TYPEOF(cd))) = 
    0) AND (SIZEOF(USEDIN(pd, 
    'AUTOMOTIVE_DESIGN.PRODUCT_DEFINITION_OCCURRENCE_RELATIONSHIP.OCCURRENCE'
    )) = 0))) = 0;
  wr4 : SIZEOF(QUERY(pd <* product_definition | (pd.frame_of_reference.name = 
    'part occurrence') AND (pd.name = 'selected instance') AND (SIZEOF(QUERY(
    prd <* USEDIN(pd, 'AUTOMOTIVE_DESIGN.PROPERTY_DEFINITION.DEFINITION') | 
    (prd.name = 'occurrence selection') AND (SIZEOF(QUERY(pdr <* USEDIN(prd, 
    'AUTOMOTIVE_DESIGN.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (
    pdr.used_representation.name = 'selection criteria') AND (SIZEOF(pdr.
    used_representation.items) = 2) AND (SIZEOF(QUERY(i <* pdr.
    used_representation.items | (SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'MEASURE_REPRESENTATION_ITEM', 'AUTOMOTIVE_DESIGN.' + 'VALUE_RANGE'] * 
    TYPEOF(i)) = 1) AND (i.name = 'selection quantity'))) = 1) AND (SIZEOF(
    QUERY(i <* pdr.used_representation.items | ('AUTOMOTIVE_DESIGN.' + 
    'DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND (i.name = 
    'selection control'))) = 1))) = 1))) = 0))) = 0;
  wr5 : SIZEOF(QUERY(pd <* product_definition | (pd.frame_of_reference.name = 
    'part occurrence') AND (pd.name = 'quantified instance') AND (SIZEOF(QUERY(
    ppd <* USEDIN(pd, 'AUTOMOTIVE_DESIGN.PROPERTY_DEFINITION.DEFINITION') | 
    (ppd.name = 'occurrence quantity') AND (SIZEOF(QUERY(pdr <* USEDIN(ppd, 
    'AUTOMOTIVE_DESIGN.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (
    pdr.used_representation.name = 'quantity') AND (SIZEOF(pdr.
    used_representation.items) = 1) AND (SIZEOF(QUERY(i <* pdr.
    used_representation.items | ('AUTOMOTIVE_DESIGN.' + 
    'MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND (i.name = 
    'quantity measure'))) = 1))) = 1))) = 0))) = 0;
  wr6 : SIZEOF(QUERY(pd <* product_definition | (pd.frame_of_reference.name = 
    'part occurrence') AND (pd.name = 'specified instance') AND (SIZEOF(QUERY(
    pdor <* USEDIN(pd, 
    'AUTOMOTIVE_DESIGN.PRODUCT_DEFINITION_OCCURRENCE_RELATIONSHIP.OCCURRENCE'
    ) | 'AUTOMOTIVE_DESIGN.' + 'SPECIFIED_HIGHER_USAGE_OCCURRENCE' IN TYPEOF
    (pdor.occurrence_usage))) = 0))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_process_product_association FOR (process_product_association);
WHERE
  wr1 : SIZEOF(QUERY(ppa <* process_product_association | NOT (ppa.name IN [
    'input', 'output', 'produced output']))) = 0;
  wr2 : SIZEOF(QUERY(ppa <* process_product_association | NOT (ppa.name IN [
    'input', 'output']) OR (SIZEOF(QUERY(ar <* USEDIN(ppa.process, 
    'AUTOMOTIVE_DESIGN.ACTION_RELATIONSHIP.RELATED_ACTION') | ar.name = 
    'process operation occurrence')) = 0))) = 0;
  wr3 : SIZEOF(QUERY(ppa <* process_product_association | (ppa.name <> 
    'produced output') OR ('AUTOMOTIVE_DESIGN.' + 'PRODUCT_DEFINITION' IN 
    TYPEOF(ppa.defined_product)) AND (SIZEOF(QUERY(prpc <* USEDIN(ppa.
    defined_product\product_definition.formation.of_product, 
    'AUTOMOTIVE_DESIGN.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') | prpc.
    name IN ['part', 'tool', 'raw material'])) = 0))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_product_categories_for_tool_part_relationship FOR (
  product_definition_relationship);
WHERE
  wr1 : SIZEOF(QUERY(pdr <* product_definition_relationship | (pdr.name = 
    'tool part relationship') AND ((SIZEOF(QUERY(prpc <* USEDIN(pdr.
    relating_product_definition.formation.of_product, 
    'AUTOMOTIVE_DESIGN.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') | prpc.
    name = 'tool')) < 1) OR (SIZEOF(QUERY(prpc <* USEDIN(pdr.
    related_product_definition.formation.of_product, 
    'AUTOMOTIVE_DESIGN.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') | prpc.
    name = 'part')) < 1)))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_product_category_for_product FOR (product);
WHERE
  wr1 : SIZEOF(QUERY(p <* product | SIZEOF(QUERY(prpc <* USEDIN(p, 
    'AUTOMOTIVE_DESIGN.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') | prpc.
    name IN ['part', 'raw material', 'tool', 'document', 'functionality', 
    'conceptual product', 'alternative solution', 'requirement', 
    'physically realized product', 'tool', 'raw material'])) = 0)) = 0;
  wr2 : SIZEOF(QUERY(p <* product | SIZEOF(QUERY(prpc <* USEDIN(p, 
    'AUTOMOTIVE_DESIGN.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') | prpc.
    name IN ['part', 'raw material', 'tool', 'document', 'functionality', 
    'conceptual product', 'alternative solution', 'requirement', 
    'physically realized product'])) > 1)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_product_definition_context_for_external_properties FOR (
  general_property_association, product_definition);
WHERE
  wr1 : SIZEOF(QUERY(pd <* product_definition | (SIZEOF(QUERY(propd <* USEDIN(
    pd, 'AUTOMOTIVE_DESIGN.PROPERTY_DEFINITION.DEFINITION') | SIZEOF(QUERY(
    gpa <* USEDIN(propd, 
    'AUTOMOTIVE_DESIGN.GENERAL_PROPERTY_ASSOCIATION.DERIVED_DEFINITION') | 
    'AUTOMOTIVE_DESIGN.' + 'EXTERNALLY_DEFINED_GENERAL_PROPERTY' IN TYPEOF(
    gpa.base_definition))) > 0)) > 0) AND (SIZEOF(QUERY(pdca <* USEDIN(pd, 
    'AUTOMOTIVE_DESIGN.PRODUCT_DEFINITION_CONTEXT_ASSOCIATION.DEFINITION')
     | (pdca.frame_of_reference.name = 'external') AND (pdca.role.name = 
    'external'))) = 0))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_product_definition_context_for_product FOR (product_definition,
  product_related_product_category);
WHERE
  wr1 : SIZEOF(QUERY(pd <* product_definition | (pd.frame_of_reference.name IN 
    ['part definition', 'part occurrence']) AND (SIZEOF(QUERY(prpc <* USEDIN(pd
    .formation.of_product, 
    'AUTOMOTIVE_DESIGN.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') | prpc.
    name IN ['part', 'raw material', 'tool'])) = 0))) = 0;
  wr2 : SIZEOF(QUERY(pd <* product_definition | (pd.frame_of_reference.name = 
    'functional definition') AND (SIZEOF(QUERY(prpc <* USEDIN(pd.formation.
    of_product, 
    'AUTOMOTIVE_DESIGN.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') | prpc.
    name = 'functionality')) = 0))) = 0;
  wr3 : SIZEOF(QUERY(pd <* product_definition | (pd.frame_of_reference.name = 
    'conceptual definition') AND (SIZEOF(QUERY(prpc <* USEDIN(pd.formation.
    of_product, 
    'AUTOMOTIVE_DESIGN.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') | prpc.
    name = 'conceptual product')) = 0))) = 0;
  wr4 : SIZEOF(QUERY(pd <* product_definition | (pd.frame_of_reference.name = 
    'alternative definition') AND (SIZEOF(QUERY(prpc <* USEDIN(pd.formation.
    of_product, 
    'AUTOMOTIVE_DESIGN.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') | prpc.
    name = 'alternative solution')) = 0))) = 0;
  wr5 : SIZEOF(QUERY(pd <* product_definition | (pd.frame_of_reference.name = 
    'design constraint definition') AND (SIZEOF(QUERY(prpc <* USEDIN(pd.
    formation.of_product, 
    'AUTOMOTIVE_DESIGN.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') | prpc.
    name = 'requirement')) = 0))) = 0;
  wr6 : SIZEOF(QUERY(pd <* product_definition | (pd.frame_of_reference.name = 
    'physical occurrence') AND (SIZEOF(QUERY(prpc <* USEDIN(pd.formation.
    of_product, 
    'AUTOMOTIVE_DESIGN.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') | prpc.
    name = 'physically realized product')) = 0))) = 0;
  wr7 : SIZEOF(QUERY(pd <* product_definition | (pd.frame_of_reference.name = 
    'physical document definition') AND (SIZEOF(QUERY(prpc <* USEDIN(pd.
    formation.of_product, 
    'AUTOMOTIVE_DESIGN.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') | prpc.
    name = 'document')) = 0))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_product_definition_for_mating_tree FOR (product_definition);
WHERE
  wr1 : SIZEOF(QUERY(pd <* product_definition | (SIZEOF(QUERY(pdca <* USEDIN(pd
    , 'AUTOMOTIVE_DESIGN.PRODUCT_DEFINITION_CONTEXT_ASSOCIATION.DEFINITION')
     | pdca.frame_of_reference.name = 'mating definition')) = 1) AND (SIZEOF(
    QUERY(pdr <* USEDIN(pd, 
    'AUTOMOTIVE_DESIGN.PRODUCT_DEFINITION_RELATIONSHIP.RELATING_PRODUCT_DEFINITION'
    ) | pdr.name = 'mating membership')) <> 2))) = 0;
  wr2 : SIZEOF(QUERY(pd <* product_definition | (SIZEOF(QUERY(pdca <* USEDIN(pd
    , 'AUTOMOTIVE_DESIGN.PRODUCT_DEFINITION_CONTEXT_ASSOCIATION.DEFINITION')
     | pdca.frame_of_reference.name = 'mating definition')) = 1) AND NOT ({1
     <= SIZEOF(QUERY(pdr <* USEDIN(pd, 
    'AUTOMOTIVE_DESIGN.PRODUCT_DEFINITION_RELATIONSHIP.RELATING_PRODUCT_DEFINITION'
    ) | (pdr.name = 'mating membership') AND (pdr.related_product_definition.
    frame_of_reference.name = 'part occurrence'))) <= 2}))) = 0;
  wr3 : SIZEOF(QUERY(pd <* product_definition | (SIZEOF(QUERY(pdca <* USEDIN(pd
    , 'AUTOMOTIVE_DESIGN.PRODUCT_DEFINITION_CONTEXT_ASSOCIATION.DEFINITION')
     | pdca.frame_of_reference.name = 'mating definition')) = 1) AND (SIZEOF(
    QUERY(pdr <* USEDIN(pd, 
    'AUTOMOTIVE_DESIGN.PRODUCT_DEFINITION_RELATIONSHIP.RELATING_PRODUCT_DEFINITION'
    ) | (pdr.name = 'mating membership') AND (SIZEOF(QUERY(pdca <* USEDIN(pdr.
    related_product_definition, 
    'AUTOMOTIVE_DESIGN.PRODUCT_DEFINITION_CONTEXT_ASSOCIATION.DEFINITION')
     | pdca.frame_of_reference.name = 'mating definition')) = 1))) > 1))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_product_definition_substitute FOR (product_definition_substitute
  );
WHERE
  wr1 : SIZEOF(QUERY(pds <* product_definition_substitute | SIZEOF(USEDIN(pds, 
    'AUTOMOTIVE_DESIGN.APPLIED_EFFECTIVITY_ASSIGNMENT.ITEMS')) = 0)) = 0;
  wr2 : SIZEOF(QUERY(pds <* product_definition_substitute | pds.
    substitute_definition.frame_of_reference.name <> 'part occurrence')) = 0;
  wr3 : SIZEOF(QUERY(pds <* product_definition_substitute | (
    'AUTOMOTIVE_DESIGN.' + 'ASSEMBLY_COMPONENT_USAGE' IN TYPEOF(pds.
    context_relationship)) AND (SIZEOF(USEDIN(pds.context_relationship, 
    'AUTOMOTIVE_DESIGN.PRODUCT_DEFINITION_OCCURRENCE_RELATIONSHIP.OCCURRENCE_USAGE'
    )) = 0) AND ('AUTOMOTIVE_DESIGN.' + 'PRODUCT_DEFINITION_RELATIONSHIP' IN
     TYPEOF(pds.context_relationship)) AND (pds.context_relationship.
    related_product_definition.frame_of_reference.name <> 'part occurrence')))
     = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_product_definitions_for_product_definition_relationship FOR (
  assembly_component_usage, product_definition_relationship);
WHERE
  wr1 : SIZEOF(QUERY(pdr <* product_definition_relationship | (pdr.name = 
    'definition usage') AND ((pdr.relating_product_definition.
    frame_of_reference.name <> 'part definition') OR (pdr.
    related_product_definition.frame_of_reference.name <> 'part occurrence'))))
     = 0;
  wr2 : SIZEOF(QUERY(pdr <* product_definition_relationship | (pdr.name IN [
    'geometrical relationship', 'definition replacement']) AND ((pdr.
    relating_product_definition.frame_of_reference.name <> 'part definition') 
    OR (pdr.related_product_definition.frame_of_reference.name <> 
    'part definition')))) = 0;
  wr3 : SIZEOF(QUERY(pdr <* product_definition_relationship | (
    'AUTOMOTIVE_DESIGN.' + 'ASSEMBLY_COMPONENT_USAGE' IN TYPEOF(pdr)) AND ((
    pdr.relating_product_definition.frame_of_reference.name <> 
    'part definition') OR (pdr.related_product_definition.frame_of_reference.
    name <> 'part definition')) AND ((pdr.relating_product_definition.
    frame_of_reference.name <> 'physical occurrence') OR (pdr.
    related_product_definition.frame_of_reference.name <> 'physical occurrence'
    )))) = 0;
  wr4 : SIZEOF(QUERY(pdr <* product_definition_relationship | (
    'AUTOMOTIVE_DESIGN.' + 'ASSEMBLY_COMPONENT_USAGE' IN TYPEOF(pdr)) AND (
    pdr.name = 'selected instance usage') AND ((pdr.relating_product_definition
    .frame_of_reference.name <> 'part definition') OR (pdr.
    related_product_definition.frame_of_reference.name <> 'part definition'))))
     = 0;
  wr5 : SIZEOF(QUERY(pdr <* product_definition_relationship | (pdr.name = 
    'physical realization') AND ((pdr.relating_product_definition.
    frame_of_reference.name <> 'part definition') OR (pdr.
    related_product_definition.frame_of_reference.name <> 'physical occurrence'
    )))) = 0;
  wr6 : SIZEOF(QUERY(pdr <* product_definition_relationship | (pdr.name = 
    'physical occurrence usage') AND (NOT ('AUTOMOTIVE_DESIGN.' + 
    'ASSEMBLY_COMPONENT_USAGE' IN TYPEOF(pdr)) OR (pdr.
    relating_product_definition.frame_of_reference.name <> 
    'physical occurrence') OR (pdr.related_product_definition.
    frame_of_reference.name <> 'physical occurrence')))) = 0;
  wr7 : SIZEOF(QUERY(pdr <* product_definition_relationship | (pdr.name = 
    'solution alternative definition') AND (NOT (pdr.
    relating_product_definition.frame_of_reference.name IN [
    'alternative definition', 'functional definition', 'conceptual definition']
    ) OR (pdr.related_product_definition.frame_of_reference.name <> 
    'alternative definition')))) = 0;
  wr8 : SIZEOF(QUERY(pdr <* product_definition_relationship | (pdr.name = 
    'collection membership') AND ((pdr.relating_product_definition.
    frame_of_reference.name <> 'part definition') OR (pdr.
    related_product_definition.frame_of_reference.name <> 'part occurrence') OR
     (SIZEOF(QUERY(pdca <* USEDIN(pdr.relating_product_definition, 
    'AUTOMOTIVE_DESIGN.PRODUCT_DEFINITION_CONTEXT_ASSOCIATION.DEFINITION')
     | (pdca.role.name = 'part definition type') AND (pdca.frame_of_reference.
    name = 'collection definition'))) = 0)))) = 0;
  wr9 : SIZEOF(QUERY(pdr <* product_definition_relationship | (pdr.name = 
    'design constraint association') AND ((pdr.relating_product_definition.
    frame_of_reference.name <> 'design constraint definition') OR NOT (pdr.
    related_product_definition.frame_of_reference.name IN [
    'alternative definition', 'functional definition', 'conceptual definition']
    )))) = 0;
  wr10 : SIZEOF(QUERY(pdr <* product_definition_relationship | (pdr.name = 
    'final specification') AND (NOT (pdr.relating_product_definition.name IN [
    'final', 'technical final', 'supplier final', 'technical supplier final']) 
    OR (pdr.relating_product_definition.frame_of_reference.name <> 
    'alternative definition') OR NOT (pdr.related_product_definition.
    frame_of_reference.name IN ['part definition', 'physical occurrence']))))
     = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_properties_of_document_file FOR (document_file);
WHERE
  wr1 : SIZEOF(QUERY(df <* document_file | SIZEOF(QUERY(pd <* USEDIN(df, 
    'AUTOMOTIVE_DESIGN.PROPERTY_DEFINITION.DEFINITION') | pd.name = 
    'document property')) > 1)) = 0;
  wr2 : SIZEOF(QUERY(df <* document_file | SIZEOF(QUERY(rt <* df.
    representation_types | ('AUTOMOTIVE_DESIGN.' + 
    'DOCUMENT_REPRESENTATION_TYPE' IN TYPEOF(rt)) AND (rt.name IN ['digital', 
    'physical']))) = 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_properties_of_document_representation FOR (product_definition);
WHERE
  wr1 : SIZEOF(QUERY(pd <* product_definition | (pd.frame_of_reference.name IN 
    ['physical document definition', 'digital document definition',
    'physical model occurrence']) AND (SIZEOF(QUERY(pd1 <* USEDIN(pd, 
    'AUTOMOTIVE_DESIGN.PROPERTY_DEFINITION.DEFINITION') | pd1.name = 
    'document property')) > 1))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_representation_for_document_content_property FOR (representation
  , representation_item);
WHERE
  wr1 : SIZEOF(QUERY(r <* representation | (r.name = 'document content') AND ((
    SIZEOF(r.items) < 1) OR (SIZEOF(r.items) > 3)))) = 0;
  wr2 : SIZEOF(QUERY(ri <* representation_item | (SIZEOF(QUERY(r <* USEDIN(ri, 
    'AUTOMOTIVE_DESIGN.REPRESENTATION.ITEMS') | r.name = 'document content')
    ) > 0) AND NOT (ri.name IN ['detail level', 'geometry type', 
    'real world scale']))) = 0;
  wr3 : SIZEOF(QUERY(r <* representation | (r.name = 'document content') AND (
    SIZEOF(QUERY(i <* r.items | (i.name = 'detail level') AND (
    'AUTOMOTIVE_DESIGN.' + 'DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(i))))
     > 1))) = 0;
  wr4 : SIZEOF(QUERY(r <* representation | (r.name = 'document content') AND (
    SIZEOF(QUERY(i <* r.items | (i.name = 'geometry type') AND (
    'AUTOMOTIVE_DESIGN.' + 'DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(i))))
     > 1))) = 0;
  wr5 : SIZEOF(QUERY(r <* representation | (r.name = 'document content') AND (
    SIZEOF(QUERY(i <* r.items | (i.name = 'real world scale') AND (SIZEOF([
    'AUTOMOTIVE_DESIGN.' + 'MEASURE_REPRESENTATION_ITEM', 
    'AUTOMOTIVE_DESIGN.' + 'VALUE_REPRESENTATION_ITEM'] * TYPEOF(i)) = 1)))
     > 1))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_representation_for_document_creation_property FOR (representation
  , representation_item);
WHERE
  wr1 : SIZEOF(QUERY(r <* representation | (r.name = 'document creation') AND (
    (SIZEOF(r.items) < 1) OR (SIZEOF(r.items) > 3)))) = 0;
  wr2 : SIZEOF(QUERY(ri <* representation_item | (SIZEOF(QUERY(r <* USEDIN(ri, 
    'AUTOMOTIVE_DESIGN.REPRESENTATION.ITEMS') | r.name = 'document creation'
    )) > 0) AND NOT (ri.name IN ['creating interface', 'creating system', 
    'operating system']))) = 0;
  wr3 : SIZEOF(QUERY(r <* representation | (r.name = 'document creation') AND (
    SIZEOF(QUERY(i <* r.items | (i.name = 'creating interface') AND (
    'AUTOMOTIVE_DESIGN.' + 'DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(i))))
     > 1))) = 0;
  wr4 : SIZEOF(QUERY(r <* representation | (r.name = 'document creation') AND (
    SIZEOF(QUERY(i <* r.items | (i.name = 'creating system') AND (
    'AUTOMOTIVE_DESIGN.' + 'DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(i))))
     <> 1))) = 0;
  wr5 : SIZEOF(QUERY(r <* representation | (r.name = 'document creation') AND (
    SIZEOF(QUERY(i <* r.items | (i.name = 'operating system') AND (
    'AUTOMOTIVE_DESIGN.' + 'DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(i))))
     > 1))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_representation_for_document_format_property FOR (representation,
  representation_item);
WHERE
  wr1 : SIZEOF(QUERY(r <* representation | (r.name = 'document format') AND ((
    SIZEOF(r.items) < 1) OR (SIZEOF(r.items) > 3)))) = 0;
  wr2 : SIZEOF(QUERY(ri <* representation_item | (SIZEOF(QUERY(r <* USEDIN(ri, 
    'AUTOMOTIVE_DESIGN.REPRESENTATION.ITEMS') | r.name = 'document format'))
     > 0) AND NOT (ri.name IN ['character code', 'data format', 'size format'])
    )) = 0;
  wr3 : SIZEOF(QUERY(r <* representation | (r.name = 'document format') AND (
    SIZEOF(QUERY(i <* r.items | (i.name = 'character code') AND (
    'AUTOMOTIVE_DESIGN.' + 'DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(i))))
     > 1))) = 0;
  wr4 : SIZEOF(QUERY(r <* representation | (r.name = 'document format') AND (
    SIZEOF(QUERY(i <* r.items | (i.name = 'data format') AND (
    'AUTOMOTIVE_DESIGN.' + 'DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(i))))
     > 1))) = 0;
  wr5 : SIZEOF(QUERY(r <* representation | (r.name = 'document format') AND (
    SIZEOF(QUERY(i <* r.items | (i.name = 'size format') AND (
    'AUTOMOTIVE_DESIGN.' + 'PLANAR_EXTENT' IN TYPEOF(i)))) > 1))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_representation_for_document_properties FOR (property_definition,
  representation, representation_context);
WHERE
  wr1 : SIZEOF(QUERY(pd <* property_definition | (pd.name = 'document property'
    ) AND (SIZEOF(QUERY(pdr <* USEDIN(pd, 
    'AUTOMOTIVE_DESIGN.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 
    NOT (pdr.used_representation.name IN ['document content', 
    'document creation', 'document format', 'document size']))) > 0))) = 0;
  wr2 : SIZEOF(QUERY(r <* representation | (r.name IN ['document content', 
    'document creation', 'document format', 'document size']) AND (SIZEOF(
    QUERY(pdr <* USEDIN(r, 
    'AUTOMOTIVE_DESIGN.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION'
    ) | ('AUTOMOTIVE_DESIGN.' + 'PROPERTY_DEFINITION' IN TYPEOF(pdr.
    definition)) AND (pdr.definition.name = 'document property'))) = 0))) = 0;
  wr3 : SIZEOF(QUERY(r <* representation | (r.name IN ['document content', 
    'document creation', 'document format', 'document size']) AND (r.
    context_of_items.context_type <> 'document parameters'))) = 0;
  wr4 : SIZEOF(QUERY(rc <* representation_context | (rc.context_type = 
    'document parameters') AND (SIZEOF(QUERY(r <* USEDIN(rc, 
    'AUTOMOTIVE_DESIGN.REPRESENTATION.CONTEXT_OF_ITEMS') | NOT (r.name IN [
    'document content', 'document creation', 'document format', 'document size'
    ]))) > 0))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_representation_for_document_size_property FOR (representation,
  representation_item);
WHERE
  wr1 : SIZEOF(QUERY(r <* representation | (r.name = 'document size') AND ((
    SIZEOF(r.items) < 1) OR (SIZEOF(r.items) > 2)))) = 0;
  wr2 : SIZEOF(QUERY(ri <* representation_item | (SIZEOF(QUERY(r <* USEDIN(ri, 
    'AUTOMOTIVE_DESIGN.REPRESENTATION.ITEMS') | r.name = 'document size'))
     > 0) AND NOT (ri.name IN ['file size', 'page count']))) = 0;
  wr3 : SIZEOF(QUERY(r <* representation | (r.name = 'document size') AND (
    SIZEOF(QUERY(i <* r.items | (i.name = 'file size') AND (SIZEOF([
    'AUTOMOTIVE_DESIGN.' + 'MEASURE_REPRESENTATION_ITEM', 
    'AUTOMOTIVE_DESIGN.' + 'VALUE_RANGE', 'AUTOMOTIVE_DESIGN.' + 
    'VALUE_REPRESENTATION_ITEM'] * TYPEOF(i)) = 1))) > 1))) = 0;
  wr4 : SIZEOF(QUERY(r <* representation | (r.name = 'document size') AND (
    SIZEOF(QUERY(i <* r.items | (i.name = 'page count') AND (SIZEOF([
    'AUTOMOTIVE_DESIGN.' + 'MEASURE_REPRESENTATION_ITEM', 
    'AUTOMOTIVE_DESIGN.' + 'VALUE_RANGE', 'AUTOMOTIVE_DESIGN.' + 
    'VALUE_REPRESENTATION_ITEM'] * TYPEOF(i)) = 1))) > 1))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_representation_for_surface_condition FOR (
  property_definition_representation);
WHERE
  wr1 : SIZEOF(QUERY(pdr <* property_definition_representation | (
    'AUTOMOTIVE_DESIGN_LF.' + 'PROPERTY_DEFINITION' IN TYPEOF(pdr.definition)) 
    AND NOT surface_condition_correlation(pdr.definition, pdr.
    used_representation))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_representation_item_for_hybrid_geometric_model_3d FOR (
  shape_representation);
WHERE
  wr1 : SIZEOF(QUERY(sr <* shape_representation | (sr.name = 
    'hybrid 3d shape representation') AND (SIZEOF(QUERY(i <* sr.items | NOT (
    'AUTOMOTIVE_DESIGN.' + 'GEOMETRIC_REPRESENTATION_ITEM' IN TYPEOF(i))))
     > 0))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_treatment_result FOR (representation);
WHERE
  wr1 : (SIZEOF(QUERY(r <* representation | (r.name = 'treatment result') AND (
    SIZEOF(r.items) > 2))) = 0) AND (SIZEOF(QUERY(r <* representation | (r.name
     = 'treatment result') AND (SIZEOF(QUERY(i <* r.items | NOT (
    'AUTOMOTIVE_DESIGN.' + 'DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(i))))
     > 0))) = 0);
  wr2 : SIZEOF(QUERY(r <* representation | (r.name = 'treatment result') AND (
    SIZEOF(QUERY(i <* r.items | i.name = 'result')) = 0))) = 0;
  wr3 : SIZEOF(QUERY(r <* representation | (r.name = 'treatment result') AND (
    SIZEOF(QUERY(i <* r.items | i.name = 'purpose')) > 1))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_version_assignment_for_action FOR (action);
WHERE
  wr1 : SIZEOF(QUERY(ent <* action | SIZEOF(QUERY(ia <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.APPLIED_IDENTIFICATION_ASSIGNMENT.ITEMS') | ia.role.
    name = 'version')) > 1)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_version_assignment_for_action_directive FOR (action_directive);
WHERE
  wr1 : SIZEOF(QUERY(ent <* action_directive | SIZEOF(QUERY(ia <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.APPLIED_IDENTIFICATION_ASSIGNMENT.ITEMS') | ia.role.
    name = 'version')) > 1)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_version_assignment_for_action_method FOR (action_method);
WHERE
  wr1 : SIZEOF(QUERY(ent <* action_method | SIZEOF(QUERY(ia <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.APPLIED_IDENTIFICATION_ASSIGNMENT.ITEMS') | ia.role.
    name = 'version')) > 1)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_version_assignment_for_applied_identification_assignment FOR (
  applied_identification_assignment);
WHERE
  wr1 : SIZEOF(QUERY(ent <* applied_identification_assignment | SIZEOF(QUERY(ia
     <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.APPLIED_IDENTIFICATION_ASSIGNMENT.ITEMS') | ia.role.
    name = 'version')) > 1)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_version_assignment_for_class FOR (class);
WHERE
  wr1 : SIZEOF(QUERY(ent <* class | SIZEOF(QUERY(ia <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.APPLIED_IDENTIFICATION_ASSIGNMENT.ITEMS') | ia.role.
    name = 'version')) > 1)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_version_assignment_for_configuration_item FOR (configuration_item
  );
WHERE
  wr1 : SIZEOF(QUERY(ent <* configuration_item | SIZEOF(QUERY(ia <* USEDIN(ent
    , 'AUTOMOTIVE_DESIGN.APPLIED_IDENTIFICATION_ASSIGNMENT.ITEMS') | ia.role
    .name = 'version')) > 1)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_version_assignment_for_document_file FOR (document_file);
WHERE
  wr1 : SIZEOF(QUERY(ent <* document_file | SIZEOF(QUERY(ia <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.APPLIED_IDENTIFICATION_ASSIGNMENT.ITEMS') | ia.role.
    name = 'version')) > 1)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_version_assignment_for_draughting_model FOR (draughting_model);
WHERE
  wr1 : SIZEOF(QUERY(ent <* draughting_model | SIZEOF(QUERY(ia <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.APPLIED_IDENTIFICATION_ASSIGNMENT.ITEMS') | ia.role.
    name = 'version')) > 1)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_version_assignment_for_effectivity FOR (effectivity);
WHERE
  wr1 : SIZEOF(QUERY(ent <* effectivity | SIZEOF(QUERY(ia <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.APPLIED_IDENTIFICATION_ASSIGNMENT.ITEMS') | ia.role.
    name = 'version')) > 1)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_version_assignment_for_general_property FOR (general_property);
WHERE
  wr1 : SIZEOF(QUERY(ent <* general_property | SIZEOF(QUERY(ia <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.APPLIED_IDENTIFICATION_ASSIGNMENT.ITEMS') | ia.role.
    name = 'version')) > 1)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_version_assignment_for_mechanical_design_geometric_presentation_representation
   FOR (mechanical_design_geometric_presentation_representation);
WHERE
  wr1 : SIZEOF(QUERY(ent <* 
    mechanical_design_geometric_presentation_representation | SIZEOF(QUERY(ia
     <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.APPLIED_IDENTIFICATION_ASSIGNMENT.ITEMS') | ia.role.
    name = 'version')) > 1)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_version_assignment_for_presentation_area FOR (presentation_area);
WHERE
  wr1 : SIZEOF(QUERY(ent <* presentation_area | SIZEOF(QUERY(ia <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.APPLIED_IDENTIFICATION_ASSIGNMENT.ITEMS') | ia.role.
    name = 'version')) > 1)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_version_assignment_for_product_concept FOR (product_concept);
WHERE
  wr1 : SIZEOF(QUERY(ent <* product_concept | SIZEOF(QUERY(ia <* USEDIN(ent, 
    'AUTOMOTIVE_DESIGN.APPLIED_IDENTIFICATION_ASSIGNMENT.ITEMS') | ia.role.
    name = 'version')) > 1)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_version_assignment_for_product_concept_feature FOR (
  product_concept_feature);
WHERE
  wr1 : SIZEOF(QUERY(ent <* product_concept_feature | SIZEOF(QUERY(ia <* USEDIN
    (ent, 'AUTOMOTIVE_DESIGN.APPLIED_IDENTIFICATION_ASSIGNMENT.ITEMS') | ia.
    role.name = 'version')) > 1)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_version_assignment_for_shape_representation FOR (
  shape_representation);
WHERE
  wr1 : SIZEOF(QUERY(ent <* shape_representation | SIZEOF(QUERY(ia <* USEDIN(
    ent, 'AUTOMOTIVE_DESIGN.APPLIED_IDENTIFICATION_ASSIGNMENT.ITEMS') | ia.
    role.name = 'version')) > 1)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_viewing_plane_usage FOR (geometric_tolerance);
WHERE
  wr1 : SIZEOF(QUERY(gt <* geometric_tolerance | SIZEOF(QUERY(sar <* USEDIN(gt.
    toleranced_shape_aspect, 
    'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') | 
    sar.name = 'affected plane association')) > 1)) = 0;
  wr2 : SIZEOF(QUERY(gt <* geometric_tolerance | SIZEOF(QUERY(sar <* USEDIN(gt.
    toleranced_shape_aspect, 
    'AUTOMOTIVE_DESIGN.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') | (
    sar.name = 'affected plane association') AND NOT (SIZEOF([
    'AUTOMOTIVE_DESIGN.' + 'LINE_PROFILE_TOLERANCE', 'AUTOMOTIVE_DESIGN.'
     + 'PARALLELISM_TOLERANCE', 'AUTOMOTIVE_DESIGN.' + 
    'PERPENDICULARITY_TOLERANCE', 'AUTOMOTIVE_DESIGN.' + 
    'POSITION_TOLERANCE', 'AUTOMOTIVE_DESIGN.' + 'STRAIGHTNESS_TOLERANCE', 
    'AUTOMOTIVE_DESIGN.' + 'SYMMETRY_TOLERANCE'] * TYPEOF(gt)) <> 1))) > 0))
     = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE restrict_zone_boundary FOR (tolerance_zone_definition);
WHERE
  wr1 : SIZEOF(QUERY(tzd <* tolerance_zone_definition | SIZEOF(tzd.boundaries)
     > 2)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE retention_requires_retention_assignment FOR (retention);
WHERE
  wr1 : SIZEOF(QUERY(r <* retention | SIZEOF(QUERY(aa <* USEDIN(r, 
    'AUTOMOTIVE_DESIGN.ACTION_ASSIGNMENT.ASSIGNED_ACTION') | (
    'AUTOMOTIVE_DESIGN.' + 'APPLIED_ACTION_ASSIGNMENT' IN TYPEOF(aa)) AND (
    aa.role.name = 'retention'))) = 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE security_classification_requires_security_classification_assignment FOR (
  security_classification);
WHERE
  wr1 : SIZEOF(QUERY(sc <* security_classification | SIZEOF(USEDIN(sc, 
    'AUTOMOTIVE_DESIGN.SECURITY_CLASSIFICATION_ASSIGNMENT.ASSIGNED_SECURITY_CLASSIFICATION'
    )) = 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE selected_instance_usage_requires_representation FOR (
  assembly_component_usage, representation);
WHERE
  wr1 : SIZEOF(QUERY(acr <* assembly_component_usage | (acr.name = 
    'selected instance usage') AND (SIZEOF(QUERY(pd <* USEDIN(acr, 
    'AUTOMOTIVE_DESIGN.PROPERTY_DEFINITION.DEFINITION') | (pd.name = 
    'occurrence selection') AND (SIZEOF(QUERY(pdr <* USEDIN(pd, 
    'AUTOMOTIVE_DESIGN.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (
    pdr.used_representation.name = 'selection criteria') AND (SIZEOF(pdr.
    used_representation.items) = 2) AND (SIZEOF(QUERY(i <* pdr.
    used_representation.items | (SIZEOF(['AUTOMOTIVE_DESIGN.' + 
    'MEASURE_REPRESENTATION_ITEM', 'AUTOMOTIVE_DESIGN.' + 'VALUE_RANGE'] * 
    TYPEOF(i)) = 1) AND (i.name = 'selection quantity'))) = 1) AND (SIZEOF(
    QUERY(i <* pdr.used_representation.items | ('AUTOMOTIVE_DESIGN.' + 
    'DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND (i.name = 
    'selection control'))) = 1))) > 0))) = 0))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE sheets_belong_to_one_drawing FOR (drawing_sheet_revision);
WHERE
  wr1 : SIZEOF(QUERY(dsr <* drawing_sheet_revision | SIZEOF(QUERY(dsru <* 
    USEDIN(dsr, 'AUTOMOTIVE_DESIGN.AREA_IN_SET.AREA') | 
    'AUTOMOTIVE_DESIGN.' + 'DRAWING_SHEET_REVISION_USAGE' IN TYPEOF(dsru)))
     <> 1)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE styled_curve FOR (styled_item);
WHERE
  wr1 : SIZEOF(QUERY(si <* styled_item | ('AUTOMOTIVE_DESIGN.' + 'CURVE' IN 
    TYPEOF(si.item)) AND (SIZEOF(QUERY(psa <* si.styles | SIZEOF(QUERY(cs <* 
    psa.styles | 'AUTOMOTIVE_DESIGN.' + 'CURVE_STYLE' IN TYPEOF(cs))) > 0))
     <> 1))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE subtype_exclusiveness_action FOR (action);
WHERE
  wr1 : SIZEOF(QUERY(a <* action | NOT type_check_function(a, [
    'AUTOMOTIVE_DESIGN.' + 'ELEMENT_DELIVERY', 'AUTOMOTIVE_DESIGN.' + 
    'EXECUTED_ACTION', 'AUTOMOTIVE_DESIGN.' + 'PROCESS_PLAN', 
    'AUTOMOTIVE_DESIGN.' + 'PRODUCT_DEFINITION_PROCESS', 
    'AUTOMOTIVE_DESIGN.' + 'PROPERTY_PROCESS', 'AUTOMOTIVE_DESIGN.' + 
    'RETENTION'], 3))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE subtype_exclusiveness_characterized_object FOR (characterized_object);
WHERE
  wr1 : SIZEOF(QUERY(co <* characterized_object | NOT type_check_function(co, [
    'AUTOMOTIVE_DESIGN.' + 'CHARACTERIZED_CLASS', 'AUTOMOTIVE_DESIGN.' + 
    'DOCUMENT_FILE', 'AUTOMOTIVE_DESIGN.' + 'FEATURE_COMPONENT_DEFINITION', 
    'AUTOMOTIVE_DESIGN.' + 'FEATURE_DEFINITION', 'AUTOMOTIVE_DESIGN.' + 
    'PRODUCT_CLASS', 'AUTOMOTIVE_DESIGN.' + 'PRODUCT_IDENTIFICATION'], 3)))
     = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE subtype_exclusiveness_classification_assignment FOR (
  classification_assignment);
WHERE
  wr1 : SIZEOF(QUERY(ca <* classification_assignment | NOT type_check_function(
    ca, ['AUTOMOTIVE_DESIGN.' + 'APPLIED_CLASSIFICATION_ASSIGNMENT', 
    'AUTOMOTIVE_DESIGN.' + 'LANGUAGE_ASSIGNMENT'], 3))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE subtype_exclusiveness_colour FOR (colour);
WHERE
  wr1 : SIZEOF(QUERY(c <* colour | NOT type_check_function(c, [
    'AUTOMOTIVE_DESIGN.' + 'COLOUR_SPECIFICATION', 'AUTOMOTIVE_DESIGN.'
     + 'PRE_DEFINED_COLOUR'], 3))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE subtype_exclusiveness_compound_representation_item FOR (
  compound_representation_item);
WHERE
  wr1 : SIZEOF(QUERY(cri <* compound_representation_item | NOT 
    type_check_function(cri, ['AUTOMOTIVE_DESIGN.' + 
    'DEFAULT_TOLERANCE_TABLE_CELL', 'AUTOMOTIVE_DESIGN.' + 'VALUE_RANGE'], 3
    ))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE subtype_exclusiveness_document_reference FOR (document_reference);
WHERE
  wr1 : SIZEOF(QUERY(dr <* document_reference | NOT type_check_function(dr, [
    'AUTOMOTIVE_DESIGN.' + 'APPLIED_DOCUMENT_REFERENCE', 
    'AUTOMOTIVE_DESIGN.' + 'DRAUGHTING_SPECIFICATION_REFERENCE'], 3))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE subtype_exclusiveness_effectivity FOR (effectivity);
WHERE
  wr1 : SIZEOF(QUERY(e <* effectivity | NOT type_check_function(e, [
    'AUTOMOTIVE_DESIGN.' + 'PRODUCT_DEFINITION_EFFECTIVITY', 
    'AUTOMOTIVE_DESIGN.' + 'TIME_INTERVAL_BASED_EFFECTIVITY'], 3))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE subtype_exclusiveness_effectivity_assignment FOR (effectivity_assignment);
WHERE
  wr1 : SIZEOF(QUERY(ea <* effectivity_assignment | NOT type_check_function(ea
    , ['AUTOMOTIVE_DESIGN.' + 'APPLIED_EFFECTIVITY_ASSIGNMENT', 
    'AUTOMOTIVE_DESIGN.' + 'APPLIED_INEFFECTIVITY_ASSIGNMENT', 
    'AUTOMOTIVE_DESIGN.' + 'CONFIGURED_EFFECTIVITY_ASSIGNMENT'], 3))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE subtype_exclusiveness_effectivity_context_assignment FOR (
  effectivity_context_assignment);
WHERE
  wr1 : SIZEOF(QUERY(eca <* effectivity_context_assignment | NOT 
    type_check_function(eca, ['AUTOMOTIVE_DESIGN.' + 
    'CLASS_USAGE_EFFECTIVITY_CONTEXT_ASSIGNMENT', 'AUTOMOTIVE_DESIGN.' + 
    'CONFIGURED_EFFECTIVITY_CONTEXT_ASSIGNMENT'], 3))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE subtype_exclusiveness_externally_defined_item FOR (externally_defined_item
  );
WHERE
  wr1 : SIZEOF(QUERY(edi <* externally_defined_item | NOT type_check_function(
    edi, ['AUTOMOTIVE_DESIGN.' + 'EXTERNALLY_DEFINED_CHARACTER_GLYPH', 
    'AUTOMOTIVE_DESIGN.' + 'EXTERNALLY_DEFINED_CLASS', 
    'AUTOMOTIVE_DESIGN.' + 'EXTERNALLY_DEFINED_CURVE_FONT', 
    'AUTOMOTIVE_DESIGN.' + 'EXTERNALLY_DEFINED_FEATURE_DEFINITION', 
    'AUTOMOTIVE_DESIGN.' + 'EXTERNALLY_DEFINED_GENERAL_PROPERTY', 
    'AUTOMOTIVE_DESIGN.' + 'EXTERNALLY_DEFINED_HATCH_STYLE', 
    'AUTOMOTIVE_DESIGN.' + 'EXTERNALLY_DEFINED_STYLE', 
    'AUTOMOTIVE_DESIGN.' + 'EXTERNALLY_DEFINED_SYMBOL', 
    'AUTOMOTIVE_DESIGN.' + 'EXTERNALLY_DEFINED_TEXT_FONT', 
    'AUTOMOTIVE_DESIGN.' + 'EXTERNALLY_DEFINED_TILE_STYLE'], 3))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE subtype_exclusiveness_feature_component_relationship FOR (
  feature_component_relationship);
WHERE
  wr1 : SIZEOF(QUERY(fcr <* feature_component_relationship | NOT 
    type_check_function(fcr, ['AUTOMOTIVE_DESIGN.' + 
    'PATTERN_OFFSET_MEMBERSHIP', 'AUTOMOTIVE_DESIGN.' + 
    'PATTERN_OMIT_MEMBERSHIP'], 3))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE subtype_exclusiveness_feature_definition FOR (feature_definition);
WHERE
  wr1 : SIZEOF(QUERY(fd <* feature_definition | NOT type_check_function(fd, [
    'AUTOMOTIVE_DESIGN.' + 'BARRING_HOLE', 'AUTOMOTIVE_DESIGN.' + 'BEAD'
    , 'AUTOMOTIVE_DESIGN.' + 'BOSS', 'AUTOMOTIVE_DESIGN.' + 
    'COMPOUND_FEATURE', 'AUTOMOTIVE_DESIGN.' + 
    'EXTERNALLY_DEFINED_FEATURE_DEFINITION', 'AUTOMOTIVE_DESIGN.' + 
    'FEATURE_IN_PANEL', 'AUTOMOTIVE_DESIGN.' + 'GENERAL_FEATURE', 
    'AUTOMOTIVE_DESIGN.' + 'HOLE_IN_PANEL', 'AUTOMOTIVE_DESIGN.' + 
    'JOGGLE', 'AUTOMOTIVE_DESIGN.' + 'LOCATOR', 'AUTOMOTIVE_DESIGN.' + 
    'POCKET', 'AUTOMOTIVE_DESIGN.' + 'REPLICATE_FEATURE', 
    'AUTOMOTIVE_DESIGN.' + 'RIB', 'AUTOMOTIVE_DESIGN.' + 'ROUND_HOLE', 
    'AUTOMOTIVE_DESIGN.' + 'SLOT', 'AUTOMOTIVE_DESIGN.' + 'THREAD'], 3)))
     = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE subtype_exclusiveness_founded_item FOR (founded_item);
WHERE
  wr1 : SIZEOF(QUERY(fi <* founded_item | NOT type_check_function(fi, [
    'AUTOMOTIVE_DESIGN.' + 'COMPOSITE_CURVE_SEGMENT', 
    'AUTOMOTIVE_DESIGN.' + 'SURFACE_PATCH', 'AUTOMOTIVE_DESIGN.' + 
    'VIEW_VOLUME'], 3))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE subtype_exclusiveness_geometric_tolerance FOR (geometric_tolerance);
WHERE
  wr1 : SIZEOF(QUERY(gt <* geometric_tolerance | NOT type_check_function(gt, [
    'AUTOMOTIVE_DESIGN.' + 'ANGULARITY_TOLERANCE', 'AUTOMOTIVE_DESIGN.'
     + 'CIRCULAR_RUNOUT_TOLERANCE', 'AUTOMOTIVE_DESIGN.' + 
    'COAXIALITY_TOLERANCE', 'AUTOMOTIVE_DESIGN.' + 'CONCENTRICITY_TOLERANCE'
    , 'AUTOMOTIVE_DESIGN.' + 'CYLINDRICITY_TOLERANCE', 
    'AUTOMOTIVE_DESIGN.' + 'FLATNESS_TOLERANCE', 'AUTOMOTIVE_DESIGN.' + 
    'LINE_PROFILE_TOLERANCE', 'AUTOMOTIVE_DESIGN.' + 'PARALLELISM_TOLERANCE'
    , 'AUTOMOTIVE_DESIGN.' + 'PERPENDICULARITY_TOLERANCE', 
    'AUTOMOTIVE_DESIGN.' + 'POSITION_TOLERANCE', 'AUTOMOTIVE_DESIGN.' + 
    'ROUNDNESS_TOLERANCE', 'AUTOMOTIVE_DESIGN.' + 'STRAIGHTNESS_TOLERANCE', 
    'AUTOMOTIVE_DESIGN.' + 'SURFACE_PROFILE_TOLERANCE', 
    'AUTOMOTIVE_DESIGN.' + 'SYMMETRY_TOLERANCE', 'AUTOMOTIVE_DESIGN.' + 
    'TOTAL_RUNOUT_TOLERANCE'], 3))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE subtype_exclusiveness_group FOR (group);
WHERE
  wr1 : SIZEOF(QUERY(g <* group | NOT type_check_function(g, [
    'AUTOMOTIVE_DESIGN.' + 'CLASS', 'AUTOMOTIVE_DESIGN.' + 'CLASS_SYSTEM'
    , 'AUTOMOTIVE_DESIGN.' + 'LANGUAGE', 'AUTOMOTIVE_DESIGN.' + 
    'PRODUCT_CONCEPT_FEATURE_CATEGORY', 'AUTOMOTIVE_DESIGN.' + 
    'REP_ITEM_GROUP'], 3))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE subtype_exclusiveness_group_assignment FOR (group_assignment);
WHERE
  wr1 : SIZEOF(QUERY(ga <* group_assignment | NOT type_check_function(ga, [
    'AUTOMOTIVE_DESIGN.' + 'APPLIED_GROUP_ASSIGNMENT', 
    'AUTOMOTIVE_DESIGN.' + 'PRODUCT_CONCEPT_FEATURE_CATEGORY_USAGE'], 3)))
     = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE subtype_exclusiveness_identification_assignment FOR (
  identification_assignment);
WHERE
  wr1 : SIZEOF(QUERY(ia <* identification_assignment | NOT type_check_function(
    ia, ['AUTOMOTIVE_DESIGN.' + 'APPLIED_IDENTIFICATION_ASSIGNMENT', 
    'AUTOMOTIVE_DESIGN.' + 'EXTERNAL_IDENTIFICATION_ASSIGNMENT'], 3))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE subtype_exclusiveness_mapped_item FOR (mapped_item);
WHERE
  wr1 : SIZEOF(QUERY(mi <* mapped_item | NOT type_check_function(mi, [
    'AUTOMOTIVE_DESIGN.' + 'ANNOTATION_SYMBOL', 'AUTOMOTIVE_DESIGN.' + 
    'ANNOTATION_TEXT', 'AUTOMOTIVE_DESIGN.' + 'ANNOTATION_TEXT_CHARACTER', 
    'AUTOMOTIVE_DESIGN.' + 'CAMERA_IMAGE', 'AUTOMOTIVE_DESIGN.' + 
    'DIMENSION_TEXT_ASSOCIATIVITY'], 3))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE subtype_exclusiveness_pre_defined_item FOR (pre_defined_item);
WHERE
  wr1 : SIZEOF(QUERY(pdi <* pre_defined_item | NOT type_check_function(pdi, [
    'AUTOMOTIVE_DESIGN.' + 'KNOWN_SOURCE', 'AUTOMOTIVE_DESIGN.' + 
    'PRE_DEFINED_COLOUR', 'AUTOMOTIVE_DESIGN.' + 'PRE_DEFINED_CURVE_FONT', 
    'AUTOMOTIVE_DESIGN.' + 'PRE_DEFINED_MARKER', 'AUTOMOTIVE_DESIGN.' + 
    'PRE_DEFINED_PRESENTATION_STYLE', 'AUTOMOTIVE_DESIGN.' + 
    'PRE_DEFINED_SYMBOL', 'AUTOMOTIVE_DESIGN.' + 'PRE_DEFINED_TEXT_FONT'], 3
    ))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE subtype_exclusiveness_pre_defined_symbol FOR (pre_defined_symbol);
WHERE
  wr1 : SIZEOF(QUERY(pds <* pre_defined_symbol | NOT type_check_function(pds, [
    'AUTOMOTIVE_DESIGN.' + 'PRE_DEFINED_DIMENSION_SYMBOL', 
    'AUTOMOTIVE_DESIGN.' + 'PRE_DEFINED_GEOMETRICAL_TOLERANCE_SYMBOL', 
    'AUTOMOTIVE_DESIGN.' + 'PRE_DEFINED_POINT_MARKER_SYMBOL', 
    'AUTOMOTIVE_DESIGN.' + 'PRE_DEFINED_SURFACE_CONDITION_SYMBOL', 
    'AUTOMOTIVE_DESIGN.' + 'PRE_DEFINED_TERMINATOR_SYMBOL'], 3))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE subtype_exclusiveness_presentation_area FOR (presentation_area);
WHERE
  wr1 : SIZEOF(QUERY(pa <* presentation_area | NOT type_check_function(pa, [
    'AUTOMOTIVE_DESIGN.' + 'DRAWING_SHEET_REVISION', 'AUTOMOTIVE_DESIGN.'
     + 'MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_AREA'], 3))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE subtype_exclusiveness_presentation_representation FOR (
  presentation_representation);
WHERE
  wr1 : SIZEOF(QUERY(pr <* presentation_representation | NOT 
    type_check_function(pr, ['AUTOMOTIVE_DESIGN.' + 'PRESENTATION_AREA', 
    'AUTOMOTIVE_DESIGN.' + 'PRESENTATION_VIEW'], 3))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE subtype_exclusiveness_property_definition FOR (property_definition);
WHERE
  wr1 : SIZEOF(QUERY(pd <* property_definition | NOT type_check_function(pd, [
    'AUTOMOTIVE_DESIGN.' + 'KINEMATIC_PROPERTY_DEFINITION', 
    'AUTOMOTIVE_DESIGN.' + 'MATERIAL_PROPERTY', 'AUTOMOTIVE_DESIGN.' + 
    'PRODUCT_DEFINITION_SHAPE'], 3))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE subtype_exclusiveness_property_definition_representation FOR (
  property_definition_representation);
WHERE
  wr1 : SIZEOF(QUERY(pdr <* property_definition_representation | NOT 
    type_check_function(pdr, ['AUTOMOTIVE_DESIGN.' + 
    'KINEMATIC_PROPERTY_REPRESENTATION_RELATION', 'AUTOMOTIVE_DESIGN.' + 
    'MATERIAL_PROPERTY_REPRESENTATION', 'AUTOMOTIVE_DESIGN.' + 
    'SHAPE_DEFINITION_REPRESENTATION'], 3))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE subtype_exclusiveness_replicate_feature FOR (replicate_feature);
WHERE
  wr1 : SIZEOF(QUERY(rf <* replicate_feature | NOT type_check_function(rf, [
    'AUTOMOTIVE_DESIGN.' + 'CIRCULAR_PATTERN', 'AUTOMOTIVE_DESIGN.' + 
    'FEATURE_PATTERN', 'AUTOMOTIVE_DESIGN.' + 'MODIFIED_PATTERN', 
    'AUTOMOTIVE_DESIGN.' + 'RECTANGULAR_PATTERN'], 3))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE subtype_exclusiveness_representation FOR (representation);
WHERE
  wr1 : SIZEOF(QUERY(r <* representation | NOT type_check_function(r, [
    'AUTOMOTIVE_DESIGN.' + 'CONSTRUCTIVE_GEOMETRY_REPRESENTATION', 
    'AUTOMOTIVE_DESIGN.' + 'CONTACT_RATIO_REPRESENTATION', 
    'AUTOMOTIVE_DESIGN.' + 'DEFAULT_TOLERANCE_TABLE', 
    'AUTOMOTIVE_DESIGN.' + 'DEFINITIONAL_REPRESENTATION', 
    'AUTOMOTIVE_DESIGN.' + 'DRAUGHTING_MODEL', 'AUTOMOTIVE_DESIGN.' + 
    'FOUNDED_KINEMATIC_PATH', 'AUTOMOTIVE_DESIGN.' + 
    'HARDNESS_REPRESENTATION', 'AUTOMOTIVE_DESIGN.' + 
    'KINEMATIC_FRAME_BACKGROUND_REPRESENTATION', 'AUTOMOTIVE_DESIGN.' + 
    'KINEMATIC_GROUND_REPRESENTATION', 'AUTOMOTIVE_DESIGN.' + 
    'KINEMATIC_LINK_REPRESENTATION', 'AUTOMOTIVE_DESIGN.' + 
    'MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION', 
    'AUTOMOTIVE_DESIGN.' + 'MOMENTS_OF_INERTIA_REPRESENTATION', 
    'AUTOMOTIVE_DESIGN.' + 'PRESENTATION_REPRESENTATION', 
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_REPRESENTATION', 'AUTOMOTIVE_DESIGN.'
     + 'SURFACE_TEXTURE_REPRESENTATION', 'AUTOMOTIVE_DESIGN.' + 
    'SYMBOL_REPRESENTATION', 'AUTOMOTIVE_DESIGN.' + 
    'TACTILE_APPEARANCE_REPRESENTATION', 'AUTOMOTIVE_DESIGN.' + 
    'TEXT_STRING_REPRESENTATION', 'AUTOMOTIVE_DESIGN.' + 
    'VISUAL_APPEARANCE_REPRESENTATION'], 3))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE subtype_exclusiveness_representation_item FOR (representation_item);
WHERE
  wr1 : SIZEOF(QUERY(ri <* representation_item | NOT type_check_function(ri, [
    'AUTOMOTIVE_DESIGN.' + 'COMPOUND_REPRESENTATION_ITEM', 
    'AUTOMOTIVE_DESIGN.' + 'KINEMATIC_PATH', 'AUTOMOTIVE_DESIGN.' + 
    'MEASURE_REPRESENTATION_ITEM', 'AUTOMOTIVE_DESIGN.' + 'REP_ITEM_GROUP', 
    'AUTOMOTIVE_DESIGN.' + 'VALUE_REPRESENTATION_ITEM'], 3))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE subtype_exclusiveness_representation_map FOR (representation_map);
WHERE
  wr1 : SIZEOF(QUERY(rm <* representation_map | NOT type_check_function(rm, [
    'AUTOMOTIVE_DESIGN.' + 'CAMERA_USAGE', 'AUTOMOTIVE_DESIGN.' + 
    'SYMBOL_REPRESENTATION_MAP'], 3))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE subtype_exclusiveness_representation_relationship FOR (
  representation_relationship);
WHERE
  wr1 : SIZEOF(QUERY(rr <* representation_relationship | NOT 
    type_check_function(rr, ['AUTOMOTIVE_DESIGN.' + 
    'CONSTRUCTIVE_GEOMETRY_REPRESENTATION_RELATIONSHIP', 
    'AUTOMOTIVE_DESIGN.' + 'KINEMATIC_LINK_REPRESENTATION_ASSOCIATION', 
    'AUTOMOTIVE_DESIGN.' + 'MOTION_LINK_RELATIONSHIP'], 3))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE subtype_exclusiveness_representation_relationship_with_transformation
   FOR (representation_relationship_with_transformation);
WHERE
  wr1 : SIZEOF(QUERY(rrwt <* representation_relationship_with_transformation | 
    NOT type_check_function(rrwt, ['AUTOMOTIVE_DESIGN.' + 
    'KINEMATIC_FRAME_BACKGROUND_REPRESENTATION_ASSOCIATION', 
    'AUTOMOTIVE_DESIGN.' + 'MECHANISM_BASE_PLACEMENT'], 3))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE subtype_exclusiveness_shape_aspect FOR (shape_aspect);
WHERE
  wr1 : SIZEOF(QUERY(sa <* shape_aspect | NOT type_check_function(sa, [
    'AUTOMOTIVE_DESIGN.' + 'APPLIED_AREA', 'AUTOMOTIVE_DESIGN.' + 
    'BEAD_END', 'AUTOMOTIVE_DESIGN.' + 'BOSS_TOP', 'AUTOMOTIVE_DESIGN.'
     + 'CHAMFER_OFFSET', 'AUTOMOTIVE_DESIGN.' + 'CIRCULAR_CLOSED_PROFILE', 
    'AUTOMOTIVE_DESIGN.' + 'CLOSED_PATH_PROFILE', 'AUTOMOTIVE_DESIGN.' + 
    'DIRECTED_ANGLE', 'AUTOMOTIVE_DESIGN.' + 'HOLE_BOTTOM', 
    'AUTOMOTIVE_DESIGN.' + 'INSTANCED_FEATURE', 'AUTOMOTIVE_DESIGN.' + 
    'JOGGLE_TERMINATION', 'AUTOMOTIVE_DESIGN.' + 'NGON_CLOSED_PROFILE', 
    'AUTOMOTIVE_DESIGN.' + 'OPEN_PATH_PROFILE', 'AUTOMOTIVE_DESIGN.' + 
    'PARTIAL_CIRCULAR_PROFILE', 'AUTOMOTIVE_DESIGN.' + 
    'PATH_FEATURE_COMPONENT', 'AUTOMOTIVE_DESIGN.' + 'PLACED_FEATURE', 
    'AUTOMOTIVE_DESIGN.' + 'POCKET_BOTTOM', 'AUTOMOTIVE_DESIGN.' + 
    'RECTANGULAR_CLOSED_PROFILE', 'AUTOMOTIVE_DESIGN.' + 'ROUNDED_U_PROFILE'
    , 'AUTOMOTIVE_DESIGN.' + 'SLOT_END', 'AUTOMOTIVE_DESIGN.' + 
    'SQUARE_U_PROFILE', 'AUTOMOTIVE_DESIGN.' + 'TAPER', 
    'AUTOMOTIVE_DESIGN.' + 'TEE_PROFILE', 'AUTOMOTIVE_DESIGN.' + 
    'TOLERANCE_ZONE', 'AUTOMOTIVE_DESIGN.' + 'TRANSITION_FEATURE', 
    'AUTOMOTIVE_DESIGN.' + 'VEE_PROFILE'], 3))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE subtype_exclusiveness_shape_aspect_relationship FOR (
  shape_aspect_relationship);
WHERE
  wr1 : SIZEOF(QUERY(sar <* shape_aspect_relationship | NOT type_check_function
    (sar, ['AUTOMOTIVE_DESIGN.' + 'DIMENSIONAL_LOCATION', 
    'AUTOMOTIVE_DESIGN.' + 'FEATURE_COMPONENT_RELATIONSHIP', 
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_ASPECT_ASSOCIATIVITY', 
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_ASPECT_DERIVING_RELATIONSHIP', 
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_ASPECT_TRANSITION', 
    'AUTOMOTIVE_DESIGN.' + 'SHAPE_DEFINING_RELATIONSHIP'], 3))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE subtype_exclusiveness_shape_representation_feature_geometry FOR (
  shape_representation);
WHERE
  wr1 : SIZEOF(QUERY(sr <* shape_representation | NOT type_check_function(sr, [
    'AUTOMOTIVE_DESIGN.' + 'DIRECTION_SHAPE_REPRESENTATION', 
    'AUTOMOTIVE_DESIGN.' + 'FACE_SHAPE_REPRESENTATION', 
    'AUTOMOTIVE_DESIGN.' + 'LOCATION_SHAPE_REPRESENTATION', 
    'AUTOMOTIVE_DESIGN.' + 'PATH_SHAPE_REPRESENTATION', 
    'AUTOMOTIVE_DESIGN.' + 'PLANAR_SHAPE_REPRESENTATION'], 3))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE subtype_exclusiveness_shape_representation_geometry FOR (
  shape_representation);
WHERE
  wr1 : SIZEOF(QUERY(sr <* shape_representation | NOT type_check_function(sr, [
    'AUTOMOTIVE_DESIGN.' + 'ADVANCED_BREP_SHAPE_REPRESENTATION', 
    'AUTOMOTIVE_DESIGN.' + 'COMPOUND_SHAPE_REPRESENTATION', 
    'AUTOMOTIVE_DESIGN.' + 'CSG_SHAPE_REPRESENTATION', 
    'AUTOMOTIVE_DESIGN.' + 'EDGE_BASED_WIREFRAME_SHAPE_REPRESENTATION', 
    'AUTOMOTIVE_DESIGN.' + 'FACETED_BREP_SHAPE_REPRESENTATION', 
    'AUTOMOTIVE_DESIGN.' + 
    'GEOMETRICALLY_BOUNDED_2D_WIREFRAME_REPRESENTATION', 
    'AUTOMOTIVE_DESIGN.' + 
    'GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION', 
    'AUTOMOTIVE_DESIGN.' + 
    'GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION', 
    'AUTOMOTIVE_DESIGN.' + 'MANIFOLD_SURFACE_SHAPE_REPRESENTATION', 
    'AUTOMOTIVE_DESIGN.' + 'NON_MANIFOLD_SURFACE_SHAPE_REPRESENTATION', 
    'AUTOMOTIVE_DESIGN.' + 'POINT_PLACEMENT_SHAPE_REPRESENTATION'], 3))) = 0
    ;
END_RULE; -- 10303-214: automotive_design
 
RULE subtype_exclusiveness_symbol_representation FOR (symbol_representation);
WHERE
  wr1 : SIZEOF(QUERY(sr <* symbol_representation | NOT type_check_function(sr, 
    ['AUTOMOTIVE_DESIGN.' + 'CHARACTER_GLYPH_SYMBOL', 
    'AUTOMOTIVE_DESIGN.' + 'DRAUGHTING_SUBFIGURE_REPRESENTATION', 
    'AUTOMOTIVE_DESIGN.' + 'DRAUGHTING_SYMBOL_REPRESENTATION'], 3))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE subtype_exclusiveness_transition_feature FOR (transition_feature);
WHERE
  wr1 : SIZEOF(QUERY(tf <* transition_feature | NOT type_check_function(tf, [
    'AUTOMOTIVE_DESIGN.' + 'CHAMFER', 'AUTOMOTIVE_DESIGN.' + 'EDGE_ROUND'
    , 'AUTOMOTIVE_DESIGN.' + 'FILLET'], 3))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE subtype_mandatory_address FOR (address);
WHERE
  wr1 : SIZEOF(QUERY(a <* address | NOT type_check_function(a, [
    'AUTOMOTIVE_DESIGN.' + 'ORGANIZATIONAL_ADDRESS', 'AUTOMOTIVE_DESIGN.'
     + 'PERSONAL_ADDRESS'], 0))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE subtype_mandatory_annotation_occurrence FOR (annotation_occurrence);
WHERE
  wr1 : SIZEOF(QUERY(ao <* annotation_occurrence | NOT type_check_function(ao, 
    ['AUTOMOTIVE_DESIGN.' + 'ANNOTATION_CURVE_OCCURRENCE', 
    'AUTOMOTIVE_DESIGN.' + 'ANNOTATION_FILL_AREA_OCCURRENCE', 
    'AUTOMOTIVE_DESIGN.' + 'ANNOTATION_SYMBOL_OCCURRENCE', 
    'AUTOMOTIVE_DESIGN.' + 'ANNOTATION_TEXT_OCCURRENCE', 
    'AUTOMOTIVE_DESIGN.' + 'DRAUGHTING_ANNOTATION_OCCURRENCE'], 0))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE subtype_mandatory_camera_image FOR (camera_image);
WHERE
  wr1 : SIZEOF(QUERY(ci <* camera_image | NOT type_check_function(ci, [
    'AUTOMOTIVE_DESIGN.' + 'CAMERA_IMAGE_2D_WITH_SCALE', 
    'AUTOMOTIVE_DESIGN.' + 'CAMERA_IMAGE_3D_WITH_SCALE'], 0))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE subtype_mandatory_camera_model FOR (camera_model);
WHERE
  wr1 : SIZEOF(QUERY(cm <* camera_model | NOT type_check_function(cm, [
    'AUTOMOTIVE_DESIGN.' + 'CAMERA_MODEL_D2', 'AUTOMOTIVE_DESIGN.' + 
    'CAMERA_MODEL_D3'], 0))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE subtype_mandatory_colour_specification FOR (colour_specification);
WHERE
  wr1 : SIZEOF(QUERY(cs <* colour_specification | NOT type_check_function(cs, [
    'AUTOMOTIVE_DESIGN.' + 'COLOUR_RGB'], 0))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE subtype_mandatory_configurable_item FOR (configurable_item);
WHERE
  wr1 : SIZEOF(QUERY(ci <* configurable_item | NOT type_check_function(ci, [
    'AUTOMOTIVE_DESIGN.' + 'PRODUCT_SPECIFICATION'], 0))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE subtype_mandatory_document_product_association FOR (
  document_product_association);
WHERE
  wr1 : SIZEOF(QUERY(dpa <* document_product_association | NOT 
    type_check_function(dpa, ['AUTOMOTIVE_DESIGN.' + 
    'DOCUMENT_PRODUCT_EQUIVALENCE'], 0))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE subtype_mandatory_draughting_callout FOR (draughting_callout);
WHERE
  wr1 : SIZEOF(QUERY(dc <* draughting_callout | NOT type_check_function(dc, [
    'AUTOMOTIVE_DESIGN.' + 'DATUM_FEATURE_CALLOUT', 'AUTOMOTIVE_DESIGN.'
     + 'DATUM_TARGET_CALLOUT', 'AUTOMOTIVE_DESIGN.' + 
    'DIMENSION_CURVE_DIRECTED_CALLOUT', 'AUTOMOTIVE_DESIGN.' + 
    'DRAUGHTING_ELEMENTS', 'AUTOMOTIVE_DESIGN.' + 
    'GEOMETRICAL_TOLERANCE_CALLOUT', 'AUTOMOTIVE_DESIGN.' + 
    'LEADER_DIRECTED_CALLOUT', 'AUTOMOTIVE_DESIGN.' + 
    'PROJECTION_DIRECTED_CALLOUT', 'AUTOMOTIVE_DESIGN.' + 
    'STRUCTURED_DIMENSION_CALLOUT', 'AUTOMOTIVE_DESIGN.' + 
    'SURFACE_CONDITION_CALLOUT'], 0))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE subtype_mandatory_externally_defined_item FOR (externally_defined_item);
WHERE
  wr1 : SIZEOF(QUERY(edi <* externally_defined_item | NOT type_check_function(
    edi, ['AUTOMOTIVE_DESIGN.' + 'EXTERNALLY_DEFINED_CHARACTER_GLYPH', 
    'AUTOMOTIVE_DESIGN.' + 'EXTERNALLY_DEFINED_CLASS', 
    'AUTOMOTIVE_DESIGN.' + 'EXTERNALLY_DEFINED_CURVE_FONT', 
    'AUTOMOTIVE_DESIGN.' + 'EXTERNALLY_DEFINED_FEATURE_DEFINITION', 
    'AUTOMOTIVE_DESIGN.' + 'EXTERNALLY_DEFINED_GENERAL_PROPERTY', 
    'AUTOMOTIVE_DESIGN.' + 'EXTERNALLY_DEFINED_HATCH_STYLE', 
    'AUTOMOTIVE_DESIGN.' + 'EXTERNALLY_DEFINED_STYLE', 
    'AUTOMOTIVE_DESIGN.' + 'EXTERNALLY_DEFINED_SYMBOL', 
    'AUTOMOTIVE_DESIGN.' + 'EXTERNALLY_DEFINED_TEXT_FONT', 
    'AUTOMOTIVE_DESIGN.' + 'EXTERNALLY_DEFINED_TILE_STYLE'], 0))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE subtype_mandatory_founded_item FOR (founded_item);
WHERE
  wr1 : SIZEOF(QUERY(fi <* founded_item | NOT type_check_function(fi, [
    'AUTOMOTIVE_DESIGN.' + 'COMPOSITE_CURVE_SEGMENT', 
    'AUTOMOTIVE_DESIGN.' + 'SURFACE_PATCH', 'AUTOMOTIVE_DESIGN.' + 
    'VIEW_VOLUME'], 0))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE subtype_mandatory_geometric_tolerance FOR (geometric_tolerance);
WHERE
  wr1 : SIZEOF(QUERY(gt <* geometric_tolerance | NOT type_check_function(gt, [
    'AUTOMOTIVE_DESIGN.' + 'ANGULARITY_TOLERANCE', 'AUTOMOTIVE_DESIGN.'
     + 'CIRCULAR_RUNOUT_TOLERANCE', 'AUTOMOTIVE_DESIGN.' + 
    'COAXIALITY_TOLERANCE', 'AUTOMOTIVE_DESIGN.' + 'CONCENTRICITY_TOLERANCE'
    , 'AUTOMOTIVE_DESIGN.' + 'CYLINDRICITY_TOLERANCE', 
    'AUTOMOTIVE_DESIGN.' + 'FLATNESS_TOLERANCE', 'AUTOMOTIVE_DESIGN.' + 
    'LINE_PROFILE_TOLERANCE', 'AUTOMOTIVE_DESIGN.' + 'PARALLELISM_TOLERANCE'
    , 'AUTOMOTIVE_DESIGN.' + 'PERPENDICULARITY_TOLERANCE', 
    'AUTOMOTIVE_DESIGN.' + 'POSITION_TOLERANCE', 'AUTOMOTIVE_DESIGN.' + 
    'ROUNDNESS_TOLERANCE', 'AUTOMOTIVE_DESIGN.' + 'STRAIGHTNESS_TOLERANCE', 
    'AUTOMOTIVE_DESIGN.' + 'SURFACE_PROFILE_TOLERANCE', 
    'AUTOMOTIVE_DESIGN.' + 'SYMMETRY_TOLERANCE', 'AUTOMOTIVE_DESIGN.' + 
    'TOTAL_RUNOUT_TOLERANCE'], 0))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE subtype_mandatory_pre_defined_colour FOR (pre_defined_colour);
WHERE
  wr1 : SIZEOF(QUERY(pdc <* pre_defined_colour | NOT type_check_function(pdc, [
    'AUTOMOTIVE_DESIGN.' + 'DRAUGHTING_PRE_DEFINED_COLOUR'], 0))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE subtype_mandatory_pre_defined_curve_font FOR (pre_defined_curve_font);
WHERE
  wr1 : SIZEOF(QUERY(pdcf <* pre_defined_curve_font | NOT type_check_function(
    pdcf, ['AUTOMOTIVE_DESIGN.' + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT'], 0)))
     = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE subtype_mandatory_pre_defined_item FOR (pre_defined_item);
WHERE
  wr1 : SIZEOF(QUERY(pdi <* pre_defined_item | NOT type_check_function(pdi, [
    'AUTOMOTIVE_DESIGN.' + 'KNOWN_SOURCE', 'AUTOMOTIVE_DESIGN.' + 
    'PRE_DEFINED_COLOUR', 'AUTOMOTIVE_DESIGN.' + 'PRE_DEFINED_CURVE_FONT', 
    'AUTOMOTIVE_DESIGN.' + 'PRE_DEFINED_MARKER', 'AUTOMOTIVE_DESIGN.' + 
    'PRE_DEFINED_PRESENTATION_STYLE', 'AUTOMOTIVE_DESIGN.' + 
    'PRE_DEFINED_SYMBOL', 'AUTOMOTIVE_DESIGN.' + 'PRE_DEFINED_TEXT_FONT'], 0
    ))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE subtype_mandatory_pre_defined_symbol FOR (pre_defined_symbol);
WHERE
  wr1 : SIZEOF(QUERY(pds <* pre_defined_symbol | NOT type_check_function(pds, [
    'AUTOMOTIVE_DESIGN.' + 'PRE_DEFINED_GEOMETRICAL_TOLERANCE_SYMBOL', 
    'AUTOMOTIVE_DESIGN.' + 'PRE_DEFINED_SURFACE_CONDITION_SYMBOL', 
    'AUTOMOTIVE_DESIGN.' + 'PRE_DEFINED_DIMENSION_SYMBOL', 
    'AUTOMOTIVE_DESIGN.' + 'PRE_DEFINED_POINT_MARKER_SYMBOL', 
    'AUTOMOTIVE_DESIGN.' + 'PRE_DEFINED_TERMINATOR_SYMBOL'], 0))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE subtype_mandatory_pre_defined_text_font FOR (pre_defined_text_font);
WHERE
  wr1 : SIZEOF(QUERY(pdtf <* pre_defined_text_font | NOT type_check_function(
    pdtf, ['AUTOMOTIVE_DESIGN.' + 'DRAUGHTING_PRE_DEFINED_TEXT_FONT'], 0)))
     = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE terminator_symbol_constraint FOR (terminator_symbol);
WHERE
  wr1 : SIZEOF(QUERY(ts <* terminator_symbol | ('AUTOMOTIVE_DESIGN.' + 
    'DEFINED_SYMBOL' IN TYPEOF(ts.item)) AND NOT ('AUTOMOTIVE_DESIGN.' + 
    'PRE_DEFINED_TERMINATOR_SYMBOL' IN TYPEOF(ts.item\defined_symbol.definition
    )))) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE text_font_usage FOR (externally_defined_text_font, pre_defined_text_font);
WHERE
  wr1 : SIZEOF(QUERY(pdtf <* pre_defined_text_font | SIZEOF(USEDIN(pdtf, 
    'AUTOMOTIVE_DESIGN.TEXT_LITERAL.FONT')) = 0)) = 0;
  wr2 : SIZEOF(QUERY(edtf <* externally_defined_text_font | SIZEOF(USEDIN(edtf
    , 'AUTOMOTIVE_DESIGN.TEXT_LITERAL.FONT')) = 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE validate_dependently_instantiable_entity_data_types FOR (
  boolean_defined_function, coordinated_universal_time_offset, defined_function
  , derived_unit_element, dimensional_exponents, founded_kinematic_path, 
  generic_character_glyph_symbol, integer_defined_function, 
  kinematic_frame_background_representation, 
  kinematic_frame_background_representation_association, 
  kinematic_frame_based_transformation, kinematic_path, 
  motion_link_relationship, numeric_defined_function, 
  one_direction_repeat_factor, oriented_open_shell, oriented_path, 
  product_concept_context, product_context, real_defined_function, 
  rotation_about_direction, sql_mappable_defined_function, 
  string_defined_function, surface_rendering_properties, swept_area_solid, 
  symbol_target, two_direction_repeat_factor);
   (* generated by longform-generator *)
LOCAL
  number_of_input_instances : INTEGER;
  previous_in_chain : LIST OF GENERIC := [];
  set_of_input_types : SET OF STRING := [];
  all_instances : SET OF GENERIC := [];
END_LOCAL;
  all_instances := two_direction_repeat_factor + symbol_target + 
  swept_area_solid + surface_rendering_properties + string_defined_function + 
  sql_mappable_defined_function + rotation_about_direction + 
  real_defined_function + product_context + product_concept_context + 
  oriented_path + oriented_open_shell + one_direction_repeat_factor + 
  numeric_defined_function + motion_link_relationship + kinematic_path + 
  kinematic_frame_based_transformation + 
  kinematic_frame_background_representation_association + 
  kinematic_frame_background_representation + integer_defined_function + 
  generic_character_glyph_symbol + founded_kinematic_path + 
  dimensional_exponents + derived_unit_element + defined_function + 
  coordinated_universal_time_offset + boolean_defined_function;
  number_of_input_instances := SIZEOF(all_instances);
  REPEAT i := 1 TO number_of_input_instances;
    set_of_input_types := set_of_input_types + TYPEOF(all_instances[i]);
  END_REPEAT;
WHERE
  wr1 : dependently_instantiated(all_instances, set_of_input_types, 
    previous_in_chain);
END_RULE;
 
RULE versioned_action_request_requires_date_and_person_or_organization FOR (
  versioned_action_request);
WHERE
  wr1 : SIZEOF(QUERY(va <* versioned_action_request | SIZEOF(QUERY(adapaoa <* 
    USEDIN(va, 
    'AUTOMOTIVE_DESIGN.APPLIED_PERSON_AND_ORGANIZATION_ASSIGNMENT.ITEMS') | 
    adapaoa.role.name = 'requestor')) + SIZEOF(QUERY(adaoa <* USEDIN(va, 
    'AUTOMOTIVE_DESIGN.APPLIED_ORGANIZATION_ASSIGNMENT.ITEMS') | adaoa.role.
    name = 'requestor')) = 0)) = 0;
  wr2 : SIZEOF(QUERY(va <* versioned_action_request | SIZEOF(QUERY(adapaoa <* 
    USEDIN(va, 
    'AUTOMOTIVE_DESIGN.APPLIED_PERSON_AND_ORGANIZATION_ASSIGNMENT.ITEMS') | 
    adapaoa.role.name = 'notified person or organization')) + SIZEOF(QUERY(
    adaoa <* USEDIN(va, 
    'AUTOMOTIVE_DESIGN.APPLIED_ORGANIZATION_ASSIGNMENT.ITEMS') | adaoa.role.
    name = 'notified person or organization')) = 0)) = 0;
END_RULE; -- 10303-214: automotive_design
 
RULE versioned_action_request_requires_status FOR (action_request_status,
  versioned_action_request);
WHERE
  wr1 : SIZEOF(QUERY(ar <* versioned_action_request | NOT (SIZEOF(QUERY(ars <* 
    action_request_status | ar :=: ars.assigned_request)) = 1))) = 0;
END_RULE; -- 10303-214: automotive_design
 
END_SCHEMA;


© ISO 2010 — All rights reserved