SCHEMA work_package_definition_dex;


TYPE activity_item = SELECT
   (Activity,
    Activity_method,
    Activity_property,
    Applied_activity_assignment,
    Applied_state_assignment,
    Applied_state_definition_assignment,
    Assigned_property,
    Document,
    Document_definition,
    Document_version,
    Effectivity,
    Envelope,
    File,
    Location,
    Location_representation,
    Message,
    Organization,
    Person,
    Person_in_organization,
    Product,
    Product_concept,
    Product_configuration,
    Product_version,
    Product_view_definition,
    Resource_item,
    Resource_property,
    Scheme,
    Scheme_entry,
    Scheme_version,
    State,
    State_assertion,
    State_assessment,
    State_relationship,
    Task_method,
    Task_method_version,
    View_definition_relationship);
END_TYPE;

TYPE activity_method_item = SELECT
   (Activity,
    Activity_method,
    Activity_property,
    Applied_activity_assignment,
    Assigned_property,
    Breakdown_element,
    Breakdown_element_definition,
    Breakdown_element_version,
    Document,
    Document_version,
    Envelope,
    File,
    Location,
    Message,
    Organization,
    Part,
    Part_version,
    Part_view_definition,
    Person,
    Person_in_organization,
    Product,
    Product_as_individual,
    Product_as_individual_version,
    Product_as_individual_view,
    Product_based_location_identification,
    Product_concept,
    Product_configuration,
    Product_version,
    Product_view_definition,
    Required_resource,
    Required_resource_assignment,
    Resource_item,
    Resource_property,
    Scheme_entry,
    State_relationship,
    Task_method,
    Task_method_version,
    View_definition_relationship);
END_TYPE;

TYPE affected_item_select = SELECT
   (Activity_method,
    Activity_property,
    Assigned_property,
    Document,
    Document_definition,
    Document_version,
    File,
    Organization,
    Person,
    Person_in_organization,
    Product,
    Product_version,
    Product_view_definition,
    Resource_item,
    Resource_property,
    View_definition_relationship);
END_TYPE;

TYPE any_number_value = NUMBER;
END_TYPE;

TYPE any_string_value = STRING;
END_TYPE;

TYPE approval_item = SELECT
   (Activity,
    Activity_method,
    Activity_method_assignment,
    Activity_method_relationship,
    Activity_property,
    Address_assignment,
    Affected_items_assignment,
    Applied_activity_assignment,
    Applied_activity_method_assignment,
    Applied_state_assignment,
    Applied_state_definition_assignment,
    Assembly_component_relationship,
    Assigned_property,
    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_version,
    Breakdown_version,
    Classification_assignment,
    Condition,
    Condition_assignment,
    Date_or_date_time_assignment,
    Digital_document_definition,
    Directed_activity,
    Document_assignment,
    Document_version,
    Effectivity,
    Envelope,
    Identification_assignment,
    In_zone,
    Justification,
    Justification_assignment,
    Justification_relationship,
    Justification_support_assignment,
    Location_assignment,
    Message,
    Organization_or_person_in_organization_assignment,
    Organization_relationship,
    Part,
    Part_version,
    Part_view_definition,
    Person_in_organization,
    Physical_document_definition,
    Product_as_individual,
    Product_as_planned,
    Product_as_realized,
    Product_category_assignment,
    Product_concept,
    Product_configuration,
    Product_definition_element_relationship,
    Product_design_to_individual,
    Product_design_version_to_individual,
    Product_in_attachment_slot,
    Product_planned_to_realized,
    Product_view_definition,
    Required_resource,
    Required_resource_assignment,
    Resource_item,
    Resource_item_assignment,
    Resource_item_relationship,
    Resource_property,
    Task_method,
    Task_method_version,
    View_definition_context,
    View_definition_relationship,
    Work_order,
    Work_request);
END_TYPE;

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

TYPE breakdown_item = SELECT
   (Breakdown_element_definition);
END_TYPE;

TYPE characterized_activity_definition = SELECT
   (Activity,
    Activity_method,
    Activity_method_relationship,
    Condition,
    Condition_relationship,
    Required_resource_assignment,
    Resource_item_assignment);
END_TYPE;

TYPE characterized_resource_select = SELECT
   (Required_resource,
    Resource_item,
    Resource_item_relationship);
END_TYPE;

TYPE classification_item = SELECT
   (Activity,
    Activity_method,
    Activity_method_assignment,
    Activity_method_relationship,
    Activity_property,
    Activity_property_representation,
    Activity_relationship,
    Activity_status,
    Address,
    Address_assignment,
    Affected_items_assignment,
    Applied_activity_assignment,
    Applied_activity_method_assignment,
    Applied_state_assignment,
    Applied_state_definition_assignment,
    Approval,
    Approval_assignment,
    Approval_relationship,
    Approval_status,
    Approving_person_organization,
    Assigned_property,
    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_version,
    Breakdown_of,
    Calendar_date,
    Class,
    Condition,
    Condition_assignment,
    Condition_parameter,
    Condition_relationship,
    Content_item,
    Context_dependent_unit,
    Date_or_date_time_assignment,
    Date_time,
    Defined_state_relationship,
    Digital_document_definition,
    Digital_file,
    Directed_activity,
    Document,
    Document_assignment,
    Document_location_identification,
    Document_version,
    Effectivity,
    Envelope,
    Envelope_relationship,
    External_class_library,
    External_item_identification,
    External_source_identification,
    File_location_identification,
    Hardcopy,
    Identification_assignment,
    In_zone,
    Item_design_association,
    Item_usage_effectivity,
    Justification,
    Justification_assignment,
    Justification_relationship,
    Justification_support_assignment,
    Local_time,
    Location,
    Location_assignment,
    Location_relationship,
    Location_representation,
    Market,
    Message,
    Message_relationship,
    Organization,
    Organization_or_person_in_organization_assignment,
    Organization_relationship,
    Organizational_location_identification,
    Part,
    Part_version,
    Part_view_definition,
    Person,
    Person_in_organization,
    Physical_document_definition,
    Product,
    Product_as_planned,
    Product_as_realized,
    Product_category,
    Product_concept,
    Product_configuration,
    Product_design_to_individual,
    Product_design_version_to_individual,
    Product_planned_to_realized,
    Product_version,
    Product_view_definition,
    Property_representation,
    Regional_coordinate,
    Representation,
    Representation_context,
    Representation_item,
    Required_resource,
    Required_resource_assignment,
    Resource_item,
    Resource_item_assignment,
    Resource_item_relationship,
    Resource_property,
    Resource_property_representation,
    State,
    State_assertion,
    State_assessment,
    State_definition,
    State_definition_relationship,
    State_relationship,
    State_role,
    Task_method,
    Uncertainty_with_unit,
    Unit,
    Value_with_unit,
    View_definition_context,
    View_definition_relationship,
    Work_order,
    Work_request,
    Work_request_status);
END_TYPE;

