Application module: Risk management ISO/TS 10303-1467:2011-10(E)
© ISO

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

4 Information requirements
   4.1 Required AM ARMs
   4.2 ARM type definitions
5 Module interpreted model
   5.1 Mapping specification
   5.2 MIM EXPRESS short listing
     5.2.1 MIM type definitions
     5.2.2 MIM entity definitions

A MIM short names
B Information object registration
C ARM EXPRESS-G   EXPRESS-G
D MIM EXPRESS-G   EXPRESS-G
E Computer interpretable listings
F Change history
Bibliography
Index

(*
ISO TC184/SC4/WG3 N2757 - ISO/TS 10303-1467 Risk management - EXPRESS MIM Long form
Supersedes ISO TC184/SC4/WG3 N2697
*)



SCHEMA Risk_management_mim_LF;


TYPE absorbed_dose_measure = REAL;
END_TYPE;

TYPE acceleration_measure = REAL;
END_TYPE;

TYPE action_items = SELECT
   (action_method,
    action_resource,
    applied_action_assignment,
    applied_action_method_assignment,
    applied_state_type_assignment,
    approval,
    ascribable_state,
    document_file,
    executed_action,
    general_property,
    organization,
    person,
    person_and_organization,
    product,
    product_definition,
    product_definition_formation,
    product_definition_formation_relationship,
    product_definition_relationship,
    risk_impact_assignment,
    risk_perception_source_assignment,
    state_observed,
    state_observed_assignment,
    state_observed_relationship);
END_TYPE;

TYPE action_method_items = SELECT
   (action_method,
    action_method_relationship,
    action_resource,
    action_resource_relationship,
    applied_action_assignment,
    applied_action_method_assignment,
    applied_approval_assignment,
    applied_classification_assignment,
    applied_document_reference,
    applied_document_usage_constraint_assignment,
    applied_identification_assignment,
    applied_organization_assignment,
    applied_person_and_organization_assignment,
    approval,
    ascribable_state,
    calendar_date,
    date_and_time,
    date_and_time_assignment,
    date_assignment,
    document_file,
    executed_action,
    general_property,
    justification_assignment,
    justification_group_assignment,
    justification_item_group_assignment,
    organization,
    person,
    person_and_organization,
    product,
    product_definition,
    product_definition_formation,
    product_definition_formation_relationship,
    product_definition_relationship,
    property_definition,
    property_definition_representation,
    representation,
    risk_impact_assignment,
    risk_perception,
    risk_perception_source_assignment,
    state_observed,
    state_observed_relationship,
    state_type,
    state_type_relationship);
END_TYPE;

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

TYPE amount_of_substance_measure = REAL;
END_TYPE;

TYPE approval_item = SELECT
   (action_method,
    action_method_relationship,
    action_resource,
    action_resource_relationship,
    applied_action_assignment,
    applied_action_method_assignment,
    applied_classification_assignment,
    applied_document_reference,
    applied_document_usage_constraint_assignment,
    applied_identification_assignment,
    applied_organization_assignment,
    applied_person_and_organization_assignment,
    ascribable_state,
    assumption,
    date_and_time_assignment,
    date_assignment,
    executed_action,
    general_property,
    general_property_relationship,
    identification_assignment_relationship,
    justification_assignment,
    justification_group_assignment,
    justification_item_group_assignment,
    justification_support_assignment,
    justification_support_item_group_assignment,
    organization_relationship,
    organizational_address,
    person_and_organization,
    product,
    product_definition,
    product_definition_context,
    product_definition_formation,
    product_definition_formation_relationship,
    product_definition_relationship,
    product_relationship,
    property_definition,
    risk_impact_assignment,
    risk_perception_source_assignment,
    state_observed_assignment,
    state_observed_relationship,
    state_type,
    state_type_assignment,
    state_type_relationship);
END_TYPE;

TYPE area_measure = REAL;
END_TYPE;

TYPE capacitance_measure = REAL;
END_TYPE;

TYPE celsius_temperature_measure = REAL;
END_TYPE;

TYPE characterized_action_definition = SELECT
   (action,
    action_method,
    action_method_relationship,
    action_relationship);
END_TYPE;

TYPE characterized_definition = SELECT
   (characterized_object);
END_TYPE;

TYPE characterized_resource_definition = SELECT
   (action_resource,
    action_resource_relationship);
END_TYPE;

TYPE classification_item = SELECT
   (action_method,
    action_method_relationship,
    action_resource,
    action_resource_relationship,
    applied_action_assignment,
    applied_action_method_assignment,
    applied_document_reference,
    applied_document_usage_constraint_assignment,
    document_file,
    executed_action,
    product,
    product_definition,
    product_definition_formation,
    product_relationship,
    property_definition,
    representation,
    risk_impact_assignment,
    risk_perception_relationship,
    risk_perception_source_assignment,
    state_observed,
    state_observed_assignment,
    state_observed_relationship,
    state_type,
    state_type_assignment,
    state_type_relationship);
END_TYPE;

TYPE compound_item_definition = SELECT
   (list_representation_item,
    set_representation_item);
END_TYPE;

TYPE conductance_measure = REAL;
END_TYPE;

TYPE context_dependent_measure = REAL;
END_TYPE;

TYPE count_measure = NUMBER;
END_TYPE;

TYPE date_and_time_item = SELECT
   (action_method,
    action_method_relationship,
    action_relationship,
    action_resource,
    applied_action_assignment,
    applied_action_method_assignment,
    applied_classification_assignment,
    applied_document_reference,
    applied_document_usage_constraint_assignment,
    applied_identification_assignment,
    applied_organization_assignment,
    applied_person_and_organization_assignment,
    approval,
    approval_person_organization,
    ascribable_state,
    date_and_time_assignment,
    date_assignment,
    document_file,
    executed_action,
    general_property,
    general_property_relationship,
    identification_assignment_relationship,
    justification_assignment,
    justification_group_assignment,
    justification_item_group_assignment,
    justification_support_assignment,
    justification_support_item_group_assignment,
    organization_relationship,
    organizational_address,
    person,
    person_and_organization,
    product,
    product_definition,
    product_definition_context,
    product_definition_formation,
    product_definition_formation_relationship,
    product_relationship,
    property_definition,
    property_definition_representation,
    representation,
    risk_impact_assignment,
    risk_perception_relationship,
    risk_perception_source_assignment,
    state_observed,
    state_observed_assignment,
    state_observed_relationship,
    state_type,
    state_type_assignment,
    state_type_relationship);
END_TYPE;

TYPE date_item = SELECT
   (action_method,
    action_method_relationship,
    action_relationship,
    action_resource,
    applied_action_assignment,
    applied_action_method_assignment,
    applied_classification_assignment,
    applied_document_reference,
    applied_document_usage_constraint_assignment,
    applied_identification_assignment,
    applied_organization_assignment,
    applied_person_and_organization_assignment,
    approval,
    approval_person_organization,
    ascribable_state,
    date_and_time_assignment,
    date_assignment,
    document_file,
    executed_action,
    general_property,
    general_property_relationship,
    identification_assignment_relationship,
    justification_assignment,
    justification_group_assignment,
    justification_item_group_assignment,
    justification_support_assignment,
    justification_support_item_group_assignment,
    organization_relationship,
    organizational_address,
    person,
    person_and_organization,
    product,
    product_definition,
    product_definition_context,
    product_definition_formation,
    product_definition_formation_relationship,
    product_relationship,
    property_definition,
    property_definition_representation,
    representation,
    risk_impact_assignment,
    risk_perception_relationship,
    risk_perception_source_assignment,
    state_observed,
    state_observed_assignment,
    state_observed_relationship,
    state_type,
    state_type_assignment,
    state_type_relationship);
END_TYPE;

TYPE date_time_select = SELECT
   (date,
    date_and_time,
    local_time);
END_TYPE;

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

TYPE derived_property_select = SELECT
   (action_property,
    property_definition,
    resource_property);
END_TYPE;

TYPE description_attribute_select = SELECT
   (application_context,
    approval_role,
    date_role,
    date_time_role,
    external_source,
    organization_role,
    person_and_organization,
    person_and_organization_role,
    property_definition_representation,
    representation);
END_TYPE;

TYPE descriptive_measure = STRING;
END_TYPE;

TYPE document_reference_item = SELECT
   (action_method,
    action_method_relationship,
    action_relationship,
    action_resource,
    action_resource_relationship,
    applied_action_assignment,
    applied_action_method_assignment,
    applied_approval_assignment,
    applied_classification_assignment,
    applied_document_reference,
    applied_document_usage_constraint_assignment,
    applied_identification_assignment,
    applied_organization_assignment,
    applied_person_and_organization_assignment,
    approval,
    ascribable_state,
    assumption_assignment,
    assumption_relationship,
    class,
    executed_action,
    general_property,
    general_property_relationship,
    item_assumed,
    justification_assignment,
    justification_group_assignment,
    justification_item_group_assignment,
    justification_support_assignment,
    justification_support_item_group_assignment,
    organization,
    organization_relationship,
    organizational_address,
    person,
    person_and_organization,
    product,
    product_definition,
    product_definition_formation,
    product_definition_formation_relationship,
    product_definition_relationship,
    product_relationship,
    property_definition,
    property_definition_representation,
    representation,
    representation_item,
    risk_impact_assignment,
    risk_perception_source_assignment,
    state_observed,
    state_type,
    state_type_relationship);
END_TYPE;

TYPE dose_equivalent_measure = REAL;
END_TYPE;

TYPE electric_charge_measure = REAL;
END_TYPE;

TYPE electric_current_measure = REAL;
END_TYPE;

TYPE electric_potential_measure = REAL;
END_TYPE;

TYPE energy_measure = REAL;
END_TYPE;

TYPE external_identification_item = SELECT
   (document_file,
    product_definition);
END_TYPE;

TYPE force_measure = REAL;
END_TYPE;

TYPE founded_item_select = SELECT
   (representation_item);
END_TYPE;

TYPE frequency_measure = REAL;
END_TYPE;

TYPE groupable_item = SELECT
   (action_method,
    action_method_relationship,
    action_relationship,
    action_resource,
    action_resource_relationship,
    action_status,
    address,
    applied_action_assignment,
    applied_action_method_assignment,
    applied_approval_assignment,
    applied_classification_assignment,
    applied_document_reference,
    applied_document_usage_constraint_assignment,
    applied_external_identification_assignment,
    applied_identification_assignment,
    applied_organization_assignment,
    applied_person_and_organization_assignment,
    approval,
    approval_person_organization,
    approval_relationship,
    approval_status,
    ascribable_state,
    ascribable_state_relationship,
    calendar_date,
    class,
    collection_assignment,
    collection_membership,
    coordinated_universal_time_offset,
    date_and_time,
    date_and_time_assignment,
    date_assignment,
    derived_unit,
    derived_unit_element,
    document_file,
    executed_action,
    external_source,
    general_property,
    general_property_relationship,
    identification_assignment_relationship,
    justification_assignment,
    justification_group_assignment,
    justification_item_group_assignment,
    justification_support_assignment,
    justification_support_item_group_assignment,
    local_time,
    measure_with_unit,
    named_unit,
    organization,
    organization_relationship,
    person,
    person_and_organization,
    product,
    product_definition,
    product_definition_context,
    product_definition_formation,
    product_definition_formation_relationship,
    product_definition_relationship,
    product_relationship,
    property_definition,
    property_definition_representation,
    representation,
    representation_context,
    representation_item,
    representation_relationship,
    risk_impact_assignment,
    risk_perception_source_assignment,
    same_as_external_item_assignment,
    state_observed,
    state_observed_assignment,
    state_observed_relationship,
    state_observed_role,
    state_type,
    state_type_assignment,
    state_type_relationship,
    state_type_role) ;
WHERE
  WR1: NOT ('RISK_MANAGEMENT_MIM_LF.GROUP' IN TYPEOF(SELF));
END_TYPE;

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

TYPE id_attribute_select = SELECT
   (action,
    address,
    application_context,
    group,
    product_category,
    property_definition,
    representation);
END_TYPE;

TYPE identification_item = SELECT
   (action_method,
    action_method_relationship,
    action_relationship,
    action_resource,
    address,
    applied_action_assignment,
    applied_action_method_assignment,
    applied_document_reference,
    applied_document_usage_constraint_assignment,
    applied_external_identification_assignment,
    applied_organization_assignment,
    applied_person_and_organization_assignment,
    approval,
    approval_status,
    ascribable_state,
    ascribable_state_relationship,
    class,
    document_file,
    executed_action,
    general_property,
    general_property_relationship,
    identification_assignment_relationship,
    justification_assignment,
    justification_group_assignment,
    justification_item_group_assignment,
    justification_support_assignment,
    justification_support_item_group_assignment,
    organization,
    person,
    person_and_organization,
    product,
    product_definition_formation,
    product_definition_relationship,
    product_relationship,
    property_definition,
    risk_impact_assignment,
    risk_perception_source_assignment,
    state_observed,
    state_observed_assignment,
    state_observed_relationship,
    state_type,
    state_type_assignment,
    state_type_relationship);
END_TYPE;

TYPE identifier = STRING;
END_TYPE;

TYPE illuminance_measure = REAL;
END_TYPE;

TYPE inductance_measure = REAL;
END_TYPE;

TYPE justification_item = SELECT
   (action_method,
    action_method_relationship,
    action_resource,
    action_resource_relationship,
    applied_action_assignment,
    applied_action_method_assignment,
    applied_approval_assignment,
    applied_classification_assignment,
    applied_document_reference,
    applied_document_usage_constraint_assignment,
    approval,
    ascribable_state,
    executed_action,
    general_property,
    general_property_relationship,
    product,
    product_definition,
    product_definition_formation,
    product_definition_formation_relationship,
    product_definition_relationship,
    property_definition,
    representation,
    state_observed_assignment,
    state_type_assignment);
END_TYPE;

TYPE justification_support_item = SELECT
   (action_method,
    applied_action_assignment,
    applied_action_method_assignment,
    applied_organization_assignment,
    applied_person_and_organization_assignment,
    approval,
    executed_action,
    general_property,
    general_property_relationship,
    product,
    product_definition,
    product_definition_formation,
    product_definition_formation_relationship,
    product_definition_relationship,
    property_definition,
    risk_impact_assignment,
    state_observed,
    state_observed_assignment,
    state_observed_relationship,
    state_type,
    state_type_assignment,
    state_type_relationship);
END_TYPE;

TYPE label = STRING;
END_TYPE;

TYPE length_measure = REAL;
END_TYPE;

TYPE list_representation_item = LIST[1:?] OF representation_item;
END_TYPE;

