ГОСТ Р ИСО 10303-41—2022
relatives — (входной) набор представляющих присвоение внешнего обозначения объектов exter-
nal_identification_assignment. Функция проверяет, есть ли среди данного набора экземпляры, играю
щие роль атрибута relating объекта external_identification_assignment_relationship, играющего роль
параметра relation;
specific_relation — (входной) набор представляющих присвоение внешнего обозначения объек
тов external_identification_assignment. Функция проверяет, есть ли среди данного набора экземпля
ры, играющие роль атрибута relating объекта external_identification_assignment_relationship, играю
щего роль параметра relation.
18.5.4 Функция acyclic_identification_assignment_relationship
Функция acyclic_identification_assignment_relationship определяет, содержит ли образованный
экземплярами представляющих присвоение обозначения объектов identification_assignment граф, со
держащий в качестве одного из ребер объект identification_assignment_relationship, играющий роль
параметра relation, цепочку ссылок, образующую цикл. Настоящая функция может использоваться для
обработки графа, ребра которого образованы объектами identification_assignment_relationship или
любыми подтипами этого объекта.
Функция возвращает значение TRUE (истина), если не было обнаружено циклов, в противном
случае функция возвращает значение FALSE (ложь).
Примечания
1 Алгоритм функции приведен в Е.2 (приложение Е).
2 Данная функция не используется в настоящей схеме. Определение функции приведено потому, что в дру
гих объединенных ресурсах стандартов серии ИСО 10303 и в прикладных протоколах, в которых используется
представляющий отношение между присвоениями обозначений объект identification_assignment_relationship,
используется правило, обращающееся к настоящей функции.
EXPRESS-специФикация:
*)
FUNCTION acyclic_identification_assignment_relationship (relation :
relatives : SET[1:?] OF identification_
:BOOLEAN;
identification_assignment_relationship;
assignment; specific_relation :STRING)
LOCAL
x :SET OF identification_assignment_relationship;
ENDJLOCAL;
IF relation.relating_identification_assignment IN relatives
THEN
RETURN(FALSE);
END_IF;
x := QUERY(ia
<* bag_to_set(USEDIN(relation.relating_identification_
assignment, ’MANAGEMENT_RESOURCES_SCHEMA.IDENTIFICATION_ASSIGNMENT_RELATIONSHIP.
RELATED_IDENTIFICATION_ASSIGNMENT’))
|specific_relation IN TYPEOF(ia));
REPEAT i := 1 TO HIINDEX(x);
IF NOT acyclic_identification_assignment_relationship(x[i], relatives +
relation.relating_identification_assignment, specific_relation)
THEN
RETURN(FALSE);
END_IF;
END_REPEAT;
RETURN(TRUE);
END_FUNCTION;
(*
Определения параметров:
relation — (входной) проверяемый экземпляр представляющего отношение между присвоениями
обозначение объекта identification_assignment_relationship;
relatives — (входной) набор представляющих присвоение обозначения объектов identification_
assignment. Функция проверяет, есть ли среди данного набора экземпляры, играющие роль атрибута
relating объекта identification_ assignment_relationship, играющего роль параметра relation;
133