Application module: Part occurrence | ISO/TS 10303-1715:2008(E) © ISO |
This clause specifies the EXPRESS schema derived from the mapping table. It uses elements from the common resources or from other application modules and defines the EXPRESS constructs that are specific to this part of ISO 10303.
This clause constitutes the Module Interpreted Module (MIM) of the application module.
This clause also specifies the modifications that apply to the constructs imported from the common resources.
The following restrictions apply to the use, in this schema, of constructs defined in common resources or in application modules:
*)
SCHEMA Part_occurrence_mim;
USE FROM
Assembly_structure_mim;
--
ISO/TS 10303-1026
USE FROM
Generic_product_occurrence_mim;
--
ISO/TS 10303-1762
USE FROM
Part_view_definition_mim;
--
ISO/TS 10303-1023
USE FROM
product_definition_schema
--
ISO 10303-41
(product_definition_relationship);
USE FROM
product_property_definition_schema
--
ISO 10303-41
(characterized_product_definition,
property_definition);
USE FROM
product_property_representation_schema
--
ISO 10303-41
(property_definition_representation);
USE FROM
product_structure_schema
--
ISO 10303-44
(product_definition_occurrence_relationship,
quantified_assembly_component_usage);
REFERENCE FROM
support_resource_schema
--
ISO 10303-41
(bag_to_set);
(*
NOTE 1 The schemas referenced above are specified in the following part of ISO 10303:
Assembly_structure_mim ISO/TS 10303-1026 Generic_product_occurrence_mim ISO/TS 10303-1762 Part_view_definition_mim ISO/TS 10303-1023 product_definition_schema ISO 10303-41 product_property_definition_schema ISO 10303-41 product_property_representation_schema ISO 10303-41 product_structure_schema ISO 10303-44 support_resource_schema ISO 10303-41
NOTE 2 See Annex D, Figures D.1and D.2 for a graphical representation of this schema.
This subclause specifies the MIM type for this application module. The MIM type and definition is specified below.
The product_definition_or_assembly_relationship type allows for the designation of the data types assembly_component_usage and product_definition.
EXPRESS specification:
*)
TYPE
product_definition_or_assembly_relationship =
SELECT
(assembly_component_usage,
product_definition);
END_TYPE;
(*
This subclause specifies the MIM function for this module. The MIM function and definition is specified below.
It then returns FALSE if this "property definition" is not associated with a single "representation" with name 'selection criteria'. It then returns FALSE if this representation has not one or two items. It then returns FALSE if this representation does not contain exactly one item, with name 'selection quantity', that is of type "measure representation" or "value range". It then returns FALSE if this representation contains more than one item, named 'selection control' that is of type "descriptive representation item". It then returns FALSE if the selection quantity item is not of type "value range" or "qualified representation item/measure representation item" when the selection control item is not specified.
If all these constraints are met, then the function returns TRUE.EXPRESS specification:
*)
FUNCTION valid_selected_instance_representation (pd : product_definition_or_assembly_relationship) :LOGICAL;
LOCAL properties: SET OF property_definition := bag_to_set(QUERY( prd<* USEDIN ( pd ,'PART_OCCURRENCE_MIM.PROPERTY_DEFINITION.DEFINITION' ) | (prd.name = 'occurrence selection' ))); property_definition_representations: SET OF property_definition_representation := bag_to_set(QUERY ( pdr <* USEDIN ( properties[1] , 'PART_OCCURRENCE_MIM.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ( pdr.used_representation.name = 'selection criteria' ))); selected_representation: representation; END_LOCAL; IF (SIZEOF( properties)<>1) THEN RETURN(FALSE); END_IF; IF (SIZEOF(property_definition_representations)<>1) THEN RETURN(FALSE); END_IF; selected_representation := property_definition_representations[1]\property_definition_representation.used_representation; IF (SIZEOF(selected_representation\representation.items) <1) OR (SIZEOF(selected_representation\representation.items) >2) THEN RETURN(FALSE); END_IF; IF (SIZEOF ( QUERY ( i <* selected_representation\representation.items | ( SIZEOF (['PART_OCCURRENCE_MIM.MEASURE_REPRESENTATION_ITEM' , 'PART_OCCURRENCE_MIM.VALUE_RANGE']* TYPEOF ( i ) ) = 1) AND ( i.name = 'selection quantity' ))) <> 1 ) THEN RETURN(FALSE); END_IF; IF (SIZEOF ( QUERY ( i <* selected_representation\representation.items | ( 'PART_OCCURRENCE_MIM.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF ( i ) ) AND ( i.name = 'selection control' )))> 1) THEN RETURN(FALSE); END_IF; --the selection control is not specified then the quantity shall be a qualified_representation_item or a value_range IF (SIZEOF ( QUERY ( i <* selected_representation\representation.items | ( 'PART_OCCURRENCE_MIM.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF( i ) ) AND ( i.name = 'selection control' ) ))= 0) AND (SIZEOF ( QUERY ( i <* selected_representation\representation.items | ( i.name = 'selection quantity' ) AND ( SIZEOF(['PART_OCCURRENCE_MIM.QUALIFIED_REPRESENTATION_ITEM' , 'PART_OCCURRENCE_MIM.VALUE_RANGE']* TYPEOF ( i ) ) =0 ))) > 0 ) THEN RETURN(FALSE); END_IF; RETURN(TRUE);
END_FUNCTION;
(*
Argument definitions:
pd: the product_definition or the assembly_component_usage that is assessed.
This subclause specifies the MIM rules for this module. The MIM rules and definitions are specified below.
EXPRESS specification:
*)
RULE restrict_part_occurrence FOR
(product_definition);
LOCAL part_occurrences: SET OF product_definition := QUERY(pd <* product_definition | ( pd.frame_of_reference.name = 'part occurrence' )); END_LOCAL;
WHERE
WR1: SIZEOF ( QUERY ( pd <* part_occurrences |
( NOT( pd.name IN
['single instance' , 'selected instance' ,'quantified instance' , 'specified instance' ] ) ) ) ) = 0;
WR2: SIZEOF ( QUERY ( pd <* part_occurrences |
(SIZEOF ( QUERY ( pdr <* USEDIN ( pd ,
'PART_OCCURRENCE_MIM.' + 'PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION' ) |
pdr.name = 'definition usage' ) ) <>1 ) AND
( SIZEOF ( QUERY ( cd <* USEDIN ( pd , 'PART_OCCURRENCE_MIM.' + 'CONFIGURATION_DESIGN.DESIGN' ) |
( cd.name = 'occurrence usage definition' ) AND
( NOT ('PART_OCCURRENCE_MIM.' + 'PRODUCT_IDENTIFICATION' IN TYPEOF( cd.configuration ) ) ) ) ) <>1 ) ) ) = 0;
WR3: SIZEOF ( QUERY ( pd <* part_occurrences |
(SIZEOF ( QUERY ( cd <* USEDIN ( pd , 'PART_OCCURRENCE_MIM.'+ 'PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION'
) |
( 'PART_OCCURRENCE_MIM.' +'PRODUCT_DEFINITION_USAGE' IN TYPEOF ( cd ) ) ) ) = 0 )AND
( SIZEOF ( USEDIN ( pd , 'PART_OCCURRENCE_MIM.' + 'PRODUCT_DEFINITION_OCCURRENCE_RELATIONSHIP.OCCURRENCE' ) ) = 0 ) ) ) =
0;
WR4: SIZEOF ( QUERY ( pd <* part_occurrences |
( pd.name = 'selected instance' ) AND
NOT valid_selected_instance_representation(pd) ))=0;
WR5: SIZEOF ( QUERY ( pd <* part_occurrences |
( pd.name = 'quantified instance' ) AND
( SIZEOF ( QUERY (ppd <* USEDIN ( pd , 'PART_OCCURRENCE_MIM.' +'PROPERTY_DEFINITION.DEFINITION' ) |
( ppd.name ='occurrence quantity' ) AND
( SIZEOF ( QUERY ( pdr <*USEDIN ( ppd , 'PART_OCCURRENCE_MIM.' +'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION' ) | (
pdr.used_representation.name = 'quantity' ) AND
(SIZEOF ( pdr.used_representation.items ) = 1 ) AND
(SIZEOF ( QUERY ( i <* pdr.used_representation.items |
('PART_OCCURRENCE_MIM.' + 'MEASURE_REPRESENTATION_ITEM' IN TYPEOF ( i ) ) AND
( i.name = 'quantity measure' ) ) ) = 1)))= 1 )))= 0 )))= 0;
WR6: SIZEOF ( QUERY ( pd <* part_occurrences |
( pd.name = 'specified instance' ) AND
( SIZEOF ( QUERY (
pdor <* USEDIN ( pd , 'PART_OCCURRENCE_MIM.' +'PRODUCT_DEFINITION_OCCURRENCE_RELATIONSHIP.OCCURRENCE' ) |
'PART_OCCURRENCE_MIM.' +'SPECIFIED_HIGHER_USAGE_OCCURRENCE' IN TYPEOF ( pdor.occurrence_usage ) ) ) = 0 ) ) ) = 0;
END_RULE;
(*
Argument definitions:
product_definition : the set of all instances of product_definition.
Formal propositions:
WR1: Each instance of product_definition which references as its "frame of reference" a product_definition_context with a name of 'part occurrence', shall either have a name of 'single instance', 'selected instance', 'quantified instance', or 'specified instance'.
WR2: Each instance of product_definition which references as its "frame of reference" a product_definition_context with a name of 'part occurrence', shall either participate as the "related product definition" in exactly one product_definition_relationship with a name of 'definition usage', or shall be referenced as design by exactly one configuration_design which has a name of 'occurrence usage definition' and which references as configuration a product_identification.
WR3: Each instance of product_definition which references as its "frame of reference" a product_definition_context with a name of 'part occurrence' shall, at least, participate in a product_definition_usage relationship as the "related product definition" or in a product_definition_occurrence_relationship as occurrence.
WR4: Each instance of product_definition which references as its "frame of reference" a product_definition_context with a name of 'part occurrence' and which has a name of 'selected instance', shall have a valid associated representation.
WR5: Each instance of product_definition which references as its "frame of reference" a product_definition_context with a name of 'part occurrence' and which has a name of 'quantified instance', shall be referenced by a property_definition which has a name of 'occurrence quantity', and which is referenced as definition by a property_definition_representation which has as "used representation" a representation which has a name of 'quantity' and which contains exactly one representation_item in its set of items. This representation_items is of type measure_representation_item and has a name of 'quantity measure'.
WR6: Each instance of product_definition which references as its "frame of reference" a product_definition_context with a name of 'part occurrence' and which has a name of 'specified instance', shall be referenced as occurrence by a product_definition_occurrence_relationship which references as "occurrence usage" a specified_higher_usage_occurrence.
EXPRESS specification:
*)
RULE restrict_part_occurrence_category FOR
(product_definition);
LOCAL part_occurrences: SET OF product_definition := QUERY( pd <* product_definition |( pd.frame_of_reference.name = 'part occurrence')); END_LOCAL;
WHERE
WR1: SIZEOF( QUERY( pd <* part_occurrences |
(SIZEOF( QUERY( prpc <* USEDIN(pd.formation.of_product, 'PART_OCCURRENCE_MIM.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') |
prpc.name IN ['part','raw material','tool'] )) = 0 ) )) = 0;
END_RULE;
(*
Argument definitions:
product_definition : the set of all instances of product_definition.
Formal propositions:
WR1: Each instance of product_definiton which references as its "frame of reference" a product_definition_context with a name of 'part occurrence' refer to a product_definition that refers as formation to a product_definition_formation that refers as "of product" to a product that is contained in the set of products of a product_related_product_category with a name of either 'part', 'raw material' or 'tool'.
The name of the relating product_definition shall be 'part definition'.
The name of the related product_definition shall be 'part occurrence'.
EXPRESS specification:
*)
RULE restrict_product_definitions_for_definition_usage FOR
(product_definition_relationship);
WHERE
WR1: SIZEOF ( QUERY ( pdr <* product_definition_relationship |
( pdr.name = 'definition usage' ) AND
( ( pdr.relating_product_definition.frame_of_reference.name<> 'part definition' ) OR
( pdr.related_product_definition.frame_of_reference.name<>'part occurrence' )))) =0;
END_RULE;
(*
Argument definitions:
product_definition_relationship : the set of all instances of product_definition_relationship.
Formal propositions:
WR1: There shall not be any instance of product_definition_relationship with name 'definition usage', for which the name of the related instances of product_definition does not match the constraint mentioned above.
EXPRESS specification:
*)
RULE selected_instance_usage_requires_representation FOR
(assembly_component_usage);
LOCAL selected_instance_usages: SET OF assembly_component_usage := QUERY( acr <* assembly_component_usage| (acr.name = 'selected instance usage')); END_LOCAL;
WHERE
WR1: SIZEOF ( QUERY ( acr <* selected_instance_usages |
NOT valid_selected_instance_representation(acr) ))=0;
END_RULE;
(*
Argument definitions:
assembly_component_usage : the set of all instances of assembly_component_usage.
Formal propositions:
WR1: There shall not be any instance of assembly_component_usage with name 'selected instance usage' that has not a valid associated representation.
*)
END_SCHEMA; -- Part_occurrence_mim
(*
© ISO 2008 — All rights reserved