TYPE condition_item = SELECT
   (Activity,
    Activity_method_relationship,
    Activity_property,
    Applied_activity_assignment,
    Applied_activity_method_assignment,
    Approval,
    Approval_assignment,
    Assigned_property,
    Document_assignment,
    Product_definition_element_relationship,
    Required_resource,
    Required_resource_assignment,
    Resource_item,
    Resource_item_assignment,
    Resource_item_relationship,
    Resource_property,
    State_definition,
    State_definition_relationship,
    View_definition_relationship);
END_TYPE;

TYPE condition_parameter_item = SELECT
   (Activity,
    Activity_method,
    Activity_property,
    Activity_property_representation,
    Approval,
    Approval_assignment,
    Assigned_property,
    Calendar_date,
    Classification_assignment,
    Condition_relationship,
    Date_or_date_time_assignment,
    Date_time,
    Document_assignment,
    Identification_assignment,
    Organization_or_person_in_organization_assignment,
    Product,
    Product_as_individual,
    Product_category_assignment,
    Product_concept,
    Product_definition_element_relationship,
    Product_version,
    Product_view_definition,
    Property_representation,
    Representation,
    Required_resource,
    Resource_property,
    Resource_property_representation,
    State,
    State_definition,
    View_definition_relationship);
END_TYPE;

TYPE constraint_context = SELECT
   (Task_method_version);
END_TYPE;

TYPE contract_item = SELECT
   (Activity,
    Activity_method,
    Activity_method_relationship,
    Applied_activity_assignment,
    Applied_activity_method_assignment,
    Breakdown,
    Breakdown_element,
    Breakdown_version,
    Document,
    Document_version,
    External_class,
    External_class_library,
    Message,
    Part,
    Part_version,
    Product_as_individual,
    Product_as_planned,
    Product_as_realized,
    Product_configuration,
    Resource_item,
    Task_method,
    Task_method_version);
END_TYPE;

TYPE date_or_date_time_item = SELECT
   (Activity,
    Activity_method,
    Activity_method_assignment,
    Activity_method_relationship,
    Activity_property,
    Activity_property_representation,
    Activity_relationship,
    Address_assignment,
    Affected_items_assignment,
    Applied_activity_assignment,
    Applied_activity_method_assignment,
    Applied_state_assignment,
    Applied_state_definition_assignment,
    Approval,
    Assembly_component_relationship,
    Assigned_property,
    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_version,
    Classification_assignment,
    Condition,
    Condition_assignment,
    Date_or_date_time_assignment,
    Digital_document_definition,
    Digital_file,
    Directed_activity,
    Document,
    Document_assignment,
    Document_version,
    Effectivity,
    Envelope,
    Hardcopy,
    Identification_assignment,
    Justification,
    Justification_assignment,
    Justification_relationship,
    Justification_support_assignment,
    Location_assignment,
    Location_representation,
    Message,
    Organization_or_person_in_organization_assignment,
    Organization_relationship,
    Part,
    Part_version,
    Part_view_definition,
    Person,
    Person_in_organization,
    Physical_document_definition,
    Product_as_planned,
    Product_as_realized,
    Product_category_assignment,
    Product_concept,
    Product_configuration,
    Product_design_to_individual,
    Product_design_version_to_individual,
    Product_in_attachment_slot,
    Product_planned_to_realized,
    Product_version,
    Product_view_definition,
    Property_representation,
    Representation,
    Required_resource,
    Required_resource_assignment,
    Resource_item,
    Resource_item_assignment,
    Resource_property,
    Resource_property_representation,
    Scheme_entry,
    State,
    State_assertion,
    State_assessment,
    State_definition,
    State_definition_relationship,
    State_relationship,
    Task_method,
    Task_method_version,
    View_definition_context,
    Work_order,
    Work_request);
END_TYPE;

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

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

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

TYPE documented_element_select = SELECT
   (Activity,
    Activity_method,
    Activity_method_relationship,
    Activity_property,
    Activity_property_representation,
    Applied_activity_assignment,
    Applied_activity_method_assignment,
    Approval,
    Approval_assignment,
    Assembly_component_relationship,
    Assigned_property,
    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_version,
    Condition,
    Document,
    Document_definition,
    Document_version,
    Effectivity,
    Identification_assignment,
    Location,
    Location_assignment,
    Location_representation,
    Market,
    Message,
    Organization,
    Organization_or_person_in_organization_assignment,
    Organizational_location_identification,
    Part,
    Part_version,
    Part_view_definition,
    Person,
    Product,
    Product_as_planned,
    Product_as_realized,
    Product_concept,
    Product_configuration,
    Product_design_to_individual,
    Product_design_version_to_individual,
    Product_planned_to_realized,
    Product_version,
    Product_view_definition,
    Property_representation,
    Regional_grid_location_representation,
    Representation,
    Representation_item,
    Required_resource,
    Required_resource_assignment,
    Resource_item,
    Resource_item_assignment,
    Resource_item_relationship,
    Resource_property,
    Resource_property_representation,
    State,
    State_assertion,
    State_assessment,
    State_definition,
    Task_method,
    Task_method_version,
    View_definition_relationship,
    Work_order,
    Work_request);
END_TYPE;

TYPE external_identification_item = SELECT
   (Document_definition,
    File);
END_TYPE;

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

TYPE identification_item = SELECT
   (Activity,
    Activity_method,
    Activity_method_relationship,
    Activity_property,
    Address,
    Affected_items_assignment,
    Applied_activity_assignment,
    Applied_activity_method_assignment,
    Applied_state_assignment,
    Applied_state_definition_assignment,
    Approval,
    Approval_status,
    Assigned_property,
    Attachment_slot,
    Attachment_slot_definition,
    Attachment_slot_version,
    Breakdown,
    Breakdown_element,
    Breakdown_element_definition,
    Breakdown_element_version,
    Breakdown_version,
    Condition,
    Defined_state_relationship,
    Digital_document_definition,
    Digital_file,
    Directed_activity,
    Document,
    Document_assignment,
    Document_version,
    Effectivity,
    External_class_library,
    Hardcopy,
    Justification,
    Justification_assignment,
    Justification_relationship,
    Justification_support_assignment,
    Location,
    Location_representation,
    Market,
    Message,
    Organization,
    Organization_or_person_in_organization_assignment,
    Organizational_location_identification,
    Part,
    Part_version,
    Part_view_definition,
    Person,
    Person_in_organization,
    Physical_document_definition,
    Product_as_individual,
    Product_as_individual_version,
    Product_as_individual_view,
    Product_as_planned,
    Product_as_realized,
    Product_concept,
    Product_configuration,
    Required_resource,
    Resource_item,
    Resource_property,
    State,
    State_assertion,
    State_assessment,
    State_definition,
    State_definition_relationship,
    State_relationship,
    Task_method,
    Task_method_version,
    View_definition_relationship,
    Work_order,
    Work_request);
END_TYPE;

TYPE in_zone_item = SELECT
   (Product_view_definition);
