Schema: product_analysis_schema

Source : ISO 10303-53



SCHEMA product_analysis_schema;

REFERENCE FROM product_property_definition_schema;    -- ISO 10303-41

REFERENCE FROM support_resource_schema;    -- ISO 10303-41


ENTITY behavioural_decomposition_of_temporal_spatial_domain;
  parts : SET[2:?] OF temporal_spatial_domain;
  whole : temporal_spatial_domain;
END_ENTITY;

ENTITY domain_property;
  domain : temporal_spatial_domain;
  property_type : general_property;
END_ENTITY;

ENTITY physical_action_domain
  SUBTYPE OF (temporal_spatial_domain);
  final : physical_state_domain;
  initial : physical_state_domain;
END_ENTITY;

ENTITY physical_product_domain
  SUBTYPE OF (temporal_spatial_domain);
  temporal_parts : SET[0:?] OF physical_action_domain;
END_ENTITY;

ENTITY physical_state_domain
  SUBTYPE OF (temporal_spatial_domain);
END_ENTITY;

ENTITY spatial_decomposition_of_temporal_spatial_domain;
  parts : SET[2:?] OF temporal_spatial_domain;
  whole : temporal_spatial_domain;
END_ENTITY;

ENTITY temporal_decomposition_of_action_domain;
  parts : LIST[2:?] OF physical_action_domain;
  whole : physical_action_domain;
END_ENTITY;

ENTITY temporal_spatial_domain;
  id : identifier;
  name : text;
  description : text;
WHERE
  wr1: definitions_for_temporal_spatial_domain(SELF);
END_ENTITY;

SUBTYPE_CONSTRAINT sc1_temporal_spatial_domain FOR temporal_spatial_domain;
  ABSTRACT SUPERTYPE;
END_SUBTYPE_CONSTRAINT;

FUNCTION definition_for_temporal_spatial_domain
 (domain : temporal_spatial_domain) : BOOLEAN;
        LOCAL
          spatial_set : SET OF spatial_decomposition_of_temporal_spatial_domain;
          behavioural_set : SET OF behavioural_decomposition_of_temporal_spatial_domain;
          domains : SET OF temporal_spatial_domain := [];
          idealising : BAG OF idealisation_relationship;
          spatial_bag : BAG OF spatial_decomposition_of_temporal_spatial_domain;
          behavioural_bag : BAG OF behavioural_decomposition_of_temporal_spatial_domain;
        END_LOCAL;

        idealising := USEDIN(domain, 'ANALYSIS_PRODUCT_RELATIONSHIPS_SCHEMA.IDEALISATION_RELATIONSHIP.IDEALISATION');
        IF SIZEOF(idealising) > 0 THEN
          RETURN (TRUE);
        END_IF;
        spatial_bag := USEDIN(domain, 'PRODUCT_ANALYSIS_SCHEMA.SPATIAL_DECOMPOSITION_OF_TEMPORAL_SPATIAL_DOMAIN.PARTS');
        IF SIZEOF(spatial_bag) > 0 THEN
          spatial_set := spatial_bag;
          REPEAT i := 1 TO HIINDEX(spatial_set);
            domains := domains + spatial_set[i].whole;
          END_REPEAT;
        END_IF;
        behavioural_bag := USEDIN(domain, 'PRODUCT_ANALYSIS_SCHEMA.BEHAVIOURAL_DECOMPOSITION_OF_TEMPORAL_SPATIAL_DOMAIN.PARTS');
        IF SIZEOF(behavioural_bag) > 0 THEN
          behavioural_set := bag_to_set(behavioural_bag);
          REPEAT i := 1 TO HIINDEX(behavioural_set);
            domains := domains + behavioural_set[i].whole;
          END_REPEAT;
        END_IF;
        IF SIZEOF(domains) > 0 THEN
          REPEAT i := 1 TO HIINDEX(domains);
            IF definition_for_temporal_spatial_domain(domains[i]) THEN
              RETURN (TRUE);
            END_IF;
          END_REPEAT;
        END_IF;
        RETURN (FALSE);
      
END_FUNCTION;

END_SCHEMA;  -- product_analysis_schema