Integrated generic resource: Fundamentals of product description and support | ISO 10303-41:2021(E) © ISO |
EXAMPLE The identification of products and definitions of products, the grouping of products according to classification schemes and the definition of various kinds of relationship between products are all examples of generic aspects of product definition.
This clause defines the information requirements to which implementations shall conform using the EXPRESS language as defined in ISO 10303-11. The following EXPRESS declaration begins the product_definition_schema and identifies the necessary external references.Each implementation of an AP that uses this schema and that encodes entity names shall use the encoding specified in Annex A. Each reference to this schema in an open system shall use the identifier encoding specified in Annex B. This schema is illustrated in Annex D using the EXPRESS-G notation.
EXPRESS specification:
*)
SCHEMA product_definition_schema;
REFERENCE FROM
application_context_schema
--
ISO 10303-41
(product_context,
product_definition_context);
REFERENCE FROM
basic_attribute_schema
--
ISO 10303-41
(get_id_value,
get_name_value,
id_attribute,
id_attribute_select,
name_attribute,
name_attribute_select);
REFERENCE FROM
document_schema
--
ISO 10303-41
(document);
REFERENCE FROM
effectivity_schema
--
ISO 10303-41
(effectivity);
REFERENCE FROM
external_reference_schema
--
ISO 10303-41
(external_source);
REFERENCE FROM
product_property_definition_schema
--
ISO 10303-41
(characterized_object);
REFERENCE FROM
support_resource_schema
--
ISO 10303-41
(bag_to_set,
identifier,
label,
text);
(*
NOTE 1 The schemas referenced above are specified in the following parts:
application_context_schema ISO 10303-41 basic_attribute_schema ISO 10303-41 document_schema ISO 10303-41 effectivity_schema ISO 10303-41 external_reference_schema ISO 10303-41 product_property_definition_schema ISO 10303-41 support_resource_schema ISO 10303-41
NOTE 2 See Annex D for a graphical representation of this schema.
The use of the entity data types of this schema to represent products is specified in the viewpoint as defined by the requirements of an annotated EXPRESS schema that uses or specializes this part of ISO 10303. Every product need not be represented by an instance of the entity data type product. Some products may be represented by other constructs in the integrated resources.
EXAMPLE 1 The constructs product_definition_formation and product_definition, defined in the product_definition_schema of this part of ISO 10303, are examples of other entity data types that may represent a product.
EXAMPLE 2 The construct action_resource, defined in ISO 10303-49, is an example of an entity data type that may represent a product.
A single product may have multiple groups of definitions associated with it; each group is valid in a given application context.
EXAMPLE 3 An application context may be the manufacture of ball-point pens. A particular design of ball-point pen has multiple versions. Each version is described through a group of product definitions. An older version has a solid cap whereas a more recent version has a hole in the cap to prevent people from choking if they swallow it. The characteristics of the two versions would be different from each other because the later version would have a hole in the cap whereas the earlier version would not. This schema could be used to define the ball-point pen with a solid cap as one product and the one with a hole in the cap as another. On the other hand it could also be used to define both pens as two versions of a single product. The approach taken would depend upon the requirements of the application context.
The definition of a product may include the properties that characterize it.
EXAMPLE 4 An integrated circuit product will have a functional definition represented by a circuit schematic diagram and a physical definition represented by a circuit layout diagram.
Definitions of products may be related to each other in various ways. This part of ISO 10303 provides the resources needed to identify the relationships among products and to be able to characterize those relationships.
EXAMPLE 5 The ball-point pen cap would be related in an assembly relationship to the ball-point pen itself and one of the caps could be substituted for the other in some circumstances.
There are two ways to represent the concept of real object:
EXAMPLE 6 An airplane, in service during 30 years, may have different configurations during its life.
EXAMPLE 7 A prototype may be considered as a particular definition of a product.
Product definition facts are independent of properties. The ways in which these facts may be combined are prescribed by the relationships that are defined in this schema. Each product definition fact can be interpreted in any application context; the ways in which these facts are to be interpreted are prescribed in annotated EXPRESS schemas that use or specialise the resources defined in this part of ISO 10303.
NOTE An example of the way in which this schema may be used is given in annex F.1.
NOTE The list of entity data types will be extended in application resources that use the constructs of this resource.
EXPRESS specification:
*)
TYPE
product_definition_or_reference
=
EXTENSIBLE
GENERIC_ENTITY
SELECT
(product_definition,
generic_product_definition_reference);
END_TYPE;
(*
EXPRESS specification:
*)
TYPE
pds_id_attribute_select
=
SELECT
BASED_ON
id_attribute_select
WITH
(product_category);
END_TYPE;
(*
EXPRESS specification:
*)
TYPE
pds_name_attribute_select
=
SELECT
BASED_ON
name_attribute_select
WITH
(product_definition,
product_definition_substitute);
END_TYPE;
(*
EXPRESS specification:
*)
TYPE
source
=
ENUMERATION
OF
(made,
bought,
not_known);
END_TYPE;
(*
Enumerated item definitions:
made: characterize a product is to be manufactured within an organization;
bought: characterize a product is to be bought;
not_known: information, whether a product is to be manufactured within an organization or bought, is not known.
EXPRESS specification:
*)
ENTITY alternative_solution_relationship
SUBTYPE OF (product_definition_formation_relationship);
relation_type : STRING;
WHERE
WR1: acyclic_alternative_solution_relationship(SELF, [SELF\product_definition_formation_relationship.related_product_definition_formation],
'PRODUCT_DEFINITION_SCHEMA.ALTERNATIVE_SOLUTION_RELATIONSHIP');
END_ENTITY;
(*
Attribute definitions:
relation_type: the meaning of the relationship.
Formal propositions:
WR1: An alternative_solution_relationship shall not participate in its own definition.
NOTE Properties that are assigned using characterized_object are outside version control, whereas properties added via product_definition are under version control.
EXPRESS specification:
*)
ENTITY characterized_product
SUBTYPE OF (characterized_object, product);
END_ENTITY;
(*
EXPRESS specification:
*)
ENTITY generic_product_definition_reference
ABSTRACT SUPERTYPE
OF (ONEOF (product_definition_reference,
product_definition_reference_with_local_representation));
source : external_source;
END_ENTITY;
(*
Attribute definitions:
source: defines the location which contains the original definition of the product_definition.
NOTE 1 The term product is defined in ISO 10303-1.
EXAMPLE 1 The SS Titanic is a product that could be represented by product.
EXAMPLE 2 Lifeboat is a class of products that could be represented by the entity data type product. Each lifeboat on the SS Titanic is a member of this class.
A product depends on one or more instances of product_context specifying a frame of reference that determines the validity of the information held about the product or class of products.
NOTE 2 Products that this entity data type can represent include:
EXAMPLE 3 The computer used to edit this document, the Eiffel Tower, and coal are examples of products existing in the real world.
EXAMPLE 4 A company develops a new lawnmower, a product that will be realized through a manufacturing and assembly process.
EXAMPLE 5 Heating, lighting, and Internet connectivity are examples of functions.
EXAMPLE 6 A company may develop a generic engine that is described by a schematic drawing showing its main principles and components. This product may be used as the basis for a range of engines that share characteristics such as multi-valve and operating temperature. Then, when defining a new engine, designers create a specialization of this generic engine with specific characteristics such as cylinder volume and power.
NOTE 3 The products or classes of products that are represented by product are specified in annotated EXPRESS schemas that use or specialize this entity data type.
EXPRESS specification:
*)
ENTITY product;
id : identifier;
name : label;
description :
OPTIONAL
text;
frame_of_reference : SET[1:?] OF product_context;
END_ENTITY;
(*
Attribute definitions:
id: the identifier that distinguishes the product.
NOTE 4 The meaning of this attribute can be defined in the annotated EXPRESS schemas that use or specialize this entity, or in an agreement of common understanding between the partners sharing this information.
NOTE 5 The context in which id is used as a discriminating characteristic can be identified in an annotated Express schema that uses or specializes this entity, or by default, in an agreement of common understanding between partners sharing this information.
EXAMPLE 7 Part numbers, stock item numbers, and serial numbers are examples of product identifiers.
name: the label by which the product is known.
EXAMPLE 8 'Widget' is an example of name.
description: the text that characterizes the product. The value of the attribute need not be specified.
frame_of_reference: a set of product_context entities that defines the contexts within which the data associated with the product is relevant.
EXAMPLE In an application protocol whose context includes manufactured parts, 'mechanical part', 'electrical part', 'structural part', 'piping part', 'water pipe', and 'hot water pipe' are examples of types of product.
EXPRESS specification:
*)
ENTITY product_category;
name : label;
description :
OPTIONAL
text;
DERIVE
id : identifier := get_id_value(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF, 'BASIC_ATTRIBUTE_SCHEMA.ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1;
END_ENTITY;
(*
Attribute definitions:
name: the label by which the product_category is known.
description: the text that characterizes the product_category. The value of the attribute need not be specified.
id: the identifier that distinguishes the product_category.
NOTE 1 This attribute is an upwardly compatible addition to product_category as specified in ISO 10303-41:1994.
NOTE 2 The meaning of this attribute can be defined in the annotated EXPRESS schemas that use or specialize this entity, or in an agreement of common understanding between the partners sharing this information.
NOTE 3 The context in which id is used as a discriminating characteristic can be identified in an annotated Express schema that uses or specializes this entity, or by default, in an agreement of common understanding between partners sharing this information.
Formal propositions:
WR1: Each product_category shall be the identified_item in at most one id_attribute.
NOTE 4 The id_attribute data type is defined in basic_attribute_schema of this part of ISO 10303.
NOTE 5 A template for constraining the population of the entity data types defined in the basic_attribute_schema is described in annex E.
A product_category_relationship is a hierarchical relationship of one category with another and provides a description of their relationship. If a product belongs to a product_category, it also belongs to all of the parent categories.
NOTE 1 The role of product_category_relationship can be defined in the annotated EXPRESS schemas that use or specialize this entity, or by default, in an agreement of common understanding between the partners sharing this information.
EXAMPLE 1 The two sub-level product_categorys called 'cold water pipe' and 'hot water pipe' can be related to each other through the more generic product_category called 'piping part' by using two product_category_relationships, one product_category_relationship between 'piping part' and 'cold water pipe' and the other product_category_relationship between 'piping part' and 'hot water pipe'.
NOTE 2 Networks of instances of product_category may be defined using this entity.
EXAMPLE 2 A product_category called 'piping part' may be the parent category of sub-categories called 'cold water pipe' and 'hot water pipe'. The product_category called 'hot water pipe' may be a sub-category of another product_category called 'boiler output pipe'. This is an example of a product_category network because the product_category called 'hot water pipe' has two parents.
NOTE 3 This entity, in conjunction with the product_category entity, is based on the relationship template that is described in annex E.3.
EXPRESS specification:
*)
ENTITY product_category_relationship;
name : label;
description :
OPTIONAL
text;
category : product_category;
sub_category : product_category;
WHERE
WR1: acyclic_product_category_relationship(SELF, [SELF.sub_category]);
END_ENTITY;
(*
Attribute definitions:
name: the label by which the product_category_relationship is known.
description: the text that characterizes the product_category_relationship. The value of the attribute need not be specified.
category: the parent of the sub_category.
EXAMPLE 3 In the previous example, 'piping part' would be the category for 'cold water pipe' and 'hot water pipe'.
sub_category: a child of the category.
EXAMPLE 4 In the previous example 'cold water pipe' would be the sub_category for 'piping part' in one case and 'hot water pipe' would be the sub_category in the other.
Formal propositions:
WR1: A graph of product_category instances shall not be cyclic.
NOTE 1 The product_definition entity type supports the representation of different views of a product for different purposes. Multiple views of the same product, or class of products, are represented by different instances of product_definition for the same product_definition_formation.
EXAMPLE 1 The design of the SS Titanic and the as-built description of the SS Titanic can be represented as two instances of product_definition for the product that represents the ship itself.
The product_definition entity data type may represent particular products that are the members of an identified class of products.
EXAMPLE 2 Each individual lifeboat on the SS Titanic can be represented by an instance of product_definition, in which the associated product represents the class of products whose members are the lifeboats.
NOTE 2 A product_definition can identify an occurrence of a product.
The product_definition entity data type acts as an aggregator for information about the properties of products.
EXAMPLE 3 The designed shape of an aeroplane can be identified by an instance of the product_definition_shape entity data type that is associated with the design product_definition of the aeroplane.
The usage of a product_definition in another context is specified through its participation in a product_definition_relationship as the related_product_definition in which the using context is specified by the frame_of_reference of the relating_product_definition.
If a product_definition is considered in multiple contexts, the product_definition_context_association shall be used to specify a collection of product_definition_contexts.
EXPRESS specification:
*)
ENTITY product_definition;
id : identifier;
description :
OPTIONAL
text;
formation : product_definition_formation;
frame_of_reference : product_definition_context;
DERIVE
name : label := get_name_value(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF, 'BASIC_ATTRIBUTE_SCHEMA.NAME_ATTRIBUTE.NAMED_ITEM')) <= 1;
END_ENTITY;
(*
Attribute definitions:
id: the identifier that distinguishes the product_definition.
NOTE 3 The meaning of this attribute can be defined in the annotated EXPRESS schemas that use or specialize this entity, or in an agreement of common understanding between the partners sharing this information.
NOTE 4 The context in which id is used as a discriminating characteristic can be identified in an annotated Express schema that uses or specializes this entity, or by default, in an agreement of common understanding between partners sharing this information.
description: the text that characterizes the product_definition. The value of the attribute need not be specified.
formation: the product_definition_formation to which the product_definition relates.
frame_of_reference: the product_definition_context in which the product_definition is defined.
name: the label by which the product_definition is known.
NOTE 5 This attribute is an upwardly compatible addition to product_definition as specified in ISO 10303-41:1994.
Formal propositions:
WR1: Each product_definition shall be the named_item in at most one name_attribute.
NOTE 6 The name_attribute data type is defined in basic_attribute_schema of this part of ISO 10303.
NOTE 7 A template for constraining the population of the entity data types defined in the basic_attribute_schema is described in annex E.
A product_definition_context_association is an association of a product_definition_context with a product_definition, and specifies the meaning of this association.
NOTE 1 A product_definition_context_association may be used to associate a using context to a product_definition. The defining context is associated to the product_definition using frame_of_reference.
EXAMPLE A product_definition, initially defined in the context of 'mechanical design', and in which the representation of the shape of a product is defined, may also be relevant in the context of 'process-planning design'. For such a case, the product_definition_context_association would relate the product_definition with the product_definition_context characterizing the context 'process-planning design' and the name of the role attribute would be 'other relevant context'.
EXPRESS specification:
*)
ENTITY product_definition_context_association;
definition : product_definition;
frame_of_reference : product_definition_context;
role : product_definition_context_role;
END_ENTITY;
(*
Attribute definitions:
definition: the reference to a product_definition associated to a context.
frame_of_reference: the product_definition_context that defines the stage in the product life cycle with which the product_definition is to be associated.
role: the product_definition_context_role that specifies the purpose of the association of the context of this frame_of_reference attribute with the product_definition of the definition attribute.
NOTE 2 The meaning of this attribute can be defined in the annotated EXPRESS schemas that use or specialize this entity, or in an agreement of common understanding between the partners sharing this information.
EXPRESS specification:
*)
ENTITY product_definition_context_role;
name : label;
description :
OPTIONAL
text;
END_ENTITY;
(*
Attribute definitions:
name: the label by which the product_definition_context_role is known.
description: the text that characterizes the product_definition_context_role. The value of the attribute need not be specified.
A product_definition_effectivity is a type of effectivity. A product_definition_effectivity is the identification of a valid use of a particular product_definition in the context of its participation in a given product_definition_relationship. The referenced product_definition is the related_product_definition attribute of the product_definition_relationship.
NOTE Appropriate subtypes of product_definition_relationship and further information about the way to describe assemblies are specified in ISO 10303-44.
EXPRESS specification:
*)
ENTITY product_definition_effectivity
SUBTYPE OF (effectivity);
usage : product_definition_relationship;
WHERE
WR1: SIZEOF(USEDIN(SELF, 'MANAGEMENT_RESOURCES_SCHEMA.EFFECTIVITY_ASSIGNMENT.ASSIGNED_EFFECTIVITY')) = 0;
END_ENTITY;
(*
Attribute definitions:
usage: the product_definition_relationship that defines the context of the effectivity.
Formal propositions:
WR1: A product_definition_effectivity shall not be referred to as assigned_effectivity.
A product_definition_formation is a collector of definitions of a product.
EXAMPLE 1 An application interpreted model could use this entity to support the identification of different versions of a single product. Each version would be described by a group of instances of the entity data type product_definition and each group, identified by a product_definition_formation, would be associated with the same product.
EXPRESS specification:
*)
ENTITY product_definition_formation;
id : identifier;
description :
OPTIONAL
text;
of_product : product;
UNIQUE
UR1: id, of_product;
END_ENTITY;
(*
Attribute definitions:
id: the identifier that distinguishes the product_definition_formation.
NOTE 1 The context in which id is used as a discriminating characteristic can be identified in an annotated Express schema that uses or specializes this entity, or by default, in an agreement of common understanding between partners sharing this information.
EXAMPLE 2 Part version number is an example of a product_definition_formation identifier.
description: the text that characterizes the product_definition_formation. The value of the attribute need not be specified.
NOTE 2 This attribute may be used to depict differences in the purpose and function of different formations of a single product.
of_product: the product to which the product_definition_formation belongs.
NOTE 3 A product is associated with one or more product_definition_formation instances through the implicit inverse of this relationship.
Formal propositions:
UR1: The id of each product_definition_formation shall be unique within the collection of product_definition_formations that are related to the same product (through their attribute of_product).
EXPRESS specification:
*)
ENTITY final_solution
SUBTYPE OF (product_definition_formation);
status : STRING;
INVERSE
specification : SET[1:?] OF product_definition FOR formation;
END_ENTITY;
(*
Attribute definitions:
status: the text string that describes the level of completion between the neutral part and the final part.
specification: the set of instances of the entity data type product_definition that defines the various aspects of the final_solution.
A product_definition_formation_relationship is a relationship between two instances of the entity data type product_definition_formation and provides an identification and description of this relationship.
NOTE 1 A relationship may exist between instances of the entity data type product_definition_formation that relate to different instances of the entity data type product or between different formations of the same product.
NOTE 2 The role of product_definition_formation_relationship can be defined in the annotated EXPRESS schemas that use or specialize this entity, or by default, in an agreement of common understanding between the partners sharing this information.
NOTE 3 Relationships represented using this entity may be parent child relationship. Annotated EXPRESS schemas that use or specialize this entity specify whether or not the relationship is directed.
NOTE 4 This entity, together with the product_definition_formation entity, is based on the relationship template that is described in annex E.3.
EXPRESS specification:
*)
ENTITY product_definition_formation_relationship;
id : identifier;
name : label;
description :
OPTIONAL
text;
relating_product_definition_formation : product_definition_formation;
related_product_definition_formation : product_definition_formation;
END_ENTITY;
(*
Attribute definitions:
id: the identifier that distinguishes the product_definition_formation_relationship.
NOTE 5 The meaning of this attribute can be defined in the annotated EXPRESS schemas that use or specialize this entity, or in an agreement of common understanding between the partners sharing this information.
NOTE 6 The context in which id is used as a discriminating characteristic can be identified in an annotated Express schema that uses or specializes this entity, or by default, in an agreement of common understanding between partners sharing this information.
name: the label by which the product_definition_formation_relationship is known.
description: the text that characterizes the product_definition_formation_relationship. The value of the attribute need not be specified.
relating_product_definition_formation: one of the instances of product_definition_formation that is a part of the relationship.
NOTE 7 The meaning of this attribute can be defined in the annotated EXPRESS schemas that use or specialize this entity, or in an agreement of common understanding between the partners sharing this information.
related_product_definition_formation: the other instance of product_definition_formation that is a part of the relationship. If one element of the relationship is dependent up on the other, this attribute shall be the dependent one.
NOTE 8 The meaning of this attribute can be defined in the annotated EXPRESS schemas that use or specialize this entity, or in an agreement of common understanding between the partners sharing this information.
EXPRESS specification:
*)
ENTITY product_definition_formation_with_specified_source
SUBTYPE OF (product_definition_formation);
make_or_buy : source;
END_ENTITY;
(*
Attribute definitions:
make_or_buy: the characterization of the source of the product_definition_formation.
A product_definition_relationship is a relationship between two instances of the entity data type product_definition or generic_product_definition_reference and provides an identification and description of this relationship.
NOTE 1 A relationship may exist between instances of the entity data type product_definition that relate to different instances of the entity data type product or between different definitions of the same product.
EXAMPLE 1 The relationships within a bill-of-materials structure are examples of product_definition_relationship entity data types that associate different products. The relationship between a sketch and a detailed design is an example of a product_definition_relationship that associates different definitions of a single product.
NOTE 2 A single product_definition may be used more than once within the description of a product.
EXAMPLE 2 The same component could be used more than once in the same assembly. Each usage of the component would be specified as an instance of the product_definition_relationship entity.
NOTE 3 The role of product_definition_relationship can be defined in the annotated EXPRESS schemas that use or specialize this entity, or by default, in an agreement of common understanding between the partners sharing this information.
NOTE 4 Relationships represented using this entity may be parent child relationship. Annotated EXPRESS schemas that use or specialize this entity specify whether or not the relationship is directed.
NOTE 5 This entity, together with the product_definition entity, is based on the relationship template that is described in annex E.3.
EXPRESS specification:
*)
ENTITY product_definition_relationship;
id : identifier;
name : label;
description :
OPTIONAL
text;
relating_product_definition : product_definition_or_reference;
related_product_definition : product_definition_or_reference;
END_ENTITY;
(*
Attribute definitions:
id: the identifier that distinguishes the product_definition_relationship.
NOTE 6 The meaning of this attribute can be defined in the annotated EXPRESS schemas that use or specialize this entity, or in an agreement of common understanding between the partners sharing this information.
NOTE 7 The context in which id is used as a discriminating characteristic can be identified in an annotated Express schema that uses or specializes this entity, or by default, in an agreement of common understanding between partners sharing this information.
name: the label by which the product_definition_relationship is known.
description: the text that characterizes the product_definition_relationship. The value of the attribute need not be specified.
relating_product_definition: one of the instances of product_definition that is a part of the relationship.
NOTE 8 The meaning of this attribute can be defined in the annotated EXPRESS schemas that use or specialize this entity, or in an agreement of common understanding between the partners sharing this information.
NOTE 9 In the context of an ISO 10303 application protocol, the product_definition_relationship is an assembly component relationship, the relating_product_definition may be the assembly.
related_product_definition: the other instance of product_definition that is a part of the relationship. If one element of the relationship is dependent upon the other, this attribute shall be the dependent one.
NOTE 10 The meaning of this attribute can be defined in the annotated EXPRESS schemas that use or specialize this entity, or in an agreement of common understanding between the partners sharing this information.
NOTE 11 In the context of an ISO 10303 application protocol, the related_product_definition may be the product_definition that is an element of the assembly.
A product_definition_relationship_relationship is a relationship between two instances of the entity data type product_definition_relationship and provides an identification and description of this relationship.
EXPRESS specification:
*)
ENTITY product_definition_relationship_relationship;
id : identifier;
name : label;
description :
OPTIONAL
text;
relating : product_definition_relationship;
related : product_definition_relationship;
END_ENTITY;
(*
Attribute definitions:
id: the identifier that distinguishes the product_definition_relationship_relationship.
name: the label by which the product_definition_relationship_relationship is known.
description: the text that characterizes the product_definition_relationship_relationship. The value of the attribute need not be specified.
relating: one of the instances of product_definition that is a part of the relationship.
related: the other instance of product_definition that is a part of the relationship. If one element of the relationship is dependent upon the other, this attribute shall be the dependent one.
EXPRESS specification:
*)
ENTITY product_definition_reference
SUBTYPE OF (generic_product_definition_reference);
product_id : identifier;
product_definition_formation_id : identifier;
product_definition_id : identifier;
id_owning_organization_name :
OPTIONAL
label;
END_ENTITY;
(*
Attribute definitions:
product_id: specifies the identifier of the externally defined product, where the referenced product_definition is assigned to one of its product_definition_formation.
product_definition_formation_id: specifies the identifier of the externally defined product_definition_formation.
product_definition_id: specifies the identifier of the externally defined product_definition.
id_owning_organization_name: specifies the id owner of the externally defined product, realised by an applied organization_assignment with the role 'id owner'.
EXPRESS specification:
*)
ENTITY product_definition_reference_with_local_representation
SUBTYPE OF (generic_product_definition_reference, product_definition);
END_ENTITY;
(*
A product_definition_substitute is an association of a product_definition with a product_definition_relationship. The association states the fact that the product_definition may replace, in the context of the relationship, the product_definition that is specified in the related_product_definition attribute of the product_definition_relationship.
NOTE 1 If a product_definition_relationship exists between a component part and its assembly, a product_definition_substitute could be used to capture an allowable substitute, that is, a different component part that may be used as a replacement in the same assembly.
EXAMPLE 1 Two kinds of ball-point pens may be manufactured: a standard model and a deluxe model. Each model of the pen would be specified as a separate product_definition related to a particular kind of nib: a standard nib and a deluxe nib, respectively. The fact that the deluxe nib and the standard nib are interchangeable only in the context of the standard model of ball-point pen is established with this construct.
EXPRESS specification:
*)
ENTITY product_definition_substitute;
description :
OPTIONAL
text;
context_relationship : product_definition_relationship;
substitute_definition : product_definition;
DERIVE
name : label := get_name_value(SELF);
WHERE
WR1: context_relationship.related_product_definition :<>: substitute_definition;
WR2: SIZEOF(USEDIN(SELF, 'BASIC_ATTRIBUTE_SCHEMA.NAME_ATTRIBUTE.NAMED_ITEM')) <= 1;
END_ENTITY;
(*
Attribute definitions:
description: the text that characterizes the product_definition_substitute. The value of the attribute need not be specified.
context_relationship: the product_definition_relationship that specifies the context in which the replacement may occur.
EXAMPLE 2 In the previous example, the relating_product_definition of a product_definition_relationship identified as a context_relationship would be the standard model of the ball-point pen and the related_product_definition would be the standard nib.
substitute_definition: the product_definition that acts as an allowed replacement for the related_product_definition of the context_relationship.
EXAMPLE 3 In the previous example, this attribute would identify the deluxe nib .
name: the label by which the product_definition_substitute is known.
NOTE 2 This attribute is an upwardly compatible addition to product_definition as specified in ISO 10303-41:1994.
Formal propositions:
WR1: A product_definition shall not be defined as a substitute for itself.
WR2: Each product_definition_substitute shall be the named_item in at most one name_attribute.
NOTE 3 The name_attribute data type is defined in basic_attribute_schema of this part of ISO 10303
NOTE 4 A template for constraining the population of the entity data types defined in the basic_attribute_schema is described in annex E.
EXPRESS specification:
*)
ENTITY product_definition_with_associated_documents
SUBTYPE OF (product_definition);
documentation_ids : SET[1:?] OF document;
END_ENTITY;
(*
Attribute definitions:
documentation_ids: the set of instances of document entity data type that are associated with the product_definition.
EXPRESS specification:
*)
ENTITY product_related_product_category
SUBTYPE OF (product_category);
products : SET[1:?] OF product;
END_ENTITY;
(*
Attribute definitions:
products: a set of products that belong to the product_related_product_category.
A product_relationship is a relationship between two instances of the entity data type product and provides an identification and description of their relationship.
NOTE 1 The role of product_relationship can be defined in the annotated EXPRESS schemas that use or specialize this entity, or by default, in an agreement of common understanding between the partners sharing this information.
NOTE 2 Relationships represented using this entity may be parent child relationship. Annotated EXPRESS schemas that use or specialize this entity specify whether or not the relationship is directed.
NOTE 3 This entity, together with the product entity, is based on the relationship template that is described in annex E.3.
EXPRESS specification:
*)
ENTITY product_relationship;
id : identifier;
name : label;
description :
OPTIONAL
text;
relating_product : product;
related_product : product;
END_ENTITY;
(*
Attribute definitions:
id: the identifier that distinguishes the product_relationship.
NOTE 4 The context in which id is used as a discriminating characteristic can be identified in an annotated Express schema that uses or specializes this entity, or by default, in an agreement of common understanding between partners sharing this information.
name: the label by which the product_relationship is known.
description: the text that characterizes the product_relationship. The value of the attribute need not be specified.
relating_product: one of the instances of product that is a part of the relationship.
NOTE 5 The meaning of this attribute can be defined in the annotated EXPRESS schemas that use or specialize this entity, or in an agreement of common understanding between the partners sharing this information.
related_product: the other instance of product that is a part of the relationship. If one element of the relationship is dependent up on the other, this attribute shall be the dependent one.
NOTE 6 The meaning of this attribute can be defined in the annotated EXPRESS schemas that use or specialize this entity, or in an agreement of common understanding between the partners sharing this information.
The function returns TRUE if no cycle has been detected. Otherwise it returns FALSE.
NOTE 1 The algorithm of the function is explained in annex E.2.
EXPRESS specification:
*)
FUNCTION acyclic_alternative_solution_relationship (relation : alternative_solution_relationship; relatives : SET[1:?] OF product_definition_formation; specific_relation : STRING) : BOOLEAN;
LOCAL x : SET OF alternative_solution_relationship; END_LOCAL; IF relation.relating_product_definition_formation IN relatives THEN RETURN(FALSE); END_IF; x := QUERY(asr <* bag_to_set(USEDIN(relation.relating_product_definition_formation, 'PRODUCT_DEFINITION_SCHEMA.PRODUCT_DEFINITION_FORMATION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION_FORMATION')) | specific_relation IN TYPEOF(asr)); REPEAT i := 1 TO HIINDEX(x); IF NOT acyclic_alternative_solution_relationship(x[i], relatives + relation.relating_product_definition_formation, specific_relation) THEN RETURN(FALSE); END_IF; END_REPEAT; RETURN(TRUE);
END_FUNCTION;
(*
Argument definitions:
relation: (input) the candidate alternative_solution_relationship to be checked.
relatives: (input) the set of instances of the entity data type product_definition_formation for which the function is searching in the relating_product_definition_formation parameter of the relation argument.
specific_relation: (input) the fully qualified name of a subtype of the alternative_solution_relationship entity.
The acyclic_product_category_relationship function determines whether the graph of instances of the entity data type product_category that contains relation as one of its links contains a cycle. This function may be used to evaluate either a product_category_relationship or any of its subtypes. The function returns TRUE if no cycle has been detected. Otherwise it returns FALSE.
NOTE The algorithm of the function is explained in annex E.2.
EXPRESS specification:
*)
FUNCTION acyclic_product_category_relationship (relation : product_category_relationship; children : SET OF product_category) : BOOLEAN;
LOCAL x : SET OF product_category_relationship; local_children : SET OF product_category; END_LOCAL; REPEAT i := 1 TO HIINDEX(children); IF relation.category :=: children[i] THEN RETURN(FALSE); END_IF; END_REPEAT; x := bag_to_set(USEDIN(relation.category, 'PRODUCT_DEFINITION_SCHEMA.PRODUCT_CATEGORY_RELATIONSHIP.SUB_CATEGORY')); local_children := children + relation.category; IF SIZEOF(x) > 0 THEN REPEAT i := 1 TO HIINDEX(x); IF NOT acyclic_product_category_relationship(x[i], local_children) THEN RETURN(FALSE); END_IF; END_REPEAT; END_IF; RETURN(TRUE);
END_FUNCTION;
(*
Argument definitions:
relation: (input) the candidate product_category_relationship to be checked.
children: (input) the set of instances of the entity data type product_category that the function is searching for in the category field of the relation argument.
The acyclic_product_definition_formation_relationship function determines whether the graph of instances of the entity data type product_definition_formation that contains relation as one of its links contains a cycle. This function may be used to evaluate either a product_definition_formation_relationship or any of its subtypes. The function returns TRUE if no cycle has been detected. Otherwise it returns FALSE.
NOTE 1 The algorithm of the function is explained in annex E.2.
NOTE 2 This function is not used in this schema. It is defined here because other ISO 10303 integrated resources and application protocols that use the product_definition_formation_relationship entity include rules that use this function.
EXPRESS specification:
*)
FUNCTION acyclic_product_definition_formation_relationship (relation : product_definition_formation_relationship; relatives : SET[1:?] OF product_definition_formation; specific_relation : STRING) : BOOLEAN;
LOCAL x : SET OF product_definition_formation_relationship; END_LOCAL; IF relation.relating_product_definition_formation IN relatives THEN RETURN(FALSE); END_IF; x := QUERY(pdf <* bag_to_set(USEDIN(relation.relating_product_definition_formation, 'PRODUCT_DEFINITION_SCHEMA.PRODUCT_DEFINITION_FORMATION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION_FORMATION')) | specific_relation IN TYPEOF(pdf)); REPEAT i := 1 TO HIINDEX(x); IF NOT acyclic_product_definition_formation_relationship(x[i], relatives + relation.relating_product_definition_formation, specific_relation) THEN RETURN(FALSE); END_IF; END_REPEAT; RETURN(TRUE);
END_FUNCTION;
(*
Argument definitions:
relation: (input) the candidate product_definition_formation_relationship to be checked.
relatives: (input) the set of instances of the entity data type product_definition_formation that the function is searching for in the relating_product_definition_formation parameter of the relation argument.
specific_relation: (input) the fully qualified name of a subtype of the product_definition_formation_relationship entity.
The acyclic_product_definition_relationship function determines whether the graph of instances of the entity data type product_definition that contains relation as one of its links contains a cycle. This function may be used to evaluate either a product_definition_relationship or any of its subtypes. The function returns TRUE if no cycle has been detected. Otherwise it returns FALSE.
NOTE 1 The algorithm of the function is explained in annex E.2.
NOTE 2 This function is not used in this schema. It is defined here because other ISO 10303 integrated resources and application protocols that use the product_definition_relationship entity include rules that use this function.
EXPRESS specification:
*)
FUNCTION acyclic_product_definition_relationship (relation : product_definition_relationship; relatives : SET[1:?] OF product_definition_or_reference; specific_relation : STRING) : BOOLEAN;
LOCAL x : SET OF product_definition_relationship; END_LOCAL; IF relation.relating_product_definition IN relatives THEN RETURN(FALSE); END_IF; x := QUERY(pd <* bag_to_set(USEDIN(relation.relating_product_definition, 'PRODUCT_DEFINITION_SCHEMA.PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION')) | specific_relation IN TYPEOF(pd)); REPEAT i := 1 TO HIINDEX(x); IF NOT acyclic_product_definition_relationship(x[i], relatives + relation.relating_product_definition, specific_relation) THEN RETURN(FALSE); END_IF; END_REPEAT; RETURN(TRUE);
END_FUNCTION;
(*
Argument definitions:
relation: (input) the candidate product_definition_relationship to be checked.
relatives: (input) the set of instances of the entity data type product_definition that the function is searching for in the relating_product_definition parameter of the relation argument.
specific_relation: (input) the fully qualified name of a subtype of the product_definition_relationship entity.
The acyclic_product_relationship function determines whether the graph of instances of the entity data type product that contains relation as one of its links contains a cycle. This function may be used to evaluate either a product_relationship or any of its subtypes. The function returns TRUE if no cycle has been detected. Otherwise it returns FALSE.
NOTE 1 The algorithm of the function is explained in annex E.2.
NOTE 2 This function is not used in this schema. It is defined here because other ISO 10303 integrated resources and application protocols that use the product_relationship entity include rules that use this function.
EXPRESS specification:
*)
FUNCTION acyclic_product_relationship (relation : product_relationship; relatives : SET[1:?] OF product; specific_relation : STRING) : BOOLEAN;
LOCAL x : SET OF product_relationship; END_LOCAL; IF relation.relating_product IN relatives THEN RETURN(FALSE); END_IF; x := QUERY(prod <* bag_to_set(USEDIN(relation.relating_product, 'PRODUCT_DEFINITION_SCHEMA.PRODUCT_RELATIONSHIP.RELATED_PRODUCT')) | specific_relation IN TYPEOF(prod)); REPEAT i := 1 TO HIINDEX(x); IF NOT acyclic_product_relationship(x[i], relatives + relation.relating_product, specific_relation) THEN RETURN(FALSE); END_IF; END_REPEAT; RETURN(TRUE);
END_FUNCTION;
(*
Argument definitions:
relation: (input) the candidate product_relationship to be checked.
relatives: (input) the set of instances of the entity data type product that the function is searching for in the relating_product parameter of the relation argument.
specific_relation: (input) the fully qualified entity name of a type of product_relationship entity.
EXPRESS specification:
*)
FUNCTION categories_of_product (obj : product) : SET OF STRING;
LOCAL category_assignments : BAG OF product_category; categories : SET OF STRING := []; END_LOCAL; category_assignments := USEDIN(obj, 'PRODUCT_DEFINITION_SCHEMA.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS'); REPEAT i := LOINDEX(category_assignments) TO HIINDEX(category_assignments) BY 1; categories := categories + category_assignments[i].name; END_REPEAT; RETURN(categories);
END_FUNCTION;
(*
Argument definitions:
obj: the product whose categories are searched.
NOTE This function is not used in this schema.
EXPRESS specification:
*)
FUNCTION get_product_definitions (c_def_instance : product) : SET OF product_definition;
LOCAL pd_set : SET OF product_definition_formation := []; pdr_set : SET OF product_definition := []; END_LOCAL; pd_set := bag_to_set(USEDIN(c_def_instance, 'PRODUCT_DEFINITION_SCHEMA.PRODUCT_DEFINITION_FORMATION.OF_PRODUCT')); IF (SIZEOF(pd_set) < 1) THEN RETURN(pdr_set); END_IF; REPEAT i := 1 TO HIINDEX(pd_set); pdr_set := pdr_set + bag_to_set(USEDIN(pd_set[i], 'PRODUCT_DEFINITION_SCHEMA.PRODUCT_DEFINITION.FORMATION')); END_REPEAT; RETURN(pdr_set);
END_FUNCTION;
(*
Argument definitions:
c_def_instance: the candidate product to be checked.
*)
END_SCHEMA; -- product_definition_schema
(*
© ISO 2021 — All rights reserved