END_TYPE;

TYPE justification_item = SELECT
   (Activity,
    Activity_method,
    Activity_method_relationship,
    Activity_property,
    Applied_activity_assignment,
    Applied_activity_method_assignment,
    Applied_state_assignment,
    Approval,
    Approval_assignment,
    Assigned_property,
    Classification_assignment,
    Document_assignment,
    Document_definition,
    Effectivity,
    Location_assignment,
    Message,
    Product,
    Product_version,
    Product_view_definition,
    Required_resource,
    Required_resource_assignment,
    Resource_item,
    Resource_item_assignment,
    Resource_item_relationship,
    Resource_property,
    State_assertion,
    State_assessment,
    Task_method,
    Task_method_version,
    View_definition_relationship);
END_TYPE;

TYPE justification_support_item = SELECT
   (Activity,
    Activity_method,
    Activity_method_assignment,
    Activity_property,
    Applied_activity_assignment,
    Applied_activity_method_assignment,
    Applied_state_assignment,
    Applied_state_definition_assignment,
    Approval,
    Assigned_property,
    Document,
    Document_definition,
    Document_version,
    Effectivity,
    Location,
    Location_assignment,
    Message,
    Product,
    Product_version,
    Product_view_definition,
    Resource_property,
    State,
    State_definition,
    State_definition_relationship,
    State_relationship,
    View_definition_relationship,
    Work_order,
    Work_request);
END_TYPE;

TYPE length_measure = REAL;
END_TYPE;

TYPE location_assignment_select = SELECT
   (Activity,
    Activity_method_assignment,
    Applied_activity_assignment,
    Applied_activity_method_assignment,
    Attachment_slot,
    Attachment_slot_definition,
    Attachment_slot_version,
    Breakdown,
    Breakdown_element,
    Breakdown_element_definition,
    Breakdown_version,
    Document,
    Document_definition,
    Document_version,
    File,
    Organization,
    Person,
    Person_in_organization,
    Product,
    Product_version,
    Product_view_definition,
    Required_resource,
    Required_resource_assignment,
    Resource_item,
    Resource_item_assignment,
    Task_method,
    Task_method_version,
    View_definition_relationship);
END_TYPE;

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

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

TYPE method_or_method_version = SELECT
   (Task_method,
    Task_method_version);
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 organization_or_person_in_organization_item = SELECT
   (Activity,
    Activity_method,
    Activity_method_assignment,
    Activity_method_relationship,
    Activity_property,
    Activity_property_representation,
    Activity_relationship,
    Address_assignment,
    Affected_items_assignment,
    Applied_activity_assignment,
    Applied_activity_method_assignment,
    Applied_state_assignment,
    Applied_state_definition_assignment,
    Approval,
    Assembly_component_relationship,
    Assigned_property,
    Breakdown,
    Breakdown_element,
    Breakdown_element_realization,
    Breakdown_version,
    Classification_assignment,
    Condition,
    Condition_assignment,
    Date_or_date_time_assignment,
    Digital_document_definition,
    Digital_file,
    Directed_activity,
    Document,
    Document_assignment,
    Document_definition,
    Document_version,
    Effectivity,
    Envelope,
    Hardcopy,
    Identification_assignment,
    Justification,
    Justification_assignment,
    Justification_relationship,
    Justification_support_assignment,
    Location_assignment,
    Message,
    Organization_or_person_in_organization_assignment,
    Part,
    Part_version,
    Part_view_definition,
    Person_in_organization,
    Physical_document_definition,
    Product_as_individual,
    Product_as_planned,
    Product_as_realized,
    Product_category,
    Product_category_assignment,
    Product_configuration,
    Product_version,
    Product_view_definition,
    Property_representation,
    Representation,
    Required_resource,
    Required_resource_assignment,
    Resource_item,
    Resource_item_assignment,
    Resource_property,
    Resource_property_representation,
    Scheme,
    Scheme_entry,
    State,
    State_assertion,
    State_assessment,
    State_definition,
    State_definition_relationship,
    State_relationship,
    Task_method,
    Task_method_version,
    View_definition_context,
    Work_order,
    Work_request);
END_TYPE;

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

TYPE plane_angle_measure = REAL;
END_TYPE;

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

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

TYPE property_assignment_select = SELECT
   (Address,
    Applied_activity_assignment,
    Applied_activity_method_assignment,
    Applied_state_assignment,
    Applied_state_definition_assignment,
    Breakdown_element_realization,
    Document_assignment,
    Document_definition,
    Envelope,
    File,
    Location_assignment,
    Organization_or_person_in_organization_assignment,
    Part_view_definition,
    Person,
    Person_in_organization,
    Product_view_definition,
    State,
    State_definition,
    State_definition_relationship,
    State_relationship,
    View_definition_relationship);
END_TYPE;

TYPE required_resource_item = SELECT
   (Activity,
    Activity_method,
    Applied_activity_assignment,
    Scheme,
    Scheme_entry,
    Scheme_version,
    Task_method,
    Task_method_version);
END_TYPE;

TYPE resource_assignment_item = SELECT
   (Location,
    Part,
    Part_version,
    Part_view_definition,
    Product_as_individual,
    Product_as_individual_version,
    Product_as_individual_view);
END_TYPE;

TYPE resource_item_select = SELECT
   (Document,
    Document_definition,
    Document_version,
    File,
    Location,
    Organization,
    Part,
    Part_version,
    Part_view_definition,
    Person,
    Person_in_organization,
    Product_as_individual,
    Product_as_individual_version,
    Product_as_individual_view);
END_TYPE;

