| Integrated generic resource: Material and other engineering properties | ISO 10303-45:2019(E)  © ISO  | 
         
         (*
ISO/TC 184/SC 4/WG 12 N10209 - ISO 10303-45 Material and other engineering properties - EXPRESS
Supersedes 
         ISO/TC 184/SC 4/WG 12 N9317
*)
         
            SCHEMA material_property_definition_schema;
         REFERENCE FROM 
         material_property_representation_schema   -- ISO 10303-45
  (material_property_representation);
         
         REFERENCE FROM 
         measure_schema   -- ISO 10303-41
  (measure_with_unit);
         
         REFERENCE FROM 
         process_property_schema   -- ISO 10303-49
  (action_property,
           
         resource_property);
         
         REFERENCE FROM 
         product_definition_schema   -- ISO 10303-41
  (product_definition_relationship);
         
         REFERENCE FROM 
         product_property_definition_schema   -- ISO 10303-41
  (characterized_definition,
           
         property_definition);
         
         REFERENCE FROM 
         qualified_measure_schema   -- ISO 10303-45
  (maths_value_with_unit);
         
         REFERENCE FROM 
         shape_dimension_schema   -- ISO 10303-47
  (dimensional_location,
           
         dimensional_size);
         
         REFERENCE FROM 
         support_resource_schema   -- ISO 10303-41
  (label,
           
         text,
           
         bag_to_set);
         
TYPE characterized_material_property =
         
         
         SELECT
            (material_property_representation, 
    product_material_composition_relationship);
         END_TYPE; 
         
TYPE characterized_product_composition_value =
         
         
         SELECT
            (maths_value_with_unit, 
    measure_with_unit);
         END_TYPE; 
         
TYPE generic_property_definition_select =
         
         
         SELECT
            (property_definition, 
    action_property, 
    resource_property, 
    dimensional_location, 
    dimensional_size);
         END_TYPE; 
         
ENTITY generic_property_relationship;
           name : label;
           description : text;
           relating : generic_property_definition_select;
           related : generic_property_definition_select;
           relation_type : STRING;
WHERE
           WR1: acyclic_generic_property_relationship (SELF, [related], 'MATERIAL_PROPERTY_DEFINITION_SCHEMA.GENERIC_PROPERTY_RELATIONSHIP');
         
         END_ENTITY;
ENTITY material_designation;
           name : label;
           definitions : SET[1:?] OF characterized_definition;
         
         END_ENTITY;
ENTITY material_designation_characterization;
           name : label;
           description : text;
           designation : material_designation;
           property : characterized_material_property;
         
         END_ENTITY;
ENTITY material_property
           SUBTYPE OF (property_definition);
UNIQUE
           UR1: SELF\property_definition.name, SELF\property_definition.definition;
WHERE
           WR1: ('PRODUCT_PROPERTY_DEFINITION_SCHEMA.CHARACTERIZED_OBJECT' IN
            TYPEOF(SELF\property_definition.definition)) OR
            (SIZEOF(bag_to_set(USEDIN(SELF ,
            'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.' +
            'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')) -
            QUERY(temp <* bag_to_set(USEDIN(SELF ,
            'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.' +
            'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')) |
            ('MATERIAL_PROPERTY_REPRESENTATION_SCHEMA.' +
            'MATERIAL_PROPERTY_REPRESENTATION' IN
            TYPEOF(temp)))) = 0);
         
         END_ENTITY;
ENTITY product_material_composition_relationship
           SUBTYPE OF (product_definition_relationship);
           class : label;
           constituent_amount : SET[1:?] OF characterized_product_composition_value;
           composition_basis : label;
           determination_method : text;
         
         END_ENTITY;
ENTITY property_definition_relationship;
           name : label;
           description : text;
           relating_property_definition : property_definition;
           related_property_definition : property_definition;
         
         END_ENTITY;
FUNCTION acyclic_generic_property_relationship
 (relation : generic_property_relationship; relatives : SET[1:?] OF generic_property_definition_select; specific_relation : STRING) : LOGICAL;
         LOCAL
    x                : SET OF generic_property_relationship;
  END_LOCAL;
  IF relation.relating IN 
            relatives THEN
    RETURN (FALSE);
  END_IF;             -- IN is based in instance equality
  x := QUERY (gpr <* bag_to_set (USEDIN
       (relation.relating,
        'MATERIAL_PROPERTY_DEFINITION_SCHEMA.' +
        'GENERIC_PROPERTY_RELATIONSHIP.' +
        'RELATED')) |
         specific_relation IN TYPEOF (gpr));
  REPEAT I := 1 TO HIINDEX(x);             -- pre-checked loop
    IF NOT acyclic_generic_property_relationship
      (x[i],
       relatives + relation.relating,
       specific_relation) THEN
      RETURN(FALSE);
    END_IF;
  END_REPEAT;
  RETURN(TRUE);
         END_FUNCTION;
         
FUNCTION acyclic_property_definition_relationship
 (relation : property_definition_relationship; relatives : SET[1:?] OF property_definition; specific_relation : STRING) : LOGICAL;
         LOCAL
    x                : SET OF property_definition_relationship;
  END_LOCAL;
  IF relation.relating_property_definition IN 
            relatives THEN
    RETURN (FALSE);
  END_IF;             -- IN is based in instance equality
  x := QUERY (pd <* bag_to_set (USEDIN
       (relation.relating_property_definition,
        'MATERIAL_PROPERTY_DEFINITION_SCHEMA.' +
        'PROPERTY_DEFINITION_RELATIONSHIP.' +
        'RELATED_PROPERTY_DEFINITION')) |
         specific_relation IN TYPEOF (pd));
  REPEAT I := 1 TO HIINDEX(x);             -- pre-checked loop
    IF NOT acyclic_property_definition_relationship
      (x[i],
       relatives + relation.relating_property_definition,
       specific_relation) THEN
      RETURN(FALSE);
    END_IF;
  END_REPEAT;
  RETURN(TRUE);
         END_FUNCTION;
         
         END_SCHEMA;  -- material_property_definition_schema
© ISO 2019 — All rights reserved