PDM-UG: Product Type Classification
From WikiSTEP
This page belongs to the PDM Usage Guide.
Type Classification information provides the basic capability to distinguish between products interpreted as parts and those interpreted as documents. This capability also supports distinguishing between different types of parts, e.g., detail, assembly, or standard parts.
A 'detail' is a 'part' - it represents a part that is not broken down into other identified, managed component parts in a product structure. The value 'detail' is used to distinguish from 'assembly' if this is required when exchanging product structure.
The Instance Model: EXPRESS entities and attributes
The EXPRESS entities and attributes used to support the requirements of part type classification are illustrated in Diagram 3.

Product related product category
The product_related_product_category entity is a subtype of product_category. It represents the identification of a specific classification applied directly to a product. The name and description attributes are inherited from the supertype product_category. This subtype adds the attribute products that allow it to be associated (related) directly to a product instance.
NOTE - This classification relates to the process view on the product. It is not an indication whether or not the associated information is actually given in the file. For example a product might be classified as an assembled part despite the fact that the information on the product structure related to this assembly is not given in the file.
Attributes
- The products attribute associates the category with the product entity instances to which it applies.
| ENTITY product_related_product_category | Attribute Population | Remarks |
| name | type: label = string ‘part’, ‘detail’, ‘assembly’, 'standard' | The primary value to use is 'part' - the values 'detail', 'assembly', and 'standard' indicate a further type distinction on the part. |
| description | type: text = string | OPTIONAL |
| products | type: entity = product | SET[1:?] |
Preprocessor Recommendations
Preprocessors are recommended to always assign the type part as a common distinction between parts and documents or other kinds of configured items. Further possible type classifications like 'tool, 'raw material', or 'module' are valid. Other values such 'detail', 'assembly', or 'standard' may also be assigned, but should be related as sub-category to the primary 'part' using the product_category_relationship.
Postprocessor Recommendations
Postprocessors should recognize ‘part’ but also values of 'detail', 'assembly', and 'standard' as indicating the categorized product is a part.
Related Entities
There are no specific related entities.
Product category relationship
The product_category_relationship entity establishes a category-subcategory relationship between two product_category entities.
Attributes
- The name attribute gives the word or group of words by which the relationship is referred.
- The description attribute provides additional descriptive information about the relationship.
- The category attribute identifies the super category (more general) in the relationship.
- The sub_category attribute identifies the sub category (more specific) in the relationship.
| ENTITY product_category_relationship | Attribute Population | Remarks |
| name | type: label = string | |
| description | type: text = string | |
| category | type: entity = product_related_product_category | |
| sub_category | type: entity = product_related_product_category |
Preprocessor Recommendations
There is no standard mapping defined for the name attribute. The description attribute is optional, and may contain any appropriate or mutually-agreed-upon string.
Postprocessor Recommendations
Postprocessors should expect the category value to be a product_related_product_category with name 'part'. The value for the attribute sub-category will be a product_related_product_category with name 'detail', 'assembly', or 'standard' to further qualify the type of part.
Related Entities
There are no specific related entities.
The Instance Model: STEP exchange file format (ISO10303 Part 21 syntax)
#160 = PRODUCT('H24-1123.1', 'Fixture RX25B', '', (#20));
#170 = PRODUCT('DIN 932', 'Screw M3x15', '', (#20));
#250 = PRODUCT_RELATED_PRODUCT_CATEGORY('part', $, (#10, #160, #170));
#260 = PRODUCT_CATEGORY_RELATIONSHIP('', $, #250, #270);
#270 = PRODUCT_RELATED_PRODUCT_CATEGORY('detail', $, (#160));
The following section combines the above discussed concepts and segments in a complete example.
The Instance Model: EXPRESS entities and attributes
The EXPRESS entities and attributes used to support the complete requirements of part master identification with context and part type classification are illustrated in Diagram 4. This figure also illustrates the recommended assignment of an organization to the product in the role 'id owner' to identify the scope (context of interpretation) for uniqueness and validity of the product id. The corresponding STEP exchange file encoding for the complete part master is illustrated in Example 4.

