Capability (C002):— representing_parts Date: 2010/08/26 07:31:57
Revision: 1.39

Business overview

This section provides a business level overview of this capability.

The representation of a Part defines the design of a Part, whether it is designed to be independent or a component of a larger product or assembly. Parts need to identified because through life, they may need to be replaced for example, due to wear, life expectancy, failure rate, substitution, upgrade, variant or be removed for example, through mission requirements, redesign or reconfiguration. Without adequate identification, the owner cannot be certain of the configuration of a product, that correct spares are available, that timely maintenence is being carried out, or that the product will fulfill it's functional requirements.

Therefore, each Part must be able to be uniquely identified so that it's usage in all Products that contain parts, such as assemblies, and other products can be recorded across both versions and variations of those products. A Part may however have several identities, separated by type of ID, organization, and applicability dates. With adequate identification, the usual operations of the product might then be supported, for example, regular maintenance, condition based maintenance, usage reporting, failure reporting, part changes, function changes, replacements and the upkeep to both the product and the information about the product can be enabled.

Versions of a part are represented through Part_version. A Part must have at least one version, but may have any number of versions. Versions of a Part must also be uniquely identified within the scope of type of ID, organization and applicability dates. Relationships between versions of a part, e.g. sequential or parallel versions, are represented through a Product_version_relationship.

A part may have different views depending on who is interested in the part (an engineer in the detailed design phase, a production planner in production, a logistician in support system design, a mechanics in support, etc.). For the different users in the different phases of the life cycle, a specific view of the product may be created, which enables each user of the data to view the information which is significant to them. The different views of a Part is represented by Part_view_definition in a context of "life cycle stage" and "application domain".

A version of a part may have several views defined for different contexts. The view is the main information carrier for a part. Properties and documents are assigned to the view of the version of the part, and this is also the place where part structures are defined, such as part assemblies. This has the implication that the views of a part determines what properties and documents are applicable in a specific context, and the part structure may differ between different views and contexts.

Figure 1 shows the a schematic and simplified drawing of how a Part is represented in PLCS. It consists of the identified Part, two Part_version instances with version IDs, the first with one View definition for design, the second with two View definitions: one for design and the other for support. The information connected to each View definition may differ, between versions and depending on view definition context. Thus, the design view of version 1 have other documents assigned than version 2, and the two views of version 2 have significantly different information assigned, the support version has some properties identical to the design view, but also a task method with a defined fault state and required resources.



Figure 1 —  
Schematic drawing of the representation of a Part

Figure 1 —   Schematic drawing of the representation of a Part

PLCS makes a distinction between the design of something, it's planned production and realization as an artifact. An instance of Part is used to represent the design (as documented in this capability). An instance of Product_as_planned represents a proposed or planned artifact. It is identified by e.g. its serial number. An instance of Product_as_realized represents an artifact that results from a process and is also identified by e.g. a serial number. Instances of Product_as_planned and Product_as_realized products are related to the Part design. The planned and realized product entities are described in capability C045: representing_product_as_individual.

Information model overview

This section provides an overview of the information model that supports this capability.

The Express-G schema entities used to represent a Part are shown in the figure below.



Figure 2 —  Express-G entities for Part Representation

Figure 2 —  Express-G entities for Part Representation

NOTE    The use of colour in the diagram is to attempt to group the entities at various levels in the model. Those in light-green are the generic entities that represent a Product. Those entities in shades of blue represent the information for a Part. Those in light-yellow indicate relationships. Gray entities are provided for backward compatibility and are used for specific product categorization. These colours are used elsewhere within this capability as an aid-memoire in navigating the model.

The representation of a Part is achieved through a number of related entities, of which the following three constitutes the core.

Apart from the above, the following entities are provided by AP239.

The Representation of Parts

Part

A Part is a type of Product that collects the definitional information of the versions of either a part (defined as a discrete object that may come into existence as a consequence of a manufacturing process) or of a non-countable material (defined as a material the components of which cannot be counted or do not need to be counted).

NOTE    A part may contain components, which may be parts or non-countable materials.

NOTE    Oil, Helium and sand are examples of non-countable material.

It is assumed that a Part is a representation of the design of a part and hence, does not represent an actual physical object that is or was existing in the real world.

NOTE    Actual physical objects are represented as Product_as_individual, and are described in capability C045: representing_product_as_individual.

Identification and name of Part
Parts are identified using entity Identification_assignment as described in C001: assigning_identifiers, and is classified as "Part identification code" (urn:plcs:rdl:std:Part identification code) or one of its subclasses. ISO 10303-239 PLCS treats the identifier as a string. It does not impose any encoding of information in the identifier. The attribute id is set to "/IGNORE". Since an identifier always exists in a context of an organization owning the identifier, an instance of Part may have multiple identifiers, belonging to different organizations. Any of those identifiers can be used to identify or reference the Part, and as identifiers they have equal significance.

The name of a Part is assigned using Identification_assignment as described in C001: assigning_identifiers. The name is classified as "Part name" (urn:plcs:rdl:std:Part name) or one of its subclasses. The attribute name is set to "/IGNORE", and should not be used. Since an name assigned in this way always exists in a context of an organization owning the name, an instance of Part may have multiple names, belonging to different organizations.

Categories of Part
In PLCS, the schema has a rule which requires that all Parts exist in at least one Product_category. This means that each Part should therefore, have as a mimimum, a category assigned to it whose name attribute is set to "part", "raw material" or "tool". This categorization information provides a level of compatibility with the PDM Schema and the basic capability to distinguish between parts and other products. Other, additional categories such as detail, assembly, or standard parts should be identified through separate classification assignments using external reference data and described in more detail later on.
Attributes ignored
The attributes of an instance of Part should all be set to "/IGNORE". The information is instead assigned to Part as follows:

See Figure 2 for an Express-G overview. Figure 3 below shows an example of an instantiated Part "Gasket", its identification and name, and assigned Product_category.



Figure 3 —  An identified and named instance of Part belonging to Product_catgory "part"

Figure 3 —  An identified and named instance of Part belonging to Product_catgory "part"

NOTE    The above diagram is incomplete, Part_versions of the Part is not shown.

Part_version

The Part_version entity represents the identification of a specific version of the base part identification (e.g. an iteration of a design).

NOTE    A variant of a design should be represented by product concept and configuration (see C063: representing_product_configuration).

A particular Part_version is always related to exactly one part. The Part_version collects all information among all associated disciplines and life-cycle view definitions. Each instance of part is required to have at least one associated instance of Part_version. See Figure 2 for an Express-G overview.

Part version identification
A Part_version is identified using entity Identification_assignment as described in C001: assigning_identifiers, and is classified as "Part version identification code" (urn:plcs:rdl:std:Part version identification code) or one of its subclasses. The attribute id is set to "/IGNORE".
Part version relationships
Version information may represent a design revision or iteration in a design cycle of a part and the relationships between versions are represented through instances of Product_version_relationship.

Using Product_version_relationship the set of Part_version entities associated with a base Part may be related together to represent the revision history of that Part.

NOTE    The relationship is between two distinct instances of Part_version with a common base Part

The type of relationship between versions is defined through external reference data assigned to the Product_version_relationship. There are three pre-defined types of relationships between product versions used to represent the version history:

Attributes ignored
The attributes of instances of Product_version should be set to "/IGNORE". The information is instead assigned to Part as follows:


Figure 4 —  Example instance diagram showing a sequential relationship between two Part_versions

Figure 4 —  Example instance diagram showing a sequential relationship between two Part_versions

Part_view_definition

