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