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

23 Product property representation schema

23.1 General

The subject of the product_property_representation_schema is the representation of properties.

The requirements addressed by this schema are:

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_property_representation_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_property_representation_schema;

REFERENCE FROM basic_attribute_schema    --  ISO 10303-41
  (description_attribute,
   description_attribute_select,
   get_description_value,
   get_name_value,
   name_attribute,
   name_attribute_select);

REFERENCE FROM material_property_definition_schema    --  ISO 10303-45
  (property_definition_relationship);

REFERENCE FROM product_definition_schema    --  ISO 10303-41
  (product_definition,
   product_definition_relationship);

REFERENCE FROM product_property_definition_schema    --  ISO 10303-41
  (characterized_object,
   characterized_definition,
   general_property,
   product_definition_shape,
   property_definition,
   shape_aspect,
   shape_aspect_relationship);

REFERENCE FROM product_structure_schema    --  ISO 10303-44
  (product_definition_specified_occurrence);

REFERENCE FROM representation_schema    --  ISO 10303-43
  (representation,
   representation_item,
   representation_relationship,
   representation_reference,
   using_representations,
   mapped_item,
   representation_context,
   representation_map,
   list_representation_item,
   set_representation_item,
   get_representations_for_items);

REFERENCE FROM support_resource_schema    --  ISO 10303-41
  (bag_to_set,
   label,
   text);
(*

NOTE 1   The schemas referenced above are specified in the following parts:

basic_attribute_schema ISO 10303-41
material_property_definition_schema ISO 10303-45
product_definition_schema ISO 10303-41
product_property_definition_schema ISO 10303-41
product_structure_schema ISO 10303-44
representation_schema ISO 10303-43
support_resource_schema ISO 10303-41

NOTE 2   See Annex D for a graphical representation of this schema.

23.2 Fundamental concepts and assumptions

The following assumptions apply to the product_property_representation_schema:

NOTE    Representation schemas are defined in other parts of ISO 10303. This schema provides a structure within which these resources can be brought together to represent the properties of a product.

23.3 product_property_representation_schema type definitions

23.3.1 pprs_description_attribute_select   EXPRESS-G

The pprs_description_attribute_select type is an extension of the description_attribute_select type. It adds the data types context_dependent_shape_representation and property_definition_representation to the list of alternate data types.

EXPRESS specification:

*)
TYPE pprs_description_attribute_select = SELECT BASED_ON description_attribute_select WITH
   (context_dependent_shape_representation,
    property_definition_representation);
END_TYPE;
(*

23.3.2 pprs_name_attribute_select   EXPRESS-G

The pprs_name_attribute_select type is an extension of the name_attribute_select type. It adds the data types context_dependent_shape_representation and property_definition_representation to the list of alternate data types.

EXPRESS specification:

*)
TYPE pprs_name_attribute_select = SELECT BASED_ON name_attribute_select WITH
   (context_dependent_shape_representation,
    property_definition_representation);
END_TYPE;
(*

23.3.3 chained_representation_link   EXPRESS-G

The chained_representation_link type is a list of alternate data types. It provides a mechanism to refer to an instance of one of these data types. The chained_representation_link type allows for the designation of a mapped_item, a representation_context, or a representation_relationship.

EXPRESS specification:

*)
TYPE chained_representation_link = SELECT
   (mapped_item,
    representation_context,
    representation_relationship);
END_TYPE;
(*

23.3.4 represented_definition   EXPRESS-G

The represented_definition type is a list of alternate data types. It provides a mechanism to refer to an instance of one of these data types. The represented_definition type allows for the designation of a general_property, a property_definition, a property_definition_relationship, a shape_aspect, or a shape_aspect_relationship.

EXPRESS specification:

*)
TYPE represented_definition = SELECT
   (general_property,
    property_definition,
    property_definition_relationship,
    shape_aspect,
    shape_aspect_relationship);