The Part_view_definition entity represents the identification of a particular view of a version of a Part relevant for the requirements of particular life-cycle stages and application domains, thereby defining the Part_version for that view. It is possible to have many Part_view_definitions (views) instantiated related to one Part_version instance. See Figure 2 for an Express-G overview.

The Part_view_definition entity enables the establishment of many important relationships. Part_view_definition is the central element to link product information to Parts, e.g., assembly structure, properties (including shape), and external descriptions of the product via documents.

All Part_version entities should always have at least one associated Part_view_definition, except in the case of supplied product identification and version history information.

NOTE    These situations (exceptions) are described in greater detail in capability C003: representing_assembly_structure.

The attributes of instances of Part_view_definition should be set to "/IGNORE". The information is instead assigned as follows:

All Part_view_definitions must be founded in a View_definition_context (see below). This is done through the Part_view_definition's inherited attribute initial_context.

Even though AP239 allows the definition of additional contexts for a Part_view_definition, it is recommended that any Part_view_definition is only related to one, single View_definition_context (as the initial context), and that no additional contexts is instantiated. Instead of defining an additional context for a Part_view_definition, a new Part_view_definition is created (copied) with the new context related as the initial context.

NOTE    This recommendation has to do with change management. It is not uncommon that part defining information (e.g. structures, properties and documents) that was first believed to be identical between contexts (which would cause the "additional context" relationship to be instantiated) later on is revised, changed or restructured in one context but not in the other. To make that change, the additional context has to be removed, and a new Part_view_definition must be created for that context. Instead, by instantiating two (or more) separate Part_view_definitions, with the same part defining information, but each with only one (initial) context, such changes are possible from the start and becomes traceable.

View_definition_context

For the complete, unambiguous representation and identification of Parts, PLCS requires additional context information.

Each Part can be viewed in different application contexts, such as a design view and a manifacturing view. Each view is represented by an instance of Part_view_definition and the context of the view is represented by an instance of View_definition_context. See Figure 2 for an Express-G overview.

The meaning of the context is provided by classifying the View_definition_context using external reference data.

There are two aspects to the identification of the application context. The "Application domain" and the "Life cycle stage".

Application domain
The Application_domain is the general application domain that defined (or use) the data.

EXAMPLE    'assembly study', 'digital mock-up', 'electrical design', 'mechanical design', 'preliminary design', 'process planning' are examples of application domains.

Life cycle stage
The life cycle stage identifies a stage in the life of a product.

EXAMPLE    'design phase', 'production', 'recycling phase' are examples of life cycle stages.

The "Application domain" and the "Life cycle stage" could have been represented by string values stored in the View_definition_context attributes, application_domain and life_cycle_stage. However, the recommended approach is to use classification. The attributes of each View_definition_context, application_domain and life_cycle_stage, are set to '/IGNORE' and each View_definition_context is classified using external reference data (see C010: assigning_reference_data) as a subclass of "Application domain" (urn:plcs:rdl:std:Application domain) and a subclass of "Life cycle stage" (urn:plcs:rdl:std:Life cycle stage).

The optional attribute description is also set to "/IGNORE". A description of the View_definition_context may be assigned as described in C095: assigning_descriptor.



Figure 5 —  Complete instantiation example for Part representation

Figure 5 —  Complete instantiation example for Part representation

NOTE    The above diagram shows an instantiated Part with two Part_versions in a sequential relationship. The first Part_version has an instantiated Part_view_definition in context of Development life cycle stage and Design domain, the second Part_version has two instantiations of Part_view_definition, one in the same context as the first version, the other in context of Support life cycle stage and Maintenance domain.

A data set or exchange file should only contain one instance of View_definition_context for each context, i.e. there should not be two instances of View_definition_context having identical external classes for the combination of the Life_cycle_stage and Application_domain aspects. The application context is fully defined using these two aspects, and it is pointless to have it duplicated.

A Part_version must only have one Part_view_definition instantiated for a specific context. It does not make sense to have two different definitions of a version within the same context. Therefore, if a data set contains more than one instance of Part_view_definition related to the same instance of View_definition_context, they should be considered as partial instantiations and merged into one instance.

Model Characterization

This section specifies how the information model can be further characterized by the assignment of additional information such as dates, approvals and people or organizations.

The following characterizations may apply.

Characterization: Part Classification (Optional)

A Part may be classified, e.g. as "Supplied_part", "Software", "Mechanical_part", "Electrical_part", etc.

Classification is assigned using external reference data, and is described in Capability C010: assigning_reference_data. Parts should be classified using a subtype of external reference data class "Part" (urn:plcs:rdl:std:Part).

Characterization: Assignment of additional identifiers (Optional)

A Part, a Part_version, and a Part_view_definition may be given additional identifiers. Identifiers are assigned in a given role, such as "Owner of" (urn:plcs:rdl:std:Owner of), or "Creator of" (urn:plcs:rdl:std:Creator of), and the identifier is considered unique within the context of the given Organization (see further Capability C001: assigning_identifiers).

This is very useful when organizations want to use their specific identifier, or when ithe identifier may change over time. Since a name in PLCS is an identification, it is also very useful when a product requires both an identification code and a name. Both the identification code and the name is assigned using the same mechanisms.

Characterization: Assigning Descriptors (Optional)

A Descriptor (a descriptive text string) can be assigned to a Part, a Part_version, and to a Part_view_definition. It should always be classified as "Description" (urn:plcs:rdl:std:Description).

The assignment of descriptors is described in the capability C095: assigning_descriptor.

Characterization: Assigning Documents (Optional)

Documents can be assigned to a Part_view_definition. Documents are assigned in a given role, such as "Definition", "Specification", or "Description". The role of the assignment is represented by classifying the assignment using a subclass of external reference data class "Document" (urn:plcs:rdl:std:Document). Specific reference data classes may be defined in business specific external reference data

The assignment of documents is described in the capability C005: representing_documents.

Characterization: Assigning Properties (Optional)

Properties of a Part can be associated with a given view, i.e. Part_view_definition. The use of properties for products is described in C076: assigning_product_properties and C079: representing_properties_numerically C080: representing_properties_textually

Characterization: Assigning an Organization (Optional)

An organization can be assigned to a Part, a Part_version, and to a Part_view_definition. The organization must be assigned in a given role, such as "Owner of" (urn:plcs:rdl:std:Owner of) or "Creator of" (urn:plcs:rdl:std:Creator of). The class must be a subclass of "Organization or person in organization assignment" (urn:plcs:rdl:std:Organization or person in organization assignment). Further classes may be defined in business specific external reference data.

The assignment of an organization is described in C094: assigning_organization

Characterization: Assigning Date and Time (Optional)

Dates and Time can be assigned to a Part, a Part_version, and to a Part_view_definition. The date or date and time must be assigned in a given role, such as "Date actual creation" (urn:plcs:rdl:std:Date actual creation) or "Date planned release" (urn:plcs:rdl:std:Date planned release).

NOTE    Time is classified using the same reference data as Dates, i.e. an assigned time (a date plus hours, minutes and seconds, and time zone) may be classified as "Date actual creation" (urn:plcs:rdl:std:Date actual creation).

The role of the date assignment is represented by classifying the assignment by the use of external reference data (see C010: assigning_reference_data). The reference data class must be a subclass of "Date or date time assignment" (urn:plcs:rdl:std:Date or date time assignment).

NOTE    Dates are also assigned to approvals (see below), so when an approval is assigned to an item, there will be a date set for the approval. There is no need to assign a specific date as well.

The assignment of date and time is described in the capability C036: assigning_date_time. Since Time is more accurate than a calendar date, the assignment of time is recommended.

Characterization: Assigning Approvals (Optional)

An approval may be assigned to a Part, a Part_version, and to a Part_view_definition.

