Integrated generic resource: State | ISO 10303-56:2019(E) © ISO |
(*
ISO/TC 184/SC 4/WG 12 N10245 - ISO 10303-56 State - EXPRESS
Supersedes
ISO/TC 184/SC 4/WG 12 N3207
*)
SCHEMA state_observed_schema;
REFERENCE FROM
basic_attribute_schema -- ISO 10303-41
(get_id_value,
id_attribute,
id_attribute_select);
REFERENCE FROM
state_type_schema -- ISO 10303-56
(state_type);
REFERENCE FROM
support_resource_schema -- ISO 10303-41
(bag_to_set,
identifier,
label,
text);
TYPE sos_id_attribute_select =
SELECT
BASED_ON
id_attribute_select
WITH
(ascribable_state_relationship);
END_TYPE;
ENTITY ascribable_state;
name : label;
description :
OPTIONAL
text;
pertaining_state_type : state_type;
ascribed_state_observed : state_observed;
END_ENTITY;
ENTITY ascribable_state_relationship;
name : label;
description :
OPTIONAL
text;
relating_ascribable_state : ascribable_state;
related_ascribable_state : ascribable_state;
DERIVE
id : identifier := get_id_value(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF, 'BASIC_ATTRIBUTE_SCHEMA.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1;
END_ENTITY;
ENTITY hypothesis_state_to_confirmation_state_relationship
SUBTYPE OF (state_definition_to_state_assignment_relationship);
confirmed_state : ascribable_state;
hypothesized_state : ascribable_state;
WHERE
WR1: acyclic_hypothesis_state_to_confirmation_state_relationship(SELF, [confirmed_state], 'STATE_OBSERVED_SCHEMA.HYPOTHESIS_STATE_TO_CONFIRMATION_STATE_RELATIONSHIP');
END_ENTITY;
ENTITY state_definition_to_state_assignment_relationship
SUBTYPE OF (ascribable_state_relationship);
relation_type : STRING;
WHERE
WR1: acyclic_state_definition_to_state_assignment_relationship(SELF, [SELF\ascribable_state_relationship.related_ascribable_state],
'STATE_OBSERVED_SCHEMA.STATE_DEFINITION_TO_STATE_ASSIGNMENT_RELATIONSHIP');
END_ENTITY;
ENTITY state_observed;
name : label;
description :
OPTIONAL
text;
END_ENTITY;
ENTITY state_observed_assignment
ABSTRACT SUPERTYPE
;
assigned_state_observed : state_observed;
role : state_observed_role;
END_ENTITY;
ENTITY state_observed_relationship;
name : label;
description :
OPTIONAL
text;
relating_state_observed : SET[1:?] OF state_observed;
related_state_observed : SET[1:?] OF state_observed;
END_ENTITY;
ENTITY state_observed_role;
name : label;
description :
OPTIONAL
text;
END_ENTITY;
FUNCTION acyclic_hypothesis_state_to_confirmation_state_relationship
(relation : hypothesis_state_to_confirmation_state_relationship; relatives : SET[1:?] OF ascribable_state; specific_relation : STRING) : LOGICAL;
LOCAL x : SET OF hypothesis_state_to_confirmation_state_relationship; END_LOCAL; IF relation.confirmed_state IN relatives THEN RETURN (FALSE); END_IF; -- IN is based in instance equality x := QUERY (hstcsr <* bag_to_set (USEDIN (relation.confirmed_state, 'STATE_OBSERVED_SCHEMA.' + 'HYPOTHESIS_STATE_TO_CONFIRMATION_STATE_RELATIONSHIP.' + 'HYPOTHESIZED_STATE')) | specific_relation IN TYPEOF (hstcsr)); REPEAT I := 1 TO HIINDEX(x); -- pre-checked loop IF NOT acyclic_hypothesis_state_to_confirmation_state_relationship (x[i], relatives + relation.confirmed_state, specific_relation) THEN RETURN(FALSE); END_IF; END_REPEAT; RETURN(TRUE);
END_FUNCTION;
FUNCTION acyclic_state_definition_to_state_assignment_relationship
(relation : state_definition_to_state_assignment_relationship; relatives : SET[1:?] OF ascribable_state; specific_relation : STRING) : LOGICAL;
LOCAL x : SET OF state_definition_to_state_assignment_relationship; END_LOCAL; IF relation.relating_ascribable_state IN relatives THEN RETURN (FALSE); END_IF; -- IN is based in instance equality x := QUERY (sdtsar <* bag_to_set (USEDIN (relation.relating_ascribable_state, 'STATE_OBSERVED_SCHEMA.' + 'STATE_DEFINITION_TO_STATE_ASSIGNMENT_RELATIONSHIP.' + 'RELATED_ASCRIBABLE_STATE')) | specific_relation IN TYPEOF (sdtsar)); REPEAT I := 1 TO HIINDEX(x); -- pre-checked loop IF NOT acyclic_state_definition_to_state_assignment_relationship (x[i], relatives + relation.relating_ascribable_state, specific_relation) THEN RETURN(FALSE); END_IF; END_REPEAT; RETURN(TRUE);
END_FUNCTION;
END_SCHEMA; -- state_observed_schema
© ISO 2019 — All rights reserved