ГОСТ Р ИСО 10303-41—2022
END_LOCAL;
IF relation.relating_object IN relatives THEN
RETURN (FALSE);
END_IF;
x := QUERY(ca <* bag_to_set(USEDIN(relation.relating_object,
’PRODUCT_PROPERTY_DEFINITION_SCHEMA.’ +
’CHARACTERIZED_OBJECT_RELATIONSHIP.’ + ’RELATED_OBJECT’)) |
specific_relation IN TYPEOF(ca));
REPEAT i := 1 TO HIINDEX(x);
IF NOT acyclic_characterized_object_relationship(x[i],
relatives + relation.relating_object, specific_relation) THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
RETURN (TRUE);
END_FUNCTION;
(*
Определения параметров:
relation — (входной) проверяемый экземпляр представляющего отношение между объектами с
характеристиками объекта characterized_object_relationship;
relatives — (входной) набор представляющих объекты с характеристиками объектов character-
ized_object. Функция проверяет, есть ли среди данного набора экземпляры, играющие роль атрибута
relating_object объекта characterized_object_relationship, играющего роль параметра relation;
specific_relation — (входной) полное квалифицированное наименование подтипа представляю
щего отношение между объектами с характеристиками объекта characterized_object_relationship.
22.5.2 Функция acyclic_general_property_relationship
Функция acyclic_general_property_relationship определяет, содержит ли образованный экзем
плярами представляющих общее свойство объектов general_property граф, содержащий в качестве
одного из ребер объект general_property_relationship, играющий роль параметра relation, цепочку
ссылок, образующую цикл. Настоящая функция может использоваться для обработки графа, ребра
которого образованы объектами general_property_relationship или любыми подтипами этого объекта.
Функция возвращает значение TRUE (истина), если не было обнаружено циклов, в противном
случае функция возвращает значение FALSE (ложь).
Примечания
1 Алгоритм функции приведен в Е.2 (приложение Е).
2 Данная функция не используется в настоящей схеме. Определение функции приведено потому, что в дру
гих объединенных ресурсах стандартов серии ИСО 10303 и в прикладных протоколах, в которых используется
представляющий отношение между общими свойствами объект general_property_relationship, используется пра
вило, обращающееся к настоящей функции.
EXPRESS-специФикаиия:
*)
FUNCTION acyclic_general_property_relationship (relation :
general_property_relationship; relatives :SET[1:?] OF
general_property; specific_relation : STRING) :BOOLEAN;
LOCAL
x :SET OF general_property_relationship;
END_LOCAL;
IF relation.relating_property IN relatives THEN
RETURN (FALSE);
END_IF;
x := QUERY(genp
< *
bag_to_set(USEDIN(relation.relating_property,
’PRODUCT_PROPERTY_DEFINITION_SCHEMA.’ +
’GENERAL_PROPERTY_RELATIONSHIP.’+ ’RELATED_PROPERTY’)) |
specific_relation IN TYPEOF(genp));
243