Application module: External properties ISO/TS 10303-1129:2018-11(E)
© ISO

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

4 Information requirements
   4.1 Required AM ARMs
   4.2 ARM type definition
   4.3 ARM entity definitions
   4.4 ARM subtype constraint definition
5 Module interpreted model
   5.1 Mapping specification
   5.2 MIM EXPRESS short listing
     5.2.1 MIM type definition
     5.2.2 MIM entity definition
     5.2.3 MIM function definition
     5.2.4 MIM rule definitions

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

5.2 MIM EXPRESS short listing

This clause specifies the EXPRESS schema derived from the mapping table. It uses elements from the common resources or from other application modules and defines the EXPRESS constructs that are specific to this part of ISO 10303.

This clause constitutes the Module Interpreted Module (MIM) of the application module.

This clause also specifies the modifications that apply to the constructs imported from the common resources.

The following restrictions apply to the use, in this schema, of constructs defined in common resources or in application modules:

EXPRESS specification:

*)
SCHEMA External_properties_mim;

USE FROM External_library_mim;    --  ISO/TS 10303-1778

USE FROM Identification_assignment_mim;    --  ISO/TS 10303-1021

USE FROM Independent_property_mim;    --  ISO/TS 10303-1036

USE FROM Plib_class_reference_mim;    --  ISO/TS 10303-1291

USE FROM external_reference_schema    --  ISO 10303-41
  (externally_defined_item,
   externally_defined_item_with_multiple_references,
   externally_defined_item_relationship);

USE FROM support_resource_schema    --  ISO 10303-41
  (identifier);

REFERENCE FROM management_resources_schema    --  ISO 10303-41
  (identification_role);
(*

NOTE 1   The schemas referenced above are specified in the following part of ISO 10303:

External_library_mim ISO/TS 10303-1778
Identification_assignment_mim ISO/TS 10303-1021
Independent_property_mim ISO/TS 10303-1036
Plib_class_reference_mim ISO/TS 10303-1291
external_reference_schema ISO 10303-41
support_resource_schema ISO 10303-41
management_resources_schema ISO 10303-41

NOTE 2   See Annex D, Figures D.1and D.2 for a graphical representation of this schema.

5.2.1 MIM type definition

This subclause specifies the MIM type for this application module. The MIM type and definition is specified below.

5.2.1.1 external_identification_for_plib_property   EXPRESS-G

The external_identification_for_plib_property type is an extension of the external_identification_item type. It adds the data type externally_defined_general_property to the list of alternate data types.

EXPRESS specification:

*)
TYPE external_identification_for_plib_property = SELECT BASED_ON external_identification_item WITH
   (externally_defined_general_property);
END_TYPE;
(*

5.2.2 MIM entity definition

This subclause specifies the MIM entity for this module. The MIM entity and definition is specified below.

5.2.2.1 externally_defined_general_property   EXPRESS-G

An externally_defined_general_property is a type of externally_defined_item and general_property that implements the ARM concept of External_library_property. An externally_defined_general_property identifies a kind of property defined outside this module of ISO 10303 or of the schemas that use this entity data type.

EXPRESS specification:

*)
ENTITY externally_defined_general_property
  SUBTYPE OF (general_property, externally_defined_item);
END_ENTITY;
(*

5.2.3 MIM function definition

This subclause specifies the MIM function for this module. The MIM function and definition is specified below.

5.2.3.1 external_version_assignment_is_valid

The external_version_assignment_is_valid function evaluates whether an instance of applied_external_identification_assignment whose identification role is 'version', contains, in its items attribute, only instances of types listed in externally_defined_general_property. The function returns TRUE is the role is not 'version' or if the items attribute only contains instances of types listed in externally_defined_general_property or in its extensions.

EXPRESS specification:

*)
FUNCTION external_version_assignment_is_valid (aia : applied_external_identification_assignment) : BOOLEAN;
LOCAL
      item: external_identification_item;
      role: identification_role;
    END_LOCAL;
      role:= aia.role;
      IF role.name='version' THEN
        REPEAT i := LOINDEX(aia\applied_external_identification_assignment.items) TO HIINDEX(aia\applied_external_identification_assignment.items);
          item:= aia\applied_external_identification_assignment.items[i];
          IF (SIZEOF(['EXTERNAL_PROPERTIES_MIM.EXTERNALLY_DEFINED_GENERAL_PROPERTY']*TYPEOF(item))=0) THEN
            -- item invalid if item does not belong to versionable types
	        RETURN(FALSE);
          END_IF;
        END_REPEAT;
        RETURN(TRUE);
      ELSE		-- case where aia does not convey a version id
        RETURN(TRUE);
      END_IF;