TYPE scheme_entry_item_select = activity_method_item ;
WHERE
  wr1: NOT ('WORK_PACKAGE_DEFINITION_DEX.ACTIVITY_METHOD' IN TYPEOF(SELF));
  wr2: NOT ('WORK_PACKAGE_DEFINITION_DEX.ACTIVITY_PROPERTY' IN TYPEOF(SELF));
  wr3: NOT ('WORK_PACKAGE_DEFINITION_DEX.ASSIGNED_DOCUMENT_PROPERTY' IN TYPEOF(SELF));
  wr4: NOT ('WORK_PACKAGE_DEFINITION_DEX.ASSIGNED_PROPERTY' IN TYPEOF(SELF));
  wr5: NOT ('WORK_PACKAGE_DEFINITION_DEX.BREAKDOWN_ELEMENT' IN TYPEOF(SELF));
  wr6: NOT ('WORK_PACKAGE_DEFINITION_DEX.BREAKDOWN_ELEMENT_DEFINITION' IN TYPEOF(SELF));
  wr7: NOT ('WORK_PACKAGE_DEFINITION_DEX.BREAKDOWN_ELEMENT_USAGE' IN TYPEOF(SELF));
  wr8: NOT ('WORK_PACKAGE_DEFINITION_DEX.BREAKDOWN_ELEMENT_VERSION' IN TYPEOF(SELF));
  wr9: NOT ('WORK_PACKAGE_DEFINITION_DEX.CONTRACT' IN TYPEOF(SELF));
  wr10: NOT ('WORK_PACKAGE_DEFINITION_DEX.DOCUMENT' IN TYPEOF(SELF));
  wr11: NOT ('WORK_PACKAGE_DEFINITION_DEX.DOCUMENT_VERSION' IN TYPEOF(SELF));
  wr12: NOT ('WORK_PACKAGE_DEFINITION_DEX.ENVELOPE' IN TYPEOF(SELF));
  wr13: NOT ('WORK_PACKAGE_DEFINITION_DEX.FILE' IN TYPEOF(SELF));
  wr14: NOT ('WORK_PACKAGE_DEFINITION_DEX.INTERFACE_CONNECTION' IN TYPEOF(SELF));
  wr15: NOT ('WORK_PACKAGE_DEFINITION_DEX.INTERFACE_CONNECTOR_OCCURRENCE' IN TYPEOF(SELF));
  wr16: NOT ('WORK_PACKAGE_DEFINITION_DEX.INTERFACE_DEFINITION_CONNECTION' IN TYPEOF(SELF));
  wr17: NOT ('WORK_PACKAGE_DEFINITION_DEX.LOCATION' IN TYPEOF(SELF));
  wr18: NOT ('WORK_PACKAGE_DEFINITION_DEX.MANAGED_RESOURCE' IN TYPEOF(SELF));
  wr19: NOT ('WORK_PACKAGE_DEFINITION_DEX.MESSAGE' IN TYPEOF(SELF));
  wr20: NOT ('WORK_PACKAGE_DEFINITION_DEX.OBSERVATION_CONSEQUENCE' IN TYPEOF(SELF));
  wr21: NOT ('WORK_PACKAGE_DEFINITION_DEX.ORGANIZATION' IN TYPEOF(SELF));
  wr22: NOT ('WORK_PACKAGE_DEFINITION_DEX.ORGANIZATION_TYPE' IN TYPEOF(SELF));
  wr23: NOT ('WORK_PACKAGE_DEFINITION_DEX.PART' IN TYPEOF(SELF));
  wr24: NOT ('WORK_PACKAGE_DEFINITION_DEX.PART_VERSION' IN TYPEOF(SELF));
  wr25: NOT ('WORK_PACKAGE_DEFINITION_DEX.PART_VIEW_DEFINITION' IN TYPEOF(SELF));
  wr26: NOT ('WORK_PACKAGE_DEFINITION_DEX.PERSON' IN TYPEOF(SELF));
  wr27: NOT ('WORK_PACKAGE_DEFINITION_DEX.PERSON_IN_ORGANIZATION' IN TYPEOF(SELF));
  wr28: NOT ('WORK_PACKAGE_DEFINITION_DEX.POSITION' IN TYPEOF(SELF));
  wr29: NOT ('WORK_PACKAGE_DEFINITION_DEX.POSITION_GROUP' IN TYPEOF(SELF));
  wr30: NOT ('WORK_PACKAGE_DEFINITION_DEX.POSITION_TYPE' IN TYPEOF(SELF));
  wr31: NOT ('WORK_PACKAGE_DEFINITION_DEX.PRODUCT' IN TYPEOF(SELF));
  wr32: NOT ('WORK_PACKAGE_DEFINITION_DEX.PRODUCT_AS_INDIVIDUAL' IN TYPEOF(SELF));
  wr33: NOT ('WORK_PACKAGE_DEFINITION_DEX.PRODUCT_AS_INDIVIDUAL_VERSION' IN TYPEOF(SELF));
  wr34: NOT ('WORK_PACKAGE_DEFINITION_DEX.PRODUCT_AS_INDIVIDUAL_VIEW' IN TYPEOF(SELF));
  wr35: NOT ('WORK_PACKAGE_DEFINITION_DEX.PRODUCT_BASED_LOCATION_IDENTIFICATION' IN TYPEOF(SELF));
  wr36: NOT ('WORK_PACKAGE_DEFINITION_DEX.PRODUCT_CONCEPT' IN TYPEOF(SELF));
  wr37: NOT ('WORK_PACKAGE_DEFINITION_DEX.PRODUCT_CONFIGURATION' IN TYPEOF(SELF));
  wr38: NOT ('WORK_PACKAGE_DEFINITION_DEX.PRODUCT_GROUP' IN TYPEOF(SELF));
  wr39: NOT ('WORK_PACKAGE_DEFINITION_DEX.PRODUCT_VERSION' IN TYPEOF(SELF));
  wr40: NOT ('WORK_PACKAGE_DEFINITION_DEX.PRODUCT_VERSION_RELATIONSHIP' IN TYPEOF(SELF));
  wr41: NOT ('WORK_PACKAGE_DEFINITION_DEX.PRODUCT_VIEW_DEFINITION' IN TYPEOF(SELF));
  wr42: NOT ('WORK_PACKAGE_DEFINITION_DEX.PROJECT' IN TYPEOF(SELF));
  wr43: NOT ('WORK_PACKAGE_DEFINITION_DEX.REQUIRED_RESOURCE' IN TYPEOF(SELF));
  wr44: NOT ('WORK_PACKAGE_DEFINITION_DEX.REQUIRED_RESOURCE_ASSIGNMENT' IN TYPEOF(SELF));
  wr45: NOT ('WORK_PACKAGE_DEFINITION_DEX.RESOURCE_AS_REALIZED' IN TYPEOF(SELF));
  wr46: NOT ('WORK_PACKAGE_DEFINITION_DEX.RESOURCE_ITEM' IN TYPEOF(SELF));
  wr47: NOT ('WORK_PACKAGE_DEFINITION_DEX.RESOURCE_PROPERTY' IN TYPEOF(SELF));
  wr48: NOT ('WORK_PACKAGE_DEFINITION_DEX.SCHEME_ENTRY' IN TYPEOF(SELF));
  wr49: NOT ('WORK_PACKAGE_DEFINITION_DEX.STATE_RELATIONSHIP' IN TYPEOF(SELF));
  wr50: NOT ('WORK_PACKAGE_DEFINITION_DEX.TASK_METHOD' IN TYPEOF(SELF));
  wr51: NOT ('WORK_PACKAGE_DEFINITION_DEX.TASK_METHOD_VERSION' IN TYPEOF(SELF));
  wr52: NOT ('WORK_PACKAGE_DEFINITION_DEX.TYPE_OF_PERSON' IN TYPEOF(SELF));
  wr53: NOT ('WORK_PACKAGE_DEFINITION_DEX.TYPE_OF_PERSON_DEFINITION' IN TYPEOF(SELF));
  wr54: NOT ('WORK_PACKAGE_DEFINITION_DEX.VIEW_DEFINITION_RELATIONSHIP' IN TYPEOF(SELF));
  wr55: NOT ('WORK_PACKAGE_DEFINITION_DEX.WORK_OUTPUT' IN TYPEOF(SELF));
  wr56: NOT ('WORK_PACKAGE_DEFINITION_DEX.WORK_OUTPUT_ASSIGNMENT' IN TYPEOF(SELF));
