Application module: Product class ISO/TS 10303-1103: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 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 N10404 - ISO/TS 10303-1103 Product class - EXPRESS MIM
Supersedes ISO/TC 184/SC 4/WG 12 N9578
*)



SCHEMA Product_class_mim;

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

USE FROM Group_mim;    -- ISO/TS 10303-1113

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

USE FROM Product_concept_identification_mim;    -- ISO/TS 10303-1060

USE FROM Property_assignment_mim;    -- ISO/TS 10303-1030

USE FROM basic_attribute_schema   -- ISO 10303-41
  (object_role);

USE FROM product_concept_schema   -- ISO 10303-44
  (conditional_concept_feature,
   product_concept_relationship,
   product_concept_feature,
   product_concept_feature_association,
   concept_feature_operator);

USE FROM product_property_definition_schema   -- ISO 10303-41
  (characterized_object);


TYPE category_usage_item = SELECT
   (product_class);
END_TYPE;

TYPE id_for_class = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON identification_item WITH
   (product_class,
    product_concept_feature);
END_TYPE;

TYPE specification_for_category = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON groupable_item WITH
   (package_product_concept_feature,
    product_concept_feature);
END_TYPE;

ENTITY characterized_product_concept_feature
  SUBTYPE OF (product_concept_feature, characterized_object);
END_ENTITY;

ENTITY characterized_product_concept_feature_category
  SUBTYPE OF (product_concept_feature_category, characterized_object);
END_ENTITY;

ENTITY exclusive_product_concept_feature_category
  SUBTYPE OF (product_concept_feature_category);
END_ENTITY;

ENTITY inclusion_product_concept_feature
  SUBTYPE OF (conditional_concept_feature);
WHERE
  WR1: NOT ('PRODUCT_CLASS_MIM.PACKAGE_PRODUCT_CONCEPT_FEATURE' IN TYPEOF(SELF));
  WR2: SIZEOF(QUERY(cfr <* USEDIN(SELF, 'PRODUCT_CONCEPT_SCHEMA.CONCEPT_FEATURE_RELATIONSHIP.RELATING_PRODUCT_CONCEPT_FEATURE') | 'PRODUCT_CONCEPT_SCHEMA.CONCEPT_FEATURE_RELATIONSHIP_WITH_CONDITION' IN TYPEOF(cfr))) + SIZEOF(QUERY(cfr <* USEDIN(SELF, 'PRODUCT_CONCEPT_SCHEMA.CONCEPT_FEATURE_RELATIONSHIP.RELATED_PRODUCT_CONCEPT_FEATURE') | 'PRODUCT_CONCEPT_SCHEMA.CONCEPT_FEATURE_RELATIONSHIP_WITH_CONDITION' IN TYPEOF(cfr))) = 0;
  WR3: SELF.condition.conditional_operator.name = 'implication';
END_ENTITY;

ENTITY package_product_concept_feature
  SUBTYPE OF (product_concept_feature);
WHERE
  WR1: NOT ('PRODUCT_CONCEPT_SCHEMA.CONDITIONAL_CONCEPT_FEATURE' IN TYPEOF(SELF));
  WR2: SIZEOF(QUERY(cfr <* USEDIN(SELF, 'PRODUCT_CONCEPT_SCHEMA.CONCEPT_FEATURE_RELATIONSHIP.RELATING_PRODUCT_CONCEPT_FEATURE') | ('PRODUCT_CONCEPT_SCHEMA.CONCEPT_FEATURE_RELATIONSHIP_WITH_CONDITION' IN TYPEOF(cfr)) AND (SIZEOF(QUERY(ipcf <* USEDIN(cfr, 'PRODUCT_CONCEPT_SCHEMA.CONDITIONAL_CONCEPT_FEATURE.CONDITION') | 'PRODUCT_CLASS_MIM.INCLUSION_PRODUCT_CONCEPT_FEATURE' IN TYPEOF(ipcf))) = 1))) > 0;
END_ENTITY;

ENTITY product_class
  SUBTYPE OF (product_concept, characterized_object);
END_ENTITY;

ENTITY product_concept_feature_category
  SUBTYPE OF (group);