Approvals are always accompanied by an approval status, as defined in external reference data, and by a date or time for the approval, as well as the approving person or organization. Approvals are assigned as described in capability C019: assigning_approvals.

Additional Usage Guidance

No versioning of Parts

If an organization does not version parts, it is recommended that the identification of the Part_version is set to "/NULL", i.e. the attribute identifier of entity Identification_assignment contain the string "/NULL" (see C001: assigning_identifiers), to indicate that no version information is relevant or intended. In this case only a single part_version for the part is possible.

If the value of the identification attribute for a Identification_assignment assigned to a Part_version is the string '/NULL', postprocessors should use this as an indication that the sending system or business process does not support versioning of parts.

For such organizations, some of the version relationships described above, under Part version, are no longer applicable, and relationships between Parts may be more appropriate, e.g. a Part may be derived from another part. The Product_relationship entity may be used to describe such relationships.

Part_versions without a Part_view_definition

In general, each Part_version is recommended to have an associated Part_view_definition representing the view definition for the Part_version. In restricted cases, a Part_version without a definition may be used to enhance information about another related, fully defined version. In two specific cases a Part_version may be exchanged without an associated Part_view_definition:

NOTE    These situations are described in greater detail in capability C003: representing_assembly_structure.

Product_category_hierarchy

The purpose of the Product_category_hierarchy entity is to establishe a category-subcategory relationship between two Product_category entities.

However, the Product_category is used solely for backward compatibility with earlier schemas, and should only be used to categorize a Part as one of "part", "raw material" or "tool".

Any other categorization or classification of Part should be instantiated using external reference data, as described in C010: assigning_reference_data.

Therefore, it is recommeded that Product_category_hierarchy is never used.

Alternate Parts

STEP designates alternate and substitute parts differently. Alternate parts are interchangeable in all occurrences whereas substitutes are interchangeable only in a particular usage. Alternate parts are defined through the Alternate_part_relationship entity. See Figure 2 for an Express-G overview.

An Alternate_product_relationship is an association between two instances of Product. It specifies that any version of the alternate_product, may be used in place of any version of the base_product. The alternate product is interchangeable with the base part in any/all uses - it is a context independent alternate that is form, fit, and function equivalent in any use. The relationship established by the Alternate_product_relationship is not symmetric: if B is an alternate product for A, A is not implied to be an alternate product for B.

An Alternate_part_relationship is a type of Alternate_product_relationship where the alternate and base products are parts.

All attributes should be set to "/IGNORE". The rationale for the part interchange (e.g. any use, first available, etc.) should, if it is known, be assigned to the Alternate_part_relationship using a subclass of "Alternate part relationship" (urn:plcs:rdl:std:Alternate part relationship) external reference data, as described in C010: assigning_reference_data.

If a product is an alternate for another product, it is understood that there is no interest to keep track of which product, the base or any alternates specified, is used as a particular instance of the base product within a product structure.

An organization may track design changes for a base part, and establish effectivity conditions for the use of that base part in various assemblies to be manufactured. The use of an alternate product implies that an organization does not specify any particular version of the alternate product nor establish effectivities relating to it.

An Alternate_product_relationship may relate products of any kind, provided both related instances of Product identify products of the same kind, for example part-part or document-document.

An Alternate_product_relationship for which the base_product is an assembly implies that the entire product structure of the alternate_product may be used in place of the base_product and its product structure.

EXAMPLE    Two bolts of the same size are products. Bolt S has a square head and bolt H has a hexagonal head. The two bolts are considered equivalent with respect to form, fit, and function: they both have sufficiently close physical shape, they take up the same space when used, and they both serve to fasten two things together. Thus, one of these two bolts could be considered to be an alternate part for the other bolt, e.g. bolt S is alternate to bolt H. If the opposite would also be true, a second relationship has to be established to say that bolt H is also the alternate to bolt S.

Supplied Part Identification

AP239 provides an entity Supplied_part_relationship for backward compatibility with earlier STEP models, e.g. PDM schema. Due to the fact that PLCS allows for multiple identification it is no longer required.

Processors should be able to read and resolve two Part_versions that are related through a Supplied_part_relationship. The two Part_version may be collapsed into one Part_version with two identifiers assigned as described in C001: assigning_identifiers, or they may be maintained as separate versions, but for all practical purposes they should be considered as one version with two identifiers belonging to two different organizations.

Capability templates

The following sections define a set of templates for the capability, where a template is a specification of a set of entities that need to be instantiated to represent a given set of information.

Template: representing_part (Short name: rep_part)

This section specifies the template representing_part.

NOTE  An explanation of a template and the associated instantiation path is provided in the Template overview section.

Description

This template describes how to represent a part. It covers the minimum requirements to represent a Part, Part_version and Part_view_definition.

NOTE    If an organization does not version parts, it is recommended that the identification of the Part_version is set to "/NULL", i.e. the attribute identifier of entity Identification_assignment contain the string "/NULL" (see C001: assigning_identifiers), to indicate that no version information is relevant or intended. In this case only a single part_version for the part is possible.

Model diagrams
The EXPRESS-G diagram in Figure 1 shows the templates and EXPRESS entities that are required to represent the template "representing_part". The text highlighted in blue shows the template parameters.
The figure below shows the relevant aspects of the EXPRESS-G model for this part of AP239. It shows the setting of the EXPRESS-G attributes and the (re-)use of various subordinate templates. Most attributes of the EXPRESS model are set to '/IGNORE' and the equivalent value is specified through a template, where and when required. There is one exception to this - because of an inbuilt EXPRESS Rule which states that the Product_category.name assigned to a Part via a Product_category_assignment must be set to a specific value. Hence 'part' is encoded into the template by default to enable a legal (EXPRESS-wise) population of instances. The usage of the subordinate templates requires the capture of relevant input parameters to the representing_part template. The instantiation path uses the input parameters to establish the values provided for the entities or other templates instantiated and then links them together following the EXPRESS-G model in the appropriate manner.


Figure 1 —  An EXPRESS-G representation of the Information model for representing_part

Figure 1 —  An EXPRESS-G representation of the Information model for representing_part

The graphic for the template to be used in other EXPRESS-G diagrams is shown in Figure  2 below.
The figure below shows the full and abbreviated template for representing_part. The expanded (full) version exposes the parameter list required by the template. The input parameters are specified below and where the term 'Default=' is found, it indicates that the parameter is optional and that if no value is provided, then the default value specified will be used instead.


Figure 2 —  The graphical representation of the representing_part template

Figure 2 —  The graphical representation of the representing_part template