END_TYPE;

TYPE scheme_subject_select = activity_method_item ;
WHERE
  wr1: NOT ('WORK_PACKAGE_DEFINITION_DEX.ACTIVITY_PROPERTY' IN TYPEOF(SELF));
  wr2: NOT ('WORK_PACKAGE_DEFINITION_DEX.ASSIGNED_DOCUMENT_PROPERTY' IN TYPEOF(SELF));
  wr3: NOT ('WORK_PACKAGE_DEFINITION_DEX.ASSIGNED_PROPERTY' IN TYPEOF(SELF));
  wr4: NOT ('WORK_PACKAGE_DEFINITION_DEX.BREAKDOWN_ELEMENT' IN TYPEOF(SELF));
  wr5: NOT ('WORK_PACKAGE_DEFINITION_DEX.BREAKDOWN_ELEMENT_DEFINITION' IN TYPEOF(SELF));
  wr6: NOT ('WORK_PACKAGE_DEFINITION_DEX.BREAKDOWN_ELEMENT_USAGE' IN TYPEOF(SELF));
  wr7: NOT ('WORK_PACKAGE_DEFINITION_DEX.BREAKDOWN_ELEMENT_VERSION' IN TYPEOF(SELF));
  wr8: NOT ('WORK_PACKAGE_DEFINITION_DEX.ENVELOPE' IN TYPEOF(SELF));
  wr9: NOT ('WORK_PACKAGE_DEFINITION_DEX.EVENT' IN TYPEOF(SELF));
  wr10: NOT ('WORK_PACKAGE_DEFINITION_DEX.FILE' IN TYPEOF(SELF));
  wr11: NOT ('WORK_PACKAGE_DEFINITION_DEX.INTERFACE_CONNECTION' IN TYPEOF(SELF));
  wr12: NOT ('WORK_PACKAGE_DEFINITION_DEX.INTERFACE_CONNECTOR_OCCURRENCE' IN TYPEOF(SELF));
  wr13: NOT ('WORK_PACKAGE_DEFINITION_DEX.INTERFACE_DEFINITION_CONNECTION' IN TYPEOF(SELF));
  wr14: NOT ('WORK_PACKAGE_DEFINITION_DEX.MESSAGE' IN TYPEOF(SELF));
  wr15: NOT ('WORK_PACKAGE_DEFINITION_DEX.OBSERVATION_CONSEQUENCE' IN TYPEOF(SELF));
  wr16: NOT ('WORK_PACKAGE_DEFINITION_DEX.PART' IN TYPEOF(SELF));
  wr17: NOT ('WORK_PACKAGE_DEFINITION_DEX.PART_VERSION' IN TYPEOF(SELF));
  wr18: NOT ('WORK_PACKAGE_DEFINITION_DEX.PART_VIEW_DEFINITION' IN TYPEOF(SELF));
  wr19: NOT ('WORK_PACKAGE_DEFINITION_DEX.POSITION' IN TYPEOF(SELF));
  wr20: NOT ('WORK_PACKAGE_DEFINITION_DEX.POSITION_GROUP' IN TYPEOF(SELF));
  wr21: NOT ('WORK_PACKAGE_DEFINITION_DEX.POSITION_TYPE' IN TYPEOF(SELF));
  wr22: NOT ('WORK_PACKAGE_DEFINITION_DEX.PRODUCT_BASED_LOCATION_IDENTIFICATION' IN TYPEOF(SELF));
  wr23: NOT ('WORK_PACKAGE_DEFINITION_DEX.PRODUCT_CONCEPT' IN TYPEOF(SELF));
  wr24: NOT ('WORK_PACKAGE_DEFINITION_DEX.PRODUCT_CONFIGURATION' IN TYPEOF(SELF));
  wr25: NOT ('WORK_PACKAGE_DEFINITION_DEX.PRODUCT_VERSION_RELATIONSHIP' IN TYPEOF(SELF));
  wr26: NOT ('WORK_PACKAGE_DEFINITION_DEX.REQUIRED_RESOURCE_ASSIGNMENT' IN TYPEOF(SELF));
  wr27: NOT ('WORK_PACKAGE_DEFINITION_DEX.RESOURCE_EVENT' IN TYPEOF(SELF));
  wr28: NOT ('WORK_PACKAGE_DEFINITION_DEX.RESOURCE_PROPERTY' IN TYPEOF(SELF));
  wr29: NOT ('WORK_PACKAGE_DEFINITION_DEX.STATE_RELATIONSHIP' IN TYPEOF(SELF));
  wr30: NOT ('WORK_PACKAGE_DEFINITION_DEX.TASK_METHOD' IN TYPEOF(SELF));
  wr31: NOT ('WORK_PACKAGE_DEFINITION_DEX.TASK_METHOD_VERSION' IN TYPEOF(SELF));
  wr32: NOT ('WORK_PACKAGE_DEFINITION_DEX.TYPE_OF_PERSON_DEFINITION' IN TYPEOF(SELF));
  wr33: NOT ('WORK_PACKAGE_DEFINITION_DEX.VIEW_DEFINITION_RELATIONSHIP' IN TYPEOF(SELF));
  wr34: NOT ('WORK_PACKAGE_DEFINITION_DEX.WORK_OUTPUT' IN TYPEOF(SELF));
  wr35: NOT ('WORK_PACKAGE_DEFINITION_DEX.WORK_OUTPUT_ASSIGNMENT' IN TYPEOF(SELF));
END_TYPE;

