| Application module: State based behaviour | ISO/TS 10303-1371:2011-10(E) © ISO |
(*
ISO TC184/SC4/WG3 N2762 - ISO/TS 10303-1371 State based behaviour - EXPRESS MIM Long form
Supersedes
ISO TC184/SC4/WG3 N2514
*)
SCHEMA State_based_behaviour_mim_LF;
TYPE absorbed_dose_measure =
REAL;
END_TYPE;
TYPE acceleration_measure =
REAL;
END_TYPE;
TYPE action_items =
SELECT
(state_type);
END_TYPE;
TYPE action_method_items =
SELECT
(action_method,
action_method_relationship,
applied_action_method_assignment,
applied_classification_assignment,
applied_expression_assignment,
applied_identification_assignment,
general_property,
parameter_value_select,
product,
product_definition_formation,
property_definition,
property_definition_representation,
state_type,
state_type_relationship);
END_TYPE;
TYPE amount_of_substance_measure =
REAL;
END_TYPE;
TYPE area_measure =
REAL;
END_TYPE;
TYPE capacitance_measure =
REAL;
END_TYPE;
TYPE celsius_temperature_measure =
REAL;
END_TYPE;
TYPE characterized_action_definition =
SELECT
(action,
action_method,
action_method_relationship,
action_relationship);
END_TYPE;
TYPE characterized_definition =
SELECT
(characterized_object);
END_TYPE;
TYPE classification_item =
SELECT
(action_method,
action_method_relationship,
applied_action_method_assignment,
applied_description_text_assignment,
applied_expression_assignment,
applied_external_identification_assignment,
applied_identification_assignment,
class,
constrained_general_parameter_relationship,
derived_unit,
description_text,
document_file,
expression,
external_class_library,
general_model_parameter,
general_property,
general_property_relationship,
identification_assignment_relationship,
measure_with_unit,
named_unit,
parameter_value_representation_item,
product,
product_definition,
product_definition_context,
product_definition_formation,
product_definition_formation_relationship,
product_relationship,
property_definition,
property_definition_representation,
representation,
representation_context,
representation_item,
representation_relationship,
state_type,
state_type_assignment,
state_type_relationship,
text_based_representation);
END_TYPE;
TYPE compound_item_definition =
SELECT
(list_representation_item,
set_representation_item);
END_TYPE;
TYPE conductance_measure =
REAL;
END_TYPE;
TYPE context_dependent_measure =
REAL;
END_TYPE;
TYPE count_measure =
NUMBER;
END_TYPE;
TYPE derived_property_select =
SELECT
(action_property,
property_definition);
END_TYPE;
TYPE description_attribute_select =
SELECT
(application_context,
external_source,
property_definition_representation,
representation);
END_TYPE;
TYPE description_item =
SELECT
(action_method,
action_method_relationship,
applied_action_method_assignment,
applied_description_text_assignment,
applied_external_identification_assignment,
applied_identification_assignment,
class,
derived_unit,
document_file,
expression,
external_source,
general_property,
general_property_relationship,
identification_assignment_relationship,
measure_with_unit,
named_unit,
product,
product_definition,
product_definition_context,
product_definition_formation,
product_definition_formation_relationship,
product_relationship,
property_definition,
property_definition_representation,
representation,
representation_item,
representation_relationship,
state_type,
state_type_relationship,
state_type_role);
END_TYPE;
TYPE descriptive_measure =
STRING;
END_TYPE;
TYPE document_reference_item =
SELECT
(external_state_based_behaviour_model);
END_TYPE;
TYPE dose_equivalent_measure =
REAL;
END_TYPE;
TYPE electric_charge_measure =
REAL;
END_TYPE;
TYPE electric_current_measure =
REAL;
END_TYPE;
TYPE electric_potential_measure =
REAL;
END_TYPE;
TYPE energy_measure =
REAL;
END_TYPE;
TYPE expression_assignment_item =
SELECT
(condition);
END_TYPE;
TYPE external_identification_item =
SELECT
(document_file,
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 groupable_item =
SELECT
(action_method,
action_method_relationship,
applied_action_method_assignment,
applied_classification_assignment,
applied_description_text_assignment,
applied_external_identification_assignment,
applied_identification_assignment,
applied_name_assignment,
class,
collection_assignment,
collection_membership,
derived_unit,
derived_unit_element,
description_text,
document_file,
external_source,
general_property,
general_property_relationship,
identification_assignment_relationship,
measure_with_unit,
named_unit,
parameter_value_representation_item,
parameter_value_select,
product,
product_definition,
product_definition_context,
product_definition_formation,
product_definition_formation_relationship,
product_relationship,
property_definition,
property_definition_representation,
representation,
representation_context,
representation_item,
representation_relationship,
same_as_external_item_assignment,
state_based_behaviour_model,
state_type,
state_type_assignment,
state_type_relationship,
state_type_role)
;
WHERE
WR1: NOT ('STATE_BASED_BEHAVIOUR_MIM_LF.GROUP' IN TYPEOF(SELF));
END_TYPE;
TYPE id_attribute_select =
SELECT
(action,
application_context,
group,
product_category,
property_definition,
representation);
END_TYPE;
TYPE identification_item =
SELECT
(action_method,
action_method_relationship,
applied_action_method_assignment,
applied_description_text_assignment,
applied_external_identification_assignment,
class,
document_file,
external_class_library,
general_property,
general_property_relationship,
identification_assignment_relationship,
product,
product_definition,
product_definition_context,
product_definition_formation,
product_relationship,
property_definition,
representation,
representation_item,
state_type,
state_type_assignment,
state_type_relationship);
END_TYPE;
TYPE identifier =
STRING;
END_TYPE;
TYPE illuminance_measure =
REAL;
END_TYPE;
TYPE inductance_measure =
REAL;
END_TYPE;
TYPE label =
STRING;
END_TYPE;
TYPE length_measure =
REAL;
END_TYPE;
TYPE list_representation_item =
LIST[1:?] OF representation_item;
END_TYPE;
TYPE luminous_flux_measure =
REAL;
END_TYPE;
TYPE luminous_intensity_measure =
REAL;
END_TYPE;
TYPE magnetic_flux_density_measure =
REAL;
END_TYPE;
TYPE magnetic_flux_measure =
REAL;
END_TYPE;
TYPE mass_measure =
REAL;
END_TYPE;
TYPE measure_value =
SELECT
(absorbed_dose_measure,
acceleration_measure,
amount_of_substance_measure,
area_measure,
capacitance_measure,
celsius_temperature_measure,
conductance_measure,
context_dependent_measure,
count_measure,
descriptive_measure,
dose_equivalent_measure,
electric_charge_measure,
electric_current_measure,
electric_potential_measure,
energy_measure,
force_measure,
frequency_measure,
illuminance_measure,
inductance_measure,
length_measure,
luminous_flux_measure,
luminous_intensity_measure,
magnetic_flux_density_measure,
magnetic_flux_measure,
mass_measure,
non_negative_length_measure,
numeric_measure,
parameter_value,
plane_angle_measure,
positive_length_measure,
positive_plane_angle_measure,
positive_ratio_measure,
power_measure,
pressure_measure,
radioactivity_measure,
ratio_measure,
resistance_measure,
solid_angle_measure,
thermodynamic_temperature_measure,
time_measure,
velocity_measure,
volume_measure);
END_TYPE;
TYPE message =
STRING;
END_TYPE;
TYPE name_attribute_select =
SELECT
(derived_unit,
product_definition,
property_definition_representation);
END_TYPE;
TYPE name_item =
SELECT
(applied_action_method_assignment,
external_class_library);
END_TYPE;
TYPE non_negative_length_measure =
length_measure
;
WHERE
WR1: SELF >= 0.000000;
END_TYPE;
TYPE numeric_measure =
NUMBER;
END_TYPE;
TYPE parameter_value =
REAL;
END_TYPE;
TYPE parameter_value_select =
SELECT
(generic_expression,
measure_with_unit,
product_definition,
representation,
representation_item,
state_type);
END_TYPE;
TYPE plane_angle_measure =
REAL;
END_TYPE;
TYPE positive_length_measure =
non_negative_length_measure
;
WHERE
WR1: SELF > 0.000000;
END_TYPE;
TYPE positive_plane_angle_measure =
plane_angle_measure
;
WHERE
WR1: SELF > 0.000000;
END_TYPE;
TYPE positive_ratio_measure =
ratio_measure
;
WHERE
WR1: SELF > 0.000000;
END_TYPE;
TYPE power_measure =
REAL;
END_TYPE;
TYPE pressure_measure =
REAL;
END_TYPE;
TYPE product_or_formation_or_definition =
SELECT
(product,
product_definition,
product_definition_formation);
END_TYPE;
TYPE radioactivity_measure =
REAL;
END_TYPE;
TYPE ratio_measure =
REAL;
END_TYPE;
TYPE representation_proxy_select =
SELECT
(action_method,
state_type,
state_type_relationship);
END_TYPE;
TYPE represented_definition =
SELECT
(general_property,
property_definition);
END_TYPE;
TYPE resistance_measure =
REAL;
END_TYPE;
TYPE role_select =
SELECT
(action_assignment,
document_reference,
group_assignment,
name_assignment);
END_TYPE;
TYPE same_as_item =
SELECT
(action_method,
applied_action_method_assignment,
applied_external_identification_assignment,
derived_unit,
derived_unit_element,
description_text,
external_source,
general_property,
measure_with_unit,
named_unit,
product,
product_definition,
product_definition_context,
product_definition_formation,
representation_context,
state_type,
state_type_role);
END_TYPE;
TYPE set_representation_item =
SET[1:?] OF representation_item;
END_TYPE;
TYPE si_prefix =
ENUMERATION
OF
(exa,
peta,
tera,
giga,
mega,
kilo,
hecto,
deca,
deci,
centi,
milli,
micro,
nano,
pico,
femto,
atto);
END_TYPE;
TYPE si_unit_name =
ENUMERATION
OF
(metre,
gram,
second,
ampere,
kelvin,
mole,
candela,
radian,
steradian,
hertz,
newton,
pascal,
joule,
watt,
coulomb,
volt,
farad,
ohm,
siemens,
weber,
tesla,
henry,
degree_Celsius,
lumen,
lux,
becquerel,
gray,
sievert);
END_TYPE;
TYPE solid_angle_measure =
REAL;
END_TYPE;
TYPE source_item =
SELECT
(identifier,
message);
END_TYPE;
TYPE state_based_behaviour_element =
SELECT
(state_type,
state_type_relationship);
END_TYPE;
TYPE state_type_of_item =
SELECT
(action_method,
applied_action_method_assignment,
applied_external_identification_assignment,
document_file,
group,
product,
product_definition,
product_definition_formation);
END_TYPE;
TYPE text =
STRING;
END_TYPE;
TYPE text_based_item_select =
SELECT
(included_text_based_representation,
textual_expression_composition,
textual_expression_representation_item);
END_TYPE;
TYPE thermodynamic_temperature_measure =
REAL;
END_TYPE;
TYPE time_measure =
REAL;
END_TYPE;
TYPE unit =
SELECT
(derived_unit,
named_unit);
END_TYPE;
TYPE velocity_measure =
REAL;
END_TYPE;
TYPE volume_measure =
REAL;
END_TYPE;
ENTITY absorbed_dose_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1: 'STATE_BASED_BEHAVIOUR_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: 'STATE_BASED_BEHAVIOUR_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, 'STATE_BASED_BEHAVIOUR_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, 'STATE_BASED_BEHAVIOUR_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
END_ENTITY;
ENTITY action_method;
name : label;
description :
OPTIONAL
text;
consequence : text;
purpose : text;
END_ENTITY;
ENTITY action_method_assignment
ABSTRACT SUPERTYPE
;
assigned_action_method : action_method;
role : action_method_role;
END_ENTITY;
ENTITY action_method_relationship;
name : label;
description :
OPTIONAL
text;
relating_method : action_method;
related_method : action_method;
END_ENTITY;
ENTITY action_method_role;
name : label;
description :
OPTIONAL
text;
END_ENTITY;
ENTITY action_property;
name : label;
description : text;
definition : characterized_action_definition;
END_ENTITY;
ENTITY action_property_representation;
name : label;
description : text;
property : action_property;
representation : representation;
END_ENTITY;
ENTITY action_relationship;
name : label;
description :
OPTIONAL
text;
relating_action : action;
related_action : action;
END_ENTITY;
ENTITY action_status;
status : label;
assigned_action : executed_action;
END_ENTITY;
ENTITY amount_of_substance_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1: 'STATE_BASED_BEHAVIOUR_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 and_expression
SUBTYPE OF (multiple_arity_boolean_expression);
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, 'STATE_BASED_BEHAVIOUR_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
WR2: SIZEOF(USEDIN(SELF, 'STATE_BASED_BEHAVIOUR_MIM_LF.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1;
END_ENTITY;
ENTITY application_context_element
SUPERTYPE OF
(ONEOF (product_context,
product_definition_context));
name : label;
frame_of_reference : application_context;
END_ENTITY;
ENTITY applied_action_assignment
SUBTYPE OF (action_assignment);
items : SET[1:?] OF action_items;
END_ENTITY;
ENTITY applied_action_method_assignment
SUBTYPE OF (action_method_assignment);
items : SET[1:?] OF action_method_items;
END_ENTITY;
ENTITY applied_classification_assignment
SUBTYPE OF (classification_assignment);
items : SET[1:?] OF classification_item;
END_ENTITY;
ENTITY applied_description_text_assignment
SUBTYPE OF (description_text_assignment);
items : SET[1:?] OF description_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_expression_assignment
SUBTYPE OF (expression_assignment);
items : SET[1:?] OF expression_assignment_item;
END_ENTITY;
ENTITY applied_external_identification_assignment
SUBTYPE OF (external_identification_assignment);
items : SET[1:?] OF external_identification_item;
END_ENTITY;
ENTITY applied_group_assignment
SUBTYPE OF (group_assignment);
items : SET[1:?] OF groupable_item;
END_ENTITY;
ENTITY applied_identification_assignment
SUBTYPE OF (identification_assignment);
items : SET[1:?] OF identification_item;
END_ENTITY;
ENTITY applied_name_assignment
SUBTYPE OF (name_assignment);
item : name_item;
END_ENTITY;
ENTITY applied_state_type_assignment
SUBTYPE OF (state_type_assignment);
items : SET[1:?] OF state_type_of_item;
END_ENTITY;
ENTITY area_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1: 'STATE_BASED_BEHAVIOUR_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 binary_boolean_expression
ABSTRACT SUPERTYPE
OF (ONEOF (xor_expression,
equals_expression))
SUBTYPE OF (binary_generic_expression, boolean_expression);
END_ENTITY;
ENTITY binary_function_call
ABSTRACT SUPERTYPE
SUBTYPE OF (binary_numeric_expression);
END_ENTITY;
ENTITY binary_generic_expression
ABSTRACT SUPERTYPE
SUBTYPE OF (generic_expression);
operands : LIST[2:2] OF generic_expression;
END_ENTITY;
ENTITY binary_numeric_expression
ABSTRACT SUPERTYPE
OF (ONEOF (minus_expression,
div_expression,
mod_expression,
slash_expression,
power_expression,
binary_function_call))
SUBTYPE OF (binary_generic_expression, numeric_expression);
SELF\binary_generic_expression.operands : LIST[2:2] OF numeric_expression;
END_ENTITY;
ENTITY boolean_defined_function
ABSTRACT SUPERTYPE
SUBTYPE OF (boolean_expression, defined_function);
END_ENTITY;
ENTITY boolean_expression
ABSTRACT SUPERTYPE
OF (ONEOF (simple_boolean_expression,
unary_boolean_expression,
binary_boolean_expression,
multiple_arity_boolean_expression,
comparison_expression,
interval_expression,
boolean_defined_function))
SUBTYPE OF (expression);
END_ENTITY;
ENTITY boolean_literal
SUBTYPE OF (generic_literal, simple_boolean_expression);
the_value : BOOLEAN;
END_ENTITY;
ENTITY boolean_variable
SUBTYPE OF (simple_boolean_expression, variable);
END_ENTITY;
ENTITY capacitance_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1: 'STATE_BASED_BEHAVIOUR_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 celsius_temperature_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1: 'STATE_BASED_BEHAVIOUR_MIM_LF.THERMODYNAMIC_TEMPERATURE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
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 comparison_equal
SUBTYPE OF (comparison_expression);
END_ENTITY;
ENTITY comparison_expression
ABSTRACT SUPERTYPE
OF (ONEOF (comparison_equal,
comparison_greater,
comparison_greater_equal,
comparison_less,
comparison_less_equal,
comparison_not_equal,
like_expression))
SUBTYPE OF (binary_generic_expression, boolean_expression);
SELF\binary_generic_expression.operands : LIST[2:2] OF expression;
WHERE
WR1: (('STATE_BASED_BEHAVIOUR_MIM_LF.NUMERIC_EXPRESSION' IN TYPEOF(SELF\binary_generic_expression.operands[1])) AND ('STATE_BASED_BEHAVIOUR_MIM_LF.NUMERIC_EXPRESSION'
IN TYPEOF(SELF\binary_generic_expression.operands[2]))) OR (('STATE_BASED_BEHAVIOUR_MIM_LF.BOOLEAN_EXPRESSION' IN TYPEOF(SELF\binary_generic_expression.operands[1]))
AND ('STATE_BASED_BEHAVIOUR_MIM_LF.BOOLEAN_EXPRESSION' IN TYPEOF(SELF\binary_generic_expression.operands[2]))) OR (('STATE_BASED_BEHAVIOUR_MIM_LF.STRING_EXPRESSION'
IN TYPEOF(SELF\binary_generic_expression.operands[1])) AND ('STATE_BASED_BEHAVIOUR_MIM_LF.STRING_EXPRESSION' IN TYPEOF(SELF\binary_generic_expression.operands[2])));
END_ENTITY;
ENTITY comparison_greater
SUBTYPE OF (comparison_expression);
END_ENTITY;
ENTITY comparison_greater_equal
SUBTYPE OF (comparison_expression);
END_ENTITY;
ENTITY comparison_less
SUBTYPE OF (comparison_expression);
END_ENTITY;
ENTITY comparison_less_equal
SUBTYPE OF (comparison_expression);
END_ENTITY;
ENTITY comparison_not_equal
SUBTYPE OF (comparison_expression);
END_ENTITY;
ENTITY compound_representation_item
SUBTYPE OF (representation_item);
item_element : compound_item_definition;
END_ENTITY;
ENTITY concat_expression
SUBTYPE OF (multiple_arity_generic_expression, string_expression);
SELF\multiple_arity_generic_expression.operands : LIST[2:?] OF string_expression;
END_ENTITY;
ENTITY condition
SUBTYPE OF (action_method);
END_ENTITY;
ENTITY conductance_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1: 'STATE_BASED_BEHAVIOUR_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 constrained_general_parameter_relationship
SUBTYPE OF (general_property_relationship);
SELF\general_property_relationship.related_property : general_model_parameter;
SELF\general_property_relationship.relating_property : general_model_parameter;
END_ENTITY;
ENTITY context_dependent_unit
SUBTYPE OF (named_unit);
name : label;
END_ENTITY;
ENTITY conversion_based_unit
SUBTYPE OF (named_unit);
name : label;
conversion_factor : measure_with_unit;
WHERE
WR1: SELF\named_unit.dimensions = derive_dimensional_exponents(conversion_factor\measure_with_unit.unit_component);
END_ENTITY;
ENTITY defined_function
ABSTRACT SUPERTYPE
OF ((ONEOF (string_defined_function,
boolean_defined_function))
ANDOR SQL_mappable_defined_function);
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, 'STATE_BASED_BEHAVIOUR_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 description_text;
description : text;
END_ENTITY;
ENTITY description_text_assignment
ABSTRACT SUPERTYPE
;
description : description_text;
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 div_expression
SUBTYPE OF (binary_numeric_expression);
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 ('STATE_BASED_BEHAVIOUR_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,
'STATE_BASED_BEHAVIOUR_MIM_LF.' + 'PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') | prpc.name = 'document')) = 1));
WR3: NOT ('STATE_BASED_BEHAVIOUR_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,
'STATE_BASED_BEHAVIOUR_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') | prpc.name = 'document')) = 1));
WR4: NOT ('STATE_BASED_BEHAVIOUR_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,
'STATE_BASED_BEHAVIOUR_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, 'STATE_BASED_BEHAVIOUR_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
END_ENTITY;
ENTITY document_representation_type;
name : label;
represented_document : document;
END_ENTITY;
ENTITY document_type;
product_data_type : label;
END_ENTITY;
ENTITY document_usage_constraint;
source : document;
subject_element : label;
subject_element_value : text;
END_ENTITY;
ENTITY document_usage_constraint_assignment
ABSTRACT SUPERTYPE
;
assigned_document_usage : document_usage_constraint;
role : document_usage_role;
END_ENTITY;
ENTITY document_usage_role;
name : label;
description :
OPTIONAL
text;
END_ENTITY;
ENTITY dose_equivalent_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1: 'STATE_BASED_BEHAVIOUR_MIM_LF.DOSE_EQUIVALENT_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY;
ENTITY dose_equivalent_unit
SUBTYPE OF (derived_unit);
WHERE
WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit(sievert);
END_ENTITY;
ENTITY electric_charge_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1: 'STATE_BASED_BEHAVIOUR_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: 'STATE_BASED_BEHAVIOUR_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: 'STATE_BASED_BEHAVIOUR_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: 'STATE_BASED_BEHAVIOUR_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;
syntactic_representation : generic_variable;
semantics : variable_semantics;
END_ENTITY;
ENTITY equals_expression
SUBTYPE OF (binary_boolean_expression);
END_ENTITY;
ENTITY executed_action
SUBTYPE OF (action);
END_ENTITY;
ENTITY expression
ABSTRACT SUPERTYPE
OF (ONEOF (numeric_expression,
boolean_expression,
string_expression))
SUBTYPE OF (generic_expression);
END_ENTITY;
ENTITY expression_assignment
ABSTRACT SUPERTYPE
;
assigned_expression : expression;
role : expression_role;
END_ENTITY;
ENTITY expression_role;
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_source;
source_id : source_item;
DERIVE
description : text := get_description_value(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF, 'STATE_BASED_BEHAVIOUR_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 external_state_based_behaviour_model
SUBTYPE OF (state_based_behaviour_model);
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: 'STATE_BASED_BEHAVIOUR_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 format_function
SUBTYPE OF (binary_generic_expression, string_expression);
DERIVE
value_to_format : generic_expression := SELF\binary_generic_expression.operands[1];
format_string : generic_expression := SELF\binary_generic_expression.operands[2];
WHERE
WR1: (('STATE_BASED_BEHAVIOUR_MIM_LF.NUMERIC_EXPRESSION') IN TYPEOF(value_to_format)) AND (('STATE_BASED_BEHAVIOUR_MIM_LF.STRING_EXPRESSION')
IN TYPEOF(format_string));
END_ENTITY;
ENTITY frequency_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1: 'STATE_BASED_BEHAVIOUR_MIM_LF.FREQUENCY_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY;
ENTITY frequency_unit
SUBTYPE OF (derived_unit);
WHERE
WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit(hertz);
END_ENTITY;
ENTITY general_model_parameter
SUBTYPE OF (general_property);
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, 'STATE_BASED_BEHAVIOUR_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 generic_expression
ABSTRACT SUPERTYPE
OF (ONEOF (simple_generic_expression,
unary_generic_expression,
binary_generic_expression,
multiple_arity_generic_expression));
WHERE
WR1: is_acyclic(SELF);
END_ENTITY;
ENTITY generic_literal
ABSTRACT SUPERTYPE
SUBTYPE OF (simple_generic_expression);
END_ENTITY;
ENTITY generic_variable
ABSTRACT SUPERTYPE
SUBTYPE OF (simple_generic_expression);
INVERSE
interpretation : environment FOR syntactic_representation;
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, 'STATE_BASED_BEHAVIOUR_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, 'STATE_BASED_BEHAVIOUR_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
END_ENTITY;
ENTITY group_relationship;
name : label;
description :
OPTIONAL
text;
relating_group : group;
related_group : group;
END_ENTITY;
ENTITY id_attribute;
attribute_value : identifier;
identified_item : id_attribute_select;
END_ENTITY;
ENTITY identification_assignment
ABSTRACT SUPERTYPE
;
assigned_id : identifier;
role : identification_role;
END_ENTITY;
ENTITY identification_assignment_relationship;
name : label;
description :
OPTIONAL
text;
relating_identification_assignment : identification_assignment;
related_identification_assignment : identification_assignment;
END_ENTITY;
ENTITY identification_role;
name : label;
description :
OPTIONAL
text;
END_ENTITY;
ENTITY illuminance_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1: 'STATE_BASED_BEHAVIOUR_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 included_text_based_representation
SUBTYPE OF (representation_item);
END_ENTITY;
ENTITY index_expression
SUBTYPE OF (binary_generic_expression, string_expression);
DERIVE
operand : generic_expression := SELF\binary_generic_expression.operands[1];
index : generic_expression := SELF\binary_generic_expression.operands[2];
WHERE
WR1: ('STATE_BASED_BEHAVIOUR_MIM_LF.STRING_EXPRESSION' IN TYPEOF(operand)) AND ('STATE_BASED_BEHAVIOUR_MIM_LF.NUMERIC_EXPRESSION'
IN TYPEOF(index));
WR2: is_int_expr(index);
END_ENTITY;
ENTITY inductance_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1: 'STATE_BASED_BEHAVIOUR_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 int_literal
SUBTYPE OF (literal_number);
SELF\literal_number.the_value : INTEGER;
END_ENTITY;
ENTITY int_numeric_variable
SUBTYPE OF (numeric_variable);
END_ENTITY;
ENTITY interval_expression
SUBTYPE OF (boolean_expression, multiple_arity_generic_expression);
DERIVE
interval_low : generic_expression := SELF\multiple_arity_generic_expression.operands[1];
interval_item : generic_expression := SELF\multiple_arity_generic_expression.operands[2];
interval_high : generic_expression := SELF\multiple_arity_generic_expression.operands[3];
WHERE
WR1: ('STATE_BASED_BEHAVIOUR_MIM_LF.EXPRESSION' IN TYPEOF(interval_low)) AND ('STATE_BASED_BEHAVIOUR_MIM_LF.EXPRESSION' IN
TYPEOF(interval_item)) AND ('STATE_BASED_BEHAVIOUR_MIM_LF.EXPRESSION' IN TYPEOF(interval_high));
WR2: (('STATE_BASED_BEHAVIOUR_MIM_LF.STRING_EXPRESSION' IN TYPEOF(SELF.interval_low)) AND ('STATE_BASED_BEHAVIOUR_MIM_LF.STRING_EXPRESSION'
IN TYPEOF(SELF.interval_high)) AND ('STATE_BASED_BEHAVIOUR_MIM_LF.STRING_EXPRESSION' IN TYPEOF(SELF.interval_item))) OR (('STATE_BASED_BEHAVIOUR_MIM_LF.STRING_EXPRESSION'
IN TYPEOF(SELF.interval_low)) AND ('STATE_BASED_BEHAVIOUR_MIM_LF.NUMERIC_EXPRESSION' IN TYPEOF(SELF.interval_item)) AND ('STATE_BASED_BEHAVIOUR_MIM_LF.NUMERIC_EXPRESSION'
IN TYPEOF(SELF.interval_high)));
END_ENTITY;
ENTITY length_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1: 'STATE_BASED_BEHAVIOUR_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 like_expression
SUBTYPE OF (comparison_expression);
WHERE
WR1: ('STATE_BASED_BEHAVIOUR_MIM_LF.STRING_EXPRESSION' IN TYPEOF(SELF\binary_generic_expression.operands[1])) AND ('STATE_BASED_BEHAVIOUR_MIM_LF.STRING_EXPRESSION'
IN TYPEOF(SELF\binary_generic_expression.operands[2]));
END_ENTITY;
ENTITY literal_number
ABSTRACT SUPERTYPE
OF (ONEOF (int_literal,
real_literal))
SUBTYPE OF (generic_literal, simple_numeric_expression);
the_value : NUMBER;
END_ENTITY;
ENTITY luminous_flux_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1: 'STATE_BASED_BEHAVIOUR_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: 'STATE_BASED_BEHAVIOUR_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: 'STATE_BASED_BEHAVIOUR_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: 'STATE_BASED_BEHAVIOUR_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 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: 'STATE_BASED_BEHAVIOUR_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_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 minus_expression
SUBTYPE OF (binary_numeric_expression);
END_ENTITY;
ENTITY mod_expression
SUBTYPE OF (binary_numeric_expression);
END_ENTITY;
ENTITY mult_expression
SUBTYPE OF (multiple_arity_numeric_expression);
END_ENTITY;
ENTITY multiple_arity_boolean_expression
ABSTRACT SUPERTYPE
OF (ONEOF (and_expression,
or_expression))
SUBTYPE OF (boolean_expression, multiple_arity_generic_expression);
SELF\multiple_arity_generic_expression.operands : LIST[2:?] OF boolean_expression;
END_ENTITY;
ENTITY multiple_arity_function_call
ABSTRACT SUPERTYPE
SUBTYPE OF (multiple_arity_numeric_expression);
END_ENTITY;
ENTITY multiple_arity_generic_expression
ABSTRACT SUPERTYPE
SUBTYPE OF (generic_expression);
operands : LIST[2:?] OF generic_expression;
END_ENTITY;
ENTITY multiple_arity_numeric_expression
ABSTRACT SUPERTYPE
OF (ONEOF (plus_expression,
mult_expression,
multiple_arity_function_call))
SUBTYPE OF (multiple_arity_generic_expression, numeric_expression);
SELF\multiple_arity_generic_expression.operands : LIST[2:?] OF numeric_expression;
END_ENTITY;
ENTITY name_assignment
ABSTRACT SUPERTYPE
;
assigned_name : label;
DERIVE
role : object_role := get_role(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF, 'STATE_BASED_BEHAVIOUR_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 not_expression
SUBTYPE OF (unary_boolean_expression);
SELF\unary_generic_expression.operand : boolean_expression;
END_ENTITY;
ENTITY numeric_expression
ABSTRACT SUPERTYPE
OF (ONEOF (simple_numeric_expression,
unary_numeric_expression,
binary_numeric_expression,
multiple_arity_numeric_expression))
SUBTYPE OF (expression);
DERIVE
is_int : LOGICAL := is_int_expr(SELF);
sql_mappable : LOGICAL := is_SQL_mappable(SELF);
END_ENTITY;
ENTITY numeric_variable
SUPERTYPE OF
(ONEOF (int_numeric_variable,
real_numeric_variable))
SUBTYPE OF (simple_numeric_expression, variable);
WHERE
WR1: ('STATE_BASED_BEHAVIOUR_MIM_LF.INT_NUMERIC_VARIABLE' IN TYPEOF(SELF)) OR ('STATE_BASED_BEHAVIOUR_MIM_LF.REAL_NUMERIC_VARIABLE'
IN TYPEOF(SELF));
END_ENTITY;
ENTITY object_role;
name : label;
description :
OPTIONAL
text;
END_ENTITY;
ENTITY or_expression
SUBTYPE OF (multiple_arity_boolean_expression);
END_ENTITY;
ENTITY parameter_value_representation_item
SUBTYPE OF (representation_item);
END_ENTITY;
ENTITY plane_angle_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1: 'STATE_BASED_BEHAVIOUR_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 plus_expression
SUBTYPE OF (multiple_arity_numeric_expression);
END_ENTITY;
ENTITY power_expression
SUBTYPE OF (binary_numeric_expression);
END_ENTITY;
ENTITY power_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1: 'STATE_BASED_BEHAVIOUR_MIM_LF.POWER_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY;
ENTITY power_unit
SUBTYPE OF (derived_unit);
WHERE
WR1: derive_dimensional_exponents(SELF) = dimensions_for_si_unit(watt);
END_ENTITY;
ENTITY pre_defined_item;
name : label;
END_ENTITY;
ENTITY pressure_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1: 'STATE_BASED_BEHAVIOUR_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_category;
name : label;
description :
OPTIONAL
text;
DERIVE
id : identifier := get_id_value(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF, 'STATE_BASED_BEHAVIOUR_MIM_LF.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1;
END_ENTITY;
ENTITY product_context
SUBTYPE OF (application_context_element);
discipline_type : label;
END_ENTITY;
ENTITY product_definition;
id : identifier;
description :
OPTIONAL
text;
formation : product_definition_formation;
frame_of_reference : product_definition_context;
DERIVE
name : label := get_name_value(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF, 'STATE_BASED_BEHAVIOUR_MIM_LF.' + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1;
END_ENTITY;
ENTITY product_definition_context
SUBTYPE OF (application_context_element);
life_cycle_stage : label;
END_ENTITY;
ENTITY product_definition_context_association;
definition : product_definition;
frame_of_reference : product_definition_context;
role : product_definition_context_role;
END_ENTITY;
ENTITY product_definition_context_role;
name : label;
description :
OPTIONAL
text;
END_ENTITY;
ENTITY product_definition_formation;
id : identifier;
description :
OPTIONAL
text;
of_product : product;
UNIQUE
UR1: id, of_product;
END_ENTITY;
ENTITY product_definition_formation_relationship;
id : identifier;
name : label;
description :
OPTIONAL
text;
relating_product_definition_formation : product_definition_formation;
related_product_definition_formation : product_definition_formation;
END_ENTITY;
ENTITY product_definition_with_associated_documents
SUBTYPE OF (product_definition);
documentation_ids : SET[1:?] OF document;
END_ENTITY;
ENTITY product_related_product_category
SUBTYPE OF (product_category);
products : SET[1:?] OF product;
END_ENTITY;
ENTITY product_relationship;
id : identifier;
name : label;
description :
OPTIONAL
text;
relating_product : product;
related_product : product;
END_ENTITY;
ENTITY property_definition;
name : label;
description :
OPTIONAL
text;
definition : characterized_definition;
DERIVE
id : identifier := get_id_value(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF, 'STATE_BASED_BEHAVIOUR_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, 'STATE_BASED_BEHAVIOUR_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
WR2: SIZEOF(USEDIN(SELF, 'STATE_BASED_BEHAVIOUR_MIM_LF.' + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1;
END_ENTITY;
ENTITY radioactivity_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1: 'STATE_BASED_BEHAVIOUR_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: 'STATE_BASED_BEHAVIOUR_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 real_literal
SUBTYPE OF (literal_number);
SELF\literal_number.the_value : REAL;
END_ENTITY;
ENTITY real_numeric_variable
SUBTYPE OF (numeric_variable);
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, 'STATE_BASED_BEHAVIOUR_MIM_LF.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1;
WR2: SIZEOF(USEDIN(SELF, 'STATE_BASED_BEHAVIOUR_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));
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_proxy_item
SUBTYPE OF (representation_item);
item : representation_proxy_select;
END_ENTITY;
ENTITY representation_relationship;
name : label;
description :
OPTIONAL
text;
rep_1 : representation;
rep_2 : representation;
END_ENTITY;
ENTITY resistance_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1: 'STATE_BASED_BEHAVIOUR_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 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 sbb_characterized_applied_action_method_assignment
SUBTYPE OF (applied_action_method_assignment, characterized_object);
END_ENTITY;
ENTITY sbb_characterized_general_property_relationship
SUBTYPE OF (characterized_object, general_property_relationship);
END_ENTITY;
ENTITY sbb_characterized_generic_expression
SUBTYPE OF (characterized_object, generic_expression);
END_ENTITY;
ENTITY sbb_characterized_product
SUBTYPE OF (characterized_object, product);
END_ENTITY;
ENTITY sbb_characterized_product_definition_formation
SUBTYPE OF (characterized_object, product_definition_formation);
END_ENTITY;
ENTITY sbb_characterized_product_definition_formation_relationship
SUBTYPE OF (characterized_object, product_definition_formation_relationship);
END_ENTITY;
ENTITY sbb_characterized_property_definition_representation
SUBTYPE OF (characterized_object, property_definition_representation);
END_ENTITY;
ENTITY sbb_characterized_representation
SUBTYPE OF (characterized_object, representation);
END_ENTITY;
ENTITY sbb_characterized_representation_context
SUBTYPE OF (characterized_object, representation_context);
END_ENTITY;
ENTITY sbb_characterized_representation_item
SUBTYPE OF (characterized_object, representation_item);
END_ENTITY;
ENTITY sbb_characterized_state_type
SUBTYPE OF (characterized_object, state_type);
END_ENTITY;
ENTITY sbb_characterized_state_type_assignment
SUBTYPE OF (characterized_object, state_type_assignment);
END_ENTITY;
ENTITY sbb_characterized_state_type_relationship
SUBTYPE OF (characterized_object, state_type_relationship);
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 (('STATE_BASED_BEHAVIOUR_MIM_LF.MASS_UNIT' IN TYPEOF(SELF)) AND (SIZEOF(USEDIN(SELF, 'STATE_BASED_BEHAVIOUR_MIM_LF.DERIVED_UNIT_ELEMENT.UNIT'))
> 0)) OR (prefix = kilo);
END_ENTITY;
ENTITY simple_boolean_expression
ABSTRACT SUPERTYPE
OF (ONEOF (boolean_literal,
boolean_variable))
SUBTYPE OF (boolean_expression, simple_generic_expression);
END_ENTITY;
ENTITY simple_generic_expression
ABSTRACT SUPERTYPE
OF (ONEOF (generic_literal,
generic_variable))
SUBTYPE OF (generic_expression);
END_ENTITY;
ENTITY simple_numeric_expression
ABSTRACT SUPERTYPE
OF (ONEOF (literal_number,
numeric_variable))
SUBTYPE OF (numeric_expression, simple_generic_expression);
END_ENTITY;
ENTITY simple_string_expression
ABSTRACT SUPERTYPE
OF (ONEOF (string_literal,
string_variable))
SUBTYPE OF (simple_generic_expression, string_expression);
END_ENTITY;
ENTITY slash_expression
SUBTYPE OF (binary_numeric_expression);
END_ENTITY;
ENTITY solid_angle_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1: 'STATE_BASED_BEHAVIOUR_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 SQL_mappable_defined_function
ABSTRACT SUPERTYPE
SUBTYPE OF (defined_function);
END_ENTITY;
ENTITY state_based_behaviour_model
SUBTYPE OF (representation);
SELF\representation.context_of_items : state_based_behaviour_representation_context;
SELF\representation.items : SET[1:?] OF state_based_behaviour_representation_item;
END_ENTITY;
ENTITY state_based_behaviour_representation_context
SUBTYPE OF (representation_context);
END_ENTITY;
ENTITY state_based_behaviour_representation_item
SUBTYPE OF (representation_proxy_item);
SELF\representation_proxy_item.item : state_based_behaviour_element;
END_ENTITY;
ENTITY state_type;
name : label;
description :
OPTIONAL
text;
END_ENTITY;
ENTITY state_type_assignment
ABSTRACT SUPERTYPE
;
assigned_state_type : state_type;
role : state_type_role;
END_ENTITY;
ENTITY state_type_relationship;
name : label;
description :
OPTIONAL
text;
relating_state_type : SET[1:?] OF state_type;
related_state_type : SET[1:?] OF state_type;
END_ENTITY;
ENTITY state_type_role;
name : label;
description :
OPTIONAL
text;
END_ENTITY;
ENTITY string_defined_function
ABSTRACT SUPERTYPE
SUBTYPE OF (defined_function, string_expression);
END_ENTITY;
ENTITY string_expression
ABSTRACT SUPERTYPE
OF (ONEOF (simple_string_expression,
index_expression,
substring_expression,
concat_expression,
format_function,
string_defined_function))
SUBTYPE OF (expression);
END_ENTITY;
ENTITY string_literal
SUBTYPE OF (generic_literal, simple_string_expression);
the_value : STRING;
END_ENTITY;
ENTITY string_variable
SUBTYPE OF (simple_string_expression, variable);
END_ENTITY;
ENTITY substring_expression
SUBTYPE OF (multiple_arity_generic_expression, string_expression);
DERIVE
operand : generic_expression := SELF\multiple_arity_generic_expression.operands[1];
index1 : generic_expression := SELF\multiple_arity_generic_expression.operands[2];
index2 : generic_expression := SELF\multiple_arity_generic_expression.operands[3];
WHERE
WR1: ('STATE_BASED_BEHAVIOUR_MIM_LF.STRING_EXPRESSION' IN TYPEOF(operand)) AND ('STATE_BASED_BEHAVIOUR_MIM_LF.NUMERIC_EXPRESSION'
IN TYPEOF(index1)) AND ('STATE_BASED_BEHAVIOUR_MIM_LF.NUMERIC_EXPRESSION' IN TYPEOF(index2));
WR2: SIZEOF(SELF\multiple_arity_generic_expression.operands) = 3;
WR3: is_int_expr(index1);
WR4: is_int_expr(index2);
END_ENTITY;
ENTITY text_based_representation
SUBTYPE OF (representation);
SELF\representation.context_of_items : text_based_representation_context;
SELF\representation.items : SET[1:?] OF text_based_item_select;
END_ENTITY;
ENTITY text_based_representation_context
SUBTYPE OF (representation_context);
END_ENTITY;
ENTITY textual_expression_composition
SUBTYPE OF (compound_representation_item);
END_ENTITY;
ENTITY textual_expression_representation_item
SUBTYPE OF (descriptive_representation_item);
END_ENTITY;
ENTITY thermodynamic_temperature_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1: 'STATE_BASED_BEHAVIOUR_MIM_LF.THERMODYNAMIC_TEMPERATURE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY;
ENTITY thermodynamic_temperature_unit
SUBTYPE OF (named_unit);
WHERE
WR1: (SELF\named_unit.dimensions.length_exponent = 0.000000) AND (SELF\named_unit.dimensions.mass_exponent = 0.000000) AND
(SELF\named_unit.dimensions.time_exponent = 0.000000) AND (SELF\named_unit.dimensions.electric_current_exponent = 0.000000)
AND (SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 1.000000) AND (SELF\named_unit.dimensions.amount_of_substance_exponent
= 0.000000) AND (SELF\named_unit.dimensions.luminous_intensity_exponent = 0.000000);
END_ENTITY;
ENTITY time_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1: 'STATE_BASED_BEHAVIOUR_MIM_LF.TIME_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY;
ENTITY time_unit
SUBTYPE OF (named_unit);
WHERE
WR1: (SELF\named_unit.dimensions.length_exponent = 0.000000) AND (SELF\named_unit.dimensions.mass_exponent = 0.000000) AND
(SELF\named_unit.dimensions.time_exponent = 1.000000) AND (SELF\named_unit.dimensions.electric_current_exponent = 0.000000)
AND (SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0.000000) AND (SELF\named_unit.dimensions.amount_of_substance_exponent
= 0.000000) AND (SELF\named_unit.dimensions.luminous_intensity_exponent = 0.000000);
END_ENTITY;
ENTITY unary_boolean_expression
ABSTRACT SUPERTYPE
SUBTYPE OF (boolean_expression, unary_generic_expression);
END_ENTITY;
ENTITY unary_generic_expression
ABSTRACT SUPERTYPE
SUBTYPE OF (generic_expression);
operand : generic_expression;
END_ENTITY;
ENTITY unary_numeric_expression
ABSTRACT SUPERTYPE
SUBTYPE OF (numeric_expression, unary_generic_expression);
SELF\unary_generic_expression.operand : numeric_expression;
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 variable
ABSTRACT SUPERTYPE
OF (ONEOF (numeric_variable,
boolean_variable,
string_variable))
SUBTYPE OF (generic_variable);
END_ENTITY;
ENTITY variable_semantics
ABSTRACT SUPERTYPE
;
END_ENTITY;
ENTITY velocity_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1: 'STATE_BASED_BEHAVIOUR_MIM_LF.VELOCITY_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY;
ENTITY velocity_unit
SUBTYPE OF (derived_unit);
WHERE
WR1: derive_dimensional_exponents(SELF) = dimensional_exponents(1.000000, 0.000000, - 1.000000, 0.000000, 0.000000, 0.000000,
0.000000);
END_ENTITY;
ENTITY volume_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1: 'STATE_BASED_BEHAVIOUR_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 xor_expression
SUBTYPE OF (binary_boolean_expression);
SELF\binary_generic_expression.operands : LIST[2:2] OF boolean_expression;
END_ENTITY;
RULE validate_dependently_instantiable_entity_data_types FOR
(application_context, application_context_element, classification_role, document_type, document_usage_constraint, document_usage_role, expression_role, mapped_item, product_context, product_definition_context_role, representation_proxy_item);
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 + classification_role + document_type + document_usage_constraint + document_usage_role + expression_role + mapped_item + product_context + product_definition_context_role + representation_proxy_item;
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
(arg1 : generic_expression; arg2 : SET OF generic_expression) : BOOLEAN;
LOCAL
result : BOOLEAN := TRUE;
END_LOCAL;
IF ('STATE_BASED_BEHAVIOUR_MIM_LF.SIMPLE_GENERIC_EXPRESSION' IN TYPEOF(arg1)) THEN
RETURN (TRUE);
END_IF;
IF arg1 IN arg2 THEN
RETURN (FALSE);
END_IF;
IF 'STATE_BASED_BEHAVIOUR_MIM_LF.UNARY_GENERIC_EXPRESSION' IN TYPEOF(arg1) THEN
RETURN (acyclic(arg1\unary_generic_expression.operand, arg2 + [arg1]));
END_IF;
IF 'STATE_BASED_BEHAVIOUR_MIM_LF.BINARY_GENERIC_EXPRESSION' IN TYPEOF(arg1) THEN
RETURN (acyclic(arg1\binary_generic_expression.operands[1], arg2 + [arg1]) AND acyclic(arg1\binary_generic_expression.operands[2], arg2 + [arg1]));
END_IF;
IF 'STATE_BASED_BEHAVIOUR_MIM_LF.MULTIPLE_ARITY_GENERIC_EXPRESSION' IN TYPEOF(arg1) THEN
result := TRUE;
REPEAT i := 1 TO SIZEOF(arg1\multiple_arity_generic_expression.operands);
result := result AND acyclic(arg1\multiple_arity_generic_expression.operands[i], arg2 + [arg1]);
END_REPEAT;
RETURN (result);
END_IF;
RETURN (result);
END_FUNCTION;
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], 'STATE_BASED_BEHAVIOUR_MIM_LF.REPRESENTATION_MAP.MAPPED_REPRESENTATION'));
IF SIZEOF(rms) > 0 THEN
REPEAT j := 1 TO HIINDEX(rms);
mis := bag_to_set(USEDIN(rms[i], 'STATE_BASED_BEHAVIOUR_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 bag_to_set
(the_bag : BAG OF GENERIC : intype) : SET OF GENERIC : intype;
LOCAL
the_set : SET OF GENERIC:intype := [];
END_LOCAL;
IF SIZEOF(the_bag) > 0 THEN
REPEAT i := 1 TO HIINDEX(the_bag);
the_set := the_set + the_bag[i];
END_REPEAT;
END_IF;
RETURN (the_set);
END_FUNCTION;
FUNCTION dependently_instantiated
(set_of_input_instances : SET OF GENERIC : igen; set_of_input_types : SET OF STRING; previous_in_chain : LIST OF GENERIC : cgen) : BOOLEAN;
LOCAL
number_of_input_instances : INTEGER;
number_of_referring_instances : INTEGER;
bag_of_referring_instances : BAG OF GENERIC:igen := [];
dependently_instantiated_flag : BOOLEAN;
previous_in_chain_plus : LIST OF GENERIC:cgen := [];
result : BOOLEAN := TRUE;
set_of_types : SET OF STRING := [];
END_LOCAL;
IF EXISTS(set_of_input_instances) THEN
number_of_input_instances := SIZEOF(set_of_input_instances);
set_of_input_types := set_of_input_types + 'GENERIC';
REPEAT i := 1 TO number_of_input_instances;
bag_of_referring_instances := USEDIN(set_of_input_instances[i], '');
IF EXISTS(bag_of_referring_instances) THEN
number_of_referring_instances := SIZEOF(bag_of_referring_instances);
dependently_instantiated_flag := FALSE;
REPEAT j := 1 TO number_of_referring_instances;
set_of_types := TYPEOF(bag_of_referring_instances[j]);
IF set_of_types <= set_of_input_types THEN
IF NOT (bag_of_referring_instances[j] IN previous_in_chain) THEN
previous_in_chain_plus := previous_in_chain + set_of_input_instances[i];
IF dependently_instantiated([bag_of_referring_instances[j]], set_of_input_types, previous_in_chain_plus) THEN
dependently_instantiated_flag := TRUE;
ESCAPE;
ELSE
SKIP;
END_IF;
END_IF;
ELSE
dependently_instantiated_flag := TRUE;
ESCAPE;
END_IF;
END_REPEAT;
IF NOT dependently_instantiated_flag THEN
RETURN (FALSE);
END_IF;
ELSE
RETURN (FALSE);
END_IF;
END_REPEAT;
ELSE
RETURN (FALSE);
END_IF;
RETURN (TRUE);
END_FUNCTION;
FUNCTION derive_dimensional_exponents
(x : unit) : dimensional_exponents;
LOCAL
result : dimensional_exponents := dimensional_exponents(0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000);
END_LOCAL;
IF 'STATE_BASED_BEHAVIOUR_MIM_LF.DERIVED_UNIT' IN TYPEOF(x) THEN
REPEAT i := LOINDEX(x\derived_unit.elements) TO HIINDEX(x\derived_unit.elements);
result.length_exponent := result.length_exponent + (x\derived_unit.elements[i]\derived_unit_element.exponent * x\derived_unit.elements[i]\derived_unit_element.unit\named_unit.dimensions.length_exponent);
result.mass_exponent := result.mass_exponent + (x\derived_unit.elements[i]\derived_unit_element.exponent * x\derived_unit.elements[i]\derived_unit_element.unit\named_unit.dimensions.mass_exponent);
result.time_exponent := result.time_exponent + (x\derived_unit.elements[i]\derived_unit_element.exponent * x\derived_unit.elements[i]\derived_unit_element.unit\named_unit.dimensions.time_exponent);
result.electric_current_exponent := result.electric_current_exponent + (x\derived_unit.elements[i]\derived_unit_element.exponent * x\derived_unit.elements[i]\derived_unit_element.unit\named_unit.dimensions.electric_current_exponent);
result.thermodynamic_temperature_exponent := result.thermodynamic_temperature_exponent + (x\derived_unit.elements[i]\derived_unit_element.exponent * x\derived_unit.elements[i]\derived_unit_element.unit\named_unit.dimensions.thermodynamic_temperature_exponent);
result.amount_of_substance_exponent := result.amount_of_substance_exponent + (x\derived_unit.elements[i]\derived_unit_element.exponent * x\derived_unit.elements[i]\derived_unit_element.unit\named_unit.dimensions.amount_of_substance_exponent);
result.luminous_intensity_exponent := result.luminous_intensity_exponent + (x\derived_unit.elements[i]\derived_unit_element.exponent * x\derived_unit.elements[i]\derived_unit_element.unit\named_unit.dimensions.luminous_intensity_exponent);
END_REPEAT;
ELSE
result := x\named_unit.dimensions;
END_IF;
RETURN (result);
END_FUNCTION;
FUNCTION dimensions_for_si_unit
(n : si_unit_name) : dimensional_exponents;
CASE n OF
metre:
RETURN (dimensional_exponents(1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000));
gram:
RETURN (dimensional_exponents(0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000));
second:
RETURN (dimensional_exponents(0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 0.000000));
ampere:
RETURN (dimensional_exponents(0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000));
kelvin:
RETURN (dimensional_exponents(0.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000));
mole:
RETURN (dimensional_exponents(0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000));
candela:
RETURN (dimensional_exponents(0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000));
radian:
RETURN (dimensional_exponents(0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000));
steradian:
RETURN (dimensional_exponents(0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000));
hertz:
RETURN (dimensional_exponents(0.000000, 0.000000, - 1.000000, 0.000000, 0.000000, 0.000000, 0.000000));
newton:
RETURN (dimensional_exponents(1.000000, 1.000000, - 2.000000, 0.000000, 0.000000, 0.000000, 0.000000));
pascal:
RETURN (dimensional_exponents( - 1.000000, 1.000000, - 2.000000, 0.000000, 0.000000, 0.000000, 0.000000));
joule:
RETURN (dimensional_exponents(2.000000, 1.000000, - 2.000000, 0.000000, 0.000000, 0.000000, 0.000000));
watt:
RETURN (dimensional_exponents(2.000000, 1.000000, - 3.000000, 0.000000, 0.000000, 0.000000, 0.000000));
coulomb:
RETURN (dimensional_exponents(0.000000, 0.000000, 1.000000, 1.000000, 0.000000, 0.000000, 0.000000));
volt:
RETURN (dimensional_exponents(2.000000, 1.000000, - 3.000000, - 1.000000, 0.000000, 0.000000, 0.000000));
farad:
RETURN (dimensional_exponents( - 2.000000, - 1.000000, 4.000000, 2.000000, 0.000000, 0.000000, 0.000000));
ohm:
RETURN (dimensional_exponents(2.000000, 1.000000, - 3.000000, - 2.000000, 0.000000, 0.000000, 0.000000));
siemens:
RETURN (dimensional_exponents( - 2.000000, - 1.000000, 3.000000, 2.000000, 0.000000, 0.000000, 0.000000));
weber:
RETURN (dimensional_exponents(2.000000, 1.000000, - 2.000000, - 1.000000, 0.000000, 0.000000, 0.000000));
tesla:
RETURN (dimensional_exponents(0.000000, 1.000000, - 2.000000, - 1.000000, 0.000000, 0.000000, 0.000000));
henry:
RETURN (dimensional_exponents(2.000000, 1.000000, - 2.000000, - 2.000000, 0.000000, 0.000000, 0.000000));
degree_Celsius:
RETURN (dimensional_exponents(0.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000));
lumen:
RETURN (dimensional_exponents(0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000));
lux:
RETURN (dimensional_exponents( - 2.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000));
becquerel:
RETURN (dimensional_exponents(0.000000, 0.000000, - 1.000000, 0.000000, 0.000000, 0.000000, 0.000000));
gray:
RETURN (dimensional_exponents(2.000000, 0.000000, - 2.000000, 0.000000, 0.000000, 0.000000, 0.000000));
sievert:
RETURN (dimensional_exponents(2.000000, 0.000000, - 2.000000, 0.000000, 0.000000, 0.000000, 0.000000));
OTHERWISE:
RETURN (?);
END_CASE;
END_FUNCTION;
FUNCTION get_description_value
(obj : description_attribute_select) : text;
LOCAL
description_bag : BAG OF description_attribute := (USEDIN(obj, 'STATE_BASED_BEHAVIOUR_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.' + 'DESCRIBED_ITEM'));
END_LOCAL;
IF SIZEOF(description_bag) = 1 THEN
RETURN (description_bag[1].attribute_value);
ELSE
RETURN (?);
END_IF;
END_FUNCTION;
FUNCTION get_id_value
(obj : id_attribute_select) : identifier;
LOCAL
id_bag : BAG OF id_attribute := (USEDIN(obj, 'STATE_BASED_BEHAVIOUR_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, 'STATE_BASED_BEHAVIOUR_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, 'STATE_BASED_BEHAVIOUR_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 is_acyclic
(arg : generic_expression) : BOOLEAN;
RETURN (acyclic(arg, []));
END_FUNCTION;
FUNCTION is_int_expr
(arg : numeric_expression) : LOGICAL;
LOCAL
i : INTEGER := 0;
END_LOCAL;
IF 'STATE_BASED_BEHAVIOUR_MIM_LF.INT_LITERAL' IN TYPEOF(arg) THEN
RETURN (TRUE);
END_IF;
IF 'STATE_BASED_BEHAVIOUR_MIM_LF.REAL_LITERAL' IN TYPEOF(arg) THEN
RETURN (FALSE);
END_IF;
IF 'STATE_BASED_BEHAVIOUR_MIM_LF.INT_NUMERIC_VARIABLE' IN TYPEOF(arg) THEN
RETURN (TRUE);
END_IF;
IF 'STATE_BASED_BEHAVIOUR_MIM_LF.REAL_NUMERIC_VARIABLE' IN TYPEOF(arg) THEN
RETURN (FALSE);
END_IF;
IF 'STATE_BASED_BEHAVIOUR_MIM_LF.ABS_FUNCTION' IN TYPEOF(arg) THEN
RETURN (is_int_expr(arg\unary_numeric_expression.operand));
END_IF;
IF 'STATE_BASED_BEHAVIOUR_MIM_LF.MINUS_FUNCTION' IN TYPEOF(arg) THEN
RETURN (is_int_expr(arg\unary_numeric_expression.operand));
END_IF;
IF ('STATE_BASED_BEHAVIOUR_MIM_LF.SIN_FUNCTION' IN TYPEOF(arg)) OR ('STATE_BASED_BEHAVIOUR_MIM_LF.COS_FUNCTION' IN TYPEOF(arg)) OR ('STATE_BASED_BEHAVIOUR_MIM_LF.TAN_FUNCTION' IN TYPEOF(arg)) OR ('STATE_BASED_BEHAVIOUR_MIM_LF.ASIN_FUNCTION' IN TYPEOF(arg)) OR ('STATE_BASED_BEHAVIOUR_MIM_LF.ACOS_FUNCTION' IN TYPEOF(arg)) OR ('STATE_BASED_BEHAVIOUR_MIM_LF.ATAN_FUNCTION' IN TYPEOF(arg)) OR ('STATE_BASED_BEHAVIOUR_MIM_LF.EXP_FUNCTION' IN TYPEOF(arg)) OR ('STATE_BASED_BEHAVIOUR_MIM_LF.LOG_FUNCTION' IN TYPEOF(arg)) OR ('STATE_BASED_BEHAVIOUR_MIM_LF.LOG2_FUNCTION' IN TYPEOF(arg)) OR ('STATE_BASED_BEHAVIOUR_MIM_LF.LOG10_FUNCTION' IN TYPEOF(arg)) OR ('STATE_BASED_BEHAVIOUR_MIM_LF.SQUARE_ROOT_FUNCTION' IN TYPEOF(arg)) THEN
RETURN (FALSE);
END_IF;
IF ('STATE_BASED_BEHAVIOUR_MIM_LF.PLUS_EXPRESSION' IN TYPEOF(arg)) OR ('STATE_BASED_BEHAVIOUR_MIM_LF.MULT_EXPRESSION' IN TYPEOF(arg)) OR ('STATE_BASED_BEHAVIOUR_MIM_LF.MAXIMUM_FUNCTION' IN TYPEOF(arg)) OR ('STATE_BASED_BEHAVIOUR_MIM_LF.MINIMUM_FUNCTION' IN TYPEOF(arg)) THEN
REPEAT i := 1 TO SIZEOF(arg\multiple_arity_numeric_expression.operands);
IF NOT is_int_expr(arg\multiple_arity_numeric_expression.operands[i]) THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
RETURN (TRUE);
END_IF;
IF ('STATE_BASED_BEHAVIOUR_MIM_LF.MINUS_EXPRESSION' IN TYPEOF(arg)) OR ('STATE_BASED_BEHAVIOUR_MIM_LF.POWER_EXPRESSION' IN TYPEOF(arg)) THEN
RETURN (is_int_expr(arg\binary_numeric_expression.operands[1]) AND is_int_expr(arg\binary_numeric_expression.operands[2]));
END_IF;
IF ('STATE_BASED_BEHAVIOUR_MIM_LF.DIV_EXPRESSION' IN TYPEOF(arg)) OR ('STATE_BASED_BEHAVIOUR_MIM_LF.MOD_EXPRESSION' IN TYPEOF(arg)) THEN
RETURN (TRUE);
END_IF;
IF 'STATE_BASED_BEHAVIOUR_MIM_LF.SLASH_EXPRESSION' IN TYPEOF(arg) THEN
RETURN (FALSE);
END_IF;
IF 'STATE_BASED_BEHAVIOUR_MIM_LF.LENGTH_FUNCTION' IN TYPEOF(arg) THEN
RETURN (TRUE);
END_IF;
IF 'STATE_BASED_BEHAVIOUR_MIM_LF.VALUE_FUNCTION' IN TYPEOF(arg) THEN
IF 'STATE_BASED_BEHAVIOUR_MIM_LF.INT_VALUE_FUNCTION' IN TYPEOF(arg) THEN
RETURN (TRUE);
ELSE
RETURN (FALSE);
END_IF;
END_IF;
IF 'STATE_BASED_BEHAVIOUR_MIM_LF.INTEGER_DEFINED_FUNCTION' IN TYPEOF(arg) THEN
RETURN (TRUE);
END_IF;
IF 'STATE_BASED_BEHAVIOUR_MIM_LF.REAL_DEFINED_FUNCTION' IN TYPEOF(arg) THEN
RETURN (FALSE);
END_IF;
IF 'STATE_BASED_BEHAVIOUR_MIM_LF.BOOLEAN_DEFINED_FUNCTION' IN TYPEOF(arg) THEN
RETURN (FALSE);
END_IF;
IF 'STATE_BASED_BEHAVIOUR_MIM_LF.STRING_DEFINED_FUNCTION' IN TYPEOF(arg) THEN
RETURN (FALSE);
END_IF;
RETURN (FALSE);
END_FUNCTION;
FUNCTION is_SQL_mappable
(arg : expression) : LOGICAL;
LOCAL
i : INTEGER;
END_LOCAL;
IF 'STATE_BASED_BEHAVIOUR_MIM_LF.SIMPLE_NUMERIC_EXPRESSION' IN TYPEOF(arg) THEN
RETURN (TRUE);
END_IF;
IF 'STATE_BASED_BEHAVIOUR_MIM_LF.SQL_MAPPABLE_DEFINED_FUNCTION' IN TYPEOF(arg) THEN
RETURN (TRUE);
END_IF;
IF 'STATE_BASED_BEHAVIOUR_MIM_LF.MINUS_FUNCTION' IN TYPEOF(arg) THEN
RETURN (is_SQL_mappable(arg\unary_numeric_expression.operand));
END_IF;
IF ('STATE_BASED_BEHAVIOUR_MIM_LF.ABS_FUNCTION' IN TYPEOF(arg)) OR ('STATE_BASED_BEHAVIOUR_MIM_LF.SIN_FUNCTION' IN TYPEOF(arg)) OR ('STATE_BASED_BEHAVIOUR_MIM_LF.COS_FUNCTION' IN TYPEOF(arg)) OR ('STATE_BASED_BEHAVIOUR_MIM_LF.TAN_FUNCTION' IN TYPEOF(arg)) OR ('STATE_BASED_BEHAVIOUR_MIM_LF.ASIN_FUNCTION' IN TYPEOF(arg)) OR ('STATE_BASED_BEHAVIOUR_MIM_LF.ACOS_FUNCTION' IN TYPEOF(arg)) OR ('STATE_BASED_BEHAVIOUR_MIM_LF.ATAN_FUNCTION' IN TYPEOF(arg)) OR ('STATE_BASED_BEHAVIOUR_MIM_LF.EXP_FUNCTION' IN TYPEOF(arg)) OR ('STATE_BASED_BEHAVIOUR_MIM_LF.LOG_FUNCTION' IN TYPEOF(arg)) OR ('STATE_BASED_BEHAVIOUR_MIM_LF.LOG2_FUNCTION' IN TYPEOF(arg)) OR ('STATE_BASED_BEHAVIOUR_MIM_LF.LOG10_FUNCTION' IN TYPEOF(arg)) OR ('STATE_BASED_BEHAVIOUR_MIM_LF.SQUARE_ROOT_FUNCTION' IN TYPEOF(arg)) OR ('STATE_BASED_BEHAVIOUR_MIM_LF.VALUE_FUNCTION' IN TYPEOF(arg)) OR ('STATE_BASED_BEHAVIOUR_MIM_LF.LENGTH_FUNCTION' IN TYPEOF(arg)) THEN
RETURN (FALSE);
END_IF;
IF ('STATE_BASED_BEHAVIOUR_MIM_LF.PLUS_EXPRESSION' IN TYPEOF(arg)) OR ('STATE_BASED_BEHAVIOUR_MIM_LF.MULT_EXPRESSION' IN TYPEOF(arg)) OR ('STATE_BASED_BEHAVIOUR_MIM_LF.MAXIMUM_FUNCTION' IN TYPEOF(arg)) OR ('STATE_BASED_BEHAVIOUR_MIM_LF.MINIMUM_FUNCTION' IN TYPEOF(arg)) THEN
REPEAT i := 1 TO SIZEOF(arg\multiple_arity_numeric_expression.operands);
IF NOT is_SQL_mappable(arg\multiple_arity_numeric_expression.operands[i]) THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
RETURN (TRUE);
END_IF;
IF ('STATE_BASED_BEHAVIOUR_MIM_LF.MINUS_EXPRESSION' IN TYPEOF(arg)) OR ('STATE_BASED_BEHAVIOUR_MIM_LF.SLASH_EXPRESSION' IN TYPEOF(arg)) THEN
RETURN (is_SQL_mappable(arg\binary_numeric_expression.operands[1]) AND is_SQL_mappable(arg\binary_numeric_expression.operands[2]));
END_IF;
IF ('STATE_BASED_BEHAVIOUR_MIM_LF.DIV_EXPRESSION' IN TYPEOF(arg)) OR ('STATE_BASED_BEHAVIOUR_MIM_LF.MOD_EXPRESSION' IN TYPEOF(arg)) OR ('STATE_BASED_BEHAVIOUR_MIM_LF.POWER_EXPRESSION' IN TYPEOF(arg)) THEN
RETURN (FALSE);
END_IF;
IF 'STATE_BASED_BEHAVIOUR_MIM_LF.SIMPLE_BOOLEAN_EXPRESSION' IN TYPEOF(arg) THEN
RETURN (TRUE);
END_IF;
IF 'STATE_BASED_BEHAVIOUR_MIM_LF.NOT_EXPRESSION' IN TYPEOF(arg) THEN
RETURN (is_SQL_mappable(arg\unary_generic_expression.operand));
END_IF;
IF ('STATE_BASED_BEHAVIOUR_MIM_LF.ODD_FUNCTION' IN TYPEOF(arg)) OR ('STATE_BASED_BEHAVIOUR_MIM_LF.XOR_EXPRESSION' IN TYPEOF(arg)) THEN
RETURN (FALSE);
END_IF;
IF ('STATE_BASED_BEHAVIOUR_MIM_LF.AND_EXPRESSION' IN TYPEOF(arg)) OR ('STATE_BASED_BEHAVIOUR_MIM_LF.OR_EXPRESSION' IN TYPEOF(arg)) THEN
REPEAT i := 1 TO SIZEOF(arg\multiple_arity_boolean_expression.operands);
IF NOT is_SQL_mappable(arg\multiple_arity_boolean_expression.operands[i]) THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
RETURN (TRUE);
END_IF;
IF 'STATE_BASED_BEHAVIOUR_MIM_LF.EQUALS_EXPRESSION' IN TYPEOF(arg) THEN
RETURN (is_SQL_mappable(arg\binary_generic_expression.operands[1]) AND is_SQL_mappable(arg\binary_generic_expression.operands[2]));
END_IF;
IF ('STATE_BASED_BEHAVIOUR_MIM_LF.COMPARISON_EQUAL' IN TYPEOF(arg)) OR ('STATE_BASED_BEHAVIOUR_MIM_LF.COMPARISON_GREATER' IN TYPEOF(arg)) OR ('STATE_BASED_BEHAVIOUR_MIM_LF.COMPARISON_GREATER_EQUAL' IN TYPEOF(arg)) OR ('STATE_BASED_BEHAVIOUR_MIM_LF.COMPARISON_LESS' IN TYPEOF(arg)) OR ('STATE_BASED_BEHAVIOUR_MIM_LF.COMPARISON_LESS_EQUAL' IN TYPEOF(arg)) OR ('STATE_BASED_BEHAVIOUR_MIM_LF.COMPARISON_NOT_EQUAL' IN TYPEOF(arg)) OR ('STATE_BASED_BEHAVIOUR_MIM_LF.LIKE_EXPRESSION' IN TYPEOF(arg)) THEN
RETURN (is_SQL_mappable(arg\comparison_expression.operands[1]) AND is_SQL_mappable(arg\comparison_expression.operands[2]));
END_IF;
IF 'STATE_BASED_BEHAVIOUR_MIM_LF.INTERVAL_EXPRESSION' IN TYPEOF(arg) THEN
RETURN (is_SQL_mappable(arg\interval_expression.interval_low) AND is_SQL_mappable(arg\interval_expression.interval_high) AND is_SQL_mappable(arg\interval_expression.interval_item));
END_IF;
IF ('STATE_BASED_BEHAVIOUR_MIM_LF.NUMERIC_DEFINED_FUNCTION' IN TYPEOF(arg)) OR ('STATE_BASED_BEHAVIOUR_MIM_LF.BOOLEAN_DEFINED_FUNCTION' IN TYPEOF(arg)) OR ('STATE_BASED_BEHAVIOUR_MIM_LF.STRING_DEFINED_FUNCTION' IN TYPEOF(arg)) THEN
RETURN (FALSE);
END_IF;
IF 'STATE_BASED_BEHAVIOUR_MIM_LF.SIMPLE_STRING_EXPRESSION' IN TYPEOF(arg) THEN
RETURN (TRUE);
END_IF;
IF ('STATE_BASED_BEHAVIOUR_MIM_LF.INDEX_EXPRESSION' IN TYPEOF(arg)) OR ('STATE_BASED_BEHAVIOUR_MIM_LF.SUBSTRING_EXPRESSION' IN TYPEOF(arg)) OR ('STATE_BASED_BEHAVIOUR_MIM_LF.CONCAT_EXPRESSION' IN TYPEOF(arg)) OR ('STATE_BASED_BEHAVIOUR_MIM_LF.FORMAT_FUNCTION' IN TYPEOF(arg)) THEN
RETURN (FALSE);
END_IF;
RETURN (FALSE);
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, 'STATE_BASED_BEHAVIOUR_MIM_LF.REPRESENTATION.ITEMS') * cntxt.representations_in_context) > 0 THEN
RETURN (TRUE);
ELSE
y := QUERY(z <* USEDIN(item, '') | 'STATE_BASED_BEHAVIOUR_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 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, '')) | ('STATE_BASED_BEHAVIOUR_MIM_LF.REPRESENTATION_ITEM' IN TYPEOF(z)) OR ('STATE_BASED_BEHAVIOUR_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, 'STATE_BASED_BEHAVIOUR_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], 'STATE_BASED_BEHAVIOUR_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_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_units
(m : measure_with_unit) : BOOLEAN;
IF 'STATE_BASED_BEHAVIOUR_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 'STATE_BASED_BEHAVIOUR_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 'STATE_BASED_BEHAVIOUR_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 'STATE_BASED_BEHAVIOUR_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 'STATE_BASED_BEHAVIOUR_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 'STATE_BASED_BEHAVIOUR_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 'STATE_BASED_BEHAVIOUR_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 'STATE_BASED_BEHAVIOUR_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 'STATE_BASED_BEHAVIOUR_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 'STATE_BASED_BEHAVIOUR_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 'STATE_BASED_BEHAVIOUR_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 'STATE_BASED_BEHAVIOUR_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 'STATE_BASED_BEHAVIOUR_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 'STATE_BASED_BEHAVIOUR_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 'STATE_BASED_BEHAVIOUR_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 'STATE_BASED_BEHAVIOUR_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 'STATE_BASED_BEHAVIOUR_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 'STATE_BASED_BEHAVIOUR_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 'STATE_BASED_BEHAVIOUR_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 'STATE_BASED_BEHAVIOUR_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 'STATE_BASED_BEHAVIOUR_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 'STATE_BASED_BEHAVIOUR_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 'STATE_BASED_BEHAVIOUR_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 'STATE_BASED_BEHAVIOUR_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 'STATE_BASED_BEHAVIOUR_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 'STATE_BASED_BEHAVIOUR_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 'STATE_BASED_BEHAVIOUR_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 'STATE_BASED_BEHAVIOUR_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 'STATE_BASED_BEHAVIOUR_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 'STATE_BASED_BEHAVIOUR_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 'STATE_BASED_BEHAVIOUR_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 'STATE_BASED_BEHAVIOUR_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 'STATE_BASED_BEHAVIOUR_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 'STATE_BASED_BEHAVIOUR_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 'STATE_BASED_BEHAVIOUR_MIM_LF.DOSE_EQUIVALENT_MEASURE' IN TYPEOF(m.value_component) THEN
IF derive_dimensional_exponents(m.unit_component) <> dimensional_exponents(2.000000, 0.000000, - 2.000000, 0.000000, 0.000000, 0.000000, 0.000000) THEN
RETURN (FALSE);
END_IF;
END_IF;
RETURN (TRUE);
END_FUNCTION;
END_SCHEMA; -- State_based_behaviour_mim_LF
© ISO 2011 — All rights reserved