Input parameters
The following input parameters are defined for this template:
part_id (Type='STRING')
The identifier of the part.
part_id_class_name (Default=Part_identification_code,Type='CLASS', Optional)
The name of the class being used to classify the identifier assigned ( Identification_assignment ) to the part (i.e. the @part.id)
The following classes and their sub-classes can be used:
classifications: "Part_identification_code" (urn:plcs:rdl:std:Part_identification_code)
part_id_ecl_id (Default=urn:plcs:rdl:std,Type='URN', Optional)
The identifier of the External_class_library storing the definition of the External_class referenced by the parameter @part_id_class_name.
part_org_id (Type='STRING')
The name or identifier of the organization that owns the part id (@part_id).
part_org_id_class_name (Default=Organization_name,Type='CLASS', Optional)
The name of the class being used to classify the identification of the organization (@part_org_id) responsible for creating the part representation (@part_id).
The following classes and their sub-classes can be used:
classifications: "Organization_identification_code" (urn:plcs:rdl:std:Organization_identification_code), "Organization_name" (urn:plcs:rdl:std:Organization_name)
part_org_id_ecl_id (Default=urn:plcs:rdl:std,Type='URN', Optional)
The identifier of the External_class_library storing the definition of the External_class used to classify the organization identifier (@part_org_id).
part_vn_id (Type='STRING')
The identifier of the part version
part_vn_id_class_name (Default=Version_identification_code,Type='CLASS', Optional)
The name of the class being used to classify the identifier assigned ( Identification_assignment ) to the part version (i.e. the part_vn_id)
The following classes and their sub-classes can be used:
classifications: "Version_identification_code" (urn:plcs:rdl:std:Version_identification_code)
part_vn_id_ecl_id (Default=urn:plcs:rdl:std,Type='URN', Optional)
The identifier of the External_class_library storing the definition of the External_class referenced by the parameter @part_vn_id_class_name class..
part_vn_org_id (Type='STRING')
The name or identifier of the organization owns the part version id.
part_vn_org_id_class_name (Default=Organization_name,Type='CLASS', Optional)
The name of the class being used to classify the identification (Identification_assignment) of the organization responsible for providing the part version representation
The following classes and their sub-classes can be used:
classifications: "Organization_identification_code" (urn:plcs:rdl:std:Organization_identification_code), "Organization_name" (urn:plcs:rdl:std:Organization_name)
part_vn_org_id_ecl_id (Default=urn:plcs:rdl:std,Type='URN', Optional)
The identifier of the External_class_library storing the definition of the External_class used to classify the organization identifier.
domain (Default=Product_life_cycle_support,Type='CLASS', Optional)
The identifier of the External_class_library used to describe the type of application domain of the View_definition_context instance.
The following classes and their sub-classes can be used:
classifications: "Discipline_domain" (urn:plcs:rdl:std:Discipline_domain)
domain_ecl_id (Default=urn:plcs:rdl:std,Type='URN', Optional)
The identifier of the External_class_library storing the definition of the External_class referenced by the parameter @domain class.
life_cycle_stage (Default=Support_stage,Type='CLASS', Optional)
The identifier of the External_class_library used to describe the type of life cycle stage of the View_definition_context instance.
The following classes and their sub-classes can be used:
classifications: "Life_cycle_stage" (urn:plcs:rdl:std:Life_cycle_stage)
life_cycle_stage_ecl_id (Default=urn:plcs:rdl:std,Type='URN', Optional)
The identifier of the External_class_library storing the definition of the External_class referenced by the parameter @life_cycle_stage class.
Reference parameters
The following reference parameters are defined for this template:
part(Type='ENTITY (Part)')
Allow the Part entity instantiated in this path to be referenced when this template is used.
Note: The Part entity can be referenced in a template path by:
%^target = $representing_part.part%
where target is the parameter to which the Part is bound.
part_id_assgn(Type='ENTITY (Identification_assignment)')
Allow the Identification_assignment entity instantiated in this path to be referenced when this template is used.
Note: The Identification_assignment entity can be referenced in a template path by:
%^target = $representing_part.part_id_assgn%
where target is the parameter to which the Identification_assignment is bound.
version(Type='ENTITY (Part_version)')
Allow the Part_version entity instantiated in this path to be referenced when this template is used.
Note: The Part_version entity can be referenced in a template path by:
%^target = $representing_part.version%
where target is the parameter to which the Part_version is bound.
part_version_id_assgn(Type='ENTITY (Identification_assignment)')
Allow the Identification_assignment entity instantiated in this path to be referenced when this template is used.
Note: The Identification_assignment entity can be referenced in a template path by:
%^target = $representing_part.part_version_id_assgn%
where target is the parameter to which the Identification_assignment is bound.
view(Type='ENTITY (Part_view_definition)')
Allow the Part_view_definition entity instantiated in this path to be referenced when this template is used.
Note: The Part_view_definition entity can be referenced in a template path by:
%^target = $representing_part.view%
where target is the parameter to which the Part_view_definition is bound.
contxt(Type='ENTITY (View_definition_context)')
Allow the View_definition_context entity instantiated in this path to be referenced when this template is used.
Note: The View_definition_context entity can be referenced in a template path by:
%^target = $representing_part.contxt%
where target is the parameter to which the View_definition_context is bound.
catgy(Type='ENTITY (Product_category)')
Allow the Product_category entity instantiated in this path to be referenced when this template is used.
Note: The Product_category entity can be referenced in a template path by:
%^target = $representing_part.catgy%
where target is the parameter to which the Product_category is bound.
prod_cat_assgnt(Type='ENTITY (Product_category_assignment)')
Allow the Product_category_assignment entity instantiated in this path to be referenced when this template is used.
Note: The Product_category_assignment entity can be referenced in a template path by:
%^target = $representing_part.prod_cat_assgnt%
where target is the parameter to which the Product_category_assignment is bound.
Uniqueness constraints
The following entity/attribute combinations specify a uniqueness constraint:
Unique constraint: Unique product_category
There shall be at most one instance of the entity (Product_category) with the attribute (Product_category.name="part") instantiated in the data set.

The following parameter combinations specify a uniqueness constraint:
Unique constraint: Unique part
Each instance of the entity (Part) within the data set shall be uniquely identified by a combination of the following parameters on this template (representing_part) namely: part_id, part_id_class_name, part_id_ecl_id, part_org_id, part_org_id_class_name, part_org_id_ecl_id.
The instance is referenced by the following template parameter: part.
Unique constraint: Unique part version
Each instance of the entity (Part_version) within the data set shall be uniquely identified by a combination of the following parameters on this template (representing_part) namely: part_id, part_id_class_name, part_id_ecl_id, part_org_id, part_org_id_class_name, part_org_id_ecl_id, part_vn_id, part_vn_id_class_name, part_vn_id_ecl_id, part_vn_org_id, part_vn_org_id_class_name, part_vn_org_id_ecl_id.
The instance is referenced by the following template parameter: version.
This rule means that there can be only one version (Part_version) of a part (Part) with any given identifier.
Unique constraint: Unique part view
Each instance of the entity (Part_view_definition) within the data set shall be uniquely identified by a combination of the following parameters on this template (representing_part) namely: part_id, part_id_class_name, part_id_ecl_id, part_org_id, part_org_id_class_name, part_org_id_ecl_id, part_vn_id, part_vn_id_class_name, part_vn_id_ecl_id, part_vn_org_id, part_vn_org_id_class_name, part_vn_org_id_ecl_id, domain, domain_ecl_id, life_cycle_stage, life_cycle_stage_ecl_id.
The instance is referenced by the following template parameter: view.
This rule means that there can be only one view definition (Part_view_definition) of a part version (Part_version) with any given identifier, in the same View_definition_context) .
Unique constraint: Unique product category assignment
Each instance of the entity (Product_category_assignment) within the data set shall be uniquely identified by a combination of the following parameters on this template (representing_part) namely: part_id, part_id_class_name, part_id_ecl_id, part_org_id, part_org_id_class_name, part_org_id_ecl_id.
The instance is referenced by the following template parameter: prod_cat_assgnt.
This rule means that there can be only one Product_category_assignment (Product_category_assignment) assined to a part (Part) with any given identifier. There is a separate constraint for the Product_category (Product_category).
Unique constraint: Unique view_definition_context
Each instance of the entity (View_definition_context) within the data set shall be uniquely identified by a combination of the following parameters on this template (representing_part) namely: domain, domain_ecl_id, life_cycle_stage, life_cycle_stage_ecl_id.
The instance is referenced by the following template parameter: contxt.
Instantiation path
The instantiation path shown below specifies the entities that are to be instantiated by the template.
A description of templates and the syntax for the instantiation path is provided in the Reading Capability Templates help section.
-- Part
Part

