(*
 $Id$
 ISO TC184/SC4/WG3 N1563 - ISO/TS 10303-1292 AP239 product definition information - EXPRESS MIM
 Supersedes ISO TC184/SC4/WG3 N1391
*) 


SCHEMA Ap239_product_definition_information_mim;

USE FROM Alias_identification_mim;    -- ISO/TS 10303-1025

USE FROM Ap239_part_definition_information_mim;    -- ISO/TS 10303-1293

USE FROM Approval_mim;    -- ISO/TS 10303-1012

USE FROM approval_schema   -- ISO 10303-41
  (approval); 

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

USE FROM Attachment_slot_mim;    -- ISO/TS 10303-1250

USE FROM Attribute_classification_mim;    -- ISO/TS 10303-1246

USE FROM Certification_mim;    -- ISO/TS 10303-1044

USE FROM Classification_assignment_mim;    -- ISO/TS 10303-1114

USE FROM Condition_evaluation_mim;    -- ISO/TS 10303-1254

USE FROM Condition_mim;    -- ISO/TS 10303-1253

USE FROM Configuration_effectivity_mim;    -- ISO/TS 10303-1058

USE FROM Configuration_item_mim;    -- ISO/TS 10303-1056

USE FROM configuration_management_schema   -- ISO 10303-44
  (configuration_design,
   configuration_effectivity,
   configuration_item); 

USE FROM Contract_mim;    -- ISO/TS 10303-1062

USE FROM contract_schema   -- ISO 10303-41
  (contract); 

USE FROM Date_time_assignment_mim;    -- ISO/TS 10303-1014

USE FROM Document_and_version_identification_mim;    -- ISO/TS 10303-1121

USE FROM Document_assignment_mim;    -- ISO/TS 10303-1122

USE FROM Document_definition_mim;    -- ISO/TS 10303-1123

USE FROM document_schema   -- ISO 10303-41
  (document_relationship,
   document_type); 

USE FROM Document_structure_mim;    -- ISO/TS 10303-1124

USE FROM Effectivity_application_mim;    -- ISO/TS 10303-1059

USE FROM Effectivity_mim;    -- ISO/TS 10303-1057

USE FROM effectivity_schema   -- ISO 10303-41
  (effectivity); 

USE FROM External_item_identification_assignment_mim;    -- ISO/TS 10303-1128

USE FROM File_identification_mim;    -- ISO/TS 10303-1127

USE FROM Functional_breakdown_mim;    -- ISO/TS 10303-1216

USE FROM Hybrid_breakdown_mim;    -- ISO/TS 10303-1218

USE FROM Identification_assignment_mim;    -- ISO/TS 10303-1021

USE FROM Information_rights_mim;    -- ISO/TS 10303-1241

USE FROM Interface_lifecycle_mim;    -- ISO/TS 10303-1294

USE FROM Interface_mim;    -- ISO/TS 10303-1251

USE FROM Multi_linguism_mim;    -- ISO/TS 10303-1105

USE FROM Part_and_version_identification_mim;    -- ISO/TS 10303-1022

USE FROM Part_definition_relationship_mim;    -- ISO/TS 10303-1055

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

USE FROM Person_organization_assignment_mim;    -- ISO/TS 10303-1013

USE FROM Person_organization_mim;    -- ISO/TS 10303-1011

USE FROM person_organization_schema   -- ISO 10303-41
  (organizational_address,
   organizational_project); 

USE FROM Physical_breakdown_mim;    -- ISO/TS 10303-1215

USE FROM Product_as_individual_mim;    -- ISO/TS 10303-1164

USE FROM Product_breakdown_mim;    -- ISO/TS 10303-1248

USE FROM Product_concept_identification_mim;    -- ISO/TS 10303-1060

USE FROM product_concept_schema   -- ISO 10303-44
  (product_concept); 

USE FROM product_definition_schema   -- ISO 10303-41
  (product,
   product_definition,
   product_definition_formation,
   product_definition_formation_relationship,
   product_definition_relationship,
   product_relationship); 

