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