TYPE scheme_version_select = activity_method_item ;
WHERE
  wr1: NOT ('WORK_PACKAGE_DEFINITION_DEX.ACTIVITY_PROPERTY' IN TYPEOF(SELF));
  wr2: NOT ('WORK_PACKAGE_DEFINITION_DEX.ASSIGNED_DOCUMENT_PROPERTY' IN TYPEOF(SELF));
  wr3: NOT ('WORK_PACKAGE_DEFINITION_DEX.ASSIGNED_PROPERTY' IN TYPEOF(SELF));
  wr4: NOT ('WORK_PACKAGE_DEFINITION_DEX.BREAKDOWN_ELEMENT' IN TYPEOF(SELF));
  wr5: NOT ('WORK_PACKAGE_DEFINITION_DEX.BREAKDOWN_ELEMENT_DEFINITION' IN TYPEOF(SELF));
  wr6: NOT ('WORK_PACKAGE_DEFINITION_DEX.BREAKDOWN_ELEMENT_USAGE' IN TYPEOF(SELF));
  wr7: NOT ('WORK_PACKAGE_DEFINITION_DEX.BREAKDOWN_ELEMENT_VERSION' IN TYPEOF(SELF));
  wr8: NOT ('WORK_PACKAGE_DEFINITION_DEX.ENVELOPE' IN TYPEOF(SELF));
  wr9: NOT ('WORK_PACKAGE_DEFINITION_DEX.EVENT' IN TYPEOF(SELF));
  wr10: NOT ('WORK_PACKAGE_DEFINITION_DEX.FILE' IN TYPEOF(SELF));
  wr11: NOT ('WORK_PACKAGE_DEFINITION_DEX.INTERFACE_CONNECTION' IN TYPEOF(SELF));
  wr12: NOT ('WORK_PACKAGE_DEFINITION_DEX.INTERFACE_CONNECTOR_OCCURRENCE' IN TYPEOF(SELF));
  wr13: NOT ('WORK_PACKAGE_DEFINITION_DEX.INTERFACE_DEFINITION_CONNECTION' IN TYPEOF(SELF));
  wr14: NOT ('WORK_PACKAGE_DEFINITION_DEX.MESSAGE' IN TYPEOF(SELF));
  wr15: NOT ('WORK_PACKAGE_DEFINITION_DEX.OBSERVATION_CONSEQUENCE' IN TYPEOF(SELF));
  wr16: NOT ('WORK_PACKAGE_DEFINITION_DEX.PART' IN TYPEOF(SELF));
  wr17: NOT ('WORK_PACKAGE_DEFINITION_DEX.PART_VERSION' IN TYPEOF(SELF));
  wr18: NOT ('WORK_PACKAGE_DEFINITION_DEX.PART_VIEW_DEFINITION' IN TYPEOF(SELF));
  wr19: NOT ('WORK_PACKAGE_DEFINITION_DEX.POSITION' IN TYPEOF(SELF));
  wr20: NOT ('WORK_PACKAGE_DEFINITION_DEX.POSITION_GROUP' IN TYPEOF(SELF));
  wr21: NOT ('WORK_PACKAGE_DEFINITION_DEX.POSITION_TYPE' IN TYPEOF(SELF));
  wr22: NOT ('WORK_PACKAGE_DEFINITION_DEX.PRODUCT_BASED_LOCATION_IDENTIFICATION' IN TYPEOF(SELF));
  wr23: NOT ('WORK_PACKAGE_DEFINITION_DEX.PRODUCT_CONCEPT' IN TYPEOF(SELF));
  wr24: NOT ('WORK_PACKAGE_DEFINITION_DEX.PRODUCT_CONFIGURATION' IN TYPEOF(SELF));
  wr25: NOT ('WORK_PACKAGE_DEFINITION_DEX.PRODUCT_VERSION_RELATIONSHIP' IN TYPEOF(SELF));
  wr26: NOT ('WORK_PACKAGE_DEFINITION_DEX.REQUIRED_RESOURCE_ASSIGNMENT' IN TYPEOF(SELF));
  wr27: NOT ('WORK_PACKAGE_DEFINITION_DEX.RESOURCE_EVENT' IN TYPEOF(SELF));
  wr28: NOT ('WORK_PACKAGE_DEFINITION_DEX.RESOURCE_PROPERTY' IN TYPEOF(SELF));
  wr29: NOT ('WORK_PACKAGE_DEFINITION_DEX.STATE_RELATIONSHIP' IN TYPEOF(SELF));
  wr30: NOT ('WORK_PACKAGE_DEFINITION_DEX.TASK_METHOD' IN TYPEOF(SELF));
  wr31: NOT ('WORK_PACKAGE_DEFINITION_DEX.TASK_METHOD_VERSION' IN TYPEOF(SELF));
  wr32: NOT ('WORK_PACKAGE_DEFINITION_DEX.TYPE_OF_PERSON_DEFINITION' IN TYPEOF(SELF));
  wr33: NOT ('WORK_PACKAGE_DEFINITION_DEX.VIEW_DEFINITION_RELATIONSHIP' IN TYPEOF(SELF));
  wr34: NOT ('WORK_PACKAGE_DEFINITION_DEX.WORK_OUTPUT' IN TYPEOF(SELF));
  wr35: NOT ('WORK_PACKAGE_DEFINITION_DEX.WORK_OUTPUT_ASSIGNMENT' IN TYPEOF(SELF));
END_TYPE;

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

TYPE state_definition_of_item = SELECT
   (Activity,
    Activity_method,
    Applied_activity_assignment,
    Applied_activity_method_assignment,
    Assembly_component_relationship,
    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_version,
    Breakdown_version,
    Digital_document_definition,
    Digital_file,
    Document,
    Document_version,
    File_location_identification,
    Hardcopy,
    Location,
    Organization,
    Part,
    Part_version,
    Part_view_definition,
    Person_in_organization,
    Physical_document_definition,
    Product,
    Product_as_individual,
    Product_as_individual_view,
    Product_as_planned,
    Product_as_realized,
    Product_category,
    Product_concept,
    Product_configuration,
    Product_in_attachment_slot,
    Product_version,
    Resource_group_relationship,
    Resource_item,
    Resource_item_assignment,
    Resource_item_relationship,
    Scheme,
    Scheme_version,
    View_definition_relationship,
    Work_order,
    Work_request);
END_TYPE;

TYPE state_of_item = SELECT
   (Activity,
    Activity_method,
    Applied_activity_assignment,
    Assembly_component_relationship,
    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_version,
    Breakdown_version,
    Digital_document_definition,
    Digital_file,
    Document,
    Document_version,
    File_location_identification,
    Hardcopy,
    Location,
    Message,
    Organization,
    Part,
    Part_version,
    Part_view_definition,
    Person_in_organization,
    Physical_document_definition,
    Product,
    Product_as_individual,
    Product_as_individual_view,
    Product_as_planned,
    Product_as_realized,
    Product_concept,
    Product_configuration,
    Product_in_attachment_slot,
    Product_version,
    Resource_group_relationship,
    Resource_item,
    Resource_item_assignment,
    Resource_item_relationship,
    Scheme,
    Scheme_version,
    Task_method_version,
    View_definition_relationship,
    Work_order,
    Work_request);
END_TYPE;

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

TYPE task_item = activity_method_item ;
WHERE
  wr1: NOT ('WORK_PACKAGE_DEFINITION_DEX.ACTIVITY' IN TYPEOF(SELF));
  wr2: NOT ('WORK_PACKAGE_DEFINITION_DEX.ACTIVITY_METHOD' IN TYPEOF(SELF));
  wr3: NOT ('WORK_PACKAGE_DEFINITION_DEX.APPLIED_ACTIVITY_ASSIGNMENT' IN TYPEOF(SELF));
  wr4: NOT ('WORK_PACKAGE_DEFINITION_DEX.CONTRACT' IN TYPEOF(SELF));
  wr5: NOT ('WORK_PACKAGE_DEFINITION_DEX.EVENT' IN TYPEOF(SELF));
  wr6: NOT ('WORK_PACKAGE_DEFINITION_DEX.MANAGED_RESOURCE' IN TYPEOF(SELF));
  wr7: NOT ('WORK_PACKAGE_DEFINITION_DEX.PERSON' IN TYPEOF(SELF));
  wr8: NOT ('WORK_PACKAGE_DEFINITION_DEX.PERSON_IN_ORGANIZATION' IN TYPEOF(SELF));
  wr9: NOT ('WORK_PACKAGE_DEFINITION_DEX.PROJECT' IN TYPEOF(SELF));
  wr10: NOT ('WORK_PACKAGE_DEFINITION_DEX.RESOURCE_AS_REALIZED' IN TYPEOF(SELF));
  wr11: NOT ('WORK_PACKAGE_DEFINITION_DEX.RESOURCE_EVENT' IN TYPEOF(SELF));
  wr12: NOT ('WORK_PACKAGE_DEFINITION_DEX.SCHEME_ENTRY' IN TYPEOF(SELF));