-- Mark the Part entity as referable when this template
-- is used by binding by the reference parameter ^part
%^part = Part%
Part.id = '/IGNORE'
Part.name = '/IGNORE'
Part.description = '/IGNORE'

-- Identify the Part
/assigning_identification(
    items=^part,
    id=@part_id,
    id_class_name=@part_id_class_name,
    id_ecl_id=@part_id_ecl_id,
    org_id=@part_org_id,
    org_id_class_name=@part_org_id_class_name,
    org_id_ecl_id=@part_org_id_ecl_id )/

-- establish the ref parameter
%^part_id_assgn = $assigning_identification.id_assgn%

--
-- Product category assignment
Product_category_assignment

-- Not able to reference from outside
-- Attach the assignment to the Part
Product_category_assignment.products -> Part

--
-- Product category
Product_category
Product_category.id = '/IGNORE'
Product_category.name = 'part'
Product_category.description = '/IGNORE'
%^catgy = Product_category%

-- Attach the assignment to the Product_category
Product_category_assignment.category -> Product_category

-- Part version
--
Part_version

-- Mark the Part_version entity as referable when this template
-- is used by binding it to the reference parameter ^version
%^version = Part_version%
Part_version.id = '/IGNORE'
Part_version.description = '/IGNORE'

-- Relate the part_version to the part
Part_version.of_product -> Part

-- Identify the Part_version
/assigning_identification(
    items=^version,
    id=@part_vn_id,
    id_class_name=@part_vn_id_class_name,
    id_ecl_id=@part_vn_id_ecl_id,
    org_id=@part_vn_org_id,
    org_id_class_name=@part_vn_org_id_class_name,
    org_id_ecl_id=@part_vn_org_id_ecl_id )/

-- establish the ref parameter
%^part_version_id_assgn = $assigning_identification.id_assgn%

--
Part_view_definition

-- Mark the Part_view_definition entity as referable
-- when this template is used by binding it to the reference
-- parameter ^view
%^view = Part_view_definition%
Part_view_definition.id = '/IGNORE'
Part_view_definition.name = '/IGNORE'
Part_view_definition.additional_characterization = '/IGNORE'

-- Relate the part_version to the part
Part_view_definition.defined_version -> Part_version

--
View_definition_context

-- Mark the View_definition_context entity as referable when this
-- template is used by binding it to the reference parameter ^contxt
%^contxt = View_definition_context%

-- Ignore the attributes
View_definition_context.application_domain = '/IGNORE'
View_definition_context.life_cycle_stage = '/IGNORE'
View_definition_context.description = '/IGNORE'

-- provide the application domain of the view definition by classification
/assigning_reference_data(
    items=^contxt,
    class_name=@domain,
    ecl_id=@domain_ecl_id)/

-- provide the life cycle stage of the view definition by classification
/assigning_reference_data(
    items=^contxt,
    class_name=@life_cycle_stage,
    ecl_id=@life_cycle_stage_ecl_id)/

-- Relate the part_view_definition to the View_definition_context
Part_view_definition.initial_context -> View_definition_context
The following entities are instantiated with attributes as specified:
Entity in path Value Inherited from
Part.id '/IGNORE' Product.id
Part.name '/IGNORE' Product.name
Part.description '/IGNORE' Product.description
Product_category.id '/IGNORE'
Product_category.name 'part'
Product_category.description '/IGNORE'
Part_version.id '/IGNORE' Product_version.id
Part_version.description '/IGNORE' Product_version.description
Part_view_definition.id '/IGNORE' Product_view_definition.id
Part_view_definition.name '/IGNORE' Product_view_definition.name
Part_view_definition.additional_characterization '/IGNORE' Product_view_definition.additional_characterization
View_definition_context.application_domain '/IGNORE'
View_definition_context.life_cycle_stage '/IGNORE'
View_definition_context.description '/IGNORE'
Instance diagrams
The instance diagram in Figure  3 shows an example of the EXPRESS entities and templates that are instantiated by the template:
/representing_part(part_id='ph-001-001', part_id_class_name='Part_identification_code', part_id_ecl_id='urn:plcs:rdl:std', part_org_id='Parts R Us Ltd', part_org_id_class_name='Organization_name', part_org_id_ecl_id='urn:plcs:rdl:std', part_vn_id='1.0', part_vn_id_class_name='Version_identification_code', part_vn_id_ecl_id='urn:plcs:rdl:std', part_vn_org_id='Parts R Us Ltd', part_vn_org_id_class_name='Organization_name', part_vn_org_id_ecl_id='urn:plcs:rdl:std', domain='Product_life_cycle_support', domain_ecl_id='urn:plcs:rdl:std', life_cycle_stage='Support_stage', life_cycle_stage_ecl_id='urn:plcs:rdl:std')/
(an illustration of the consolidated representing_part template is shown in Figure 4 below.)
Note that the assigning_reference_data and assigning_identification templates are used in the diagram. Namely:
/assigning_reference_data(items='#112', class_name='Support_stage', ecl_id='urn:plcs:rdl:std')/
/assigning_reference_data(items='#112', class_name='Product_life_cycle_support', ecl_id='urn:plcs:rdl:std')/
/assigning_identification(items='#109', id='ph-001-001', id_class_name='Part_identification_code', id_ecl_id='urn:plcs:rdl:std', org_id='Parts R Us Ltd', org_id_class_name='Organization_name', org_id_ecl_id='urn:plcs:rdl:std')/
/assigning_identification(items='#110', id='1.0', id_class_name='Version_identification_code', id_ecl_id='urn:plcs:rdl:std', org_id='Parts R Us Ltd', org_id_class_name='Organization_name', org_id_ecl_id='urn:plcs:rdl:std')/


Figure 3 —  Entities instantiated by representing_part template

Figure 3 —  Entities instantiated by representing_part template

The instance diagram in Figure 4 shows the graphic symbol for the template that is to be used in other instance diagrams. The example template is:
/representing_part(part_id='ph-001-001', part_id_class_name='Part_identification_code', part_id_ecl_id='urn:plcs:rdl:std', part_org_id='Parts R Us Ltd', part_org_id_class_name='Organization_name', part_org_id_ecl_id='urn:plcs:rdl:std', part_vn_id='1.0', part_vn_id_class_name='Version_identification_code', part_vn_id_ecl_id='urn:plcs:rdl:std', part_vn_org_id='Parts R Us Ltd', part_vn_org_id_class_name='Organization_name', part_vn_org_id_ecl_id='urn:plcs:rdl:std', domain='Product_life_cycle_support', domain_ecl_id='urn:plcs:rdl:std', life_cycle_stage='Support_stage', life_cycle_stage_ecl_id='urn:plcs:rdl:std')/


Figure 4 —  Example instantiation of representing_part template

Figure 4 —  Example instantiation of representing_part template

Characterizations
The following section details how the representing_part template can be optionally characterized by assigning other constructs to it. These are characterizations commonly applied to the template. The ISO 10303-239 EXPRESS model may enable other assignments to the entities instantiated by the template.
The EXPRESS-G diagram in Figure 5 shows the possible characterizations of the template "representing_part".


Figure 5 —  Characterizations for representing_part template

Figure 5 —  Characterizations for representing_part template

The following characterizations may apply:
Characterization Assigning name

NOTE   this characterization is optional.

A name of the part can be provided using the template assigning_identification. Part names are identifiers that are classifed using external reference data as "Part name" (urn:plcs:rdl:std:Part name) or any subclass of this class. This is then applied to the ^part reference parameter. See Figure 5 for the an abstract view of this. The following template call shows how this might be instantiated with respect to Figure 5.

