SCHEMA Ap239_product_life_cycle_support_arm;


TYPE ap239_TC_affected_item_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON affected_item_select WITH
   (State,
    State_definition);
END_TYPE;

TYPE ap239_TC_classification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON classification_item WITH
   (Product_group_membership,
    Representation_relationship);
END_TYPE;

TYPE ap239_TC_condition_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON condition_item WITH
   (Activity_method,
    Effectivity);
END_TYPE;

TYPE ap239_TC_date_or_date_time_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON date_or_date_time_item WITH
   (Approving_person_organization);
END_TYPE;

TYPE ap239_TC_effectivity_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON effectivity_item WITH
   (Qualification_assignment,
    View_definition_usage,
    Resource_property_representation,
    Condition_assignment,
    Activity_property_representation,
    Independent_property_representation,
    Classification_assignment);
END_TYPE;

TYPE ap239_TC_documented_element_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON documented_element_select WITH
   (State_transition_definition,
    Document_definition_relationship,
    Document_assignment,
    Class,
    Condition_parameter,
    Condition_assignment,
    Justification);
END_TYPE;

TYPE ap239_TC_message_content_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON message_content_item WITH
   (Product,
    Product_version,
    Activity,
    Activity_method,
    Work_order,
    Work_request,
    External_class_library,
    Resource_event,
    Resource_item);
END_TYPE;

TYPE ap239_TC_observation_content_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON observation_content_item WITH
   (Product,
    Product_version,
    Activity,
    Activity_method,
    Work_order,
    Work_request,
    External_class_library);
END_TYPE;

TYPE ap239_TC_justification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON justification_item WITH
   (Condition_assignment,
    Applied_state_definition_assignment,
    Property_value_representation);
END_TYPE;

TYPE ap239_TC_state_of_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON state_of_item WITH
   (Approval);
END_TYPE;

TYPE ap239_TC_identification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON identification_item WITH
   (Activity_relationship,
    Document_definition_relationship,
    Class,
    External_source_identification);
END_TYPE;

TYPE ap239_TC_in_zone_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON in_zone_item WITH
   (Activity_method,
    Applied_activity_method_assignment);
END_TYPE;

TYPE ap239_TC_condition_parameter_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON condition_parameter_item WITH
   (Independent_property,
    Organization_type,
    Work_request,
    Organization,
    Product_configuration);
END_TYPE;

TYPE ap239_TC_requirement_assignment_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON requirement_assignment_item WITH
   (Product_group,
    Product_group_membership,
    Work_request);
END_TYPE;

TYPE ap239_TC_activity_method_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON activity_method_item WITH
   (Product_group_membership);
END_TYPE;

TYPE ap239_TC_property_assignment_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON property_assignment_select WITH
   (Activity_method_relationship);
END_TYPE;

END_SCHEMA;  -- Ap239_product_life_cycle_support_arm



SCHEMA Elemental_geometric_shape_arm;


TYPE cartesian_transformation = SELECT
   (Cartesian_transformation_2d,
    Cartesian_transformation_3d);
END_TYPE;

TYPE geometric_mapping_target = SELECT
   (Axis_placement,
    cartesian_transformation);
END_TYPE;

ENTITY Geometric_coordinate_space
  SUBTYPE OF (Numerical_representation_context);
  dimension_count : INTEGER;
WHERE
  WR1: dimension_count > 0;
END_ENTITY;

ENTITY Geometric_model
  SUBTYPE OF (Representation);
  version_id : OPTIONAL STRING;
  model_extent : OPTIONAL length_measure;
  SELF\Representation.context_of_items : Geometric_coordinate_space;
  SELF\Representation.items : SET[1:?] OF Detailed_geometric_model_element;
END_ENTITY;

ENTITY Detailed_geometric_model_element
  ABSTRACT SUPERTYPE OF (ONEOF (Cartesian_point,
                                Direction,
                                Axis_placement,
                                Cartesian_transformation_2d,
                                Cartesian_transformation_3d))
  SUBTYPE OF (Representation_item);
END_ENTITY;

ENTITY Cartesian_point
  SUBTYPE OF (Detailed_geometric_model_element);
  coordinates : LIST[1:3] OF length_measure;
END_ENTITY;

ENTITY Direction
  SUBTYPE OF (Detailed_geometric_model_element);
  coordinates : LIST[2:3] OF length_measure;
END_ENTITY;

ENTITY Axis_placement
  SUBTYPE OF (Detailed_geometric_model_element);
  origin : Cartesian_point;
  x_axis : Direction;
  y_axis : Direction;
DERIVE
  dim : INTEGER := SIZEOF(origin.coordinates);
WHERE
  WR1: dim > 1;
  WR2: dim = SIZEOF(x_axis.coordinates);
  WR3: dim = SIZEOF(y_axis.coordinates);
END_ENTITY;

ENTITY Cartesian_transformation_2d
  SUBTYPE OF (Detailed_geometric_model_element);
  multiplication_matrix : ARRAY[1:2] OF Direction;
  translation : Cartesian_point;
WHERE
  WR1: SIZEOF(multiplication_matrix[1]\Direction.coordinates) = 2;
  WR2: SIZEOF(multiplication_matrix[2]\Direction.coordinates) = 2;
  WR3: SIZEOF(translation.coordinates) = 2;
END_ENTITY;

ENTITY Cartesian_transformation_3d
  SUBTYPE OF (Detailed_geometric_model_element);
  multiplication_matrix : ARRAY[1:3] OF Direction;
  translation : Cartesian_point;
WHERE
  WR1: SIZEOF(multiplication_matrix[1]\Direction.coordinates) = 3;
  WR2: SIZEOF(multiplication_matrix[2]\Direction.coordinates) = 3;
  WR3: SIZEOF(multiplication_matrix[3]\Direction.coordinates) = 3;
  WR4: SIZEOF(translation.coordinates) = 3;
END_ENTITY;

ENTITY Axis_placement_mapping;
  source : Axis_placement;
  target : Axis_placement;
WHERE
  WR1: source\Axis_placement.dim = target\Axis_placement.dim;
END_ENTITY;

ENTITY Axis_placement_transformation_mapping;
  source : Axis_placement;
  target : cartesian_transformation;
WHERE
  WR1: source\Axis_placement.dim = SIZEOF(target.translation\Cartesian_point.coordinates);
END_ENTITY;

END_SCHEMA;  -- Elemental_geometric_shape_arm



SCHEMA Foundation_representation_arm;


ENTITY Numerical_representation_context
  SUBTYPE OF (Representation_context);
  units : OPTIONAL SET[1:?] OF Unit;
  accuracies : OPTIONAL SET[1:?] OF Uncertainty_with_unit;
END_ENTITY;

ENTITY Representation;
  id : OPTIONAL STRING;
  name : STRING;
  description : OPTIONAL STRING;
  context_of_items : Representation_context;
  items : SET[1:?] OF Representation_item;
END_ENTITY;

ENTITY Representation_context;
  id : STRING;
  kind : STRING;
INVERSE
  representations_in_context : SET[1:?] OF Representation FOR context_of_items;
END_ENTITY;

ENTITY Representation_item
  ABSTRACT SUPERTYPE ;
  name : STRING;
END_ENTITY;

ENTITY Representation_relationship;
  relation_type : STRING;
  description : STRING;
  rep_1 : Representation;
  rep_2 : Representation;
END_ENTITY;

ENTITY String_representation_item
  SUBTYPE OF (Representation_item);
  string_value : STRING;
END_ENTITY;

END_SCHEMA;  -- Foundation_representation_arm



SCHEMA Date_time_arm;


TYPE date_or_date_time_select = SELECT
   (Calendar_date,
    Date_time);
END_TYPE;

TYPE day_in_month_number = INTEGER ;
WHERE
  WR1: {1 <= SELF <= 31};
END_TYPE;

TYPE hour_in_day = INTEGER ;
WHERE
  WR1: {0 <= SELF < 24};
END_TYPE;

TYPE minute_in_hour = INTEGER ;
WHERE
  WR1: {0 <= SELF <= 59};
END_TYPE;

TYPE month_in_year_number = INTEGER ;
WHERE
  WR1: {1 <= SELF <= 12};
END_TYPE;

TYPE offset_orientation = ENUMERATION OF
   (ahead,
exact,
behind);
END_TYPE;

TYPE second_in_minute = REAL ;
WHERE
  WR1: {0 <= SELF <= 60.000000};
END_TYPE;

TYPE year_number = INTEGER;
END_TYPE;

ENTITY Calendar_date;
  year_component : year_number;
  month_component : month_in_year_number;
  day_component : day_in_month_number;
END_ENTITY;

ENTITY Date_time;
  date_component : Calendar_date;
  time_component : Local_time;
END_ENTITY;

ENTITY Local_time;
  hour_component : hour_in_day;
  minute_component : OPTIONAL minute_in_hour;
  second_component : OPTIONAL second_in_minute;
  zone : Time_offset;
END_ENTITY;

ENTITY Time_offset;
  hour_offset : INTEGER;
  minute_offset : OPTIONAL INTEGER;
  sense : offset_orientation;
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;

END_SCHEMA;  -- Date_time_arm



SCHEMA Person_organization_arm;


TYPE organization_or_person_in_organization_select = SELECT
   (Organization,
    Person_in_organization);
END_TYPE;

ENTITY Address;
  name : OPTIONAL STRING;
  street_number : OPTIONAL STRING;
  street : OPTIONAL STRING;
  postal_box : OPTIONAL STRING;
  town : OPTIONAL STRING;
  region : OPTIONAL STRING;
  postal_code : OPTIONAL STRING;
  country : OPTIONAL STRING;
  internal_location : OPTIONAL STRING;
  facsimile_number : OPTIONAL STRING;
  telephone_number : OPTIONAL STRING;
  electronic_mail_address : OPTIONAL STRING;
  telex_number : OPTIONAL STRING;
  url : OPTIONAL STRING;
WHERE
  WR1: (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(internal_location) OR EXISTS(facsimile_number) OR EXISTS(telephone_number) OR EXISTS(electronic_mail_address) OR EXISTS(telex_number));
END_ENTITY;

ENTITY Address_assignment;
  address_type : OPTIONAL STRING;
  assigned_address : Address;
  located_person_organizations : SET[1:?] OF organization_or_person_in_organization_select;
END_ENTITY;

ENTITY Organization;
  id : OPTIONAL STRING;
  name : STRING;
END_ENTITY;

ENTITY Organization_relationship;
  relation_type : STRING;
  description : OPTIONAL STRING;
  relating_organization : Organization;
  related_organization : Organization;
END_ENTITY;

ENTITY Person;
  last_name : STRING;
  first_name : OPTIONAL STRING;
  middle_names : OPTIONAL LIST[1:?] OF STRING;
  prefix_titles : OPTIONAL LIST[1:?] OF STRING;
  suffix_titles : OPTIONAL LIST[1:?] OF STRING;
END_ENTITY;

ENTITY Person_in_organization;
  concerned_person : Person;
  containing_organization : Organization;
  role : STRING;
END_ENTITY;

END_SCHEMA;  -- Person_organization_arm



SCHEMA Approval_arm;


TYPE approval_item = EXTENSIBLE GENERIC_ENTITY SELECT;
END_TYPE;

ENTITY Approval;
  status : Approval_status;
  purpose : STRING;
  planned_date : OPTIONAL date_or_date_time_select;
  actual_date : OPTIONAL date_or_date_time_select;
END_ENTITY;

ENTITY Approval_assignment;
  assigned_approval : Approval;
  items : SET[1:?] OF approval_item;
  role : OPTIONAL STRING;
END_ENTITY;

ENTITY Approval_relationship;
  relation_type : STRING;
  description : OPTIONAL STRING;
  relating_approval : Approval;
  related_approval : Approval;
END_ENTITY;

ENTITY Approval_status;
  status_name : STRING;
END_ENTITY;

ENTITY Approving_person_organization;
  person_organization : organization_or_person_in_organization_select;
  approval_date : OPTIONAL date_or_date_time_select;
  authorized_approval : Approval;
  role : OPTIONAL STRING;
END_ENTITY;

END_SCHEMA;  -- Approval_arm



SCHEMA Person_organization_assignment_arm;


TYPE organization_or_person_in_organization_item = EXTENSIBLE SELECT;
END_TYPE;

ENTITY Organization_or_person_in_organization_assignment;
  assigned_entity : organization_or_person_in_organization_select;
  role : STRING;
  items : SET[1:?] OF organization_or_person_in_organization_item;
END_ENTITY;

END_SCHEMA;  -- Person_organization_assignment_arm



SCHEMA Date_time_assignment_arm;


TYPE date_or_date_time_item = EXTENSIBLE SELECT;
END_TYPE;

ENTITY Date_or_date_time_assignment;
  assigned_date : date_or_date_time_select;
  role : STRING;
  items : SET[1:?] OF date_or_date_time_item;
END_ENTITY;

END_SCHEMA;  -- Date_time_assignment_arm



SCHEMA Security_classification_arm;


TYPE security_classification_item = EXTENSIBLE SELECT;
END_TYPE;

ENTITY Security_classification;
  classification_level : STRING;
  description : OPTIONAL STRING;
END_ENTITY;

ENTITY Security_classification_assignment;
  classification : Security_classification;
  items : SET[1:?] OF security_classification_item;
END_ENTITY;

END_SCHEMA;  -- Security_classification_arm



SCHEMA Product_categorization_arm;


ENTITY Product_category;
  id : OPTIONAL STRING;
  name : STRING;
  description : OPTIONAL STRING;
END_ENTITY;

ENTITY Product_category_hierarchy;
  super_category : Product_category;
  sub_category : Product_category;
END_ENTITY;

END_SCHEMA;  -- Product_categorization_arm



SCHEMA Product_identification_arm;


ENTITY Product;
  id : STRING;
  name : OPTIONAL STRING;
  description : OPTIONAL STRING;
END_ENTITY;

ENTITY Product_category_assignment;
  category : Product_category;
  products : SET[1:?] OF Product;
END_ENTITY;


FUNCTION types_of_product
 (obj : Product) : SET OF STRING;

  LOCAL
    category_assignments : BAG OF Product_category_assignment;
    categories : SET OF STRING := [];
    i : INTEGER;
  END_LOCAL;

  category_assignments := USEDIN(obj, 'PRODUCT_IDENTIFICATION_ARM.' + 'PRODUCT_CATEGORY_ASSIGNMENT.PRODUCTS');
  REPEAT i := LOINDEX(category_assignments) TO HIINDEX(category_assignments) BY 1;
    categories := categories + category_assignments[i].category.name;
  END_REPEAT;
  RETURN (categories);
      

END_FUNCTION;


END_SCHEMA;  -- Product_identification_arm



SCHEMA Product_version_arm;


ENTITY Product_version;
  id : STRING;
  description : OPTIONAL STRING;
  of_product : Product;
END_ENTITY;

END_SCHEMA;  -- Product_version_arm



SCHEMA Product_view_definition_arm;


ENTITY Product_view_definition;
  id : STRING;
  name : OPTIONAL STRING;
  additional_characterization : OPTIONAL STRING;
  initial_context : View_definition_context;
  additional_contexts : SET[0:?] OF View_definition_context;
  defined_version : Product_version;
WHERE
  WR1: NOT (initial_context IN additional_contexts);
END_ENTITY;

ENTITY View_definition_context;
  application_domain : STRING;
  life_cycle_stage : STRING;
  description : OPTIONAL STRING;
END_ENTITY;

END_SCHEMA;  -- Product_view_definition_arm



SCHEMA Product_version_relationship_arm;


ENTITY Product_version_relationship;
  relation_type : STRING;
  description : OPTIONAL STRING;
  relating_version : Product_version;
  related_version : Product_version;
WHERE
  WR1: relating_version :<>: related_version;
END_ENTITY;

ENTITY Supplied_part_relationship
  SUBTYPE OF (Product_version_relationship);
WHERE
  WR1: SELF\Product_version_relationship.relation_type IN ['supplied item', 'supplied document'];
END_ENTITY;

END_SCHEMA;  -- Product_version_relationship_arm



SCHEMA Identification_assignment_arm;


TYPE identification_item = EXTENSIBLE SELECT;
END_TYPE;

ENTITY Identification_assignment;
  identifier : STRING;
  role : STRING;
  description : OPTIONAL STRING;
  items : SET[1:?] OF identification_item;
END_ENTITY;

END_SCHEMA;  -- Identification_assignment_arm



SCHEMA Part_and_version_identification_arm;


ENTITY Part
  SUBTYPE OF (Product);
WHERE
  WR1: SIZEOF(['part', 'raw material', 'tool'] * types_of_product(SELF)) = 1;
END_ENTITY;

ENTITY Part_version
  SUBTYPE OF (Product_version);
  SELF\Product_version.of_product : Part;
END_ENTITY;

RULE part_version_constraint FOR
(Product_version);
WHERE
  WR1: SIZEOF(QUERY(pv <* Product_version | (NOT ('PART_AND_VERSION_IDENTIFICATION_ARM.' + 'PART_VERSION' IN TYPEOF(pv))) AND ('PART_AND_VERSION_IDENTIFICATION_ARM.' + 'PART' IN TYPEOF(pv.of_product)))) = 0;
END_RULE;

END_SCHEMA;  -- Part_and_version_identification_arm



SCHEMA Part_view_definition_arm;


ENTITY Part_view_definition
  SUBTYPE OF (Product_view_definition);
  SELF\Product_view_definition.defined_version : Part_version;
END_ENTITY;

RULE part_view_definition_constraint FOR
(Product_view_definition);
WHERE
  WR1: SIZEOF(QUERY(pvd <* Product_view_definition | (NOT ('PART_VIEW_DEFINITION_ARM.' + 'PART_VIEW_DEFINITION' IN TYPEOF(pvd))) AND ('PART_VIEW_DEFINITION_ARM.' + 'PART_VERSION' IN TYPEOF(pvd.defined_version)))) = 0;
END_RULE;

END_SCHEMA;  -- Part_view_definition_arm



SCHEMA Product_relationship_arm;


ENTITY Product_relationship;
  relation_type : STRING;
  description : OPTIONAL STRING;
  relating_product : Product;
  related_product : Product;
END_ENTITY;

END_SCHEMA;  -- Product_relationship_arm



SCHEMA Alias_identification_arm;


TYPE alias_identification_item = EXTENSIBLE GENERIC_ENTITY SELECT;
END_TYPE;

ENTITY Alias_identification
  SUBTYPE OF (Identification_assignment);
DERIVE
  SELF\Identification_assignment.role : STRING := 'alias';
WHERE
  WR1: SIZEOF(QUERY(item <* SELF\Identification_assignment.items | NOT ('ALIAS_IDENTIFICATION_ARM.ALIAS_IDENTIFICATION_ITEM' IN TYPEOF(item)))) = 0;
END_ENTITY;

END_SCHEMA;  -- Alias_identification_arm



SCHEMA Assembly_structure_arm;


ENTITY Assembly_component_relationship
  ABSTRACT SUPERTYPE OF (ONEOF (Next_assembly_usage,
                                Promissory_usage,
                                Component_upper_level_identification))
  SUBTYPE OF (View_definition_usage);
  quantity : OPTIONAL Value_with_unit;
  location_indicator : OPTIONAL STRING;
WHERE
  WR1: NOT (EXISTS(quantity)) OR ((NOT ('NUMBER' IN TYPEOF(quantity.value_component))) XOR (quantity.value_component > 0));
END_ENTITY;

ENTITY Next_assembly_usage
  SUBTYPE OF (Assembly_component_relationship);
END_ENTITY;

ENTITY Promissory_usage
  SUBTYPE OF (Assembly_component_relationship);
END_ENTITY;

ENTITY Component_upper_level_identification
  SUBTYPE OF (Assembly_component_relationship);
  upper_assembly_relationship : Assembly_component_relationship;
  sub_assembly_relationship : Next_assembly_usage;
UNIQUE
  UR1: upper_assembly_relationship, sub_assembly_relationship;
WHERE
  WR1: SELF :<>: upper_assembly_relationship;
  WR2: SELF\View_definition_relationship.relating_view :=: upper_assembly_relationship\View_definition_relationship.relating_view;
  WR3: SELF\View_definition_relationship.related_view :=: sub_assembly_relationship\View_definition_relationship.related_view;
  WR4: (upper_assembly_relationship\View_definition_relationship.related_view :=: sub_assembly_relationship\View_definition_relationship.relating_view) OR (SIZEOF(QUERY(pdr <* USEDIN(upper_assembly_relationship\View_definition_relationship.related_view, 'PRODUCT_VIEW_DEFINITION_RELATIONSHIP_ARM.VIEW_DEFINITION_RELATIONSHIP.RELATED_VIEW') | pdr.relating_view :=: sub_assembly_relationship\View_definition_relationship.relating_view)) = 1);
  WR5: SIZEOF(['ASSEMBLY_STRUCTURE_ARM.NEXT_ASSEMBLY_USAGE', 'ASSEMBLY_STRUCTURE_ARM.COMPONENT_UPPER_LEVEL_IDENTIFICATION'] * TYPEOF(upper_assembly_relationship)) = 1;
END_ENTITY;

END_SCHEMA;  -- Assembly_structure_arm



SCHEMA Contextual_shape_positioning_arm;


TYPE template_instance = SELECT
   (Mapping_based_template_instance,
    Transformation_based_template_instance);
END_TYPE;

ENTITY Contextual_shape_representation_inclusion;
  contextual_shape : Contextual_item_shape;
  context_representation : Geometric_model;
  positioned_representation : template_instance;
END_ENTITY;

ENTITY Mapping_based_template_instance
  SUBTYPE OF (Detailed_geometric_model_element);
  replicated_model : shape_model;
  source : Axis_placement;
  target : geometric_mapping_target;
END_ENTITY;

ENTITY Transformation_based_template_instance
  SUBTYPE OF (Detailed_geometric_model_element);
  replicated_model : shape_model;
  replication_transformation : cartesian_transformation;
END_ENTITY;

END_SCHEMA;  -- Contextual_shape_positioning_arm



SCHEMA Property_assignment_arm;


TYPE property_assignment_select = EXTENSIBLE SELECT;
END_TYPE;

ENTITY Applied_independent_property
  SUBTYPE OF (Assigned_property);
  base_independent_property : Independent_property;
DERIVE
  SELF\Assigned_property.name : STRING := base_independent_property.property_type;
END_ENTITY;

ENTITY Assigned_property;
  id : OPTIONAL STRING;
  name : STRING;
  description : OPTIONAL STRING;
  described_element : property_assignment_select;
END_ENTITY;

ENTITY Property_representation;
  description : OPTIONAL STRING;
  property : Assigned_property;
  rep : Representation;
  role : OPTIONAL STRING;
END_ENTITY;

END_SCHEMA;  -- Property_assignment_arm



SCHEMA Shape_property_assignment_arm;


TYPE shape_dependent_select = SELECT
   (Item_shape,
    Shape_element);
END_TYPE;

TYPE shape_model = SELECT
   (External_geometric_model,
    Geometric_model);
END_TYPE;

TYPE shape_select = SELECT
   (Item_shape,
    Shape_element,
    Shape_element_relationship);
END_TYPE;

TYPE shapeable_item = SELECT
   (Characterizable_object,
    Product_view_definition,
    View_definition_usage);
END_TYPE;

ENTITY Characterizable_object;
  name : STRING;
  description : OPTIONAL STRING;
END_ENTITY;

ENTITY Contextual_item_shape
  SUBTYPE OF (Item_shape);
  SELF\Item_shape.described_element : View_definition_usage;
DERIVE
  shaped_product : Product_view_definition := described_element\View_definition_relationship.related_view;
END_ENTITY;

ENTITY Item_shape;
  id : OPTIONAL STRING;
  description : OPTIONAL STRING;
  described_element : shapeable_item;
END_ENTITY;

ENTITY Shape_dependent_property_representation;
  characteristic_type : STRING;
  description : OPTIONAL STRING;
  described_element : shape_dependent_select;
  property_representation : Representation;
END_ENTITY;

ENTITY Shape_description_association;
  represented_characteristic : shape_select;
  representation : shape_model;
  role : OPTIONAL STRING;
  description : OPTIONAL STRING;
END_ENTITY;

ENTITY Shape_element;
  id : OPTIONAL STRING;
  element_name : STRING;
  description : OPTIONAL STRING;
  containing_shape : Item_shape;
END_ENTITY;

ENTITY Shape_element_relationship;
  relation_type : STRING;
  description : OPTIONAL STRING;
  relating : Shape_element;
  related : Shape_element;
END_ENTITY;

END_SCHEMA;  -- Shape_property_assignment_arm



SCHEMA External_model_arm;


ENTITY External_geometric_model
  SUBTYPE OF (Geometric_model);
  SELF\Representation.items : SET[1:1] OF Axis_placement;
  external_file : Digital_file;
WHERE
  WR1: SELF\Representation.context_of_items.dimension_count = 3;
  WR2: SELF\Representation.context_of_items.kind = 'external';
END_ENTITY;

END_SCHEMA;  -- External_model_arm



SCHEMA Product_view_definition_properties_arm;


TYPE product_property_assignment = EXTENSIBLE SELECT BASED_ON property_assignment_select WITH
   (Product_view_definition,
    View_definition_relationship);
END_TYPE;

END_SCHEMA;  -- Product_view_definition_properties_arm



SCHEMA Independent_property_arm;


ENTITY Independent_property;
  id : STRING;
  property_type : STRING;
  description : OPTIONAL STRING;
END_ENTITY;

ENTITY Independent_property_relationship;
  relation_type : STRING;
  description : OPTIONAL STRING;
  relating : Independent_property;
  related : Independent_property;
END_ENTITY;

END_SCHEMA;  -- Independent_property_arm



SCHEMA Independent_property_representation_arm;


ENTITY Independent_property_representation;
  description : OPTIONAL STRING;
  property : Independent_property;
  rep : Representation;
  role : OPTIONAL STRING;
END_ENTITY;

END_SCHEMA;  -- Independent_property_representation_arm



SCHEMA Process_property_assignment_arm;


TYPE characterized_activity_definition = EXTENSIBLE SELECT
   (Activity,
    Activity_method);
END_TYPE;

ENTITY Activity_property;
  name : STRING;
  description : STRING;
  described_element : characterized_activity_definition;
END_ENTITY;

ENTITY Activity_property_representation;
  description : OPTIONAL STRING;
  property : Activity_property;
  rep : Representation;
  role : STRING;
END_ENTITY;

ENTITY Applied_independent_activity_property
  SUBTYPE OF (Activity_property);
  base_element_property : Independent_property;
DERIVE
  SELF\Activity_property.name : STRING := base_element_property.property_type;
END_ENTITY;

END_SCHEMA;  -- Process_property_assignment_arm



SCHEMA Product_view_definition_relationship_arm;


ENTITY View_definition_relationship;
  id : OPTIONAL STRING;
  relation_type : OPTIONAL STRING;
  description : OPTIONAL STRING;
  relating_view : Product_view_definition;
  related_view : Product_view_definition;
END_ENTITY;

ENTITY View_definition_usage
  SUBTYPE OF (View_definition_relationship);
END_ENTITY;

END_SCHEMA;  -- Product_view_definition_relationship_arm



SCHEMA Work_request_arm;


TYPE affected_item_select = EXTENSIBLE SELECT;
END_TYPE;

ENTITY Activity_method_assignment;
  relation_type : STRING;
  assigned_method : Activity_method;
  associated_request : Work_request;
END_ENTITY;

ENTITY Affected_items_assignment;
  assigned_work_request : Work_request;
  items : SET[1:?] OF affected_item_select;
END_ENTITY;

ENTITY Work_request;
  request_id : STRING;
  version_id : STRING;
  description : OPTIONAL STRING;
  purpose : STRING;
END_ENTITY;

ENTITY Work_request_status;
  status : STRING;
  work_request : Work_request;
END_ENTITY;

