Integrated generic resource: Fundamentals of product description and support | ISO 10303-41:2021(E) © ISO |
The requirements addressed by this schema are:
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.
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.
EXPRESS specification:
*)
TYPE
pprs_description_attribute_select
=
SELECT
BASED_ON
description_attribute_select
WITH
(context_dependent_shape_representation,
property_definition_representation);
END_TYPE;
(*
EXPRESS specification:
*)
TYPE
pprs_name_attribute_select
=
SELECT
BASED_ON
name_attribute_select
WITH
(context_dependent_shape_representation,
property_definition_representation);
END_TYPE;
(*
EXPRESS specification:
*)
TYPE
chained_representation_link
=
SELECT
(mapped_item,
representation_context,
representation_relationship);
END_TYPE;
(*
EXPRESS specification:
*)
TYPE
represented_definition
=
SELECT
(general_property,
property_definition,
property_definition_relationship,
shape_aspect,
shape_aspect_relationship);
END_TYPE;
(*
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;
(*
EXPRESS specification:
*)
TYPE
item_identified_representation_usage_select
=
SELECT
(representation_item,
list_representation_item,
set_representation_item);
END_TYPE;
(*
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.
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.
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.
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.
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.
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.
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.
EXPRESS specification:
*)
ENTITY shape_representation
SUBTYPE OF (representation);
END_ENTITY;
(*
EXPRESS specification:
*)
ENTITY shape_representation_reference
SUBTYPE OF (representation_reference);
END_ENTITY;
(*
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.
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.
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.
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.
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.
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.
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