| Application module: External properties | ISO/TS 10303-1129:2018-11(E)  © ISO  | 
         
         (*
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