ГОСТ Р ИСО 10303-41—2022
13.4.2 Функция acyclic_experience_type_relationship
Функция acyclic_experience_type_relationship определяет, содержит ли образованный экземпля
рами представляющих тип опыта деятельности объектов experience_type граф, содержащий в каче
стве одного из ребер объект experience_type_relationship, играющий роль параметра relation, цепочку
ссылок, образующую цикл. Настоящая функция может использоваться для обработки графа, ребра
которого образованы объектами experience_type_relationship или любыми подтипами этого объекта.
Функция возвращает значение TRUE (истина), если не было обнаружено циклов, в противном
случае функция возвращает значение FALSE (ложь).
Примечания
1 Алгоритм функции приведен в Е.2 (приложение Е).
2 Данная функция не используется в настоящей схеме. Определение функции приведено потому, что вдру
гих объединенных ресурсах стандартов серии ИСО 10303 и в прикладных протоколах, в которых используется
представляющий отношение между типами опыта объект experience_type_relationship, используется правило,
обращающееся к настоящей функции.
EXPRESS-спеииФикация:
*)
FUNCTION acyclic_experience_type_relationship (relation :
experience_type_relationship; relatives :SET[0:?] OF
experience_type; specific_relation : STRING) :BOOLEAN;
LOCAL
x : SET OF experience_type_relationship;
END_LOCAL;
IF relation.relating_experience_type IN relatives THEN
RETURN (FALSE);
END_IF;
x := QUERY(exptyp <*
bag_to_set (USEDIN(relation.relating_experience_type
,
’EXPERIENCE_SCHEMA.’ + ’EXPERIENCE_TYPE_RELATIONSHIP.’ +
’RELATED__EXPERIENCE_TYPE’)) |specific_relation IN
TYPEOF(exptyp));
REPEAT i := 1 TO HIINDEX(x);
IF NOT acyclic_experience_type_relationship(x[i], relatives
+ relation.relating_experience_type, specific_relation) THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
RETURN (TRUE);
END_FUNCTION;
(*
"
Определения параметров:
relation — (входной) проверяемый экземпляр представляющего отношение между типами опыта
деятельности объекта experience_type_relationship;
relatives — (входной) набор представляющих тип опыта деятельности объектов experience_type.
Функция проверяет, есть ли среди данного набора экземпляры, играющие роль атрибута relating_
experience_type объекта experience_type_relationship, играющего роль параметра relation;
specific_relation — (входной) полное квалифицированное наименование подтипа, представляю
щего отношение между типами опыта деятельности объекта experience_type_relationship.
*)
END_SCHEMA; -- experience_schema
(* "
84