END_SCHEMA;  -- Work_request_arm



SCHEMA Work_order_arm;


ENTITY Directed_activity
  SUBTYPE OF (Activity);
  directive : Work_order;
END_ENTITY;

ENTITY Work_order;
  name : STRING;
  description : OPTIONAL STRING;
  in_response_to : SET[0:?] OF Work_request;
END_ENTITY;

END_SCHEMA;  -- Work_order_arm



SCHEMA Certification_arm;


TYPE certification_item = EXTENSIBLE GENERIC_ENTITY SELECT;
END_TYPE;

ENTITY Certification;
  name : STRING;
  description : OPTIONAL STRING;
  kind : STRING;
END_ENTITY;

ENTITY Certification_assignment;
  assigned_certification : Certification;
  items : SET[1:?] OF certification_item;
  role : STRING;
END_ENTITY;

END_SCHEMA;  -- Certification_arm



SCHEMA Product_replacement_arm;


ENTITY Alternate_product_relationship;
  name : OPTIONAL STRING;
  description : OPTIONAL STRING;
  alternate_product : Product;
  base_product : Product;
  criteria : STRING;
UNIQUE
  UR1: alternate_product, base_product;
WHERE
  WR1: alternate_product :<>: base_product;
END_ENTITY;

ENTITY Assembly_relationship_substitution;
  name : OPTIONAL STRING;
  description : OPTIONAL STRING;
  base_relationship : Assembly_component_relationship;
  substitute_relationship : Assembly_component_relationship;
UNIQUE
  UR1: base_relationship, substitute_relationship;
WHERE
  WR1: base_relationship.relating_view :=: substitute_relationship.relating_view;
  WR2: base_relationship :<>: substitute_relationship;
END_ENTITY;

END_SCHEMA;  -- Product_replacement_arm



SCHEMA Activity_arm;


TYPE activity_item = EXTENSIBLE GENERIC_ENTITY SELECT;
END_TYPE;

ENTITY Activity;
  id : STRING;
  name : STRING;
  description : OPTIONAL STRING;
  chosen_method : Activity_method;
END_ENTITY;

ENTITY Activity_relationship;
  name : STRING;
  description : OPTIONAL STRING;
  relating_activity : Activity;
  related_activity : Activity;
END_ENTITY;

ENTITY Activity_status;
  assigned_activity : Activity;
  status : STRING;
END_ENTITY;

ENTITY Applied_activity_assignment;
  assigned_activity : Activity;
  items : SET[1:?] OF activity_item;
  role : STRING;
END_ENTITY;

END_SCHEMA;  -- Activity_arm



SCHEMA Activity_method_arm;


ENTITY Activity_method;
  name : STRING;
  description : OPTIONAL STRING;
  consequence : OPTIONAL STRING;
  purpose : STRING;
END_ENTITY;

END_SCHEMA;  -- Activity_method_arm



SCHEMA Value_with_unit_arm;


TYPE any_number_value = NUMBER;
END_TYPE;

TYPE any_string_value = STRING;
END_TYPE;

TYPE length_measure = REAL;
END_TYPE;

TYPE measure_value = EXTENSIBLE SELECT
   (any_number_value,
    any_string_value,
    length_measure,
    plane_angle_measure);
END_TYPE;

TYPE plane_angle_measure = REAL;
END_TYPE;

ENTITY Amount_of_substance_unit
  SUBTYPE OF (Unit);
END_ENTITY;

ENTITY Context_dependent_unit
  SUBTYPE OF (Unit);
WHERE
  WR1: EXISTS(SELF\Unit.name);
END_ENTITY;

ENTITY Conversion_based_unit
  SUBTYPE OF (Unit);
  conversion_factor : Value_with_unit;
WHERE
  WR1: EXISTS(SELF\Unit.name);
END_ENTITY;

ENTITY Derived_unit
  SUBTYPE OF (Unit);
  elements : SET[1:?] OF Derived_unit_element;
END_ENTITY;

ENTITY Derived_unit_element;
  base_unit : Unit;
  exponent : REAL;
END_ENTITY;

ENTITY Duration
  SUBTYPE OF (Value_with_unit);
WHERE
  WR1: 'VALUE_WITH_UNIT_ARM.' + 'TIME_UNIT' IN TYPEOF(SELF\Value_with_unit.unit);
END_ENTITY;

ENTITY Electric_current_unit
  SUBTYPE OF (Unit);
END_ENTITY;

ENTITY Length_unit
  SUBTYPE OF (Unit);
END_ENTITY;

ENTITY Luminous_intensity_unit
  SUBTYPE OF (Unit);
END_ENTITY;

ENTITY Mass_unit
  SUBTYPE OF (Unit);
END_ENTITY;

ENTITY Plane_angle_unit
  SUBTYPE OF (Unit);
END_ENTITY;

ENTITY Ratio_unit
  SUBTYPE OF (Unit);
END_ENTITY;

ENTITY Solid_angle_unit
  SUBTYPE OF (Unit);
END_ENTITY;

ENTITY Thermodynamic_temperature_unit
  SUBTYPE OF (Unit);
END_ENTITY;

ENTITY Time_unit
  SUBTYPE OF (Unit);
END_ENTITY;

ENTITY Uncertainty_with_unit
  SUBTYPE OF (Value_with_unit);
  name : STRING;
  description : OPTIONAL STRING;
END_ENTITY;

ENTITY Unit
  SUPERTYPE OF (ONEOF (Amount_of_substance_unit,
                       Electric_current_unit,
                       Length_unit,
                       Luminous_intensity_unit,
                       Mass_unit,
                       Plane_angle_unit,
                       Ratio_unit,
                       Solid_angle_unit,
                       Thermodynamic_temperature_unit,
                       Time_unit));
  name : STRING;
  si_unit : BOOLEAN;
END_ENTITY;

ENTITY Value_with_unit;
  unit : Unit;
  value_component : measure_value;
END_ENTITY;

END_SCHEMA;  -- Value_with_unit_arm



SCHEMA Part_definition_relationship_arm;


ENTITY Make_from_relationship
  SUBTYPE OF (View_definition_usage);
  SELF\View_definition_relationship.relating_view : Part_view_definition;
  SELF\View_definition_relationship.related_view : Part_view_definition;
  quantity : OPTIONAL Value_with_unit;
  priority : OPTIONAL INTEGER;
WHERE
  WR1: SELF\View_definition_relationship.relating_view :<>: SELF\View_definition_relationship.related_view;
  WR2: NOT (EXISTS(quantity)) XOR ((NOT ('NUMBER' IN TYPEOF(quantity.value_component))) XOR (quantity.value_component > 0));
END_ENTITY;

END_SCHEMA;  -- Part_definition_relationship_arm



SCHEMA Configuration_item_arm;


TYPE version_or_definition = SELECT
   (Product_version,
    Product_view_definition);
END_TYPE;

ENTITY Item_design_association;
  configuration : Product_configuration;
  design : version_or_definition;
UNIQUE
  UR1: configuration, design;
END_ENTITY;

ENTITY Product_configuration;
  id : STRING;
  name : STRING;
  description : OPTIONAL STRING;
  item_context : Product_concept;
INVERSE
  corresponding_design : SET[0:1] OF Item_design_association FOR configuration;
END_ENTITY;

END_SCHEMA;  -- Configuration_item_arm



SCHEMA Effectivity_arm;


ENTITY Dated_effectivity
  SUBTYPE OF (Effectivity);
  start_bound : date_or_event;
  end_bound : OPTIONAL date_or_event;
END_ENTITY;

ENTITY Effectivity
  SUPERTYPE OF (ONEOF (Serial_effectivity,
                       Dated_effectivity,
                       Lot_effectivity,
                       Time_interval_effectivity));
  id : STRING;
  name : STRING;
  description : OPTIONAL STRING;
END_ENTITY;

ENTITY Effectivity_relationship;
  relation_type : STRING;
  description : OPTIONAL STRING;
  relating_effectivity : Effectivity;
  related_effectivity : Effectivity;
END_ENTITY;

ENTITY Lot_effectivity
  SUBTYPE OF (Effectivity);
  lot_id : STRING;
  lot_size : Value_with_unit;
END_ENTITY;

ENTITY Serial_effectivity
  SUBTYPE OF (Effectivity);
  start_id : STRING;
  end_id : OPTIONAL STRING;
END_ENTITY;

ENTITY Time_interval_effectivity
  SUBTYPE OF (Effectivity);
  effectivity_period : Time_interval;
END_ENTITY;

END_SCHEMA;  -- Effectivity_arm



SCHEMA Configuration_effectivity_arm;


ENTITY Item_usage_effectivity;
  effectivity_domain : Effectivity;
  item_usage_relationship : View_definition_usage;
  resolved_configuration : Item_design_association;
END_ENTITY;

END_SCHEMA;  -- Configuration_effectivity_arm



SCHEMA Effectivity_application_arm;


TYPE effectivity_item = EXTENSIBLE SELECT;
END_TYPE;

ENTITY Effectivity_assignment;
  assigned_effectivity : Effectivity;
  role : STRING;
  items : SET[1:?] OF effectivity_item;
END_ENTITY;

END_SCHEMA;  -- Effectivity_application_arm



SCHEMA Product_concept_identification_arm;


ENTITY Market;
  name : STRING;
  market_segment_type : OPTIONAL STRING;
END_ENTITY;

ENTITY Product_concept;
  id : STRING;
  name : STRING;
  description : OPTIONAL STRING;
  target_market : OPTIONAL Market;
UNIQUE
  UR1: id;
END_ENTITY;

END_SCHEMA;  -- Product_concept_identification_arm



SCHEMA Project_arm;


TYPE project_item = EXTENSIBLE SELECT;
END_TYPE;

ENTITY Project;
  id : STRING;
  name : STRING;
  description : OPTIONAL STRING;
  responsible_organizations : SET[0:?] OF Organization;
  planned_start_date : OPTIONAL date_or_event;
  planned_end_date : OPTIONAL date_or_event;
  actual_start_date : OPTIONAL date_or_date_time_select;
  actual_end_date : OPTIONAL date_or_date_time_select;
END_ENTITY;

ENTITY Project_assignment;
  assigned_project : Project;
  role : STRING;
  items : SET[0:?] OF project_item;
END_ENTITY;

ENTITY Project_relationship;
  relation_type : STRING;
  description : OPTIONAL STRING;
  relating_project : Project;
  related_project : Project;
END_ENTITY;

END_SCHEMA;  -- Project_arm



SCHEMA Contract_arm;


TYPE contract_item = EXTENSIBLE SELECT;
END_TYPE;

ENTITY Contract;
  id : STRING;
  purpose : STRING;
  kind : STRING;
END_ENTITY;

ENTITY Contract_assignment;
  assigned_contract : Contract;
  items : SET[1:?] OF contract_item;
END_ENTITY;

END_SCHEMA;  -- Contract_arm



SCHEMA Event_arm;


TYPE date_or_event = SELECT
   (Event,
    Calendar_date,
    Date_time);
END_TYPE;

ENTITY Event;
  id : STRING;
  name : STRING;
  description : OPTIONAL STRING;
  actual_start_date : OPTIONAL date_or_date_time_select;
  planned_start_date : OPTIONAL date_or_date_time_select;
END_ENTITY;

ENTITY Event_relationship;
  relation_type : STRING;
  description : OPTIONAL STRING;
  relating_event : Event;
  related_event : Event;
END_ENTITY;

ENTITY Relative_event
  SUBTYPE OF (Event);
  base_event : Event;
  offset : Duration;
END_ENTITY;

END_SCHEMA;  -- Event_arm



SCHEMA Time_interval_arm;


ENTITY Time_interval;
  id : STRING;
  name : STRING;
  description : OPTIONAL STRING;
END_ENTITY;

ENTITY Time_interval_relationship;
  relation_type : STRING;
  description : STRING;
  relating_time_interval : Time_interval;
  related_time_interval : Time_interval;
END_ENTITY;

ENTITY Time_interval_with_bounds
  SUBTYPE OF (Time_interval);
  primary_bound : OPTIONAL date_or_event;
  secondary_bound : OPTIONAL date_or_event;
  duration_from_primary_bound : OPTIONAL Duration;
WHERE
  WR1: NOT (EXISTS(secondary_bound) AND EXISTS(duration_from_primary_bound));
  WR2: EXISTS(primary_bound) OR EXISTS(secondary_bound);
END_ENTITY;

END_SCHEMA;  -- Time_interval_arm



SCHEMA Class_arm;


ENTITY Class
  SUPERTYPE OF (ONEOF (Class_by_extension,
                       Class_by_intension));
  id : STRING;
  name : STRING;
  description : OPTIONAL STRING;
END_ENTITY;

ENTITY Class_by_extension
  SUBTYPE OF (Class);
END_ENTITY;

ENTITY Class_by_intension
  SUBTYPE OF (Class);
END_ENTITY;

END_SCHEMA;  -- Class_arm



SCHEMA Multi_linguism_arm;


TYPE string_select = EXTENSIBLE GENERIC_ENTITY SELECT;
END_TYPE;

ENTITY Language;
  language_code : STRING;
  country_code : OPTIONAL STRING;
UNIQUE
  UR1: language_code;
END_ENTITY;

ENTITY Language_indication;
  considered_instance : string_select;
  considered_attribute : STRING;
  used_language : Language;
END_ENTITY;

ENTITY Attribute_translation_assignment;
  considered_instance : string_select;
  considered_attribute : STRING;
  translation_text : STRING;
  translation_language : Language;
UNIQUE
  UR1: considered_instance, considered_attribute, translation_language;
END_ENTITY;

END_SCHEMA;  -- Multi_linguism_arm



SCHEMA Extended_measure_representation_arm;


TYPE limit_qualifier_list = ENUMERATION OF
   (minimum,
maximum);
END_TYPE;

ENTITY Measure_item_with_precision
  SUBTYPE OF (Measure_item);
  significant_digits : INTEGER;
END_ENTITY;

ENTITY Qualified_property_value_representation
  SUBTYPE OF (Property_value_representation);
  value_determination : OPTIONAL STRING;
  qualifier : OPTIONAL STRING;
END_ENTITY;

ENTITY Value_limit
  SUBTYPE OF (Measure_item);
  limit_qualifier : limit_qualifier_list;
  limit : Value_with_unit;
END_ENTITY;

ENTITY Value_limit_with_global_unit
  SUBTYPE OF (Measure_item);
  limit : Numerical_item_with_global_unit;
  limit_qualifier : limit_qualifier_list;
END_ENTITY;

ENTITY Value_list
  SUBTYPE OF (Measure_item);
  values : LIST[1:?] OF Measure_item;
END_ENTITY;

ENTITY Value_range
  SUBTYPE OF (Measure_item);
  lower_limit : Numerical_item_with_unit;
  upper_limit : Numerical_item_with_unit;
END_ENTITY;

ENTITY Value_range_with_global_unit
  SUBTYPE OF (Measure_item);
  lower_limit : Numerical_item_with_global_unit;
  upper_limit : Numerical_item_with_global_unit;
END_ENTITY;

ENTITY Value_set
  SUBTYPE OF (Measure_item);
  values : SET[1:?] OF Measure_item;
END_ENTITY;

ENTITY Value_with_tolerances
  SUBTYPE OF (Measure_item);
  item_value : Numerical_item_with_unit;
  lower_limit : REAL;
  upper_limit : REAL;
END_ENTITY;

SUBTYPE_CONSTRAINT alternate_measure_items FOR Measure_item;
  ABSTRACT SUPERTYPE;
  ONEOF (Measure_item_with_precision,
         Numerical_item_with_global_unit,
         Numerical_item_with_unit,
         Value_limit,
         Value_limit_with_global_unit,
         Value_list,
         Value_range,
         Value_range_with_global_unit,
         Value_set,
         Value_with_tolerances);
END_SUBTYPE_CONSTRAINT;

END_SCHEMA;  -- Extended_measure_representation_arm



SCHEMA Group_arm;


TYPE groupable_item = EXTENSIBLE GENERIC_ENTITY SELECT ;
WHERE
  WR1: NOT ('GROUP_ARM.GROUP' IN TYPEOF(SELF));
END_TYPE;

ENTITY Group;
  id : OPTIONAL STRING;
  name : STRING;
  description : OPTIONAL STRING;
  elements : SET[0:?] OF groupable_item;
  membership_meaning : OPTIONAL STRING;
END_ENTITY;

ENTITY Group_relationship;
  description : OPTIONAL STRING;
  relation_type : STRING;
  relating_group : Group;
  related_group : Group;
END_ENTITY;

END_SCHEMA;  -- Group_arm



SCHEMA Classification_assignment_arm;


TYPE classification_item = EXTENSIBLE GENERIC_ENTITY SELECT;
END_TYPE;

ENTITY Classification_assignment;
  assigned_class : Class;
  items : SET[1:?] OF classification_item;
  role : OPTIONAL STRING;
END_ENTITY;

END_SCHEMA;  -- Classification_assignment_arm



SCHEMA Measure_representation_arm;


ENTITY Measure_item
  ABSTRACT SUPERTYPE
  SUBTYPE OF (Representation_item);
WHERE
  WR1: SIZEOF(USEDIN(SELF, 'FOUNDATION_REPRESENTATION_ARM.REPRESENTATION.ITEMS')) > 0;
END_ENTITY;

ENTITY Numerical_item_with_global_unit
  SUBTYPE OF (Measure_item);
  value_component : measure_value;
WHERE
  WR1: SIZEOF(QUERY(pvr <* QUERY(r <* USEDIN(SELF, 'FOUNDATION_REPRESENTATION_ARM.REPRESENTATION.ITEMS') | 'MEASURE_REPRESENTATION_ARM.PROPERTY_VALUE_REPRESENTATION' IN TYPEOF(r)) | EXISTS(pvr.context_of_items.units))) > 0;
END_ENTITY;

ENTITY Numerical_item_with_unit
  SUBTYPE OF (Measure_item, Value_with_unit);
END_ENTITY;

ENTITY Property_value_representation
  SUBTYPE OF (Representation);
  SELF\Representation.context_of_items : Numerical_representation_context;
END_ENTITY;

END_SCHEMA;  -- Measure_representation_arm



SCHEMA Document_and_version_identification_arm;


ENTITY Document
  SUBTYPE OF (Product);
END_ENTITY;

ENTITY Document_version
  SUBTYPE OF (Product_version);
  SELF\Product_version.of_product : Document;
END_ENTITY;

RULE document_version_constraint FOR
(Product_version);
WHERE
  WR1: SIZEOF(QUERY(pv <* Product_version | (NOT ('DOCUMENT_AND_VERSION_IDENTIFICATION_ARM.' + 'DOCUMENT_VERSION' IN TYPEOF(pv))) AND ('DOCUMENT_AND_VERSION_IDENTIFICATION_ARM.' + 'DOCUMENT' IN TYPEOF(pv.of_product)))) = 0;
END_RULE;

END_SCHEMA;  -- Document_and_version_identification_arm



SCHEMA Document_assignment_arm;


TYPE assigned_document_select = SELECT
   (Document,
    Document_definition,
    Document_version,
    File);
END_TYPE;

TYPE documented_element_select = EXTENSIBLE SELECT;
END_TYPE;

ENTITY Document_assignment;
  assigned_document : assigned_document_select;
  is_assigned_to : documented_element_select;
  role : STRING;
END_ENTITY;

ENTITY Partial_document_assignment
  SUBTYPE OF (Document_assignment);
  document_portion : STRING;
END_ENTITY;

END_SCHEMA;  -- Document_assignment_arm



SCHEMA Document_definition_arm;


TYPE document_location_select = SELECT BASED_ON external_identification_item WITH
   (Document_definition);
END_TYPE;

ENTITY Digital_document_definition
  SUBTYPE OF (Document_definition);
  files : SET[0:?] OF Digital_file;
END_ENTITY;

ENTITY Document_definition
  SUPERTYPE OF (ONEOF (Digital_document_definition,
                       Physical_document_definition))
  SUBTYPE OF (Product_view_definition);
  SELF\Product_view_definition.name RENAMED description : OPTIONAL STRING;
  SELF\Product_view_definition.defined_version RENAMED associated_document_version : Document_version;
END_ENTITY;

ENTITY Document_location_identification
  SUBTYPE OF (External_source_identification);
WHERE
  WR1: 'DOCUMENT_DEFINITION_ARM.DOCUMENT_DEFINITION' IN TYPEOF(SELF\External_source_identification.item);
END_ENTITY;

ENTITY Physical_document_definition
  SUBTYPE OF (Document_definition);
  components : SET[0:?] OF Hardcopy;
END_ENTITY;

RULE document_definition_constraint FOR
(Product_view_definition);
WHERE
  WR1: SIZEOF(QUERY(dd <* Product_view_definition | (NOT ('DOCUMENT_DEFINITION_ARM.' + 'DOCUMENT_DEFINITION' IN TYPEOF(dd))) AND ('DOCUMENT_DEFINITION_ARM.' + 'DOCUMENT_VERSION' IN TYPEOF(dd.defined_version)))) = 0;
END_RULE;

END_SCHEMA;  -- Document_definition_arm



SCHEMA Document_structure_arm;


ENTITY Document_definition_relationship;
  relation_type : STRING;
  description : OPTIONAL STRING;
  relating_document_definition : Document_definition;
  related_document_definition : Document_definition;
WHERE
  WR1: relating_document_definition :<>: related_document_definition;
END_ENTITY;

ENTITY File_relationship;
  relation_type : STRING;
  description : OPTIONAL STRING;
  relating_document_file : File;
  related_document_file : File;
WHERE
  WR1: relating_document_file :<>: related_document_file;
END_ENTITY;

END_SCHEMA;  -- Document_structure_arm



SCHEMA Document_properties_arm;


TYPE descriptive_or_numerical = SELECT
   (Descriptive_document_property,
    Numerical_document_property);
END_TYPE;

TYPE document_property_item = SELECT BASED_ON property_assignment_select WITH
   (Document_definition,
    File);
END_TYPE;

ENTITY Assigned_document_property
  SUBTYPE OF (Assigned_property);
  SELF\Assigned_property.described_element : document_property_item;
DERIVE
  SELF\Assigned_property.name : STRING := 'document property';
UNIQUE
  UR1: SELF\Assigned_property.described_element;
WHERE
  WR1: SIZEOF(['DOCUMENT_PROPERTIES_ARM.DOCUMENT_DEFINITION', 'DOCUMENT_PROPERTIES_ARM.FILE'] * TYPEOF(SELF\Assigned_property.described_element)) = 1;
END_ENTITY;

ENTITY Descriptive_document_property
  SUBTYPE OF (String_representation_item);
INVERSE
  valued_characteristic : SET[1:1] OF Document_property_representation FOR items;
END_ENTITY;

ENTITY Document_property_representation
  SUBTYPE OF (Representation);
  SELF\Representation.items : SET[1:?] OF descriptive_or_numerical;
WHERE
  WR1: SIZEOF(QUERY(pr <* USEDIN(SELF, 'PROPERTY_ASSIGNMENT_ARM.PROPERTY_REPRESENTATION.REP') | 'DOCUMENT_PROPERTIES_ARM.ASSIGNED_PROPERTY' IN TYPEOF(pr.property))) > 0;
  WR2: SELF\Representation.context_of_items.kind = 'document parameters';
  WR3: valid_document_property_representation(SELF);
  WR4: SIZEOF(QUERY(it1 <* SELF\Representation.items | SIZEOF(QUERY(it2 <* SELF\Representation.items | it1.name = it2.name)) > 1)) = 0;
END_ENTITY;

ENTITY Numerical_document_property
  SUBTYPE OF (Numerical_item_with_unit);
INVERSE
  valued_characteristic : SET[1:1] OF Document_property_representation FOR items;
END_ENTITY;


FUNCTION valid_document_property_representation
 (rep : Document_property_representation) : LOGICAL;

  CASE rep.name OF 
    'document content':
      BEGIN
        RETURN (SIZEOF(QUERY(items <* rep\Representation.items | NOT (items.name IN ['detail level', 'geometry type', 'real world scale']))) = 0);
      END;
    'document creation':
      BEGIN
        IF NOT (SIZEOF(QUERY(items <* rep\Representation.items | NOT (items.name IN ['creating interface', 'creating system', 'operating system']))) = 0) THEN
          RETURN (FALSE);
        END_IF;
        IF NOT (SIZEOF(QUERY(items <* rep\Representation.items | NOT (items.name IN ['creating system']))) = 1) THEN
          RETURN (FALSE);
        ELSE
          RETURN (TRUE);
        END_IF;
      END;
    'document format':
      BEGIN
        RETURN (SIZEOF(QUERY(items <* rep\Representation.items | NOT (items.name IN ['character code', 'data format', 'size format', 'size format standard']))) = 0);
      END;
    'document size':
      BEGIN
        RETURN (SIZEOF(QUERY(items <* rep\Representation.items | NOT (items.name IN ['file size', 'page count']))) = 0);
      END;
    OTHERWISE:
      RETURN (UNKNOWN);
  END_CASE;
      

END_FUNCTION;


END_SCHEMA;  -- Document_properties_arm



SCHEMA File_identification_arm;


TYPE located_select = SELECT BASED_ON external_identification_item WITH
   (File);
END_TYPE;

ENTITY Digital_file
  SUBTYPE OF (File);
END_ENTITY;

ENTITY File
  ABSTRACT SUPERTYPE OF (ONEOF (Digital_file,
                                Hardcopy));
  id : STRING;
  version : OPTIONAL STRING;
  contained_data_type : OPTIONAL STRING;
END_ENTITY;

ENTITY Hardcopy
  SUBTYPE OF (File);
END_ENTITY;

ENTITY File_location_identification
  SUBTYPE OF (External_item_identification);
WHERE
  WR1: 'FILE_IDENTIFICATION_ARM.FILE' IN TYPEOF(SELF\External_source_identification.item);
END_ENTITY;

END_SCHEMA;  -- File_identification_arm



SCHEMA External_item_identification_assignment_arm;


TYPE external_identification_item = EXTENSIBLE GENERIC_ENTITY SELECT;
END_TYPE;

ENTITY External_item_identification
  SUBTYPE OF (External_source_identification);
  external_id : STRING;
END_ENTITY;

ENTITY External_source_identification;
  source_id : STRING;
  source_type : STRING;
  item : external_identification_item;
  description : OPTIONAL STRING;
END_ENTITY;

END_SCHEMA;  -- External_item_identification_assignment_arm



SCHEMA Single_part_representation_arm;


TYPE spr_documented_element_select = SELECT BASED_ON documented_element_select WITH
   (Part_view_definition,
    Part,
    Part_version);
END_TYPE;

TYPE spr_product_property_assignment = SELECT BASED_ON property_assignment_select WITH
   (Part_view_definition);
END_TYPE;

TYPE spr_organization_or_person_in_organization_item = EXTENSIBLE SELECT BASED_ON organization_or_person_in_organization_item WITH
   (Document,
    Document_version,
    Document_definition,
    Part,
    Part_view_definition,
    Part_version);
END_TYPE;

END_SCHEMA;  -- Single_part_representation_arm



SCHEMA Product_structure_arm;


TYPE ps_product_property_assignment = SELECT BASED_ON property_assignment_select WITH
   (View_definition_relationship);
END_TYPE;

ENTITY Alternate_part_relationship
  SUBTYPE OF (Alternate_product_relationship);
  SELF\Alternate_product_relationship.alternate_product : Part;
  SELF\Alternate_product_relationship.base_product : Part;
END_ENTITY;

END_SCHEMA;  -- Product_structure_arm



SCHEMA Requirement_identification_and_version_arm;


TYPE requirement_identification_and_version_identification_item = SELECT BASED_ON identification_item WITH
   (Requirement,
    Requirement_version);
END_TYPE;

ENTITY Requirement
  SUBTYPE OF (Product);
END_ENTITY;

ENTITY Requirement_version
  SUBTYPE OF (Product_version);
  SELF\Product_version.of_product : Requirement;
