Integrated generic resource: Fundamentals of product description and support | ISO 10303-41:2021(E) © ISO |
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_definition_schema;
REFERENCE FROM
basic_attribute_schema
--
ISO 10303-41
(get_id_value,
id_attribute,
id_attribute_select);
REFERENCE FROM
process_property_schema
--
ISO 10303-49
(action_property,
resource_property);
REFERENCE FROM
product_definition_schema
--
ISO 10303-41
(product_definition,
product_definition_relationship,
product_definition_relationship_relationship);
REFERENCE FROM
product_property_representation_schema
--
ISO 10303-41
(item_identified_representation_usage);
REFERENCE FROM
product_structure_schema
--
ISO 10303-44
(assembly_component_usage,
multi_level_reference_designator,
next_assembly_usage_occurrence,
product_definition_occurrence);
REFERENCE FROM
shape_dimension_schema
--
ISO 10303-47
(dimensional_location,
dimensional_size);
REFERENCE FROM
shape_tolerance_schema
--
ISO 10303-47
(geometric_tolerance);
REFERENCE FROM
support_resource_schema
--
ISO 10303-41
(bag_to_set,
identifier,
label,
text);
(*
NOTE 1 The schemas referenced above are specified in the following parts:
basic_attribute_schema ISO 10303-41 process_property_schema ISO 10303-49 product_definition_schema ISO 10303-41 product_property_representation_schema ISO 10303-41 product_structure_schema ISO 10303-44 shape_dimension_schema ISO 10303-47 shape_tolerance_schema ISO 10303-47 support_resource_schema ISO 10303-41
NOTE 2 See Annex D for a graphical representation of this schema.
This schema provides resources for the identification of:
The meaning of each assigned property may be defined either by its association with an instance of the entity characterizing a type of property or by its name attribute.
EXAMPLE 1 The definition of the surface finish of a shape is independent of the way in which the shape or the surface finish is represented.
NOTE In the previous example, both the defined surface finish and the shape could have multiple representations.
Each characteristic may be associated with a single characterized_object or product_definition or with one product_definition in the context of another. Each characteristic is independent of the number or types of representations of that characteristic. Each characteristic may be associated with the shape of a product, an element of the shape of a product, or the relationship between elements of the shape of a product.
This part of ISO 10303 distinguishes between the definition of a product and its possible usages. This part of ISO 10303 establishes the following assumptions:
the definition of a given object is characterized by a set of unique properties.
EXAMPLE 2 A product cannot have two shapes simultaneously.
any usage of the object is characterized by a set of unique properties.
EXAMPLE 3 A product, like glue, may have different shapes depending on its usage.
a property characterizes either the definition or one of the usages of an object.
EXAMPLE 4 The appearance of chair x is a unique property of that chair. The colour designating that the chair is white is a single item in a representation for the appearance property of chair x. This colour is shareable among many representations for the properties of many different objects.
EXPRESS specification:
*)
TYPE
characterized_definition
=
SELECT
(characterized_item,
characterized_object,
characterized_product_definition,
shape_definition);
END_TYPE;
(*
EXPRESS specification:
*)
TYPE
characterized_item
=
SELECT
(item_identified_representation_usage,
dimensional_size,
geometric_tolerance);
END_TYPE;
(*
EXPRESS specification:
*)
TYPE
ppds_id_attribute_select
=
SELECT
BASED_ON
id_attribute_select
WITH
(property_definition,
shape_aspect,
shape_aspect_relationship);
END_TYPE;
(*
Selection of a product_definition_relationship means that the property is applied to the related_product_definition attribute in the context of its relating_product_definition attribute. Selection of a product_definition_relationship_relationship means that the property is applied to the related attribute in the context of its relating attribute.
NOTE This enables properties of a given product that depend on the usages of this product to be described.
EXAMPLE The shape of a gasket depends upon whether or not it is an element of an assembly and, if it is an element of an assembly, the shape depends upon the assembly in which it participates.
EXPRESS specification:
*)
TYPE
characterized_product_definition
=
SELECT
(product_definition,
product_definition_occurrence,
product_definition_relationship,
product_definition_relationship_relationship);
END_TYPE;
(*
EXPRESS specification:
*)
TYPE
derived_property_select
=
SELECT
(property_definition,
action_property,
resource_property,
dimensional_location,
dimensional_size,
geometric_tolerance);
END_TYPE;
(*
EXPRESS specification:
*)
TYPE
shape_aspect_or_characterized_object
=
SELECT
(shape_aspect,
characterized_object);
END_TYPE;
(*
References to a shape_aspect_relationship are references to the relationship itself and not to one of the associated shape_aspect.
EXPRESS specification:
*)
TYPE
shape_definition
=
SELECT
(product_definition_shape,
shape_aspect,
shape_aspect_relationship);
END_TYPE;
(*
EXPRESS specification:
*)
TYPE
internal_or_reflected_shape_aspect
=
SELECT
(shape_aspect,
identifier);
END_TYPE;
(*
EXPRESS specification:
*)
TYPE
multi_or_next_assembly_usage_occurrence
=
SELECT
(multi_level_reference_designator,
next_assembly_usage_occurrence);
END_TYPE;
(*
NOTE 1 A characterized_object is characterized by the properties which refer to it.
NOTE 2 The properties of a characterized_object may be used as an environmental condition under which the properties of a product are measured.
EXAMPLE If a product has a set of properties that are measured within a room or an atmosphere, the room or atmosphere may be described with instances of the entity data type characterized_object.
EXPRESS specification:
*)
ENTITY characterized_object;
name : label;
description :
OPTIONAL
text;
END_ENTITY;
(*
Attribute definitions:
name: the label by which the characterized_object is known.
description: the text that characterizes the characterized_object. The value of the attribute need not be specified.
NOTE 1 The role of characterized_object_relationship can be defined in the annotated EXPRESS schemas that use or specialize this entity, or by default, in an agreement of common understanding between the partners sharing this information.
NOTE 2 Relationships represented using this entity may be parent child relationship. Annotated EXPRESS schemas that use or specialize this entity specify whether or not the relationship is directed.
NOTE 3 This entity, together with the characterized_object entity, is based on the relationship template that is described in annex E.3.
EXPRESS specification:
*)
ENTITY characterized_object_relationship;
name : label;
description :
OPTIONAL
text;
relating_object : characterized_object;
related_object : characterized_object;
END_ENTITY;
(*
Attribute definitions:
name: the label by which the characterized_object_relationship is known.
description: the text that characterizes the characterized_object_relationship. The value of the attribute need not be specified.
relating_object: one of the instances of characterized_object that is a part of the relationship.
NOTE 4 The meaning of this attribute can be defined in the annotated EXPRESS schemas that use or specialize this entity, or in an agreement of common understanding between the partners sharing this information.
related_object: the other instance of characterized_object that is a part of the relationship. If one element of the relationship is dependent upon the other, this attribute shall be the dependent one.
NOTE 5 The meaning of this attribute can be defined in the annotated EXPRESS schemas that use or specialize this entity, or in an agreement of common understanding between the partners sharing this information.
EXPRESS specification:
*)
ENTITY component_path_shape_aspect
SUBTYPE OF (shape_aspect);
location : multi_or_next_assembly_usage_occurrence;
component_shape_aspect : internal_or_reflected_shape_aspect;
UNIQUE
UR1: location, component_shape_aspect;
END_ENTITY;
(*
Attribute definitions:
location: the occurrence of a part by its next_assembly_usage_occurrence or multi_level_reference_designator.
component_shape_aspect: the locally or externally defined shape_aspect. In the case that it is externally defined, only the id of the externally defined shape_aspect is provided.
Formal propositions:
UR1: the combination of location and component_shape_aspect shall be unique.
EXPRESS specification:
*)
ENTITY constituent_shape_aspect
SUBTYPE OF (shape_aspect);
parent : shape_aspect;
DERIVE
SELF\shape_aspect.of_shape : product_definition_shape := get_product_definition_shape(SELF);
END_ENTITY;
(*
Attribute definitions:
parent: the shape_aspect of which this entity is an aspect.
of_shape: the product_definition_shape of which this entity is an aspect.
NOTE 1 An annotated Express schema can use this entity to identify a property selected in a library of properties.
NOTE 2 If needed, a general_property may be a member of a group.
EXAMPLE 1 "Kinematic viscosity", defined in ISO 31, is an example of a general_property.
EXPRESS specification:
*)
ENTITY general_property;
id : identifier;
name : label;
description :
OPTIONAL
text;
END_ENTITY;
(*
Attribute definitions:
id: the identifier that distinguishes the general_property.
NOTE 3 The meaning of this attribute can be defined in the annotated EXPRESS schemas that use or specialize this entity, or in an agreement of common understanding between the partners sharing this information.
NOTE 4 The context in which id is used as a discriminating characteristic can be identified in an annotated Express schema that uses or specializes this entity, or by default, in an agreement of common understanding between partners sharing this information.
name: the label by which the general_property is known.
EXAMPLE 2 'Kinematic viscosity' is an example of name.
description: the text that characterizes the general_property. The value of the attribute need not be specified.
EXAMPLE In order to characterize the kinematic viscosity of a fluid, an instance of general_property_association would relate an instance of general_property that defines the concept of kinematic viscosity and an instance of property_definition that defines the kinematic characteristics of an instance of product_definition defining the fluid.
EXPRESS specification:
*)
ENTITY general_property_association;
name : label;
description :
OPTIONAL
text;
base_definition : general_property;
derived_definition : derived_property_select;
WHERE
WR1: (SIZEOF(['SHAPE_DIMENSION_SCHEMA.DIMENSIONAL_LOCATION', 'SHAPE_DIMENSION_SCHEMA.DIMENSIONAL_SIZE',
'SHAPE_TOLERANCE_SCHEMA.GEOMETRIC_TOLERANCE'] * TYPEOF(derived_definition)) > 0) OR (SIZEOF(USEDIN(derived_definition,
'PRODUCT_PROPERTY_DEFINITION_SCHEMA.GENERAL_PROPERTY_ASSOCIATION.DERIVED_DEFINITION')) = 1);
WR2: (SIZEOF(['SHAPE_DIMENSION_SCHEMA.DIMENSIONAL_LOCATION', 'SHAPE_DIMENSION_SCHEMA.DIMENSIONAL_SIZE',
'SHAPE_TOLERANCE_SCHEMA.GEOMETRIC_TOLERANCE'] * TYPEOF(derived_definition)) > 0) OR (derived_definition.name
= base_definition.name);
END_ENTITY;
(*
Attribute definitions:
name: the label by which the general_property_association is known.
description: the text that characterizes the general_property_association. The value of the attribute need not be specified.
base_definition: the general_property that provides the definition of the considered characteristic.
derived_definition: the derived_property_select, for which the identification of the considered characteristic is provided by a general_property.
Formal propositions:
WR1: In the case that the derived_definition is of type property_definition, action_property or resource_property it shall be referred to by at most one general_property_association.
WR2: In the case that the derived_definition is of type property_definition, action_property or resource_property the attribute name of the derived_definition shall be the same as the attribute name of the base_definition.
NOTE 1 This entity, together with the general_property entity, is based on the relationship template that is described in annex E.3
EXPRESS specification:
*)
ENTITY general_property_relationship;
name : label;
description :
OPTIONAL
text;
relating_property : general_property;
related_property : general_property;
END_ENTITY;
(*
Attribute definitions:
name: the label by which the general_property_relationship is known.
NOTE 2 The meaning of this attribute can be defined in the annotated EXPRESS schemas that use or specialize this entity, or in an agreement of common understanding between the partners sharing this information.
description: the text that characterizes the general_property_relationship. The value of the attribute need not be specified.
relating_property: one of the instances of general_property that is a part of the relationship.
NOTE 3 The meaning of this attribute can be defined in the annotated EXPRESS schemas that use or specialize this entity, or in an agreement of common understanding between the partners sharing this information.
related_property: the other instance of general_property that is a part of the relationship. If one element of the relationship is dependent upon the other this attribute shall be the dependent one.
NOTE 4 The meaning of this attribute can be defined in the annotated EXPRESS schemas that use or specialize this entity, or in an agreement of common understanding between the partners sharing this information.
NOTE 1 A product_definition_shape need not be associated with any geometric representation.
NOTE 2 Early in the design of a product there may not be a specific idea about the shape of the product but there may be certain characteristics of the shape that are to be represented. Those product shape characteristics can be attached to the product shape using this entity.
EXAMPLE A geometric representation of shape is not needed to assert facts such as, "a shape must fit within a 5 centimetre cube".
EXPRESS specification:
*)
ENTITY product_definition_shape
SUBTYPE OF (property_definition);
UNIQUE
UR1: definition;
WHERE
WR1: SIZEOF(['PRODUCT_PROPERTY_DEFINITION_SCHEMA.CHARACTERIZED_PRODUCT_DEFINITION', 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.CHARACTERIZED_OBJECT']
* TYPEOF(SELF\property_definition.definition)) > 0;
END_ENTITY;
(*
Formal propositions:
UR1: There shall not be two instances of product_definition_shape referring to the same item.
WR1: The definition attribute shall not refer to a shape_definition.
NOTE 1 The type of the characterized item is one of the entity types that may be selected directly or indirectly with characterized_definition.
NOTE 2 The role of property_definition 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.
EXPRESS specification:
*)
ENTITY property_definition;
name : label;
description :
OPTIONAL
text;
definition : characterized_definition;
DERIVE
id : identifier := get_id_value(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF, 'BASIC_ATTRIBUTE_SCHEMA.ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1;
END_ENTITY;
(*
Attribute definitions:
name: the label by which the property_definition is known.
description: the text that characterizes the property_definition. The value of the attribute need not be specified.
definition: the item whose property is identified.
id: the identifier that distinguishes the property_definition.
NOTE 3 This attribute is an upwardly compatible addition to property_definition as specified in ISO 10303-41:1994.
NOTE 4 The meaning of this attribute can be defined in the annotated EXPRESS schemas that use or specialize this entity, or in an agreement of common understanding between the partners sharing this information.
NOTE 5 The context in which id is used as a discriminating characteristic can be identified in an annotated Express schema that uses or specializes this entity, or by default, in an agreement of common understanding between partners sharing this information.
Formal propositions:
WR1: Each property_definition shall be the identified_item in at most one id_attribute.
NOTE 6 The id_attribute data type is defined in basic_attribute_schema of this part of ISO 10303.
NOTE 7 A template for constraining the population of the entity data types defined in the basic_attribute_schema is described in annex E.
NOTE 1 A shape_aspect that is part of another shape_aspect allows decomposition of a shape_aspect.
EXAMPLE 1 Consider the product_definition_shape of a bolt. One might distinguish, as an element of this shape, the concept of the threaded portion of its shank. This portion of the shape could be specified using a shape_aspect entity so that other properties, such as surface finish, may be associated with it.
EXPRESS specification:
*)
ENTITY shape_aspect
SUPERTYPE OF (ONEOF (shape_aspect_occurrence,
component_path_shape_aspect)
ANDOR constituent_shape_aspect);
name : label;
description :
OPTIONAL
text;
of_shape : product_definition_shape;
product_definitional : LOGICAL;
DERIVE
id : identifier := get_id_value(SELF);
UNIQUE
UR1: id, of_shape;
WHERE
WR1: SIZEOF(USEDIN(SELF, 'BASIC_ATTRIBUTE_SCHEMA.ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1;
END_ENTITY;
(*
Attribute definitions:
name: the label by which the shape_aspect is known.
description: the text that characterizes the shape_aspect. The value of the attribute need not be specified.
of_shape: the product_definition_shape of which this entity is an aspect.
EXAMPLE 2 If the identified aspect is the threaded portion of a bolt's shank; this attribute would be the product_definition_shape of the bolt.
product_definitional: an indication that the shape_aspect is on the physical boundary of the product_definition_shape. If the value of this attribute is TRUE, the shape_aspect being identified is on such a boundary. If the value is FALSE, the shape_aspect being identified is not on such a boundary. If the value is UNKNOWN, it is not known whether or not the shape_aspect being identified is on such a boundary.
EXAMPLE 3 If the identified shape_aspect is the threaded portion of a bolt's shank, the value of this attribute would be TRUE. If it is the centre-line, the value would be FALSE.
id: the identifier that distinguishes the shape_aspect.
NOTE 2 This attribute is an upwardly compatible addition to shape_aspect as specified in ISO 10303-41:1994.
NOTE 3 The meaning of this attribute can be defined in the annotated EXPRESS schemas that use or specialize this entity, or in an agreement of common understanding between the partners sharing this information.
NOTE 4 The context in which id is used as a discriminating characteristic can be identified in an annotated Express schema that uses or specializes this entity, or by default, in an agreement of common understanding between partners sharing this information.
Formal propositions:
UR1: In the case that an id is provided, it shall be unique within the referenced product_definition_shape.
WR1: Each shape_aspect shall be the identified_item in at most one id_attribute.
NOTE 5 The id_attribute data type is defined in basic_attribute_schema of this part of ISO 10303.
NOTE 6 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_aspect_occurrence
SUBTYPE OF (shape_aspect);
definition : shape_aspect_or_characterized_object;
WHERE
WR1: acyclic_shape_aspect_occurrence(SELF, definition);
END_ENTITY;
(*
Attribute definitions:
definition: the shape_aspect or characterized_object that is defining this shape_aspect_occurrence.
Formal propositions:
WR1: In the case that a shape_aspect_occurrence is defined by another shape_aspect_occurrence, the graph established by the attribute definition shall not be cyclic.
NOTE 1 The role of shape_aspect_relationship can be defined in the annotated EXPRESS schemas that use or specialize this entity, or by default, in an agreement of common understanding between the partners sharing this information.
NOTE 2 If one shape_aspect is part of another, this entity could be used to associate the two shape_aspects.
NOTE 3 Each shape_aspect entity may have different properties.
NOTE 4 No actual physical relationship is established between related instances of the entity data type shape_aspect.
EXAMPLE 1 A shape_aspect_relationship might relate two instances of the entity data type shape_aspect whose representations are the equivalent surfaces of a mould and a moulded product. The shape of the mould is not spatially related to the moulded product.
NOTE 5 Relationships represented using this entity may be parent child relationship. Annotated EXPRESS schemas that use or specialize this entity specify whether or not the relationship is directed.
NOTE 6 This entity, together with the shape_aspect entity, is based on the relationship template that is described in annex E.3.
EXPRESS specification:
*)
ENTITY shape_aspect_relationship;
name : label;
description :
OPTIONAL
text;
relating_shape_aspect : shape_aspect;
related_shape_aspect : shape_aspect;
DERIVE
id : identifier := get_id_value(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF, 'BASIC_ATTRIBUTE_SCHEMA.ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1;
END_ENTITY;
(*
Attribute definitions:
name: the label by which the shape_aspect_relationship is known.
description: the text that characterizes the shape_aspect_relationship. The value of the attribute need not be specified.
relating_shape_aspect: one of the instances of shape_aspect that is a part of the relationship.
NOTE 7 The meaning of this attribute can be defined in the annotated EXPRESS schemas that use or specialize this entity, or in an agreement of common understanding between the partners sharing this information.
EXAMPLE 2 A shape_aspect with five faces would play the role of relating_shape_aspect in five instances of the entity data type shape_aspect_relationship: one per face.
related_shape_aspect: the other instance of shape_aspect that is a part of the relationship. If one element of the relationship is dependent upon the other, this attribute shall be the dependent one.
NOTE 8 The meaning of this attribute can be defined in the annotated EXPRESS schemas that use or specialize this entity, or in an agreement of common understanding between the partners sharing this information.
id: the identifier that distinguishes the shape_aspect_relationship.
NOTE 9 This attribute is an upwardly compatible addition to shape_aspect_relationship as specified in ISO 10303-41:1994.
NOTE 10 The meaning of this attribute can be defined in the annotated EXPRESS schemas that use or specialize this entity, or in an agreement of common understanding between the partners sharing this information.
NOTE 11 The context in which id is used as a discriminating characteristic can be identified in an annotated Express schema that uses or specializes this entity, or by default, in an agreement of common understanding between partners sharing this information.
Formal propositions:
WR1: Each shape_aspect_relationship shall be the identified_item in at most one id_attribute.
NOTE 12 The id_attribute data type is defined in basic_attribute_schema of this part of ISO 10303.
NOTE 13 A template for constraining the population of the entity data types defined in the basic_attribute_schema is described in annex E.
The function returns TRUE if no cycle has been detected. Otherwise it returns FALSE.
NOTE 1 The algorithm of the function is explained in annex E.2.
NOTE 2 This function is not used in this schema. It is defined here because other ISO 10303 integrated resources and application protocols that use the characterized_object_relationship entity include rules that use this function.
EXPRESS specification:
*)
FUNCTION acyclic_characterized_object_relationship (relation : characterized_object_relationship; relatives : SET[1:?] OF characterized_object; specific_relation : STRING) : BOOLEAN;
LOCAL x : SET OF characterized_object_relationship; END_LOCAL; IF relation.relating_object IN relatives THEN RETURN(FALSE); END_IF; x := QUERY(ca <* bag_to_set(USEDIN(relation.relating_object, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.CHARACTERIZED_OBJECT_RELATIONSHIP.RELATED_OBJECT')) | specific_relation IN TYPEOF(ca)); REPEAT i := 1 TO HIINDEX(x); IF NOT acyclic_characterized_object_relationship(x[i], relatives + relation.relating_object, specific_relation) THEN RETURN(FALSE); END_IF; END_REPEAT; RETURN(TRUE);
END_FUNCTION;
(*
Argument definitions:
relation: (input) the candidate characterized_object_relationship to be checked.
relatives: (input) the set of instances of the entity data type characterized_object that the function is searching for in the relating_object parameter of the relation argument.
specific_relation: (input) the fully qualified entity name of a type of characterized_object_relationship entity.
The function returns TRUE if no cycle has been detected. Otherwise it returns FALSE.
NOTE 1 The algorithm of the function is explained in annex E.2.
NOTE 2 This function is not used in this schema. It is defined here because other ISO 10303 integrated resources and application protocols that use the general_property_relationship entity include rules that use this function.
EXPRESS specification:
*)
FUNCTION acyclic_general_property_relationship (relation : general_property_relationship; relatives : SET[1:?] OF general_property; specific_relation : STRING) : BOOLEAN;
LOCAL x : SET OF general_property_relationship; END_LOCAL; IF relation.relating_property IN relatives THEN RETURN(FALSE); END_IF; x := QUERY(genp <* bag_to_set(USEDIN(relation.relating_property, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.GENERAL_PROPERTY_RELATIONSHIP.RELATED_PROPERTY')) | specific_relation IN TYPEOF(genp)); REPEAT i := 1 TO HIINDEX(x); IF NOT acyclic_general_property_relationship(x[i], relatives + relation.relating_property, specific_relation) THEN RETURN(FALSE); END_IF; END_REPEAT; RETURN(TRUE);
END_FUNCTION;
(*
Argument definitions:
relation: (input) the candidate general_property_relationship to be checked.
relatives: (input) the set of instances of the entity data type general_property that the function is searching for in the relating_property parameter of the relation argument.
specific_relation: (input) the fully qualified entity name of a type of general_property_relationship entity.
The function returns TRUE if no cycle has been detected. Otherwise it returns FALSE.
NOTE 1 The algorithm of the function is explained in annex E.2.
EXPRESS specification:
*)
FUNCTION acyclic_shape_aspect_occurrence (sao : shape_aspect_occurrence; definition : shape_aspect_or_characterized_object) : BOOLEAN;
IF NOT (('PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_OCCURRENCE') IN TYPEOF(definition)) THEN RETURN(TRUE); END_IF; IF (definition :=: sao) THEN RETURN(FALSE); ELSE RETURN(acyclic_shape_aspect_occurrence(sao, definition\shape_aspect_occurrence.definition)); END_IF;
END_FUNCTION;
(*
Argument definitions:
sao: (input) the candidate shape_aspect_occurrence to be checked.
definition: (input) the candidate shape_aspect_or_characterized_object to be checked.
The function returns TRUE if no cycle has been detected. Otherwise it returns FALSE.
NOTE 1 The algorithm of the function is explained in annex E.2.
NOTE 2 This function is not used in this schema. It is defined here because other ISO 10303 integrated resources and application protocols that use the shape_aspect_relationship entity include rules that use this function.
EXPRESS specification:
*)
FUNCTION acyclic_shape_aspect_relationship (relation : shape_aspect_relationship; relatives : SET[1:?] OF shape_aspect; specific_relation : STRING) : BOOLEAN;
LOCAL x : SET OF shape_aspect_relationship; END_LOCAL; IF relation.relating_shape_aspect IN relatives THEN RETURN(FALSE); END_IF; x := QUERY(sa <* bag_to_set(USEDIN(relation.relating_shape_aspect, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')) | specific_relation IN TYPEOF(sa)); REPEAT i := 1 TO HIINDEX(x); IF NOT acyclic_shape_aspect_relationship(x[i], relatives + relation.relating_shape_aspect, specific_relation) THEN RETURN(FALSE); END_IF; END_REPEAT; RETURN(TRUE);
END_FUNCTION;
(*
Argument definitions:
relation: (input) the candidate shape_aspect_relationship to be checked.
relatives: (input) the set of instances of the entity data type shape_aspect that the function is searching for in the relating_shape_aspect parameter of the relation argument.
specific_relation: (input) the fully qualified name of a subtype of the shape_aspect_relationship entity.
EXPRESS specification:
*)
FUNCTION get_product_definition_shape (current : constituent_shape_aspect) : product_definition_shape;
REPEAT WHILE ('PRODUCT_DEFINITION_SCHEMA.CONSTITUENT_SHAPE_ASPECT' IN TYPEOF(current.parent)); current := current.parent; END_REPEAT; RETURN(current.parent\shape_aspect.of_shape);
END_FUNCTION;
(*
Argument definitions:
current: (input) the constituent_shape_aspect that is the basis for the function.
NOTE This function is not used in this schema.
EXPRESS specification:
*)
FUNCTION get_shape_aspects (c_def_instance : characterized_definition) : SET OF shape_aspect;
LOCAL pd_set : SET OF product_definition_shape := []; pdr_set : SET OF shape_aspect := []; END_LOCAL; pd_set := bag_to_set(QUERY(pd <* USEDIN(c_def_instance, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd))); 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_DEFINITION_SCHEMA.SHAPE_ASPECT.OF_SHAPE')); END_REPEAT; RETURN(pdr_set);
END_FUNCTION;
(*
Argument definitions:
c_def_instance: (input) the candidate characterized_definition to be checked.
*)
END_SCHEMA; -- product_property_definition_schema
(*
© ISO 2021 — All rights reserved