USE FROM Product_identification_mim;    -- ISO/TS 10303-1017

USE FROM product_property_definition_schema   -- ISO 10303-41
  (characterized_object,
   product_definition_shape,
   property_definition,
   shape_aspect,
   shape_aspect_relationship); 

USE FROM Product_relationship_mim;    -- ISO/TS 10303-1024

USE FROM Product_replacement_mim;    -- ISO/TS 10303-1046

USE FROM Product_structure_mim;    -- ISO/TS 10303-1134

USE FROM product_structure_schema   -- ISO 10303-44
  (alternate_product_relationship,
   assembly_component_usage,
   assembly_component_usage_substitute,
   make_from_usage_option); 

USE FROM Product_version_mim;    -- ISO/TS 10303-1018

USE FROM Product_version_relationship_mim;    -- ISO/TS 10303-1020

USE FROM Product_view_definition_mim;    -- ISO/TS 10303-1019

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

USE FROM Project_mim;    -- ISO/TS 10303-1061

USE FROM Property_assignment_mim;    -- ISO/TS 10303-1030

USE FROM Requirement_assignment_mim;    -- ISO/TS 10303-1233

USE FROM Requirement_identification_and_version_mim;    -- ISO/TS 10303-1140

USE FROM Requirement_view_definition_mim;    -- ISO/TS 10303-1141

USE FROM Requirement_view_definition_relationship_mim;    -- ISO/TS 10303-1142

USE FROM Security_classification_mim;    -- ISO/TS 10303-1015

USE FROM Selected_item_mim;    -- ISO/TS 10303-1357

USE FROM Shape_property_assignment_mim;    -- ISO/TS 10303-1032

USE FROM State_definition_mim;    -- ISO/TS 10303-1255

USE FROM State_observed_mim;    -- ISO/TS 10303-1256

USE FROM System_breakdown_mim;    -- ISO/TS 10303-1214

USE FROM Zonal_breakdown_mim;    -- ISO/TS 10303-1217


TYPE ap239_prdi_aliasable_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON aliasable_item WITH 
   (configuration_item, 
    product, 
    product_definition, 
    product_definition_formation, 
    product_definition_relationship, 
    product_definition_shape, 
    product_relationship, 
    shape_aspect_relationship);
END_TYPE; 

TYPE ap239_prdi_approval_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON approval_item WITH 
   (alternate_product_relationship, 
    assembly_component_usage, 
    assembly_component_usage_substitute, 
    attachment_slot_as_planned, 
    attachment_slot_as_realized, 
    attachment_slot_design, 
    attachment_slot_design_to_planned, 
    attachment_slot_design_to_realized, 
    attachment_slot_on_product, 
    attachment_slot_planned_to_realized, 
    breakdown_element_group_assignment, 
    breakdown_element_usage, 
    configuration_item, 
    effectivity, 
    in_zone, 
    product, 
    product_definition, 
    product_definition_element_relationship, 
    product_definition_formation, 
    product_definition_group_assignment, 
    product_in_attachment_slot, 
    product_relationship, 
    selected_item_assignment);
END_TYPE; 

TYPE ap239_prdi_attribute_classification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON attribute_classification_item WITH 
   (alternate_product_relationship, 
    breakdown_context, 
    breakdown_element_group_assignment, 
    breakdown_element_usage, 
    product_definition_group_assignment, 
    product_relationship);
END_TYPE; 

TYPE ap239_prdi_certification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON certification_item WITH 
   (configuration_item, 
    product, 
    product_definition_relationship);
END_TYPE; 

TYPE ap239_prdi_classification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON classification_item WITH 
   (alternate_product_relationship, 
    assembly_component_usage_substitute, 
    attachment_slot_design_to_planned, 
    attachment_slot_design_to_realized, 
    attachment_slot_on_product, 
    attachment_slot_planned_to_realized, 
    breakdown_context, 
    breakdown_element_group_assignment, 
    breakdown_element_usage, 
    breakdown_of, 
    characterized_object, 
    configuration_design, 
    configuration_effectivity, 
    configuration_item, 
    in_zone, 
    product, 
    product_definition_formation, 
    product_definition_group_assignment, 
    product_definition_relationship, 
    product_definition_shape, 
    product_relationship, 
    selected_item, 
    selected_item_assignment);