END_ENTITY;

ENTITY Requirement_version_relationship
  SUBTYPE OF (Product_version_relationship);
  SELF\Product_version_relationship.relating_version RENAMED predecessor : Requirement_version;
  SELF\Product_version_relationship.related_version RENAMED successor : Requirement_version;
END_ENTITY;

END_SCHEMA;  -- Requirement_identification_and_version_arm



SCHEMA Requirement_view_definition_arm;


TYPE requirement_view_definition_identification_item = SELECT BASED_ON identification_item WITH
   (Requirement_view_definition);
END_TYPE;

ENTITY Requirement_view_definition
  SUBTYPE OF (Product_view_definition);
  SELF\Product_view_definition.defined_version : Requirement_version;
END_ENTITY;

END_SCHEMA;  -- Requirement_view_definition_arm



SCHEMA Requirement_view_definition_relationship_arm;


ENTITY Requirement_collection_relationship
  SUBTYPE OF (View_definition_relationship);
  SELF\View_definition_relationship.relating_view RENAMED collection : Requirement_view_definition;
  SELF\View_definition_relationship.related_view RENAMED member : Requirement_view_definition;
END_ENTITY;

ENTITY Tracing_relationship
  SUBTYPE OF (View_definition_relationship);
  SELF\View_definition_relationship.relating_view RENAMED traces_from : Requirement_view_definition;
  SELF\View_definition_relationship.related_view RENAMED traces_to : Requirement_view_definition;
END_ENTITY;

END_SCHEMA;  -- Requirement_view_definition_relationship_arm



SCHEMA Product_as_individual_arm;


TYPE product_as_individual_identification_item = SELECT BASED_ON identification_item WITH
   (Product_as_individual,
    Product_as_individual_version,
    Product_as_individual_view);
END_TYPE;

ENTITY Product_as_individual
  SUBTYPE OF (Product);
END_ENTITY;

ENTITY Product_as_individual_version
  ABSTRACT SUPERTYPE OF (ONEOF (Product_as_planned,
                                Product_as_realized))
  SUBTYPE OF (Product_version);
  SELF\Product_version.of_product : Product_as_individual;
END_ENTITY;

ENTITY Product_as_individual_view
  SUBTYPE OF (Product_view_definition);
  SELF\Product_view_definition.defined_version : Product_as_individual_version;
END_ENTITY;

ENTITY Product_as_planned
  SUBTYPE OF (Product_as_individual_version);
END_ENTITY;

ENTITY Product_as_realized
  SUBTYPE OF (Product_as_individual_version);
END_ENTITY;

ENTITY Product_design_to_individual;
  product_design : Product;
  individual_product : Product_as_individual;
END_ENTITY;

ENTITY Product_design_version_to_individual;
  product_design_version : Product_version;
  individual_product : Product_as_individual_version;
END_ENTITY;

ENTITY Product_planned_to_realized;
  planned_product : Product_as_planned;
  realized_product : Product_as_realized;
END_ENTITY;

END_SCHEMA;  -- Product_as_individual_arm



SCHEMA Set_theory_arm;


ENTITY Complement;
  id : STRING;
  name : STRING;
  description : STRING;
  set_1 : Class;
  set_2 : Class;
  universe : Class;
END_ENTITY;

ENTITY Intersection;
  id : STRING;
  name : STRING;
  description : OPTIONAL STRING;
  operand : SET[2:?] OF Class;
  resultant : Class;
END_ENTITY;

ENTITY Power_set;
  id : STRING;
  name : STRING;
  description : OPTIONAL STRING;
  base : Class;
  derived : Class;
END_ENTITY;

ENTITY Proper_subset;
  id : STRING;
  name : STRING;
  description : OPTIONAL STRING;
  subset : Class;
  superset : Class;
END_ENTITY;

ENTITY Same_membership;
  id : STRING;
  name : STRING;
  description : OPTIONAL STRING;
  set_1 : Class;
  set_2 : Class;
END_ENTITY;

ENTITY Subset;
  id : STRING;
  name : STRING;
  description : OPTIONAL STRING;
  subset : Class;
  superset : Class;
END_ENTITY;

ENTITY Union;
  id : STRING;
  name : STRING;
  description : OPTIONAL STRING;
  operand : SET[2:?] OF Class;
  resultant : Class;
END_ENTITY;

END_SCHEMA;  -- Set_theory_arm



SCHEMA System_breakdown_arm;


ENTITY System_breakdown
  SUBTYPE OF (Breakdown);
END_ENTITY;

ENTITY System_breakdown_context
  SUBTYPE OF (Breakdown_context);
  SELF\Breakdown_context.breakdown : System_breakdown_version;
  SELF\Breakdown_context.breakdown_element : System_element_definition;
END_ENTITY;

ENTITY System_breakdown_version
  SUBTYPE OF (Breakdown_version);
  SELF\Breakdown_version.of_product : System_breakdown;
END_ENTITY;

ENTITY System_element
  SUBTYPE OF (Breakdown_element);
END_ENTITY;

ENTITY System_element_definition
  SUBTYPE OF (Breakdown_element_definition);
  SELF\Breakdown_element_definition.defined_version : System_element_version;
END_ENTITY;

ENTITY System_element_usage
  SUBTYPE OF (Breakdown_element_usage);
  SELF\Breakdown_element_usage.parent_element : System_element_definition;
  SELF\Breakdown_element_usage.child_element : System_element_definition;
END_ENTITY;

ENTITY System_element_version
  SUBTYPE OF (Breakdown_element_version);
  SELF\Breakdown_element_version.of_product : System_element;
END_ENTITY;

END_SCHEMA;  -- System_breakdown_arm



SCHEMA Physical_breakdown_arm;


ENTITY Physical_breakdown
  SUBTYPE OF (Breakdown);
END_ENTITY;

ENTITY Physical_breakdown_context
  SUBTYPE OF (Breakdown_context);
  SELF\Breakdown_context.breakdown : Physical_breakdown_version;
  SELF\Breakdown_context.breakdown_element : Physical_element_definition;
END_ENTITY;

ENTITY Physical_breakdown_version
  SUBTYPE OF (Breakdown_version);
  SELF\Breakdown_version.of_product : Physical_breakdown;
END_ENTITY;

ENTITY Physical_element
  SUBTYPE OF (Breakdown_element);
END_ENTITY;

ENTITY Physical_element_definition
  SUBTYPE OF (Breakdown_element_definition);
  SELF\Breakdown_element_definition.defined_version : Physical_element_version;
END_ENTITY;

ENTITY Physical_element_usage
  SUBTYPE OF (Breakdown_element_usage);
  SELF\Breakdown_element_usage.parent_element : Physical_element_definition;
  SELF\Breakdown_element_usage.child_element : Physical_element_definition;
END_ENTITY;

ENTITY Physical_element_version
  SUBTYPE OF (Breakdown_element_version);
  SELF\Breakdown_element_version.of_product : Physical_element;
END_ENTITY;

END_SCHEMA;  -- Physical_breakdown_arm



SCHEMA Functional_breakdown_arm;


ENTITY Functional_breakdown
  SUBTYPE OF (Breakdown);
END_ENTITY;

ENTITY Functional_breakdown_context
  SUBTYPE OF (Breakdown_context);
  SELF\Breakdown_context.breakdown : Functional_breakdown_version;
  SELF\Breakdown_context.breakdown_element : Functional_element_definition;
END_ENTITY;

ENTITY Functional_breakdown_version
  SUBTYPE OF (Breakdown_version);
  SELF\Breakdown_version.of_product : Functional_breakdown;
END_ENTITY;

ENTITY Functional_element
  SUBTYPE OF (Breakdown_element);
END_ENTITY;

ENTITY Functional_element_definition
  SUBTYPE OF (Breakdown_element_definition);
  SELF\Breakdown_element_definition.defined_version : Functional_element_version;
END_ENTITY;

ENTITY Functional_element_usage
  SUBTYPE OF (Breakdown_element_usage);
  SELF\Breakdown_element_usage.parent_element : Functional_element_definition;
  SELF\Breakdown_element_usage.child_element : Functional_element_definition;
END_ENTITY;

ENTITY Functional_element_version
  SUBTYPE OF (Breakdown_element_version);
  SELF\Breakdown_element_version.of_product : Functional_element;
END_ENTITY;

END_SCHEMA;  -- Functional_breakdown_arm



SCHEMA Zonal_breakdown_arm;


TYPE in_zone_item = EXTENSIBLE SELECT
   (Product_view_definition);
END_TYPE;

ENTITY In_zone;
  id : STRING;
  name : STRING;
  description : OPTIONAL STRING;
  located_item : in_zone_item;
  zone : Zone_element_definition;
END_ENTITY;

ENTITY Zone_breakdown
  SUBTYPE OF (Breakdown);
END_ENTITY;

ENTITY Zone_breakdown_context
  SUBTYPE OF (Breakdown_context);
  SELF\Breakdown_context.breakdown : Zone_breakdown_version;
  SELF\Breakdown_context.breakdown_element : Zone_element_definition;
END_ENTITY;

ENTITY Zone_breakdown_version
  SUBTYPE OF (Breakdown_version);
  SELF\Breakdown_version.of_product : Zone_breakdown;
END_ENTITY;

ENTITY Zone_element
  SUBTYPE OF (Breakdown_element);
END_ENTITY;

ENTITY Zone_element_definition
  SUBTYPE OF (Breakdown_element_definition);
  SELF\Breakdown_element_definition.defined_version : Zone_element_version;
END_ENTITY;

ENTITY Zone_element_usage
  SUBTYPE OF (Breakdown_element_usage);
  SELF\Breakdown_element_usage.parent_element : Zone_element_definition;
  SELF\Breakdown_element_usage.child_element : Zone_element_definition;
END_ENTITY;

ENTITY Zone_element_version
  SUBTYPE OF (Breakdown_element_version);
  SELF\Breakdown_element_version.of_product : Zone_element;
END_ENTITY;

END_SCHEMA;  -- Zonal_breakdown_arm



SCHEMA Hybrid_breakdown_arm;


ENTITY Hybrid_breakdown
  SUBTYPE OF (Breakdown);
END_ENTITY;

ENTITY Hybrid_breakdown_context
  SUBTYPE OF (Breakdown_context);
  SELF\Breakdown_context.breakdown : Hybrid_breakdown_version;
END_ENTITY;

ENTITY Hybrid_breakdown_version
  SUBTYPE OF (Breakdown_version);
  SELF\Breakdown_version.of_product : Hybrid_breakdown;
END_ENTITY;

ENTITY Hybrid_element_usage
  SUBTYPE OF (Breakdown_element_usage);
END_ENTITY;

END_SCHEMA;  -- Hybrid_breakdown_arm



SCHEMA Requirement_assignment_arm;


TYPE requirement_assignment_item = EXTENSIBLE SELECT;
END_TYPE;

TYPE requirement_source_item = EXTENSIBLE SELECT;
END_TYPE;

ENTITY Requirement_assignment;
  id : STRING;
  description : OPTIONAL STRING;
  assigned_requirement : Requirement_view_definition;
  assigned_to : requirement_assignment_item;
END_ENTITY;

ENTITY Requirement_source;
  id : STRING;
  description : OPTIONAL STRING;
  source : requirement_source_item;
  sourced_requirement : Requirement_view_definition;
END_ENTITY;

END_SCHEMA;  -- Requirement_assignment_arm



SCHEMA Organization_type_arm;


ENTITY Organization_organization_type_relationship;
  organization : Organization;
  organization_type : Organization_type;
END_ENTITY;

ENTITY Organization_type;
  name : STRING;
  description : OPTIONAL STRING;
END_ENTITY;

END_SCHEMA;  -- Organization_type_arm



SCHEMA Information_rights_arm;


TYPE information_usage_right_item = EXTENSIBLE SELECT;
END_TYPE;

TYPE right_approval_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON mri_approval_item WITH
   (Applied_information_usage_right,
    Information_usage_right);
END_TYPE;

TYPE right_contract_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON contract_item WITH
   (Information_usage_right);
END_TYPE;

TYPE right_date_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON mri_date_or_date_time_item WITH
   (Information_usage_right);
END_TYPE;

TYPE right_person_organization_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON mri_organization_or_person_in_organization_item WITH
   (Information_usage_right);
END_TYPE;

ENTITY Applied_information_usage_right;
  item : SET[1:?] OF information_usage_right_item;
  right_applied : Information_usage_right;
END_ENTITY;

ENTITY Information_right;
  id : STRING;
  name : STRING;
  description : OPTIONAL STRING;
  restriction : OPTIONAL STRING;
END_ENTITY;

ENTITY Information_usage_right;
  id : STRING;
  name : STRING;
  comment : OPTIONAL STRING;
  grants_right : SET[1:?] OF Information_right;
END_ENTITY;

ENTITY Information_usage_right_relationship;
  relating : Information_usage_right;
  related : Information_usage_right;
  relation_type : STRING;
END_ENTITY;

END_SCHEMA;  -- Information_rights_arm



SCHEMA Position_in_organization_arm;


TYPE classified_select_for_position = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON classification_item WITH
   (Person_or_organization_or_person_in_organization_in_position_relationship,
    Position,
    Position_group,
    Position_group_relationship,
    Position_position_type_assignment,
    Position_relationship,
    Position_type);
END_TYPE;

TYPE position_context_item = EXTENSIBLE GENERIC_ENTITY SELECT
   (Position_group,
    Organization,
    Project);
END_TYPE;

TYPE position_group_item = EXTENSIBLE GENERIC_ENTITY SELECT;
END_TYPE;

TYPE position_item = EXTENSIBLE GENERIC_ENTITY SELECT;
END_TYPE;

TYPE position_person_or_organization_or_person_in_organization_select = EXTENSIBLE GENERIC_ENTITY SELECT
   (Organization,
    Person,
    Person_in_organization);
END_TYPE;

TYPE position_type_item = EXTENSIBLE GENERIC_ENTITY SELECT;
END_TYPE;

ENTITY Person_or_organization_or_person_in_organization_in_position;
  name : STRING;
  description : STRING;
  person_or_organization : position_person_or_organization_or_person_in_organization_select;
  position : Position;
END_ENTITY;

ENTITY Person_or_organization_or_person_in_organization_in_position_relationship;
  name : STRING;
  description : OPTIONAL STRING;
  relating : Person_or_organization_or_person_in_organization_in_position;
  related : Person_or_organization_or_person_in_organization_in_position;
END_ENTITY;

ENTITY Position;
  name : STRING;
  description : OPTIONAL STRING;
  address : OPTIONAL Address;
  position_context : position_context_item;
END_ENTITY;

ENTITY Position_assignment;
  items : SET[1:?] OF position_item;
  position : Position;
  role : Position_role;
END_ENTITY;

ENTITY Position_group;
  name : STRING;
  description : OPTIONAL STRING;
END_ENTITY;

ENTITY Position_group_assignment;
  items : SET[1:?] OF position_group_item;
  position_group : Position_group;
  role : Position_group_role;
END_ENTITY;

ENTITY Position_group_relationship;
  group : Position_group;
  position : Position;
END_ENTITY;

ENTITY Position_group_role;
  name : STRING;
  description : OPTIONAL STRING;
END_ENTITY;

ENTITY Position_position_type_assignment;
  assigned_position_type : Position_type;
  assigned_to : Position;
END_ENTITY;

ENTITY Position_relationship;
  name : STRING;
  description : OPTIONAL STRING;
  relating_position : Position;
  related_position : Position;
END_ENTITY;

ENTITY Position_role;
  name : STRING;
  description : OPTIONAL STRING;
END_ENTITY;

ENTITY Position_type;
  name : STRING;
  description : OPTIONAL STRING;
  defined_by : Type_of_person;
END_ENTITY;

ENTITY Position_type_assignment;
  items : SET[1:?] OF position_type_item;
  position_type : Position_type;
  role : Position_type_role;
END_ENTITY;

ENTITY Position_type_role;
  name : STRING;
  description : OPTIONAL STRING;
END_ENTITY;

END_SCHEMA;  -- Position_in_organization_arm



SCHEMA Experience_arm;


TYPE defined_activities = EXTENSIBLE GENERIC_ENTITY SELECT
   (Activity_actual,
    Resource_as_realized);
END_TYPE;

TYPE defined_methods = EXTENSIBLE GENERIC_ENTITY SELECT
   (Activity,
    Activity_method,
    Required_resource);
END_TYPE;

TYPE experience_classified_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON classification_item WITH
   (Experience_type);
END_TYPE;

TYPE experience_date_or_date_time_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON date_or_date_time_item WITH
   (Experience_instance);
END_TYPE;

TYPE experience_instance_property_assignment_select = SELECT BASED_ON property_assignment_select WITH
   (Experience_instance);
END_TYPE;

TYPE person_or_organization_or_person_in_organization_select = EXTENSIBLE GENERIC_ENTITY SELECT
   (Organization,
    Person,
    Person_in_organization);
END_TYPE;

ENTITY Experience_gained;
  experience_of : Experience_instance;
  gained_by : person_or_organization_or_person_in_organization_select;
  role : OPTIONAL STRING;
END_ENTITY;

ENTITY Experience_instance;
  description : OPTIONAL STRING;
  is_defined_by : Experience_type;
  consists_of : OPTIONAL defined_activities;
END_ENTITY;

ENTITY Experience_type;
  name : STRING;
  description : OPTIONAL STRING;
  consists_of : OPTIONAL defined_methods;
END_ENTITY;

ENTITY Experience_type_relationship;
  compound_experience : Experience_type;
  component_experience : Experience_type;
END_ENTITY;

END_SCHEMA;  -- Experience_arm



SCHEMA Qualifications_arm;


TYPE qualification_organization_or_person_in_organization_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON organization_or_person_in_organization_item WITH
   (Qualification_assignment,
    Qualification_type);
END_TYPE;

TYPE qualifications_certification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON certification_item WITH
   (Qualification_assignment);
END_TYPE;

TYPE qualifications_classified_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON classification_item WITH
   (Qualification_type);
END_TYPE;

TYPE qualifications_date_or_date_time_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON date_or_date_time_item WITH
   (Qualification_assignment);
END_TYPE;

TYPE qualifications_select = EXTENSIBLE GENERIC_ENTITY SELECT
   (Organization,
    Person,
    Person_in_organization);
END_TYPE;

ENTITY Qualification_assignment;
  assigned_qualification_type : Qualification_type;
  received_by : qualifications_select;
END_ENTITY;

ENTITY Qualification_type;
  name : STRING;
  description : OPTIONAL STRING;
END_ENTITY;

ENTITY Qualification_type_relationship;
  name : STRING;
  description : OPTIONAL STRING;
  relating : Qualification_type;
  related : Qualification_type;
END_ENTITY;

END_SCHEMA;  -- Qualifications_arm



SCHEMA Type_of_person_arm;


TYPE defined_attributes = EXTENSIBLE GENERIC_ENTITY SELECT
   (Experience_type,
    Qualification_type);
END_TYPE;

TYPE type_of_person_classified_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON classification_item WITH
   (Type_of_person,
    Type_of_person_assignment,
    Type_of_person_definition,
    Type_of_person_definition_relationship,
    Type_of_person_definition_required_attributes_relationship);
END_TYPE;

TYPE type_of_person_item_select = EXTENSIBLE GENERIC_ENTITY SELECT;
END_TYPE;

TYPE type_of_person_property_assignment_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON property_assignment_select WITH
   (Type_of_person_definition);
END_TYPE;

ENTITY Type_of_person;
  name : STRING;
  description : OPTIONAL STRING;
  has : SET[0:?] OF Type_of_person_definition;
END_ENTITY;

ENTITY Type_of_person_assignment;
  assigned_type_of_person : Type_of_person;
  items : SET[1:?] OF type_of_person_item_select;
  role : STRING;
END_ENTITY;

ENTITY Type_of_person_definition;
  name : STRING;
  description : OPTIONAL STRING;
END_ENTITY;

ENTITY Type_of_person_definition_relationship;
  name : STRING;
  description : OPTIONAL STRING;
  relating : Type_of_person_definition;
  related : Type_of_person_definition;
END_ENTITY;

ENTITY Type_of_person_definition_required_attributes_relationship;
  assigned_required_attributes : Type_of_person_definition;
  required_attributes : SET[0:?] OF defined_attributes;
END_ENTITY;

END_SCHEMA;  -- Type_of_person_arm



SCHEMA Attribute_classification_arm;


TYPE classified_attribute_select = EXTENSIBLE GENERIC_ENTITY SELECT;
END_TYPE;

ENTITY Attribute_classification;
  allowed_value : Class;
  attribute_name : STRING;
  classified_entity : SET[1:?] OF classified_attribute_select;
END_ENTITY;

END_SCHEMA;  -- Attribute_classification_arm



SCHEMA Product_breakdown_arm;


TYPE breakdown_element_realization_property_assignment_select = SELECT BASED_ON property_assignment_select WITH
   (Breakdown_element_realization,
    Breakdown_element_usage);
END_TYPE;

TYPE breakdown_item = EXTENSIBLE SELECT
   (Breakdown_element_definition,
    Breakdown_element_usage);
END_TYPE;

TYPE product_item = EXTENSIBLE SELECT
   (Product_view_definition,
    View_definition_usage);
END_TYPE;

ENTITY Breakdown
  SUBTYPE OF (Product);
END_ENTITY;

ENTITY Breakdown_context;
  id : STRING;
  name : STRING;
  description : OPTIONAL STRING;
  breakdown : Breakdown_version;
  breakdown_element : Breakdown_element_definition;
END_ENTITY;

ENTITY Breakdown_element
  SUBTYPE OF (Product);
END_ENTITY;

ENTITY Breakdown_element_definition
  SUBTYPE OF (Product_view_definition);
  SELF\Product_view_definition.defined_version : Breakdown_element_version;
END_ENTITY;

ENTITY Breakdown_element_realization
  SUBTYPE OF (Product_definition_element_relationship);
END_ENTITY;

ENTITY Breakdown_element_usage
  SUBTYPE OF (View_definition_usage);
  name : STRING;
  SELF\View_definition_relationship.relating_view RENAMED parent_element : Breakdown_element_definition;
  SELF\View_definition_relationship.related_view RENAMED child_element : Breakdown_element_definition;
END_ENTITY;

ENTITY Breakdown_element_version
  SUBTYPE OF (Product_version);
  SELF\Product_version.of_product : Breakdown_element;
END_ENTITY;

ENTITY Breakdown_of;
  id : STRING;
  name : STRING;
  description : OPTIONAL STRING;
  breakdown : Breakdown_version;
  of_view : Product_view_definition;
END_ENTITY;

ENTITY Breakdown_version
  SUBTYPE OF (Product_version);
  SELF\Product_version.of_product : Breakdown;
INVERSE
  breakdown_of : SET[1:?] OF Breakdown_of FOR breakdown;
END_ENTITY;

ENTITY Product_definition_element_relationship;
  id : STRING;
  name : STRING;
  description : OPTIONAL STRING;
  breakdown : breakdown_item;
  product : product_item;
END_ENTITY;

END_SCHEMA;  -- Product_breakdown_arm



SCHEMA Activity_method_assignment_arm;


TYPE activity_method_item = EXTENSIBLE GENERIC_ENTITY SELECT;
END_TYPE;

ENTITY Activity_method_relationship;
  name : STRING;
  description : OPTIONAL STRING;
  relating_method : Activity_method;
  related_method : Activity_method;
END_ENTITY;

ENTITY Applied_activity_method_assignment;
  assigned_activity_method : Activity_method;
  items : SET[1:?] OF activity_method_item;
  role : STRING;
END_ENTITY;

END_SCHEMA;  -- Activity_method_assignment_arm



SCHEMA Attachment_slot_arm;


ENTITY Attachment_slot
  SUBTYPE OF (Product);
END_ENTITY;

ENTITY Attachment_slot_as_planned
  SUBTYPE OF (Attachment_slot_version);
END_ENTITY;

ENTITY Attachment_slot_as_realized
  SUBTYPE OF (Attachment_slot_version);
END_ENTITY;

ENTITY Attachment_slot_definition
  SUBTYPE OF (Product_view_definition);
  SELF\Product_view_definition.defined_version : Attachment_slot_version;
END_ENTITY;

ENTITY Attachment_slot_design
  SUBTYPE OF (Attachment_slot_version);
END_ENTITY;

ENTITY Attachment_slot_design_to_planned;
  id : STRING;
  name : STRING;
  description : OPTIONAL STRING;
  design : Attachment_slot_design;
  planned : Attachment_slot_as_planned;
WHERE
  WR1: SELF.design.of_product :=: SELF.planned.of_product;
END_ENTITY;

ENTITY Attachment_slot_design_to_realized;
  id : STRING;
  name : STRING;
  description : OPTIONAL STRING;
  design : Attachment_slot_design;
  realized : Attachment_slot_as_realized;
WHERE
  WR1: SELF.design.of_product :=: SELF.realized.of_product;
END_ENTITY;

ENTITY Attachment_slot_on_product;
  id : STRING;
  name : STRING;
  description : OPTIONAL STRING;
  product : Product_view_definition;
  attachment_slot : Attachment_slot_definition;
END_ENTITY;

ENTITY Attachment_slot_planned_to_realized;
  id : STRING;
  name : STRING;
  description : OPTIONAL STRING;
  planned : Attachment_slot_as_planned;
  realized : Attachment_slot_as_realized;
WHERE
  WR1: SELF.planned.of_product :=: SELF.realized.of_product;
END_ENTITY;

ENTITY Attachment_slot_version
  SUPERTYPE OF (ONEOF (Attachment_slot_as_planned,
                       Attachment_slot_as_realized,
                       Attachment_slot_design))
  SUBTYPE OF (Product_version);
  SELF\Product_version.of_product : Attachment_slot;
END_ENTITY;

ENTITY Product_in_attachment_slot
  SUBTYPE OF (View_definition_usage);
  name : STRING;
  SELF\View_definition_relationship.related_view RENAMED attachment_slot : Attachment_slot_definition;
  SELF\View_definition_relationship.relating_view RENAMED product : Product_view_definition;
END_ENTITY;

END_SCHEMA;  -- Attachment_slot_arm



SCHEMA Interface_arm;


TYPE connection_definition_items = SELECT
   (Interface_connector_definition,
    Product_view_definition);
END_TYPE;

TYPE connection_items = SELECT
   (connection_definition_items,
    Interface_connector_occurrence,
    View_definition_relationship);
END_TYPE;

TYPE connector_on_item = EXTENSIBLE SELECT
   (Product_view_definition,
    View_definition_relationship);
END_TYPE;

TYPE interface_definition_item = SELECT
   (Interface_connector_occurrence,
    Product_view_definition);
END_TYPE;

ENTITY Hierarchical_interface_connection
  SUBTYPE OF (Interface_connection);
END_ENTITY;

ENTITY Interface_connection;
  id : STRING;
  description : OPTIONAL STRING;
  connection_type : STRING;
  connecting : connection_items;
  connected : connection_items;
END_ENTITY;

ENTITY Interface_connector
  SUBTYPE OF (Product);
END_ENTITY;

ENTITY Interface_connector_definition
  SUBTYPE OF (Product_view_definition);
  connector_on : Product_view_definition;
  SELF\Product_view_definition.defined_version : Interface_connector_version;
END_ENTITY;

ENTITY Interface_connector_occurrence;
  id : STRING;
  name : STRING;
  description : OPTIONAL STRING;
  occurrence_of : Interface_connector_definition;
  connector_on : connector_on_item;
END_ENTITY;

ENTITY Interface_connector_version
  SUBTYPE OF (Product_version);
  SELF\Product_version.of_product : Interface_connector;
END_ENTITY;

ENTITY Interface_definition_connection;
  id : STRING;
  description : OPTIONAL STRING;
  connection_type : STRING;
  connecting : connection_definition_items;
  connected : connection_definition_items;
END_ENTITY;

