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