Application module: Classification with attributes | ISO/TS 10303-1111:2019(E) © ISO |
(*
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