Application module: Classification with attributes ISO/TS 10303-1111:2019(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 definitions
   4.3 ARM entity definitions
5 Module interpreted model
   5.1 Mapping specification
   5.2 MIM EXPRESS short listing
     5.2.1 MIM type definitions
     5.2.2 MIM entity definitions
     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/TC 184/SC 4/WG 12 N10406 - ISO/TS 10303-1111 Classification with attributes - EXPRESS MIM
Supersedes ISO/TC 184/SC 4/WG 12 N9582
*)



SCHEMA Classification_with_attributes_mim;

USE FROM Classification_assignment_mim;    -- ISO/TS 10303-1114

USE FROM Extended_measure_representation_mim;    -- ISO/TS 10303-1106

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 Product_view_definition_mim;    -- ISO/TS 10303-1019

USE FROM group_schema   -- ISO 10303-41
  (group,
   group_relationship);

USE FROM product_property_definition_schema   -- ISO 10303-41
  (characterized_object,
   general_property,
   general_property_association,
   property_definition);

USE FROM product_property_representation_schema   -- ISO 10303-41
  (property_definition_representation);

USE FROM representation_schema   -- ISO 10303-43
  (set_representation_item);

USE FROM management_resources_schema   -- ISO 10303-41
  (classification_role);


TYPE classification_item_extended = SELECT BASED_ON classification_item WITH
   (class,
    classified_item);
END_TYPE;

TYPE classified_item = SELECT
   (product,
    product_definition_formation,
    product_definition);
END_TYPE;

TYPE cwa_identification_item = SELECT BASED_ON identification_item WITH
   (class);
END_TYPE;

ENTITY characterized_class
  SUBTYPE OF (characterized_object, class);
END_ENTITY;

ENTITY class_system
  SUBTYPE OF (group);
END_ENTITY;

RULE restrict_classification_assignments FOR
(applied_classification_assignment);
WHERE
  WR1: SIZEOF(QUERY(aia <* applied_classification_assignment | NOT class_assignment_is_valid(aia)))=0;
END_RULE;

RULE restrict_group_relationship_for_classification_hierarchy FOR
(group_relationship);
WHERE
  WR1: SIZEOF( QUERY( gr <* group_relationship | (gr\group_relationship.name = 'class hierarchy') AND (NOT('CLASSIFICATION_WITH_ATTRIBUTES_MIM.CLASS' IN TYPEOF(gr\group_relationship.related_group)) OR NOT('CLASSIFICATION_WITH_ATTRIBUTES_MIM.CLASS' IN TYPEOF(gr\group_relationship.relating_group))) )) = 0;
END_RULE;

FUNCTION class_assignment_is_valid
 (aia : applied_classification_assignment) : BOOLEAN;
LOCAL
  item: classification_item;
  role: classification_role;
END_LOCAL;

role:= aia\classification_assignment.role;
IF ('CLASSIFICATION_WITH_ATTRIBUTES_MIM.CLASS_SYSTEM' IN TYPEOF(aia\classification_assignment.assigned_class)) THEN
  IF(role\classification_role.name <> 'class system membership') THEN
    RETURN(FALSE);
  END_IF;
  REPEAT i:=LOINDEX(aia\applied_classification_assignment.items) TO HIINDEX(aia\applied_classification_assignment.items);
    item:= aia\applied_classification_assignment.items[i];

    IF (SIZEOF(['CLASSIFICATION_WITH_ATTRIBUTES_MIM.CHARACTERIZED_CLASS'] * TYPEOF(item))=0) THEN
-- item invalid if item does not belong to the types that may have a class_system
	RETURN(FALSE);
    END_IF;
  END_REPEAT;
END_IF;

IF ('CLASSIFICATION_WITH_ATTRIBUTES_MIM.CHARACTERIZED_CLASS' IN TYPEOF(aia\classification_assignment.assigned_class)) THEN
  IF	NOT(role\classification_role.name IN ['definitional','non-definitional','']) THEN
    RETURN(FALSE); 
  END_IF;


  REPEAT i:=LOINDEX(aia\applied_classification_assignment.items) TO HIINDEX(aia\applied_classification_assignment.items);
    item:= aia\applied_classification_assignment.items[i];

    IF (SIZEOF(['CLASSIFICATION_WITH_ATTRIBUTES_MIM.CLASSIFIED_ITEM'] * TYPEOF(item))=0) THEN
-- item invalid if item does not belong to the types that may have a characterized_class
	RETURN(FALSE);
    END_IF;
  END_REPEAT;
END_IF;

  IF
   (role\classification_role.name = 'definitional')
   THEN
     IF NOT
      (SIZEOF(QUERY(it <* aia\applied_classification_assignment.items | NOT
             (SIZEOF(['PRODUCT_DEFINITION_SCHEMA.PRODUCT', 'PRODUCT_DEFINITION_SCHEMA.PRODUCT_DEFINITION_FORMATION', 'PRODUCT_DEFINITION_SCHEMA.PRODUCT_DEFINITION'] * TYPEOF(it)) = 1)
      )) = 0 )
      THEN
      RETURN(FALSE); 
     END_IF;
  END_IF;

RETURN(TRUE);
END_FUNCTION;

END_SCHEMA;  -- Classification_with_attributes_mim


© ISO 2019 — All rights reserved