/assigning_identification(id='gasket', class_name='Part_name', ecl_id='urn:plcs:rdl:std', org_id='Parts R Us', org_id_class_name='Organization_name', org_ecl_id='urn:plcs:rdl:std', items='@53')/
Characterization Assigning descriptor

NOTE   this characterization is optional.

A description of the part can be provided using the template assigning_descriptor. This is applied to the ^part, ^version or ^view reference parameters. See Figure 5 for the an abstract view of this. The following template call shows how this might be instantiated with respect to Figure 5.

/assigning_descriptor(descr='This describes the part or a view of the part', class_name='Description', ecl_id='urn:plcs:rdl:std', is_assigned_to='@53')/
Characterization Assigning identification

NOTE   this characterization is optional.

An identification of the part can be provided using the template assigning_identification. This is applied to the ^part, ^version or ^view reference parameters. See Figure 5 for the an abstract view of this. The following template call shows how this might be instantiated with respect to Figure 5.

/assigning_identification(id='ph-001-001', class_name='Part_identification_code', ecl_id='urn:plcs:rdl:std', org_id='Parts R Us', org_id_class_name='Organization_name', org_ecl_id='urn:plcs:rdl:std', items='@53')/
Characterization Assigning reference data

NOTE   this characterization is optional.

Classification or reference data can be applied to the part using the template assigning_reference_data. This is applied to the ^part, ^version or ^view reference parameters. See Figure 5 for the an abstract view of this. The following template call shows how this might be instantiated with respect to Figure 5.

/assigning_reference_data(class_name='Part_classification', ecl_id='urn:plcs:rdl:std', items='@53')/
Characterization Assignments of properties and documents

NOTE   this characterization is optional.

A part may have specific properties and documents assigned to it, through the use of the following templates: assigning_product_property and assigning_document. These are applied to the ^view reference parameter. See Figure 5 for the an abstract view of this. The following template calls show how these characterizations might be instantiated with respect to Figure 5.

/assigning_product_property(property_class_name='Wheel_diameter', property_ecl_id='urn:plcs:rdl:sample', described_element='#53')/
/assigning_document(assigned_document='#??', doc_ass_role='Document_assignment_role', doc_ar_ecl_id='urn:plcs:rdl:std', is_assigned_to='#53')/
Template: representing_alternate_part_relationship (Short name: rep_alt_part_rel)

This section specifies the template representing_alternate_part_relationship.

NOTE  An explanation of a template and the associated instantiation path is provided in the Template overview section.

Description

This template describes how to represent an alternate part relationship, where any version of the alternate part may be used in place of any version of the base part.

Model diagrams
The EXPRESS-G diagram in Figure 1 shows the templates and EXPRESS entities that are required to represent the template "representing_alternate_part_relationship". The text highlighted in blue shows the template parameters.


Figure 1 —  An EXPRESS-G representation of the Information model for representing_alternate_part_relationship

Figure 1 —  An EXPRESS-G representation of the Information model for representing_alternate_part_relationship

The graphic for the template to be used in other EXPRESS-G diagrams is shown in Figure  2 below.


Figure 2 —  The graphical representation of the representing_alternate_part_relationship template

Figure 2 —  The graphical representation of the representing_alternate_part_relationship template

Input parameters
The following input parameters are defined for this template:
base_part (Type= 'ENTITY (Part)' )
The Part for which an alternate is specified.
alternate_part (Type= 'ENTITY (Part)' )
The Part that may replace in all its usages, the base part.
Reference parameters
The following reference parameters are defined for this template:
alt_part_rel(Type='ENTITY (Alternate_part_relationship)')
Allow the Alternate_part_relationship entity instantiated in this path to be referenced when this template is used.
Note: The Alternate_part_relationship entity can be referenced in a template path by:
%^target = $representing_alternate_part_relationship.alt_part_rel%
where target is the parameter to which the Alternate_part_relationship is bound.
Uniqueness constraints

The following parameter combinations specify a uniqueness constraint:
Unique constraint: Alternate part
Each instance of the entity (Alternate_part_relationship) within the data set shall be uniquely identified by a combination of the following parameters on this template (representing_alternate_part_relationship) namely: base_part, alternate_part.
The instance is referenced by the following template parameter: alt_part_rel.
Instantiation path
The instantiation path shown below specifies the entities that are to be instantiated by the template.
A description of templates and the syntax for the instantiation path is provided in the Reading Capability Templates help section.
Alternate_part_relationship

-- Mark the Alternate_part_relationship entity as
-- referable when this template is used by binding it to the reference
-- parameter alt_part_rel
%^alt_part_rel = Alternate_part_relationship%
Alternate_part_relationship.name = '/IGNORE'
Alternate_part_relationship.description = '/IGNORE'
Alternate_part_relationship.criteria = '/IGNORE'
Alternate_part_relationship.base_product -> @base_part
Alternate_part_relationship.alternate_product -> @alternate_part
The following entities are instantiated with attributes as specified:
Entity in path Value Inherited from
Alternate_part_relationship.name '/IGNORE' Alternate_product_relationship.name
Alternate_part_relationship.description '/IGNORE' Alternate_product_relationship.description
Alternate_part_relationship.criteria '/IGNORE' Alternate_product_relationship.criteria
Instance diagrams
The instance diagram in Figure  3 shows an example of the EXPRESS entities and templates that are instantiated by the template:
/representing_alternate_part_relationship(base_part='#1', alternate_part='#2')/
(an illustration of the consolidated representing_alternate_part_relationship template is shown in Figure 4 below.)


Figure 3 —  Entities instantiated by representing_alternate_part_relationship template

Figure 3 —  Entities instantiated by representing_alternate_part_relationship template

The instance model in STEP ASCII exchange file format (ISO 10303 Part 21 syntax) is:
#1 = PART('/IGNORE','/IGNORE','/IGNORE'); #2 = PART('/IGNORE','/IGNORE','/IGNORE'); #3 = ALTERNATE_PART_RELATIONSHIP('/IGNORE','/IGNORE',#1,#2,'/IGNORE');
The instance diagram in Figure 4 shows the graphic symbol for the template that is to be used in other instance diagrams. The example template is:
/representing_alternate_part_relationship(base_part='#1', alternate_part='#2')/


Figure 4 —  Instantiation of representing_alternate_part_relationship template

Figure 4 —  Instantiation of representing_alternate_part_relationship template

Characterizations
No common characterizations of the template representing_alternate_part_relationship have been identified. However, the ISO 10303-239 EXPRESS model may enable other assignments to the entities instantiated by the template.
Template: referencing_part (Short name: ref_part)

This section specifies the template referencing_part.

NOTE  An explanation of a template and the associated instantiation path is provided in the Template overview section.

Description

This template describes how to represent a reference to a Part by its part and version identification.

Model diagrams
The EXPRESS-G diagram in Figure 1 shows the templates and EXPRESS entities that are required to represent the template "referencing_part". The text highlighted in blue shows the template parameters.

NOTE    The Product_category is included in the diagram to conform to the ISO 10303-239 EXPRESS schema. If a category of product is required then the reference data should be assigned to the Part using the template assigning_reference_data.



Figure 1 —  An EXPRESS-G representation of the Information model for referencing_part

Figure 1 —  An EXPRESS-G representation of the Information model for referencing_part

The graphic for the template to be used in other EXPRESS-G diagrams is shown in Figure  2 below.


Figure 2 —  The graphical representation of the referencing_part template

Figure 2 —  The graphical representation of the referencing_part template