WHERE
  WR1: SIZEOF(QUERY(aga <* USEDIN(SELF, 'MANAGEMENT_RESOURCES_SCHEMA.GROUP_ASSIGNMENT.ASSIGNED_GROUP') | ('GROUP_MIM.APPLIED_GROUP_ASSIGNMENT' IN TYPEOF(aga)) AND ((aga\group_assignment.role\object_role.name <> 'specification category member') OR (SIZEOF(QUERY(i <* aga\applied_group_assignment.items | ('PRODUCT_CONCEPT_SCHEMA.PRODUCT_CONCEPT_FEATURE' IN TYPEOF(i)) AND NOT ('PRODUCT_CONCEPT_SCHEMA.CONDITIONAL_CONCEPT_FEATURE' IN TYPEOF(i)))) <> SIZEOF(aga\applied_group_assignment.items))))) = 0;
END_ENTITY;

ENTITY product_concept_feature_category_usage
  SUBTYPE OF (group_assignment);
  SELF\group_assignment.assigned_group : product_concept_feature_category;
  items : SET[1:?] OF category_usage_item;
WHERE
  WR1: SELF.role.name IN ['mandatory category usage','optional category usage'];
END_ENTITY;

RULE product_concept_feature_requires_category FOR
(product_concept_feature);
WHERE
  WR1: SIZEOF(QUERY(pcf <* product_concept_feature | (SIZEOF(['PRODUCT_CLASS_MIM.INCLUSION_PRODUCT_CONCEPT_FEATURE', 'PRODUCT_CONCEPT_SCHEMA.CONDITIONAL_CONCEPT_FEATURE'] * TYPEOF(pcf)) = 0) AND (SIZEOF(QUERY(aga <* USEDIN(pcf, 'GROUP_MIM.APPLIED_GROUP_ASSIGNMENT.ITEMS') | (aga\group_assignment.role\object_role.name = 'specification category member') AND ('PRODUCT_CLASS_MIM.PRODUCT_CONCEPT_FEATURE_CATEGORY' IN TYPEOF(aga.assigned_group)))) <> 1))) = 0;
END_RULE;

RULE restrict_concept_feature_operator FOR
(concept_feature_operator);
WHERE
  WR1: SIZEOF(QUERY(cfo <* concept_feature_operator | NOT (cfo.name IN ['and','or','oneof','not','implication']))) = 0;
  WR2: SIZEOF(QUERY(cfo <* concept_feature_operator | (cfo.name = 'implication') AND (SIZEOF(QUERY(cfrwc <* USEDIN(cfo, 'PRODUCT_CONCEPT_SCHEMA.CONCEPT_FEATURE_RELATIONSHIP_WITH_CONDITION.CONDITIONAL_OPERATOR') | SIZEOF(QUERY(ccf <* USEDIN(cfrwc, 'PRODUCT_CONCEPT_SCHEMA.CONDITIONAL_CONCEPT_FEATURE.CONDITION') | NOT ('PRODUCT_CLASS_MIM.INCLUSION_PRODUCT_CONCEPT_FEATURE' IN TYPEOF(ccf)))) > 0)) > 0))) = 0;
  WR3: SIZEOF(QUERY(cfo <* concept_feature_operator | (cfo.name = 'not') AND (SIZEOF(QUERY(cfrwc <* USEDIN(cfo, 'PRODUCT_CONCEPT_SCHEMA.CONCEPT_FEATURE_RELATIONSHIP_WITH_CONDITION.CONDITIONAL_OPERATOR') | cfrwc.related_product_concept_feature :<>: cfrwc.relating_product_concept_feature)) > 0))) = 0;
END_RULE;

RULE restrict_group_relationship_for_specification_category FOR
(group_relationship);
WHERE
  WR1: SIZEOF(QUERY(gr <* group_relationship | (gr.name = 'specification category hierarchy') AND (NOT ('PRODUCT_CLASS_MIM.PRODUCT_CONCEPT_FEATURE_CATEGORY' IN TYPEOF(gr.related_group)) OR NOT ('PRODUCT_CLASS_MIM.PRODUCT_CONCEPT_FEATURE_CATEGORY' IN TYPEOF(gr.relating_group))))) = 0;
END_RULE;

END_SCHEMA;  -- Product_class_mim


© ISO 2019 — All rights reserved