ГОСТ Р ИСО 10303-41—2022
THEN
RETURN(FALSE);
END_IF;
END_REPEAT;
RETURN(TRUE);
END_FUNCTION;
(*
Определения параметров:
relation — (входной) проверяемый экземпляр представляющего отношение между присвоениями
классификации объекта classification_assignment_ relationship;
relatives — (входной) набор представляющих присвоение классификации объектов classifica-
tion_assignment. Функция проверяет, есть ли среди данного набора экземпляры, играющие роль атри
бута relating объекта classification_ assignment_relationship, играющего роль параметра relation;
specific_relation — (входной) полное квалифицированное наименование подтипа представляю щего
отношение между присвоениями классификации объекта classification_assignment_relationship.
18.5.3 Функция acyclic_external_identification_assignment_relationship
Функция acyclic_external_identification_assignment_relationship определяет, содержит ли обра
зованный экземплярами представляющих присвоение внешнего обозначения объектов externaMden-
tification_assignment граф, содержащий в качестве одного из ребер объект external_identification_
assignment_relationship, играющий роль параметра relation, цепочку ссылок, образующую цикл. На
стоящая функция может использоваться для обработки графа, ребра которого образованы объектами
external_identification_assignment_ relationship или любыми подтипами этого объекта.
Функция возвращает значение TRUE (истина), если не было обнаружено циклов, в противном
случае функция возвращает значение FALSE (ложь).
Примечание — Алгоритм функции приведен в Е.2 (приложение Е).
EXPRESS-специФикаиия:
*)
FUNCTION acyclic_external_identification_assignment_relationship (relation
:external_identification_assignment_relationship; relatives :SET[1:?] OF
external_identification_assignment; specific_relation :STRING) :BOOLEAN;
LOCAL
x :SET OF external_identification_assignment_relationship;
END_LOCAL;
IF relation.relating IN relatives
THEN
RETURN(FALSE);
END_IF;
x := QUERY(eiar
<* bag_to_set(USEDIN(relation.relating, ’MANAGEMENT_RESOURCES_
SCHEMA.EXTERNAL_IDENTIFICATION_ASSIGNMENT_RELATIONSHIP.RELATED’))
|specific_relation IN TYPEOF(eiar));
REPEAT i := 1 TO HIINDEX(x);
IF NOT acyclic_external_identification_assignment_relationship(x[i],
relatives +
relation.relating, specific_relation)
THEN
RETURN(FALSE);
END_IF;
END_REPEAT;
RETURN(TRUE);
END_FUNCTION;
(*
"
Определения параметров:
relation — (входной) проверяемый экземпляр представляющего отношение между представлени
ями внешних обозначений объекта external_identification_ assignment relationship;
132