Input parameters
The following input parameters are defined for this template:
part_id (Type='STRING')
The identification of the Part being referenced.
part_id_class_name (Default=Part_identification_code,Type='CLASS')
The name of the External_class that determines the type of identifier given by the input parameter @part_id.
The following classes and their sub-classes can be used:
classifications: "Part_identification_code" (urn:plcs:rdl:std:Part_identification_code), "Part_name" (urn:plcs:rdl:std:Part_name)
part_id_ecl_id (Default=urn:plcs:rdl:std,Type='URN')
The identification of the External_class_library storing the External_class given by the input parameter @part_id_class_name.
part_org_id (Type='STRING')
The identification of the Organization that "owns" the Part identifier (@part_id).
part_org_id_class_name (Default=Organization_name,Type='CLASS')
The name of the External_class that determines the type of organization identification (@part_org_id) being used. For example CAGE code.
The following classes and their sub-classes can be used:
classifications: "Organization_identification_code" (urn:plcs:rdl:std:Organization_identification_code), "Organization_name" (urn:plcs:rdl:std:Organization_name)
part_org_id_ecl_id (Default=urn:plcs:rdl:std,Type='URN')
The identification of the External_class_library storing the External_class given by the input parameter @part_org_id_class_name
part_vn_id (Type='STRING')
The identifier of the part version
part_vn_id_class_name (Default=Version_identification_code,Type='CLASS')
The name of the class being used to classify the identifier assigned ( Identification_assignment ) to the part version (i.e. the part_vn_id)
The following classes and their sub-classes can be used:
classifications: "Version_identification_code" (urn:plcs:rdl:std:Version_identification_code)
part_vn_id_ecl_id (Default=urn:plcs:rdl:std,Type='URN')
The identification of the External_class_library storing the External_class given by the input parameter @part_vn_id_class_name.
part_vn_org_id (Type='STRING')
The name or identifier of the organization owns the part version id.
part_vn_org_id_class_name (Default=Organization_name,Type='CLASS')
The name of the class being used to classify the identification (Identification_assignment) of the organization responsible for providing the part version representation
The following classes and their sub-classes can be used:
classifications: "Organization_identification_code" (urn:plcs:rdl:std:Organization_identification_code), "Organization_name" (urn:plcs:rdl:std:Organization_name)
part_vn_org_id_ecl_id (Default=urn:plcs:rdl:std,Type='URN')
The identification of the External_class_library storing the External_class given by the input parameter @part_vn_org_id_class_name.
Reference parameters
The following reference parameters are defined for this template:
part(Type='ENTITY (Part)')
Allow the Part entity instantiated in this path to be referenced when this template is used.
Note: The Part entity can be referenced in a template path by:
%^target = $referencing_part.part%
where target is the parameter to which the Part is bound.
part_id_assgn(Type='ENTITY (Identification_assignment)')
Allow the Identification_assignment entity instantiated in this path to be referenced when this template is used.
Note: The Identification_assignment entity can be referenced in a template path by:
%^target = $referencing_part.part_id_assgn%
where target is the parameter to which the Identification_assignment is bound.
part_version(Type='ENTITY (Part_version)')
Allow the Part_version entity instantiated in this path to be referenced when this template is used.
Note: The Part_version entity can be referenced in a template path by:
%^target = $referencing_part.part_version%
where target is the parameter to which the Part_version is bound.
part_version_id_assgn(Type='ENTITY (Identification_assignment)')
Allow the Identification_assignment entity instantiated in this path to be referenced when this template is used.
Note: The Identification_assignment entity can be referenced in a template path by:
%^target = $referencing_part.part_version_id_assgn%
where target is the parameter to which the Identification_assignment is bound.
Uniqueness constraints
The following entity/attribute combinations specify a uniqueness constraint:
Unique constraint: Unique product_category
There shall be at most one instance of the entity (Product_category) with the attribute (Product_category.name="part") instantiated in the data set.
Product_category.name = 'part'

The following parameter combinations specify a uniqueness constraint:
Unique constraint: Unique part
Each instance of the entity (Part) within the data set shall be uniquely identified by a combination of the following parameters on this template (referencing_part) namely: part_id, part_id_class_name, part_id_ecl_id, part_org_id, part_org_id_class_name, part_org_id_ecl_id.
The instance is referenced by the following template parameter: part.
Unique constraint: Unique part version
Each instance of the entity (Part_version) within the data set shall be uniquely identified by a combination of the following parameters on this template (referencing_part) namely: part_id, part_id_class_name, part_id_ecl_id, part_org_id, part_org_id_class_name, part_vn_id, part_vn_id_class_name, part_vn_id_ecl_id, part_vn_org_id, part_vn_org_id_class_name.
The instance is referenced by the following template parameter: part_version.
This rule means that there can be only one version (Part_version) of a part (Part) with any given identifier.
Instantiation path
The instantiation path shown below specifies the entities that are to be instantiated by the template.
A description of templates and the syntax for the instantiation path is provided in the Reading Capability Templates help section.
Part

-- Mark the Part entity as
-- referable when this template is used by binding it to the reference
-- parameter part
%^part = Part%
Part.id = '/IGNORE'
Part.name = '/IGNORE'
Part.description = '/IGNORE'

-- assign the identification to the Part
/assigning_identification(
    items=^part,
    id=@part_id,
    id_class_name=@part_id_class_name,
    id_ecl_id=@part_id_ecl_id,
    org_id=@part_org_id,
    org_id_class_name=@part_org_id_class_name,
    org_id_ecl_id=@part_org_id_ecl_id)/
%^part_id_assgn = $assigning_identification.id_assgn%

-- Define a Product category
Product_category
Product_category.id = '/IGNORE'
Product_category.name = 'part'
Product_category.description = '/IGNORE'

-- Product category assignment
Product_category_assignment
Product_category_assignment.products -> Part
Product_category_assignment.category -> Product_category

-- Instantiate Part version
Part_version

-- Mark the Part_version entity as referable when this template
-- is used by binding it to the reference parameter ^part_version
%^part_version = Part_version%
Part_version.id = '/IGNORE'
Part_version.description = '/IGNORE'

-- Relate the part_version to the part
Part_version.of_product -> ^part

-- Identify the Part_version
/assigning_identification(
    items=^part_version,
    id=@part_vn_id,
    id_class_name=@part_vn_id_class_name,
    id_ecl_id=@part_vn_id_ecl_id,
    org_id=@part_vn_org_id,
    org_id_class_name=@part_vn_org_id_class_name,
    org_id_ecl_id=@part_vn_org_id_ecl_id )/
%^part_version_id_assgn = $assigning_identification.id_assgn%
The following entities are instantiated with attributes as specified:
Entity in path Value Inherited from
Part.id '/IGNORE' Product.id
Part.name '/IGNORE' Product.name
Part.description '/IGNORE' Product.description
Product_category.id '/IGNORE'
Product_category.name 'part'
Product_category.description '/IGNORE'
Part_version.id '/IGNORE' Product_version.id
Part_version.description '/IGNORE' Product_version.description
Instance diagrams
The instance diagram in Figure  3 shows an example of the EXPRESS entities and templates that are instantiated by the template:
/referencing_part(part_id='ph-001-001', part_id_class_name='Part_identification_code', part_id_ecl_id='urn:plcs:rdl:std', part_org_id='Parts R Us Ltd', part_org_id_class_name='Organization_name', part_org_id_ecl_id='urn:plcs:rdl:std', part_vn_id='1', part_vn_id_class_name='Version_identification_code', part_vn_id_ecl_id='urn:plcs:rdl:std', part_vn_org_id='Parts R Us Ltd', part_vn_org_id_class_name='Organization_name', part_vn_org_id_ecl_id='urn:plcs:rdl:std')/
(an illustration of the consolidated referencing_part template is shown in Figure 4 below.)


