ГОСТ Р ИСО 10303-41—2022
’QUALIFICATIONS_SCHEMA.’ + ’QUALIFICATION_RELATIONSHIP.’ +
’RELATED_QUALIFICATION’)) |specific_relation IN TYPEOF(qual));
REPEAT i := 1 TO HIINDEX(x);
IF NOT acyclic_qualification_relationship(x[i], relatives +
relation.relating_qualification, specific_relation) THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
RETURN (TRUE);
END_FUNCTION;
(*
"
Определения параметров:
relation — (входной) проверяемый экземпляр представляющего отношение между квалификаци
ями объектов объекта qualification_relationship;
relatives — (входной) набор представляющих квалификацию объекта объектов qualification.
Функция проверяет, есть ли среди данного набора экземпляры, играющие роль атрибута relating объ
екта qualification_relationship, играющего роль параметра relation;
specific_relation — (входной) полное квалифицированное наименование подтипа, представляю
щего отношение между квалификациями объектов объекта qualification_relationship.
24.4.2 Функция acyclic_qualification_type_relationship
Функция acyclic_qualification_type_relationship определяет, содержит ли образованный экзем
плярами представляющих тип квалификации объектов qualification_type граф, содержащий в каче
стве одного из ребер объект qualification_type_relationship, играющий роль аргумента relation, цепоч
ку ссылок, образующую цикл. Настоящая функция может использоваться для обработки графа, ребра
которого образованы объектами qualification_type_relationship или любыми подтипами этого объекта.
Функция возвращает значение TRUE (истина), если не было обнаружено циклов, в противном
случае функция возвращает значение FALSE (ложь).
Примечания
1 Алгоритм функции приведен в Е.2 (приложение Е).
2 Данная функция не используется в настоящей схеме. Определение функции приведено потому, что в дру
гих объединенных ресурсах стандартов серии ИСО 10303 и в прикладных протоколах, в которых используется
представляющий отношение между типами квалификаций объект qualification_type_relationship, используется
правило, обращающееся к настоящей функции.
EXPRESS-спеииФикаиия:
*)
FUNCTION acyclic_qualification_type_relationship (relation :
qualification_type_relationship; relatives :SET[0:?] OF
qualification_type; specific_relation : STRING) :BOOLEAN;
LOCAL
x : SET OF qualification__type_relationship;
END_LOCAL;
IF relation.relating_qualification_type IN relatives THEN
RETURN (FALSE);
END_IF;
x := QUERY(qultyp <*
bag_to_set(USEDIN(relation.relating_qualification_type,
’QUALIFICATIONS_SCHEMA.’ + ’QUALIFICATION_TYPE_RELATIONSHIP.’ +
’RELATED_QUALIFICATION_TYPE’)) |specific_relation
IN TYPEOF(qultyp));
REPEAT i := 1 TO HIINDEX(x);
IF NOT acyclic_qualification_type_relationship(x[i],
relatives + relation.relating_qualification_type,
specific_relation) THEN
RETURN (FALSE);
266