END_TYPE;
(*

23.3.5 item_identified_representation_usage_definition   EXPRESS-G

The item_identified_representation_usage_definition type is an extensible list of alternate data types. It provides a mechanism to refer to instances of the data types included in the item_identified_representation_usage_definition 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 item_identified_representation_usage_definition = EXTENSIBLE GENERIC_ENTITY SELECT
   (represented_definition);
END_TYPE;
(*

23.3.6 item_identified_representation_usage_select   EXPRESS-G

The item_identified_representation_usage_select type is a list of alternate data types. It provides a mechanism to refer to an instance of one of these data types.

EXPRESS specification:

*)
TYPE item_identified_representation_usage_select = SELECT
   (representation_item,
    list_representation_item,
    set_representation_item);
END_TYPE;
(*

23.4 product_property_representation_schema entity definitions

23.4.1 chain_based_item_identified_representation_usage   EXPRESS-G

A chain_based_item_identified_representation_usage is a type of item_identified_representation_usage that represents a chain of representations in a graph of representations, where the undirected links in the graph can be instances of entity data types representation_context, representation_relationship, or mapped_item. The directed links are derived from the nodes and undirected links and consist solely of instances of the entity data type representation_relationship. The attribute rep_2 of the derived instances is directed towards the root, while the attribute rep_1 is directed towards the leaf.

EXPRESS specification:

*)
ENTITY chain_based_item_identified_representation_usage
  SUBTYPE OF (item_identified_representation_usage);
  nodes : LIST[2:?] OF UNIQUE representation;
  undirected_link : LIST[1:?] OF chained_representation_link;
DERIVE
  root : representation := nodes[1];
  SELF\item_identified_representation_usage.used_representation RENAMED leaf : representation := nodes[HIINDEX(nodes)];
  directed_link : LIST[1:?] OF representation_relationship := get_directed_link(nodes, undirected_link);
WHERE
  WR1: EXISTS(directed_link);
END_ENTITY;
(*

Attribute definitions:

nodes: the list of representations in the chain.

undirected_link: the list of items that relate nodes in the chain.

NOTE    The items in the undirected_link are placed correctly relative to the nodes in the chain but are not guaranteed to have a consistent direction along the chain.

root: the node that is the initial terminus of the chain.

leaf: the node that is the final terminus of the chain.

directed_link: the list of representation_relationships that are derived from the undirected_link and that are consistently directed from the root to the leaf.

Formal propositions:

WR1: The directed_link attribute shall be valid for the given set of nodes and undirected_links.

NOTE    the get_directed_link function returns indeterminate if it cannot construct a valid list. The EXPRESS EXISTS function returns FALSE with an indeterminate input.

23.4.2 characterized_chain_based_item_within_representation   EXPRESS-G

A characterized_chain_based_item_within_representation is a type of characterized_item_within_representation that represents a chain of representations in a graph of representations, where the undirected links in the graph can be instances of entity data types representation_context, representation_relationship, or mapped_item. The directed links are derived from the nodes and undirected links and consist solely of instances of the entity data type representation_relationship. The attribute rep_2 of the derived instances is directed towards the root, while the attribute rep_1 is directed towards the leaf.

EXPRESS specification:

*)
ENTITY characterized_chain_based_item_within_representation
  SUBTYPE OF (characterized_item_within_representation);
  nodes : LIST[2:?] OF UNIQUE representation;
  undirected_link : LIST[1:?] OF chained_representation_link;
DERIVE
  root : representation := nodes[1];
  SELF\characterized_item_within_representation.rep RENAMED leaf : representation := nodes[HIINDEX(nodes)];
  directed_link : LIST[1:?] OF representation_relationship := get_directed_link(nodes, undirected_link);
WHERE
  WR1: EXISTS(directed_link);
END_ENTITY;
(*

Attribute definitions:

nodes: the list of representations in the chain.

undirected_link: the list of items that relate nodes in the chain.

NOTE 1   The items in the undirected_link are placed correctly relative to the nodes in the chain but are not guaranteed to have a consistent direction along the chain.

root: the node that is the initial terminus of the chain.

leaf: the node that is the final terminus of the chain.

directed_link: the list of representation_relationships that are derived from the undirected_link and that are consistently directed from the root to the leaf.

Formal propositions:

WR1: The directed_link attribute shall be valid for the given set of nodes and undirected_links.

NOTE 2   the get_directed_link function returns indeterminate if it cannot construct a valid list. The EXPRESS EXISTS function returns FALSE with an indeterminate input.

23.4.3 characterized_item_within_representation   EXPRESS-G

A characterized_item_within_representation is a type of characterized_object that provides the characterization of a representation_item within a specified representation.

EXPRESS specification:

*)
ENTITY characterized_item_within_representation
  SUBTYPE OF (characterized_object);
  item : representation_item;
  rep : representation;
UNIQUE
  UR1: item, rep;
WHERE
  WR1: rep IN using_representations(item);
END_ENTITY;
(*

Attribute definitions:

item: the representation_item that is characterised.

rep: the representation in which the characterization of the representation_item applies.

Formal propositions:

UR1: A representation_item within a representation shall be characterised at most once.

WR1: The item shall be founded in the specified representation.

23.4.4 context_dependent_shape_representation   EXPRESS-G

A context_dependent_shape_representation is the association of a shape_representation_relationship with a product_definition_relationship. The relating_product_definition attribute of the product_definition_relationship establishes the context for the shape_representation_relationship. The rep_2 attribute of the shape_representation_relationship specifies a shape_representation that is associated with that context. The rep_1 attribute of the shape_representation_relationship specifies a shape_representation that is associated with the related_product_definition attribute of the product_definition_relationship. Assertions that the associated relations are definitional shall be specified in an annotated EXPRESS schema that uses or specializes this entity by including specializations or uses of the transformation_operator attribute of representation_relationship_with_transformation.

NOTE 1   ISO 10303 defines a critical associativity between geometry and topology that is carefully defined and constrained to provide the reproducibility, reliability, robustness, and completeness necessary in industrial product modeling based on vetted mathematical foundations (i.e., see Section "Geometric model schema" of ISO 10303-42). ISO 10303 employs a methodology of building hybrid product structure (non-geometric) and (geometric) assembly model structures that associate a rigid body tensor transform to place geometric models of the parts in the geometric model of the assembly. Those hybrid structures decompose the relationship to the transform, and the transform itself, into separate EXPRESS constructs; however they are designed and integrated to function as a single model.

NOTE 2   An AP that chooses to create a specialization of representation_relationship_with_transformation that is also a specialization of shape_representation_relationship, with the additional characteristic that the specialization specifies a set_representation_item in the role of transformation_operator, changes the standard interpretation of context_dependent_shape_representation from being a specification of a tensor transformation to being a specification of an association. This association is not definitional and therefore will not bring the definition of the source into the target model. It should therefore be used with care taken by users and implementers to understand its particular construction, limitations, and conditions.

NOTE 3   The interpretation of whether a transform or an association is specified is found in ISO 10303-43 clause 4.2 because the interpretation depends on which types are in the role of the transformation_operator attribute of the representation_relationship_with_transformation.

NOTE 4   Including a partial complex instance of the representation_relation with definitional_representation_relationship when the same data population specifies an association results in invalid data.

EXAMPLE 1   An application protocol specifies a transform between the (distorted) shape of a gasket in the context of an assembly and that assembly shape using an instance of context_dependent_shape_representation. Because of that declaration, context_dependent_shape_representation is definitional, and the target model when rendered in the CAD system will include the distorted gasket shape. There exists a separate set of relations that relate the (undistorted) gasket shape to the (distorted) gasket shape that are not declared in the context_dependent_shape_representation population.

EXAMPLE 2   An application protocol declares that a context_dependent_shape_representation specifies a collection of associations between items in the shape_representations specified by the rep_1 and rep_2 attributes of the representation_relationship. Because of that declaration, context_dependent_shape_representation is not definitional, and the target model (rep_2 of the representation_relationship) when rendered in the CAD system does not include the items in the source model (rep_1 of the representation_relationship). An external quality application evaluates the collection of associations and the target model for conformance to externally defined criteria.

NOTE 5   The role of context_dependent_shape_representation 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 6   The gasket shape in EXAMPLE 1 uses a definitional context_dependent_shape_representation because the context_dependent_shape_representation specifies a transform.

EXAMPLE 3   The position of a bolt's shape in a given assembly is definitional and therefore the context_dependent_shape_representation specifies a transform.

EXAMPLE 4   A gasket's shape depends upon whether the gasket is participating in an assembly relationship and, if it is a part of an assembly, the product or products with which it is assembled.

EXPRESS specification:

*)
ENTITY context_dependent_shape_representation;
  representation_relation : shape_representation_relationship;
  represented_product_relation : product_definition_shape;
DERIVE
  description : text := get_description_value(SELF);
  name : label := get_name_value(SELF);
WHERE
  WR1: 'PRODUCT_DEFINITION_SCHEMA.PRODUCT_DEFINITION_RELATIONSHIP' IN TYPEOF(represented_product_relation\property_definition.definition);
  WR2: SIZEOF(USEDIN(SELF, 'BASIC_ATTRIBUTE_SCHEMA.DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
  WR3: SIZEOF(USEDIN(SELF, 'BASIC_ATTRIBUTE_SCHEMA.NAME_ATTRIBUTE.NAMED_ITEM')) <= 1;
END_ENTITY;
(*

Attribute definitions:

representation_relation: a shape_representation_relationship that specifies the two associated shape_representations.

represented_product_relation: a product_definition_shape that identifies the product_definition_relationship that establishes the product context for the shape relationship.

description: the text that characterizes the context_dependent_shape_representation.

NOTE 7   This attribute is an upwardly compatible addition to context_dependent_shape_representation as specified in ISO 10303-41:1994.

name: the label by which the context_dependent_shape_representation is known.

NOTE 8   This attribute is an upwardly compatible addition to context_dependent_shape_representation as specified in ISO 10303-41:1994.

Formal propositions:

WR1: The represented_product_relation shall identify the shape of a product_definition_relationship.

WR2: Each context_dependent_shape_representation shall be the described_item in at most one description_attribute.

NOTE 9   The description_attribute data type is defined in the basic_attribute_schema of this document.

WR3: Each context_dependent_shape_representation shall be the named_item in at most one name_attribute.

NOTE 10   The name_attribute data type is defined in the basic_attribute_schema of this document.

NOTE 11   A template for constraining the population of the entity data types defined in the basic_attribute_schema is described in annex E.

23.4.5 item_identified_representation_usage   EXPRESS-G

An item_identified_representation_usage is an identification of a single or a set or a list of representation_item(s) within a representation as being the element(s) that describes a particular component or part of the property that is described by the representation. More than one representation may be bound to a product data item by members of item_identified_representation_usage and more than one member of representation_item(s) may be bound to a product data item by members of item_identified_representation_usage. The same item of product data shall not be bound to more than one member of representation_item within a member of representation.

EXAMPLE 1   In an application protocol, an instance of representation describes the shape of a product. One element of the representation - a curve - represents the boundary of a shape_aspect, a hole, in the product. Item_identification_representation_usage is used to state that the curve referenced by 'identified_item' is a representation item for the shape_aspect referenced by 'definition' and that the whole representation is referenced by 'used_representation' to indicate the structural context for the curve. Geometric_representation_context plays no role in this example.

EXAMPLE 2   In an application protocol, an instance of representation describes the shape of a product. One element of the representation - a curve - represents the boundary of a shape_aspect, a hole, in the product. A member of Item_identification_representation_usage is used to state that the curve referenced by 'identified_item' is a representation item for the shape_aspect#1 referenced by 'definition' and that the whole representation is referenced by 'used_representation' to indicate the structural context for the curve. A second member of Item_identification_representation_usage references a different curve in that same representation and references the same shape_aspect#1. The data population is invalid because only one item within a representation can be bound to a shape_aspect.

EXPRESS specification:

*)
ENTITY item_identified_representation_usage;
  name : label;
  description : OPTIONAL text;
  definition : item_identified_representation_usage_definition;
  used_representation : representation;
  identified_item : item_identified_representation_usage_select;
UNIQUE
  UR1: used_representation, identified_item;
  UR2: used_representation, definition;
WHERE
  WR1: valid_identified_item_in_representation(identified_item, used_representation);
END_ENTITY;
(*

Attribute definitions:

name: the label by which the item_identified_representation_usage is known.

description: the text that characterizes the item_identified_representation_usage. The value of the attribute need not be specified.

definition: the general_property, property_definition, property_definition_relationship, shape_aspect, or shape_aspect_relationship that is represented.

used_representation: the representation that describes the property or aspect of which the definition is a part or component, and that contains the identified_item (directly or indirectly) as one of its items.

identified_item: the representation_item or list_representation_item or set_representation_item that describes the identified property or aspect.

Formal propositions:

UR1: The combination of the used_representation and the identified_item shall be unique.

UR2: The combination of the used_representation and the definition shall be unique.

WR1: The representation_item(s) that is identified shall belong to the set of items of the representation referred to by the attribute used_representation, or shall participate in the definition of those items.

23.4.6 property_definition_representation   EXPRESS-G

A property_definition_representation is an association between a property_definition and a representation of the property.

EXPRESS specification:

*)
ENTITY property_definition_representation;
  definition : represented_definition;
  used_representation : representation;
DERIVE
  description : text := get_description_value(SELF);
  name : label := get_name_value(SELF);
WHERE
  WR1: SIZEOF(USEDIN(SELF, 'BASIC_ATTRIBUTE_SCHEMA.DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
  WR2: SIZEOF(USEDIN(SELF, 'BASIC_ATTRIBUTE_SCHEMA.NAME_ATTRIBUTE.NAMED_ITEM')) <= 1;
END_ENTITY;
(*

Attribute definitions:

definition: the identification of the general_property, property_definition, property_definition_relationship, shape_aspect, or shape_aspect_relationship that is represented.

used_representation: the representation of the property or aspect of the representation.

description: the text that characterizes the property_definition_representation.

NOTE 1   This attribute is an upwardly compatible addition to property_definition_representation as specified in ISO 10303-41:1994.

name: the label by which the property_definition_representation is known.

NOTE 2   This attribute is an upwardly compatible addition to property_definition_representation as specified in ISO 10303-41:1994.

Formal propositions:

WR1: Each property_definition_representation shall be the described_item in at most one description_attribute.

NOTE 4   The description_attribute data type is defined in basic_attribute_schema of this document.

WR2: Each property_definition_representation shall be the named_item in at most one name_attribute.

NOTE 4   The name_attribute data type is defined in basic_attribute_schema of this document.

NOTE 5   A template for constraining the population of the entity data types defined in the basic_attribute_schema is described in annex E.

23.4.7 shape_definition_representation   EXPRESS-G

A shape_definition_representation is a type of property_definition_representation. A shape_definition_representation is the association of a shape_representation with a product_definition_shape or with a property_definition characterizing a shape_definition.

EXPRESS specification:

*)
ENTITY shape_definition_representation
  SUBTYPE OF (property_definition_representation);
  SELF\property_definition_representation.definition : property_definition;
  SELF\property_definition_representation.used_representation : shape_representation;
WHERE
  WR1: ('PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(definition)) OR ('PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_DEFINITION' IN TYPEOF(definition\property_definition.definition));
END_ENTITY;
(*

Attribute definitions:

definition: an inherited attribute whose value shall be of type property_definition

used_representation: an inherited attribute whose value shall be of type shape_representation.

Formal propositions:

WR1: The inherited definition attribute shall be a product_definition_shape or a property_definition whose definition attribute is a shape_definition.

23.4.8 shape_representation   EXPRESS-G

A shape_representation is a type of representation that represents a shape.

EXPRESS specification:

*)
ENTITY shape_representation
  SUBTYPE OF (representation);
END_ENTITY;
(*

23.4.9 shape_representation_reference   EXPRESS-G

A shape_representation_reference is a type of representation_reference in which the referenced data type is a shape_representation.

EXPRESS specification:

*)
ENTITY shape_representation_reference
  SUBTYPE OF (representation_reference);
END_ENTITY;
(*

23.4.10 shape_representation_relationship   EXPRESS-G

A shape_representation_relationship is a type of representation_relationship in which at least one of the instances of the entity data type representation is a shape_representation or shape_representation_reference.

EXAMPLE    The representation of the shape of a bolt may be related to the representation of a position if the bolt is a part of an assembly.

EXPRESS specification:

*)
ENTITY shape_representation_relationship
  SUBTYPE OF (representation_relationship);
WHERE
  WR1: SIZEOF(['PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.SHAPE_REPRESENTATION', 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.SHAPE_REPRESENTATION_REFERENCE'] * (TYPEOF(SELF\representation_relationship.rep_1) + TYPEOF(SELF\representation_relationship.rep_2))) >= 1;
END_ENTITY;
(*

Formal propositions:

WR1: At least one of the two representations in the shape_representation_relationship shall be a shape_representation or shape_representation_reference.

23.4.11 specified_occurrence_context_dependent_shape_representation   EXPRESS-G

A specified_occurrence_context_dependent_shape_representation is a type of context_dependent_shape_representation that established a relation for a hierarchical product structure using product_definition_specified_occurrence.

EXPRESS specification:

*)
ENTITY specified_occurrence_context_dependent_shape_representation
  SUBTYPE OF (context_dependent_shape_representation);
  sub_element : product_definition_specified_occurrence;
WHERE
  WR1: 'PRODUCT_DEFINITION_SCHEMA.PRODUCT_DEFINITION_OCCURRENCE' IN TYPEOF(SELF.represented_product_relation.definition.related_product_definition);
  WR2: sub_element IN represented_product_relation.definition.related_product_definition.descendant_occurrences;
END_ENTITY;
(*

Attribute definitions:

sub_element: the product_definition_specified_occurrence for which the association established by the inherited attributes representation_relation and represented_product_relation applies.

Formal propositions:

WR1: The related_product_definition of the represented_product_relation shall be of type product_definition_occurrence.

WR2: The sub_element shall be within the descendant_occurrences of the product_definition_occurrence that is referenced by the related_product_definition of the represented_product_relation.

23.5 product_property_representation_schema function definitions

23.5.1 get_directed_link

The get_directed_link function returns for any list of representations and associated list of chained_representation_link the resolved list of representation_relationships when each member of undirected_link references the correct members of nodes. The get_directed_link function returns UNKNOWN when the input does not satisfy the correctness requirement.

EXPRESS specification:

*)
FUNCTION get_directed_link (nodes : LIST OF representation; undirected_link : LIST OF chained_representation_link) : LIST OF representation_relationship;
  LOCAL
  directed_link : LIST OF representation_relationship := [];
    END_LOCAL;
      IF (SIZEOF(nodes) <> SIZEOF(undirected_link) + 1) OR (VALUE_UNIQUE(nodes) = FALSE)
  THEN
    RETURN(?);
  END_IF;
      REPEAT i := 1 TO SIZEOF(undirected_link);
    CASE TRUE OF
      ('REPRESENTATION_SCHEMA.REPRESENTATION_CONTEXT' IN TYPEOF(undirected_link[i])) : BEGIN  
                                                                                              IF ((nodes[i]\representation.context_of_items :=:
                                                                                                   undirected_link[i]) AND
                                                                                                  (nodes[i +
                                                                                                         1]\representation.context_of_items :=:
                                                                                                   undirected_link[i]))
                                                                                              THEN
                                                                                                INSERT(directed_link,
                                                                                                       representation_relationship('',
                                                                                                                                   '',
                                                                                                                                   nodes[i +
                                                                                                                                         1],
                                                                                                                                   nodes[i]),
                                                                                                       (i - 1));
                                                                                              ELSE
                                                                                                RETURN(?);
                                                                                              END_IF;
      END;
      ('REPRESENTATION_SCHEMA.REPRESENTATION_RELATIONSHIP' IN TYPEOF(undirected_link[i])) : BEGIN  
                                                                                                   IF (((nodes[i] :=:
                                                                                                         undirected_link[i]\representation_relationship.rep_1) AND
                                                                                                        (nodes[i +
                                                                                                               1] :=:
                                                                                                         undirected_link[i]\representation_relationship.rep_2)) OR
                                                                                                       ((nodes[i] :=:
                                                                                                         undirected_link[i]\representation_relationship.rep_2) AND
                                                                                                        (nodes[i +
                                                                                                               1] :=:
                                                                                                         undirected_link[i]\representation_relationship.rep_1)))
                                                                                                   THEN
                                                                                                     INSERT(directed_link,
                                                                                                            representation_relationship('',
                                                                                                                                        '',
                                                                                                                                        nodes[i +
                                                                                                                                              1],
                                                                                                                                        nodes[i]),
                                                                                                            (i - 1));
                                                                                                   ELSE
                                                                                                     RETURN(?);
                                                                                                   END_IF;
      END;
      ('REPRESENTATION_SCHEMA.MAPPED_ITEM' IN TYPEOF(undirected_link[i])) : BEGIN  
                                                                                   IF ((nodes[i] IN
                                                                                        using_representations(undirected_link[i])) AND
                                                                                       (nodes[i + 1] :=:
                                                                                        undirected_link[i]\mapped_item.mapping_source\representation_map.mapped_representation))
                                                                                   THEN
                                                                                     INSERT(directed_link,
                                                                                            representation_relationship('',
                                                                                                                        '',
                                                                                                                        nodes[i +
                                                                                                                              1],
                                                                                                                        nodes[i]),
                                                                                            (i - 1));
                                                                                   ELSE
                                                                                     RETURN(?);
                                                                                   END_IF;
      END;
      OTHERWISE: RETURN(?);
    END_CASE;
  END_REPEAT;
      IF (VALUE_UNIQUE(directed_link) = FALSE)
  THEN
    RETURN(?);
  END_IF;
      RETURN(directed_link);
END_FUNCTION;
(*

Argument definitions:

nodes: (input) the list of instances of the entity data type representations to be used as a reference for constructing the directed_link.

undirected_link: (input) the list of instances of the entity data type mapped_item, representation_context, or representation_relationship that the function is comparing against the reference to establish the directed_link.

23.5.2 relatives_of_product_definitions

The relatives_of_product_definitions function finds all of the instances of the product_definition entity data type that are related to one or more elements of the definition_set argument. Only those relationships that are established by the subtype of the product_definition_relationship entity given in the relation_subtype argument are considered by this function.

EXPRESS specification:

*)
FUNCTION relatives_of_product_definitions (definition_set : SET OF product_definition; relation_subtype : STRING) : SET OF product_definition;
FUNCTION local_relatives_of_product_definitions(definition_set : SET OF product_definition;
                                                                 total_definitions : SET OF product_definition;
                                                                 relation_subtype : STRING) : SET OF product_definition;
  LOCAL
    local_def   : SET OF product_definition              := [];
    local_pdr   : SET OF product_definition_relationship := [];
    local_total : SET OF product_definition              := [];
  END_LOCAL;
    REPEAT i := 1 TO HIINDEX(definition_set);
      local_pdr := local_pdr + bag_to_set(USEDIN(definition_set[i], relation_subtype + '.RELATING_PRODUCT_DEFINITION'));
    END_REPEAT;
    REPEAT i := 1 TO HIINDEX(local_pdr);
      local_def := local_def + local_pdr[i].related_product_definition;
    END_REPEAT;
    IF (SIZEOF(local_def) - SIZEOF(total_definitions)) = 0
    THEN
      RETURN(local_def);
    ELSE
      local_total := total_definitions + local_def;
      RETURN(local_def +
             (local_relatives_of_product_definitions(local_def - total_definitions, local_total, relation_subtype)));
    END_IF;
  END_FUNCTION;
      RETURN(local_relatives_of_product_definitions(definition_set, definition_set, relation_subtype));
END_FUNCTION;
(*

Argument definitions:

definition_set: (input) the set of instances of the entity data type product_definition upon which operations are performed.

relation_subtype: the fully qualified name of an entity that is a subtype of the product_definition_relationship entity.

23.5.3 relatives_of_shape_representations

The relatives_of_shape_representations function finds all of the instances of the shape_representation entity data type that are related to one or more elements of the shape_representation_set argument.

NOTE    This function is not used in this schema. It is defined here because other ISO 10303 integrated resources and application protocols that use the identification_assignment_relationship entity include rules that use this function.

EXPRESS specification:

*)
FUNCTION relatives_of_shape_representations (shape_representation_set : SET OF shape_representation) : SET OF shape_representation;
FUNCTION local_relatives_of_shape_representations(shape_representation_set : SET OF shape_representation;
                                                                   total_reps : SET OF shape_representation) : SET OF shape_representation;
  LOCAL
    local_shape_rep : SET OF shape_representation              := [];
    local_srr       : SET OF shape_representation_relationship := [];
    local_total     : SET OF shape_representation              := [];
  END_LOCAL;
    REPEAT i := 1 TO HIINDEX(shape_representation_set);
      local_srr := local_srr +
                   QUERY(rr
                         <* bag_to_set(USEDIN(shape_representation_set[i], 'REPRESENTATION_SCHEMA.REPRESENTATION_RELATIONSHIP.REP_1'))
                         | 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.SHAPE_REPRESENTATION_RELATIONSHIP' IN TYPEOF(rr));
    END_REPEAT;
    REPEAT i := 1 TO HIINDEX(local_srr);
      IF 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.SHAPE_REPRESENTATION_RELATIONSHIP' IN TYPEOF(local_srr[i])
      THEN
        local_shape_rep := local_shape_rep + local_srr[i].rep_2;
      END_IF;
    END_REPEAT;
    IF SIZEOF(local_shape_rep - total_reps) = 0
    THEN
      RETURN(shape_representation_set);
    ELSE
      local_total := total_reps + local_shape_rep;
      RETURN(local_shape_rep + (local_relatives_of_shape_representations(local_shape_rep - total_reps, local_total)));
    END_IF;
  END_FUNCTION;
      RETURN(local_relatives_of_shape_representations(shape_representation_set, shape_representation_set));
END_FUNCTION;
(*

Argument definitions:

shape_representation_set: (input) the set of instances of the entity data type shape_representation to be operated on.

23.5.4 get_property_definition_representations

The get_property_definition_representations function returns for any characterized_definition the set of property_definition_representation objects that refer to the characterized_definition through a property_definition.

EXPRESS specification:

*)
FUNCTION get_property_definition_representations (c_def_instance : characterized_definition) : SET OF property_definition_representation;
  LOCAL
  pd_set : SET OF property_definition := [];
  pdr_set : SET OF property_definition_representation := [];
    END_LOCAL;
      pd_set := bag_to_set(USEDIN(c_def_instance, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION'));
      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_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'));
  END_REPEAT;
      RETURN(pdr_set);
END_FUNCTION;
(*

Argument definitions:

c_def_instance: (input) the candidate characterized_definition to be checked.

23.5.5 valid_identified_item_in_representation

The valid_identified_item_in_representation function checks two cases for validity.

In the case that the identified_item is a single instance, the function checks whether that argument belongs to the set of items of the representation given in the used_representation argument, or participates in the definition of an item in the used_representation. It returns FALSE if the condition is not met. Otherwise it returns TRUE.

In the case that the identified_item is an aggregate, the function checks whether each member of the aggregate belongs to the set of items of the representation given in the used_representation argument, or participates in the definition of an item in the used_representation. It returns FALSE if the condition is not met. Otherwise it returns TRUE.

EXPRESS specification:

*)
FUNCTION valid_identified_item_in_representation (identified_item : item_identified_representation_usage_select; used_representation : representation) : BOOLEAN;
  LOCAL
  i : INTEGER := 1;
    END_LOCAL;
      IF 'REPRESENTATION_SCHEMA.REPRESENTATION_ITEM' IN TYPEOF(identified_item)
  THEN
    RETURN(used_representation IN using_representations(identified_item));
  END_IF;
      IF ('REPRESENTATION_SCHEMA.LIST_REPRESENTATION_ITEM' IN TYPEOF(identified_item)) OR
         ('REPRESENTATION_SCHEMA.SET_REPRESENTATION_ITEM' IN TYPEOF(identified_item))
  THEN
    REPEAT WHILE (EXISTS(identified_item[i]));
      IF NOT (used_representation IN using_representations(identified_item[i]))
      THEN
        RETURN(FALSE);
      END_IF;
      i := i + 1;
    END_REPEAT;
    RETURN(TRUE);
  END_IF;
      RETURN(?);
END_FUNCTION;
(*

Argument definitions:

identified_item: (input) the candidate representation_item or list_representation_item or set_representation_item to be checked.

used_representation: (input) the instance of the entity data type representation that the function is validating.



*)
END_SCHEMA;  -- product_property_representation_schema
(*


© ISO 2021 — All rights reserved