Figure 3 —  Entities instantiated by referencing_part template

Figure 3 —  Entities instantiated by referencing_part template

The instance diagram in Figure 4 shows the graphic symbol for the template that is to be used in other instance diagrams. The example template is:
/referencing_part(part_id='ph-001-001', part_id_class_name='Part_identification_code', part_id_ecl_id='urn:plcs:rdl:std', part_org_id='Parts R Us Ltd', part_org_id_class_name='Organization_name', part_org_id_ecl_id='urn:plcs:rdl:std', part_vn_id='1', part_vn_id_class_name='Version_identification_code', part_vn_id_ecl_id='urn:plcs:rdl:std', part_vn_org_id='Parts R Us Ltd', part_vn_org_id_class_name='Organization_name', part_vn_org_id_ecl_id='urn:plcs:rdl:std')/


Figure 4 —  Instantiation of referencing_part template

Figure 4 —  Instantiation of referencing_part template

Characterizations
The following section details how the referencing_part template can be optionally characterized by assigning other constructs to it. These are characterizations commonly applied to the template. The ISO 10303-239 EXPRESS model may enable other assignments to the entities instantiated by the template.
The following characterizations may apply:
Characterization Assigning identification

NOTE   this characterization is optional.

Additional identifications (incl. names) of the referenced Part may be assigned using the assigning_identification template.

Template: representing_product_relationship (Short name: repr_prod_rel)

This section specifies the template representing_product_relationship.

NOTE  An explanation of a template and the associated instantiation path is provided in the Template overview section.

Description

This template describes how to represent a relationship between two instances of Product.

Model diagrams
The EXPRESS-G diagram in Figure 1 shows the templates and EXPRESS entities that are required to represent the template "representing_product_relationship". The text highlighted in blue shows the template parameters.


Figure 1 —  An EXPRESS-G representation of the Information model for representing_product_relationship

Figure 1 —  An EXPRESS-G representation of the Information model for representing_product_relationship

The graphic for the template to be used in other EXPRESS-G diagrams is shown in Figure  2 below.


Figure 2 —  The graphical representation of the representing_product_relationship template

Figure 2 —  The graphical representation of the representing_product_relationship template

Input parameters
The following input parameters are defined for this template:
relating (Type= 'ENTITY (Product)' )
The relating product.
related (Type= 'ENTITY (Product)' )
The product that is being related.
rel_type_name (Type='CLASS')
The name of the class being used to classify the Product_relationship. This provides the role or reason for the relationship.
The following classes and their sub-classes can be used:
classifications: "Product_relationship" (urn:plcs:rdl:std:Product_relationship)
rel_type_ecl_id (Default=urn:plcs:rdl:std,Type='URN', Optional)
The identifier of the External_class_library storing the definition of the Class referenced by parameter @rel_type_name.
Reference parameters
The following reference parameters are defined for this template:
prod_rel(Type='ENTITY (Product_relationship)')
Allow the Product_relationship entity instantiated in this path to be referenced when this template is used.
Note: The Product_relationship entity can be referenced in a template path by:
%^target = $representing_product_relationship.prod_rel%
where target is the parameter to which the Product_relationship is bound.
Uniqueness constraints

The following parameter combinations specify a uniqueness constraint:
Unique constraint: Product relationship
Each instance of the entity (Product_relationship) within the data set shall be uniquely identified by a combination of the following parameters on this template (representing_product_relationship) namely: relating, related, rel_type_name, rel_type_ecl_id.
The instance is referenced by the following template parameter: prod_rel.
Instantiation path
The instantiation path shown below specifies the entities that are to be instantiated by the template.
A description of templates and the syntax for the instantiation path is provided in the Reading Capability Templates help section.
Product_relationship
%^prod_rel = Product_relationship%
Product_relationship.relation_type = '/IGNORE'
Product_relationship.description = '/IGNORE'
Product_relationship.relating_product -> @relating
Product_relationship.related_product -> @related

-- provide the type of relationship
/assigning_reference_data(
    items=^prod_rel,
    class_name=@rel_type_name,
    ecl_id=@rel_type_ecl_id)/
The following entities are instantiated with attributes as specified:
Entity in path Value Inherited from
Product_relationship.relation_type '/IGNORE'
Product_relationship.description '/IGNORE'
Instance diagrams
The instance diagram in Figure  3 shows an example of the EXPRESS entities and templates that are instantiated by the template:
/representing_product_relationship(relating='#1', related='#2', rel_type_name='Access_point', rel_type_ecl_id='urn:plcs:rdl:sample')/
(an illustration of the consolidated representing_product_relationship template is shown in Figure 4 below.)


Figure 3 —  Entities instantiated by representing_product_relationship template

Figure 3 —  Entities instantiated by representing_product_relationship template

The instance model in STEP ASCII exchange file format (ISO 10303 Part 21 syntax) is:
#1 = BREAKDOWN_ELEMENT('/IGNORE','/IGNORE','/IGNORE'); #2 = BREAKDOWN_ELEMENT('/IGNORE','/IGNORE','/IGNORE'); #3 = PRODUCT_RELATIONSHIP('/IGNORE','/IGNORE',#1,#2); #5 = CLASSIFICATION_ASSIGNMENT(#6,(#3),'/IGNORE'); #6 = EXTERNAL_CLASS('/NULL','Access_point','/IGNORE',#7); #7 = EXTERNAL_CLASS_LIBRARY('urn:plcs:rdl:sample','/IGNORE');
The instance diagram in Figure 4 shows the graphic symbol for the template that is to be used in other instance diagrams. The example template is:
/representing_product_relationship(relating='#1', related='#2', rel_type_name='Access_point', rel_type_ecl_id='urn:plcs:rdl:sample')/


Figure 4 —  Instantiation of representing_product_relationship template

Figure 4 —  Instantiation of representing_product_relationship template

Characterizations
No common characterizations of the template representing_product_relationship have been identified. However, the ISO 10303-239 EXPRESS model may enable other assignments to the entities instantiated by the template.

Related capabilities

This capability "Representing Parts" is related to the following capabilities:

Dependent capabilities

This capability "Representing Parts" is dependent on the following capabilities:

Model reference data

The following classes of reference data are required for this capability:

Part_identification_code(urn:plcs:rdl:std:Part_identification_code)
A Part_identification_code is an Identification_code that identifies a type of part. EXAMPLE: A part number. CONSTRAINT: An Identification_assignment classified as a Part_identification_code can only be assigned to a Part or its subclasses.
Part_name(urn:plcs:rdl:std:Part_name)
A Part_name is a Name by which a Part is known.
Version_identification_code(urn:plcs:rdl:std:Version_identification_code)
A Version_identifcation_code is a Progression_identifcation_code that identifies a particular version of an item in a series of versions. NOTE: The code is normally sequential. CONSTRAINT: An Identification_assignment classified as a Version_identification_code can only be assigned to a Product_version or its sub classes, Task_method_version, Scheme_version
Life_cycle_stage(urn:plcs:rdl:std:Life_cycle_stage)
A Life_cycle_stage is a View_definition_context that classifies the associated data as having been defined within the context of that Life_cycle_stage.
Application_domain(urn:plcs:rdl:std:Application_domain)
An Application_domain is a View_definition_context that classifies the associated data as having been defined within the context of that Application_domain . NOTE - 'electrical design' and 'mechanical design' are not understood to mean the design life cycle - within the application domain 'mechanical design', you may have concurrent 'manufacturing' and 'design' life-cycle view definitions. EXAMPLE: 'assembly study', 'digital mock-up', 'electrical design', 'mechanical design', 'preliminary design', 'process planning' are examples of application domains.

© OASIS 2010 — All rights reserved