TYPE luminous_flux_measure = REAL;
END_TYPE;

TYPE luminous_intensity_measure = REAL;
END_TYPE;

TYPE magnetic_flux_density_measure = REAL;
END_TYPE;

TYPE magnetic_flux_measure = REAL;
END_TYPE;

TYPE mass_measure = REAL;
END_TYPE;

TYPE measure_value = SELECT
   (absorbed_dose_measure,
    acceleration_measure,
    amount_of_substance_measure,
    area_measure,
    capacitance_measure,
    celsius_temperature_measure,
    conductance_measure,
    context_dependent_measure,
    count_measure,
    descriptive_measure,
    dose_equivalent_measure,
    electric_charge_measure,
    electric_current_measure,
    electric_potential_measure,
    energy_measure,
    force_measure,
    frequency_measure,
    illuminance_measure,
    inductance_measure,
    length_measure,
    luminous_flux_measure,
    luminous_intensity_measure,
    magnetic_flux_density_measure,
    magnetic_flux_measure,
    mass_measure,
    non_negative_length_measure,
    numeric_measure,
    parameter_value,
    plane_angle_measure,
    positive_length_measure,
    positive_plane_angle_measure,
    positive_ratio_measure,
    power_measure,
    pressure_measure,
    radioactivity_measure,
    ratio_measure,
    resistance_measure,
    solid_angle_measure,
    thermodynamic_temperature_measure,
    time_measure,
    velocity_measure,
    volume_measure);
END_TYPE;

TYPE message = STRING;
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 name_attribute_select = SELECT
   (address,
    derived_unit,
    person_and_organization,
    product_definition,
    property_definition_representation);
END_TYPE;

TYPE name_item = SELECT
   (applied_action_method_assignment);
END_TYPE;

TYPE non_negative_length_measure = length_measure ;
WHERE
  WR1: SELF >= 0.000000;
END_TYPE;

TYPE numeric_measure = NUMBER;
END_TYPE;

TYPE organization_item = SELECT
   (action_method,
    action_method_relationship,
    action_relationship,
    action_resource,
    applied_action_assignment,
    applied_action_method_assignment,
    applied_classification_assignment,
    applied_document_reference,
    applied_document_usage_constraint_assignment,
    applied_identification_assignment,
    applied_organization_assignment,
    applied_person_and_organization_assignment,
    approval,
    approval_status,
    ascribable_state,
    class,
    date_and_time_assignment,
    date_assignment,
    document_file,
    executed_action,
    general_property,
    general_property_relationship,
    identification_assignment_relationship,
    justification_assignment,
    justification_group_assignment,
    justification_item_group_assignment,
    justification_support_assignment,
    justification_support_item_group_assignment,
    organization,
    person_and_organization,
    product,
    product_definition,
    product_definition_context,
    product_definition_formation,
    product_definition_formation_relationship,
    product_relationship,
    property_definition,
    property_definition_representation,
    representation,
    risk_impact_assignment,
    risk_perception_source_assignment,
    state_observed,
    state_observed_assignment,
    state_observed_relationship,
    state_type,
    state_type_assignment,
    state_type_relationship);
END_TYPE;

TYPE parameter_value = REAL;
END_TYPE;

TYPE person_and_organization_item = SELECT
   (action_method,
    action_method_relationship,
    action_relationship,
    action_resource,
    applied_action_assignment,
    applied_action_method_assignment,
    applied_classification_assignment,
    applied_document_reference,
    applied_document_usage_constraint_assignment,
    applied_identification_assignment,
    applied_organization_assignment,
    applied_person_and_organization_assignment,
    approval,
    approval_status,
    ascribable_state,
    class,
    date_and_time_assignment,
    date_assignment,
    document_file,
    executed_action,
    general_property,
    general_property_relationship,
    identification_assignment_relationship,
    justification_assignment,
    justification_group_assignment,
    justification_item_group_assignment,
    justification_support_assignment,
    justification_support_item_group_assignment,
    organization,
    person_and_organization,
    product,
    product_definition,
    product_definition_context,
    product_definition_formation,
    product_definition_formation_relationship,
    product_relationship,
    property_definition,
    property_definition_representation,
    representation,
    risk_impact_assignment,
    risk_perception_source_assignment,
    state_observed,
    state_observed_assignment,
    state_observed_relationship,
    state_type,
    state_type_assignment,
    state_type_relationship);
END_TYPE;

TYPE person_organization_select = SELECT
   (organization,
    person,
    person_and_organization);
END_TYPE;

TYPE plane_angle_measure = REAL;
END_TYPE;

TYPE positive_length_measure = non_negative_length_measure ;
WHERE
  WR1: SELF > 0.000000;
END_TYPE;

TYPE positive_plane_angle_measure = plane_angle_measure ;
WHERE
  WR1: SELF > 0.000000;
END_TYPE;

TYPE positive_ratio_measure = ratio_measure ;
WHERE
  WR1: SELF > 0.000000;
END_TYPE;

TYPE power_measure = REAL;
END_TYPE;

TYPE pressure_measure = REAL;
END_TYPE;

TYPE product_or_formation_or_definition = SELECT
   (product,
    product_definition,
    product_definition_formation);
END_TYPE;

TYPE radioactivity_measure = REAL;
END_TYPE;

TYPE ratio_measure = REAL;
END_TYPE;

TYPE represented_definition = SELECT
   (general_property,
    property_definition);
END_TYPE;

TYPE resistance_measure = REAL;
END_TYPE;

TYPE risk_action = SELECT
   (risk_acceptance,
    risk_analysis,
    risk_assessment,
    risk_communication,
    risk_control,
    risk_estimation,
    risk_evaluation,
    risk_identification,
    risk_treatment);
END_TYPE;

TYPE risk_impact_item = SELECT
   (action_method,
    action_relationship,
    action_resource,
    action_resource_relationship,
    applied_action_assignment,
    applied_organization_assignment,
    applied_person_and_organization_assignment,
    approval,
    ascribable_state,
    ascribable_state_relationship,
    executed_action,
    general_property,
    general_property_relationship,
    organization,
    person,
    person_and_organization,
    product,
    product_definition,
    product_definition_formation,
    product_definition_formation_relationship,
    product_definition_relationship,
    representation,
    representation_item,
    state_observed,
    state_observed_assignment,
    state_observed_relationship,
    state_type_relationship);
END_TYPE;

TYPE risk_perception_source_item = SELECT
   (action,
    action_method,
    action_relationship,
    action_resource,
    action_resource_relationship,
    applied_action_method_assignment,
    applied_document_reference,
    applied_document_usage_constraint_assignment,
    applied_organization_assignment,
    applied_person_and_organization_assignment,
    approval,
    approval_person_organization,
    ascribable_state,
    ascribable_state_relationship,
    document_file,
    general_property,
    general_property_relationship,
    justification_assignment,
    justification_group_assignment,
    justification_item_group_assignment,
    justification_support_assignment,
    justification_support_item_group_assignment,
    organization,
    person,
    person_and_organization,
    product,
    product_definition,
    product_definition_formation,
    product_definition_formation_relationship,
    product_definition_relationship,
    product_relationship,
    property_definition,
    representation,
    representation_item,
    state_observed,
    state_observed_assignment,
    state_observed_relationship,
    state_type,
    state_type_relationship);
END_TYPE;

TYPE role_select = SELECT
   (action_assignment,
    approval_assignment,
    approval_date_time,
    document_reference,
    group_assignment,
    name_assignment);
END_TYPE;

TYPE same_as_item = SELECT
   (action_method,
    action_resource,
    action_status,
    address,
    applied_action_method_assignment,
    applied_external_identification_assignment,
    approval,
    approval_status,
    ascribable_state,
    calendar_date,
    coordinated_universal_time_offset,
    date_and_time,
    derived_unit,
    derived_unit_element,
    executed_action,
    external_source,
    general_property,
    item_assumed,
    local_time,
    measure_with_unit,
    named_unit,
    organization,
    person,
    product,
    product_definition,
    product_definition_context,
    product_definition_formation,
    representation_context,
    state_observed,
    state_observed_role,
    state_type,
    state_type_role);
END_TYPE;

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

TYPE set_representation_item = SET[1:?] OF representation_item;
END_TYPE;

TYPE si_prefix = ENUMERATION OF
   (exa,
    peta,
    tera,
    giga,
    mega,
    kilo,
    hecto,
    deca,
    deci,
    centi,
    milli,
    micro,
    nano,
    pico,
    femto,
    atto);
END_TYPE;

TYPE si_unit_name = ENUMERATION OF
   (metre,
    gram,
    second,
    ampere,
    kelvin,
    mole,
    candela,
    radian,
    steradian,
    hertz,
    newton,
    pascal,
    joule,
    watt,
    coulomb,
    volt,
    farad,
    ohm,
    siemens,
    weber,
    tesla,
    henry,
    degree_Celsius,
    lumen,
    lux,
    becquerel,
    gray,
    sievert);
END_TYPE;

TYPE solid_angle_measure = REAL;
END_TYPE;

TYPE source_item = SELECT
   (identifier,
    message);
END_TYPE;

TYPE state_observed_of_item = SELECT
   (action_method,
    action_resource,
    applied_action_assignment,
    applied_action_method_assignment,
    applied_approval_assignment,
    approval,
    assumption,
    executed_action,
    product,
    product_definition_formation,
    product_definition_relationship,
    property_definition,
    risk_impact_assignment,
    state_observed_assignment);
END_TYPE;

TYPE state_type_of_item = SELECT
   (action_method,
    action_resource,
    action_resource_relationship,
    applied_action_assignment,
    applied_action_method_assignment,
    applied_external_identification_assignment,
    approval,
    assumption,
    document_file,
    executed_action,
    organization,
    person_and_organization,
    product,
    product_definition,
    product_definition_formation,
    product_definition_relationship,
    risk_attitude,
    risk_impact_assignment);
END_TYPE;

TYPE supported_item = SELECT
   (action,
    action_method);
END_TYPE;

TYPE text = STRING;
END_TYPE;

TYPE thermodynamic_temperature_measure = REAL;
END_TYPE;

TYPE time_measure = REAL;
END_TYPE;

TYPE unit = SELECT
   (derived_unit,
    named_unit);
END_TYPE;

TYPE velocity_measure = REAL;
END_TYPE;

TYPE volume_measure = REAL;
END_TYPE;

TYPE year_number = INTEGER;
END_TYPE;

ENTITY absorbed_dose_measure_with_unit
  SUBTYPE OF (measure_with_unit);
WHERE
  WR1: 'RISK_MANAGEMENT_MIM_LF.ABSORBED_DOSE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY;

ENTITY absorbed_dose_unit
  SUBTYPE OF (derived_unit);
WHERE
  WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit(gray);
END_ENTITY;

ENTITY acceleration_measure_with_unit
  SUBTYPE OF (measure_with_unit);
WHERE
  WR1: 'RISK_MANAGEMENT_MIM_LF.ACCELERATION_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY;

ENTITY acceleration_unit
  SUBTYPE OF (derived_unit);
WHERE
  WR1: derive_dimensional_exponents(SELF) = dimensional_exponents(1.000000, 0.000000, - 2.000000, 0.000000, 0.000000, 0.000000, 0.000000);
END_ENTITY;

ENTITY action;
  name : label;
  description : OPTIONAL text;
  chosen_method : action_method;
DERIVE
  id : identifier := get_id_value(SELF);
