| Application module: System structure | ISO/TS 10303-1450:2011-10(E) © ISO |
(*
ISO TC184/SC4/WG3 N2775 - ISO/TS 10303-1450 System structure - EXPRESS MIM Long form
Supersedes
ISO TC184/SC4/WG3 N2708
*)
SCHEMA System_structure_mim_LF;
CONSTANT
dummy_gri : geometric_representation_item := representation_item('')||geometric_representation_item();
END_CONSTANT;
TYPE absorbed_dose_measure =
REAL;
END_TYPE;
TYPE acceleration_measure =
REAL;
END_TYPE;
TYPE action_items =
SELECT
(action_directive,
action_method,
action_property,
applied_action_assignment,
approval,
certification,
configuration_effectivity,
configuration_item,
contract,
contract_relationship,
descriptive_representation_item,
document_file,
effectivity,
event_occurrence,
executed_action,
general_property,
interface_connection,
interface_connector_occurrence,
measure_representation_item,
organization,
organizational_project,
person,
person_and_organization,
product,
product_concept,
product_definition,
product_definition_formation,
product_definition_formation_relationship,
product_definition_relationship,
property_definition,
versioned_action_request);
END_TYPE;
TYPE action_method_items =
SELECT
(action_directive,
action_method,
action_method_relationship,
action_property,
action_resource,
action_resource_relationship,
applied_action_assignment,
applied_action_method_assignment,
applied_approval_assignment,
applied_certification_assignment,
applied_contract_assignment,
applied_document_reference,
applied_document_usage_constraint_assignment,
applied_event_occurrence_assignment,
applied_location_assignment,
applied_organizational_project_assignment,
applied_security_classification_assignment,
approval,
breakdown_element_group_assignment,
date_and_time_assignment,
date_assignment,
effectivity,
executed_action,
interface_connection,
product_definition_group_assignment,
product_definition_relationship,
product_group,
product_group_membership,
product_group_relationship,
property_definition,
versioned_action_request);
END_TYPE;
TYPE action_request_item =
SELECT
(action_method,
action_property,
applied_approval_assignment,
applied_certification_assignment,
applied_document_reference,
applied_document_usage_constraint_assignment,
applied_event_occurrence_assignment,
applied_organizational_project_assignment,
configuration_item,
contract,
contract_relationship,
document_file,
executed_action,
interface_connection,
interface_connector_occurrence,
interface_definition_connection,
organization,
person,
person_and_organization,
product,
product_definition,
product_definition_formation,
product_definition_relationship,
property_definition,
versioned_action_request);
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,
action_directive,
action_method,
action_property,
action_request_solution,
alternate_product_relationship,
applied_action_assignment,
applied_action_request_assignment,
applied_classification_assignment,
applied_contract_assignment,
applied_document_reference,
applied_document_usage_constraint_assignment,
applied_effectivity_assignment,
applied_event_occurrence_assignment,
applied_identification_assignment,
applied_organization_assignment,
applied_organizational_project_assignment,
applied_person_and_organization_assignment,
applied_security_classification_assignment,
assembly_component_usage_substitute,
breakdown_element_group_assignment,
certification,
configuration_effectivity,
configuration_item,
contract,
contract_relationship,
date_and_time_assignment,
date_assignment,
effectivity,
event_occurrence,
general_property,
general_property_relationship,
in_zone,
interface_connection,
interface_connector_occurrence,
organization_relationship,
organizational_address,
organizational_project,
person_and_organization,
product,
product_concept,
product_definition,
product_definition_context,
product_definition_formation,
product_definition_formation_relationship,
product_definition_group_assignment,
product_definition_relationship,
product_design_to_individual,
property_definition,
security_classification,
versioned_action_request);
END_TYPE;
TYPE area_measure =
REAL;
END_TYPE;
TYPE attribute_language_item =
SELECT
(action_directive,
action_method,
action_property,
action_relationship,
action_request_solution,
alternate_product_relationship,
applied_action_assignment,
applied_document_reference,
applied_document_usage_constraint_assignment,
applied_external_identification_assignment,
applied_identification_assignment,
applied_organizational_project_assignment,
approval,
approval_relationship,
approval_status,
assembly_component_usage_substitute,
attribute_value_assignment,
breakdown_element_group_assignment,
certification,
certification_type,
configuration_item,
contract,
date_and_time_assignment,
date_assignment,
date_role,
date_time_role,
document_relationship,
document_usage_role,
event_occurrence,
executed_action,
external_source,
general_property,
general_property_relationship,
identification_role,
interface_connection,
interface_connector_occurrence,
multi_language_attribute_assignment,
object_role,
organization_relationship,
organizational_project,
organizational_project_relationship,
organizational_project_role,
person_and_organization,
product,
product_definition,
product_definition_formation,
product_definition_group_assignment,
product_definition_relationship,
property_definition,
representation_item,
versioned_action_request);
END_TYPE;
TYPE attribute_select =
SELECT
(product_group_context,
product_group_purpose);
END_TYPE;
TYPE attribute_type =
SELECT
(label,
text);
END_TYPE;
TYPE capacitance_measure =
REAL;
END_TYPE;
TYPE celsius_temperature_measure =
REAL;
END_TYPE;
TYPE certification_item =
SELECT
(action_method,
alternate_product_relationship,
approval_person_organization,
assembly_component_usage_substitute,
configuration_item,
executed_action,
interface_connection,
organizational_project,
product,
product_definition_formation,
product_definition_formation_relationship,
product_definition_relationship,
property_definition);
END_TYPE;
TYPE chained_representation_link =
SELECT
(mapped_item,
representation_context,
representation_relationship);
END_TYPE;
TYPE characterized_action_definition =
SELECT
(action,
action_method,
action_method_relationship,
action_relationship);
END_TYPE;
TYPE characterized_definition =
SELECT
(characterized_object,
characterized_product_definition,
shape_definition);
END_TYPE;
TYPE characterized_product_definition =
SELECT
(product_definition,
product_definition_relationship);
END_TYPE;
TYPE characterized_resource_definition =
SELECT
(action_resource,
action_resource_relationship);
END_TYPE;
TYPE classification_item =
SELECT
(action,
action_directive,
action_method,
action_method_relationship,
action_property,
action_property_representation,
action_relationship,
action_request_solution,
action_request_status,
action_resource,
action_resource_relationship,
action_status,
address,
alternate_product_relationship,
applied_action_assignment,
applied_action_method_assignment,
applied_action_request_assignment,
applied_approval_assignment,
applied_certification_assignment,
applied_contract_assignment,
applied_date_and_time_assignment,
applied_date_assignment,
applied_document_reference,
applied_document_usage_constraint_assignment,
applied_effectivity_assignment,
applied_event_occurrence_assignment,
applied_external_identification_assignment,
applied_identification_assignment,
applied_organization_assignment,
applied_organizational_project_assignment,
applied_person_and_organization_assignment,
applied_security_classification_assignment,
approval,
approval_person_organization,
approval_relationship,
approval_status,
assembly_component_usage_substitute,
attribute_language_assignment,
breakdown_element_group_assignment,
calendar_date,
certification,
characterized_object,
class,
collection_assignment,
collection_membership,
configuration_design,
configuration_item,
context_dependent_unit,
contract,
conversion_based_unit,
date_and_time,
date_and_time_assignment,
date_assignment,
derived_unit,
descriptive_representation_item,
directed_action,
document_file,
document_relationship,
effectivity,
effectivity_relationship,
environment_assignment,
environment_definition,
environment_definition_version,
environment_definition_view,
environment_view_definition_relationship,
event_occurrence,
event_occurrence_relationship,
executed_action,
external_class_library,
general_property,
general_property_relationship,
group,
identification_assignment,
language,
local_time,
location,
location_relationship,
measure_representation_item,
measure_with_unit,
multi_language_attribute_assignment,
named_unit,
observed_environment,
observed_environment_assignment,
observed_environment_version,
observed_environment_view_definition_relationship,
organization,
organization_relationship,
organizational_address,
organizational_project,
organizational_project_relationship,
person,
person_and_organization,
person_and_organization_address,
product,
product_concept,
product_concept_context,
product_definition,
product_definition_context,
product_definition_formation,
product_definition_formation_relationship,
product_definition_group_assignment,
product_definition_relationship,
product_design_to_individual,
product_group,
product_group_relationship,
property_definition,
property_definition_representation,
representation,
representation_context,
representation_item,
security_classification,
time_interval_relationship,
uncertainty_measure_with_unit,
versioned_action_request);
END_TYPE;
TYPE compound_item_definition =
SELECT
(list_representation_item,
set_representation_item);
END_TYPE;
TYPE conductance_measure =
REAL;
END_TYPE;
TYPE configuration_design_item =
SELECT
(product_definition,
product_definition_formation);
END_TYPE;
TYPE context_dependent_measure =
REAL;
END_TYPE;
TYPE contract_item =
SELECT
(action_method,
organization_item,
person_and_organization_item,
product_definition_formation);
END_TYPE;
TYPE count_measure =
NUMBER;
END_TYPE;
TYPE date_and_time_item =
SELECT
(action,
action_directive,
action_method,
action_property,
action_property_representation,
action_relationship,
action_request_solution,
alternate_product_relationship,
applied_action_assignment,
applied_action_request_assignment,
applied_certification_assignment,
applied_contract_assignment,
applied_document_reference,
applied_document_usage_constraint_assignment,
applied_effectivity_assignment,
applied_event_occurrence_assignment,
applied_identification_assignment,
applied_organization_assignment,
applied_organizational_project_assignment,
applied_person_and_organization_assignment,
applied_security_classification_assignment,
approval,
approval_person_organization,
assembly_component_usage_substitute,
breakdown_element_group_assignment,
certification,
configuration_item,
contract,
contract_relationship,
date_and_time_assignment,
date_assignment,
document_file,
effectivity,
event_occurrence,
executed_action,
general_property,
general_property_relationship,
interface_connection,
interface_connector_occurrence,
organization_relationship,
organizational_address,
organizational_project,
person,
person_and_organization,
product,
product_concept,
product_definition,
product_definition_context,
product_definition_formation,
product_definition_formation_relationship,
product_definition_group_assignment,
product_definition_relationship,
product_design_to_individual,
property_definition,
property_definition_representation,
representation,
security_classification,
versioned_action_request);
END_TYPE;
TYPE date_item =
SELECT
(action,
action_directive,
action_method,
action_property,
action_property_representation,
action_relationship,
action_request_solution,
alternate_product_relationship,
applied_action_assignment,
applied_action_request_assignment,
applied_certification_assignment,
applied_contract_assignment,
applied_document_reference,
applied_document_usage_constraint_assignment,
applied_effectivity_assignment,
applied_event_occurrence_assignment,
applied_identification_assignment,
applied_organization_assignment,
applied_organizational_project_assignment,
applied_person_and_organization_assignment,
applied_security_classification_assignment,
approval,
approval_person_organization,
assembly_component_usage_substitute,
breakdown_element_group_assignment,
certification,
configuration_item,
contract,
contract_relationship,
date_and_time_assignment,
date_assignment,
document_file,
effectivity,
event_occurrence,
general_property,
general_property_relationship,
interface_connection,
interface_connector_occurrence,
organization_relationship,
organizational_address,
organizational_project,
person,
person_and_organization,
product,
product_concept,
product_definition,
product_definition_context,
product_definition_formation,
product_definition_formation_relationship,
product_definition_group_assignment,
product_definition_relationship,
product_design_to_individual,
property_definition,
property_definition_representation,
representation,
security_classification,
versioned_action_request);
END_TYPE;
TYPE date_time_or_event_occurrence =
SELECT
(date_time_select,
event_occurrence);
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
(action_request_solution,
application_context,
approval_role,
configuration_design,
context_dependent_shape_representation,
date_role,
date_time_role,
effectivity,
external_source,
organization_role,
person_and_organization,
person_and_organization_role,
person_role,
property_definition_representation,
representation,
time_role);
END_TYPE;
TYPE descriptive_measure =
STRING;
END_TYPE;
TYPE dimension_count =
INTEGER
;
WHERE
WR1: SELF > 0;
END_TYPE;
TYPE document_reference_item =
SELECT
(action_directive,
action_method,
action_property,
action_property_representation,
action_relationship,
action_request_solution,
alternate_product_relationship,
applied_action_request_assignment,
applied_certification_assignment,
applied_contract_assignment,
applied_document_reference,
applied_document_usage_constraint_assignment,
applied_effectivity_assignment,
applied_event_occurrence_assignment,
applied_identification_assignment,
applied_organization_assignment,
applied_organizational_project_assignment,
applied_person_and_organization_assignment,
approval,
approval_person_organization,
assembly_component_usage_substitute,
breakdown_element_group_assignment,
certification,
configuration_item,
contract,
contract_relationship,
date_and_time_assignment,
date_assignment,
document_file,
effectivity,
executed_action,
general_property,
general_property_relationship,
interface_connection,
interface_connector_occurrence,
organization_relationship,
organizational_address,
organizational_project,
person,
person_and_organization,
product,
product_concept,
product_definition,
product_definition_context,
product_definition_formation,
product_definition_formation_relationship,
product_definition_group_assignment,
product_definition_relationship,
product_design_to_individual,
property_definition,
property_definition_representation,
representation,
shape_aspect,
shape_aspect_relationship,
versioned_action_request);
END_TYPE;
TYPE dose_equivalent_measure =
REAL;
END_TYPE;
TYPE effectivity_item =
SELECT
(action_directive,
action_method,
action_property,
action_property_representation,
action_request_solution,
alternate_product_relationship,
applied_action_assignment,
applied_approval_assignment,
applied_certification_assignment,
applied_classification_assignment,
applied_contract_assignment,
applied_document_reference,
applied_document_usage_constraint_assignment,
applied_effectivity_assignment,
applied_event_occurrence_assignment,
applied_external_identification_assignment,
applied_identification_assignment,
applied_organization_assignment,
applied_organizational_project_assignment,
applied_person_and_organization_assignment,
applied_security_classification_assignment,
assembly_component_usage_substitute,
breakdown_element_group_assignment,
configuration_item,
date_and_time_assignment,
date_assignment,
document_file,
document_relationship,
event_occurrence,
executed_action,
interface_connection,
interface_connector_occurrence,
multi_language_attribute_assignment,
organization_relationship,
organizational_address,
person_and_organization,
product,
product_definition,
product_definition_formation,
product_definition_formation_relationship,
product_definition_group_assignment,
product_definition_relationship,
product_design_to_individual,
product_group,
product_group_membership,
product_group_relationship,
property_definition,
property_definition_representation);
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 event_occurrence_item =
SELECT
(approval,
certification,
contract,
contract_relationship,
executed_action,
organizational_project,
product,
versioned_action_request);
END_TYPE;
TYPE external_identification_item =
SELECT
(document_file,
organizational_project,
person_and_organization,
product,
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 geometric_item_specific_usage_select =
SELECT
(shape_aspect,
shape_aspect_relationship);
END_TYPE;
TYPE groupable_item =
SELECT
(action_directive,
action_method,
action_method_relationship,
action_property,
action_property_representation,
action_relationship,
action_request_solution,
action_request_status,
action_resource,
action_resource_relationship,
action_status,
address,
alternate_product_relationship,
applied_action_assignment,
applied_action_method_assignment,
applied_action_request_assignment,
applied_approval_assignment,
applied_certification_assignment,
applied_classification_assignment,
applied_contract_assignment,
applied_document_reference,
applied_document_usage_constraint_assignment,
applied_effectivity_assignment,
applied_event_occurrence_assignment,
applied_external_identification_assignment,
applied_identification_assignment,
applied_location_assignment,
applied_location_representation_assignment,
applied_name_assignment,
applied_organization_assignment,
applied_organizational_project_assignment,
applied_person_and_organization_assignment,
applied_security_classification_assignment,
approval,
approval_person_organization,
approval_relationship,
approval_status,
assembly_component_usage,
assembly_component_usage_substitute,
attribute_language_assignment,
breakdown_element_group_assignment,
calendar_date,
certification,
characterized_object,
class,
collection_assignment,
collection_membership,
configuration_design,
configuration_item,
configuration_item_relationship,
context_dependent_shape_representation,
contract,
contract_relationship,
coordinated_universal_time_offset,
date_and_time,
date_and_time_assignment,
date_assignment,
derived_unit,
derived_unit_element,
document_relationship,
effectivity,
effectivity_relationship,
environment_assignment,
event_occurrence,
event_occurrence_relationship,
executed_action,
external_source,
general_property,
general_property_relationship,
geometric_item_specific_usage,
identification_assignment_relationship,
in_zone,
interface_connection,
interface_connector_definition,
interface_connector_occurrence,
interface_definition_connection,
interface_definition_for,
item_defined_transformation,
language,
local_time,
location,
location_relationship,
measure_qualification,
measure_with_unit,
multi_language_attribute_assignment,
named_unit,
observed_environment_assignment,
organization,
organization_relationship,
organizational_project,
organizational_project_relationship,
person,
person_and_organization,
precision_qualifier,
product,
product_concept,
product_concept_context,
product_definition,
product_definition_context,
product_definition_formation,
product_definition_formation_relationship,
product_definition_group_assignment,
product_definition_relationship,
product_group,
product_group_relationship,
product_relationship,
property_definition,
property_definition_representation,
representation,
representation_context,
representation_item,
representation_relationship,
resource_property,
resource_property_representation,
same_as_external_item_assignment,
security_classification,
shape_aspect,
shape_aspect_relationship,
time_interval,
time_interval_relationship,
type_qualifier,
uncertainty_qualifier,
versioned_action_request)
;
WHERE
WR1: NOT ('SYSTEM_STRUCTURE_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,
organizational_project,
product_category,
property_definition,
representation,
shape_aspect,
shape_aspect_relationship);
END_TYPE;
TYPE identification_item =
SELECT
(action_directive,
action_method,
action_property,
address,
applied_action_assignment,
applied_action_request_assignment,
applied_document_reference,
applied_document_usage_constraint_assignment,
applied_external_identification_assignment,
applied_organization_assignment,
applied_person_and_organization_assignment,
applied_security_classification_assignment,
approval,
approval_status,
assembly_component_usage_substitute,
certification,
class,
configuration_item,
contract,
contract_relationship,
descriptive_representation_item,
document_file,
effectivity,
environment_assignment,
environment_definition,
environment_definition_version,
environment_view_definition_relationship,
event_occurrence,
executed_action,
external_class_library,
general_property,
general_property_relationship,
interface_connection,
interface_connector_occurrence,
measure_representation_item,
observed_environment,
observed_environment_assignment,
observed_environment_version,
observed_environment_view_definition_relationship,
organization,
organizational_project,
person,
person_and_organization,
product,
product_concept,
product_concept_context,
product_definition,
product_definition_context,
product_definition_formation,
product_definition_relationship,
property_definition,
representation,
security_classification,
security_classification_level,
shape_aspect_relationship,
shape_representation,
versioned_action_request);
END_TYPE;
TYPE identifier =
STRING;
END_TYPE;
TYPE illuminance_measure =
REAL;
END_TYPE;
TYPE inductance_measure =
REAL;
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 location_item =
SELECT
(action_request_solution,
applied_action_assignment,
document_file,
event_occurrence,
executed_action,
interface_connection,
interface_connector_occurrence,
organization,
organizational_project,
person,
person_and_organization,
product,
product_definition,
product_definition_formation,
product_definition_relationship,
product_group);
END_TYPE;
TYPE location_representation_item =
SELECT
(organizational_address,
person_and_organization_address,
product,
product_definition_formation);
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 multi_language_attribute_item =
SELECT
(action_directive,
action_method,
action_property,
action_relationship,
action_request_solution,
alternate_product_relationship,
applied_action_assignment,
applied_document_reference,
applied_document_usage_constraint_assignment,
applied_external_identification_assignment,
applied_identification_assignment,
applied_organizational_project_assignment,
approval,
approval_relationship,
approval_status,
assembly_component_usage_substitute,
breakdown_element_group_assignment,
certification,
certification_type,
configuration_item,
contract,
date_and_time_assignment,
date_assignment,
date_role,
date_time_role,
document_relationship,
document_usage_role,
event_occurrence,
executed_action,
external_source,
general_property,
general_property_relationship,
identification_role,
interface_connection,
interface_connector_occurrence,
object_role,
organization_relationship,
organizational_project,
organizational_project_relationship,
organizational_project_role,
person_and_organization,
product,
product_definition,
product_definition_formation,
product_definition_group_assignment,
product_definition_relationship,
property_definition,
representation_item,
versioned_action_request);
END_TYPE;
TYPE name_attribute_select =
SELECT
(action_request_solution,
address,
configuration_design,
context_dependent_shape_representation,
derived_unit,
effectivity,
person_and_organization,
product_definition,
property_definition_representation);
END_TYPE;
TYPE name_item =
SELECT
(applied_action_method_assignment,
assembly_component_usage,
breakdown_element_group_assignment,
event_occurrence,
external_class_library,
product,
product_definition,
product_definition_group_assignment,
product_definition_usage);
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,
action_directive,
action_property,
action_property_representation,
address,
alternate_product_relationship,
applied_action_assignment,
applied_action_request_assignment,
applied_document_reference,
applied_document_usage_constraint_assignment,
applied_identification_assignment,
applied_organization_assignment,
applied_person_and_organization_assignment,
applied_security_classification_assignment,
approval,
approval_status,
assembly_component_usage_substitute,
breakdown_element_group_assignment,
breakdown_element_realization,
certification,
configuration_item,
contract,
document_file,
effectivity,
event_occurrence,
executed_action,
interface_connection,
interface_connector_occurrence,
organization,
organizational_project,
person,
person_and_organization,
product,
product_definition,
product_definition_formation,
product_definition_formation_relationship,
product_definition_group_assignment,
product_definition_relationship,
property_definition,
property_definition_representation,
security_classification,
shape_aspect_relationship,
versioned_action_request);
END_TYPE;
TYPE parameter_value =
REAL;
END_TYPE;
TYPE person_and_organization_item =
SELECT
(action,
action_directive,
action_property,
action_property_representation,
address,
alternate_product_relationship,
applied_action_assignment,
applied_action_request_assignment,
applied_document_reference,
applied_document_usage_constraint_assignment,
applied_identification_assignment,
applied_organization_assignment,
applied_person_and_organization_assignment,
applied_security_classification_assignment,
approval,
approval_status,
assembly_component_usage_substitute,
breakdown_element_group_assignment,
breakdown_element_realization,
certification,
configuration_item,
contract,
document_file,
effectivity,
event_occurrence,
executed_action,
interface_connection,
interface_connector_occurrence,
organization,
organizational_project,
person,
person_and_organization,
product,
product_definition,
product_definition_formation,
product_definition_formation_relationship,
product_definition_group_assignment,
product_definition_relationship,
property_definition,
property_definition_representation,
security_classification,
shape_aspect_relationship,
versioned_action_request);
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_definition_or_breakdown_element_usage =
SELECT
(product_definition,
product_definition_usage);
END_TYPE;
TYPE product_definition_or_product_definition_relationship =
SELECT
(interface_connector_occurrence,
product_definition,
product_definition_usage);
END_TYPE;
TYPE product_or_formation_or_definition =
SELECT
(product,
product_definition,
product_definition_formation);
END_TYPE;
TYPE product_select =
SELECT
(action_method,
environment_definition_view,
executed_action,
location,
organization,
person,
product,
product_concept,
product_definition_formation,
product_group);
END_TYPE;
TYPE project_item =
SELECT
(action_method,
alternate_product_relationship,
applied_action_assignment,
assembly_component_usage_substitute,
configuration_item,
executed_action,
general_property,
interface_connection,
product,
product_concept,
product_definition,
product_definition_relationship,
representation);
END_TYPE;
TYPE radioactivity_measure =
REAL;
END_TYPE;
TYPE ratio_measure =
REAL;
END_TYPE;
TYPE represented_definition =
SELECT
(general_property,
property_definition,
shape_aspect,
shape_aspect_relationship);
END_TYPE;
TYPE resistance_measure =
REAL;
END_TYPE;
TYPE role_select =
SELECT
(action_assignment,
action_request_assignment,
approval_assignment,
approval_date_time,
certification_assignment,
contract_assignment,
document_reference,
effectivity_assignment,
external_referent_assignment,
group_assignment,
name_assignment,
security_classification_assignment);
END_TYPE;
TYPE same_as_item =
SELECT
(product,
product_definition,
product_definition_formation);
END_TYPE;
TYPE second_in_minute =
REAL
;
WHERE
WR1: {0 <= SELF <= 60.000000};
END_TYPE;
TYPE security_classification_item =
SELECT
(action_directive,
action_method,
action_property,
action_request_solution,
action_request_status,
alternate_product_relationship,
applied_action_assignment,
applied_action_request_assignment,
applied_document_reference,
applied_document_usage_constraint_assignment,
assembly_component_usage,
assembly_component_usage_substitute,
breakdown_element_group_assignment,
configuration_item,
document_file,
event_occurrence,
executed_action,
in_zone,
interface_connection,
interface_connector_occurrence,
interface_definition_connection,
interface_definition_for,
organizational_project_relationship,
product,
product_definition,
product_definition_formation,
product_definition_group_assignment,
product_definition_usage,
product_design_to_individual,
product_design_version_to_individual,
property_definition,
versioned_action_request);
END_TYPE;
TYPE set_representation_item =
SET[1:?] OF representation_item;
END_TYPE;
TYPE shape_definition =
SELECT
(product_definition_shape,
shape_aspect,
shape_aspect_relationship);
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 supported_item =
SELECT
(action,
action_directive,
action_method);
END_TYPE;
TYPE text =
STRING;
END_TYPE;
TYPE thermodynamic_temperature_measure =
REAL;
END_TYPE;
TYPE time_interval_item =
SELECT
(action,
action_directive,
action_request_solution,
applied_action_request_assignment,
directed_action,
versioned_action_request);
END_TYPE;
TYPE time_measure =
REAL;
END_TYPE;
TYPE transformation =
SELECT
(functionally_defined_transformation,
item_defined_transformation);
END_TYPE;
TYPE unit =
SELECT
(derived_unit,
named_unit);
END_TYPE;
TYPE value_qualifier =
SELECT
(precision_qualifier,
type_qualifier,
uncertainty_qualifier);
END_TYPE;
TYPE vector_or_direction =
SELECT
(direction,
vector);
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: 'SYSTEM_STRUCTURE_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: 'SYSTEM_STRUCTURE_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, 'SYSTEM_STRUCTURE_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, 'SYSTEM_STRUCTURE_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
END_ENTITY;
ENTITY action_directive;
name : label;
description :
OPTIONAL
text;
analysis : text;
comment : text;
requests : SET[1:?] OF versioned_action_request;
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_request_assignment
ABSTRACT SUPERTYPE
;
assigned_action_request : versioned_action_request;
DERIVE
role : object_role := get_role(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF, 'SYSTEM_STRUCTURE_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
END_ENTITY;
ENTITY action_request_solution;
method : action_method;
request : versioned_action_request;
DERIVE
description : text := get_description_value(SELF);
name : label := get_name_value(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF, 'SYSTEM_STRUCTURE_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
WR2: SIZEOF(USEDIN(SELF, 'SYSTEM_STRUCTURE_MIM_LF.' + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1;
END_ENTITY;
ENTITY action_request_status;
status : label;
assigned_request : versioned_action_request;
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 alternate_product_relationship;
name : label;
definition :
OPTIONAL
text;
alternate : product;
base : product;
basis : text;
UNIQUE
UR1: alternate, base;
WHERE
WR1: alternate :<>: base;
END_ENTITY;
ENTITY amount_of_substance_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1: 'SYSTEM_STRUCTURE_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, 'SYSTEM_STRUCTURE_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
WR2: SIZEOF(USEDIN(SELF, 'SYSTEM_STRUCTURE_MIM_LF.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1;
END_ENTITY;
ENTITY application_context_element
SUPERTYPE OF
(ONEOF (library_context,
product_concept_context,
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_action_request_assignment
SUBTYPE OF (action_request_assignment);
items : SET[1:?] OF action_request_item;
END_ENTITY;
ENTITY applied_approval_assignment
SUBTYPE OF (approval_assignment);
items : SET[1:?] OF approval_item;
END_ENTITY;
ENTITY applied_certification_assignment
SUBTYPE OF (certification_assignment);
items : SET[1:?] OF certification_item;
END_ENTITY;
ENTITY applied_classification_assignment
SUBTYPE OF (classification_assignment);
items : SET[1:?] OF classification_item;
END_ENTITY;
ENTITY applied_contract_assignment
SUBTYPE OF (contract_assignment);
items : SET[1:?] OF contract_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_effectivity_assignment
SUBTYPE OF (effectivity_assignment);
items : SET[1:?] OF effectivity_item;
END_ENTITY;
ENTITY applied_event_occurrence_assignment
SUBTYPE OF (event_occurrence_assignment);
items : SET[1:?] OF event_occurrence_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_location_assignment
SUBTYPE OF (location_assignment);
items : SET[1:?] OF location_item;
END_ENTITY;
ENTITY applied_location_representation_assignment
SUBTYPE OF (location_representation_assignment);
items : SET[1:?] OF location_representation_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_organizational_project_assignment
SUBTYPE OF (organizational_project_assignment);
items : SET[1:?] OF project_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_security_classification_assignment
SUBTYPE OF (security_classification_assignment);
items : SET[1:?] OF security_classification_item;
END_ENTITY;
ENTITY applied_time_interval_assignment
SUBTYPE OF (time_interval_assignment);
items : SET[0:?] OF time_interval_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, 'SYSTEM_STRUCTURE_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, 'SYSTEM_STRUCTURE_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, 'SYSTEM_STRUCTURE_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: 'SYSTEM_STRUCTURE_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 assembly_component_usage
SUPERTYPE OF
(ONEOF (next_assembly_usage_occurrence,
specified_higher_usage_occurrence,
promissory_usage_occurrence))
SUBTYPE OF (product_definition_usage);
reference_designator :
OPTIONAL
identifier;
END_ENTITY;
ENTITY assembly_component_usage_substitute;
name : label;
definition :
OPTIONAL
text;
base : assembly_component_usage;
substitute : assembly_component_usage;
UNIQUE
UR1: base, substitute;
WHERE
WR1: base.relating_product_definition :=: substitute.relating_product_definition;
WR2: base :<>: substitute;
END_ENTITY;
ENTITY attribute_classification_assignment
ABSTRACT SUPERTYPE
;
assigned_class : group;
attribute_name : label;
role : classification_role;
END_ENTITY;
ENTITY attribute_language_assignment
SUBTYPE OF (attribute_classification_assignment);
SELF\attribute_classification_assignment.assigned_class : language;
items : SET[1:?] OF attribute_language_item;
WHERE
WR1: SELF\attribute_classification_assignment.role.name IN ['primary', 'translated'];
WR2: SELF\attribute_classification_assignment.attribute_name <> '';
END_ENTITY;
ENTITY attribute_value_assignment
ABSTRACT SUPERTYPE
;
attribute_name : label;
attribute_value : attribute_type;
role : attribute_value_role;
END_ENTITY;
ENTITY attribute_value_role;
name : label;
description :
OPTIONAL
text;
END_ENTITY;
ENTITY axis1_placement
SUBTYPE OF (placement);
axis :
OPTIONAL
direction;
DERIVE
z : direction := NVL(normalise(axis), dummy_gri||direction([0.000000, 0.000000, 1.000000]));
WHERE
WR1: SELF\geometric_representation_item.dim = 3;
END_ENTITY;
ENTITY axis2_placement_2d
SUBTYPE OF (placement);
ref_direction :
OPTIONAL
direction;
DERIVE
p : LIST[2:2] OF direction := build_2axes(ref_direction);
WHERE
WR1: SELF\geometric_representation_item.dim = 2;
END_ENTITY;
ENTITY axis2_placement_3d
SUBTYPE OF (placement);
axis :
OPTIONAL
direction;
ref_direction :
OPTIONAL
direction;
DERIVE
p : LIST[3:3] OF direction := build_axes(axis, ref_direction);
WHERE
WR1: SELF\placement.location.dim = 3;
WR2: (NOT (EXISTS(axis))) OR (axis.dim = 3);
WR3: (NOT (EXISTS(ref_direction))) OR (ref_direction.dim = 3);
WR4: (NOT (EXISTS(axis))) OR (NOT (EXISTS(ref_direction))) OR (cross_product(axis, ref_direction).magnitude > 0.000000);
END_ENTITY;
ENTITY breakdown_context
SUBTYPE OF (product_definition_relationship);
END_ENTITY;
ENTITY breakdown_element_group_assignment
SUBTYPE OF (group_assignment);
SELF\group_assignment.assigned_group : product_definition_element_relationship;
items : SET[1:1] OF product_definition_or_breakdown_element_usage;
END_ENTITY;
ENTITY breakdown_element_realization
SUBTYPE OF (characterized_object, product_definition_element_relationship);
END_ENTITY;
ENTITY breakdown_element_usage
SUBTYPE OF (product_definition_relationship);
END_ENTITY;
ENTITY breakdown_of
SUBTYPE OF (product_definition_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: 'SYSTEM_STRUCTURE_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 cartesian_point
SUBTYPE OF (point);
coordinates : LIST[1:3] OF length_measure;
END_ENTITY;
ENTITY cartesian_transformation_operator
SUPERTYPE OF
(ONEOF (cartesian_transformation_operator_2d,
cartesian_transformation_operator_3d))
SUBTYPE OF (functionally_defined_transformation, geometric_representation_item);
axis1 :
OPTIONAL
direction;
axis2 :
OPTIONAL
direction;
local_origin : cartesian_point;
scale :
OPTIONAL
REAL;
DERIVE
scl : REAL := NVL(scale, 1.000000);
WHERE
WR1: scl > 0.000000;
END_ENTITY;
ENTITY cartesian_transformation_operator_2d
SUBTYPE OF (cartesian_transformation_operator);
DERIVE
u : LIST[2:2] OF direction := base_axis(2, SELF\cartesian_transformation_operator.axis1, SELF\cartesian_transformation_operator.axis2, ?);
WHERE
WR1: SELF\geometric_representation_item.dim = 2;
END_ENTITY;
ENTITY cartesian_transformation_operator_3d
SUBTYPE OF (cartesian_transformation_operator);
axis3 :
OPTIONAL
direction;
DERIVE
u : LIST[3:3] OF direction := base_axis(3, SELF\cartesian_transformation_operator.axis1, SELF\cartesian_transformation_operator.axis2, axis3);
WHERE
WR1: SELF\geometric_representation_item.dim = 3;
END_ENTITY;
ENTITY celsius_temperature_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1: 'SYSTEM_STRUCTURE_MIM_LF.THERMODYNAMIC_TEMPERATURE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY;
ENTITY certification;
name : label;
purpose : text;
kind : certification_type;
END_ENTITY;
ENTITY certification_assignment
ABSTRACT SUPERTYPE
;
assigned_certification : certification;
DERIVE
role : object_role := get_role(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF, 'SYSTEM_STRUCTURE_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
END_ENTITY;
ENTITY certification_type;
description : label;
END_ENTITY;
ENTITY chain_based_geometric_item_specific_usage
SUBTYPE OF (chain_based_item_identified_representation_usage, geometric_item_specific_usage);
END_ENTITY;
ENTITY chain_based_item_identified_representation_usage
SUBTYPE OF (item_identified_representation_usage);
nodes : LIST[2:?] OF
UNIQUE
representation;
undirected_link : LIST[1:?] OF
UNIQUE
chained_representation_link;
DERIVE
root : representation := nodes[1];
SELF\item_identified_representation_usage.used_representation : representation := nodes[HIINDEX(nodes)];
directed_link : LIST[1:?] OF representation_relationship := get_directed_link(nodes, undirected_link);
leaf : representation := SELF\item_identified_representation_usage.used_representation;
WHERE
WR1: root :=: directed_link[1]\representation_relationship.rep_1;
WR2: leaf :=: directed_link[HIINDEX(undirected_link)]\representation_relationship.rep_2;
WR3: SIZEOF(nodes) :=: SIZEOF(undirected_link) + 1;
WR4: (SIZEOF(QUERY(directed_link_element <* directed_link | (root :=: directed_link_element\representation_relationship.rep_1)))
+ SIZEOF(QUERY(directed_link_element <* directed_link | (root :=: directed_link_element\representation_relationship.rep_2))))
= 1;
WR5: (SIZEOF(QUERY(directed_link_element <* directed_link | (leaf :=: directed_link_element\representation_relationship.rep_1)))
+ SIZEOF(QUERY(directed_link_element <* directed_link | (leaf :=: directed_link_element\representation_relationship.rep_2))))
= 1;
WR6: (SIZEOF(QUERY(directed_link_element <* directed_link | (root :<>: directed_link_element\representation_relationship.rep_1)))
+ SIZEOF(QUERY(directed_link_element <* directed_link | (root :<>: directed_link_element\representation_relationship.rep_2)))
+ SIZEOF(QUERY(directed_link_element <* directed_link | (leaf :<>: directed_link_element\representation_relationship.rep_1)))
+ SIZEOF(QUERY(directed_link_element <* directed_link | (leaf :<>: directed_link_element\representation_relationship.rep_2))))
= 2;
WR7: NOT ('SYSTEM_STRUCTURE_MIM_LF.MAPPED_ITEM' IN TYPEOF(undirected_link[1])) OR (root IN using_representations(undirected_link[1]));
WR8: SIZEOF(undirected_link) = SIZEOF(directed_link);
END_ENTITY;
ENTITY characterized_location_object
SUBTYPE OF (characterized_object, location);
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 conditional_effectivity
SUBTYPE OF (condition, effectivity);
END_ENTITY;
ENTITY conductance_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1: 'SYSTEM_STRUCTURE_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 configuration_design;
configuration : configuration_item;
design : configuration_design_item;
DERIVE
name : label := get_name_value(SELF);
description : text := get_description_value(SELF);
UNIQUE
UR1: configuration, design;
WHERE
WR1: SIZEOF(USEDIN(SELF, 'SYSTEM_STRUCTURE_MIM_LF.' + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1;
WR2: SIZEOF(USEDIN(SELF, 'SYSTEM_STRUCTURE_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
END_ENTITY;
ENTITY configuration_effectivity
SUBTYPE OF (product_definition_effectivity);
configuration : configuration_design;
UNIQUE
UR1: configuration,
SELF\product_definition_effectivity.usage,
SELF\effectivity.id;
WHERE
WR1: 'SYSTEM_STRUCTURE_MIM_LF.PRODUCT_DEFINITION_USAGE' IN TYPEOF(SELF\product_definition_effectivity.usage);
END_ENTITY;
ENTITY configuration_item;
id : identifier;
name : label;
description :
OPTIONAL
text;
item_concept : product_concept;
purpose :
OPTIONAL
label;
END_ENTITY;
ENTITY configuration_item_hierarchical_relationship
SUBTYPE OF (configuration_item_relationship);
END_ENTITY;
ENTITY configuration_item_relationship;
name : label;
description :
OPTIONAL
text;
relating_configuration_item : configuration_item;
related_configuration_item : configuration_item;
END_ENTITY;
ENTITY configuration_item_revision_sequence
SUBTYPE OF (configuration_item_relationship);
END_ENTITY;
ENTITY context_dependent_shape_representation;
representation_relation : shape_representation_relationship;
represented_product_relation : product_definition_shape;
DERIVE
description : text := get_description_value(SELF);
name : label := get_name_value(SELF);
WHERE
WR1: 'SYSTEM_STRUCTURE_MIM_LF.PRODUCT_DEFINITION_RELATIONSHIP' IN TYPEOF(SELF.represented_product_relation.definition);
WR2: SIZEOF(USEDIN(SELF, 'SYSTEM_STRUCTURE_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
WR3: SIZEOF(USEDIN(SELF, 'SYSTEM_STRUCTURE_MIM_LF.' + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1;
END_ENTITY;
ENTITY context_dependent_unit
SUBTYPE OF (named_unit);
name : label;
END_ENTITY;
ENTITY contract;
name : label;
purpose : text;
kind : contract_type;
END_ENTITY;
ENTITY contract_assignment
ABSTRACT SUPERTYPE
;
assigned_contract : contract;
DERIVE
role : object_role := get_role(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF, 'SYSTEM_STRUCTURE_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
END_ENTITY;
ENTITY contract_relationship;
id : identifier;
name : label;
description :
OPTIONAL
text;
relating_contract : contract;
related_contract : contract;
END_ENTITY;
ENTITY contract_type;
description : 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, 'SYSTEM_STRUCTURE_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, 'SYSTEM_STRUCTURE_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
END_ENTITY;
ENTITY dated_effectivity
SUBTYPE OF (effectivity);
effectivity_end_date :
OPTIONAL
date_time_or_event_occurrence;
effectivity_start_date : date_time_or_event_occurrence;
END_ENTITY;
ENTITY definitional_representation_relationship
SUBTYPE OF (representation_relationship);
WHERE
WR1: acyclic_representation_relationship(SELF, [SELF\representation_relationship.rep_2], 'SYSTEM_STRUCTURE_MIM_LF.' + 'REPRESENTATION');
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, 'SYSTEM_STRUCTURE_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 directed_action
SUBTYPE OF (executed_action);
directive : action_directive;
END_ENTITY;
ENTITY direction
SUBTYPE OF (geometric_representation_item);
direction_ratios : LIST[2:3] OF REAL;
WHERE
WR1: SIZEOF(QUERY(tmp <* direction_ratios | tmp <> 0.000000)) > 0;
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 ('SYSTEM_STRUCTURE_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,
'SYSTEM_STRUCTURE_MIM_LF.' + 'PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') | prpc.name = 'document')) = 1));
WR3: NOT ('SYSTEM_STRUCTURE_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,
'SYSTEM_STRUCTURE_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') | prpc.name = 'document')) = 1));
WR4: NOT ('SYSTEM_STRUCTURE_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,
'SYSTEM_STRUCTURE_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, 'SYSTEM_STRUCTURE_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
END_ENTITY;
ENTITY document_relationship;
name : label;
description :
OPTIONAL
text;
relating_document : document;
related_document : document;
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: 'SYSTEM_STRUCTURE_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 effectivity
SUPERTYPE OF
(ONEOF (serial_numbered_effectivity,
dated_effectivity,
lot_effectivity,
time_interval_based_effectivity));
id : identifier;
DERIVE
name : label := get_name_value(SELF);
description : text := get_description_value(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF, 'SYSTEM_STRUCTURE_MIM_LF.' + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1;
WR2: SIZEOF(USEDIN(SELF, 'SYSTEM_STRUCTURE_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
END_ENTITY;
ENTITY effectivity_assignment
ABSTRACT SUPERTYPE
;
assigned_effectivity : effectivity;
DERIVE
role : object_role := get_role(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF, 'SYSTEM_STRUCTURE_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
END_ENTITY;
ENTITY effectivity_context_assignment
ABSTRACT SUPERTYPE
;
assigned_effectivity_assignment : effectivity_assignment;
role : effectivity_context_role;
END_ENTITY;
ENTITY effectivity_context_role;
name : label;
description :
OPTIONAL
text;
END_ENTITY;
ENTITY effectivity_relationship;
name : label;
description :
OPTIONAL
text;
related_effectivity : effectivity;
relating_effectivity : effectivity;
END_ENTITY;
ENTITY electric_charge_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1: 'SYSTEM_STRUCTURE_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: 'SYSTEM_STRUCTURE_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: 'SYSTEM_STRUCTURE_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: 'SYSTEM_STRUCTURE_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 environment_assignment
SUBTYPE OF (group);
END_ENTITY;
ENTITY environment_definition
SUBTYPE OF (product);
END_ENTITY;
ENTITY environment_definition_version
SUBTYPE OF (product_definition_formation);
SELF\product_definition_formation.of_product : environment_definition;
DERIVE
of_environment : environment_definition := SELF\product_definition_formation.of_product;
END_ENTITY;
ENTITY environment_definition_view
SUBTYPE OF (characterized_object, product_definition);
SELF\product_definition.formation : environment_definition_version;
DERIVE
defined_environment_version : environment_definition_version := SELF\product_definition.formation;
END_ENTITY;
ENTITY environment_view_definition_relationship
SUBTYPE OF (product_definition_relationship);
SELF\product_definition_relationship.relating_product_definition : environment_definition_view;
SELF\product_definition_relationship.related_product_definition : environment_definition_view;
DERIVE
related_environment : environment_definition_view := SELF\product_definition_relationship.related_product_definition;
relating_environment : environment_definition_view := SELF\product_definition_relationship.relating_product_definition;
END_ENTITY;
ENTITY event_occurrence;
id : identifier;
name : label;
description :
OPTIONAL
text;
END_ENTITY;
ENTITY event_occurrence_assignment
ABSTRACT SUPERTYPE
;
assigned_event_occurrence : event_occurrence;
role : event_occurrence_role;
END_ENTITY;
ENTITY event_occurrence_context_assignment
ABSTRACT SUPERTYPE
;
assigned_event_occurrence_assignment : event_occurrence_assignment;
role : event_occurrence_context_role;
END_ENTITY;
ENTITY event_occurrence_context_role;
name : label;
description :
OPTIONAL
text;
END_ENTITY;
ENTITY event_occurrence_relationship;
name : label;
description :
OPTIONAL
text;
relating_event : event_occurrence;
related_event : event_occurrence;
END_ENTITY;
ENTITY event_occurrence_role;
name : label;
description :
OPTIONAL
text;
END_ENTITY;
ENTITY executed_action
SUBTYPE OF (action);
END_ENTITY;
ENTITY expanded_uncertainty
SUBTYPE OF (standard_uncertainty);
coverage_factor : REAL;
END_ENTITY;
ENTITY experience;
id : identifier;
name : label;
description :
OPTIONAL
text;
END_ENTITY;
ENTITY experience_assignment
ABSTRACT SUPERTYPE
;
id : identifier;
name : label;
description :
OPTIONAL
text;
assigned_experience : experience;
role : experience_role;
END_ENTITY;
ENTITY experience_role;
id : identifier;
name : label;
description :
OPTIONAL
text;
END_ENTITY;
ENTITY experience_type;
id : identifier;
name : label;
description :
OPTIONAL
text;
END_ENTITY;
ENTITY experience_type_assignment
ABSTRACT SUPERTYPE
;
id : identifier;
name : label;
description :
OPTIONAL
text;
assigned_experience_type : experience_type;
role : experience_type_role;
END_ENTITY;
ENTITY experience_type_role;
id : identifier;
name : label;
description :
OPTIONAL
text;
END_ENTITY;
ENTITY external_class_library
SUBTYPE OF (external_source);
END_ENTITY;
ENTITY external_identification_assignment
ABSTRACT SUPERTYPE
SUBTYPE OF (identification_assignment);
source : external_source;
END_ENTITY;
ENTITY external_referent_assignment
ABSTRACT SUPERTYPE
;
assigned_name : label;
DERIVE
role : object_role := get_role(SELF);
UNIQUE
UR1: assigned_name;
WHERE
WR1: SIZEOF(USEDIN(SELF, 'SYSTEM_STRUCTURE_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
END_ENTITY;
ENTITY external_source;
source_id : source_item;
DERIVE
description : text := get_description_value(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF, 'SYSTEM_STRUCTURE_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_class
SUBTYPE OF (class, externally_defined_item);
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: 'SYSTEM_STRUCTURE_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: 'SYSTEM_STRUCTURE_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 functionally_defined_transformation;
name : label;
description :
OPTIONAL
text;
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, 'SYSTEM_STRUCTURE_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 geometric_item_specific_usage
SUBTYPE OF (item_identified_representation_usage);
SELF\item_identified_representation_usage.definition : geometric_item_specific_usage_select;
SELF\item_identified_representation_usage.used_representation : shape_representation;
SELF\item_identified_representation_usage.identified_item : geometric_representation_item;
END_ENTITY;
ENTITY geometric_representation_context
SUBTYPE OF (representation_context);
coordinate_space_dimension : dimension_count;
END_ENTITY;
ENTITY geometric_representation_item
SUPERTYPE OF
(ONEOF (point,
direction,
vector,
placement,
cartesian_transformation_operator))
SUBTYPE OF (representation_item);
DERIVE
dim : dimension_count := dimension_of(SELF);
WHERE
WR1: SIZEOF(QUERY(using_rep <* using_representations(SELF) | NOT ('SYSTEM_STRUCTURE_MIM_LF.GEOMETRIC_REPRESENTATION_CONTEXT'
IN TYPEOF(using_rep.context_of_items)))) = 0;
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, 'SYSTEM_STRUCTURE_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, 'SYSTEM_STRUCTURE_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 hierarchical_interface_connection
SUBTYPE OF (interface_connection);
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: 'SYSTEM_STRUCTURE_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 in_zone
SUBTYPE OF (group);
END_ENTITY;
ENTITY inductance_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1: 'SYSTEM_STRUCTURE_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 interface_connection
SUBTYPE OF (group);
END_ENTITY;
ENTITY interface_connector_definition
SUBTYPE OF (product_definition);
END_ENTITY;
ENTITY interface_connector_occurrence
SUBTYPE OF (group);
END_ENTITY;
ENTITY interface_connector_version
SUBTYPE OF (product_definition_formation);
END_ENTITY;
ENTITY interface_definition_connection
SUBTYPE OF (product_definition_relationship);
END_ENTITY;
ENTITY interface_definition_for
SUBTYPE OF (product_definition_relationship);
END_ENTITY;
ENTITY interface_specification_definition
SUBTYPE OF (product_definition);
END_ENTITY;
ENTITY interface_specification_version
SUBTYPE OF (product_definition_formation);
END_ENTITY;
ENTITY item_defined_transformation;
name : label;
description :
OPTIONAL
text;
transform_item_1 : representation_item;
transform_item_2 : representation_item;
END_ENTITY;
ENTITY item_identified_representation_usage;
name : label;
description :
OPTIONAL
text;
definition : represented_definition;
used_representation : representation;
identified_item : representation_item;
WHERE
WR1: SELF.used_representation IN using_representations(SELF.identified_item);
END_ENTITY;
ENTITY language
SUBTYPE OF (group);
WHERE
WR1: SELF\group.name <> '';
END_ENTITY;
ENTITY length_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1: 'SYSTEM_STRUCTURE_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 library_assignment
ABSTRACT SUPERTYPE
SUBTYPE OF (external_referent_assignment);
frame_of_reference : library_context;
UNIQUE
UR1: frame_of_reference;
END_ENTITY;
ENTITY library_context
SUBTYPE OF (application_context_element);
library_reference : label;
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 location;
id : identifier;
name : label;
description :
OPTIONAL
text;
END_ENTITY;
ENTITY location_assignment
ABSTRACT SUPERTYPE
;
id : identifier;
name : label;
description :
OPTIONAL
text;
assigned_location : location;
role : location_role;
END_ENTITY;
ENTITY location_relationship;
id : identifier;
name : label;
description :
OPTIONAL
text;
relating_location : location;
related_location : location;
END_ENTITY;
ENTITY location_representation_assignment
ABSTRACT SUPERTYPE
;
id : identifier;
name : label;
description :
OPTIONAL
text;
represented_location : location;
role : location_representation_role;
END_ENTITY;
ENTITY location_representation_role;
id : identifier;
name : label;
description :
OPTIONAL
text;
END_ENTITY;
ENTITY location_role;
id : identifier;
name : label;
description :
OPTIONAL
text;
END_ENTITY;
ENTITY lot_effectivity
SUBTYPE OF (effectivity);
effectivity_lot_id : identifier;
effectivity_lot_size : measure_with_unit;
END_ENTITY;
ENTITY luminous_flux_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1: 'SYSTEM_STRUCTURE_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: 'SYSTEM_STRUCTURE_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: 'SYSTEM_STRUCTURE_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: 'SYSTEM_STRUCTURE_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 make_from_usage_option
SUBTYPE OF (product_definition_usage);
ranking : INTEGER;
ranking_rationale : text;
quantity : measure_with_unit;
WHERE
WR1: (NOT ('NUMBER' IN TYPEOF(quantity.value_component))) OR (quantity.value_component > 0);
END_ENTITY;
ENTITY mapped_item
SUBTYPE OF (representation_item);
mapping_source : representation_map;
mapping_target : representation_item;
WHERE
WR1: acyclic_mapped_representation(SELF);
END_ENTITY;
ENTITY mass_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1: 'SYSTEM_STRUCTURE_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_qualification;
name : label;
description : text;
qualified_measure : measure_with_unit;
qualifiers : SET[1:?] OF value_qualifier;
WHERE
WR1: SIZEOF(QUERY(temp <* qualifiers | 'SYSTEM_STRUCTURE_MIM_LF.PRECISION_QUALIFIER' IN TYPEOF(temp))) < 2;
WR2: NOT ('SYSTEM_STRUCTURE_MIM_LF.REPRESENTATION_ITEM' IN TYPEOF(SELF\measure_qualification.qualified_measure));
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 multi_language_attribute_assignment
SUBTYPE OF (attribute_value_assignment);
items : SET[1:?] OF multi_language_attribute_item;
DERIVE
translation_language : language := language_indication[1]\attribute_classification_assignment.assigned_class;
INVERSE
language_indication : SET[1:1] OF attribute_language_assignment FOR items;
WHERE
WR1: (SELF\attribute_value_assignment.role.name = 'alternate language');
WR2: SIZEOF(QUERY(ala <* language_indication | (ala\attribute_classification_assignment.attribute_name = 'attribute_value')
AND (ala\attribute_classification_assignment.role.name = 'translated'))) = 1;
WR3: SELF\attribute_value_assignment.attribute_name <> '';
WR4: SIZEOF(QUERY(ci <* items | SIZEOF(QUERY(ata <* USEDIN(ci, 'SYSTEM_STRUCTURE_MIM_LF.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS')
| (ata\attribute_value_assignment.attribute_name = SELF\attribute_value_assignment.attribute_name) AND (ata.translation_language
:=: translation_language))) > 1)) = 0;
WR5: SIZEOF(QUERY(ci <* items | SIZEOF(QUERY(ata <* USEDIN(ci, 'SYSTEM_STRUCTURE_MIM_LF.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS')
| (ata\attribute_classification_assignment.role.name = 'primary') AND (ata\attribute_classification_assignment.attribute_name
= SELF\attribute_value_assignment.attribute_name) AND (ata\attribute_classification_assignment.assigned_class :=: translation_language)))
> 0)) = 0;
END_ENTITY;
ENTITY name_assignment
ABSTRACT SUPERTYPE
;
assigned_name : label;
DERIVE
role : object_role := get_role(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF, 'SYSTEM_STRUCTURE_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 next_assembly_usage_occurrence
SUBTYPE OF (assembly_component_usage);
END_ENTITY;
ENTITY object_role;
name : label;
description :
OPTIONAL
text;
END_ENTITY;
ENTITY observed_environment
SUBTYPE OF (product);
END_ENTITY;
ENTITY observed_environment_assignment
SUBTYPE OF (group);
END_ENTITY;
ENTITY observed_environment_to_definition
SUBTYPE OF (product_relationship);
SELF\product_relationship.relating_product : environment_definition;
SELF\product_relationship.related_product : observed_environment;
DERIVE
defined_environment : environment_definition := SELF\product_relationship.relating_product;
observed_environment : observed_environment := SELF\product_relationship.related_product;
END_ENTITY;
ENTITY observed_environment_to_definition_version
SUBTYPE OF (product_definition_formation_relationship);
SELF\product_definition_formation_relationship.relating_product_definition_formation : environment_definition_version;
SELF\product_definition_formation_relationship.related_product_definition_formation : observed_environment_version;
DERIVE
defined_environment_version : environment_definition_version := SELF\product_definition_formation_relationship.relating_product_definition_formation;
observed_environment_version : observed_environment_version := SELF\product_definition_formation_relationship.related_product_definition_formation;
END_ENTITY;
ENTITY observed_environment_to_definition_view
SUBTYPE OF (product_definition_relationship);
SELF\product_definition_relationship.relating_product_definition : observed_environment_view;
SELF\product_definition_relationship.related_product_definition : environment_definition_view;
DERIVE
defined_environment_view : observed_environment_view := SELF\product_definition_relationship.relating_product_definition;
observed_environment_view : environment_definition_view := SELF\product_definition_relationship.related_product_definition;
END_ENTITY;
ENTITY observed_environment_version
SUBTYPE OF (product_definition_formation);
SELF\product_definition_formation.of_product : observed_environment;
DERIVE
of_environment : observed_environment := SELF\product_definition_formation.of_product;
END_ENTITY;
ENTITY observed_environment_view
SUBTYPE OF (characterized_object, product_definition);
SELF\product_definition.formation : observed_environment_version;
DERIVE
observed_environment_version : observed_environment_version := SELF\product_definition.formation;
END_ENTITY;
ENTITY observed_environment_view_definition_relationship
SUBTYPE OF (product_definition_relationship);
SELF\product_definition_relationship.relating_product_definition : observed_environment_view;
SELF\product_definition_relationship.related_product_definition : observed_environment_view;
DERIVE
related_environment : observed_environment_view := SELF\product_definition_relationship.related_product_definition;
relating_environment : observed_environment_view := SELF\product_definition_relationship.relating_product_definition;
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, 'SYSTEM_STRUCTURE_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
END_ENTITY;
ENTITY organization_type;
id : identifier;
name : label;
description :
OPTIONAL
text;
END_ENTITY;
ENTITY organization_type_assignment
ABSTRACT SUPERTYPE
;
id : identifier;
name : label;
description :
OPTIONAL
text;
assigned_organization_type : organization_type;
role : organization_type_role;
END_ENTITY;
ENTITY organization_type_role;
id : identifier;
name : label;
description :
OPTIONAL
text;
END_ENTITY;
ENTITY organizational_address
SUBTYPE OF (address);
organizations : SET[1:?] OF organization;
description :
OPTIONAL
text;
END_ENTITY;
ENTITY organizational_project;
name : label;
description :
OPTIONAL
text;
responsible_organizations : SET[1:?] OF organization;
DERIVE
id : identifier := get_id_value(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF, 'SYSTEM_STRUCTURE_MIM_LF.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1;
END_ENTITY;
ENTITY organizational_project_assignment
ABSTRACT SUPERTYPE
;
assigned_organizational_project : organizational_project;
role : organizational_project_role;
END_ENTITY;
ENTITY organizational_project_relationship;
name : label;
description :
OPTIONAL
text;
relating_organizational_project : organizational_project;
related_organizational_project : organizational_project;
END_ENTITY;
ENTITY organizational_project_role;
name : label;
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, 'SYSTEM_STRUCTURE_MIM_LF.' + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1;
WR2: SIZEOF(USEDIN(SELF, 'SYSTEM_STRUCTURE_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], 'SYSTEM_STRUCTURE_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, 'SYSTEM_STRUCTURE_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
END_ENTITY;
ENTITY person_assignment
ABSTRACT SUPERTYPE
;
assigned_person : person;
role : person_role;
END_ENTITY;
ENTITY person_role;
name : label;
DERIVE
description : text := get_description_value(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF, 'SYSTEM_STRUCTURE_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
END_ENTITY;
ENTITY person_type;
id : identifier;
name : label;
description :
OPTIONAL
text;
END_ENTITY;
ENTITY person_type_assignment
ABSTRACT SUPERTYPE
;
id : identifier;
name : label;
description :
OPTIONAL
text;
assigned_person_type : person_type;
role : person_type_role;
END_ENTITY;
ENTITY person_type_definition;
id : identifier;
name : label;
description :
OPTIONAL
text;
formation : person_type_definition_formation;
END_ENTITY;
ENTITY person_type_definition_assignment
ABSTRACT SUPERTYPE
;
id : identifier;
name : label;
description :
OPTIONAL
text;
assigned_person_type_definition : person_type_definition;
role : person_type_definition_role;
END_ENTITY;
ENTITY person_type_definition_formation;
id : identifier;
name : label;
description :
OPTIONAL
text;
of_person_type : person_type;
END_ENTITY;
ENTITY person_type_definition_role;
id : identifier;
name : label;
description :
OPTIONAL
text;
END_ENTITY;
ENTITY person_type_role;
id : identifier;
name : label;
description :
OPTIONAL
text;
END_ENTITY;
ENTITY personal_address
SUBTYPE OF (address);
people : SET[1:?] OF person;
description :
OPTIONAL
text;
END_ENTITY;
ENTITY physical_breakdown_context
SUBTYPE OF (breakdown_context);
END_ENTITY;
ENTITY physical_element_usage
SUBTYPE OF (breakdown_element_usage);
END_ENTITY;
ENTITY placement
SUPERTYPE OF
(ONEOF (axis1_placement,
axis2_placement_2d,
axis2_placement_3d))
SUBTYPE OF (geometric_representation_item);
location : cartesian_point;
END_ENTITY;
ENTITY plane_angle_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1: 'SYSTEM_STRUCTURE_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 point
SUBTYPE OF (geometric_representation_item);
END_ENTITY;
ENTITY position_in_organization;
id : identifier;
name : label;
description :
OPTIONAL
text;
END_ENTITY;
ENTITY position_in_organization_assignment
ABSTRACT SUPERTYPE
;
id : identifier;
name : label;
description :
OPTIONAL
text;
assigned_position_in_organization : position_in_organization;
role : position_in_organization_role;
END_ENTITY;
ENTITY position_in_organization_role;
id : identifier;
name : label;
description :
OPTIONAL
text;
END_ENTITY;
ENTITY position_in_organization_type;
id : identifier;
name : label;
description :
OPTIONAL
text;
END_ENTITY;
ENTITY position_in_organization_type_assignment
ABSTRACT SUPERTYPE
;
id : identifier;
name : label;
description :
OPTIONAL
text;
assigned_position_in_organization_type : position_in_organization_type;
role : position_in_organization_type_role;
END_ENTITY;
ENTITY position_in_organization_type_role;
id : identifier;
name : label;
description :
OPTIONAL
text;
END_ENTITY;
ENTITY power_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1: 'SYSTEM_STRUCTURE_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 precision_qualifier;
precision_value : INTEGER;
END_ENTITY;
ENTITY pressure_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1: 'SYSTEM_STRUCTURE_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 product;
id : identifier;
name : label;
description :
OPTIONAL
text;
frame_of_reference : SET[1:?] OF product_context;
END_ENTITY;
ENTITY product_as_planned
SUBTYPE OF (product_definition_formation);
END_ENTITY;
ENTITY product_category;
name : label;
description :
OPTIONAL
text;
DERIVE
id : identifier := get_id_value(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF, 'SYSTEM_STRUCTURE_MIM_LF.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1;
END_ENTITY;
ENTITY product_concept;
id : identifier;
name : label;
description :
OPTIONAL
text;
market_context : product_concept_context;
UNIQUE
UR1: id;
END_ENTITY;
ENTITY product_concept_context
SUBTYPE OF (application_context_element);
market_segment_type : label;
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, 'SYSTEM_STRUCTURE_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_effectivity
SUBTYPE OF (effectivity);
usage : product_definition_relationship;
WHERE
WR1: SIZEOF(USEDIN(SELF, 'SYSTEM_STRUCTURE_MIM_LF.' + 'EFFECTIVITY_ASSIGNMENT.ASSIGNED_EFFECTIVITY')) = 0;
END_ENTITY;
ENTITY product_definition_element_relationship
SUBTYPE OF (group);
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_group_assignment
SUBTYPE OF (group_assignment);
SELF\group_assignment.assigned_group : product_definition_element_relationship;
items : SET[1:1] OF product_definition_or_product_definition_relationship;
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_shape
SUBTYPE OF (property_definition);
UNIQUE
UR1:
SELF\property_definition.definition;
WHERE
WR1: SIZEOF(['SYSTEM_STRUCTURE_MIM_LF.CHARACTERIZED_PRODUCT_DEFINITION', 'SYSTEM_STRUCTURE_MIM_LF.CHARACTERIZED_OBJECT'] *
TYPEOF(SELF\property_definition.definition)) > 0;
END_ENTITY;
ENTITY product_definition_usage
SUPERTYPE OF
(ONEOF (make_from_usage_option,
assembly_component_usage))
SUBTYPE OF (product_definition_relationship);
UNIQUE
UR1:
SELF\product_definition_relationship.id,
SELF\product_definition_relationship.relating_product_definition,
SELF\product_definition_relationship.related_product_definition;
WHERE
WR1: acyclic_product_definition_relationship(SELF, [SELF\product_definition_relationship.related_product_definition], 'SYSTEM_STRUCTURE_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_design_to_individual
SUBTYPE OF (product_relationship);
SELF\product_relationship.related_product RENAMED individual_product : product;
SELF\product_relationship.relating_product RENAMED product_design : product;
END_ENTITY;
ENTITY product_design_version_to_individual
SUBTYPE OF (product_definition_formation_relationship);
SELF\product_definition_formation_relationship.related_product_definition_formation RENAMED individual_product : product_definition_formation;
SELF\product_definition_formation_relationship.relating_product_definition_formation RENAMED product_design_version : product_definition_formation;
END_ENTITY;
ENTITY product_group
SUBTYPE OF (group);
END_ENTITY;
ENTITY product_group_attribute_assignment
SUBTYPE OF (group_assignment);
SELF\group_assignment.assigned_group : product_group_attributes;
attributes : SET[1:1] OF attribute_select;
END_ENTITY;
ENTITY product_group_attribute_set
SUBTYPE OF (group_assignment);
SELF\group_assignment.assigned_group : product_group;
product_group_attributes : SET[1:1] OF product_group_attributes;
END_ENTITY;
ENTITY product_group_attributes
SUBTYPE OF (group);
END_ENTITY;
ENTITY product_group_context
SUBTYPE OF (descriptive_representation_item);
END_ENTITY;
ENTITY product_group_membership
SUBTYPE OF (characterized_object, group_assignment);
member : product_select;
END_ENTITY;
ENTITY product_group_membership_rules
SUBTYPE OF (group_assignment);
SELF\group_assignment.assigned_group : product_group;
product_group_rules : SET[1:1] OF product_group_rules;
END_ENTITY;
ENTITY product_group_purpose
SUBTYPE OF (descriptive_representation_item);
END_ENTITY;
ENTITY product_group_relationship
SUBTYPE OF (group_relationship);
END_ENTITY;
ENTITY product_group_rule
SUBTYPE OF (descriptive_representation_item);
END_ENTITY;
ENTITY product_group_rule_assignment
SUBTYPE OF (group_assignment);
SELF\group_assignment.assigned_group : product_group_rules;
product_group_rules : SET[1:?] OF product_group_rule;
END_ENTITY;
ENTITY product_group_rules
SUBTYPE OF (group);
END_ENTITY;
ENTITY product_planned_to_realized
SUBTYPE OF (product_definition_formation_relationship);
SELF\product_definition_formation_relationship.relating_product_definition_formation RENAMED planned_product : product_definition_formation;
SELF\product_definition_formation_relationship.related_product_definition_formation RENAMED realized_product : product_definition_formation;
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 promissory_usage_occurrence
SUBTYPE OF (assembly_component_usage);
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, 'SYSTEM_STRUCTURE_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, 'SYSTEM_STRUCTURE_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
WR2: SIZEOF(USEDIN(SELF, 'SYSTEM_STRUCTURE_MIM_LF.' + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1;
END_ENTITY;
ENTITY qualification;
id : identifier;
name : label;
description :
OPTIONAL
text;
END_ENTITY;
ENTITY qualification_assignment
ABSTRACT SUPERTYPE
;
id : identifier;
name : label;
description :
OPTIONAL
text;
assigned_qualification : qualification;
role : qualification_role;
END_ENTITY;
ENTITY qualification_role;
id : identifier;
name : label;
description :
OPTIONAL
text;
END_ENTITY;
ENTITY qualification_type;
id : identifier;
name : label;
description :
OPTIONAL
text;
END_ENTITY;
ENTITY qualification_type_assignment
ABSTRACT SUPERTYPE
;
id : identifier;
name : label;
description :
OPTIONAL
text;
assigned_qualification_type : qualification_type;
role : qualification_type_role;
END_ENTITY;
ENTITY qualification_type_role;
id : identifier;
name : label;
description :
OPTIONAL
text;
END_ENTITY;
ENTITY qualified_representation_item
SUBTYPE OF (representation_item);
qualifiers : SET[1:?] OF value_qualifier;
WHERE
WR1: SIZEOF(QUERY(temp <* qualifiers | 'SYSTEM_STRUCTURE_MIM_LF.PRECISION_QUALIFIER' IN TYPEOF(temp))) < 2;
END_ENTITY;
ENTITY qualitative_uncertainty
SUBTYPE OF (uncertainty_qualifier);
uncertainty_value : text;
END_ENTITY;
ENTITY quantified_assembly_component_usage
SUBTYPE OF (assembly_component_usage);
quantity : measure_with_unit;
WHERE
WR1: (NOT ('NUMBER' IN TYPEOF(quantity.value_component))) OR (quantity.value_component > 0);
END_ENTITY;
ENTITY radioactivity_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1: 'SYSTEM_STRUCTURE_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: 'SYSTEM_STRUCTURE_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 relative_event_occurrence
SUBTYPE OF (event_occurrence);
base_event : event_occurrence;
offset : time_measure_with_unit;
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, 'SYSTEM_STRUCTURE_MIM_LF.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1;
WR2: SIZEOF(USEDIN(SELF, 'SYSTEM_STRUCTURE_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,
mapped_item,
value_representation_item));
name : label;
WHERE
WR1: SIZEOF(using_representations(SELF)) > 0;
END_ENTITY;
ENTITY representation_map;
mapping_origin : representation_item;
mapped_representation : representation;
INVERSE
map_usage : SET[1:?] OF mapped_item FOR mapping_source;
WHERE
WR1: item_in_context(SELF.mapping_origin, SELF.mapped_representation.context_of_items);
END_ENTITY;
ENTITY representation_relationship;
name : label;
description :
OPTIONAL
text;
rep_1 : representation;
rep_2 : representation;
END_ENTITY;
ENTITY representation_relationship_with_transformation
SUBTYPE OF (representation_relationship);
transformation_operator : transformation;
WHERE
WR1: SELF\representation_relationship.rep_1.context_of_items :<>: SELF\representation_relationship.rep_2.context_of_items;
END_ENTITY;
ENTITY resistance_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1: 'SYSTEM_STRUCTURE_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 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 security_classification;
name : label;
purpose : text;
security_level : security_classification_level;
END_ENTITY;
ENTITY security_classification_assignment
ABSTRACT SUPERTYPE
;
assigned_security_classification : security_classification;
DERIVE
role : object_role := get_role(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF, 'SYSTEM_STRUCTURE_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
END_ENTITY;
ENTITY security_classification_level;
name : label;
END_ENTITY;
ENTITY serial_numbered_effectivity
SUBTYPE OF (effectivity);
effectivity_start_id : identifier;
effectivity_end_id :
OPTIONAL
identifier;
END_ENTITY;
ENTITY shape_aspect;
name : label;
description :
OPTIONAL
text;
of_shape : product_definition_shape;
product_definitional : LOGICAL;
DERIVE
id : identifier := get_id_value(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF, 'SYSTEM_STRUCTURE_MIM_LF.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1;
END_ENTITY;
ENTITY shape_aspect_relationship;
name : label;
description :
OPTIONAL
text;
relating_shape_aspect : shape_aspect;
related_shape_aspect : shape_aspect;
DERIVE
id : identifier := get_id_value(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF, 'SYSTEM_STRUCTURE_MIM_LF.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1;
END_ENTITY;
ENTITY shape_definition_representation
SUBTYPE OF (property_definition_representation);
WHERE
WR1: ('SYSTEM_STRUCTURE_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(SELF.definition)) OR ('SYSTEM_STRUCTURE_MIM_LF.SHAPE_DEFINITION'
IN TYPEOF(SELF.definition.definition));
WR2: 'SYSTEM_STRUCTURE_MIM_LF.SHAPE_REPRESENTATION' IN TYPEOF(SELF.used_representation);
END_ENTITY;
ENTITY shape_representation
SUBTYPE OF (representation);
END_ENTITY;
ENTITY shape_representation_relationship
SUBTYPE OF (representation_relationship);
WHERE
WR1: 'SYSTEM_STRUCTURE_MIM_LF.SHAPE_REPRESENTATION' IN (TYPEOF(SELF\representation_relationship.rep_1) + TYPEOF(SELF\representation_relationship.rep_2));
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 (('SYSTEM_STRUCTURE_MIM_LF.MASS_UNIT' IN TYPEOF(SELF)) AND (SIZEOF(USEDIN(SELF, 'SYSTEM_STRUCTURE_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: 'SYSTEM_STRUCTURE_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 specified_higher_usage_occurrence
SUBTYPE OF (assembly_component_usage);
upper_usage : assembly_component_usage;
next_usage : next_assembly_usage_occurrence;
UNIQUE
UR1: upper_usage, next_usage;
WHERE
WR1: SELF :<>: upper_usage;
WR2: SELF\product_definition_relationship.relating_product_definition :=: upper_usage.relating_product_definition;
WR3: SELF\product_definition_relationship.related_product_definition :=: next_usage.related_product_definition;
WR4: (upper_usage.related_product_definition :=: next_usage.relating_product_definition) OR (SIZEOF(QUERY(pdr <* USEDIN(upper_usage.related_product_definition,
'SYSTEM_STRUCTURE_MIM_LF.PRODUCT_DEFINITION_RELATIONSHIP.' + 'RELATED_PRODUCT_DEFINITION') | pdr.relating_product_definition
:=: next_usage.relating_product_definition)) = 1);
WR5: SIZEOF(['SYSTEM_STRUCTURE_MIM_LF.NEXT_ASSEMBLY_USAGE_OCCURRENCE', 'SYSTEM_STRUCTURE_MIM_LF.SPECIFIED_HIGHER_USAGE_OCCURRENCE']
* TYPEOF(upper_usage)) = 1;
END_ENTITY;
ENTITY standard_uncertainty
SUPERTYPE OF
(expanded_uncertainty)
SUBTYPE OF (uncertainty_qualifier);
uncertainty_value : REAL;
END_ENTITY;
ENTITY syss_characterizable_action_directive
SUBTYPE OF (action_directive, characterized_object);
END_ENTITY;
ENTITY syss_characterizable_address
SUBTYPE OF (address, characterized_object);
END_ENTITY;
ENTITY syss_characterizable_alternate_product_relationship
SUBTYPE OF (alternate_product_relationship, characterized_object);
END_ENTITY;
ENTITY syss_characterizable_applied_action_assignment
SUBTYPE OF (applied_action_assignment, characterized_object);
END_ENTITY;
ENTITY syss_characterizable_applied_document_reference
SUBTYPE OF (applied_document_reference, characterized_object);
END_ENTITY;
ENTITY syss_characterizable_applied_document_usage_constraint_assignment
SUBTYPE OF (applied_document_usage_constraint_assignment, characterized_object);
END_ENTITY;
ENTITY syss_characterizable_applied_organization_assignment
SUBTYPE OF (applied_organization_assignment, characterized_object);
END_ENTITY;
ENTITY syss_characterizable_applied_person_and_organization_assignment
SUBTYPE OF (applied_person_and_organization_assignment, characterized_object);
END_ENTITY;
ENTITY syss_characterizable_assembly_component_usage
SUBTYPE OF (assembly_component_usage, characterized_object);
END_ENTITY;
ENTITY syss_characterizable_configuration_item
SUBTYPE OF (characterized_object, configuration_item);
END_ENTITY;
ENTITY syss_characterizable_general_property_relationship
SUBTYPE OF (characterized_object, general_property_relationship);
END_ENTITY;
ENTITY syss_characterizable_group
SUBTYPE OF (characterized_object, group);
END_ENTITY;
ENTITY syss_characterizable_organizational_project
SUBTYPE OF (characterized_object, organizational_project);
END_ENTITY;
ENTITY syss_characterizable_person
SUBTYPE OF (characterized_object, person);
END_ENTITY;
ENTITY syss_characterizable_person_and_organization
SUBTYPE OF (characterized_object, person_and_organization);
END_ENTITY;
ENTITY syss_characterizable_product
SUBTYPE OF (characterized_object, product);
END_ENTITY;
ENTITY syss_characterizable_product_concept
SUBTYPE OF (characterized_object, product_concept);
END_ENTITY;
ENTITY syss_characterizable_product_definition_formation
SUBTYPE OF (characterized_object, product_definition_formation);
END_ENTITY;
ENTITY syss_characterizable_product_definition_formation_relationship
SUBTYPE OF (characterized_object, product_definition_formation_relationship);
END_ENTITY;
ENTITY syss_characterizable_property_definition_representation
SUBTYPE OF (characterized_object, property_definition_representation);
END_ENTITY;
ENTITY syss_characterizable_representation
SUBTYPE OF (characterized_object, representation);
END_ENTITY;
ENTITY syss_characterizable_representation_context
SUBTYPE OF (characterized_object, representation_context);
END_ENTITY;
ENTITY syss_characterizable_representation_item
SUBTYPE OF (characterized_object, representation_item);
END_ENTITY;
ENTITY syss_characterizable_security_classification
SUBTYPE OF (characterized_object, security_classification);
END_ENTITY;
ENTITY syss_characterizable_versioned_action_request
SUBTYPE OF (characterized_object, versioned_action_request);
END_ENTITY;
ENTITY system_breakdown_context
SUBTYPE OF (breakdown_context);
END_ENTITY;
ENTITY system_element_usage
SUBTYPE OF (breakdown_element_usage);
END_ENTITY;
ENTITY thermodynamic_temperature_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1: 'SYSTEM_STRUCTURE_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_assignment
ABSTRACT SUPERTYPE
;
assigned_time : local_time;
role : time_role;
END_ENTITY;
ENTITY time_interval;
id : identifier;
name : label;
description :
OPTIONAL
text;
END_ENTITY;
ENTITY time_interval_assignment
ABSTRACT SUPERTYPE
;
assigned_time_interval : time_interval;
role : time_interval_role;
END_ENTITY;
ENTITY time_interval_based_effectivity
SUBTYPE OF (effectivity);
effectivity_period : time_interval;
END_ENTITY;
ENTITY time_interval_relationship;
name : label;
description :
OPTIONAL
text;
relating_time_interval : time_interval;
related_time_interval : time_interval;
END_ENTITY;
ENTITY time_interval_role;
name : label;
description :
OPTIONAL
text;
END_ENTITY;
ENTITY time_interval_with_bounds
SUBTYPE OF (time_interval);
primary_bound :
OPTIONAL
date_time_or_event_occurrence;
secondary_bound :
OPTIONAL
date_time_or_event_occurrence;
duration :
OPTIONAL
time_measure_with_unit;
WHERE
WR1: NOT (EXISTS(secondary_bound) AND EXISTS(duration));
WR2: EXISTS(primary_bound) OR EXISTS(secondary_bound);
END_ENTITY;
ENTITY time_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1: 'SYSTEM_STRUCTURE_MIM_LF.TIME_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY;
ENTITY time_role;
name : label;
DERIVE
description : text := get_description_value(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF, 'SYSTEM_STRUCTURE_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
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 type_qualifier;
name : label;
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 uncertainty_qualifier
SUPERTYPE OF
(ONEOF (standard_uncertainty,
qualitative_uncertainty));
measure_name : label;
description : text;
END_ENTITY;
ENTITY value_range
SUBTYPE OF (compound_representation_item);
WHERE
WR1: ('SYSTEM_STRUCTURE_MIM_LF.' + 'SET_REPRESENTATION_ITEM' IN TYPEOF(item_element)) AND value_range_wr1(item_element);
WR2: value_range_wr2(item_element);
WR3: value_range_wr3(item_element);
END_ENTITY;
ENTITY value_representation_item
SUBTYPE OF (representation_item);
value_component : measure_value;
WHERE
WR1: SIZEOF(QUERY(rep <* using_representations(SELF) | NOT ('SYSTEM_STRUCTURE_MIM_LF.GLOBAL_UNIT_ASSIGNED_CONTEXT' IN TYPEOF(rep.context_of_items))))
= 0;
END_ENTITY;
ENTITY vector
SUBTYPE OF (geometric_representation_item);
orientation : direction;
magnitude : length_measure;
WHERE
WR1: magnitude >= 0.000000;
END_ENTITY;
ENTITY velocity_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1: 'SYSTEM_STRUCTURE_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 versioned_action_request;
id : identifier;
version : label;
purpose : text;
description :
OPTIONAL
text;
END_ENTITY;
ENTITY volume_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1: 'SYSTEM_STRUCTURE_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;
ENTITY zone_breakdown_context
SUBTYPE OF (breakdown_context);
END_ENTITY;
ENTITY zone_element_usage
SUBTYPE OF (breakdown_element_usage);
END_ENTITY;
RULE compatible_dimension FOR
(cartesian_point, direction, representation_context, geometric_representation_context);
WHERE
WR1: SIZEOF(QUERY(x <* cartesian_point | SIZEOF(QUERY(y <* geometric_representation_context | item_in_context(x, y) AND (HIINDEX(x.coordinates)
<> y.coordinate_space_dimension))) > 0)) = 0;
WR2: SIZEOF(QUERY(x <* direction | SIZEOF(QUERY(y <* geometric_representation_context | item_in_context(x, y) AND (HIINDEX(x.direction_ratios)
<> y.coordinate_space_dimension))) > 0)) = 0;
END_RULE;
RULE restrict_language_assignment_per_attribute FOR
(attribute_language_assignment);
WHERE
WR1: SIZEOF(QUERY(ala1 <* attribute_language_assignment | SIZEOF(QUERY(it <* ala1.items | SIZEOF(QUERY(ala2 <* USEDIN(it,
'SYSTEM_STRUCTURE_MIM_LF.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | (ala1\attribute_classification_assignment.attribute_name
= ala2\attribute_classification_assignment.attribute_name) AND (ala1\attribute_classification_assignment.assigned_class :=:
ala2\attribute_classification_assignment.assigned_class))) > 1)) > 0)) = 0;
END_RULE;
RULE subtype_exclusiveness_representation_item FOR
(representation_item);
WHERE
WR1: SIZEOF(QUERY(cri <* representation_item | NOT (type_check_function(cri, ['SYSTEM_STRUCTURE_MIM_LF.MEASURE_REPRESENTATION_ITEM',
'SYSTEM_STRUCTURE_MIM_LF.VALUE_REPRESENTATION_ITEM', 'SYSTEM_STRUCTURE_MIM_LF.COMPOUND_REPRESENTATION_ITEM'], 3)))) = 0;
END_RULE;
RULE validate_dependently_instantiable_entity_data_types FOR
(application_context, application_context_element, cartesian_transformation_operator, contract_type, document_type, document_usage_constraint, event_occurrence_context_role, event_occurrence_role, experience, experience_type, library_context, organization_type, person_role, person_type, person_type_definition, person_type_definition_formation, placement, point, position_in_organization, position_in_organization_type, product_context, product_definition_context_role, product_definition_effectivity, qualification, qualification_type, time_role, vector);
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 + application_context_element + cartesian_transformation_operator + contract_type + document_type + document_usage_constraint + event_occurrence_context_role + event_occurrence_role + experience + experience_type + library_context + organization_type + person_role + person_type + person_type_definition + person_type_definition_formation + placement + point + position_in_organization + position_in_organization_type + product_context + product_definition_context_role + product_definition_effectivity + qualification + qualification_type + time_role + vector;
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_mapped_representation
(mi : mapped_item) : BOOLEAN;
LOCAL
rms : SET OF representation_map;
mis : SET OF mapped_item;
rs1 : SET OF representation;
rs2 : SET OF representation;
END_LOCAL;
rs1 := using_representations(mi);
rs2 := [];
REPEAT WHILE SIZEOF(rs1) > 0;
REPEAT i := 1 TO HIINDEX(rs1);
rms := bag_to_set(USEDIN(rs1[i], 'SYSTEM_STRUCTURE_MIM_LF.REPRESENTATION_MAP.MAPPED_REPRESENTATION'));
IF SIZEOF(rms) > 0 THEN
REPEAT j := 1 TO HIINDEX(rms);
mis := bag_to_set(USEDIN(rms[i], 'SYSTEM_STRUCTURE_MIM_LF.MAPPED_ITEM.MAPPING_SOURCE'));
IF SIZEOF(mis) > 0 THEN
REPEAT j := 1 TO HIINDEX(mis);
IF mis[i] :=: mi THEN
RETURN (FALSE);
END_IF;
rs2 := rs2 + using_representations(mis[i]);
END_REPEAT;
END_IF;
END_REPEAT;
END_IF;
END_REPEAT;
rs1 := rs2;
rs2 := [];
END_REPEAT;
RETURN (TRUE);
END_FUNCTION;
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, 'SYSTEM_STRUCTURE_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 acyclic_representation_relationship
(relation : representation_relationship; relatives : SET[1:?] OF representation; specific_relation : STRING) : BOOLEAN;
LOCAL
x : SET OF representation_relationship;
END_LOCAL;
IF relation.rep_1 IN relatives THEN
RETURN (FALSE);
END_IF;
x := QUERY(r <* bag_to_set(USEDIN(relation.rep_1, 'SYSTEM_STRUCTURE_MIM_LF.' + 'REPRESENTATION_RELATIONSHIP.' + 'REP_2')) | specific_relation IN TYPEOF(r));
REPEAT i := 1 TO HIINDEX(x);
IF NOT acyclic_representation_relationship(x[i], relatives + relation.rep_1, 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 base_axis
(dim : INTEGER; axis1 : direction; axis2 : direction; axis3 : direction) : LIST[2:3] OF direction;
LOCAL
u : LIST [2:3] OF direction;
factor : REAL;
d1 : direction;
d2 : direction;
END_LOCAL;
IF (dim = 3) THEN
d1 := NVL(normalise(axis3), dummy_gri||direction([0.000000, 0.000000, 1.000000]));
d2 := first_proj_axis(d1, axis1);
u := [d2, second_proj_axis(d1, d2, axis2), d1];
ELSE
IF EXISTS(axis1) THEN
d1 := normalise(axis1);
u := [d1, orthogonal_complement(d1)];
IF EXISTS(axis2) THEN
factor := dot_product(axis2, u[2]);
IF (factor < 0.000000) THEN
u[2].direction_ratios[1] := - u[2].direction_ratios[1];
u[2].direction_ratios[2] := - u[2].direction_ratios[2];
END_IF;
END_IF;
ELSE
IF EXISTS(axis2) THEN
d1 := normalise(axis2);
u := [orthogonal_complement(d1), d1];
u[1].direction_ratios[1] := - u[1].direction_ratios[1];
u[1].direction_ratios[2] := - u[1].direction_ratios[2];
ELSE
u := [dummy_gri||direction([1.000000, 0.000000]), dummy_gri||direction([0.000000, 1.000000])];
END_IF;
END_IF;
END_IF;
RETURN (u);
END_FUNCTION;
FUNCTION build_2axes
(ref_direction : direction) : LIST[2:2] OF direction;
LOCAL
d : direction := NVL(normalise(ref_direction), dummy_gri||direction([1.000000, 0.000000]));
END_LOCAL;
RETURN ([d, orthogonal_complement(d)]);
END_FUNCTION;
FUNCTION build_axes
(axis : direction; ref_direction : direction) : LIST[3:3] OF direction;
LOCAL
d1 : direction;
d2 : direction;
END_LOCAL;
d1 := NVL(normalise(axis), dummy_gri||direction([0.000000, 0.000000, 1.000000]));
d2 := first_proj_axis(d1, ref_direction);
RETURN ([d2, normalise(cross_product(d1, d2))\vector.orientation, d1]);
END_FUNCTION;
FUNCTION cross_product
(arg1 : direction; arg2 : direction) : vector;
LOCAL
mag : REAL;
res : direction;
v1 : LIST [3:3] OF REAL;
v2 : LIST [3:3] OF REAL;
result : vector;
END_LOCAL;
IF (NOT EXISTS(arg1) OR (arg1.dim = 2)) OR (NOT EXISTS(arg2) OR (arg2.dim = 2)) THEN
RETURN (?);
ELSE
BEGIN
v1 := normalise(arg1).direction_ratios;
v2 := normalise(arg2).direction_ratios;
res := dummy_gri||direction([(v1[2] * v2[3] - v1[3] * v2[2]), (v1[3] * v2[1] - v1[1] * v2[3]), (v1[1] * v2[2] - v1[2] * v2[1])]);
mag := 0.000000;
REPEAT i := 1 TO 3;
mag := mag + res.direction_ratios[i] * res.direction_ratios[i];
END_REPEAT;
IF (mag > 0.000000) THEN
result := dummy_gri||vector(res, SQRT(mag));
ELSE
result := dummy_gri||vector(arg1, 0.000000);
END_IF;
RETURN (result);
END;
END_IF;
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 'SYSTEM_STRUCTURE_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 dimension_of
(item : geometric_representation_item) : dimension_count;
LOCAL
x : SET OF representation;
y : representation_context;
dim : dimension_count;
END_LOCAL;
IF 'SYSTEM_STRUCTURE_MIM_LF.CARTESIAN_POINT' IN TYPEOF(item) THEN
dim := SIZEOF(item\cartesian_point.coordinates);
RETURN (dim);
END_IF;
IF 'SYSTEM_STRUCTURE_MIM_LF.DIRECTION' IN TYPEOF(item) THEN
dim := SIZEOF(item\direction.direction_ratios);
RETURN (dim);
END_IF;
IF 'SYSTEM_STRUCTURE_MIM_LF.VECTOR' IN TYPEOF(item) THEN
dim := SIZEOF(item\vector.orientation\direction.direction_ratios);
RETURN (dim);
END_IF;
x := using_representations(item);
y := x[1].context_of_items;
dim := y\geometric_representation_context.coordinate_space_dimension;
RETURN (dim);
END_FUNCTION;
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 dot_product
(arg1 : direction; arg2 : direction) : REAL;
LOCAL
scalar : REAL;
vec1 : direction;
vec2 : direction;
ndim : INTEGER;
END_LOCAL;
IF NOT EXISTS(arg1) OR NOT EXISTS(arg2) THEN
scalar := ?;
ELSE
IF (arg1.dim <> arg2.dim) THEN
scalar := ?;
ELSE
BEGIN
vec1 := normalise(arg1);
vec2 := normalise(arg2);
ndim := arg1.dim;
scalar := 0.000000;
REPEAT i := 1 TO ndim;
scalar := scalar + vec1.direction_ratios[i] * vec2.direction_ratios[i];
END_REPEAT;
END;
END_IF;
END_IF;
RETURN (scalar);
END_FUNCTION;
FUNCTION first_proj_axis
(z_axis : direction; arg : direction) : direction;
LOCAL
x_axis : direction;
v : direction;
z : direction;
x_vec : vector;
END_LOCAL;
IF (NOT EXISTS(z_axis)) THEN
RETURN (?);
ELSE
z := normalise(z_axis);
IF NOT EXISTS(arg) THEN
IF ((z.direction_ratios <> [1.000000, 0.000000, 0.000000]) AND (z.direction_ratios <> [ - 1.000000, 0.000000, 0.000000])) THEN
v := dummy_gri||direction([1.000000, 0.000000, 0.000000]);
ELSE
v := dummy_gri||direction([0.000000, 1.000000, 0.000000]);
END_IF;
ELSE
IF (arg.dim <> 3) THEN
RETURN (?);
END_IF;
IF ((cross_product(arg, z).magnitude) = 0.000000) THEN
RETURN (?);
ELSE
v := normalise(arg);
END_IF;
END_IF;
x_vec := scalar_times_vector(dot_product(v, z), z);
x_axis := vector_difference(v, x_vec).orientation;
x_axis := normalise(x_axis);
END_IF;
RETURN (x_axis);
END_FUNCTION;
FUNCTION get_description_value
(obj : description_attribute_select) : text;
LOCAL
description_bag : BAG OF description_attribute := (USEDIN(obj, 'SYSTEM_STRUCTURE_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_directed_link
(nodes : LIST OF representation; undirected_link : LIST OF chained_representation_link) : LIST OF representation_relationship;
LOCAL
directed_link : LIST OF representation_relationship := [];
END_LOCAL;
REPEAT i := 1 TO SIZEOF(undirected_link);
CASE TRUE OF
('SYSTEM_STRUCTURE_MIM_LF.REPRESENTATION_CONTEXT' IN TYPEOF(undirected_link[i])):
BEGIN
IF ((nodes[i]\representation.context_of_items :=: undirected_link[i]) AND (nodes[i + 1]\representation.context_of_items :=: undirected_link[i])) THEN
INSERT(directed_link, representation_relationship('', '', nodes[i], nodes[i + 1]), (i - 1));
ELSE
RETURN (?);
END_IF;
END;
('SYSTEM_STRUCTURE_MIM_LF.REPRESENTATION_RELATIONSHIP' IN TYPEOF(undirected_link[i])):
BEGIN
IF (((nodes[i] :=: undirected_link[i]\representation_relationship.rep_1) AND (nodes[i + 1] :=: undirected_link[i]\representation_relationship.rep_2)) OR ((nodes[i] :=: undirected_link[i]\representation_relationship.rep_2) AND (nodes[i + 1] :=: undirected_link[i]\representation_relationship.rep_1))) THEN
INSERT(directed_link, representation_relationship('', '', nodes[i], nodes[i + 1]), (i - 1));
ELSE
RETURN (?);
END_IF;
END;
('SYSTEM_STRUCTURE_MIM_LF.MAPPED_ITEM' IN TYPEOF(undirected_link[i])):
BEGIN
IF ((nodes[i] IN using_representations(undirected_link[i])) AND (nodes[i + 1] :=: undirected_link[i]\mapped_item.mapping_source\representation_map.mapped_representation)) THEN
INSERT(directed_link, representation_relationship('', '', nodes[i], nodes[i + 1]), (i - 1));
ELSE
RETURN (?);
END_IF;
END;
OTHERWISE:
RETURN (?);
END_CASE;
END_REPEAT;
RETURN (directed_link);
END_FUNCTION;
FUNCTION get_id_value
(obj : id_attribute_select) : identifier;
LOCAL
id_bag : BAG OF id_attribute := (USEDIN(obj, 'SYSTEM_STRUCTURE_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, 'SYSTEM_STRUCTURE_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, 'SYSTEM_STRUCTURE_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 item_in_context
(item : representation_item; cntxt : representation_context) : BOOLEAN;
LOCAL
y : BAG OF representation_item;
END_LOCAL;
IF SIZEOF(USEDIN(item, 'SYSTEM_STRUCTURE_MIM_LF.REPRESENTATION.ITEMS') * cntxt.representations_in_context) > 0 THEN
RETURN (TRUE);
ELSE
y := QUERY(z <* USEDIN(item, '') | 'SYSTEM_STRUCTURE_MIM_LF.REPRESENTATION_ITEM' IN TYPEOF(z));
IF SIZEOF(y) > 0 THEN
REPEAT i := 1 TO HIINDEX(y);
IF item_in_context(y[i], cntxt) THEN
RETURN (TRUE);
END_IF;
END_REPEAT;
END_IF;
END_IF;
RETURN (FALSE);
END_FUNCTION;
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 normalise
(arg : vector_or_direction) : vector_or_direction;
LOCAL
ndim : INTEGER;
v : direction;
result : vector_or_direction;
vec : vector;
mag : REAL;
END_LOCAL;
IF NOT EXISTS(arg) THEN
result := ?;
ELSE
ndim := arg.dim;
IF 'SYSTEM_STRUCTURE_MIM_LF.VECTOR' IN TYPEOF(arg) THEN
BEGIN
v := dummy_gri||direction(arg\vector.orientation.direction_ratios);
IF arg.magnitude = 0.000000 THEN
RETURN (?);
ELSE
vec := dummy_gri||vector(v, 1.000000);
END_IF;
END;
ELSE
v := dummy_gri||direction(arg.direction_ratios);
END_IF;
mag := 0.000000;
REPEAT i := 1 TO ndim;
mag := mag + v.direction_ratios[i] * v.direction_ratios[i];
END_REPEAT;
IF mag > 0.000000 THEN
mag := SQRT(mag);
REPEAT i := 1 TO ndim;
v.direction_ratios[i] := v.direction_ratios[i] / mag;
END_REPEAT;
IF 'SYSTEM_STRUCTURE_MIM_LF.VECTOR' IN TYPEOF(arg) THEN
vec.orientation := v;
result := vec;
ELSE
result := v;
END_IF;
ELSE
RETURN (?);
END_IF;
END_IF;
RETURN (result);
END_FUNCTION;
FUNCTION orthogonal_complement
(vec : direction) : direction;
LOCAL
result : direction;
END_LOCAL;
IF (vec.dim <> 2) OR NOT EXISTS(vec) THEN
RETURN (?);
ELSE
result := dummy_gri||direction([ - vec.direction_ratios[2], vec.direction_ratios[1]]);
RETURN (result);
END_IF;
END_FUNCTION;
FUNCTION scalar_times_vector
(scalar : REAL; vec : vector_or_direction) : vector;
LOCAL
v : direction;
mag : REAL;
result : vector;
END_LOCAL;
IF NOT EXISTS(scalar) OR NOT EXISTS(vec) THEN
RETURN (?);
ELSE
IF 'SYSTEM_STRUCTURE_MIM_LF.VECTOR' IN TYPEOF(vec) THEN
v := dummy_gri||direction(vec\vector.orientation.direction_ratios);
mag := scalar * vec.magnitude;
ELSE
v := dummy_gri||direction(vec.direction_ratios);
mag := scalar;
END_IF;
IF (mag < 0.000000) THEN
REPEAT i := 1 TO SIZEOF(v.direction_ratios);
v.direction_ratios[i] := - v.direction_ratios[i];
END_REPEAT;
mag := - mag;
END_IF;
result := dummy_gri||vector(normalise(v), mag);
END_IF;
RETURN (result);
END_FUNCTION;
FUNCTION second_proj_axis
(z_axis : direction; x_axis : direction; arg : direction) : direction;
LOCAL
y_axis : vector;
v : direction;
temp : vector;
END_LOCAL;
IF NOT EXISTS(arg) THEN
v := dummy_gri||direction([0.000000, 1.000000, 0.000000]);
ELSE
v := arg;
END_IF;
temp := scalar_times_vector(dot_product(v, z_axis), z_axis);
y_axis := vector_difference(v, temp);
temp := scalar_times_vector(dot_product(v, x_axis), x_axis);
y_axis := vector_difference(y_axis, temp);
y_axis := normalise(y_axis);
RETURN (y_axis.orientation);
END_FUNCTION;
FUNCTION type_check_function
(the_type : GENERIC; sub_names : SET OF STRING; criterion : INTEGER) : LOGICAL;
IF ((NOT EXISTS(the_type)) OR (NOT ({0 <= criterion <= 3})) OR (SIZEOF(sub_names) = 0)) THEN
RETURN (UNKNOWN);
ELSE
CASE criterion OF
0:
RETURN (SIZEOF(sub_names * TYPEOF(the_type)) > 0);
1:
RETURN (SIZEOF(sub_names * TYPEOF(the_type)) = 0);
2:
RETURN (SIZEOF(sub_names * TYPEOF(the_type)) = 1);
3:
RETURN (SIZEOF(sub_names * TYPEOF(the_type)) <= 1);
END_CASE;
END_IF;
END_FUNCTION;
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, '')) | ('SYSTEM_STRUCTURE_MIM_LF.REPRESENTATION_ITEM' IN TYPEOF(z)) OR ('SYSTEM_STRUCTURE_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, 'SYSTEM_STRUCTURE_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], 'SYSTEM_STRUCTURE_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 'SYSTEM_STRUCTURE_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 'SYSTEM_STRUCTURE_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 'SYSTEM_STRUCTURE_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 'SYSTEM_STRUCTURE_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 'SYSTEM_STRUCTURE_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 'SYSTEM_STRUCTURE_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 'SYSTEM_STRUCTURE_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 'SYSTEM_STRUCTURE_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 'SYSTEM_STRUCTURE_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 'SYSTEM_STRUCTURE_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 'SYSTEM_STRUCTURE_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 'SYSTEM_STRUCTURE_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 'SYSTEM_STRUCTURE_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 'SYSTEM_STRUCTURE_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 'SYSTEM_STRUCTURE_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 'SYSTEM_STRUCTURE_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 'SYSTEM_STRUCTURE_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 'SYSTEM_STRUCTURE_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 'SYSTEM_STRUCTURE_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 'SYSTEM_STRUCTURE_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 'SYSTEM_STRUCTURE_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 'SYSTEM_STRUCTURE_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 'SYSTEM_STRUCTURE_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 'SYSTEM_STRUCTURE_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 'SYSTEM_STRUCTURE_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 'SYSTEM_STRUCTURE_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 'SYSTEM_STRUCTURE_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 'SYSTEM_STRUCTURE_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 'SYSTEM_STRUCTURE_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 'SYSTEM_STRUCTURE_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 'SYSTEM_STRUCTURE_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 'SYSTEM_STRUCTURE_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 'SYSTEM_STRUCTURE_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 'SYSTEM_STRUCTURE_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 'SYSTEM_STRUCTURE_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;
FUNCTION value_range_wr1
(agg : compound_item_definition) : BOOLEAN;
BEGIN
IF (SIZEOF(agg) = 2) AND ((SIZEOF(QUERY(i1 <* agg | ('SYSTEM_STRUCTURE_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i1)))) = 2) OR (SIZEOF(QUERY(i2 <* agg | ('SYSTEM_STRUCTURE_MIM_LF.VALUE_REPRESENTATION_ITEM' IN TYPEOF(i2)))) = 2)) THEN
RETURN (TRUE);
ELSE
RETURN (FALSE);
END_IF;
END;
END_FUNCTION;
FUNCTION value_range_wr2
(agg : compound_item_definition) : BOOLEAN;
BEGIN
IF ((SIZEOF(QUERY(i <* agg | (i\representation_item.name = 'upper limit'))) = 1) AND (SIZEOF(QUERY(i <* agg | (i\representation_item.name = 'lower limit'))) = 1)) THEN
RETURN (TRUE);
ELSE
RETURN (FALSE);
END_IF;
END;
END_FUNCTION;
FUNCTION value_range_wr3
(agg : compound_item_definition) : BOOLEAN;
BEGIN
IF (SIZEOF(QUERY(i1 <* agg | ('SYSTEM_STRUCTURE_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i1)) AND (SIZEOF(QUERY(i2 <* agg | ('SYSTEM_STRUCTURE_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i2)) AND (i1 :<>: i2) AND (i1\measure_with_unit.unit_component :=: i2\measure_with_unit.unit_component))) = 1))) = 2) THEN
RETURN (TRUE);
ELSE
RETURN (FALSE);
END_IF;
END;
END_FUNCTION;
FUNCTION vector_difference
(arg1 : vector_or_direction; arg2 : vector_or_direction) : vector;
LOCAL
result : vector;
res : direction;
vec1 : direction;
vec2 : direction;
mag : REAL;
mag1 : REAL;
mag2 : REAL;
ndim : INTEGER;
END_LOCAL;
IF ((NOT EXISTS(arg1)) OR (NOT EXISTS(arg2))) OR (arg1.dim <> arg2.dim) THEN
RETURN (?);
ELSE
BEGIN
IF 'SYSTEM_STRUCTURE_MIM_LF.VECTOR' IN TYPEOF(arg1) THEN
mag1 := arg1.magnitude;
vec1 := arg1\vector.orientation;
ELSE
mag1 := 1.000000;
vec1 := arg1;
END_IF;
IF 'SYSTEM_STRUCTURE_MIM_LF.VECTOR' IN TYPEOF(arg2) THEN
mag2 := arg2.magnitude;
vec2 := arg2\vector.orientation;
ELSE
mag2 := 1.000000;
vec2 := arg2;
END_IF;
vec1 := normalise(vec1);
vec2 := normalise(vec2);
ndim := SIZEOF(vec1.direction_ratios);
mag := 0.000000;
res := dummy_gri||direction(vec1.direction_ratios);
REPEAT i := 1 TO ndim;
res.direction_ratios[i] := mag1 * vec1.direction_ratios[i] - mag2 * vec2.direction_ratios[i];
mag := mag + (res.direction_ratios[i] * res.direction_ratios[i]);
END_REPEAT;
IF (mag > 0.000000) THEN
result := dummy_gri||vector(res, SQRT(mag));
ELSE
result := dummy_gri||vector(vec1, 0.000000);
END_IF;
END;
END_IF;
RETURN (result);
END_FUNCTION;
END_SCHEMA; -- System_structure_mim_LF
© ISO 2011 — All rights reserved