Application module: Product occurrence ISO/TS 10303-1063:2018-11(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 Information requirements
   4.1 Required AM ARMs
   4.2 ARM type definition
   4.3 ARM entity definitions
5 Module interpreted model
   5.1 Mapping specification
   5.2 MIM EXPRESS short listing
     5.2.1 MIM type definition
     5.2.2 MIM function definition
     5.2.3 MIM rule definitions

A MIM short names
B Information object registration
C ARM EXPRESS-G   EXPRESS-G
D MIM EXPRESS-G   EXPRESS-G
E Computer interpretable listings
F Change history
Bibliography
Index

5.2 MIM EXPRESS short listing

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:

Short names of entities defined in this schema are described in Annex A. Unambiguous identification of this schema is defined in Annex B.

EXPRESS specification:

*)
SCHEMA Product_occurrence_mim;

USE FROM Assembly_structure_mim;    --  ISO/TS 10303-1026

USE FROM Product_view_definition_relationship_mim;    --  ISO/TS 10303-1041

USE FROM Extended_measure_representation_mim;    --  ISO/TS 10303-1106

USE FROM Specified_product_mim;    --  ISO/TS 10303-1104

USE FROM Part_view_definition_mim;    --  ISO/TS 10303-1023

USE FROM product_structure_schema    --  ISO 10303-44
  (product_definition_occurrence,
   product_definition_occurrence_relationship,
   product_definition_specified_occurrence,
   product_definition_occurrence_reference,
   product_definition_occurrence_reference_with_local_representation,
   quantified_assembly_component_usage);

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);

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
Product_view_definition_relationship_mim ISO/TS 10303-1041
Extended_measure_representation_mim ISO/TS 10303-1106
Specified_product_mim ISO/TS 10303-1104
Part_view_definition_mim ISO/TS 10303-1023
product_structure_schema ISO 10303-44
product_definition_schema ISO 10303-41
product_property_definition_schema ISO 10303-41
product_property_representation_schema ISO 10303-41
support_resource_schema ISO 10303-41

NOTE 2   See Annex D, Figures D.1and D.2 for a graphical representation of this schema.

5.2.1 MIM type definition

This subclause specifies the MIM type for this application module. The MIM type and definition is specified below.

5.2.1.1 product_definition_or_assembly_relationship   EXPRESS-G

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;
(*

5.2.2 MIM function definition

This subclause specifies the MIM function for this module. The MIM function and definition is specified below.

5.2.2.1 valid_selected_instance_representation

The valid_selected_instance_representation function returns FALSE if an instance of product_definition or of assembly_component_usage that represents an ARM "Selected instance" is not referred to by a single product_definition with name 'occurrence selection'.

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 ,'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION' ) | 
        (prd.name = 'occurrence selection' )));
      property_definition_representations: SET OF property_definition_representation := bag_to_set(QUERY ( pdr <* USEDIN ( properties[1] , 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.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 (['QUALIFIED_MEASURE_SCHEMA.MEASURE_REPRESENTATION_ITEM' ,
      'EXTENDED_MEASURE_REPRESENTATION_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 |
	  ( 'QUALIFIED_MEASURE_SCHEMA.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 |
      ( 'QUALIFIED_MEASURE_SCHEMA.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(['QUALIFIED_MEASURE_SCHEMA.QUALIFIED_REPRESENTATION_ITEM' ,
      'EXTENDED_MEASURE_REPRESENTATION_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.

5.2.3 MIM rule definitions

This subclause specifies the MIM rules for this module. The MIM rules and definitions are specified below.

5.2.3.1 restrict_part_occurrence

The restrict_part_occurrence rule specifies the restrictions that apply to the instances of the product_definition entity data type which reference as "frame of reference" a product_definition_context with a "name" of "part occurrence".

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 , 'PRODUCT_DEFINITION_SCHEMA.' + 'PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION' ) | pdr.name = 'definition usage' ) ) <>1 ) AND ( SIZEOF ( QUERY ( cd <* USEDIN ( pd , 'CONFIGURATION_MANAGEMENT_SCHEMA.' + 'CONFIGURATION_DESIGN.DESIGN' ) | ( cd.name = 'occurrence usage definition' ) AND ( NOT ('SPECIFIED_PRODUCT_MIM.' + 'PRODUCT_IDENTIFICATION' IN TYPEOF( cd.configuration ) ) ) ) ) <>1 ) ) ) = 0;
  WR3: SIZEOF ( QUERY ( pd <* part_occurrences | (SIZEOF ( QUERY ( cd <* USEDIN ( pd , 'PRODUCT_DEFINITION_SCHEMA.'+ 'PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION' ) | ( 'PRODUCT_STRUCTURE_SCHEMA.' +'PRODUCT_DEFINITION_USAGE' IN TYPEOF ( cd ) ) ) ) = 0 )AND ( SIZEOF ( USEDIN ( pd , 'PRODUCT_STRUCTURE_SCHEMA.' + '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 , 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.' +'PROPERTY_DEFINITION.DEFINITION' ) | ( ppd.name ='occurrence quantity' ) AND ( SIZEOF ( QUERY ( pdr <*USEDIN ( ppd , 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.' +'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION' ) | ( pdr.used_representation.name = 'quantity' ) AND (SIZEOF ( pdr.used_representation.items ) = 1 ) AND (SIZEOF ( QUERY ( i <* pdr.used_representation.items | ('QUALIFIED_MEASURE_SCHEMA.' + '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 , 'PRODUCT_STRUCTURE_SCHEMA.' +'PRODUCT_DEFINITION_OCCURRENCE_RELATIONSHIP.OCCURRENCE' ) | 'PRODUCT_STRUCTURE_SCHEMA.' +'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.

5.2.3.2 restrict_part_occurrence_category

The restrict_part_occurrence_category rule specifies the restrictions that apply to the instances of the product_definition entity data type which reference as "frame of reference" a product_definition_context with "name" 'part 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, 'PRODUCT_DEFINITION_SCHEMA.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'.

5.2.3.3 restrict_product_definitions_for_definition_usage

The restrict_product_definitions_for_definition_usage rule restricts the name of instances of product_definition when they are related by a product_definition_relationship with name 'definition usage'.

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.

5.2.3.4 selected_instance_usage_requires_representation

The selected_instance_usage_requires_representation constrains any instance of "assembly component usage" with name 'selected instance usage' to have a valid associated representation.

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;  -- Product_occurrence_mim
(*


© ISO 2018 — All rights reserved