WHERE
  WR1: SIZEOF(USEDIN(SELF, 'RISK_MANAGEMENT_MIM_LF.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1;
END_ENTITY;

ENTITY action_assignment
  ABSTRACT SUPERTYPE ;
  assigned_action : action;
DERIVE
  role : object_role := get_role(SELF);
WHERE
  WR1: SIZEOF(USEDIN(SELF, 'RISK_MANAGEMENT_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
END_ENTITY;

ENTITY action_method;
  name : label;
  description : OPTIONAL text;
  consequence : text;
  purpose : text;
END_ENTITY;

ENTITY action_method_assignment
  ABSTRACT SUPERTYPE ;
  assigned_action_method : action_method;
  role : action_method_role;
END_ENTITY;

ENTITY action_method_relationship;
  name : label;
  description : OPTIONAL text;
  relating_method : action_method;
  related_method : action_method;
END_ENTITY;

ENTITY action_method_role;
  name : label;
  description : OPTIONAL text;
END_ENTITY;

ENTITY action_property;
  name : label;
  description : text;
  definition : characterized_action_definition;
END_ENTITY;

ENTITY action_property_representation;
  name : label;
  description : text;
  property : action_property;
  representation : representation;
END_ENTITY;

ENTITY action_relationship;
  name : label;
  description : OPTIONAL text;
  relating_action : action;
  related_action : action;
END_ENTITY;

ENTITY action_resource;
  name : label;
  description : OPTIONAL text;
  usage : SET[1:?] OF supported_item;
  kind : action_resource_type;
END_ENTITY;

ENTITY action_resource_relationship;
  name : label;
  description : OPTIONAL text;
  relating_resource : action_resource;
  related_resource : action_resource;
END_ENTITY;

ENTITY action_resource_type;
  name : label;
END_ENTITY;

ENTITY action_status;
  status : label;
  assigned_action : executed_action;
END_ENTITY;

ENTITY address;
  internal_location : OPTIONAL label;
  street_number : OPTIONAL label;
  street : OPTIONAL label;
  postal_box : OPTIONAL label;
  town : OPTIONAL label;
  region : OPTIONAL label;
  postal_code : OPTIONAL label;
  country : OPTIONAL label;
  facsimile_number : OPTIONAL label;
  telephone_number : OPTIONAL label;
  electronic_mail_address : OPTIONAL label;
  telex_number : OPTIONAL label;
DERIVE
  name : label := get_name_value(SELF);
  url : identifier := get_id_value(SELF);
WHERE
  WR1: EXISTS(internal_location) OR EXISTS(street_number) OR EXISTS(street) OR EXISTS(postal_box) OR EXISTS(town) OR EXISTS(region) OR EXISTS(postal_code) OR EXISTS(country) OR EXISTS(facsimile_number) OR EXISTS(telephone_number) OR EXISTS(electronic_mail_address) OR EXISTS(telex_number);
END_ENTITY;

ENTITY amount_of_substance_measure_with_unit
  SUBTYPE OF (measure_with_unit);
WHERE
  WR1: 'RISK_MANAGEMENT_MIM_LF.AMOUNT_OF_SUBSTANCE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY;

ENTITY amount_of_substance_unit
  SUBTYPE OF (named_unit);
WHERE
  WR1: (SELF\named_unit.dimensions.length_exponent = 0.000000) AND (SELF\named_unit.dimensions.mass_exponent = 0.000000) AND (SELF\named_unit.dimensions.time_exponent = 0.000000) AND (SELF\named_unit.dimensions.electric_current_exponent = 0.000000) AND (SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0.000000) AND (SELF\named_unit.dimensions.amount_of_substance_exponent = 1.000000) AND (SELF\named_unit.dimensions.luminous_intensity_exponent = 0.000000);
END_ENTITY;

ENTITY application_context;
  application : label;
DERIVE
  description : text := get_description_value(SELF);
  id : identifier := get_id_value(SELF);
INVERSE
  context_elements : SET[1:?] OF application_context_element FOR frame_of_reference;
WHERE
  WR1: SIZEOF(USEDIN(SELF, 'RISK_MANAGEMENT_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
  WR2: SIZEOF(USEDIN(SELF, 'RISK_MANAGEMENT_MIM_LF.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1;
END_ENTITY;

ENTITY application_context_element
  SUPERTYPE OF (ONEOF (product_context,
                       product_definition_context));
  name : label;
  frame_of_reference : application_context;
END_ENTITY;

ENTITY applied_action_assignment
  SUBTYPE OF (action_assignment);
  items : SET[1:?] OF action_items;
END_ENTITY;

ENTITY applied_action_method_assignment
  SUBTYPE OF (action_method_assignment);
  items : SET[1:?] OF action_method_items;
END_ENTITY;

ENTITY applied_approval_assignment
  SUBTYPE OF (approval_assignment);
  items : SET[1:?] OF approval_item;
END_ENTITY;

ENTITY applied_classification_assignment
  SUBTYPE OF (classification_assignment);
  items : SET[1:?] OF classification_item;
END_ENTITY;

ENTITY applied_date_and_time_assignment
  SUBTYPE OF (date_and_time_assignment);
  items : SET[1:?] OF date_and_time_item;
END_ENTITY;

ENTITY applied_date_assignment
  SUBTYPE OF (date_assignment);
  items : SET[1:?] OF date_item;
END_ENTITY;

ENTITY applied_document_reference
  SUBTYPE OF (document_reference);
  items : SET[1:?] OF document_reference_item;
END_ENTITY;

ENTITY applied_document_usage_constraint_assignment
  SUBTYPE OF (document_usage_constraint_assignment);
  items : SET[1:?] OF document_reference_item;
END_ENTITY;

ENTITY applied_external_identification_assignment
  SUBTYPE OF (external_identification_assignment);
  items : SET[1:?] OF external_identification_item;
END_ENTITY;

ENTITY applied_group_assignment
  SUBTYPE OF (group_assignment);
  items : SET[1:?] OF groupable_item;
END_ENTITY;

ENTITY applied_identification_assignment
  SUBTYPE OF (identification_assignment);
  items : SET[1:?] OF identification_item;
END_ENTITY;

ENTITY applied_name_assignment
  SUBTYPE OF (name_assignment);
  item : name_item;
END_ENTITY;

ENTITY applied_organization_assignment
  SUBTYPE OF (organization_assignment);
  items : SET[1:?] OF organization_item;
END_ENTITY;

ENTITY applied_person_and_organization_assignment
  SUBTYPE OF (person_and_organization_assignment);
  items : SET[1:?] OF person_and_organization_item;
END_ENTITY;

ENTITY applied_state_observed_assignment
  SUBTYPE OF (state_observed_assignment);
  items : SET[1:?] OF state_observed_of_item;
END_ENTITY;

ENTITY applied_state_type_assignment
  SUBTYPE OF (state_type_assignment);
  items : SET[1:?] OF state_type_of_item;
END_ENTITY;

ENTITY approval;
  status : approval_status;
  level : label;
END_ENTITY;

ENTITY approval_assignment
  ABSTRACT SUPERTYPE ;
  assigned_approval : approval;
DERIVE
  role : object_role := get_role(SELF);
WHERE
  WR1: SIZEOF(USEDIN(SELF, 'RISK_MANAGEMENT_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
END_ENTITY;

ENTITY approval_date_time;
  date_time : date_time_select;
  dated_approval : approval;
DERIVE
  role : object_role := get_role(SELF);
WHERE
  WR1: SIZEOF(USEDIN(SELF, 'RISK_MANAGEMENT_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
END_ENTITY;

ENTITY approval_person_organization;
  person_organization : person_organization_select;
  authorized_approval : approval;
  role : approval_role;
END_ENTITY;

ENTITY approval_relationship;
  name : label;
  description : OPTIONAL text;
  relating_approval : approval;
  related_approval : approval;
END_ENTITY;

ENTITY approval_role;
  role : label;
DERIVE
  description : text := get_description_value(SELF);
WHERE
  WR1: SIZEOF(USEDIN(SELF, 'RISK_MANAGEMENT_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
END_ENTITY;

ENTITY approval_status;
  name : label;
END_ENTITY;

ENTITY area_measure_with_unit
  SUBTYPE OF (measure_with_unit);
WHERE
  WR1: 'RISK_MANAGEMENT_MIM_LF.AREA_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY;

ENTITY area_unit
  SUBTYPE OF (derived_unit);
WHERE
  WR1: derive_dimensional_exponents(SELF) = dimensional_exponents(2.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000);
END_ENTITY;

ENTITY ascribable_state;
  name : label;
  description : OPTIONAL text;
  pertaining_state_type : state_type;
  ascribed_state_observed : state_observed;
END_ENTITY;

ENTITY ascribable_state_relationship;
  name : label;
  description : OPTIONAL text;
  relating_ascribable_state : ascribable_state;
  related_ascribable_state : ascribable_state;
END_ENTITY;

ENTITY assumption
  SUBTYPE OF (state_observed);
END_ENTITY;

ENTITY assumption_assignment
  SUBTYPE OF (characterized_applied_state_observed_assignment);
END_ENTITY;

ENTITY assumption_relationship
  SUBTYPE OF (state_observed_relationship);
END_ENTITY;

ENTITY calendar_date
  SUBTYPE OF (date);
  day_component : day_in_month_number;
  month_component : month_in_year_number;
WHERE
  WR1: valid_calendar_date(SELF);
END_ENTITY;

ENTITY capacitance_measure_with_unit
  SUBTYPE OF (measure_with_unit);
WHERE
  WR1: 'RISK_MANAGEMENT_MIM_LF.CAPACITANCE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY;

ENTITY capacitance_unit
  SUBTYPE OF (derived_unit);
WHERE
  WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit(farad);
END_ENTITY;

ENTITY causal_consequence
  SUBTYPE OF (product_definition_relationship);
  SELF\product_definition_relationship.related_product_definition : risk_consequence;
  SELF\product_definition_relationship.relating_product_definition : risk_consequence;
END_ENTITY;

ENTITY celsius_temperature_measure_with_unit
  SUBTYPE OF (measure_with_unit);
WHERE
  WR1: 'RISK_MANAGEMENT_MIM_LF.THERMODYNAMIC_TEMPERATURE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY;

ENTITY characterized_applied_state_observed_assignment
  SUBTYPE OF (applied_state_observed_assignment, characterized_object);
END_ENTITY;

ENTITY characterized_object;
  name : label;
  description : OPTIONAL text;
END_ENTITY;

ENTITY class
  SUBTYPE OF (group);
END_ENTITY;

ENTITY class_by_extension
  SUBTYPE OF (class);
END_ENTITY;

ENTITY class_by_intension
  SUBTYPE OF (class);
END_ENTITY;

ENTITY classification_assignment
  ABSTRACT SUPERTYPE ;
  assigned_class : group;
  role : classification_role;
END_ENTITY;

ENTITY classification_role;
  name : label;
  description : OPTIONAL text;
END_ENTITY;

ENTITY collection
  SUBTYPE OF (product);
END_ENTITY;

ENTITY collection_assignment
  SUBTYPE OF (applied_group_assignment);
END_ENTITY;

ENTITY collection_membership
  SUBTYPE OF (applied_group_assignment);
END_ENTITY;

ENTITY collection_relationship
  SUBTYPE OF (product_relationship);
  SELF\product_relationship.relating_product : collection;
  SELF\product_relationship.related_product : collection;
DERIVE
  related_collection : collection := SELF\product_relationship.related_product;
  relating_collection : collection := SELF\product_relationship.relating_product;
END_ENTITY;

ENTITY collection_version
  SUBTYPE OF (product_definition_formation);
  SELF\product_definition_formation.of_product : collection;
DERIVE
  of_collection : collection := SELF\product_definition_formation.of_product;
END_ENTITY;

ENTITY collection_version_relationship
  SUBTYPE OF (product_definition_formation_relationship);
  SELF\product_definition_formation_relationship.relating_product_definition_formation : collection_version;
  SELF\product_definition_formation_relationship.related_product_definition_formation : collection_version;
DERIVE
  related_version : collection_version := SELF\product_definition_formation_relationship.related_product_definition_formation;
  relating_version : collection_version := SELF\product_definition_formation_relationship.relating_product_definition_formation;
END_ENTITY;

ENTITY collection_version_sequence_relationship
  SUBTYPE OF (product_definition_formation_relationship);
  SELF\product_definition_formation_relationship.relating_product_definition_formation : collection_version;
  SELF\product_definition_formation_relationship.related_product_definition_formation : collection_version;
DERIVE
  predecessor : collection_version := SELF\product_definition_formation_relationship.relating_product_definition_formation;
  successor : collection_version := SELF\product_definition_formation_relationship.related_product_definition_formation;
END_ENTITY;

ENTITY collection_view_definition
  SUBTYPE OF (product_definition);
  SELF\product_definition.formation : collection_version;
DERIVE
  defined_version : collection_version := SELF\product_definition.formation;
END_ENTITY;

ENTITY compound_representation_item
  SUBTYPE OF (representation_item);
  item_element : compound_item_definition;
END_ENTITY;

ENTITY condition
  SUBTYPE OF (action_method);
END_ENTITY;

ENTITY conductance_measure_with_unit
  SUBTYPE OF (measure_with_unit);
WHERE
  WR1: 'RISK_MANAGEMENT_MIM_LF.CONDUCTANCE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY;

ENTITY conductance_unit
  SUBTYPE OF (derived_unit);
WHERE
  WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit(siemens);
END_ENTITY;

ENTITY contained_acceptance
  SUBTYPE OF (risk_activity_structure);
  SELF\action_relationship.relating_action : risk_control;
  SELF\action_relationship.related_action : risk_acceptance;
END_ENTITY;

ENTITY contained_analysis
  SUBTYPE OF (risk_activity_structure);
  SELF\action_relationship.relating_action : risk_assessment;
  SELF\action_relationship.related_action : risk_analysis;
END_ENTITY;

ENTITY contained_communication
  SUBTYPE OF (risk_activity_structure);
  SELF\action_relationship.relating_action : risk_control;
  SELF\action_relationship.related_action : risk_communication;
END_ENTITY;

ENTITY contained_estimation
  SUBTYPE OF (risk_activity_structure);
  SELF\action_relationship.relating_action : risk_analysis;
  SELF\action_relationship.related_action : risk_estimation;
END_ENTITY;

ENTITY contained_evaluation
  SUBTYPE OF (risk_activity_structure);
  SELF\action_relationship.relating_action : risk_assessment;
  SELF\action_relationship.related_action : risk_evaluation;
END_ENTITY;

ENTITY contained_identification
  SUBTYPE OF (risk_activity_structure);
  SELF\action_relationship.relating_action : risk_analysis;
  SELF\action_relationship.related_action : risk_identification;
END_ENTITY;

ENTITY contained_treatments
  SUBTYPE OF (risk_activity_structure);
  SELF\action_relationship.relating_action : risk_control;
  SELF\action_relationship.related_action : risk_treatment;
END_ENTITY;

ENTITY context_dependent_unit
  SUBTYPE OF (named_unit);
  name : label;
END_ENTITY;

ENTITY conversion_based_unit
  SUBTYPE OF (named_unit);
  name : label;
  conversion_factor : measure_with_unit;
WHERE
  WR1: SELF\named_unit.dimensions = derive_dimensional_exponents(conversion_factor\measure_with_unit.unit_component);
END_ENTITY;

ENTITY coordinated_universal_time_offset;
  hour_offset : INTEGER;
  minute_offset : OPTIONAL INTEGER;
  sense : ahead_or_behind;
DERIVE
  actual_minute_offset : INTEGER := NVL(minute_offset, 0);
WHERE
  WR1: {0 <= hour_offset < 24};
  WR2: {0 <= actual_minute_offset <= 59};
  WR3: NOT (((hour_offset <> 0) OR (actual_minute_offset <> 0)) AND (sense = exact));
END_ENTITY;

ENTITY date;
  year_component : year_number;
END_ENTITY;

ENTITY date_and_time;
  date_component : date;
  time_component : local_time;
END_ENTITY;

ENTITY date_and_time_assignment
  ABSTRACT SUPERTYPE ;
  assigned_date_and_time : date_and_time;
  role : date_time_role;
END_ENTITY;

ENTITY date_assignment
  ABSTRACT SUPERTYPE ;
  assigned_date : date;
  role : date_role;
END_ENTITY;

ENTITY date_role;
  name : label;
DERIVE
  description : text := get_description_value(SELF);
WHERE
  WR1: SIZEOF(USEDIN(SELF, 'RISK_MANAGEMENT_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
END_ENTITY;

ENTITY date_time_role;
  name : label;
DERIVE
  description : text := get_description_value(SELF);
WHERE
  WR1: SIZEOF(USEDIN(SELF, 'RISK_MANAGEMENT_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
END_ENTITY;

ENTITY derived_unit
  SUPERTYPE OF (ONEOF (absorbed_dose_unit,
                       acceleration_unit,
                       radioactivity_unit,
                       area_unit,
                       capacitance_unit,
                       dose_equivalent_unit,
                       electric_charge_unit,
                       conductance_unit,
                       electric_potential_unit,
                       energy_unit,
                       magnetic_flux_density_unit,
                       force_unit,
                       frequency_unit,
                       illuminance_unit,
                       inductance_unit,
                       magnetic_flux_unit,
                       power_unit,
                       pressure_unit,
                       resistance_unit,
                       velocity_unit,
                       volume_unit));
  elements : SET[1:?] OF derived_unit_element;
DERIVE
  name : label := get_name_value(SELF);
WHERE
  WR1: (SIZEOF(elements) > 1) OR ((SIZEOF(elements) = 1) AND (elements[1].exponent <> 1.000000));
  WR2: SIZEOF(USEDIN(SELF, 'RISK_MANAGEMENT_MIM_LF.' + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1;
END_ENTITY;

ENTITY derived_unit_element;
  unit : named_unit;
  exponent : REAL;
END_ENTITY;

ENTITY description_attribute;
  attribute_value : text;
  described_item : description_attribute_select;
END_ENTITY;

ENTITY descriptive_representation_item
  SUBTYPE OF (representation_item);
  description : text;
END_ENTITY;

ENTITY dimensional_exponents;
  length_exponent : REAL;
  mass_exponent : REAL;
  time_exponent : REAL;
  electric_current_exponent : REAL;
  thermodynamic_temperature_exponent : REAL;
  amount_of_substance_exponent : REAL;
  luminous_intensity_exponent : REAL;
END_ENTITY;

ENTITY document;
  id : identifier;
  name : label;
  description : OPTIONAL text;
  kind : document_type;
INVERSE
  representation_types : SET[0:?] OF document_representation_type FOR represented_document;
END_ENTITY;

ENTITY document_file
  SUBTYPE OF (characterized_object, document);
WHERE
  WR1: SELF\characterized_object.name = '';
  WR2: NOT EXISTS(SELF\characterized_object.description);
  WR3: SIZEOF(QUERY(drt <* SELF\document.representation_types | drt.name IN ['digital', 'physical'])) = 1;
END_ENTITY;

ENTITY document_product_association;
  name : label;
  description : OPTIONAL text;
  relating_document : document;
  related_product : product_or_formation_or_definition;
END_ENTITY;

ENTITY document_product_equivalence
  SUBTYPE OF (document_product_association);
WHERE
  WR1: SELF\document_product_association.name = 'equivalence';
  WR2: NOT ('RISK_MANAGEMENT_MIM_LF.PRODUCT' IN TYPEOF(SELF\document_product_association.related_product)) OR ((SELF\document_product_association.relating_document.kind.product_data_type = 'configuration controlled document') AND (SIZEOF(QUERY(prpc <* USEDIN(SELF\document_product_association.related_product, 'RISK_MANAGEMENT_MIM_LF.' + 'PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') | prpc.name = 'document')) = 1));
  WR3: NOT ('RISK_MANAGEMENT_MIM_LF.PRODUCT_DEFINITION_FORMATION' IN TYPEOF(SELF.related_product)) OR ((SELF\document_product_association.relating_document.kind.product_data_type = 'configuration controlled document version') AND (SIZEOF(QUERY(prpc <* USEDIN(SELF.related_product\product_definition_formation.of_product, 'RISK_MANAGEMENT_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') | prpc.name = 'document')) = 1));
  WR4: NOT ('RISK_MANAGEMENT_MIM_LF.PRODUCT_DEFINITION' IN TYPEOF(SELF.related_product)) OR ((SELF\document_product_association.relating_document.kind.product_data_type = 'configuration controlled document definition') AND (SIZEOF(QUERY(prpc <* USEDIN(SELF\document_product_association.related_product\product_definition.formation.of_product, 'RISK_MANAGEMENT_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') | prpc.name = 'document')) = 1));
END_ENTITY;

ENTITY document_reference
  ABSTRACT SUPERTYPE ;
  assigned_document : document;
  source : label;
DERIVE
  role : object_role := get_role(SELF);
WHERE
  WR1: SIZEOF(USEDIN(SELF, 'RISK_MANAGEMENT_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
END_ENTITY;

ENTITY document_representation_type;
  name : label;
  represented_document : document;
END_ENTITY;

ENTITY document_type;
  product_data_type : label;
END_ENTITY;

ENTITY document_usage_constraint;
  source : document;
  subject_element : label;
  subject_element_value : text;
END_ENTITY;

ENTITY document_usage_constraint_assignment
  ABSTRACT SUPERTYPE ;
  assigned_document_usage : document_usage_constraint;
  role : document_usage_role;
END_ENTITY;

ENTITY document_usage_role;
  name : label;
  description : OPTIONAL text;
END_ENTITY;

ENTITY dose_equivalent_measure_with_unit
  SUBTYPE OF (measure_with_unit);
WHERE
  WR1: 'RISK_MANAGEMENT_MIM_LF.DOSE_EQUIVALENT_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY;

ENTITY dose_equivalent_unit
  SUBTYPE OF (derived_unit);
WHERE
  WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit(sievert);
END_ENTITY;

ENTITY electric_charge_measure_with_unit
  SUBTYPE OF (measure_with_unit);
WHERE
  WR1: 'RISK_MANAGEMENT_MIM_LF.ELECTRIC_CHARGE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY;

ENTITY electric_charge_unit
  SUBTYPE OF (derived_unit);
WHERE
  WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit(coulomb);
END_ENTITY;

ENTITY electric_current_measure_with_unit
  SUBTYPE OF (measure_with_unit);
WHERE
  WR1: 'RISK_MANAGEMENT_MIM_LF.ELECTRIC_CURRENT_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY;

ENTITY electric_current_unit
  SUBTYPE OF (named_unit);
WHERE
  WR1: (SELF\named_unit.dimensions.length_exponent = 0.000000) AND (SELF\named_unit.dimensions.mass_exponent = 0.000000) AND (SELF\named_unit.dimensions.time_exponent = 0.000000) AND (SELF\named_unit.dimensions.electric_current_exponent = 1.000000) AND (SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0.000000) AND (SELF\named_unit.dimensions.amount_of_substance_exponent = 0.000000) AND (SELF\named_unit.dimensions.luminous_intensity_exponent = 0.000000);
END_ENTITY;

ENTITY electric_potential_measure_with_unit
  SUBTYPE OF (measure_with_unit);
WHERE
  WR1: 'RISK_MANAGEMENT_MIM_LF.ELECTRIC_POTENTIAL_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY;

ENTITY electric_potential_unit
  SUBTYPE OF (derived_unit);
WHERE
  WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit(volt);
END_ENTITY;

ENTITY energy_measure_with_unit
  SUBTYPE OF (measure_with_unit);
WHERE
  WR1: 'RISK_MANAGEMENT_MIM_LF.ENERGY_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY;

ENTITY energy_unit
  SUBTYPE OF (derived_unit);
WHERE
  WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit(joule);
END_ENTITY;

ENTITY event_occurrence;
  id : identifier;
  name : label;
  description : OPTIONAL text;
END_ENTITY;

ENTITY event_occurrence_characterized_object
  SUBTYPE OF (characterized_object, event_occurrence);
END_ENTITY;

ENTITY event_probability
  SUBTYPE OF (property_definition);
  SELF\property_definition.definition : event_occurrence_characterized_object;
END_ENTITY;

ENTITY executed_action
  SUBTYPE OF (action);
END_ENTITY;

ENTITY external_identification_assignment
  ABSTRACT SUPERTYPE
  SUBTYPE OF (identification_assignment);
  source : external_source;
END_ENTITY;

ENTITY external_source;
  source_id : source_item;
DERIVE
  description : text := get_description_value(SELF);
WHERE
  WR1: SIZEOF(USEDIN(SELF, 'RISK_MANAGEMENT_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
END_ENTITY;

ENTITY external_source_relationship;
  name : label;
  description : OPTIONAL text;
  relating_source : external_source;
  related_source : external_source;
END_ENTITY;

ENTITY externally_defined_item;
  item_id : source_item;
  source : external_source;
END_ENTITY;

ENTITY externally_defined_item_relationship;
  name : label;
  description : OPTIONAL text;
  relating_item : externally_defined_item;
  related_item : externally_defined_item;
END_ENTITY;

ENTITY force_measure_with_unit
  SUBTYPE OF (measure_with_unit);
WHERE
  WR1: 'RISK_MANAGEMENT_MIM_LF.FORCE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY;

ENTITY force_unit
  SUBTYPE OF (derived_unit);
WHERE
  WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit(newton);
END_ENTITY;

ENTITY frequency_measure_with_unit
  SUBTYPE OF (measure_with_unit);
WHERE
  WR1: 'RISK_MANAGEMENT_MIM_LF.FREQUENCY_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY;

ENTITY frequency_unit
  SUBTYPE OF (derived_unit);
WHERE
  WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit(hertz);
END_ENTITY;

ENTITY general_property;
  id : identifier;
  name : label;
  description : OPTIONAL text;
END_ENTITY;

ENTITY general_property_association;
  name : label;
  description : OPTIONAL text;
  base_definition : general_property;
  derived_definition : derived_property_select;
WHERE
  WR1: SIZEOF(USEDIN(derived_definition, 'RISK_MANAGEMENT_MIM_LF.' + 'GENERAL_PROPERTY_ASSOCIATION.' + 'DERIVED_DEFINITION')) = 1;
  WR2: derived_definition.name = base_definition.name;
END_ENTITY;

ENTITY general_property_relationship;
  name : label;
  description : OPTIONAL text;
  relating_property : general_property;
  related_property : general_property;
END_ENTITY;

ENTITY global_uncertainty_assigned_context
  SUBTYPE OF (representation_context);
  uncertainty : SET[1:?] OF uncertainty_measure_with_unit;
END_ENTITY;

ENTITY global_unit_assigned_context
  SUBTYPE OF (representation_context);
  units : SET[1:?] OF unit;
END_ENTITY;

ENTITY group;
  name : label;
  description : OPTIONAL text;
DERIVE
  id : identifier := get_id_value(SELF);
WHERE
  WR1: SIZEOF(USEDIN(SELF, 'RISK_MANAGEMENT_MIM_LF.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1;
END_ENTITY;

ENTITY group_assignment
  ABSTRACT SUPERTYPE ;
  assigned_group : group;
DERIVE
  role : object_role := get_role(SELF);
WHERE
  WR1: SIZEOF(USEDIN(SELF, 'RISK_MANAGEMENT_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
END_ENTITY;

ENTITY group_relationship;
  name : label;
  description : OPTIONAL text;
  relating_group : group;
  related_group : group;
END_ENTITY;

ENTITY id_attribute;
  attribute_value : identifier;
  identified_item : id_attribute_select;
END_ENTITY;

ENTITY identification_assignment
  ABSTRACT SUPERTYPE ;
  assigned_id : identifier;
  role : identification_role;
END_ENTITY;

ENTITY identification_assignment_relationship;
  name : label;
  description : OPTIONAL text;
  relating_identification_assignment : identification_assignment;
  related_identification_assignment : identification_assignment;
END_ENTITY;

ENTITY identification_role;
  name : label;
  description : OPTIONAL text;
END_ENTITY;

ENTITY illuminance_measure_with_unit
  SUBTYPE OF (measure_with_unit);
WHERE
  WR1: 'RISK_MANAGEMENT_MIM_LF.ILLUMINANCE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY;

ENTITY illuminance_unit
  SUBTYPE OF (derived_unit);
WHERE
  WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit(lux);
END_ENTITY;

ENTITY inductance_measure_with_unit
  SUBTYPE OF (measure_with_unit);
WHERE
  WR1: 'RISK_MANAGEMENT_MIM_LF.INDUCTANCE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY;

ENTITY inductance_unit
  SUBTYPE OF (derived_unit);
WHERE
  WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit(henry);
END_ENTITY;

ENTITY item_assumed
  SUBTYPE OF (characterized_applied_state_observed_assignment);
END_ENTITY;

ENTITY justification_assignment
  SUBTYPE OF (group);
END_ENTITY;

ENTITY justification_group_assignment
  SUBTYPE OF (group_assignment);
  items : SET[1:1] OF product;
END_ENTITY;

ENTITY justification_item_group_assignment
  SUBTYPE OF (group_assignment);
  items : SET[1:1] OF justification_item;
END_ENTITY;

ENTITY justification_support_assignment
  SUBTYPE OF (group);
END_ENTITY;

ENTITY justification_support_item_group_assignment
  SUBTYPE OF (group_assignment);
  items : SET[1:1] OF justification_support_item;
END_ENTITY;

ENTITY length_measure_with_unit
  SUBTYPE OF (measure_with_unit);
WHERE
  WR1: 'RISK_MANAGEMENT_MIM_LF.LENGTH_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY;

ENTITY length_unit
  SUBTYPE OF (named_unit);
WHERE
  WR1: (SELF\named_unit.dimensions.length_exponent = 1.000000) AND (SELF\named_unit.dimensions.mass_exponent = 0.000000) AND (SELF\named_unit.dimensions.time_exponent = 0.000000) AND (SELF\named_unit.dimensions.electric_current_exponent = 0.000000) AND (SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0.000000) AND (SELF\named_unit.dimensions.amount_of_substance_exponent = 0.000000) AND (SELF\named_unit.dimensions.luminous_intensity_exponent = 0.000000);
END_ENTITY;

ENTITY local_time;
  hour_component : hour_in_day;
  minute_component : OPTIONAL minute_in_hour;
  second_component : OPTIONAL second_in_minute;
  zone : coordinated_universal_time_offset;
WHERE
  WR1: valid_time(SELF);
END_ENTITY;

ENTITY luminous_flux_measure_with_unit
  SUBTYPE OF (measure_with_unit);
WHERE
  WR1: 'RISK_MANAGEMENT_MIM_LF.LUMINOUS_FLUX_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY;

ENTITY luminous_flux_unit
  SUBTYPE OF (named_unit);
WHERE
  WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit(lumen);
END_ENTITY;

ENTITY luminous_intensity_measure_with_unit
  SUBTYPE OF (measure_with_unit);
WHERE
  WR1: 'RISK_MANAGEMENT_MIM_LF.LUMINOUS_INTENSITY_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY;

ENTITY luminous_intensity_unit
  SUBTYPE OF (named_unit);
WHERE
  WR1: (SELF\named_unit.dimensions.length_exponent = 0.000000) AND (SELF\named_unit.dimensions.mass_exponent = 0.000000) AND (SELF\named_unit.dimensions.time_exponent = 0.000000) AND (SELF\named_unit.dimensions.electric_current_exponent = 0.000000) AND (SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0.000000) AND (SELF\named_unit.dimensions.amount_of_substance_exponent = 0.000000) AND (SELF\named_unit.dimensions.luminous_intensity_exponent = 1.000000);
END_ENTITY;

ENTITY magnetic_flux_density_measure_with_unit
  SUBTYPE OF (measure_with_unit);
WHERE
  WR1: 'RISK_MANAGEMENT_MIM_LF.MAGNETIC_FLUX_DENSITY_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY;

ENTITY magnetic_flux_density_unit
  SUBTYPE OF (derived_unit);
WHERE
  WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit(tesla);
END_ENTITY;

ENTITY magnetic_flux_measure_with_unit
  SUBTYPE OF (measure_with_unit);
WHERE
  WR1: 'RISK_MANAGEMENT_MIM_LF.MAGNETIC_FLUX_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY;

ENTITY magnetic_flux_unit
  SUBTYPE OF (derived_unit);
WHERE
  WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit(weber);
END_ENTITY;

ENTITY mass_measure_with_unit
  SUBTYPE OF (measure_with_unit);
WHERE
  WR1: 'RISK_MANAGEMENT_MIM_LF.MASS_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY;

ENTITY mass_unit
  SUBTYPE OF (named_unit);
WHERE
  WR1: (SELF\named_unit.dimensions.length_exponent = 0.000000) AND (SELF\named_unit.dimensions.mass_exponent = 1.000000) AND (SELF\named_unit.dimensions.time_exponent = 0.000000) AND (SELF\named_unit.dimensions.electric_current_exponent = 0.000000) AND (SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0.000000) AND (SELF\named_unit.dimensions.amount_of_substance_exponent = 0.000000) AND (SELF\named_unit.dimensions.luminous_intensity_exponent = 0.000000);
END_ENTITY;

ENTITY measure_representation_item
  SUBTYPE OF (measure_with_unit, representation_item);
END_ENTITY;

ENTITY measure_with_unit
  SUPERTYPE OF (ONEOF (length_measure_with_unit,
                       mass_measure_with_unit,
                       time_measure_with_unit,
                       electric_current_measure_with_unit,
                       thermodynamic_temperature_measure_with_unit,
                       celsius_temperature_measure_with_unit,
                       amount_of_substance_measure_with_unit,
                       luminous_intensity_measure_with_unit,
                       plane_angle_measure_with_unit,
                       solid_angle_measure_with_unit,
                       area_measure_with_unit,
                       volume_measure_with_unit,
                       ratio_measure_with_unit,
                       acceleration_measure_with_unit,
                       capacitance_measure_with_unit,
                       electric_charge_measure_with_unit,
                       conductance_measure_with_unit,
                       electric_potential_measure_with_unit,
                       energy_measure_with_unit,
                       magnetic_flux_density_measure_with_unit,
                       force_measure_with_unit,
                       frequency_measure_with_unit,
                       illuminance_measure_with_unit,
                       inductance_measure_with_unit,
                       luminous_flux_measure_with_unit,
                       magnetic_flux_measure_with_unit,
                       power_measure_with_unit,
                       pressure_measure_with_unit,
                       resistance_measure_with_unit,
                       velocity_measure_with_unit,
                       absorbed_dose_measure_with_unit,
                       radioactivity_measure_with_unit,
                       dose_equivalent_measure_with_unit));
  value_component : measure_value;
  unit_component : unit;
WHERE
  WR1: valid_units(SELF);
END_ENTITY;

ENTITY monitor
  SUBTYPE OF (risk_activity_structure);
  SELF\action_relationship.relating_action : risk_control;
  SELF\action_relationship.related_action : risk_assessment;
END_ENTITY;

ENTITY name_assignment
  ABSTRACT SUPERTYPE ;
  assigned_name : label;
DERIVE
  role : object_role := get_role(SELF);
WHERE
  WR1: SIZEOF(USEDIN(SELF, 'RISK_MANAGEMENT_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
END_ENTITY;

ENTITY name_attribute;
  attribute_value : label;
  named_item : name_attribute_select;
END_ENTITY;

ENTITY named_unit
  SUPERTYPE OF (ONEOF (si_unit,
                       conversion_based_unit,
                       context_dependent_unit)
               ANDOR ONEOF (length_unit,
                    mass_unit,
                    time_unit,
                    electric_current_unit,
                    thermodynamic_temperature_unit,
                    amount_of_substance_unit,
                    luminous_flux_unit,
                    luminous_intensity_unit,
                    plane_angle_unit,
                    solid_angle_unit,
                    ratio_unit));
  dimensions : dimensional_exponents;
END_ENTITY;

ENTITY object_role;
  name : label;
  description : OPTIONAL text;
END_ENTITY;

ENTITY organization;
  id : OPTIONAL identifier;
  name : label;
  description : OPTIONAL text;
END_ENTITY;

ENTITY organization_assignment
  ABSTRACT SUPERTYPE ;
  assigned_organization : organization;
  role : organization_role;
END_ENTITY;

ENTITY organization_relationship;
  name : label;
  description : OPTIONAL text;
  relating_organization : organization;
  related_organization : organization;
END_ENTITY;

ENTITY organization_role;
  name : label;
DERIVE
  description : text := get_description_value(SELF);
WHERE
  WR1: SIZEOF(USEDIN(SELF, 'RISK_MANAGEMENT_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
END_ENTITY;

ENTITY organizational_address
  SUBTYPE OF (address);
  organizations : SET[1:?] OF organization;
  description : OPTIONAL text;
END_ENTITY;

ENTITY person;
  id : identifier;
  last_name : OPTIONAL label;
  first_name : OPTIONAL label;
  middle_names : OPTIONAL LIST[1:?] OF label;
  prefix_titles : OPTIONAL LIST[1:?] OF label;
  suffix_titles : OPTIONAL LIST[1:?] OF label;
WHERE
  WR1: EXISTS(last_name) OR EXISTS(first_name);
END_ENTITY;

ENTITY person_and_organization;
  the_person : person;
  the_organization : organization;
DERIVE
  name : label := get_name_value(SELF);
  description : text := get_description_value(SELF);
WHERE
  WR1: SIZEOF(USEDIN(SELF, 'RISK_MANAGEMENT_MIM_LF.' + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1;
  WR2: SIZEOF(USEDIN(SELF, 'RISK_MANAGEMENT_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
END_ENTITY;

ENTITY person_and_organization_address
  SUBTYPE OF (organizational_address, personal_address);
  SELF\organizational_address.organizations : SET[1:1] OF organization;
  SELF\personal_address.people : SET[1:1] OF person;
WHERE
  WR1: SIZEOF(QUERY(pao <* USEDIN(SELF\personal_address.people[1], 'RISK_MANAGEMENT_MIM_LF.PERSON_AND_ORGANIZATION.THE_PERSON') | pao.the_organization :=: SELF\organizational_address.organizations[1])) = 1;
END_ENTITY;

ENTITY person_and_organization_assignment
  ABSTRACT SUPERTYPE ;
  assigned_person_and_organization : person_and_organization;
  role : person_and_organization_role;
END_ENTITY;

ENTITY person_and_organization_role;
  name : label;
DERIVE
  description : text := get_description_value(SELF);
WHERE
  WR1: SIZEOF(USEDIN(SELF, 'RISK_MANAGEMENT_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
END_ENTITY;

ENTITY personal_address
  SUBTYPE OF (address);
  people : SET[1:?] OF person;
  description : OPTIONAL text;
END_ENTITY;

ENTITY plane_angle_measure_with_unit
  SUBTYPE OF (measure_with_unit);
WHERE
  WR1: 'RISK_MANAGEMENT_MIM_LF.PLANE_ANGLE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY;

ENTITY plane_angle_unit
  SUBTYPE OF (named_unit);
WHERE
  WR1: (SELF\named_unit.dimensions.length_exponent = 0.000000) AND (SELF\named_unit.dimensions.mass_exponent = 0.000000) AND (SELF\named_unit.dimensions.time_exponent = 0.000000) AND (SELF\named_unit.dimensions.electric_current_exponent = 0.000000) AND (SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0.000000) AND (SELF\named_unit.dimensions.amount_of_substance_exponent = 0.000000) AND (SELF\named_unit.dimensions.luminous_intensity_exponent = 0.000000);
END_ENTITY;

ENTITY power_measure_with_unit
  SUBTYPE OF (measure_with_unit);
WHERE
  WR1: 'RISK_MANAGEMENT_MIM_LF.POWER_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY;

ENTITY power_unit
  SUBTYPE OF (derived_unit);
WHERE
  WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit(watt);
END_ENTITY;

ENTITY pre_defined_item;
  name : label;
END_ENTITY;

ENTITY pressure_measure_with_unit
  SUBTYPE OF (measure_with_unit);
WHERE
  WR1: 'RISK_MANAGEMENT_MIM_LF.PRESSURE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY;

ENTITY pressure_unit
  SUBTYPE OF (derived_unit);
WHERE
  WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit(pascal);
END_ENTITY;

ENTITY probability_generator
  SUBTYPE OF (representation);
END_ENTITY;

ENTITY probability_representation
  SUBTYPE OF (property_definition_representation);
  SELF\property_definition_representation.definition : event_probability;
END_ENTITY;

ENTITY product;
  id : identifier;
  name : label;
  description : OPTIONAL text;
  frame_of_reference : SET[1:?] OF product_context;
END_ENTITY;

ENTITY product_category;
  name : label;
  description : OPTIONAL text;
DERIVE
  id : identifier := get_id_value(SELF);
WHERE
  WR1: SIZEOF(USEDIN(SELF, 'RISK_MANAGEMENT_MIM_LF.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1;
END_ENTITY;

ENTITY product_context
  SUBTYPE OF (application_context_element);
  discipline_type : label;
END_ENTITY;

ENTITY product_definition;
  id : identifier;
  description : OPTIONAL text;
  formation : product_definition_formation;
  frame_of_reference : product_definition_context;
DERIVE
  name : label := get_name_value(SELF);
WHERE
  WR1: SIZEOF(USEDIN(SELF, 'RISK_MANAGEMENT_MIM_LF.' + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1;
END_ENTITY;

ENTITY product_definition_context
  SUBTYPE OF (application_context_element);
  life_cycle_stage : label;
END_ENTITY;

ENTITY product_definition_context_association;
  definition : product_definition;
  frame_of_reference : product_definition_context;
  role : product_definition_context_role;
END_ENTITY;

ENTITY product_definition_context_role;
  name : label;
  description : OPTIONAL text;
END_ENTITY;

ENTITY product_definition_formation;
  id : identifier;
  description : OPTIONAL text;
  of_product : product;
UNIQUE
  UR1: id, of_product;
END_ENTITY;

ENTITY product_definition_formation_relationship;
  id : identifier;
  name : label;
  description : OPTIONAL text;
  relating_product_definition_formation : product_definition_formation;
  related_product_definition_formation : product_definition_formation;
END_ENTITY;

ENTITY product_definition_relationship;
  id : identifier;
  name : label;
  description : OPTIONAL text;
  relating_product_definition : product_definition;
  related_product_definition : product_definition;
END_ENTITY;

ENTITY product_definition_usage
  SUBTYPE OF (product_definition_relationship);
UNIQUE
  UR1: SELF\product_definition_relationship.id, SELF\product_definition_relationship.relating_product_definition, SELF\product_definition_relationship.related_product_definition;
WHERE
  WR1: acyclic_product_definition_relationship(SELF, [SELF\product_definition_relationship.related_product_definition], 'RISK_MANAGEMENT_MIM_LF.PRODUCT_DEFINITION_USAGE');
END_ENTITY;

ENTITY product_definition_with_associated_documents
  SUBTYPE OF (product_definition);
  documentation_ids : SET[1:?] OF document;
END_ENTITY;

ENTITY product_related_product_category
  SUBTYPE OF (product_category);
  products : SET[1:?] OF product;
END_ENTITY;

ENTITY product_relationship;
  id : identifier;
  name : label;
  description : OPTIONAL text;
  relating_product : product;
  related_product : product;
END_ENTITY;

ENTITY property_definition;
  name : label;
  description : OPTIONAL text;
  definition : characterized_definition;
DERIVE
  id : identifier := get_id_value(SELF);
WHERE
  WR1: SIZEOF(USEDIN(SELF, 'RISK_MANAGEMENT_MIM_LF.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1;
END_ENTITY;

ENTITY property_definition_representation;
  definition : represented_definition;
  used_representation : representation;
DERIVE
  description : text := get_description_value(SELF);
  name : label := get_name_value(SELF);
WHERE
  WR1: SIZEOF(USEDIN(SELF, 'RISK_MANAGEMENT_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
  WR2: SIZEOF(USEDIN(SELF, 'RISK_MANAGEMENT_MIM_LF.' + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1;
END_ENTITY;

ENTITY radioactivity_measure_with_unit
  SUBTYPE OF (measure_with_unit);
WHERE
  WR1: 'RISK_MANAGEMENT_MIM_LF.RADIOACTIVITY_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY;

ENTITY radioactivity_unit
  SUBTYPE OF (derived_unit);
WHERE
  WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit(becquerel);
END_ENTITY;

ENTITY ratio_measure_with_unit
  SUBTYPE OF (measure_with_unit);
WHERE
  WR1: 'RISK_MANAGEMENT_MIM_LF.RATIO_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY;

ENTITY ratio_unit
  SUBTYPE OF (named_unit);
WHERE
  WR1: (SELF\named_unit.dimensions.length_exponent = 0.000000) AND (SELF\named_unit.dimensions.mass_exponent = 0.000000) AND (SELF\named_unit.dimensions.time_exponent = 0.000000) AND (SELF\named_unit.dimensions.electric_current_exponent = 0.000000) AND (SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0.000000) AND (SELF\named_unit.dimensions.amount_of_substance_exponent = 0.000000) AND (SELF\named_unit.dimensions.luminous_intensity_exponent = 0.000000);
END_ENTITY;

ENTITY related_consequence
  SUBTYPE OF (product_definition_relationship);
  SELF\product_definition_relationship.relating_product_definition : risk_perception;
  SELF\product_definition_relationship.related_product_definition : risk_consequence;
END_ENTITY;

ENTITY representation;
  name : label;
  items : SET[1:?] OF representation_item;
  context_of_items : representation_context;
DERIVE
  id : identifier := get_id_value(SELF);
  description : text := get_description_value(SELF);
WHERE
  WR1: SIZEOF(USEDIN(SELF, 'RISK_MANAGEMENT_MIM_LF.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1;
  WR2: SIZEOF(USEDIN(SELF, 'RISK_MANAGEMENT_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
END_ENTITY;

ENTITY representation_context;
  context_identifier : identifier;
  context_type : text;
INVERSE
  representations_in_context : SET[1:?] OF representation FOR context_of_items;
END_ENTITY;

ENTITY representation_item
  SUPERTYPE OF (ONEOF (compound_representation_item,
                       value_representation_item));
  name : label;
WHERE
  WR1: SIZEOF(using_representations(SELF)) > 0;
END_ENTITY;

ENTITY representation_relationship;
  name : label;
  description : OPTIONAL text;
  rep_1 : representation;
  rep_2 : representation;
END_ENTITY;

ENTITY resistance_measure_with_unit
  SUBTYPE OF (measure_with_unit);
WHERE
  WR1: 'RISK_MANAGEMENT_MIM_LF.RESISTANCE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY;

ENTITY resistance_unit
  SUBTYPE OF (derived_unit);
WHERE
  WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit(ohm);
END_ENTITY;

ENTITY resource_property;
  name : label;
  description : text;
  resource : characterized_resource_definition;
END_ENTITY;

ENTITY resource_property_representation;
  name : label;
  description : text;
  property : resource_property;
  representation : representation;
END_ENTITY;

ENTITY risk
  SUBTYPE OF (product);
END_ENTITY;

ENTITY risk_acceptance
  SUBTYPE OF (action);
END_ENTITY;

ENTITY risk_activity_structure
  SUBTYPE OF (action_relationship);
  SELF\action_relationship.relating_action : risk_action;
  SELF\action_relationship.related_action : risk_action;
DERIVE
  child : risk_action := SELF\action_relationship.related_action;
  parent : risk_action := SELF\action_relationship.relating_action;
END_ENTITY;

ENTITY risk_analysis
  SUBTYPE OF (action);
END_ENTITY;

ENTITY risk_assessment
  SUBTYPE OF (action);
END_ENTITY;

ENTITY risk_attitude
  SUBTYPE OF (property_definition_representation);
  SELF\property_definition_representation.definition : risk_level;
DERIVE
  criticality_factor : representation := SELF\property_definition_representation.used_representation;
END_ENTITY;

ENTITY risk_communication
  SUBTYPE OF (action);
END_ENTITY;

ENTITY risk_consequence
  SUBTYPE OF (product_definition);
  SELF\product_definition.formation : risk_perception_formation;
END_ENTITY;

ENTITY risk_control
  SUBTYPE OF (action);
END_ENTITY;

ENTITY risk_estimation
  SUBTYPE OF (action);
END_ENTITY;

ENTITY risk_evaluation
  SUBTYPE OF (action);
END_ENTITY;

ENTITY risk_event
  SUBTYPE OF (applied_action_method_assignment);
  SELF\applied_action_method_assignment.items : SET[1:1] OF risk_perception;
WHERE
  WR1: SELF\action_method_assignment.role.name = 'risk of event';
END_ENTITY;

ENTITY risk_identification
  SUBTYPE OF (action);
END_ENTITY;

ENTITY risk_impact_assignment;
  assigned_risk_consequence : risk_consequence;
  items : SET[1:?] OF risk_impact_item;
END_ENTITY;

ENTITY risk_level
  SUBTYPE OF (property_definition);
  SELF\property_definition.definition : risk_perception_characterized_object;
END_ENTITY;

ENTITY risk_measure
  SUBTYPE OF (action_method);
END_ENTITY;

ENTITY risk_perception
  SUBTYPE OF (product_definition);
  SELF\product_definition.formation : risk_perception_formation;
  SELF\product_definition.frame_of_reference : risk_perception_context;
DERIVE
  risk_perception_context : risk_perception_context := SELF\product_definition.frame_of_reference;
END_ENTITY;

ENTITY risk_perception_characterized_object
  SUBTYPE OF (characterized_object, risk_perception);
END_ENTITY;

ENTITY risk_perception_context
  SUBTYPE OF (product_definition_context);
END_ENTITY;

ENTITY risk_perception_formation
  SUBTYPE OF (product_definition_formation);
  SELF\product_definition_formation.of_product : risk;
DERIVE
  of_risk : risk := SELF\product_definition_formation.of_product;
END_ENTITY;

ENTITY risk_perception_relationship
  SUBTYPE OF (product_definition_relationship);
  SELF\product_definition_relationship.relating_product_definition : risk_perception;
  SELF\product_definition_relationship.related_product_definition : risk_perception;
END_ENTITY;

ENTITY risk_perception_source_assignment;
  assigned_risk : risk_perception;
  items : SET[1:?] OF risk_perception_source_item;
END_ENTITY;

ENTITY risk_relationship
  SUBTYPE OF (product_relationship);
  SELF\product_relationship.relating_product : risk;
  SELF\product_relationship.related_product : risk;
DERIVE
  related_risk : risk := SELF\product_relationship.related_product;
  relating_risk : risk := SELF\product_relationship.relating_product;
END_ENTITY;

ENTITY risk_treatment
  SUBTYPE OF (action);
  SELF\action.chosen_method : risk_measure;
END_ENTITY;

ENTITY rm_characterizable_address
  SUBTYPE OF (address, characterized_object);
END_ENTITY;

ENTITY rm_characterizable_applied_action_assignment
  SUBTYPE OF (applied_action_assignment, characterized_object);
END_ENTITY;

ENTITY rm_characterizable_applied_action_method_assignment
  SUBTYPE OF (applied_action_method_assignment, characterized_object);
END_ENTITY;

ENTITY rm_characterizable_applied_document_reference
  SUBTYPE OF (applied_document_reference, characterized_object);
END_ENTITY;

ENTITY rm_characterizable_applied_document_usage_constraint_assignment
  SUBTYPE OF (applied_document_usage_constraint_assignment, characterized_object);
END_ENTITY;

ENTITY rm_characterizable_applied_organization_assignment
  SUBTYPE OF (applied_organization_assignment, characterized_object);
END_ENTITY;

ENTITY rm_characterizable_applied_person_and_organization_assignment
  SUBTYPE OF (applied_person_and_organization_assignment, characterized_object);
END_ENTITY;

ENTITY rm_characterizable_person
  SUBTYPE OF (characterized_object, person);
END_ENTITY;

ENTITY rm_characterizable_person_and_organization
  SUBTYPE OF (characterized_object, person_and_organization);
END_ENTITY;

ENTITY rm_characterizable_risk_impact_assignment
  SUBTYPE OF (characterized_object, risk_impact_assignment);
END_ENTITY;

ENTITY rm_characterizable_state_observed
  SUBTYPE OF (characterized_object, state_observed);
END_ENTITY;

ENTITY rm_characterizable_state_observed_assignment
  SUBTYPE OF (characterized_object, state_observed_assignment);
END_ENTITY;

ENTITY rm_characterizable_state_observed_relationship
  SUBTYPE OF (characterized_object, state_observed_relationship);
END_ENTITY;

ENTITY rm_characterizable_state_type
  SUBTYPE OF (characterized_object, state_type);
END_ENTITY;

ENTITY rm_characterizable_state_type_assignment
  SUBTYPE OF (characterized_object, state_type_assignment);
END_ENTITY;

ENTITY rm_characterizable_state_type_relationship
  SUBTYPE OF (characterized_object, state_type_relationship);
END_ENTITY;

ENTITY role_association;
  role : object_role;
  item_with_role : role_select;
END_ENTITY;

ENTITY same_as_external_item_assignment
  SUBTYPE OF (external_identification_assignment);
  items : SET[0:?] OF same_as_item;
END_ENTITY;

ENTITY si_absorbed_dose_unit
  SUBTYPE OF (absorbed_dose_unit, si_unit);
WHERE
  WR1: SELF\si_unit.name = gray;
  WR2: NOT EXISTS(SELF\derived_unit.name);
END_ENTITY;

ENTITY si_capacitance_unit
  SUBTYPE OF (capacitance_unit, si_unit);
WHERE
  WR1: SELF\si_unit.name = farad;
  WR2: NOT EXISTS(SELF\derived_unit.name);
END_ENTITY;

ENTITY si_conductance_unit
  SUBTYPE OF (conductance_unit, si_unit);
WHERE
  WR1: SELF\si_unit.name = siemens;
  WR2: NOT EXISTS(SELF\derived_unit.name);
END_ENTITY;

ENTITY si_dose_equivalent_unit
  SUBTYPE OF (dose_equivalent_unit, si_unit);
WHERE
  WR1: SELF\si_unit.name = sievert;
  WR2: NOT EXISTS(SELF\derived_unit.name);
END_ENTITY;

ENTITY si_electric_charge_unit
  SUBTYPE OF (electric_charge_unit, si_unit);
WHERE
  WR1: SELF\si_unit.name = coulomb;
  WR2: NOT EXISTS(SELF\derived_unit.name);
END_ENTITY;

ENTITY si_electric_potential_unit
  SUBTYPE OF (electric_potential_unit, si_unit);
WHERE
  WR1: SELF\si_unit.name = volt;
  WR2: NOT EXISTS(SELF\derived_unit.name);
END_ENTITY;

ENTITY si_energy_unit
  SUBTYPE OF (energy_unit, si_unit);
WHERE
  WR1: SELF\si_unit.name = joule;
  WR2: NOT EXISTS(SELF\derived_unit.name);
END_ENTITY;

ENTITY si_force_unit
  SUBTYPE OF (force_unit, si_unit);
WHERE
  WR1: SELF\si_unit.name = newton;
  WR2: NOT EXISTS(SELF\derived_unit.name);
END_ENTITY;

ENTITY si_frequency_unit
  SUBTYPE OF (frequency_unit, si_unit);
WHERE
  WR1: SELF\si_unit.name = hertz;
  WR2: NOT EXISTS(SELF\derived_unit.name);
END_ENTITY;

ENTITY si_illuminance_unit
  SUBTYPE OF (illuminance_unit, si_unit);
WHERE
  WR1: SELF\si_unit.name = lux;
  WR2: NOT EXISTS(SELF\derived_unit.name);
END_ENTITY;

ENTITY si_inductance_unit
  SUBTYPE OF (inductance_unit, si_unit);
WHERE
  WR1: SELF\si_unit.name = henry;
  WR2: NOT EXISTS(SELF\derived_unit.name);
END_ENTITY;

ENTITY si_magnetic_flux_density_unit
  SUBTYPE OF (magnetic_flux_density_unit, si_unit);
WHERE
  WR1: SELF\si_unit.name = tesla;
  WR2: NOT EXISTS(SELF\derived_unit.name);
END_ENTITY;

ENTITY si_magnetic_flux_unit
  SUBTYPE OF (magnetic_flux_unit, si_unit);
WHERE
  WR1: SELF\si_unit.name = weber;
  WR2: NOT EXISTS(SELF\derived_unit.name);
END_ENTITY;

ENTITY si_power_unit
  SUBTYPE OF (power_unit, si_unit);
WHERE
  WR1: SELF\si_unit.name = watt;
  WR2: NOT EXISTS(SELF\derived_unit.name);
END_ENTITY;

ENTITY si_pressure_unit
  SUBTYPE OF (pressure_unit, si_unit);
WHERE
  WR1: SELF\si_unit.name = pascal;
  WR2: NOT EXISTS(SELF\derived_unit.name);
END_ENTITY;

ENTITY si_radioactivity_unit
  SUBTYPE OF (radioactivity_unit, si_unit);
WHERE
  WR1: SELF\si_unit.name = becquerel;
  WR2: NOT EXISTS(SELF\derived_unit.name);
END_ENTITY;

ENTITY si_resistance_unit
  SUBTYPE OF (resistance_unit, si_unit);
WHERE
  WR1: SELF\si_unit.name = ohm;
  WR2: NOT EXISTS(SELF\derived_unit.name);
END_ENTITY;

ENTITY si_unit
  SUBTYPE OF (named_unit);
  prefix : OPTIONAL si_prefix;
  name : si_unit_name;
DERIVE
  SELF\named_unit.dimensions : dimensional_exponents := dimensions_for_si_unit(name);
WHERE
  WR1: NOT (('RISK_MANAGEMENT_MIM_LF.MASS_UNIT' IN TYPEOF(SELF)) AND (SIZEOF(USEDIN(SELF, 'RISK_MANAGEMENT_MIM_LF.DERIVED_UNIT_ELEMENT.UNIT')) > 0)) OR (prefix = kilo);
END_ENTITY;

ENTITY solid_angle_measure_with_unit
  SUBTYPE OF (measure_with_unit);
WHERE
  WR1: 'RISK_MANAGEMENT_MIM_LF.SOLID_ANGLE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY;

ENTITY solid_angle_unit
  SUBTYPE OF (named_unit);
WHERE
  WR1: (SELF\named_unit.dimensions.length_exponent = 0.000000) AND (SELF\named_unit.dimensions.mass_exponent = 0.000000) AND (SELF\named_unit.dimensions.time_exponent = 0.000000) AND (SELF\named_unit.dimensions.electric_current_exponent = 0.000000) AND (SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0.000000) AND (SELF\named_unit.dimensions.amount_of_substance_exponent = 0.000000) AND (SELF\named_unit.dimensions.luminous_intensity_exponent = 0.000000);
END_ENTITY;

ENTITY state_observed;
  name : label;
  description : OPTIONAL text;
END_ENTITY;

ENTITY state_observed_assignment
  ABSTRACT SUPERTYPE ;
  assigned_state_observed : state_observed;
  role : state_observed_role;
END_ENTITY;

ENTITY state_observed_relationship;
  name : label;
  description : OPTIONAL text;
  relating_state_observed : SET[1:?] OF state_observed;
  related_state_observed : SET[1:?] OF state_observed;
END_ENTITY;

ENTITY state_observed_role;
  name : label;
  description : OPTIONAL text;
END_ENTITY;

ENTITY state_predicted
  SUBTYPE OF (state_observed);
END_ENTITY;

ENTITY state_type;
  name : label;
  description : OPTIONAL text;
END_ENTITY;

ENTITY state_type_assignment
  ABSTRACT SUPERTYPE ;
  assigned_state_type : state_type;
  role : state_type_role;
END_ENTITY;

ENTITY state_type_relationship;
  name : label;
  description : OPTIONAL text;
  relating_state_type : SET[1:?] OF state_type;
  related_state_type : SET[1:?] OF state_type;
END_ENTITY;

ENTITY state_type_role;
  name : label;
  description : OPTIONAL text;
END_ENTITY;

ENTITY thermodynamic_temperature_measure_with_unit
  SUBTYPE OF (measure_with_unit);
WHERE
  WR1: 'RISK_MANAGEMENT_MIM_LF.THERMODYNAMIC_TEMPERATURE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY;

ENTITY thermodynamic_temperature_unit
  SUBTYPE OF (named_unit);
WHERE
  WR1: (SELF\named_unit.dimensions.length_exponent = 0.000000) AND (SELF\named_unit.dimensions.mass_exponent = 0.000000) AND (SELF\named_unit.dimensions.time_exponent = 0.000000) AND (SELF\named_unit.dimensions.electric_current_exponent = 0.000000) AND (SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 1.000000) AND (SELF\named_unit.dimensions.amount_of_substance_exponent = 0.000000) AND (SELF\named_unit.dimensions.luminous_intensity_exponent = 0.000000);
END_ENTITY;

ENTITY time_measure_with_unit
  SUBTYPE OF (measure_with_unit);
WHERE
  WR1: 'RISK_MANAGEMENT_MIM_LF.TIME_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY;

ENTITY time_unit
  SUBTYPE OF (named_unit);
WHERE
  WR1: (SELF\named_unit.dimensions.length_exponent = 0.000000) AND (SELF\named_unit.dimensions.mass_exponent = 0.000000) AND (SELF\named_unit.dimensions.time_exponent = 1.000000) AND (SELF\named_unit.dimensions.electric_current_exponent = 0.000000) AND (SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0.000000) AND (SELF\named_unit.dimensions.amount_of_substance_exponent = 0.000000) AND (SELF\named_unit.dimensions.luminous_intensity_exponent = 0.000000);
END_ENTITY;

ENTITY uncertainty_measure_with_unit
  SUBTYPE OF (measure_with_unit);
  name : label;
  description : OPTIONAL text;
WHERE
  WR1: valid_measure_value(SELF\measure_with_unit.value_component);
END_ENTITY;

ENTITY value_representation_item
  SUBTYPE OF (representation_item);
  value_component : measure_value;
WHERE
  WR1: SIZEOF(QUERY(rep <* using_representations(SELF) | NOT ('RISK_MANAGEMENT_MIM_LF.GLOBAL_UNIT_ASSIGNED_CONTEXT' IN TYPEOF(rep.context_of_items)))) = 0;
END_ENTITY;

ENTITY velocity_measure_with_unit
  SUBTYPE OF (measure_with_unit);
WHERE
  WR1: 'RISK_MANAGEMENT_MIM_LF.VELOCITY_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY;

ENTITY velocity_unit
  SUBTYPE OF (derived_unit);
WHERE
  WR1: derive_dimensional_exponents(SELF) = dimensional_exponents(1.000000, 0.000000, - 1.000000, 0.000000, 0.000000, 0.000000, 0.000000);
END_ENTITY;

ENTITY volume_measure_with_unit
  SUBTYPE OF (measure_with_unit);
WHERE
  WR1: 'RISK_MANAGEMENT_MIM_LF.VOLUME_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY;

ENTITY volume_unit
  SUBTYPE OF (derived_unit);
WHERE
  WR1: derive_dimensional_exponents(SELF) = dimensional_exponents(3.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000);
END_ENTITY;

RULE validate_dependently_instantiable_entity_data_types FOR
(application_context, classification_role, document_type, document_usage_constraint, document_usage_role, event_occurrence, product_definition_context_role);
      LOCAL
        number_of_input_instances : INTEGER;
        previous_in_chain : LIST OF GENERIC := [];
        set_of_input_types : SET OF STRING := [];
        all_instances : SET OF GENERIC := [];
      END_LOCAL;

      all_instances := all_instances + application_context + classification_role + document_type + document_usage_constraint + document_usage_role + event_occurrence + product_definition_context_role;
      number_of_input_instances := SIZEOF(all_instances);
      REPEAT i := 1 TO number_of_input_instances;
        set_of_input_types := set_of_input_types + TYPEOF(all_instances[i]);
      END_REPEAT;
      
WHERE
  WR1: dependently_instantiated(all_instances, set_of_input_types, previous_in_chain);
END_RULE;

FUNCTION acyclic_product_definition_relationship
 (relation : product_definition_relationship; relatives : SET[1:?] OF product_definition; specific_relation : STRING) : BOOLEAN;
      LOCAL
        x : SET OF product_definition_relationship;
      END_LOCAL;

      IF relation.relating_product_definition IN relatives THEN
        RETURN (FALSE);
      END_IF;
      x := QUERY(pd <* bag_to_set(USEDIN(relation.relating_product_definition, 'RISK_MANAGEMENT_MIM_LF.' + 'PRODUCT_DEFINITION_RELATIONSHIP.' + 'RELATED_PRODUCT_DEFINITION')) | specific_relation IN TYPEOF(pd));
      REPEAT i := 1 TO HIINDEX(x);
        IF NOT acyclic_product_definition_relationship(x[i], relatives + relation.relating_product_definition, specific_relation) THEN
          RETURN (FALSE);
        END_IF;
      END_REPEAT;
      RETURN (TRUE);
      
END_FUNCTION;

FUNCTION bag_to_set
 (the_bag : BAG OF GENERIC : intype) : SET OF GENERIC : intype;
      LOCAL
        the_set : SET OF GENERIC:intype := [];
      END_LOCAL;

      IF SIZEOF(the_bag) > 0 THEN
        REPEAT i := 1 TO HIINDEX(the_bag);
          the_set := the_set + the_bag[i];
        END_REPEAT;
      END_IF;
      RETURN (the_set);
      
END_FUNCTION;

FUNCTION dependently_instantiated
 (set_of_input_instances : SET OF GENERIC : igen; set_of_input_types : SET OF STRING; previous_in_chain : LIST OF GENERIC : cgen) : BOOLEAN;
      LOCAL
        number_of_input_instances : INTEGER;
        number_of_referring_instances : INTEGER;
        bag_of_referring_instances : BAG OF GENERIC:igen := [];
        dependently_instantiated_flag : BOOLEAN;
        previous_in_chain_plus : LIST OF GENERIC:cgen := [];
        result : BOOLEAN := TRUE;
        set_of_types : SET OF STRING := [];
      END_LOCAL;

      IF EXISTS(set_of_input_instances) THEN
        number_of_input_instances := SIZEOF(set_of_input_instances);
        set_of_input_types := set_of_input_types + 'GENERIC';
        REPEAT i := 1 TO number_of_input_instances;
          bag_of_referring_instances := USEDIN(set_of_input_instances[i], '');
          IF EXISTS(bag_of_referring_instances) THEN
            number_of_referring_instances := SIZEOF(bag_of_referring_instances);
            dependently_instantiated_flag := FALSE;
            REPEAT j := 1 TO number_of_referring_instances;
              set_of_types := TYPEOF(bag_of_referring_instances[j]);
              IF set_of_types <= set_of_input_types THEN
                IF NOT (bag_of_referring_instances[j] IN previous_in_chain) THEN
                  previous_in_chain_plus := previous_in_chain + set_of_input_instances[i];
                  IF dependently_instantiated([bag_of_referring_instances[j]], set_of_input_types, previous_in_chain_plus) THEN
                    dependently_instantiated_flag := TRUE;
                    ESCAPE;
                  ELSE
                    SKIP;
                  END_IF;
                END_IF;
              ELSE
                dependently_instantiated_flag := TRUE;
                ESCAPE;
              END_IF;
            END_REPEAT;
            IF NOT dependently_instantiated_flag THEN
              RETURN (FALSE);
            END_IF;
          ELSE
            RETURN (FALSE);
          END_IF;
        END_REPEAT;
      ELSE
        RETURN (FALSE);
      END_IF;
      RETURN (TRUE);
      
END_FUNCTION;

FUNCTION derive_dimensional_exponents
 (x : unit) : dimensional_exponents;
      LOCAL
        result : dimensional_exponents := dimensional_exponents(0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000);
      END_LOCAL;

      IF 'RISK_MANAGEMENT_MIM_LF.DERIVED_UNIT' IN TYPEOF(x) THEN
        REPEAT i := LOINDEX(x\derived_unit.elements) TO HIINDEX(x\derived_unit.elements);
          result.length_exponent := result.length_exponent + (x\derived_unit.elements[i]\derived_unit_element.exponent * x\derived_unit.elements[i]\derived_unit_element.unit\named_unit.dimensions.length_exponent);
          result.mass_exponent := result.mass_exponent + (x\derived_unit.elements[i]\derived_unit_element.exponent * x\derived_unit.elements[i]\derived_unit_element.unit\named_unit.dimensions.mass_exponent);
          result.time_exponent := result.time_exponent + (x\derived_unit.elements[i]\derived_unit_element.exponent * x\derived_unit.elements[i]\derived_unit_element.unit\named_unit.dimensions.time_exponent);
          result.electric_current_exponent := result.electric_current_exponent + (x\derived_unit.elements[i]\derived_unit_element.exponent * x\derived_unit.elements[i]\derived_unit_element.unit\named_unit.dimensions.electric_current_exponent);
          result.thermodynamic_temperature_exponent := result.thermodynamic_temperature_exponent + (x\derived_unit.elements[i]\derived_unit_element.exponent * x\derived_unit.elements[i]\derived_unit_element.unit\named_unit.dimensions.thermodynamic_temperature_exponent);
          result.amount_of_substance_exponent := result.amount_of_substance_exponent + (x\derived_unit.elements[i]\derived_unit_element.exponent * x\derived_unit.elements[i]\derived_unit_element.unit\named_unit.dimensions.amount_of_substance_exponent);
          result.luminous_intensity_exponent := result.luminous_intensity_exponent + (x\derived_unit.elements[i]\derived_unit_element.exponent * x\derived_unit.elements[i]\derived_unit_element.unit\named_unit.dimensions.luminous_intensity_exponent);
        END_REPEAT;
      ELSE
        result := x\named_unit.dimensions;
      END_IF;
      RETURN (result);
      
END_FUNCTION;

FUNCTION dimensions_for_si_unit
 (n : si_unit_name) : dimensional_exponents;
      CASE n OF 
        metre:
          RETURN (dimensional_exponents(1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000));
        gram:
          RETURN (dimensional_exponents(0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000));
        second:
          RETURN (dimensional_exponents(0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 0.000000));
        ampere:
          RETURN (dimensional_exponents(0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000));
        kelvin:
          RETURN (dimensional_exponents(0.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000));
        mole:
          RETURN (dimensional_exponents(0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000));
        candela:
          RETURN (dimensional_exponents(0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000));
        radian:
          RETURN (dimensional_exponents(0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000));
        steradian:
          RETURN (dimensional_exponents(0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000));
        hertz:
          RETURN (dimensional_exponents(0.000000, 0.000000,  - 1.000000, 0.000000, 0.000000, 0.000000, 0.000000));
        newton:
          RETURN (dimensional_exponents(1.000000, 1.000000,  - 2.000000, 0.000000, 0.000000, 0.000000, 0.000000));
        pascal:
          RETURN (dimensional_exponents( - 1.000000, 1.000000,  - 2.000000, 0.000000, 0.000000, 0.000000, 0.000000));
        joule:
          RETURN (dimensional_exponents(2.000000, 1.000000,  - 2.000000, 0.000000, 0.000000, 0.000000, 0.000000));
        watt:
          RETURN (dimensional_exponents(2.000000, 1.000000,  - 3.000000, 0.000000, 0.000000, 0.000000, 0.000000));
        coulomb:
          RETURN (dimensional_exponents(0.000000, 0.000000, 1.000000, 1.000000, 0.000000, 0.000000, 0.000000));
        volt:
          RETURN (dimensional_exponents(2.000000, 1.000000,  - 3.000000,  - 1.000000, 0.000000, 0.000000, 0.000000));
        farad:
          RETURN (dimensional_exponents( - 2.000000,  - 1.000000, 4.000000, 2.000000, 0.000000, 0.000000, 0.000000));
        ohm:
          RETURN (dimensional_exponents(2.000000, 1.000000,  - 3.000000,  - 2.000000, 0.000000, 0.000000, 0.000000));
        siemens:
          RETURN (dimensional_exponents( - 2.000000,  - 1.000000, 3.000000, 2.000000, 0.000000, 0.000000, 0.000000));
        weber:
          RETURN (dimensional_exponents(2.000000, 1.000000,  - 2.000000,  - 1.000000, 0.000000, 0.000000, 0.000000));
        tesla:
          RETURN (dimensional_exponents(0.000000, 1.000000,  - 2.000000,  - 1.000000, 0.000000, 0.000000, 0.000000));
        henry:
          RETURN (dimensional_exponents(2.000000, 1.000000,  - 2.000000,  - 2.000000, 0.000000, 0.000000, 0.000000));
        degree_Celsius:
          RETURN (dimensional_exponents(0.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000));
        lumen:
          RETURN (dimensional_exponents(0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000));
        lux:
          RETURN (dimensional_exponents( - 2.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000));
        becquerel:
          RETURN (dimensional_exponents(0.000000, 0.000000,  - 1.000000, 0.000000, 0.000000, 0.000000, 0.000000));
        gray:
          RETURN (dimensional_exponents(2.000000, 0.000000,  - 2.000000, 0.000000, 0.000000, 0.000000, 0.000000));
        sievert:
          RETURN (dimensional_exponents(2.000000, 0.000000,  - 2.000000, 0.000000, 0.000000, 0.000000, 0.000000));
        OTHERWISE:
          RETURN (?);
      END_CASE;
      
END_FUNCTION;

FUNCTION get_description_value
 (obj : description_attribute_select) : text;
      LOCAL
        description_bag : BAG OF description_attribute := (USEDIN(obj, 'RISK_MANAGEMENT_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.' + 'DESCRIBED_ITEM'));
      END_LOCAL;

      IF SIZEOF(description_bag) = 1 THEN
        RETURN (description_bag[1].attribute_value);
      ELSE
        RETURN (?);
      END_IF;
      
END_FUNCTION;

FUNCTION get_id_value
 (obj : id_attribute_select) : identifier;
      LOCAL
        id_bag : BAG OF id_attribute := (USEDIN(obj, 'RISK_MANAGEMENT_MIM_LF.' + 'ID_ATTRIBUTE.' + 'IDENTIFIED_ITEM'));
      END_LOCAL;

      IF SIZEOF(id_bag) = 1 THEN
        RETURN (id_bag[1].attribute_value);
      ELSE
        RETURN (?);
      END_IF;
      
END_FUNCTION;

FUNCTION get_name_value
 (obj : name_attribute_select) : label;
      LOCAL
        name_bag : BAG OF name_attribute := (USEDIN(obj, 'RISK_MANAGEMENT_MIM_LF.' + 'NAME_ATTRIBUTE.' + 'NAMED_ITEM'));
      END_LOCAL;

      IF SIZEOF(name_bag) = 1 THEN
        RETURN (name_bag[1].attribute_value);
      ELSE
        RETURN (?);
      END_IF;
      
END_FUNCTION;

FUNCTION get_role
 (obj : role_select) : object_role;
      LOCAL
        role_bag : BAG OF role_association := (USEDIN(obj, 'RISK_MANAGEMENT_MIM_LF.' + 'ROLE_ASSOCIATION.' + 'ITEM_WITH_ROLE'));
      END_LOCAL;

      IF SIZEOF(role_bag) = 1 THEN
        RETURN (role_bag[1].role);
      ELSE
        RETURN (?);
      END_IF;
      
END_FUNCTION;

FUNCTION leap_year
 (year : year_number) : BOOLEAN;
      IF ((((year MOD 4) = 0) AND ((year MOD 100) <> 0)) OR ((year MOD 400) = 0)) THEN
        RETURN (TRUE);
      ELSE
        RETURN (FALSE);
      END_IF;
      
END_FUNCTION;

FUNCTION using_items
 (item : founded_item_select; checked_items : SET OF founded_item_select) : SET OF founded_item_select;
      LOCAL
        new_check_items : SET OF founded_item_select;
        result_items : SET OF founded_item_select;
        next_items : SET OF founded_item_select;
      END_LOCAL;

      result_items := [];
      new_check_items := checked_items + item;
      next_items := QUERY(z <* bag_to_set(USEDIN(item, '')) | ('RISK_MANAGEMENT_MIM_LF.REPRESENTATION_ITEM' IN TYPEOF(z)) OR ('RISK_MANAGEMENT_MIM_LF.FOUNDED_ITEM' IN TYPEOF(z)));
      IF SIZEOF(next_items) > 0 THEN
        REPEAT i := 1 TO HIINDEX(next_items);
          IF NOT (next_items[i] IN new_check_items) THEN
            result_items := result_items + next_items[i] + using_items(next_items[i], new_check_items);
          END_IF;
        END_REPEAT;
      END_IF;
      RETURN (result_items);
      
END_FUNCTION;

FUNCTION using_representations
 (item : founded_item_select) : SET OF representation;
      LOCAL
        results : SET OF representation;
        result_bag : BAG OF representation;
        intermediate_items : SET OF founded_item_select;
      END_LOCAL;

      results := [];
      result_bag := USEDIN(item, 'RISK_MANAGEMENT_MIM_LF.REPRESENTATION.ITEMS');
      IF SIZEOF(result_bag) > 0 THEN
        REPEAT i := 1 TO HIINDEX(result_bag);
          results := results + result_bag[i];
        END_REPEAT;
      END_IF;
      intermediate_items := using_items(item, []);
      IF SIZEOF(intermediate_items) > 0 THEN
        REPEAT i := 1 TO HIINDEX(intermediate_items);
          result_bag := USEDIN(intermediate_items[i], 'RISK_MANAGEMENT_MIM_LF.REPRESENTATION.ITEMS');
          IF SIZEOF(result_bag) > 0 THEN
            REPEAT j := 1 TO HIINDEX(result_bag);
              results := results + result_bag[j];
            END_REPEAT;
          END_IF;
        END_REPEAT;
      END_IF;
      RETURN (results);
      
END_FUNCTION;

FUNCTION valid_calendar_date
 (date : calendar_date) : LOGICAL;
      CASE date.month_component OF 
        1:
          RETURN ({1 <= date.day_component <= 31});
        2:
          BEGIN
            IF (leap_year(date.year_component)) THEN
              RETURN ({1 <= date.day_component <= 29});
            ELSE
              RETURN ({1 <= date.day_component <= 28});
            END_IF;
          END;
        3:
          RETURN ({1 <= date.day_component <= 31});
        4:
          RETURN ({1 <= date.day_component <= 30});
        5:
          RETURN ({1 <= date.day_component <= 31});
        6:
          RETURN ({1 <= date.day_component <= 30});
        7:
          RETURN ({1 <= date.day_component <= 31});
        8:
          RETURN ({1 <= date.day_component <= 31});
        9:
          RETURN ({1 <= date.day_component <= 30});
        10:
          RETURN ({1 <= date.day_component <= 31});
        11:
          RETURN ({1 <= date.day_component <= 30});
        12:
          RETURN ({1 <= date.day_component <= 31});
      END_CASE;
      RETURN (FALSE);
      
END_FUNCTION;

FUNCTION valid_measure_value
 (m : measure_value) : BOOLEAN;
      IF ('REAL' IN TYPEOF(m)) THEN
        RETURN (m > 0.000000);
      ELSE
        IF ('INTEGER' IN TYPEOF(m)) THEN
          RETURN (m > 0);
        ELSE
          RETURN (TRUE);
        END_IF;
      END_IF;
      
END_FUNCTION;

FUNCTION valid_time
 (time : local_time) : BOOLEAN;
      IF EXISTS(time.second_component) THEN
        RETURN (EXISTS(time.minute_component));
      ELSE
        RETURN (TRUE);
      END_IF;
      
END_FUNCTION;

FUNCTION valid_units
 (m : measure_with_unit) : BOOLEAN;
      IF 'RISK_MANAGEMENT_MIM_LF.LENGTH_MEASURE' IN TYPEOF(m.value_component) THEN
        IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000) THEN
          RETURN (FALSE);
        END_IF;
      END_IF;
      IF 'RISK_MANAGEMENT_MIM_LF.MASS_MEASURE' IN TYPEOF(m.value_component) THEN
        IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000) THEN
          RETURN (FALSE);
        END_IF;
      END_IF;
      IF 'RISK_MANAGEMENT_MIM_LF.TIME_MEASURE' IN TYPEOF(m.value_component) THEN
        IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 0.000000) THEN
          RETURN (FALSE);
        END_IF;
      END_IF;
      IF 'RISK_MANAGEMENT_MIM_LF.ELECTRIC_CURRENT_MEASURE' IN TYPEOF(m.value_component) THEN
        IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000) THEN
          RETURN (FALSE);
        END_IF;
      END_IF;
      IF 'RISK_MANAGEMENT_MIM_LF.THERMODYNAMIC_TEMPERATURE_MEASURE' IN TYPEOF(m.value_component) THEN
        IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(0.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000) THEN
          RETURN (FALSE);
        END_IF;
      END_IF;
      IF 'RISK_MANAGEMENT_MIM_LF.CELSIUS_TEMPERATURE_MEASURE' IN TYPEOF(m.value_component) THEN
        IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(0.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000) THEN
          RETURN (FALSE);
        END_IF;
      END_IF;
      IF 'RISK_MANAGEMENT_MIM_LF.AMOUNT_OF_SUBSTANCE_MEASURE' IN TYPEOF(m.value_component) THEN
        IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000) THEN
          RETURN (FALSE);
        END_IF;
      END_IF;
      IF 'RISK_MANAGEMENT_MIM_LF.LUMINOUS_INTENSITY_MEASURE' IN TYPEOF(m.value_component) THEN
        IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000) THEN
          RETURN (FALSE);
        END_IF;
      END_IF;
      IF 'RISK_MANAGEMENT_MIM_LF.PLANE_ANGLE_MEASURE' IN TYPEOF(m.value_component) THEN
        IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000) THEN
          RETURN (FALSE);
        END_IF;
      END_IF;
      IF 'RISK_MANAGEMENT_MIM_LF.SOLID_ANGLE_MEASURE' IN TYPEOF(m.value_component) THEN
        IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000) THEN
          RETURN (FALSE);
        END_IF;
      END_IF;
      IF 'RISK_MANAGEMENT_MIM_LF.AREA_MEASURE' IN TYPEOF(m.value_component) THEN
        IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(2.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000) THEN
          RETURN (FALSE);
        END_IF;
      END_IF;
      IF 'RISK_MANAGEMENT_MIM_LF.VOLUME_MEASURE' IN TYPEOF(m.value_component) THEN
        IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(3.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000) THEN
          RETURN (FALSE);
        END_IF;
      END_IF;
      IF 'RISK_MANAGEMENT_MIM_LF.RATIO_MEASURE' IN TYPEOF(m.value_component) THEN
        IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000) THEN
          RETURN (FALSE);
        END_IF;
      END_IF;
      IF 'RISK_MANAGEMENT_MIM_LF.POSITIVE_LENGTH_MEASURE' IN TYPEOF(m.value_component) THEN
        IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000) THEN
          RETURN (FALSE);
        END_IF;
      END_IF;
      IF 'RISK_MANAGEMENT_MIM_LF.POSITIVE_PLANE_ANGLE_MEASURE' IN TYPEOF(m.value_component) THEN
        IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000) THEN
          RETURN (FALSE);
        END_IF;
      END_IF;
      IF 'RISK_MANAGEMENT_MIM_LF.ACCELERATION_MEASURE' IN TYPEOF(m.value_component) THEN
        IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(1.000000, 0.000000,  - 2.000000, 0.000000, 0.000000, 0.000000, 0.000000) THEN
          RETURN (FALSE);
        END_IF;
      END_IF;
      IF 'RISK_MANAGEMENT_MIM_LF.CAPACITANCE_MEASURE' IN TYPEOF(m.value_component) THEN
        IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents( - 2.000000,  - 1.000000, 4.000000, 2.000000, 0.000000, 0.000000, 0.000000) THEN
          RETURN (FALSE);
        END_IF;
      END_IF;
      IF 'RISK_MANAGEMENT_MIM_LF.ELECTRIC_CHARGE_MEASURE' IN TYPEOF(m.value_component) THEN
        IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(0.000000, 0.000000, 1.000000, 1.000000, 0.000000, 0.000000, 0.000000) THEN
          RETURN (FALSE);
        END_IF;
      END_IF;
      IF 'RISK_MANAGEMENT_MIM_LF.CONDUCTANCE_MEASURE' IN TYPEOF(m.value_component) THEN
        IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents( - 2.000000,  - 1.000000, 3.000000, 2.000000, 0.000000, 0.000000, 0.000000) THEN
          RETURN (FALSE);
        END_IF;
      END_IF;
      IF 'RISK_MANAGEMENT_MIM_LF.ELECTRIC_POTENTIAL_MEASURE' IN TYPEOF(m.value_component) THEN
        IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(2.000000, 1.000000,  - 3.000000,  - 1.000000, 0.000000, 0.000000, 0.000000) THEN
          RETURN (FALSE);
        END_IF;
      END_IF;
      IF 'RISK_MANAGEMENT_MIM_LF.ENERGY_MEASURE' IN TYPEOF(m.value_component) THEN
        IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(2.000000, 1.000000,  - 2.000000, 0.000000, 0.000000, 0.000000, 0.000000) THEN
          RETURN (FALSE);
        END_IF;
      END_IF;
      IF 'RISK_MANAGEMENT_MIM_LF.FORCE_MEASURE' IN TYPEOF(m.value_component) THEN
        IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(1.000000, 1.000000,  - 2.000000, 0.000000, 0.000000, 0.000000, 0.000000) THEN
          RETURN (FALSE);
        END_IF;
      END_IF;
      IF 'RISK_MANAGEMENT_MIM_LF.FREQUENCY_MEASURE' IN TYPEOF(m.value_component) THEN
        IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(0.000000, 0.000000,  - 1.000000, 0.000000, 0.000000, 0.000000, 0.000000) THEN
          RETURN (FALSE);
        END_IF;
      END_IF;
      IF 'RISK_MANAGEMENT_MIM_LF.ILLUMINANCE_MEASURE' IN TYPEOF(m.value_component) THEN
        IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents( - 2.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000) THEN
          RETURN (FALSE);
        END_IF;
      END_IF;
      IF 'RISK_MANAGEMENT_MIM_LF.INDUCTANCE_MEASURE' IN TYPEOF(m.value_component) THEN
        IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(2.000000, 1.000000,  - 2.000000,  - 2.000000, 0.000000, 0.000000, 0.000000) THEN
          RETURN (FALSE);
        END_IF;
      END_IF;
      IF 'RISK_MANAGEMENT_MIM_LF.LUMINOUS_FLUX_MEASURE' IN TYPEOF(m.value_component) THEN
        IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000) THEN
          RETURN (FALSE);
        END_IF;
      END_IF;
      IF 'RISK_MANAGEMENT_MIM_LF.MAGNETIC_FLUX_MEASURE' IN TYPEOF(m.value_component) THEN
        IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(2.000000, 1.000000,  - 2.000000,  - 1.000000, 0.000000, 0.000000, 0.000000) THEN
          RETURN (FALSE);
        END_IF;
      END_IF;
      IF 'RISK_MANAGEMENT_MIM_LF.MAGNETIC_FLUX_DENSITY_MEASURE' IN TYPEOF(m.value_component) THEN
        IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(0.000000, 1.000000,  - 2.000000,  - 1.000000, 0.000000, 0.000000, 0.000000) THEN
          RETURN (FALSE);
        END_IF;
      END_IF;
      IF 'RISK_MANAGEMENT_MIM_LF.POWER_MEASURE' IN TYPEOF(m.value_component) THEN
        IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(2.000000, 1.000000,  - 3.000000, 0.000000, 0.000000, 0.000000, 0.000000) THEN
          RETURN (FALSE);
        END_IF;
      END_IF;
      IF 'RISK_MANAGEMENT_MIM_LF.PRESSURE_MEASURE' IN TYPEOF(m.value_component) THEN
        IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents( - 1.000000, 1.000000,  - 2.000000, 0.000000, 0.000000, 0.000000, 0.000000) THEN
          RETURN (FALSE);
        END_IF;
      END_IF;
      IF 'RISK_MANAGEMENT_MIM_LF.RESISTANCE_MEASURE' IN TYPEOF(m.value_component) THEN
        IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(2.000000, 1.000000,  - 3.000000,  - 2.000000, 0.000000, 0.000000, 0.000000) THEN
          RETURN (FALSE);
        END_IF;
      END_IF;
      IF 'RISK_MANAGEMENT_MIM_LF.VELOCITY_MEASURE' IN TYPEOF(m.value_component) THEN
        IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(1.000000, 0.000000,  - 1.000000, 0.000000, 0.000000, 0.000000, 0.000000) THEN
          RETURN (FALSE);
        END_IF;
      END_IF;
      IF 'RISK_MANAGEMENT_MIM_LF.RADIOACTIVITY_MEASURE' IN TYPEOF(m.value_component) THEN
        IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(0.000000, 0.000000,  - 1.000000, 0.000000, 0.000000, 0.000000, 0.000000) THEN
          RETURN (FALSE);
        END_IF;
      END_IF;
      IF 'RISK_MANAGEMENT_MIM_LF.ABSORBED_DOSE_MEASURE' IN TYPEOF(m.value_component) THEN
        IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(2.000000, 0.000000,  - 2.000000, 0.000000, 0.000000, 0.000000, 0.000000) THEN
          RETURN (FALSE);
        END_IF;
      END_IF;
      IF 'RISK_MANAGEMENT_MIM_LF.DOSE_EQUIVALENT_MEASURE' IN TYPEOF(m.value_component) THEN
        IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(2.000000, 0.000000,  - 2.000000, 0.000000, 0.000000, 0.000000, 0.000000) THEN
          RETURN (FALSE);
        END_IF;
      END_IF;
      RETURN (TRUE);
      
END_FUNCTION;

END_SCHEMA;  -- Risk_management_mim_LF


© ISO 2011 — All rights reserved