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

(*
ISO TC184/SC4/WG12 N8015 - ISO/TS 10303-1129 External properties - EXPRESS MIM
Supersedes ISO TC184/SC4/WG12 N7440
*)



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


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

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

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;

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;

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;

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;

END_SCHEMA;  -- External_properties_mim


© ISO 2018 — All rights reserved