END_TYPE; 

TYPE ap239_prdi_condition_action_items = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON condition_action_method_items WITH 
   (product_definition_element_relationship, 
    product_definition_relationship);
END_TYPE; 

TYPE ap239_prdi_condition_evaluation_action_items = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON condition_evaluation_action_items WITH 
   (product_definition_element_relationship, 
    product_definition_relationship);
END_TYPE; 

TYPE ap239_prdi_contract_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON contract_item WITH 
   (configuration_item, 
    product, 
    product_definition_formation);
END_TYPE; 

TYPE ap239_prdi_date_and_time_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON date_and_time_item WITH 
   (alternate_product_relationship, 
    assembly_component_usage, 
    assembly_component_usage_substitute, 
    attachment_slot_design_to_planned, 
    attachment_slot_design_to_realized, 
    attachment_slot_planned_to_realized, 
    breakdown_element_group_assignment, 
    breakdown_element_usage, 
    configuration_item, 
    product, 
    product_definition, 
    product_definition_formation, 
    product_definition_group_assignment, 
    product_in_attachment_slot, 
    product_relationship, 
    selected_item, 
    selected_item_assignment);
END_TYPE; 

TYPE ap239_prdi_date_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON date_item WITH 
   (alternate_product_relationship, 
    assembly_component_usage, 
    assembly_component_usage_substitute, 
    attachment_slot_design_to_planned, 
    attachment_slot_design_to_realized, 
    attachment_slot_planned_to_realized, 
    breakdown_element_group_assignment, 
    breakdown_element_usage, 
    configuration_item, 
    product, 
    product_definition, 
    product_definition_formation, 
    product_definition_group_assignment, 
    product_in_attachment_slot, 
    product_relationship, 
    selected_item, 
    selected_item_assignment);
END_TYPE; 

TYPE ap239_prdi_document_reference_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON document_reference_item WITH 
   (alternate_product_relationship, 
    assembly_component_usage, 
    assembly_component_usage_substitute, 
    attachment_slot_design_to_planned, 
    attachment_slot_design_to_realized, 
    attachment_slot_planned_to_realized, 
    breakdown_context, 
    breakdown_element_group_assignment, 
    breakdown_element_usage, 
    configuration_item, 
    product, 
    product_definition_formation, 
    product_definition_group_assignment, 
    product_definition_relationship, 
    product_relationship, 
    selected_item, 
    shape_aspect, 
    shape_aspect_relationship);
END_TYPE; 

TYPE ap239_prdi_effectivity_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON effectivity_item WITH 
   (alternate_product_relationship, 
    applied_certification_assignment, 
    applied_contract_assignment, 
    applied_document_reference, 
    applied_document_usage_constraint_assignment, 
    applied_external_identification_assignment, 
    applied_identification_assignment, 
    applied_organizational_project_assignment, 
    applied_security_classification_assignment, 
    applied_usage_right, 
    assembly_component_usage, 
    assembly_component_usage_substitute, 
    attachment_slot_as_planned, 
    attachment_slot_as_realized, 
    attachment_slot_design, 
    attachment_slot_design_to_planned, 
    attachment_slot_design_to_realized, 
    attachment_slot_on_product, 
    attachment_slot_planned_to_realized, 
    breakdown_element_group_assignment, 
    breakdown_element_usage, 
    configuration_item, 
    document_relationship, 
    document_type, 
    interface_connection, 
    interface_connector_design_to_planned, 
    interface_connector_design_to_realized, 
    interface_connector_planned_to_realized, 
    make_from_usage_option, 
    organizational_address, 
    person_and_organization_address, 
    product, 
--    product_as_individual, 
--    product_as_individual_version, 
--    product_as_individual_view, 
    product_definition, 
    product_definition_formation, 
    product_definition_formation_relationship, 
    product_definition_group_assignment, 
    product_definition_relationship, 
    product_design_to_individual, 
    product_in_attachment_slot, 
    product_planned_to_realized, 
    product_relationship, 
    property_definition, 
    requirement_assignment, 
    requirement_source, 
    selected_item_assignment);
