(*
   $Id$
   ISO TC184/SC4/WG12 N3916 - ISO/TS 10303-1656 Component grouping - EXPRESS MIM
   Supersedes ISO TC184/SC4/WG12 N3328
*)
SCHEMA Component_grouping_mim;

	USE FROM Interface_component_mim;	-- ISO/TS 10303-1691
    REFERENCE FROM product_definition_schema
    (acyclic_product_definition_relationship);



ENTITY array_placement_group
  SUPERTYPE OF (ONEOF(linear_array_placement_group_component,
                      rectangular_array_placement_group_component))
  SUBTYPE OF (assembly_group_component);
END_ENTITY;

ENTITY assembly_group_component
  SUBTYPE OF (assembly_component);
END_ENTITY;

ENTITY assembly_group_component_definition_placement_link
  SUBTYPE OF (product_definition,product_definition_relationship);
   SELF\product_definition_relationship.relating_product_definition : assembly_component;  
   SELF\product_definition_relationship.related_product_definition  : assembly_component;
WHERE
  WR1: SELF\product_definition_relationship.related_product_definition :<>:
       SELF\product_definition_relationship.relating_product_definition;
  WR2: acyclic_product_definition_relationship (SELF,
      [SELF\product_definition_relationship.related_product_definition],
      'COMPONENT_GROUPING_MIM.ASSEMBLY_GROUP_COMPONENT_DEFINITION_PLACEMENT_LINK');
END_ENTITY; 

ENTITY interfaced_group_component
  SUBTYPE OF (assembly_group_component);
END_ENTITY;

ENTITY linear_array_component_definition_link
  SUBTYPE OF (product_definition,product_definition_relationship);
    SELF\product_definition_relationship.relating_product_definition : linear_array_placement_group_component;  
    SELF\product_definition_relationship.related_product_definition : linear_array_placement_group_component;
WHERE
  WR1: SELF\product_definition_relationship.related_product_definition :<>:
       SELF\product_definition_relationship.relating_product_definition;
  WR2: acyclic_product_definition_relationship (SELF,
      [SELF\product_definition_relationship.related_product_definition],
      'COMPONENT_GROUPING_MIM.LINEAR_ARRAY_COMPONENT_DEFINITION_LINK');       
END_ENTITY; 

ENTITY linear_array_placement_group_component
  SUBTYPE OF (array_placement_group);
END_ENTITY;

ENTITY rectangular_array_placement_group_component
  SUBTYPE OF (array_placement_group);
END_ENTITY;

END_SCHEMA;