END_TYPE;

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

TYPE year_number = INTEGER;
END_TYPE;

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

ENTITY Activity_actual
  SUBTYPE OF (Activity);
END_ENTITY;

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

ENTITY Activity_method
  SUPERTYPE OF (ONEOF (Task_method,
                       Task_method_version));
  name : STRING;
  description : OPTIONAL STRING;
  consequence : OPTIONAL STRING;
  purpose : STRING;
END_ENTITY;

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

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

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 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 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 Address_based_location_representation
  SUBTYPE OF (Location_representation);
  postal_address : Address;
END_ENTITY;

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

ENTITY Amount_of_substance_unit
  SUBTYPE OF (Unit);
END_ENTITY;

ENTITY And_state_cause_effect_definition
  SUBTYPE OF (State_cause_effect_definition);
END_ENTITY;

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

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

ENTITY Applied_state_assignment;
  described_state : State;
  assigned_to : state_of_item;
  role : State_role;
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 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;

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 Assigned_property;
  id : OPTIONAL STRING;
  name : STRING;
  description : OPTIONAL STRING;
  described_element : property_assignment_select;
END_ENTITY;

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 Breakdown
  SUPERTYPE OF (ONEOF (Functional_breakdown,
                       Hybrid_breakdown,
                       Physical_breakdown,
                       System_breakdown,
                       Zone_breakdown))
  SUBTYPE OF (Product);
END_ENTITY;

ENTITY Breakdown_context
  SUPERTYPE OF (ONEOF (Functional_breakdown_context,
                       Hybrid_breakdown_context,
                       Physical_breakdown_context,
                       System_breakdown_context,
                       Zone_breakdown_context));
  id : STRING;
  name : STRING;
  description : OPTIONAL STRING;
  breakdown : Breakdown_version;
  breakdown_element : Breakdown_element_definition;
END_ENTITY;

ENTITY Breakdown_element
  SUPERTYPE OF (ONEOF (Functional_element,
                       Physical_element,
                       System_element,
                       Zone_element))
  SUBTYPE OF (Product);
END_ENTITY;