ENTITY Interface_definition_for;
  id : STRING;
  name : STRING;
  description : OPTIONAL STRING;
  interface : Interface_specification_definition;
  interface_component : interface_definition_item;
END_ENTITY;

ENTITY Interface_specification
  SUBTYPE OF (Product);
END_ENTITY;

ENTITY Interface_specification_definition
  SUBTYPE OF (Product_view_definition);
  SELF\Product_view_definition.defined_version : Interface_specification_version;
END_ENTITY;

ENTITY Interface_specification_version
  SUBTYPE OF (Product_version);
  SELF\Product_version.of_product : Interface_specification;
END_ENTITY;

END_SCHEMA;  -- Interface_arm



SCHEMA Probability_arm;


ENTITY Probability
  ABSTRACT SUPERTYPE
  SUBTYPE OF (Representation);
END_ENTITY;

ENTITY Probability_by_name
  SUBTYPE OF (Probability);
  SELF\Representation.items RENAMED has_value : SET[1:1] OF Probability_named_value;
END_ENTITY;

ENTITY Probability_derivation_parameter
  SUBTYPE OF (Numerical_item_with_global_unit);
END_ENTITY;

ENTITY Probability_derived
  SUBTYPE OF (Probability_numeric);
  derives_from : Probability_generator;
  has_parameter : LIST[1:?] OF Probability_derivation_parameter;
END_ENTITY;

ENTITY Probability_generator
  ABSTRACT SUPERTYPE
  SUBTYPE OF (Representation);
END_ENTITY;

ENTITY Probability_named_value
  SUBTYPE OF (Representation_item);
END_ENTITY;

ENTITY Probability_numeric
  SUBTYPE OF (Probability);
  SELF\Representation.items RENAMED has_value : SET[1:1] OF Probability_numeric_value;
END_ENTITY;

ENTITY Probability_numeric_value
  SUBTYPE OF (Numerical_item_with_global_unit);
END_ENTITY;

END_SCHEMA;  -- Probability_arm



SCHEMA Condition_arm;


TYPE condition_classification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON classification_item WITH
   (Condition,
    Condition_assignment,
    Condition_parameter,
    Condition_relationship);
END_TYPE;

TYPE condition_item = EXTENSIBLE GENERIC_ENTITY SELECT;
END_TYPE;

TYPE condition_parameter_item = EXTENSIBLE GENERIC_ENTITY SELECT
   (Condition_relationship);
END_TYPE;

ENTITY Condition;
  name : STRING;
  description : OPTIONAL STRING;
END_ENTITY;

ENTITY Condition_assignment;
  assigned_condition : Condition;
  item : condition_item;
END_ENTITY;

ENTITY Condition_parameter;
  name : STRING;
  description : OPTIONAL STRING;
  condition : Condition;
  parameter : OPTIONAL condition_parameter_item;
END_ENTITY;

ENTITY Condition_relationship;
  name : STRING;
  description : OPTIONAL STRING;
  relating_condition : Condition;
  related_condition : Condition;
END_ENTITY;

END_SCHEMA;  -- Condition_arm



SCHEMA Condition_evaluation_arm;


TYPE condition_assignment_classification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON classification_item WITH
   (Condition_evaluation,
    Condition_evaluation_assignment,
    Condition_evaluation_parameter,
    Related_condition_parameter);
END_TYPE;

TYPE condition_evaluation_item = EXTENSIBLE GENERIC_ENTITY SELECT;
END_TYPE;

TYPE condition_evaluation_parameter_item = EXTENSIBLE GENERIC_ENTITY SELECT;
END_TYPE;

ENTITY Condition_evaluation;
  name : STRING;
  description : OPTIONAL STRING;
  result : LOGICAL;
  condition : Condition;
END_ENTITY;

ENTITY Condition_evaluation_assignment;
  assigned_condition_evaluation : Condition_evaluation;
  item : condition_evaluation_item;
END_ENTITY;

ENTITY Condition_evaluation_parameter;
  name : STRING;
  description : OPTIONAL STRING;
  condition_evaluation : Condition_evaluation;
  evaluation_parameter : condition_evaluation_parameter_item;
END_ENTITY;

ENTITY Related_condition_parameter;
  name : STRING;
  description : OPTIONAL STRING;
  conditon_evaluation_parameter : Condition_evaluation_parameter;
  condition_parameter : Condition_parameter;
END_ENTITY;

END_SCHEMA;  -- Condition_evaluation_arm



SCHEMA State_definition_arm;


TYPE state_definition_activity_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON activity_item WITH
   (Applied_state_definition_assignment);
END_TYPE;

TYPE state_definition_classification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON classification_item WITH
   (Applied_state_definition_assignment,
    State_definition,
    State_definition_relationship);
END_TYPE;

TYPE state_definition_identification_item = EXTENSIBLE SELECT BASED_ON identification_item WITH
   (State_definition,
    State_definition_relationship);
END_TYPE;

TYPE state_definition_of_item = EXTENSIBLE GENERIC_ENTITY SELECT;
END_TYPE;

ENTITY And_state_cause_effect_definition
  SUBTYPE OF (State_cause_effect_definition);
END_ENTITY;

ENTITY Applied_state_definition_assignment;
  described_state_definition : State_definition;
  assigned_to : state_definition_of_item;
  role : State_definition_role;
END_ENTITY;

ENTITY Composition_of_state_definition
  SUBTYPE OF (State_definition_relationship);
  SELF\State_definition_relationship.relating RENAMED whole : SET[1:?] OF State_definition;
  SELF\State_definition_relationship.related RENAMED part : SET[1:?] OF State_definition;
END_ENTITY;

ENTITY Or_state_cause_effect_definition
  SUBTYPE OF (State_cause_effect_definition);
END_ENTITY;

ENTITY Sequence_of_state_definition
  SUBTYPE OF (State_definition_relationship);
  SELF\State_definition_relationship.relating RENAMED successor : SET[1:?] OF State_definition;
  SELF\State_definition_relationship.related RENAMED predecessor : SET[1:?] OF State_definition;
END_ENTITY;

ENTITY State_cause_effect_definition
  SUBTYPE OF (State_definition_relationship);
  SELF\State_definition_relationship.relating RENAMED effect : SET[1:?] OF State_definition;
  SELF\State_definition_relationship.related RENAMED cause : SET[1:?] OF State_definition;
END_ENTITY;

ENTITY State_complement_definition
  SUBTYPE OF (State_definition_relationship);
  SELF\State_definition_relationship.relating RENAMED universe : SET[1:?] OF State_definition;
  SELF\State_definition_relationship.related RENAMED set_1 : SET[1:?] OF State_definition;
  set_2 : SET[1:?] OF State_definition;
END_ENTITY;

ENTITY State_definition;
  name : STRING;
  description : OPTIONAL STRING;
END_ENTITY;

ENTITY State_definition_relationship;
  name : STRING;
  description : OPTIONAL STRING;
  relating : SET[1:?] OF State_definition;
  related : SET[1:?] OF State_definition;
END_ENTITY;

ENTITY State_definition_role;
  name : STRING;
  description : OPTIONAL STRING;
END_ENTITY;

ENTITY State_proper_subset_definition
  SUBTYPE OF (State_definition_relationship);
  SELF\State_definition_relationship.related RENAMED proper_subset : SET[1:?] OF State_definition;
  SELF\State_definition_relationship.relating RENAMED proper_superset : SET[1:?] OF State_definition;
END_ENTITY;

ENTITY State_subset_definition
  SUBTYPE OF (State_definition_relationship);
  SELF\State_definition_relationship.relating RENAMED superset : SET[1:?] OF State_definition;
  SELF\State_definition_relationship.related RENAMED subset : SET[1:?] OF State_definition;
END_ENTITY;

ENTITY State_symptom_definition
  SUBTYPE OF (State_definition_relationship);
  SELF\State_definition_relationship.relating RENAMED symptom_effect : SET[1:?] OF State_definition;
  SELF\State_definition_relationship.related RENAMED symptom_cause : SET[1:?] OF State_definition;
END_ENTITY;

ENTITY State_transition_definition
  SUBTYPE OF (State_definition_relationship);
  SELF\State_definition_relationship.relating RENAMED end_state : SET[1:?] OF State_definition;
  SELF\State_definition_relationship.related RENAMED start_state : SET[1:?] OF State_definition;
END_ENTITY;

ENTITY Xor_state_cause_effect_definition
  SUBTYPE OF (State_cause_effect_definition);
END_ENTITY;

END_SCHEMA;  -- State_definition_arm



SCHEMA State_observed_arm;


TYPE state_classification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON classification_item WITH
   (Applied_state_assignment,
    State,
    State_relationship);
END_TYPE;

TYPE state_of_item = EXTENSIBLE GENERIC_ENTITY SELECT;
END_TYPE;

ENTITY Applied_state_assignment;
  described_state : State;
  assigned_to : state_of_item;
  role : State_role;
END_ENTITY;

ENTITY Composition_of_state
  SUBTYPE OF (State_relationship);
  SELF\State_relationship.relating RENAMED whole : SET[1:?] OF State;
  SELF\State_relationship.related RENAMED part : SET[1:?] OF State;
END_ENTITY;

ENTITY Defined_state_relationship;
  name : STRING;
  description : OPTIONAL STRING;
  definitive_state : State_assertion;
  defined_state : State_assessment;
END_ENTITY;

ENTITY Sequence_of_state
  SUBTYPE OF (State_relationship);
  SELF\State_relationship.relating RENAMED successor : SET[1:?] OF State;
  SELF\State_relationship.related RENAMED predecessor : SET[1:?] OF State;
END_ENTITY;

ENTITY State
  SUPERTYPE OF (ONEOF (State_observed,
                       State_predicted));
  name : STRING;
  description : OPTIONAL STRING;
END_ENTITY;

ENTITY State_assertion;
  name : STRING;
  description : OPTIONAL STRING;
  asserted_state : State;
  conformance_state : State_definition;
END_ENTITY;

ENTITY State_assessment;
  name : STRING;
  description : OPTIONAL STRING;
  assessed_state : State;
  comparable_state : State_definition;
END_ENTITY;

ENTITY State_cause_effect
  SUBTYPE OF (State_relationship);
  SELF\State_relationship.relating RENAMED effect : SET[1:?] OF State;
  SELF\State_relationship.related RENAMED cause : SET[1:?] OF State;
END_ENTITY;

ENTITY State_observed
  SUBTYPE OF (State);
END_ENTITY;

ENTITY State_predicted
  SUBTYPE OF (State);
END_ENTITY;

ENTITY State_predicted_to_observed
  SUBTYPE OF (State_relationship);
  SELF\State_relationship.relating RENAMED observed_state : SET[1:?] OF State_observed;
  SELF\State_relationship.related RENAMED predicted_state : SET[1:?] OF State_predicted;
END_ENTITY;

ENTITY State_relationship;
  name : STRING;
  description : OPTIONAL STRING;
  relating : SET[1:?] OF State;
  related : SET[1:?] OF State;
END_ENTITY;

ENTITY State_role;
  name : STRING;
  description : OPTIONAL STRING;
END_ENTITY;

ENTITY State_transition
  SUBTYPE OF (State_relationship);
  SELF\State_relationship.relating RENAMED end_state : SET[1:?] OF State;
  SELF\State_relationship.related RENAMED start_state : SET[1:?] OF State;
END_ENTITY;

END_SCHEMA;  -- State_observed_arm



SCHEMA Condition_characterized_arm;


TYPE condition_approval_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON approval_item WITH
   (Condition,
    Condition_assignment);
END_TYPE;

TYPE condition_characterized_activity_definition = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON characterized_activity_definition WITH
   (Condition,
    Condition_relationship);
END_TYPE;

TYPE condition_classified_attribute_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON classified_attribute_select WITH
   (Condition,
    Condition_parameter,
    Condition_relationship);
END_TYPE;

TYPE condition_date_or_date_time_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON date_or_date_time_item WITH
   (Condition,
    Condition_assignment);
END_TYPE;

TYPE condition_identification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON identification_item WITH
   (Condition);
END_TYPE;

TYPE condition_organization_or_person_in_organization_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON organization_or_person_in_organization_item WITH
   (Condition,
    Condition_assignment);
END_TYPE;

TYPE condition_string_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON string_select WITH
   (Condition,
    Condition_parameter,
    Condition_relationship);
END_TYPE;

END_SCHEMA;  -- Condition_characterized_arm



SCHEMA Observation_arm;


TYPE observation_approval = SELECT BASED_ON mri_approval_item WITH
   (Observation);
END_TYPE;

TYPE observation_classification_item = SELECT BASED_ON classification_item WITH
   (Observation,
    Observation_relationship);
END_TYPE;

TYPE observation_date_time = SELECT BASED_ON mri_date_or_date_time_item WITH
   (Observation);
END_TYPE;

TYPE observation_recorder = EXTENSIBLE SELECT
   (Product_as_realized);
END_TYPE;

TYPE observed_context = EXTENSIBLE SELECT;
END_TYPE;

TYPE observing_person = SELECT BASED_ON mri_organization_or_person_in_organization_item WITH
   (Observation);
END_TYPE;

TYPE observation_content_item = EXTENSIBLE SELECT;
END_TYPE;

ENTITY Observation;
  id : STRING;
  name : STRING;
  description : STRING;
  applies_to : SET[0:?] OF Observation_item;
  in_context : SET[0:?] OF observed_context;
  observed_by : SET[0:?] OF observation_recorder;
  observed_during : OPTIONAL Activity_actual;
  related_records : SET[0:?] OF Observation_item;
END_ENTITY;

ENTITY Observation_consequence;
  id : STRING;
  name : STRING;
  infered_from : Observation;
  requests : Work_request;
  role : STRING;
END_ENTITY;

ENTITY Observation_item;
  access_comment : STRING;
  item_identifier : STRING;
  item_type : STRING;
END_ENTITY;

ENTITY Observation_relationship;
  relating : Observation;
  related : Observation;
  role : STRING;
END_ENTITY;

ENTITY Observation_item_selected
  SUBTYPE OF (Observation_item);
  contents : observation_content_item;
END_ENTITY;

END_SCHEMA;  -- Observation_arm



SCHEMA Activity_as_realized_arm;


ENTITY Activity_actual
  SUBTYPE OF (Activity);
END_ENTITY;

ENTITY Activity_happening
  SUBTYPE OF (Activity_relationship);
  SELF\Activity_relationship.relating_activity RENAMED actual : Activity_actual;
  SELF\Activity_relationship.related_activity RENAMED predicted : Activity;
WHERE
  WR1: NOT ('ACTIVITY_AS_REALIZED.ACTIVITY_ACTUAL' IN TYPEOF(predicted));
END_ENTITY;

END_SCHEMA;  -- Activity_as_realized_arm



SCHEMA Scheme_arm;


TYPE scheme_date_or_date_time_item = SELECT BASED_ON date_or_date_time_item WITH
   (Scheme_entry);
END_TYPE;

TYPE scheme_entry_item_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON activity_method_item;
END_TYPE;

TYPE scheme_person_organization_select = SELECT BASED_ON organization_or_person_in_organization_item WITH
   (Scheme,
    Scheme_entry);
END_TYPE;

TYPE scheme_subject_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON activity_method_item;
END_TYPE;

TYPE scheme_version_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON activity_method_item;
END_TYPE;

ENTITY Scheme
  SUBTYPE OF (Activity_method);
END_ENTITY;

ENTITY Scheme_entry
  SUBTYPE OF (Activity_method);
  scheme : Scheme_version;
END_ENTITY;

ENTITY Scheme_entry_assignment
  SUBTYPE OF (Applied_activity_method_assignment);
  SELF\Applied_activity_method_assignment.assigned_activity_method RENAMED assigned_entry : Scheme_entry;
  SELF\Applied_activity_method_assignment.items : SET[1:?] OF scheme_entry_item_select;
END_ENTITY;

ENTITY Scheme_entry_relationship
  SUBTYPE OF (Activity_method_relationship);
  SELF\Activity_method_relationship.relating_method RENAMED relating_entry : Scheme_entry;
  SELF\Activity_method_relationship.related_method RENAMED related_entry : Scheme_entry;
END_ENTITY;

ENTITY Scheme_relationship
  SUBTYPE OF (Activity_method_relationship);
  SELF\Activity_method_relationship.relating_method RENAMED relating_scheme : Scheme;
  SELF\Activity_method_relationship.related_method RENAMED related_scheme : Scheme;
END_ENTITY;

ENTITY Scheme_subject_assignment
  SUBTYPE OF (Applied_activity_method_assignment);
  SELF\Applied_activity_method_assignment.assigned_activity_method RENAMED assigned_scheme : Scheme;
  SELF\Applied_activity_method_assignment.items : SET[1:?] OF scheme_subject_select;
END_ENTITY;

ENTITY Scheme_version
  SUBTYPE OF (Activity_method);
  of_scheme : Scheme;
END_ENTITY;

ENTITY Scheme_version_assignment
  SUBTYPE OF (Applied_activity_method_assignment);
  SELF\Applied_activity_method_assignment.assigned_activity_method RENAMED assigned_scheme_version : Scheme_version;
  SELF\Applied_activity_method_assignment.items : SET[1:?] OF scheme_version_select;
END_ENTITY;

ENTITY Scheme_version_relationship
  SUBTYPE OF (Activity_method_relationship);
  SELF\Activity_method_relationship.relating_method RENAMED relating_scheme_version : Scheme_version;
  SELF\Activity_method_relationship.related_method RENAMED related_scheme_version : Scheme_version;
END_ENTITY;

ENTITY Sequencing_relationship
  SUBTYPE OF (Scheme_entry_relationship);
  sequencing_type : STRING;
  time_lag : OPTIONAL Time_interval;
END_ENTITY;

END_SCHEMA;  -- Scheme_arm



SCHEMA Activity_method_implementation_arm;


TYPE activity_method_implementation_classified_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON classification_item WITH
   (Activity_method_realization,
    Activity_method_realization_relationship);
END_TYPE;

TYPE activity_realization_select = EXTENSIBLE SELECT;
END_TYPE;

ENTITY Activity_method_realization;
  id : STRING;
  name : STRING;
  description : OPTIONAL STRING;
  activity_method : Activity_method;
  realized_by : activity_realization_select;
END_ENTITY;

ENTITY Activity_method_realization_relationship;
  id : STRING;
  name : STRING;
  description : OPTIONAL STRING;
  relating : Activity_method_realization;
  related : Activity_method_realization;
END_ENTITY;

END_SCHEMA;  -- Activity_method_implementation_arm



SCHEMA Task_specification_arm;


TYPE constraint_context = EXTENSIBLE GENERIC_ENTITY SELECT
   (Task_element,
    Task_method_version);
END_TYPE;

TYPE method_or_method_version = SELECT
   (Task_method,
    Task_method_version);
END_TYPE;

TYPE state_or_state_definition_select = SELECT
   (Applied_state_assignment,
    Applied_state_definition_assignment,
    State,
    State_definition);
END_TYPE;

TYPE task_classification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON classification_item WITH
   (Task_element_state_relationship,
    Task_method,
    Task_method_state_relationship,
    Task_objective,
    Task_objective_state_relationship,
    Activity_method,
    Activity_method_relationship,
    Applied_activity_method_assignment);
END_TYPE;

TYPE task_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON activity_method_item;
END_TYPE;

ENTITY Advisory_task_step
  SUBTYPE OF (Task_step);
END_ENTITY;

ENTITY Concurrent_elements
  SUBTYPE OF (Structured_task_element);
  elements : SET[2:?] OF Task_element;
END_ENTITY;

ENTITY Decision_point
  SUBTYPE OF (Structured_task_element);
  condition : Condition;
  true_case_element : OPTIONAL Task_element;
  false_case_element : OPTIONAL Task_element;
  unknown_case_element : OPTIONAL Task_element;
END_ENTITY;

ENTITY Element_constraint
  SUBTYPE OF (Task_element_relationship);
  applies_in : OPTIONAL constraint_context;
END_ENTITY;

ENTITY End_task
  SUBTYPE OF (Task_element);
END_ENTITY;

ENTITY Exit_loop
  SUBTYPE OF (Task_element);
END_ENTITY;

ENTITY Looping_element
  SUPERTYPE OF (ONEOF (Repeat_count,
                       Repeat_until,
                       Repeat_while))
  SUBTYPE OF (Structured_task_element);
  repeated_element : Task_element;
END_ENTITY;

ENTITY Repeat_count
  SUBTYPE OF (Looping_element);
  count : INTEGER;
END_ENTITY;

ENTITY Repeat_until
  SUBTYPE OF (Looping_element);
  condition : Condition;
END_ENTITY;

ENTITY Repeat_while
  SUBTYPE OF (Looping_element);
  condition : Condition;
END_ENTITY;

ENTITY Simultaneous_elements
  SUBTYPE OF (Concurrent_elements);
END_ENTITY;

ENTITY Structured_task_element
  ABSTRACT SUPERTYPE OF (ONEOF (Concurrent_elements,
                                Decision_point,
                                Looping_element,
                                Task_element_sequence))
  SUBTYPE OF (Task_element);
END_ENTITY;

ENTITY Task_element
  ABSTRACT SUPERTYPE OF (ONEOF (End_task,
                                Exit_loop,
                                Structured_task_element,
                                Task_element_levels,
                                Task_invocation,
                                Task_step))
  SUBTYPE OF (Activity_method);
  notes : OPTIONAL LIST[1:?] OF Advisory_task_step;
END_ENTITY;

ENTITY Task_element_assignment
  SUBTYPE OF (Applied_activity_method_assignment);
  SELF\Applied_activity_method_assignment.assigned_activity_method RENAMED assigned_task_element : Task_element;
  SELF\Applied_activity_method_assignment.items : SET[1:?] OF task_item;
END_ENTITY;

ENTITY Task_element_levels
  SUBTYPE OF (Task_element);
  alternatives : SET[2:?] OF Task_element;
END_ENTITY;

ENTITY Task_element_relationship
  SUBTYPE OF (Activity_method_relationship);
  SELF\Activity_method_relationship.relating_method : Task_element;
  SELF\Activity_method_relationship.related_method : Task_element;
END_ENTITY;

ENTITY Task_element_sequence
  SUBTYPE OF (Structured_task_element);
  elements : LIST[2:?] OF Task_element;
END_ENTITY;

ENTITY Task_element_state_relationship;
  state : state_or_state_definition_select;
  task_element : Task_element;
END_ENTITY;

ENTITY Task_invocation
  SUBTYPE OF (Task_element);
  task_method : method_or_method_version;
END_ENTITY;

ENTITY Task_method
  SUBTYPE OF (Activity_method);
  objective : SET[0:?] OF Task_objective;
END_ENTITY;

ENTITY Task_method_assignment
  SUBTYPE OF (Applied_activity_method_assignment);
  SELF\Applied_activity_method_assignment.assigned_activity_method : Task_method;
  SELF\Applied_activity_method_assignment.items : SET[1:?] OF task_item;
END_ENTITY;

ENTITY Task_method_relationship
  SUBTYPE OF (Activity_method_relationship);
  SELF\Activity_method_relationship.relating_method : Task_method;
  SELF\Activity_method_relationship.related_method : Task_method;
END_ENTITY;

ENTITY Task_method_state_relationship;
  state : state_or_state_definition_select;
  task_method : Task_method_version;
END_ENTITY;

ENTITY Task_method_version
  SUBTYPE OF (Activity_method);
  content : OPTIONAL Task_element;
  of_task_method : Task_method;
END_ENTITY;

ENTITY Task_method_version_assignment
  SUBTYPE OF (Applied_activity_method_assignment);
  SELF\Applied_activity_method_assignment.assigned_activity_method RENAMED assigned_task_method : Task_method_version;
  SELF\Applied_activity_method_assignment.items : SET[1:?] OF task_item;
END_ENTITY;

ENTITY Task_method_version_relationship
  SUBTYPE OF (Activity_method_relationship);
  SELF\Activity_method_relationship.relating_method RENAMED relating_task_method : Task_method_version;
  SELF\Activity_method_relationship.related_method RENAMED related_task_method : Task_method_version;
END_ENTITY;

ENTITY Task_objective;
  name : STRING;
  description : STRING;
END_ENTITY;

ENTITY Task_objective_state_relationship;
  state : state_or_state_definition_select;
  task_objective : Task_objective;
END_ENTITY;

ENTITY Task_step
  SUBTYPE OF (Task_element);
  SELF\Activity_method.description RENAMED step_text : STRING;
END_ENTITY;

SUBTYPE_CONSTRAINT restrict_activity_method_relationship FOR Activity_method_relationship;
  ONEOF (Task_element_relationship,
         Task_method_relationship,
         Task_method_version_relationship);
END_SUBTYPE_CONSTRAINT;

SUBTYPE_CONSTRAINT restrict_activity_method_subtypes FOR Activity_method;
  ONEOF (Task_element,
         Task_method,
         Task_method_version);
END_SUBTYPE_CONSTRAINT;

END_SCHEMA;  -- Task_specification_arm



SCHEMA Justification_arm;


TYPE justification_item = EXTENSIBLE GENERIC_ENTITY SELECT;
END_TYPE;

TYPE justification_support_item = EXTENSIBLE GENERIC_ENTITY SELECT;
END_TYPE;

ENTITY Justification;
  id : STRING;
  name : OPTIONAL STRING;
  description : STRING;
  context_description : OPTIONAL STRING;
END_ENTITY;

ENTITY Justification_assignment;
  justification : Justification;
  description : OPTIONAL STRING;
  item : justification_item;
  role : STRING;
END_ENTITY;

ENTITY Justification_relationship;
  name : STRING;
  description : OPTIONAL STRING;
  relating_justification : Justification;
  related_justification : Justification;
END_ENTITY;

ENTITY Justification_support_assignment;
  justification : Justification;
  description : OPTIONAL STRING;
  support_item : justification_support_item;
  role : STRING;
END_ENTITY;

END_SCHEMA;  -- Justification_arm



SCHEMA Envelope_arm;


TYPE envelope_approval_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON approval_item WITH
   (Envelope);
END_TYPE;

TYPE envelope_date_time_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON date_or_date_time_item WITH
   (Envelope);
END_TYPE;

TYPE envelope_person_organization_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON organization_or_person_in_organization_item WITH
   (Envelope);
END_TYPE;

TYPE envelope_property_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON property_assignment_select WITH
   (Envelope);
END_TYPE;

ENTITY Envelope;
  id : STRING;
  acknowledge : OPTIONAL STRING;
  wrapping : OPTIONAL Message;
END_ENTITY;

ENTITY Envelope_relationship;
  relating : Envelope;
  related : Envelope;
  relation_type : OPTIONAL STRING;
END_ENTITY;

END_SCHEMA;  -- Envelope_arm



SCHEMA Resource_management_arm;


TYPE managed_resource_location_assignment_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON location_assignment_select WITH
   (Managed_resource);
END_TYPE;

TYPE resource_management_classification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON classification_item WITH
   (Managed_resource,
    Managed_resource_relationship,
    Resource_event,
    Resource_event_correspondence_relationship,
    Resource_event_relationship);
END_TYPE;

ENTITY Decreasing_resource_event
  SUBTYPE OF (Resource_event);
END_ENTITY;

ENTITY Increasing_resource_event
  SUBTYPE OF (Resource_event);
END_ENTITY;

ENTITY Managed_resource;
  name : STRING;
  description : OPTIONAL STRING;
  quantity : OPTIONAL Value_with_unit;
  item : Resource_item;
END_ENTITY;

ENTITY Managed_resource_relationship;
  name : STRING;
  description : OPTIONAL STRING;
  relating : Managed_resource;
  related : Managed_resource;
END_ENTITY;

ENTITY Resource_event
  ABSTRACT SUPERTYPE ;
  name : STRING;
  description : OPTIONAL STRING;
  quantity : OPTIONAL Value_with_unit;
  resource : Managed_resource;
