ГОСТ Р ИСО 10303-41—2022
LOCAL
х :SET OF event_occurrence_relationship;
END_LOCAL;
IF relation.relating_event IN relatives THEN
RETURN (FALSE);
END_IF;
x := QUERY(evnt <*
bag_to_set(USEDIN(relation.relating_event, ’DATE_TIME_SCHEMA.’ +
’EVENT__OCCURRENCE_RELATIONSHIP.’ + ’RELATED_EVENT’)) |
specific_relation IN TYPEOF(evnt));
REPEAT i := 1 TO HIINDEX(x);
IF NOT acyclic_event_occurrence_relationship(x[i], relatives
+ relation.relating_event, specific_relation) THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
RETURN (TRUE);
END_FUNCTION;
(*
Определения параметров:
relation — (входной) проверяемый экземпляр представляющего отношение между наступления
ми событий объекта event_occurrence_relationship;
relatives — (входной) набор представляющих распоряжения по выполнению действия объектов
event_occurrence. Функция проверяет, есть ли среди данного набора экземпляры, играющие роль
атрибута relating_event объекта event_occurrence_relationship, играющего роль параметра relation;
specific_relation — (входной) полное квалифицированное наименование подтипа, представляю
щего отношение между наступлениями событий действиями объекта event_occurrence_relationship.
10.5.2 Функция acyclic_time_interval_relationship
Функция acyclic_time_interval_relationship определяет, содержит ли образованный экземпляра
ми представляющих интервалы времени объектов time_interval граф, содержащий в качестве одного
из ребер объект time_interval_relationship, играющий роль аргумента relation, цепочку ссылок, об
разующую цикл. Настоящая функция может использоваться для обработки графа, ребра которого об
разованы объектами time_interval_relationship или любыми подтипами этого объекта.
Функция возвращает значение TRUE (истина), если не было обнаружено циклов, в противном
случае функция возвращает значение FALSE (ложь).
Примечания
1 Алгоритм функции приведен в Е.2 (приложение Е).
2 Данная функция не используется в настоящей схеме. Определение функции приведено потому, что в дру
гих объединенных ресурсах стандартов серии ИСО 10303 и в прикладных протоколах, в которых используется
представляющий отношение между интервалами времени объект time_interval_relationship, используется прави
ло, обращающееся к настоящей функции.
EXPRESS-специФикаиия:
*)
FUNCTION acyclic_time_interval_relationship (relation :
time_interval_relationship; relatives : SET[1:?] OF time_interval;
specific_relation :STRING) :BOOLEAN;
LOCAL
x :SET OF time_interval_relationship;
END_LOCAL;
IF relation.relating_time_interval IN relatives THEN
RETURN (FALSE);
END_IF;
x := QUERY(ti <*
bag_to_set(USEDIN(relation.relating_time_interval,
63