(*
   $Id$
   ISO TC184/SC4/WG12 N4979 - ISO/CD-TS 10303-1681 Generic material aspects - EXPRESS ARM
   Supersedes ISO TC184/SC4/WG12 N3990
*)

SCHEMA Generic_material_aspects_arm;

USE FROM Independent_property_representation_arm;	-- ISO/TS 10303-1038

  TYPE material_item_select = EXTENSIBLE GENERIC_ENTITY SELECT;
  END_TYPE;

  TYPE material_property_select = SELECT (Material_property, General_material_property);
  END_TYPE;

  TYPE dependent_or_independent_property_representation = SELECT(
    Independent_property_representation,
    Property_representation);
  END_TYPE;

 ENTITY Applied_independent_material_property SUBTYPE OF
    (Material_property, Applied_independent_property);
     SELF\Applied_independent_property.base_independent_property: General_material_property;
  END_ENTITY;

 ENTITY Data_environment;
  environment_name : STRING;
  description : OPTIONAL STRING;
  environment_characterization: SET[1:?] OF dependent_or_independent_property_representation;
 END_ENTITY;

 ENTITY Material_identification;
  material_name : STRING;
  items : SET[1:?] OF material_item_select;
 END_ENTITY;

 ENTITY Material_property
  SUBTYPE OF (Assigned_property);
 END_ENTITY;

 ENTITY Material_property_association;
  described_material : Material_identification;
  associated_property_value : Material_property_value_representation;
  definitional : OPTIONAL BOOLEAN;
 END_ENTITY;

 ENTITY Material_property_value_representation
  SUBTYPE OF (Property_definition_representation);
    environment_condition                                               : Data_environment;
    SELF\Property_definition_representation.definition RENAMED property : material_property_select;
 END_ENTITY;

 ENTITY General_material_property
  SUBTYPE OF (Independent_property);
  WHERE
    WR1:  SIZEOF(QUERY( aip <* USEDIN(SELF,'PROPERTY_ASSIGNMENT_ARM.APPLIED_INDEPENDENT_PROPERTY.'+
                     'BASE_INDEPENDENT_PROPERTY') |
               NOT
			('GENERIC_MATERIAL_ASPECTS_ARM.APPLIED_INDEPENDENT_MATERIAL_PROPERTY' IN
                    TYPEOF(aip)))) = 0;
 END_ENTITY;


END_SCHEMA;