END_ENTITY;

ENTITY Resource_event_correspondence_relationship;
  name : STRING;
  description : OPTIONAL STRING;
  relating : Resource_event;
  related : Required_resource;
END_ENTITY;

ENTITY Resource_event_relationship;
  name : STRING;
  description : OPTIONAL STRING;
  relating : Resource_event;
  related : Resource_event;
END_ENTITY;

END_SCHEMA;  -- Resource_management_arm



SCHEMA Required_resource_arm;


TYPE required_resource_classification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON classification_item WITH
   (Required_resource,
    Required_resource_assignment,
    Required_resource_relationship);
END_TYPE;

TYPE required_resource_item = EXTENSIBLE GENERIC_ENTITY SELECT;
END_TYPE;

ENTITY Required_resource
  ABSTRACT SUPERTYPE OF (ONEOF (Required_resource_by_resource_item,
                                Required_resource_by_specification));
  name : STRING;
  description : OPTIONAL STRING;
  required_quantity : OPTIONAL Value_with_unit;
END_ENTITY;

ENTITY Required_resource_assignment;
  assigned_resource : Required_resource;
  item : required_resource_item;
END_ENTITY;

ENTITY Required_resource_by_resource_item
  SUBTYPE OF (Required_resource);
  resource_item : Resource_item;
END_ENTITY;

ENTITY Required_resource_by_specification
  SUBTYPE OF (Required_resource);
END_ENTITY;

ENTITY Required_resource_relationship;
  name : STRING;
  description : OPTIONAL STRING;
  relating : Required_resource;
  related : Required_resource;
END_ENTITY;

END_SCHEMA;  -- Required_resource_arm



SCHEMA Resource_item_arm;


TYPE resource_assignment_item = EXTENSIBLE GENERIC_ENTITY SELECT;
END_TYPE;

TYPE resource_item_classification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON classification_item WITH
   (Resource_item,
    Resource_item_assignment,
    Resource_item_relationship);
END_TYPE;

TYPE resource_item_select = EXTENSIBLE GENERIC_ENTITY SELECT;
END_TYPE;

ENTITY Resource_group_relationship
  SUBTYPE OF (Resource_item_relationship);
  quantity : OPTIONAL Value_with_unit;
END_ENTITY;

ENTITY Resource_item;
  name : STRING;
  description : OPTIONAL STRING;
  resource_items : OPTIONAL SET[0:?] OF resource_item_select;
END_ENTITY;

ENTITY Resource_item_assignment;
  assigned_resource : Resource_item;
  item : resource_assignment_item;
END_ENTITY;

ENTITY Resource_item_relationship;
  name : STRING;
  description : OPTIONAL STRING;
  relating : Resource_item;
  related : Resource_item;
END_ENTITY;

END_SCHEMA;  -- Resource_item_arm



SCHEMA Resource_as_realized_arm;


TYPE resource_as_realized_classification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON classification_item WITH
   (Resource_as_realized,
    Resource_as_realized_assignment,
    Resource_as_realized_relationship);
END_TYPE;

TYPE resource_as_realized_item = EXTENSIBLE GENERIC_ENTITY SELECT;
END_TYPE;

TYPE resource_as_realized_relationship_select = SELECT
   (Required_resource,
    Resource_event);
END_TYPE;

ENTITY Resource_as_realized;
  name : STRING;
  description : OPTIONAL STRING;
  quantity : OPTIONAL Value_with_unit;
END_ENTITY;

ENTITY Resource_as_realized_assignment;
  assigned_resource : Resource_as_realized;
  item : resource_as_realized_item;
END_ENTITY;

ENTITY Resource_as_realized_relationship;
  name : STRING;
  description : OPTIONAL STRING;
  relating : Resource_as_realized;
  related : resource_as_realized_relationship_select;
END_ENTITY;

ENTITY Resource_as_realized_resource_item
  SUBTYPE OF (Resource_as_realized);
  resource_item : Resource_item;
END_ENTITY;

END_SCHEMA;  -- Resource_as_realized_arm



SCHEMA Message_arm;


TYPE message_approval_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON approval_item WITH
   (Message);
END_TYPE;

TYPE message_date_time_select = SELECT BASED_ON date_or_date_time_item WITH
   (Message);
END_TYPE;

TYPE message_definer_select = EXTENSIBLE SELECT
   (Organization,
    Person_in_organization);
END_TYPE;

TYPE message_security_classification_select = SELECT BASED_ON security_classification_item WITH
   (Message);
END_TYPE;

TYPE message_state_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON state_of_item WITH
   (Message);
END_TYPE;

TYPE message_content_item = EXTENSIBLE GENERIC_ENTITY SELECT;
END_TYPE;

ENTITY Content_item;
  item_identifier : STRING;
  item_type : STRING;
  access_comment : OPTIONAL STRING;
END_ENTITY;

ENTITY Message;
  id : STRING;
  message_type : STRING;
  contains : SET[0:?] OF Content_item;
  defined_by : OPTIONAL SET[0:?] OF message_definer_select;
  purpose : OPTIONAL STRING;
END_ENTITY;

ENTITY Message_relationship;
  relating : Message;
  related : Message;
  relation_type : STRING;
END_ENTITY;

ENTITY Content_item_selected
  SUBTYPE OF (Content_item);
  contents : message_content_item;
END_ENTITY;

END_SCHEMA;  -- Message_arm



SCHEMA State_characterized_arm;


TYPE state_definition_condition_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON condition_item WITH
   (State_definition,
    State_definition_relationship);
END_TYPE;

TYPE state_observed_condition_evaluation_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON condition_evaluation_item WITH
   (State_assertion,
    State_assessment);
END_TYPE;

TYPE state_role_classification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON classification_item WITH
   (State_role);
END_TYPE;

TYPE statechar_classified_attribute_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON classified_attribute_select WITH
   (Applied_state_assignment,
    Applied_state_definition_assignment,
    State,
    State_definition,
    State_definition_relationship,
    State_relationship);
END_TYPE;

TYPE statechar_date_or_date_time_item = EXTENSIBLE SELECT BASED_ON date_or_date_time_item WITH
   (Applied_state_assignment,
    Applied_state_definition_assignment,
    State,
    State_assertion,
    State_assessment,
    State_definition,
    State_definition_relationship,
    State_relationship);
END_TYPE;

TYPE statechar_identification_item = EXTENSIBLE SELECT BASED_ON identification_item WITH
   (Applied_state_assignment,
    Applied_state_definition_assignment,
    Defined_state_relationship,
    State,
    State_assertion,
    State_assessment,
    State_definition,
    State_definition_relationship,
    State_relationship);
END_TYPE;

TYPE statechar_organization_or_person_in_organization_item = EXTENSIBLE SELECT BASED_ON organization_or_person_in_organization_item WITH
   (Applied_state_assignment,
    Applied_state_definition_assignment,
    State,
    State_assertion,
    State_assessment,
    State_definition,
    State_definition_relationship,
    State_relationship);
END_TYPE;

TYPE statechar_property_assignment_select = EXTENSIBLE SELECT BASED_ON property_assignment_select WITH
   (Applied_state_assignment,
    Applied_state_definition_assignment,
    State,
    State_definition,
    State_definition_relationship,
    State_relationship);
END_TYPE;

TYPE statechar_string_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON string_select WITH
   (State,
    State_definition,
    State_definition_relationship,
    State_relationship);
END_TYPE;

END_SCHEMA;  -- State_characterized_arm



SCHEMA Activity_characterized_arm;


TYPE actchar_ap239_mri_classification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON ap239_mri_classification_item WITH
   (Activity,
    Activity_property,
    Activity_relationship,
    Applied_activity_assignment);
END_TYPE;

TYPE actchar_ap239_mri_classified_attribute_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON ap239_mri_classified_attribute_select WITH
   (Activity,
    Activity_property,
    Activity_relationship,
    Applied_activity_assignment);
END_TYPE;

TYPE actchar_mri_approval_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON mri_approval_item WITH
   (Activity,
    Activity_property,
    Applied_activity_assignment);
END_TYPE;

TYPE actchar_mri_date_or_date_time_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON mri_date_or_date_time_item WITH
   (Activity,
    Activity_property,
    Activity_relationship,
    Applied_activity_assignment);
END_TYPE;

TYPE actchar_mri_identification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON mri_identification_item WITH
   (Activity,
    Activity_property,
    Applied_activity_assignment);
END_TYPE;

TYPE actchar_mri_organization_or_person_in_organization_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON mri_organization_or_person_in_organization_item WITH
   (Activity,
    Activity_property,
    Activity_relationship,
    Applied_activity_assignment);
END_TYPE;

TYPE actchar_mri_string_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON mri_string_select WITH
   (Activity,
    Activity_property,
    Activity_relationship,
    Applied_activity_assignment);
END_TYPE;

TYPE actchar_property_assignment_select = SELECT BASED_ON property_assignment_select WITH
   (Applied_activity_assignment);
END_TYPE;

END_SCHEMA;  -- Activity_characterized_arm



SCHEMA Resource_property_assignment_arm;


TYPE characterized_resource_select = EXTENSIBLE GENERIC_ENTITY SELECT;
END_TYPE;

ENTITY Applied_independent_resource_property
  SUBTYPE OF (Resource_property);
  base_element_property : Independent_property;
DERIVE
  SELF\Resource_property.name : STRING := base_element_property.property_type;
END_ENTITY;

ENTITY Resource_property;
  name : STRING;
  description : STRING;
  described_element : characterized_resource_select;
END_ENTITY;

ENTITY Resource_property_representation;
  description : OPTIONAL STRING;
  property : Resource_property;
  rep : Representation;
  role : STRING;
END_ENTITY;

END_SCHEMA;  -- Resource_property_assignment_arm



SCHEMA Probability_distribution_arm;


TYPE probability_distribution_classification = SELECT BASED_ON classification_item WITH
   (Probability_distribution);
END_TYPE;

ENTITY Distribution_by_value
  SUBTYPE OF (Probability_distribution);
  defined_function : Value_function;
  distribution_function : STRING;
END_ENTITY;

ENTITY Function_value_pair;
  function_value : Probability_function_value;
  variable_value : Random_variable;
END_ENTITY;

ENTITY Parameterized_distribution
  SUBTYPE OF (Probability_distribution);
  has_parameters : LIST[1:?] OF Probability_distribution_parameter;
  parameterization_name : STRING;
END_ENTITY;

ENTITY Probability_distribution
  ABSTRACT SUPERTYPE
  SUBTYPE OF (Probability_generator);
  distribution_name : OPTIONAL STRING;
  is_continuous : STRING;
  mean : REAL;
  variance : REAL;
END_ENTITY;

ENTITY Probability_distribution_parameter
  SUBTYPE OF (Numerical_item_with_global_unit);
END_ENTITY;

ENTITY Probability_function_value
  SUBTYPE OF (Numerical_item_with_global_unit);
END_ENTITY;

ENTITY Random_variable
  SUBTYPE OF (Numerical_item_with_global_unit);
END_ENTITY;

ENTITY Value_function;
  function_element : LIST[1:?] OF Function_value_pair;
END_ENTITY;

END_SCHEMA;  -- Probability_distribution_arm



SCHEMA External_class_arm;


TYPE external_class_assigned_name_select = SELECT BASED_ON assigned_name_select WITH
   (External_class_library);
END_TYPE;

ENTITY External_class
  SUBTYPE OF (Class);
  external_source : External_class_library;
END_ENTITY;

ENTITY External_class_library;
  id : STRING;
  description : OPTIONAL STRING;
END_ENTITY;

END_SCHEMA;  -- External_class_arm



SCHEMA Location_arm;


TYPE location_classification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON classification_item WITH
   (Location,
    Location_relationship);
END_TYPE;

TYPE product_based_location_representation = EXTENSIBLE GENERIC_ENTITY SELECT
   (Product,
    Product_version);
END_TYPE;

ENTITY Address_based_location_representation
  SUBTYPE OF (Location_representation);
  postal_address : Address;
END_ENTITY;

ENTITY Global_location_representation
  SUBTYPE OF (Location_representation);
  altitude : OPTIONAL Value_with_unit;
  geographical_area : OPTIONAL STRING;
  latitude : Value_with_unit;
  longitude : Value_with_unit;
END_ENTITY;

ENTITY Location;
  name : STRING;
  description : OPTIONAL STRING;
  alternative_location_representations : SET[0:?] OF Location_representation;
END_ENTITY;

ENTITY Location_relationship;
  name : STRING;
  description : OPTIONAL STRING;
  relating : Location;
  related : Location;
END_ENTITY;

ENTITY Location_representation
  ABSTRACT SUPERTYPE OF (ONEOF (Address_based_location_representation,
                                Global_location_representation,
                                Organization_based_location_representation,
                                Product_based_location_identification,
                                Regional_grid_location_representation));
END_ENTITY;

ENTITY Organization_based_location_representation
  SUBTYPE OF (Location_representation);
  location_identifications : LIST[0:?] OF Organizational_location_identification;
  organization_for_location : Organization;
END_ENTITY;

ENTITY Organizational_location_identification;
  identification_type : STRING;
  location_value : STRING;
END_ENTITY;

ENTITY Product_based_location_identification
  SUBTYPE OF (Location_representation);
  location_identification : STRING;
  location_name : OPTIONAL STRING;
  referenced_product : product_based_location_representation;
END_ENTITY;

ENTITY Regional_coordinate;
  name : STRING;
  coordinate_value : Value_with_unit;
  grid_system : Regional_grid_location_representation;
END_ENTITY;

ENTITY Regional_grid_location_representation
  SUBTYPE OF (Location_representation);
  name : STRING;
  description : OPTIONAL STRING;
END_ENTITY;

END_SCHEMA;  -- Location_arm



SCHEMA Location_assignment_arm;


TYPE location_assignment_select = EXTENSIBLE GENERIC_ENTITY SELECT;
END_TYPE;

ENTITY Location_assignment;
  description : OPTIONAL STRING;
  role : OPTIONAL STRING;
  entity_for_location : location_assignment_select;
  location_for_assignment : Location;
END_ENTITY;

END_SCHEMA;  -- Location_assignment_arm



SCHEMA Product_group_arm;


TYPE product_group_classification_item = SELECT BASED_ON classification_item WITH
   (Product_group,
    Product_group_relationship);
END_TYPE;

TYPE product_group_effectivity_item = SELECT BASED_ON effectivity_item WITH
   (Product_group,
    Product_group_membership,
    Product_group_relationship);
END_TYPE;

TYPE product_group_property_assignment_select = EXTENSIBLE SELECT BASED_ON property_assignment_select WITH
   (Product_group_membership);
END_TYPE;

TYPE product_select = EXTENSIBLE SELECT
   (Product_group,
    Product,
    Product_as_individual,
    Product_concept,
    Product_version);
END_TYPE;

ENTITY Product_group;
  id : STRING;
  description : OPTIONAL STRING;
  purpose : STRING;
  membership_rule : OPTIONAL STRING;
  product_group_context : OPTIONAL STRING;
END_ENTITY;

ENTITY Product_group_membership;
  member : product_select;
  of_group : Product_group;
END_ENTITY;

ENTITY Product_group_relationship;
  description : OPTIONAL STRING;
  relating : Product_group;
  related : Product_group;
  role : OPTIONAL STRING;
END_ENTITY;

END_SCHEMA;  -- Product_group_arm



SCHEMA Required_resource_characterized_arm;


TYPE required_resource_approval_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON approval_item WITH
   (Required_resource,
    Required_resource_relationship);
END_TYPE;

TYPE required_resource_characterized_activity_definition = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON characterized_activity_definition WITH
   (Required_resource_assignment);
END_TYPE;

TYPE required_resource_characterized_resource_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON characterized_resource_select WITH
   (Required_resource);
END_TYPE;

TYPE required_resource_classified_attribute_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON classified_attribute_select WITH
   (Required_resource,
    Required_resource_relationship);
END_TYPE;

TYPE required_resource_condition_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON condition_item WITH
   (Required_resource,
    Required_resource_assignment,
    Required_resource_relationship);
END_TYPE;

TYPE required_resource_date_or_date_time_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON date_or_date_time_item WITH
   (Required_resource);
END_TYPE;

TYPE required_resource_identification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON identification_item WITH
   (Required_resource,
    Required_resource_relationship);
END_TYPE;

TYPE required_resource_justification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON justification_item WITH
   (Required_resource,
    Required_resource_assignment,
    Required_resource_relationship);
END_TYPE;

TYPE required_resource_organization_or_person_in_organization_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON organization_or_person_in_organization_item WITH
   (Required_resource);
END_TYPE;

TYPE required_resource_requirement_assignment_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON requirement_assignment_item WITH
   (Required_resource_by_specification);
END_TYPE;

TYPE required_resource_string_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON string_select WITH
   (Required_resource,
    Required_resource_relationship);
END_TYPE;

END_SCHEMA;  -- Required_resource_characterized_arm



SCHEMA Resource_item_characterized_arm;


TYPE resource_item_approval_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON approval_item WITH
   (Resource_item,
    Resource_item_assignment,
    Resource_item_relationship);
END_TYPE;

TYPE resource_item_certification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON certification_item WITH
   (Resource_item);
END_TYPE;

TYPE resource_item_characterized_activity_definition = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON characterized_activity_definition WITH
   (Resource_item_assignment);
END_TYPE;

TYPE resource_item_characterized_resource_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON characterized_resource_select WITH
   (Resource_item,
    Resource_item_relationship);
END_TYPE;

TYPE resource_item_classified_attribute_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON classified_attribute_select WITH
   (Resource_item,
    Resource_item_assignment,
    Resource_item_relationship);
END_TYPE;

TYPE resource_item_condition_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON condition_item WITH
   (Resource_item,
    Resource_item_assignment,
    Resource_item_relationship);
END_TYPE;

TYPE resource_item_contract_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON contract_item WITH
   (Resource_item);
END_TYPE;

TYPE resource_item_date_or_date_time_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON date_or_date_time_item WITH
   (Resource_item,
    Resource_item_assignment);
END_TYPE;

TYPE resource_item_documented_element_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON documented_element_select WITH
   (Resource_item);
END_TYPE;

TYPE resource_item_identification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON identification_item WITH
   (Resource_item);
END_TYPE;

TYPE resource_item_justification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON justification_item WITH
   (Resource_item,
    Resource_item_assignment,
    Resource_item_relationship);
END_TYPE;

TYPE resource_item_organization_or_person_in_organization_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON organization_or_person_in_organization_item WITH
   (Resource_item,
    Resource_item_assignment);
END_TYPE;

TYPE resource_item_security_classification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON security_classification_item WITH
   (Resource_item);
END_TYPE;

TYPE resource_item_state_definition_of_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON state_definition_of_item WITH
   (Resource_group_relationship,
    Resource_item,
    Resource_item_assignment,
    Resource_item_relationship);
END_TYPE;

TYPE resource_item_state_of_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON state_of_item WITH
   (Resource_group_relationship,
    Resource_item,
    Resource_item_assignment,
    Resource_item_relationship);
END_TYPE;

TYPE resource_item_string_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON string_select WITH
   (Resource_item,
    Resource_item_assignment,
    Resource_item_relationship);
END_TYPE;

END_SCHEMA;  -- Resource_item_characterized_arm



SCHEMA Resource_management_characterized_arm;


TYPE managed_resource_approval_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON approval_item WITH
   (Managed_resource,
    Managed_resource_relationship,
    Resource_event);
END_TYPE;

TYPE resource_management_characterized_activity_definition = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON characterized_activity_definition WITH
   (Resource_event);
END_TYPE;

TYPE resource_management_characterized_resource_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON characterized_resource_select WITH
   (Managed_resource);
END_TYPE;

TYPE resource_management_characterized_state_definition_of_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON state_definition_of_item WITH
   (Resource_event,
    Resource_event_correspondence_relationship,
    Resource_event_relationship);
END_TYPE;

TYPE resource_management_characterized_state_of_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON state_of_item WITH
   (Resource_event,
    Resource_event_correspondence_relationship,
    Resource_event_relationship);
END_TYPE;

TYPE resource_management_classified_attribute_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON classified_attribute_select WITH
   (Managed_resource,
    Managed_resource_relationship,
    Resource_event,
    Resource_event_correspondence_relationship,
    Resource_event_relationship);
END_TYPE;

TYPE resource_management_condition_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON condition_item WITH
   (Managed_resource,
    Managed_resource_relationship,
    Resource_event,
    Resource_event_relationship);
END_TYPE;

TYPE resource_management_contract_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON contract_item WITH
   (Managed_resource,
    Resource_event);
END_TYPE;

TYPE resource_management_date_or_date_time_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON date_or_date_time_item WITH
   (Managed_resource,
    Managed_resource_relationship,
    Resource_event);
END_TYPE;

TYPE resource_management_documented_element_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON documented_element_select WITH
   (Resource_event);
END_TYPE;

TYPE resource_management_identification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON identification_item WITH
   (Managed_resource,
    Resource_event);
END_TYPE;

TYPE resource_management_justification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON justification_item WITH
   (Managed_resource_relationship,
    Resource_event);
END_TYPE;

TYPE resource_management_organization_or_person_in_organization_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON organization_or_person_in_organization_item WITH
   (Managed_resource,
    Managed_resource_relationship,
    Resource_event);
END_TYPE;

TYPE resource_management_string_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON string_select WITH
   (Managed_resource,
    Managed_resource_relationship,
    Resource_event,
    Resource_event_correspondence_relationship,
    Resource_event_relationship);
END_TYPE;

END_SCHEMA;  -- Resource_management_characterized_arm



SCHEMA Resource_as_realized_characterized_arm;


TYPE resource_as_realized_approval_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON approval_item WITH
   (Resource_as_realized);
END_TYPE;

TYPE resource_as_realized_characterized_activity_definition = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON characterized_activity_definition WITH
   (Resource_as_realized_assignment);
END_TYPE;

TYPE resource_as_realized_characterized_resource_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON characterized_resource_select WITH
   (Resource_as_realized);
END_TYPE;

TYPE resource_as_realized_classified_attribute_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON classified_attribute_select WITH
   (Resource_as_realized,
    Resource_as_realized_relationship);
END_TYPE;

TYPE resource_as_realized_date_or_date_time_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON date_or_date_time_item WITH
   (Resource_as_realized);
END_TYPE;

TYPE resource_as_realized_identification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON identification_item WITH
   (Resource_as_realized);
END_TYPE;

TYPE resource_as_realized_justification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON justification_item WITH
   (Resource_as_realized);
END_TYPE;

TYPE resource_as_realized_organization_or_person_in_organization_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON organization_or_person_in_organization_item WITH
   (Resource_as_realized);
END_TYPE;

TYPE resource_as_realized_state_definition_of_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON state_of_item WITH
   (Resource_as_realized,
    Resource_as_realized_assignment,
    Resource_as_realized_relationship,
    Resource_as_realized_resource_item);
END_TYPE;

TYPE resource_as_realized_state_of_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON state_definition_of_item WITH
   (Resource_as_realized,
    Resource_as_realized_assignment,
    Resource_as_realized_relationship,
    Resource_as_realized_resource_item);
END_TYPE;

TYPE resource_as_realized_string_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON string_select WITH
   (Resource_as_realized,
    Resource_as_realized_relationship);
END_TYPE;

END_SCHEMA;  -- Resource_as_realized_characterized_arm



SCHEMA Work_request_characterized_arm;


TYPE wreqchar_ap239_mri_classification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON ap239_mri_classification_item WITH
   (Activity_method_assignment,
    Affected_items_assignment,
    Work_request,
    Work_request_status);
END_TYPE;

TYPE wreqchar_ap239_mri_classified_attribute_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON ap239_mri_classified_attribute_select WITH
   (Activity_method_assignment,
    Affected_items_assignment,
    Work_request,
    Work_request_status);
END_TYPE;

TYPE wreqchar_documented_element_select = SELECT BASED_ON documented_element_select WITH
   (Work_request);
END_TYPE;

TYPE wreqchar_mri_approval_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON mri_approval_item WITH
   (Activity_method_assignment,
    Affected_items_assignment,
    Work_request);
END_TYPE;

TYPE wreqchar_mri_date_or_date_time_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON mri_date_or_date_time_item WITH
   (Activity_method_assignment,
    Affected_items_assignment,
    Work_request);
END_TYPE;

TYPE wreqchar_mri_identification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON mri_identification_item WITH
   (Affected_items_assignment,
    Work_request);
END_TYPE;

TYPE wreqchar_mri_organization_or_person_in_organization_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON mri_organization_or_person_in_organization_item WITH
   (Activity_method_assignment,
    Affected_items_assignment,
    Work_request);
END_TYPE;

TYPE wreqchar_mri_string_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON mri_string_select WITH
   (Activity_method_assignment);
END_TYPE;

END_SCHEMA;  -- Work_request_characterized_arm



SCHEMA Work_order_characterized_arm;


TYPE wordchar_ap239_mri_classification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON ap239_mri_classification_item WITH
   (Directed_activity,
    Work_order);
END_TYPE;

TYPE wordchar_ap239_mri_classified_attribute_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON ap239_mri_classified_attribute_select WITH
   (Work_order);
END_TYPE;

TYPE wordchar_documented_element_select = SELECT BASED_ON documented_element_select WITH
   (Work_order);
END_TYPE;

TYPE wordchar_mri_approval_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON mri_approval_item WITH
   (Directed_activity,
    Work_order);
END_TYPE;

TYPE wordchar_mri_date_or_date_time_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON mri_date_or_date_time_item WITH
   (Directed_activity,
    Work_order);
END_TYPE;

TYPE wordchar_mri_identification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON mri_identification_item WITH
   (Directed_activity,
    Work_order);
END_TYPE;

TYPE wordchar_mri_organization_or_person_in_organization_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON mri_organization_or_person_in_organization_item WITH
   (Directed_activity,
    Work_order);
END_TYPE;

TYPE wordchar_mri_string_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON mri_string_select WITH
   (Work_order);
END_TYPE;

END_SCHEMA;  -- Work_order_characterized_arm



SCHEMA Ap239_activity_recording_arm;


TYPE ar_classification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON classification_item WITH
   (Observation_consequence,
    Observation_item);
END_TYPE;

TYPE ar_condition_evaluation_item = SELECT BASED_ON condition_evaluation_item WITH
   (Activity,
    Activity_method,
    Activity_method_realization,
    Activity_method_realization_relationship,
    Activity_method_relationship,
    Applied_activity_assignment,
    Applied_activity_method_assignment,
    Managed_resource,
    Product_group,
    Product_group_membership,
    Product_group_relationship,
    Resource_as_realized,
    Resource_as_realized_assignment,
    Resource_as_realized_relationship,
    Resource_event,
    Resource_event_relationship,
    Resource_item,
    Resource_item_assignment,
    Resource_item_relationship);
END_TYPE;

TYPE ar_condition_evaluation_parameter_item = SELECT BASED_ON condition_evaluation_parameter_item WITH
   (Activity,
    Activity_method,
    Activity_property,
    Activity_property_representation,
    Independent_property_representation,
    Managed_resource,
    Required_resource,
    Resource_as_realized,
    Resource_as_realized_relationship,
    Resource_event,
    Resource_property,
    Resource_property_representation);
END_TYPE;

TYPE ar_documented_element_select = SELECT BASED_ON documented_element_select WITH
   (Observation,
    Observation_consequence);
END_TYPE;

TYPE ar_identification_item = EXTENSIBLE SELECT BASED_ON identification_item WITH
   (Observation,
    Observation_consequence);
END_TYPE;

TYPE ar_justification_support_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON justification_support_item WITH
   (Observation);
END_TYPE;