END_TYPE; 

TYPE ap239_prdi_identification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON identification_item WITH 
   (configuration_item, 
    product, 
    product_definition, 
    product_definition_formation, 
    product_definition_relationship, 
    product_definition_shape, 
    product_relationship, 
    shape_aspect_relationship);
END_TYPE; 

TYPE ap239_prdi_in_zone_groupable_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON in_zone_groupable_item WITH 
   (interface_definition_connection);
END_TYPE; 

TYPE ap239_prdi_ir_usage_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON ir_usage_item WITH 
   (alternate_product_relationship, 
    applied_usage_right, 
    assembly_component_usage, 
    assembly_component_usage_substitute, 
    attachment_slot_design_to_planned, 
    attachment_slot_design_to_realized, 
    attachment_slot_on_product, 
    breakdown_element_group_assignment, 
    breakdown_element_usage, 
    configuration_item, 
    product, 
    product_definition, 
    product_definition_formation, 
    product_definition_group_assignment);
END_TYPE; 

TYPE ap239_prdi_multi_language_attribute_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON multi_language_attribute_item WITH 
   (alternate_product_relationship, 
    assembly_component_usage, 
    assembly_component_usage_substitute, 
    attachment_slot_design_to_planned, 
    attachment_slot_design_to_realized, 
    attachment_slot_on_product, 
    attachment_slot_planned_to_realized, 
    breakdown_element_group_assignment, 
    breakdown_element_usage, 
    configuration_item, 
    product, 
--    product_as_individual, 
    product_definition, 
    product_definition_formation, 
    product_definition_group_assignment, 
    product_relationship);
END_TYPE; 

TYPE ap239_prdi_organization_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON organization_item WITH 
   (alternate_product_relationship, 
    approval, 
    assembly_component_usage, 
    assembly_component_usage_substitute, 
    breakdown_element_group_assignment, 
    breakdown_element_usage, 
    configuration_item, 
    product, 
    product_definition_formation, 
    product_definition_group_assignment, 
    product_relationship, 
    selected_item, 
    selected_item_assignment);
END_TYPE; 

TYPE ap239_prdi_person_and_organization_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON person_and_organization_item WITH 
   (alternate_product_relationship, 
    approval, 
    assembly_component_usage, 
    assembly_component_usage_substitute, 
    breakdown_element_group_assignment, 
    breakdown_element_usage, 
    configuration_item, 
    product, 
    product_definition_formation, 
    product_definition_group_assignment, 
    product_relationship, 
    selected_item, 
    selected_item_assignment);
END_TYPE; 

TYPE ap239_prdi_product_definition_or_product_definition_relationship = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON product_definition_or_product_definition_relationship WITH 
   (interface_connector_occurrence);
END_TYPE; 

TYPE ap239_prdi_project_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON project_item WITH 
   (configuration_item, 
    product);
END_TYPE; 

TYPE ap239_prdi_requirement_assigned_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON requirement_assigned_item WITH 
   (alternate_product_relationship, 
    assembly_component_usage, 
    assembly_component_usage_substitute, 
    breakdown_element_group_assignment, 
    breakdown_element_usage, 
    configuration_item, 
    product, 
    product_definition_formation, 
    product_definition_group_assignment, 
    product_in_attachment_slot);
END_TYPE; 

TYPE ap239_prdi_security_classification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON security_classification_item WITH 
   (alternate_product_relationship, 
    assembly_component_usage, 
    assembly_component_usage_substitute, 
    attachment_slot_design_to_planned, 
    attachment_slot_design_to_realized, 
    attachment_slot_on_product, 
    attachment_slot_planned_to_realized, 
    breakdown_element_group_assignment, 
    breakdown_element_usage, 
    configuration_item, 
    product, 
    product_definition, 
    product_definition_formation, 
    product_definition_group_assignment, 
    product_relationship);
