(*
 $Id$
ISO TC184/SC4/WG12 N3070 - ISO/TS 10303-1276 Location - EXPRESS ARM
Supersedes ISO TC184/SC4/WG12 N2387
*) 


SCHEMA Location_arm;

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

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

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

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

USE FROM Value_with_unit_arm;    -- ISO/TS 10303-1054


TYPE location_classification_item = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON classification_item WITH 
   (Location, 
    Location_relationship);
END_TYPE; 

TYPE product_based_location_representation = EXTENSIBLE GENERIC_ENTITY SELECT
   (Product, 
    Product_version);
END_TYPE; 

ENTITY Address_based_location_representation
  SUBTYPE OF (Location_representation);
  postal_address : Address;
END_ENTITY;

ENTITY Global_location_representation
  SUBTYPE OF (Location_representation);
  altitude : OPTIONAL Value_with_unit;
  geographical_area : OPTIONAL STRING;
  latitude : Value_with_unit;
  longitude : Value_with_unit;
END_ENTITY;

ENTITY Location;
  name : STRING;
  description : OPTIONAL STRING;
  alternative_location_representations : SET[0:?] OF Location_representation;
END_ENTITY;

ENTITY Location_relationship;
  name : STRING;
  description : OPTIONAL STRING;
  relating : Location;
  related : Location;
END_ENTITY;

ENTITY Location_representation
  ABSTRACT SUPERTYPE OF (ONEOF (Address_based_location_representation,
                                Global_location_representation,
                                Organization_based_location_representation,
                                Product_based_location_identification,
                                Regional_grid_location_representation));
END_ENTITY;

ENTITY Organization_based_location_representation
  SUBTYPE OF (Location_representation);
  location_identifications : LIST[0:?] OF Organizational_location_identification;
  organization_for_location : Organization;
END_ENTITY;

ENTITY Organizational_location_identification;
  identification_type : STRING;
  location_value : STRING;
END_ENTITY;

ENTITY Product_based_location_identification
  SUBTYPE OF (Location_representation);
  location_identification : STRING;
  location_name : OPTIONAL STRING;
  referenced_product : product_based_location_representation;
END_ENTITY;

ENTITY Regional_coordinate;
  name : STRING;
  coordinate_value : Value_with_unit;
  grid_system : Regional_grid_location_representation;
END_ENTITY;

ENTITY Regional_grid_location_representation
  SUBTYPE OF (Location_representation);
  name : STRING;
  description : OPTIONAL STRING;
END_ENTITY;

END_SCHEMA;  -- Location_arm