ENTITY Breakdown_element_definition
  SUPERTYPE OF (ONEOF (Functional_element_definition,
                       Physical_element_definition,
                       System_element_definition,
                       Zone_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_version
  SUPERTYPE OF (ONEOF (Functional_element_version,
                       Physical_element_version,
                       System_element_version,
                       Zone_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
  SUPERTYPE OF (ONEOF (Functional_breakdown_version,
                       Hybrid_breakdown_version,
                       Physical_breakdown_version,
                       System_breakdown_version,
                       Zone_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 Calendar_date;
  year_component : year_number;
  month_component : month_in_year_number;
  day_component : day_in_month_number;
END_ENTITY;

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

ENTITY Classification_assignment;
  assigned_class : Class;
  items : SET[1:?] OF classification_item;
  role : OPTIONAL STRING;
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, 'WORK_PACKAGE_DEFINITION_DEX.VIEW_DEFINITION_RELATIONSHIP.RELATED_VIEW') | pdr.relating_view :=: sub_assembly_relationship\View_definition_relationship.relating_view)) = 1);
  WR5: SIZEOF(['WORK_PACKAGE_DEFINITION_DEX.NEXT_ASSEMBLY_USAGE', 'WORK_PACKAGE_DEFINITION_DEX.COMPONENT_UPPER_LEVEL_IDENTIFICATION'] * TYPEOF(upper_assembly_relationship)) = 1;
END_ENTITY;

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

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

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;

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

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

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

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

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

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;

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

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

ENTITY Defined_state_relationship;
  name : STRING;
  description : OPTIONAL STRING;
  definitive_state : State_assertion;
  defined_state : State_assessment;
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 Digital_document_definition
  SUBTYPE OF (Document_definition);
  files : SET OF Digital_file;
END_ENTITY;

ENTITY Digital_file
  SUBTYPE OF (File);
END_ENTITY;

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

ENTITY Document
  SUBTYPE OF (Product);
END_ENTITY;

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

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

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

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

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

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

ENTITY Electric_current_unit
  SUBTYPE OF (Unit);
END_ENTITY;

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;

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

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

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;

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

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

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_version
  SUBTYPE OF (Breakdown_element_version);
  SELF\Breakdown_element_version.of_product : Functional_element;
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 Hardcopy
  SUBTYPE OF (File);
END_ENTITY;

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 Identification_assignment;
  identifier : STRING;
  role : STRING;
  description : OPTIONAL STRING;
  items : SET[1:?] OF identification_item;
END_ENTITY;

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

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

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

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;

ENTITY Length_unit
  SUBTYPE OF (Unit);
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 Location;
  name : STRING;
  description : OPTIONAL STRING;
  alternative_location_representations : SET OF Location_representation;
END_ENTITY;

ENTITY Location_assignment;
  description : OPTIONAL STRING;
  role : OPTIONAL STRING;
  entity_for_location : location_assignment_select;
  location_for_assignment : Location;
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 Lot_effectivity
  SUBTYPE OF (Effectivity);
  lot_id : STRING;
  lot_size : Value_with_unit;
END_ENTITY;

ENTITY Luminous_intensity_unit
  SUBTYPE OF (Unit);
END_ENTITY;

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

ENTITY Mass_unit
  SUBTYPE OF (Unit);
END_ENTITY;

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

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

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

ENTITY Next_assembly_usage
  SUBTYPE OF (Assembly_component_relationship);
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, 'WORK_PACKAGE_DEFINITION_DEX.REPRESENTATION.ITEMS') | 'WORK_PACKAGE_DEFINITION_DEX.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 Numerical_representation_context
  SUBTYPE OF (Representation_context);
  units : OPTIONAL SET[1:?] OF Unit;
  accuracies : OPTIONAL SET[1:?] OF Uncertainty_with_unit;
END_ENTITY;

ENTITY Or_state_cause_effect_definition
  SUBTYPE OF (State_cause_effect_definition);
END_ENTITY;

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

ENTITY Organization_based_location_representation
  SUBTYPE OF (Location_representation);
  location_identifications : LIST OF Organizational_location_identification;
  organization_for_location : Organization;
END_ENTITY;

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;

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

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

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;

ENTITY Part_view_definition
  SUBTYPE OF (Product_view_definition);
  SELF\Product_view_definition.defined_version : Part_version;
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;

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_document_definition
  SUBTYPE OF (Document_definition);
  components : SET OF Hardcopy;
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_version
  SUBTYPE OF (Breakdown_element_version);
  SELF\Breakdown_element_version.of_product : Physical_element;
END_ENTITY;

ENTITY Plane_angle_unit
  SUBTYPE OF (Unit);
END_ENTITY;

ENTITY Product
  ABSTRACT SUPERTYPE OF (ONEOF (Attachment_slot,
                                Breakdown,
                                Breakdown_element,
                                Document,
                                Part,
                                Product_as_individual));
  id : STRING;
  name : OPTIONAL STRING;
  description : OPTIONAL STRING;
END_ENTITY;

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_based_location_identification
  SUBTYPE OF (Location_representation);
  location_identification : STRING;
  location_name : OPTIONAL STRING;
  referenced_product : product_based_location_representation;
END_ENTITY;

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

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

ENTITY Product_concept;
  id : STRING;
  name : STRING;
  description : OPTIONAL STRING;
  target_market : OPTIONAL Market;
UNIQUE
  UR1: id;
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;

ENTITY Product_definition_element_relationship;
  id : STRING;
  name : STRING;
  description : OPTIONAL STRING;
  breakdown : breakdown_item;
  product : product_item;
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_in_attachment_slot
  SUBTYPE OF (View_definition_usage);
  name : STRING;
  SELF\View_definition_relationship.related_view : Attachment_slot_definition;
DERIVE
  attachment_slot : Attachment_slot_definition := SELF\View_definition_relationship.related_view;
  product : Product_view_definition := SELF\View_definition_relationship.relating_view;
END_ENTITY;

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

ENTITY Product_version
  ABSTRACT SUPERTYPE OF (ONEOF (Attachment_slot_version,
                                Breakdown_element_version,
                                Breakdown_version,
                                Document_version,
                                Part_version,
                                Product_as_individual_version));
  id : STRING;
  description : OPTIONAL STRING;
  of_product : Product;
END_ENTITY;

ENTITY Product_view_definition
  SUPERTYPE OF (ONEOF (Attachment_slot_definition,
                       Breakdown_element_definition,
                       Part_view_definition,
                       Product_as_individual_view));
  id : STRING;
  name : OPTIONAL STRING;
  additional_characterization : OPTIONAL STRING;
  initial_context : View_definition_context;
  additional_contexts : SET OF View_definition_context;
  defined_version : Product_version;
WHERE
  WR1: NOT (initial_context IN additional_contexts);
END_ENTITY;

ENTITY Promissory_usage
  SUBTYPE OF (Assembly_component_relationship);
END_ENTITY;

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

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

ENTITY Ratio_unit
  SUBTYPE OF (Unit);
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;

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;
  name : STRING;
END_ENTITY;

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

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 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 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;

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;

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 : Scheme_entry;
  SELF\Applied_activity_method_assignment.items : SET[1:?] OF scheme_entry_item_select;
DERIVE
  assigned_entry : Scheme_entry := SELF\Applied_activity_method_assignment.assigned_activity_method;
END_ENTITY;

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

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

ENTITY Scheme_subject_assignment
  SUBTYPE OF (Applied_activity_method_assignment);
  SELF\Applied_activity_method_assignment.assigned_activity_method : Scheme;
  SELF\Applied_activity_method_assignment.items : SET[1:?] OF scheme_subject_select;
DERIVE
  assigned_scheme : Scheme := SELF\Applied_activity_method_assignment.assigned_activity_method;
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 : Scheme_version;
  SELF\Applied_activity_method_assignment.items : SET[1:?] OF scheme_version_select;
DERIVE
  assigned_scheme_version : Scheme_version := SELF\Applied_activity_method_assignment.assigned_activity_method;
END_ENTITY;

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

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

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

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

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

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

ENTITY Solid_angle_unit
  SUBTYPE OF (Unit);
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);
DERIVE
  effect : SET[1:?] OF State := SELF\State_relationship.relating;
  cause : SET[1:?] OF State := SELF\State_relationship.related;
END_ENTITY;

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

ENTITY State_complement_definition
  SUBTYPE OF (State_definition_relationship);
  set_2 : SET[1:?] OF State_definition;
DERIVE
  universe : SET[1:?] OF State_definition := SELF\State_definition_relationship.relating;
  set_1 : SET[1:?] OF State_definition := SELF\State_definition_relationship.related;
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_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 : SET[1:?] OF State_observed;
  SELF\State_relationship.related : SET[1:?] OF State_predicted;
DERIVE
  observed_state : SET[1:?] OF State_observed := SELF\State_relationship.relating;
  predicted_state : SET[1:?] OF State_predicted := SELF\State_relationship.related;
END_ENTITY;

ENTITY State_proper_subset_definition
  SUBTYPE OF (State_definition_relationship);
DERIVE
  proper_subset : SET[1:?] OF State_definition := SELF\State_definition_relationship.related;
  proper_superset : SET[1:?] OF State_definition := SELF\State_definition_relationship.relating;
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_subset_definition
  SUBTYPE OF (State_definition_relationship);
DERIVE
  superset : SET[1:?] OF State_definition := SELF\State_definition_relationship.relating;
  subset : SET[1:?] OF State_definition := SELF\State_definition_relationship.related;
END_ENTITY;

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

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

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

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

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

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_version
  SUBTYPE OF (Breakdown_element_version);
  SELF\Breakdown_element_version.of_product : System_element;
END_ENTITY;

ENTITY Task_element
  SUBTYPE OF (Activity_method);
END_ENTITY;

ENTITY Task_method
  SUBTYPE OF (Activity_method);
  objective : SET OF Task_objective;
END_ENTITY;

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

ENTITY Task_objective;
END_ENTITY;

ENTITY Thermodynamic_temperature_unit
  SUBTYPE OF (Unit);
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;

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;

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

ENTITY View_definition_relationship
  ABSTRACT SUPERTYPE OF (ONEOF (View_definition_usage));
  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;

ENTITY Work_order;
  name : STRING;
  description : OPTIONAL STRING;
  in_response_to : SET OF Work_request;
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;

ENTITY Xor_state_cause_effect_definition
  SUBTYPE OF (State_cause_effect_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_version
  SUBTYPE OF (Breakdown_element_version);
  SELF\Breakdown_element_version.of_product : Zone_element;
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, 'WORK_PACKAGE_DEFINITION_DEX.PRODUCT_CATEGORY_ASSIGNMENT.PRODUCTS');
  REPEAT i := LOINDEX(category_assignments) TO HIINDEX(category_assignments);
    categories := categories + category_assignments[i].category.name;
  END_REPEAT;
  RETURN (categories);
      

END_FUNCTION;


END_SCHEMA;  -- work_package_definition_dex