Application module: Product class | ISO/TS 10303-1103:2019(E) © ISO |
This clause specifies the EXPRESS schema derived from the mapping table. It uses elements from the common resources or from other application modules and defines the EXPRESS constructs that are specific to this part of ISO 10303.
This clause constitutes the Module Interpreted Module (MIM) of the application module.
This clause also specifies the modifications that apply to the constructs imported from the common resources.
The following restrictions apply to the use, in this schema, of constructs defined in common resources or in application modules:
Short names of entities defined in this schema are described in Annex A. Unambiguous identification of this schema is defined in Annex B.
EXPRESS specification:
*)
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);
(*
NOTE 1 The schemas referenced above are specified in the following part of ISO 10303:
Classification_assignment_mim ISO/TS 10303-1114 Group_mim ISO/TS 10303-1113 Identification_assignment_mim ISO/TS 10303-1021 Product_concept_identification_mim ISO/TS 10303-1060 Property_assignment_mim ISO/TS 10303-1030 basic_attribute_schema ISO 10303-41 product_concept_schema ISO 10303-44 product_property_definition_schema ISO 10303-41
NOTE 2 See Annex D, Figures D.1and D.2 for a graphical representation of this schema.
This subclause specifies the MIM types for this application module. The MIM types and definitions are specified below.
The category_usage_item type allows for the designation of the data type product_class.
EXPRESS specification:
*)
TYPE
category_usage_item =
SELECT
(product_class);
END_TYPE;
(*
The id_for_class type is an extension of the identification_item type. It adds the data types product_class and product_concept_feature to the list of alternate data types.
NOTE The list of entity data types may be extended in application modules that use the constructs of this module.
EXPRESS specification:
*)
TYPE
id_for_class =
EXTENSIBLE
GENERIC_ENTITY
SELECT
BASED_ON
identification_item
WITH
(product_class,
product_concept_feature);
END_TYPE;
(*
The specification_for_category type is an extension of the groupable_item type. It adds the data types package_product_concept_feature and product_concept_feature to the list of alternate data types.
NOTE The list of entity data types may be extended in application modules that use the constructs of this module.
EXPRESS specification:
*)
TYPE
specification_for_category =
EXTENSIBLE
GENERIC_ENTITY
SELECT
BASED_ON
groupable_item
WITH
(package_product_concept_feature,
product_concept_feature);
END_TYPE;
(*
This subclause specifies the MIM entities for this module. The MIM entities and definitions are specified below.
EXPRESS specification:
*)
ENTITY characterized_product_concept_feature
SUBTYPE OF (product_concept_feature, characterized_object);
END_ENTITY;
(*
EXPRESS specification:
*)
ENTITY characterized_product_concept_feature_category
SUBTYPE OF (product_concept_feature_category, characterized_object);
END_ENTITY;
(*
EXPRESS specification:
*)
ENTITY exclusive_product_concept_feature_category
SUBTYPE OF (product_concept_feature_category);
END_ENTITY;
(*
EXPRESS specification:
*)
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;
(*
Formal propositions:
WR1: an inclusion_product_concept_feature shall not be of type package_product_concept_feature.
WR2: an inclusion_product_concept_feature shall not be referenced as relating_product_concept_feature nor as related_product_concept_feature by concept_feature_relationship_with_condition instances.
WR3: an inclusion_product_concept_feature shall reference as condition a concept_feature_relationship_with_condition which references a concept_feature_operator with a name of 'implication'.
EXPRESS specification:
*)
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;
(*
Formal propositions:
WR1: a package_product_concept_feature shall not be of type conditional_concept_feature.
WR2: a package_product_concept_feature shall be referenced as relating_product_concept_feature by at least one concept_feature_relationship_with_condition which is referenced as condition by a conditional_concept_feature of type inclusion_product_concept_feature.
NOTE The fact that the product_class entity is a subtype of the characterized_object entity enables to assign properties to characterize the product class.
EXPRESS specification:
*)
ENTITY product_class
SUBTYPE OF (product_concept, characterized_object);
END_ENTITY;
(*
EXAMPLE The body color for cars or the kind of wood for pieces of furniture are examples of product_concept_feature_category.
EXPRESS specification:
*)
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;
(*
Formal propositions:
WR1: a product_concept_feature_category shall only be referenced as assigned_group by applied_group_assignment instances:
Additionally, this assignment specifies if the usage of one or more product features belonging to this product_concept_feature_category is mandatory or optional for all products of the product classes.
EXPRESS specification:
*)
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;
(*
Attribute definitions:
assigned_group: the product_concept_feature_category that is considered.
items: the set of instances of types listed in category_usage_item to which the product_concept_feature_category is assigned.
Formal propositions:
WR1: the product_concept_feature_category_usage shall have as role an object_role with a name of 'mandatory category usage' or 'optional category usage'.
This subclause specifies the MIM rules for this module. The MIM rules and definitions are specified below.
EXPRESS specification:
*)
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;
(*
Argument definitions:
concept_feature_operator : the set of all instances of concept_feature_operator.
Formal propositions:
WR1: each instance of concept_feature_operator shall have a name of 'and', 'or', 'oneof, 'not', or 'implication'.
WR2: if a concept_feature_operator has a name of 'implication', it shall only be referenced as conditional_operator by concept_feature_relationship_with_condition instances which are referenced as the condition by conditional_concept_feature instances which are of type inclusion_product_concept_feature.
WR3: if a concept_feature_operator has a name of 'not', it shall only be referenced as conditional_operator by concept_feature_relationship_with_condition instances where the attribute relating_product_concept_feature refers to the same instance as the attribute related_product_concept_feature.
EXPRESS specification:
*)
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;
(*
Argument definitions:
group_relationship : the set of all instances of group_relationship.
Formal propositions:
WR1: if a group_relationship has a name of 'specification category hierarchy', the related_group and the relating_group shall be of type product_concept_feature_category.
EXPRESS specification:
*)
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;
(*
Argument definitions:
product_concept_feature : the set of all instances of product_concept_feature.
Formal propositions:
WR1: each instance of product_concept_feature is contained in the set of items of exactly one applied_group_assignment which has as the role an object_role with name 'specification category member' and which references as the assigned_group a product_concept_feature_category.
*)
END_SCHEMA; -- Product_class_mim
(*
© ISO 2019 — All rights reserved