(*
   $Id$
   ISO TC184/SC4/WG12 N4599 - ISO/CD-TS 10303-1435 Organization structure - EXPRESS MIM
*)

SCHEMA Organization_structure_mim;
  USE FROM Organization_type_mim;
  USE FROM Project_management_resource_information_mim;
  USE FROM product_property_definition_schema   -- ISO 10303-41
  (characterized_object); 


TYPE os_action_items = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON action_items WITH
	(position_in_organization,
	group);
END_TYPE;


TYPE os_action_method_items = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON action_method_items WITH
	(organization,
	organization_type,
	person,
	person_and_organization,
	position_in_organization,
	group,
	position_in_organization_type,
	person_type,
	person_type_definition);
END_TYPE;


TYPE os_action_request_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON action_request_item WITH
	(organization,
	person,
	person_and_organization);
END_TYPE;


TYPE os_aliasable_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON aliasable_item WITH
	(address,
	person,
	person_and_organization);
END_TYPE;


TYPE os_approval_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON approval_item WITH
	(applied_experience_assignment,
	experience_type,
	applied_organization_type_assignment,
	applied_position_in_organization_assignment,
	group,
	applied_position_in_organization_group_assignment,
	applied_position_in_organization_type_assignment,
	position_in_organization_type,
	applied_qualification_type_assignment,
	qualification_type,
	person_type,
	applied_person_type_assignment);
END_TYPE;


TYPE os_classification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON classification_item WITH
	(applied_experience_assignment,
	experience,
	organization_type,
	applied_position_in_organization_assignment,
	applied_position_in_organization_group_assignment,
	applied_position_in_organization_type_assignment,
	applied_qualification_type_assignment,
	qualification_type_relationship);
END_TYPE;


TYPE os_attribute_classification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON attribute_classification_item WITH
	(person_and_organization_address,  organizational_address,
	organization_relationship,
	person_and_organization);
END_TYPE;


TYPE os_date_and_time_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON date_and_time_item WITH
	(applied_organization_type_assignment,
	applied_position_in_organization_assignment,
	group,
	applied_position_in_organization_group_assignment,
	applied_position_in_organization_type_assignment,
	applied_person_type_assignment);
END_TYPE;

TYPE os_date_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON date_item WITH
	(applied_organization_type_assignment,
	applied_position_in_organization_assignment,
	group,
	applied_position_in_organization_group_assignment,
	applied_position_in_organization_type_assignment,
	applied_person_type_assignment);
END_TYPE;


TYPE os_document_reference_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON document_reference_item WITH
	(experience,
	experience_type,
	organization_type,
	applied_position_in_organization_assignment,
	group,
	position_in_organization,
	position_in_organization_type,
	applied_position_in_organization_type_assignment,
	position_in_organization_type_assignment,
	qualification_type,
	person_type,
	person_type_definition);
END_TYPE;


TYPE os_effectivity_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON effectivity_item WITH
	(group,
	applied_position_in_organization_assignment,
	applied_position_in_organization_group_assignment,
	applied_position_in_organization_type_assignment,
	applied_person_type_assignment);
END_TYPE;


TYPE os_identification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON identification_item WITH
	(experience_type,
	organization_type,
	applied_position_in_organization_assignment,
	group,
	position_in_organization_assignment,
	applied_qualification_type_assignment,
	qualification_type,
	person_type);
END_TYPE;


TYPE os_location_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON location_item WITH
	(organization,
	organization_type,
	person,
	person_and_organization,
	position_in_organization,
	position_in_organization_type,
	person_type);
END_TYPE;


TYPE os_person_and_organization_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON person_and_organization_item WITH
	(applied_position_in_organization_assignment,
	applied_position_in_organization_group_assignment,
	applied_position_in_organization_type_assignment,
	position_in_organization_type,
	applied_person_type_assignment);
END_TYPE;

TYPE os_organization_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON organization_item WITH
	(applied_position_in_organization_assignment,
	applied_position_in_organization_group_assignment,
	applied_position_in_organization_type_assignment,
	position_in_organization_type,
	applied_person_type_assignment);
END_TYPE;


(*TYPE os_property_assignment_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON property_assignment_select WITH
	(address,
	person,
	person_and_organization);
END_TYPE;*)

ENTITY os_characterizable_address
  SUBTYPE OF (address, characterized_object);
END_ENTITY;


ENTITY os_characterizable_person
  SUBTYPE OF (person, characterized_object);
END_ENTITY;


ENTITY os_characterizable_person_and_organization
  SUBTYPE OF (person_and_organization, characterized_object);
END_ENTITY;


TYPE os4_action_method_items = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON action_method_items WITH
	(position_in_organization,
	position_in_organization_type,
	person_type);
END_TYPE;


TYPE os2_action_method_items = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON action_method_items WITH
	(organization,
	organization_type,
	person,
	person_and_organization,
	position_in_organization,
	position_in_organization_type,
	person_type);
END_TYPE;


TYPE os_state_type_of_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON state_type_of_item WITH
	(organization,
	person_and_organization);
END_TYPE;


TYPE os_state_observed_of_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON state_observed_of_item WITH
	(organization,
	person_and_organization);
END_TYPE;


TYPE os_multi_language_attribute_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON multi_language_attribute_item WITH
	(applied_experience_assignment,
	experience_type,
	organization_type,
	position_in_organization,
	group,
	position_in_organization_relationship,
	position_in_organization_assignment,
	position_in_organization_type,
	qualification_type,
	person_type,
	applied_person_type_assignment,
	person_type_definition,
	person_type_definition_relationship);
END_TYPE;

TYPE os_attribute_language_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON attribute_language_item WITH
	(applied_experience_assignment,
	experience_type,
	organization_type,
	position_in_organization,
	group,
	position_in_organization_relationship,
	position_in_organization_assignment,
	position_in_organization_type,
	qualification_type,
	person_type,
	applied_person_type_assignment,
	person_type_definition,
	person_type_definition_relationship);
END_TYPE;


TYPE os_person_type_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON person_type_item WITH
	(person_and_organization,
	position_in_organization,
	group,
	position_in_organization_type);
END_TYPE;


TYPE os3_action_method_items = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON action_method_items WITH
	(organization,
	organization_type,
	person,
	person_and_organization,
	position_in_organization,
	position_in_organization_type,
	person_type);
END_TYPE;


END_SCHEMA;