The Instance Model: STEP exchange file format (ISO10303 Part 21 syntax)
ISO-10303-21;
HEADER;
FILE_DESCRIPTION(('test', 'file'), '2;1');
FILE_NAME('pid2_p21a.stp', '1999-05-03T21:03:29+00:00', ('N.N.'), (''), '', '', '');
FILE_SCHEMA(('PDM_SCHEMA {1.2}));
ENDSEC;
DATA;
/* part #1 */
#10 = PRODUCT('K01-42051', 'Bicycle Bell RX 3', $, (#20));
/* part context */
#20 = PRODUCT_CONTEXT('', #30, '');
#30 = APPLICATION_CONTEXT('');
#40 = APPLICATION_PROTOCOL_DEFINITION('version 1.2', 'pdm_schema', 2000, #30);
/* part versions for part #1 */
#50 = PRODUCT_DEFINITION_FORMATION('02', 'lever modified', #10);
#60 = PRODUCT_DEFINITION_FORMATION('03', 'upper housing modified', #10);
#70 = PRODUCT_DEFINITION_FORMATION_RELATIONSHIP('', 'sequence', $, #50, #60);
/* definition of view on version 03 of part #1 */
/* primary life_cycle_stage = design, primary application_domain = mechanical design */
#80 = PRODUCT_DEFINITION('/NULL', $, #60, #90);
#90 = PRODUCT_DEFINITION_CONTEXT('part definition', #100, 'design');
#100 = APPLICATION_CONTEXT('mechanical design');
/* association of the id owner for part #1 */
#130 = APPLIED_ORGANIZATION_ASSIGNMENT(#140, #150, (#10, #160, #170));
#150 = ORGANIZATION_ROLE('id owner');
/* information on person and organization */
#140 = ORGANIZATION('ABC27166', 'Onyx AG', 'location');
#540 = PERSON('sarah.rijker@onyx.com', 'Rijker', 'Sarah', $, $, $);
#550 = PERSON_AND_ORGANIZATION(#540, #140);
/* part #2 and part #3 */
#160 = PRODUCT('H24-1123.1', 'Fixture RX25B', '', (#20));
#170 = PRODUCT('DIN 932', 'Screw M3x15', '', (#20));
/* part versions for part #2 and part #3 */
#180 = PRODUCT_DEFINITION_FORMATION('B', 'larger screw holes', #160);
#190 = PRODUCT_DEFINITION_FORMATION('15', '', #170);
/* view definition for version of part #2 */
#200 = PRODUCT_DEFINITION('/NULL', $, #180, #210);
#210 = PRODUCT_DEFINITION_CONTEXT('part definition', #215, 'design');
#215 = APPLICATION_CONTEXT('mechanical design');
/* view definition for version of part #3 */
#220 = PRODUCT_DEFINITION('/NULL', $, #190, #230);
#230 = PRODUCT_DEFINITION_CONTEXT('part definition', #240, 'design');
#240 = APPLICATION_CONTEXT('mechanical design');
/* part discriminator for parts #1 - #3 */
#250 = PRODUCT_RELATED_PRODUCT_CATEGORY('part', $, (#10, #160, #170));
#260 = PRODUCT_CATEGORY_RELATIONSHIP('', $, #250, #270);
#270 = PRODUCT_RELATED_PRODUCT_CATEGORY('detail', $, (#160));
#280 = PRODUCT_CATEGORY_RELATIONSHIP('', $, #250, #290);
#290 = PRODUCT_RELATED_PRODUCT_CATEGORY('assembly', $, (#10));
#300 = PRODUCT_CATEGORY_RELATIONSHIP('', $, #250, #310);
#310 = PRODUCT_RELATED_PRODUCT_CATEGORY('standard', $, (#170));
ENDSEC;
END-ISO-10303-21;