TYPE ar_observed_context = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON observed_context WITH
   (Activity,
    Activity_method,
    Applied_activity_assignment,
    Interface_connector_occurrence,
    Product,
    Product_group,
    Product_version,
    Product_view_definition,
    Required_resource,
    Resource_as_realized,
    Resource_item,
    Scheme,
    Scheme_entry,
    Scheme_version,
    Task_element,
    Task_method,
    Task_method_version,
    Work_order,
    Work_output,
    Work_request);
END_TYPE;

TYPE ar_resource_as_realized_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON resource_as_realized_item WITH
   (Activity_actual,
    Applied_activity_assignment,
    Event);
END_TYPE;

TYPE ar_string_select = SELECT BASED_ON string_select WITH
   (Observation,
    Observation_consequence);
END_TYPE;

END_SCHEMA;  -- Ap239_activity_recording_arm



SCHEMA Management_resource_information_arm;


TYPE mri_alias_identification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON alias_identification_item WITH
   (Approval_status,
    Contract,
    Organization,
    Security_classification);
END_TYPE;

TYPE mri_approval_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON approval_item WITH
   (Certification,
    Contract);
END_TYPE;

TYPE mri_date_or_date_time_item = EXTENSIBLE SELECT BASED_ON date_or_date_time_item WITH
   (Certification,
    Contract,
    Organization_or_person_in_organization_assignment,
    Security_classification_assignment);
END_TYPE;

TYPE mri_identification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON identification_item WITH
   (Approval_status,
    Contract,
    Organization,
    Security_classification);
END_TYPE;

TYPE mri_organization_or_person_in_organization_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON organization_or_person_in_organization_item WITH
   (Contract,
    Identification_assignment,
    Security_classification_assignment);
END_TYPE;

TYPE mri_string_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON string_select WITH
   (Approval,
    Approval_relationship,
    Approval_status,
    Certification,
    Contract,
    Date_or_date_time_assignment,
    Identification_assignment,
    Organization_relationship,
    Person_in_organization,
    Project,
    Project_assignment,
    Project_relationship);
END_TYPE;

END_SCHEMA;  -- Management_resource_information_arm



SCHEMA Ap239_management_resource_information_arm;


TYPE ap239_mri_alias_identification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON alias_identification_item WITH
   (Address,
    Approval,
    Approval_status,
    Certification,
    Event,
    External_class_library,
    Organization,
    Organization_or_person_in_organization_assignment,
    Person,
    Person_in_organization,
    Project,
    Security_classification,
    Security_classification_assignment);
END_TYPE;

TYPE ap239_mri_approval_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON approval_item WITH
   (Address_assignment,
    Certification_assignment,
    Classification_assignment,
    Contract_assignment,
    Date_or_date_time_assignment,
    Event,
    Event_assignment,
    Identification_assignment,
    Organization_or_person_in_organization_assignment,
    Organization_relationship,
    Person_in_organization,
    Project,
    Project_assignment,
    Security_classification,
    Security_classification_assignment);
END_TYPE;

TYPE ap239_mri_certification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON certification_item WITH
   (Project);
END_TYPE;

TYPE ap239_mri_classification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON classification_item WITH
   (Address,
    Address_assignment,
    Approval,
    Approval_assignment,
    Approval_relationship,
    Approval_status,
    Approving_person_organization,
    Attribute_translation_assignment,
    Calendar_date,
    Certification,
    Certification_assignment,
    Class,
    Contract,
    Contract_assignment,
    Date_or_date_time_assignment,
    Date_time,
    Event,
    Event_assignment,
    Event_relationship,
    External_class_library,
    Identification_assignment,
    Language,
    Language_indication,
    Local_time,
    Organization,
    Organization_or_person_in_organization_assignment,
    Organization_relationship,
    Person,
    Person_in_organization,
    Project,
    Project_assignment,
    Project_relationship,
    Security_classification,
    Security_classification_assignment,
    Time_interval_relationship);
END_TYPE;

TYPE ap239_mri_classified_attribute_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON classified_attribute_select WITH
   (Address_assignment,
    Approval,
    Approval_assignment,
    Approval_relationship,
    Approval_status,
    Approving_person_organization,
    Certification,
    Certification_assignment,
    Contract,
    Date_or_date_time_assignment,
    Event_assignment,
    Event_relationship,
    Identification_assignment,
    Language,
    Organization_or_person_in_organization_assignment,
    Organization_relationship,
    Person_in_organization,
    Project_assignment,
    Project_relationship,
    Security_classification,
    Time_interval_relationship);
END_TYPE;

TYPE ap239_mri_contract_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON contract_item WITH
   (External_class,
    External_class_library,
    Security_classification);
END_TYPE;

TYPE ap239_mri_date_or_date_time_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON date_or_date_time_item WITH
   (Address_assignment,
    Alias_identification,
    Approval,
    Certification_assignment,
    Classification_assignment,
    Contract_assignment,
    Date_or_date_time_assignment,
    Event_assignment,
    Identification_assignment,
    Organization_relationship,
    Person,
    Person_in_organization,
    Security_classification);
END_TYPE;

TYPE ap239_mri_event_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON event_item WITH
   (Certification,
    Project);
END_TYPE;

TYPE ap239_mri_identification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON identification_item WITH
   (Address,
    Approval,
    Approval_status,
    Certification,
    Event,
    External_class_library,
    Organization,
    Organization_or_person_in_organization_assignment,
    Person,
    Person_in_organization,
    Project,
    Security_classification,
    Security_classification_assignment);
END_TYPE;

TYPE ap239_mri_organization_or_person_in_organization_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON organization_or_person_in_organization_item WITH
   (Address_assignment,
    Certification,
    Certification_assignment,
    Classification_assignment,
    Contract_assignment,
    Date_or_date_time_assignment,
    Event,
    Event_assignment,
    Organization_or_person_in_organization_assignment,
    Person_in_organization,
    Project,
    Project_assignment,
    Security_classification);
END_TYPE;

TYPE ap239_mri_string_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON string_select WITH
   (Event);
END_TYPE;

END_SCHEMA;  -- Ap239_management_resource_information_arm



SCHEMA Document_management_arm;


TYPE document_management_alias_identification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON alias_identification_item WITH
   (Digital_document_definition,
    Digital_file,
    Document,
    Document_version,
    Hardcopy,
    Physical_document_definition);
END_TYPE;

TYPE document_management_approval_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON mri_approval_item WITH
   (Digital_document_definition,
    Document_definition_relationship,
    Document_version,
    Physical_document_definition);
END_TYPE;

TYPE document_management_contract_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON contract_item WITH
   (Document_version);
END_TYPE;

TYPE document_management_date_or_date_time_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON mri_date_or_date_time_item WITH
   (Digital_document_definition,
    Digital_file,
    Document_definition_relationship,
    Document_version,
    Hardcopy,
    Physical_document_definition);
END_TYPE;

TYPE document_management_identification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON mri_identification_item WITH
   (Digital_document_definition,
    Digital_file,
    Document,
    Document_version,
    Hardcopy,
    Physical_document_definition);
END_TYPE;

TYPE document_management_person_and_organization_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON mri_organization_or_person_in_organization_item WITH
   (Digital_document_definition,
    Digital_file,
    Document,
    Document_version,
    Hardcopy,
    Physical_document_definition);
END_TYPE;

TYPE document_management_security_classification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON security_classification_item WITH
   (Digital_document_definition,
    Digital_file,
    Document,
    Document_version,
    Hardcopy,
    Physical_document_definition);
END_TYPE;

TYPE document_management_string_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON mri_string_select WITH
   (Digital_document_definition,
    Document,
    Document_assignment,
    Document_definition_relationship,
    Document_version,
    External_item_identification,
    External_source_identification,
    File_relationship,
    Physical_document_definition,
    Product_category);
END_TYPE;

END_SCHEMA;  -- Document_management_arm



SCHEMA Ap239_product_definition_information_arm;


TYPE ap239_prdi_alias_identification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON alias_identification_item WITH
   (Attachment_slot,
    Attachment_slot_definition,
    Attachment_slot_version,
    Breakdown,
    Breakdown_element,
    Breakdown_element_definition,
    Breakdown_element_version,
    Breakdown_version,
    Item_shape,
    Product_configuration,
    Product_relationship,
    Shape_element_relationship,
    View_definition_relationship);
END_TYPE;

TYPE ap239_prdi_approval_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON approval_item WITH
   (Alternate_part_relationship,
    Assembly_component_relationship,
    Assembly_relationship_substitution,
    Attachment_slot_as_planned,
    Attachment_slot_as_realized,
    Attachment_slot_design,
    Attachment_slot_design_to_planned,
    Attachment_slot_design_to_realized,
    Attachment_slot_on_product,
    Attachment_slot_planned_to_realized,
    Breakdown,
    Breakdown_element,
    Breakdown_element_definition,
    Breakdown_element_realization,
    Breakdown_element_usage,
    Breakdown_element_version,
    Breakdown_version,
    Effectivity,
    In_zone,
    Product_configuration,
    Product_definition_element_relationship,
    Product_in_attachment_slot,
    Product_relationship,
    Selected_item_assignment);
END_TYPE;

TYPE ap239_prdi_certification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON certification_item WITH
   (Breakdown,
    Product_configuration,
    View_definition_relationship);
END_TYPE;

TYPE ap239_prdi_classification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON classification_item WITH
   (Alternate_part_relationship,
    Assembly_relationship_substitution,
    Attachment_slot_design_to_planned,
    Attachment_slot_design_to_realized,
    Attachment_slot_on_product,
    Attachment_slot_planned_to_realized,
    Breakdown,
    Breakdown_context,
    Breakdown_element,
    Breakdown_element_realization,
    Breakdown_element_usage,
    Breakdown_element_version,
    Breakdown_of,
    Characterizable_object,
    In_zone,
    Item_design_association,
    Item_shape,
    Item_usage_effectivity,
    Product_configuration,
    Product_relationship,
    Selected_item,
    Selected_item_assignment,
    View_definition_relationship);
END_TYPE;

TYPE ap239_prdi_classified_attribute_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON classified_attribute_select WITH
   (Alternate_part_relationship,
    Breakdown_context,
    Breakdown_element_realization,
    Breakdown_element_usage,
    Product_relationship);
END_TYPE;

TYPE ap239_prdi_condition_evaluation_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON condition_evaluation_item WITH
   (Product_definition_element_relationship,
    View_definition_relationship);
END_TYPE;

TYPE ap239_prdi_condition_evaluation_parameter_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON condition_evaluation_parameter_item WITH
   (Product_definition_element_relationship,
    View_definition_relationship);
END_TYPE;

TYPE ap239_prdi_condition_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON condition_item WITH
   (Product_definition_element_relationship,
    View_definition_relationship);
END_TYPE;

TYPE ap239_prdi_condition_parameter_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON condition_parameter_item WITH
   (Product_definition_element_relationship,
    View_definition_relationship);
END_TYPE;

TYPE ap239_prdi_contract_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON contract_item WITH
   (Breakdown,
    Breakdown_element,
    Breakdown_version,
    Product_configuration);
END_TYPE;

TYPE ap239_prdi_date_or_date_time_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON date_or_date_time_item WITH
   (Alternate_part_relationship,
    Assembly_component_relationship,
    Assembly_relationship_substitution,
    Attachment_slot,
    Attachment_slot_definition,
    Attachment_slot_design_to_planned,
    Attachment_slot_design_to_realized,
    Attachment_slot_planned_to_realized,
    Attachment_slot_version,
    Breakdown,
    Breakdown_element,
    Breakdown_element_realization,
    Breakdown_element_usage,
    Breakdown_version,
    Product_configuration,
    Product_in_attachment_slot,
    Product_relationship,
    Selected_item,
    Selected_item_assignment);
END_TYPE;

TYPE ap239_prdi_documented_element_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON documented_element_select WITH
   (Alternate_part_relationship,
    Assembly_component_relationship,
    Assembly_relationship_substitution,
    Attachment_slot,
    Attachment_slot_design_to_planned,
    Attachment_slot_design_to_realized,
    Attachment_slot_planned_to_realized,
    Attachment_slot_version,
    Breakdown,
    Breakdown_context,
    Breakdown_element,
    Breakdown_element_realization,
    Breakdown_element_usage,
    Breakdown_version,
    Product_configuration,
    Product_relationship,
    Selected_item,
    Shape_element,
    Shape_element_relationship,
    View_definition_relationship);
END_TYPE;

TYPE ap239_prdi_effectivity_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON effectivity_item WITH
   (Address_assignment,
    Alternate_part_relationship,
    Applied_information_usage_right,
    Assembly_component_relationship,
    Assembly_relationship_substitution,
    Assigned_property,
    Attachment_slot,
    Attachment_slot_as_planned,
    Attachment_slot_as_realized,
    Attachment_slot_definition,
    Attachment_slot_design,
    Attachment_slot_design_to_planned,
    Attachment_slot_design_to_realized,
    Attachment_slot_on_product,
    Attachment_slot_planned_to_realized,
    Attachment_slot_version,
    Breakdown,
    Breakdown_element,
    Breakdown_element_definition,
    Breakdown_element_realization,
    Breakdown_element_usage,
    Breakdown_element_version,
    Breakdown_of,
    Breakdown_version,
    Certification_assignment,
    Contract_assignment,
    Document,
    Document_assignment,
    Document_definition,
    Document_definition_relationship,
    Document_location_identification,
    Document_version,
    File,
    File_relationship,
    Identification_assignment,
    Interface_connection,
    Interface_connector_design_to_planned,
    Interface_connector_design_to_realized,
    Interface_connector_planned_to_realized,
    Make_from_relationship,
    Part,
    Part_version,
    Part_view_definition,
    Product_as_individual,
    Product_as_individual_version,
    Product_as_individual_view,
    Product_configuration,
    Product_design_to_individual,
    Product_in_attachment_slot,
    Product_planned_to_realized,
    Product_relationship,
    Product_version_relationship,
    Project_assignment,
    Requirement,
    Requirement_assignment,
    Requirement_collection_relationship,
    Requirement_source,
    Requirement_version,
    Requirement_version_relationship,
    Requirement_view_definition,
    Security_classification_assignment,
    Selected_item_assignment);
END_TYPE;

TYPE ap239_prdi_identification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON identification_item WITH
   (Attachment_slot,
    Attachment_slot_definition,
    Attachment_slot_version,
    Breakdown,
    Breakdown_element,
    Breakdown_element_definition,
    Breakdown_element_version,
    Breakdown_version,
    Item_shape,
    Product_configuration,
    Product_relationship,
    Shape_element_relationship,
    View_definition_relationship);
END_TYPE;

TYPE ap239_prdi_in_zone_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON in_zone_item WITH
   (Hierarchical_interface_connection,
    Interface_connection,
    Interface_connector_occurrence,
    Interface_definition_connection);
END_TYPE;

TYPE ap239_prdi_information_usage_right_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON information_usage_right_item WITH
   (Alternate_part_relationship,
    Applied_information_usage_right,
    Assembly_component_relationship,
    Assembly_relationship_substitution,
    Attachment_slot_definition,
    Attachment_slot_design_to_planned,
    Attachment_slot_design_to_realized,
    Attachment_slot_on_product,
    Attachment_slot_version,
    Breakdown,
    Breakdown_element,
    Breakdown_element_realization,
    Breakdown_element_usage,
    Breakdown_version,
    Product_configuration);
END_TYPE;

TYPE ap239_prdi_organization_or_person_in_organization_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON organization_or_person_in_organization_item WITH
   (Alternate_part_relationship,
    Approval,
    Assembly_component_relationship,
    Assembly_relationship_substitution,
    Breakdown,
    Breakdown_element,
    Breakdown_element_realization,
    Breakdown_element_usage,
    Breakdown_version,
    Product_configuration,
    Product_relationship,
    Selected_item,
    Selected_item_assignment);
END_TYPE;

TYPE ap239_prdi_product_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON product_item WITH
   (Interface_connector_occurrence);
END_TYPE;

TYPE ap239_prdi_project_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON project_item WITH
   (Breakdown,
    Product_configuration);
END_TYPE;

TYPE ap239_prdi_requirement_assignment_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON requirement_assignment_item WITH
   (Alternate_part_relationship,
    Assembly_component_relationship,
    Assembly_relationship_substitution,
    Attachment_slot,
    Attachment_slot_version,
    Breakdown,
    Breakdown_element,
    Breakdown_element_realization,
    Breakdown_element_usage,
    Breakdown_element_version,
    Breakdown_version,
    Product_configuration,
    Product_in_attachment_slot);
END_TYPE;

TYPE ap239_prdi_security_classification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON security_classification_item WITH
   (Alternate_part_relationship,
    Assembly_component_relationship,
    Assembly_relationship_substitution,
    Attachment_slot_design_to_planned,
    Attachment_slot_design_to_realized,
    Attachment_slot_on_product,
    Attachment_slot_planned_to_realized,
    Attachment_slot_version,
    Breakdown,
    Breakdown_element_definition,
    Breakdown_element_realization,
    Breakdown_element_usage,
    Breakdown_element_version,
    Product_configuration,
    Product_relationship);
END_TYPE;

TYPE ap239_prdi_selected_item_context_items = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON selected_item_context_items WITH
   (Breakdown,
    Contract,
    Part,
    Part_version,
    Product_as_individual,
    Product_as_individual_version,
    Product_concept,
    Product_configuration,
    Project);
END_TYPE;

TYPE ap239_prdi_selected_item_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON selected_item_select WITH
   (Interface_connection,
    Interface_connector_definition,
    Interface_connector_occurrence,
    Interface_definition_connection,
    Product,
    Product_version);
END_TYPE;

TYPE ap239_prdi_state_definition_of_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON state_definition_of_item WITH
   (Alternate_part_relationship,
    Assembly_component_relationship,
    Assembly_relationship_substitution,
    Attachment_slot,
    Attachment_slot_definition,
    Attachment_slot_design_to_planned,
    Attachment_slot_design_to_realized,
    Attachment_slot_on_product,
    Attachment_slot_planned_to_realized,
    Attachment_slot_version,
    Breakdown,
    Breakdown_element,
    Breakdown_element_definition,
    Breakdown_element_realization,
    Breakdown_element_usage,
    Breakdown_element_version,
    Product_configuration,
    Product_in_attachment_slot);
END_TYPE;

TYPE ap239_prdi_state_of_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON state_of_item WITH
   (Alternate_part_relationship,
    Assembly_component_relationship,
    Assembly_relationship_substitution,
    Attachment_slot,
    Attachment_slot_definition,
    Attachment_slot_design_to_planned,
    Attachment_slot_design_to_realized,
    Attachment_slot_on_product,
    Attachment_slot_planned_to_realized,
    Attachment_slot_version,
    Breakdown,
    Breakdown_element,
    Breakdown_element_definition,
    Breakdown_element_realization,
    Breakdown_element_usage,
    Breakdown_element_version,
    Product_configuration,
    Product_in_attachment_slot);
END_TYPE;

TYPE ap239_prdi_string_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON string_select WITH
   (Alternate_part_relationship,
    Assembly_component_relationship,
    Assembly_relationship_substitution,
    Attachment_slot,
    Attachment_slot_definition,
    Attachment_slot_design_to_planned,
    Attachment_slot_design_to_realized,
    Attachment_slot_on_product,
    Attachment_slot_planned_to_realized,
    Attachment_slot_version,
    Breakdown,
    Breakdown_element,
    Breakdown_element_realization,
    Breakdown_element_usage,
    Breakdown_element_version,
    Product_configuration,
    Product_relationship);
END_TYPE;

SUBTYPE_CONSTRAINT ap239_prdi_restrict_breakdown_context_subtypes FOR Breakdown_context;
  ONEOF (Functional_breakdown_context,
         Hybrid_breakdown_context,
         Physical_breakdown_context,
         System_breakdown_context,
         Zone_breakdown_context);
END_SUBTYPE_CONSTRAINT;

SUBTYPE_CONSTRAINT ap239_prdi_restrict_breakdown_element_definition_subtypes FOR Breakdown_element_definition;
  ONEOF (Functional_element_definition,
         Physical_element_definition,
         System_element_definition,
         Zone_element_definition);
END_SUBTYPE_CONSTRAINT;

SUBTYPE_CONSTRAINT ap239_prdi_restrict_breakdown_element_subtypes FOR Breakdown_element;
  ONEOF (Functional_element,
         Physical_element,
         System_element,
         Zone_element);
END_SUBTYPE_CONSTRAINT;

SUBTYPE_CONSTRAINT ap239_prdi_restrict_breakdown_element_usage_subtypes FOR Breakdown_element_usage;
  ONEOF (Functional_element_usage,
         Hybrid_element_usage,
         Physical_element_usage,
         System_element_usage,
         Zone_element_usage);
END_SUBTYPE_CONSTRAINT;

SUBTYPE_CONSTRAINT ap239_prdi_restrict_breakdown_element_version_subtypes FOR Breakdown_element_version;
  ONEOF (Functional_element_version,
         Physical_element_version,
         System_element_version,
         Zone_element_version);
END_SUBTYPE_CONSTRAINT;

SUBTYPE_CONSTRAINT ap239_prdi_restrict_breakdown_subtypes FOR Breakdown;
  ONEOF (Functional_breakdown,
         Hybrid_breakdown,
         Physical_breakdown,
         System_breakdown,
         Zone_breakdown);
END_SUBTYPE_CONSTRAINT;

SUBTYPE_CONSTRAINT ap239_prdi_restrict_breakdown_version_subtypes FOR Breakdown_version;
  ONEOF (Functional_breakdown_version,
         Hybrid_breakdown_version,
         Physical_breakdown_version,
         System_breakdown_version,
         Zone_breakdown_version);
END_SUBTYPE_CONSTRAINT;

SUBTYPE_CONSTRAINT ap239_prdi_restrict_product_subtypes FOR Product;
  ABSTRACT SUPERTYPE;
  ONEOF (Attachment_slot,
         Breakdown,
         Breakdown_element,
         Document,
         Interface_connector,
         Interface_specification,
         Part,
         Product_as_individual,
         Requirement);
END_SUBTYPE_CONSTRAINT;

SUBTYPE_CONSTRAINT ap239_prdi_restrict_product_version_subtype FOR Product_version;
  ABSTRACT SUPERTYPE;
  ONEOF (Attachment_slot_version,
         Breakdown_element_version,
         Breakdown_version,
         Document_version,
         Interface_connector_version,
         Interface_specification_version,
         Part_version,
         Product_as_individual_version,
         Requirement_version);
END_SUBTYPE_CONSTRAINT;

SUBTYPE_CONSTRAINT ap239_prdi_restrict_product_view_definition_subtypes FOR Product_view_definition;
  ONEOF (Attachment_slot_definition,
         Breakdown_element_definition,
         Interface_connector_definition,
         Interface_specification_definition,
         Part_view_definition,
         Product_as_individual_view,
         Requirement_view_definition);
END_SUBTYPE_CONSTRAINT;

SUBTYPE_CONSTRAINT ap239_prdi_restrict_view_definition_relationship_subtypes FOR View_definition_relationship;
  ABSTRACT SUPERTYPE;
  ONEOF (Requirement_collection_relationship,
         Tracing_relationship,
         View_definition_usage);
END_SUBTYPE_CONSTRAINT;

END_SCHEMA;  -- Ap239_product_definition_information_arm



SCHEMA Ap239_part_definition_information_arm;


TYPE ap239_padi_alias_identification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON alias_identification_item WITH
   (Identification_assignment,
    Interface_connection,
    Interface_connector,
    Interface_connector_as_planned,
    Interface_connector_as_realized,
    Interface_connector_definition,
    Interface_connector_design,
    Interface_connector_occurrence,
    Interface_connector_version,
    Interface_definition_connection,
    Interface_definition_for,
    Interface_specification,
    Interface_specification_definition,
    Interface_specification_version,
    Justification,
    Justification_assignment,
    Justification_relationship,
    Justification_support_assignment,
    Part,
    Part_version,
    Part_view_definition,
    Product_as_individual,
    Product_as_individual_view,
    Product_as_planned,
    Product_as_realized,
    Product_concept);
END_TYPE;

TYPE ap239_padi_approval_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON approval_item WITH
   (Applied_state_assignment,
    Applied_state_definition_assignment,
    Effectivity,
    Effectivity_assignment,
    Interface_connection,
    Interface_connector_as_planned,
    Interface_connector_as_realized,
    Interface_connector_definition,
    Interface_connector_design,
    Interface_connector_design_to_planned,
    Interface_connector_design_to_realized,
    Interface_connector_occurrence,
    Interface_connector_planned_to_realized,
    Interface_connector_version,
    Interface_definition_for,
    Interface_specification,
    Interface_specification_definition,
    Interface_specification_version,
    Justification,
    Justification_assignment,
    Justification_relationship,
    Justification_support_assignment,
    Part,
    Part_version,
    Part_view_definition,
    Product_as_individual,
    Product_as_planned,
    Product_as_realized,
    Product_category_assignment,
    Product_concept,
    Product_design_to_individual,
    Product_design_version_to_individual,
    Product_planned_to_realized,
    Product_version_relationship,
    Product_view_definition,
    View_definition_context,
    View_definition_relationship);
END_TYPE;

TYPE ap239_padi_certification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON certification_item WITH
   (Document,
    Document_version,
    Interface_connection,
    Interface_connector_version,
    Interface_definition_connection,
    Interface_specification_version,
    Part,
    Part_version,
    Product_as_individual,
    Product_as_planned,
    Product_as_realized,
    Product_version_relationship);
END_TYPE;

TYPE ap239_padi_classification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON classification_item WITH
   (Defined_state_relationship,
    Effectivity,
    Effectivity_assignment,
    Effectivity_relationship,
    Interface_connection,
    Interface_connector,
    Interface_connector_as_planned,
    Interface_connector_as_realized,
    Interface_connector_definition,
    Interface_connector_design,
    Interface_connector_design_to_planned,
    Interface_connector_design_to_realized,
    Interface_connector_occurrence,
    Interface_connector_planned_to_realized,
    Interface_connector_version,
    Interface_definition_connection,
    Interface_definition_for,
    Interface_specification,
    Interface_specification_definition,
    Interface_specification_version,
    Justification,
    Justification_assignment,
    Justification_relationship,
    Justification_support_assignment,
    Market,
    Part,
    Part_version,
    Part_view_definition,
    Product,
    Product_as_planned,
    Product_as_realized,
    Product_category,
    Product_concept,
    Product_design_to_individual,
    Product_design_version_to_individual,
    Product_planned_to_realized,
    Product_version,
    Product_version_relationship,
    Product_view_definition,
    Requirement,
    Requirement_assignment,
    Requirement_collection_relationship,
    Requirement_source,
    Requirement_version,
    Requirement_version_relationship,
    Requirement_view_definition,
    State_assertion,
    State_assessment,
    Supplied_part_relationship,
    Tracing_relationship,
    View_definition_context);
END_TYPE;

TYPE ap239_padi_classified_attribute_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON classified_attribute_select WITH
   (Effectivity,
    Effectivity_assignment,
    Interface_connection,
    Interface_connector_definition,
    Interface_definition_connection,
    Interface_specification_definition,
    Justification,
    Justification_assignment,
    Justification_support_assignment,
    Market,
    Part_view_definition,
    Product,
    Product_category,
    Product_concept,
    Product_version_relationship,
    Product_view_definition,
    Requirement_version_relationship,
    Requirement_view_definition,
    View_definition_context,
    View_definition_relationship);
END_TYPE;

TYPE ap239_padi_condition_evaluation_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON condition_evaluation_item WITH
   (Approval,
    Approval_assignment,
    Assigned_property,
    Document_assignment,
    Hierarchical_interface_connection,
    Interface_connection,
    Interface_definition_connection);
END_TYPE;

