Технические соображения
D.1 Структура обобщенного ресурса описания изделия
Обобщенный ресурс описания изделия создается схемами, отражающими различные виды данных, которые могут быть связаны с изделием. Схема application_context_schema позволяет описывать условия, при которых был определен заданный пример обобщенного ресурса описания изделия. Схема product_definition_schema поддерживает описание данных, которые связаны с конкретным изделием. Схема product_property_definition_schema поддерживает описание свойств изделия, например его формы и материала. Схема product_property_representation_schema устанавливает способы возможного представления свойства изделия. Связи между этими схемами показаны на рисунке D.1.
Рисунок D.1 - Структура обобщенного ресурса описания изделия
a) Прикладной контекст: product_definition определен в одном и только в одном прикладном контексте, но единый прикладной контекст может быть использован для определения пустого, одного или нескольких product_definition.
b) Определение свойства изделия: product_definition может содержать одно или несколько определений свойств, связанных с ним. Каждое определение свойства принадлежит, по крайней мере, одному product_definition и может принадлежать нескольким product_definition.
c) Представление свойства: каждое определение свойства может быть представлено одним или несколькими способами. Единственным свойством, которое рассматривается в настоящем стандарте, является форма.
D.2 Шаблон функции исключения ацикличности
Шаблон, описываемый в данном разделе, используется различными интегрированными ресурсами стандартов серии ГОСТ Р ИСО 10303. Данный шаблон является функцией, выявляющей циклические определения.
D.2.1 acyclic_object_relationship
Функция acyclic_object_relationship определяет, являются или нет заданные объекты самоопределенными на основе отношений, порождаемых конкретной object_relationship. Данная функция может быть использована для оценки как самой object_relationship, так и любого из ее подтипов.
Примечание 1 - Конкретным типом объекта object_relationship является либо сама object_relationship, либо один из ее подтипов.
Функция возвращает значение TRUE, если ни один из элементов аргумента relatives не встречается в аргументе relation в виде типа, заданного в аргументе specific_relation. В противном случае функция возвращает значение FALSE.
Примечание 2 - Данная функция не использована в настоящей схеме. Она определена здесь для того, чтобы другие интегрированные ресурсы стандартов серии ГОСТ Р ИСО 10303 и прикладные протоколы, использующие объект object_relationship, включали в себя правила, использующие данную функцию.
Примечание 3 - При вызове функций, основанных на данном шаблоне, пользователю следует ссылаться на них, как показано ниже, чтобы позволить второму параметру функции иметь тип SET.
WR1: acyclic_object_relation[SELF.relating_object], '. . . .');
EXPRESS-спецификация: | ||||||||
FUNCTION acyclic_object_relationship | ||||||||
(relation | : object_relationship; | |||||||
relatives | : SET [1:?] OF object; | |||||||
specific_relation | : STRING) : LOGICAL; | |||||||
LOCAL | ||||||||
x | : SET [1:?] OF object_relationship; | |||||||
i | : INTEGER; | |||||||
local_relatives | : SET [1:?] OF object; | |||||||
END_LOCAL; | ||||||||
REPEAT i : = 1 TO HIINDEX(relatives); | ||||||||
IF relation.relating_object :=: relatives[i] THEN | ||||||||
RETURN(FALSE); | ||||||||
END_IF; | ||||||||
END_REPEAT; | ||||||||
x : = bag_to_set(USEDIN (relation.relating_object, specific_relation)); | ||||||||
local_relatives : = relatives + relation.relating_object; | ||||||||
IF SIZEOF(x) > 0 THEN | ||||||||
REPEAT i : = 1 TO HIINDEX(x); | ||||||||
IF NOT acyclic_object_relationship | ||||||||
(x[i], local_relatives, specific_relation) THEN | ||||||||
RETURN(FALSE); | ||||||||
END_IF; | ||||||||
END_REPEAT; | ||||||||
END_IF; | ||||||||
RETURN(TRUE); | ||||||||
END_FUNCTION; |
Определения аргументов:
relation - проверяемый кандидат object_relationship (исходные данные);
relatives - множество объектов, которые функция отыскивает для параметра relating_object аргумента relation (исходные данные);
specific_relation - полностью квалифицированное имя подтипа объекта object_relationship (исходные данные).
D.3 Шаблон отношения