END_TYPE; 

TYPE ap239_prdi_selected_item_context_items = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON selected_item_context_items WITH 
   (configuration_item, 
    contract, 
    organizational_project, 
    product, 
--    product_as_individual, 
    product_definition_formation, --product_as_individual_version, 
    product_concept);
END_TYPE; 

TYPE ap239_prdi_selected_item_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON selected_item_select WITH 
   (interface_connection, 
    interface_connector_definition, 
    interface_connector_occurrence, 
    interface_definition_connection, 
    product, 
    product_definition_formation);
END_TYPE; 

TYPE ap239_prdi_state_observed_of_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON state_observed_of_item WITH 
   (alternate_product_relationship, 
    assembly_component_usage, 
    assembly_component_usage_substitute, 
    attachment_slot_design_to_planned, 
    attachment_slot_design_to_realized, 
    attachment_slot_on_product, 
    attachment_slot_planned_to_realized, 
    breakdown_element_group_assignment, 
    breakdown_element_usage, 
    configuration_item, 
    product, 
    product_definition, 
    product_definition_formation, 
    product_definition_group_assignment, 
    product_in_attachment_slot);
END_TYPE; 

TYPE ap239_prdi_state_type_of_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON state_type_of_item WITH 
   (alternate_product_relationship, 
    assembly_component_usage, 
    assembly_component_usage_substitute, 
    attachment_slot_design_to_planned, 
    attachment_slot_design_to_realized, 
    attachment_slot_on_product, 
    attachment_slot_planned_to_realized, 
    breakdown_element_group_assignment, 
    breakdown_element_usage, 
    configuration_item, 
    product, 
    product_definition, 
    product_definition_formation, 
    product_definition_group_assignment, 
    product_in_attachment_slot);
END_TYPE; 

SUBTYPE_CONSTRAINT ap239_prdi_restrict_breakdown_context_subtypes FOR breakdown_context;
  ONEOF (functional_breakdown_context,
         hybrid_breakdown_context,
         physical_breakdown_context,
         system_breakdown_context,
         zone_breakdown_context);
END_SUBTYPE_CONSTRAINT;

SUBTYPE_CONSTRAINT ap239_prdi_restrict_breakdown_element_usage_subtypes FOR breakdown_element_usage;
  ONEOF (functional_element_usage,
         hybrid_element_usage,
         physical_element_usage,
         system_element_usage,
         zone_element_usage);
END_SUBTYPE_CONSTRAINT;

SUBTYPE_CONSTRAINT ap239_prdi_restrict_product_definition_relationship_subtypes FOR product_definition_relationship;
  ONEOF (attachment_slot_on_product,
         breakdown_context,
         breakdown_element_usage,
         breakdown_of,
         interface_definition_connection,
         interface_definition_for,
         product_in_attachment_slot);
END_SUBTYPE_CONSTRAINT;

RULE ap239_prdi_restrict_product_category_for_product FOR 
(product);
WHERE
  WR1: SIZEOF(QUERY(p <* product | SIZEOF(QUERY(prpc <* USEDIN(p,'AP239_PRODUCT_DEFINITION_INFORMATION_MIM.' +'PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') | prpc.name IN ['assembly', 'attachment slot', 'breakdown', 'breakdown element', 'conceptual product', 'detail', 'document', 'envelope', 'functional breakdown', 'functionality', 'hybrid breakdown', 'hybrid element', 'interface connector', 'interface specification', 'justification', 'message', 'part', 'physical breakdown', 'physically realized product', 'prototype part', 'raw material', 'requirement', 'spare part', 'standard', 'system breakdown', 'system element', 'tool', 'zone breakdown', 'zone element'])) <> 1)) = 0;
END_RULE; 

END_SCHEMA;  -- Ap239_product_definition_information_mim