TYPE ap239_padi_condition_evaluation_parameter_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON condition_evaluation_parameter_item WITH
   (Approval,
    Approval_assignment,
    Assigned_property,
    Calendar_date,
    Certification_assignment,
    Classification_assignment,
    Contract_assignment,
    Date_or_date_time_assignment,
    Date_time,
    Document_assignment,
    Hierarchical_interface_connection,
    Identification_assignment,
    Independent_property_representation,
    Interface_connection,
    Interface_connector_occurrence,
    Interface_definition_connection,
    Organization_or_person_in_organization_assignment,
    Product,
    Product_as_individual,
    Product_category_assignment,
    Product_concept,
    Product_version,
    Product_view_definition,
    Property_representation,
    Representation,
    State,
    State_definition);
END_TYPE;

TYPE ap239_padi_condition_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON condition_item WITH
   (Approval,
    Approval_assignment,
    Assigned_property,
    Document_assignment,
    Hierarchical_interface_connection,
    Interface_connection,
    Interface_definition_connection);
END_TYPE;

TYPE ap239_padi_condition_parameter_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON condition_parameter_item WITH
   (Approval,
    Approval_assignment,
    Assigned_property,
    Calendar_date,
    Certification_assignment,
    Classification_assignment,
    Contract_assignment,
    Date_or_date_time_assignment,
    Date_time,
    Document_assignment,
    Hierarchical_interface_connection,
    Identification_assignment,
    Independent_property_representation,
    Interface_connection,
    Interface_connector_occurrence,
    Interface_definition_connection,
    Organization_or_person_in_organization_assignment,
    Product,
    Product_as_individual,
    Product_category_assignment,
    Product_concept,
    Product_version,
    Product_view_definition,
    Property_representation,
    Representation,
    State,
    State_definition);
END_TYPE;

TYPE ap239_padi_contract_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON contract_item WITH
   (Interface_connector_as_planned,
    Interface_connector_as_realized,
    Interface_connector_design,
    Interface_connector_version,
    Interface_specification_version,
    Part,
    Part_version,
    Product_as_individual,
    Product_as_planned,
    Product_as_realized,
    Project);
END_TYPE;

TYPE ap239_padi_date_and_time_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON date_or_date_time_item WITH
   (Effectivity,
    Effectivity_assignment,
    Hierarchical_interface_connection,
    Interface_connection,
    Interface_connector_as_planned,
    Interface_connector_as_realized,
    Interface_connector_definition,
    Interface_connector_design_to_planned,
    Interface_connector_design_to_realized,
    Interface_connector_occurrence,
    Interface_connector_planned_to_realized,
    Interface_connector_version,
    Interface_definition_connection,
    Interface_definition_for,
    Interface_specification_definition,
    Interface_specification_version,
    Justification,
    Justification_assignment,
    Justification_relationship,
    Justification_support_assignment,
    Part,
    Part_version,
    Part_view_definition,
    Product_as_planned,
    Product_as_realized,
    Product_category_assignment,
    Product_concept,
    Product_design_to_individual,
    Product_design_version_to_individual,
    Product_planned_to_realized,
    Product_version,
    Product_version_relationship,
    Product_view_definition,
    Project,
    Project_assignment,
    View_definition_context);
END_TYPE;

TYPE ap239_padi_documented_element_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON documented_element_select WITH
   (Condition,
    Condition_evaluation,
    Document,
    Document_definition,
    Document_version,
    Effectivity,
    Effectivity_assignment,
    Interface_connection,
    Interface_connector_as_planned,
    Interface_connector_as_realized,
    Interface_connector_design,
    Interface_connector_design_to_planned,
    Interface_connector_design_to_realized,
    Interface_connector_occurrence,
    Interface_connector_planned_to_realized,
    Interface_connector_version,
    Interface_definition_connection,
    Interface_specification,
    Interface_specification_version,
    Market,
    Part,
    Part_version,
    Part_view_definition,
    Product,
    Product_as_planned,
    Product_as_realized,
    Product_concept,
    Product_design_to_individual,
    Product_design_version_to_individual,
    Product_planned_to_realized,
    Product_version,
    Product_version_relationship,
    Product_view_definition,
    Project,
    Requirement,
    Requirement_assignment,
    Requirement_source,
    Requirement_version,
    Security_classification,
    Security_classification_assignment,
    State,
    State_assertion,
    State_assessment,
    State_definition);
END_TYPE;

TYPE ap239_padi_effectivity_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON effectivity_item WITH
   (Address_assignment,
    Applied_information_usage_right,
    Approval_assignment,
    Assigned_property,
    Certification_assignment,
    Contract_assignment,
    Date_or_date_time_assignment,
    Document_assignment,
    Document_definition,
    Document_definition_relationship,
    Document_location_identification,
    Effectivity_assignment,
    File,
    File_relationship,
    Identification_assignment,
    Interface_connection,
    Interface_connector_design_to_planned,
    Interface_connector_design_to_realized,
    Interface_connector_occurrence,
    Interface_connector_planned_to_realized,
    Interface_definition_for,
    Justification,
    Justification_assignment,
    Justification_relationship,
    Justification_support_assignment,
    Organization_or_person_in_organization_assignment,
    Organization_relationship,
    Person_in_organization,
    Product,
    Product_as_individual,
    Product_design_to_individual,
    Product_design_version_to_individual,
    Product_planned_to_realized,
    Product_version,
    Product_version_relationship,
    Product_view_definition,
    Project_assignment,
    Requirement_assignment,
    Requirement_collection_relationship,
    Requirement_source,
    Requirement_version_relationship,
    Security_classification_assignment);
END_TYPE;

TYPE ap239_padi_identification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON identification_item WITH
   (Effectivity,
    Information_right,
    Information_usage_right,
    Interface_connection,
    Interface_connector,
    Interface_connector_as_planned,
    Interface_connector_as_realized,
    Interface_connector_definition,
    Interface_connector_design,
    Interface_connector_occurrence,
    Interface_connector_version,
    Interface_definition_connection,
    Interface_specification,
    Interface_specification_definition,
    Interface_specification_version,
    Justification,
    Justification_assignment,
    Justification_relationship,
    Justification_support_assignment,
    Market,
    Part,
    Part_version,
    Part_view_definition,
    Product_as_individual,
    Product_as_individual_view,
    Product_as_planned,
    Product_as_realized,
    Product_concept);
END_TYPE;

TYPE ap239_padi_information_usage_right_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON information_usage_right_item WITH
   (Interface_connection,
    Interface_connector,
    Interface_connector_as_planned,
    Interface_connector_as_realized,
    Interface_connector_definition,
    Interface_connector_design,
    Interface_connector_occurrence,
    Interface_connector_version,
    Interface_definition_connection,
    Interface_definition_for,
    Interface_specification,
    Interface_specification_definition,
    Interface_specification_version,
    Part,
    Part_version,
    Part_view_definition,
    Product_as_individual,
    Product_as_individual_view,
    Product_as_planned,
    Product_as_realized,
    Requirement,
    Requirement_assignment,
    Requirement_version,
    Requirement_view_definition,
    Security_classification,
    Security_classification_assignment,
    Supplied_part_relationship);
END_TYPE;

TYPE ap239_padi_justification_item = SELECT BASED_ON justification_item WITH
   (Approval,
    Approval_assignment,
    Assigned_property,
    Classification_assignment,
    Descriptive_document_property,
    Document_assignment,
    Document_definition,
    Document_definition_relationship,
    Effectivity,
    File_relationship,
    Independent_property,
    Independent_property_relationship,
    Interface_connection,
    Interface_connector_occurrence,
    Interface_definition_connection,
    Message,
    Numerical_document_property,
    Product,
    Product_version,
    Product_version_relationship,
    Product_view_definition,
    State_assertion,
    State_assessment,
    View_definition_relationship);
END_TYPE;

TYPE ap239_padi_justification_support_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON justification_support_item WITH
   (Applied_state_assignment,
    Applied_state_definition_assignment,
    Approval,
    Assigned_property,
    Certification,
    Contract,
    Descriptive_document_property,
    Document_definition,
    Document_definition_relationship,
    Effectivity,
    File_relationship,
    Independent_property,
    Independent_property_relationship,
    Interface_connection,
    Interface_connector_occurrence,
    Interface_definition_connection,
    Message,
    Numerical_document_property,
    Product,
    Product_version,
    Product_version_relationship,
    Product_view_definition,
    State,
    State_definition,
    State_definition_relationship,
    State_relationship,
    View_definition_relationship);
END_TYPE;

TYPE ap239_padi_organization_or_person_in_organization = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON organization_or_person_in_organization_item WITH
   (Alias_identification,
    Effectivity,
    Effectivity_assignment,
    Interface_connection,
    Interface_connector,
    Interface_connector_as_planned,
    Interface_connector_as_realized,
    Interface_connector_definition,
    Interface_connector_occurrence,
    Interface_connector_version,
    Interface_definition_connection,
    Interface_definition_for,
    Interface_specification,
    Interface_specification_definition,
    Interface_specification_version,
    Justification,
    Justification_assignment,
    Justification_relationship,
    Justification_support_assignment,
    Part,
    Part_version,
    Part_view_definition,
    Product_as_individual,
    Product_as_planned,
    Product_as_realized,
    Product_category,
    Product_category_assignment,
    Product_version,
    Product_view_definition,
    View_definition_context);
END_TYPE;

TYPE ap239_padi_project_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON project_item WITH
   (Independent_property,
    Product,
    Product_concept,
    Product_version);
END_TYPE;

TYPE ap239_padi_property_assignment_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON property_assignment_select WITH
   (Address,
    Hierarchical_interface_connection,
    Interface_connection,
    Interface_connector_occurrence,
    Interface_definition_connection,
    Organization_or_person_in_organization_assignment,
    Part_view_definition,
    Person,
    Person_in_organization,
    Project);
END_TYPE;

TYPE ap239_padi_requirement_assignment_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON requirement_assignment_item WITH
   (Document_version,
    Interface_connector_occurrence,
    Interface_specification,
    Part_version,
    Product_as_individual_version,
    Product_as_planned,
    Product_as_realized,
    Product_view_definition,
    Project);
END_TYPE;

TYPE ap239_padi_requirement_source_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON requirement_source_item WITH
   (Document_version,
    Interface_connector_occurrence,
    Part_version,
    Product_as_individual_version,
    Product_view_definition);
END_TYPE;

TYPE ap239_padi_security_classification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON security_classification_item WITH
   (Hierarchical_interface_connection,
    Interface_connection,
    Interface_connector,
    Interface_connector_as_planned,
    Interface_connector_as_realized,
    Interface_connector_definition,
    Interface_connector_design,
    Interface_connector_occurrence,
    Interface_connector_version,
    Interface_definition_connection,
    Interface_definition_for,
    Interface_specification_definition,
    Interface_specification_version,
    Part,
    Part_version,
    Part_view_definition,
    Product_as_individual,
    Product_as_individual_view,
    Product_as_planned,
    Product_as_realized,
    Product_design_to_individual,
    Product_design_version_to_individual);
END_TYPE;

TYPE ap239_padi_state_definition_of_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON state_definition_of_item WITH
   (Certification,
    Contract,
    Interface_connection,
    Interface_connector_as_planned,
    Interface_connector_as_realized,
    Interface_connector_definition,
    Interface_connector_design,
    Interface_connector_occurrence,
    Interface_connector_version,
    Interface_definition_connection,
    Interface_specification,
    Interface_specification_definition,
    Interface_specification_version,
    Organization,
    Part,
    Part_version,
    Part_view_definition,
    Person_in_organization,
    Product_as_individual,
    Product_as_individual_view,
    Product_as_planned,
    Product_as_realized,
    Product_category,
    Project,
    Security_classification);
END_TYPE;

TYPE ap239_padi_state_of_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON state_of_item WITH
   (Certification,
    Contract,
    Interface_connection,
    Interface_connector_as_planned,
    Interface_connector_as_realized,
    Interface_connector_definition,
    Interface_connector_design,
    Interface_connector_occurrence,
    Interface_connector_version,
    Interface_definition_connection,
    Interface_specification,
    Interface_specification_definition,
    Interface_specification_version,
    Organization,
    Part,
    Part_version,
    Part_view_definition,
    Person_in_organization,
    Product_as_individual,
    Product_as_individual_view,
    Product_as_planned,
    Product_as_realized,
    Project,
    Security_classification);
END_TYPE;

TYPE ap239_padi_string_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON string_select WITH
   (Interface_connection,
    Interface_connector,
    Interface_connector_definition,
    Interface_connector_occurrence,
    Interface_connector_version,
    Interface_definition_connection,
    Interface_definition_for,
    Justification,
    Justification_assignment,
    Justification_relationship,
    Justification_support_assignment,
    Part,
    Part_version,
    Part_view_definition,
    Product_as_individual,
    Product_as_individual_version,
    Product_as_individual_view);
END_TYPE;

ENTITY Product_as_individual_effectivity
  SUBTYPE OF (Effectivity);
  items : SET[1:?] OF Product_as_individual;
END_ENTITY;

SUBTYPE_CONSTRAINT ap239_padi_restrict_effectivity_subtypes FOR Effectivity;
  ONEOF (Dated_effectivity,
         Lot_effectivity,
         Product_as_individual_effectivity,
         Serial_effectivity,
         Time_interval_effectivity);
END_SUBTYPE_CONSTRAINT;

END_SCHEMA;  -- Ap239_part_definition_information_arm



SCHEMA Interface_lifecycle_arm;


ENTITY Interface_connector_as_planned
  SUBTYPE OF (Interface_connector_version);
END_ENTITY;

ENTITY Interface_connector_as_realized
  SUBTYPE OF (Interface_connector_version);
END_ENTITY;

ENTITY Interface_connector_design
  SUBTYPE OF (Interface_connector_version);
END_ENTITY;

ENTITY Interface_connector_design_to_planned;
  id : STRING;
  name : STRING;
  description : OPTIONAL STRING;
  design : Interface_connector_design;
  planned : Interface_connector_as_planned;
END_ENTITY;

ENTITY Interface_connector_design_to_realized;
  id : STRING;
  name : STRING;
  description : OPTIONAL STRING;
  design : Interface_connector_design;
  realized : Interface_connector_as_realized;
END_ENTITY;

ENTITY Interface_connector_planned_to_realized;
  id : STRING;
  name : STRING;
  description : OPTIONAL STRING;
  planned : Interface_connector_as_planned;
  realized : Interface_connector_as_realized;
END_ENTITY;

END_SCHEMA;  -- Interface_lifecycle_arm



SCHEMA Ap239_properties_arm;


TYPE ap239_props_approval_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON approval_item WITH
   (Assigned_property,
    Independent_property,
    Independent_property_relationship);
END_TYPE;

TYPE ap239_props_classification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON classification_item WITH
   (Assigned_property,
    Context_dependent_unit,
    Independent_property,
    Independent_property_relationship,
    Independent_property_representation,
    Property_representation,
    Representation,
    Representation_context,
    Representation_item,
    Uncertainty_with_unit,
    Unit,
    Value_with_unit);
END_TYPE;

TYPE ap239_props_classified_attribute_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON classified_attribute_select WITH
   (Assigned_property,
    Context_dependent_unit,
    Independent_property,
    Independent_property_relationship,
    Independent_property_representation,
    Property_representation,
    Representation,
    Representation_context,
    Representation_item,
    Uncertainty_with_unit,
    Unit,
    Value_with_unit);
END_TYPE;

TYPE ap239_props_date_or_date_time_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON date_or_date_time_item WITH
   (Assigned_property,
    Independent_property,
    Independent_property_relationship,
    Independent_property_representation,
    Property_representation,
    Representation);
END_TYPE;

TYPE ap239_props_documented_element_select = SELECT BASED_ON documented_element_select WITH
   (Assigned_property,
    Independent_property,
    Independent_property_relationship,
    Independent_property_representation,
    Property_representation,
    Representation,
    Representation_item);
END_TYPE;

TYPE ap239_props_identification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON identification_item WITH
   (Assigned_property,
    Independent_property,
    Independent_property_relationship);
END_TYPE;

TYPE ap239_props_organization_or_person_in_organization_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON organization_or_person_in_organization_item WITH
   (Assigned_property,
    Independent_property,
    Independent_property_relationship,
    Independent_property_representation,
    Property_representation,
    Representation);
END_TYPE;

TYPE ap239_props_string_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON string_select WITH
   (Assigned_property,
    Independent_property,
    Independent_property_relationship,
    Representation_item);
END_TYPE;

END_SCHEMA;  -- Ap239_properties_arm



SCHEMA Condition_evaluation_characterized_arm;


TYPE condition_evaluation_approval_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON approval_item WITH
   (Condition_evaluation,
    Condition_evaluation_assignment);
END_TYPE;

TYPE condition_evaluation_characterized_activity_definition = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON characterized_activity_definition WITH
   (Condition_evaluation);
END_TYPE;

TYPE condition_evaluation_classified_attribute_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON classified_attribute_select WITH
   (Condition_evaluation,
    Condition_evaluation_parameter,
    Related_condition_parameter);
END_TYPE;

TYPE condition_evaluation_date_or_date_time_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON date_or_date_time_item WITH
   (Condition_evaluation,
    Condition_evaluation_assignment);
END_TYPE;

TYPE condition_evaluation_identification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON identification_item WITH
   (Condition_evaluation);
END_TYPE;

TYPE condition_evaluation_organization_or_person_in_organization_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON organization_or_person_in_organization_item WITH
   (Condition_evaluation,
    Condition_evaluation_assignment);
END_TYPE;

TYPE condition_evaluation_string_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON string_select WITH
   (Condition_evaluation,
    Condition_evaluation_parameter,
    Related_condition_parameter);
END_TYPE;

END_SCHEMA;  -- Condition_evaluation_characterized_arm



SCHEMA Ap239_document_management_arm;


TYPE ap239_dm_alias_identification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON alias_identification_item WITH
   (Document_assignment);
END_TYPE;

TYPE ap239_dm_approval_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON approval_item WITH
   (Descriptive_document_property,
    Document_assignment,
    Numerical_document_property);
END_TYPE;

TYPE ap239_dm_classification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON classification_item WITH
   (Applied_information_usage_right,
    Content_item,
    Descriptive_document_property,
    Digital_document_definition,
    Digital_file,
    Document,
    Document_assignment,
    Document_definition_relationship,
    Document_location_identification,
    Document_property_representation,
    Document_version,
    Envelope,
    Envelope_relationship,
    External_item_identification,
    External_source_identification,
    File_location_identification,
    File_relationship,
    Hardcopy,
    Information_right,
    Information_usage_right,
    Information_usage_right_relationship,
    Message,
    Message_relationship,
    Numerical_document_property,
    Partial_document_assignment,
    Physical_document_definition);
END_TYPE;

TYPE ap239_dm_classified_attribute_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON classified_attribute_select WITH
   (Content_item,
    Descriptive_document_property,
    Digital_file,
    Document_assignment,
    Document_definition_relationship,
    Document_location_identification,
    Document_property_representation,
    Envelope,
    Envelope_relationship,
    External_item_identification,
    External_source_identification,
    File_location_identification,
    File_relationship,
    Hardcopy,
    Information_right,
    Information_usage_right,
    Information_usage_right_relationship,
    Message,
    Message_relationship,
    Numerical_document_property,
    Partial_document_assignment);
END_TYPE;

TYPE ap239_dm_contract_item = EXTENSIBLE SELECT BASED_ON contract_item WITH
   (Document,
    Message);
END_TYPE;

TYPE ap239_dm_date_or_date_time_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON date_or_date_time_item WITH
   (Applied_information_usage_right,
    Descriptive_document_property,
    Document,
    Document_assignment,
    Numerical_document_property);
END_TYPE;

TYPE ap239_dm_documented_element_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON documented_element_select WITH
   (Approval,
    Approval_assignment,
    Certification,
    Certification_assignment,
    Contract,
    Contract_assignment,
    Identification_assignment,
    Information_right,
    Information_usage_right,
    Message,
    Organization,
    Organization_or_person_in_organization_assignment,
    Person);
END_TYPE;

TYPE ap239_dm_identification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON identification_item WITH
   (Document_assignment,
    Message);
END_TYPE;

TYPE ap239_dm_information_usage_right_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON information_usage_right_item WITH
   (Certification,
    Certification_assignment,
    Digital_document_definition,
    Digital_file,
    Document,
    Document_definition_relationship,
    Document_version,
    File_relationship,
    Hardcopy,
    Message,
    Physical_document_definition);
END_TYPE;

TYPE ap239_dm_organization_or_person_in_organization = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON organization_or_person_in_organization_item WITH
   (Descriptive_document_property,
    Document_assignment,
    Message,
    Numerical_document_property);
END_TYPE;

TYPE ap239_dm_property_assignment_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON property_assignment_select WITH
   (Document_assignment);
END_TYPE;

TYPE ap239_dm_security_classification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON security_classification_item WITH
   (Document_assignment);
END_TYPE;

TYPE ap239_dm_state_definition_of_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON state_definition_of_item WITH
   (Digital_document_definition,
    Digital_file,
    Document,
    Document_version,
    File_location_identification,
    Hardcopy,
    Physical_document_definition);
END_TYPE;

TYPE ap239_dm_state_of_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON state_of_item WITH
   (Digital_document_definition,
    Digital_file,
    Document,
    Document_version,
    File_location_identification,
    Hardcopy,
    Physical_document_definition);
END_TYPE;

TYPE ap239_dm_string_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON string_select WITH
   (Envelope,
    Envelope_relationship,
    Information_right,
    Information_usage_right,
    Message,
    Message_relationship);
END_TYPE;

END_SCHEMA;  -- Ap239_document_management_arm



SCHEMA Activity_method_characterized_arm;


TYPE actmethchar_ap239_mri_classification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON ap239_mri_classification_item WITH
   (Activity_method);
END_TYPE;

TYPE actmethchar_ap239_mri_classified_attribute_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON ap239_mri_classified_attribute_select WITH
   (Activity_method);
END_TYPE;

TYPE actmethchar_mri_approval_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON mri_approval_item WITH
   (Activity_method);
END_TYPE;

TYPE actmethchar_mri_date_or_date_time_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON mri_date_or_date_time_item WITH
   (Activity_method);
END_TYPE;

TYPE actmethchar_mri_identification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON mri_identification_item WITH
   (Activity_method);
END_TYPE;

TYPE actmethchar_mri_organization_or_person_in_organization_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON mri_organization_or_person_in_organization_item WITH
   (Activity_method);
END_TYPE;

TYPE actmethchar_mri_string_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON mri_string_select WITH
   (Activity_method);
END_TYPE;

END_SCHEMA;  -- Activity_method_characterized_arm



SCHEMA Work_output_arm;


TYPE work_item = EXTENSIBLE GENERIC_ENTITY SELECT;
END_TYPE;

TYPE work_output_classification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON classification_item WITH
   (Work_output,
    Work_output_assignment,
    Work_output_relationship);
END_TYPE;

TYPE work_output_item = EXTENSIBLE GENERIC_ENTITY SELECT;
END_TYPE;

ENTITY Work_output;
  name : STRING;
  description : OPTIONAL STRING;
  quantity : OPTIONAL Value_with_unit;
  output_item : OPTIONAL work_output_item;
END_ENTITY;

ENTITY Work_output_assignment;
  assigned_output : Work_output;
  item : work_item;
END_ENTITY;

ENTITY Work_output_relationship;
  name : STRING;
  description : OPTIONAL STRING;
  relating : Work_output;
  related : Work_output;
END_ENTITY;

END_SCHEMA;  -- Work_output_arm



SCHEMA Work_output_characterized_arm;


TYPE work_output_approval_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON approval_item WITH
   (Work_output);
END_TYPE;

TYPE work_output_certification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON certification_item WITH
   (Work_output);
END_TYPE;

TYPE work_output_characterized_activity_definition = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON characterized_activity_definition WITH
   (Work_output);
END_TYPE;

TYPE work_output_classified_attribute_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON classified_attribute_select WITH
   (Work_output,
    Work_output_relationship);
END_TYPE;

TYPE work_output_date_or_date_time_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON date_or_date_time_item WITH
   (Work_output);
END_TYPE;

TYPE work_output_identification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON identification_item WITH
   (Work_output);
END_TYPE;

TYPE work_output_organization_or_person_in_organization_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON organization_or_person_in_organization_item WITH
   (Work_output);
END_TYPE;

TYPE work_output_security_classification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON security_classification_item WITH
   (Work_output);
END_TYPE;

TYPE work_output_string_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON string_select WITH
   (Work_output,
    Work_output_relationship);
END_TYPE;

END_SCHEMA;  -- Work_output_characterized_arm



SCHEMA Ap239_product_status_recording_arm;


TYPE ap239_psr_activity_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON activity_item WITH
   (Applied_state_assignment,
    State_assertion,
    State_assessment);
END_TYPE;

TYPE ap239_psr_justification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON justification_item WITH
   (Applied_state_assignment);
END_TYPE;

TYPE ap239_psr_location_assignment_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON location_assignment_select WITH
   (Attachment_slot,
    Attachment_slot_definition,
    Attachment_slot_version,
    Breakdown,
    Breakdown_element,
    Breakdown_element_definition,
    Breakdown_version,
    Product,
    Product_group,
    Product_version,
    View_definition_relationship);
END_TYPE;

TYPE ap239_psr_observed_context = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON observed_context WITH
   (Attachment_slot,
    Attachment_slot_definition,
    Attachment_slot_version,
    Breakdown,
    Breakdown_element,
    Breakdown_element_definition,
    Breakdown_version,
    Product,
    Product_group,
    Product_version,
    View_definition_relationship);
END_TYPE;

TYPE ap239_psr_state_of_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON state_of_item WITH
   (Attachment_slot,
    Attachment_slot_version,
    Breakdown,
    Breakdown_element,
    Breakdown_element_definition,
    Breakdown_version,
    Product,
    Product_group,
    Product_version,
    View_definition_relationship);
END_TYPE;

TYPE ap239_psr_string_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON string_select WITH
   (Observation,
    Observation_consequence);
END_TYPE;

END_SCHEMA;  -- Ap239_product_status_recording_arm



SCHEMA Ap239_task_specification_resourced_arm;


TYPE tsr_approval_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON approval_item WITH
   (Experience_gained,
    Experience_type,
    Organization_organization_type_relationship,
    Person_or_organization_or_person_in_organization_in_position,
    Person_or_organization_or_person_in_organization_in_position_relationship,
    Position,
    Position_assignment,
    Position_group_assignment,
    Position_position_type_assignment,
    Position_type,
    Position_type_assignment,
    Product_group,
    Product_group_membership,
    Product_group_relationship,
    Qualification_assignment,
    Qualification_type,
    Required_resource_assignment,
    Resource_as_realized_assignment,
    Resource_property,
    Task_element,
    Task_element_relationship,
    Task_element_state_relationship,
    Task_method,
    Task_method_assignment,
    Task_method_relationship,
    Task_method_state_relationship,
    Task_method_version,
    Task_method_version_assignment,
    Task_method_version_relationship,
    Task_objective,
    Task_objective_state_relationship,
    Type_of_person,
    Type_of_person_assignment);
END_TYPE;

TYPE tsr_certification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON certification_item WITH
   (Product_group,
    Product_group_relationship,
    Task_element,
    Task_method,
    Task_method_version,
    Task_objective);
END_TYPE;

TYPE tsr_classification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON classification_item WITH
   (Activity_property,
    Activity_property_representation,
    Activity_status,
    Experience_gained,
    Experience_instance,
    Location_representation,
    Organization_type,
    Organizational_location_identification,
    Person_or_organization_or_person_in_organization_in_position,
    Position_assignment,
    Position_group_assignment,
    Position_type_assignment,
    Qualification_assignment,
    Qualification_type_relationship,
    Regional_coordinate,
    Resource_property,
    Resource_property_representation);