END_FUNCTION;
(*

Argument definitions:

aia: the instance of applied_external_identification_assignment, the validity of which is assessed

5.2.4 MIM rule definitions

This subclause specifies the MIM rules for this module. The MIM rules and definitions are specified below.

5.2.4.1 external_version_assignments_are_valid

The external_version_assignments_are_valid rule ensures that all instances of applied_external_identification_assignment whose identification role is 'version', contain, in their items attribute, only instances of types listed in externally_defined_general_property.

EXPRESS specification:

*)
RULE external_version_assignments_are_valid FOR
(applied_external_identification_assignment);
WHERE
  WR1: SIZEOF(QUERY(aia <* applied_external_identification_assignment | NOT external_version_assignment_is_valid(aia)))=0;
END_RULE;
(*

Argument definitions:

applied_external_identification_assignment : the set of all instances of applied_external_identification_assignment.

Formal propositions:

WR1: there shall not be any instance of applied_external_identification_assignment that provides a version identifier to an instance of an entity not listed in externally_defined_general_property.

5.2.4.2 plib_property_reference_requires_name_scope

A plib_property_reference_requires_name_scope rule specifies that each instance of externally_defined_general_property that has as its source a "known source", is referenced as the "relating item" by exactly one instance of name_scope which has a name name_scope and which references as the "related item" an "externally defined class" that has as its source a "known source". This rule enforces the requirement for every "Plib property reference" to have a name_scope.

EXPRESS specification:

*)
RULE plib_property_reference_requires_name_scope FOR
(externally_defined_general_property);
LOCAL
      known_sourced_properties : SET OF externally_defined_general_property;
    END_LOCAL;
      known_sourced_properties := QUERY( edc <* externally_defined_general_property | 
	    'PLIB_CLASS_REFERENCE_MIM.KNOWN_SOURCE' IN TYPEOF(edc.source) );
WHERE
  WR1: SIZEOF ( QUERY ( edgp <* known_sourced_properties | ( SIZEOF ( QUERY ( edir <* USEDIN ( edgp, 'EXTERNAL_REFERENCE_SCHEMA.EXTERNALLY_DEFINED_ITEM_RELATIONSHIP.RELATING_ITEM' )| ( edir.name = 'name scope' ) AND ('EXTERNAL_CLASS_MIM.EXTERNALLY_DEFINED_CLASS' IN TYPEOF ( edir.related_item ) ) AND ( 'PLIB_CLASS_REFERENCE_MIM.KNOWN_SOURCE' IN TYPEOF ( edir.related_item.source ) ) ) ) <>1 ) ) ) = 0;
END_RULE;
(*

Argument definitions:

externally_defined_general_property : the set of all instances of externally_defined_general_property.

Formal propositions:

WR1: Each instance oof externally_defined_general_property that has as its source a "known source", is referenced as the "relating item" by exactly one instance of "externally defined item relationship" which has a name of 'name scope' and which references as the "related item" an "externally defined class" that has as its source a "known source".

5.2.4.3 plib_property_reference_requires_version

A plib_property_reference_requires_version rule specifies that each instance of externally_defined_general_property that has as its source a known_source which has a predetermined name of 'ISO 13584 library', is contained in the set of items of exactly one applied_external_identification_assignment which references as its role an identification_role with a name of 'version'. This rule enforces the requirement for every "Plib_property_reference" to have a version.

EXPRESS specification:

*)
RULE plib_property_reference_requires_version FOR
(externally_defined_general_property);
LOCAL
	  plib_properties : SET OF externally_defined_general_property := [];
	END_LOCAL;
	  plib_properties := QUERY ( edgp <* externally_defined_general_property | 
		( 'EXTERNAL_PROPERTIES_MIM.KNOWN_SOURCE' IN TYPEOF ( edgp.source ) ) AND
		( 'EXTERNAL_PROPERTIES_MIM.KNOWN_SOURCE' + '.NAME' = 'ISO 13584 library' ) );
WHERE
  WR1: SIZEOF( QUERY( edgp <* plib_properties | (SIZEOF( QUERY( edir <* USEDIN(edgp, 'EXTERNAL_ITEM_IDENTIFICATION_ASSIGNMENT_MIM.APPLIED_EXTERNAL_IDENTIFICATION_ASSIGNMENT.ITEMS') | (edir.role.name = 'version') )) <> 1) )) = 0;
END_RULE;
(*

Argument definitions:

externally_defined_general_property : the set of all instances of externally_defined_general_property.

Formal propositions:

WR1: Each instance of externally_defined_general_property that has as its source a known_source which has a predetermined name 'ISO 13584 library', is contained in the set of items of exactly one applied_external_identification_assignment which references as its role an identification_role with a name of 'version'.



*)
END_SCHEMA;  -- External_properties_mim
(*


© ISO 2018 — All rights reserved