Integrated generic resource: Fundamentals of product description and support ISO 10303-41:2021(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 Action
   4.1 General
   4.2 Fundamental concepts and assumptions
   4.3 Action type definitions
   4.4 Action entity definitions
   4.5 Action function definitions
5 Application context
   5.1 General
   5.2 Fundamental concepts and assumptions
   5.3 Application context type definitions
   5.4 Application context entity definitions
6 Approval
   6.1 General
   6.2 Fundamental concepts and assumptions
   6.3 Approval type definitions
   6.4 Approval entity definitions
   6.5 Approval function definitions
7 Basic attribute
   7.1 General
   7.2 Fundamental concepts and assumptions
   7.3 Basic attribute type definitions
   7.4 Basic attribute entity definitions
   7.5 Basic attribute function definitions
8 Certification
   8.1 General
   8.2 Fundamental concepts and assumptions
   8.3 Certification entity definitions
9 Contract
   9.1 General
   9.2 Fundamental concepts and assumptions
   9.3 Contract entity definitions
   9.4 Contract function definitions
10 Date time
   10.1 General
   10.2 Fundamental concepts and assumptions
   10.3 Date time type definitions
   10.4 Date time entity definitions
   10.5 Date time function definitions

11 Document
   11.1 General
   11.2 Fundamental concepts and assumptions
   11.3 Document type definition
   11.4 Document entity definitions
   11.5 Document function definitions
12 Effectivity
   12.1 General
   12.2 Fundamental concepts and assumptions
   12.3 Effectivity type definitions
   12.4 Effectivity entity definitions
   12.5 Effectivity function definitions
13 Experience
   13.1 General
   13.2 Fundamental concepts and assumptions
   13.3 Experience entity definitions
   13.4 Experience function definitions
14 External reference
   14.1 General
   14.2 Fundamental concepts and assumptions
   14.3 External reference type definitions
   14.4 External reference entity definitions
   14.5 External reference function definitions
15 Group
   15.1 General
   15.2 Fundamental concepts and assumptions
   15.3 Group type definition
   15.4 Group entity definitions
   15.5 Group function definitions
16 Language
   16.1 General
   16.2 Fundamental concepts and assumptions
   16.3 Language entity definition
17 Location
   17.1 General
   17.2 Fundamental concepts and assumptions
   17.3 Location entity definitions
   17.4 Location function definitions
18 Management resources
   18.1 General
   18.2 Fundamental concepts and assumptions
   18.3 Management resources type definitions
   18.4 Management resources entity definitions
   18.5 Management resources function definitions

19 Measure
   19.1 General
   19.2 Fundamental concepts and assumptions
   19.3 Measure type definitions
   19.4 Measure entity definitions
   19.5 Measure function definitions
20 Person organization
   20.1 General
   20.2 Fundamental concepts and assumptions
   20.3 Person organization type definitions
   20.4 Person organization entity definitions
   20.5 Person organization function definitions
21 Product definition
   21.1 General
   21.2 Fundamental concepts and assumptions
   21.3 Product definition type definitions
   21.4 Product definition entity definitions
   21.5 Product definition function definitions
22 Product property definition
   22.1 General
   22.2 Fundamental concepts and assumptions
   22.3 Product property definition type definitions
   22.4 Product property definition entity definitions
   22.5 Product property definition function definitions
23 Product property representation
   23.1 General
   23.2 Fundamental concepts and assumptions
   23.3 Product property representation type definitions
   23.4 Product property representation entity definitions
   23.5 Product property representation function definitions
24 Qualifications
   24.1 General
   24.2 Fundamental concepts and assumptions
   24.3 Qualifications entity definitions
   24.4 Qualifications function definitions
25 Security classification
   25.1 General
   25.2 Fundamental concepts and assumptions
   25.3 Security classification entity definitions
26 Support resource
   26.1 General
   26.2 Fundamental concepts and assumptions
   26.3 Support resource type definitions
   26.4 Support resource function definitions
A Short names of entities
B Information object registration
C Computer interpretable listings
D EXPRESS-G diagrams
E Technical discussion
F Examples
G Change history
Bibliography
Index

21 Product definition schema

21.1 General

The subject of the product_definition_schema is the identification of products, the categorization of products, definitions of products, and the relationships among them. This schema provides for the generic aspects of product definition.

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.

21.2 Fundamental concepts and assumptions

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:

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.

21.3 product_definition_schema type definitions

21.3.1 product_definition_or_reference   EXPRESS-G

The product_definition_or_reference type is an extensible list of alternate data types. It provides a mechanism to refer to instances of the data types included in the product_definition_or_reference type or in its extensions.

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;
(*

21.3.2 pds_id_attribute_select   EXPRESS-G

The pds_id_attribute_select type is an extension of the id_attribute_select type. It adds the data type product_category to the list of alternate data types.

EXPRESS specification:

*)
TYPE pds_id_attribute_select = SELECT BASED_ON id_attribute_select WITH
   (product_category);
END_TYPE;
(*

21.3.3 pds_name_attribute_select   EXPRESS-G

The pds_name_attribute_select type is an extension of the name_attribute_select type. It adds the data types product_definition and product_definition_substitute to the list of alternate data types.

EXPRESS specification:

*)
TYPE pds_name_attribute_select = SELECT BASED_ON name_attribute_select WITH
   (product_definition,
    product_definition_substitute);
END_TYPE;
(*

21.3.4 source   EXPRESS-G

The source type is a list of alternate choices that enables one to characterize whether a product is to be manufactured within an organization, bought, or the fact that this information is not known.

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.

21.4 product_definition_schema entity definitions

21.4.1 alternative_solution_relationship   EXPRESS-G

An alternative_solution_relationship is a product_definition_formation_relationship that specifies the type of the relationship.

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.

21.4.2 characterized_product   EXPRESS-G

A characterized_product is a type of characterized_object and a type of product for the purpose of characterizing a product.

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;
(*

21.4.3 generic_product_definition_reference   EXPRESS-G

A generic_product_definition_reference is a reference to an externally defined product_definition that may or may not have a local representation. A generic_product_definition_reference is either a product_definition_reference or a product_definition_reference_with_local_representation.

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.

21.4.4 product   EXPRESS-G

A product is a representation of a product or a type of product

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.

21.4.5 product_category   EXPRESS-G

A product_category is a classification that applies to products.

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.

21.4.6 product_category_relationship   EXPRESS-G

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.

21.4.7 product_definition   EXPRESS-G

A product_definition is a representation of an aspect of a product, or of a class of products, for an identified life cycle stage. The life cycle stage for which a product_definition exists may be further characterized by discipline, by usage, or by both.

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.

21.4.8 product_definition_context_association   EXPRESS-G

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.

21.4.9 product_definition_context_role   EXPRESS-G

A product_definition_context_role is a specification of the purpose of a product_definition_context.

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.

21.4.10 product_definition_effectivity   EXPRESS-G

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.

21.4.11 product_definition_formation   EXPRESS-G

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).

21.4.12 final_solution   EXPRESS-G

A final_solution is a type of product_definition_formation and is a set of additional sensual characteristics that can be applied to an occurrence that represents a neutral part in order to complete its definition.

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.

21.4.13 product_definition_formation_relationship   EXPRESS-G

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.

21.4.14 product_definition_formation_with_specified_source   EXPRESS-G

A product_definition_formation_with_specified_source is a type of product_definition_formation whose source is identified to be either manufactured within an organization, bought, or the fact that this information is not known.

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.

21.4.15 product_definition_relationship   EXPRESS-G

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.

21.4.16 product_definition_relationship_relationship   EXPRESS-G

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.

21.4.17 product_definition_reference   EXPRESS-G

A product_definition_reference is a type of generic_product_definition_reference that identifies the externally defined product_definition by providing the key attributes necessary to unambiguously identify it and the associated product_definition_formation, product and organization that owns the product id.

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'.

21.4.18 product_definition_reference_with_local_representation   EXPRESS-G

A product_definition_reference_with_local_representation is a type of generic_product_definition_reference that represents an externally defined product_definition by a local product_definition.

EXPRESS specification:

*)
ENTITY product_definition_reference_with_local_representation
  SUBTYPE OF (generic_product_definition_reference, product_definition);
END_ENTITY;
(*

21.4.19 product_definition_substitute   EXPRESS-G

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.

21.4.20 product_definition_with_associated_documents   EXPRESS-G

A product_definition_with_associated_documents is a type of product_definition in which the associated documents participate in the definition of the product.

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.

21.4.21 product_related_product_category   EXPRESS-G

A product_related_product_category is a type of product_category that identifies products that satisfy the type identified by the category.

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.

21.4.22 product_relationship   EXPRESS-G

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.

21.5 product_definition_schema function definitions

21.5.1 acyclic_alternative_solution_relationship

The acyclic_alternative_solution_relationship function determines whether the graph of instance 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 alternative_solution_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.

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.

21.5.2 acyclic_product_category_relationship

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.

21.5.3 acyclic_product_definition_formation_relationship

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.

21.5.4 acyclic_product_definition_relationship

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.

21.5.5 acyclic_product_relationship

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.

21.5.6 categories_of_product

The categories_of_product function returns the set of product category names associated with the argument. The function evaluates the bag of instances of product_category that are associated with the input product through an instance of product_related_product_category. The function returns the SET of STRING values stored in the name attribute of the instances of product_category in the bag.

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.

21.5.7 get_product_definitions

The get_product_definitions function returns for any instance of product the set of instances of product_definition that refer to the product through an instance of product_definition_formation.

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