END_TYPE;

TYPE tsr_classified_attribute_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON classified_attribute_select WITH
   (Activity_property,
    Activity_property_representation,
    Global_location_representation,
    Location,
    Location_relationship,
    Organizational_location_identification,
    Product_based_location_identification,
    Regional_coordinate,
    Regional_grid_location_representation,
    Resource_property,
    Resource_property_representation);
END_TYPE;

TYPE tsr_condition_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON condition_item WITH
   (Activity_property,
    Product_group,
    Product_group_membership,
    Product_group_relationship,
    Required_resource_assignment,
    Required_resource_relationship,
    Resource_item_assignment,
    Resource_item_relationship,
    Resource_property,
    Task_element_relationship,
    Task_method_assignment,
    Task_method_relationship,
    Task_method_version_assignment,
    Task_method_version_relationship);
END_TYPE;

TYPE tsr_condition_parameter_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON condition_parameter_item WITH
   (Activity,
    Activity_method,
    Activity_property,
    Activity_property_representation,
    Independent_property_representation,
    Managed_resource,
    Required_resource,
    Resource_as_realized,
    Resource_as_realized_relationship,
    Resource_event,
    Resource_property,
    Resource_property_representation);
END_TYPE;

TYPE tsr_contract_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON contract_item WITH
   (Product_group,
    Product_group_relationship,
    Task_element,
    Task_element_relationship,
    Task_method,
    Task_method_assignment,
    Task_method_relationship,
    Task_method_version,
    Task_method_version_assignment,
    Task_method_version_relationship,
    Task_objective);
END_TYPE;

TYPE tsr_date_or_date_time_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON date_or_date_time_item WITH
   (Activity_property,
    Activity_property_representation,
    Location_representation,
    Organization_organization_type_relationship,
    Person_or_organization_or_person_in_organization_in_position,
    Person_or_organization_or_person_in_organization_in_position_relationship,
    Position_assignment,
    Position_group_assignment,
    Position_position_type_assignment,
    Position_type_assignment,
    Product_group,
    Product_group_membership,
    Product_group_relationship,
    Property_representation,
    Required_resource_assignment,
    Resource_as_realized_assignment,
    Resource_property,
    Resource_property_representation,
    Task_element,
    Task_element_relationship,
    Task_element_state_relationship,
    Task_method,
    Task_method_assignment,
    Task_method_relationship,
    Task_method_state_relationship,
    Task_method_version,
    Task_method_version_assignment,
    Task_method_version_relationship,
    Task_objective,
    Task_objective_state_relationship,
    Type_of_person_assignment);
END_TYPE;

TYPE tsr_documented_element_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON documented_element_select WITH
   (Activity_property,
    Activity_property_representation,
    Experience_instance,
    Experience_type,
    Location,
    Location_assignment,
    Location_representation,
    Managed_resource,
    Organization_type,
    Organizational_location_identification,
    Person_or_organization_or_person_in_organization_in_position,
    Person_or_organization_or_person_in_organization_in_position_relationship,
    Position,
    Position_group,
    Position_type,
    Position_type_assignment,
    Probability_distribution,
    Product_group,
    Product_group_membership,
    Product_group_relationship,
    Qualification_type,
    Regional_grid_location_representation,
    Required_resource,
    Required_resource_assignment,
    Required_resource_relationship,
    Resource_as_realized,
    Resource_item_assignment,
    Resource_item_relationship,
    Resource_property,
    Resource_property_representation,
    Task_element,
    Task_element_relationship,
    Task_element_state_relationship,
    Task_method,
    Task_method_assignment,
    Task_method_relationship,
    Task_method_state_relationship,
    Task_method_version,
    Task_method_version_assignment,
    Task_method_version_relationship,
    Task_objective,
    Task_objective_state_relationship,
    Type_of_person,
    Type_of_person_definition);
END_TYPE;

TYPE tsr_effectivity_item = EXTENSIBLE SELECT BASED_ON effectivity_item WITH
   (Activity_method,
    Activity_property,
    Applied_activity_method_assignment,
    Applied_state_definition_assignment,
    Attribute_translation_assignment,
    Managed_resource_relationship,
    Person_or_organization_or_person_in_organization_in_position_relationship,
    Position_assignment,
    Position_group_assignment,
    Position_position_type_assignment,
    Position_type_assignment,
    Required_resource_assignment,
    Required_resource_relationship,
    Resource_item_assignment,
    Resource_item_relationship,
    Resource_property,
    State_definition_relationship,
    Type_of_person_assignment,
    Type_of_person_definition_relationship,
    Work_output_assignment,
    Work_output_relationship);
END_TYPE;

TYPE tsr_identification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON identification_item WITH
   (Descriptive_document_property,
    Experience_instance,
    Experience_type,
    Location,
    Location_representation,
    Numerical_document_property,
    Organization_type,
    Organizational_location_identification,
    Person_or_organization_or_person_in_organization_in_position,
    Person_or_organization_or_person_in_organization_in_position_relationship,
    Position,
    Position_group,
    Probability_distribution,
    Product_group,
    Product_group_membership,
    Product_group_relationship,
    Qualification_assignment,
    Qualification_type,
    Resource_property,
    Task_element,
    Task_element_relationship,
    Task_element_state_relationship,
    Task_method,
    Task_method_assignment,
    Task_method_relationship,
    Task_method_state_relationship,
    Task_method_version,
    Task_method_version_assignment,
    Task_method_version_relationship,
    Task_objective,
    Task_objective_state_relationship,
    Type_of_person);
END_TYPE;

TYPE tsr_information_usage_right_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON information_usage_right_item WITH
   (Task_element,
    Task_method,
    Task_method_version,
    Task_objective);
END_TYPE;

TYPE tsr_justification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON justification_item WITH
   (Activity_property,
    Assigned_property,
    Location_assignment,
    Resource_property,
    Task_element,
    Task_element_relationship,
    Task_element_state_relationship,
    Task_method,
    Task_method_assignment,
    Task_method_relationship,
    Task_method_state_relationship,
    Task_method_version,
    Task_method_version_assignment,
    Task_method_version_relationship,
    Task_objective,
    Task_objective_state_relationship);
END_TYPE;

TYPE tsr_justification_support_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON justification_support_item WITH
   (Activity_property,
    Applied_state_assignment,
    Applied_state_definition_assignment,
    Assigned_property,
    Contract,
    Document,
    Document_version,
    Location,
    Location_assignment,
    Resource_property,
    State,
    State_definition,
    State_definition_relationship,
    State_relationship);
END_TYPE;

TYPE tsr_location_assignment_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON location_assignment_select WITH
   (Document,
    Document_definition,
    Document_version,
    File,
    Interface_connection,
    Interface_connector_occurrence,
    Interface_definition_connection,
    Organization,
    Organization_type,
    Person,
    Person_in_organization,
    Position,
    Position_type,
    Product,
    Product_group,
    Product_version,
    Product_view_definition,
    Project,
    Required_resource,
    Required_resource_assignment,
    Resource_item,
    Resource_item_assignment,
    Task_element,
    Task_method,
    Task_method_assignment,
    Task_method_version,
    Task_method_version_assignment,
    Type_of_person);
END_TYPE;

TYPE tsr_organization_person_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON organization_or_person_in_organization_item WITH
   (Activity_property_representation,
    Applied_independent_resource_property,
    Position_assignment,
    Position_group_assignment,
    Position_position_type_assignment,
    Position_type,
    Position_type_assignment,
    Product_group,
    Product_group_membership,
    Product_group_relationship,
    Required_resource_assignment,
    Resource_as_realized_assignment,
    Resource_property,
    Resource_property_representation,
    Task_element,
    Task_element_relationship,
    Task_element_state_relationship,
    Task_method,
    Task_method_assignment,
    Task_method_relationship,
    Task_method_state_relationship,
    Task_method_version,
    Task_method_version_assignment,
    Task_method_version_relationship,
    Task_objective,
    Task_objective_state_relationship,
    Type_of_person_assignment);
END_TYPE;

TYPE tsr_position_group_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON position_group_item WITH
   (Approving_person_organization,
    Document_definition,
    Organization_or_person_in_organization_assignment,
    Product,
    Product_version,
    Product_view_definition);
END_TYPE;

TYPE tsr_position_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON position_item WITH
   (Approving_person_organization,
    Document_definition,
    Organization_or_person_in_organization_assignment,
    Product,
    Product_version,
    Product_view_definition);
END_TYPE;

TYPE tsr_position_type_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON position_type_item WITH
   (Approving_person_organization,
    Document_definition,
    Organization_or_person_in_organization_assignment,
    Product,
    Product_version,
    Product_view_definition);
END_TYPE;

TYPE tsr_process_property_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON characterized_activity_definition WITH
   (Activity_method_relationship,
    Task_objective);
END_TYPE;

TYPE tsr_product_based_location_representation = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON product_based_location_representation WITH
   (Interface_connection,
    Interface_connector_occurrence,
    Interface_definition_connection);
END_TYPE;

TYPE tsr_project_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON project_item WITH
   (Product_group,
    Product_group_membership,
    Product_group_relationship,
    Task_element,
    Task_method,
    Task_method_assignment,
    Task_method_version,
    Task_method_version_assignment,
    Task_objective);
END_TYPE;

TYPE tsr_property_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON property_assignment_select WITH
   (Applied_activity_method_assignment,
    Task_method_state_relationship,
    Task_objective_state_relationship);
END_TYPE;

TYPE tsr_required_resource_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON required_resource_item WITH
   (Position,
    Position_type,
    Task_element,
    Task_method,
    Task_method_assignment,
    Task_method_version,
    Task_method_version_assignment,
    Type_of_person);
END_TYPE;

TYPE tsr_requirement_assignment_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON requirement_assignment_item WITH
   (Activity_method,
    Applied_activity_method_assignment,
    Applied_state_assignment,
    Applied_state_definition_assignment,
    State,
    State_definition);
END_TYPE;

TYPE tsr_requirement_source_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON requirement_source_item WITH
   (Activity_method,
    Applied_activity_method_assignment,
    Applied_state_assignment,
    Applied_state_definition_assignment,
    State,
    State_definition);
END_TYPE;

TYPE tsr_resource_assignment_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON resource_assignment_item WITH
   (Contract,
    Location,
    Part,
    Part_version,
    Part_view_definition,
    Product_as_individual,
    Product_as_individual_version,
    Product_as_individual_view,
    Product_group,
    Project);
END_TYPE;

TYPE tsr_resource_item_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON resource_item_select WITH
   (Document,
    Document_definition,
    Document_version,
    File,
    Location,
    Organization,
    Organization_type,
    Part,
    Part_version,
    Part_view_definition,
    Person,
    Person_in_organization,
    Position,
    Position_type,
    Product_as_individual,
    Product_as_individual_version,
    Product_as_individual_view,
    Product_group,
    Type_of_person);
END_TYPE;

TYPE tsr_security_classification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON security_classification_item WITH
   (Product_group,
    Product_group_membership,
    Product_group_relationship,
    Task_element,
    Task_element_relationship,
    Task_element_state_relationship,
    Task_method,
    Task_method_assignment,
    Task_method_relationship,
    Task_method_version,
    Task_method_version_assignment,
    Task_method_version_relationship,
    Task_objective,
    Task_objective_state_relationship);
END_TYPE;

TYPE tsr_state_definition_of_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON state_definition_of_item WITH
   (Activity_method,
    Applied_activity_method_assignment,
    Breakdown_version,
    Location,
    Managed_resource,
    Product,
    Product_concept,
    Product_group,
    Product_version,
    View_definition_relationship);
END_TYPE;

TYPE tsr_state_of_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON state_of_item WITH
   (Task_method_version);
END_TYPE;

TYPE tsr_string_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON string_select WITH
   (Experience_gained,
    Experience_type,
    Global_location_representation,
    Location,
    Location_relationship,
    Organization_type,
    Organizational_location_identification,
    Position,
    Position_group,
    Position_relationship,
    Position_role,
    Position_type,
    Product_based_location_identification,
    Product_group,
    Product_group_relationship,
    Qualification_type,
    Regional_coordinate,
    Regional_grid_location_representation,
    Resource_property,
    Task_element,
    Task_element_relationship,
    Task_method,
    Task_method_assignment,
    Task_method_relationship,
    Task_method_version,
    Task_method_version_assignment,
    Task_method_version_relationship,
    Task_objective,
    Type_of_person,
    Type_of_person_assignment,
    Type_of_person_definition,
    Type_of_person_definition_relationship);
END_TYPE;

TYPE tsr_task_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON task_item WITH
   (Activity_property,
    Assigned_document_property,
    Assigned_property,
    Breakdown_element,
    Breakdown_element_definition,
    Breakdown_element_usage,
    Breakdown_element_version,
    Document,
    Document_version,
    Envelope,
    File,
    Interface_connection,
    Interface_connector_occurrence,
    Interface_definition_connection,
    Location,
    Message,
    Observation_consequence,
    Organization,
    Organization_type,
    Part,
    Part_version,
    Part_view_definition,
    Position,
    Position_group,
    Position_type,
    Product,
    Product_as_individual,
    Product_as_individual_version,
    Product_as_individual_view,
    Product_based_location_identification,
    Product_concept,
    Product_configuration,
    Product_group,
    Product_version,
    Product_version_relationship,
    Product_view_definition,
    Required_resource,
    Required_resource_assignment,
    Resource_item,
    Resource_property,
    State_relationship,
    Task_method,
    Task_method_version,
    Type_of_person,
    Type_of_person_definition,
    View_definition_relationship,
    Work_output,
    Work_output_assignment);
END_TYPE;

TYPE tsr_type_of_person_item_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON type_of_person_item_select WITH
   (Person,
    Person_in_organization,
    Position,
    Position_group,
    Position_type);
END_TYPE;

TYPE tsr_work_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON work_item WITH
   (Task_element,
    Task_method,
    Task_method_version);
END_TYPE;

TYPE tsr_work_output_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON work_output_item WITH
   (Breakdown,
    Breakdown_version,
    Contract,
    Document,
    Document_definition,
    Document_version,
    Envelope,
    File,
    Location,
    Managed_resource,
    Message,
    Organization,
    Organization_type,
    Part,
    Part_version,
    Part_view_definition,
    Person,
    Person_in_organization,
    Position,
    Position_type,
    Product,
    Product_as_individual,
    Product_as_individual_version,
    Product_as_individual_view,
    Product_group,
    Product_version,
    Product_view_definition,
    Resource_as_realized,
    Resource_item,
    Type_of_person);
END_TYPE;

END_SCHEMA;  -- Ap239_task_specification_resourced_arm



SCHEMA Ap239_work_definition_arm;


TYPE wd_activity_item = SELECT BASED_ON activity_item WITH
   (Activity,
    Activity_method,
    Activity_property,
    Applied_activity_assignment,
    Applied_state_assignment,
    Assigned_document_property,
    Assigned_property,
    Contract,
    Descriptive_document_property,
    Document,
    Document_definition,
    Document_version,
    Effectivity,
    Envelope,
    Event,
    File,
    Independent_property,
    Interface_connection,
    Interface_connector_occurrence,
    Interface_definition_connection,
    Location,
    Location_representation,
    Managed_resource,
    Message,
    Numerical_document_property,
    Observation_consequence,
    Organization,
    Person,
    Person_in_organization,
    Position,
    Position_group,
    Product,
    Product_concept,
    Product_configuration,
    Product_group,
    Product_version,
    Product_version_relationship,
    Product_view_definition,
    Project,
    Resource_as_realized,
    Resource_event,
    Resource_item,
    Resource_property,
    Scheme,
    Scheme_entry,
    Scheme_version,
    State,
    State_relationship,
    Task_element,
    Task_method,
    Task_method_version,
    View_definition_relationship);
END_TYPE;

TYPE wd_activity_realization_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON activity_realization_select WITH
   (Scheme,
    Scheme_version,
    Task_element,
    Task_method,
    Task_method_version);
END_TYPE;

TYPE wd_affected_item_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON affected_item_select WITH
   (Activity_method,
    Activity_property,
    Assigned_property,
    Contract,
    Document,
    Document_definition,
    Document_version,
    File,
    Interface_connection,
    Interface_connector_occurrence,
    Interface_definition_connection,
    Organization,
    Person,
    Person_in_organization,
    Product,
    Product_group,
    Product_version,
    Product_view_definition,
    Resource_item,
    Resource_property,
    View_definition_relationship);
END_TYPE;

TYPE wd_approval_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON approval_item WITH
   (Activity_method_realization,
    Activity_method_realization_relationship,
    Activity_method_relationship,
    Applied_activity_method_assignment);
END_TYPE;

TYPE wd_certification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON certification_item WITH
   (Activity,
    Activity_method,
    Applied_activity_method_assignment);
END_TYPE;

TYPE wd_condition_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON condition_item WITH
   (Activity,
    Activity_method_realization,
    Activity_method_realization_relationship,
    Activity_method_relationship,
    Applied_activity_assignment,
    Applied_activity_method_assignment);
END_TYPE;

TYPE wd_contract_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON contract_item WITH
   (Activity,
    Activity_method,
    Activity_method_realization,
    Activity_method_realization_relationship,
    Activity_method_relationship,
    Applied_activity_assignment,
    Applied_activity_method_assignment);
END_TYPE;

TYPE wd_date_or_date_time_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON date_or_date_time_item WITH
   (Activity_method_realization,
    Activity_method_realization_relationship,
    Activity_method_relationship,
    Applied_activity_method_assignment);
END_TYPE;

TYPE wd_documented_element_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON documented_element_select WITH
   (Activity,
    Activity_method,
    Activity_method_realization,
    Activity_method_realization_relationship,
    Activity_method_relationship,
    Applied_activity_assignment,
    Applied_activity_method_assignment);
END_TYPE;

TYPE wd_effectivity_item = EXTENSIBLE SELECT BASED_ON effectivity_item WITH
   (Activity,
    Activity_method,
    Applied_activity_assignment,
    Work_order);
END_TYPE;

TYPE wd_identification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON identification_item WITH
   (Activity_method_realization,
    Activity_method_realization_relationship,
    Activity_method_relationship,
    Applied_activity_method_assignment);
END_TYPE;

TYPE wd_justification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON justification_item WITH
   (Activity,
    Activity_method,
    Activity_method_realization,
    Activity_method_realization_relationship,
    Activity_method_relationship,
    Applied_activity_assignment,
    Applied_activity_method_assignment);
END_TYPE;

TYPE wd_justification_support_item = SELECT BASED_ON justification_support_item WITH
   (Activity,
    Activity_method,
    Activity_method_assignment,
    Applied_activity_assignment,
    Applied_activity_method_assignment,
    Applied_state_assignment,
    Applied_state_definition_assignment,
    Contract,
    Document,
    Document_definition,
    Document_version,
    Event,
    Project,
    State,
    State_definition,
    Work_order,
    Work_request);
END_TYPE;

TYPE wd_location_assignment_select = SELECT BASED_ON location_assignment_select WITH
   (Activity,
    Activity_method_assignment,
    Applied_activity_assignment,
    Applied_activity_method_assignment);
END_TYPE;

TYPE wd_organization_or_person_in_organization_item = SELECT BASED_ON organization_or_person_in_organization_item WITH
   (Activity_method_realization,
    Activity_method_realization_relationship,
    Activity_method_relationship,
    Applied_activity_method_assignment);
END_TYPE;

TYPE wd_product_breakdown_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON product_item WITH
   (Product_group);
END_TYPE;

TYPE wd_project_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON project_item WITH
   (Activity,
    Activity_method,
    Activity_method_realization,
    Activity_method_realization_relationship,
    Activity_method_relationship,
    Applied_activity_assignment,
    Applied_activity_method_assignment);
END_TYPE;

TYPE wd_property_assignment = SELECT BASED_ON property_assignment_select WITH
   (Applied_activity_assignment);
END_TYPE;

TYPE wd_required_resource_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON required_resource_item WITH
   (Activity,
    Activity_method,
    Applied_activity_assignment,
    Event,
    Scheme,
    Scheme_entry,
    Scheme_version);
END_TYPE;

TYPE wd_scheme_entry_item_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON scheme_entry_item_select WITH
   (Activity,
    Applied_activity_assignment,
    Event,
    Resource_event);
END_TYPE;

TYPE wd_scheme_subject_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON scheme_subject_select WITH
   (Activity,
    Activity_method,
    Applied_activity_assignment,
    Contract,
    Document,
    Document_version,
    Location,
    Managed_resource,
    Organization,
    Organization_type,
    Person,
    Person_in_organization,
    Product,
    Product_as_individual,
    Product_as_individual_version,
    Product_as_individual_view,
    Product_group,
    Product_version,
    Product_view_definition,
    Project,
    Required_resource,
    Resource_as_realized,
    Resource_item,
    Scheme_entry,
    Type_of_person);
END_TYPE;

TYPE wd_scheme_version_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON scheme_version_select WITH
   (Activity,
    Activity_method,
    Applied_activity_assignment,
    Contract,
    Document,
    Document_version,
    Location,
    Managed_resource,
    Organization,
    Organization_type,
    Person,
    Person_in_organization,
    Product,
    Product_as_individual,
    Product_as_individual_version,
    Product_as_individual_view,
    Product_group,
    Product_version,
    Product_view_definition,
    Project,
    Required_resource,
    Resource_as_realized,
    Resource_item,
    Scheme_entry,
    Type_of_person);
END_TYPE;

TYPE wd_security_classification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON security_classification_item WITH
   (Activity,
    Activity_method,
    Activity_method_realization,
    Activity_method_realization_relationship,
    Activity_method_relationship,
    Applied_activity_assignment,
    Applied_activity_method_assignment);
END_TYPE;

TYPE wd_state_definition_of_item = SELECT BASED_ON state_definition_of_item WITH
   (Activity,
    Applied_activity_assignment,
    Scheme,
    Scheme_version,
    Work_order,
    Work_request);
END_TYPE;

TYPE wd_state_of_item = SELECT BASED_ON state_of_item WITH
   (Activity,
    Activity_method,
    Applied_activity_assignment,
    Location,
    Managed_resource,
    Product_concept,
    Scheme,
    Scheme_version,
    Work_order,
    Work_request);
END_TYPE;

TYPE wd_string_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON string_select WITH
   (Activity_method_realization,
    Activity_method_realization_relationship,
    Activity_method_relationship,
    Applied_activity_method_assignment);
END_TYPE;

TYPE wd_work_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON work_item WITH
   (Activity,
    Activity_method,
    Applied_activity_assignment,
    Applied_activity_method_assignment,
    Event,
    Scheme,
    Scheme_entry,
    Scheme_version);
END_TYPE;

END_SCHEMA;  -- Ap239_work_definition_arm



SCHEMA Name_assignment_arm;


TYPE assigned_name_select = EXTENSIBLE GENERIC_ENTITY SELECT;
END_TYPE;

ENTITY Name_assignment;
  name : STRING;
  role : STRING;
  items : assigned_name_select;
END_ENTITY;

END_SCHEMA;  -- Name_assignment_arm



SCHEMA Requirement_management_arm;


TYPE requirement_alias_idenfication_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON alias_identification_item WITH
   (Requirement_assignment,
    Requirement_collection_relationship,
    Requirement_source,
    Requirement_version_relationship,
    Tracing_relationship);
END_TYPE;

TYPE requirement_contract_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON contract_item WITH
   (Requirement,
    Requirement_assignment,
    Requirement_collection_relationship,
    Requirement_source,
    Requirement_version,
    Requirement_version_relationship,
    Requirement_view_definition,
    Tracing_relationship);
END_TYPE;

TYPE requirement_mri_approval_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON mri_approval_item WITH
   (Requirement,
    Requirement_assignment,
    Requirement_collection_relationship,
    Requirement_source,
    Requirement_version,
    Requirement_version_relationship,
    Requirement_view_definition,
    Tracing_relationship);
END_TYPE;

TYPE requirement_mri_date_or_date_time_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON mri_date_or_date_time_item WITH
   (Requirement,
    Requirement_assignment,
    Requirement_collection_relationship,
    Requirement_source,
    Requirement_version,
    Requirement_version_relationship,
    Requirement_view_definition,
    Tracing_relationship);
END_TYPE;

TYPE requirement_mri_identification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON mri_identification_item WITH
   (Requirement,
    Requirement_assignment,
    Requirement_collection_relationship,
    Requirement_source,
    Requirement_version,
    Requirement_version_relationship,
    Requirement_view_definition,
    Tracing_relationship);
END_TYPE;

TYPE requirement_mri_organization_or_person_in_organization_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON mri_organization_or_person_in_organization_item WITH
   (Requirement,
    Requirement_assignment,
    Requirement_collection_relationship,
    Requirement_source,
    Requirement_version,
    Requirement_version_relationship,
    Requirement_view_definition,
    Tracing_relationship);
END_TYPE;

TYPE requirement_mri_string_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON mri_string_select WITH
   (Requirement,
    Requirement_assignment,
    Requirement_collection_relationship,
    Requirement_source,
    Requirement_version,
    Requirement_version_relationship,
    Requirement_view_definition,
    Tracing_relationship);
END_TYPE;

TYPE requirement_security_classification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON security_classification_item WITH
   (Requirement,
    Requirement_assignment,
    Requirement_collection_relationship,
    Requirement_source,
    Requirement_version,
    Requirement_version_relationship,
    Requirement_view_definition,
    Tracing_relationship);
END_TYPE;

END_SCHEMA;  -- Requirement_management_arm



SCHEMA Selected_item_arm;


TYPE selected_item_context_items = EXTENSIBLE GENERIC_ENTITY SELECT;
END_TYPE;

TYPE selected_item_select = EXTENSIBLE GENERIC_ENTITY SELECT;
END_TYPE;

ENTITY Selected_item
  SUBTYPE OF (Class);
END_ENTITY;

ENTITY Selected_item_assignment;
  assigned_class : Selected_item;
  item : selected_item_select;
  item_context : SET[1:?] OF selected_item_context_items;
END_ENTITY;

END_SCHEMA;  -- Selected_item_arm



SCHEMA Location_assignment_characterized_arm;


TYPE location_assignment_approval_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON approval_item WITH
   (Location_assignment);
END_TYPE;

TYPE location_assignment_classification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON classification_item WITH
   (Location_assignment);
END_TYPE;

TYPE location_assignment_date_or_date_time_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON date_or_date_time_item WITH
   (Location_assignment);
END_TYPE;

TYPE location_assignment_effectivity_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON effectivity_item WITH
   (Location_assignment);
END_TYPE;

TYPE location_assignment_organization_or_person_in_organization_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON organization_or_person_in_organization_item WITH
   (Location_assignment);
END_TYPE;

TYPE location_assignment_property_assignment_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON property_assignment_select WITH
   (Location_assignment);
END_TYPE;

TYPE location_assignment_string_select = SELECT BASED_ON string_select WITH
   (Location_assignment);
END_TYPE;

END_SCHEMA;  -- Location_assignment_characterized_arm



SCHEMA Event_assignment_arm;


TYPE event_item = EXTENSIBLE GENERIC_ENTITY SELECT;
END_TYPE;

ENTITY Event_assignment;
  assigned_event : Event;
  items : SET[1:?] OF event_item;
  role : STRING;
END_ENTITY;

END_SCHEMA;  -- Event_assignment_arm



SCHEMA Time_interval_assignment_arm;


TYPE time_interval_item = EXTENSIBLE SELECT;
END_TYPE;

ENTITY Time_interval_assignment;
  assigned_time_interval : Time_interval;
  role : Time_interval_role;
  items : SET[1:?] OF time_interval_item;
END_ENTITY;

ENTITY Time_interval_role;
  name : STRING;
  description : STRING;
END_ENTITY;

END_SCHEMA;  -- Time_interval_assignment_arm