Примечание - Перечень типов характеристик приведен в 4.2.47.1.
3.4.33 слом (knuckle): Пространственная линия, где две поверхности судна встречаются под углом.
Примечание - Элемент обводов корпуса, например острая скула.
3.4.34 длина между перпендикулярами (length between perpendiculars): Расстояние, измеряемое в продольном направлении между носовым и кормовым перпендикулярами.
3.4.35 продольный (longitudinal): Измерение по длине судна.
Примечание - В судовой глобальной системе координат, определенной в настоящем стандарте, продольные размеры - по оси X.
3.4.36 главные размеры (main dimensions): Основные конструктивные, расчетные, наибольшие и габаритные размеры судна, которые используют при анализе и проектировании.
Примечание - Перечень главных размеров приведен в 4.2.78.
3.4.37 средняя часть корпуса (mid-body): Для судов с цилиндрической частью - часть теоретических обводов между кормовой и носовой частью.
Пример - У танкеров имеется цилиндрическая средняя часть корпуса, при этом у военных судов цилиндрическая часть корпуса встречается редко.
3.4.38 теоретический обвод (moulded form): Это графическое изображение (контур) теоретической поверхности и набор проектных параметров различных частей судна, не включающие информацию о толщине материала, из которого изготовлены эти части.
Примечание - Теоретические обводы могут описывать корпус судна, гребной винт, руль, выступающую часть, палубу, надстройку или поверхность, лежащую под конструктивным элементом судна, например переборку.
3.4.39 плазовые координаты (offset): Значение координаты точки (высоты и полушироты) на линии пересечения ортогональной плоскости, параллельной плоскости мидель-шпангоута с теоретическим обводом корпуса судна.
3.4.40 насыщение (outfit, outfitting): Элементы, стационарно закрепленные на судне, не являющиеся частями основных конструктивных систем. Применительно к настоящему стандарту, трубопроводные, электрические системы и системы HVAC <1> относятся к распределенным системам, а не к насыщению.
--------------------------------
<1> Системы отопления, вентиляции и кондиционирования воздуха (ОВКВ).
Пример - люки, леерные устройства, двери, трапы.
3.4.41 килевая качка (pitching): Вращательные колебания вокруг поперечной оси судна.
3.4.42 бортовая качка (rolling): Вращательные колебания вокруг продольной оси судна.
3.4.43 седловатость (sheer): Плоская кривая, определяющая кривизну палубы в продольном направлении.
Примечание - В случае погиби палубы диаметральная плоскость палубы может также иметь и седловатость.
3.4.44 судовая конструкция (ship structure): Конструктивные системы, листы и ребра жесткости, формирующие корпус, палубы и переборки судна.
Примечание - Теоретические обводы могут определять поверхности, по которым устанавливают конструкционные листы и ребра жесткости.
3.4.45 теоретический шпангоут (station): Пересечение поперечной плоскости YZ с теоретическим обводом корпуса.
Примечание - Обычно форма судна определяется 20 поперечными сечениями теоретической поверхности корпуса судна, расположенными на равном расстоянии по длине судна между перпендикулярами. Эти теоретические шпангоуты определяют форму поперечного сечения и используются вместе с ватерлиниями и батоксами для представления 3-мерной каркасной формы судна.
3.4.46 форштевень (stem): Плоская кривая, проходящая от основания судна до самой верхней палубы по диаметральной плоскости судна, образующая носовую часть судна.
3.4.47 конструктивная ватерлиния, летняя грузовая ватерлиния (summer load waterline; design waterline): Ватерлиния, принятая за основу построения теоретического чертежа и соответствующая полученному предварительным расчетом полному водоизмещению судна.
3.4.48 надстройка (superstructure): Закрытое палубой сооружение на верхней палубе, простирающееся от борта до борта или отстоящее от любого из бортов судна на расстояние не более 4% ширины судна.
3.4.49 подруливающее устройство (thruster): Вспомогательное движительное устройство, расположенное в корпусе.
Примечание - Подруливающие устройства часто используют для движения судна лагом вбок.
3.4.50 транец (transom): Плоский или несколько выгнутый наружу поперечный срез кормы судна.
3.4.51 поперечный (transverse): Измерение поперек судна.
Примечание - В судовой глобальной системе координат, определенной в настоящем стандарте, продольные размеры - по оси Y.
3.4.52 идентификатор единообразного ресурса (uniform resource identifier): Компактная строка символов для идентификации абстрактного или физического ресурса. Определяет простое и расширяемое средство для идентификации ресурса.
3.4.53 вертикальный (vertical): Измерение по высоте судна.
Примечание - В судовой глобальной системе координат, определенной в настоящем стандарте, вертикальные размеры - по оси Z.
3.4.54 ватерлиния судна; ВЛ (waterline): Линия пересечения теоретической поверхности корпуса судна с горизонтальной плоскостью.
Примечание - В общем, ватерлиния может быть пересечением любой горизонтальной плоскости с теоретическим обводом корпуса.
3.4.55 открытая палуба; главная палуба (weather deck; main deck): Самая верхняя водонепроницаемая палуба судна.
3.4.56 рысканье (yawing): Вращение судна вокруг своей вертикальной оси.
В настоящем стандарте применены следующие сокращения:
ЗСРП (PICS) - заявление о соответствии реализации прикладному протоколу (protocol implementation conformance statement);
КВЛ - конструктивная ватерлиния;
МАКО (IACS) - Международная ассоциация классификационных обществ (International Association of Classification Societies);
ОМК - общая модель судна;
ПИМ (AIM) - прикладная интерпретированная модель (application interpreted model);
ПП (AP) - прикладной протокол (application protocol);
ПФМ (AAM) - прикладная функциональная модель (application activity model);
ПЭМ (ARM) - прикладная эталонная модель (application reference model);
СИ - метрическая система единиц измерения;
СБ - строительный блок;
ЦВ - центр величины;
ЦТ - центр тяжести;
CAD - система автоматизированного проектирования (computer aided design);
CAM - система автоматизированного производства (computer aided manufacture);
CFD - расчетная гидродинамика (computational fluid dynamics);
GUID - глобально однозначный идентификатор (globally unambiguous identifier);
IMO - Международная морская организация (International Maritime Organisation);
SOLAS - охрана человеческой жизни на море (safety of life at sea).
В этом разделе приведена информация, необходимая для обмена определениями теоретических обводов судна, геометрическими представлениями и соответствующими гидростатическими характеристиками.
Требования к информации определяются как набор функциональных единиц, прикладных объектов и прикладных утверждений. Эти утверждения относятся к индивидуальным прикладным объектам и отношениям между прикладными объектами. Требования к информации определяются с помощью терминологии предметной области данного ПП.
Примечание 1 - Графическое представление требований к информации приведено в приложении G.
Примечание 2 - Требования к информации, соответствующие требованиям к действиям, определенным как входящие в область применения данного ПП, приведены в приложении F.
Примечание 3 - Перечень отображений, приведенный в 5.1, показывает, как интегрированные ресурсы и прикладные интерпретированные конструкции используют для удовлетворения требований к информации данного ПП.
В данном подразделе указаны функциональные единицы для ПП теоретических обводов судна. В настоящем стандарте приведены следующие функциональные единицы:
- basic_geometry;
- configuration_management;
- definitions;
- external_references;
- hull_class_applicability;
- hydrostatics;
- items;
- location_concepts;
- offset_table_representations;
- ship_design_parameter;
- ship_general_characteristics;
- ship_measures;
- ship_moulded_forms;
- surface_representations;
- wireframe_representations.
Функциональная единица basic_geometry обеспечивает судостроительную номенклатуру и категоризацию, заданную точкам, кривым и поверхностям, используемым в представлении теоретических обводов судна.
4.1.1 Функциональная единица basic_geometry
Функциональная единица basic_geometry использует следующие прикладные объекты:
- Ship_curve;
- Ship_curve_with_spacing_position;
- Ship_point;
- Ship_surface.
4.1.2 Функциональная единица configuration_management
Функциональная единица configuration_management указывает информацию, необходимую для отслеживания утверждения, контроля версий, а также изменений определений теоретических обводов судна.
Примечание - Информация об утверждении описывает, когда, кто и что было утверждено и до какого уровня утверждения, а также как утверждения относятся друг к другу. Версии определяют и описывают, какое определение подлежит контролю версий и как разные версии относятся друг к другу, для обеспечения версионности. Изменения описывают состояние изменения, когда и кто изменил какое определение, а также описывают влияние изменения с точки зрения того, были ли созданы, изменены или удалены другие определения или нет.
Функциональная единица configuration_management использует следующие прикладные объекты:
- Alternative_version_relationship;
- Approval_event;
- Approval_history;
- Change;
- Change_definition;
- Change_impact;
- Change_plan;
- Change_realization;
- Change_request;
- Check;
- Envisaged_version_creation;
- Revision;
- Revision_with_context;
- Version_creation;
- Version_deletion;
- Version_history;
- Version_modification;
- Version_relationship;
- Versionable_object_change_event.
4.1.3 Функциональная единица definitions
Функциональная единица definitions описывает абстрактную концепцию для определения элемента, конструкций элементов и взаимосвязей элементов.
Функциональная единица definitions использует следующие прикладные объекты:
- Definition;
- Design_definition;
- Functional_definition;
- General_characteristics_definition.
4.1.4 Функциональная единица external_references
Функциональная единица external_references обеспечивает возможность и механизмы, с помощью которых могут приводиться ссылки на информацию в другом наборе данных модели изделия, или может ссылаться на информацию, не входящую в данный обмен данными или контекст совместного доступа к данным, и определяет конструкции для идентификации и ссылки на стандарты и документы, определенные во внешних библиотеках или вне объема ИСО 10303.
Функциональная единица external_references использует следующие прикладные объекты:
- Document;
- Document_portion;
- Document_reference;
- Document_reference_with_address;
- External_instance_reference;
- External_reference;
- External_storage;
- Universal_resource_locator.
Функциональная единица hull_class_applicability позволяет привязать элемент ко всем корпусам в классе судна или к определенному корпусу. В проектировании на класс все элементы привязаны к классу судна. По умолчанию элемент применяется ко всем корпусам в классе. Изменения в корпусе затрагивают элементы, применяемые к определенным корпусам. Эти изменения могут применяться на уровне предмета или на уровне определения.
Пример 1 - К типам применимости для корпуса на уровне предмета будет относиться добавление новой системы, отсека или оборудования.
Пример 2 - К типам применимости для корпуса на уровне определения будут относиться разные редакции, используемые для указания относящихся к корпусу изменений характеристик и/или геометрии.
Функциональная единица hull_class_applicability использует следующие прикладные объекты:
- Hull_applicability.
Функциональная единица hydrostatics обеспечивает результаты расчетов гидростатических характеристик исходя из экстремальной формы, относящейся к водоизмещению на тихой воде. Экстремальная форма описывает геометрию, которая определяется теоретическим обводом плюс толщиной материала.
Функциональная единица hydrostatics использует следующие прикладные объекты:
- Addition_of_moulded_form;
- Centre_location;
- Displacement_operation;
- Floating_position;
- Hydrostatic_definition;
- Hydrostatic_position_value;
- Hydrostatic_properties_for_constant_floating_position;
- Hydrostatic_property;
- Hydrostatic_property_value;
- Hydrostatic_scalar_value;
- Hydrostatic_table;
- Stability_definition;
- Stability_properties_for_one_floating_position;
- Stability_property;
- Stability_table;
- Subtraction_of_moulded_form.
4.1.7 Функциональная единица items
Функциональная единица items относится к обобщенным конструкциям изделий судна, отражаемым концепцией так называемых "позиций", а также концепцией конструкций позиций и взаимосвязями позиций, в которых элементы позиций собираются и привязываются друг к другу четко определенным способом.
Функциональная единица items использует следующие прикладные объекты:
- Definable_object;
- Global_id;
- Item;
- Item_relationship;
- Item_structure;
- Ship;
- Versionable_object.
4.1.8 Функциональная единица location_concepts
Функциональная единица location_concepts задает информацию для местоположения судна или любой его части в правой трехмерной декартовой системе координат. Кроме того, она задает информацию, необходимую для деления любой оси на интервалы так, чтобы они образовывали реперный базис для точек в системе координат.
Примечание - Система координат - это либо одна единственная глобальная система координат описаний изделий и корня в иерархии, либо локальная система координат. Может существовать любое количество локальных систем координат. Позиции интервалов могут быть определены для любой из трех осей глобальной системы координат. В случае, если базовой системой координат является глобальная система координат, локальное начало координат может быть определено со ссылкой на положения интервалов.
Функциональная единица location_concepts использует следующие прикладные объекты:
- Buttock_table;
- Frame_table;
- Global_axis_placement;
- Local_co_ordinate_system;
- Local_co_ordinate_system_with_position_reference;
- Longitudinal_position;
- Longitudinal_table;
- Spacing_position;
- Spacing_position_with_offset;
- Spacing_table;
- Station_table;
- Transversal_position;
- Transversal_table;
- Vertical_position;
- Vertical_table;
- Waterline_table.
Функциональная единица offset_table_representations предоставляет информацию, необходимую для геометрического представления формы в виде таблицы точек ординат. Представление таблицы ординат определяет форму полностью набором объектов Ship_point. Объекты Ship_point перечислены в секциях, при этом обычно эти секции являются двухмерными. В особых случаях может возникнуть необходимость использования 3D-секций.
Функциональная единица offset_table_representations использует следующие прикладные объекты:
- Offset_point_table_model;
- Offset_table_shape_representation;
- Section_of_offset_point_table.
4.1.10 Функциональная единица ship_design_parameter
Функциональная единица ship_design_parameter предоставляет измеримые факторы, определяющие проектные параметры для каждого теоретического обвода, из которых состоят теоретические обводы судна целиком.
Примечание - Эта информация содержит размеры и отношения, важные для простой характеризации деталей корпуса, палубы, носа, бульба, гребного винта, руля, выступающей части, подруливающего устройства и киля. Функциональная единица также содержит информацию касательно всех наибольших главных размерений теоретических обводов судна.
Функциональная единица ship_design_parameter использует следующие прикладные объекты:
- Appendage_moulded_form_design_parameter;
- Bottom_moulded_form_design_parameter;
- Bulb_moulded_form_design_parameter;
- Deck_moulded_form_design_parameter;
- Hull_moulded_form_design_parameter;
- Midship_tumble;
- Moulded_form_characteristics_definition;
- Propeller_location;
- Propeller_moulded_form_design_parameter;
- Rudder_moulded_form_design_parameter;
- Ship_overall_dimensions;
- Thruster_moulded_form_design_parameter.
4.1.11 Функциональная единица ship_general_characteristics
Функциональная единица ship_general_characteristics дает базовую информацию, которая детализирует размеры и идентификацию судна, не зависит от геометрического контекста и включает в себя скалярные значения основных размерений судна, информацию об определении компаний, связанных с судами, обозначение класса судна и все соответствующие правила и положения.
Функциональная единица ship_general_characteristics использует следующие прикладные объекты:
- Carrier;
- Class_and_statutory_designation;
- Class_notation;
- Class_parameters;
- Navy_ship;
- Owner_designation;
- Principal_characteristics;
- Regulation;
- Research_ship;
- Ship_designation;
- Shiptype;
- Shipyard_designation;
- Working_ship.
4.1.12 Функциональная единица ship_measures
Функциональная единица ship_measures задает информацию для представления мер для физических величин.
Функциональная единица ship_measures использует следующие прикладные объекты:
- Centre_location;
- Derived_unit;
- Named_unit;
- Precision.
Примечание - Дополнительная информация по использованию мер и единиц приведена в L.7.
Функциональная единица ship_moulded_forms задает информацию для описания теоретического обвода, состава теоретических обводов в теоретических обводах судна, представления теоретического обвода и обработки свойств симметрии.
Функциональная единица ship_moulded_forms использует следующие прикладные объекты:
- Moulded_form;
- Moulded_form_boundary_relationship;
- Moulded_form_design_definition;
- Moulded_form_functional_definition;
- Moulded_form_relationship;
- Moulded_form_representation_item;
- Moulded_form_representation_relationship;
- Moulded_form_shape_representation;
- Planar_symmetry;
- Rotational_symmetry;
- Ship_moulded_form;
- Ship_moulded_form_revision;
- Symmetry.
Функциональная единица surface_representations задает информацию, необходимую для представления теоретического обвода в форме соединенных поверхностей, объединяет топологическую и геометрическую информацию, чтобы описать модель поверхности как набор связанных участков поверхности, описывает простую геометрию, такую как плоскости и прямые линии, а также сложную геометрию, такую как B-сплайновые кривые и поверхности. Кроме того, они могут быть связаны с судостроительными терминами. Если кривые и поверхности взаимосвязаны, то такую информацию указывают однозначно с помощью топологии.
Функциональная единица surface_representations использует следующие прикладные объекты:
- Non_manifold_surface_shape;
- Surface_shape_representation;
- Surface_with_identifier.
Функциональная единица wireframe_representations задает информацию, необходимую для представления теоретического обвода в форме каркаса. Функциональная единица объединяет топологическую и геометрическую информации, чтобы описать каркас как набор пересекающихся 2D- или 3D-кривых. Данной функциональной единицей описывается простая геометрия, такая как плоскости и прямые линии, а также сложная геометрия, такая как B-сплайновые кривые. Кроме того, они могут быть связаны с судостроительными терминами.
Функциональная единица wireframe_representations использует следующие прикладные объекты:
- Edge_based_wireframe_shape;
- Knot;
- Ship_curve_segment;
- Wireframe_shape_representation.
В данном подразделе приведены прикладные объекты для прикладного протокола теоретических обводов судна. Каждый прикладной объект является отдельным элементом, реализующим уникальную прикладную концепцию и содержащим атрибуты, определяющие элементы данных этого объекта. Прикладные объекты и их определения приведены в последующих пунктах данного подраздела.
Примечание - Эти атрибуты, унаследованные от прикладных объектов супертипа в прикладной эталонной модели, не повторяются в определениях прикладного объекта подтипа в данном подразделе. Спецификация этих унаследованных атрибутов дана в соответствующем определении прикладного объекта супертипа.
Прикладной объект Addition_of_moulded_form является типом объекта Displacement_operation (см. 4.2.26), в котором водоизмещение объекта Ship_moulded_form (см. 4.2.93) будет увеличено на водоизмещение нового объекта Moulded_form (см. 4.2.61).
4.2.2 Прикладной объект Alternative_version_relationship
Прикладной объект Alternative_version_relationship является взаимосвязью между двумя объектами Versionable_object (см. 4.2.121) одного типа. Каждый Versionable_object является альтернативой другого объекта Versionable_object.
С объектом Alternative_version_relationship связаны следующие данные:
- alternative_1;
- alternative_2;
- reason.
4.2.2.1 Данные alternative_1
Данные alternative_1 определяют альтернативный проект для объекта Versionable_object (см. 4.2.121), определенный данными alternative_2. Прикладное утверждение дано в 4.3.1.
4.2.2.2 Данные alternative_2
Данные alternative_2 определяют альтернативный проект для объекта Versionable_object (см. 4.2.121), определенный данными alternative_1. Прикладное утверждение дано в 4.3.1.
4.2.2.3 Данные reason
Данные reason описывают взаимосвязь между двумя альтернативными проектами.
Прикладной объект Appendage_moulded_form_design_parameter является типом определения Moulded_form_characteristics_definition (см. 4.2.63), которое определяет размеры и отношения для каждого типа выступающей части корпуса судна.
С объектом Appendage_moulded_form_design_parameter связаны следующие данные:
- appendage_breadth;
- appendage_depth;
- appendage_length;
- type_of_appendage;
- user_def_appendage_type.
4.2.3.1 Данные appendage_breadth
Данные appendage_breadth определяют ширину выступающей части.
Примечание - Ширина является вторым наибольшим размером выступающей части.
4.2.3.2 Данные appendage_depth
Данные appendage_depth определяют глубину выступающей части.
Примечание - Глубина является наименьшим размером выступающей части.
4.2.3.3 Данные appendage_length
Данные appendage_length определяют длину выступающей части.
Примечание - Длина является максимальным размером выступающей части.
4.2.3.4 Данные type_of_appendage
Данные type_of_appendage определяют тип выступающей части, определяемый объектом Appendage_moulded_form_design_parameter.
Значение данных вида type_of_appendage должно быть одним из следующих:
- active_fin;
- air_emitter;
- arrays;
- bilge_keel;
- bow_thruster;
- cathodic_protection_anode;
- duck_tail;
- passive_fin;
- rudder;
- sea_chest;
- shaft_bossings;
- shaft_strut;
- skeg;
- spray_rail;
- stern_flap;
- stern_thruster;
- user_defined.
4.2.3.4.1 active_fin
Автоматические стабилизаторы, устанавливаемые на корпусе судна для снижения бортовой качки и рысканья.
4.2.3.4.2 air_emitter
Защитная система, создающая экран из воздушных пузырей вокруг корпуса судна, уменьшающий шум от машин и механизмов в окружающую воду, для маскировки вероятных целей или обеспечения запасных целей.
4.2.3.4.3 arrays
Конструкция, в которой размещается оборудование, используемое для буксируемых или стационарных гидроакустических систем или магнитометров.
4.2.3.4.4 bilge_keel
Скуловой киль.
Пример - Скуловой киль представлен на рисунке 4.
![]() 4.2.3.4.5 bow_thruster
Носовое подруливающее устройство, предназначенное для активного управления судном при маневрировании.
4.2.3.4.6 cathodic_protection_anode
Блоки из расходного материала, устанавливаемые снаружи корпуса, для уменьшения коррозии.
4.2.3.4.7 duck_tail
Конструкция в корме судна, увеличивающая количество воды вокруг гребных винтов в целях уменьшения вибрации, повышения остойчивости и увеличения скорости.
4.2.3.4.8 passive_fin
Стационарное крыло, крепящееся на корпусе судна, изменяющее поток в этой области.
4.2.3.4.9 rudder
Конструкция, крепящаяся вертикально к корме судна и работающая в целях управления направлением судна.
4.2.3.4.10 sea_chest
Кингстонный ящик - ниша в корпусе судна, образованная листовыми конструкциями, используется для подключения систем трубопроводов забортной воды, систем охлаждения и т.д.
4.2.3.4.11 shaft_bossings
Выкружка - локальное изменение теоретических обводов корпуса судна для размещения гребного вала.
Пример - Выкружка гребного вала показана на рисунке 5.
![]() 4.2.3.4.12 stern_flap
Конструкция, установленная на корме судна, для создания вертикальной подъемной силы на транце и для изменения распределения давления на кормовую часть корпуса в целях снижения лобового сопротивления и увеличения скорости.
4.2.3.4.13 shaft_strut
Несущая опора для части гребного вала снаружи корпуса (обычно для установок с двумя или более винтами).
Пример - Типы кронштейнов гребного вала показаны на рисунках 6 и 7.
![]() ![]() 4.2.3.4.14 skeg
Узкая корпусная конструкция в подводной части судна.
4.2.3.4.15 spray_rail
Планка на корпусе судна, предотвращающая попадания водяных брызг.
4.2.3.4.16 stern_thruster
Кормовое подруливающее устройство, которое используется для маневрирования.
4.2.3.4.17 user_defined
Тип выступающей части указывается в атрибуте user_def_appendage_type.
4.2.3.5 Данные user_def_appendage_type
Данные вида user_def_appendage_type указывают определенную пользователем роль или назначение выступающей части. Для объекта Appendage_moulded_form_design_parameter данные вида user_def_appendage_type могут быть не заданы.
Примечание - Данные вида user_def_appendage_type не являются опциональными, если значением данных вида type_of_appendage будет USER_DEFINED.
Прикладной объект Approval_event является значением объекта Event (см. 4.2.33), которое записывает изменение состояния просмотра и приемки или сертификации некоторых данных об изделии в рамках организации.
С объектом Approval_event связаны следующие данные:
- approval_reference;
- result;
- user_defined_result.
4.2.4.1 Данные approval_reference
Данные approval_reference определяют прикладной объект Approval_history (см. 4.2.5), на который повлиял прикладной объект Approval_event. Каждый прикладной объект Approval_event должен ссылаться только на один объект Approval_history. Прикладное утверждение - см. 4.3.2.
Примечание - Атрибут approval_reference является обратным к атрибуту approvals для прикладного объекта Approval_history.
4.2.4.2 Данные result
Данные result определяют решение об утверждении для версии проекта, требующей одобрения.
Значение данных result должно быть одним из следующих:
- approved;
- rejected;
- unapproved;
- user_defined.
Данные об изделии были рассмотрены соответствующей организацией и приняты или сертифицированы для применения в судне.
4.2.4.2.2 rejected
Данные об изделии были рассмотрены соответствующей организацией и не приняты или не сертифицированы для применения в судне.
Примечание - Обычно для замены отклоненных данных об изделии создают другие данные об изделии.
4.2.4.2.3 unapproved
Данные об изделии еще не рассматривались или находятся в процессе рассмотрения для приемки или сертификации организацией.
Код статуса утверждения для конкретного проекта, назначаемый конкретным версиям данных об изделии, должен определяться двумя или более организациями, осуществляющими обмен данными.
4.2.4.3 Данные user_defined_result
Данные user_defined_result определяют статус одобрения, определенный пользователем. Для конкретного Approval_event данные вида user_defined_result могут быть не заданы.
Примечание - Данные user_defined_result не являются опциональными, если полученным значением прикладного объекта Approval_event будет USER_DEFINED.
Прикладной объект Approval_history является набором всех объектов Approval_events (см. 4.2.4) конкретного типа, определенных для какой-то части данных об изделии.
С объектом Approval_history связаны следующие данные:
- approvals;
- status;
- subject.
4.2.5.1 Данные approvals
Данные approvals определяют последовательность объектов Approval_events (см. 4.2.4), которые возникли до настоящего времени. Объект Approval_history должен состоять, как минимум, из одного объекта Approval_event. Прикладное утверждение - см. 4.3.2.
Примечание - Последовательность объектов Approval_events строится в хронологическом порядке.
4.2.5.2 Данные status
Данные status определяют текущее состояние утверждения.
Значение данных status может быть одним из следующих:
- approved;
- rejected;
- unapproved;
- user_defined.
Данные об изделии были рассмотрены соответствующей организацией и приняты или сертифицированы для применения в судне.
4.2.5.2.2 rejected
Данные об изделии были рассмотрены соответствующей организацией и не приняты или не сертифицированы для применения в судне.
Примечание - Обычно для замены отклоненных данных об изделии создаются другие данные об изделии.
4.2.5.2.3 unapproved
Данные об изделии еще не рассматривались или находятся в процессе рассмотрения для приемки или сертификации организацией.
Код статуса утверждения для конкретного проекта, назначаемый конкретным версиям данных об изделии, должен определяться двумя или более организациями, осуществляющими обмен данными.
4.2.5.3 Данные subject
Данные subject задают данные об изделии, к которым относится данное утверждение. Прикладное утверждение - см. 4.3.3.
Примечание - Для прикладного объекта Definition (см. 4.2.23) может быть ноль, один или несколько связанных с ним объектов Approval_history. Если у объекта Definition будет более одного связанного с ним объекта Approval_history, все объекты Approval_history будут разными.
Прикладной объект Bottom_moulded_form_design_parameter является типом объекта Moulded_form_characteristics_definition (см. 4.2.63), содержащим размеры и отношения киля и днища корпуса судна.
Пример - Размеры киля и днища корпуса судна показаны на рисунке 8.
![]() С объектом Bottom_moulded_form_design_parameter связаны следующие данные:
- aft_end_of_flat_of_bottom;
- bilge_radius;
- flat_of_bottom_breadth;
- front_end_of_flat_of_bottom;
- length_of_flat_of_bottom;
- rake_of_keel;
- rise_of_floor.
4.2.6.1 Данные aft_end_of_flat_of_bottom
Данные aft_end_of_flat_of_bottom определяют продольное расстояние от кормового перпендикуляра до задней части плоского днища.
4.2.6.2 Данные bilge_radius
Данные bilge_radius определяют радиус арки, соединяющей прямостенную часть борта корпуса с днищем. Измеряют в поперечном сечении по мидель-шпангоуту.
4.2.6.3 Данные flat_of_bottom_breadth
Данные flat_of_bottom_breadth определяют ширину плоского днища, измеряемую в поперечном сечении по мидель-шпангоуту.
4.2.6.4 Данные front_end_of_flat_of_bottom
Данные front_end_of_flat_of_bottom определяют продольное расстояние от кормового перпендикуляра до передней части плоского днища.
4.2.6.5 Данные length_of_flat_of_bottom
Данные length_of_flat_of_bottom определяют длину плоского днища, измеряемую горизонтально по ДП.
4.2.6.6 Данные rake_of_keel
Данные rake_of_keel определяют угол между ОП и килем судна.
4.2.6.7 Данные rise_of_floor
Данные rise_of_floor определяют расстояние по вертикали от ОП до точки, где линия продолжения скошенного днища встречается с продолжением линии борта судна. Значение данных rise_of_floor измеряется в поперечном сечении на мидель-шпангоуте.
Прикладной объект Bulb_moulded_form_design_parameter является типом объекта Moulded_form_characteristics_definition (см. 4.2.63), содержащим размеры и отношения бульба корпуса судна.
Пример - Размеры носового бульба корпуса судна показаны на рисунке 9.
![]() С объектом Bulb_moulded_form_design_parameter связаны следующие данные:
- bulb_breadth;
- bulb_breadth_pp;
- bulb_depth;
- bulb_depth_pp;
- bulb_frame_section_area_at_pp;
- bulb_length;
- bulb_length_from_pp;
- bulb_location.
4.2.7.1 Данные bulb_breadth
Данные bulb_breadth определяют максимальную ширину бульба.
4.2.7.2 Данные bulb_breadth_pp
Данные bulb_breadth_pp определяют ширину бульба в сечении, параллельном мидель-шпангоуту, проходящему через кормовой или носовой перпендикуляр, в зависимости от размещения бульба.
4.2.7.3 Данные bulb_depth
Данные bulb_depth определяют максимальное вертикальное расстояние от ОП до самой верхней точки бульба.
4.2.7.4 Данные bulb_depth_pp
Данные bulb_depth_pp specifies определяют максимальное вертикальное расстояние от ОП до самой верхней точки бульба по кормовому или носовому перпендикуляру, в зависимости от размещения бульба.
4.2.7.5 Данные bulb_frame_section_area_at_pp
Данные bulb_frame_section_area_at_pp определяют площадь поперечного сечения бульба по кормовому или носовому перпендикуляру, в зависимости от размещения бульба.
4.2.7.6 Данные bulb_length
Данные bulb_length определяют максимальную длину бульба, измеряемую горизонтально по ДП.
4.2.7.7 Данные bulb_length_from_pp
Данные bulb_length_from_pp определяют максимальную длину бульба, измеряемую горизонтально от носового или кормового перпендикуляра, в зависимости от размещения бульба.
4.2.7.8 Данные bulb_location
Данные bulb_location определяют, где размещен бульб, в носу или в корме.
Значение данных bulb_location должно быть одним из следующих:
- bow;
- stern.
Размещение бульба в носу корпуса судна.
Размещение бульба в корме корпуса судна.
Прикладной объект Buttock_table является типом объекта Transversal_table (см. 4.2.113), в котором представлены положения, которые задают размещение баттокса и располагаются на глобальной оси Y.
Прикладной объект Carrier является типом объекта Shiptype (см. 4.2.98), представляющим объект Ship (см. 4.2.88), перевозящим грузы или пассажиров.
С объектом Carrier связаны следующие данные:
- has_type.
4.2.9.1 Данные has_type
Данные has_type определяют тип транспортного судна.
Значение данных has_type должно быть одним из следующих:
- barge;
- barge_for_deck_loading;
- barge_for_liquifiedgas;
- barge_for_oil;
- barge_pontoon;
- bulk_carrier;
- car_carrier;
- car_ferry;
- cargo_ship_carrying_passengers;
- chemical_tanker;
- chemical_tanker_type_1;
- container_carrier;
- cruise_liner;
- dry_cargo_vessel;
- ferry;
- gas_carrier;
- general_cargo_carrier;
- highspeedcraft_cargo;
- highspeedcraft_passenger;
- hydrofoil;
- liquified_gas_tanker;
- LNG_carrier;
- LPG_carrier;
- oil_tanker;
- ore carrier;
- passenger_vessel;
- product_tanker;
- refrigerated_cargo_carrying_ship;
- roro_vessel;
- tanker_for_refrigerated_fruit_juice;
- user_defined.
Примечание - Определение допустимых значений данных has_type - см. 4.2.9.1.1 - 4.2.9.1.29.
Грузовое судно, не оборудованное машинами и механизмами для самоходности и предназначенное для транспортировки грузов.
4.2.9.1.2 barge_for_deck_loading
Грузовое судно, спроектированное как сервисная платформа для осуществления погрузки на палубы судов.
4.2.9.1.3 barge_for_liquefied_gas
Грузовое судно, не оборудованное машинами и механизмами для самоходности и предназначенное для перевозки сжиженного газа.
4.2.9.1.4 barge_for_oil
Грузовое судно, не оборудованное машинами и механизмами для самоходности и предназначенное для перевозки нефти.
4.2.9.1.5 barge_pontoon
Грузовое судно с понтонами, соединенными в баржу, используемое в качестве плавучей вспомогательной платформы.
4.2.9.1.6 bulk_carrier
Грузовое судно, построенное для перевозки насыпных грузов.
4.2.9.1.7 car_carrier
Грузовое судно, используемое для транспортировки автомобилей от изготовителя конечному пользователю.
4.2.9.1.8 car_ferry
Грузовое судно, построенное для транспортировки автомобилей по воде.
4.2.9.1.9 cargo ship carrying passengers
Грузовое судно, построенное для перевозки грузов и пассажиров.
4.2.9.1.10 chemical_tanker
Грузовое судно, спроектированное специально для перевозки химических веществ.
4.2.9.1.11 chemical_tanker_type_1
Грузовое судно, спроектированное специально для перевозки химических веществ 1-го типа.
4.2.9.1.12 container_carrier
Грузовое судно, построенное для перевозки контейнеров.
4.2.9.1.13 cruise_liner
Грузовое судно, построенное для перевозки пассажиров для прогулок и экскурсий.
4.2.9.1.14 dry_cargo_vessel
Грузовое судно, построенное для перевозки сухих, бестарных грузов.
Пример - К типам сухих грузов относится зерно или уголь.
4.2.9.1.15 ferry
Грузовое судно, построенное для перевозки пассажиров, машин, автобусов, грузовиков и поездов по воде.
Примечание - Паром может быть предназначен для перевозки только одного типа груза, например пассажиров.
4.2.9.1.16 gas_carrier
Грузовое судно, спроектированное специально для перевозки газообразных продуктов.
4.2.9.1.17 general_cargo_carrier
Грузовое судно, спроектированное специально для перевозки генеральных грузов.
Примечание - Объект со значением данных general_cargo_carrier перевозит любые грузы, которые не упаковываются, а перевозятся бестарно, например зерно или уголь.
4.2.9.1.18 highspeedcraft_cargo
Грузовое судно, предназначенное для высокоскоростных грузовых перевозок.
4.2.9.1.19 highspeedcraft_passenger
Грузовое судно, предназначенное для высокоскоростных пассажирских перевозок.
4.2.9.1.20 hydrofoil
Грузовое судно, спроектированное так, что достигает скорости за счет подъема корпуса судна из воды на поверхностях подводных крыльев, избегая, таким образом, лобового сопротивления корпуса и волнового сопротивления.
4.2.9.1.21 liquefied_gas_tanker
Грузовое судно, предназначенное специально для транспортировки сжиженных газовых продуктов.
4.2.9.1.22 LNG_carrier
Грузовое судно, предназначенное специально для транспортировки сжиженного природного газа.
4.2.9.1.23 LPG_carrier
Грузовое судно, предназначенное специально для транспортировки сжиженного нефтяного газа.
4.2.9.1.24 oil_tanker
Грузовое судно, предназначенное специально для транспортировки нефти.
4.2.9.1.25 ore_carrier
Грузовое судно, построенное для транспортировки руды
Пример - Тип руды - железная руда.
4.2.9.1.26 passenger_vessel
Грузовое судно, построенное для транспортировки пассажиров.
4.2.9.1.27 product_tanker
Грузовое судно, предназначенное специально для транспортировки нефтепродуктов.
4.2.9.1.28 refrigerated cargo carrying ship
Грузовое судно, построенное для транспортировки грузов, которые необходимо охлаждать или замораживать.
4.2.9.1.29 roro_vessel
Грузовое судно, построенное для транспортировки колесных транспортных средств.
Грузовое судно, предназначенное специально для транспортировки фруктовых соков, которые необходимо охлаждать или замораживать.
Грузовое судно, тип которого не входит в указанный выше перечень (см. 4.2.9.1.1 - 4.2.9.1.30). Подробная информация приведена в атрибуте описания для Shiptype (см. 4.2.98).
Прикладной объект Centre_location представляет собой значения измерений X, Y и Z для значений данных centre_of_buoyancy (см 4.2.48.1.1), centre_of_flotation (см. 4.2.48.1.2) и centre_of_lateral_resistance (см. 4.2.48.1.3).
Прикладной объект Change является типом объекта Item (см. 4.2.52), представляющим фокус всех этапов, связанных с возможным или фактическим изменением модели изделия в результате заявки на внесение изменения конструкторской организации или заказчика.
Примечание - Изменение может привести или не привести к изменению данных модели изделия. Все запланированные или фактические изменения модели изделия документируют в соответствующих объектах Change_definition (см. 4.2.12).
С объектом Change связаны следующие данные:
- the_class.
4.2.11.1 Данные the_class
Данные the_class определяют спецификацию организационной роли изменения.
Пример - К типам класса относятся: запрос на модификацию в главный офис (Headquarter Modification Request) или предложение о внесении изменения в конструкцию (Engineering Change Proposal).
Прикладной объект Change_definition является типом объекта Definition (см. 4.2.23), являющимся обобщением основных дискретных этапов объекта Change (см. 4.2.11). Значением объекта Change_definition может быть Change_plan (см. 4.2.14), Change_realization (см. 4.2.15) или Change_request (см. 4.2.16).
С объектом Change_definition связаны следующие данные:
- author;
- date_time;
- defined_for;
- local_units.
4.2.12.1 Данные author
Данные author определяют лицо или организацию, ответственную за функции объекта Change (см. 4.2.11) в течение периода, длящегося с конца предыдущего, если он есть, до конца данного объекта Change_definition.
4.2.12.2 Данные date_time
Данные date_time определяют дату и время, когда был создан объект Change_definition.
4.2.12.3 Данные defined_for
Данные defined_for определяют прикладной объект Change (см. 4.2.11), к которому применяется объект Change_definition. Прикладное утверждение - см. 4.3.4.
4.2.12.4 Данные local_units
Данные local_units определяют единицы, используемые определением и отличающиеся от единиц, глобально определенных для судна. Значение данных local_units может быть либо Derived_unit (см. 4.2.24) или Named_unit (см. 4.2.70). Для конкретного Change_definition данные вида local_units могут быть не заданы. Прикладные утверждения - см. 4.3.5 и 4.3.6.
4.2.13 Прикладной объект Change_impact
Прикладной объект Change_impact представляет собой набор событий, определяющий влияние, которое окажет или уже оказал объект Change (см. 4.2.11).
С объектом Change_impact связаны следующие данные:
- impact.
4.2.13.1 Данные impact
Данные impact определяют влияние объекта Change (см. 4.2.11) в части создания, изменения или удаления некоторых объектов Definition (см. 4.2.23), объектов Item_structure (см. 4.2.54) или объектов Item_relationship (см. 4.2.53). Прикладное утверждение - см. 4.3.7.
Прикладной объект Change_plan является типом объекта Change_definition (см. 4.2.12), который представляет предлагаемое решение для объекта Change (см. 4.2.11). Объект Change_plan является основанием для действий, необходимых для внедрения объекта Change в модель изделия.
С объектом Change_plan связаны следующие данные:
- checks;
- chosen_solution_for;
- planned_impact.
4.2.14.1 Данные checks
Данные checks определяют проверки, запланированные для объекта Change (см. 4.2.11). Прикладное утверждение - см. 4.3.9.
4.2.14.2 Данные chosen_solution_for
Данные chosen_solution_for определяют идентификацию объекта Change_request (см. 4.2.16), для которого применяется объект Change_plan, Прикладное утверждение - см. 4.3.10.
4.2.14.3 Данные planned_impact
Данные planned_impact определяют оцененное или рассчитанное воздействие объекта Change (см. 4.2.11). Прикладное утверждение - см. 4.3.8.
Примечание - Это влияние, как правило, выбирают из набора данных solution_alternatives в прикладном объекте Change_request (см. 4.2.16).
Прикладной объект Change_realization является типом объекта Change_definition (см. 4.2.12), который определяет фактическое, наблюдаемое воздействие объекта Change (см. 4.2.11).
С объектом Change_realization связаны следующие данные:
- checks;
- impact;
- realization_of.
4.2.15.1 Данные checks
Данные checks определяют утверждение в рамках организации изменений модели изделия, внесенных для внедрения объекта Change (см. 4.2.11). Прикладное утверждение - см. 4.3.12.
4.2.15.2 Данные impact
Данные impact задают идентификацию изменений, внесенных в модель изделия. Прикладное утверждение - см. 4.3.11.
4.2.15.3 Данные realization_of
Данные realization_of определяют объект Change_plan (см. 4.2.14), для которого вносится изменение модели изделия. Прикладное утверждение - см. 4.3.13.
Прикладной объект Change_request является типом прикладного объекта Change_definition (см. 4.2.12), представляющего первый этап объекта Change (см. 4.2.11), когда устанавливается необходимость объекта Change и возможные варианты решений.
С объектом Change_request связаны следующие данные:
- addressee;
- initiator;
- problem;
- solution_alternatives;
- solution_description.
4.2.16.1 Данные addressee
Данные addressee определяют лицо или лицо и организацию, которым адресован запрос. Для конкретного Change_request данные вида addressee могут быть не заданы.
4.2.16.2 Данные initiator
Данные initiator определяют лицо или лицо и организацию, от которых поступает запрос.
4.2.16.3 Данные problem
Данные problem задают текстовое определение проблемы, которая спровоцировала запрос.
4.2.16.4 Данные solution_alternatives
Данные solution_alternatives определяют альтернативные решения, предлагаемые для решения проблемы. Решение описывается в части влияния на объекты Versionable_object (см. 4.2.121). Прикладное утверждение - см. 4.3.14.
4.2.16.5 Данные solution_description
Данные solution_description задают текстовое описание одного или нескольких возможных решений проблемы. Для конкурентного Change_request данные solution_description могут быть не заданы.
Примечание - Это текстовое описание должно присутствовать, если еще не установлены данные вида solution_alternatives, или может расширять информацию, предоставляемую данными вида solution_alternatives.
Прикладной объект Check является типом прикладного объекта Event (см. 4.2.33), которое определяет запланированное или выполненное организацией утверждение для прикладного объекта Change_plan (см. 4.2.14) или объекта Change_realization (см. 4.2.15).
Прикладной объект Class_and_statutory_designation является типом прикладного объекта General_characteristics_definition (см. 4.2.40), который задает определение, присвоенное прикладному объекту Ship (см. 4.2.88) классификационным обществом в целях одобрения проектирования, изготовления и в процессе эксплуатации.
С объектом Class_and_statutory_designation связаны следующие данные:
- class_number;
- local_units;
- the_class;
- the_statutory.
4.2.18.1 Данные class_number
Данные class_number определяют отдельный идентификатор классификационного общества для судна.
4.2.18.2 Данные local_units
Данные local_units определяют единицы, используемые определением и отличающиеся от единиц, глобально определенных для судна. Значение данных local_units может быть одним из следующих: Derived_unit (см. 4.2.24) или Named_unit (см. 4.2.70). Для конкретного Class_and_statutory_designation данные вида local_units могут быть не заданы. В одном объекте Class_and_statutory_designation может быть задано несколько данных local_units. Прикладные утверждения - см. 4.3.17 и 4.3.16.
4.2.18.3 Данные the_class
Данные the_class определяют применимый объект Class_notation (см. 4.2.19) с информацией о типе судна и груза. Прикладное утверждение - см. 4.3.15.
4.2.18.4 Данные the_statutory
Данные the_statutory определяют набор национальных и международных нормативов и стандартов, которым должно соответствовать судно. Прикладное утверждение - см. 4.3.18.
Прикладной объект Class_notation является нотацией, присваиваемой корпусу и машинам и механизмам судна классификационным обществом в результате его действий по одобрению во время проектирования, изготовления и технического обслуживания судна во время эксплуатации.
С объектом Class_notation связаны следующие данные:
- approval_required_for_heavy_cargo;
- approval_required_for_oil_cargo;
- approval_required_loading_unloading_aground;
- approval_required_loading_unloading_grabs;
- class_notations_hull;
- class_notations_machinery;
- class_society;
- ice_class_notation;
- service_area;
- service_factor.
4.2.19.1 Данные approval_required_for_heavy_cargo
Данные approval_required_for_heavy_cargo определяют, необходимо ли одобрение специального упрочнения для тяжелых грузов. Эти нотации относятся к судам для перевозки бестарных грузов и определяют распределение нагрузок в грузовых трюмах. Для конкретного Class_notation данные вида approval_required_for_heavy_cargo могут быть не указаны.
Значение данных approval_required_for_heavy_cargo должно быть одним из следующих:
- HC;
- HC_E;
- HC_EA.
Примечание - Определение всех допустимых значений для данных approval_required_for_heavy_cargo дано в 4.2.19.1.1 - 4.2.19.1.3.
Транспортное судно усилено для перевозки тяжелых грузов. Тяжелые навалочные грузы могут распределяться неравномерно по грузовым трюмам.
4.2.19.1.2 HC_E
Транспортное судно усилено для перевозки тяжелых грузов. Кроме того, также одобрено неравномерное состояние нагружения с пустыми трюмами при осадке при полном водоизмещении. Одобренное сочетание пустых трюмов добавляется в нотацию.
Пример - Использование HC_E: пустые трюмы 2, 3, 5.
Транспортное судно усилено для перевозки тяжелых грузов, при этом любой грузовой трюм может быть пустым при осадке при полном водоизмещении. Одобренное сочетание пустых трюмов добавляется в нотацию.
Пример - Использование HC_EA: пустые трюмы 2, 3, 5 или пустые трюмы 1 - 6.
4.2.19.2 Данные approval_required_for_oil_cargo
Данные approval_required_for_oil_cargo определяют, требуется ли одобрение для перевозки нефтегрузов.
4.2.19.3 Данные approval_required_loading_unloading_aground
Данные approval_required_loading_unloading_aground определяют, требуется ли одобрение для погрузки и выгрузки на мели.
4.2.19.4 Данные approval required loading unloading grabs
Данные approval_required_loading_unloading_grabs определяют, требуется ли одобрение для погрузки и выгрузки с помощью захватных приспособлений.
4.2.19.5 Данные class_notations_hull
Данные class_notations_hull определяют значения, присвоенные корпусу судна классификационным обществом в результате его работы по одобрению, выполненной по корпусу. Для прикладного объекта Class_notation может быть несколько значений данных class_notations_hull.
4.2.19.6 Данные class_notations_machinery
Данные class_notations_machinery определяют значения, присвоенные машинам и механизмам судна классификационным обществом в результате его работы по одобрению, выполненной по машинам и механизмам. Для прикладного объекта Class_notation может быть несколько значений данных вида class_notations_machinery.
4.2.19.7 Данные class_society
Данные class_society определяют наименование и организационные реквизиты классификационного общества, по чьим правилам и нормативам выполняется оценка судна.
4.2.19.8 Данные ice_class_notation
Данные ice_class_notation определяют тип значений класса, присвоенных корпусу, с указанием ледовых условий, в которых одобрена эксплуатация судна. Для конкретного Class_notationice_class_notation данные вида ice_class_notation могут быть не заданы.
4.2.19.9 Данные service_area
Данные service_area определяют район или маршрут эксплуатации судна.
Примечание - Сюда может быть включена информация о фарватере, волновых, погодных и ветровых условиях.
4.2.19.10 Данные service_factor
Данные service_factor определяют район эксплуатации судна, а также волнение, возникающее в этом районе. Значение данных service_factor должно быть в диапазоне от 0,5 до 1,0. Для конкретного Class_notation данные вида service_factor могут быть не заданы.
Прикладной объект Class_parameters является типом прикладного объекта General_characteristics_definition (см. 4.2.40), который определяет длину и скорость судна в соответствии с правилами классификационного общества и нормативным регулированием.
С объектом Class_parameters связаны следующие данные:
- block_coefficient_class;
- design_speed_ahead;
- design_speed_astern;
- length_class;
- length_solas;
- scantlings_draught.
4.2.20.1 Данные block_coefficient_class
Данные block_coefficient_class определяют отношение теоретического объемного водоизмещения к объему блока длиной, равной значению данных length_class, шириной, равной значению данных moulded_breadth, и высотой, равной значению данных scantlings_draught.
4.2.20.2 Данные design_speed_ahead
Данные design_speed_ahead определяют скорость хода вперед, на которую судно спроектировано для эксплуатации.
4.2.20.3 Данные design_speed_astern
Данные design_speed_astern определяют скорость хода назад, на которую судно спроектировано для эксплуатации.
4.2.20.4 Данные length_class
Данные length_class определяют измерение длины судна, определенной в правилах классификационного общества.
4.2.20.5 Данные length_solas
Данные length_solas определяют измерение длины судна, измеряемой в соответствии с международной конвенцией по охране человеческой жизни на море.
4.2.20.6 Данные scantlings_draught
Данные scantlings_draught определяют летнюю грузовую осадку, используемую классификационным обществом в своих расчетах конструктивной целостности и прочности.
Прикладной объект Deck_moulded_form_design_parameter является типом прикладного объекта Moulded_form_characteristics_definition (см. 4.2.63), который определяет главный параметр палубы.
С объектом Deck_moulded_form_design_parameter связаны следующие данные:
- camber;
- defined_for;
- sheer_at_AP;
- sheer_at_FP.
4.2.21.1 Данные camber
Данные camber определяют совокупность геометрических характеристик поперечного сечения палубы в плоскости, параллельной мидель-шпангоуту.
4.2.21.2 Данные defined_for
Данные defined_for определяют прикладной объект Moulded_form (см. 4.2.61), для которого определяется прикладной объект Deck_moulded_form_design_parameter. Прикладное утверждение - см. 4.3.19.
4.2.21.3 Данные sheer_at_AP
Данные sheer_at_AP определяют продольную кривизну палубы в кормовой половине судна. Измеряют по ДП корпуса как разницу между высотой палубы по мидель-шпангоуту и высотой палубы по кормовому перпендикуляру.
Данные sheer_at_FP определяют продольную кривизну палубы в носовой половине корпуса судна. Измеряют по ДП корпуса как разницу между высотой палубы по мидель-шпангоуту и высотой палубы по носовому перпендикуляру.
Прикладной объект Definable_object описывает изделие любого типа, которое может быть описано основными характеристиками. Значением прикладного объекта Definable_object может быть либо Item (см. 4.2.52), Item_relationship (см. 4.2.53) либо Item_structure (см. 4.2.54).
С объектом Definable_object связаны следующие данные: id.
4.2.22.1 Данные id
Данные id определяют глобальный уникальный идентификатор для прикладного объекта Definable_object. Прикладное утверждение - см. 4.3.20.
Прикладной объект Definition является типом прикладного объекта Versionable_object (см. 4.2.121), являющимся основой для всех типов объектов Definable_object (см. 4.2.22). Значением прикладного объекта Definition будет либо Design_definition (см. 4.2.25), Functional_definition (см. 4.2.39), General_characteristics_definition (см. 4.2.40), Moulded_form_characteristics_definition (см. 4.2.64), Change_definition (см. 4.2.12), Spacing_table (см. 4.2.102), либо Local_co_ordinate_system (см. 4.2.56). Эти определения поддерживают следующие судостроительные концепции: проектирование, функция, изготовление, общие характеристики судна, проектные требования, а также параметрические и библиотечные описания объектов.
С прикладным объектом Definition связаны следующие данные:
- defined_for;
- id;
- local_units.
4.2.23.1 Данные defined_for
Данные defined_for определяют объекты Definable_object (см. 4.2.22), которые определяются прикладным объектом Definition. Прикладное утверждение - см. 4.3.21.
4.2.23.2 Данные id
Данные id определяют глобальный уникальный идентификатор для определения. Прикладное утверждение - см. 4.3.23.
4.2.23.3 Данные local_units
Данные local_units определяют единицы, используемые определением и отличающиеся от единиц, глобально определенных для судна. Значением данных local_units может быть Derived_unit (см. 4.2.24) или Named_unit (см. 4.2.70). Для конкретного Definition данные вида local_units могут быть не заданы. В одном объекте Definition может быть задано несколько данных local_units. Прикладные условия - см. 4.3.22 и 4.3.24.
Прикладной объект Derived_unit является единицей измерения, состоящей из элементов, являющихся предопределенными объектами Named_unit (см. 4.2.70) с экспонентами.
Прикладной объект Design_definition является типом прикладного объекта Definition (см. 4.2.23), являющимся основой для всех типов проектных определений. Отличие прикладного объекта Design_definition от прикладного объекта Definition заключается в способности делать ссылки на представления. Значением прикладного объекта Design_definition будет либо Moulded_form_design_definition (см. 4.2.64), Hydrostatic_definition (см. 4.2.45), либо Stability_definition (см. 4.2.103).
С объектом Design_definition связаны следующие данные: representations.
4.2.25.1 Данные representations
Данные representations определяют представления проектного определения. Для конкретного Design_definition данные вида representations могут быть не заданы. В одном объекте Design_definition может быть задано несколько данных representations.
Пример - Прикладной объект Design_definition может иметь несколько представлений формы, например каркас или поверхность.
Прикладной объект Displacement_operation представляет собой расчет для изменения водоизмещения объекта Ship_moulded_form (см. 4.2.93). Это изменение описывается путем добавления или вычитания прикладного объекта Moulded_form (см. 4.2.61). Значением прикладного объекта Displacement_operation может быть Addition_of_moulded_form (см. 4.2.1) или Subtraction_of_moulded_form (см. 4.2.108).
С объектом Displacement_operation связаны следующие данные:
- displacement_of_moulded_form_to_add_or_subtract.
4.2.26.1 Данные displacement_of_moulded_form_to_add_or_subtract
Данные displacement_of_moulded_form_to_add_or_subtract определяют прикладной объект Moulded_form (см. 4.2.61), который либо добавляется к объекту, либо вычитается из объекта Ship_moulded_form (см. 4.2.93). Значение водоизмещения прикладного объекта Moulded_form можно найти в характеристиках конкретного теоретического обвода. Прикладное утверждение - см. 4.3.25.
Прикладной объект Document является типом объекта Versionable_object (см. 4.2.121), который представляет однозначную идентификацию некоего удобного для восприятия человеком информационного элемента, определенного не в ИСО 10303. У документа есть автор, наименование и могут быть версии.
С объектом Document связаны следующие данные:
- author;
- source_type;
- summary;
- title.
4.2.27.1 Данные author
Данные author определяют лицо, организацию или лицо и организацию, являющуюся автором прикладного объекта Document.
4.2.27.2 Данные source_type
Данные source_type определяют тип документа, в распечатанном или в электронном виде, включая его вид.
Пример - К электронным документам относятся форматы PDF, Word, WordPerfect, Text и др.
4.2.27.3 Данные description
Данные description определяют текстовое описание содержания документа. Для конкретного Document данные вида description могут быть не заданы.
4.2.27.4 Данные title
Данные title определяют описательное наименование, состоящее из слова или группы слов.
Прикладной объект Document_portion является спецификацией определенного поднабора или части объекта Document (см. 4.2.27) в обобщенных терминах.
Пример - Подразделом отчета может быть диапазон страниц, определенный их номерами.
С объектом Document_portion связаны следующие данные:
- element_type;
- element_value;
- source.
4.2.28.1 Данные element_type
Данные The element_type определяют имя для данной подгруппы прикладного объекта Document (см. 4.2.27).
Пример - К типам элементов относятся: страница, номера, номера разделов или наименование раздела.
4.2.28.2 Данные element_value
Данные element_value определяют значение для данной подгруппы объекта Document (см. 4.2.27).
Пример - Возможные значения данных вида element_values: номера страниц = "1-10, 15", номера разделов = "3.2.4", наименование раздела = "Введение".
4.2.28.3 Данные source
Данные source определяют прикладной объект Document (см. 4.2.27), к которому относится определенная подгруппа. Прикладное утверждение - см. 4.3.26.
Прикладной объект Document_reference является спецификацией прикладного объекта Document (см. 4.2.27) в части его источника или местонахождения. Значением объекта Document_reference может быть объект Document_reference_with_address (см. 4.2.30).
Пример - Если значением источника объекта Document_reference является книга, указателем может быть индекс раздела или номер страницы.
С прикладным объектом Document_reference связаны следующие данные:
- assigned_document.
4.2.29.1 Данные assigned_document
Данные assigned_document определяют прикладной объект Document (см. 4.2.27) или Document_portion (см. 4.2.28), который должен быть связан с данными изделия. Прикладные утверждения - см. 4.3.27 и 4.3.28.
Прикладной объект Document_reference_with_address является типом прикладного объекта Document_reference (см. 4.2.29) и прикладного объекта External_reference (см. 4.2.35), который определяет указатель местоположения внутри источника.
Прикладной объект Edge_based_wireframe_shape является представлением формы, соответствующим ИСО 10303-501.
Прикладной объект Envisaged_version_creation является типом объекта Versionable_object_change_event (см. 4.2.122), являющимся событием, ведущим к новому прикладному объекту Versionable_object (см. 4.2.121). Под событием понимается событие, которое еще не произошло. Прикладные объекты Definition (см. 4.2.23), Item_structure (см. 4.2.54) или Item_relationship (см. 4.2.53) как предметы события еще не существуют и описываются в части описательных, неформальных свойств.
С объектом Envisaged_version_creation связаны следующие данные:
- base;
- category.
4.2.32.1 Данные base
Данные base определяют объекты Versionable_object (см. 4.2.120), из которых получается предусмотренная новая версия. Прикладное утверждение - см. 4.3.29.
4.2.32.2 Данные category
Данные category определяют классификацию, к которой принадлежит предусмотренное определение.
Прикладной объект Event указывает на то, что что-то произошло в определенное время, в результате действия определенного лица или определенной организации по определенной причине. У объекта Event может быть одно из следующих значений: Check (см. 4.2.17), Versionable_object_change_event (см. 4.2.122) или Approval_event (см. 4.2.4).
С объектом Event связаны следующие данные:
- caused_by;
- caused_when;
- description.
4.2.33.1 Данные caused_by
Данные caused_by определяют лицо или организацию, создающую объект Event.
4.2.33.2 Данные caused_when
Данные caused_when определяют дату и время, когда возник объект Event.
4.2.33.3 Данные description
Данные description определяют дополнительную текстовую информацию для объекта Event.
4.2.34 Прикладной объект External_instance_reference
Прикладной объект External_instance_reference является экземпляром объекта, который не существует в этой области применения.
С объектом External_instance_reference связаны следующие данные:
- entity_type;
- schema_name;
- target_GUID.
4.2.34.1 Данные entity_type
Данные entity_type определяют наименование типа экземпляра, на который приведена внешняя ссылка.
4.2.34.2 Данные schema_name
Данные schema_name определяют схему, в которой определен экземпляр, на который приведена внешняя ссылка.
4.2.34.3 Данные target_GUID
Данные target_GUID определяют глобальный унифицированный идентификатор экземпляра, на который приведена внешняя ссылка. Прикладное утверждение - см. 4.3.30.
Прикладной объект External_reference является абстрактным указанием источника данных, внешнего к набору данных, в котором существует экземпляр данного объекта. Значением прикладного объекта External_reference может быть Document_reference_with_address (см. 4.2.30).
Пример - Такой источник данных указывает прикладной объект Universal_resource_locator (см. 4.2.114).
С объектом External_reference связаны следующие данные:
- description;
- location.
4.2.35.1 Данные description
Данные description определяют некоторую дополнительную информацию в части прикладного объекта External_reference.
4.2.35.2 Данные location
Данные location определяют местонахождение внешней ссылки. В случае прикладного объекта Universal_resource_locator (см. 4.2.115) местонахождением является компьютер, к которому есть доступ с помощью заданного протокола связи. Прикладные утверждения - см. 4.3.31 и 4.3.32.
4.2.36 Прикладной протокол External_storage
Прикладной протокол External_storage указывает местоположение физических документов или деталей, являющихся внешними к текущему обмену данными. Этот объект может быть актуальным при определении местоположения компакт-дисков (CD_ROM), дискет или видеопленок.
Пример - В качестве прикладного объекта External_storage могут служить публичная библиотека или архив компании.
С объектом External_storage связаны следующие данные: location.
4.2.36.1 Данные location
Данные location определяют идентификацию внешнего места хранения, обычно без возможности прямого сетевого доступа к компьютеру.
Прикладной объект Floating_position указывает осадку и пространственное положение судна при погружении и соответствующее объемное водоизмещение.
С объектом Floating_position связаны следующие данные:
- angle_of_heel;
- angle_of_trim;
- breadth_of_waterline;
- draught_at_amidships;
- length_of_waterline;
- moulded_form_displacement.
4.2.37.1 Данные angle_of_heel
Данные angle_of_heel определяют угол вращения судна по оси X, измеряемый в радианах, который измеряется по линии, параллельной глобальной оси Y и ватерлинии. Значение данных angle_of_heel равно нулю, если ДП будет перпендикулярна ватерлинии. Значения данных angle_of_heel has будут положительными при движении правого борта судна вниз.
4.2.37.2 Данные angle_of_trim
Данные angle_of_trim определяют угол, образованный между основной плоскостью и линией, проведенной через осадки на носовом и кормовом перпендикулярах. Значение данных angle_of_trim равно нулю, когда осадка носа судна равна осадке кормы судна. Значения данных angle_of_trim будут положительными при превышении осадки носом осадки кормы.
4.2.37.3 Данные breadth_of_waterline
Данные breadth_of_waterline определяют ширину действующей ватерлинии.
4.2.37.4 Данные draught_at_amidships
Данные draught_at_amidships определяют расстояние от рабочей ватерлинии до теоретического днища судна, измеряемое по ДП на поперечном сечении по мидель-шпангоуту.
4.2.37.5 Данные length_of_waterline
Данные length_of_waterline определяют длину действующей ватерлинии.
4.2.37.6 Данные moulded_form_displacement
Данные moulded_form_displacement определяют водоизмещение судна по действующей ватерлинии (wetted displacement of the ship).
Прикладной объект Frame_table является типом объекта Longitudinal_table (см. 4.2.59), у которого имеются позиции, которые задают размещение шпангоутов, расположенные на глобальной оси X.
Примечание - Шпангоуты используют для внутренней конструкции судна, и они являются конструктивными элементами. У судна может быть более 100 шпангоутов. Кривая пересечения между шпангоутом и теоретическим обводом корпуса является кривой поперечного сечения, проходящего через корпус судна.
Прикладной объект Functional_definition является типом прикладного объекта Definition (см. 4.2.23), являющегося основанием для всех видов данных об эксплуатационных качествах изделия. Обеспечивает возможность определения роли или назначения объекта Definition. Значение каждого прикладного объекта Functional_definition будет либо Moulded_form_functional_definition (см. 4.2.65), либо Ship_type (см. 4.2.98).
С объектом Functional_definition связаны следующие данные:
- local_units;
- user_def_function.
4.2.39.1 Данные local_units
Данные local_units определяют единицы, используемые определением и отличающиеся от единиц, глобально определенных для судна. Значением каждых данных local_units может быть Derived_unit (см. 4.2.24) или Named_unit (см. 4.2.70). Для конкретного Functional_definition данные вида local_units могут быть не заданы. В одном объекте Functional_definition может быть задано несколько данных local_units. Прикладные условия - см. 4.3.33 и 4.3.34.
4.2.39.2 Данные user_def_function
Данные user_def_function задают определенную пользователем роль или назначение объекта Functional_definition. Для конкретного Functional_definition данные вида user_def_function могут быть не заданы.
Прикладной объект General_characteristics_definition является типом объекта Definition (см. 4.2.23), который обеспечивает основную часть документации судна. К нему относятся главные размеры и объемы по контракту объекта Ship (см. 4.2.88). Значение каждого объекта General_characteristics_definition будет либо Class_and_statutory_designation (см. 4.2.18), Owner_designation (см. 4.2.75), Ship_designation (см. 4.2.92), Shipyard_designation (см. 4.2.99), Ship_overall_dimensions (см. 4.2.95), Principal_characteristics (см. 4.2.78), Class_parameters (см. 4.2.20), либо Global_axis_placement (см. 4.2.41).
С объектом General_characteristics_definition связаны следующие данные:
- defined_for.
4.2.40.1 Данные defined_for
Данные defined_for определяют объект Ship (см. 4.2.88), к которому применяется прикладной объект General_characteristics_definition. В одном объекте Ship может быть задано несколько данных вида defined_for. Прикладное утверждение - см. 4.3.35.
Прикладной объект Global_axis_placement является типом объекта General_characteristics_definition (см. 4.2.40), который определяет неподвижную систему правосторонних ортогональных осей, к которой относятся геометрические данные. Прикладной объект Global_axis_placement должен иметь положительную ось Z в направлении вверх, начиная с основания судна, и положительную ось X, идущую вдоль судна на пересечении ДП с основанием. В одном случае она направлена от кормовой части судна к носовой, а в другом - от носовой части к кормовой. Исходной точкой объекта Global_axis_placement может быть любая точка на оси X. Должна быть указана длина кормового перпендикуляра от начала координат и ориентация оси X. При использовании какой-либо другой системы координат, локальной или глобальной, должны быть указаны отношения преобразования между этой системой и прикладным объектом Global_axis_placement.
Пример - Глобальная ось судна показана на рисунке 10.
![]() С объектом Global_axis_placement связаны следующие данные:
- after_perpendicular_offset;
- orientation.
4.2.41.1 Данные after_perpendicular_offset
Данные after_perpendicular_offset определяют расстояние от начала отсчета прикладного объекта Global_axis_placement до кормового перпендикуляра.
4.2.41.2 Данные orientation
Данные orientation определяют направления оси X.
Значение данных orientation должно быть одним из следующих:
- aft_pointing;
- forward_pointing.
Примечание - Определение всех допустимых значений данных вида orientation дано в 4.2.42.2.1, 4.2.42.2.2.
Ориентация глобальной системы координат судна является правосторонней системой, в которой положительная ось X направлена от носовой части судна к кормовой части судна.
Ориентация глобальной системы координат судна является правосторонней системой, в которой положительная ось X направлена от кормовой части судна к носовой части судна.
4.2.42 Прикладной объект Global_id
Прикладной объект Global_id является постоянным глобальным идентификатором, который обеспечивает уникальную идентификацию данных изделия.
С объектом Global_id связаны следующие данные: id.
4.2.42.1 Данные id
Данные id определяют уникальный постоянный идентификатор, формируемый компанией, которая создает данные об изделии.
Прикладной объект Hull_applicability представляет собой идентификацию корпуса судна или диапазон корпусов в классе судов, для которого применяются конкретные данные об изделии.
С объектом Hull_applicability связаны следующие данные:
- definitions_for_hulls;
- end_hull;
- items_for_hulls;
- start_hull.
4.2.43.1 Данные definitions_for_hulls
Данные definitions_for_hulls определяют объекты Definition (см. 4.2.23), применяемые к диапазону корпусов, заданных в данных видов start_hull и end_hull. Прикладное утверждение - см. 4.3.36.
4.2.43.2 Данные end_hull
Данные end_hull определяют конечный корпус в диапазоне корпусов, к которому применяются данные изделия. Для конкретного Hull_applicability данные вида end_hull могут быть не заданы. Если данные the end_hull не заданы, данные изделия будут применяться только к данным start_hull.
4.2.43.3 Данные items_for_hulls
Данные items_for_hulls определяют объекты Item (см. 4.2.52), применяемые к диапазону корпусов, заданных в данных видов start_hull и end_hull. Прикладное утверждение - см. 4.3.37.
4.2.43.4 Данные start_hull
Данные start_hull определяют первый корпус в диапазоне корпусов, к которому применяются данные изделия.
Прикладной объект Hull_moulded_form_design_parameter является типом прикладного объекта Moulded_form_characteristics_definition (см. 4.2.63), который содержит размеры и отношения корпуса судна.
Пример - Размеры корпуса судна показаны на рисунке 43.
С прикладным объектом Hull_moulded_form_design_parameter связаны следующие данные:
- aft_end_of_flat_of_side;
- aft_end_of_parallel_midbody_at_design_draught;
- block_coefficient;
- front_end_of_flat_of_side;
- front_end_of_parallel_midbody_at_design_draught;
- gunwale_radius;
- hull_breadth;
- hull_depth;
- hull_design_draught;
- hull_length_pp;
- hull_length_waterline;
- length_of_flat_of_side;
- length_of_parallel_midbody_at_design_draught;
- length_to_beam_ratio;
- max_frame_section_area_location;
- max_wetted_frame_section_area;
- midship_tumble_data;
- prismatic_coefficient;
- waterline_angle_of_entrance_at_bow;
- waterline_angle_of_entrance_at_stern;
- waterplane_coefficient.
4.2.44.1 Данные aft_end_of_flat_of_side
Данные aft_end_of_flat_of_side определяют продольное расстояние от кормового перпендикуляра до кормовой оконечности плоскости борта, где корпус судна имеет вертикальную форму.
4.2.44.2 Данные aft_end_of_parallel_midbody_at_design_draught
Данные aft_end_of_parallel_midbody_at_design_draught определяют продольное расстояние от кормового перпендикуляра до кормовой границы цилиндрической вставки, измеряемое по конструктивной ватерлинии.
4.2.44.3 Данные block_coefficient
Данные block_coefficient определяют отношение объемного водоизмещения по теоретическому чертежу к объему блока, длина которого равна значению данных length_between_perpendiculars, ширина равна наибольшему значению данных moulded_breadth подводной части, а глубина равна значению данных design_draught.
4.2.44.4 Данные front_end_of_flat_of_side
Данные front_end_of_flat_of_side определяют продольное расстояние от кормового перпендикуляра до носовой оконечности плоскости борта, где корпус судна имеет вертикальную форму.
4.2.44.5 Данные front_end_of_parallel_midbody_at_design_draught
Данные front_end_of_parallel_midbody_at_design_draught определяют продольное расстояние от кормового перпендикуляра до носовой границы цилиндрической вставки, измеряемое по конструктивной ватерлинии.
4.2.44.6 Данные gunwale_radius
Данные gunwale_radius определяют радиус дуги, соединяющей борт корпуса с верхней палубой. Измеряют по мидель-шпангоуту. Для конкретного Hull_moulded_form_design_parameter данные вида gunwale_radius могут быть не заданы.
4.2.44.7 Данные hull_breadth
Данные hull_breadth определяют наибольшую ширину отдельного корпуса судна по мидель-шпангоуту и значению design_draught. Для конкретного Hull_moulded_form_design_parameter данные вида hull_breadth могут быть не заданы.
Примечание - Для конкретного Hull_moulded_form_design_parameter данные вида hull_breadth могут быть не заданы для нормальных форм, где значение данных hull_breadth будет идентично значению данных moulded_breadth в прикладном объекте Principal_characteristics (см. 4.2.78). Этот параметр необходим только для специальных судов, например многокорпусные суда с разными корпусами и разными ширинами корпусов.
4.2.44.8 Данные hull_depth
Данные hull_depth определяют для каждого отдельного корпуса судна вертикальное расстояние от основной плоскости до самой верхней палубы, где палуба соединяется с бортом судна. Для конкретного Hull_moulded_form_design_parameter данные вида hull_depth могут быть не заданы.
Примечание - Для конкретного Hull_moulded_form_design_parameter данные вида hull_depth могут быть не заданы для нормальных форм, где значение данных hull_depth будет идентично значению данных вида moulded_depth в прикладном объекте Principal_characteristics (см. 4.2.78). Этот параметр необходим только для специальных судов, например многокорпусные суда с разными корпусами и разными значениями hull_depths.
4.2.44.9 Данные hull_design_draught
Данные hull_design_draught определяют осадку, на которую спроектирован корпус судна.
Примечание - Для конкретного Hull_moulded_form_design_parameter данные вида hull_design_draught могут быть не заданы для нормальных форм, где значение данных hull_design_draught будет идентично значению данных вида design_draught в прикладном объекте Principal_characteristics (см. 4.2.78). Этот параметр необходим только для специальных судов, например многокорпусные суда с разными корпусами и разными значениями hull_design_draughts.
4.2.44.10 Данные hull_length_pp
Данные hull_length_pp определяют длину, измеряемую от кормового перпендикуляра до носового перпендикуляра отдельного корпуса судна. Для конкретного Hull_moulded_form_design_parameter данные вида hull_length_pp могут быть не заданы.
Примечание - Для конкретного Hull_moulded_form_design_parameter данные вида могут быть не заданы для нормальных форм, где значение данных hull_length_pp будет идентично значению данных length_between_perpendiculars в прикладном объекте Principal_characteristics (см. 4.2.78). Этот параметр необходим только для специальных судов, например многокорпусные суда с разными корпусами и разными значениями данных вида hull_length_pps.
4.2.44.11 Данные hull_length_waterline
Данные hull_length_waterline определяют габаритную длину корпуса, измеряемую по продольной оси корпуса при значении данных design_draught waterline. Для конкретного Hull_moulded_form_design_parameter данные вида hull_length_waterline могут быть не заданы.
4.2.44.12 Данные length_of_flat_of_side
Данные length_of_flat_of_side определяют длину прямостенной части борта, где корпус судна имеет вертикальную форму.
4.2.44.13 Данные length_of_parallel_midbody_at_design_draught
Данные length_of_parallel_midbody_at_design_draught определяют длину цилиндрической вставки судна.
4.2.44.14 Данные length_to_beam_ratio
Данные length_to_beam_ratio определяют отношение длины корпуса по ширине осадки судна по конструктивной ватерлинии.
4.2.44.15 Данные max_frame_section_area_location
Данные max_frame_section_area_location определяют продольное расстояние сечения шпангоута с наибольшей площадью подводной части при расчетной осадке от кормового перпендикуляра.
Для конкретного Hull_moulded_form_design_parameter данные max_frame_section_area_location могут быть не заданы.
Примечание - У большинства судов с параллельной средней частью значение данных max_frame_section_area_location будет на мидель-шпангоуте на половине длины между перпендикулярами.
4.2.44.16 Данные max_wetted_frame_section_area
Данные max_wetted_frame_section_area определяют максимальную смоченную площадь сечения шпангоута при расчетной осадке.
Примечание - Для судовых корпусов нормальной формы это будет плоскость мидель-шпангоута. Для особых форм, например парусных яхт, значение данных max_wetted_frame_section_area может быть равно сечению, находящемуся на 1/3 длины судна от кормы.
4.2.44.17 Данные midship_tumble_data
Данные midship_tumble_data определяют специальный расчетный параметр, используемый для определения плоскости мидель-шпангоута. Для конкретного Hull_moulded_form_design_parameter данные вида midship_tumble_data могут быть не заданы. Прикладное утверждение - см. 4.3.38.
4.2.44.18 Данные prismatic_coefficient
Данные prismatic_coefficient определяют отношение водоизмещения по теоретическому чертежу к объему призмы, длина которой равна длине между перпендикулярами, а площадь поперечного сечения равна площади плоскости мидель-шпангоута судна.
4.2.44.19 Данные waterline_angle_of_entrance_at_bow
Данные waterline_angle_of_entrance_at_bow определяют угол входа ватерлинии в носовой оконечности судна. Для конкретного Hull_moulded_form_design_parameter данные вида waterline_angle_of_entrance_at_bow могут быть не заданы.
4.2.44.20 Данные waterline_angle_of_entrance_at_stern
Данные waterline_angle_of_entrance_at_stern определяют угол схода ватерлинии в кормовой оконечности судна. Для конкретного Hull_moulded_form_design_parameter данные вида waterline_angle_of_entrance_at_stern могут быть не заданы.
4.2.44.21 Данные waterplane_coefficient
Данные waterplane_coefficient определяют отношение площади конструктивной ватерлинии судна к площади прямоугольника с длиной, равной длине между перпендикулярами, и шириной, равной теоретической ширине при конструктивной осадке.
Прикладной объект Hydrostatic_definition является типом прикладного объекта Design_definition (см. 4.2.25), который описывает взаимосвязь между прикладным объектом Ship_moulded_form (см. 4.2.93), набором изменений водоизмещения этого прикладного объекта Ship_moulded_form и разными объектами Hydrostatic_table (см. 4.2.51). Эти изменения могут быть вызваны различными сочетаниями приемных патрубков и выступающих частей со значениями прикладного объекта Ship_moulded_form.
С объектом Hydrostatic_definition связаны следующие данные:
- defined_for;
- displacement_changes;
- displacement_changes_description;
- representations.
4.2.45.1 Данные defined_for
Данные defined_for определяют объект Ship (см. 4.2.88), для которого определен прикладной объект Hydrostatic_definition. Прикладное утверждение - см. 4.3.41.
4.2.45.2 Данные displacement_changes
Данные displacement_changes определяют перечень объектов Displacement_operation (см. 4.2.26), в которых описываются сложения или вычитания из значения объекта Ship_moulded_form (см. 4.2.93) из-за сочетаний приемных патрубков и выступающих частей. В одном объекте Hydrostatic_definition может быть задано несколько данных вида displacement_changes. Прикладное утверждение - см. 4.3.39.
Пример - Для корпуса с трубой для носовых подруливающих устройств гидростатические характеристики будут меняться за счет включения трубы подруливающего устройства в корпус судна. Такое включение будет изменением водоизмещения.
4.2.45.3 Данные displacement_changes_description
Данные description определяют текстовое описание изменения водоизмещения. Для конкретного Hydrostatic_definition данные вида displacement_changes_description могут быть не заданы.
4.2.45.4 Данные representations
Данные representations определяют объекты Hydrostatic_table (см. 4.2.51), которые представляют прикладной объект Hydrostatic_definition. Прикладное утверждение - см. 4.3.40.
Прикладной объект Hydrostatic_position_value является типом объекта Hydrostatic_property_value (см. 4.2.49), который определяет размещение значения гидростатической характеристики в глобальной системе координат. При необходимости прикладной объект Hydrostatic_property (см. 4.2.48) действует через свой прикладной объект Hydrostatic_position_value.
С объектом Hydrostatic_position_value связаны следующие данные: position.
4.2.46.1 Данные position
Данные position определяют размещение в глобальной системе координат, через которую действует объект Hydrostatic_property (см. 4.2.48). Прикладное утверждение - см. 4.3.42.
Прикладной объект Hydrostatic_properties_for_constant_floating_position относится к гидростатическим характеристикам для одного отдельного прикладного объекта Floating_position (см. 4.2.37).
С объектом Hydrostatic_properties_for_constant_floating_position связаны следующие данные:
- definition_of_floating_position;
- hydrostatic_property_values;
- related_hydrostatic_table.
4.2.47.1 Данные definition_of_floating_position
Данные definition_of_floating_position определяют прикладной объект Floating_position (см. 4.2.37), для которого действительны объекты Hydrostatic_property_value (см. 4.2.49). Прикладное утверждение - см. 4.3.43.
Данные hydrostatic_property_values определяют гидростатические характеристики судна для отдельного объекта Floating_position (см. 4.2.37). Прикладное утверждение - см. 4.3.44.
4.2.47.3 Данные related_hydrostatic_table
Данные related_hydrostatic_table определяют набор объектов прикладного объекта Hydrostatic_table (см. 4.2.51), с которыми связан прикладной объект Hydrostatic_properties_for_constant_floating_position. Прикладное утверждение - см. 4.3.46.
Примечание - Соответствующий атрибут данных вида related_hydrostatic_table attribute является обратным элементом атрибута для объекта Hydrostatic_table.
Прикладной объект Hydrostatic_property является гидростатическим параметром, используемым для описания гидростатической характеристики судна. Все гидростатические характеристики зависят от объекта Floating_position (см. 4.2.37) судна.
С объектом Hydrostatic_property связаны следующие данные:
- property_type;
- property_unit.
4.2.48.1 Данные property_type
Данные property_type определяют тип необходимого параметра.
Значение данных вида property_type должно быть одним из следующих:
- centre_of_buoyancy;
- centre_of_flotation;
- centre_of_lateral_resistance;
- longitudinal_metacentric_height;
- longitudinal_second_moment_of_area_of_waterplane;
- mid_ship_section_area;
- moment_for_unit_change_of_trim;
- transverse_metacentric_height;
- transverse_second_moment_of_area_of_waterplane;
- waterplane_area;
- wetted_surface_area.
Этот параметр указывает центр погруженного объема подводной части корпуса судна, измеряемый в глобальной системе координат.
Примечание - Параметр центр величины обозначают заглавной буквой B.
Этот параметр определяет геометрический центр тяжести площади ватерлинии теоретического обвода корпуса в глобальной системе координат.
Этот параметр определяет размещение центра всех сил, возникающих из-за бокового сопротивления судна при его движении лагом вбок. Это размещение является свойством формы теоретического обвода корпуса и измеряется в глобальной системе координат. Это размещение необходимо, например, при проектировании подруливающих устройств в носу и в корме судна.
4.2.48.1.4 longitudinal_metacentric_height
Этот параметр определяет высоту по вертикали от центра тяжести судна до продольного метацентра. Продольный метацентр определяют как точку пересечения линии действия силы плавучести с линией действия восстанавливающей силы, возникающей при изменении дифферента.
4.2.48.1.5 longitudinal_second_moment_of_area_of_waterplane
Этот параметр определяет момент инерции площади ватерлинии вокруг поперечной оси.
4.2.48.1.6 mid_ship_section_area
Этот параметр определяет площадь подводной части сечения теоретического обвода корпуса по мидель-шпангоуту.
4.2.48.1.7 moment_for_unit_change_of_trim
Этот параметр определяет момент вокруг поперечной оси, необходимый для изменения разницы между носовой и кормовой осадками на одну единицу.
4.2.48.1.8 transverse_metacentric_height
Этот параметр определяет высоту по вертикали от центра тяжести судна до поперечного метацентра. Поперечный метацентр определяют как точку пересечения линии действия силы плавучести с линией действия восстанавливающей силы, возникающей при накренении судна.
Пример - Центр тяжести судна до поперечного метацентра показан на рисунке 11. Остойчивость формы показана на рисунке 50.
![]() 4.2.48.1.9 transverse_second_moment_of_area_of_waterplane
Этот параметр определяет момент инерции площади ватерлинии вокруг продольной оси.
4.2.48.1.10 waterplane_area
Этот параметр определяет площадь ватерлинии. Ватерлиния - линия соприкосновения поверхности тихой воды с корпусом плавающего судна.
4.2.48.1.11 wetted_surface_area
Этот параметр определяет площадь смоченной поверхности судна.
4.2.48.2 Данные property_measure
Данные property_measure определяют единицу измерения объекта Hydrostatic_property. Значением данных вида property_measure может быть Centre_location (см. 4.2.10). Прикладное утверждение - см. 4.3.45.
Прикладной объект Hydrostatic_property_value является гидростатическим параметром, описывающим гидростатическую характеристику судна. Прикладной объект Hydrostatic_property_value зависит от объекта Floating_position (см. 4.2.37) судна. Значением объекта Hydrostatic_property_value может быть Hydrostatic_position_value (см. 4.2.46) или Hydrostatic_scalar_value (см. 4.2.50).
Прикладной объект Hydrostatic_scalar_value является типом объекта Hydrostatic_property_value (см. 4.2.49), определяющим объект Hydrostatic_property_value, измеряемый значением без направления.
С объектом Hydrostatic_scalar_value связаны следующие данные:
- scalar.
4.2.50.1 Данные scalar
Данные вида scalar определяют значение для объекта Hydrostatic_property (см. 4.2.48).
Прикладной объект Hydrostatic_table представляет собой гидростатические характеристики и значения для данного объекта Hydrostatic_definition (см. 4.2.45). Прикладной объект Hydrostatic_table состоит из перечня значений объекта Hydrostatic_properties_for_constant_floating_position (см. 4.2.47), где каждая запись охватывает все гидростатические характеристики судна для разных значений объектов Floating_position (см. 4.2.37). Поскольку гидростатические характеристики относятся к экстремальной форме, для создания экстремальной формы из теоретического обвода используют равномерную толщину обшивки.
С объектом Hydrostatic_table связаны следующие данные:
- items;
- mean_shell_thickness;
- name;
- properties_in_the_hydrostatic_table.
4.2.51.1 Данные items
Данные items определяют объект Hydrostatic_properties_for_constant_floating_position (см. 4.2.47), описывающий все гидростатические характеристики судна, для отдельного объекта Floating_position (см. 4.2.37). Прикладное утверждение - см. 4.3.46.
4.2.51.2 Данные mean_shell_thickness
Данные mean_shell_thickness определяют реальное значение средней толщины внешней обшивки, которое может использоваться для определения соответствующей экстремальной формы для гидростатических характеристик судна, включая толщину.
Пример - Измерение толщины обшивки показано на рисунке 12.
![]() 4.2.51.3 Данные name
Данные name указывают определенное пользователем или системой имя для объекта Hydrostatic_table.
4.2.51.4 Данные properties_in_the_hydrostatic_table
Данные properties_in_the_hydrostatic_table определяют перечень объектов Hydrostatic_property (см. 4.2.48) для прикладного объекта Hydrostatic_table. Прикладное утверждение - см. 4.3.47.
Прикладной объект Item является типом объекта Definable_object (см. 4.2.22), являющимся дискретным идентифицируемым объектом, который используется в одной или нескольких работах по проектированию, производству или эксплуатации. Прикладной объект Item представляет собой нечто, создаваемое в результате физической или умственной работы или (автоматически) получаемое из одного или нескольких других объектов Items. Прикладной объект Item может не представлять физический реальный объект; он также может представлять некую абстрактную концепцию. Прикладной объект Item обеспечивает функциональность для обеспечения наличия взаимосвязей с другими прикладными объектами Items и для существования в виде элемента в прикладном объекте Item_structure (см. 4.2.54). Значением каждого объекта Item будет Change (см. 4.2.11), Ship (см. 4.2.88), Ship_moulded_form (см. 4.2.93) или Moulded_form (см. 4.2.61).
С объектом Item связаны следующие данные:
- description;
- documentation;
- name;
- ship_context.
4.2.52.1 Данные description
Данные description определяют текстовую характеристику объекта Item. Для конкретного Item данные вида description могут быть не заданы.
4.2.52.2 Данные documentation
Данные documentation определяют ссылки на дополнительные сопроводительные документы, имеющиеся для объекта Item. Прикладное утверждение - см. 4.3.48.
4.2.52.3 Данные name
Данные name определяют удобочитаемую человеком текстовую подпись концепции, представляемой объектом Item.
4.2.52.4 Данные ship_context
Данные ship_context определяют прикладной объект Item, входящий в состав объекта Ship (см. 4.2.88), в части его применимости к объекту Ship. Для конкретного Item данные вида ship_context могут быть не заданы. Прикладное утверждение - см. 4.3.49.
Прикладной объект Item_relationship является типом объектов Definable_object (см. 4.2.22) и Versionable_object (см. 4.2.121), определяющим связь с двумя объектами Item (см. 4.2.52). Эти связанные объекты Item имеют общую функцию или работу или зависят друг от друга. Значением каждого прикладного объекта Item_relationship будет прикладной объект Moulded_form_relationship (см. 4.2.66).
С объектом Item_relationship связаны следующие данные:
- external_item_1;
- external_item_2;
- item_1;
- item_2.
Данные external_item_1 определяют соответствующий объект Item объекта Item_relationship в случае, когда он является экземпляром объекта Item, на который дана внешняя ссылка. Для конкретного Item_relationship данные вида external_item_1 могут быть не заданы. Прикладное утверждение - см. 4.3.50.
Данные external_item_2 определяют соответствующий объект Item объекта Item_relationship в случае, когда он является экземпляром объекта Item, на который дана внешняя ссылка. Для конкретного Item_relationship данные вида external_item_2 могут быть не заданы. Прикладное утверждение - см. 4.3.50.
4.2.53.3 Данные item_1
Данные item_1 определяют соответствующий объект Item взаимосвязи в случае, когда он в той же модели экземпляра, что и объект Item. Для конкретного Item_relationship данные вида item_1 могут быть не заданы. Прикладное утверждение - см. 4.3.51.
4.2.53.4 Данные item_2
Данные item_2 определяют соответствующий объект Item взаимосвязи в случае, когда он в той же модели экземпляра, что и объект Item. Для конкретного Item_relationship данные вида item_2 могут быть не заданы. Прикладное утверждение - см. 4.3.51.
Прикладной объект Item_structure является типом объектов Definable_object (см. 4.2.22) и Versionable_object (см. 4.2.121), являющимся собранием объектов Item (см. 4.2.52), возможно, связанных объектами Item_relationship (см. 4.2.53). Прикладной объект Item_structure формирует график без каких-либо ограничений относительно количества записей, связи или цикличности. Значением каждого Item_structure является Ship_moulded_form (см. 4.2.93).
С объектом Item_structure связаны следующие данные:
- external_items;
- external_relationships;
- items;
- relationships.
4.2.54.1 Данные external_items
Данные external_items определяют объекты Item, внешне принадлежащие прикладному объекту Item_structure. Прикладное утверждение - см. 4.3.52.
4.2.54.2 Данные external_relationships
Данные external_relationships определят взаимосвязи (внешние) между объектами Item (см. 4.2.52), принадлежащими прикладному объекту Item_structure. Прикладное утверждение - см. 4.3.52.
4.2.54.3 Данные items
Данные items определяют объекты Item, локально принадлежащие прикладному объекту Item_structure. Прикладное утверждение - см. 4.3.53.
4.2.54.4 Данные relationships
Данные relationships определяют взаимосвязи (местные) между объектами Item (см. 4.2.52), принадлежащими прикладному объекту Item_structure. Прикладное утверждение - см. 4.3.54.
4.2.55 Прикладной объект Knot
Прикладной объект Knot является точкой вершины (пучка кривых) с дополнительной информацией для представления каркаса, заданного для судна. Прикладной объект Knot является угловой точкой ячейки в каркасной сетке с информацией о пересекающихся кривых судна в этой точке и информацией о касательной в этой точке.
С прикладным объектом Knot связаны следующие данные:
- intersecting_ship_curves;
- tangent_information.
4.2.55.1 Данные intersecting_ship_curves
Данные intersecting_ship_curves определяют ссылку на кривые судна, пересекающиеся в прикладном объекте Knot. Прикладное утверждение - см. 4.3.55.
4.2.55.2 Данные tangent_information
Данные tangent_information определяют направление и величину касательной в прикладном объекте Knot. Для конкретного Knot данные вида tangent_information могут быть не заданы.
Примечание - Эта информация может использоваться для систем, для которых отсутствует достаточная информация о геометрии кривых.
Прикладной объект Local_co_ordinate_system является типом прикладного объекта Definition (см. 4.2.23), который используют для определения местоположения объекта в пространстве. Прикладной объект Local_co_ordinate_system всегда определяется в части другой системы координат. Это может быть Global_axis_placement (см. 4.2.41) или другой объект Local_co_ordinate_system, являющийся элементом этой же иерархии. Значением каждого прикладного объекта Local_co_ordinate_system может быть Local_co_ordinate_system_with_position_reference (см. 4.2.57).
Пример - Локальная система координат показана на рисунке 13.
Примечание 1 - Локальные оси и точка отсчета обрабатываются так же, как для axis2_placement_3d. Axis2_placement_3d является сущностью ресурса STEP, определенного в ИСО 10303-42.
Примечание 2 - Прикладной объект local_co_ordinate system всегда формирует правостороннюю систему.
![]() С объектом Local_co_ordinate_system связаны следующие данные: parent.
4.2.56.1 Данные parent
Данные parent определяют лежащую в основе систему координат, которая служит пространством определения для текущей системы координат. Прикладные утверждения - см. 4.3.56 и 4.3.57.
Прикладной объект Local_co_ordinate_system_with_position_reference является типом объекта Local_co_ordinate_system (см. 4.2.56), который напрямую ссылается на уникальный объект Global_axis_placement (см. 4.2.41) в качестве своего прямого предка. Его размещение определяется ссылками на продольный, вертикальный или поперечный набор, возможно, с использованием дополнительного значения ординаты теоретического чертежа (расстояние). Как вариант, могут указываться абсолютные координаты. Также действительны сочетания координат и привязок. Прикладной объект Local_co_ordinate_system_with_position_reference не должен определять вращения как преобразования в глобальную систему в качестве результата, т.е. его оси должны быть параллельны осям объекта Global_axis_placement.
С объектом Local_co_ordinate_system_with_position_reference связаны следующие данные:
- longitudinal_ref;
- transversal_ref;
- vertical_ref.
4.2.57.1 Данные longitudinal_ref
Данные longitudinal_ref определяют объект Longitudinal_position (см. 4.2.58), возможно со значением ординаты теоретического чертежа, или значение абсолютной координаты, по продольной оси глобальной системы координат. Для конкретного Local_co_ordinate_system_with_position_reference данные вида longitudinal_ref могут быть не заданы. Прикладное утверждение - см. 4.3.58.
4.2.57.2 Данные transversal_ref
Данные transversal_ref определяют объект Transversal_position (см. 4.2.113), возможно со значением ординаты теоретического чертежа, или значение абсолютной координаты, по поперечной оси глобальной системы координат. Для конкретного Local_co_ordinate_system_with_position_reference данные вида transversal_ref могут быть не заданы. Прикладное утверждение - см. 4.3.58.
4.2.57.3 Данные vertical_ref
Данные vertical_ref определяют объект Vertical_position (см. 4.2.123), возможно со значением ординаты теоретического чертежа, или значением абсолютной координаты, по вертикальной оси глобальной системы координат. Для конкретного Local_co_ordinate_system_with_position_reference данные вида vertical_ref могут быть не заданы. Прикладное утверждение - см. 4.3.58.
Прикладной объект Longitudinal_position является типом объекта Spacing_position (см. 4.2.100), который находится на глобальной оси X.
Прикладной объект Longitudinal_table является типом объекта Spacing_table (см. 4.2.102), у которого есть положения, находящиеся по продольной оси (ось X) глобальной системы координат. Значением каждого объекта Longitudinal_table может быть либо Frame_table (см 4.2.38), либо Station_table (см. 4.2.107).
С объектом Longitudinal_table связаны следующие данные: spacing_table_representations.
4.2.59.1 Данные spacing_table_representations
Данные вида spacing_table_representations определяют продольные положения, входящие в состав объекта Longitudinal_table. Прикладное утверждение - см. 4.3.59.
4.2.60 Прикладной объект Midship_tumble
Прикладной объект Midship_tumble определяет специальный расчетный параметр, используемый для определения плоскости мидель-шпангоута.
Пример - Завал по мидель-шпангоуту показан на рисунке 14.
![]() С объектом Midship_tumble связаны следующие данные:
- tumble_in_at_side;
- tumble_in_at_top;
- tumble_out_at_bottom;
- tumble_out_at_side.
4.2.60.1 Данные tumble_in_at_side
Данные tumble_in_at_side определяют высоту, с которой начинается завал шпангоута (измеряют от ОП).
4.2.60.2 Данные tumble_in_at_top
Данные tumble_in_at_top определяют величину завала шпангоута по оси Y (измеряют от максимальной полушироты корпуса).
4.2.60.3 Данные tumble_out_at_bottom
Данные tumble_out_at_bottom определяют наклон борта (измеряют на ОП от максимальной полушироты).
4.2.60.4 Данные tumble_out_at_side
Данные tumble_out_at_side определяют высоту, с которой начинается наклон борта (измеряют от ОП).
Прикладной объект Moulded_form является типом объекта Item (см. 4.2.52), входящим в состав объекта Ship_moulded_form (см. 4.2.93). Прикладной объект Moulded_form определяет геометрическую форму составной части судна. Отдельные типы объектов прикладного объекта Moulded_form могут также определяться набором размеров.
Пример - Корпус судна с бульбообразным носом и трубами для подруливающих устройств показан на рисунке 15.
Примечание - Прикладной объект Moulded_form не включает толщину (или любую другую информацию), материала, из которого он изготавливается. Существует разница между прикладным объектом Moulded_form и прикладным объектом Ship_surface (см. 4.2.97). Прикладной объект Moulded_form является физическим элементом, входящим в состав объекта Ship_moulded_form. Прикладной объект Ship_surface является представлением объекта Moulded_form. Прикладной объект Moulded_form представлен одним или несколькими объектами Ship_surface.
![]() для подруливающих устройств
4.2.62 Прикладной объект Moulded_form_boundary_relationship
Прикладной объект Moulded_form_boundary_relationship является типом объекта Moulded_form_relationship (см. 4.2.66), определяющим взаимосвязь между двумя теоретическими обводами, который задает одну из границ первого теоретического обвода как его пересечение со вторым теоретическим обводом.
С объектом Moulded_form_boundary_relationship связаны следующие данные:
- item_1;
- item_2.
4.2.62.1 Данные item_1
Данные item_1 определяют объект Moulded_form (см. 4.2.61), для которого определяется граница. Для конкретного Moulded_form_boundary_relationship данные вида item_1 могут быть не заданы. Прикладное утверждение - см. 4.3.60.
Примечание - Если данные вида item_1 не заданы, должен быть задан атрибут external_item_1 для прикладного объекта Item_relationship (см. 4.2.53.1).
4.2.62.2 Данные item_2
Данные item_2 определяют объект Moulded_form (см. 4.2.61), который определяет одну из границ объекта Moulded_form, определяемую данными вида item_1. Для конкретного Moulded_form_boundary_relationship данные вида item_2 могут быть не заданы. Прикладное утверждение - см. 4.3.61.
Примечание - Если данные вида item_2 не заданы, должен быть задан атрибут external_item_2 для прикладного объекта Item_relationship (см. 4.2.53.2).
Прикладной объект Moulded_form_characteristics_definition является типом объекта Definition (см. 4.2.23), определяющим расчетные параметры для разных типов объектов Moulded_form (см. 4.2.61). Эта информация содержит размеры и отношения, важные для простой характеризации деталей корпуса, носа, гребного винта, руля, выступающей части, подруливающего устройства и днища.
Значениями прикладного объекта Moulded_form_characteristics_definition могут быть: Hull_moulded_form_design_parameter (см. 4.2.44), Deck_moulded_form_design_parameter (см. 4.2.21), Bottom_moulded_form_design_parameter (см. 4.2.6), Bulb_moulded_form_design_parameter (см. 4.2.7), Propeller_moulded_form_design_parameter (см. 4.2.80), Rudder_moulded_form_design_parameter (см. 4.2.86), Thruster_moulded_form_design_parameter (см. 4.2.112) или Appendage_moulded_form_design_parameter (см. 4.2.3).
Примечание - Если данные характеристик теоретического обвода будут отличаться от информации, имеющейся для любого геометрического представления, приоритет будут иметь геометрические данные. На теоретическом обводе основываются водоизмещение и смоченная внешняя поверхность. С точки зрения теории судна, этот же параметр, основанный на экстремальной форме, учитывающей толщину, может быть более практичным.
С объектом Moulded_form_characteristics_definition связаны следующие данные:
- defined_for;
- moulded_form_displacement;
- moulded_form_outer_surface.
4.2.63.1 Данные defined_for
Данные defined_for определяют объект Moulded_form (см. 4.2.61), для которого определен прикладной объект Moulded_form_characteristics_definition. Прикладное утверждение - см. 4.3.62.
4.2.63.2 Данные moulded_form_displacement
Данные moulded_form_displacement определяют подводное водоизмещение отдельного объекта Moulded_form (см. 4.2.61).
4.2.63.3 Данные moulded_form_outer_surface
Данные moulded_form_outer_surface определяют смоченную внешнюю поверхность отдельного объекта Moulded_form (см. 4.2.61).
Прикладной объект Moulded_form_design_definition является типом объекта Design_definition (см. 4.2.25), задающим определение объекта Moulded_form (см. 4.2.61).
С объектом Moulded_form_design_definition связаны следующие данные:
- borders;
- defined_for;
- moulded_surface;
- representations;
- status.
4.2.64.1 Данные borders
Данные borders определяют границы теоретического обвода, заданного конкретной геометрией или путем взаимосвязей с другими объектами Moulded_form (см. 4.2.61). Порядок границ должен иметь значение, однако правило, что конечная точка границы [n] = начальная точка границы [n + 1], отсутствует. Кроме того, две границы могут пересекаться или может быть необходимо (прямо) удлинить одну или обе границы, чтобы они пересекались. Для конкретного Moulded_form_design_definition данные вида borders могут быть не заданы. Прикладные утверждения - см. 4.3.66, 4.3.67 и 4.3.70.
4.2.64.2 Данные defined_for
Данные defined_for определяют объекты Moulded_form (см. 4.2.61), которые определяет прикладной объект Moulded_form_design_definition. Прикладное утверждение - см. 4.3.65.
4.2.64.3 Данные moulded_surface
Данные moulded_surface определяют лежащую в основе геометрию поверхности для определения теоретического обвода. Эта геометрия может определяться отдельной поверхностью, каркасной обшивкой, состоящей из сетки кривых, моделью поверхности на основе граней или таблицей точек смещения. Для конкретного Moulded_form_design_definition данные вида moulded_surface могут быть не заданы. Прикладные утверждения - см. 4.3.67, 4.3.69, 4.3.63 и 4.3.64.
4.2.64.4 Данные representations
Данные representations задают определение формы для теоретического обвода. Значением определения формы может быть либо Edge_based_wireframe_shape (см. 4.2.31), либо Non_manifold_surface_shape (см. 4.2.72). Прикладные утверждения - см. 4.3.63 и 4.3.64.
4.2.64.5 Данные status
Данные status определяют, какое геометрическое определение содержится в данных вида moulded_surface и representations, связанных с прикладным объектом Moulded_form_design_definition, полное или частичное. Для конкретного Moulded_form_design_definition данные вида status могут быть не заданы.
Значение данных вида status должно быть одним из следующих:
- complete;
- partial.
4.2.64.5.1 complete
Геометрическое определение, заданное для объекта Moulded_form_design_definition, является полным.
4.2.64.5.2 partial
Геометрическое определение, заданное для объекта Moulded_form_design_definition, является частичным.
Прикладной объект Moulded_form_functional_definition является типом объекта Functional_definition (см. 4.2.39), определяющим функцию части судна, которая определена базовым объектом Moulded_form (см. 4.2.61).
С объектом Moulded_form_functional_definition связаны следующие данные:
- defined_for;
- the_function.
4.2.65.1 Данные defined_for
Данные вида defined_for определяют объект Moulded_form (см. 4.2.61), для которого определен прикладной объект Moulded_form_functional_definition. В одном объекте Moulded_form_functional_definition может быть задано несколько объектов Moulded_form. Прикладное утверждение - см. 4.3.71.
4.2.65.2 Данные the_function
Данные the_function определяют функциональность объекта Moulded_form (см. 4.2.61), для которого определен прикладной объект Moulded_form_functional_definition.
Значение данных вида the_function должно быть одним из следующих:
- appendage;
- bulbous_bow;
- bulbous_stern;
- deck;
- double_bottom;
- double_ship_hull;
- frame;
- grating;
- horizontal_girder;
- keel;
- longitudinal_bulkhead;
- longitudinal_girder;
- non_structural_bulkhead;
- pressure_hull;
- propeller;
- rudder;
- ship_hull;
- superstructure;
- thruster;
- transom;
- transverse_bulkhead;
- user_defined.
4.2.65.2.1 appendage
Часть, которая добавляется к внешней поверхности корпуса судна для улучшения характеристик судна.
Пример - Типы выступающих частей (см. рисунки 4 - 7). К выступающим частям можно отнести скуловой киль, кронштейны гребного вала и выкружки гребного вала, крылья и прочее.
4.2.65.2.2 bulbous_bow
Подводная форма носа, предназначенная для сглаживания носовой волны и уменьшения сопротивления судна.
Пример - Судно с бульбообразным носом показано на рисунке 16.
![]() 4.2.65.2.3 bulbous_stern
Подводная форма кормы, предназначенная для улучшения подачи потока на гребной винт и повышения эффективности гребного винта.
4.2.65.2.4 deck
Горизонтальная разделительная конструкция корпуса судна, находящаяся над днищем или двойным дном.
Пример - Палуба и переборки показаны на рисунке 17.
![]() 4.2.65.2.5 double_bottom
Внутреннее днище корпуса судна при двойной обшивке корпуса судна.
Пример - Двойное дно показано на рисунках 18 и 19.
![]() ![]() double_ship_hull
4.2.65.2.6 double_ship_hull
Внутренние борта корпуса судна при двойной обшивке корпуса судна.
Пример - Двойной корпус судна показан на рисунке 20.
![]() 4.2.65.2.7 frame
Вертикальный конструктивный элемент, расположенный поперечно в судне, участвующий в обеспечении прочности судна.
Пример - Шпангоуты и палубы показаны на рисунке 21.
![]() 4.2.65.2.8 grating
Настил из металлических листов, расположенный в горизонтальной плоскости судна или близко к ней (далее - настил) внутри отсека, не входящий в состав главных конструктивных систем, но обеспечивающий доступ экипажу судна.
4.2.65.2.9 horizontal_girder
Продольный основной конструктивный элемент, лежащий в горизонтальной плоскости судна.
Пример - Горизонтальные балки показаны на рисунке 22.
![]() 4.2.65.2.10 keel
Основная продольная днищевая корпусная конструкция, проходящая в ДП.
Примечание - У парусных яхт киль имеет особую форму и включает дополнительный вес для повышения остойчивости веса.
4.2.65.2.11 longitudinal_bulkhead
Вертикальный конструктивный элемент, расположенный в судне в продольном направлении, образующий границу отсека и принимающий существенное участие в делении судна на водонепроницаемые отсеки и обеспечении прочности судна.
4.2.65.2.12 longitudinal_girder
Продольный основной конструктивный элемент, лежащий в вертикальной плоскости судна.
Пример - Продольные балки показаны на рисунке 22.
4.2.65.2.13 non_structural_bulkhead
Переборка, используемая для деления на отсеки, а не как несущая конструкция.
4.2.65.2.14 pressure_hull
Особая конструкция корпуса для подводной эксплуатации, предназначенная выдерживать забортное давление в подводном положении. Используется для подводных аппаратов или любого промышленного подводного оборудования.
4.2.65.2.15 propeller
Устройство для преобразования вращательного момента на валу главного двигателя в силу тяги, необходимой для движения судна или для его маневрирования.
Пример - Гребной винт показан на рисунке 24.
4.2.65.2.16 rudder
Главный инструмент для маневрирования, используемый для управляемости (по направлению) судна.
Пример - Руль показан на рисунке 23.
![]() ![]() 4.2.65.2.17 ship_hull
Основной корпус судна, предназначенный для перевозки грузов или пассажиров, или корпус для остойчивости и дополнительной плавучести.
Пример - Корпус судна показан на рисунке 20.
4.2.65.2.18 superstructure
Палубная конструкция, находящаяся над верхней палубой.
Пример - Палубная конструкция показана на рисунке 26.
4.2.65.2.19 thruster
Тоннель подруливающего устройства. Обычно подруливающее устройство работает в тоннеле для улучшения маневренности судна.
Пример - Подруливающее устройство показано на рисунке 25.
![]() ![]() 4.2.65.2.20 transom
Плоский или несколько выгнутый наружу поперечный срез кормы судна.
Пример - Транцевая корма показана на рисунке 27.
![]() 4.2.65.2.21 transverse_bulkhead
Вертикальный основной конструктивный элемент, расположенный в судне в поперечном направлении, образующий границу отсека и принимающий существенное участие в делении судна на водонепроницаемые отсеки и в обеспечении прочности судна.
Пример - Поперечная переборка показана на рисунке 28.
![]() 4.2.65.2.22 user_defined
Функция прикладного объекта Moulded_form (см. 4.2.61) не известна или не предусмотрена ничем вышеназванным.
Прикладной объект Moulded_form_relationship является типом объекта Item_relationship (см. 4.2.53), описывающим отношение между двумя объектами Moulded_form (см. 4.2.61). Набор объектов Moulded_form_relationship может описывать иерархию взаимосвязанных между собой объектов Moulded_form, которые вместе обеспечивают описание объекта Ship_moulded_form (см. 4.2.93).
Пример - Объект Moulded_form_relationship может описывать отношение между объектом Moulded_form корпуса судна и соответствующего гребного винта.
С объектом Moulded_form_relationship связаны следующие данные:
- item_1;
- item_2.
4.2.66.1 Данные item_1
Данные item_1 определяют объект Moulded_form (см. 4.2.61), который составляет основу объекта Moulded_form_relationship. Для конкретного Moulded_form_relationship данные вида item_1 могут быть не заданы. Прикладное утверждение - см. 4.3.72.
Примечание - Если данные вида item_1 не заданы, должен быть задан атрибут external_item_1 для прикладного объекта Item_relationship (см. 4.2.53.1).
4.2.66.2 Данные item_2
Данные вида item_2 описывают Moulded_form (см. 4.2.61), который должен быть связан с данными вида item_1. Для конкретного Moulded_form_relationship данные вида item_2 могут быть не заданы. Прикладное утверждение - см. 4.3.72.
Примечание - Если данные вида item_2 не заданы, должен быть задан атрибут external_item_2 для прикладного объекта Item_relationship (см. 4.2.53.2).
Прикладной объект Moulded_form_representation_item является представлением теоретического обвода некой части судна. В этом представлении используется либо сетка точек, сетка геометрических кривых, либо поверхности нулевой толщины для определения теоретического обвода судна или части судна. Значением объекта Moulded_form_representation_item может быть Ship_point (см. 4.2.96), Ship_curve (см. 4.2.89) или Ship_surface (см. 4.2.97).
4.2.68 Прикладной объект Moulded_form_representation_relationship
Прикладной объект Moulded_form_representation_relationship является отношением между двумя объектами Moulded_form_shape_representation (см. 4.2.69).
С объектом Moulded_form_representation_relationship связаны следующие данные:
- description;
- id;
- rep_1;
- rep_2.
4.2.68.1 Данные description
Данные description задают определенное пользователем описание назначения отношения. Для конкретного Moulded_form_relationship данные вида description могут быть не заданы.
4.2.68.2 Данные id
Данные id определяют контекстно-зависимый идентификатор для Moulded_form_representation_relationship.
4.2.68.3 Данные rep_1
Данные rep_1 определяют объект Moulded_form_shape_representation (см. 4.2.69), который составляет основу объекта Moulded_form_representation_relationship. Прикладное утверждение - см. 4.3.73.
4.2.68.4 Данные rep_2
Данные rep_2 определяют объект Moulded_form_shape_representation (см. 4.2.69), который должен быть связан с данными вида rep_1. Прикладное утверждение - см. 4.3.73.
Прикладной объект Moulded_form_shape_representation описывает форму объекта Moulded_form (см. 4.2.61) с помощью геометрических моделей, топологических моделей и геометрических элементов. Геометрические конструктивы в объекте Moulded_form_shape_representation могут указывать Ship_point (см. 4.2.96), Ship_curve (см. 4.2.89) или Ship_surface (см. 4.2.97). Значением каждого Moulded_form_shape_representation будет либо Offset_table_shape_representation (см. 4.2.74), Wireframe_shape_representation (см. 4.2.125), либо Surface_shape_representation (см. 4.2.109).
Примечание - Прикладной объект Moulded_form_shape_representation является абстрактным по своему характеру и не детализирует геометрию, но дает ссылки на топологию и геометрию, которыми он может обладать.
С объектом Moulded_form_shape_representation связаны следующие данные:
- moulded_form_representation_id;
- moulded_form_symmetry.
4.2.69.1 Данные moulded_form_representation_id
Данные moulded_form_representation_id определяют контекстно-зависимую метку для Moulded_form_shape_representation. Для конкретного Moulded_form_shape_representation данные вида moulded_form_representation_id могут быть не заданы.
4.2.69.2 Данные moulded_form_symmetry
Данные moulded_form_symmetry определяют симметрию для Moulded_form_shape_representation. Для объекта Moulded_form (см. 4.2.61) возможна планарная симметрия и симметрия вращения. Для конкретного Moulded_form_shape_representation данные вида moulded_form_symmetry могут быть не заданы. Прикладное утверждение - см. 4.3.745.
Прикладной объект Named_unit является объектом предопределенной единицы, указанной в ИСО 10303-41.
Прикладной объект Navy_ship является типом Shiptype (см. 4.2.98), представляющим собой судно, эксплуатируемое военным командованием.
С объектом Navy_ship связаны следующие данные:
- has_type.
4.2.71.1 Данные has_type
Данные has_type определяют тип объекта Navy_ship.
Значение данных вида has_type должно быть одним из следующих:
- aircraft_carrier;
- auxiliary_oiler;
- corvette;
- cruiser;
- destroyer;
- fleet_auxiliary_vessel;
- frigate;
- landing_platform_dock;
- landing_platform_helicopter;
- mine_warfare_ship;
- patrol_force_vessel;
- service_craft;
- submarine;
- user_defined.
4.2.71.1.1 aircraft_carrier
Тип судна, предназначенный для размещения самолетов и/или вертолетов в ходе длительных противолодочных операций, а также для защиты истребителей, с полным разведывательным и ударным потенциалами.
Пример - Задействованное воздушное судно может включать функцию короткого взлета и вертикальной посадки (STOVAL), короткого взлета, но посадки с аэрофинишером (STOBAR) или традиционный взлет (CTOL).
4.2.71.1.2 auxiliary_oiler
Тип судна, предназначенный для пополнения жидких запасов других судов в море во время операций, с возможностями вертикальной передачи (VERTREP) твердых грузов.
Примечание - Судно имеет устойчивую платформу, подходящую для посадки вертолетов (в т.ч. аварийной), а также помещения для хранения и технического обслуживания.
4.2.71.1.3 corvette
Тип судна, который спроектирован как малое судно сопровождения оперативной группы.
Примечание - Корветы приспособлены, прежде всего, для противолодочной обороны.
4.2.71.1.4 cruiser
Тип судна, предназначенный для прикрытия оперативных групп авианосцев.
Примечание - Крейсеры (многие с управляемыми ракетами или с вертолетами на борту) обеспечивают средства противовоздушной обороны и противолодочной борьбы. Крейсеры также обеспечивают защиту от угроз противокорабельных крылатых ракет увеличенной дальности, особенно при наличии средств радиоэлектронного противодействия противника.
4.2.71.1.5 destroyer
Большое надводное боевое судно, используемое для ведения операций с ударными, противолодочными и десантными силами, а также для выполнения задач прикрытия и сопровождения.
Примечание - Эсминец также может быть оборудован вертолетами, что обеспечивает дополнительные возможности.
4.2.71.1.6 fleet_auxiliary_vessel
Тип судна, предназначенный для снабжения боевых судов в море топливом, продовольствием, запасами и боеприпасами.
Примечание - Вспомогательное судно также обеспечивает авиационные платформы, десантную поддержку для военно-морского флота и морской пехоты, а также морской транспорт для армейских частей. Существует множество типов вспомогательных судов на флоте.
4.2.71.1.7 frigate
Тип судна, который можно охарактеризовать как океанское судно сопровождения общего назначения. Оперативные требования устанавливают, чтобы фрегаты выполняли обязанности судов, способных защищать оперативную группу от современных угроз с воздуха.
Примечание - Фрегаты могут также предоставлять командные и жилые помещения. Вторичные средства включают борьбу с надводными судами, артиллерийскую поддержку с моря и противолодочную оборону.
4.2.71.1.8 landing platform dock
Тип судна, специально предназначенный для перевозки крупных вооруженных сил и вспомогательного оборудования в открытом океане; поддерживает маневренную высадку на вражеские берега с использованием бортовых вертолетов и десантно-высадочных средств, а также координирует военно-морские, воздушные и наземные аспекты десантных операций с помощью средств командования, управления и связи.
4.2.71.1.9 landing platform helicopter
Тип судна, специально разработанный как десантный вертолетоносец, который позволяет осуществлять быструю тактическую переброску воздушно-десантных войск и техники для проведения морских десантных операций на берегу.
Примечание - Он также может стоять у побережья на стратегическом расстоянии в качестве сдерживающей оперативной роли. Его роли в мирное время включают транспортировку войск и оборудования, а также гуманитарные задачи, например помощь при стихийных бедствиях.
4.2.71.1.10 mine_warfare_ship
Судно противоминной обороны (MCMV), специально сконструированное для поиска, траления (механическими, акустическими или магнитными средствами) и обезвреживания мин как в прибрежных, так и в глубоких открытых акваториях. Поскольку судно спроектировано так, чтобы обеспечить его минимальную магнитную сигнатуру, корпуса судов противоминной обороны часто изготавливают из стали с низким магнитным полем или из многослойной фанеры.
4.2.71.1.11 patrol_force_vessel
Судно, размер которого может быть разным в зависимости от роли, для которой оно было спроектировано.
Примечание - Крупные морские патрульные суда (OPV) используют для задач пожаротушения, спасения или снабжения, другие используют в качестве судов защиты, иногда с отрядом морской пехоты и полужесткими плавсредствами, действующими в качестве отряда быстрого реагирования. Некоторые морские патрульные суда имеют ледостойкие корпуса и вертолетную площадку для использования их в качестве исследовательских судов в арктических или антарктических регионах. Размер, маневренность и другие эксплуатационные характеристики небольших прибрежных патрульных судов делают их идеально подходящими для патрулирования, поисково-спасательных операций в прибрежных районах, а также в портах, гаванях и других ограниченных акваториях.
4.2.71.1.12 service_craft
Небольшое судно, предназначенное для оказания определенных услуг флоту в гаванях и портах.
Примечание - К ним относятся буксиры, обслуживающие вспомогательные суда, баржи, патрульные катера, спасательные суда, плавучие доки и т.д. К другим служебным судам, обеспечивающим поддержку, относятся более крупные океанские суда, такие как транспортные, исследовательские и исследовательские суда, ремонтные суда, грузовые суда, плавучие госпитали и т.п.
4.2.71.1.13 submarine
Океанское судно с высокой боеспособностью, предназначенное для выполнения задач борьбы как с подводными, так и надводными судами.
Примечание - Для выполнения этих функций подводная лодка, как правило, несет тяжелые торпеды, самонаводящееся оружие класса "подводная лодка-поверхность" или лодочные мины. Подводные лодки способны действовать в подводном положении на мелководье, в открытом океане, а также в водах от тропиков до Арктики.
4.2.71.1.14 user_defined
Тип судна, не относящийся к предопределенным типам, перечисленным выше.
Примечание - Подробная информация приведена в атрибуте описания объекта Shiptype (см. 4.2.99).
Прикладной объект Non_manifold_surface_shape является представлением формы, соответствующим ИСО 10303-508.
Прикладной объект Offset_point_table_model задает форму объекта Moulded_form (см. 4.2.61), определяемую набором объектов Ship_point (см. 4.2.96). Объекты Ship_point перечислены в секциях.
Примечание - Обычно секции в объекте Offset_point_table_model являются 2d-секциями. В особых обстоятельствах может возникнуть необходимость использования 3d-секций. Тогда значением объекта offset_point_table_type должен быть user_defined_table, а секции таблицы ординат, представляющие 3d-кривые, могут быть любой 3d-формы.
С объектом Offset_point_table_model связаны следующие данные:
- offset_point_table_sections;
- offset_point_table_type.
4.2.73.1 Данные offset_point_table_sections
Данные offset_point_table_sections определяют перечень секций, которые детализируют отдельные секции точек в таблице ординат. Прикладное утверждение - см. 4.3.75.
Пример - Общим примером может быть таблица ординат теоретического чертежа с ординатами ватерлинии. Тогда все точки в одной секции представляют одну ватерлинию.
4.2.73.2 Данные offset_point_table_type
Данные offset_point_table_type определяют тип таблицы ординат и тип секции, где находятся точки ординат.
Значение данных вида offset_point_table_type должно быть одним из следующих:
- buttock_table;
- station_table;
- user_defined_table;
- waterline_table.
Примечание - Определение всех допустимых значений данных вида offset_point_table_type дано в 4.2.74.2.1 - 4.2.74.3.4.
Данные Offset_point_table_model, определяющие, что точки ординат в таблице плазовых ординат - это точки, находящиеся на батоксах в плоскости XZ.
4.2.73.2.2 station_table
Данные Offset_point_table_model, определяющие, что точки ординат в таблице плазовых ординат - это точки, находящиеся на теоретических шпангоутах в плоскости XZ.
4.2.73.2.3 user_defined_table
Данные Offset_point_table_model, определяющие, что секция для точек ординат не указана.
Данные Offset_point_table_model, определяющие, что точки ординат в таблице плазовых ординат - это точки, находящиеся на ватерлиниях в плоскости XY.
Прикладной объект Offset_table_shape_representation является типом объекта Moulded_form_shape_representation (см. 4.2.69), описывающим форму объекта Moulded_form (см. 4.2.61) с помощью точек ординат.
С объектом Offset_table_shape_representation связаны следующие данные:
- items.
4.2.74.1 Данные items
Данные items определяют набор объектов Offset_point_table_model (см. 4.2.73), которые создают объект Offset_table_shape_representation. Прикладное утверждение - см. 4.3.76.
Прикладной объект Owner_designation является типом объекта General_characteristics_definition (см. 4.2.40), определяющим организации, которые заказывают, владеют и управляют судном.
С объектом Owner_designation связаны следующие данные:
- local_units;
- managing_company;
- ordering_company;
- owner_approval;
- owning_company.
4.2.75.1 Данные local_units
Данные local_units определяют единицы, используемые определением и отличающиеся от единиц, глобально определенных для судна. Значением данных вида local_units может быть Derived_unit (см. 4.2.24) или Named_unit (см. 4.2.70). Для конкретного Owner_designation данные вида local_units могут быть не заданы. В одном объекте Owner_designation может быть задано несколько данных вида local_units. Прикладные утверждения - см. 4.3.77 и 4.3.78.
4.2.75.2 Данные managing_company
Данные managing_company определяют организацию, которая отвечает за управление и эксплуатацию судна.
4.2.75.3 Данные ordering_company
Данные ordering_company определяют организацию, которая заказала судно на верфи.
4.2.75.4 Данные owner_approval
Данные owner_approval указывают на то, что судовладелец утвердил проект судна. Для конкретного Owner_designation данные вида owner_approval могут быть не заданы.
4.2.75.5 Данные owning_company
Данные owning_company определяют организацию, владеющую судном на законных основаниях.
4.2.76 Прикладной объект Planar_symmetry
Прикладной объект Planar_symmetry является типом Symmetry (см. 4.2.111), дающим информацию о планарной симметрии для любой части судна. Прикладной объект Planar_symmetry детализирует плоскость симметрии для данной части судна.
С объектом Planar_symmetry связаны следующие данные:
- the_symmetry_plane.
4.2.76.1 Данные the_symmetry_plane
Данные the_symmetry_plane определяют плоскость симметрии в определяющей системе координат данной части. Если только одна половина части определяется геометрией, то это должна быть геометрия, описывающая часть, на которую указывает вертикальная ось.
4.2.77 Прикладной объект Precision
Прикладной объект Precision представляет собой геометрическую точность системы САПР (CAD), из которой были получены данные об изделии.
С объектом Precision связаны следующие данные:
- minimum_point_spacing.
4.2.77.1 Данные minimum_point_spacing
Данные minimum_point_spacing определяют минимальное расстояние между двумя точками, которые считаются совпадающими в исходной системе САПР (CAD).
Прикладной объект Principal_characteristics является типом объекта General_characteristics_definition (см. 4.2.40), определяющим основные параметры формы теоретического обвода корпуса. Объект Principal_characteristics также содержит данные, необходимые в последующих итерациях процесса разработки корпуса, когда рассматривается гидростатика.
С объектом Principal_characteristics связаны следующие данные:
- block_coefficient;
- design_deadweight;
- design_draught;
- length_between_perpendiculars;
- max_draught_at_ap;
- max_draught_at_fp;
- min_draught_at_ap;
- min_draught_at_fp;
- moulded_breadth;
- moulded_depth.
4.2.78.1 Данные block_coefficient
Данные block_coefficient определяют отношение объемного водоизмещения по теоретическому чертежу к объему блока, длина которого равна значению данных вида length_between_perpendiculars, ширина равна наибольшему значению данных moulded_breadth подводной части, а глубина равна значению данных design_draught. Данные вида block_coefficient следует определять только для однокорпусных судов. Для конкретного Principal_characteristics данные вида block_coefficient могут быть не заданы.
4.2.78.2 Данные design_deadweight
Данные design_deadweight указывают полную грузоподъемность судна. Дедвейт - это разность между водоизмещением судна в полном грузу и водоизмещением порожним.
4.2.78.3 Данные design_draught
Данные design_draught определяют осадку, на которую спроектировано судно для эксплуатации.
4.2.78.4 Данные length_between_perpendiculars
Данные length_between_perpendiculars определяют длину, измеряемую от кормового перпендикуляра до носового перпендикуляра судна.
4.2.78.5 Данные max_draught_at_ap
Данные max_draught_at_ap указывают максимально возможную осадку по кормовому перпендикуляру во время эксплуатации судна. Данные вида max_draught_at_ap используют для одобрения сечения корпуса для нотации ледового класса.
4.2.78.6 Данные max_draught_at_fp
Данные max_draught_at_fp указывают максимально возможную осадку по носовому перпендикуляру во время эксплуатации судна. Данные вида max_draught_at_fp используют для одобрения сечения корпуса для нотации ледового класса.
4.2.78.7 Данные min_draught_at_ap
Данные min_draught_at_AP указывают минимальную возможную осадку по кормовому перпендикуляру во время эксплуатации судна. Данные вида min_draught_at_AP используют для одобрения сечения корпуса для нотации ледового класса.
4.2.78.8 Данные min_draught_at_fp
Данные min_draught_at_fp указывают минимальную возможную осадку по носовому перпендикуляру во время эксплуатации судна. Данные вида min_draught_at_fp используют для одобрения сечения корпуса для нотации ледового класса.
4.2.78.9 Данные moulded_breadth
Данные moulded_breadth определяют наибольшую ширину судна по мидель-шпангоуту и при значении design_draught.
4.2.78.10 Данные moulded_depth
Данные вида moulded_depth определяют вертикальное расстояние от основной плоскости до самой верхней палубы, где палуба соединяется с бортом судна, измеряемое по мидель-шпангоуту.
4.2.79 Прикладной объект Propeller_location
Прикладной объект Propeller_location указывает размещение гребного винта относительно корпуса судна.
Пример - Местоположение гребного винта показано на рисунке 29, а гребной винт относительно оси показан на рисунке 31.
![]() ![]() ![]() С объектом Propeller_location связаны следующие данные:
- propeller_location;
- shaft_line_inclination_x;
- shaft_line_inclination_y;
- shaft_line_location.
4.2.79.1 Данные propeller_location
Данные propeller_location определяют размещение осевой линии гребного вала в точке, где гребной вал крепится к винту. Координату X измеряют от кормового перпендикуляра, координату Y измеряют от ДП и координату Z измеряют от ОП. Прикладное утверждение - см. 4.3.79.
4.2.79.2 Данные shaft_line_inclination_x
Данные shaft_line_inclination_x определяют угол между гребным валом и осью X корпуса судна.
4.2.79.3 Данные shaft_line_inclination_y
Данные shaft_line_inclination_y определяют угол между гребным валом и осью Y корпуса судна.
4.2.79.4 shaft_line_location
Данные shaft_line_location определяют размещение осевой линии гребного вала в точке, где вал гребного винта выходит из корпуса судна. Координату X измеряют от кормового перпендикуляра, координату Y измеряют от ДП и координату Z измеряют от ОП.
Прикладной объект Propeller_moulded_form_design_parameter является типом объекта Moulded_form_characteristics_definition (см. 4.2.63), содержащим размеры и отношения гребного винта.
Пример - Размеры гребного винта показаны на рисунке 32.
![]() С объектом Propeller_moulded_form_design_parameter связаны следующие данные:
- blade_mean_height;
- chord_length_at_0_7_radius;
- design_sense_of_rotation;
- expanded_area_ratio;
- hub_diameter_ratio;
- location_of_the_propeller_at_the_ship_hull;
- nominal_design_pitch_ratio;
- number_of_propeller_blades;
- propeller_diameter;
- rake;
- skew;
- thickness_at_0_7_radius;
- type_of_propeller_blades;
- type_of_propulsion.
4.2.80.1 Данные blade_mean_height
Данные blade_mean_height указывают среднюю высоту лопастей для всех невинтовых движителей.
Для конкретного Propeller_moulded_form_design_parameter данные вида blade_mean_height могут быть не заданы.
Примечание - Средняя высота лопасти - это наибольший размер лопасти и при этом больше ширины.
4.2.80.2 Данные chord_length_at_0_7_radius
Данные chord_length_at_0_7_radius указывают длину хорды сечения лопасти гребного винта, расположенного в точке 0,7 радиуса гребного винта, или среднюю ширину лопастей для невинтовых движителей.
4.2.80.3 Данные design_sense_of_rotation
Данные design_sense_of_rotation указывают проектное направление вращения гребного винта, правое или левое.
Данные вида design_sense_of_rotation должны иметь одно из следующих значений:
- left;
- right.
Примечание - Определение каждого допустимого значение данных вида design_sense_of_rotation - см. 4.2.80.3.1, 4.2.80.3.2.
Гребной винт вращается против часовой стрелки.
Гребной винт вращается по часовой стрелке.
4.2.80.4 Данные expanded_area_ratio
Данные expanded_area_ratio задают безразмерный параметр, получаемый в результате деления площади развернутой поверхности лопастей гребного винта к площади круга, описываемого диаметром гребного винта.
4.2.80.5 Данные hub_diameter_ratio
Данные hub_diameter_ratio задают безразмерный параметр, получаемый в результате деления диаметра ступицы гребного винта на его диаметр.
4.2.80.6 Данные location_of_the_propeller_at_the_ship_hull
Данные location_of_the_propeller_at_the_ship_hull указывают размещение гребного винта относительно корпуса судна.
Для конкретного Propeller_moulded_form_design_parameter данные вида location_of_the_propeller_at_the_ship_hull могут быть не заданы. Прикладное утверждение - см. 4.3.80.
4.2.80.7 Данные nominal_design_pitch_ratio
Данные nominal_design_pitch_ratio указывают безразмерный параметр, получаемый в результате деления среднего конструктивного шага на диаметр гребного винта.
4.2.80.8 Данные number_of_propeller_blades
Данные number_of_propeller_blades указывают количество лопастей гребного винта.
4.2.80.9 Данные propeller_diameter
Данные propeller_diameter указывают диаметр наибольшего круга, прописываемого вращением лопастей гребного винта.
4.2.80.10 Данные rake
Данные rake указывают угол откидки лопастей гребного винта от плоскости винта.
4.2.80.11 Данные skew
Данные skew указывают угол саблевидности лопасти между прямой линией, проходящей через ось гребного винта и центр профиля лопасти в точке, равной 0,7 радиуса гребного винта, и второй прямой линией, проходящей через ось гребного винта и центр профиля лопасти в точке, равной одному радиусу гребного винта.
4.2.80.12 Данные thickness_at_0_7_radius
Данные thickness_at_0_7_radius указывают толщину профиля сечения лопасти гребного винта в точке 0,7 радиуса гребного винта или максимальную толщину лопастей для невинтовых движителей.
4.2.80.13 Данные type_of_propeller_blades
Данные type_of_propeller_blades указывают тип лопастей гребного винта: фиксированные, поворотные или регулируемые.
Значение данных вида type_of_propeller_blades должно быть одним из следующих:
- adjustable_blade;
- controllable_blade;
- fixed_blade.
Примечание - Определение допустимых значений данных вида type_of_propeller_blades - см. 4.2.81.13.1 - 4.2.81.13.3.
Лопасти гребного винта можно поворачивать вручную в сухом доке в соответствии с изменяющимися условиями эксплуатации.
4.2.80.13.2 controllable_blade
Лопасти гребного винта могут регулироваться гидравлически для изменения шага, при этом можно менять упор до точки обеспечения упора при заднем ходе судна без изменения направления вращения.
Пример - Лопасть гребного винта регулируемого шага показана на рисунке 33.
![]() Лопасти гребного винта фиксированного шага.
Пример - Лопасть гребного винта фиксированного шага показана на рисунке 34.
![]() 4.2.80.14 Данные type_of_propulsion
Данные type_of_propulsion указывают тип отдельной движительной системы.
Значение данных вида type_of_propulsion должно быть одним из следующих:
- ducted_propeller;
- paddle_wheel;
- screw_propeller;
- thruster;
- user_defined;
- vertical_axis_propeller;
- water_jet.
Примечание - Определение допустимых значений данных вида type_of_propulsion - см. 4.2.81.14.1 - 4.2.81.14.7.
Гребной винт работает в направляющей насадке с целью повышения его КПД.
Пример - Гребной винт в направляющей насадке показан на рисунке 35.
![]() 4.2.80.14.2 paddle_wheel
Движительная система состоит из гребных лопастей, вращающихся вокруг горизонтальной оси, идущей параллельно оси Y судна.
Примечание - Этот устаревший тип движителей не используется на современных судах.
4.2.80.14.3 screw_propeller
Это наиболее часто встречающаяся движительная система, работающая без направляющей насадки или туннеля.
Пример - Винтовой движитель показан на рисунке 36.
![]() 4.2.80.14.4 thruster
Гребной винт работает в туннеле, расположенном внутри корпуса судна, и используется в основном для маневрирования.
Пример - Гребной винт подруливающего устройства показан на рисунке 25.
4.2.80.14.5 user_defined
Тип движительной системы определяется пользователем.
4.2.80.14.6 vertical_axis_propeller
Крыльчатый движитель, состоящий из вертикальных лопастей, вращающихся вокруг собственных осей. Специальный механизм изменяет угол поворота каждой лопасти во время вращения.
Пример - Крыльчатый движитель показан на рисунках 29 и 30.
Гребной винт работает в туннеле внутри корпуса судна.
4.2.81 Прикладной объект Regulation
Прикладной объект Regulation является набором международных и национальных нормативов, а также других стандартов, применяемых к судну.
С объектом Regulation связаны следующие данные:
- international_regulations;
- national_regulations;
- standards.
4.2.81.1 Данные international_regulations
Данные international_regulations указывают все соответствующие международные нормативы, применяемые к судну. Прикладное утверждение - см. 4.3.81.
4.2.81.2 Данные national_regulations
Данные national_regulations указывают все соответствующие национальные нормативы, применяемые к судну. Прикладное утверждение - см. 4.3.81.
4.2.81.3 Данные standards
Данные standards указывают все соответствующие спецификации, применяемые к судну. Прикладное утверждение - см. 4.3.81.
Прикладной объект Research_ship является типом объекта Shiptype (см. 4.2.98), указывающим научно-исследовательскую функцию, выполняемую судном.
С объектом Research_ship связаны следующие данные:
- has_type.
4.2.82.1 Данные has_type
Данные has_type определяют тип научно-исследовательского судна.
Значение данных вида has_type должно быть одним из следующих:
- user_defined.
4.2.82.1.1 user_defined
Тип судна, отсутствующий в перечне данных вида has_type.
Примечание - Подробная информация приведена в атрибуте описания объекта Shiptype (см. 4.2.99).
Прикладной объект Revision является типом Versionable_object (см. 4.2.121), служащим связующим звеном между необходимым объектом и определениями его составляющих и связанных элементов. Объект Revision не воспроизведен автоматически, а должен создаваться четко каждый раз, когда он требуется. Значением каждого объекта Revision может быть Revision_with_context (см. 4.2.84).
Пример - Необходимым объектом может быть сечение корпуса, чьими элементами являются определения листов, но только те определения листов, которые относятся к одной и той же версии.
С объектом Revision связаны следующие данные:
- members;
- name.
4.2.83.1 Данные members
Данные members определяют объекты Versionable_object (см. 4.2.121) прикладного объекта Revision. Прикладное утверждение - см. 4.3.82.
4.2.83.2 Данные name
Данные name задает подпись, которая идентифицирует конкретное изменение.
Прикладной объект Revision_with_context является типом Revision (см. 4.2.83), служащим связующим звеном между необходимым объектом, контекстом и определениями его составляющих и связанных элементов. Значением каждого Revision_with_context может быть Ship_moulded_form_revision (см. 4.2.94).
С объектом Revision_with_context связаны следующие данные:
- context_of_revision.
4.2.84.1 Данные context_of_revision
Данные context_of_revision указывают связь с Definable_object (см. 4.2.22), который определяется изменением. Прикладное утверждение - см. 4.3.83.
4.2.85 Прикладной объект Rotational_symmetry
Прикладной объект Rotational_symmetry является типом Symmetry (см. 4.2.111), дающим информацию о вращательной симметрии для любой части судна. Ось вращательно симметрии детализирует ось вращения для данной части судна.
С объектом Rotational_symmetry связаны следующие данные:
- the_rotational_axis.
4.2.85.1 Данные the_rotational_axis
Данные the_rotational_axis указывают ось вращения и определяются в действующей системе координат данной части судна.
Прикладной объект Rudder_moulded_form_design_parameter является типом прикладного объекта Moulded_form_characteristics_definition (см. 4.2.63), который содержит размеры и отношения руля.
Пример - Размеры руля показаны на рисунке 37.
![]() С объектом Rudder_moulded_form_design_parameter связаны следующие данные:
- aspect_ratio;
- projected_rudder_area;
- rudder_height;
- rudder_length;
- rudder_location;
- rudder_mean_height;
- rudder_mean_length;
- rudder_thickness;
- type_of_the_rudder.
4.2.86.1 Данные aspect_ratio
Данные aspect_ratio указывают соотношение сторон (относительное удлинение) между средними значениями его высоты и длины.
4.2.86.2 Данные projected_rudder_area
Данные projected_rudder_area указывают площадь поверхности руля в его рабочем положении в проекции на плоскость XY судна.
4.2.86.3 Данные rudder_height
Данные rudder_height указывают высоту руля, измеряемую от его наинизшей до его наивысшей точки в рабочем положении.
4.2.86.4 Данные rudder_length
Данные rudder_length указывают максимальную длину руля в его рабочем положении, измеряемую по длине судна.
4.2.86.5 Данные rudder_location
Данные rudder_location указывают положение осевой линии съемного рудерпоста в точке, где он крепится к верху руля. Координату X измеряют от кормового перпендикуляра, координату Y измеряют от ДП, а координату Z измеряют от ОП. Прикладное утверждение - см. 4.3.84.
4.2.86.6 Данные rudder_mean_height
Данные rudder_mean_height указывают среднюю высоту руля в его рабочем положении.
4.2.86.7 rudder_mean_length
Данные rudder_mean_length указывают среднюю длину руля в его рабочем положении, измеряемую по длине судна.
4.2.86.8 Данные rudder_thickness
Данные rudder_thickness указывают максимальную толщину руля.
4.2.86.9 Данные type_of_the_rudder
Данные type_of_the_rudder указывают, является ли руль балансирным или небалансирным.
Значение данных вида type_of_the_rudder должно быть одним из следующих:
- balanced;
- unbalanced.
Примечание - Определения всех допустимых значений данных вида type_of_the_rudder - см. 4.2.86.9.1, 4.2.86.9.2.
Площадь руля равномерно распределена перед и за осью поворота руля для уменьшения рабочего момента на баллере руля.
Площадь руля находится за осью поворота руля.
4.2.87 Прикладной объект Section_of_offset_point_table
Прикладной объект Section_of_offset_point_table является упорядоченным списком объектов Ship_point (см. 4.2.96).
Примечание - Аналогично объекту Ship_curve (см. 4.2.89), представленному ломаной линией.
С объектом Section_of_offset_point_table связаны следующие данные:
- for_table;
- section_identifier;
- section_points.
Примечание - Атрибут for_table является обратным атрибуту offset_point_table_sections для объекта Offset_point_table_model (см. 4.2.73).
4.2.87.1 Данные for_table
Данные for_table указывают связанные объекты Offset_point_table_model (см. 4.2.73) для Section_of_offset_point_table. Прикладное утверждение - см. 4.3.75.
4.2.87.2 Данные section_identifier
Данные section_identifier определяют контекстно-зависимую идентификацию, заданную для секции таблицы ординат.
4.2.87.3 Данные section_points
Данные section_points указывают перечень объектов Ship_point (см. 4.2.96), представляющих ординаты формы для данной секции. Прикладное утверждение - см. 4.3.85.
Прикладной объект Ship является типом объекта Item (см. 4.2.52), который является основным изделием, поддерживаемым набором прикладных протоколов для судостроения согласно ИСО 10303. Все данные, определяющие изделие, должны относиться к объекту Ship. Данные определения модели изделия, относящиеся к объекту Ship, поддерживаются для многих этапов жизненного цикла объекта Ship, включая новый проект, начальное и рабочее проектирование, организацию производства, эксплуатацию и утилизацию. Прикладной объект Ship может представлять собой один корпус или ряд корпусов в классе судов одного проекта, которые имеют идентичные данные об изделии.
С объектом Ship связаны следующие данные:
- single_hull_or_class;
- ship_items;
- units.
4.2.88.1 Данные single_hull_or_class
Данные single_hull_or_class указывают, применяется ли обмен данными к одному корпусу или к нескольким корпусам в классе объектов Ships.
Значение данных вида single_hull_or_class должно быть одним из следующих:
- design_for_multiple_hulls;
- design_for_single_hulls.
4.2.88.1.1 design_for_multiple_hulls
Диапазон корпусов судов, для которых применяется конкретный объект Item (см. 4.2.52) или Definition (см. 4.2.23), должен быть указан с помощью Hull_applicability (см. 4.2.43).
4.2.88.1.2 design_for_single_hulls
Один корпус, для которого применяется конкретный Item (см. 4.2.52) или Definition (см. 4.2.23), должен быть указан с помощью Hull_applicability (см. 4.2.43).
4.2.88.2 ship_items
Данные ship_items задают составляющие объекты, применяемые к конкретному объекту Ship. Прикладное утверждение - см. 4.3.49.
4.2.88.3 units
Данные units указывают ссылку на набор предопределенных единиц для всех типов измерений, которые могут появляться в модели Ship. Значением данных вида units может быть Derived_unit (см. 4.2.24) или Named_unit (см. 4.2.70). Для конкретного Ship данные вида units могут быть не заданы. В одном объекте Ship может быть задано несколько данных вида units. Прикладные утверждения - см. 4.3.86 и 4.3.87.
Прикладной объект Ship_curve является типом объекта Moulded_form_representation_item (см. 4.2.67), представляющим кривую с соответствующей информацией по теории судостроения. Значением Ship_curve may может быть Ship_curve_with_spacing_position (см. 4.2.91).
Пример - Типом объекта Ship_curve является ватерлиния с геометрией, определенной B-сплайновой кривой. Кривые судна показаны на рисунке 38.
![]() С объектом Ship_curve связаны следующие данные:
- curve_class;
- curve_shape;
- side_condition.
4.2.89.1 Данные curve_class
Данные curve_class указывают категории теории судостроения для объекта Ship_curve, необходимые для проектного определения объектов Moulded_form (см. 4.2.61).
Значение данных вида curve_class должно быть одним из следующих:
- bounding_line;
- buttock_line;
- camber;
- centreline;
- flat_of_bottom;
- flat_of_side;
- intersection_line;
- rise_of_floor;
- sheer;
- station_line;
- trace_line;
- unspecified;
- waterline.
4.2.89.1.1 bounding line
Кривая является ограничивающей кривой объекта Moulded_form (см. 4.2.61) или Ship_surface (см. 4.2.97).
4.2.89.1.2 buttock_line
Кривая лежит на теоретической поверхности корпуса на пересечении продольной плоскости и теоретического обвода корпуса.
Пример - Батоксы показаны на рисунке 39.
![]() 4.2.89.1.3 camber
Кривая лежит на теоретической поверхности палубы.
Примечание - Образуется пересечением поперечной плоскости с теоретическим обводом палубы.
4.2.89.1.4 centreline
Кривая лежит на теоретической поверхности корпуса.
Примечание - Образуется пересечением ДП с теоретическим обводом корпуса судна.
4.2.89.1.5 flat_of_bottom
Кривая, ограничивающая плоский участок днища.
4.2.89.1.6 flat_of_side
Кривая, ограничивающая плоский участок борта.
4.2.89.1.7 intersection_line
Кривая, образуемая пересечением двух объектов или поверхностей Moulded_form (см. 4.2.61).
4.2.89.1.8 rise_of_floor
Высота подъема днища, которая измеряется на полушироте от ОП.
4.2.89.1.9 sheer
Кривая лежит в теоретической поверхности палубы.
Примечание - Седловатость (подъем палубы от середины мидель-шпангоута к носу и/или корме).
4.2.89.1.10 station_line
Кривая лежит в теоретической поверхности корпуса.
Примечание - Линия шпангоута, полученная пересечением теоретического обвода корпуса с плоскостью, параллельной плоскости мидель-шпангоута.
Пример - Теоретические шпангоуты показаны на рисунке 40.
![]() 4.2.89.1.11 trace_line
Кривая в теоретической поверхности конструктивной части, которая действует как граница или соединительная линия для крепления профиля или балки.
4.2.89.1.12 unspecified
Значение кривой в теории судостроения не задано.
4.2.89.1.13 waterline
Кривая лежит в теоретической поверхности корпуса.
Примечание - Образуется пересечением плоскости воды с теоретическим обводом корпуса.
Пример - Кривые ватерлиний показаны на рисунке 41.
![]() 4.2.89.2 Данные curve_shape
Данные curve_shape указывают базовые геометрические определения объекта Ship_curve (см. 4.2.89).
Пример - Каркасные или однообразные B-сплайновые представления.
4.2.89.3 Данные side_condition
Данные side_condition указывают поведение кривых, пересекающих заданную кривую в точке перехода.
Пример - Кривая сечения будет ломаться на ватерлинии, представляя пересечение скулового киля и прямостенной части борта.
Значение данных вида side_condition должно быть одним из следующих:
- knuckle;
- smooth;
- tangent;
- unspecified.
4.2.89.3.1 knuckle
Кривая пересечения имеет прерывистую касательную по обе стороны от точки перехода.
4.2.89.3.2 smooth
Кривая пересечения гладкая по обе стороны от точки перехода.
4.2.89.3.3 tangent
Кривая пересечения имеет заданную касательную в точке перехода.
4.2.89.3.4 unspecified
У кривой пересечения отсутствует информация о соприкасании в точке перехода.
4.2.90 Прикладной объект Ship_curve_segment
Прикладной объект Ship_curve_segment определяет информацию о кривой для каркасного представления судна или части судна. Объект Ship_curve_segment является одной из ограничивающих кривых ячейки в каркасе с информацией о Ship_curve (см. 4.2.89), к которой принадлежит Ship_curve_segment.
Примечание - Информация о кривой будет поддерживать сущностный объект edge_curve, как определено в ИСО 10303-42.
С объектом Ship_curve_segment связаны следующие данные:
- part_of_ship_curve.
4.2.90.1 Данные part_of_ship_curve
Данные part_of_ship_curve определяют объект Ship_curve (см. 4.2.89), в состав которого входит Ship_curve_segment. Прикладное утверждение см. 4.3.88.
Прикладной объект Ship_curve_with_spacing_position является типом объекта Ship_curve (см. 4.2.89), имеющим связанное с ним интервальное положение.
Пример - Ватерлиния, у которой есть геометрия, определенная B-сплайновой кривой и расположенная в вертикальном интервальном положении.
Примечание - Ship_curve_with_spacing_position может определяться только для двухмерной кривой судна, расположенной в одной из плоскостей глобальной системы координат.
С объектом Ship_curve_with_spacing_position связаны следующие данные:
- location.
4.2.91.1 Данные location
Данные location определяют объект Spacing_position (см. 4.2.100), где определена кривая судна. Прикладное утверждение - см. 4.3.89.
Прикладной объект Ship_designation является типом объекта General_characteristics_definition (см. 4.2.40), который определяет идентификацию, присвоенную судну с тем, чтобы его могла классифицировать любая организация, связанная с судостроением и судоходством.
С объектом Ship_designation связаны следующие данные:
- call_sign;
- flag_state;
- local_units;
- port_of_registration;
- ship_identification;
- ship_name;
- description.
4.2.92.1 Данные call_sign
Данные call_sign указывают уникальный идентификатор жизненного цикла, который присваивается судну данными вида flag_state для радиосвязи.
4.2.92.2 Данные flag_state
Данные flag_state указывают национальный орган, в котором регистрируется судно.
4.2.92.3 Данные local_units
Данные local_units определяют единицы, используемые определением и отличающиеся от единиц, глобально определенных для судна. Значением данных local_units может быть Derived_unit (см. 4.2.24) или Named_unit (см. 4.2.70). Для конкретного Ship_designation данные вида local_units могут быть не заданы. В одном объекте Ship_designation может быть задано несколько данных вида local_units. Прикладные утверждения - см. 4.3.91 и 4.3.90.
4.2.92.4 Данные port_of_registration
Данные port_of_registration указывают государственный порт приписки судна. Данные port_of_registration находятся под юрисдикцией данных вида flag_state.
4.2.92.5 Данные ship_identification
Данные ship_identification указывают общий идентификатор, являющийся уникальным для судна, присваиваемый во время классификации.
4.2.92.6 Данные ship_name
Данные ship_name указывают наименование судна, присвоенное владельцем.
4.2.92.7 Данные description
Данные description указывают дополнительные данные о функции судна, а также дополнительные сведения о перевозимых грузах. Если значением объекта Shiptype (см. 4.2.98) являются данные вида user_defined, то данные вида description предоставляют информацию по типу судна.
Прикладной объект Ship_moulded_form является типом объекта Item_structure (см. 4.2.54) и типом объекта Item (см. 4.2.52), который группирует вместе все объекты Moulded_form (см. 4.2.61).
Пример 1 - Значением объекта Ship_moulded_form может быть группа отдельных объектов Moulded_form для корпуса судна, гребного винта, руля и выступающих частей.
Пример 2 - Теоретические обводы судов показаны на рисунке 42.
Примечание - Прикладной объект Ship_moulded_form не должен ни в коем случае содержать ссылок на прикладной объект Local_co_ordinate_system (см. 4.2.56).
![]() С объектом Ship_moulded_form связаны следующие данные:
- items;
- relationships.
4.2.93.1 Данные items
Данные items указывают все объекты Moulded_form (см. 4.2.61), которые определяют прикладной объект Ship_moulded_form. Прикладное утверждение - см. 4.3.92.
4.2.93.2 Данные relationships
Данные relationships указывают объекты Moulded_form_relationship (см. 4.2.66), которые формируют прикладной объект Ship_moulded_form. Прикладное утверждение - см. 4.3.93.
Прикладной объект Ship_moulded_form_revision является типом объекта Revision_with_context (см. 4.2.84), указывающим редакцию объекта Ship_moulded_form (см. 4.2.93). Собирает все используемые версии объектов Moulded_form_design_definition (см. 4.2.64), относящиеся к определению конкретного теоретического обвода судна.
С объектом Ship_moulded_form_revision связаны следующие данные:
- context_of_revision;
- members.
4.2.94.1 Данные context_of_revision
Данные context_of_revision указывают объект Ship_moulded_form (см. 4.2.93), для которого определяется прикладной объект Ship_moulded_form_revision. Прикладное утверждение - см. 4.3.95.
4.2.94.2 Данные members
Данные members указывают набор объектов Moulded_form_design_definition (см. 4.2.64), формирующих прикладной объект Ship_moulded_form_revision. Прикладное утверждение - см. 4.3.94.
Прикладной объект Ship_overall_dimensions является типом объекта Definition (см. 4.2.23), который указывает максимальные пределы объекта Ship_moulded_form (см. 4.2.93).
Пример - Габаритные размеры судна показаны на рисунке 43.
![]() С объектом Ship_overall_dimensions связаны следующие данные:
- defined_for;
- overall_breadth;
- overall_depth;
- overall_length;
- stem_overhang;
- stern_overhang.
4.2.95.1 Данные defined_for
Данные defined_for указывают судно для данного объекта Ship_overall_dimensions. Прикладное утверждение - см. 4.3.96.
4.2.95.2 Данные overall_breadth
Данные overall_breadth указывают максимальную ширину объекта Ship_moulded_form (см. 4.2.93).
4.2.95.3 Данные overall_depth
Данные overall_depth указывают максимальное расстояние по вертикали от ОП до самой высокой палубы объекта Ship_moulded_form (см. 4.2.93).
4.2.95.4 Данные overall_length
Данные overall_length указывают длину от крайней носовой до крайней кормовой оконечности объекта Ship_moulded_form (см. 4.2.93).
4.2.95.5 Данные stem_overhang
Данные stem_overhang указывают длину от носового перпендикуляра до крайней носовой оконечности объекта Ship_moulded_form (см. 4.2.93).
4.2.95.6 Данные stern_overhang
Данные stern_overhang указывают длину от крайней кормовой оконечности объекта Ship_moulded_form (см. 4.2.93) до кормового перпендикуляра.
Прикладной объект Ship_point является типом объекта Moulded_form_representation_item (см. 4.2.67), представляющим точку с соответствующей информацией по теории судостроения.
Пример - Точки судна показаны на рисунке 44.
![]() Значением объекта Ship_point может быть точка перегиба с размещением в глобальной системе координат.
С объектом Ship_point связаны следующие данные:
- point_class;
- point_shape.
4.2.96.1 Данные point_class
Данные point_class указывают категории теории судостроения для объекта Ship_point исходя из поведения кривых, проходящих через объект Ship_point.
Значение данных вида point_class должно быть одним из следующих:
- knuckle;
- ordinary;
- tangent;
- unspecified.
4.2.96.1.1 knuckle
Кривая, проходящая через эту точку, имеет прерывистую касательную по обе стороны точки.
4.2.96.1.2 ordinary
Одна или несколько кривых, проходящих через эту точку, имеют плавную касательную.
4.2.96.1.3 tangent
Кривые, проходящие через эту точку, имеют заданную касательную.
4.2.96.1.4 unspecified
Информация о касательной для кривых, проходящих через эту точку, отсутствует.
4.2.96.2 Данные point_shape
Данные point_shape указывают базовое геометрическое определение объекта Ship_point.
Пример - Данными вида point_type является представление таблицы ординат теоретического чертежа.
Прикладной объект Ship_surface является типом объекта Moulded_form_representation_item (см. 4.2.67), представляющим поверхность с соответствующей информацией по теории судостроения.
С объектом Ship_surface связаны следующие данные:
- surface_class;
- surface_shape.
4.2.97.1 Данные surface_class
Данные surface_class указывают категории теории судостроения для объекта Ship_surface исходя из размещения поверхности.
Значение данных вида surface_class должно быть одним из следующих:
- accommodation_area;
- accommodation_deck;
- aft_ship;
- blending_surface;
- bottom;
- bracket;
- bulkhead;
- cargo_area;
- collision_bulkhead;
- cross_tie;
- deck;
- deck_beam;
- deck_house;
- deck_in_superstructure;
- double_bottom;
- double_shell;
- duct_keel;
- engine_area;
- engine_foundation;
- external_surface;
- floor;
- fore_ship;
- frame;
- girder;
- hatch_cover;
- hatchway_coaming;
- hatchway_endcoaming;
- hatchway_sidecoaming;
- hold_bulkhead;
- hopper;
- inner_bottom;
- inner_shell;
- internal_surface;
- keel;
- longitudinal_bulkhead;
- longitudinal_girder;
- lower_boom;
- machinery_casing;
- main_deck;
- mid_ship;
- navigation_deck;
- outer_shell;
- platform_deck;
- plating;
- sheer_strake;
- ship_structure;
- stern_frame;
- stool;
- strength_bulkhead;
- strength_deck;
- stringer;
- superstructure;
- superstructure_aft_bulkhead;
- superstructure_front_bulkhead;
- superstructure_side_bulkhead;
- tank_bottom;
- tank_bulkhead;
- tank_side;
- tank_top;
- transom;
- transversal_bulkhead;
- transverse_floor;
- transverse_web_frame;
- upper_boom;
- user_defined;
- vertical_web_frame;
- wall;
- wash_bulkhead;
- weather_deck;
- web_frame;
- wing_bulkhead.
4.2.97.1.1 accommodation_area
Рубка на верхней палубе или надстройка, в которой находятся спальные места для пассажиров и экипажа.
4.2.97.1.2 accommodation_deck
Палуба, расположенная в жилой зоне.
4.2.97.1.3 aft_ship
Часть судна в корму от мидель-шпангоута.
4.2.97.1.4 blending_surface
Поверхность, формирующая соединение между объектами Moulded_form (см. 4.2.61).
Пример - Типом данных вида blending_surface являются корпус и выступающая часть корпуса (подруливающее устройство).
4.2.97.1.5 bottom
Днище корпуса.
4.2.97.1.6 bracket
Отбортованный лист или обычный лист, используемый для обеспечения жесткого соединения между двумя конструктивными элементами.
4.2.97.1.7 bulkhead
Термин, применяемый к любой из перегородок, которые используются для разделения внутренней части судна на различные отсеки.
Примечание - Переборка может быть "непропускающей" (водонепроницаемой), конструктивной (обеспечивающей прочность судна) или ненесущей (перегородка в жилой зоне).
4.2.97.1.8 cargo_area
Часть судна, предназначенная для хранения судового груза, т.е. грузовой отсек.
4.2.97.1.9 collision_bulkhead
Переборка, расположенная в носовой части судна, идущая от днища судна до верхней палубы, предназначенная для обеспечения водонепроницаемости при повреждении носа, а также самая передняя поперечная переборка на судне.
4.2.97.1.10 cross_tie
Корпусная конструкция, соединяющая две параллельные балки для обеспечения дополнительной прочности палубы.
4.2.97.1.11 deck
Палуба на судне. Представляет собой горизонтальное перекрытие, состоящее из настила и набора.
4.2.97.1.12 deck_beam
Поперечный или продольный горизонтальный конструктивный элемент, обычно представляющий собой прокатный профиль, на который опирается палуба или плоская поверхность.
4.2.97.1.13 deck_house
Закрытая конструкция на открытой палубе или над ней, не доходящая до борта судна.
4.2.97.1.14 deck_in_superstructure
Палуба в надстройке.
4.2.97.1.15 double_bottom
Термин, применяемый к пространству между внутренней и внешней обшивками днища судна, используемому для водяного балласта, мазута и т.д.
Примечание - Также применяется для обозначения того, что судно имеет полную внутреннюю или дополнительную оболочку из водонепроницаемой днищевой обшивки.
4.2.97.1.16 double_shell
Термин, используемый для описания судна с двойным корпусом, т.е. повреждение внешнего корпуса не повлияет на конструктивную целостность судна и не приведет к гибели груза.
4.2.97.1.17 duct_keel
Тоннельный киль - область внутри двойного дна, ограниченная водонепроницаемыми продольными переборками, в которой обычно расположены трубопроводы и системы.
4.2.97.1.18 engine_area
Машинное отделение или машинное помещение судна, в котором расположена главная энергетическая установка.
4.2.97.1.19 engine_foundation
Толстолистовая подкрепленная конструкция, которая служит конструктивной опорой главной энергетической установки, обычно монтируется сверху на внутренней днищевой конструкции.
4.2.97.1.20 external_surface
Поверхность, являющаяся частью представления внешней поверхности судна.
4.2.97.1.21 floor
Лист, используемый вертикально в днище судна обычно на каждом шпангоуте, для его углубления, и идущий поперек судна от трюма к трюму.
Примечание - Поперечные листовые конструкции, обычно расположенные в двойном дне, используемые для разделения двойного дна и опоры обшивки днища и внутренних продольных элементов днища.
4.2.97.1.22 fore_ship
Термин, используемый для обозначения частей или части судна в носу или рядом с ним. Также применяется к той части и частям судна, которые лежат между мидель-шпангоутом и носом судна.
4.2.97.1.23 frame
Термин, обычно используемый для обозначения одного из поперечных ребер, составляющих остов судна. Шпангоуты действуют как ребра жесткости, удерживая форму бортовой обшивки и сохраняя поперечную форму судна.
4.2.97.1.24 girder
Основной несущий конструктивный элемент, который проходит вдоль палуб, обшивок и переборок.
Примечание - Продольная балка обеспечивает опору и жесткость меньшим и более близко расположенным друг к другу балкам.
4.2.97.1.25 hatch_cover
Люковое закрытие, обеспечивающее водонепроницаемость грузовых трюмов. Люковые закрытия предназначены для размещения палубных грузов, а также для доступа в трюм или машинные помещения.
4.2.97.1.26 hatchway_coaming
Четыре части с вертикальными стенками в раме люка, которые вместе называются комингсом люка.
4.2.97.1.27 hatchway_endcoaming
Поперечные части с вертикальными стенками в переднем и заднем концах люка, которые упираются в палубные бимсы.
4.2.97.1.28 hatchway_sidecoaming
Продольные части с вертикальными стенками по бокам люка, опирающиеся на люковые карлингсы, в которые упираются палубные бимсы.
4.2.97.1.29 hold_bulkhead
Продольная или поперечная перегородка, используемая для разделения трюма (пространства, предназначенного для хранения груза).
4.2.97.1.30 hopper
Трюмное пространство для сухого груза с наклонными листами переборки в днище со всех четырех сторон для обеспечения направления сыпучих грузов в систему разгрузки.
4.2.97.1.31 inner_bottom
Внутренняя или дополнительная оболочка из водонепроницаемой днищевой обшивки на судне с двойным дном. Листы, образующие верхнюю часть двойного дна, также называют настилом второго дна.
Примечание - Двойное дно обычно устанавливается на больших судах от скулы до скулы и почти по всей длине в нос и в корму. Там, где имеется два днища, внешнее называется днищевой обшивкой, внутреннее - внутренним дном.
4.2.97.1.32 inner_shell
Поверхности, из которых состоит внутренняя обшивка судна с двойным корпусом.
4.2.97.1.33 internal_surface
Поверхность, являющаяся частью представления внутренней поверхности судна.
Пример - К типам данных вида internal_surface относятся продольные балки или переборки.
4.2.97.1.34 keel
Основной продольный элемент набора судна, расположенный по ДП днища и соединенный с носовым или кормовым набором. К килю крепятся флоры или траверсы днища.
Примечание - Плоский киль представляет собой расположенный горизонтально, по ДП, нижний пояс обшивки днища, образующий нижний поясок киля. Центральный вертикальный киль - это вертикальная, расположенная по ДП стенка киля.
4.2.97.1.35 longitudinal_bulkhead
Вертикальная переборка, идущая в носовом и кормовом направлениях, используемая для разделения или деления судна на части для обеспечения прочности, обеспечения остойчивости в неповрежденном виде и для разделения помещений.
4.2.97.1.36 longitudinal_girder
Термин, применяемый к идущей по всей длине продольной балке в днище судна. Эти балки обычно состоят из листов и профилей, иногда бывают интеркостельными, а иногда непрерывными.
4.2.97.1.37 lower_boom
Конструкция, расположенная на нижнем уровне судна, предназначенная для погрузочно-разгрузочных работ и работающая совместно с верхней стрелой.
Примечание - Стрела представляет собой длинную круглую штангу, шарнирно закрепленную своим нижним концом обычно к мачте или грузовой полумачте на судне и поддерживаемую проволочным тросом или талями от верхней части такелажа до верхнего конца стрелы. Грузы, запасы и пр. поднимаются с помощью талей, идущих от верхнего конца стрелы.
4.2.97.1.38 machinery_casing
Основная функция машинных кожухов - обеспечение защиты отверстий, расположенных в открытой палубе над двигателями и котлами (для доступа, для обеспечения света и воздуха, а также для газоотводов от котлов), от проникновения морской воды внутрь судна через эти отверстия в плохую погоду. Под верхней палубой машинный кожух отделяет машинные помещения от жилых и грузовых помещений.
4.2.97.1.39 main_deck
Основная палуба основного корпуса, обычно самая высокая конструкция, идущая от носа до кормы и обеспечивающая прочность основного корпуса. Эта конструкция также называется прочной палубой.
4.2.97.1.40 mid_ship
Точка, расположенная на равном расстоянии между носовым и кормовым перпендикулярами судна.
4.2.97.1.41 navigation_deck
Конструкция, обычно расположенная в рубке, представляющая собой палубу, на которой осуществляется управление судном/судовождение.
4.2.97.1.42 outer_shell
Конструкция внешнего корпуса двухкорпусного судна, соприкасающаяся с морем.
4.2.97.1.43 platform_deck
Нижняя палуба, как правило, в грузовом помещении, не участвующая в обеспечении продольной прочности судна.
4.2.97.1.44 plating
Сплошной материал, используемый для обеспечения опоры, разделения, закрытия и т.д., для переборок, палуб, рубок, обшивки, внутреннего днища и пр.
4.2.97.1.45 sheer_strake
Участок наружной обшивки корпуса на уровне прочной палубы, как правило, усиленной и без отверстий.
4.2.97.1.46 ship_structure
Конструкция всего судна целиком.
4.2.97.1.47 stern_frame
Большая отливка, поковка или сварная конструкция, прикрепленная к кормовой оконечности киля. Включает в себя рулевую обойму, а на одновинтовых судах - старн-пост.
4.2.97.1.48 stool
Конструктивная опора, расположенная в основании гофрированной поперечной переборки, обеспечивающая переход между переборкой и внутренним днищем.
4.2.97.1.49 strength_bulkhead
Переборка, участвующая в обеспечении прочности судна.
4.2.97.1.50 strength_deck
Палуба, выполненная в виде самой верхней части основной продольной балки усиления корпуса. Большую нижнюю часть этой балки образует днищевая обшивка корпуса.
4.2.97.1.51 stringer
Термин, применяемый к идущей по всей длине судна продольной балке, проходящей вдоль борта судна у обшивки корпуса, а также к внешнему поясу обшивки на любой палубе. Также включает боковые части трапа или лестницы, к которым крепятся ступени и подступени.
4.2.97.1.52 superstructure
Конструкция с настилом над верхней палубой, внешние борта которой образованы внешней обшивкой корпуса. Эта конструкция отличается от рубки, которая не выходит за борт по бортам судна.
4.2.97.1.53 superstructure_aft_bulkhead
Основная поперечная переборка, образующая кормовую границу надстройки.
4.2.97.1.54 superstructure_front_bulkhead
Основная поперечная переборка, образующая носовую границу надстройки.
4.2.97.1.55 superstructure_side_bulkhead
Основные продольные переборки по бортам (по левому и правому борту), образующие боковые границы надстройки.
4.2.97.1.56 tank_bottom
Нижняя граница цистерны; днищевая обшивка корпуса, верхняя часть внутреннего дна или палуба, образующая нижнюю границу цистерны.
4.2.97.1.57 tank_bulkhead
Продольные или поперечные вертикальные усиленные листовые конструкции, которые добавляются для формирования боковых и торцевых границ цистерны.
4.2.97.1.58 tank_side
Продольные усиленные листовые конструкции, которые добавляются для формирования боковых границ цистерны.
4.2.97.1.59 tank_top
Горизонтальные усиленные листовые конструкции, которые добавляются для формирования верхней границы цистерны.
4.2.97.1.60 transom
Прямая широкая корма, используемая для увеличения объема корпуса и палубного пространства в кормовой части и (или) для уменьшения сопротивления на некоторых высокоскоростных судах.
4.2.97.1.61 transversal_bulkhead
Вертикальные усиленные листовые конструкции, ориентированные поперек судна и используемые для разделения или деления судна на части для обеспечения прочности, для обеспечения остойчивости в неповрежденном виде и для разделения помещений.
4.2.97.1.62 transverse_floor
Вертикальный поперечный лист непосредственно над днищевой обшивкой корпуса, часто расположенный на каждом шпангоуте, идущий от скулы до скулы.
4.2.97.1.63 transverse_web_frame
Составной шпангоут для обеспечения дополнительной прочности, обычно состоящий из листа с фланцами или иным образом усиленный по краю, разнесенный на несколько шпаций, с меньшими обычными шпангоутами между ними.
4.2.97.1.64 upper_boom
Конструкция, расположенная на высоком уровне судна, предназначенная для погрузочно-разгрузочных работ и работающая совместно с нижней стрелой.
4.2.97.1.65 user_defined
Цель использования базовой конструкции определяется пользователем.
4.2.97.1.66 vertical_web_frame
Тип рамного шпангоута.
4.2.97.1.67 wall
Термин, хотя и не относится к судостроительной терминологии, применяется к любой из перегородок, которые используются для разделения внутренней части судна на различные отсеки.
4.2.97.1.68 wash_bulkhead
Продольная или поперечная негерметичная переборка, установленная в цистерне для уменьшения плескания жидкого содержимого при бортовой и килевой качке судна в море.
Примечание - Также называется отбойной переборкой.
4.2.97.1.69 weather_deck
Самая верхняя непрерывная палуба без верхнего защитного перекрытия.
4.2.97.1.70 web_frame
Составной шпангоут для обеспечения дополнительной прочности, обычно состоящий из листа с фланцами или иным образом усиленный по краю, разнесенный на несколько шпаций, с меньшими обычными шпангоутами между ними.
4.2.97.1.71 wing_bulkhead
Крайняя продольная переборка, формирующая границу бортовой цистерны (левой или правой).
4.2.97.2 Данные surface_shape
Данные surface_shape указывают базовое геометрическое определение объекта Ship_surface.
Прикладной объект Shiptype является типом объекта Functional_definition (см. 4.2.39) и описывает функцию, назначение или задачу, для которой проектируется объект Ship (см. 4.2.88). Значением каждого прикладного объекта Shiptype является либо Carrier (см. 4.2.9), Navy_ship (см. 4.2.71), Research_ship (см. 4.2.82), либо Working_ship (см. 4.2.127).
Пример - Типы судов показаны на рисунках 45 и 46.
![]() ![]() С объектом Shiptype связаны следующие данные:
- defined_for;
- description.
4.2.98.1 Данные defined_for
Данные defined_for указывают судно, для которого определен данный тип судна. Прикладное утверждение - см. 4.3.97.
4.2.98.2 Данные description
Данные description указывают дополнительную информацию о судне.
Прикладной объект Shipyard_designation является объектом типа General_characteristics_definition (см. 4.2.40), который указывает идентификацию, присвоенную судну судостроительной организацией.
С объектом Shipyard_designation связаны следующие данные:
- local_units;
- role;
- shipyard;
- shipyard_new_building_id;
- shipyard_project_name.
4.2.99.1 Данные local_units
Данные local_units определяют единицы, используемые определением и отличающиеся от единиц, глобально определенных для судна. Значением данных вида local_units может быть Derived_unit (см. 4.2.24) или Named_unit (см. 4.2.70). Для конкретного Shipyard_designation данные вида local_units могут быть не заданы. В одном объекте Shipyard_designation может быть задано несколько данных вида local_units. Прикладные утверждения - см. 4.3.98 и 4.3.99.
4.2.99.2 Данные role
Данные role указывают контрактное обязательство судостроительной верфи в отношении судна.
Значение данных вида role должно быть одним из следующих:
- prime;
- prime_build;
- prime_design;
- prime_repair;
- subcontractor.
Примечание - Определение всех допустимых значений данных вида role дано в 4.2.100.2.1 - 4.2.100.2.5.
Судостроительная верфь является генеральным подрядчиком на судно.
4.2.99.2.2 prime_build
Судостроительная верфь является генеральным подрядчиком на судно с договорной ответственностью за изготовление судна.
4.2.99.2.3 prime_design
Судостроительная верфь является генеральным подрядчиком на судно с договорной ответственностью за проектирование судна.
4.2.99.2.4 prime_repair
Судостроительная верфь является генеральным подрядчиком на судно с договорной ответственностью за ремонт судна.
Судостроительная верфь является субподрядчиком, нанимаемым генеральным подрядчиком, по судну.
4.2.99.3 Данные shipyard
Данные shipyard определяют наименование и детали организации судостроительной верфи.
4.2.99.4 Данные shipyard_new_building_id
Данные shipyard_new_building_id определяют идентификатор судна, присваиваемый верфью после подтверждения заказа. Для конкретного Shipyard_designation данные вида shipyard_new_building_id могут быть не заданы.
4.2.99.5 Данные shipyard_project_name
Данные shipyard_project_name определяют идентификатор судна, присваиваемый верфью при получении заказа или тендера на новое судно.
Прикладной объект Spacing_position указывает положение на одной из глобальных осей координат судна, используемое в качестве привязки для любого геометрического или конструктивного элемента, во время проектирования и изготовления судна. Значением каждого Each Spacing_position может быть Spacing_position_with_offset (см. 4.2.101), Longitudinal_position (см. 4.2.58), Transversal_position (см. 4.2.113) или Vertical_position (см. 4.2.122).
Пример - Интервальные положения обычно задаются элементом продольного набора 123 или поперечного набора 10, 100, 100.1, A. Кроме того, определяется расстояние до глобальной точки отсчета, например 154,5 м.
Примечание - Продольные, поперечные и вертикальные объекты Spacing_position показаны на рисунке 47.
![]() С объектом Spacing_position связаны следующие данные:
- name;
- position;
- position_number.
4.2.100.1 Данные name
Данные name задают подпись, используемую для идентификации нулевой точки. Для конкретного Spacing_position данные вида name могут быть не заданы.
4.2.100.2 Данные position
Данные position указывают расстояние до точки отсчета глобальной системы координат объекта Ship (см. 4.2.88). Ось, по которой измеряется это расстояние, зависит от типа объекта Spacing_position.
4.2.100.3 Данные position_number
Данные position_number указывают численную идентификацию, заданную для объекта Spacing_position.
Прикладной объект Spacing_position_with_offset является типом объекта Spacing_position (см. 4.2.100), а именно указывает положение, определенное смещением относительно существующего интервального положения на одной из глобальных осей координат судна. Используется в качестве привязки для любого геометрического или конструктивного элемента во время проектирования и изготовления судна.
С объектом Spacing_position_with_offset связаны следующие данные:
- offset;
- position;
- relating_spacing_position.
4.2.101.1 Данные offset
Данные offset указывают расстояние до соответствующего интервального положения. Ось, по которой измеряется это расстояние, зависит от типа соответствующего объекта Spacing_position (см. 4.2.100).
4.2.101.2 Данные position
Данные position указывают расстояние до точки отсчета глобальной системы координат судна. Ось, по которой измеряется это расстояние, зависит от типа соответствующего объекта Spacing_position (см. 4.2.100).
4.2.101.3 Данные relating_spacing_position
Данные relating_spacing_position указывают интервальное положение, от которого берется смещение для идентификации Spacing_position_with_offset. Прикладное утверждение - см. 4.3.100.
Прикладной объект Spacing_table является типом объекта Definition (см. 4.2.23), представляющим набор объектов Spacing_position (см. 4.2.100), который определяет перечень нулевых точек по одной из осей координат судна. Значением каждого Spacing_table может быть Longitudinal_table (см. 4.2.59), Transversal_table (см. 4.2.114) или Buttock_table (см. 4.2.8).
С объектом Spacing_table связаны следующие данные:
- name;
- spacing_table_representations.
4.2.102.1 Данные name
Данные name указывают контекстно-зависимую идентификацию для объекта Spacing_table. Для конкретного Spacing_table данные вида name могут быть не заданы.
4.2.102.2 Данные spacing_table_representations
Данные spacing_table_representations указывают положения, из которых состоит таблица, на рассматриваемой оси координат. Прикладное утверждение - см. 4.3.101.
Прикладной объект Stability_definition является типом объекта Design_definition (см. 4.2.25), который определяет характеристики остойчивости для данного судна. Результаты указывают в табличной форме для различных условий нагружения, и они представляют собой плечи восстанавливающих моментов и центр величины для разных углов крена.
Примечание - Остойчивость поврежденного судна является отдельным случаем объекта Stability_definition.
С объектом Stability_definition связаны следующие данные:
- defined_for;
- representations.
4.2.103.1 Данные defined_for
Данные defined_for указывают объект Ship (см. 4.2.88), для которого определен объект Stability_definition. Прикладное утверждение - см. 4.3.102.
4.2.103.2 Данные representations
Данные representations указывают объект Stability_table (см. 4.2.106), который представлен объектом Stability_definition. Прикладное утверждение - см. 4.3.103.
4.2.104 Прикладной объект Stability_properties_for_one_floating_position
Прикладной объект Stability_properties_for_one_floating_position является набором данных, относящихся к расчетам остойчивости для конкретного Floating_position (см. 4.2.37) для объекта Ship_moulded_form (см. 4.2.93).
С объектом Stability_properties_for_one_floating_position связаны следующие данные:
- centre_of_gravity_above_keel;
- definition_of_starting_floating_position;
- related_stability_table;
- stability_properties_for_different_angles_of_heel.
4.2.104.1 Данные centre_of_gravity_above_keel
Данные centre_of_gravity_above_keel указывают размещение центра тяжести судна. Считается, что размещение центра тяжести судна не будет меняться в зависимости от угла крена. Координату X измеряют от кормового перпендикуляра, координату Y - от ДП, а координату Z - от ОП. Прикладное утверждение - см. 4.3.104.
4.2.104.2 Данные definition_of_starting_floating_position
Данные definition_of_starting_floating_position задают объект Floating_position (см. 4.2.37) судна для определенных условий нагружения, который используется в качестве начальной точки для расчетов характеристик остойчивости. К объекту Floating_position относятся осадка, крен, дифферент, а также соответствующий объем водоизмещения для объекта Ship (см. 4.2.88). Прикладное утверждение - см. 4.3.105.
4.2.104.3 Данные related_stability_table
Данные related_stability_table указывают объект Stability_table (см. 4.2.106), с которым связаны объекты Stability_properties_for_one_floating_position.
С объектом Stability_properties_for_one_floating_position может быть связано несколько данных вида related_stability_table. Прикладное утверждение - см. 4.3.108.
4.2.104.4 Данные stability_properties_for_different_angles_of_heel
Данные stability_properties_for_different_angles_of_heel указывают характеристику остойчивости, действительную для конкретного Stability_properties_for_one_floating_position. С объектом Stability_properties_for_one_floating_position может быть связано несколько данных вида stability_properties_for_different_angles_of_heel. Прикладное утверждение - см. 4.3.106.
4.2.105 Прикладной объект Stability_property
Прикладной объект Stability_property представляет собой необходимые характеристики для расчетов остойчивости для Ship_moulded_form (см. 4.2.93) при определенных условиях нагружения.
С объектом Stability_property связаны следующие данные:
- angle_of_heel;
- centre_of_buoyancy;
- righting_arm.
4.2.105.1 Данные angle_of_heel
Данные angle_of_heel указывают угол вращения судна вокруг оси X. Значения данных вида angle_of_heel будут положительными при движении правого борта судна вниз.
4.2.105.2 Данные centre_of_buoyancy
Данные centre_of_buoyancy указывают размещение центра объема погруженного объема объекта Ship_moulded_form (см. 4.2.93). Координату X измеряют от кормового перпендикуляра, координату Y - от ДП, а координату Z - от ОП. Прикладное утверждение - см. 4.3.107.
4.2.105.3 Данные righting_arm
Данные righting_arm указывают расстояние между линией перпендикуляра, проходящей через точку centre_of_gravity_above_keel, и линией перпендикуляра, проходящей через точку centre_of_buoyancy. Обе линии берутся ортогонально к ватерлинии при крене.
Прикладной объект Stability_table представляет собой характеристику остойчивости для указанного судна в неповрежденном и поврежденном состояниях, в зависимости от определения остойчивости. Результаты указывают в табличной форме, и они представляют собой плечи восстанавливающих моментов и центр величины для разных углов крена для одного начального объекта Floating_position (см. 4.2.37).
Пример - Диаграмма остойчивости показана на рисунке 50.
С объектом Stability_table связаны следующие данные:
- items;
- mean_shell_thickness;
- name.
4.2.106.1 Данные items
Данные items указывают характеристику остойчивости, а именно плечо восстанавливающего момента и центр величины для угла крена для одного начального объекта Floating_position (см. 4.2.37), для которого определен объект Stability_table. В одном объекте Stability_table может быть задано несколько данных вида items. Прикладное утверждение - см. 4.3.108.
4.2.106.2 Данные mean_shell_thickness
Данные mean_shell_thickness указывают реальное значение средней толщины обшивки корпуса, которое может использоваться для определения соответствующей экстремальной формы для характеристик остойчивости для судна с учетом толщины.
4.2.106.3 Данные name
Данные name указывают определенное пользователем или системой имя для Stability_table.
Прикладной объект Station_table является типом Longitudinal_table (см. 4.2.59), у которого имеются положения, указывающие размещение теоретических шпангоутов, располагающихся на глобальной оси X.
Примечание - Теоретические шпангоуты используют при проектировании судна, а кривыми теоретических шпангоутов являются кривые поперечных сечений, проходящих через корпус судна. Обычно бывает 20 теоретических шпангоутов, однако это число может быть разным на различных судостроительных верфях.
Прикладной объект Subtraction_of_moulded_form является типом объекта Displacement_operation (см. 4.2.26), определяющим тип данных displacement_operation, где водоизмещение объекта Ship_moulded_form (см. 4.2.93) будет уменьшено на водоизмещение нового объекта Moulded_form (см. 4.2.61).
Прикладной объект Surface_shape_representation является типом объекта Moulded_form_shape_representation (см. 4.2.69), объединяющим топологическую и геометрическую информацию для описания поверхностной модели в виде связанных участков поверхности.
Пример - Surface_shape_representation показан на рисунке 48.
![]() С объектом Surface_shape_representation связаны следующие данные:
- items.
Данные items указывают набор моделей поверхности на основе граней, составляющих объект Surface_shape_representation.
4.2.110 Прикладной объект Surface_with_identifier
Surface_with_identifier является геометрической поверхностью поверхностей любого типа, разрешенного в рамках представления Non_manifold_surface_shape_representation, как указано в ИСО 10303-508, дополнительно ограниченной включением постоянного глобального идентификатора, который обеспечивает уникальную идентификацию поверхности.
Примечание - Возможность постоянной глобальной уникальной идентификации поверхности способствует взаимодействию и повторному использованию данных между настоящим стандартом, ИСО 10303-215 и ИСО 10303-218. Принимающая система, которая сохранила поверхность с постоянным идентификатором из файла обмена, соответствующего настоящему стандарту, сможет определить, что поверхность является идентичной копией поверхности, полученной в отдельном файле обмена, соответствующем ИСО 10303-215 или ИСО 10303-218.
Данные, связанные с идентификатором Surface_with_identifier, приведены ниже:
- id.
Данные id задают глобальный однозначный идентификатор поверхности. Прикладное условие - см. 4.3.109.
Прикладной объект Thruster_moulded_form_design_parameter является типом объекта Moulded_form_characteristics_definition (см. 4.2.63), содержащим размеры и отношения трубы подруливающего устройства и гребного винта.
С объектом Thruster_moulded_form_design_parameter связаны следующие данные:
- geometric_thruster_location;
- thruster_location;
- thruster_propeller_parameter;
- thruster_tunnel_diameter;
- thruster_tunnel_max_length;
- thruster_tunnel_min_length.
4.2.111.1 Данные geometric_thruster_location
Данные geometric_thruster_location указывают размещение осевой линии трубы подруливающего устройства. Координату X измеряют от кормового перпендикуляра, координату Y - от ДП, а координату Z - от ОП. Прикладное утверждение - см. 4.3.110.
4.2.111.2 Данные thruster_location
Данные thruster_location указывают, где располагается подруливающее устройство, в носу или в корме. Значение данных вида thruster_location должно быть одним из следующих:
- bow;
- stern.
Примечание - Определение каждого допустимого значения данных thruster_location - см. 4.2.111.2.1, 4.2.111.2.2.
Размещение в носу корпуса судна.
Размещение в корме корпуса судна.
4.2.111.3 Данные thruster_propeller_parameter
Данные thruster_propeller_parameter указывают размеры и отношения гребного винта в трубе подруливающего устройства. Прикладное утверждение - см. 4.3.111.
Пример - Гребной винт подруливающего устройства показан на рисунке 49.
![]() 4.2.111.4 Данные thruster_tunnel_diameter
Данные thruster_tunnel_diameter указывают диаметр трубы подруливающего устройства.
4.2.111.5 Данные thruster_tunnel_max_length
Данные thruster_tunnel_max_length указывают максимальную длину трубы подруливающего устройства там, где она пересекается с корпусом судна.
4.2.111.6 Данные thruster_tunnel_min_length
Данные thruster_tunnel_min_length указывают минимальную длину трубы подруливающего устройства там, где она пересекается с корпусом судна.
![]() G - центр тяжести; B - центр величины в натуральном равновесном положении;
B1 - центр величины в зависимости от угла крена
Прикладной объект Transversal_position является типом объекта Spacing_position (см. 4.2.100), который располагается на глобальной оси Y.
Прикладной объект Transversal_table является типом объекта Spacing_table (см. 4.2.102), имеющим положения вдоль поперечной оси глобальной системы координат, т.е. глобальной оси Y. Значением объекта Transversal_table может быть объект Buttock_table (см. 4.2.8).
С объектом Transversal_table связаны следующие данные:
- spacing_table_representations.
4.2.113.1 Данные spacing_table_representations
Данные spacing_table_representations указывают поперечное положение, для которого определяется объект Transversal_table. В одном объекте Transversal_table может быть задано несколько поперечных положений. Прикладное утверждение - см. 4.3.111.
Прикладной объект Universal_resource_locator задает адрес электронного источника данных. Источником электронных данных является адрес в Интернете. Структура объекта Universal_resource_locator может точно отвечать спецификации идентификатора единообразного ресурса (URI), как описано в RFC 2396.
Пример - К данным вида Universal_resource_locator относится: /template/go.php?url=https://www.w3.org
С объектом Universal_resource_locator связаны следующие данные:
- location.
4.2.114.1 Данные location
Данные вида location указывают место хранения, где в сети находится документ или другая информация.
Примечание - Такое местоположение, как правило, состоит из нескольких элементов, например тип протокола, машинный адрес (имя или номер интернетовского протокола), номер дополнительного порта и локальный путь. Возможны и другие элементы.
Пример 1 - Местоположением текстового документа является /template/go.php?url=https://www.w3.org/Addressing/rfc1738.txt
Пример 2 - Местоположением табличного документа является ftp://ttp.atlantec-es.com/pub/out/AP218/post-ws/mapping status.xls
Прикладной объект Version_creation является типом объекта Versionable_object_change_event (см. 4.2.122), представляющим событие, ведущее к новому объекту Definition (см. 4.2.23), Item_structure (см. 4.2.54) или Item_relationship (см. 4.2.53).
С объектом Version_creation связаны следующие данные:
- base;
- subject.
4.2.115.1 Данные base
Данные base указывают объект Versionable_object (см. 4.2.121), из которого берется субъект. Основание должно существовать в том случае, если объект, на который указывает атрибут субъекта, каким-то образом получен из существующего объекта. Основание может не быть непосредственно предшествующей версией объекта Versionable_object, указанной в атрибуте субъекта, но может ссылаться на любую предыдущую версию в истории версий этого объекта Item (см. 4.2.52) или на любой объект Versionable_object другого объекта Item, участвующий в создании субъекта. Для одного объекта Version_creation может быть задано несколько данных вида base. Прикладное утверждение - см. 4.3.113.
4.2.115.2 Данные subject
Данные subject указывают Versionable_object (см. 4.2.121), созданный событием изменения created by the change event. Прикладное утверждение - см. 4.3.113.
Прикладной объект Version_deletion является типом объекта Versionable_object_change_event (см. 4.2.121), который представляет собой событие, ведущее к удалению объекта Definition (см. 4.2.23), Item_structure (см. 4.2.54), или Item_relationship (см. 4.2.53).
С объектом Version_deletion связаны следующие данные:
- subject.
4.2.116.1 Данные subject
Данные subject указывают объект, который был удален или должен быть удален событием изменения. Прикладное утверждение - см. 4.3.114.
Прикладной объект Version_history идентифицирует объекты Versionable_object (см. 4.2.121) и их объекты Version_relationship (см. 4.2.120) в части их роли в качестве предшественника, преемника и относительно друг друга. Объектом Version_history должен быть направленный ациклический график.
Примечание - Следовательно, объект Version_history может содержать объекты Versionable_object, которые считаются альтернативными друг другу (Versionable_object с несколькими преемниками), а также объединенные объекты Versionable_object objects (объект Versionable_object с несколькими предшественниками).
С объектом Version_history связаны следующие данные:
- current_version;
- relationships;
- versions.
4.2.117.1 Данные current_version
Данные current_version задают объект Versionable_object (см. 4.2.121), играющий роль текущей версии в данном объекте Version_history. Прикладное утверждение - см. 4.3.116.
4.2.117.2 Данные relationships
Данные relationships указывают Version_relationship (см. 4.2.120), для которого определяется объект Version_history. В одном объекте Version_history может быть задано несколько объектов Version_relationship. Прикладное утверждение - см. 4.3.115.
4.2.117.3 Данные versions
Данные versions указывают Versionable_object (см. 4.2.121), для которого определяется объект Version_history. В одном объекте Version_history может быть задано несколько объектов Versionable_object. Прикладное утверждение - см. 4.3.116.
Прикладной объект Version_modification является типом объекта Versionable_object_change_event (см. 4.2.122), представляющим событие, ведущее к изменению объекта Versionable_object (см. 4.2.121). Объект Versionable_object основания может не быть непосредственно предшествующей версией объекта Versionable_object субъекта, но может ссылаться на любую предыдущую версию в объекте Version_history (см. 4.2.118) или том же объекте Item (см. 4.2.52).
Пример - Типом объекта Version_modification может быть создание новой версии существующей сущности.
С объектом Version_modification связаны следующие данные:
- base;
- subject.
4.2.118.1 Данные base
Данные base указывают Versionable_object (см. 4.2.121), из которого берется субъект. В одном объекте Version_modification может быть несколько данных вида base. Прикладное утверждение - см. 4.3.117.
4.2.118.2 Данные subject
Данные subject задают объект Versionable_object (см. 4.2.121), который был изменен или должен быть изменен событием изменения. Прикладное утверждение - см. 4.3.117.
Прикладной объект Version_relationship определяет взаимосвязь двух объектов Versionable_object (см. 4.2.121) одного типа в части Version_history (см. 4.2.118).
С объектом Version_relationship связаны следующие данные:
- predecessor;
- reason;
- successor.
4.2.119.1 Данные predecessor
Данные predecessor указывают Versionable_object (см. 4.2.121), из которого берется преемник. Прикладное утверждение - см. 4.3.116.
4.2.119.2 Данные reason
Данные reason указывают, почему определенное лицо создало новую версию в определенное время.
4.2.119.3 Данные successor
Данные successor указывают Versionable_object (см. 4.2.120), чьим предшественником является предшествующая версия. Прикладное утверждение - см. 4.3.116.
Прикладной объект Versionable_object является объектом, для которого могут существовать версии. Значением каждого объекта Versionable_object является либо Definition (см. 4.2.23), Document (см. 4.2.27), Revision (см. 4.2.83), Item_relationship (см. 4.2.53), либо Item_structure (см. 4.2.54).
С объектом Versionable_object связаны следующие данные:
- description;
- version_id.
4.2.120.1 Данные description (описание)
Данные description указывают дополнительную информацию, идентифицирующую или описывающую объект. Для конкретного Versionable_object данные вида description могут быть не заданы.
4.2.120.2 Данные version_id
Данные version_id указывают идентификатор версии для Versionable_object.
Прикладной объект Versionable_object_change_event является типом объекта Event (см. 4.2.33), представляющим собой обобщение объектов Event, фактически меняющим объект Definition (см. 4.2.23), Item_structure (см. 4.2.54) или Item_relationship (см. 4.2.53). Значением прикладного объекта Versionable_object_change_event может быть Envisaged_version_creation (см. 4.2.32), Version_creation (см. 4.2.115), Version_deletion (см. 4.2.116) или Version_modification (см. 4.2.118).
Прикладной объект Vertical_position является типом объекта Spacing_position (см. 4.2.100), расположенным на глобальной оси Z.
Прикладной объект Vertical_table является типом объекта Spacing_table (см. 4.2.102), у которого имеются положения вдоль вертикальной оси глобальной системы координат, а именно глобальной оси Z. Значением прикладного объекта Vertical_table может быть Waterline_table (см. 4.2.124).
С объектом Vertical_table связаны следующие данные:
- spacing_table_representations.
4.2.123.1 Данные spacing_table_representations
Данные spacing_table_representations указывают вертикальные положения, входящие в таблицу вертикальных элементов. Прикладное утверждение - см. 4.3.118.
Прикладной объект Waterline_table является типом объекта Vertical_table (см. 4.2.123), чьи положения являются привязкой для размещения ватерлиний и расположены на глобальной оси Z.
Прикладной объект Wireframe_shape_representation является типом объекта Moulded_form_shape_representation (см. 4.2.69), определяющим каркасное представление судна или части судна. Каркасное представление определяется перечнем объектов Ship_curve (см. 4.2.89). Большинство объектов Ship_curve проходит через весь каркас, от одного конца до другого.
Пример 1 - Типовой объект Wireframe_shape_representation можно сформировать с помощью перечня кривых теоретических шпангоутов и ватерлиний.
Пример 2 - Объект Wireframe_shape_representation показан на рисунке 51.
![]() С объектом Wireframe_shape_representation связаны следующие данные:
- items.
4.2.125.1 Данные items
Данные items указывают перечень объектов Ship_curve (см. 4.2.89), которые образуют объект Wireframe_shape_representation. Прикладное представление - см. 4.3.119.
Прикладной объект Working_ship является типом объекта Shiptype (см. 4.2.98), а именно судном, построенным для выполнения определенных задач.
С объектом Working_ship связаны следующие данные:
- has_type.
4.2.126.1 Данные has_type
Данные has_type указывают тип судна.
Значение данных вида has_type должно быть одним из следующих:
- crane_vessel;
- dredger;
- drilling_vessel;
- fire_fighter;
- fishing_vessel;
- floating_dock;
- floating_hotel;
- fpgo;
- fpso;
- ice_breaker;
- offshore_supply_vessel;
- oil_production_and_storage_vessel;
- oil_production_vessel;
- oil_storage_vessel;
- pilot_boat;
- pipe_laying_vessel;
- pusher;
- reefer;
- sealer;
- shuttle_tanker;
- stern_trawler;
- supply_vessel;
- tug;
- user_defined;
- well_stimulation_vessel.
Примечание - Определение каждого допустимого значения данных вида has_type см. в 4.2.127.1.1 - 4.2.127.1.25.
Объект Working_ship, построенный для грузоподъемных работ.
4.2.126.1.2 dredger
Объект Working_ship, построенный для углубления фарватеров или входов в гавань.
4.2.126.1.3 drilling vessel
Объект Working_ship, построенный для бурения.
4.2.126.1.4 fire_fighter
Объект Working_ship, построенный для пожаротушения.
4.2.126.1.5 fishing vessel
Объект Working_ship, построенный для рыболовства.
4.2.126.1.6 floating dock
Объект Working_ship, построенный для подъема судов для выполнения ремонтных работ.
4.2.126.1.7 floating hotel
Объект Working_ship, построенный для использования в качестве гостиницы.
4.2.126.1.8 fpgo
Плавучая платформа, используемая для добычи и хранения газа.
4.2.126.1.9 fpso
Плавучая платформа, используемая для добычи и хранения нефти.
4.2.126.1.10 ice_breaker
Объект Working_ship, построенный для ледокольных целей.
4.2.126.1.11 offshore_supply_vessel
Объект Working_ship, построенный для снабжения морских платформ.
4.2.126.1.12 oil_production_and_storage_vessel
Объект Working_ship, используемый для добычи и хранения нефти.
4.2.126.1.13 oil_production_vessel
Объект Working_ship, построенный для добычи нефти.
4.2.126.1.14 oil_storage_vessel
Объект Working_ship, построенный для хранения нефти.
4.2.126.1.15 pilot_boat
Объект Working_ship, предназначенный для перевозки лоцмана, который заводит и выводит судно в/из порта.
4.2.126.1.16 pipe_laying_vessel
Объект Working_ship, предназначенный для укладки труб.
4.2.126.1.17 pusher
Объект Working_ship, предназначенный для буксировки других несамоходных судов.
4.2.126.1.18 reefer
Объект Working_ship, разработанный для перевозки рефрижераторных грузов.
4.2.126.1.19 sealer
Объект Working_ship, построенный для промысла тюленей.
4.2.126.1.20 shuttle_tanker
Объект Working_ship, оборудованный для отгрузки нефти в море.
Примечание - Допускается использовать для транспортировки нефти с платформы на берег.
4.2.126.1.21 stern_trawler
Объект Working_ship, предназначенный для тралового лова в море с кормы судна.
4.2.126.1.22 supply_vessel
Объект Working_ship, построенный для транспортировки поставок.
Пример - К типу supply_vessel относится морское судно снабжения.
4.2.126.1.23 tug
Объект Working_ship, предназначенный для буксировки.
4.2.126.1.24 user_defined
Тип судна не относится ни к одному из предопределенных здесь типов.
Примечание - Детали приводятся в атрибуте описания объекта Shiptype (см. 4.2.99).
Объект Working_ship, предназначенный для интенсификации притока к скважинам.
В настоящем подразделе определены прикладные утверждения для прикладного протокола теоретических обводов судна. Прикладные утверждения определяют отношения между прикладными объектами, количество элементов отношений и правила, необходимые для обеспечения целостности и достоверности прикладных объектов и функциональных единиц. Сами прикладные утверждения и их определения приведены ниже.
Примечание - Ниже приведены несколько утверждений, которые задают количество элементов, равное нулю, для отношения между подтипом объекта Definition и Derived_unit (или Named_unit). Это связано с тем, что атрибут local_units объекта Definition предопределен в подтипе как пустое множество.
Для каждого объекта Alternative_version_relationship имеются данные вида alternative_1, определяемые только одним объектом Versionable_object. Каждый объект Versionable_object определяет данные вида alternative_1 для нулевого, единичного или нескольких объектов Alternative_version_relationship.
Для каждого объекта Alternative_version_relationship имеются данные вида alternative_2, определяемые только одним объектом Versionable_object. Каждый Versionable_object определяет данные alternative_2 для нулевого, единичного или нескольких объектов Alternative_version_relationship.
Для каждого объекта Approval_history имеются данные вида approvals, определяемые последовательным списком одного или нескольких объектов Approval_event. Каждый Approval_event определяет данные approval_reference только одного объекта Approval_history.
Для каждого объекта имеются данные вида subject, определяемые только одним объектом Definition. Каждый Definition определяет данные subject для нулевого, единичного или нескольких объектов Approval_history.
Для каждого объекта Change_definition имеются данные вида defined_for, определяемые одним или несколькими объектами Change objects. Каждый объект Change определяет данные вида defined_for для нулевого, единичного или нескольких объектов Change_definition.
Для каждого объекта Change_definition имеются данные вида units, определяемые только нулевым объектом Derived_unit. Каждый объект Derived_unit определяет данные units только для нулевого объекта Change_definition.
Примечание - Это утверждение вводится путем выбора unit.
Для каждого объекта Change_definition имеются данные вида units, определяемые только нулевым объектом Named_unit. Каждый объект Named_unit определяет данные вида units только для нулевого объекта Change_definition.
Примечание - Это утверждение вводится путем выбора unit.
Для каждого объекта Change_impact имеются данные вида impact, определяемые одним или несколькими объектами Versionable_object_change_event. Каждый Versionable_object_change_event определяет данные вида impact для нулевого, единичного или нескольких объектов Change_impact.
Для каждого объекта Change_plan имеются данные вида planned_impact, определяемые только одним объектом Change_impact. Каждый Change_impact определяет данные вида planned_impact для нулевого, единичного или нескольких объектов Change_plan.
Для каждого объекта Change_plan имеются данные вида checks, определяемые нулевым, единичным или несколькими объектами Check objects. Каждый объект Check определяет данные checks для нулевого, единичного или нескольких объектов Change_plan.
Для каждого объекта Change_plan имеются данные вида chosen_solution_for, определяемые только одним объектом Change_request. Каждый объект Change_request определяет данные chosen_solution_for для нулевого, единичного или нескольких объектов Change_plan.
Для каждого объекта Change_realization имеются данные вида impact, определяемые только одним объектом Change_impact. Каждый объект Change_impact определяет данные impact для нулевого, единичного или нескольких объектов Change_realization.
Для каждого объекта Change_realization имеются данные вида checks, определяемые нулевым, единичным или несколькими объектами Check objects. Каждый объект Check определяет данные checks для нулевого, единичного или нескольких объектов Change_realization.
Для каждого объекта Change_realization имеются данные вида realization_of, определяемые только одним объектом Change_plan. Каждый объект Change_plan определяет данные realization_of для нулевого, единичного или нескольких объектов Change_realization.
Для каждого объекта Change_request имеются данные вида solution_alternatives, определяемые нулевым, единичным или несколькими объектами Change_impact. Каждый объект Change_impact определяет данные solution_alternatives для нулевого, единичного или нескольких объектов Change_realization.
Для каждого Class_and_statutory_designation имеются данные вида the_class, определяемые только одним объектом Class_notation. Каждый объект Class_notation определяет данные the_class для нулевого, единичного или нескольких объектов Class_and_statutory_designation.
Для каждого объекта Change_definition имеются данные вида units, определяемые только нулевым объектом Named_unit. Каждый объект Named_unit определяет данные units только для нулевого объекта Class_and_statutory_designation.
Примечание - Это утверждение вводится путем выбора unit.
Для каждого объекта Class_and_statutory_designation имеются данные вида units, определяемые только нулевым объектом Derived_unit. Каждый объект Derived_unit определяет данные units только для нулевого объекта Class_and_statutory_designation.
Примечание - Это утверждение вводится путем выбора unit.
Для каждого объекта Class_and_statutory_designation имеются данные вида the_statutory, определяемые только одним объектом Regulation. Каждый объект Regulation определяет данные вида the_statutory для нулевого, единичного или нескольких объектов Class_and_statutory_designation.
Для каждого объекта Deck_moulded_form_design_parameter имеются данные вида defined_for defined, определяемые одним или несколькими объектами Moulded_form. Каждый объект Moulded_form определяет данные вида defined_for для нулевого, единичного или нескольких объектов Deck_moulded_form_design_parameter.
Для каждого объекта Definable_object имеются данные вида id, определяемые только одним объектом Global_id. Каждый объект Global_id определяет данные вида id для нулевого, единичного или нескольких объектов Definable_object.
Для каждого объекта Definition имеются данные вида defined_for, определяемые одним или несколькими объектами Definable_object. Каждый объект Definable_object указывает определения для нулевого, единичного или нескольких объектов Definition.
Для каждого объекта Definition имеются данные вида units, определяемые нулевым, единичным или несколькими объектами Derived_unit. Каждый объект Derived_unit определяет данные вида units для нулевого, единичного или нескольких объектов Definition.
Примечание - Это утверждение вводится путем выбора unit.
Для каждого объекта Definition имеются данные вида id, определяемые только одним объектом Global_id. Каждый объект Global_id определяет данные вида id для нулевого, единичного или нескольких объектов Definition.
Для каждого объекта Definition имеются данные вида units, определяемые нулевым, единичным или несколькими объектами Named_unit. Каждый объект Named_unit определяет данные вида units для нулевого, единичного или нескольких Definition.
Примечание - Это утверждение вводится путем выбора unit.
Для каждого объекта Displacement_operation имеются данные вида displacement_of_moulded_form_to_add_or_subtract, определяемые только одним объектом Moulded_form. Каждый объект Moulded_form определяет данные вида displacement_of_moulded_form_to_add_or_subtract для нулевого, единичного или нескольких объектов Displacement_operation.
Для каждого объекта Document_portion имеются данные вида source, определяемые только одним объектом Document. Каждый объект Document определяет источник для нулевого, единичного или нескольких объектов Document_portion.
Для каждого объекта Document_reference имеются данные вида assigned_document, определяемые нулевым или единичным объектом Document. Каждый объект Document определяет данные вида assigned_document для нулевого, единичного или нескольких объектов Document_reference.
Примечание - Это утверждение вводится за счет выбора document_reference.
Для каждого объекта Document_reference имеются данные вида assigned_document, определяемые нулевым или единичным объектом Document_portion. Каждый объект Document_portion определяет данные вида assigned_document для нулевого, единичного или нескольких объектов Document_reference.
Примечание - Это утверждение вводится за счет выбора document_reference.
Для каждого объекта Envisaged_version_creation имеются данные вида base, определяемые нулевым, единичным или несколькими объектами Versionable_object. Каждый объект Versionable_object определяет данные вида base для нулевого, единичного или нескольких объектов Envisaged_version_creation.
Для каждого объекта External_instance_reference имеются данные вида target_guid, определяемые только одним объектом Global_id. Каждый объект Global_id определяет данные вида target_guid для нулевого, единичного или нескольких объектов External_instance_reference.
Для каждого объекта External_reference имеются данные вида location, определяемые нулевым или единичным объектом External_storage. Каждый объект External_storage определяет местоположение нулевого, единичного или нескольких объектов External_reference.
Примечание - Это утверждение вводится за счет выбора any_address.
Для каждого объекта External_reference имеются данные вида location, определяемые нулевым или единичным объектом Universal_resource_locator. Каждый объект Universal_resource_locator определяет местоположение нулевого, единичного или нескольких объектов External_reference.
Примечание - Это утверждение вводится за счет выбора any_address.
Для каждого объекта Functional_definition имеются данные вида units, определяемые только нулевым объектом Named_unit. Каждый объект Named_unit определяет данные вида units только для нулевого объекта Functional_definition.
Примечание - Это утверждение вводится путем выбора значения unit.
Для каждого объекта Functional_definition имеются данные вида units, определяемые только нулевым объектом Derived_unit. Каждый объект Derived_unit определяет данные вида units только для нулевого объекта Functional_definition.
Примечание - Это утверждение вводится путем выбора значения unit.
Для каждого объекта General_characteristics_definition имеются данные вида defined_for, определяемые одним или несколькими объектами Ship. Каждый объект Ship определяет данные вида defined_for для нулевого, единичного или нескольких объектов General_characteristics_definition.
Для каждого объекта Hull_applicability имеются данные вида definitions_for_hulls, определяемые нулевым, единичным или несколькими объектами Definition. Каждый объект Definition определят данные вида definitions_for_hulls для нулевого, единичного или нескольких объектов Hull_applicability.
Для каждого объекта Hull_applicability имеются данные вида items_for_hulls. Определяемые нулевым, единичным или несколькими объектами Item. Каждый объект Item определяет данные вида definitions_for_hulls для нулевого, единичного или нескольких объектов Hull_applicability.
Для каждого объекта Hull_moulded_form_design_parameter имеются данные вида midship_tumble_data, определяемые нулевым или единичным объектом Midship_tumble. Каждый объект Midship_tumble определяет данные вида midship_tumble_data для нулевого, единичного или нескольких объектов Hull_moulded_form_design_parameter.
Для каждого объекта Hydrostatic_definition имеется последовательный список данных вида displacement_changes, определяемых нулевым, единичным или несколькими объектами Displacement_operation. Каждый объект Displacement_operation определяет данные вида displacement_changes для нулевого, единичного или нескольких объектов Hydrostatic_definition.
Для каждого объекта Hydrostatic_definition имеются данные вида representations, определяемые одним или несколькими объектами Hydrostatic_table. Каждый объект Hydrostatic_table определяет данные вида representations для нулевого, единичного или нескольких объектов Hydrostatic_definition.
Для каждого объекта Hydrostatic_definition имеются данные вида defined_for, определяемые одним или несколькими объектами Ship. Каждый объект Ship определяет данные вида defined_for для нулевого, единичного или нескольких объектов Hydrostatic_definition.
Для каждого объекта Hydrostatic_position_value имеются данные вида position, определяемые только одним объектом Centre_location. Каждый объект Centre_location определяет данные вида position для нулевого, единичного или нескольких объектов Hydrostatic_position_value.
Для каждого объекта Hydrostatic_properties_for_constant_floating_position имеются данные вида definition_of_floating_position, определяемые только одним объектом Floating_position. Каждый объект Floating_position определяет данные вида definition_of_floating_position для нулевого, единичного или нескольких объектов Hydrostatic_properties_for_constant_floating_position.
Для каждого объекта Hydrostatic_properties_for_constant_floating_position имеются данные вида hydrostatic_property_values, определяемые одним или несколькими объектами Hydrostatic_property_value. Каждый объект Hydrostatic_property_value определяет данные вида hydrostatic_property_values для нулевого, единичного или нескольких объектов Hydrostatic_properties_for_constant_floating_position.
Для каждого объекта Hydrostatic_property имеются данные вида property_measure, определяемые только одним объектом Centre_location. Каждый объект Centre_location определяет данные вида property_measure для нулевого, единичного или нескольких объектов Hydrostatic_property.
Для каждого объекта Hydrostatic_table имеются данные вида items, определяемые одним или несколькими объектами Hydrostatic_properties_for_constant_floating_position. Каждый объект Hydrostatic_properties_for_constant_floating_position определяет данные вида related_hydrostatic_table для нулевого, единичного или нескольких объектов Hydrostatic_table.
Для каждого объекта Hydrostatic_table имеются данные вида properties_in_the_hydrostatic_table, определяемые одним или несколькими объектами Hydrostatic_property. Каждый объект Hydrostatic_property определяет данные вида properties_in_the_hydrostatic_table для нулевого, единичного или нескольких объектов Hydrostatic_table.
Для каждого объекта Item имеются данные вида documentation, определяемые нулевым, единичным или несколькими объектами External_reference. Каждый объект External_reference определяет данные вида documentation для нулевого, единичного или нескольких объектов Item.
Для каждого объекта Item имеются данные вида ship_context, определяемые нулевым или одним объектом Ship. Каждый объект Ship определяет данные вида ship_items для нулевого, единичного или множественных объектов Item.
Для каждого объекта Item_relationship имеются данные вида external_item_1, определяемые для нулевого или единичного объектов External_instance_reference. Каждый объект External_instance_reference определяет данные вида external_item_1 для нулевого, единичного или множественных объектов Item_relationship.
Для каждого объекта Item_relationship имеются данные вида external_item_2, определяемые для нулевого или единичного объекта External_instance_reference. Каждый объект External_instance_reference определяет данные вида external_item_2 для нулевого, единичного или множественных объектов Item_relationship.
Для каждого объекта Item_relationship имеются данные вида item_1, определяемые нулевым или единичным объектом Item. Каждый объект Item определяет данные вида item_1 для нулевого, единичного или множественных объектов Item_relationship.
Для каждого объекта Item_relationship имеются данные вида item_2, определяемые нулевым или единичным объектами Item. Каждый объект Item определяет данные вида item_2 для нулевого, единичного или множественных объектов Item_relationship.
Для каждого объекта Item_structure имеются данные вида external_items, определяемые нулевым, единичным или множественными объектами External_instance_reference. Каждый объект External_instance_reference определяет данные вида external_items для нулевого, единичного или множественных объектов Item_structure.
Для каждого объекта Item_structure имеются данные вида external_relationships, определяемые нулевым, единичным или множественными объектами External_instance_reference. Каждый объект External_instance_reference определяет данные вида external_relationships для нулевого, единичного или множественных объектов Item_structure.
Для каждого объекта Item_structure имеются данные вида items, определяемые нулевыми, единичными или множественными объектами Item. Каждый объект Item определяет данные вида items для нулевого, единичного или множественных объектов Item_structure.
Для каждого объекта Item_structure имеются данные вида relationships, определяемые нулевым, единичным или множественными объектами Item_relationship. Каждый объект Item_relationship определяет данные вида relationships для нулевого, единичного или множественных объектов Item_structure.
Для каждого объекта Knot имеются данные вида intersecting_ship_curves, определяемые последовательным списком из двух или нескольких объектов Ship_curve. Каждый объект Ship_curve определяет данные вида intersecting_ship_curves для нулевого, единичного или множественных объектов Knot objects.
Для каждого объекта Local_co_ordinate_system имеются данные вида parent, определяемые нулевыми и единичными объектами Global_axis_placement. Каждый объект Global_axis_placement определяет данные вида parent для нулевых, единичных или множественных объектов Local_co_ordinate_system.
Примечание - Это утверждение вводится путем выбора co_ordinate_system.
Для каждого объекта Local_co_ordinate_system имеются данные вида parent, определяемые нулевыми и единичными объектами Local_co_ordinate_system. Каждый объект Local_co_ordinate_system определяет данные вида parent для нулевых, единичных или множественных объектов Local_co_ordinate_system.
Примечание - Это утверждение вводится путем выбора co_ordinate_system.
Для каждого объекта Local_co_ordinate_system_with_position_reference имеются данные вида longitudinal_ref, определяемые только одним объектом Spacing_position. Каждый объект Spacing_position определяет данные вида longitudinal_ref для нулевых, единичных или множественных объектов Local_co_ordinate_system_with_position_reference.
Для каждого объекта Local_co_ordinate_system_with_position_reference имеются данные вида transversal_ref, определяемые только одним объектом Spacing_position. Каждый объект Spacing_position определяет данные вида transversal_ref для нулевых, единичных или множественных объектов Local_co_ordinate_system_with_position_reference.
Для каждого объекта Local_co_ordinate_system_with_position_reference имеются данные вида vertical_ref, определяемые только одним объектом Spacing_position. Каждый объект Spacing_position определяет данные вида transversal_ref для нулевых, единичных или множественных объектов Local_co_ordinate_system_with_position_reference.
Примечание - Это утверждение вводится путем выбора local_reference.
Для каждого объекта Longitudinal_table имеются данные вида spacing_table_representations, определяемые нулевым, единичным или множественными объектами Longitudinal_position. Каждый объект Longitudinal_position определяет данные вида spacing_table_representations для нулевого, единичного или множественных объектов Longitudinal_table.
Для каждого объекта Moulded_form_boundary_relationship имеются данные вида item_1, определяемые только одним объектом Moulded_form. Каждый объект Moulded_form определяет данные вида item_1 для нулевого, единичного или множественных объектов Moulded_form_boundary_relationship.
Для каждого объекта Moulded_form_boundary_relationship имеются данные вида item_2, определяемые только одним объектом Moulded_form. Каждый объект Moulded_form определяет данные вида item_2 для нулевого, единичного или множественных объектов Moulded_form_boundary_relationship.
Для каждого объекта Moulded_form_characteristics_definition имеются данные вида defined_for, определяемые одним или несколькими объектами Moulded_form. Каждый объект Moulded_form определяет данные вида defined_for для нулевого, единичного или множественных объектов Moulded_form_characteristics_definition.
Для каждого объекта Moulded_form_design_definition имеются данные вида moulded_surface, определяемые нулевыми или единичными объектами Edge_based_wireframe_shape. Каждый объект Edge_based_wireframe_shape определяет данные вида moulded_surface для нулевого, единичного или нескольких объектов Moulded_form_design_definition.
Примечание - Это утверждение вводится путем выбора surface_geometry и surface_representation.
Для каждого объекта Moulded_form_design_definition имеются данные вида representations, определяемые нулевым, единичным или множественными объектами Edge_based_wireframe_shape. Каждый объект Edge_based_wireframe_shape определяет данные вида representations для нулевого, единичного или нескольких объектов Moulded_form_design_definition.
Примечание - Это утверждение вводится путем выбора surface_representation.
Для каждого объекта Moulded_form_design_definition имеются данные вида moulded_surface, определяемые нулевыми или единичными объектами Non_manifold_surface_shape. Каждый объект Non_manifold_surface_shape определяет данные вида moulded_surface для нулевого, единичного или нескольких объектов Moulded_form_design_definition.
Примечание - Это утверждение вводится путем выбора surface_geometry и surface_representation.
Для каждого объекта Moulded_form_design_definition имеются данные вида representations, определяемые нулевым, единичным или множественными объектами Moulded_form_design_definition. Каждый объект Moulded_form_design_definition определяет данные вида representations для нулевого, единичного или нескольких объектов Moulded_form_design_definition.
Примечание - Это утверждение вводится путем выбора surface_representation.
Для каждого объекта Moulded_form_design_definition имеются данные вида defined_for, определяемые одним или несколькими объектами Moulded_form. Каждый объект Moulded_form определяет данные вида defined_for для нулевого, единичного или нескольких объектов Moulded_form_design_definition.
Для каждого объекта Moulded_form_design_definition имеются данные вида borders, определяемые нулевыми, единичными или множественными объектами Moulded_form_boundary_relationship. Каждый объект Moulded_form_boundary_relationship определяет данные вида border для нулевого, единичного или нескольких объектов Moulded_form_design_definition.
Примечание - Это утверждение вводится путем выбора moulded_form_border.
Для каждого объекта Moulded_form_design_definition имеются данные по теоретической поверхности, определяемые нулевыми или единичными объектами Moulded_form_shape_representation. Каждый объект Moulded_form_shape_representation определяет данные теоретической поверхности для нулевого, единичного или нескольких объектов Moulded_form_design_definition.
Примечание - Это утверждение вводится путем выбора surface_geometry.
4.3.68 Объекты Moulded_form_design_definition и Ship_curve
Для каждого объекта Moulded_form_design_definition имеются данные вида borders, определяемые нулевым, единичным или множественными объектами Ship_curve. Каждый объект Ship_curve определяет данные вида border для нулевого, единичного или нескольких объектов Moulded_form_design_definition.
Примечание - Это утверждение вводится путем выбора moulded_form_border.
Для каждого объекта Moulded_form_design_definition имеются данные по теоретической поверхности нулевого или единичного объекта Ship_surface. Каждый объект Ship_surface представляет собой теоретическую поверхность для нулевого, единичного или нескольких объектов Moulded_form_design_definition.
Примечание - Это утверждение вводится путем выбора surface_geometry.
Для каждого объекта Moulded_form_design_definition имеются данные вида borders, определяемые нулевым, единичным или множественными объектами Spacing_position. Каждый объект Spacing_position определяет данные вида border для нулевого, единичного или нескольких объектов Moulded_form_design_definition.
Примечание - Это утверждение вводится путем выбора moulded_form_border и planar_boundary.
Для каждого объекта Moulded_form_functional_definition имеются данные вида defined_for, определяемые одним или несколькими объектами Moulded_form. Каждый объект Moulded_form определяет данные вида defined_for для нулевого, единичного или нескольких объектов Moulded_form_functional_definition.
Для каждого объекта Moulded_form_relationship имеются данные вида item_1, определяемые только одним объектом Moulded_form. Каждый объект Moulded_form определяет данные вида item_1 для нулевого, единичного или множественных объектов Moulded_form_relationship.
Для каждого объекта Moulded_form_relationship имеются данные вида item_2, определяемые только одним объектом Moulded_form. Каждый объект Moulded_form определяет данные вида item_2 для нулевого, единичного или множественных объектов Moulded_form_relationship.
Для каждого объекта Moulded_form_representation_relationship имеются данные вида rep_1, определяемые только одним объектом Moulded_form_shape_representation. Каждый объект Moulded_form_shape_representation определяет данные вида rep_1 для нулевого, единичного или множественных объектов Moulded_form_representation_relationship.
Для каждого объекта Moulded_form_representation_relationship имеются данные вида rep_2, определяемые только одним объектом Moulded_form_shape_representation. Каждый объект Moulded_form_shape_representation определяет данные вида rep_2 для нулевого, единичного или множественных объектов Moulded_form_representation_relationship.
Для каждого объекта Moulded_form_shape_representation имеются данные вида moulded_form_symmetry, определяемые нулевыми или единичными объектами Symmetry objects. Каждый объект Symmetry определяет данные вида moulded_form_symmetry для нулевого, единичного или множественных объектов Moulded_form_shape_representation.
Для каждого объекта Offset_point_table_model имеются данные вида offset_point_table_sections, определяемые одним или несколькими объектами Section_of_offset_point_table. Каждый объект Section_of_offset_point_table определяет данные вида for_table для одного или нескольких объектов Offset_point_table_model.
Для каждого объекта Offset_table_shape_representation имеются данные вида items, определяемые одним или несколькими объектами Offset_point_table_model. Каждый объект Offset_point_table_model определяет данные вида items для нулевого, единичного или нескольких объектов Offset_table_shape_representation.
Для каждого объекта Owner_designation имеются данные вида units, определяемые только нулевым объектом Derived_unit. Каждый объект Derived_unit определяет данные вида units только для нулевого объекта Owner_designation.
Примечание - Это утверждение вводится путем выбора unit.
Для каждого объекта Change_definition имеются данные вида units, определяемые только нулевым объектом Named_unit. Каждый объект Named_unit определяет данные вида units только для нулевого объекта Owner_designation.
Примечание - Это утверждение вводится путем выбора unit.
Для каждого объекта Propeller_location имеются данные вида propeller_location, определяемые только одним объектом Centre_location. Каждый объект Centre_location определяет данные вида propeller_location для нулевого, единичного или множественных объектов Propeller_location.
Для каждого объекта Propeller_location имеются данные вида shaft_line_location, определяемые только одним объектом Centre_location. Каждый объект Centre_location определяет данные вида shaft_line_location для нулевого, единичного или множественных объектов Propeller_location.
Для каждого объекта Propeller_moulded_form_design_parameter имеются данные вида location_of_the_propeller_at_the_ship_hull, определяемые нулевым или единичным объектом Propeller_location. Каждый объект Propeller_location определяет данные вида location_of_the_propeller_at_the_ship_hull для нулевого, единичного или множественных объектов Propeller_moulded_form_design_parameter.
Для каждого объекта Regulation имеются данные вида international_regulations, определяемые нулевым, единичным или множественными объектами External_reference. Каждый объект External_reference определяет данные вида international_regulations для нулевого, единичного или множественных объектов Regulation.
Для каждого объекта Regulation имеются данные вида national_regulations, определяемые нулевым, единичным или множественными объектами External_reference. Каждый объект External_reference определяет данные вида national_regulations для нулевого, единичного или множественных объектов Regulation.
Для каждого объекта Regulation имеются данные вида standards, определяемые нулевым, единичным или множественными объектами External_reference. Каждый объект External_reference определяет данные вида standards для нулевого, единичного или множественных объектов Regulation.
Для каждого объекта Revision имеются данные вида members, определяемые одним или несколькими объектами Versionable_object. Каждый Versionable_object определяет данные вида Versionable_object для нулевого, единичного или нескольких объектов Revision.
Для каждого объекта Revision_with_context имеются данные вида context_of_revision, определяемые только одним объектом Definable_object. Каждый Definable_object определяет данные вида impact для нулевого, единичного или нескольких объектов Revision_with_context.
Для каждого объекта Rudder_moulded_form_design_parameter имеются данные вида rudder_location, определяемые только одним объектом Centre_location. Каждый объект Centre_location определяет данные вида rudder_location для нулевого, единичного или нескольких объектов Rudder_moulded_form_design_parameter.
Для каждого объекта Section_of_offset_point_table имеются данные вида section_points, определяемые последовательным списком одного или нескольких объектов Ship_point. Каждый объект Ship_point определяет данные вида section_points для нулевого, единичного или нескольких объектов Section_of_offset_point_table.
Для каждого объекта Ship имеются данные вида units, определяемые нулевым, единичным или несколькими объектами Derived_unit. Каждый Derived_unit определяет данные вида units для нулевого, единичного или нескольких объектов Ship.
Примечание - Это утверждение вводится путем выбора unit.
Для каждого объекта Ship имеются данные вида units, определяемые нулевым, единичным или несколькими объектами Named_unit. Каждый Named_unit определяет данные вида units для нулевого, единичного или нескольких объектов Ship.
Примечание - Это утверждение вводится путем выбора unit.
Для каждого объекта Ship_curve_segment имеются данные вида part_of_ship_curve, определяемые только одним объектом Ship_curve. Каждый объект Ship_curve определяет данные вида part_of_ship_curve для нулевого, единичного или нескольких объектов Ship_curve_segment.
Для каждого объекта Ship_curve_with_spacing_position имеются данные вида location, определяемые только одним объектом Spacing_position. Каждый объект Spacing_position определяет данные вида location для нулевого, единичного или нескольких объектов Ship_curve_with_spacing_position.
Для каждого объекта Ship_designation имеются данные вида units, определяемые только нулевым объектом Named_unit. Каждый объект Named_unit определяет данные вида units только для нулевого объекта Ship_designation.
Примечание - Это утверждение вводится путем выбора unit.
Для каждого объекта Ship_designation имеются данные вида units, определяемые только нулевым объектом Derived_unit. Каждый объект Derived_unit определяет данные вида units только для нулевого объекта Ship_designation.
Примечание - Это утверждение вводится путем выбора unit.
Для каждого объекта Ship_moulded_form есть данные вида items, определяемые одним или несколькими объектами Moulded_form. Каждый объект Moulded_form определяет данные вида items для нулевого, единичного или нескольких объектов Ship_moulded_form.
Для каждого объекта Ship_moulded_form имеются данные вида relationships, определяемые нулевым, единичным или множественными объектами Moulded_form_relationship. Каждый объект Moulded_form_relationship определяет данные вида relationships для нулевого, единичного или множественных объектов Ship_moulded_form.
Для каждого объекта Ship_moulded_form_revision имеются данные вида members, определяемые одним или несколькими объектами Moulded_form_design_definition. Каждый объект Moulded_form_design_definition представляет собой элемент для нулевого, единичного или нескольких объектов Ship_moulded_form_revision.
Для каждого объекта Ship_moulded_form_revision имеются данные вида context_of_revision, определяемые только одним объектом Ship_moulded_form. Каждый объект Ship_moulded_form определяет данные вида context_of_revision для нулевого, единичного или нескольких объектов Ship_moulded_form_revision.
Для каждого объекта Ship_overall_dimensions имеются данные вида defined_for, определяемые одним или несколькими объектами Ship. Каждый объект Ship определяет данные вида defined_for для нулевого, единичного или нескольких объектов Ship_overall_dimensions.
Для каждого объекта Shiptype имеются данные вида defined_for, определяемые одним или несколькими объектами Ship. Каждый объект Ship определяет данные вида defined_for для нулевого, единичного или нескольких объектов Shiptype.
Для каждого объекта Shipyard_designation имеются данные вида units, определяемые только нулевым объектом Named_unit. Каждый объект Named_unit определяет данные вида units только для нулевого объекта Shipyard_designation.
Примечание - Это утверждение вводится путем выбора unit.
Для каждого объекта Shipyard_designation имеются данные вида units, определяемые только нулевым объектом Derived_unit. Каждый объект Derived_unit определяет данные вида units только для нулевого объекта Shipyard_designation.
Примечание - Это утверждение вводится путем выбора unit.
Для каждого объекта Spacing_position_with_offset имеются данные вида relating_spacing_position, определяемые только одним объектом Spacing_position. Каждый объект Spacing_position определяет данные вида relating_spacing_position для нулевого, единичного или нескольких объектов Spacing_position_with_offset.
Для каждого объекта Spacing_table имеются данные вида spacing_table_representations, определяемые нулевым или множественными объектами Spacing_position. Каждый объект Spacing_position определяет данные вида spacing_table_representations нулевым, единичным или множественными объектами Spacing_table.
Для каждого объекта Stability_definition имеются данные вида defined_for, определяемые одним или несколькими объектами Ship. Каждый объект Ship определяет данные вида defined_for для нулевого, единичного или нескольких объектов Stability_definition.
Для каждого объекта Stability_definition имеются данные вида representations, определяемые одним или несколькими объектами Stability_table. Каждый объект Stability_table определяет данные вида representations для нулевого, единичного или нескольких объектов Stability_definition.
Для каждого объекта Stability_properties_for_one_floating_position имеются данные вида centre_of_gravity_above_keel, определяемые только одним объектом Centre_location. Каждый объект Centre_location определяет данные вида centre_of_gravity_above_keel для нулевого, единичного или множественных объектов Stability_properties_for_one_floating_position.
Для каждого объекта Stability_properties_for_one_floating_position имеются данные вида definition_of_starting_floating_position, определяемые только одним объектом Floating_position. Каждый объект Floating_position определяет данные вида definition_of_starting_floating_position для нулевого, единичного или множественных объектов Stability_properties_for_one_floating_position.
Для каждого объекта Stability_properties_for_one_floating_position имеются данные вида stability_properties_for_different_angles_of_heel, определяемые одним или несколькими объектами Stability_property. Каждый объект Stability_property определяет данные вида stability_properties_for_different_angles_of_heel для нулевого, единичного или множественных объектов Stability_properties_for_one_floating_position.
Для каждого объекта Stability_property имеются данные вида centre_of_buoyancy, определяемые только одним объектом Centre_location. Каждый объект Centre_location определяет данные вида centre_of_buoyancy для нулевого, единичного или множественных объектов Stability_property.
Для каждого объекта Stability_table имеются данные вида items, определяемые одним или несколькими объектами Stability_properties_for_one_floating_position. Каждый объект Stability_properties_for_one_floating_position определяет последовательный список данных related_stability_table для одного или нескольких объектов Stability_table.
Для каждого идентификатора Surface_with_identifier есть id, определяемый точно одним глобальным идентификатором Global_id. Каждый Global_id определяет id для нулевого, одного или нескольких объектов Surface_with_identifier.
Для каждого объекта Thruster_moulded_form_design_parameter имеются данные вида geometric_thruster_location, определяемые только одним объектом Centre_location. Каждый объект Centre_location определяет данные вида geometric_thruster_location для нулевого, единичного или множественных объектов Thruster_moulded_form_design_parameter.
Для каждого объекта Thruster_moulded_form_design_parameter имеются данные вида thruster_propeller_parameter, определяемые только одним объектом Propeller_moulded_form_design_parameter. Каждый объект Propeller_moulded_form_design_parameter определяет данные вида thruster_propeller_parameter для нулевого, единичного или множественных объектов Thruster_moulded_form_design_parameter.
Для каждого объекта Transversal_table имеются данные вида spacing_table_representations, определяемые нулевым, единичным или множественными объектами Transversal_position. Каждый объект Transversal_position определяет данные вида spacing_table_representations для нулевого, единичного или множественного объектов Transversal_table.
Для каждого объекта Version_creation имеются данные вида base, определяемые нулевым, единичным или несколькими объектами Versionable_object. Каждый Versionable_object определяет данные вида base для нулевого, единичного или нескольких объектов Version_creation.
Для каждого объекта Version_creation имеются данные вида subject, определяемые только одним объектом Versionable_object. Каждый Versionable_object определяет данные вида base для нулевого, единичного или нескольких объектов Version_creation.
Для каждого объекта Version_deletion имеются данные вида subject, определяемые только одним объектом Versionable_object. Каждый Versionable_object определяет данные вида subject для нулевого, единичного или нескольких объектов Version_deletion.
Для каждого объекта Version_history имеются данные вида relationships, определяемые нулевым, единичным или несколькими объектами Versionable_relationship. Каждый Versionable_relationship определяет данные вида relationships для нулевого, единичного или нескольких объектов Version_history.
Для каждого объекта Version_history имеются данные вида versions, определяемые одним или несколькими объектами Versionable_object. Каждый Versionable_object определяет данные вида versions для нулевого, единичного или нескольких объектов Version_history.
Для каждого объекта Version_history имеются данные вида current_version, определяемые только одним объектом Versionable_object. Каждый Versionable_object определяет данные вида current_version для нулевого, единичного или нескольких объектов Version_history.
Для каждого объекта Version_modification имеются данные вида base, определяемые одним или несколькими объектами Versionable_object. Каждый Versionable_object определяет данные вида base для нулевого, единичного или нескольких объектов Version_modification.
Для каждого объекта Version_modification имеются данные вида subject, определяемые только одним объектом Versionable_object. Каждый Versionable_object определяет данные вида subject для нулевого, единичного или нескольких объектов Version_modification.
Для каждого объекта Version_relationship имеются данные вида predecessor, определяемые только одним объектом Versionable_object. Каждый Versionable_object определяет данные вида predecessor для нулевого, единичного или нескольких объектов Version_relationship.
Для каждого объекта Version_relationship имеются данные вида successor, определяемые только одним объектом Versionable_object. Каждый Versionable_object определяет данные вида successor для нулевого, единичного или нескольких объектов Version_relationship.
Для каждого объекта Vertical_table имеются данные вида spacing_table_representations, определяемые нулевым, единичным или множественными объектами Vertical_position. Каждый объект Vertical_position определяет данные вида spacing_table_representations нулевым, единичным или множественными объектами Vertical_table.
Для каждого объекта Wireframe_shape_representation имеются данные вида items, определяемые одним или несколькими объектами Ship_curve. Каждый объект Ship_curve определяет данные вида items для нулевого, единичного или множественных объектов Wireframe_shape_representation.
Данный раздел содержит спецификацию отображения, показывающую, как каждая функциональная единица и прикладной объект настоящего стандарта (см. раздел 4) отображается в одну или несколько структур ПИМ (см. приложение A). В каждом отображении указано до пяти элементов.
Прикладной элемент: Отображение каждого прикладного элемента указано в отдельном подпункте ниже. Наименования прикладных объектов выделены заглавными буквами. Наименования атрибутов и утверждения приведены после прикладного объекта, к которому они принадлежат, строчными буквами.
Элемент ПИМ: Наименование одного или нескольких типов данных объектов ПИМ, приведенных в приложении A, термин "IDENTICAL MAPPING" (ИДЕНТИЧНОЕ ОТОБРАЖЕНИЕ) или термин "PATH" (ПУТЬ). Наименования типов данных объектов ПИМ приведены строчным буквами. Атрибуты типов данных объектов ПИМ указывают как <entity name>.<attribute name>. Отображение прикладного элемента может быть выражено несколькими элементами ПИМ. Каждый из этих элементов ПИМ представлен в спецификации отображения отдельной строкой. Термин "IDENTICAL MAPPING" указывает, что оба прикладных элемента, участвующие в прикладном утверждении, отображаются в тот же самый экземпляр типа данных объекта ПИМ. Термин "PATH" указывает, что прикладное утверждение отображается в набор соответствующих элементов объекта ПИМ, заданный полным ссылочным путем.
Источник: Для элементов ПИМ, интерпретируемых из любого общего ресурса, в этой графе указывается обозначение стандарта ИСО и части, в которой определен этот ресурс. Для элементов ПИМ, введенных в настоящий стандарт, это обозначение будет "ИСО 10303", после которого указывается обозначение настоящей части.
Правила: Здесь могут быть приведены одно или несколько глобальных правил, применяемых к множеству типов данных объектов ПИМ, заданных в виде элемента ПИМ или в ссылочном пути. Для правил, полученных из отношений между прикладными объектами, то же правило определяет вхождения отображений для всех элементов ПИМ, используемых в правиле. К ссылке на глобальное правило может быть добавлена ссылка на подпункт, в котором определено данное правило.
Ссылочный путь: Чтобы полностью описать отображение прикладного объекта, может потребоваться определение ссылочного пути через несколько связанных элементов ПИМ. В каждой строке ссылочного пути указывается роль элемента ПИМ относительно элемента ПИМ, приведенного в следующей строке. Два или более таких связанных элемента ПИМ определяют интерпретацию интегрированных ресурсов, удовлетворяющих требованиям, заданным этим прикладным объектом.
Для каждого элемента ПИМ, введенного для использования в данной части настоящего стандарта, определяется ссылочный путь к его супертипу от интегрированного источника. Для записи ссылочных путей и отношений между элементами ПИМ используют следующие условные обозначения:
[ ] заключенная в скобки секция ограничивает разнородные элементы ПИМ или секции ссылочного пути с целью выполнения информационного требования;
( ) заключенная в скобки секция ограничивает разнородные элементы ПИМ или секции ссылочного пути, обозначаемые как альтернативные в пределах данного отображения, с целью выполнения информационного требования;
{ } заключенная в фигурные скобки секция ограничивает ссылочный путь с целью выполнения информационного требования;
< > заключенная в скобки секция ограничивает один или несколько ссылочных путей;
| | заключенная в скобки секция ограничивает объект супертипа;
-> атрибут ссылается на объект или выбранный тип данных, указанный в следующей строке;
<- ссылка атрибута на объект или выбранный тип данных приведена в следующей строке;
[i] атрибут представлен агрегированным типом, единственный член которого указан в следующей строке;
[n] атрибут представлен агрегированным типом, член n которого указан в следующей строке;
=> объект является супертипом объекта, указанного в следующей строке;
<= объект является подтипом объекта, указанного в следующей строке;
= для ограничения выбора или значения используют данные следующих типов: строкового (string), выбранного (select) или перечисления (enumeration);
\ запись ссылочного пути продолжается на следующей строке;
* используется совместно со скобками, чтобы указать, что любое количество типов отношений данных объектов может быть собрано в структуру древа отношений;
// заключенная в скобки секция является приложением одного из шаблонов отображения, определенных в 5.1.1 ниже;
-- следующий текст является комментарием (обычно ссылка на пункт).
Ключевые отображения для данной части настоящего стандарта представлены в таблице 1.
Таблица 1
Для определения шаблонов отображения используются следующие сокращения:
ACT - action;
ASSGN - assignment;
CART - cartesian;
CAT - category;
CD - context_dependent;
DEF - definition;
DESC - description;
DO - definable_object;
DOC - document;
EXT - external;
FUNC - function;
GEO - geometry;
INST - instance;
ORG - organization;
PD - product_definition;
PDCD - product_definition to characterized_definition;
PDR - product_definition_representation;
PERS - person;
PROD - product;
PROP - property;
REF - reference;
REL - relationship;
REP - representation;
SA - shape_aspect;
SAR - shape_aspect_relationship;
SDR - shape_definition_representation;
SRC - source;
VAL - value;
VO - versionable_object.
Данная спецификация отображения включает шаблоны отображения. Шаблон отображения - это повторно используемая часть ссылочного пути, которая определяет часто используемую часть структуры прикладной интерпретируемой модели. Шаблон отображения похож на макрос языка программирования.
В данном подпункте определены шаблоны отображения, используемые в этой части настоящего стандарта. Каждое определение шаблона отображения состоит из трех компонентов:
- сигнатура шаблона, указывающая имя шаблона; может также указывать имена и порядок формальных параметров шаблона;
- описания формальных параметров шаблона, если есть;
- тело шаблона, которое определяет многократно используемую часть ссылочного пути и может указывать путем использования имен формальных параметров, включенных в сигнатуру шаблона, точки, в которые доставляются параметры, передаваемые по значению, в каждом приложении шаблона.
Каждый шаблон отображения используется в ссылочных путях, указанных в 5.1.2 - 5.1.16 как минимум один раз. Каждый такой прикладной шаблон является ссылкой на определение шаблона на основе образа, установленного сигнатурой шаблона, и доставляет параметры, передаваемые по значению, которые должны быть заменены формальными параметрами, указанными в определении шаблона. Полный ссылочный путь можно получить, заменив любые формальные параметры в теле шаблона параметрами, передаваемыми по значению, указанными в прикладном шаблоне, а затем заменив заполненное тело шаблона приложением шаблона.
Непустые символы, следующие за первым знаком "/", определяют имя шаблона отображения. Имя шаблона отображения указывается заглавными буквами. За именем шаблона следует список параметров, передаваемых по значению, отделенных запятыми и заключенных в круглые скобки. Значения параметров задаются строчными буквами, за исключением случая, когда параметр, передаваемый по значению, является строковым литералом, включающим символы верхнего регистра.
В определениях и приложениях шаблонов применяются следующие условные обозначения:
/ отмечает начало и конец сигнатуры шаблона или приложения шаблона;
& присоединяет имя формального параметра в определении тела шаблона;
( ) заключают в себя формальные параметры в сигнатуре шаблона или параметры, передаваемые по значению, в приложении шаблона;
, отделяет формальные параметры в сигнатуре шаблона или параметры, передаваемые по значению, в приложении шаблона;
' ' обозначает строковый литерал, который используется в качестве параметра, передаваемого по значению, в приложении шаблона.
Параметры, передаваемые по значению, не заключенные в кавычки, являются идентификаторами вида данных языка EXPRESS.
В приведенных ниже подпунктах указаны шаблоны, используемые в настоящем стандарте.
5.1.1.1 Шаблон APPROVES
Шаблон отображения APPROVES указывает ограничение ссылочного пути, в котором экземплярами вида ENTITY являются approval_items в экземплярах вида applied_approval_assignment с заданным для присвоения именем роли ARM_ROLE.
Пример - Пример использования шаблона APPROVES для присвоения значения approval данным вида product_definition_shape в роли 'subject':
approval <-
/APPROVES(product_definition_shape,'subject')/
Сигнатура:
/APPROVES(ENTITY, ARM_ROLE)/
Определения параметров:
ENTITY: идентификатор вида данных экземпляра ПИМ, которому присваивается значение
ARM_ROLE: значение атрибута имени для object_role
Тело шаблона:
approval_assignment.assigned_approval
approval_assignment =>
{/ROLE_ASSGN(approval_assignment)/
[object_role.name = &ARM_ROLE]}
applied_approval_assignment
applied_approval_assignment.items[i] ->
approval_item
approval_item = &ENTITY
5.1.1.2 Шаблон CLASS
Шаблон отображения CLASS задает ограничение ссылочного пути, в котором экземплярами типа T являются classification_items в экземплярах applied_classification_assignment, где имя роли, указанное для присвоения, имеет значение 'class membership', а назначенная классификация имеет значение group, атрибуту имени которого присвоено значение ID. Экземпляр group также связан с родительским экземпляром group (через экземпляр group_relationship), атрибуту имени которого присвоено значение S_ID.
Пример - Иллюстрация использования шаблона CLASS для присвоения группы с именем 'plate' данным вида product_definition:
/CLASS(product_definition, 'plate', 'structural part')/
Сигнатура:
/CLASS(T, ID, S_ID)/
Определения параметров:
T: тип классифицируемого экземпляра
ID: имя группы, тип классифицируемого экземпляра
S_ID: имя группы прямого предка
Тело шаблона:
&T
classification_item = &T
classification_item <-
applied_classification_assignment.items[i]
applied_classification_assignment <=
classification_assignment
{classification_assignment.role ->
classification_role
classification_role.name = 'class membership'}
classification_assignment
classification_assignment.assigned_classification ->
group
{[group.name = &ID]
[group <-
group_relationship.related_group
group_relationship
{group_relationship.name = 'specialisation'}
group_relationship
group_relationship.relating_group ->
group
{group.name = &S_ID} ]}
group =>
class
5.1.1.3 Шаблон CLASS_HELP
Шаблон отображения CLASS_HELP задает ограничение ссылочного пути, в котором экземплярами типа T являются classification_items в экземплярах applied_classification_assignment, где имя роли, указанное для присвоения, имеет значение 'class membership', а назначенной классификацией является супертип экземпляра group.
Сигнатура:
CLASS_HELP(T)
Определения параметров:
T: тип классифицируемого экземпляра
Тело шаблона:
{&T
classification_item = &T
classification_item <-
applied_classification_assignment.items[i]
applied_classification_assignment <=
classification_assignment
{classification_assignment.role ->
classification_role
classification_role.name = 'class membership'}
classification_assignment.assigned_classification ->
group =>
5.1.1.4 Шаблон CLASS_ID
Шаблон отображения CLASS_ID задает ограничение ссылочного пути, в котором экземплярами типа T являются classification_items в экземплярах applied_classification_assignment, где имя роли, указанное для присвоения, имеет значение 'class membership', а назначенная классификация имеет значение group, атрибуту имени которого присвоено значение ID.
Примечание - Семантика шаблона заключается в выборе экземпляра с именем группы ID.
Пример - Иллюстрация использования шаблона CLASS_ID, подтверждающего, что у экземпляра изделия есть имя класса 'ship':
action_item = product product
{/CLASS_ID(product, 'ship')/}
Сигнатура:
/CLASS_ID(T, ID)/
Определения параметров:
T: тип классифицируемого экземпляра
ID: имя группы
Тело шаблона:
&T
classification_item = &T
classification_item <-
applied_classification_assignment.items[i]
applied_classification_assignment <=
classification_assignment
{classification_assignment.role ->
classification_role
classification_role.name = 'class membership'}
classification_assignment.assigned_classification ->
group =>
{group.name = &ID}
class
5.1.1.5 Шаблон COMPOUND
Шаблон отображения COMPOUND указывает ограничение ссылочного пути, в котором путь от compound_representation_item до representation_item присваивает значение атрибуту representation_item.name.
Сигнатура:
/COMPOUND(NAME)/
Определения параметров:
NAME: значение атрибута имени для representation_item
Тело шаблона:
compound_representation_item
compound_representation_item.item_element ->
compound_item_definition = list_representation_item
list_representation_item[i] ->
representation_item =>
{representation_item.name = &NAME}
5.1.1.6 Шаблон DATE_TIME_ASSGN
Шаблон отображения DATE_TIME_ASSGN задает ограничение ссылочного пути, в котором экземпляру типа T присвоено значение date_and_time, и у этого присваивания имеется роль ROLE.
Сигнатура:
/DATE_TIME_ASSGN(T, ROLE)/
Определения параметров:
T: тип экземпляра, у которого есть присваивание date_and_time
ROLE: значение атрибута имени для date_time_role
Тело шаблона:
&T
{date_and_time_item = &T} date_and_time_item <-
applied_date_and_time_assignment.items[i]
applied_date_and_time_assignment <=
date_and_time_assignment
{date_and_time_assignment.role ->
date_time_role
[date_time_role.name = &ROLE]}
date_and_time_assignment.assigned_date_and_time ->
date_and_time
5.1.1.7 Шаблон DESCRIPTION_ASSGN
Шаблон отображения The DESCRIPTION_ASSGN задает ограничение ссылочного пути, в котором description_attribute присваивается экземпляру ENTITY, содержащему полученный атрибут описания. Создание атрибута описания основывается на объекте Basic_attribute_schema согласно ИСО 10303-41.
Примечание - Шаблон DESCRIPTION_ASSGN используется следующими видами данных объекта для совокупности их атрибута описания:
- action_request_solution;
- application_context;
- approval_role;
- configuration_design;
- date_role;
- date_time_role;
- context_dependent_shape_representation;
- effectivity;
- external_source;
- organization_role;
- person_and_organization_role;
- person_and_organization;
- person_role;
- property_definition_representation;
- representation;
- time_role.
Сигнатура:
/DESCRIPTION_ASSGN(ENTITY)/
Определения параметров:
ENTITY: тип объекта, которому присваивается description_attribute
Тело шаблона:
&ENTITY
description_attribute_select = &ENTITY
description_attribute_select <-
description_attribute.described_item
description_attribute
description_attribute.attribute_value
5.1.1.8 Шаблон DESCRIPTION_ASSGN_WITH_VAL
Шаблон отображения DESCRIPTION_ASSGN_WITH_VAL задает ограничение ссылочного пути, в котором экземпляру ENTITY присваивается атрибут description_attribute, содержащий созданный атрибут описания, а значение этого атрибута описания присвоено шаблоном DESC_VALUE.
Примечание - Шаблон DESCRIPTION_ASSGN_WITH_VAL используется следующими видами данных сущности для совокупности их атрибута описания:
- action_request_solution;
- application_context;
- approval_role;
- configuration_design;
- date_role;
- date_time_role;
- context_dependent_shape_representation;
- effectivity;
- external_source;
- organization_role;
- person_and_organization_role;
- person_and_organization;
- person_role;
- property_definition_representation;
- representation;
- time_role.
Сигнатура:
/DESCRIPTION_ASSGN_WITH_VAL(ENTITY, DESC_VALUE)/
Определения параметров:
ENTITY: тип объекта, которому присваивается description_attribute
DESC_VALUE: значение, присваиваемое объекту description_attribute.attribute_value
Тело шаблона:
&ENTITY
description_attribute_select = &ENTITY
description_attribute_select <-
description_attribute.described_item
description_attribute
description_attribute.attribute_value
{description_attribute.attribute_value = &DESC_VALUE}
Шаблон отображения DOC_REF задает ограничение ссылочного пути, в котором экземпляр типа T ссылается на document или document_usage_constraint, который играет роль ID.
Сигнатура:
/DOC_REF(T, ID)/
Определения параметров:
T: тип объекта, который указывает document
ID: значение атрибута name для object_role
Тело шаблона:
&T
document_reference_item = &T
document_reference_item <-
applied_document_reference. items [i]
applied_document_reference <=
document_reference
{/ROLE_ASSGN(document_reference)/
[object_role.name = &ID]}
document_reference
document_reference. assigned_document ->
(document)
(document <-
document_usage_constraint.source
document_usage_constraint)
Шаблон отображения EXT_INST_REF задает ограничение ссылочного пути, в котором объекту типа LT присваивается объект external_identification_assignment в роли 'external instance reference'. Объект external_identification_assignment ссылается на объект external_source, атрибуту source_id которого присваивается значение SN. Этот объект external_source будет отнесен к другому объекту external_source, атрибуту source_id которого присваивается значение ET.
Сигнатура:
/EXT_INST_REF(LT, SN, ET)/
Определения параметров:
LT: тип, экземпляр которого представляет внешний экземпляр в локальной модели экземпляра
SN: имя внешней схемы
ET: тип внешнего объекта
Тело шаблона:
[<.description = 'external instance reference target']
[< = external_identification_item
external_identification_item <-
applied_external_identification_assignment.items[i]
applied_external_identification_assignment <=
external_identification_assignment <=
ID_ROLE('external instance reference')
external_identification_assignment.source ->
external_source
[external_source. source_id->
source_item = identifier
{identifier = &SN}]
[{DESCRIPTION_ASSGN_WITH_VAL(external_source, 'schema name')}]
[EXT_SRC_REL('entity type')
{identifier = &ET}]]
Шаблон отображения EXT_SRC_REL задает ограничение ссылочного пути, в котором объект external_source связан с другим объектом external_source, при этом у последнего объекта будет иметься определение DESCR. Эта концепция может использоваться в основном в двух местах:
- для отнесения различных компонентов объекта external_source к одному объекту на следующем более высоком уровне;
- для отображения External_instance_reference.
Сигнатура:
/EXT_SRC_REL(DESCR)/
Определения параметров:
DESCR: значение атрибута description для external_source
Тело шаблона:
external_source <-
external_source_relationship. relating_source
external_source_relationship
{external_source_relationship.name = 'composition'}
external_source_relationship. related_source external_source
{DESCRIPTION_ASSGN_WITH_VAL(external_source, &DESCR)}
external_source
external_source.source_id ->
source_item
source_item = identifier
Шаблон GROUPS задает ограничение ссылочного пути, в котором экземплярами типа ENTITY являются group_items в applied_group_assignment, при этом роль присваивания имеет значение ARM_ROLE.
Пример - Иллюстрация использования шаблона GROUPS для добавления product_definition к группе с ролью 'item structure':
group <-
/GROUPS(product_definition, 'item structure')/
Сигнатура:
/GROUPS(ENTITY, ARM_ROLE)/
Определения параметров:
ENTITY: группируемые объекты, играющие роль ARM_ROLE
ARM_ROLE: значение атрибута name для object_role
Тело шаблона:
group_assignment.assigned_group
group_assignment =>
{/ROLE_ASSGN(group_assignment)/
[object_role.name = &ARM_ROLE]}
applied_group_assignment
applied_group_assignment.items[i] ->
group_item
group_item = &ENTITY
Шаблон отображения HAS_ID_1_ROLE задает ограничение ссылочного пути, в котором экземпляру объекта типа T присваивается идентификатор, играющий одну роль ROLE.
Сигнатура:
/HAS_ID_1_ROLE(T, ROLE)/
Определения параметров:
T: тип объекта, которому присваивается identification_assignment
ROLE: значение атрибута name для identification_role
Тело шаблона:
IDENTIFICATION(&T)
[identification_role.name = &ROLE]}
identification_assignment
identification_assignment.assigned_id
Шаблон отображения HAS_ID_2_ROLE задает ограничение ссылочного пути, в котором экземпляру типа T присваивается идентификатор, и он играет одну из двух заданных ролей.
Сигнатура:
/HAS_ID_2_ROLES(T, ROLE1, ROLE2)/
Определения параметров:
T: тип объекта, которому присваивается identification_assignment
ROLE1: значение атрибута name для identification_role
ROLE2: значение атрибута name для identification_role
Тело шаблона:
IDENTIFICATION(&T)
[(identification_role.name = &ROLE1)
(identification_role.name = &ROLE2)]}
identification_assignment
identification_assignment.assigned_id
5.1.1.15 Шаблон ID_ASSGN
Шаблон отображения ID_ASSGN задает ограничение ссылочного пути, в котором id_attribute присваивается экземпляру ENTITY, содержащему полученный атрибут id. Создание атрибута id основывается на объекте Basic_attribute_schema согласно ИСО 10303-41.
Примечание - Шаблон ID_ASSGN используется следующими видами данных объекта для совокупности их атрибута id:
- action;
- address;
- product_category;
- property_definition;
- shape_aspect;
- shape_aspect_relationship;
- application_context;
- group;
- organizational_project;
- representation.
Сигнатура:
/ID_ASSGN(ENTITY)/
Определения параметров:
ENTITY: тип объекта, которому присваивается атрибут id_attribute
Тело шаблона:
&ENTITY
id_attribute_select = &ENTITY
id_attribute_select <-
id_attribute.identified_item
id_attributeid_attribute.attribute_value
5.1.1.16 Шаблон ID_ROLE
Шаблон отображения ID_ROLE задает ограничение ссылочного пути, в котором у присваивания identification_assignment имеется роль ROLE.
Сигнатура:
/ID_ROLE(ROLE)/
Определения параметров:
ROLE: значение атрибута name для identification_role
Тело шаблона:
identification_assignment
{identification_assignment.role ->
identification_role
[identification_role.name = &ROLE]}
5.1.1.17 Шаблон IDENTIFICATION
Шаблон отображения IDENTIFICATION задает ограничение ссылочного пути, в котором объекту типа T присваивается identification_assignment. Этот шаблон отображения используется главным образом в других макросах.
Сигнатура:
/IDENTIFICATION(T)/
T: тип объекта, которому присваивается identification_assignment
Тело шаблона:
&T
identification_item = &T
identification_item <-
applied_identification_assignment.items[i]
applied_identification_assignment <=
identification_assignment
{identification_assignment.role -> identification_role
Шаблон отображения LINK_TO_GROUP задает ограничение ссылочного пути, в котором экземпляр типа T привязан к объекту group через applied_group_assignment.
Примечание - Используется для всех типов прикладных объектов, представляющих собой подтипы объекта Item (см. 4.2.52) и объекта Item_structure (см. 4.2.54).
Сигнатура:
/LINK_TO_GROUP(T)/
Определения параметров:
T: группируемый объект
Тело шаблона:
group_item = &T <-
applied_group_assignment.items[i]
applied_group_assignment <=
group_assignment
{ROLE_ASSGN(group_assignment)
object_role.name = 'equivalence')
group_assignment
group_assignment.assigned_group ->
group
group.name = 'item and item_structure'
5.1.1.19 Шаблон NAME_ASSGN
Шаблон отображения NAME_ASSGN задает ограничение ссылочного пути, в котором name_attribute присваивается экземпляру ENTITY, содержащему полученный атрибут name. Создание атрибута name основывается на объекте Basic_attribute_schema согласно ИСО 10303-41.
Примечание - Шаблон NAME_ASSGN используется следующими видами данных объекта для совокупности их атрибута name:
- action_request_solution;
- address;
- configuration_design;
- context_dependent_shape_representation;
- derived_unit;
- effectivity;
- person_and_organization;
- product_definition;
- product_definition_substitute;
- property_definition_representation.
Сигнатура:
/NAME_ASSGN(ENTITY)/
Определения параметров:
ENTITY: тип объекта, которому присваивается атрибут name_attribute
Тело шаблона:
&ENTITY
name_attribute_select = &ENTITY
name_attribute_select <-
name_attribute.named_item
name_attribute
name_attribute.attribute_value
5.1.1.20 Шаблон NAME_ASSGN_WITH_VAL
Шаблон отображения NAME_ASSGN_WITH_VAL задает ограничение ссылочного пути, в котором экземпляру ENTITY присваивается атрибут name_attribute, содержащий созданный атрибут name, а значение этого атрибута name присвоено шаблоном NAME_VALUE.
Примечание - Шаблон NAME_ASSGN используется следующими видами данных объекта для совокупности их атрибута name:
- action_request_solution;
- address;
- configuration_design;
- context_dependent_shape_representation;
- derived_unit;
- effectivity;
- person_and_organization;
- product_definition;
- product_definition_substitute;
- property_definition_representation.
Сигнатура:
/NAME_ASSGN_WITH_VAL(ENTITY,NAME_VALUE)/
Определения параметров:
ENTITY: тип объекта, которому присваивается атрибут name_attribute
NAME_VALUE: значение, присваиваемое для name_attribute.attribute_value
Тело шаблона:
&ENTITY
name_attribute_select = &ENTITY
name_attribute_select <-
name_attribute.named_item
name_attribute
{name_attribute.attribute_value = '&NAME_VALUE'}
5.1.1.21 Шаблон ORG_ASSGN_PART
Шаблон отображения ORG_ASSGN_PART задает ограничение ссылочного пути, в котором экземпляру типа T присваивается identification_assignment.
Сигнатура:
/ORG_ASSGN_PART(T)/
Определения параметров:
T: тип объекта, которому присваивается organization_assignment
Тело шаблона:
&T
organization_item = &T
organization_item <-
applied_organization_assignment.items [i]
applied_organization_assignment <=
organization_assignment
5.1.1.22 Шаблон ORG_ASSGN
Шаблон отображения ORG_ASSGN задает ограничение ссылочного пути, в котором экземпляру типа T присваивается объект organization, где роль этого присваивания имеет значение ROLE.
Сигнатура:
/ORG_ASSGN(T, ROLE)/
Определения параметров:
T: объект, присваиваемый для organization
ROLE: значение атрибута name для organization_role
Тело шаблона:
&T
organization_item = &T
organization_item <-
applied_organization_assignment.items[i]
applied_organization_assignment <=
organization_assignment
{organization_assignment.role ->
organization_role
[organization_role.name = &ROLE]}
organization_assignment
organization_assignment.assigned_organization ->
organization
Шаблон отображения PDR_NAME задает ограничение ссылочного пути, в котором для property_definition_representation.name присваивается значение NAME.
Сигнатура:
/PDR_NAME(NAME)/
Определения параметров:
NAME: значение атрибута name для property_definition_representation
Тело шаблона:
property_definition_representation.definition
property_definition_representation
{[NAME_ASSGN_WITH_VAL(property_definition_representation, '&NAME')]}
property_definition_representation.used_representation
5.1.1.24 Шаблон PERS_ASSGN
Шаблон отображения PERS_ASSGN задает ограничение ссылочного пути, в котором объекту типа T присваивается лицо с ролью ROLE.
Сигнатура:
/PERS_ASSGN(T, ROLE)/
Определения параметров:
T: объект, которому присваивается person
ROLE: значение атрибута name для organization_role
Тело шаблона:
&T
person_item = &T
person_item <-
applied_person_assignment.items[i]
applied_person_assignment <=
person_assignment
{person_assignment.role ->
person_role
person_role.name = &ROLE}
person_assignment
person_assignment.assigned_person ->
person
5.1.1.25 Шаблон PERS_ORG_ASSGN
Шаблон отображения PERS_ORG_ASSGN задает ограничение ссылочного пути, в котором объекту типа T присваивается лицо и организация с ролью ROLE.
Сигнатура:
/PERS_ORG_ASSGN(T, ROLE)/
Определения параметров:
T: объект, которому присваивается person_and_organization
ROLE: значение атрибута name для person_and_organization_role
Тело шаблона:
&T
person_and_organization_item = &T
person_and_organisation_item <-
applied_person_and_organization_assignment.items[i]
applied_person_and_organization_assignment <=
person_and_organization_assignment
{person_and_organization_assignment.role ->
person_and_organization_role
person_and_organization_role.name = &ROLE}
person_and_organization_assignment
person_and_organization_assignment.assigned_person_and_organization
person_and_organization
5.1.1.26 Шаблон PROD_CAT_NAME
Шаблон отображения PROD_CAT_NAME задает ограничение ссылочного пути, в котором для property_category.name присваивается значение NAME.
Сигнатура:
/PROD_CAT_NAME(NAME)/
Определения параметров:
NAME: значение, задаваемое для атрибута name для product_category
Тело шаблона:
product_related_product_category <=
product_category
{product_category.name = &NAME}
5.1.1.27 Шаблон PROD_DEF_PRODUCT
Шаблон отображения PROD_DEF_PRODUCT задает ограничение ссылочного пути, в котором product_definition связан с product.
Сигнатура:
/PROD_DEF_PRODUCT/
Определения параметров:
нет
Тело шаблона:
product_definition
product_definition.formation ->
product_definition_formation
product_definition_formation.of_product ->
product
Шаблон отображения PROD_DEF_PROP_DEF задает ограничение ссылочного пути, в котором product_definition связан с property_definition.
Сигнатура:
/PROD_DEF_PROP_DEF/
Определения параметров:
нет
Тело шаблона:
PROD_DEF_PROP_DEF_HELP
property_definition
5.1.1.29 Шаблон PROD_DEF_PROP_DEF_HELP
Шаблон отображения PROD_DEF_PROP_DEF_HELP задает ограничение ссылочного пути, в котором product_definition связан с property_definition.definition. Шаблон PROD_DEF_PROP_DEF_HELP предназначен для использования другими шаблонами отображения.
Сигнатура:
/PROD_DEF_PROP_DEF_HELP/
Определения параметров:
нет
Тело шаблона:
product_definition
characterized_product_definition = product_definition
characterized_product_definition
characterized_definition = characterized_product_definition
characterized_definition <-
property_definition.definition
Шаблон отображения PROD_DEF_TO_DESC_REP_ITEM задает ограничение ссылочного пути, в котором product_definition связан с descriptive_representation_item. Для descriptive_representation_item.name будет присвоено значение ID2. Связь реализуется через property_definition_representation, у которого имеется атрибут name, которому присвоено значение ID1. Шаблон PROD_DEF_TO_DESC_REP_ITEM предназначен для использования другими шаблонами отображения.
Сигнатура:
/PROD_DEF_TO_DESC_REP_ITEM(ID1, ID2)/
Определения параметров:
ID1: значение атрибута name для property_definition_representation
ID2: значение атрибута name для descriptive_representation_item
Тело шаблона:
PROD_DEF_PROP_DEF_HELP
PROP_DEF_TO_DESC_REP_ITEM(&ID1, &ID2)
Шаблон отображения PROD_DEF_TO_REP задает ограничение ссылочного пути, в котором product_definition связан с property_definition_representation с атрибутом name со значением ID. Шаблон PROD_DEF_TO_REP предназначен для использования другими шаблонами отображения.
Сигнатура:
/PROD_DEF_TO_REP(ID)/
Определения параметров:
ID: значение атрибута name для property_definition_representation
Тело шаблона:
PROD_DEF_PROP_DEF_HELP
PROP_DEF_REP_HELP(&ID)
Шаблон отображения PROD_DEF_TO_SPECIAL_VAL_REP_ITEM задает ограничение ссылочного пути, в котором product_definition связан с value_representation_item, который ссылается на measure_value, представляющий собой context_dependent_measure. Эта связь выполняется через property_definition_representation, атрибуту name которого будет присвоено значение ID1. Атрибуту name параметра value_representation_item будет присвоено значение ID2. Единицы для context_dependent_measure будут определены данными вида derived_unit с атрибутом name со значением DER_UNIT_NAME. Шаблон PROD_DEF_TO_SPECIAL_VAL_REP_ITEM предназначен для использования другими шаблонами отображения.
Сигнатура:
/PROD_DEF_TO_SPECIAL_VAL_REP_ITEM(ID1, ID2, DER_UNIT_NAME)/
Определения параметров:
ID1: значение атрибута name для property_definition_representation
ID2: значение атрибута name для value_representation_item
DER_UNIT_NAME: значение атрибута name для derived_unit
Тело шаблона:
PROD_DEF_PROP_DEF_HELP
PROP_DEF_TO_SPECIAL_VAL_REP_ITEM(&ID1, &ID2, &DER_UNIT_NAME)
Шаблон отображения PROD_DEF_TO_UNITS задает ограничение ссылочного пути, в котором product_definition связан с global_unit_assigned_context. Эта связь выполняется через property_definition_representation с атрибутом name со значением ID. Шаблон PROD_DEF_TO_UNITS предназначен для использования другими шаблонами отображения.
Сигнатура:
/PROD_DEF_TO_UNITS(ID)/
Определения параметров:
ID: значение атрибута name для property_definition_representation
Тело шаблона:
PROD_DEF_PROP_DEF_HELP
PROP_DEF_TO_UNITS(&ID)
Шаблон отображения PROD_DEF_TO_VAL_REP_ITEM задает ограничение ссылочного пути, в котором product_definition связан с value_representation_item, который ссылается на measure_value, тип которого задан параметром MEAS. Эта связь осуществляется через property_definition_representation с атрибутом name со значением ID1. Атрибуту name параметра value_representation_item будет присвоено значение ID2. Шаблон PROD_DEF_TO_VAL_REP_ITEM предназначен для использования другими шаблонами отображения.
Сигнатура:
/PROD_DEF_TO_VAL_REP_ITEM(ID1, ID2, MEAS)/
Определения параметров:
ID1: значение атрибута name для property_definition_representation
ID2: значение атрибута name для value_representation_item
MEAS: заданный тип для measure_value
Тело шаблона:
PROD_DEF_PROP_DEF_HELP
PROP_DEF_TO_VAL_REP_ITEM(&ID1, &ID2, &MEAS)
Шаблон отображения PROP_DEF_REP_HELP задает ограничение ссылочного пути, в котором product_definition связан с property_definition_representation. Атрибуту name для property_definition_representation дано значение ID. Шаблон PROP_DEF_REP_HELP предназначен для использования другими шаблонами отображения.
Сигнатура:
/PROP_DEF_REP_HELP(ID)/
Определения параметров:
ID: значение атрибута name для property_definition_representation
Тело шаблона:
property_definition
represented_definition = property_definition
represented_definition <-
{[PDR_NAME('&ID')]}
Шаблон отображения PROP_DEF_TO_DESC_REP_ITEM задает ограничение ссылочного пути, в котором property_definition связан с descriptive_representation_item, у которого имеется атрибут name с конкретным значением ID2. Эта связь осуществляется через property_definition_representation с атрибутом name с конкретным значением ID1.
Сигнатура:
/PROP_DEF_TO_DESC_REP_ITEM(ID1, ID2)/
Определения параметров:
ID1: значение атрибута name для property_definition_representation
ID2: значение атрибута name для descriptive_representation_item
Тело шаблона:
PROP_DEF_REP_HELP(&ID1)
REP_ITEM(&ID2)
descriptive_representation_item
descriptive_representation_item.description
5.1.1.37 Шаблон PROP_DEF_TO_REP
Шаблон отображения PROP_DEF_TO_REP задает ограничение ссылочного пути, в котором product_definition связан с representation через property_definition_representation.
Сигнатура:
/PROP_DEF_TO_REP/
Определения параметров: нет
Тело шаблона:
property_definition
represented_definition = property_definition
represented_definition <-
property_definition_representation.definition
property_definition_representation
property_definition_representation.used_representation ->
representation
Шаблон отображения PROP_DEF_TO_SPECIAL_VAL_REP_ITEM задает ограничение ссылочного пути, в котором property_definition связан с value_representation_item, который ссылается на measure_value, представляющий собой context_dependent_measure. Эта связь выполняется через property_definition_representation, атрибуту name которого будет присвоено значение ID1. Атрибуту name объекта value_representation_item будет присвоено значение ID2. Единицы для context_dependent_measure будут определены данными вида derived_unit с атрибутом name со значением DER_UNIT_NAME.
Сигнатура:
/PROP_DEF_TO_SPECIAL_VAL_REP_ITEM(ID1, ID2, DER_UNIT_NAME)/
Определения параметров:
ID1: значение атрибута name для property_definition_representation
ID2: значение атрибута name для value_representation_item
DER_UNIT_NAME: значение атрибута name для derived_unit
Тело шаблона:
PROP_DEF_REP_HELP(&ID 1)
REP_TO_SPECIAL_VAL_REP_ITEM(&ID2, &DER_UNIT_NAME)
Шаблон отображения PROP_DEF_TO_UNITS задает ограничение ссылочного пути, в котором property_definition связан с global_unit_assigned_context через property_definition_representation, атрибут name которого имеет значение ID. Параметр property_definition_representation ссылается на global_unit_assigned_context через экземпляр representation.
Сигнатура:
/PROP_DEF_TO_UNITS(ID)/
Определения параметров:
ID: значение атрибута name для property_definition_representation
Тело шаблона:
PROP_DEF_REP_HELP(&ID)
representation
representation.context_of_items ->
representation_context =>
global_unit_assigned_context
global_unit_assigned_context.units
Шаблон отображения PROP_DEF_TO_VAL_REP_ITEM задает ограничение ссылочного пути, в котором property_definition связан с value_representation_item, который ссылается на measure_value, тип которого задан параметром MEAS. Эта связь осуществляется через property_definition_representation с атрибутом name со значением ID1. Атрибуту name параметра value_representation_item будет присвоено значение ID2.
Сигнатура:
/PROP_DEF_TO_VAL_REP_ITEM(ID1, ID2, MEAS)/
Определения параметров:
ID1: значение атрибута name для property_definition_representation
ID2: значение атрибута name для value_representation_item
MEAS: заданный тип для measure_value
Тело шаблона:
PROP_DEF_REP_HELP(&ID1)
REP_ITEM(&ID2)
value_representation_item
value_representation_item.value_component -> measure_value
{measure_value = &MEAS}
5.1.1.41 Шаблон PROP_TO_PROD_DEF
Шаблон отображения PROP_TO_PROD_DEF задает ограничение ссылочного пути, в котором property_definition связан с product_definition.
Сигнатура:
/PROP_TO_PROD_DEF/
Определения параметров: нет
Тело шаблона:
property_definition
property_definition.definition -> characterized_definition
characterized_definition = characterized_product_definition
characterized_product_definition = product_definition
Шаблон отображения RELATE_ACT_2_VO задает ограничение ссылочного пути, в котором у объекта типа T, которому присваивается action, должна быть присвоенная классификация типа 'versionable object'.
Сигнатура:
/RELATE_ACT_2_VO(T)/
Определения параметров:
T: тип объекта, которому присваивается action
Тело шаблона:
applied_action_assignment
applied_action_assignment.items[i] ->
(action_item = &T
{CLASS_ID(&T, 'versionable object')})
Шаблон отображения RELATE_GROUP_2_VO задает ограничение ссылочного пути, в котором объекту типа T присваивается group с ролью ROLE, при этом у объекта типа T должна быть присвоенная классификация типа 'versionable object'.
Сигнатура:
/RELATE_GROUP_2_VO(T, ROLE)/
Определения параметров:
T: тип объекта, присваиваемого объекту group
ROLE: имя, даваемое роли присваивания
Тело шаблона:
GROUPS(&T, &ROLE)
{CLASS_ID(&T,'versionable object')}
Шаблон отображения RELATE_GROUP_2_DO задает ограничение ссылочного пути, в котором объекту типа T присваивается group с ролью ROLE, при этом у объекта типа T должна быть присвоенная классификация типа 'definable object'.
Сигнатура:
/RELATE_GROUP_2_DO(T, ROLE)/
Определения параметров:
T: тип объекта, присваиваемого объекту group
ROLE: имя, даваемое роли присваивания
Тело шаблона:
GROUPS(&T, &ROLE)
{CLASS_ID(&T,'definable object')}
Шаблон отображения RELATE_ID_2_VO задает ограничение ссылочного пути, в котором объекту типа T присваивается identification_assignment с именем роли 'version identifier', при этом у объекта типа T должна быть присвоенная классификация типа 'versionable object'. Этот шаблон отображения может пониматься как "обратный" шаблон отображения для шаблона VERSION_ID(T).
Сигнатура:
/RELATE_ID_2_VO(T)/
Определения параметров:
T: тип объекта, у которого есть identification_assignment
Тело шаблона:
identification_assignment
{identification_assignment.role ->
identification_role
[identification_role.name = 'version identifier']} =>
applied_identification_assignment
applied_identification_assignment.items[i] ->
identification_item = &T
{CLASS_ID(&T, 'versionable object')}
5.1.1.46 Шаблон REP_ITEM
Шаблон отображения REP_ITEM задает ограничение ссылочного пути, в котором representation связан с representation_item. Для representation_item.name присваивается значение ID. Шаблон REP_ITEM предназначен для использования другими шаблонами отображения.
Сигнатура:
/REP_ITEM(ID)/
Определения параметров:
ID: значение атрибута name для representation_item
Тело шаблона:
representation
representation.items [i] ->
representation_item =>
{representation_item.name = &ID}
Шаблон отображения REP_TO_SPECIAL_VAL_REP_ITEM задает ограничение ссылочного пути, в котором representation связан с value_representation_item, который ссылается на measure_value, представляющий собой context_dependent_measure. Атрибуту name для value_representation_item будет присвоено значение ID. Единицы для context_dependent_measure будут определяться данными вида derived_unit с атрибутом name со значением DER_UNIT_NAME.
Сигнатура:
/REP_TO_SPECIAL_VAL_REP_ITEM(ID, DER_UNIT_NAME)/
Определения параметров:
ID: значение атрибута name для value_representation_item
DER_UNIT_NAME: значение атрибута name для derived_unit
Тело шаблона:
representation
{representation.context_of_items ->
representation_context =>
global_unit_assigned_context
global_unit_assigned_context.units[i] ->
unit =
derived_unit
[NAME_ASSGN_WITH_VAL(derived_unit, ' &DER_UNIT_NAME')]}
representation.items [i] ->
representation_item =>
{representation_item.name = &ID}
value_representation_item
value_representation_item.value_component -> measure_value
{measure_value = context_dependent_measure}
Шаблон отображения REP_TO_VAL_REP_ITEM задает ограничение ссылочного пути, в котором representation связан с value_representation_item. Атрибуту name объекта value_representation_item присвоено значение ID, при этом value_component представляет собой measure_value, заданное с помощью MEAS.
Сигнатура:
/REP_TO_VAL_REP_ITEM(ID, MEAS)/
Определения параметров:
ID: значение, данное атрибуту name для value_representation_item
MEAS: заданный тип для measure_value
Тело шаблона:
REP_ITEM(&ID)
value_representation_item
value_representation_item.value_component -> measure_value
{measure_value = &MEAS}
5.1.1.49 Шаблон ROLE_ASSGN
Шаблон отображения ROLE_ASSGN задает ограничение ссылочного пути, в котором role_association присваивается экземпляру ENTITY, содержащему полученный атрибут роли. Создание атрибута роли основывается на объекте Basic_attribute_schema согласно ИСО 10303-41.
Примечание - Шаблон ROLE_ASSGN используется следующими видами данных экземпляра Entity для совокупности их атрибута name:
- action_assignment;
- action_request_assignment;
- approval_assignment;
- approval_date_time;
- certification_assignment;
- contract_assignment;
- document_reference;
- effectivity_assignment;
- external_referent_assignment;
- group_assignment;
- name_assignment;
- security_classification_assignment.
Сигнатура:
/ROLE_ASSGN(ENTITY)/
Определения параметров:
ENTITY: тип объекта, которому присваивается role_association
Тело шаблона:
&ENTITY
role_select = &ENTITY
role_select <-
role_association.item_with_role
role_association
role_association.role ->
object_role
5.1.1.50 Шаблон ROOT_CLASS
Шаблон отображения ROOT_CLASS задает ограничение ссылочного пути, в котором экземплярами типа T являются classification_items в экземплярах applied_classification_assignment, где имя роли, указанное для присваивания, имеет значение 'class membership', а присваиваемая классификация имеет значение group, атрибуту name которого присвоено значение ID.
Примечание - Семантика шаблона заключается в присвоении имени класса экземпляру.
Сигнатура:
/ROOT_CLASS(T, ID)/
Определения параметров:
T: тип классифицируемого экземпляра
ID: имя класса
Тело шаблона:
&T
classification_item = &T
classification_item <-
applied_classification_assignment.items[i]
applied_classification_assignment <=
classification_assignment
{classification_assignment.role ->
classification_role
classification_role.name = 'class membership'}
classification_assignment.assigned_classification ->
group =>
{group.name = &ID}
class
Шаблон отображения SDR_NAME задает ограничения ссылочного пути, в котором для shape_definition_representation.name присваивается значение NAME.
Сигнатура:
/SDR_NAME(NAME)/
Определения параметров:
NAME: значение атрибута name для shape_definition_representation
Тело шаблона:
property_definition_representation.definition
property_definition_representation
{property_definition_representation=>
shape_definition_representation}
{NAME_ASSGN_WITH_VAL(property_definition_representation, '&NAME')}
property_definition_representation.used_representation
5.1.1.52 Шаблон SUBTYPE
Шаблон отображения SUBTYPE задает ссылку на отображение подтипа действующего прикладного объекта. Для одного прикладного объекта супертипа может быть указано несколько таких ссылок.
Примечание - Определение данного шаблона состоит только из сигнатуры шаблона, совпадающего тела шаблона нет. Этот шаблон приведен для упрощения автоматической обработки спецификации отображения.
Сигнатура шаблона:
/SUBTYPE(application_object)/
Определения параметров:
application_object: прикладной объект, который является подтипом действующего прикладного объекта супертипа и у которого есть полная или частичная спецификация отображения данного супертипа.
5.1.1.53 Шаблон SUPERTYPE
Шаблон отображения SUPERTYPE задает ссылку на отображение супертипа действующего прикладного объекта. Для прикладного объекта подтипа может быть указано несколько таких ссылок.
Примечание - Данный шаблон состоит только из сигнатуры, совпадающего тела нет. Этот шаблон приведен для упрощения автоматической обработки спецификации отображения.
Сигнатура шаблона:
/SUPERTYPE(application_object)/
Определение параметров:
application_object: прикладной объект, который является супертипом действующего прикладного объекта подтипа и у которого есть полная или частичная спецификация отображения данного подтипа.
Шаблон отображения VERSION_ID задает ограничение ссылочного пути, в котором объекту типа T присваивается идентификатор версии.
Сигнатура:
/VERSION_ID(T)/
Определения параметров:
T: тип объекта, которому присвоен идентификатор версии.
Тело шаблона:
IDENTIFICATION(&T)
[identification_role.name = 'version identifier']}
identification_assignment
identification_assignment.assigned_id
5.1.2.2 SHIP_CURVE_WITH_SPACING_POSITION
5.1.2.2.1 curve_class
Примечание - Атрибут унаследован из супертипа Ship_curve (см. 5.1.2.1).
5.1.2.2.2 side_condition
Примечание - Атрибут унаследован из супертипа Ship_curve (см. 5.1.2.1).
5.1.2.2.3 ship_curve_with_spacing_position для curve (как curve_shape)
Примечание - Атрибут унаследован из супертипа Ship_curve (см. 5.1.2.1).
5.1.2.2.4 ship_curve_with_spacing_position для spacing_position (как location)
5.1.2.3.1 point_class
5.1.2.3.2 ship_point для point (как point_shape)
5.1.2.4.1 surface_class
5.1.2.4.2 ship_surface для surface (как surface_shape)
5.1.3 Отображение функциональной единицы configuration_management
5.1.3.1 Прикладной элемент ALTERNATIVE_VERSION_RELATIONSHIP
5.1.3.1.1 reason
5.1.3.1.2 alternative_version_relationship для versionable_object (как alternative 1)
5.1.3.1.3 alternative_version_relationship для versionable_object (как alternative 2)
5.1.3.2.1 caused_by
Примечание - Атрибут унаследован из супертипа Event (см. 5.1.3.12).
5.1.3.2.2 caused_when
Примечание - Атрибут унаследован из супертипа Event (см. 5.1.3.12).
5.1.3.2.3 description
Примечание - Атрибут унаследован из супертипа Event (см. 5.1.3.12).
5.1.3.2.4 result
5.1.3.2.5 user_defined_result
5.1.3.2.6 approval_event для approval_history (как approval_reference)
Примечание - Атрибут является обратным отношением для атрибута approvals для Approval_history (см. 5.1.3.3.2).
5.1.3.3 Прикладной элемент APPROVAL_HISTORY
5.1.3.3.1 status
5.1.3.3.3 approval_history для definition (как subject)
Примечание - Атрибут унаследован из супертипа Item (см. 5.1.8.3).
Примечание - Атрибут унаследован из супертипа Item (см. 5.1.8.3).
5.1.3.4.3 the_class
Примечание - Атрибут унаследован из супертипа Item (см. 5.1.8.3).
#1: Если "как documentation" относится к External_reference
#2: Если "как documentation" относится к Document_reference_with_address
Примечание - Атрибут унаследован из супертипа Item (см. 5.1.8.3), который наследуется из супертипа Definition (см. 5.1.4.1).
Примечание - Атрибут унаследован из супертипа Item (см. 5.1.8.3).
5.1.3.5.1 author
5.1.3.5.2 date_time
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1).
5.1.3.6 Прикладной элемент CHANGE_IMPACT
5.1.3.6.1 change_impact для versionable_object_change_event (как impact)
5.1.3.7 Прикладной элемент CHANGE_PLAN
Примечание - Атрибут унаследован из супертипа Change_definition (см. 5.1.3.5).
Примечание - Атрибут унаследован из супертипа Change_definition (см. 5.1.3.5).
Примечание - Атрибут унаследован из супертипа Item (см. 5.1.8.3).
Примечание - Атрибут унаследован из супертипа Versionable_object (см. 5.1.9.17) через супертип Change_definition (см. 5.1.3.5), который наследуется от супертипа Definition (см. 5.1.4.1).
5.1.3.7.5 change_plan для check (как checks)
5.1.3.7.6 change_plan для change_request (как chosen_solution_for)
Примечание - Атрибут унаследован из супертипа Change_definition (см. 5.1.3.5).
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1) через супертип Change_definition (см. 5.1.3.5).
5.1.3.7.9 change_plan для change_impact (как planned_impact)
5.1.3.8 Прикладной элемент CHANGE_REALIZATION
Примечание - Атрибут унаследован из супертипа Change_definition (см. 5.1.3.5).
Примечание - Атрибут унаследован из супертипа Change_definition (см. 5.1.3.5).
Примечание - Атрибут унаследован из супертипа Versionable_object (см. 5.1.8.3).
Примечание - Атрибут унаследован из супертипа Versionable_object (см. 5.1.9.17) через супертип Change_definition (см. 5.1.3.5), который наследуется от супертипа Definition (см. 5.1.4.1).
5.1.3.8.5 change_realization для check (как checks)
Примечание - Атрибут унаследован из супертипа Change_definition (см. 5.1.3.5).
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1) через супертип Change_definition (см. 5.1.3.5).
5.1.3.8.8 change_realization для change_impact (как impact)
5.1.3.8.9 change_realization для change_plan (как realization_of)
5.1.3.9 Прикладной объект CHANGE_REQUEST
5.1.3.9.1 addressee
Примечание - Атрибут унаследован из супертипа Change_definition (см. 5.1.3.5).
Примечание - Атрибут унаследован из супертипа Change_definition (см. 5.1.3.5).
Примечание - Атрибут унаследован из супертипа Versionable_object (см. 5.1.8.3).
5.1.3.9.5 initiator
5.1.3.9.6 problem
5.1.3.9.7 solution_description
Примечание - Атрибут унаследован из супертипа Versionable_object (см. 5.1.9.17) через супертип Change_definition (см. 5.1.3.5), который наследуется от супертипа Definition (см. 5.1.4.1).
Примечание - Атрибут унаследован из супертипа Change_definition (см. 5.1.3.5).
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1) через супертип Change_definition (см. 5.1.3.5).
5.1.3.9.11 change_request для change_impact (как solution_alternatives)
5.1.3.10.1 caused_by
Примечание - Атрибут унаследован из супертипа Event (см. 5.1.3.12).
5.1.3.10.2 caused_when
Примечание - Атрибут унаследован из супертипа Event (см. 5.1.3.12).
5.1.3.10.3 description
Примечание - Атрибут унаследован из супертипа Event (см. 5.1.3.12).
5.1.3.11 Прикладной объект ENVISAGED_VERSION_CREATION
5.1.3.11.1 category
Примечание - Атрибут унаследован из супертипа Event (см. 5.1.3.12), через супертип Versionable_object_change_event (см. 5.1.3.20).
Примечание - Атрибут унаследован из супертипа Event (см. 5.1.3.12), через супертип Versionable_object_change_event (см. 5.1.3.20).
Примечание - Атрибут унаследован из супертипа Event (см. 5.1.3.12), через супертип Versionable_object_change_event (см. 5.1.3.20).
5.1.3.11.5 envisaged_version_creation для versionable_object (как base)
5.1.3.12.1 caused_by
5.1.3.12.2 caused_when
5.1.3.12.3 description
5.1.3.13.1 description
Примечание - Атрибут унаследован из супертипа Versionable_object (см. 5.1.9.17).
5.1.3.13.2 name
Примечание - Атрибут унаследован из супертипа Versionable_object (см. 5.1.9.17).
5.1.3.13.4 revision для versionable_object (как members)
5.1.3.14.1 description
Примечание - Атрибут унаследован из супертипа Revision (см. 5.1.3.13).
5.1.3.14.2 name
Примечание - Атрибут унаследован из супертипа Revision (см. 5.1.3.13).
5.1.3.14.3 version_id
Примечание - Атрибут унаследован из супертипа Revision (см. 5.1.3.13), который наследуется из супертипа Versionable_object (см. 5.1.9.17).
5.1.3.14.4 revision_with_context для definable_object (как context_of_revision)
5.1.3.14.5 revision_with_context для versionable_object (как members)
Примечание - Атрибут унаследован из супертипа Revision (см. 5.1.3.13).
5.1.3.15 Прикладной элемент VERSION_CREATION
Примечание - Атрибут унаследован из супертипа Event (см. 5.1.3.12), через супертип Versionable_object_change_event (см. 5.1.3.20).
Примечание - Атрибут унаследован из супертипа Event (см. 5.1.3.12), через супертип Versionable_object_change_event (см. 5.1.3.20).
Примечание - Атрибут унаследован из супертипа Event (см. 5.1.3.12), через супертип Versionable_object_change_event (см. 1.3.20).
5.1.3.15.4 version_creation для versionable_object (как base)
5.1.3.15.5 version_creation для versionable_object (как subject)
5.1.3.16 Прикладной элемент VERSION_DELETION
Примечание - Атрибут унаследован из супертипа Event (см. 5.1.3.12), через супертип Versionable_object_change_event (см. 5.1.3.20).
Примечание - Атрибут унаследован из супертипа Event (см. 5.1.3.12), через супертип Versionable_object_change_event (см. 5.1.3.20).
Примечание - Атрибут унаследован из супертипа Event (см. 5.1.3.12), через супертип Versionable_object_change_event (см. 5.1.3.20).
5.1.3.16.4 version_deletion для versionable_object (как subject)
5.1.3.17 Прикладной элемент VERSION_HISTORY
5.1.3.17.1 version_history для versionable_object (как current_version)
5.1.3.17.2 version_history для version_relationship (как relationships)
5.1.3.17.3 version_history для versionable_object (как versions)
5.1.3.18 Прикладной элемент VERSION_MODIFICATION
Примечание - Атрибут унаследован из супертипа Event (см. 5.1.3.12), через супертип Versionable_object_change_event (см. 5.1.3.20).
Примечание - Атрибут унаследован из супертипа Event (см. 5.1.3.12), через супертип Versionable_object_change_event (см. 5.1.3.20).
Примечание - Атрибут унаследован из супертипа Event (см. 5.1.3.12), через супертип Versionable_object_change_event (см. 5.1.3.20).
5.1.3.18.4 version_modification для versionable_object (как base)
5.1.3.18.5 version_modification для versionable_object (как subject)
5.1.3.19 Прикладной объект VERSION_RELATIONSHIP
5.1.3.19.1 reason
5.1.3.19.2 version_relationship для versionable_object (как predecessor)
5.1.3.19.3 version_relationship для versionable_object (как successor)
5.1.3.20.1 caused_by
Примечание - Атрибут унаследован из супертипа Event (см. 5.1.3.12).
5.1.3.20.2 caused_when
Примечание - Атрибут унаследован из супертипа Event (см. 5.1.3.12).
5.1.3.20.3 description
Примечание - Атрибут унаследован из супертипа Event (см. 5.1.3.12).
5.1.4 Функциональная единица definitions
5.1.4.1.1 description
Примечание - Атрибут унаследован из супертипа Versionable_object (см. 5.1.9.17).
Примечание - Атрибут унаследован из супертипа Versionable_object (см. 5.1.9.17).
5.1.4.1.3 definition для definable_object (как defined_for)
5.1.4.1.4 definition для global_id (как id)
5.1.4.1.5 definition для derived_unit (как local_units)
5.1.4.1.6 definition для named_unit (как local_units)
5.1.4.2.2 representations
Примечание - Атрибут унаследован из супертипа Versionable_object (см. 5.1.9.17) через Definition (см. 5.1.4.1).
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1).
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1).
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1).
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1).
Примечание - Атрибут унаследован из супертипа Versionable_object (см. 5.1.9.17) через Definition (см. 5.1.4.1).
5.1.4.3.3 user_def_function
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1).
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1).
Примечание - Атрибут унаследован из супертипа Versionable_object (см. 5.1.9.17) через Definition (см. 5.1.4.1).
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1).
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1).
Примечание - Для этого супертипа атрибут был переопределен в ПЭМ как совокупность нуля, что интерпретируется как отсутствие необходимости атрибута.
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1).
Примечание - Для этого супертипа атрибут был переопределен в ПЭМ как совокупность нуля, что интерпретируется как отсутствие необходимости атрибута.
5.1.5 Функциональная единица external_references
5.1.5.1.1 author
5.1.5.1.2 description
5.1.5.1.3 source_type
5.1.5.1.4 title
5.1.5.2 Прикладной элемент DOCUMENT_PORTION
5.1.5.2.1 element_type
5.1.5.2.2 element_value
5.1.5.2.3 document_portion для document (как source)
5.1.5.3.1 document_reference для document (как assigned_document)
5.1.5.3.2 document_reference для document_portion (как assigned_document)
5.1.5.4 Прикладной элемент DOCUMENT_REFERENCE_WITH_ADDRESS
5.1.5.4.1 description
Примечание - Атрибут унаследован из супертипа External_reference (см. 5.1.5.6).
5.1.5.4.2 document_reference_with_address для document (как assigned_document)
Примечание - Атрибут унаследован из супертипа Document_reference (см. 5.1.5.3).
5.1.5.4.3 document_reference_with_address для document_portion (как assigned_document)
Примечание - Атрибут унаследован из супертипа Document_reference (см. 5.1.5.3).
5.1.5.4.4 document_reference_with_address для external_storage (как location)
Примечание - Атрибут унаследован из супертипа External_reference (см. 5.1.5.6).
5.1.5.4.5 document_reference_with_address для universal_resource_locator (как location)
Примечание - Атрибут унаследован из супертипа External_reference (см. 5.1.5.6).
5.1.5.5 Прикладной элемент EXTERNAL_INSTANCE_REFERENCE
5.1.5.5.1 entity_type
5.1.5.5.2 schema_name
5.1.5.5.3 external_instance_reference для global_id (как target_guid)
5.1.5.6.1 description
5.1.5.6.2 external_reference для external_storage (как location)
5.1.5.6.3 external_reference для universal_resource_locator (как location)
5.1.5.7 Прикладной элемент EXTERNAL_STORAGE
5.1.5.7.1 location
5.1.5.8 Прикладной элемент UNIVERSAL_RESOURCE_LOCATOR
5.1.5.8.1 location
5.1.6 Функциональная единица Hull_class_applicability
5.1.6.1 Прикладной элемент HULL_APPLICABILITY
5.1.6.1.1 end_hull
5.1.6.1.2 start_hull
5.1.6.1.3 hull_applicability для definition (как definitions_for_hulls)
5.1.6.1.4 hull_applicability для item (как items_for_hulls)
5.1.7 Функциональная единица hydrostatics
5.1.7.1.1 addition_of_moulded_form для moulded_form (как displacement_of_moulded_form_to_add_or_subtract)
Примечание - Атрибут унаследован из супертипа Displacement_operation (см. 5.1.7.2).
5.1.7.2.1 displacement_operation для moulded_form (как displacement_of_moulded_form_to_add_or_subtract)
5.1.7.3 Прикладной элемент FLOATING_POSITION
5.1.7.3.1 angle_of_heel
5.1.7.3.2 angle_of_trim
5.1.7.3.3 breadth_of_waterline
5.1.7.3.4 draught_at_amidships
5.1.7.3.5 length_of_waterline
5.1.7.3.6 moulded_form_displacement
Примечание - Атрибут унаследован из супертипа Versionable_object в 5.1.9.17 через супертип Design_definition (см. 5.1.4.2), который наследуется от супертипа Definition (см. 5.1.4.1).
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1) через супертип Design_definition (см. 5.1.4.2).
5.1.7.4.4 hydrostatic_definition для displacement_operation (как displacement_changes)
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1) через супертип Design_definition (см. 5.1.4.2).
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1) через супертип Design_definition (см. 5.1.4.2).
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1) через супертип Design_definition (см. 5.1.4.2).
Примечание - Атрибут унаследован из супертипа Design_definition (см. 5.1.4.2).
5.1.7.5.1 hydrostatic_position_value для centre_location (как position)
5.1.7.6 Прикладной элемент HYDROSTATIC_PROPERTIES_FOR_CONSTANT_FLOATING_POSITION
5.1.7.6.1 hydrostatic_properties_for_constant_floating_position для floating_position (как definition_of_floating_position)
5.1.7.6.2 hydrostatic_properties_for_constant_floating_position для hydrostatic_property_value (как hydrostatic_property_values)
5.1.7.6.3 hydrostatic_properties_for_constant_floating_position для hydrostatic_table (как related_hydrostatic_table)
Примечание - Атрибут является обратным отношением для элементов атрибута Hydrostatic_table (см. 5.1.7.10.3).
5.1.7.7 Прикладной элемент HYDROSTATIC_PROPERTY
5.1.7.7.1 property_measure
5.1.7.7.2 property_type
5.1.7.8 Прикладной элемент HYDROSTATIC_PROPERTY_VALUE
5.1.7.9.1 scalar
5.1.7.10 Прикладной элемент HYDROSTATIC_TABLE
5.1.7.10.1 name
5.1.7.10.2 mean_shell_thickness
5.1.7.10.4 hydrostatic_table для hydrostatic_property (как properties_in_the_hydrostatic_table)
Примечание - Атрибут унаследован из супертипа Versionable_object (см. 5.1.9.17) через супертип Design_definition (см. 5.1.4.2), который наследуется от супертипа Definition (см. 5.1.4.1).
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1) через супертип Design_definition (см. 5.1.4.2).
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1) через супертип Design_definition (см. 5.1.4.2).
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1) через супертип Design_definition (см. 5.1.4.2).
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1) через супертип Design_definition (см. 5.1.4.2).
Примечание - Атрибут унаследован из супертипа Design_definition (см. 5.1.4.2).
5.1.7.12 Прикладной элемент STABILITY_PROPERTIES_FOR_ONE_FLOATING_POSITION
5.1.7.12.1 stability_properties_for_one_floating_position для centre_location (как centre_of_gravity_above_keel)
5.1.7.12.2 stability_properties_for_one_floating_position для floating_position (как definition_of_starting_floating_position)
5.1.7.12.3 stability_properties_for_constant_floating_position для stability_table (как related_stability_table)
Примечание - Атрибут является обратным отношением для элементов атрибута Stability_table (см. 5.1.7.14.3).
5.1.7.12.4 stability_properties_for_one_floating_position для stability_property (как stability_properties_for_different_angles_of_heel)
5.1.7.13 Прикладной элемент STABILITY_PROPERTY
5.1.7.13.1 angle_of_heel
5.1.7.13.2 righting arm
5.1.7.13.3 stability_property для centre_location (как centre_of_buoyancy)
5.1.7.14 Прикладной элемент STABILITY_TABLE
5.1.7.14.1 mean_shell_thickness
5.1.7.14.2 name
5.1.7.15.1 subtraction_of_moulded_form для moulded_form (как displacement_of_moulded_form_to_add_or_subtract)
Примечание - Атрибут унаследован из супертипа Displacement_operation (см. 5.1.7.2).
5.1.8 Функциональная единица items
5.1.8.1.1 definable_object для global_id (как id)
5.1.8.2 Прикладной элемент GLOBAL_ID
5.1.8.2.1 id
5.1.8.3.1 description
5.1.8.3.2 name
5.1.8.3.3 item для external_reference (как documentation)
5.1.8.3.4 item для global_id (как id)
Примечание - Атрибут унаследован из супертипа Definable_object (см. 5.1.8.1).
5.1.8.3.5 item для ship (как ship_context)
5.1.8.4.1 description
Примечание - Атрибут унаследован из супертипа Versionable_object (см. 5.1.9.17).
5.1.8.4.3 item_relationship для external_instance_reference (как external_item_1)
5.1.8.4.4 item_relationship для external_instance_reference (как external_item_2)
5.1.8.4.5 item_relationship для global_id (как id)
Примечание - Атрибут унаследован из супертипа (см. 5.1.8.1)
5.1.8.4.6 item_relationship для item (как item_1)
5.1.8.4.7 item_relationship для item (как item_2)
5.1.8.5.1 description
Примечание - Атрибут унаследован из супертипа Versionable_object (см. 5.1.9.17).
5.1.8.5.3 item_structure для external_instance_reference (как external_items)
5.1.8.5.4 item_structure для external_instance_reference (как external_relationships)
5.1.8.5.5 item_structure для global_id (как id)
Примечание - Атрибут унаследован из супертипа Definable_object (см. 5.1.8.1).
5.1.8.5.6 item_structure для item (как items)
5.1.8.5.7 item_structure для item_relationship (как relationships)
Примечание - Атрибут унаследован из супертипа Item (см. 5.1.8.3).
Примечание - Атрибут унаследован из супертипа Item (см. 5.1.8.3).
Примечание - Атрибут унаследован из супертипа Item (см. 5.1.8.3).
Примечание - Атрибут унаследован из супертипа Definable_object (см. 5.1.8.1).
5.1.8.6.5 ship для item (как ship_items)
5.1.8.6.6 single_hull_or_class
5.1.8.6.7 ship для derived_unit (как units)
5.1.8.6.8 ship для named_unit (как units)
5.1.9 Функциональная единица location_concepts
5.1.9.1 Прикладной элемент BUTTOCK_TABLE
5.1.9.1.1 description
Примечание - Атрибут унаследован из супертипа Spacing_table (см. 5.1.9.10).
5.1.9.1.2 name
Примечание - Атрибут унаследован из супертипа Spacing_table (см. 5.1.9.10).
5.1.9.1.3 version_id
Примечание - Атрибут унаследован из супертипа Versionable_object (см. 5.1.9.17).
5.1.9.1.4 buttock_table для definable_object (как defined_for)
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1).
5.1.9.1.5 buttock_table для global_id (как id)
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1).
5.1.9.1.6 buttock_table для derived_unit (как local_units)
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1).
5.1.9.1.7 buttock_table для named_unit (как local_units)
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1).
5.1.9.1.8 buttock_table для transversal_position (как spacing_table_representations)
Примечание - Атрибут унаследован из супертипа Transversal_table (см. 5.1.9.13).
5.1.9.2 Прикладной элемент FRAME_TABLE
5.1.9.2.1 description
Примечание - Атрибут унаследован из супертипа Spacing_table (см. 5.1.9.10).
5.1.9.2.2 name
Примечание - Атрибут унаследован из супертипа Spacing_table (см. 5.1.9.10).
5.1.9.2.3 version_id
Примечание - Атрибут унаследован из супертипа Versionable_object (см. 5.1.9.17).
5.1.9.2.4 frame_table для definable_object (как defined_for)
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1).
5.1.9.2.5 frame_table для global_id (как id)
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1).
5.1.9.2.6 frame_table для derived_unit (как local_units)
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1).
5.1.9.2.7 frame_table для named_unit (как local_units)
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1).
5.1.9.2.8 frame_table для longitudinal_position (как spacing_table_representations)
Примечание - Атрибут унаследован из супертипа Longitudinal_table (см. 5.1.9.7).
5.1.9.3.1 after_perpendicular_offset
Примечание - Атрибут унаследован из супертипа Item (см. 5.1.8.3).
5.1.9.3.3 orientation
Примечание - Атрибут унаследован из супертипа Versionable_object (см. 5.1.9.17).
Примечание - Атрибут унаследован из супертипа General_characteristics_definition (см. 5.1.4.4).
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1).
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1).
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1).
Примечание - Атрибут унаследован из супертипа Item (см. 5.1.8.3).
Примечание - Атрибут унаследован из супертипа Versionable_object (см. 5.1.9.17).
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1).
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1).
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1).
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1).
5.1.9.4.7 local_co_ordinate_system для global_axis_placement (как parent)
5.1.9.4.9 local_co_ordinate_system для local_co_ordinate_system_with_position_reference (как parent)
5.1.9.5 Прикладной элемент LOCAL_CO_ORDINATE_SYSTEM_WITH_POSITION_REFERENCE
5.1.9.5.1 description
Примечание - Атрибут унаследован из супертипа Item (см. 5.1.8.3).
5.1.9.5.2 version_id
Примечание - Атрибут унаследован из супертипа Versionable_object (см. 5.1.9.17).
5.1.9.5.3 local_co_ordinate_system_with_position_reference для definable_object (как defined_for)
Примечание - Атрибут унаследован из супертипа (см. 5.1.4.1).
5.1.9.5.4 local_co_ordinate_system_with_position_reference для global_id (как id)
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1).
5.1.9.5.5 local_co_ordinate_system_with_position_reference для derived_unit (как local_units)
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1).
5.1.9.5.6 local_co_ordinate_system_with_position_reference для named_unit (как local_units)
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1).
5.1.9.5.7 local_co_ordinate_system_with_position_reference для length_measure (как longitudinal_ref)
5.1.9.5.8 local_co_ordinate_system_with_position_reference для spacing_position (как longitudinal_ref)
5.1.9.5.9 local_co_ordinate_system_with_position_reference для global_axis_placement (как parent)
5.1.9.5.10 local_co_ordinate_system_with_position_reference для local_co_ordinate_system (как parent)
5.1.9.5.11 local_co_ordinate_system_with_position_reference для local_co_ordinate_system_with_position_reference (как parent)
5.1.9.5.12 local_co_ordinate_system_with_position_reference для length_measure (как transversal_ref)
5.1.9.5.13 local_co_ordinate_system_with_position_reference для spacing_position (как transversal_ref)
5.1.9.5.14 local_co_ordinate_system_with_position_reference для length_measure (как vertical_ref)
5.1.9.5.15 local_co_ordinate_system_with_position_reference для spacing_position (как vertical_ref)
5.1.9.6 Прикладной элемент LONGITUDINAL_POSITION
5.1.9.6.1 name
Примечание - Атрибут унаследован из супертипа Spacing_position (см. 5.1.9.8).
5.1.9.6.2 position
Примечание - Атрибут унаследован из супертипа Spacing_position (см. 5.1.9.8).
5.1.9.6.3 position_number
Примечание - Атрибут унаследован из супертипа Spacing_position (см. 5.1.9.8).
Примечание - Атрибут унаследован из супертипа Spacing_position (см. 5.1.9.10).
Примечание - Атрибут унаследован из супертипа Spacing_position (см. 5.1.9.10).
Примечание - Атрибут унаследован из супертипа Versionable_object (см. 5.1.9.17).
Примечание - Атрибут унаследован из супертипа (см. 5.1.4.1).
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1).
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1).
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1).
5.1.9.9 Прикладной элемент SPACING_POSITION_WITH_OFFSET
5.1.9.9.1 name
Примечание - Атрибут унаследован из супертипа Spacing_position (см. 5.1.9.8).
5.1.9.9.2 offset
5.1.9.9.3 position
5.1.9.9.4 position_number
Примечание - Атрибут унаследован из супертипа Spacing_position (см. 5.1.9.8).
5.1.9.9.5 spacing_position_with_offset для spacing_position (как relating_spacing_position)
Примечание - Атрибут унаследован из супертипа Versionable_object (см. 5.1.9.17).
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1).
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1).
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1).
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1).
5.1.9.10.8 spacing_table для spacing_position (как spacing_table_representations)
5.1.9.11 Прикладной элемент STATION_TABLE
5.1.9.11.1 description
Примечание - Атрибут унаследован из супертипа Spacing_table (см. 5.1.9.10).
5.1.9.11.2 name
Примечание - Атрибут унаследован из супертипа Spacing_table (см. 5.1.9.10).
5.1.9.11.3 version_id
Примечание - Атрибут унаследован из супертипа Versionable_object (см. 5.1.9.17).
5.1.9.11.4 station_table для definable_object (как defined_for)
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1).
5.1.9.11.5 station_table для global_id (как id)
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1).
5.1.9.11.6 station_table для derived_unit (как local_units)
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1).
5.1.9.11.7 station_table для named_unit (как local_units)
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1).
5.1.9.11.8 station_table для longitudinal_position (как spacing_table_representations)
Примечание - Атрибут унаследован из супертипа Longitudinal_table (см. 5.1.9.7).
5.1.9.12 Прикладной элемент TRANSVERSAL_POSITION
5.1.9.12.1 name
Примечание - Атрибут унаследован из супертипа Spacing_position (см. 5.1.9.8).
5.1.9.12.2 position
Примечание - Атрибут унаследован из супертипа Spacing_position (см. 5.1.9.8).
5.1.9.12.3 position_number
Примечание - Атрибут унаследован из супертипа Spacing_position (см. 5.1.9.8).
5.1.9.13.1 description
Примечание - Атрибут унаследован из супертипа Spacing_table (см. 5.1.9.10).
5.1.9.13.2 name
Примечание - Атрибут унаследован из супертипа Spacing_table (см. 5.1.9.10).
5.1.9.13.3 version_id
Примечание - Атрибут унаследован из супертипа Versionable_object (см. 5.1.9.17).
5.1.9.13.4 transversal_table для definable_object (как defined_for)
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1).
5.1.9.13.5 transversal_table для global_id (как id)
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1).
5.1.9.13.6 transversal_table для derived_unit (как local_units)
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1).
5.1.9.13.7 transversal_table для named_unit (как local_units)
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1).
5.1.9.14 Прикладной элемент VERTICAL_POSITION
5.1.9.14.1 name
Примечание - Атрибут унаследован из супертипа (см. 5.1.9.8).
5.1.9.14.2 position
Примечание - Атрибут унаследован из супертипа (см. 5.1.9.8).
5.1.9.14.3 position_number
Примечание - Атрибут унаследован из супертипа (см. 5.1.9.8).
5.1.9.15.1 description
Примечание - Атрибут унаследован из супертипа (см. 5.1.9.10).
5.1.9.15.2 name
Примечание - Атрибут унаследован из супертипа (см. 5.1.9.10).
5.1.9.15.3 version_id
Примечание - Атрибут унаследован из супертипа Versionable_object (см. 5.1.9.17).
5.1.9.15.4 vertical_table для definable_object (как defined_for)
Примечание - Атрибут унаследован из супертипа (см. 5.1.4.1).
5.1.9.15.5 vertical_table для global_id (как id)
Примечание - Атрибут унаследован из супертипа (см. 5.1.4.1).
5.1.9.15.6 vertical_table для derived_unit (как local_units)
Примечание - Атрибут унаследован из супертипа (см. 5.1.4.1).
5.1.9.15.7 vertical_table для named_unit (как local_units)
Примечание - Атрибут унаследован из супертипа (см. 5.1.4.1).
5.1.9.16 Прикладной элемент WATERLINE_TABLE
5.1.9.16.1 description
Примечание - Атрибут унаследован из супертипа (см. 5.1.9.10).
5.1.9.16.2 name
Примечание - Атрибут унаследован из супертипа (см. 5.1.9.10).
5.1.9.16.3 version_id
Примечание - Атрибут унаследован из супертипа Versionable_object (см. 5.1.9.17).
5.1.9.16.4 waterline_table для definable_object (как defined_for)
Примечание - Атрибут унаследован из супертипа (см. 5.1.4.1).
5.1.9.16.5 waterline_table для global_id (как id)
Примечание - Атрибут унаследован из супертипа (см. 5.1.4.1).
5.1.9.16.6 waterline_table для derived_unit (как local_units)
Примечание - Атрибут унаследован из супертипа (см. 5.1.4.1).
5.1.9.16.7 waterline_table для named_unit (как local_units)
Примечание - Атрибут унаследован из супертипа (см. 5.1.4.1).
5.1.9.16.8 waterline_table для vertical_position (как spacing_table_representations)
Примечание - Атрибут унаследован из супертипа (см. 5.1.9.15).
5.1.9.17.1 version_id
5.1.10 Функциональная единица offset_table_representations
5.1.10.1 Прикладной элемент OFFSET_POINT_TABLE_MODEL
5.1.10.1.1 offset_point_table_type
5.1.10.1.2 offset_point_table_model для section_of_offset_point_table (как offset_point_table_sections)
5.1.10.2.1 moulded_form_representation_id
Примечание - Атрибут унаследован из супертипа Moulded_form_shape_representation (см. 5.1.14.8)
5.1.10.2.2 offset_table_shape_representation для offset_point_table_model (как items)
5.1.10.2.3 offset_table_shape_representation для symmetry (как moulded_form_symmetry)
Примечание - Атрибут унаследован из супертипа Moulded_form_shape_representation (см. 5.1.14.8)
5.1.10.3 Прикладной элемент SECTION_OF_OFFSET_POINT_TABLE
5.1.10.3.1 section_identifier
5.1.10.3.2 section_of_offset_point_table для offset_point_table_model (как for_table)
Примечание - Атрибут является обратным отношением для атрибута Offset_point_table_model attribute объекта offset_point_table_sections (см. 5.1.10.1.2).
5.1.10.3.3 section_of_offset_point_table для ship_point (как section_points)
5.1.11 Функциональная единица ship_design_parameter
5.1.11.1.1 appendage_breadth
5.1.11.1.2 appendage_depth
5.1.11.1.3 appendage_length
5.1.11.1.4 description
Примечание - Атрибут унаследован из супертипа Versionable_object (см. 5.1.9.17).
5.1.11.1.7 type_of_appendage
5.1.11.1.8 usr_def_appendage_type
5.1.11.1.9 version_id
Примечание - Атрибут унаследован из супертипа Versionable_object (см. 5.1.9.17).
5.1.11.1.10 appendage_moulded_form_design_parameter для moulded_form (как defined_for)
Примечание - Атрибут унаследован из супертипа Moulded_form_characteristics_definition (см. 5.1.11.7).
5.1.11.1.11 appendage_moulded_form_design_parameter для global_id (как id)
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1).
5.1.11.1.12 appendage_moulded_form_design_parameter для derived_unit (как local_units)
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1).
5.1.11.1.13 appendage_moulded_form_design_parameter для named_unit (как local_units)
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1).
5.1.11.2.1 aft_end_of_flat_of_bottom
5.1.11.2.2 bilge_radius
5.1.11.2.3 description
Примечание - Атрибут унаследован из супертипа Versionable_object (см. 5.1.9.17).
5.1.11.2.4 flat_of_bottom_breadth
5.1.11.2.5 front_end_of_flat_of_bottom
5.1.11.2.6 length_of_flat_of_bottom
5.1.11.2.9 rake_of_keel
5.1.11.2.10 rise_of_floor
5.1.11.2.11 version_id
Примечание - Атрибут унаследован из супертипа Versionable_object (см. 5.1.9.17).
5.1.11.2.12 bottom_moulded_form_design_parameter для moulded_form (как defined_for)
Примечание - Атрибут унаследован из супертипа Moulded_form_characteristics_definition (см. 5.1.11.7).
5.1.11.2.13 bottom_moulded_form_design_parameter для global_id (как id)
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1) через супертип Moulded_form_characteristics_definition (см. 5.1.11.7).
5.1.11.2.14 bottom_moulded_form_design_parameter для derived_unit (как local_units)
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1) через супертип Moulded_form_characteristics_definition (см. 5.1.11.7).
5.1.11.2.15 bottom_moulded_form_design_parameter для named_unit (как local_units)
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1) через супертип Moulded_form_characteristics_definition (см. 5.1.11.7).
5.1.11.3.1 bulb_breadth
5.1.11.3.2 bulb_breadth_pp
5.1.11.3.3 bulb_depth
5.1.11.3.4 bulb_depth_pp
5.1.11.3.5 bulb_frame_section_area_at_pp
5.1.11.3.6 bulb_length
5.1.11.3.7 bulb_length_from_pp
5.1.11.3.8 bulb_location
5.1.11.3.9 description
Примечание - Атрибут унаследован из супертипа Versionable_object (см. 5.1.9.17).
5.1.11.3.12 version_id
Примечание - Атрибут унаследован из супертипа Versionable_object (см. 5.1.9.17).
5.1.11.3.13 bulb_moulded_form_design_parameter для moulded_form (как defined_for)
Примечание - Атрибут унаследован из супертипа Moulded_form_characteristics_definition (см. 5.1.11.7).
5.1.11.3.14 bulb_moulded_form_design_parameter для global_id (как id)
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1) через супертип Moulded_form_characteristics_definition (см. 5.1.11.7).
5.1.11.3.15 bulb_moulded_form_design_parameter для derived_unit (как local_units)
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1) через супертип Moulded_form_characteristics_definition (см. 5.1.11.7).
5.1.11.3.16 bulb_moulded_form_design_parameter для named_unit (как local_units)
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1) через супертип Moulded_form_characteristics_definition (см. 5.1.11.7).
5.1.11.4.1 camber
5.1.11.4.2 description
Примечание - Атрибут унаследован из супертипа Versionable_object (см. 5.1.9.17).
5.1.11.4.5 sheer_at_AP
5.1.11.4.6 sheer_at_FP
5.1.11.4.7 version_id
Примечание - Атрибут унаследован из супертипа Versionable_object (см. 5.1.9.17).
5.1.11.4.8 deck_moulded_form_design_parameter для moulded_form (как defined_for)
Примечание - Атрибут унаследован из супертипа Moulded_form_characteristics_definition (см. 5.1.11.7).
5.1.11.4.9 deck_moulded_form_design_parameter для global_id (как id)
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1) через супертип Moulded_form_characteristics_definition (см. 5.1.11.7).
5.1.11.4.10 deck_moulded_form_design_parameter для derived_unit (как local_units)
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1) через супертип Moulded_form_characteristics_definition (см. 5.1.11.7).
5.1.11.4.11 deck_moulded_form_design_parameter для named_unit (как local_units)
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1) через супертип Moulded_form_characteristics_definition (см. 5.1.11.7).
5.1.11.5.1 aft_end_of_flat_of_side
5.1.11.5.2 aft_end_of_parallel_midbody_at_design_draught
5.1.11.5.3 block_coefficient
5.1.11.5.4 description
Примечание - Атрибут унаследован из супертипа Versionable_object (см. 5.1.9.17).
5.1.11.5.5 front_end_of_flat_of_side
5.1.11.5.6 front_end_of_parallel_midbody_at_design_draught
5.1.11.5.7 gunwale_radius
5.1.11.5.8 hull_breadth
5.1.11.5.9 hull_depth
5.1.11.5.10 hull_design_draught
5.1.11.5.11 hull_length_pp
5.1.11.5.12 hull_length_waterline
5.1.11.5.13 max_frame_section_area_location
5.1.11.5.14 max_wetted_frame_section_area
5.1.11.5.17 prismatic_coefficient
5.1.11.5.18 version_id
Примечание - Атрибут унаследован из супертипа Versionable_object (см. 5.1.9.17).
5.1.11.5.19 waterline_angle_of_entrance_at_bow
5.1.11.5.20 waterline_angle_of_entrance_at_stern
5.1.11.5.21 waterplane_coefficient
5.1.11.5.22 hull_moulded_form_design_parameter для moulded_form (как defined_for)
Примечание - Атрибут унаследован из супертипа Moulded_form_characteristics_definition (см. 5.1.11.7).
5.1.11.5.23 hull_moulded_form_design_parameter для global_id (как id)
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1) через супертип Moulded_form_characteristics_definition (см. 5.1.11.7).
5.1.11.5.24 hull_moulded_form_design_parameter для derived_unit (как local_units)
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1) через супертип Moulded_form_characteristics_definition (см. 5.1.11.7).
5.1.11.5.25 hull_moulded_form_design_parameter для named_unit (как local_units)
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1) через супертип Moulded_form_characteristics_definition (см. 5.1.11.7).
5.1.11.5.26 hull_moulded_form_design_parameter для midship_tumble (как midship_tumble_data)
5.1.11.6 Прикладной элемент MIDSHIP_TUMBLE
5.1.11.6.1 tumble_in_at_side
5.1.11.6.2 tumble_in_at_top
5.1.11.6.3 tumble_out_at_bottom
5.1.11.6.4 tumble_out_at_side
Примечание - Атрибут унаследован из супертипа Versionable_object (см. 5.1.9.17).
5.1.11.7.2 moulded_form_displacement
5.1.11.7.3 moulded_form_outer_surface
Примечание - Атрибут унаследован из супертипа Versionable_object (см. 5.1.9.17).
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1).
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1).
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1).
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1).
5.1.11.8 Прикладной элемент PROPELLER_LOCATION
5.1.11.8.1 shaft_line_inclination_x
5.1.11.8.2 shaft_line_inclination_y
5.1.11.8.3 propeller_location для centre_location (как propeller_location)
5.1.11.8.4 propeller_location для centre_location (как shaft_line_location)
5.1.11.9.1 blade_mean_height
5.1.11.9.2 chord_length_at_0_7_radius
5.1.11.9.3 description
Примечание - Атрибут унаследован из супертипа Versionable_object (см. 5.1.9.17).
5.1.11.9.4 design_sense_of_rotation
5.1.11.9.5 expanded_area_ratio
5.1.11.9.6 hub_diameter_ratio
5.1.11.9.9 nominal_design_pitch_ratio
5.1.11.9.10 number_of_propeller_blades
5.1.11.9.11 propeller_diameter
5.1.11.9.12 rake
5.1.11.9.13 skew
5.1.11.9.14 thickness_at_0_7_radius
5.1.11.9.15 type_of_propeller_blades
5.1.11.9.16 type_of_propulsion
5.1.11.9.17 version_id
Примечание - Атрибут унаследован из супертипа Versionable_object (см. 5.1.9.17).
5.1.11.9.18 propeller_moulded_form_design_parameter для moulded_form (как defined_for)
Примечание - Атрибут унаследован из супертипа Moulded_form_characteristics_definition (см. 5.1.11.7).
5.1.11.9.19 propeller_moulded_form_design_parameter для global_id (как id)
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1) через супертип Moulded_form_characteristics_definition (см. 5.1.11.7).
5.1.11.9.20 propeller_moulded_form_design_parameter для derived_unit (как local_units)
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1) через супертип Moulded_form_characteristics_definition (см. 5.1.11.7).
5.1.11.9.21 propeller_moulded_form_design_parameter для named_unit (как local_units)
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1) через супертип Moulded_form_characteristics_definition (см. 5.1.11.7).
5.1.11.9.22 propeller_moulded_form_design_parameter для propeller_location (как location_of_the_propeller_at_the_ship_hull)
5.1.11.10.1 description
Примечание - Атрибут унаследован из супертипа Versionable_object (см. 5.1.9.17).
5.1.11.10.4 projected_rudder_area
5.1.11.10.5 rudder_height
5.1.11.10.6 rudder_length
5.1.11.10.7 rudder_mean_height
5.1.11.10.8 rudder_mean_length
5.1.11.10.9 rudder_thickness
5.1.11.10.10 type_of_the_rudder
5.1.11.10.11 version_id
Примечание - Атрибут унаследован из супертипа Versionable_object (см. 5.1.9.17).
5.1.11.10.12 rudder_moulded_form_design_parameter для moulded_form (как defined_for)
Примечание - Атрибут унаследован из супертипа Moulded_form_characteristics_definition (см. 5.1.11.7)
5.1.11.10.13 rudder_moulded_form_design_parameter для global_id (как id)
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1) через супертип Moulded_form_characteristics_definition (см. 5.1.11.7).
5.1.11.10.14 rudder_moulded_form_design_parameter для derived_unit (как local_units)
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1) через супертип Moulded_form_characteristics_definition (см. 5.1.11.7).
5.1.11.10.15 rudder_moulded_form_design_parameter для named_unit (как local_units)
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1) через супертип Moulded_form_characteristics_definition (см. 5.1.11.7).
5.1.11.10.16 rudder_moulded_form_design_parameter для centre_location (как rudder_location)
Примечание - Атрибут унаследован из супертипа Versionable_object (см. 5.1.9.17).
5.1.11.11.2 overall_breadth
5.1.11.11.3 overall_depth
5.1.11.11.4 overall_length
5.1.11.11.5 stem_overhang
5.1.11.11.6 stern_overhang
Примечание - Атрибут унаследован из супертипа Versionable_object (см. 5.1.9.17).
Примечание - Атрибут унаследован из супертипа General_characteristics_definition (см. 5.1.4.4).
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1) через супертип General_characteristics_definition (см. 5.1.4.4).
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1) через супертип General_characteristics_definition (см. 5.1.4.4).
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1) через супертип General_characteristics_definition (см. 5.1.4.4).
5.1.11.12.1 description
Примечание - Атрибут унаследован из супертипа Versionable_object (см. 5.1.9.17).
5.1.11.12.4 thruster_location
5.1.11.12.5 thruster_tunnel_diameter
5.1.11.12.6 thruster_tunnel_max_length
5.1.11.12.7 thruster_tunnel_min_length
5.1.11.12.8 version_id
Примечание - Атрибут унаследован из супертипа Versionable_object (см. 5.1.9.17).
5.1.11.12.9 thruster_moulded_form_design_parameter для moulded_form (как defined_for)
Примечание - Атрибут унаследован из супертипа Moulded_form_characteristics_definition (см. 5.1.11.7).
5.1.11.12.10 thruster_moulded_form_design_parameter для centre_location (как geometric_thruster_location)
5.1.11.12.11 thruster_moulded_form_design_parameter для global_id (как id)
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1) через супертип Moulded_form_characteristics_definition (см. 5.1.11.7).
5.1.11.12.12 thruster_moulded_form_design_parameter для derived_unit (как local_units)
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1) через супертип Moulded_form_characteristics_definition (см. 5.1.11.7).
5.1.11.12.13 thruster_moulded_form_design_parameter для named_unit (как local_units)
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1) через супертип Moulded_form_characteristics_definition (см. 5.1.11.7).
5.1.11.12.14 thruster_moulded_form_design_parameter для propeller_moulded_form_design_parameter (как thruster_propeller_parameter)
5.1.12 Функциональная единица ship_general_characteristics
5.1.12.1.1 description
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1).
5.1.12.1.2 has_type
5.1.12.1.3 user_def_function
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1).
5.1.12.1.4 version_id
Примечание - Атрибут унаследован из супертипа Versionable_object (см. 5.1.9.17).
5.1.12.1.5 carrier для ship (как defined_for)
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1).
5.1.12.1.6 carrier для global_id (как id)
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1).
5.1.12.2.1 class_number
Примечание - Атрибут унаследован из супертипа Versionable_object (см. 5.1.9.17).
Примечание - Атрибут унаследован из супертипа Versionable_object (см. 5.1.9.17).
Примечание - Атрибут унаследован из супертипа General_characteristics_definition (см. 5.1.4.4).
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1).
5.1.12.2.6 class_and_statutory_designation для class_notation (как the_class)
5.1.12.2.7 class_and_statutory_designation для regulation (как the_statutory)
5.1.12.3 Прикладной элемент CLASS_NOTATION
5.1.12.3.1 approval_required_for_heavy_cargo
5.1.12.3.2 approval_required_for_oil_cargo
5.1.12.3.3 approval_required_loading_unloading_aground
5.1.12.3.4 approval required loading unloading grabs
5.1.12.3.5 class_notations_hull
5.1.12.3.6 class_notations_machinery
5.1.12.3.7 class_notations_machinery
5.1.12.3.8 ice_class_notation
5.1.12.3.9 service_area
5.1.12.3.10 service_factor
5.1.12.4.1 block_coefficient_class
Примечание - Атрибут унаследован из супертипа Versionable_object (см. 5.1.9.17).
5.1.12.4.3 design_speed_ahead
5.1.12.4.4 design_speed_astern
5.1.12.4.5 length_class
5.1.12.4.6 length_solas
5.1.12.4.7 scantlings_draught
Примечание - Атрибут унаследован из супертипа Versionable_object (см. 5.1.9.17).
Примечание - Атрибут унаследован из супертипа General_characteristics_definition (см. 5.1.4.4).
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1).
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1).
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1).
5.1.12.5.1 description
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1).
5.1.12.5.2 has_type
5.1.12.5.3 user_def_function
Примечание - Атрибут унаследован из супертипа Shiptype (см. 5.1.12.11).
5.1.12.5.4 version_id
Примечание - Атрибут унаследован из супертипа Versionable_object (см. 5.1.9.17).
5.1.12.5.5 navy_ship для ship (как defined_for)
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1).
5.1.12.5.6 navy_ship для global_id (как id)
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1).
Примечание - Атрибут унаследован из супертипа Versionable_object (см. 5.1.9.17).
5.1.12.6.2 managing_company
5.1.12.6.3 ordering_company
5.1.12.6.4 owner_approval
5.1.12.6.5 owning_company
Примечание - Атрибут унаследован из супертипа Versionable_object (см. 5.1.9.17).
Примечание - Атрибут унаследован из супертипа General_characteristics_definition (см. 5.1.4.4).
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1).
5.1.12.7.1 block_coefficient
Примечание - Атрибут унаследован из супертипа Versionable_object (см. 5.1.9.17).
5.1.12.7.3 design_deadweight
5.1.12.7.4 design_draught
5.1.12.7.5 length_between_perpendiculars
5.1.12.7.6 max_draught_at_ap
5.1.12.7.7 max_draught_at_fp
5.1.12.7.8 min_draught_at_ap
5.1.12.7.9 min_draught_at_fp
5.1.12.7.10 moulded_breadth
5.1.12.7.11 moulded_depth
Примечание - Атрибут унаследован из супертипа Versionable_object (см. 5.1.9.17).
Примечание - Атрибут унаследован из супертипа General_characteristics_definition (см. 5.1.4.4).
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1).
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1).
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1).
5.1.12.8 Прикладной элемент REGULATION
5.1.12.8.1 regulation для external_reference (как international_regulations)
5.1.12.8.2 regulation для external_reference (как national_regulations)
5.1.12.8.3 regulation для external_reference (как standards)
5.1.12.9.1 description
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1).
5.1.12.9.2 has_type
5.1.12.9.3 user_def_function
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1).
5.1.12.9.4 version_id
Примечание - Атрибут унаследован из супертипа Versionable_object (см. 5.1.9.17).
5.1.12.9.5 research_ship для ship (как defined_for)
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1).
5.1.12.9.6 research_ship для global_id (как id)
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1).
5.1.12.10.1 call_sign
Примечание - Атрибут унаследован из супертипа Versionable_object (см. 5.1.9.17).
5.1.12.10.3 flag_state
5.1.12.10.4 port_of_registration
5.1.12.10.5 ship_identification
5.1.12.10.6 ship_name
Примечание - Атрибут унаследован из супертипа Versionable_object (см. 5.1.9.17).
Примечание - Атрибут унаследован из супертипа General_characteristics_definition (см. 5.1.4.4).
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1).
Примечание - Атрибут унаследован из супертипа Function_definition (см. 5.1.4.3).
Примечание - Атрибут унаследован из супертипа Versionable_object (см. 5.1.9.17).
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1).
Примечание - Атрибут унаследован из супертипа Versionable_object (см. 5.1.9.17).
5.1.12.12.2 role
5.1.12.12.3 shipyard
5.1.12.12.4 shipyard_new_building_id
5.1.12.12.5 shipyard_project_name
Примечание - Атрибут унаследован из супертипа Versionable_object (см. 5.1.9.17).
Примечание - Атрибут унаследован из супертипа General_characteristics_definition (см. 5.1.4.4).
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1).
5.1.12.13.1 description
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1).
5.1.12.13.2 has_type
5.1.12.13.3 user_def_function
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1).
5.1.12.13.4 version_id
Примечание - Атрибут унаследован из супертипа Versionable_object (см. 5.1.9.17).
5.1.12.13.5 working_ship для ship (как defined_for)
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1).
5.1.12.13.6 working_ship для global_id (как id)
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1).
5.1.13 Функциональная единица ship_measures
5.1.13.1 Прикладной элемент CENTRE_LOCATION
5.1.13.1.1 longitudinal_location
5.1.13.1.2 transversal_location
5.1.13.1.3 vertical_location
Примечание - Дополнительное описание использования параметров и единиц приведено в L.7.
5.1.13.3 Прикладной элемент NAMED_UNIT
Примечание - Дополнительное описание использования параметров и единиц приведено в L.7.
5.1.13.4 Прикладной элемент PRECISION
5.1.13.4.1 minimum_point_spacing
5.1.14 Функциональная единица ship_moulded_form
Примечание - Атрибут унаследован из супертипа Item (см. 5.1.8.3).
Примечание - Атрибут унаследован из супертипа Item (см. 5.1.8.3).
Примечание - Атрибут унаследован из супертипа Item (см. 5.1.8.3).
Примечание - Атрибут унаследован из супертипа Item (см. 5.1.8.3).
5.1.14.2 Прикладной элемент MOULDED_FORM_BOUNDARY_RELATIONSHIP
5.1.14.2.1 description
Примечание - Атрибут унаследован из супертипа Moulded_form_relationship (см. 5.1.14.5).
5.1.14.2.2 version_id
Примечание - Атрибут унаследован из супертипа Moulded_form_relationship (см. 5.1.14.5).
5.1.14.2.3 moulded_form_boundary_relationship для external_instance_reference (как external_item_1)
Примечание - Атрибут унаследован из супертипа Moulded_form_relationship (см. 5.1.14.5).
5.1.14.2.4 moulded_form_boundary_relationship для external_instance_reference (как external_item_2)
Примечание - Атрибут унаследован из супертипа Moulded_form_relationship (см. 5.1.14.5).
5.1.14.2.5 moulded_form_boundary_relationship для global_id (как id)
Примечание - Атрибут унаследован из супертипа Moulded_form_relationship (см. 5.1.14.5).
5.1.14.2.6 moulded_form_boundary_relationship для moulded_form (как item_1)
Примечание - Атрибут унаследован из супертипа Moulded_form_relationship (см. 5.1.14.5).
5.1.14.2.7 moulded_form_boundary_relationship для moulded_form (как item_2)
Примечание - Атрибут унаследован из супертипа Moulded_form_relationship (см. 5.1.14.5).
Примечание - Атрибут унаследован из супертипа Versionable_object (см. 5.1.9.17).
Примечание - Атрибут унаследован из супертипа Versionable_object (см. 5.1.9.17).
5.1.14.3.3 moulded_form_design_definition для moulded_form_boundary_relationship (как borders)
5.1.14.3.4 moulded_form_design_definition для plane (как borders)
5.1.14.3.5 moulded_form_design_definition для ship_curve (как borders)
5.1.14.3.6 moulded_form_design_definition для spacing_position (как borders)
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1) через супертип Design_definition (см. 5.1.4.2).
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1) через супертип Design_definition (см. 5.1.4.2).
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1) через супертип Design_definition (см. 5.1.4.2).
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1) через супертип Design_definition (см. 5.1.4.2).
5.1.14.3.11 moulded_form_design_definition для edge_based_wireframe_shape (как moulded_surface)
5.1.14.3.12 moulded_form_design_definition для moulded_form_shape_representation (как moulded_surface)
5.1.14.3.13 moulded_form_design_definition для non_manifold_surface_shape (как moulded_surface)
5.1.14.3.14 moulded_form_design_definition для ship_surface (как moulded_surface)
Примечание - Атрибут унаследован из супертипа Design_definition (см. 5.1.4.2).
Примечание - Атрибут унаследован из супертипа Design_definition (см. 5.1.4.2).
5.1.14.3.17 status
Примечание - Атрибут унаследован из супертипа Versionable_object (см. 5.1.9.17) через супертип Functional_definition (см. 5.1.4.3), который наследуется из супертипа Definition (см. 5.1.4.1).
5.1.14.4.2 the_function
Примечание - Атрибут унаследован из супертипа Functional_definition (см. 5.1.4.3).
Примечание - Атрибут унаследован из супертипа Versionable_object (см. 5.1.9.17) через супертип Functional_definition (см. 5.1.4.3), который наследуется от супертипа Definition (см. 5.1.4.1).
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1) через супертип Functional_definition (см. 5.1.4.3).
Примечание - Атрибут унаследован из супертипа Definition (см. 5.1.4.1) через супертип Functional_definition (см. 5.1.4.3).
Примечание - Атрибут унаследован из супертипа Versionable_object (см. 5.1.9.17) через Item_relationship (см. 5.1.8.4).
Примечание - Атрибут унаследован из супертипа Item_relationship (см. 5.1.8.4).
Примечание - Атрибут унаследован из супертипа Item_relationship (см. 5.1.8.4).
Примечание - Атрибут унаследован из супертипа Item_relationship (см. 5.1.8.4).
Примечание - Атрибут унаследован из супертипа Item_relationship (см. 5.1.8.4).
Примечание - Атрибут унаследован из супертипа Item_relationship (см. 5.1.8.4).
Примечание - Атрибут унаследован из супертипа Item_relationship (см. 5.1.8.4).
5.1.14.6 Прикладной элемент MOULDED_FORM_REPRESENTATION_ITEM
5.1.14.7 Прикладной элемент MOULDED_FORM_REPRESENTATION_RELATIONSHIP
5.1.14.7.1 description
5.1.14.7.2 id
5.1.14.7.3 moulded_form_representation_relationship для moulded_form_representation (как rep_1)
5.1.14.7.4 moulded_form_representation_relationship для moulded_form_representation (как rep_2)
5.1.14.9.1 planar_symmetry для plane (как the_symmetry_plane)
5.1.14.10.1 rotational_symmetry для axis1_placement (как the_rotational_axis)
Примечание - Атрибут унаследован из супертипа Item (см. 5.1.8.3).
Примечание - Атрибут унаследован из супертипа Item (см. 5.1.8.3).
Примечание - Атрибут унаследован из супертипа Item_structure (см. 5.1.8.5).
Примечание - Атрибут унаследован из супертипа Item (см. 5.1.8.3).
Примечание - Атрибут унаследован из супертипа Item_structure (см. 5.1.8.5).
Примечание - Атрибут унаследован из супертипа Item_structure (см. 5.1.8.5).
Примечание - Атрибут унаследован из супертипа Item_structure (см. 5.1.8.5).
Примечание - Атрибут унаследован из супертипа Item_structure (см. 5.1.8.5).
Примечание - Атрибут унаследован из супертипа Item (см. 5.1.8.3).
5.1.14.12 Прикладной элемент SHIP_MOULDED_FORM_REVISION
5.1.14.12.1 description
Примечание - Атрибут унаследован из супертипа Versionable_object (см. 5.1.9.17) через супертип Revision (см. 5.1.3.14), который наследуется из супертипа Revision (см. 5.1.3.13).
5.1.14.12.2 name
Примечание - Атрибут унаследован из супертипа Revision (см. 5.1.3.14), который наследуется из супертипа Revision (см. 5.1.3.13).
5.1.14.12.3 version_id
Примечание - Атрибут унаследован из супертипа Versionable_object (см. 5.1.9.17) через супертип Revision (см. 5.1.3.14), который наследуется из супертипа Revision (см. 5.1.3.13).
5.1.14.12.4 ship_moulded_form_revision для ship_moulded_form (как context_of_revision)
Примечание - Атрибут унаследован из супертипа Revision_with_context (см. 5.1.3.14).
5.1.14.12.5 ship_moulded_form_revision для moulded_form_design_definition (как members)
Примечание - Атрибут унаследован из супертипа Revision (см. 5.1.3.14), который наследуется из супертипа Revision (см. 5.1.3.13).
5.1.14.13 Прикладной элемент SYMMETRY
5.1.15 Функциональная единица surface_representations
5.1.15.1 Прикладной элемент NON_MANIFOLD_SURFACE_SHAPE
5.1.15.2.1 moulded_form_representation_id
Примечание - Атрибут унаследован из супертипа Moulded_form_shape_representation (см. 5.1.14.8)
5.1.15.2.2 surface_shape_representation для face_based_surface_model (как items)
5.1.15.2.3 surface_shape_representation для symmetry (как moulded_form_symmetry)
Примечание - Атрибут унаследован из супертипа Moulded_form_shape_representation (см. 5.1.14.8).
5.1.15.3 SURFACE_WITH_IDENTIFIER
5.1.16.1 Прикладной элемент DGE_BASED_WIREFRAME_SHAPE
5.1.16.2 Прикладной элемент KNOT
5.1.16.2.1 knot для ship_curve (как intersecting_ship_curves)
5.1.16.2.2 knot для vector (как tangent_information)
5.1.16.3 Прикладной элемент SHIP_CURVE_SEGMENT
5.1.16.3.1 ship_curve_segment для ship_curve (как part_of_ship_curve)
5.1.16.4.1 moulded_form_representation_id
Примечание - Атрибут унаследован из супертипа Moulded_form_shape_representation (см. 5.1.14.8).
5.1.16.4.2 wireframe_shape_representation для ship_curve (как items)
5.1.16.4.3 wireframe_shape_representation для symmetry (как moulded_form_symmetry)
Примечание - Атрибут унаследован из супертипа Moulded_form_shape_representation (см. 5.1.14.8).
В данном разделе определена EXPRESS-схема, использующая элементы из интегрированных ресурсов и AIC <1> и содержащая типы, специализированные объекты, правила и функции, относящиеся к настоящему стандарту. В данном разделе также определены модификации текстового материала для конструктивов, импортируемых из других интегрированных ресурсов и AIC. Определения и фрагменты языка EXPRESS, представленные в интегрированных ресурсах для конструктивов, используемых в ПИМ, могут включать в себя элементы списка выбора и подтипы, не импортируемые в ПИМ. Требования, установленные в интегрированных ресурсах, относящиеся к элементам списка выбора и подтипам, применяются исключительно к тем элементам, которые импортируются в ПИМ.
--------------------------------
<1> Прикладные интерпретированные конструктивы.
Примечание - Указанные выше схемы приведены в следующих частях ИСО 10303:
5.2.1 Фундаментальные понятия и допущения
5.2.2 Типы теоретических обводов судна
5.2.2.1 Тип action_item
Тип action_item определяет объекты product, product_definition, property_definition, product_definition_relationship, product_definition_shape, product_related_product_category, action_request_solution и executed_action, которым может быть присвоен объект action.
EXPRESS-спецификация:
*)
TYPE action_item = SELECT
(product,
product_definition,
property_definition,
product_definition_relationship,
product_definition_shape,
product_related_product_category,
action_request_solution,
executed_action);
END_TYPE;
(*
5.2.2.2 Тип action_request_item
Тип action_request_item определяет объекты action и executed_action, которым может быть присвоен объект action_request.
*)
TYPE action_request_item = SELECT
(action,
executed_action);
END_TYPE;
(*
5.2.2.3 Тип approval_item
Тип approval_item определяет объекты product_definition, product_definition_shape, property_definition и product_related_product_category, которым может быть присвоен объект approval.
EXPRESS-спецификация:
*)
TYPE approval_item = SELECT
(product_definition,
product_definition_shape,
property_definition,
product_related_product_category);
END_TYPE;
(*
Тип classification_item идентифицирует action, action_request_solution, applied_action_request_assignment, approval, axis2_placement_3d, compound_representation_item, external_source, document, document_reference, edge_curve, executed_action, group, identification_assignment_relationship, measure_with_unit, product, product_definition, product_definition_relationship, product_definition_shape, product_related_product_category, property_definition, property_definition_representation, representation, representation_item, representation_relationship, shape_representation, surface, vertex_point и versioned_action_request, для которых может быть назначена классификация.
EXPRESS-спецификация:
*)
TYPE classification item = SELECT
(action,
action_request_solution,
applied_action_request_assignment,
approval,
axis2_placement_3d,
compound_representation_item,
document,
document_reference,
edge_curve,
executed_action,
external_source,
group,
identification_assignment_relationship,
measure_with_unit,
product,
product_definition,
product_definition_relationship,
product_definition_shape,
product_related_product_category,
property_definition,
property_definition_representation,
representation,
representation_item,
representation_relationship,
shape_representation,
surface,
vertex_point,
versioned_action_request);
END_TYPE;
(*
5.2.2.5 Тип date_and_time_item
Объект date_and_time_item определяет объекты action, action_request_solution, product_definition, executed_action и versioned_action_request, которым может быть присвоена дата.
EXPRESS-спецификация:
*)
TYPE date_and_time_item = SELECT
(action_request_solution,
executed_action,
versioned_action_request,
product_definition,
action);
END_TYPE;
(*
5.2.2.6 Тип document_reference_item
Тип document_reference_item определяет объекты action, product, property_definition или product_definition, которым может присваиваться объект document.
EXPRESS-спецификация:
*)
TYPE document_reference_item = SELECT
(action, product,
property_definition,
product_definition);
END_TYPE;
(*
5.2.2.7 Тип effectivity_item
Тип effectivity_item определяет объекты product_definition, property_definition, product_definition_shape и product_related_product_category, которым может присваиваться объект effectivity.
EXPRESS-спецификация:
*)
TYPE effectivity_item = SELECT
(product_definition,
property_definition,
product_definition_shape,
product_related_product_category);
END_TYPE;
(*
5.2.2.8 Тип external_identification_item
Тип external_identification_item определяет объекты action, document, product, product_definition, product_definition_relationship и property_definition, которым может присваиваться объект external_identification.
EXPRESS-спецификация:
*)
TYPE external_identification_item = SELECT
(action,
document,
product,
product_definition,
product_definition_relationship,
property_definition);
END_TYPE;
(*
5.2.2.9 Тип group_item
Тип group_item определяет объекты approval, identification_assignment_relationship, product_definition, product_definition_relationship и shape_aspect, которым может присваиваться объект group.
EXPRESS-спецификация:
*)
TYPE group_item = SELECT
(approval,
identification_assignment_relationship,
product_definition,
product_definition_relationship);
END_TYPE;
(*
Тип identification_item идентифицирует action, action_request_solution, executed_action, property_definition, product_definition_shape, group, product, product_definition, product_definition_relationship, product_related_product_category, compound_representation_item, versioned_action_request, surface и document, которым может быть назначена идентификация.
EXPRESS-спецификация:
*)
TYPE identification_item = SELECT
(action,
action_request_solution,
compound_representation_item,
document,
executed_action,
group,
product,
product_definition,
product_definition_relationship,
product_definition_shape,
product_related_product_category,
property_definition,
surface,
versioned_action_request);
END_TYPE;
(*
5.2.2.11 Тип organization_item
Тип organization_item определяет объекты document, product_definition, property_definition, которым может определяться объект organization.
EXPRESS-спецификация:
*)
TYPE organization_item = SELECT (document,
product_definition,
property_definition);
END_TYPE;
(*
5.2.2.12 Тип person_item
Тип person_item определяет объект document, для которого может определяться объект person.
EXPRESS-спецификация:
*)
TYPE person_item = SELECT
(document);
END_TYPE;
(*
5.2.2.13 Тип person_and_organization_item
Тип person_and_organization_item задает объект person_and_organization для объектов action, action_request_solution, executed_action, document и versioned_action_request, для которого может быть идентифицирован объект person_and_organization.
EXPRESS-спецификация:
*)
TYPE person_and_organization_item = SELECT
(action_request_solution,
document,
executed_action,
versioned_action_request,
action);
END_TYPE;
(*
5.2.3 Объекты теоретических обводов судна
5.2.3.1 Определения объектов теоретических обводов судна
5.2.3.1.1 Объект applied_action_assignment
Объект applied_action_assignment задает те объекты action_items, которым присваивается объект action_assignment.
EXPRESS-спецификация:
*)
ENTITY applied_action_assignment
SUBTYPE OF (action_assignment);
items : SET [1:?] OF action_item;
END_ENTITY;
(*
Определение атрибута:
items: набор объектов action_item, к которым применяется конкретный объект action_assignment.
5.2.3.1.2 Объект applied_action_request_assignment
Объект applied_action_request_assignment задает те объекты action_request_items, которым присваивается привязанный объект action_request_assignment.
EXPRESS-спецификация:
*)
ENTITY applied_action_request_assignment
SUBTYPE OF (action_request_assignment);
items : SET [1:?] OF action_request_item;
END_ENTITY;
(*
Определение атрибута:
items: набор объектов action_request_item, для которых применяется конкретный объект action_request_assignment.
Соответствующие глобальные правила:
Для объекта applied_action_request_assignment применяется следующее глобальное правило, определенное в настоящем стандарте:
- change_impact_with_versionable_object_change_event (см. 5.2.4.26).
5.2.3.1.3 Объект applied_approval_assignment
Объект applied_approval_assignment задает те объекты approval_items, которым присваивается объект approval_assignment.
EXPRESS-спецификация:
*)
ENTITY applied_approval_assignment
SUBTYPE OF (approval_assignment);
items : SET [1:?] OF approval_item;
WHERE
wr1: NOT((SELF\approval_assignment.role.name = 'proposed alternative')) OR
(SIZEOF(QUERY( app <*
USEDIN (SELF\approval_assignment.assigned_approval,
'SHIP_MOULDED_FORM_SCHEMA.APPROVAL_ASSIGNMENT.ASSIGNED_APPROVAL') |
('SHIP_MOULDED_FORM_SCHEMA.APPLIED_APPROVAL_ASSIGNMENT'
IN TYPEOF (app)) AND
(app\approval_assignment.role.name='subject')))=1);
END_ENTITY;
(*
Определение атрибута:
items: набор объектов approval_item, к которым применяется конкретный объект approval_assignment.
Формальное высказывание:
WR1: Каждый объект applied_approval_assignment с атрибутом role, определяющим объект object_role со значением атрибута name, равным 'proposed alternative', должен указывать объект approval через атрибут assigned_approval. Этот объект approval должен быть указан другим объектом applied_approval_assignment через атрибут assigned_approval с атрибутом role, определяющим объект object_role со значением атрибута name, равным 'subject'.
Соответствующие глобальные правила:
Для объекта applied_approval_assignment применяется следующее глобальное правило, определенное в настоящем стандарте:
- approval_history_approves_same_definition (см. 5.2.4.9).
5.2.3.1.4 Объект applied_classification_assignment
Объект applied_classification_assignment задает те объекты classification_items, которым присваивается привязанный объект classification_assignment.
EXPRESS-спецификация:
*)
ENTITY applied_classification_assignment
SUBTYPE OF (classification_assignment);
items : SET [1:?] OF classification_item;
END_ENTITY;
(*
Определение атрибута:
items: набор объектов classification_item, к которым применяется конкретный объект classification_assignment.
Соответствующие глобальные правила:
Для объекта applied_classification_assignment применяются следующие глобальные правила, определенные в настоящем стандарте:
- action_request_solution_with_identification_assignment (см. 5.2.4.2);
- action_with_identification_assignment (см. 5.2.4.3);
- centre_location_compound_representation_has_specified_name (см. 5.2.4.25);
- class_and_statutory_designation_has_properties (см. 5.2.4.28);
- class_parameters_has_properties (см. 5.2.4.30);
- compound_representation_item_with_class_id_knot (см. 5.2.4.32);
- compound_representation_item_with_section_identifier (см. 5.2.4.33);
- compound_representation_item_with_hydrostatic_properties (см. 5.2.4.31);
- floating_position_compound_representation_with_name (см. 5.2.4.43);
- global_axis_placement_has_properties (см. 5.2.4.44);
- global_id_is_unique (см. 5.2.4.45);
- hull_moulded_form_design_parameter_with_class_references (см. 5.2.4.46);
- hydrostatic_properties_with_specified_class (см. 5.2.4.47);
- hydrostatic_property_with_specified_name (см. 5.2.4.48);
- offset_point_table_model_compound_representation_has_name (см. 5.2.4.54);
- principal_characteristics_has_properties (см. 5.2.4.55);
- product_definition_for_regulation (см. 5.2.4.64);
- product_definition_for_class_notation (см. 5.2.4.57);
- product_definition_for_owning_company (см. 5.2.4.62);
- product_definition_relationship_with_identification_assignment (см. 5.2.4.69);
- product_definition_shape_with_identification_assignment (см. 5.2.4.70);
- product_definition_for_call_sign (см. 5.2.4.56);
- product_definition_for_flag_state (см. 5.2.4.58);
- product_definition_for_port_of_registration (см. 5.2.4.63);
- product_definition_for_shipyard (см. 5.2.4.65);
- product_definition_for_managing_company (см. 5.2.4.60);
- product_definition_for_ordering_company (см. 5.2.4.61);
- product_definition_for_stability_definition (см. 5.2.4.66);
- product_definition_for_hydrostatic_definition_requires_reference (см. 5.2.4.59);
- product_definition_with_identification_assignment (см. 5.2.4.71);
- product_definition_relationship_related_to_class_moulded_form (см. 5.2.4.68);
- product_related_product_category_with_identification_assignment (см. 5.2.4.72);
- product_with_identification_assignment (см. 5.2.4.73);
- propeller_moulded_form_design_parameter_with_class_references (см. 5.2.4.74);
- property_definition_for_class_notation (см. 5.2.4.78);
- property_definition_for_rudder_moulded_form_design_parameter (см. 5.2.4.86);
- property_definition_for_moulded_form_function_parameters (см. 5.2.4.84);
- property_definition_for_local_coordinate_system_with_position (см. 5.2.4.83);
- property_definition_for_class_society (см. 5.2.4.79);
- property_definition_for_thruster_moulded_form_design_parameter (см. 5.2.4.87);
- property_definition_with_identification_assignment (см. 5.2.4.89);
- property_definition_for_deck_moulded_form_design_parameter (см. 5.2.4.80);
- property_definition_for_thruster_propeller_parameter (см. 5.2.4.88);
- property_definition_for_appendage_moulded_form_design_parameter (см. 5.2.4.75);
- property_definition_for_bottom_moulded_form_design_parameter (см. 5.2.4.76);
- property_definition_for_bulb_moulded_form_design_parameter (см. 5.2.4.77);
- property_definition_for_local_coordinate_system (см. 5.2.4.82);
- property_definition_of_propeller_moulded_form_design_parameter (см. 5.2.4.85);
- property_definition_for_hull_moulded_form_design_parameter (см. 5.2.4.81);
- representation_for_stability_table_restricted_by_class_id (см. 5.2.4.111);
- representation_for_offset_point_table_model_for_section (см. 5.2.4.105);
- representation_for_hydrostatic_table_restricted (см. 5.2.4.98);
- representation_for_midship_tumble_restricted_by_class_id (см. 5.2.4.102);
- representation_for_hydrostatic_table_restricted_by_class_id (см. 5.2.4.99);
- representation_for_propeller_location_restricted_by_class_id (см. 5.2.4.107);
- representation_for_offset_table_shape_representation_restricted (см. 5.2.4.106);
- representation_for_hydrostatic_table_constrained (см. 5.2.4.97);
- representation_for_stability_table_restricted (см. 5.2.4.110);
- representation_item_for_transformation_to_parent (см. 5.2.4.125);
- ship_curve_has_name (см. 5.2.4.135);
- ship_curve_segment_has_class (см. 5.2.4.136);
- ship_curve_with_spacing_position_has_class (см. 5.2.4.137);
- ship_designation_has_one_specified_names (см. 5.2.4.138);
- ship_overall_dimensions_has_properties (см. 5.2.4.140);
- ship_point_compound_representation_has_name (см. 5.2.4.141);
- ship_surface_compound_representation_has_name (см. 5.2.4.142);
- spacing_position_compound_representation_has_name (см. 5.2.4.143);
- spacing_position_with_offset_compound_representation_has_class (см. 5.2.4.144);
- spacing_position_with_offset_compound_representation_has_name (см. 5.2.4.145);
- stability_properties_for_floating_position_has_name (см. 5.2.4.147);
- stability_properties_for_floating_position_has_class (см. 5.2.4.146);
- stability_property_has_name (см. 5.2.4.148);
- valid_product_definition_for_class_moulded_form (см. 5.2.4.153);
- versioned_action_request_with_identification_assignment (см. 5.2.4.165).
5.2.3.1.5 Объект applied_date_and_time_assignment
Объект applied_date_and_time_assignment задает те объекты date_and_time_items, которым присваивается указанный объект date_and_time_assignment.
EXPRESS-спецификация:
*)
ENTITY applied_date_and_time_assignment
SUBTYPE OF (date_and_time_assignment);
items : SET [1:?] OF date_and_time_item;
END_ENTITY;
(*
Определение атрибута:
items: набор объектов date_and_time_item, для которых применяется конкретный объект date_and_time_assignment.
Соответствующие глобальные правила:
Для объекта applied_date_and_time_assignment применяются следующие глобальные правила, определенные в настоящем стандарте:
- caused_when_for_check (см. 5.2.4.20);
- caused_when_for_version_creation (см. 5.2.4.22);
- caused_when_for_version_deletion (см. 5.2.4.24);
- caused_when_for_version_modification (см. 5.2.4.23);
- caused_when_for_envisaged_version_creation (см. 5.2.4.21);
- date_time_for_change_plan (см. 5.2.4.34);
- date_time_for_change_realisation (см. 5.2.4.36);
- date_time_for_change_request (см. 5.2.4.35).
5.2.3.1.6 Объект applied_document_reference
Объект applied_document_reference задает те объекты document_reference_items, которым присваивается привязанный объект document_reference.
EXPRESS-спецификация:
*)
ENTITY applied_document_reference
SUBTYPE OF (document_reference);
items : SET [1:?] OF document_reference_item;
END_ENTITY;
(*
Определение атрибута:
items: набор объектов document_reference_item, для которых применяется конкретный объект document_reference.
5.2.3.1.7 Объект applied_effectivity_assignment
Объект applied_effectivity_assignment задает те объекты effectivity_items, которым присваивается привязанный объект effectivity_assignment.
EXPRESS-спецификация:
*)
ENTITY applied_effectivity_assignment
SUBTYPE OF (effectivity_assignment);
items : SET [1:?] OF effectivity_item;
END_ENTITY;
(*
Определение атрибута:
items: набор объектов effectivity_item, для которых применяется конкретный объект effectivity_assignment.
5.2.3.1.8 Объект applied_external_identification_assignment
Объект applied_external_identification_assignment задает те объекты external_identification_items, которым присваивается привязанный объект external_identification_assignment.
EXPRESS-спецификация:
*)
ENTITY applied_external_identification_assignment
SUBTYPE OF (external_identification_assignment);
items : SET [1:?] OF external_identification_item;
END_ENTITY;
(*
Определение атрибута:
items: набор объектов external_identification_item, для которых применяется конкретный объект external_identification_assignment.
Соответствующие глобальные правила:
Для объекта applied_external_identification_assignment применяется следующее глобальное правило, определенное в настоящем стандарте:
- document_reference_with_address_has_at_least_one_references (см. 5.2.4.39).
5.2.3.1.9 Объект applied_group_assignment
Объект applied_group_assignment задает те объекты group_items, которым присваивается привязанный объект group_assignment.
EXPRESS-спецификация:
*)
ENTITY applied_group_assignment
SUBTYPE OF (group_assignment);
items : SET [1:?] OF group_item;
END_ENTITY;
(*
Определение атрибута:
items: набор объектов group_item, для которых применяется конкретный объект group_assignment.
Соответствующие глобальные правила:
Для объекта applied_group_assignment применяются следующие глобальные правила, определенные в настоящем стандарте:
- approval_history_approves_same_definition (см. 5.2.4.9);
- approval_history_has_at_least_one_member (см. 5.2.4.10);
- approvals_references_approval_history (см. 5.2.4.11);
- change_impact_with_versionable_object_change_event (см. 5.2.4.26);
- members_is_referenced_by_at_least_one_revision (см. 5.2.4.52);
- revision_with_context_referenced_for_context_of_revision (см. 5.2.4.134);
- version_history_referenced_by_multiple_roles (см. 5.2.4.159);
- version_history_is_referenced_by_at_least_one_versions (см. 5.2.4.157);
- unique_approvals_in_approval_history (см. 5.2.4.150);
- version_history_referenced_by_exactly_one_current_version (см. 5.2.4.158);
- version_history_has_exactly_one_assigned_group (см. 5.2.4.156);
- versions_is_referenced_by_at_least_one_version_history (см. 5.2.4.166).
5.2.3.1.10 Объект applied_identification_assignment
Объект applied_identification_assignment задает те объекты identification_items, которым присваивается привязанный объект identification_assignment.
EXPRESS-спецификация:
*)
ENTITY applied_identification_assignment
SUBTYPE OF (identification_assignment);
items : SET [1:?] OF identification_item;
END_ENTITY;
(*
Определение атрибута:
items: набор объектов identification_item, для которых применяется конкретный объект identification_assignment.
Соответствующие глобальные правила:
Для объекта applied_identification_assignment применяются следующие глобальные правила, определенные в настоящем стандарте:
- compound_representation_item_with_section_identifier (см. 5.2.4.33);
- global_id_is_unique (см. 5.2.4.45);
- product_definition_for_port_of_registration (см. 5.2.4.63);
- product_definition_for_call_sign (см. 5.2.4.56);
- product_definition_for_flag_state (см. 5.2.4.58);
- representation_for_offset_point_table_model_for_point (см. 5.2.4.104);
- ship_designation_has_one_specified_names (см. 5.2.4.138);
- version_relationship_associates_with_versionable_object (см. 5.2.4.161);
- versionable_object_has_one_version_id (см. 5.2.4.164).
5.2.3.1.11 Объект applied_organization_assignment
Объект applied_organization_assignment задает те объекты organization_items, которым присваивается привязанный объект organization_assignment.
EXPRESS-спецификация:
*)
ENTITY applied_organization_assignment
SUBTYPE OF (organization_assignment);
items : SET [1:?] OF organization_item;
END_ENTITY;
(*
Определение атрибута:
items: набор объектов organization_item, для которых применяется конкретный объект organization_assignment.
Соответствующие глобальные правила:
Для объекта applied_organization_assignment применяются следующие глобальные правила, определенные в настоящем стандарте:
- property_definition_for_class_society (см. 5.2.4.79);
- product_definition_for_managing_company (см. 5.2.4.60);
- product_definition_for_ordering_company (см. 5.2.4.61);
- product_definition_for_owning_company (см. 5.2.4.62);
- product_definition_for_shipyard (см. 5.2.4.65).
5.2.3.1.12 Объект applied_person_assignment
Объект applied_person_assignment задает те объекты person_items, которым присваивается привязанный объект person_assignment.
EXPRESS-спецификация:
*);
ENTITY applied_person_assignment
SUBTYPE OF (person_assignment);
items : SET [1:?] OF person_item;
END_ENTITY;
(*
Определение атрибута:
items: набор объектов person_item, для которых применяется конкретный объект person_assignment.
Соответствующие глобальные правила:
Для объекта applied_organization_assignment применяются следующие глобальные правила, определенные в настоящем стандарте:
- document_has_exactly_one_author (см. 5.2.4.38).
5.2.3.1.13 Объект applied_person_and_organization_assignment
Объект applied_person_and_organization_assignment задает те объекты person_and_organization_items, которым присваивается объект person_and_organization_assignment.
EXPRESS-спецификация:
*)
ENTITY applied_person_and_organization_assignment
SUBTYPE OF (person_and_organization_assignment);
items : SET [1:?] OF person_and_organization_item;
END_ENTITY;
(*
Определение атрибута:
items: набор объектов person_and_organization_item, для которых применяется конкретный объект person_and_organization_assignment.
Определение атрибута:
items: набор объектов person_item, для которых применяется конкретный объект person_assignment.
Соответствующие глобальные правила:
Для объекта applied_organization_assignment применяются следующие глобальные правила, определенные в настоящем стандарте:
- author_for_change_plan (см. 5.2.4.12);
- author_for_change_realisation (см. 5.2.4.13);
- author_for_change_request (см. 5.2.4.14);
- caused_by_for_check (см. 5.2.4.15);
- caused_by_for_envisaged_version_creation (см. 5.2.4.16);
- caused_by_for_version_creation (см. 5.2.4.17);
- caused_by_for_version_deletion (см. 5.2.4.18);
- caused_by_for_version_modification (см. 5.2.4.19);
- initiator_for_change_request (см. 5.2.4.50).
5.2.3.1.14 Объект class
Объект class является типом объекта group, который задает тип присвоения классификации.
EXPRESS-спецификация:
*)
ENTITY class
SUBTYPE OF (group);
WHERE
WR1: (SIZEOF(QUERY ( oa <* USEDIN(SELF,
'SHIP_MOULDED_FORM_SCHEMA.GROUP_ASSIGNMENT.ASSIGNED_GROUP')|
NOT ('SHIP_MOULDED_FORM_SCHEMA.APPLIED_GROUP_ASSIGNMENT'
IN TYPEOF(oa))
)) =0);
END_ENTITY;
(*
Формальное высказывание:
WR1: Каждый объект class не должен привязываться каким-либо объектом applied_group_assignment через атрибут assigned_group.
5.2.3.2 Модификация (изменение) объектов, импортированных в теоретические обводы судна
5.2.3.2.1 Изменение объекта action
Основное описание объекта action дано в ИСО 10303-41. Уточнение данного описания приведено в настоящем стандарте.
Соответствующие глобальные правила:
Для объекта action применяются следующие глобальные правила, определенные в настоящем стандарте:
- action_request_solution_connected_to_action (см. 5.2.4.1);
- caused_by_for_check (см. 5.2.4.15);
- caused_by_for_envisaged_version_creation (см. 5.2.4.16);
- caused_by_for_version_creation (см. 5.2.4.17);
- caused_by_for_version_modification (см. 5.2.4.19);
- caused_by_for_version_deletion (см. 5.2.4.18);
- caused_when_for_check (см. 5.2.4.20);
- caused_when_for_envisaged_version_creation (см. 5.2.4.21);
- caused_when_for_version_creation (см. 5.2.4.22);
- caused_when_for_version_deletion (см. 5.2.4.24);
- caused_when_for_version_modification (см. 5.2.4.23);
- envisaged_version_creation_has_mandatory_attribute_description (см. 5.2.4.40);
- version_creation_has_mandatory_attribute_description (см. 5.2.4.154);
- version_deletion_has_mandatory_attribute_description (см. 5.2.4.155);
- version_modification_has_mandatory_attribute_description (см. 5.2.4.160).
5.2.3.2.2 Изменение объекта action_request_solution
Основное описание объекта action_request_solution приведено в ИСО 10303-41. Уточнение данного описания приведено в настоящем стандарте.
Соответствующие глобальные правила:
Для объекта action_request_solution применяются следующие глобальные правила, определенные в настоящем стандарте:
- action_request_solution_connected_to_action (см. 5.2.4.1);
- change_plan_has_mandatory_attribute_description (см. 5.2.4.27);
- date_time_for_change_plan (см. 5.2.4.34).
5.2.3.2.3 Изменение объекта approval
Основное описание объекта approval приведено в ИСО 10303-41. Уточнение данного описания приведено в настоящем стандарте.
Соответствующие глобальные правила:
Для объекта action_request_solution применяются следующие глобальные правила, определенные в настоящем стандарте:
- approval_event_with_approval_date_time (см. 5.2.4.8);
- approval_event_with_approval_person_organization (см. 5.2.4.7);
- no_approvals_except_in_approval_history (см. 5.2.4.53).
5.2.3.2.4 Изменение объекта approval_date_time
Основное описание объекта approval_date_time приведено в ИСО 10303-41. Уточнение данного описания приведено в настоящем стандарте.
Соответствующие глобальные правила:
Для объекта approval_date_time применяется следующее глобальное правило, определенное в настоящем стандарте:
- approval_event_with_approval_date_time (см. 5.2.4.8).
5.2.3.2.5 Изменение объекта approval_person_organization
Основное описание объекта approval_person_organization приведено в ИСО 10303-41. Уточнение данного описания приведено в настоящем стандарте.
Соответствующие глобальные правила:
Для объекта approval_person_organization применяется следующее глобальное правило, определенные в настоящем стандарте:
- approval_event_with_approval_person_organization (см. 5.2.4.7).
5.2.3.2.6 Изменение объекта compound_representation_item
Основное описание объекта compound_representation_item приведено в ИСО 10303-41. Уточнение данного описания приведено в настоящем стандарте.
Соответствующие глобальные правила:
Для объекта compound_representation_item применяются следующие глобальные правила, определенные в настоящем стандарте:
- centre_location_compound_representation_has_specified_name (см. 5.2.4.25);
- compound_representation_item_with_section_identifier (см. 5.2.4.33);
- compound_representation_item_with_class_id_knot (см. 5.2.4.32);
- compound_representation_item_with_hydrostatic_properties (см. 5.2.4.31);
- floating_position_compound_representation_with_name (см. 5.2.4.43);
- hydrostatic_properties_with_specified_class (см. 5.2.4.47);
- hydrostatic_property_with_specified_name (см. 5.2.4.48);
- offset_point_table_model_compound_representation_has_name (см. 5.2.4.54);
- ship_curve_has_name (см. 5.2.4.135);
- ship_curve_segment_has_class (см. 5.2.4.136);
- ship_curve_with_spacing_position_has_class (см. 5.2.4.137);
- ship_point_compound_representation_has_name (см. 5.2.4.141);
- ship_surface_compound_representation_has_name (см. 5.2.4.142);
- spacing_position_compound_representation_has_name (см. 5.2.4.143);
- spacing_position_with_offset_compound_representation_has_name (см. 5.2.4.145);
- spacing_position_with_offset_compound_representation_has_class (см. 5.2.4.144);
- stability_properties_for_floating_position_has_name (см. 5.2.4.147);
- stability_properties_for_floating_position_has_class (см. 5.2.4.146);
- stability_property_has_name (см. 5.2.4.148).
5.2.3.2.7 Изменение объекта date_time_role
Основное описание объекта date_time_role приведено в ИСО 10303-41. Уточнение данного описания приведено в настоящем стандарте.
Соответствующие глобальные правила:
Для объекта date_time_role применяются следующие глобальные правила, определенные в настоящем стандарте:
- caused_when_for_check (см. 5.2.4.20);
- caused_when_for_envisaged_version_creation (см. 5.2.4.21);
- caused_when_for_version_creation (см. 5.2.4.22);
- caused_when_for_version_deletion (см. 5.2.4.24);
- caused_when_for_version_modification (см. 5.2.4.23);
- date_time_for_change_plan (см. 5.2.4.34);
- date_time_for_change_realisation (см. 5.2.4.36);
- date_time_for_change_request (см. 5.2.4.35).
5.2.3.2.8 Изменение объекта document
Основное описание объекта document приведено в ИСО 10303-41. Уточнение данного описания приведено в настоящем стандарте.
Соответствующие глобальные правила:
Для объекта document применяются следующие глобальные правила, определенные в настоящем стандарте:
- document_has_exactly_one_author (см. 5.2.4.38);
- document_reference_with_address_has_at_least_one_references (см. 5.2.4.39).
5.2.3.2.9 Изменение объекта document_representation_type
Основное описание объекта document_representation_type приведено в ИСО 10303-41. Уточнение данного описания приведено в настоящем стандарте.
Соответствующие глобальные правила:
Для объекта document_representation_type применяются следующие глобальные правила, определенные в настоящем стандарте:
- document_has_at_least_one_references (см. 5.2.4.37);
- document_has_exactly_one_author (см. 5.2.4.38).
5.2.3.2.10 Изменение объекта executed_action
Основное описание объекта executed_action приведено в ИСО 10303-41. Уточнение данного описания приведено в настоящем стандарте.
Соответствующие глобальные правила:
Для объекта executed_action применяются следующие глобальные правила, определенные в настоящем стандарте:
- author_for_change_realisation (см. 5.2.4.13);
- date_time_for_change_realisation (см. 5.2.4.36).
5.2.3.2.11 Изменение объекта external_source
Основное описание объекта external_source приведено в ИСО 10303-41. Уточнение данного описания приведено в настоящем стандарте.
Соответствующие глобальные правила:
Для объекта external_source применяется следующее глобальное правило, определенное в настоящем стандарте:
- mandatory_entity_type_for_external_instance_reference (см. 5.2.4.51).
5.2.3.2.12 Изменение объекта external_source_relationship
Основное описание объекта external_source_relationship приведено в ИСО 10303-41. Уточнение данного описания приведено в настоящем стандарте.
Для объекта external_source_relationship применяется следующее глобальное правило, определенное в настоящем стандарте:
- mandatory_entity_type_for_external_instance_reference (см. 5.2.4.51).
5.2.3.2.13 Изменение объекта group
Основное описание объекта group приведено в ИСО 10303-41. Уточнение данного описания приведено в настоящем стандарте.
Соответствующие глобальные правила:
Для объекта group применяются следующие глобальные правила, определенные в настоящем стандарте:
- approval_history_has_at_least_one_member (см. 5.2.4.10);
- approvals_references_approval_history (см. 5.2.4.11);
- change_impact_with_versionable_object_change_event (см. 5.2.4.26);
- class_and_statutory_designation_has_properties (см. 5.2.4.28);
- class_parameters_has_properties (см. 5.2.4.30);
- global_axis_placement_has_properties (см. 5.2.4.44);
- members_is_referenced_by_at_least_one_revision (см. 5.2.4.52);
- principal_characteristics_has_properties (см. 5.2.4.55):
- product_definition_for_regulation (см. 5.2.4.64);
- product_definition_for_shipyard (см. 5.2.4.65);
- product_definition_for_owning_company (см. 5.2.4.62);
- product_definition_for_ordering_company (см. 5.2.4.61);
- product_definition_for_managing_company (см. 5.2.4.60);
- product_definition_for_class_notation (см. 5.2.4.57);
- product_definition_for_port_of_registration (см. 5.2.4.63);
- product_definition_for_flag_state (см. 5.2.4.58);
- product_definition_for_call_sign (см. 5.2.4.56);
- product_related_product_category_with_identification_assignment (см. 5.2.4.72);
- property_definition_for_local_coordinate_system_with_position (см. 5.2.4.83);
- property_definition_for_class_notation (см. 5.2.4.78);
- property_definition_for_class_society (см. 5.2.4.79);
- representation_item_for_transformation_to_parent (см. 5.2.4.125);
- revision_has_mandatory_attribute_description (см. 5.2.4.133);
- revision_with_context_referenced_for_context_of_revision (см. 5.2.4.134);
- ship_designation_has_one_specified_names (см. 5.2.4.138);
- spacing_position_compound_representation_has_name (см. 5.2.4.143);
- spacing_position_with_offset_compound_representation_has_class (см. 5.2.4.144);
- spacing_position_with_offset_compound_representation_has_name (см. 5.2.4.145);
- unique_approvals_in_approval_history (см. 5.2.4.150);
- version_history_has_exactly_one_assigned_group (см. 5.2.4.156);
- version_history_is_referenced_by_at_least_one_versions (см. 5.2.4.157);
- version_history_referenced_by_exactly_one_current_version (см. 5.2.4.158);
- version_history_referenced_by_multiple_roles (см. 5.2.4.159);
- versions_is_referenced_by_at_least_one_version_history (см. 5.2.4.166).
5.2.3.2.14 Изменение объекта group_assignment
Основное описание объекта group_assignment приведено в ИСО 10303-41. Уточнение данного описания приведено в настоящем стандарте.
Соответствующие глобальные правила:
Для объекта group_assignment применяются следующее глобальное правило, определенное в настоящем стандарте:
- valid_product_definition_for_class_moulded_form (см. 5.2.4.153).
5.2.3.2.15 Изменение объекта identification_assignment_relationship
Основное описание объекта identification_assignment_relationship приведено в ИСО 10303-41. Уточнение данного описания приведено в настоящем стандарте.
Соответствующие глобальные правила:
Для объекта identification_assignment_relationship применяются следующие глобальные правила, определенные в настоящем стандарте:
- alternative_version_relationship_has_mandatory_description (см. 5.2.4.4);
- alternative_version_relationship_has_unique_versions (см. 5.2.4.5);
- alternative_version_relationship_versionable_object (см. 5.2.4.6);
- version_relationship_has_mandatory_attribute_description (см. 5.2.4.162);
- version_relationship_has_unique_versions (см. 5.2.4.163).
5.2.3.2.16 Изменение объекта identification_role
Основное описание объекта identification_role приведено в ИСО 10303-41. Уточнение данного описания приведено в настоящем стандарте.
Соответствующие глобальные правила:
Для объекта identification_role применяются следующие глобальные правила, определенные в настоящем стандарте:
- global_id_is_unique (см. 5.2.4.45);
- identification_role_optional_attribute_description_required (см. 5.2.4.49);
- representation_has_global_unit_assigned_context (см. 5.2.4.114).
5.2.3.2.17 Изменение объекта mapped_item
Основное описание объекта identification_role приведено в ИСО 10303-43. Уточнение данного описания приведено в настоящем стандарте.
Соответствующие глобальные правила:
Для объекта identification_role применяется следующее глобальное правило, определенное в настоящем стандарте:
- representation_item_for_transformation_to_parent (см. 5.2.4.125).
5.2.3.2.18 Изменение объекта object_role
Основное описание объекта object_role приведено в ИСО 10303-41. Уточнение данного описания приведено в настоящем стандарте.
Соответствующие глобальные правила:
Для объекта object_role применяется следующее глобальное правило, определенное в настоящем стандарте:
- approvals_references_approval_history (см. 5.2.4.11).
5.2.3.2.19 Изменение объекта person_and_organization_role
Основное описание объекта person_and_organization_role приведено в ИСО 10303-41. Уточнение данного описания приведено в настоящем стандарте.
Соответствующие глобальные правила:
Для объекта person_and_organization_role применяются следующие глобальные правила, определенные в настоящем стандарте:
- author_for_change_plan (см. 5.2.4.12);
- author_for_change_realisation (см. 5.2.4.13);
- author_for_change_request (см. 5.2.4.14);
- caused_by_for_check (см. 5.2.4.15);
- caused_by_for_envisaged_version_creation (см. 5.2.4.16);
- caused_by_for_version_creation (см. 5.2.4.17);
- caused_by_for_version_deletion (см. 5.2.4.18);
- caused_by_for_version_modification (см. 5.2.4.19);
- initiator_for_change_request (см. 5.2.4.50).
5.2.3.2.20 Изменение объекта product_definition
Основное описание объекта product_definition приведено в ИСО 10303-41. Уточнение данного описания приведено в настоящем стандарте.
Соответствующие глобальные правила:
Для объекта product_definition применяются следующие глобальные правила, определенные в настоящем стандарте:
- class_and_statutory_designation_has_properties (см. 5.2.4.28);
- class_parameters_has_properties (см. 5.2.4.30);
- product_definition_for_call_sign (см. 5.2.4.56);
- product_definition_for_flag_state (см. 5.2.4.58);
- product_definition_for_managing_company (см. 5.2.4.60);
- product_definition_for_ordering_company (см. 5.2.4.61);
- product_definition_for_owning_company (см. 5.2.4.62);
- product_definition_for_port_of_registration (см. 5.2.4.63);
- product_definition_for_regulation (см. 5.2.4.64);
- product_definition_for_shipyard (см. 5.2.4.65);
- property_definition_for_class_notation (см. 5.2.4.78);
- ship_designation_has_one_specified_names (см. 5.2.4.138);
- valid_product_definition_for_class_moulded_form (см. 5.2.4.153).
5.2.3.2.21 Изменение объекта product_definition_shape
Основное описание объекта product_definition_shape приведено в ИСО 10303-41. Уточнение данного описания приведено в настоящем стандарте.
Соответствующие глобальные правила:
Для объекта product_definition_shape применяется следующее глобальное правило, определенное в настоящем стандарте:
- product_definition_shape_with_identification_assignment (см. 5.2.4.70).
5.2.3.2.22 Изменение объекта product_definition_relationship
Основное описание объекта product_definition_relationship приведено в ИСО 10303-41. Уточнение данного описания приведено в настоящем стандарте.
Соответствующие глобальные правила:
Для объекта product_definition_relationship применяются следующие глобальные правила, определенные в настоящем стандарте:
- product_definition_relationship_references_are_distinct (см. 5.2.4.67);
- product_definition_relationship_related_to_class_moulded_form (см. 5.2.4.68);
- ship_moulded_form_revision_has_description (см. 5.2.4.139).
5.2.3.2.23 Изменение объекта property_definition
Основное описание объекта property_definition приведено в ИСО 10303-41. Уточнение данного описания приведено в настоящем стандарте.
Соответствующие глобальные правила:
Для объекта property_definition применяются следующие глобальные правила, определенные в настоящем стандарте:
- class_and_statutory_designation_has_properties (см. 5.2.4.28);
- hull_moulded_form_design_parameter_with_class_references (см. 5.2.4.46);
- product_definition_for_hydrostatic_definition_requires_reference (см. 5.2.4.59);
- product_definition_for_regulation (см. 5.2.4.64);
- product_definition_for_stability_definition (см. 5.2.4.66);
- propeller_moulded_form_design_parameter_with_class_references (см. 5.2.4.74);
- property_definition_for_appendage_moulded_form_design_parameter (см. 5.2.4.75);
- property_definition_for_bottom_moulded_form_design_parameter (см. 5.2.4.76);
- property_definition_for_bulb_moulded_form_design_parameter (см. 5.2.4.77);
- property_definition_for_class_notation (см. 5.2.4.78);
- property_definition_for_class_society (см. 5.2.4.79);
- property_definition_for_hull_moulded_form_design_parameter (см. 5.2.4.81);
- property_definition_for_local_coordinate_system (см. 5.2.4.82);
- property_definition_for_local_coordinate_system_with_position (см. 5.2.4.83);
- property_definition_for_moulded_form_function_parameters (см. 5.2.4.84);
- property_definition_of_propeller_moulded_form_design_parameter (см. 5.2.4.85);
- property_definition_for_rudder_moulded_form_design_parameter (см. 5.2.4.86);
- property_definition_for_thruster_moulded_form_design_parameter (см. 5.2.4.87);
- property_definition_for_thruster_propeller_parameter (см. 5.2.4.88);
- representation_item_for_transformation_to_parent (см. 5.2.4.125);
- ship_overall_dimensions_has_properties (см. 5.2.4.140).
5.2.3.2.24 Изменение объекта property_definition_representation
Основное описание объекта property_definition_representation приведено в ИСО 10303-41. Уточнение данного описания приведено в настоящем стандарте.
Соответствующие глобальные правила:
Для объекта property_definition_representation применяются следующие глобальные правила, определенные в настоящем стандарте:
- class_and_statutory_designation_has_properties (см. 5.2.4.28);
- class_notation_with_named_representation_items (см. 5.2.4.29);
- class_parameters_has_properties (см. 5.2.4.30);
- global_axis_placement_has_properties (см. 5.2.4.44);
- hull_moulded_form_design_parameter_with_class_references (см. 5.2.4.46);
- principal_characteristics_has_properties (см. 5.2.4.55):
- propeller_moulded_form_design_parameter_with_class_references (см. 5.2.4.74);
- property_definition_for_appendage_moulded_form_design_parameter (см. 5.2.4.75);
- property_definition_for_bottom_moulded_form_design_parameter (см. 5.2.4.76);
- property_definition_for_bulb_moulded_form_design_parameter (см. 5.2.4.77);
- property_definition_for_hull_moulded_form_design_parameter (см. 5.2.4.81);
- property_definition_for_local_coordinate_system (см. 5.2.4.82);
- property_definition_for_local_coordinate_system_with_position (см. 5.2.4.83);
- property_definition_for_moulded_form_function_parameters (см. 5.2.4.84);
- property_definition_of_propeller_moulded_form_design_parameter (см. 5.2.4.85);
- property_definition_for_rudder_moulded_form_design_parameter (см. 5.2.4.86);
- property_definition_for_thruster_moulded_form_design_parameter (см. 5.2.4.87);
- property_definition_for_thruster_propeller_parameter (см. 5.2.4.88);
- representation_for_class_and_statutory_designation (см. 5.2.4.93);
- representation_for_global_axis_placement (см. 5.2.4.95);
- representation_for_local_coordinate_system (см. 5.2.4.100);
- representation_of_local_coordinate_system_with_position_reference (см. 5.2.4.101);
- representation_items_optional_for_class_notation (см. 5.2.4.126);
- representation_items_optional_for_principal_characteristics (см. 5.2.4.128);
- representation_restricted_by_name_principal_characteristics (см. 5.2.4.131);
- representation_restricted_by_name_class_notation (см. 5.2.4.129);
- representation_restricted_by_name_class_parameters (см. 5.2.4.130);
- ship_overall_dimensions_has_properties (см. 5.2.4.140).
5.2.3.2.25 Изменение объекта representation
Основное описание объекта representation приведено в ИСО 10303-43. Уточнение данного описания приведено в настоящем стандарте.
Соответствующие глобальные правила:
Для объекта representation применяются следующие глобальные правила, определенные в настоящем стандарте:
- class_notation_with_named_representation_items (см. 5.2.4.29);
- hull_moulded_form_design_parameter_with_class_references (см. 5.2.4.46);
- propeller_moulded_form_design_parameter_with_class_references (см. 5.2.4.74);
- representation_for_moulded_form_function_parameters (см. 5.2.4.103);
- representation_for_local_coordinate_system (см. 5.2.4.100);
- representation_for_offset_point_table_model_for_section (см. 5.2.4.105);
- representation_for_deck_moulded_form_design_parameter (см. 5.2.4.94);
- representation_for_class_and_statutory_designation (см. 5.2.4.93);
- representation_for_class_and_statutory_designation (см. 5.2.4.93);
- representation_for_global_axis_placement (см. 5.2.4.95);
- representation_for_rudder_moulded_form_design_parameter (см. 5.2.4.109);
- representation_for_propeller_moulded_form_design_parameter (см. 5.2.4.108);
- representation_for_propeller_location_restricted_by_class_id (см. 5.2.4.107);
- representation_for_hydrostatic_table_restricted_by_class_id (см. 5.2.4.99);
- representation_for_offset_point_table_model_for_point (см. 5.2.4.104);
- representation_for_hydrostatic_table_restricted (см. 5.2.4.98);
- representation_for_hydrostatic_table_constrained (см. 5.2.4.97);
- representation_for_stability_table_restricted_by_class_id (см. 5.2.4.111);
- representation_for_stability_table_restricted (см. 5.2.4.110);
- representation_for_offset_table_shape_representation_restricted (см. 5.2.4.106);
- representation_for_thruster_moulded_form_design_parameter (см. 5.2.4.112);
- representation_for_bottom_moulded_form_design_parameter (см. 5.2.4.91);
- representation_for_appendage_moulded_form_design_parameter (см. 5.2.4.90);
- representation_for_hull_moulded_form_design_parameter (см. 5.2.4.96);
- representation_for_midship_tumble_restricted_by_class_id (см. 5.2.4.102);
- representation_for_bulb_moulded_form_design_parameter (см. 5.2.4.92);
- representation_has_global_unit_assigned_context (см. 5.2.4.114);
- representation_has_global_uncertainty_assigned_context (см. 5.2.4.113);
- representation_items_for_deck_moulded_form_design_parameter (см. 5.2.4.118);
- representation_items_for_rudder_moulded_form_design_parameter (см. 5.2.4.123);
- representation_items_optional_for_owner_designation (см. 5.2.4.127);
- representation_items_propeller_moulded_form_design_parameter (см. 5.2.4.122);
- representation_items_for_hull_moulded_form_design_parameter (см. 5.2.4.119);
- representation_items_for_bulb_moulded_form_design_parameter (см. 5.2.4.117);
- representation_items_of_thruster_moulded_form_design_parameter (см. 5.2.4.124);
- representation_item_for_transformation_to_parent (см. 5.2.4.125);
- representation_items_optional_for_class_notation (см. 5.2.4.126);
- representation_items_optional_for_principal_characteristics (см. 5.2.4.128);
- representation_items_propeller_moulded_form_design_parameter (см. 5.2.4.122);
- representation_items_for_bottom_moulded_form_design_parameter (см. 5.2.4.116);
- representation_items_appendage_moulded_form_design_parameter (см. 5.2.4.115);
- representation_items_for_moulded_form_function_parameters (см. 5.2.4.121);
- representation_items_for_moulded_form_design_parameters (см. 5.2.4.120);
- representation_of_local_coordinate_system_with_position_reference (см. 5.2.4.101);
- representation_restricted_by_name_principal_characteristics (см. 5.2.4.131);
- representation_restricted_by_name_class_notation (см. 5.2.4.129);
- representation_restricted_by_name_class_parameters (см. 5.2.4.130);
- representation_restricted_by_name_ship_overall_dimensions (см. 5.2.4.132);
- user_def_appendage_type_description_required (см. 5.2.4.151);
- user_def_function_description_required (см. 5.2.4.152).
5.2.3.2.26 Изменение объекта representation_item
Основное описание объекта representation_item приведено в ИСО 10303-43. Уточнение данного описания приведено в настоящем стандарте.
Соответствующие глобальные правила:
Для объекта representation_item применяются следующие глобальные правила, определенные в настоящем стандарте:
- class_notation_with_named_representation_items (см. 5.2.4.29);
- representation_for_class_and_statutory_designation (см. 5.2.4.93);
- representation_for_global_axis_placement (см. 5.2.4.95);
- representation_for_local_coordinate_system (см. 5.2.4.100);
- representation_of_local_coordinate_system_with_position_reference (см. 5.2.4.101);
- representation_items_optional_for_class_notation (см. 5.2.4.126);
- representation_items_optional_for_owner_designation (см. 5.2.4.127);
- representation_items_optional_for_principal_characteristics (см. 5.2.4.128);
- representation_restricted_by_name_class_notation (см. 5.2.4.129);
- representation_restricted_by_name_class_parameters (см. 5.2.4.130);
- representation_restricted_by_name_principal_characteristics (см. 5.2.4.131).
5.2.3.2.27 Изменение объекта versioned_action_request
Основное описание объекта versioned_action_request приведено в ИСО 10303-41. Уточнение данного описания приведено в настоящем стандарте.
Соответствующие глобальные правила:
Для объекта versioned_action_request применяются следующие глобальные правила, определенные в настоящем стандарте:
- author_for_change_request (см. 5.2.4.14);
- date_time_for_change_request (см. 5.2.4.35);
- initiator_for_change_request (см. 5.2.4.50).
5.2.4 Определения правил в теоретических обводах судна
Правило action_request_solution_connected_to_action определяет, что каждый экземпляр типа объекта action_request_solution с классификацией 'change plan' должен быть связан с экземпляром типа объекта action с классификацией 'change' через экземпляр объекта action_method.
EXPRESS-спецификация:
*)
RULE
action_request_solution_connected_to_action FOR(action_request_solution,
action);
LOCAL
t1_set: SET OF action_request_solution := [];
t2_set: SET OF action := [];
set_3 : SET OF ACTION_METHOD := [];
violate: LOGICAL := FALSE;
END_LOCAL;
t1_set := QUERY(a <* action_request_solution |
VALUE_IN(WHICH_CLASS(a), 'change plan'));
t2_set := QUERY(b <* action | VALUE_IN(WHICH_CLASS(b), 'change'));
REPEAT i := 1 TO HIINDEX(t1_set) WHILE NOT violate;
set_3 := [];
REPEAT j := 1 TO HIINDEX(t2_set);
set_3 := set_3 + [t2_set[j].chosen_method];
END_REPEAT;
violate := VALUE_IN(set_3, t1_set[i].method);
END_REPEAT;
WHERE
WR1: NOT violate;
END_RULE;
(*
Определения аргументов:
action_request_solution: набор всех экземпляров объектов action_request_solution.
action: набор всех экземпляров объектов action.
Формальные высказывания:
WR1: Каждый экземпляр объекта action_method со значением chosen_method для экземпляра объекта action должен одновременно иметь значение method для экземпляра объекта action_request_solution.
Правило action_request_solution_with_identification_assignment задает перечень объектов, для которых требуется идентификация. Идентификация определяется объектом applied_identification_assignment.
EXPRESS-спецификация:
*)
RULE action_request_solution_with_identification_assignment FOR (APPLIED_CLASSIFICATION_ASSIGNMENT);
LOCAL
c_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT := [];
t1_set: SET OF action_request_solution := [];
t2_set: SET OF applied_identification_assignment := [];
arg_list: LIST OF STRING := [ 'change plan'];
violation: LOGICAL := FALSE;
END_LOCAL;
REPEAT j:=1 TO HIINDEX(arg_list) WHILE (NOT violation);
c_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.assigned_class.NAME = arg_LIST[j]);
END_REPEAT;
REPEAT i := 1 TO HIINDEX(c_a_set);
REPEAT j := 1 TO HIINDEX(c_a_set[i].items);
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
t2_set := bag_to_set(USEDIN(t1_set[i],
'SHIP_MOULDED_FORM_SCHEMA.APPLIED_IDENTIFICATION_ASSIGNMENT.ITEMS'));
t2_set := QUERY ( j <* t2_set | j.role.name = 'globally unambiguous identifier');
violation := NOT (SIZEOF(t2_set) = 1);
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
applied_classification_assignment: набор всех экземпляров объекта applied_classification_assignment.
Формальные высказывания:
WR1: Для каждого экземпляра объекта action_request_solution, на который ссылается объект applied_classification_assignment с объектом assigned_class, чей атрибут name имеет значение 'change plan', должен требоваться объект applied_identification_assignment для определения идентификатора экземпляра.
Правило action_with_identification_assignment задает перечень объектов, для которых требуется идентификация. Идентификация определяется объектом applied_identification_assignment.
EXPRESS-спецификация:
*)
RULE action_with_identification_assignment FOR (APPLIED_CLASSIFICATION_ASSIGNMENT);
LOCAL
c_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT := [];
t1_set:SET OF action := [];
t2_set:SET OF applied_identification_assignment := [];
arg_list: LIST OF STRING := [ 'change', 'versionable object change event', 'check'];
violation: LOGICAL := FALSE;
END_LOCAL;
(* get all classification_assignment instances *)
REPEAT j:=1 TO HIINDEX(arg_list) WHILE (NOT violation);
c_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.assigned_class.NAME = arg_LIST[j]);
END_REPEAT;
REPEAT i := 1 TO HIINDEX(c_a_set);
REPEAT j := 1 TO HIINDEX(c_a_set[i].items);
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
t2_set := bag_to_set(USEDIN(t1_set[i],
'SHIP_MOULDED_FORM_SCHEMA.APPLIED_IDENTIFICATION_ASSIGNMENT.ITEMS'));
t2_set := QUERY ( j <* t2_set | j.role.name = 'globally unambiguous identifier');
violation := NOT (SIZEOF(t2_set) = 1);
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
applied_classification_assignment: набор всех экземпляров объекта applied_classification_assignment.
Формальные высказывания:
WR1: Для каждого экземпляра объекта action, на который ссылается объект applied_classification_assignment с объектом assigned_class, чей атрибут name имеет значение 'change', 'versionable object change event' или 'check', должен требоваться объект applied_identification_assignment для определения идентификатора экземпляра.
Правило alternative_version_relationship_has_mandatory_description определяет, что для экземпляра объекта identification_assignment_relationship с идентификатором класса 'alternative version relationship' приведен экземпляр необязательного атрибута description.
EXPRESS-спецификация:
*)
RULE alternative_version_relationship_has_mandatory_description FOR
(identification_assignment_relationship);
LOCAL
t1_set: SET OF identification_assignment_relationship := [];
violate: LOGICAL := FALSE;
END_LOCAL;
(* get all instances of identification_assignment_relationship *)
(* being classified as 'alternative version relationship' *)
t1_set := QUERY(i <* identification_assignment_relationship |
VALUE_IN(WHICH_CLASS(i), 'alternative version relationship'));
(* from all instances found above, find those for which attribute description
is not instantiated *)
violate := (SIZEOF(QUERY(k <* t1_set | NOT EXISTS (k.description))) > 0);
WHERE
wr1: NOT violate;
END_RULE;
(*
Определения аргументов:
identification_assignment_relationship: набор всех экземпляров объектов identification_assignment_relationship.
Формальные высказывания:
WR1: Необязательный атрибут description должен существовать для каждого экземпляра объекта identification_assignment_relationship, у которого есть объект applied_classification_assignment со значением 'alternative version relationship' для assigned_class.name.
Правило alternative_version_relationship_has_unique_versions определяет, что для всех экземпляров объекта identification_assignment_relationship с классификацией 'alternative version relationship', версифицируемые объекты (versionable objects) alternative_1 и alternative_2 должны быть разными, то есть у них должны быть разные version_ids.
EXPRESS-спецификация:
*)
RULE alternative_version_relationship_has_unique_versions
FOR (identification_assignment_relationship);
LOCAL
t1_set: SET OF identification_assignment_relationship := [];
violate: LOGICAL := FALSE;
END_LOCAL;
(* get all instances of identification_assignment_relationship with *)
(* class 'alternative version relationship' *)
t1_set := QUERY(a <* identification_assignment_relationship |
VALUE_IN(WHICH_CLASS(a), 'alternative version relationship'));
REPEAT i := 1 TO HIINDEX(t1_set) WHILE NOT violate;
violate :=
( t1_set[i].relating_identification_assignment.assigned_id =
t1_set[i].related_identification_assignment.assigned_id );
END_REPEAT;
WHERE
wr1: NOT violate;
END_RULE;
(*
Определения аргументов:
identification_assignment_relationship: набор всех экземпляров объектов identification_assignment_relationship.
Формальные высказывания:
WR1: Объекты assigned_ids объекта related_identification_assignment и объекта relating_identification_assignment каждого экземпляра объекта identification_assignment_relationship, у которого имеется объект applied_classification_assignment, значение applied_classification_assignment.assigned_class.name которого равно 'alternative version relationship', должны отличаться.
Правило alternative_version_relationship_versionable_object задает экземпляр объекта identification_assignment_relationship с классификацией 'alternative version relationship', который связывает только экземпляры типа applied_identification_assignment, чей атрибут items указывает на экземпляры класса со значением 'versionable object'.
EXPRESS-спецификация:
*)
RULE alternative_version_relationship_versionable_object
FOR (applied_identification_assignment,
identification_assignment_relationship);
LOCAL
violate: LOGICAL := FALSE;
END_LOCAL;
(* get all instances of applied_identification_assignment *)
REPEAT i := 1 TO HIINDEX(applied_identification_assignment) BY 1 WHILE NOT violate;
IF ( (SIZEOF(USEDIN(applied_identification_assignment[i],
('SHIP_MOULDED_FORM_SCHEMA.IDENTIFICATION_ASSIGNMENT_RELATIONSHIP.'
+'RELATING_IDENTIFICATION_ASSIGNMENT'))) > 0) OR
(SIZEOF(USEDIN(applied_identification_assignment[i],
('SHIP_MOULDED_FORM_SCHEMA.IDENTIFICATION_ASSIGNMENT_RELATIONSHIP.'
+'RELATED_IDENTIFICATION_ASSIGNMENT'))) > 0) ) THEN
REPEAT j := 1 to HIINDEX(applied_identification_assignment [i].items) BY 1
WHILE NOT violate;
violate:=NOTVALUE_IN(which_class(applied_identification_assignment
[i].items[j]),'versionable object');
END_REPEAT;
END_IF;
END_REPEAT;
WHERE
wr1: NOT violate;
END_RULE;
(*
Определения аргументов:
applied_identification_assignment: набор всех экземпляров объектов applied_identification_assignment.
identification_assignment_relationship: набор всех экземпляров объектов identification_assignment_relationship.
Формальные высказывания:
WR1: Каждый экземпляр объекта identification_assignment_relationship, у которого имеется объект applied_classification_assignment со значением 'alternative version relationship' для атрибута assigned_class.name, должен указывать только экземпляры объекта applied_identification_assignment с атрибутом items, чье значение указывает на экземпляр, у которого есть объект applied_classification_assignment со значением 'versionable object' для assigned_class.name.
Правило approval_event_with_approval_person_organization определяет, что на экземпляр объекта approval с идентификатором класса 'approval event' приведена ссылка только из одного экземпляра объекта approval_person_organization через authorized_approval.
EXPRESS-спецификация:
*)
RULE
approval_event_with_approval_person_organization
FOR(approval);
LOCAL
t1_set:SET OF approval := [];
t2_set:SET OF approval_person_organization := [];
violate: LOGICAL := FALSE;
END_LOCAL;
t1_set := QUERY(i <* approval |
VALUE_IN(WHICH_CLASS(i), 'approval event'));
REPEAT i := 1 TO HIINDEX(t1_set) WHILE NOT violate;
t2_set := bag_to_set(USEDIN(t1_set[i],
'SHIP_MOULDED_FORM_SCHEMA.APPROVAL_PERSON_ORGANIZATION.' +
'AUTHORIZED_APPROVAL'));
violate := NOT (SIZEOF(t2_set) = 1);
END_REPEAT;
WHERE
WR1: NOT violate;
END_RULE;
(*
Определения аргументов:
approval: набор всех экземпляров объектов approval.
Формальные высказывания:
WR1: На каждый экземпляр объекта approval, у которого имеется объект applied_classification_assignment, чей assigned_class является group со значением 'approval event' для атрибута name, ссылается только экземпляр объекта approval_person_organization через authorized_approval.
Правило approval_event_with_approval_date_time определяет, что на экземпляр объекта approval с идентификатором класса 'approval event' приведена ссылка только из одного экземпляра объекта approval_date_time через dated_approval.
EXPRESS-спецификация:
*)
RULE
approval_event_with_approval_date_time
FOR(approval);
LOCAL
t1_set: SET OF approval := [];
t2_set: SET OF approval_date_time := [];
violate: LOGICAL := FALSE;
END_LOCAL;
t1_set := QUERY(i <* approval |
VALUE_IN(WHICH_CLASS(i), 'approval event'));
REPEAT i := 1 TO HIINDEX(t1_set) WHILE NOT violate;
t2_set := bag_to_set(USEDIN(t1_set[i],
'SHIP_MOULDED_FORM_SCHEMA.APPROVAL_DATE_TIME.' +
'DATED_APPROVAL')); violate := NOT (SIZEOF(t2_set) = 1);
END_REPEAT;
WHERE
WR1: NOT violate;
END_RULE;
(*
Определения аргументов:
approval: набор всех экземпляров объектов approval.
Формальные высказывания:
WR1: На каждый экземпляр объекта approval, у которого имеется объект applied_classification_assignment, чей assigned_class является объектом group со значением 'approval event' для атрибута name, ссылается только экземпляр объекта approval_date_time через dated_approval.
Правило approval_history_approves_same_definition определяет, что все члены в объекте group с идентификатором класса 'approval history' должны утверждать один и тот же экземпляр с классификацией 'definition'.
EXPRESS-спецификация:
*)
RULE
approval_history_approves_same_definition
FOR (applied_group_assignment, applied_approval_assignment);
LOCAL
t2_set: SET OF APPLIED_GROUP_ASSIGNMENT := [];
t3_set: SET OF APPROVAL :=[];
t4_set: SET OF group_item :=[];
t5_set: SET OF APPLIED_APPROVAL_ASSIGNMENT := [];
violate: LOGICAL := FALSE;
END_LOCAL;
t2_set := QUERY(a <* APPLIED_GROUP_ASSIGNMENT |
VALUE_IN(WHICH_CLASS(a.ASSIGNED_GROUP),
'approval history'));
t3_set := QUERY(b <* t2_set[1].items |
'SHIP_MOULDED_FORM_SCHEMA.APPROVAL' IN TYPEOF(b));
t4_set := QUERY(b <* t2_set[1].items |
VALUE_IN(WHICH_CLASS(b), 'DEFINITION'));
violate := NOT(SIZEOF(t4_set) = 1);
REPEAT i := 1 TO HIINDEX(t3_set) WHILE NOT violate;
t5_set := QUERY(a <* APPLIED_APPROVAL_ASSIGNMENT |
(a.ASSIGNED_APPROVAL = t3_set[i]) AND
(NOT (VALUE_IN(a.items, t4_set[1]))));
violate := (SIZEOF(t5_set) > 0);
END_REPEAT;
WHERE
WR1: NOT violate;
wr2: (SIZEOF(t4_set) = 1);
END_RULE;
(*
Определения аргументов:
applied_group_assignment: набор всех экземпляров объектов applied_group_assignment.
applied_approval_assignment: набор всех экземпляров объектов applied_approval_assignment.
Формальные высказывания:
WR1: Каждый экземпляр объекта approval, входящий в состав атрибута items экземпляра объекта applied_group_assignment, чей объект assigned_group является экземпляром объекта group, у которого имеется объект applied_classification_assignment, чей объект assigned_classification представляет собой объект group со значением 'approval history' для атрибута name, должен представлять собой assigned_approval экземпляра объекта applied_approval_assignment, который собирает такой же экземпляр, имеющий объект applied_classification_assignment, чей объект assigned_classification представляет собой объект group со значением 'definition' для атрибута name в своем атрибуте items.
Правило approval_history_has_at_least_one_member определяет, что каждый объект group с идентификатором класса 'approval history' используется только одним объектом applied_group_assignment.
EXPRESS-спецификация:
*)
RULE
approval_history_has_at_least_one_member
FOR (group, applied_group_assignment);
LOCAL
t1_set: SET OF GROUP := [];
t2_set: SET OF APPLIED_GROUP_ASSIGNMENT := [];
violate: LOGICAL := FALSE;
END_LOCAL;
T1_set := QUERY(i <* group | VALUE_IN(WHICH_CLASS(i),
'approval history'));
REPEAT i := 1 TO HIINDEX(t1_set) WHILE NOT violate;
t2_set := QUERY(a <* APPLIED_GROUP_ASSIGNMENT |
a.ASSIGNED_GROUP = t1_set[i]);
violate := NOT(SIZEOF(t2_set) = 1);
END_REPEAT;
WHERE
WR1: NOT violate;
END_RULE;
(*
Определения аргументов:
applied_group_assignment: набор всех экземпляров объектов applied_group_assignment.
group: набор всех экземпляров объектов group.
Формальные высказывания:
WR1: Каждый экземпляр объекта group, имеющий объект applied_classification_assignment, чей assigned_classification представляет собой объект group со значением 'approval history' для атрибута name, должен представлять собой объект assigned_group только в одном экземпляре объекта applied_group_assignment.
Правило approvals_references_approval_history определяет, что на каждый экземпляр типа group с классификацией 'approval history' должна быть дана ссылка только присваиваниями типа applied_group_assignment со значением роли 'approvals' через атрибут assigned_group.
EXPRESS-спецификация:
*)
RULE approvals_references_approval_history FOR(applied_group_assignment, group);
LOCAL
t1_set: SET OF group := [];
a_set: SET OF applied_group_assignment := [];
violate: LOGICAL := FALSE;
END_LOCAL;
t1_set := QUERY(a <* group | VALUE_IN(WHICH_CLASS(a), 'approval history'));
REPEAT i := 1 TO HIINDEX(t1_set) WHILE NOT violate;
a_set := QUERY(b <* applied_group_assignment |
NOT ((b.assigned_group = t1_set[i]) AND (b.role.name = 'approvals')));
violate := SIZEOF(a_set) > 0;
END_REPEAT;
WHERE
wr1: NOT violate;
END_RULE;
(*
Определения аргументов:
applied_group_assignment: набор всех экземпляров объектов applied_group_assignment.
group: набор всех экземпляров объектов group.
Формальные высказывания:
WR1: На каждый экземпляр объекта group, у которого имеется объект applied_classification_assignment, чей атрибут assigned_classification идентифицирует объект со значением 'approval history' для атрибута name, должна быть дана ссылка только из экземпляров типа applied_group_assignment со значением роли 'approvals', через атрибут assigned_group.
Правило author_for_change_plan определяет, что на экземпляр объекта action_request_solution с классификацией 'change plan' приведена ссылка только из одного экземпляра присваивания типа applied_person_and_organization_assignment со значением роли (role) 'author'.
EXPRESS-спецификация:
*)
RULE
author_for_change_plan
FOR(applied_person_and_organization_assignment, action_request_solution);
LOCAL
t1_set: SET OF action_request_solution := [];
a_set: SET OF applied_person_and_organization_assignment := [];
violate: LOGICAL := FALSE;
END_LOCAL;
t1_set := QUERY(a <* action_request_solution |
VALUE_IN(WHICH_CLASS(a), 'change plan'));
REPEAT i := 1 TO HIINDEX(t1_set) WHILE NOT violate;
a_set := QUERY(b <* applied_person_and_organization_assignment |
(VALUE_IN(b.items, t1_set[i]) AND
(b.role.name = 'author')));
violate := SIZEOF(a_set) <> 1;
END_REPEAT;
WHERE
WR1: NOT violate;
END_RULE;
(*
Определения аргументов:
applied_person_and_organization_assignment: набор всех экземпляров объектов applied_person_and_organization_assignment.
action_request_solution: набор всех экземпляров объектов action_request_solution.
Формальные высказывания:
WR1: На каждый экземпляр объекта action_request_solution с классификацией 'change plan' приведена ссылка только из одного экземпляра объекта applied_person_and_organization_assignment со значением роли 'author'.
Правило author_for_change_realisation определяет, что на экземпляр объекта executed_action с классификацией 'change realization' приведена ссылка только из одного экземпляра присваивания типа applied_person_and_organization_assignment, у которого роль имеет значение 'author'.
EXPRESS-спецификация:
*)
RULE
author_for_change_realisation
FOR(applied_person_and_organization_assignment,executed_action);
LOCAL
t1_set: SET OF executed_action := [];
a_set: SET OF applied_person_and_organization_assignment := [];
violate: LOGICAL := FALSE;
END_LOCAL;
t1_set := QUERY(a <* executed_action |
VALUE IN(WHICH_CLASS(a), 'change realization'));
REPEAT i := 1 TO HIINDEX(t1_set) WHILE NOT violate;
a_set := QUERY(b <* applied_person_and_organization_assignment |
(VALUE IN(b.items, t1_set[i]) AND
(b.role.name = 'author')));
violate := SIZEOF(a_set) <> 1;
END_REPEAT;
WHERE
WR1: NOT violate;
END_RULE;
(*
Определения аргументов:
applied_person_and_organization_assignment: набор всех экземпляров объектов applied_person_and_organization_assignment.
executed_action: набор всех экземпляров объектов executed_action.
Формальные высказывания:
WR1: На каждый экземпляр объекта executed_action с классификацией 'change realization' приведена ссылка только из одного экземпляра объекта applied_person_and_organization_assignment со значением роли 'author'.
Правило author_for_change_request определяет, что на экземпляр объекта versioned_action_request со значением 'change request' для class приведена ссылка только из одного экземпляра присваивания типа applied_person_and_organization_assignment, у которого role имеет значение 'author'.
EXPRESS-спецификация:
*)
RULE
author_for_change_request
FOR(applied_person_and_organization_assignment, versioned_action_request);
LOCAL
t1_set: SET OF versioned_action_request := [];
a_set: SET OF applied_person_and_organization_assignment := [];
violate: LOGICAL := FALSE;
END_LOCAL;
t1_set := QUERY(a <* versioned_action_request |
VALUE_IN(WHICH_CLASS(a), 'change request'));
REPEAT i := 1 TO HIINDEX(t1_set) WHILE NOT violate;
a_set := QUERY(b <* applied_person_and_organization_assignment |
(VALUE_IN(b.items, t1_set[i]) AND
(b.role.name = 'author')));
violate := SIZEOF(a_set) <> 1;
END_REPEAT;
WHERE
WR1: NOT violate;
END_RULE;
(*
Определения аргументов:
applied_person_and_organization_assignment: набор экземпляров объектов applied_person_and_organization_assignment.
versioned_action_request: набор всех экземпляров объектов versioned_action_request.
Формальные высказывания:
WR1: На каждый экземпляр объекта versioned_action_request с классификацией 'change request' для class приведена ссылка только из одного экземпляра объекта applied_person_and_organization_assignment со значением роли 'author'.
Правило caused_by_for_check определяет, что на экземпляр объекта action с классификацией 'check' приведена ссылка только из одного экземпляра присваивания типа applied_person_and_organization_assignment со значением роли 'caused_by'.
EXPRESS-спецификация:
*)
RULE
caused_by_for_check
FOR(applied_person_and_organization_assignment, action);
LOCAL
t1_set: SET OF action := [];
a_set: SET OF applied_person_and_organization_assignment := [];
violate: LOGICAL := FALSE;
END_LOCAL;
t1_set := QUERY(a <* action | VALUE_IN(WHICH_CLASS(a), 'check'));
REPEAT i := 1 TO HIINDEX(t1_set) WHILE NOT violate;
a_set := QUERY(b <* applied_person_and_organization_assignment |
(VALUE_IN(b.items, t1_set[i]) AND
(b.role.name = 'caused by')));
violate := SIZEOF(a_set) <> 1;
END_REPEAT;
WHERE
WR1: NOT violate;
END_RULE;
(*
Определения аргументов:
applied_person_and_organization_assignment: набор экземпляров объектов applied_person_and_organization_assignment.
action: набор всех экземпляров объектов action.
Формальные высказывания:
WR1: На каждый экземпляр объекта action с классификацией 'check' приведена ссылка только из одного экземпляра объекта applied_person_and_organization_assignment со значением роли 'caused by'.
Правило caused_by_for_envisaged_version_creation определяет, что на экземпляр объекта action с классификацией 'envisaged version creation' приведена ссылка только из одного экземпляра присваивания типа applied_person_and_organization_assignment со значением роли 'caused_by'.
EXPRESS-спецификация:
*)
RULE
caused_by_for_envisaged_version_creation FOR(applied_person_and_organization_
assignment, action);
LOCAL
t1_set: SET OF action := [];
r a_set: SET OF applied_person_and_organization_assignment := [];
violate: LOGICAL := FALSE; f
END_LOCAL;
t1_set := QUERY(a <* action |
VALUE_IN(WHICH_CLASS(a), 'envisaged version creation'));
REPEAT i := 1 TO HIINDEX(t1_set) WHILE NOT violate;
a_set := QUERY(b <* applied_person_and_organization_assignment |
(VALUE_IN(b.items, t1_set[i]) AND
(b.role.name = 'caused by')));
violate := SIZEOF(a_set) <> 1;
END_REPEAT;
WHERE
WR1: NOT violate;
END_RULE;
(*
Определения аргументов:
applied_person_and_organization_assignment: набор всех экземпляров объектов applied_person_and_organization_assignment.
action: набор всех экземпляров объектов action.
Формальные высказывания:
WR1: На каждый экземпляр объекта action с классификацией 'change realization' приведена ссылка только из одного экземпляра объекта applied_person_and_organization_assignment со значением роли 'caused by'.
Правило caused_by_for_version_creation определяет, что на экземпляр объекта action с классификацией 'version creation' приведена ссылка только из одного экземпляра присваивания типа applied_person_and_organization_assignment со значением роли 'caused by'.
EXPRESS-спецификация:
*)
RULE
caused_by_for_version_creation
FOR(applied_person_and_organization_assignment, action);
LOCAL
t1_set: SET OF action := [];
a_set: SET OF applied_person_and_organization_assignment := [];
violate: LOGICAL := FALSE;
END_LOCAL;
t1_set := QUERY(a <* action |
VALUE_IN(WHICH_CLASS(a), 'version creation'));
REPEAT i := 1 TO HIINDEX(t1_set) WHILE NOT violate;
a_set := QUERY(b <* applied_person_and_organization_assignment |
(VALUE_IN(b.items, t1_set[i]) AND
(b.role.name = 'caused by')));
violate := SIZEOF(a_set) <> 1;
END_REPEAT;
WHERE
WR1: NOT violate;
END_RULE;
(*
Определения аргументов:
applied_person_and_organization_assignment: набор всех экземпляров объектов applied_person_and_organization_assignment.
action: набор всех экземпляров объектов action.
Формальные высказывания:
WR1: На каждый экземпляр объекта action с классификацией 'version creation' приведена ссылка только из одного экземпляра объекта applied_person_and_organization_assignment со значением роли 'caused by'.
Правило caused_by_for_version_deletion определяет, что на экземпляр объекта action с классификацией 'version deletion' приведена ссылка только из одного экземпляра присваивания типа applied_person_and_organization_assignment со значением роли 'caused_by'.
EXPRESS-спецификация:
*)
RULE
caused_by_for_version_deletion
FOR(applied_person_and_organization_assignment, action);
LOCAL
t1_set: SET OF action := [];
a_set: SET OF applied_person_and_organization_assignment := [];
violate: LOGICAL := FALSE;
END_LOCAL;
t1_set := QUERY(a <* action |
VALUE_IN(WHICH_CLASS(a), 'version deletion'));
REPEAT i := 1 TO HIINDEX(t1_set) WHILE NOT violate;
a_set := QUERY(b <* applied_person_and_organization_assignment |
(VALUE_IN(b.items, t1_set[i]) AND
(b.role.name = 'caused by')));
violate := SIZEOF(a_set) <> 1;
END_REPEAT;
WHERE
WR1: NOT violate;
END_RULE;
(*
Определения аргументов:
applied_person_and_organization_assignment: набор всех экземпляров объектов applied_person_and_organization_assignment.
action: набор всех экземпляров объектов action.
Формальные высказывания:
WR1: На каждый экземпляр объекта action с классификацией 'version deletion' приведена ссылка только из одного экземпляра объекта applied_person_and_organization_assignment со значением роли 'caused by'.
Правило caused_by_for_version_modification определяет, что на экземпляр объекта action с классификацией 'version modification' приведена ссылка только из одного экземпляра присваивания типа applied_person_and_organization_assignment со значением роли 'caused_by'.
EXPRESS-спецификация:
*)
RULE
caused_by_for_version_modification
FOR(applied_person_and_organization_assignment, action);
LOCAL
t1_set: SET OF action := [];
a_set: SET OF applied_person_and_organization_assignment := [];
violate: LOGICAL := FALSE;
END_LOCAL;
t1_set := QUERY(a <* action |
VALUE_IN(WHICH_CLASS(a), 'version modification'));
REPEAT i := 1 TO HIINDEX(t1_set) WHILE NOT violate;
a_set := QUERY(b <* applied_person_and_organization_assignment |
(VALUE_IN(b.items, t1_set[i]) AND
(b.role.name = 'caused by')));
violate := SIZEOF(a_set) <> 1;
END_REPEAT;
WHERE
WR1: NOT violate;
END_RULE;
(*
Определения аргументов:
applied_person_and_organization_assignment: набор всех экземпляров объектов applied_person_and_organization_assignment.
action: набор всех экземпляров объектов action.
Формальные высказывания:
WR1: На каждый экземпляр объекта action с классификацией 'version modification' приведена ссылка только из одного экземпляра объекта applied_person_and_organization_assignment со значением роли 'caused by'.
Правило caused_when_for_check определяет, что на экземпляр объекта action с классификацией 'check' приведена ссылка только из одного экземпляра присваивания типа applied_date_and_time_assignment со значением роли 'caused when'.
EXPRESS-спецификация:
*)
RULE
caused_when_for_check
FOR(applied_date_and_time_assignment, action);
LOCAL
t1_set: SET OF action := [];
a_set: SET OF applied_date_and_time_assignment := [];
violate: LOGICAL := FALSE;
END_LOCAL;
t1_set := QUERY(a <* action | VALUE_IN(WHICH_CLASS(a), 'check'));
REPEAT i := 1 TO HIINDEX(t1_set) WHILE NOT violate;
a_set := QUERY(b <* applied_date_and_time_assignment |
(VALUE_IN(b.items, t1_set[i]) AND
(b.role.name = 'caused when')));
violate := SIZEOF(a_set) <> 1;
END_REPEAT;
WHERE
WR1: NOT violate;
END_RULE;
(*
Определения аргументов:
applied_date_and_time_assignment: набор всех экземпляров объектов applied_date_and_time_assignment.
action: набор всех экземпляров объектов action.
Формальные высказывания:
WR1: На каждый экземпляр объекта action с классификацией 'check' приведена ссылка только из одного экземпляра объекта applied_date_and_time_assignment со значением роли 'caused when'.
Правило caused_when_for_envisaged_version_creation определяет, что на экземпляр объекта action с классификацией 'envisaged version creation' приведена ссылка только из одного экземпляра присваивания типа applied_date_and_time_assignment со значением роли 'caused when'.
EXPRESS-спецификация:
*)
RULE
caused_when_for_envisaged_version_creation FOR(applied_date_and_time_assignment, action);
LOCAL
t1_set: SET OF action := [];
a_set: SET OF applied_date_and_time_assignment := [];
violate: LOGICAL := FALSE;
END_LOCAL;
t1_set := QUERY(a <* action | VALUE_IN(WHICH_CLASS(a),
'envisaged version creation'));
REPEAT i := 1 TO HIINDEX(t1_set) WHILE NOT violate;
a_set := QUERY(b <* applied_date_and_time_assignment |
(VALUE_IN(b.items, t1_set[i]) AND
(b.role.name = 'caused when')));
violate := SIZEOF(a_set) <> 1;
END_REPEAT;
WHERE
WR1: NOT violate;
END_RULE;
(*
Определения аргументов:
applied_date_and_time_assignment: набор всех экземпляров объектов applied_date_and_time_assignment.
action: набор всех экземпляров объектов action.
Формальные высказывания:
WR1: На каждый экземпляр объекта action с классификацией 'envisaged version creation' приведена ссылка только из одного экземпляра объекта applied_date_and_time_assignment со значением роли 'caused when'.
Правило caused_when_for_version_creation определяет, что на экземпляр объекта action с классификацией 'version creation' приведена ссылка только из одного экземпляра присваивания типа applied_date_and_time_assignment со значением роли 'caused when'.
EXPRESS-спецификация:
*)
RULE
caused_when_for_version_creation
FOR(applied_date_and_time_assignment, action);
LOCAL
t1_set: SET OF action := [];
a_set: SET OF applied_date_and_time_assignment := [];
violate: LOGICAL := FALSE;
END_LOCAL;
t1_set := QUERY(a <* action |
VALUE_IN(WHICH_CLASS(a), 'version creation'));
REPEAT i := 1 TO HIINDEX(t1_set) WHILE NOT violate;
a_set := QUERY(b <* applied_date_and_time_assignment |
(VALUE_IN(b.items, t1_set[i]) AND
(b.role.name = 'caused when')));
violate := SIZEOF(a_set) <> 1;
END_REPEAT;
WHERE
WR1: NOT violate;
END_RULE;
(*
Определения аргументов:
applied_date_and_time_assignment: набор всех экземпляров объектов applied_date_and_time_assignment.
action: набор всех экземпляров объектов action.
Формальные высказывания:
WR1: На каждый экземпляр объекта action с классификацией 'version creation' приведена ссылка только из одного экземпляра объекта applied_date_and_time_assignment со значением роли 'caused when'.
Правило caused_when_for_version_modification определяет, что на экземпляр объекта action с классификацией 'version modification' приведена ссылка только из одного экземпляра присваивания типа applied_date_and_time_assignment со значением роли 'caused when'.
EXPRESS-спецификация:
*)
RULE
caused_when_for_version_modification FOR(applied_date_and_time_assignment, action);
LOCAL
t1_set: SET OF action := [];
a_set: SET OF applied_date_and_time_assignment := [];
violate: LOGICAL := FALSE;
END_LOCAL;
t1_set := QUERY(a <* action |
VALUE_IN(WHICH_CLASS(a), 'version modification'));
REPEAT i := 1 TO HIINDEX(t1_set) WHILE NOT violate;
a_set := QUERY(b <* applied_date_and_time_assignment |
(VALUE_IN(b.items, t1_set[i]) AND
(b.role.name = 'caused when')));
violate := SIZEOF(a_set) <> 1;
END_REPEAT;
WHERE
WR1: NOT violate;
END_RULE;
(*
Определения аргументов:
applied_date_and_time_assignment: набор всех экземпляров объектов applied_date_and_time_assignment.
action: набор всех экземпляров объектов action.
Формальные высказывания:
WR1: На каждый экземпляр объекта action с классификацией 'version modification' приведена ссылка только из одного экземпляра объекта applied_date_and_time_assignment со значением роли 'caused when'.
Правило caused_when_for_version_deletion определяет, что на экземпляр объекта action с классификацией 'version deletion' приведена ссылка только из одного экземпляра присваивания типа applied_date_and_time_assignment со значением роли 'caused when'.
EXPRESS-спецификация:
*)
RULE
caused_when_for_version_deletion FOR(applied_date_and_time_assignment, action);
LOCAL
t1_set: SET OF action := [];
a_set: SET OF applied_date_and_time_assignment := [];
violate: LOGICAL := FALSE;
END_LOCAL;
t1_set := QUERY(a <* action |
VALUE_IN(WHICH_CLASS(a), 'version deletion'));
REPEAT i := 1 TO HIINDEX(t1_set) WHILE NOT violate;
a_set := QUERY(b <* applied_date_and_time_assignment |
(VALUE_IN(b.items, t1_set[i]) AND
(b.role.name = 'caused when')));
violate := SIZEOF(a_set) <> 1;
END_REPEAT;
WHERE
WR1: NOT violate;
END_RULE;
(*
Определения аргументов:
applied_date_and_time_assignment: набор всех экземпляров объектов applied_date_and_time_assignment.
action: набор всех экземпляров объектов action.
Формальные высказывания:
WR1: На каждый экземпляр объекта action с классификацией 'version deletion' приведена ссылка только из одного экземпляра объекта applied_date_and_time_assignment со значением роли 'caused when'.
Правило centre_location_compound_representation_has_specified_name определяет наличие у атрибута item_element объекта compound_representation_item с идентификатором класса 'centre location' в объекте list_representation_item для каждой записи в перечне только одного объекта representation_item, значение атрибута name которого указано в этом перечне.
EXPRESS-спецификация:
*)
RULE centre_location_compound_representation_has_specified_name
FOR (APPLIED_CLASSIFICATION_ASSIGNMENT);
LOCAL
c_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT := [];
t1_set: SET OF Compound_representation_item := [];
t2_set: SET OF representation_item := [];
arg_list: LIST OF STRING := ['longitudinal location', 'transversal
location', 'vertical location'];
violation: LOGICAL := FALSE;
END_LOCAL;
(* get all classification_assignment instances with id 'centre location' *)
c_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.ASSIGNED_CLASS.NAME = 'centre location');
(* get all instances of compound_representation_item that have class id
'centre location' *)
REPEAT i := 1 TO HIINDEX(c_a_set);
REPEAT j := 1 TO HIINDEX(c_a_set[i].items);
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
(* iterate over all compound_representation_item found above; stop, if one of
them has not exactly one rep_item for each name in the arg_list
*)
REPEAT i:=1 TO HIINDEX(t1_set) WHILE (NOT violation);
REPEAT j:=1 TO HIINDEX(arg_list) WHILE (NOT violation);
t2_set := t1_set[i].item_element;
violation := (SIZEOF(QUERY(items <* t2_set | items.name = arg_list[j])) <> 1);
END_REPEAT;
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
applied_classification_assignment: набор всех экземпляров объектов applied_classification_assignment.
Формальные высказывания:
WR1: У каждого экземпляра объекта compound_representation_item, имеющего объект hat has an applied_classification_assignment со значением атрибута assigned_classification.name, равным 'centre location', должен быть свой атрибут item_element, экземпляр которого должен создаваться как list_representation_item, который должен для каждого из следующих значений: 'longitudinal location', 'transversal location', 'vertical location' забирать только один экземпляр объекта representation_item с атрибутом name, значение которого равно этому значению.
Правило change_impact_with_versionable_object_change_event определяет, что каждое присваивание типа applied_action_request_assignment со значением 'change impact' для role должно ссылаться хотя бы на один элемент с классификацией 'versionable object change event' через его атрибут items.
EXPRESS-спецификация:
*)
RULE
change_impact_with_versionable_object_change_event
FOR(applied_action_request_assignment);
LOCAL
t1_set: SET OF applied_action_request_assignment := [];
a_set: SET OF action := [];
violate: LOGICAL := FALSE;
END_LOCAL;
t1_set := QUERY(b <* applied_action_request_assignment |
(b.role.name= 'change impact'));
REPEAT i := 1 TO HIINDEX(t1_set) WHILE NOT violate;
a_set := QUERY(b <* t1_set[i].items |
('SHIP_MOULDED_FORM_SCHEMA.ACTION' IN TYPEOF(b)) AND
VALUE_IN(WHICH_CLASS(b), 'versionable object change event'));
violate := SIZEOF(a_set) = 0;
END_REPEAT;
WHERE
WR1: NOT violate;
END_RULE;
(*
Определения аргументов:
applied_action_request_assignment: набор всех экземпляров объектов applied_action_request_assignment.
Формальные высказывания:
WR1: Каждый экземпляр объекта applied_action_request_assignment, значение для role которого равно 'change impact', должен ссылаться хотя бы на один экземпляр, содержащий объект applied_classification_assignment, чей объект assigned_class представляет собой объект group с атрибутом name, равным 'versionable object change event', через его атрибут items.
Правило change_plan_has_mandatory_attribute_description определяет, что для экземпляра объекта action_request_solution со значением идентификатора класса 'alternative version relationship' приведен экземпляр необязательного атрибута description.
EXPRESS-спецификация:
*)
RULE
change_plan_has_mandatory_attribute_description
FOR (action_request_solution);
LOCAL
t1_set: SET OF action_request_solution := [];
violate: LOGICAL := FALSE;
END_LOCAL;
t1_set := QUERY(i <* action_request_solution |
VALUE_IN(WHICH_CLASS(i), 'change plan'));
violate := (SIZEOF(QUERY(k <* t1_set |
NOT EXISTS (k.description))) > 0);
WHERE
WR1: NOT violate;
END_RULE;
(*
Определения аргументов:
action_request_solution: набор всех экземпляров объектов action_request_solution.
Формальные высказывания:
WR1: Необязательный атрибут description должен быть для каждого экземпляра объекта action_request_solution, содержащего объект applied_classification_assignment, чей объект assigned_class представляет собой group с атрибутом name, значение которого равно 'change plan'.
Правило class_and_statutory_designation_has_properties определяет, что на объект product_definition с идентификатором класса 'class and statutory designation' должна быть дана ссылка из одного объекта property_definition_representation со значением 'class and statutory designation' для name через объект property_definition.
EXPRESS-спецификация:
*)
RULE class_and_statutory_designation_has_properties FOR (property_definition_
representation, applied_classification_assignment);
LOCAL
c_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT := [];
t1_list: LIST OF product_definition := [];
t2_set: SET OF property_definition_representation := [];
t3_list: LIST OF property_definition := [];
t4_list: LIST OF product_definition := [];
violation: LOGICAL := FALSE;
END_LOCAL;
c_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.assigned_class.NAME =
'class and statutory designation');
REPEAT i := 1 TO HIINDEX(c_a_set);
REPEAT j := 1 TO HIINDEX(c_a_set[i].items);
t1_list := t1_list + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
t2_set := QUERY(i <* PROPERTY_DEFINITION_REPRESENTATION |
i.NAME = 'class and statutory designation');
REPEAT i := 1 TO HIINDEX(t2_set);
t3_list := t3_list + t2_set[i].definition;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t3_list);
t4_list := t4_list + t3_list[i].definition;
END_REPEAT;
violation := t1_list <> t4_list;
WHERE
WR1: NOT violation;
END_RULE;
(*
Определения аргументов:
property_definition_representation: набор всех экземпляров объектов property_definition_representation.
applied_classification_assignment: набор всех экземпляров объектов applied_classification_assignment.
Формальные высказывания:
WR1: На каждый экземпляр объекта product_definition, содержащий объект applied_classification_assignment, чей атрибут assigned_classification представляет собой group со значением 'class and statutory designation' для атрибута name, должна быть дана ссылка только их одного экземпляра объекта property_definition через атрибут definition, на который, в свою очередь, приведена ссылка из экземпляра объекта property_definition_representation через атрибут definition, значение атрибута name которого равно 'class and statutory designation'.
Правило class_notation_with_named_representation_items определяет наличие для атрибута items объекта representation для каждой записи в перечне одного или нескольких объектов representation_items, значение атрибута name которого указано в этом перечне, если объект representation представляет собой объект used_representation в объекте property_definition_representation, значение атрибута name которого равно 'class notation'.
EXPRESS-спецификация:
*)
RULE class_notation_with_named_representation_items FOR (representation);
LOCAL
reps: BAG OF REPRESENTATION := [];
arg_list: LIST OF STRING := ['class notations hull',
violation: LOGICAL := FALSE;
END_LOCAL;
reps := QUERY(
temp_rep <* representation |
SIZEOF (
QUERY(
temp_prop_def_rep <* bag_to_set(USEDIN(temp_rep,
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.'+
'USED_REPRESENTATION'))
| (temp_prop_def_rep.name = 'class notation')
)
) > 0
);
REPEAT i:=1 TO HIINDEX(reps) WHILE (NOT violation);
REPEAT j:=1 TO HIINDEX(arg_list) WHILE (NOT violation);
violation := (SIZEOF(QUERY(rep_item <* reps[i].items |
rep_item.name = arg_list[j])) < 1);
END_REPEAT;
END_REPEAT;
WHERE
WR1: NOT violation;
END_RULE;
(*
Определения аргументов:
representation: набор всех экземпляров объектов representation.
Формальные высказывания:
WR1: Каждый экземпляр объекта representation, представляющего собой объект the used_representation в экземпляре объекта property_definition_representation, значение атрибута name которого равно 'class notation', должен для каждого из следующих значений 'class notations hull' или 'class notations machinery' собирать хотя бы один экземпляр объекта representation_item в его атрибуте items, чей атрибут name равен этому значению.
Правило class_parameters_has_properties определяет, что на объект product_definition с идентификатором класса 'class parameters' приведена ссылка из одного объекта property_definition_representation со значением 'class parameters' для name через объект property_definition.
EXPRESS-спецификация:
*)
RULE class_parameters_has_properties FOR (property_definition_representation,
applied_classification_assignment);
LOCAL
c_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT := [];
t1_set: LIST OF product_definition := [];
t2_set: SET OF property_definition_representation := [];
t3_set: LIST OF property_definition := [];
t4_set: LIST OF product_definition := [];
violation: LOGICAL := FALSE;
END_LOCAL;
c_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.assigned_class.NAME =
'class parameters');
REPEAT i := 1 TO HIINDEX(c_a_set);
REPEAT j := 1 TO HIINDEX(c_a_set[i].items);
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
t2_set:= QUERY(i <* PROPERTY_DEFINITION_REPRESENTATION |
i.NAME = 'class parameters');
REPEAT i := 1 TO HIINDEX(t2_set);
t3_set := t3_set + t2_set[i].definition;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t3_set);
t4_set := t4_set + t3_set[i].definition;
END_REPEAT;
violation := t1_set <> t4_set;
WHERE
WR1: NOT violation;
END_RULE;
(*
Определения аргументов:
property_definition_representation: набор всех экземпляров объектов property_definition_representation.
applied_classification_assignment: набор всех экземпляров объектов applied_classification_assignment.
Формальные высказывания:
WR1: На каждый экземпляр объекта product_definition, содержащий объект applied_classification_assignment, чей атрибут assigned_class представляет собой group со значением 'class parameters' для атрибута name, должна быть дана ссылка только их одного экземпляра объекта property_definition через атрибут definition, на который в свою очередь приведена ссылка из экземпляра объекта property_definition_representation через атрибут definition, значение атрибута name которого равно 'class parameters'.
Правило compound_representation_item_with_hydrostatic_properties определяет наличие у атрибута item_element объекта compound_representation_item с идентификатором класса 'hydrostatic properties for constant floating position' в объекте list_representation_item для каждой записи в перечне одного или нескольких объектов representation_item, значение атрибута name которого указано в этом перечне.
EXPRESS-спецификация:
*)
RULE
compound_representation_item_with_hydrostatic_properties
FOR (APPLIED_CLASSIFICATION_ASSIGNMENT);
LOCAL
c_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT := [];
t1_set: SET OF COMPOUND_REPRESENTATION_ITEM := [];
t2_set: LIST OF representation_item := [];
arg_list: LIST OF STRING := ['hydrostatic property value']
violation: LOGICAL := FALSE;
END_LOCAL;
(* get all classification_assignment instances with id 'hydrostatic
properties for constant floating position' *)
c_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.Assigned_class.name = 'hydrostatic properties for constant
floating position');
(* get all instances of compound_representation_item that have class id
'hydrostatic properties for constant floating position' *)
REPEAT i := 1 TO HIINDEX(c_a_set);
REPEAT j := 1 TO HIINDEX(c_a_set[i].items);
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
(* iterate over all compound_representation_item found above; stop, if one of
them has not one or more rep_item for each name in the arg_list *)
REPEAT i:=1 TO HIINDEX(t1_set) WHILE (NOT violation);
REPEAT j:=1 TO HIINDEX(arg_list) WHILE (NOT violation);
t2_set := t1_set[i].item_element;
violation := (SIZEOF(QUERY(items <* t2_set | items.name = arg_list[j])) < 1);
END_REPEAT;
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
applied_classification_assignment: набор всех экземпляров объектов applied_classification_assignment.
Формальные высказывания:
WR1: У каждого экземпляра объекта compound_representation_item, имеющего объект applied_classification_assignment со значением атрибута assigned_class.name, равным 'hydrostatic properties for constant floating position', должен быть свой атрибут item_element, экземпляр которого создавался как list_representation_item, который должен для каждого из следующих значений: 'hydrostatic property value' забирать хотя бы один экземпляр объекта representation_item с атрибутом name, значение которого равно этому значению.
Правило compound_representation_item_with_class_id_knot определяет наличие для атрибута item_element объекта compound_representation_item с идентификатором класса 'knot' в объекте list_representation_item двух или более объектов compound_representation_item с идентификатором класса 'ship curve'.
EXPRESS-спецификация:
*)
RULE compound_representation_item_with_class_id_knot
FOR (APPLIED_CLASSIFICATION_ASSIGNMENT);
LOCAL
c_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT:= [];
c_a_set2: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT:= [];
t1_set: SET OF COMPOUND_REPRESENTATION_ITEM := [];
t2_set: SET OF COMPOUND_REPRESENTATION_ITEM := [];
t3_set: SET OF REPRESENTATION_ITEM := [];
l_rep_item : list_representation_item;
violation: LOGICAL := FALSE;
END_LOCAL;
(* get all classification_assignment instances with id 'knot' *)
c_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.ASSIGNED_CLASS.NAME = 'knot');
(* get all instances of compound_representation_item that have class id 'knot' *)
REPEAT i := 1 TO HIINDEX(c_a_set);
REPEAT j := 1 TO HIINDEX(c_a_set[i].items);
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
(* get all classification_assignment instances with id 'ship curve' *)
c_a_set2 := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.ASSIGNED_CLASS.NAME = 'ship curve');
(* get all instances of compound_representation_item that have class id 'ship curve' *)
REPEAT i := 1 TO HIINDEX(c_a_set2);
REPEAT j := 1 TO HIINDEX(c_a_set2[i].items);
t2_set := t2_set + c_a_set2[i].items[j];
END_REPEAT;
END_REPEAT;
(* iterate over all compound_representation_item found in the first list;
then iterate over all item_element for each compound_representation_item, check
that the intersection of these item_elements and the second list of compound_
representation_item is greater then or equal to 2 *)
REPEAT i := 1 TO HIINDEX(t1_set) WHILE (NOT violation);
l_rep_item := t1_set[i].item_element;
REPEAT j := 1 TO HIINDEX(t1_set[i].item_element);
t3_set := t3_set + l_rep_item[j];
END_REPEAT;
violation := (SIZEOF(t3_set * t2_set) < 2);
t3_set:= [];
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
applied_classification_assignment: набор всех экземпляров объектов applied_classification_assignment.
Формальные высказывания:
WR1: У каждого экземпляра объекта compound_representation_item, содержащего объект applied_classification_assignment, чей атрибут assigned_class.name равен значению 'knot', должен быть свой атрибут item_element, экземпляр которого приведен как list_representation_item, который должен собирать хотя бы два экземпляра объекта compound_representation_item, содержащего объект applied_classification_assignment, чей атрибут assigned_class равен значению 'ship curve'.
Правило compound_representation_item_with_section_identifier определяет, что на экземпляр объекта compound_representation_item с идентификатором класса 'section of offset point table' приведена ссылка только из одного экземпляра объекта applied_identification_assignment через items, атрибут role которого имеет значение 'section identifier'.
EXPRESS-спецификация:
*)
RULE compound_representation_item_with_section_identifier
FOR(APPLIED_CLASSIFICATION_ASSIGNMENT);
LOCAL
c_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT := [];
t1_set: SET OF compound_representation_item := [];
t2_set: SET OF applied_identification_assignment := [];
violation: LOGICAL := FALSE;
END_LOCAL;
(* get all classification_assignment instances with id 'section of offset
point table' *)
c_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.ASSIGNED_CLASS.NAME = 'section of offset point table');
(* get all instances of compound_representation_item that have class id
'section of offset point table' *)
REPEAT i := 1 TO HIINDEX(c_a_set);
REPEAT j := 1 TO HIINDEX(c_a_set[i].items);
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
(* for all instances of compound_representation_item in t1_set:
get the applied_identification_assignment instances that are referencing
a compound_representation_item instance via items, filter out those applied_
identification_assignment instances whose attribute role has the value 'section
identifier' check if their number equals 1 *)
REPEAT i := 1 TO HIINDEX(t1_set) WHILE NOT violation;
t2_set := bag_to_set(USEDIN(t1_set[i], 'SHIP_MOULDED_FORM_SCHEMA.
'+'APPLIED_IDENTIFICATION_ASSIGNMENT' + '.ITEMS'));
violation := NOT (SIZEOF(QUERY(t2_inst <* t2_set | t2_inst.role.name =
'section identifier')) = 1);
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
applied_classification_assignment: набор всех экземпляров объектов applied_classification_assignment.
Формальные высказывания:
WR1: На каждый объект compound_representation_item, на который дана ссылка из объекта applied_classification_assignment, где name = 'section of offset point table', приведена ссылка только из одного объекта applied_identification_assignment.items, где applied_identification_assignment.role = 'section identifier'.
Правило date_time_for_change_plan определяет, что на экземпляр объекта action_request_solution с классификацией 'change plan' приведена ссылка только из одного экземпляра присваивания типа applied_date_and_time_assignment со значением роли 'date time'.
EXPRESS-спецификация:
*)
RULE
date_time_for_change_plan
FOR(applied_date_and_time_assignment, action_request_solution);
LOCAL
t1_set: SET OF action_request_solution := [];
a_set: SET OF applied_date_and_time_assignment := [];
violate: LOGICAL := FALSE;
END_LOCAL;
t1_set := QUERY(a <* action_request_solution |
VALUE_IN(WHICH_CLASS(a), 'change plan'));
REPEAT i := 1 TO HIINDEX(t1_set) WHILE NOT violate;
a_set := QUERY(b <* applied_date_and_time_assignment |
(VALUE_IN(b.items, t1_set[i]) AND
(b.role.name = 'date time')));
violate := SIZEOF(a_set) <> 1;
END_REPEAT;
WHERE
WR1: NOT violate;
END_RULE;
(*
Определения аргументов:
applied_date_and_time_assignment: набор всех экземпляров объектов applied_date_and_time_assignment.
action_request_solution: набор всех экземпляров объектов action_request_solution.
Формальные высказывания:
WR1: На каждый экземпляр объекта action_request_solution с классификацией 'change plan' для role приведена ссылка только из одного экземпляра объекта applied_date_and_time_assignment со значением роли 'date time'.
Правило date_time_for_change_request определяет, что на экземпляр объекта versioned_action с классификацией 'change request' приведена ссылка только из одного экземпляра присваивания типа applied_date_and_time_assignment со значением роли 'date time'.
EXPRESS-спецификация:
*)
RULE
date_time_for_change_request
FOR(applied_date_and_time_assignment, versioned_action_request);
LOCAL
t1_set: SET OF versioned_action_request := [];
a_set: SET OF applied_date_and_time_assignment := [];
violate: LOGICAL := FALSE;
END_LOCAL;
t1_set := QUERY(a <* versioned_action_request |
VALUE_IN(WHICH_CLASS(a), 'change request'));
REPEAT i := 1 TO HIINDEX(t1_set) WHILE NOT violate;
a_set := QUERY(b <* applied_date_and_time_assignment |
(VALUE_IN(b.items, t1_set[i]) AND
(b.role.name = 'date time')));
violate := SIZEOF(a_set) <> 1;
END_REPEAT;
WHERE
WR1: NOT violate;
END_RULE;
(*
Определения аргументов:
applied_date_and_time_assignment: набор всех экземпляров объектов applied_date_and_time_assignment.
versioned_action_request: набор всех экземпляров объектов versioned_action_request.
Формальные высказывания:
WR1: На каждый экземпляр объекта versioned_action_request с классификацией 'change request' приведена ссылка только из одного экземпляра объекта applied_date_and_time_assignment со значением роли 'date time'.
Правило date_time_for_change_realisation определяет, что на экземпляр объекта executed_action с классификацией 'change realization' приведена ссылка только из одного экземпляра присваивания типа applied_date_and_time_assignment со значением роли 'date time'.
EXPRESS-спецификация:
*)
RULE
date_time_for_change_realisation
FOR(applied_date_and_time_assignment, executed_action);
LOCAL
t1_set: SET OF executed_action := [];
a_set: SET OF applied_date_and_time_assignment := [];
violate: LOGICAL := FALSE;
END_LOCAL;
t1_set := QUERY(a <* executed_action |
VALUE_IN(WHICH_CLASS(a), 'change realisation'));
REPEAT i := 1 TO HIINDEX(t1_set) WHILE NOT violate;
a_set := QUERY(b <* applied_date_and_time_assignment |
(VALUE_IN(b.items, t1_set[i]) AND
(b.role.name = 'date time')));
violate := SIZEOF(a_set) <> 1;
END_REPEAT;
WHERE
WR1: NOT violate;
END_RULE;
(*
Определения аргументов:
applied_date_and_time_assignment: набор всех экземпляров объектов applied_date_and_time_assignment.
executed_action: набор всех экземпляров объектов executed_action.
Формальные высказывания:
WR1: На каждый экземпляр объекта executed_action с классификацией 'change realization' приведена ссылка только из одного экземпляра объекта applied_date_and_time_assignment со значением роли 'date time'.
Правило document_has_at_least_one_references определяет, что на экземпляр объекта document с классификацией 'document' приведена ссылка хотя бы из одного экземпляра объекта document_representation_type через represented_document.
EXPRESS-спецификация:
*)
RULE document_has_at_least_one_references
FOR(document);
LOCAL
t1_set: SET OF document := [];
t2_set: SET OF document_representation_type := [];
violate: LOGICAL := FALSE;
END_LOCAL;
t1_set := QUERY(i <* document | VALUE_IN(WHICH_CLASS(i),'document'));
REPEAT i := 1 TO HIINDEX(t1_set) WHILE NOT violate;
t2_set := bag_to_set(USEDIN(t1_set[i],
'SHIP_MOULDED_FORM_SCHEMA.DOCUMENT_REPRESENTATION_TYPE.'+
'REPRESENTED_DOCUMENT'));
violate := SIZEOF(t2_set) < 1;
END_REPEAT;
WHERE
WR1: NOT violate;
END_RULE;
(*
Определения аргументов:
document: набор всех экземпляров объектов document.
Формальные высказывания:
WR1: На каждый экземпляр объекта document, содержащего объект applied_classification_assignment, где assigned_class представляет собой group со значением атрибута name, равным 'document', должна быть дана ссылка из одного или нескольких экземпляров объекта document_representation_type через атрибут represented_document.
Правило document_has_exactly_one_author определяет, что на каждый экземпляр типа document должна быть дана ссылка только из одного экземпляра типа applied_person_assignment или applied_organization_assignment, или applied_person_and_organization_assignment, где последний экземпляр содержит роль со значением 'author'.
EXPRESS-спецификация:
*)
RULE document_has_exactly_one_author
FOR(document);
LOCAL
bag_1: BAG OF applied_person_assignment := [];
bag_2: BAG OF applied_person_and_organization_assignment := [];
bag_3: BAG OF applied_organization_assignment := [];
violate: LOGICAL := FALSE;
END_LOCAL;
REPEAT i := 1 TO SIZEOF(document) WHILE (NOT violate);
bag_1 := USEDIN(document[i], 'SHIP_MOULDED_FORM_SCHEMA.' +
'APPLIED_PERSON_ASSIGNMENT.ITEMS');
bag_1 := QUERY( assign <* bag_1 | assign.role.name = 'author');
bag_2 := USEDIN(document[i], 'SHIP_MOULDED_FORM_SCHEMA.' +
'APPLIED_PERSON_AND_ORGANIZATION_ASSIGNMENT.ITEMS');
bag_2 := QUERY( assign <* bag_2 | assign.role.name = 'author');
bag_3 := USEDIN(document[i], 'SHIP_MOULDED_FORM_SCHEMA.' +
'APPLIED_ORGANIZATION_ASSIGNMENT.ITEMS');
bag_3 := QUERY( assign <* bag_3 | assign.role.name = 'author');
violate := NOT ((SIZEOF( bag_1 ) + SIZEOF( bag_2 )+ SIZEOF( bag_3 )) = 1);
END_REPEAT;
WHERE
WR1: NOT violate;
END_RULE;
(*
Определения аргументов:
document: набор всех экземпляров объектов document.
Формальные высказывания:
WR1: На каждый экземпляр объекта document должна быть дана ссылка только из одного экземпляра объекта applied_person_assignment, applied_organization_assignment или applied_person_and_organization_assignment со значением роли 'author'.
Правило document_reference_with_address_has_at_least_one_references определяет, что на экземпляр объекта document с идентификатором класса 'document reference with address' должна быть дана ссылка хотя бы из одного экземпляра объекта applied_external_identification_assignments через items.
EXPRESS-спецификация:
*)
RULE document_reference_with_address_has_at_least_one_references
FOR(document);
LOCAL
t1_set: SET OF document := [];
t2_set: SET OF applied_external_identification_assignment := [];
violate: LOGICAL := FALSE;
END_LOCAL;
t1_set := QUERY(i <* document | VALUE_IN(WHICH_CLASS(i), 'document reference with address'));
REPEAT i := 1 TO HIINDEX(t1_set) WHILE NOT violate;
t2_set := bag_to_set(USEDIN(t1_set[i],
'SHIP_MOULDED_FORM_SCHEMA.APPLIED_EXTERNAL_IDENTIFICATION_ASSIGNMENT.ITEMS'));
violate := SIZEOF(t2_set) < 1;
END_REPEAT;
WHERE
WR1: NOT violate;
END_RULE;
(*
Определения аргументов:
document: набор всех экземпляров объектов document.
Формальные высказывания:
WR1: На каждый экземпляр объекта document, содержащего объект applied_classification_assignment, где assigned_class представляет собой group со значением атрибута name, равным 'document reference with address', должна быть дана ссылка из одного или нескольких экземпляров объекта applied_external_identification_assignments через атрибут items.
Правило envisaged_version_creation_has_mandatory_attribute_description определяет, что для экземпляра объекта action с идентификатором класса 'alternative version relationship' приведен экземпляр необязательного атрибута description.
EXPRESS-спецификация:
*)
RULE
envisaged_version_creation_has_mandatory_attribute_description
FOR (action);
LOCAL
t1_set: SET OF action := [];
violate: LOGICAL := FALSE;
END_LOCAL;
t1_set := QUERY(i <* action | VALUE_IN(WHICH_CLASS(i),
'envisaged version creation'));
violate := (SIZEOF(QUERY(k <* t1_set |
NOT EXISTS (k.description))) > 0);
WHERE
WR1: NOT violate;
END_RULE;
(*
Определения аргументов:
action: набор всех экземпляров объектов action.
Формальные высказывания:
WR1: Необязательный атрибут description должен быть для каждого экземпляра объекта action, содержащего объект applied_classification_assignment, чей объект assigned_class представляет собой group с атрибутом name, значение которого равно 'envisaged version creation'.
Правило executed_action_with_identification_assignment задает перечень объектов, для которых требуется идентификация. Идентификация определяется объектом applied_identification_assignment.
EXPRESS-спецификация:
*)
RULE executed_action_with_identification_assignment
FOR (APPLIED_CLASSIFICATION_ASSIGNMENT);
LOCAL
c_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT := [];
t1_set: SET OF executed_action := [];
t2_set: SET OF applied_identification_assignment := [];
arg_list: LIST OF STRING := [ 'change realization'];
violation: LOGICAL := FALSE;
END_LOCAL;
REPEAT j:= 1 TO HIINDEX(arg_list) WHILE (NOT violation);
c_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.assigned_class.NAME = arg_LIST[j]);
END_REPEAT;
REPEAT i := 1 TO HIINDEX(c_a_set);
REPEAT j := 1 TO HIINDEX(c_a_set[i].items);
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
t2_set := bag_to_set(USEDIN(t1_set[i], 'SHIP_MOULDED_FORM_SCHEMA.APPLIED_
IDENTIFICATION_ASSIGNMENT.ITEMS'));
t2_set := QUERY ( j <* t2_set | j.role.name = 'globally unambiguous
identifier');
violation := NOT (SIZEOF(T2_SET) = 1);
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
applied_classification_assignment: набор всех экземпляров объектов applied_classification_assignment.
Формальные высказывания:
WR1: Для каждого экземпляра объекта executed_action, на который приведена ссылка из объекта application_classification_assignment, чей объект assigned_class содержит атрибут name со значением 'change realization', должен требоваться объект application_identification_assignment для определения идентификатора экземпляра.
Правило external_instance_reference_has_same_identifier подтверждает, что глобальный идентификатор, хранящийся в атрибуте assigned_id объекта applied_external_identification_assignment, идентичен глобальному идентификатору, хранящемуся в атрибуте assigned_id объекта applied_identification_assignment, для каждого объекта, на который приведена ссылка из обоих объектов, applied_external_identification_assignment и applied_identification_assignment.
EXPRESS-спецификация:
*)
RULE external_instance_reference_has_same_identifier FOR (
applied_external_identification_assignment);
LOCAL
violation : LOGICAL := FALSE;
extref_set : SET OF applied_external_identification_assignment := [];
aia_set : SET OF applied_identification_assignment := [];
END_LOCAL;
extref_set := QUERY ( i <* applied_external_identification_assignment |
(i.role.name = 'external instance reference') );
REPEAT i := 1 TO HIINDEX(extref_set) BY 1 WHILE NOT violation;
aia_set := bag_to_set(USEDIN(extref_set[i].items[1],
'SHIP_MOULDED_FORM_SCHEMA.APPLIED_IDENTIFICATION_ASSIGNMENT.ITEMS'));
violation := NOT (aia_set[1].assigned_id = extref_set[i].assigned_id);
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE; -- external_instance_reference_has_same_identifier
(*
Определения аргументов:
applied_external_identification_assignment: набор всех экземпляров объектов applied_external_identification_assignment.
Формальные высказывания:
WR1: Для каждого экземпляра, на который приведена ссылка и из объекта applied_external_identification_assignment в роли со значением 'external instance reference', и из объекта applied_identification_assignment, значение, хранящееся в атрибуте assigned_id каждого из этих объектов присваивания, должно быть одинаковым.
Правило floating_position_compound_representation_with_name определяет наличие у атрибута item_element объекта compound_representation_item с идентификатором класса 'floating position' в объекте list_representation_item для каждой записи в перечне только одного объекта representation_item, значение атрибута name которого указано в этом перечне.
EXPRESS-спецификация:
*)
RULE floating_position_compound_representation_with_name
FOR (APPLIED_CLASSIFICATION_ASSIGNMENT);
LOCAL
c_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT := [];
t1_set: SET OF Compound_representation_item := [];
t2_set: SET OF representation_item := [];
arg_list: LIST OF STRING := ['moulded form displacement', 'draught at amidships',
'length of waterline', 'breadth of waterline', 'angle of trim', 'angle of heel'];
violation: LOGICAL := FALSE;
END_LOCAL;
(* get all classification_assignment instances with id 'floating position' *)
c_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.Assigned_class.name = 'floating position');
(* get all instances of compound_representation_item that have class id 'floating
position' *)
REPEAT i := 1 TO HIINDEX(c_a_set);
REPEAT j := 1 TO HIINDEX(c_a_set[i].items);
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
(* iterate over all compound_representation_item found above; stop, if one of them
has not exactly one rep_item for each name in the arg_list *)
REPEAT i:= 1 TO HIINDEX(t1_set) WHILE (NOT violation);
REPEAT j:= 1 TO HIINDEX(arg_list) WHILE (NOT violation);
t2_set := t1_set[i].item_element;
violation := (SIZEOF(QUERY(items <* t2_set | items.name = arg_list[j])) <> 1);
END_REPEAT;
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
applied_classification_assignment: набор всех экземпляров объектов applied_classification_assignment.
Формальные высказывания:
WR1: Для каждого экземпляра объекта compound_representation_item, содержащего объект applied_classification_assignment, чей атрибут assigned_class.name равен 'floating position', должен быть свой атрибут item_element, экземпляр которого приведен как list_representation_item, который для каждого из следующих значений: 'moulded form displacement', 'draught at amidships', 'length of waterline', 'breadth of waterline', 'angle of trim', 'angle of heel' должен забирать только один экземпляр объекта representation_item, чей атрибут name равен этому значению.
Правило global_axis_placement_has_properties определяет, что на объект product_definition с идентификатором класса 'global axis placement' приведена ссылка из одного объекта property_definition_representation со значением 'global axis placement' для name через объект property_definition.
EXPRESS-спецификация:
*)
RULE global_axis_placement_has_properties
FOR (property_definition_representation,
group, applied_classification_assignment);
LOCAL
c_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT := [];
t1_set: LIST OF product_definition := [];
t2_set: SET OF property_definition_representation := [];
t3_set: LIST OF property_definition := [];
t4_set: LIST OF product_definition := [];
violation: LOGICAL := FALSE;
END_LOCAL;
c_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.assigned_class.NAME =
'global axis placement');
REPEAT i := 1 TO HIINDEX(c_a_set);
REPEAT j := 1 TO HIINDEX(c_a_set[i].items);
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
t2_set:= QUERY(i <* PROPERTY_DEFINITION_REPRESENTATION |
i.NAME = 'global axis placement');
REPEAT i := 1 TO HIINDEX(t2_set);
t3_set := t3_set + t2_set[i].definition;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t3_set);
t4_set := t4_set + t3_set[i].definition;
END_REPEAT;
violation := t1_set <> t4_set;
WHERE
WR1: NOT violation;
END_RULE;
(*
Определения аргументов:
property_definition_representation: набор всех экземпляров объектов property_definition_representation.
applied_classification_assignment: набор всех экземпляров объектов applied_classification_assignment.
Формальные высказывания:
WR1: На каждый экземпляр объекта product_definition, содержащий объект applied_classification_assignment, чей атрибут assigned_class представляет собой group со значением 'global axis placement' для атрибута name, должна быть дана ссылка только их одного экземпляра объекта property_definition через атрибут definition, на который, в свою очередь, должна быть дана ссылка из экземпляра объекта property_definition_representation через атрибут definition, значение атрибута name которого равно 'global axis placement'.
Правило global_id_is_unique определяет, что глобальные идентификаторы определяемых предметов являются уникальными и что каждый идентификатор присваивается только одному определяемому предмету.
EXPRESS-спецификация:
*)
RULE global_id_is_unique
FOR (APPLIED_IDENTIFICATION_ASSIGNMENT);
LOCAL
set_1: SET OF APPLIED_IDENTIFICATION_ASSIGNMENT:= [];
bag_2: BAG OF STRING := [];
violation: LOGICAL := FALSE;
END_LOCAL;
(* get all instances of guid *)
set_1 := QUERY(i <* APPLIED_IDENTIFICATION_ASSIGNMENT |
(i.role.name = 'globally unambiguous identifier'));
REPEAT i := 1 TO HIINDEX(set_1);
bag_2 := bag_2 + [set_1[i].assigned_id];
END_REPEAT;
violation := SIZEOF (QUERY(i <* set_1 | (SIZEOF(i.items) = 1))) <> v SIZEOF(set_1);
WHERE
WR1: VALUE_UNIQUE(bag_2);
WR2: NOT violation;
END_RULE;
(*
Определения аргументов:
applied_identification_assignment: набор всех экземпляров объектов applied_identification_assignment.
Формальные высказывания:
WR1: У каждого объекта applied_identification_assignment имеется атрибут role, указывающий объект identification_role с name = 'globally unambiguous identifier', и должно быть уникальное значение для assigned_id.
WR2: Каждый объект applied_identification_assignment, содержащий атрибут role, указывающий объект identification_role с name = 'globally unambiguous identifier', должен указывать только один определяемый предмет в атрибуте tems.
Правило hull_moulded_form_design_parameter_with_class_references определяет, что на экземпляр объекта property_definition с идентификатором класса 'hull moulded form design parameter' приведена ссылка не более чем из одного экземпляра объекта property_definition_representation, чей атрибут used_representation указывает на представление (representation) с идентификатором класса 'midship_tumble'.
EXPRESS-спецификация:
*)
RULE hull_moulded_form_design_parameter_with_class_references FOR(APPLIED_
CLASSIFICATION_ASSIGNMENT);
LOCAL
c_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT := [];
t1_set: SET OF property_definition := [];
t2_set: SET OF property_definition_representation := [];
t3_set: SET OF representation := [];
violation: LOGICAL := FALSE;
END_LOCAL;
(* get all classification_assignment instances with id
'hull moulded form design parameter' *)
c_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.ASSIGNED_CLASS.NAME = 'hull moulded form design parameter');
(* get all instances of property_definition that have class id
'hull moulded form design parameter' *)
REPEAT i := 1 TO HIINDEX(c_a_set);
REPEAT j := 1 TO HIINDEX(c_a_set[i].items);
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
(* for all instances of property_definition in t1_set:
get the property_definition_representation instances that are referencing a property_
definition instance via definition, get those property_definition_representation.used_
representation instances whose class id is 'midship_tumble' and make sure their number
is less than or equal to 1 *)
REPEAT i := 1 TO HIINDEX(t1_set) WHILE NOT violation;
t2_set := bag_to_set(USEDIN(t1_set[i],
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.'+'DEFINITION'));
REPEAT j := 1 to HIINDEX(t2_set) ;
t3_set := t3_set + t2_set[j].used_representation;
END_REPEAT;
violation := SIZEOF(QUERY(t2_inst <* t3_set | 'midship tumble' IN WHICH_CLASS(t2_inst))) > 1;
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
applied_classification_assignment: набор всех экземпляров объектов applied_classification_assignment.
Формальные высказывания:
WR1: На каждый экземпляр объекта property_definition, содержащий объект applied_classification_assignment, где у assigned_class имеется атрибут name со значением 'hull moulded form design parameter', должна быть дана ссылка из одного или менее экземпляров объекта property_definition_representation, который указывает представление (representation) через свой атрибут used_representation, содержащий объект applied_classification_assignment, где у assigned_class имеется атрибут name о значением 'midship tumble'.
Правило hydrostatic_properties_with_specified_class определяет наличие у атрибута item_element объекта compound_representation_item с идентификатором класса 'hydrostatic properties for constant floating position' в объекте list_representation_item только одного объекта compound_representation_item с идентификатором класса 'floating position'.
EXPRESS-спецификация:
*)
RULE
hydrostatic_properties_with_specified_class
FOR (APPLIED_CLASSIFICATION_ASSIGNMENT);
LOCAL
c_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT := [];
c_a_set2 : SET OF APPLIED_CLASSIFICATION_ASSIGNMENT := [];
t1_set: SET OF COMPOUND_REPRESENTATION_ITEM := [];
t2_set: SET OF COMPOUND_REPRESENTATION_ITEM := [];
t3_set: SET OF REPRESENTATION_ITEM := [];
l_rep_item : list_representation_item;
violation: LOGICAL := FALSE;
END_LOCAL;
(* get all classification_assignment instances with id 'hydrostatic properties
for constant floating position' *)
c_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.Assigned_class.name = 'hydrostatic properties for constant
floating position');
(* get all instances of compound_representation_item that have class id
'hydrostatic properties for constant floating position' *)
REPEAT i := 1 TO HIINDEX(c_a_set);
REPEAT j := 1 TO HIINDEX(c_a_set[i].items);
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
(* get all classification_assignment instances with id 'floating position' *)
c_a_set2 := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.Assigned_class.name = 'floating position');
(* get all instances of compound_representation_item that have class id
'floating position' *)
REPEAT i := 1 TO HIINDEX(c_a_set2);
REPEAT j := 1 TO HIINDEX(c_a_set2[i].items);
t2_set := t2_set + c_a_set2[i].items[j];
END_REPEAT;
END_REPEAT;
(* iterate over all compound_representation_item found in the first list; then
iterate over all item_element for each compound_representation_item, check that
the intersection of these item_elements and and the second list of compound_
representation_item is equal 1 *)
REPEAT i:=1 TO HIINDEX(t1_set) WHILE (NOT violation);
l_rep_item := t1_set[i].item_element;
REPEAT j := 1 TO HIINDEX(t1_set[i].item_element);
t3_set := t3_set + l_rep_item[j];
END_REPEAT;
violation := (SIZEOF(t3_set * t2_set) <> 1);
t3_set:= [];
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
applied_classification_assignment: набор всех экземпляров объектов applied_classification_assignment.
Формальные высказывания:
WR1: У каждого экземпляра объекта compound_representation_item, содержащего объект applied_classification_assignment, чей атрибут assigned_class.name равен значению 'hydrostatic properties for constant floating position', должен быть свой атрибут item_element, экземпляр которого приведен как list_representation_item, который должен забирать только один экземпляр объекта compound_representation_item, содержащего объект applied_classification_assignment, чей атрибут assigned_class равен значению 'floating position'.
Правило hydrostatic_property_with_specified_name определяет наличие у атрибута item_element объекта compound_representation_item с идентификатором класса 'hydrostatic property' в объекте list_representation_item для каждой записи в перечне только одного объекта representation_item, значение атрибута name которого указано в этом перечне.
EXPRESS-спецификация:
*)
RULE hydrostatic_property_with_specified_name
FOR (APPLIED_CLASSIFICATION_ASSIGNMENT);
LOCAL
c_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT := [];
t1_set: SET OF Compound_representation_item := [];
t2_set: SET OF representation_item := [];
arg_list: LIST OF STRING := ['property type'];
violation: LOGICAL := FALSE;
END_LOCAL;
(* get all classification_assignment instances with id 'hydrostatic property' *)
c_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.Assigned_class.name = 'hydrostatic property');
(* get all instances of compound_representation_item that have class id
'hydrostatic property' *)
REPEAT i := 1 TO HIINDEX(c_a_set);
REPEAT j := 1 TO HIINDEX(c_a_set[i].items);
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
(* iterate over all compound_representation_item found above; stop, if one of
them has not exactly one rep_item for each name in the arg_list *)
REPEAT i:=1 TO HIINDEX(t1_set) WHILE (NOT violation);
REPEAT j:=1 TO HIINDEX(arg_list) WHILE (NOT violation);
t2_set := t1_set[i].item_element;
violation := (SIZEOF(QUERY(items <* t2_set | items.name = arg_list[j])) <> 1);
END_REPEAT;
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
applied_classification_assignment: набор всех экземпляров объектов applied_classification_assignment.
Формальные высказывания:
WR1: У каждого экземпляра объекта compound_representation_item, содержащего объект applied_classification_assignment со значением атрибута assigned_class.name равным 'hydrostatic property', должен быть свой атрибут item_element, экземпляр которого приведен как list_representation_item, который должен для каждого из следующих значений 'property type' забирать только один экземпляр объекта representation_item с атрибутом name, значение которого равно этому значению.
Правило identification_role_optional_attribute_description_required определяет, что для всех экземпляров типа identification_role представлен необязательный атрибут description, если значение атрибута name этого экземпляра равно 'external reference'.
EXPRESS-спецификация:
*)
RULE identification_role_optional_attribute_description_required FOR
(identification_role);
WHERE
WR1: SIZEOF(QUERY(i <* identification_role |
((i.name = 'external reference')
AND NOT(EXISTS (i.description))))) = 0;
END_RULE;
(*
Определения аргументов:
identification_role: набор всех экземпляров объектов identification_role.
Формальные высказывания:
WR1: Необязательный атрибут description каждого экземпляра объекта identification_role существует, если имя (name) равно 'external reference'.
Правило initiator_for_change_request определяет, что на экземпляр объекта versioned_action_request с классификацией 'change request' приведена ссылка только из одного экземпляра присваивания типа applied_person_and_organization_assignment со значением роли 'initiator'.
EXPRESS-спецификация:
*)
RULE
initiator_for_change_request
FOR(applied_person_and_organization_assignment,
versioned_action_request);
LOCAL
t1_set: SET OF versioned_action_request := [];
a_set: SET OF applied_person_and_organization_assignment := [];
violate: LOGICAL := FALSE;
END_LOCAL;
t1_set := QUERY(a <* versioned_action_request |
VALUE_IN(WHICH_CLASS(a), 'change request'));
REPEAT i := 1 TO HIINDEX(t1_set) WHILE NOT violate;
a_set := QUERY(b <* applied_person_and_organization_assignment |
(VALUE_IN(b.items, t1_set[i]) AND
(b.role.name = 'initiator')));
violate := SIZEOF(a_set) <> 1;
END_REPEAT;
WHERE
WR1: NOT violate;
END_RULE;
(*
Определения аргументов:
applied_person_and_organization_assignment: набор всех экземпляров объектов applied_person_and_organization_assignment.
versioned_action_request: набор всех экземпляров объектов versioned_action_request.
Формальные высказывания:
WR1: На каждый экземпляр объекта versioned_action_request с классификацией 'change request' приведена ссылка только из одного экземпляра объекта applied_person_and_organization_assignment со значением роли 'initiator'.
Правило mandatory_entity_type_for_external_instance_reference определяет, что каждый экземпляр объекта external_source, где объект description имеет значение 'schema name', должно быть в обязательном порядке объектом relating_source экземпляра объекта external_source_relationship, где related_source представляет собой экземпляр объекта external_source, содержащий description со значением 'entity type'.
EXPRESS-спецификация:
*)
RULE mandatory_entity_type_for_external_instance_reference FOR(external_source,
external_source_relationship);
LOCAL
bag_1: BAG OF external_source := [];
violate: LOGICAL := FALSE;
END_LOCAL;
bag_1 := QUERY(a <* external_source | a.description = 'schema name');
REPEAT i := 1 TO SIZEOF(bag_1) WHILE (NOT violate);
violate := (SIZEOF( QUERY(
a <* external_source_relationship | (a.relating_source :=: bag_1[i]) AND
(a.related_source.description = 'entity type'))) = 0 );
END_REPEAT;
WHERE
WR1: NOT violate;
END_RULE;
(*
Определения аргументов:
external_source: набор всех экземпляров объектов external_source.
external_source_relationship: набор всех экземпляров объектов external_source_relationship.
Формальные высказывания:
WR1: Каждый экземпляр объекта external_source, где объект description имеет значение 'schema name', должно быть в обязательном порядке объектом relating_source экземпляра объекта external_source_relationship, где related_source представляет собой экземпляр объекта external_source, содержащий description со значением 'entity type'.
Правило members_is_referenced_by_at_least_one_revision определяет, что на каждый экземпляр типа group с классификацией 'revision' должна быть дана ссылка хотя бы из одного присваивания типа applied_group_assignment со значением роли 'members' через атрибут assigned_group.
EXPRESS-спецификация:
*)
RULE members_is_referenced_by_at_least_one_revision FOR(applied_group_assignment, group);
LOCAL
t1_set: SET OF group := [];
a_set: SET OF applied_group_assignment := [];
violate: LOGICAL := FALSE;
END_LOCAL;
t1_set := QUERY(a <* group | VALUE_IN(WHICH_CLASS(a), 'revision'));
REPEAT i := 1 TO HIINDEX(t1_set) WHILE NOT violate;
a_set := QUERY(b <* applied_group_assignment |
(b.assigned_group :=: t1_set[i]) AND (b.role.name = 'members'));
violate := SIZEOF(a_set) < 1;
END_REPEAT;
WHERE
wr1: NOT violate;
END_RULE;
(*
Определения аргументов:
applied_group_assignment: набор всех экземпляров объектов applied_group_assignment.
group: набор всех экземпляров объектов group.
Формальные высказывания:
WR1: На каждый экземпляр объекта group, содержащий объект applied_classification_assignment, чей assigned_class идентифицирует объект с атрибутом name со значением 'revision', должна быть дана ссылка из одного или нескольких экземпляров типа объекта applied_group_assignment со значением роли 'members' через атрибут assigned_group.
Правило no_approvals_except_in_approval_history определяет, что не должно быть экземпляров типа объекта approval с классификацией 'approval event', не входящих в состав объекта group с классификацией 'approval history'.
EXPRESS-спецификация:
*)
RULE
no_approvals_except_in_approval_history
FOR (approval);
LOCAL
t1_set: SET OF approval := [];
t2_set: SET OF APPLIED_GROUP_ASSIGNMENT := [];
violate: LOGICAL := FALSE;
END_LOCAL;
t1_set := QUERY(a <* approval | VALUE_IN(WHICH_CLASS(a), 'approval event'));
REPEAT i := 1 TO HIINDEX(t1_set) WHILE NOT violate;
t2_set := bag_to_set(USEDIN(t1_set[i],
'SHIP_MOULDED_FORM_SCHEMA.APPLIED_GROUP_ASSIGNMENT.ITEMS'));
violate := (SIZEOF(t2_set) = 0);
REPEAT k := 1 TO HIINDEX(t2_set) WHILE NOT violate;
violate := NOT (VALUE_IN(WHICH_CLASS(t2_set[k].ASSIGNED_GROUP), 'approval history'));
END_REPEAT;
END_REPEAT;
WHERE
WR1: NOT violate;
END_RULE;
(*
Определения аргументов:
approval: набор всех экземпляров объектов approval.
Формальные высказывания:
WR1: Каждый экземпляр объекта approval, содержащий объект applied_classification_assignment, чей объект assigned_class представляет собой group со значением 'approval event' для атрибута name, должен собираться в объекте items экземпляра объекта applied_group_assignment, чей объект assigned_group содержит объект applied_classification_assignment, где assigned_class представляет собой group со значением 'approval history' для атрибута name.
Правило offset_point_table_model_compound_representation_has_name определяет наличие у атрибута item_element объекта compound_representation_item с идентификатором класса 'offset point table model' в объекте list_representation_item для каждой записи в перечне только одного объекта representation_item, значение атрибута name которого указано в этом перечне.
EXPRESS-спецификация:
*)
RULE offset_point_table_model_compound_representation_has_name
FOR (APPLIED_CLASSIFICATION_ASSIGNMENT);
LOCAL
c_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT := [];
t1_set: SET OF Compound_representation_item := [];
t2_set: SET OF representation_item := [];
arg_list: LIST OF STRING := ['offset point table type'];
violation: LOGICAL := FALSE;
END_LOCAL;
(* get all classification_assignment instances with id 'offset point table model' *)
c_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.ASSIGNED_CLASS.NAME = 'offset point table model');
(* get all instances of compound_representation_item that have class id
'offset point table model' *)
REPEAT i := 1 TO HIINDEX(c_a_set);
REPEAT j := 1 TO HIINDEX(c_a_set[i].items);
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
(* iterate over all compound_representation_item found above; stop, if one of
them has not exactly one rep_item for each name in the arg_list *)
REPEAT i:=1 TO HIINDEX(t1_set) WHILE (NOT violation);
REPEAT j:=1 TO HIINDEX(arg_list) WHILE (NOT violation);
t2_set := t1_set[i].item_element;
violation := (SIZEOF(QUERY(items <* t2_set | items.name = arg_list[j])) <> 1);
END_REPEAT;
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
applied_classification_assignment: набор всех экземпляров объектов applied_classification_assignment.
Формальные высказывания:
WR1: У каждого экземпляра объекта compound_representation_item, имеющего объект applied_classification_assignment со значением атрибута assigned_class.name равным 'offset point table model', должен быть свой атрибут item_element, экземпляр которого приведен как list_representation_item, который должен для каждого из следующих значений 'offset point table type' забирать только один экземпляр объекта representation_item с атрибутом name, значение которого равно этому значению.
Правило principal_characteristics_has_properties определяет, что на объект product_definition с идентификатором класса 'principal characteristics' приведена ссылка из одного объекта property_definition_representation со значением имени 'principal characteristics' через объект property_definition.
EXPRESS-спецификация:
*)
RULE principal_characteristics_has_properties
FOR (property_definition_representation, applied_classification_assignment);
LOCAL
c_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT := [];
t1_set: LIST OF product_definition := [];
t2_set: SET OF property_definition_representation := [];
t3_set: LIST OF property_definition := [];
t4_set: LIST OF product_definition := [];
violation: LOGICAL := FALSE;
END_LOCAL;
c_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.assigned_class.NAME =
'principal characteristics');
REPEAT i := 1 TO HIINDEX(c_a_set);
REPEAT j := 1 TO HIINDEX(c_a_set[i].items);
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
t2_set:= QUERY(i <* PROPERTY_DEFINITION_REPRESENTATION |
i.NAME = 'principal characteristics');
REPEAT i := 1 TO HIINDEX(t2_set);
t3_set := t3_set + t2_set[i].definition;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t3_set);
t4_set := t4_set + t3_set[i].definition;
END_REPEAT;
violation := t1_set <> t4_set;
WHERE
WR1: NOT violation;
END_RULE;
(*
Определения аргументов:
property_definition_representation: набор всех экземпляров объектов property_definition_representation.
applied_classification_assignment: набор всех экземпляров объектов applied_classification_assignment.
Формальные высказывания:
WR1: На каждый экземпляр объекта product_definition, содержащий объект applied_classification_assignment, чей атрибут assigned_class представляет собой group со значением 'principal characteristics' для атрибута name, должна быть дана ссылка только их одного экземпляра объекта property_definition через атрибут definition, на который, в свою очередь, приведена ссылка из экземпляра объекта property_definition_representation через атрибут definition, атрибут name которого имеет значение 'principal characteristics'.
Правило product_definition_for_call_sign определяет, что на экземпляр объекта product_definition с идентификатором класса 'ship designation' приведена ссылка только из одного экземпляра объекта applied_identification_assignment через items, атрибут role.name которого имеет значение 'call sign'.
EXPRESS-спецификация:
*)
RULE
product_definition_for_call_sign
FOR(applied_classification_assignment);
LOCAL
c_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT := [];
t1_set: SET OF product_definition := [];
t2 set: SET OF applied_identification_assignment := [];
violation: LOGICAL := FALSE;
END_LOCAL;
c_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.assigned_class.NAME = 'ship designation');
REPEAT i := 1 TO HIINDEX(c_a_set);
REPEAT j := 1 TO HIINDEX(c_a_set[i].items);
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) WHILE NOT violation;
t2_set := bag_to_set(USEDIN(t1_set[i],
'SHIP_MOULDED_FORM_SCHEMA.APPLIED_IDENTIFICATION_ASSIGNMENT.ITEMS'));
violation := NOT (SIZEOF(QUERY(t2_inst <* t2_set |
t2_inst.role.name = 'call sign')) = 1);
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE;
(*
Определение аргументов:
applied_classification_assignment: набор всех экземпляров объектов applied_classification_assignment.
Формальные высказывания:
WR1: На каждый объект product_definition, на который дана ссылка из объекта applied_classification_assignment с классификацией 'ship designation', приведена ссылка только из одного атрибута items объекта applied_identification_assignment, где для объекта applied_identification_assignment атрибут role.name = 'call sign'.
Правило product_definition_for_class_notation определяет, что на объект product_definition с идентификатором класса 'class and statutory designation' приведена ссылка только из одного экземпляра объекта property_definition с идентификатором класса 'class notation' через definition.
EXPRESS-спецификация:
*)
RULE
product_definition_for_class_notation
FOR(applied_classification_assignment);
LOCAL
c_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT := [];
t1_set: SET OF product_definition := [];
t2_set: SET OF property_definition := [];
violation: LOGICAL := FALSE;
END_LOCAL;
c_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.assigned_class.NAME =
'class and statutory designation');
REPEAT i := 1 TO HIINDEX(c_a_set);
REPEAT j := 1 TO HIINDEX(c_a_set[i].items);
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) WHILE NOT violation;
t2_set := bag_to_set(USEDIN(t1_set[i],
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION.DEFINITION'));
violation := NOT (SIZEOF(QUERY(t2_inst <* t2_set | 'class notation'
IN WHICH_CLASS(t2_inst))) = 1);
END_REPEAT;
WHERE
WR1: NOT violation;
END_RULE;
(*
Определения аргументов:
applied_classification_assignment: набор всех экземпляров объектов applied_classification_assignment.
Формальные высказывания:
WR1: На каждый экземпляр объекта product_definition, содержащий объект applied_classification_assignment, чей атрибут assigned_class содержит объект с атрибутом name со значением 'class and statutory designation', должна быть дана ссылка только из одного экземпляра объекта property_definition, содержащего объект applied_classification_assignment, где assigned_class является объектом с атрибутом name со значением 'class notation', через атрибут definition.
Правило product_definition_for_flag_state определяет, что на экземпляр объекта product_definition с идентификатором класса 'ship designation' приведена ссылка только из одного экземпляра объекта applied_identification_assignment через items, атрибут role.name которого имеет значение 'flag state'.
EXPRESS-спецификация:
*)
RULE
product_definition_for_flag_state
FOR(applied_classification_assignment);
LOCAL
c_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT := [];
t1_set: SET OF product_definition := [];
t2_set: SET OF applied_identification_assignment := [];
violation: LOGICAL := FALSE;
END_LOCAL;
c_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.assigned_class.NAME = 'ship designation');
REPEAT i := 1 TO HIINDEX(c_a_set);
REPEAT j := 1 TO HIINDEX(c_a_set[i].items);
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) WHILE NOT violation;
t2_set := bag_to_set(USEDIN(t1_set[i],
'SHIP_MOULDED_FORM_SCHEMA.APPLIED_IDENTIFICATION_ASSIGNMENT.ITEMS'));
violation := NOT (SIZEOF(QUERY(t2_inst <* t2_set | t2_inst.role.name =
'flag state')) = 1);
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
applied_classification_assignment: набор всех экземпляров объектов applied_classification_assignment.
Формальные высказывания:
WR1: На каждый объект product_definition, на который дана ссылка из объекта applied_classification_assignment с классификацией 'ship designation', приведена ссылка только из одного атрибута items объекта applied_identification_assignment, где для объекта applied_identification_assignment атрибут role.name = 'flag state'.
Правило product_definition_for_hydrostatic_definition_requires_reference определяет, что на объект property_definition с идентификатором класса 'hydrostatic definition' приведена ссылка из одного или нескольких объектов representations с идентификатором класса 'hydrostatic table' через property_definition_representation.
EXPRESS-спецификация:
*)
RULE product_definition_for_hydrostatic_definition_requires_reference
FOR (APPLIED_CLASSIFICATION_ASSIGNMENT);
LOCAL
c_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT:= [];
c2_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT:= [];
t1_set: SET OF property_definition := [];
t2_set: SET OF representation := [];
t3_set: SET OF property_definition_representation := [];
t4_set: SET OF property_definition := [];
violation: LOGICAL := FALSE;
END_LOCAL;
(* get all classification_assignment instances with id 'hydrostatic
definition' *)
c_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.ASSIGNED_CLASS.NAME = 'hydrostatic definition');
(* get all instances of property_definition that have class id 'hydrostatic
definition' *)
REPEAT i := 1 TO HIINDEX(c_a_set);
REPEAT j := 1 TO HIINDEX(c_a_set[i].items);
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
(* get all classification_assignment instances with id 'hydrostatic table' *)
c2_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.ASSIGNED_CLASS.NAME = 'hydrostatic table');
(* get all instances of representation that have class id 'hydrostatic table' *)
REPEAT i := 1 TO HIINDEX(c2_a_set);
REPEAT j := 1 TO HIINDEX(c2_a_set[i].items);
t2_set := t2_set + c2_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
(* get all property_definition_representation instances which have as the .used_
representation the representation instances that have class id 'hydrostatic table' *)
REPEAT i := 1 TO HIINDEX(t2_set);
t3_set := t3_set + bag_to_set(USEDIN(t2_set[i],
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION_-REPRESENTATION.USED_REPRESENTATION'));
END_REPEAT;
(* get all property_definition instances which are the .definition of the
property_definition_representation *)
REPEAT i := 1 TO HIINDEX(t3_set);
t4_set := t4_set + t3_set[i].definition;
END_REPEAT;
(* compare both lists with property_definition instances which have to be identical *)
violation := t1_set <> t4_set;
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
applied_classification_assignment: набор всех экземпляров объектов applied_classification_assignment.
Формальные высказывания:
WR1: Каждый экземпляр объекта property_definition, содержащий объект applied_classification_assignment, чей атрибут assigned_class имеет значение 'hydrostatic definition', должен представлять определение одного или более экземпляров объекта property_definition_representation, где used_representation является экземпляром объекта representation, содержащего объект applied_classification_assignment, атрибут assigned_class.name которого имеет значение 'hydrostatic table'.
Правило product_definition_for_managing_company определяет, что на экземпляр объекта product_definition с идентификатором класса 'owner designation' приведена ссылка только из одного экземпляра объекта applied_organization_assignment через items, атрибут role.name которого имеет значение 'managing company'.
EXPRESS-спецификация:
*)
RULE
product_definition_for_managing_company
FOR(applied_classification_assignment);
LOCAL
c_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT := [];
t1_set: SET OF product_definition := [];
t2_set: SET OF applied_organization_assignment := [];
violation: LOGICAL := FALSE;
END_LOCAL;
c_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.assigned_class.NAME =
'owner designation');
REPEAT i := 1 TO HIINDEX(c_a_set);
REPEAT j := 1 TO HIINDEX(c_a_set[i].items);
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) WHILE NOT violation;
t2_set := bag_to_set(USEDIN(t1_set[i], 'SHIP_MOULDED_FORM_SCHEMA.' +
'APPLIED_ORGANIZATION_ASSIGNMENT.ITEMS'));
violation := NOT (SIZEOF(QUERY(t2_inst <* t2_set | t2_inst.role.name = 'managing company')) = 1);
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
applied_classification_assignment: набор всех экземпляров объектов applied_classification_assignment.
Формальные высказывания:
WR1: На каждый объект product_definition, на который дана ссылка из объекта applied_classification_assignment с классификацией 'owner designation', приведена ссылка только из одного атрибута items объекта applied_organization_assignment, где для объекта applied_organization_assignment атрибут role.name = 'managing company'.
Правило product_definition_for_ordering_company определяет, что на экземпляр объекта product_definition с идентификатором класса 'owner designation' приведена ссылка только из одного экземпляра объекта applied_organization_assignment через items, атрибут role.name которого имеет значение 'ordering company'.
EXPRESS-спецификация:
*)
RULE
product_definition_for_ordering_company
FOR(applied_classification_assignment);
LOCAL
c_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT := [];
t1_set: SET OF product_definition := [];
t2_set: SET OF applied_organization_assignment := [];
violation: LOGICAL := FALSE;
END_LOCAL;
c_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.assigned_class.NAME = 'owner designation');
REPEAT i := 1 TO HIINDEX(c_a_set);
REPEAT j := 1 TO HIINDEX(c_a_set[i].items);
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) WHILE NOT violation;
t2_set := bag_tO_set(USEDIN(t1_set[i], 'SHIP_MOULDED_FORM_SCHEMA.' +
'APPLIED_ORGANIZATION_ASSIGNMENT.ITEMS'));
violation := NOT (SIZEOF(QUERY(t2_inst <* t2_set | t2_inst.role.name =
'ordering company')) = 1);
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
applied_classification_assignment: набор всех экземпляров объектов applied_classification_assignment.
Формальные высказывания:
WR1: На каждый объект product_definition, на который дана ссылка из объекта applied_classification_assignment с классификацией 'owner designation', приведена ссылка только из одного атрибута items объекта applied_organization_assignment, где для объекта applied_organization_assignment атрибут role.name = 'ordering company'.
Правило product_definition_for_owning_company определяет, что на экземпляр объекта product_definition с идентификатором класса 'owner designation' приведена ссылка только из одного экземпляра объекта applied_organization_assignment через items, атрибут role.name которого имеет значение 'owing company'.
EXPRESS-спецификация:
*)
RULE
product_definition_for_owning_company
FOR(applied_classification_assignment);
LOCAL
c_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT := [];
t1_set: SET OF product_definition := [];
t2_set: SET OF applied_organization_assignment := [];
violation: LOGICAL := FALSE;
END_LOCAL;
c_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.assigned_class.NAME =
'owner designation');
REPEAT i := 1 TO HIINDEX(c_a_set);
REPEAT j := 1 TO HIINDEX(c_a_set[i].items);
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) WHILE NOT violation;
t2_set := bag_to_set(USEDIN(t1_set[i],
'SHIP_MOULDED_FORM_SCHEMA.APPLIED_ORGANIZATION_ASSIGNMENT.ITEMS'));
violation := NOT (SIZEOF(QUERY(t2_inst <* t2_set |
t2_inst.role.name = 'owning company')) = 1);
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
applied_classification_assignment: набор всех экземпляров объектов applied_classification_assignment.
Формальные высказывания:
WR1: На каждый объект product_definition, на который дана ссылка из объекта applied_classification_assignment с классификацией 'owner designation', приведена ссылка только из одного атрибута items объекта applied_organization_assignment, где для объекта applied_organization_assignment атрибут role.name = 'owning company'.
Правило product_definition_for_port_of_registration определяет, что на экземпляр объекта product_definition с идентификатором класса 'ship designation' приведена ссылка только из одного экземпляра объекта applied_identification_assignment через items, атрибут role.name которого имеет значение 'port of registration'.
EXPRESS-спецификация:
*)
RULE
product_definition_for_port_of_registration
FOR(APPLIED_CLASSIFICATION_ASSIGNMENT);
LOCAL
c_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT := [];
t1_set: SET OF product_definition := [];
t2_set: SET OF applied_identification_assignment := [];
violation: LOGICAL := FALSE;
END_LOCAL;
c_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.assigned_class.NAME = 'ship designation');
REPEAT i := 1 TO HIINDEX(c_a_set);
REPEAT j := 1 TO HIINDEX(c_a_set[i].items);
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) WHILE NOT violation;
t2_set := bag_to_set(USEDIN(t1_set[i],
'SHIP_MOULDED_FORM_SCHEMA.APPLIED_IDENTIFICATION_ASSIGNMENT.ITEMS'));
violation := NOT (SIZEOF(QUERY(t2_inst <* t2_set |
t2_inst.role.name = 'port of registration')) = 1);
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
applied_classification_assignment: набор всех экземпляров объектов applied_classification_assignment.
Формальные высказывания:
WR1: На каждый объект product_definition, на который дана ссылка из объекта applied_classification_assignment с классификацией 'ship designation', приведена ссылка только из одного атрибута items объекта applied_identification_assignment, где для объекта applied_identification_assignment атрибут role.name = 'port of registration'.
Правило product_definition_for_regulation определяет, что на объект product_definition с идентификатором класса 'class and statutory designation' приведена ссылка только из одного экземпляра объекта property_definition с идентификатором класса 'regulation' через definition.
EXPRESS-спецификация:
*)
RULE
product_definition_for_regulation
FOR(APPLIED_CLASSIFICATION_ASSIGNMENT);
LOCAL
c_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT := [];
t1_set: SET OF product_definition := [];
t2_set: SET OF property_definition := [];
violation: LOGICAL := FALSE;
END_LOCAL;
c_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.assigned_class.NAME =
'class and statutory designation');
REPEAT i := 1 TO HIINDEX(c_a_set);
REPEAT j := 1 TO HIINDEX(c_a_set[i].items);
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) WHILE NOT violation;
t2_set := bag_to_set(USEDIN(t1_set[i],
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION.DEFINITION'));
violation := NOT (SIZEOF(QUERY(t2_inst <* t2_set | 'regulation'
IN WHICH_CLASS(t2_inst))) = 1);
END_REPEAT;
WHERE
WR1: NOT violation;
END_RULE;
(*
Определения аргументов:
applied_classification_assignment: набор всех экземпляров объектов applied_classification_assignment.
Формальные высказывания:
WR1: На каждый экземпляр объекта product_definition, содержащий объект applied_classification_assignment, где assigned_class представляет собой объект с атрибутом name со значением 'class and statutory designation', должна быть дана ссылка только из одного экземпляра объекта property_definition, содержащего объект applied_classification_assignment, где assigned_class является объектом с атрибутом name со значением 'regulation', через атрибут definition.
Правило product_definition_for_shipyard определяет, что на экземпляр объекта product_definition с идентификатором класса 'ship designation' приведена ссылка только из одного экземпляра объекта applied_identification_assignment через items, атрибут role.name которого имеет значение 'shipyard'.
EXPRESS-спецификация:
*)
RULE
product_definition_for_shipyard
FOR(APPLIED_CLASSIFICATION_ASSIGNMENT);
LOCAL
c_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT := [];
t1_set: SET OF product_definition := [];
t2_set: SET OF applied_organization_assignment := [];
violation: LOGICAL := FALSE;
END_LOCAL;
c_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.assigned_class.NAME =
'shipyard designation');
REPEAT i := 1 TO HIINDEX(c_a_set);
REPEAT j := 1 TO HIINDEX(c_a_set[i].items);
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) WHILE NOT violation;
t2_set := bag_to_set(USEDIN(t1_set[i],
'SHIP_MOULDED_FORM_SCHEMA.APPLIED_ORGANIZATION_ASSIGNMENT.ITEMS'));
violation := NOT (SIZEOF(QUERY(t2_inst <* t2_set | t2_inst.role.name = 'shipyard')) = 1);
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
applied_classification_assignment: набор всех экземпляров объектов applied_classification_assignment.
Формальные высказывания:
WR1: На каждый объект product_definition, на который дана ссылка из объекта applied_classification_assignment с классификацией 'shipyard designation', приведена ссылка только из одного атрибута items объекта applied_organization_assignment, где для объекта applied_organization_assignment атрибут role.name = 'shipyard'.
Правило product_definition_for_stability_definition определяет, что на объект property_definition с идентификатором класса 'stability definition' приведена ссылка из одного или нескольких объектов representations с идентификатором класса 'stability table' через property_definition_representation.
EXPRESS-спецификация:
*)
RULE product_definition_for_stability_definition
FOR (APPLIED_CLASSIFICATION_ASSIGNMENT);
LOCAL
c_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT:= [];
c2_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT:= [];
t1_set: SET OF property_definition := [];
t2_set: SET OF representation := [];
t3_set: SET OF property_definition_representation := [];
t4_set: SET OF property_definition := [];
violation: LOGICAL := FALSE;
END_LOCAL;
(* get all classification_assignment instances with id 'stability definition' *)
c_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.Assigned_class.name = 'stability definition');
(* get all instances of property_definition that have class id 'stability definition' *)
REPEAT i := 1 TO HIINDEX(c_a_set);
REPEAT j := 1 TO HIINDEX(c_a_set[i].items);
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
(* get all classification_assignment instances with id 'stability table' *)
c2_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.Assigned_class.name = 'stability table');
(* get all instances of representation that have class id 'stability table' *)
REPEAT i := 1 TO HIINDEX(c2_a_set);
REPEAT j := 1 TO HIINDEX(c2_a_set[i].items);
t2_set := t2_set + c2_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
(* get all property_definition_representation instances which have as the .used_
representation the representation instances that have class id 'stability table' *)
REPEAT i := 1 TO HIINDEX(t2_set);
t3_set := t3_set + bag_to_set(USEDIN(t2_set[i],
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION_-REPRESENTATION.USED_REPRESENTATION'));
END_REPEAT;
(* get all property_definition instances which are the .definition of the
property_definition_representation *)
REPEAT i := 1 TO HIINDEX(t3_set);
t4_set := t4_set + t3_set[i].definition;
END_REPEAT;
(* compare both lists with property_definition instances which have to be identical *)
violation := t1_set <> t4_set;
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
applied_classification_assignment: набор всех экземпляров объектов applied_classification_assignment.
Формальные высказывания:
WR1: Каждый экземпляр объекта property_definition, содержащий объект applied_classification_assignment, чей атрибут assigned_class имеет значение 'stability definition', должен представлять определение одного или более экземпляров объекта property_definition_representation, где used_representation является экземпляром объекта representation, содержащего объект applied_classification_assignment, чей атрибут assigned_class.name имеет значение 'stability table'.
Правило product_definition_relationship_references_are_distinct определяет, что экземпляры, связанные атрибутами related_product_definition и relating_product_definition отношения product_definition_relationship, должны быть разными.
EXPRESS-спецификация:
*)
RULE product_definition_relationship_references_are_distinct
FOR (product_definition_relationship);
LOCAL
cyclic_relationship: LOGICAL := FALSE;
END_LOCAL;
REPEAT i := 1 TO HIINDEX(product_definition_relationship)
WHILE NOT
cyclic_relationship;
cyclic_relationship:= product_definition_relationship[i].related_product_definition :=:
product_definition_relationship[i].relating_product_definition;
END_REPEAT;
WHERE
wr1: NOT cyclic_relationship;
END_RULE;
(*
Определения аргументов:
product_definition_relationship: набор всех экземпляров объектов product_definition_relationship.
Формальные высказывания:
WR1: Экземпляры объектов, на которые ссылаются атрибуты related_product_definition, и экземпляр relating_product_definition объекта product_definition_relationship, не должны быть идентичными.
Правило product_definition_relationship_related_to_class_moulded_form определяет, что атрибут related или relating объекта product_definition_relationship с классификацией 'moulded form relationship' должен представлять собой тип product_definition с классификацией 'moulded form'.
EXPRESS-спецификация:
*)
RULE
product_definition_relationship_related_to_class_moulded_form
FOR (APPLIED_CLASSIFICATION_ASSIGNMENT);
LOCAL
c_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT := [];
c2_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT := [];
t1_set: SET OF product_definition_RELATIONSHIP := [];
t2_set: SET OF product_definition := [];
t3_set: SET OF product_definition := [];
violation: LOGICAL := FALSE;
END_LOCAL;
(* get all classification_assignment instances with id 'moulded form
relationship' *)
c_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.ASSIGNED_CLASS.NAME = 'moulded form relationship');
(* get all instances of product_definition_relationship that have class id
'moulded form relationship' *)
REPEAT i := 1 TO HIINDEX(c_a_set);
REPEAT j := 1 TO HIINDEX(c_a_set[i].items);
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
(* get all related_product_definition attribute instances and relating_product_
definition attribute instances of the product_definition_relationship *)
REPEAT i := 1 TO HIINDEX(t1_set);
t2_set := t2_set + t1_set[i].related_product_definition;
t2_set := t2_set + t1_set[i].relating_product_definition;
END_REPEAT;
(* get all classification_assignment instances with id 'moulded form' *)
c2_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.ASSIGNED_CLASS.NAME = 'moulded form');
(* get all instances of product_definition that have class id 'moulded form' *)
REPEAT i := 1 TO HIINDEX(c2_a_set);
REPEAT j := 1 TO HIINDEX(c2_a_set[i].items);
t3_set := t3_set + c2_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
violation := NOT(t2_set<= t3_set);
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
applied_classification_assignment: набор всех экземпляров объектов applied_classification_assignment.
Формальные высказывания:
WR1: Объект related_product_definition и relating_product_definition каждого экземпляра объекта product_definition_relationship, содержащего объект applied_classification_assignment, где значение assigned_class.name равно 'moulded form relationship', должны представлять собой экземпляры объектов product_definition, содержащие applied_classification_assignment, где значение assigned_class.name равно 'moulded form'.
Правило product_definition_relationship_with_identification_assignment задает перечень объектов, для которых требуется идентификация. Идентификация определяется атрибутом applied_identification_assignment.
EXPRESS-спецификация:
*)
RULE product_definition_relationship_with_identification_assignment
FOR (APPLIED_CLASSIFICATION_ASSIGNMENT);
LOCAL
c_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT := [];
t1_set: SET OF product_definition_relationship := [];
t2_set: SET OF applied_identification_assignment := [];
arg_list: LIST OF STRING := ['item relationship'];
violation: LOGICAL := FALSE;
END_LOCAL;
(* get all classification_assignment instances with id in arg_list *)
REPEAT j:=1 TO HIINDEX(arg_list) WHILE (NOT violation);
c_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.assigned_class.NAME = arg_LIST[j]);
END_REPEAT;
(* get all instances of property_definition_representation *)
REPEAT i := 1 TO HIINDEX(c_a_set);
REPEAT j := 1 TO HIINDEX(c_a_set[i].items);
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
t2_set := bag_to_set(USEDIN(t1_set[i], 'SHIP_MOULDED_FORM_SCHEMA.APPLIED_
IDENTIFICATION_ASSIGNMENT.ITEMS'));
t2_set := QUERY ( j <* t2_set | j.role.name = 'globally unambiguous
identifier');
violation := NOT (SIZEOF(T2_SET) = 1);
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
applied_classification_assignment: набор всех экземпляров объектов applied_classification_assignment.
Формальные высказывания:
WR1: Для каждого экземпляра объекта product_definition_relationship, на который приведена ссылка из объекта applied_classification_assignment, чей объект assigned_class содержит атрибут name со значением 'item relationship', должен требоваться объект applied_identification_assignment для определения идентификатора экземпляра.
Правило product_definition_shape_with_identification_assignment задает перечень объектов, для которых требуется идентификация. Идентификация определяется атрибутом applied_identification_assignment.
EXPRESS-спецификация:
*)
RULE product_definition_shape_with_identification_assignment
FOR (APPLIED_CLASSIFICATION_ASSIGNMENT);
LOCAL
c_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT := [];
t1_set: SET OF product_definition_shape := [];
t2_set: SET OF applied_identification_assignment := [];
arg_list: LIST OF STRING := ['definition'];
violation: LOGICAL := FALSE;
END_LOCAL;
(* get all classification_assignment instances with id in arg_list *)
REPEAT j:=1 TO HIINDEX(arg_list) WHILE (NOT violation);
c_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.assigned_class.NAME = arg_LIST[j]);
END_REPEAT;
(* get all instances of product_definition_shape that have class id *)
REPEAT i := 1 TO HIINDEX(c_a_set);
REPEAT j := 1 TO HIINDEX(c_a_set[i].items);
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
t2_set := bag_to_set(USEDIN(t1_set[i],
'SHIP_MOULDED_FORM_SCHEMA.APPLIED_IDENTIFICATION_ASSIGNMENT.ITEMS'));
t2_set := QUERY ( j <* t2_set |
j.role.name = 'globally unambiguous identifier');
violation := NOT (SIZEOF(T2_SET) = 1);
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
applied_classification_assignment: набор всех экземпляров объектов applied_classification_assignment.
Формальные высказывания:
WR1: Для каждого экземпляра объекта product_definition_shape, на который приведена ссылка из объекта applied_classification_assignment, чей объект assigned_class содержит атрибут name со значением 'definition', должен требоваться объект applied_identification_assignment для определения идентификатора экземпляра.
Правило product_definition_with_identification_assignment задает перечень объектов, для которых требуется идентификация. Идентификация определяется атрибутом applied_identification_assignment.
EXPRESS-спецификация:
*)
RULE product_definition_with_identification_assignment
FOR (APPLIED_CLASSIFICATION_ASSIGNMENT);
LOCAL
c_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT := [];
t1_set: SET OF product_definition := [];
t2_set: SET OF applied_identification_assignment := [];
arg_list: LIST OF STRING := [ 'definition', 'definable object'];
violation: LOGICAL := FALSE;
END_LGCAL;
(* get all classification_assignment instances *)
REPEAT j:=1 TO HIINDEX(arg_list) WHILE (NOT violation);
c_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.assigned_class.NAME = arg_LIST[j]);
END_REPEAT;
(* get all instances of product_definition that have class id *)
REPEAT i := 1 TO HIINDEX(c_a_set);
REPEAT j := 1 TO HIINDEX(c_a_set[i].items);
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
t2_set := bag_to_set(USEDIN(t1_set[i],
'SHIP_MOULDED_FORM_SCHEMA.APPLIED_IDENTIFICATION_ASSIGNMENT.ITEMS'));
t2_set := QUERY ( j <* t2_set | j.role.name = 'globally unambiguous identifier');
violation := NOT (SIZEOF(T2_SET) = 1);
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
applied_classification_assignment: набор всех экземпляров объектов applied_classification_assignment.
Формальные высказывания:
WR1: Для каждого экземпляра объекта product_definition, на который приведена ссылка из объекта applied_classification_assignment, чей объект assigned_class содержит атрибут name со значением 'definition' или 'definable object', должен требоваться объект applied_identification_assignment для определения идентификатора экземпляра.
Правило product_related_product_category_with_identification_assignment задает перечень объектов, для которых требуется идентификация. Идентификация определяется атрибутом applied_identification_assignment.
EXPRESS-спецификация:
*)
RULE product_related_product_category_with_identification_assignment
FOR (APPLIED_CLASSIFICATION_ASSIGNMENT);
LOCAL
c_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT := [];
t1_set: SET OF product_related_product_category := [];
t2_set: SET OF applied_identification_assignment := [];
arg_list: LIST OF STRING := [ 'Shiptype'];
violation: LOGICAL := FALSE;
END_LOCAL;
(* get all classification_assignment instances with id *)
REPEAT j:=1 TO HIINDEX(arg_list) WHILE (NOT violation);
c_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.assigned_class.NAME = arg_LIST[j]);
END_REPEAT;
(* get all instances that have class id *)
REPEAT i := 1 TO HIINDEX(c_a_set);
REPEAT j := 1 TO HIINDEX(c_a_set[i].items);
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
t2_set := bag_to_set(USEDIN(t1_set[i],
'SHIP_MOULDED_FORM_SCHEMA.APPLIED_IDENTIFICATION_ASSIGNMENT.ITEMS'));
t2_set := QUERY ( j <* t2_set | j.role.name = 'globally unambiguous identifier');
violation := NOT (SIZEOF(T2_SET) = 1);
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
applied_classification_assignment: набор всех экземпляров объектов applied_classification_assignment.
Формальные высказывания:
WR1: Для каждого экземпляра объекта product_related_product_category, на который приведена ссылка из объекта applied_classification_assignment, чей объект assigned_class содержит атрибут name со значением 'Shiptype', должен требоваться объект applied_identification_assignment для определения идентификатора экземпляра.
Правило product_with_identification_assignment задает перечень объектов, для которых требуется идентификация. Идентификация определяется атрибутом applied_identification_assignment.
EXPRESS-спецификация:
*)
RULE product_with_identification_assignment
FOR (APPLIED_CLASSIFICATION_ASSIGNMENT);
LOCAL
c_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT := [];
t1_set: SET OF product := [];
t2_set: SET OF applied_identification_assignment := [];
arg_list: LIST OF STRING := [ 'ship'];
violation: LOGICAL := FALSE;
END_LOCAL;
(* get all classification_assignment instances *)
REPEAT j:=1 TO HIINDEX(arg_list) WHILE (NOT violation);
c_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.assigned_class.NAME = arg_LIST[j]);
END_REPEAT;
REPEAT i := 1 TO HIINDEX(c_a_set);
REPEAT j := 1 TO HIINDEX(c_a_set[i].items);
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
t2_set := bag_to_set(USEDIN(t1_set[i],
'SHIP_MOULDED_FORM_SCHEMA.APPLIED_IDENTIFICATION_ASSIGNMENT.ITEMS');
t2_set := QUERY ( j <* t2_set | j.role.name = 'globally unambiguous identifier');
violation := NOT (SIZEOF(T2_SET) = 1);
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
applied_classification_assignment: набор всех экземпляров объектов applied_classification_assignment.
Формальные высказывания:
WR1: Для каждого экземпляра объекта product, на который приведена ссылка из объекта applied_classification_assignment, чей объект assigned_class содержит атрибут name со значением 'ship', должен требоваться объект applied_identification_assignment для определения идентификатора экземпляра.
Правило propeller_moulded_form_design_parameter_with_class_references определяет, на что экземпляр объекта property_definition с идентификатором класса 'propeller moulded form design parameter' приведена ссылка не более чем из одного экземпляра объекта property_definition_representation, чей атрибут used_representation указывает на представление (representation) с идентификатором класса 'propeller location'.
EXPRESS-спецификация:
*)
RULE propeller_moulded_form_design_parameter_with_class_references
FOR(APPLIED_CLASSIFICATION_ASSIGNMENT);
LOCAL
c_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT := []
t1_set: SET OF property_definition := [];
t2_set: SET OF property_definition_representation := []
t3_set: SET OF representation := []
violation: LOGICAL := FALSE;
END_LOCAL;
c_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.ASSIGNED_CLASS.NAME = 'propeller moulded form design parameter');
(* get all instances of property_definition that have class id 'propeller
moulded form design parameter' *)
REPEAT i := 1 TO HIINDEX(c_a_set);
REPEAT j := 1 TO HIINDEX(c_a_set[i].items);
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
(* for all instances of property_definition in t1_set:
get the property_definition_representation instances that are referencing
a property_definition instance via definition, get those property_definition_
representation.used_representation instances whose class id is 'midship_tumble'
and make sure their number is less than or equal to 1 *)
REPEAT i := 1 TO HIINDEX(t1_set) WHILE NOT violation;
t2_set := bag_to_set(USEDIN(t1_set[i],
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.'+ 'DEFINITION'));
REPEAT j := 1 to HIINDEX(t2_set);
t3_set := t3_set + t2_set[j].used_representation;
END_REPEAT;
violation := SIZEOF(QUERY(t2_inst <* t3_set | 'propeller location' IN WHICH_
CLASS(t2_inst))) > 1;
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
applied_classification_assignment: набор всех экземпляров объектов applied_classification_assignment.
Формальные высказывания:
WR1: На каждый экземпляр объекта property_definition, содержащий объект applied_classification_assignment, где у assigned_class имеется атрибут name со значением 'propeller moulded form design parameter', должна быть дана ссылка из одного или менее экземпляров объекта property_definition_representation, который указывает представление (representation) через свой атрибут used_representation, содержащий объект applied_classification_assignment, где у assigned_class имеется атрибут name со значением 'propeller location'.
Правило property_definition_for_appendage_moulded_form_design_parameter определяет, что на экземпляр объекта property_definition с идентификатором класса 'appendage moulded form design parameter' приведена ссылка только из одного экземпляра объекта property_definition_representation через definition, атрибут name которого имеет значение 'appendage moulded form design parameter'.
EXPRESS-спецификация:
*)
RULE property_definition_appendage_moulded_form_design_parameter
FOR(APPLIED_CLASSIFICATION_ASSIGNMENT);
LOCAL
c_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT := [];
t1_set: SET OF property_definition := [];
t2_set: SET OF property_definition_representation := [];
violation: LOGICAL := FALSE;
END_LOCAL;
(* get all classification_assignment instances with id 'appendage moulded
form design parameter' *)
c_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.ASSIGNED_CLASS.NAME = 'appendage moulded form design parameter');
(* get all instances that have class id 'appendage moulded form design parameter' *)
REPEAT i := 1 TO HIINDEX(c_a_set);
REPEAT j := 1 TO HIINDEX(c_a_set[i].items);
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
(* for all instances of property_definition in t1_set:
get the property_definition_representation instances that are referencing
a property_definition instance via definition, filter out those property_
definition_representation instances whose attribute name has the value
'appendage moulded form design parameter' check if their number equals 1 *)
REPEAT i := 1 TO HIINDEX(t1_set) WHILE NOT violation;
t2_set := bag_to_set(USEDIN(t1_set[i], 'SHIP_MOULDED_FORM_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION' + '.DEFINITION'));
violation := NOT (SIZEOF(QUERY(t2_inst <* t2_set | t2_inst.name =
'appendage moulded form design parameter')) = 1);
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
applied_classification_assignment: набор всех экземпляров объектов applied_classification_assignment.
Формальные высказывания:
WR1: На каждый объект property_definition, на который приведена ссылка из объекта applied_classification_assignment с assigned_class.name = 'appendage moulded form design parameter', приведена ссылка только из одного объекта property_definition_representation.definition, где property_definition_representation.name = 'appendage moulded form design parameter'.
Правило property_definition_for_bottom_moulded_form_design_parameter определяет, что на экземпляр объекта property_definition с идентификатором класса 'bottom moulded form design parameter' приведена ссылка только из одного экземпляра объекта property_definition_representation через definition, атрибут name которого имеет значение 'bottom moulded form design parameter'.
EXPRESS-спецификация:
*)
RULE property_definition_for_bottom_moulded_form_design_parameter
FOR(APPLIED_CLASSIFICATION_ASSIGNMENT);
LOCAL
c_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT := [];
t1_set: SET OF property_definition := [];
t2_set: SET OF property_definition_representation := [];
violation: LOGICAL := FALSE;
END_LOCAL;
(* get all classification_assignment instances with id 'bottom moulded form
design parameter' *)
c_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.ASSIGNED_CLASS.NAME = 'bottom moulded form design parameter');
(* get all instances that have class id 'bottom moulded form design parameter' *)
REPEAT i := 1 TO HIINDEX(c_a_set);
REPEAT j := 1 TO HIINDEX(c_a_set[i].items);
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
(* for all instances of property_definition in t1_set:
get the property_definition_representation instances that are referencing
a property_definition instance via definition, filter out those property_
definition_representation instances whose attribute name has the value 'bottom
moulded form design parameter' check if their number equals 1 *)
REPEAT i := 1 TO HIINDEX(t1_set) WHILE NOT violation;
t2_set := bag_to_set(USEDIN(t1_set[i], 'SHIP_MOULDED_FORM_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION' + '.DEFINITION'));
violation := NOT (SIZEOF(QUERY(t2_inst <* t2_set | t2_inst.name = 'bottom
moulded form design parameter')) = 1);
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
applied_classification_assignment: набор всех экземпляров объектов applied_classification_assignment.
Формальные высказывания:
WR1: На каждый объект property_definition, на который дана ссылка из объекта applied_classification_assignment с assigned_class.name = 'bottom moulded form design parameter', приведена ссылка только из одного объекта property_definition_representation.definition, где property_definition_representation.name = 'appendage moulded form design parameter'.
Правило property_definition_for_bulb_moulded_form_design_parameter определяет, что на экземпляр объекта property_definition с идентификатором класса 'bulb moulded form design parameter' приведена ссылка только из одного экземпляра объекта property_definition_representation через definition, атрибут name которого имеет значение 'bulb moulded form design parameter'.
EXPRESS-спецификация:
*)
RULE property_definition_for_bulb_moulded_form_design_parameter
FOR(APPLIED_CLASSIFICATION_ASSIGNMENT);
LOCAL
c_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT := [];
t1_set: SET OF property_definition := [];
t2_set: SET OF property_definition_representation := [];
violation: LOGICAL := FALSE;
END_LOCAL;
(* get all classification_assignment instances with id 'bulb moulded form
design parameter' *)
c_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.ASSIGNED_CLASS.NAME = 'bulb moulded form design parameter');
(* get all instances that have class id 'bulb moulded form design parameter' *)
REPEAT i := 1 TO HIINDEX(c_a_set);
REPEAT j := 1 TO HIINDEX(c_a_set[i].items);
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
(* for all instances of property_definition in t1_set:
get the property_definition_representation instances that are referencing
a property_definition instance via definition, filter out those property_
definition_representation instances whose attribute name has the value 'bulb
moulded form design parameter' check if their number equals 1 *)
REPEAT i := 1 TO HIINDEX(t1_set) WHILE NOT violation;
t2_set := bag_to_set(USEDIN(t1_set[i], 'SHIP_MOULDED_FORM_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION' + '.DEFINITION'));
violation := NOT (SIZEOF(QUERY(t2_inst <* t2_set | t2_inst.name = 'bulb
moulded form design parameter')) = 1);
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
applied_classification_assignment: набор всех экземпляров объектов applied_classification_assignment.
Формальные высказывания:
WR1: На каждый объект property_definition, на который дана ссылка из объекта applied_classification_assignment с assigned_class.name = 'bulb moulded form design parameter', приведена ссылка только из одного объекта property_definition_representation.definition, где property_definition_representation.name = 'bulb moulded form design parameter'.
Правило property_definition_for_class_notation определяет, что на экземпляр объекта property_definition с идентификатором класса 'class notation' приведена ссылка только из одного экземпляра объекта property_definition_representation через definition, атрибут name которого имеет значение 'class notation'.
EXPRESS-спецификация:
*)
RULE
property_definition_for_class_notation
FOR(applied_classification_assignment);
LOCAL
c_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT := [];
t1_set: SET OF property_definition := [];
t2_set: SET OF property_definition_representation := [];
violation: LOGICAL := FALSE;
END_LOCAL;
c_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.assigned_class.NAME = 'class notation');
REPEAT i := 1 TO HIINDEX(c_a_set);
REPEAT j := 1 TO HIINDEX(c_a_set[i].items);
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) WHILE NOT violation;
t2_set := bag_to_set(USEDIN(t1_set[i],
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'));
violation := NOT (SIZEOF(QUERY(t2_inst <* t2_set | t2_inst.name = 'class notation')) = 1);
END_REPEAT;
WHERE
WR1: NOT violation;
END_RULE;
(*
Определения аргументов:
applied_classification_assignment: набор всех экземпляров объектов applied_classification_assignment.
Формальные высказывания:
WR1: На каждый объект property_definition, на который дана ссылка только из одного объекта applied_classification_assignment с assigned_class.name = 'class notation', приведена ссылка только из одного атрибута definition для объекта property_definition_representation, где значение атрибута name для объекта property_definition_representation = 'class notation'.
Правило property_definition_for_class_society определяет, что на экземпляр объекта property_definition с идентификатором класса 'class notation' приведена ссылка только из одного экземпляра объекта applied_organization_assignment через items, атрибут role.name которого имеет значение 'class society'.
EXPRESS-спецификация:
*)
RULE
property_definition_for_class_society
FOR(applied_classification_assignment);
LOCAL
c_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT := [];
t1_set: SET OF property_definition := [];
t2_set: SET OF applied_organization_assignment := [];
violation: LOGICAL := FALSE;
END_LOCAL;
c_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.assigned_class.NAME = 'class notation');
REPEAT i := 1 TO HIINDEX(c_a_set);
REPEAT j := 1 TO HIINDEX(c_a_set[i].items);
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) WHILE NOT violation;
t2_set := bag_to_set(USEDIN(t1_set[i],
'SHIP_MOULDED_FORM_SCHEMA.APPLIED_ORGANIZATION_ASSIGNMENT.ITEMS'));
violation := NOT (SIZEOF(QUERY(t2_inst <* t2_set |
t2_inst.role.name = 'class society')) = 1);
END_REPEAT;
WHERE
WR1: NOT violation;
END_RULE;
(*
Определения аргументов:
applied_classification_assignment: набор всех экземпляров объектов applied_classification_assignment.
Формальные высказывания:
WR1: На каждый объект property_definition, на который дана ссылка только из одного объекта applied_classification_assignment с assigned_class.name = 'class notation', приведена ссылка только из одного атрибута items для объекта applied_organization_assignment, где значение атрибута role.name для объекта applied_organization_assignment = 'class society'.
Правило property_definition_for_deck_moulded_form_design_parameter определяет, что на экземпляр объекта property_definition с идентификатором класса 'deck moulded form design parameter' приведена ссылка только из одного экземпляра объекта property_definition_representation через definition, атрибут name которого имеет значение 'deck moulded form design parameter'.
EXPRESS-спецификация:
*)
RULE property_definition_for_deck_moulded_form_design_parameter
FOR(APPLIED_CLASSIFICATION_ASSIGNMENT);
LOCAL
c_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT := [];
t1_set: SET OF property_definition := [];
t2_set: SET OF property_definition_representation := [];
violation: LOGICAL := FALSE;
END_LOCAL;
(* get all classification_assignment instances with id 'deck moulded form
design parameter' *)
c_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.ASSIGNED_CLASS.NAME = 'deck moulded form design parameter');
(* get all instances that have class id 'deck moulded form design parameter' *)
REPEAT i := 1 TO HIINDEX(c_a_set);
REPEAT j := 1 TO HIINDEX(c_a_set[i].items);
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
(* for all instances of property_definition in t1_set:
get the property_definition_representation instances that are referencing
a property_definition instance via definition, filter out those property_
definition_representation instances whose attribute name has the value 'deck
moulded form design parameter' check if their number equals 1 *)
REPEAT i := 1 TO HIINDEX(t1_set) WHILE NOT violation;
t2_set := bag_to_set(USEDIN(t1_set[i], 'SHIP_MOULDED_FORM_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION' + '.DEFINITION'));
violation := NOT (SIZEOF(QUERY(t2_inst <* t2_set | t2_inst.name = 'deck
moulded form design parameter')) = 1);
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
applied_classification_assignment: набор всех экземпляров объектов applied_classification_assignment.
Формальные высказывания:
WR1: На каждый объект property_definition, на который дана ссылка из объекта applied_classification_assignment с assigned_class.name = 'deck moulded form design parameter', приведена ссылка только из одного объекта property_definition_representation.definition, где property_definition_representation.name = 'deck moulded form design parameter'.
Правило property_definition_for_hull_moulded_form_design_parameter определяет, что на экземпляр объекта property_definition с идентификатором класса 'hull moulded form design parameter' приведена ссылка только из одного экземпляра объекта property_definition_representation через definition, атрибут name которого имеет значение 'hull moulded form design parameter'.
EXPRESS-спецификация:
*)
RULE property_definition_for_hull_moulded_form_design_parameter
FOR(APPLIED_CLASSIFICATION_ASSIGNMENT);
LOCAL
c_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT := [];
t1_set: SET OF property_definition := [];
t2_set: SET OF property_definition_representation := [];
violation: LOGICAL := FALSE;
END_LOCAL;
(* get all classification_assignment instances with id 'hull moulded form
design parameter' *)
c_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.ASSIGNED_CLASS.NAME = 'hull moulded form design parameter');
(* get all instances that have class id 'hull moulded form design parameter' *)
REPEAT i := 1 TO HIINDEX(c_a_set);
REPEAT j := 1 TO HIINDEX(c_a_set[i].items);
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
(* for all instances of property_definition in t1_set:
get the property_definition_representation instances that are referencing
a property_definition instance via definition, filter out those property_
definition_representation instances whose attribute name has the value 'hull
moulded form design parameter' check if their number equals 1 *)
REPEAT i := 1 TO HIINDEX(t1_set) WHILE NOT violation;
t2_set := bag_to_set(USEDIN(t1_set[i], 'SHIP_MOULDED_FORM_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION' + '.DEFINITION'));
violation := NOT (SIZEOF(QUERY(t2_inst <* t2_set | t2_inst.name = 'hull
moulded form design parameter')) = 1);
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
applied_classification_assignment: набор всех экземпляров объектов applied_classification_assignment.
Формальные высказывания:
WR1: На каждый объект property_definition, на который дана ссылка из объекта applied_classification_assignment с assigned_class.name = 'hull moulded form design parameter', приведена ссылка только из одного объекта property_definition_representation.definition, где property_definition_representation.name = 'hull moulded form design parameter'.
Правило property_definition_for_local_coordinate_system определяет, что на экземпляр объекта property_definition с идентификатором класса 'local co ordinate system' приведена ссылка только из одного экземпляра объекта property_definition_representation через definition, атрибут name которого имеет значение 'local coordinate system'.
EXPRESS-спецификация:
*)
RULE property_definition_for_local_coordinate_system
FOR(APPLIED_CLASSIFICATION_ASSIGNMENT);
LOCAL
c_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT := [];
t1_set: SET OF property_definition := [];
t2_set: SET OF property_definition_representation := [];
violation: LOGICAL := FALSE;
END_LOCAL;
(* get all classification_assignment instances with id 'local co ordinate system' *)
c_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.ASSIGNED_CLASS.NAME = 'local co ordinate system');
(* get all instances that have class id 'local co ordinate system' *)
REPEAT i := 1 TO HIINDEX(c_a_set);
REPEAT j := 1 TO HIINDEX(c_a_set[i].items);
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
(* for all instances of property_definition in t1_set: get the property_
definition_representation instances that are referencing a property_definition
instance via definition, filter out those property_definition_representation
instances whose attribute name has the value 'local coordinate system' check if
their number equals 1 *)
REPEAT i := 1 TO HIINDEX(t1_set) WHILE NOT violation;
t2_set := bag_to_set(USEDIN(t1_set[i], 'SHIP_MOULDED_FORM_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION' + '.DEFINITION'));
violation := NOT (SIZEOF(QUERY(t2_inst <* t2_set | t2_inst.name = 'local
coordinate system')) = 1);
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
applied_classification_assignment: набор всех экземпляров объектов applied_classification_assignment.
Формальные высказывания:
WR1: На каждый объект property_definition, на который дана ссылка из объекта applied_classification_assignment с assigned_class.name = 'local co ordinate system', приведена ссылка только из одного объекта property_definition_representation.definition, где property_definition_representation.name = 'local coordinate system'.
Правило property_definition_for_local_coordinate_system_with_position определяет, что на экземпляр объекта property_definition с идентификатором класса 'local co ordinate system with position reference' приведена ссылка только из одного экземпляра объекта property_definition_representation через definition, атрибут name которого имеет значение 'local coordinate system with position reference'.
EXPRESS-спецификация:
*)
RULE
property_definition_for_local_coordinate_system_with_position
FOR(APPLIED_CLASSIFICATION_ASSIGNMENT);
LOCAL
c_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT := [];
t1_set: SET OF property_definition := [];
t2_set: SET OF property_definition_representation := [];
violation: LOGICAL := FALSE;
END_LOCAL;
c_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.assigned_class.NAME =
'local co ordinate system with position reference');
REPEAT i := 1 TO HIINDEX(c_a_set);
REPEAT j := 1 TO HIINDEX(c_a_set[i].items);
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) WHILE NOT violation;
t2_set := bag_to_set(USEDIN(t1_set[i],
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'));
violation := NOT (SIZEOF(QUERY(t2_inst <* t2_set | t2_inst.name =
'local coordinate system with position reference')) = 1);
END_REPEAT;
WHERE
WR1: NOT violation;
END_RULE;
(*
Определения аргументов:
applied_classification_assignment: набор всех экземпляров объектов applied_classification_assignment.
Формальные высказывания:
WR1: На каждый объект property_definition, на который дана ссылка из объекта applied_classification_assignment с assigned_class.name = 'local co ordinate system with position reference', приведена ссылка только из одного объекта property_definition_representation атрибутом definition, где для объекта property_definition_representation атрибут name = 'local coordinate system with position reference'.
Правило property_definition_for_moulded_form_function_parameters определяет, что на экземпляр объекта property_definition с идентификатором класса 'moulded form functional definition' приведена ссылка только из одного экземпляра объекта property_definition_representation через definition, атрибут name которого имеет значение 'moulded form functional definition'.
EXPRESS-спецификация:
*)
RULE
property_definition_for_moulded_form_function_parameters
FOR(APPLIED_CLASSIFICATION_ASSIGNMENT);
LOCAL
c_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT := [];
t1_set: SET OF property_definition := [];
t2_set: SET OF property_definition_representation := [];
violation: LOGICAL := FALSE;
END_LOCAL;
(* get all classification_assignment instances with id 'moulded form
functional definition' *)
c_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.ASSIGNED_CLASS.NAME = 'moulded form functional definition');
(* get all instances that have class id 'moulded form functional definition' *)
REPEAT i := 1 TO HIINDEX (c_a_set);
REPEAT j := 1 TO HIINDEX(c_a_set[i].items);
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
(* for all instances of property_definition in t1_set:
get the property_definition_representation instances that are referencing
a property_definition instance via definition, filter out those property_
definition_representation instances whose attribute name has the value 'moulded
form function parameters' check if their number equals 1 *)
REPEAT i := 1 TO HIINDEX(t1_set) WHILE NOT violation;
t2_set := bag_to_set(USEDIN(t1_set[i], 'SHIP_MOULDED_FORM_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION' + '.DEFINITION'));
violation := NOT (SIZEOF(QUERY(t2_inst <* t2_set | t2_inst.name = 'moulded
form function parameters')) = 1);
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
applied_classification_assignment: набор всех экземпляров объектов applied_classification_assignment.
Формальные высказывания:
WR1: На каждый объект property_definition, на который дана ссылка из объекта applied_classification_assignment с assigned_class.name = 'moulded form functional definition', приведена ссылка только из одного объекта property_definition_representation.definition, где property_definition_representation.name = 'moulded form functional definition'.
Правило property_definition_of_propeller_moulded_form_design_parameter определяет, что на экземпляр объекта property_definition с идентификатором класса 'propeller moulded form design parameter' приведена ссылка только из одного экземпляра объекта property_definition_representation через definition, атрибут name которого имеет значение 'propeller moulded form design parameter'.
EXPRESS-спецификация:
*)
RULE property_definition_of_propeller_moulded_form_design_parameter FOR(APPLIED_
CLASSIFICATION_ASSIGNMENT);
LOCAL
c_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT := [];
t1_set: SET OF property_definition := [];
t2_set: SET OF property_definition_representation := [];
violation: LOGICAL := FALSE;
END_LOCAL;
(* get all classification_assignment instances with id 'propeller moulded
form design parameter' *)
c_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.ASSIGNED_CLASS.NAME = 'propeller moulded form design parameter');
(* get all instances that have class id 'propeller moulded form design
parameter' *)
REPEAT i := 1 TO HIINDEX(c_a_set);
REPEAT j := 1 TO HIINDEX(c_a_set[i].items);
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
(* for all instances of property_definition in t1_set:
get the property_definition_representation instances that are referencing
a property_definition instance via definition, filter out those property_
definition_representation instances whose attribute name has the value
'propeller moulded form design parameter' check if their number equals 1 *)
REPEAT i := 1 TO HIINDEX(t1_set) WHILE NOT violation;
t2_set := bag_to_set(USEDIN(t1_set[i], 'SHIP_MOULDED_FORM_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION' + '.DEFINITION'));
violation := NOT (SIZEOF(QUERY(t2_inst <* t2_set | t2_inst.name = 'propeller
moulded form design parameter')) = 1);
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
applied_classification_assignment: набор всех экземпляров объектов applied_classification_assignment.
Формальные высказывания:
WR1: На каждый объект property_definition, на который дана ссылка из объекта applied_classification_assignment с assigned_class.name = 'propeller moulded form design parameter', приведена ссылка только из одного объекта property_definition_representation.definition, где property_definition_representation.name = 'propeller moulded form design parameter'.
Правило property_definition_for_rudder_moulded_form_design_parameter определяет, что на экземпляр объекта property_definition с идентификатором класса 'rudder moulded form design parameter' приведена ссылка только из одного экземпляра объекта property_definition_representation через definition, атрибут name которого имеет значение 'rudder moulded form design parameter'.
EXPRESS-спецификация:
*)
RULE property_definition_for_rudder_moulded_form_design_parameter
FOR(APPLIED_CLASSIFICATION_ASSIGNMENT);
LOCAL
c_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT := [];
t1_set: SET OF property_definition := [];
t2_set: SET OF property_definition_representation := [];
violation: LOGICAL := FALSE;
END_LOCAL;
(* get all classification_assignment instances with id 'rudder moulded form
design parameter' *)
c_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.ASSIGNED_CLASS.NAME = 'rudder moulded form design parameter');
(* get all instances that have class id 'rudder moulded form design parameter'
*)
REPEAT i := 1 TO HIINDEX(c_a_set);
REPEAT j := 1 TO HIINDEX(c_a_set[i].items);
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
(* for all instances of property_definition in t1_set:
get the property_definition_representation instances that are referencing
a property_definition instance via definition, filter out those property_
definition_representation instances whose attribute name has the value 'rudder
moulded form design parameter' check if their number equals 1 *)
REPEAT i := 1 TO HIINDEX(t1_set) WHILE NOT violation;
t2_set := bag_to_set(USEDIN(t1_set[i], 'SHIP_MOULDED_FORM_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION' + '.DEFINITION'));
violation := NOT (SIZEOF(QUERY(t2_inst <* t2_set | t2_inst.name = 'rudder
moulded form design parameter')) = 1);
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
applied_classification_assignment: набор всех экземпляров объектов applied_classification_assignment.
Формальные высказывания:
WR1: На каждый объект property_definition, на который дана ссылка из объекта applied_classification_assignment с assigned_class.name = 'rudder moulded form design parameter', приведена ссылка только из одного объекта property_definition_representation.definition, где property_definition_representation.name = 'rudder moulded form design parameter'.
Правило property_definition_for_thruster_moulded_form_design_parameter определяет, что на экземпляр объекта property_definition с идентификатором класса 'thruster moulded form design parameter' приведена ссылка только из одного экземпляра объекта property_definition_representation через definition, атрибут name которого имеет значение 'thruster moulded form design parameter'.
EXPRESS-спецификация:
*)
RULE property_definition_for_thruster_moulded_form_design_parameter
FOR(APPLIED_CLASSIFICATION_ASSIGNMENT);
LOCAL
c_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT := [];
t1_set: SET OF property_definition := [];
t2_set: SET OF property_definition_representation := [];
violation: LOGICAL := FALSE;
END_LOCAL;
(* get all classification_assignment instances with id 'thruster moulded form
design parameter' *)
c_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.ASSIGNED_CLASS.NAME = 'thruster moulded form design parameter');
(* get all instances that have class id 'thruster moulded form design
parameter' *)
REPEAT i := 1 TO HIINDEX(c_a_set);
REPEAT j := 1 TO HIINDEX(c_a_set[i].items);
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
(* for all instances of property_definition in t1_set:
get the property_definition_representation instances that are referencing
a property_definition instance via definition, filter out those property_
definition_representation instances whose attribute name has the value 'thruster
moulded form design parameter' check if their number equals 1 *)
REPEAT i := 1 TO HIINDEX(t1_set) WHILE NOT violation;
t2_set := bag_to_set(USEDIN(t1_set[i], 'SHIP_MOULDED_FORM_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION' + '.DEFINITION'));
violation := NOT (SIZEOF(QUERY(t2_inst <* t2_set | t2_inst.name = 'thruster
moulded form design parameter')) = 1);
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
applied_classification_assignment: набор всех экземпляров объектов applied_classification_assignment.
Формальные высказывания:
WR1: На каждый объект property_definition, на который дана ссылка из объекта applied_classification_assignment с assigned_class.name = 'thruster moulded form design parameter', приведена ссылка только из одного объекта property_definition_representation.definition, где property_definition_representation.name = 'thruster moulded form design parameter'.
Правило property_definition_for_thruster_propeller_parameter определяет, что на экземпляр объекта property_definition с идентификатором класса 'thruster moulded form design parameter' приведена ссылка только из одного экземпляра объекта property_definition_representation через definition, атрибут name которого имеет значение 'thruster propeller parameter'.
EXPRESS-спецификация:
*)
RULE property_definition_for_thruster_propeller_parameter
FOR(APPLIED_CLASSIFICATION_ASSIGNMENT);
LOCAL
c_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT := [];
t1_set: SET OF property_definition := [];
t2_set: SET OF property_definition_relationship := [];
violation: LOGICAL := FALSE;
END_LOCAL;
(* get all classification_assignment instances with id 'thruster moulded form
design parameter' *)
c_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.ASSIGNED_CLASS.NAME = 'thruster moulded form design parameter');
(* get all instances that have class id 'thruster moulded form design
parameter' *)
REPEAT i := 1 TO HIINDEX(c_a_set);
REPEAT j := 1 TO HIINDEX(c_a_set[i].items);
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
(* for all instances of property_definition in t1_set:
get the property_definition_relationship instances that are referencing a
property_definition instance via relating_property_- definition, filter out
those property_definition_relationship instances whose attribute name has the
value 'thruster propeller parameter' check if their number equals 1 *)
REPEAT i := 1 TO HIINDEX(t1_set) WHILE NOT violation;
t2_set := bag_to_set(USEDIN(t1_set[i], 'SHIP_MOULDED_FORM_SCHEMA.' +
'PROPERTY_DEFINITION_RELATIONSHIP' + '.RELATING_PROPERTY_DEFINITION'));
violation := NOT (SIZEOF(QUERY(t2_inst <* t2_set | t2_inst.name = 'thruster
propeller parameter')) = 1);
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
applied_classification_assignment: набор всех экземпляров объектов applied_classification_assignment.
Формальные высказывания:
WR1: На каждый объект property_definition, на который дана ссылка из объекта applied_classification_assignment с assigned_class.name = 'thruster moulded form design parameter', приведена ссылка только из одного объекта property_definition_relationship.relating_property_definition, где property_definition_relationship.name = 'thruster propeller parameter'.
Правило property_definition_with_identification_assignment задает перечень объектов, для которых требуется идентификация. Идентификация определяется атрибутом applied_identification_assignment.
EXPRESS-спецификация:
*)
RULE property_definition_with_identification_assignment
FOR (APPLIED_CLASSIFICATION_ASSIGNMENT);
LOCAL
c_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT := [];
t1_set: SET OF property_definition := [];
t2_set: SET OF applied_identification_assignment := [];
arg_list: LIST OF STRING := [ 'moulded form characteristics definition',
'moulded form functional definition',
'local co ordinate system',
'spacing table',
'hydrostatic definition',
'stability definition'];
violation: LOGICAL := FALSE;
END_LOCAL;
REPEAT j:=1 TO HIINDEX(arg_list) WHILE (NOT violation);
c_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.assigned_class.NAME = arg_LIST[j]);
END_REPEAT;
REPEAT i := 1 TO HIINDEX (c_a_set);
REPEAT j := 1 TO HIINDEX(c_a_set[i].items);
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
t2_set := bag_to_set(USEDIN(t1_set[i],
'SHIP_MOULDED_FORM_SCHEMA.APPLIED_IDENTIFICATION_ASSIGNMENT.ITEMS'));
t2_set := QUERY ( j <* t2_set |
j.role.name = 'globally unambiguous identifier');
violation := NOT (SIZEOF(T2_SET) = 1);
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
applied_classification_assignment: набор всех экземпляров объектов applied_classification_assignment.
Формальные высказывания:
WR1: Для каждого экземпляра объекта property_definition, на который приведена ссылка из объекта applied_classification_assignment, где у объекта assigned_class имеется атрибут name со значением 'moulded form characteristics definition', 'moulded form functional definition', 'local co ordinate system', 'spacing table', 'hydrostatic definition', 'stability definition', должен требоваться объект applied_identification_assignment для определения идентификатора экземпляра.
Правило representation_for_appendage_moulded_form_design_parameter определяет наличие для атрибута items объекта representation для каждой записи в перечне только одного объекта representation_item, значение атрибута name которого указано в этом перечне, если объект representation представляет собой объект used_representation в объекте property_definition_representation, атрибут name которого имеет значение 'appendage moulded form design parameter'.
EXPRESS-спецификация:
*)
RULE representation_for_appendage_moulded_form_design_parameter
FOR (representation);
LOCAL
reps: BAG OF REPRESENTATION := [];
arg_list: LIST OF STRING := ['appendage length','appendage breadth',
'appendage depth','type of appendage'];
violation: LOGICAL := FALSE;
END_LOCAL;
(* find all instances of representation which are used by a property_
definition_representation with name equal TO 'appendage moulded form design
parameter' *)
reps := QUERY(
temp_rep <* representation |
SIZEOF (
QUERY(
temp_prop_def_rep <* bag_to_set(USEDIN(temp_rep,
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.'+
'USED_REPRESENTATION'))
| (temp_prop_def_rep.name =
'appendage moulded form design parameter')
)
) > 0
);
(* iterate over all representations found above; stop, if one of *)
(* them has not exactly one rep_item with for each name of the arg_list *)
REPEAT i:=1 TO HIINDEX(reps) WHILE (NOT violation);
REPEAT j:=1 TO HIINDEX(arg_list) WHILE (NOT violation);
violation := (SIZEOF(QUERY(rep_item <* reps[i].items |
rep_item.name = arg_list[j])) <> 1);
END_REPEAT;
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
representation: набор всех экземпляров объектов representation.
Формальные высказывания:
WR1: Каждый объект property_definition_representation с name = 'appendage moulded form design parameter', должен использовать объект representation, содержащий только один элемент (item) в своем наборе items, который должен быть типом объекта representation_item с именем (name), имеющим одно из значений: 'appendage length', 'appendage breadth', 'appendage depth' или 'type of appendage'.
Правило representation_for_bottom_moulded_form_design_parameter определяет наличие для атрибута item объекта representation для каждой записи в перечне только одного объекта representation_item, значение атрибута name которого указано в этом перечне, если объект representation представляет собой объект used_representation в объекте property_definition_representation, атрибут name которого имеет значение 'bottom moulded form design parameter'.
EXPRESS-спецификация:
*)
RULE representation_for_bottom_moulded_form_design_parameter
FOR (representation);
LOCAL
reps: BAG OF REPRESENTATION := [];
arg_list: LIST OF STRING := ['bilge radius','rise of floor','aft end of flat
of bottom','front end of flat of bottom','flat of bottom breadth','rake of keel'];
violation: LOGICAL := FALSE;
END_LOCAL;
(* find all instances of representation which are used by a property_definition_
representation with name equal to 'bottom moulded form design parameter' *)
reps := QUERY(
temp_rep <* representation |
SIZEOF (
QUERY(
temp_prop_def_rep <* bag_to_set(USEDIN(temp_rep,
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.USED_-REPRESENTATION'))
| (temp_prop_def_rep.name = 'bottom moulded form design parameter')
)
) > 0
);
(* iterate over all representations found above; stop, if one of them has not
exactly one rep_item with for each name of the arg_list *)
REPEAT i:=1 TO HIINDEX(reps) WHILE (NOT violation);
REPEAT j:=1 TO HIINDEX(arg_list) WHILE (NOT violation);
violation := (SIZEOF(QUERY(rep_item <* reps[i].items |
rep_item.name = arg_list[j])) <> 1);
END_REPEAT;
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
representation: набор всех экземпляров объектов representation.
Формальные высказывания:
WR1: Для каждого объекта property_definition_representation с name = 'bottom moulded form design parameter' должен использоваться объект representation, содержащий только один элемент (item) в своем наборе items, который должен быть типом объекта representation_item с именем (name), имеющим одно из значений: 'bilge radius', 'rise of floor', 'aft end of flat of bottom', 'front end of flat of bottom', 'flat of bottom breadth', 'rake of keel'.
Правило representation_for_bulb_moulded_form_design_parameter определяет наличие для атрибута item объекта representation для каждой записи в перечне только одного объекта representation_item, значение атрибута name которого указано в этом перечне, если объект representation представляет собой объект used_representation в объекте property_definition_representation, атрибут name которого имеет значение 'bulb moulded form design parameter'.
EXPRESS-спецификация:
*)
RULE representation_for_bulb_moulded_form_design_parameter
FOR (representation);
LOCAL
reps: BAG OF REPRESENTATION := [];
arg_list: LIST OF STRING := ['bulb length','bulb length from pp','bulb
breadth','bulb breadth pp','bulb depth','bulb depth pp','bulb frame section area
at pp','bulb location'];
violation: LOGICAL := FALSE;
END_LOCAL;
(* find all instances of representation which are used by a property_definition_
representation with name equal to 'bulb moulded form design parameter' *)
reps := QUERY(
temp_rep <* representation |
SIZEOF (
QUERY(
temp_prop_def_rep <* bag_to_set(USEDIN(temp_rep,
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.USED_-REPRESENTATION'))
| (temp_prop_def_rep.name = 'bulb moulded form design parameter')
)
) > 0
);
(* iterate over all representations found above; stop, if one of them has not
exactly one rep_item with for each name of the arg_list *)
REPEAT i:=1 TO HIINDEX(reps) WHILE (NOT violation);
REPEAT j:=1 TO HIINDEX(arg_list) WHILE (NOT violation);
violation := (SIZEOF(QUERY(rep_item <* reps[i].items |
rep_item.name = arg_list[j])) <> 1);
END_REPEAT;
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
representation: набор всех экземпляров объектов representation.
Формальные высказывания:
WR1: Для каждого объекта property_definition_representation с name = 'bulb moulded form design parameter' должен использоваться объект representation, содержащий только один элемент (item) в своем наборе items, который должен быть типом объекта representation_item с именем (name), имеющим одно из значений: 'bulb length', 'bulb length from pp', 'bulb breadth', 'bulb breadth pp', 'bulb depth', 'bulb depth pp', 'bulb frame section area at pp' или 'bulb location'.
Правило representation_for_class_and_statutory_designation определяет наличие для атрибута items объекта representation для каждой записи в перечне только одного объекта representation_item, значение атрибута name которого указано в этом перечне, если объект representation представляет собой объект used_representation в объекте property_definition_representation, атрибут name которого имеет значение 'class and statutory designation'.
EXPRESS-спецификация:
*)
RULE
representation_for_class_and_statutory_designation
FOR (representation);
LOCAL
reps: BAG OF REPRESENTATION := [];
arg_list: LIST OF STRING := ['class number'];
violation: LOGICAL := FALSE;
END_LOCAL;
reps := QUERY(
temp_rep <* representation |
SIZEOF (
QUERY(
temp_prop_def_rep <* bag_to_set(USEDIN(temp_rep,
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.'+
'USED_REPRESENTATION'))
| (temp_prop_def_rep.name =
'class and statutory designation')
)
) >0
);
REPEAT i:=1 TO HIINDEX(reps) WHILE (NOT violation);
REPEAT j:=1 TO HIINDEX(arg_list) WHILE (NOT violation);
violation := (SIZEOF(QUERY(rep_item <* reps[i].items |
rep_item.name = arg_list[j])) <> 1);
END_REPEAT;
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
representation: набор всех экземпляров объектов representation.
Формальные высказывания:
WR1: Для каждого объекта property_definition_representation с name = 'class and statutory designation' должен использоваться объект representation, содержащий только один элемент (item) в своем наборе items, который должен быть типом объекта representation_item с именем (name) со значением 'class number'.
Правило representation_for_deck_moulded_form_design_parameter определяет наличие для атрибута item объекта representation для каждой записи в перечне только одного объекта representation_item, значение атрибута name которого указано в этом перечне, если объект representation представляет собой объект used_representation в объекте property_definition_representation, атрибут name которого имеет значение 'deck moulded form design parameter'.
EXPRESS-спецификация:
*)
RULE representation_for_deck_moulded_form_design_parameter
FOR (representation);
LOCAL
reps: BAG OF REPRESENTATION := [];
arg_list: LIST OF STRING := ['camber','sheer at ap','sheer at fp'];
violation: LOGICAL := FALSE;
END_LOCAL;
(* find all instances of representation which are used by a property_definition_
representation with name equal to 'deck moulded form design parameter' *)
reps := QUERY(
temp_rep <* representation |
SIZEOF (
QUERY(
temp_prop_def_rep <* bag_to_set(USEDIN(temp_rep,
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.USED_-REPRESENTATION'))
| (temp_prop_def_rep.name = 'deck moulded form design parameter')
)
)>0
);
(* iterate over all representations found above; stop, if one of them has not
exactly one rep_item with for each name of the arg list *)
REPEAT i:=1 TO HIINDEX(reps) WHILE (NOT violation);
REPEAT j:=1 TO HIINDEX(arg_list) WHILE (NOT violation);
violation := (SIZEOF(QUERY(rep_item <* reps[i].items |
rep_item.name = arg_list[j])) <> 1);
END_REPEAT;
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
representation: набор всех экземпляров объектов representation.
Формальные высказывания:
WR1: Для каждого объекта property_definition_representation с name = 'deck moulded form design parameter' должен использоваться объект representation, содержащий только один элемент (item) в своем наборе items, который должен быть типом объекта representation_item с именем (name), имеющим одно из значений: 'camber', 'sheer at ap, 'sheer at fp'.
Правило representation_for_global_axis_placement определяет наличие для атрибута items объекта representation для каждой записи в перечне только одного объекта representation_item, значение атрибута name которого указано в этом перечне, если объект representation представляет собой объект used_representation в объекте property_definition_representation, атрибут name которого имеет значение 'global axis placement'.
EXPRESS-спецификация:
*)
RULE representation_for_global_axis_placement
FOR (representation);
LOCAL
reps: BAG OF REPRESENTATION := [];
arg_list: LIST OF STRING := ['global axes and origin',
'after perpendicular offset', 'orientation'];
violation: LOGICAL := FALSE;
END_LOCAL;
reps := QUERY(
temp_rep <* representation |
SIZEOF (
QUERY(
temp_prop_def_rep <* bag_to_set(USEDIN(temp_rep,
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.'+'USED_REPRESENTATION'))
| (temp_prop_def_rep.name = 'global axis placement')
)
) > 0
);
REPEAT i:=1 TO HIINDEX(reps) WHILE (NOT violation);
REPEAT j:=1 TO HIINDEX(arg_list) WHILE (NOT violation);
violation := (SIZEOF(QUERY(rep_item <* reps[i].items |
rep_item.name = arg_list[j])) <> 1);
END_REPEAT;
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
representation: набор всех экземпляров объектов representation.
Формальные высказывания:
WR1: Для каждого объекта property_definition_representation с name = 'global axis placement' должен использоваться объект representation, содержащий только один элемент (item) в своем наборе items, который должен быть типом объекта representation_item с именем (name), имеющим одно из значений: 'global axes and origin', 'after perpendicular offset' или 'orientation'.
Правило representation_for_hull_moulded_form_design_parameter определяет наличие для атрибута items объекта representation для каждой записи в перечне только одного объекта representation_item, значение атрибута name которого указано в этом перечне, если объект representation представляет собой объект used_representation в объекте property_definition_representation, атрибут name которого имеет значение 'hull moulded form design parameter'.
EXPRESS-спецификация:
*)
RULE representation_for_hull_moulded_form_design_parameter
FOR (representation);
LOCAL
reps: BAG OF REPRESENTATION := [];
arg_list: LIST OF STRING := ['aft end of parallel midbody at design draught',
'front end of parallel midbody at design draught', 'aft end of flat of side',
'front end of flat of side', 'block coefficient', 'prismatic coefficient', 'max
wetted frame section area', 'waterplane coefficient'];
violation: LOGICAL := FALSE;
END_LOCAL;
(* find all instances of representation which are used by a property_definition_
representation with name equal to 'hull moulded form design parameter' *)
reps := QUERY(
temp_rep <* representation |
SIZEOF (
QUERY(
temp_prop_def_rep <* bag_to_set(USEDIN(temp_rep,
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.USED_-REPRESENTATION'))
| (temp_prop_def_rep.name = 'hull moulded form design parameter')
)
) > 0
);
(* iterate over all representations found above; stop, if one of them has not
exactly one rep_item with for each name of the arg_list *)
REPEAT i:=1 TO HIINDEX(reps) WHILE (NOT violation);
REPEAT j:=1 TO HIINDEX(arg_list) WHILE (NOT violation);
violation := (SIZEOF(QUERY(rep_item <* reps[i].items |
rep_item.name = arg_list[j])) <> 1);
END_REPEAT;
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
representation: набор всех экземпляров объектов representation.
Формальные высказывания:
WR1: Для каждого объекта property_definition_representation с name = 'hull moulded form design parameter' должен использоваться объект representation, содержащий только один элемент (item) в своем наборе items, который должен быть типом объекта representation_item с именем (name), имеющим одно из значений: 'aft end of parallel midbody at design draught', 'front end of parallel midbody at design draught', 'aft end of flat of side', 'front end of flat of side', 'block coefficient', 'prismatic coefficient', 'max wetted frame section area' и 'waterplane coefficient'.
Правило representation_for_hydrostatic_table_constrained определяет наличие для атрибута items объекта representation с идентификатором класса 'hydrostatic table' одного или более объектов representation_items с идентификатором класса 'hydrostatic properties for constant floating position'.
EXPRESS-спецификация:
*)
RULE representation_for_hydrostatic_table_constrained
FOR (APPLIED_CLASSIFICATION_ASSIGNMENT);
LOCAL
c_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT := [];
c2_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT := [];
t1_set: SET OF representation := [];
t2_set: SET OF representation_item := [];
t3_set: SET OF representation_item := [];
violation: LOGICAL := FALSE;
END_LOCAL;
(* get all classification_assignment instances with id 'hydrostatic table' *)
c_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.ASSIGNED_CLASS.NAME = 'hydrostatic table');
(* get all instances of representation that have class id 'hydrostatic table' *)
REPEAT i := 1 TO HIINDEX(c_a_set);
REPEAT j := 1 TO HIINDEX(c_a_set[i].items);
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
(* get all classification_assignment instances with id 'hydrostatic properties
for constant floating position' *)
c2_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.ASSIGNED_CLASS.NAME = 'hydrostatic properties for constant floating position');
(* get all instances of representation_item that have class id 'hydrostatic
properties for constant floating position' *)
REPEAT i := 1 TO HIINDEX(c2_a_set);
REPEAT j := 1 TO HIINDEX(c2_a_set[i].items);
t2_set := t2_set + c2_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
(* get all representation_item instances which are the .items of the representation
instances that have class id 'hydrostatic table' *)
REPEAT i := 1 TO HIINDEX(t1_set) WHILE (NOT violation);
REPEAT j := 1 TO HIINDEX(t1_set[i].items);
(* compare both lists with representation_item instances and the intersection
has to be greater 0 *)
t3_set := t3_set + t1_set[i].items[j];
END_REPEAT;
violation := (SIZEOF(t3_set* t2_set) < 1);
t3_set := [];
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
applied_classification_assignment: набор всех экземпляров объектов applied_classification_assignment.
Формальные высказывания:
WR1: Каждый экземпляр объекта representation, содержащий объект applied_classification_assignment, где атрибут assigned_class.name имеет значение 'hydrostatic table', должен собирать хотя бы один экземпляр объекта representation_item, содержащий объект applied_classification_assignment, где assigned_class.name имеет значение 'hydrostatic properties for constant floating position'.
Правило representation_for_hydrostatic_table_restricted определяет наличие для атрибута items объекта representation с идентификатором класса id 'hydrostatic table' одного или более объектов representation_items с идентификатором класса 'hydrostatic property'.
EXPRESS-спецификация:
*)
RULE representation_for_hydrostatic_table_restricted
FOR (APPLIED_CLASSIFICATION_ASSIGNMENT);
LOCAL
c_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT := [];
c2_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT:= [];
t1_set: SET OF representation := [];
t2_set: SET OF representation_item := [];
t3_set: SET OF representation_item := [];
violation: LOGICAL := FALSE;
END_LOCAL;
(* get all classification_assignment instances with id 'hydrostatic table' *)
c_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.ASSIGNED_CLASS.NAME = 'hydrostatic table');
(* get all instances of representation that have class id 'hydrostatic table' *)
REPEAT i := 1 TO HIINDEX(c_a_set);
REPEAT j := 1 TO HIINDEX(c_a_set[i].items);
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
(* get all classification_assignment instances with id 'hydrostatic property' *)
c2_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.ASSIGNED_CLASS.NAME = 'hydrostatic property');
(* get all instances of representation_item that have class id 'hydrostatic property' *)
REPEAT i := 1 TO HIINDEX(c2_a_set);
REPEAT j := 1 ТО HIINDEX(c2_a_set[i].items);
t2_set := t2_set + c2_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
(* get all representation_item instances which are the .items of the representation
instances that have class id 'hydrostatic table' *)
REPEAT i := 1 TO HIINDEX(t1_set) WHILE (NOT violation);
REPEAT j := 1 TO HIINDEX(t1_set[i].items);
(* compare both lists with representation_item instances and the intersection
has to be greater 0 *)
t3_set := t3_set + t1_set[i].items[j];
END_REPEAT;
violation := (SIZEOF(t3_set* t2_set) < 1);
t3_set := [];
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
applied_classification_assignment: набор всех экземпляров объектов applied_classification_assignment.
Формальные высказывания:
WR1: Каждый экземпляр объекта representation, содержащий объект applied_classification_assignment, где атрибут assigned_ciass.name имеет значение 'hydrostatic table', должен собирать хотя бы один экземпляр объекта representation_item, содержащий объект applied_classification_assignment, где assigned_class.name имеет значение 'hydrostatic property'.
Правило representation_for_hydrostatic_table_restricted_by_class_id определяет наличие у атрибута items объекта representation с идентификатором класса 'hydrostatic table' для каждой записи в перечне только одного объекта representation_item, значение атрибута name которого указано в этом перечне.
EXPRESS-спецификация:
*)
RULE representation_for_hydrostatic_table_restricted_by_class_id
FOR (APPLIED_CLASSIFICATION_ASSIGNMENT);
LOCAL
c_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT:= [];
t1_set: SET OF REPRESENTATION := [];
arg_list: LIST OF STRING := ['mean shell thickness'];
violation: LOGICAL := FALSE;
END_LOCAL;
(* get all classification_assignment instances with id 'hydrostatic table' *)
c_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.ASSIGNED_CLASS.NAME = 'hydrostatic table');
(* get all instances of representation that have class id 'hydrostatic table' *)
REPEAT i := 1 TO HIINDEX(c_a_set);
REPEAT j := 1 TO HIINDEX(c_a_set[i].items);
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
(* iterate over all representation instances found above; stop, if one of them
has not exactly one rep_item for each name in the arg_list *)
REPEAT i:=1 TO HIINDEX(t1_set) WHILE (NOT violation);
REPEAT j:=1 TO HIINDEX(arg_list) WHILE (NOT violation);
violation := (SIZEOF(QUERY(rep_item <* t1_set[i].items |
rep_item.name = arg_list[j])) <> 1);
END_REPEAT;
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
applied_classification_assignment: набор всех экземпляров объектов applied_classification_assignment.
Формальные высказывания:
WR1: Каждый экземпляр объекта representation, содержащий объект applied_classification_assignment, значение атрибута assigned_class.name которого равно 'hydrostatic table', должен собирать для каждого из значений 'mean shell thickness' только один экземпляр объекта representation_item в своем атрибуте items, значение атрибута name которого равно этому значению.
Правило representation_for_local_coordinate_system определяет наличие для атрибута items объекта representation для каждой записи в перечне только одного объекта representation_item, значение атрибута name которого указано в этом перечне, если объект representation представляет собой объект used_representation в объекте property_definition_representation, атрибут name которого имеет значение 'local coordinate system'.
EXPRESS-спецификация:
*)
RULE representation_for_local_coordinate_system
FOR (representation);
LOCAL
reps: BAG OF REPRESENTATION := [];
arg_list: LIST OF STRING := ['local axes and origin'];
violation: LOGICAL := FALSE;
END_LOCAL;
reps := QUERY(
temp_rep <* representation |
SIZEOF (
QUERY(
temp_prop_def_rep <* bag_to_set(USEDIN(temp_rep,
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.'+'USED_REPRESENTATION'))
| (temp_prop_def_rep.name = 'local coordinate system')
)
) > 0
);
REPEAT i:=1 TO HIINDEX(reps) WHILE (NOT violation);
REPEAT j:=1 TO HIINDEX(arg_list) WHILE (NOT violation);
violation := (SIZEOF(QUERY(rep_item <* reps[i].items |
rep_item.name = arg_list[j])) <> 1);
END_REPEAT;
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
representation: набор всех экземпляров объектов representation
Формальные высказывания:
WR1: Для каждого объекта property_definition_representation с name = 'local coordinate system' должен использоваться объект representation, содержащий только один элемент (item) в своем наборе items, который должен быть типом объекта representation_item с именем (name) со значением 'local axes and origin'.
Правило representation_of_local_coordinate_system_with_position_reference определяет наличие для атрибута items объекта representation для каждой записи в перечне только одного объекта representation_item значение атрибута name которого указано в этом перечне, если объект representation представляет собой объект used_representation в объекте property_definition_representation, атрибут name которого имеет значение 'local coordinate system with position reference'.
EXPRESS-спецификация:
*)
RULE
representation_of_local_coordinate_system_with_position_reference
FOR (representation);
LOCAL
reps: BAG OF REPRESENTATION := [];
arg_list: LIST OF STRING := ['local axes and origin'];
violation: LOGICAL := FALSE;
END_LOCAL;
reps := QUERY(
temp_rep <* representation |
SIZEOF (
QUERY(
temp_prop_def_rep <* bag_to_set(USEDIN(temp_rep,
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.'+'USED_REPRESENTATION'))
| (temp_prop_def_rep.name =
'local coordinate system with position reference')
)
) > 0
);
REPEAT i:=1 TO HIINDEX(reps) WHILE (NOT violation);
REPEAT j:=1 TO HIINDEX(arg_list) WHILE (NOT violation);
violation := (SIZEOF(QUERY(rep_item <* reps[i].items |
rep_item.name = arg_list[j])) <> 1);
END_REPEAT;
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
representation: набор всех экземпляров объектов representation.
Формальные высказывания:
WR1: Для каждого объекта property_definition_representation с name = 'local coordinate system with position reference' должен использоваться объект representation, содержащий только один элемент (item) в своем наборе items, который должен быть типом объекта representation_item с именем (name) со значением 'local axes and origin'.
Правило representation_for_midship_tumble_restricted_by_class_id определяет наличие у атрибута item объекта representation с идентификатором класса 'midship tumble' для каждой записи в перечне только одного объекта representation_item, значение атрибута name которого указано в этом перечне.
EXPRESS-спецификация:
*)
RULE representation_for_midship_tumble_restricted_by_class_id
FOR (APPLIED_CLASSIFICATION_ASSIGNMENT);
LOCAL
c_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT:= [];
t1_set: SET OF REPRESENTATION := [];
arg_list: LIST OF STRING := ['tumble out at bottom', 'tumble in at top',
'tumble out at side', 'tumble in at side'];
violation: LOGICAL := FALSE;
END_LOCAL;
(* get all classification_assignment instances with id 'midship tumble' *)
c_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.ASSIGNED_CLASS.NAME = 'midship tumble');
(* get all instances of representation that have class id 'midship tumble' *)
REPEAT i := 1 TO HIINDEX(c_a_set);
REPEAT j := 1 TO HIINDEX(c_a_set[i].items);
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
(* iterate over all representation instances found above; stop, if one of them
has not exactly one rep_item for each name in the arg_list *)
REPEAT i:=1 TO HIINDEX(t1_set) WHILE (NOT violation);
REPEAT j:=1 TO HIINDEX(arg_list) WHILE (NOT violation);
violation := (SIZEOF(QUERY(rep_item <* t1_set[i].items |
rep_item.name = arg_list[j])) <> 1);
END_REPEAT;
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
applied_classification_assignment: набор всех экземпляров объектов applied_classification_assignment.
Формальные высказывания:
WR1: Каждый экземпляр объекта representation, содержащий объект applied_classification_assignment, значение атрибута assigned_class.name которого равно 'midship tumble', должен для каждого из значений: 'tumble out at bottom', 'tumble in at top', 'tumble out at side' или 'tumble in at side' собирать только один экземпляр объекта representation_item в своем атрибуте items, значение атрибута name которого равно этому значению.
Правило representation_for_moulded_form_function_parameters определяет наличие для атрибута items объекта representation для каждой записи в перечне только одного объекта representation_item, значение атрибута name которого указано в этом перечне, если объект representation представляет собой объект used_representation в объекте property_definition_representation, атрибут name которого имеет значение 'moulded form function parameters'.
EXPRESS-спецификация:
*)
RULE representation_for_moulded_form_function_parameters
FOR (representation);
LOCAL
reps: BAG OF REPRESENTATION := [];
arg_list: LIST OF STRING := ['function'];
violation: LOGICAL := FALSE;
END_LOCAL;
(* find all instances of representation which are used by a property_definition_
representation with name equal to 'moulded form function parameters' *)
reps := QUERY(
temp_rep <* representation |
SIZEOF (
QUERY(
temp_prop_def_rep <* bag_to_set(USEDIN(temp_rep,
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION'))
| (temp_prop_def_rep.name = 'moulded form function parameters')
)
) > 0
);
(* iterate over all representations found above; stop, if one of them has not
exactly one rep_item with for each name of the arg_list *)
REPEAT i:=1 TO HIINDEX(reps) WHILE (NOT violation);
REPEAT j:=1 TO HIINDEX(arg_list) WHILE (NOT violation);
violation := (SIZEOF(QUERY(rep_item <* reps[i].items |
rep_item.name = arg_list[j])) <> 1);
END_REPEAT;
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
representation: набор всех экземпляров объектов representation.
Формальные высказывания:
WR1: Для каждого объекта property_definition_representation с name = 'moulded form function parameters' должен использоваться объект representation, содержащий только один элемент (item) в своем наборе items, который должен быть типом объекта representation_item с именем (name) со значением 'function'.
Правило representation_for_offset_point_table_model_for_point определяет наличие у атрибута item_element объекта compound_representation_item с идентификатором класса 'section of offset point table' в объекте list_representation_item для каждой записи в перечне одного или более объекта representation_item, значение атрибута name которого указано в этом перечне.
EXPRESS-спецификация:
*)
RULE representation_for_offset_point_table_model_for_point
FOR (APPLIED_CLASSIFICATION_ASSIGNMENT);
LOCAL
c_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT := [];
t1_set: SET OF Compound_representation_item := [];
t2_set: SET OF representation_item := [];
arg_list: LIST OF STRING := ['section point'];
violation: LOGICAL := FALSE;
END_LOCAL;
c_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.ASSIGNED_CLASS.NAME = 'section of offset point table');
REPEAT i := 1 TO HIINDEX(c_a_set);
REPEAT j := 1 TO HIINDEX(c_a_set[i].items);
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
(* iterate over all compound_representation_item found above; stop, if one of
them has not one or more rep_item for each name in the arg_list *)
REPEAT i:=1 TO HIINDEX(t1_set) WHILE (NOT violation);
REPEAT j:=1 TO HIINDEX(arg_list) WHILE (NOT violation);
t2_set := t1_set[i].item_element;
violation := (SIZEOF(QUERY(items <* t2_set | items.name = arg_list[j])) < 1);
END_REPEAT;
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
applied_classification_assignment: набор всех экземпляров объектов applied_classification_assignment.
Формальные высказывания:
WR1: У каждого экземпляра объекта compound_representation_item, имеющего объект applied_classification_assignment со значением атрибута assigned_class.name, равным 'section of offset point table', должен быть свой атрибут item_element, экземпляр которого приведен как list_representation_item, который должен для каждого из следующих значений: 'section point' забирать один или более экземпляров объекта representation_item с атрибутом name, значение которого равно этому значению.
Правило representation_for_offset_point_table_model_for_section определяет наличие у атрибута item_element объекта compound_representation_item с идентификатором класса 'offset point table model' в объекте list_representation_item для каждой записи в перечне одного или более объектов representation_item, значение атрибута name которого указано в этом перечне.
EXPRESS-спецификация:
*)
RULE representation_for_offset_point_table_model_for_section
FOR (APPLIED_CLASSIFICATION_ASSIGNMENT);
LOCAL
c_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT := [];
t1_set: SET OF Compound_representation_item := [];
t2_set: SET OF representation_item := [];
arg_list: LIST OF STRING := ['offset point table section'];
violation: LOGICAL := FALSE;
END_LOCAL;
c_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.ASSIGNED_CLASS.NAME = 'offset point table model');
REPEAT i := 1 TO HIINDEX(c_a_set);
REPEAT j := 1 TO HIINDEX(c_a_set[i].items);
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
(* iterate over all compound_representation_item found above; stop, if one of
them has not one or more rep_item for each name in the arg_list *)
REPEAT i:=1 TO HIINDEX(t1_set) WHILE (NOT violation);
REPEAT j:=1 TO HIINDEX(arg_list) WHILE (NOT violation);
t2_set := t1_set[i].item_element;
violation := (SIZEOF(QUERY(items <* t2_set | items.name = arg_list[j])) < 1);
END_REPEAT;
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
applied_classification_assignment: набор всех экземпляров объектов applied_classification_assignment.
Формальные высказывания:
WR1: У каждого экземпляра объекта compound_representation_item, имеющего объект applied_classification_assignment со значением атрибута assigned_class.name, равным 'offset point table model', должен быть свой атрибут item_element, экземпляр которого приведен как list_representation_item, который должен для каждого из значений 'offset point table section' забирать только один экземпляр объекта representation_item с атрибутом name, значение которого равно этому значению.
Правило representation_for_offset_table_shape_representation_restricted определяет наличие для атрибута items объекта representation с идентификатором класса 'offset table shape representation' одного или более объектов representation_items с идентификатором класса 'offset point table model'.
EXPRESS-спецификация:
*)
RULE representation_for_offset_table_shape_representation_restricted
FOR (APPLIED_CLASSIFICATION_ASSIGNMENT);
LOCAL
c_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT := [];
c2_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT:= [];
t1_set: SET OF representation := [];
t2_set: SET OF representation_item := [];
t3_set: SET OF representation_item := [];
violation: LOGICAL := FALSE;
END_LOCAL;
(* get all classification_assignment instances with id 'offset table shape
representation' *)
c_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.ASSIGNED_CLASS.NAME = 'offset table shape representation');
(* get all instances of representation that have class id 'offset table
shape representation' *)
REPEAT i := 1 TO HIINDEX(c_a_set);
REPEAT j := 1 TO HIINDEX(c_a_set[i].items);
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
(* get all classification_assignment instances with id 'offset point table
model' *)
c2_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.ASSIGNED_CLASS.NAME = 'offset point table model');
(* get all instances of representation_item that have class id 'offset point
table model' *)
REPEAT i := 1 TO HIINDEX(c2_a_set);
REPEAT j := 1 TO HIINDEX(c2_a_set[i].items);
t2_set := t2_set + c2_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
(* get all representation_item instances which are the .items of the representation
instances that have class id 'offset table shape representation' *)
REPEAT i := 1 TO HIINDEX(t1_set) WHILE (NOT violation);
REPEAT j := 1 TO HIINDEX(t1_set[i].items);
(* compare both lists with representation_item instances and the
intersection has to be greater than 0 *)
t3_set := t3_set + t1_set[i].items[j];
END_REPEAT;
violation := (SIZEOF(t3_set* t2_set) < 1);
t3_set:= [];
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
applied_classification_assignment: набор всех экземпляров объектов applied_classification_assignment.
Формальные высказывания:
WR1: Каждый экземпляр объекта representation, содержащий объект applied_classification_assignment, где атрибут assigned_class.name имеет значение 'offset table shape representation', должен собирать хотя бы один экземпляр объекта representation_item, содержащий объект applied_classification_assignment, где assigned_class.name имеет значение 'offset point table model'.
Правило representation_for_propeller_location_restricted_by_class_id определяет наличие у атрибута item объекта representation с идентификатором класса 'propeller location' для каждой записи в перечне только одного объекта representation_item, значение атрибута name которого указано в этом перечне.
EXPRESS-спецификация:
*)
RULE representation_for_propeller_location_restricted_by_class_id
FOR (APPLIED_CLASSIFICATION_ASSIGNMENT);
LOCAL
c_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT:= [];
t1_set: SET OF REPRESENTATION := [];
arg_list: LIST OF STRING := ['shaft line inclination x', 'shaft line inclination y',
'shaft line location', 'propeller location'];
violation: LOGICAL := FALSE;
END_LOCAL;
(* get all classification_assignment instances with id 'propeller location' *)
c_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.ASSIGNED_CLASS.NAME = 'propeller location');
(* get all instances of representation that have class id 'propeller location' *)
REPEAT i := 1 TO HIINDEX(c_a_set);
REPEAT j := 1 TO HIINDEX(c_a_set[i].items);
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
(* iterate over all representation instances found above; stop, if one of them
has not exactly one rep_item for each name in the arg_list *)
REPEAT i:=1 TO HIINDEX(t1_set) WHILE (NOT violation);
REPEAT j:=1 TO HIINDEX(arg_list) WHILE (NOT violation);
violation := (SIZEOF(QUERY(rep_item <* t1_set[i].items |
rep_item.name = arg_list[j])) <> 1);
END_REPEAT;
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
applied_classification_assignment: набор всех экземпляров объектов applied_classification_assignment.
Формальные высказывания:
WR1: Каждый экземпляр объекта representation, содержащий объект applied_classification_assignment, значение атрибута assigned_class.name которого равно 'propeller location', должен для каждого из значений: 'shaft line inclination x', 'shaft line inclination y', 'shaft line location' или 'propeller location' собирать только один экземпляр объекта representation_item в своем атрибуте items, значение атрибута name которого равно этому значению.
Правило representation_for_propeller_moulded_form_design_parameter определяет наличие для атрибута item объекта representation для каждой записи в перечне только одного объекта representation_item, значение атрибута name которого указано в этом перечне, если объект representation представляет собой объект used_representation в объекте property_definition_representation, атрибут name которого имеет значение 'propeller moulded form design parameter'.
EXPRESS-спецификация:
*)
RULE representation_for_propeller_moulded_form_design_parameter
FOR (representation);
LOCAL
reps: BAG OF REPRESENTATION := [];
arg_list: LIST OF STRING := ['type of propulsion', 'propeller diameter', 'chord
length at 0 7 radius', 'thickness at 0 7 radius', 'number of propeller blades',
'expanded area ratio', 'hub diameter ratio', 'nominal design pitch ratio', 'type of
propeller blades', 'rake', 'skew', 'design sense of rotation'];
violation: LOGICAL := FALSE;
END_LOCAL;
(* find all instances of representation which are used by a property_definition_
representation with name equal to 'propeller moulded form design parameter' *)
reps := QUERY(
temp_rep <* representation |
SIZEOF (
QUERY(
temp_prop_def_rep <* bag_to_set(USEDIN(temp_rep,
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.USED_-REPRESENTATION'))
| (temp_prop_def_rep.name = 'propeller moulded form design parameter')
)
) > 0
);
(* iterate over all representations found above; stop, if one of them has not
exactly one rep_item with for each name of the arg_list *)
REPEAT i:=1 TO HIINDEX(reps) WHILE (NOT violation);
REPEAT j:=1 TO HIINDEX(arg_list) WHILE (NOT violation);
violation := (SIZEOF(QUERY(rep_item <* reps[i].items |
rep_item.name = arg_list[j])) <> 1);
END_REPEAT;
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
representation: набор всех экземпляров объектов representation.
Формальные высказывания:
WR1: Для каждого объекта property_definition_representation с name = 'propeller moulded form design parameter' должен использоваться объект representation, содержащий только один элемент (item) в своем наборе items, который должен быть типом объекта representation_item с именем (name), имеющим одно из значений: 'type of propulsion', 'propeller diameter', 'chord length at 0 7 radius', 'thickness at 0 7 radius', 'number of propeller blades', 'expanded area ratio', 'hub diameter ratio', 'nominal design pitch ratio', 'type of propeller blades', 'rake', 'skew', 'design sense of rotation'.
Правило representation_for_rudder_moulded_form_design_parameter определяет наличие для атрибута item объекта representation для каждой записи в перечне только одного объекта representation_item, значение атрибута name которого указано в этом перечне, если объект representation представляет собой объект used_representation в объекте property_definition_representation, атрибут name которого имеет значение 'rudder moulded form design parameter'.
EXPRESS-спецификация:
*)
RULE representation_for_rudder_moulded_form_design_parameter
FOR (representation);
LOCAL
reps: BAG OF REPRESENTATION := [];
arg_list: LIST OF STRING := ['rudder height', 'rudder mean height', 'rudder
length', 'rudder mean length', 'rudder thickness', 'projected rudder area', 'type
of the rudder', 'rudder location'];
violation: LOGICAL := FALSE;
END_LOCAL;
(* find all instances of representation which are used by a property_definition_
representation with name equal to 'rudder moulded form design parameter' *)
reps := QUERY(
temp_rep <* representation |
SIZEOF (
QUERY(
temp_prop_def_rep <* bag_to_set(USEDIN(temp_rep,
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION'))
| (temp_prop_def_rep.name = 'rudder moulded form design parameter')
)
) > 0
);
(* iterate over all representations found above; stop, if one of them has not
exactly one rep_item with for each name of the arg_list *)
REPEAT i:=1 TO HIINDEX(reps) WHILE (NOT violation);
REPEAT j:=1 TO HIINDEX(arg_list) WHILE (NOT violation);
violation := (SIZEOF(QUERY(rep_item <* reps[i].items |
rep_item.name = arg_list[j])) <> 1);
END_REPEAT;
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
representation: набор всех экземпляров объектов representation.
Формальные высказывания:
WR1: Каждый объект property_definition_representation с name = 'rudder moulded form design parameter' должен использовать объект representation, содержащий только один элемент (item) в своем наборе items, который должен быть типом объекта representation_item с именем (name), имеющим одно из значений: 'rudder height', 'rudder mean height', 'rudder length', 'rudder mean length', 'rudder thickness', 'projected rudder area', 'type of the rudder' или 'rudder location'.
Правило representation_for_stability_table_restricted определяет наличие для атрибута items объекта representation с идентификатором класса 'stability table' одного или более объектов representation_items с идентификатором класса 'stability properties for constant floating position'.
EXPRESS-спецификация:
*)
RULE
representation_for_stability_table_restricted
FOR (APPLIED_CLASSIFICATION_ASSIGNMENT);
LOCAL
c_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT := [];
c2_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT:= [];
t1_set: SET OF representation := [];
t2_set: SET OF representation_item := [];
t3_set: SET OF representation_item := [];
violation: LOGICAL := FALSE;
END_LOCAL;
(* get all classification_assignment instances with id 'stability table' *)
c_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.Assigned_class.name = 'stability table');
(* get all instances of representation that have class id 'stability table' *)
REPEAT i := 1 TO HIINDEX(c_a_set);
REPEAT j := 1 TO HIINDEX(c_a_set[i].items);
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
(* get all classification_assignment instances with id 'stability properties
for one floating position' *)
c2_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.Assigned_class.name = 'stability properties for one floating position');
(* get all instances of representation_item that have class id 'stability
properties for one floating position' *)
REPEAT i := 1 TO HIINDEX(c2_a_set);
REPEAT j := 1 TO HIINDEX(c2_a_set[i].items);
t2_set := t2_set + c2_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
(* get all representation_item instances which are the .items of the representation
instances that have class id 'stability table' *)
REPEAT i := 1 TO HIINDEX(t1_set) WHILE (NOT violation);
REPEAT j := 1 TO HIINDEX(t1_set[i].items);
(* compare both lists with representation_item instances and the intersection
has to be greater 0 *)
t3_set := t3_set + t1_set[i].items[j];
END_REPEAT;
violation := (SIZEOF(t3_set* t2_set) < 1);
t3_set:= [];
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
applied_classification_assignment: набор всех экземпляров объектов applied_classification_assignment.
Формальные высказывания:
WR1: Каждый экземпляр объекта representation, содержащий объект applied_classification_assignment, где атрибут assigned_class.name имеет значение 'stability table', должен собирать хотя бы один экземпляр объекта representation_item, содержащий объект applied_classification_assignment, где assigned_class.name имеет значение 'stability properties for one floating position'.
Правило representation_for_stability_table_restricted_by_class_id определяет наличие у атрибута items объекта representation с идентификатором класса 'stability table' для каждой записи в перечне только одного объекта representation_item, значение атрибута name которого указано в этом перечне.
EXPRESS-спецификация:
*)
RULE representation_for_stability_table_restricted_by_class_i:
FOR (APPLIED_CLASSIFICATION_ASSIGNMENT);
LOCAL
c_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT:= [];
t1_set: SET OF REPRESENTATION := [];
arg_list: LIST OF STRING := ['mean shell thickness'];
violation: LOGICAL := FALSE;
END_LOCAL;
(* get all classification_assignment instances with id 'stability table'*)
c_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.Assigned_class.name = 'stability table');
(* get all instances of representation that have class id 'stability table' *)
REPEAT i := 1 TO HIINDEX(c_a_set);
REPEAT j := 1 TO HIINDEX(c_a_set[i].items);
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
(* iterate over all representation instances found above; stop, if one of
them has not exactly one rep_item for each name in the arg_list *)
REPEAT i:=1 TO HIINDEX(t1_set) WHILE (NOT violation);
REPEAT j:=1 TO HIINDEX(arg_list) WHILE (NOT violation);
violation := (SIZEOF(QUERY(rep_item <* t1_set[i].items |
rep_item.name = arg_list[j])) <> 1);
END_REPEAT;
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
applied_classification_assignment: набор всех экземпляров объектов applied_classification_assignment.
Формальные высказывания:
WR1: Каждый экземпляр объекта representation, содержащий объект applied_classification_assignment, значение атрибута assigned_class.name которого равно 'stability table', должен собирать для каждого из значений 'mean shell thickness' только один экземпляр объекта representation_item в своем атрибуте items, значение атрибута name которого равно этому значению.
Правило representation_for_thruster_moulded_form_design_parameter определяет наличие для атрибута item объекта representation для каждой записи в перечне только одного объекта representation_item, значение атрибута name которого указано в этом перечне, если объект representation представляет собой объект used_representation в объекте property_definition_representation, атрибут name которого имеет значение 'thruster moulded form design parameter'.
EXPRESS-спецификация:
*)
RULE representation_for_thruster_moulded_form_design_parameter
FOR (representation);
LOCAL
reps: BAG OF REPRESENTATION := [];
arg_list: LIST OF STRING := ['thruster tunnel diameter', 'thruster tunnel
min length', 'thruster tunnel max length', 'geometric thruster location',
'thruster location'];
violation: LOGICAL := FALSE;
END_LOCAL;
(* find all instances of representation which are used by a property_definition_
representation with name equal to 'thruster moulded form design parameter' *)
reps := QUERY(
temp_rep <* representation |
SIZEOF (
QUERY(
temp_prop_def_rep <* bag_to_set(USEDIN(temp_rep,
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION'))
| (temp_prop_def_rep.name = 'thruster moulded form design parameter')
)
) > 0
);
(* iterate over all representations found above; stop, if one of them has not
exactly one rep_item with for each name of the arg_list *)
REPEAT i:=1 TO HIINDEX(reps) WHILE (NOT violation);
REPEAT j:=1 TO HIINDEX(arg_list) WHILE (NOT violation);
violation := (SIZEOF(QUERY(rep_item <* reps[i].items |
rep_item.name = arg_list[j])) <> 1);
END_REPEAT;
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
representation: набор всех экземпляров объектов representation.
Формальные высказывания:
WR1: Каждый объект property_definition_representation с name = 'thruster moulded form design parameter' должен использовать объект representation, содержащий только один элемент (item) в своем наборе items, который должен быть типом объекта representation_item с именем (name), имеющим одно из значений: 'thruster tunnel diameter', 'thruster tunnel min length', 'thruster tunnel max length', 'geometric thruster location' или 'thruster location'.
Правило representation_has_global_uncertainty_assigned_context определяет, что перечень типов для объекта, на который приведена ссылка из объекта shape_representation.context_of_items, включает объект global_uncertainty_assigned_context.
EXPRESS-спецификация:
*)
RULE representation_has_global_uncertainty_assigned_context
FOR (SHAPE_REPRESENTATION);
LOCAL
has_gunac: LOGICAL := TRUE;
END_LOCAL;
REPEAT i := 1 TO HIINDEX(SHAPE_REPRESENTATION) WHILE has_gunac; has_gunac :=
('SHIP_MOULDED_FORM_SCHEMA.GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT' IN
TYPEOF(SHAPE_REPRESENTATION[i].CONTEXT_OF_ITEMS));
END_REPEAT;
WHERE
WR1: has_gunac;
END_RULE;
(*
Определения аргументов:
shape_representation: набор всех экземпляров объектов shape_representation.
Формальные высказывания:
WR1: Каждый объект shape_representation должен указывать на объект representation_context через свой атрибут context_of_items, представляющий собой тип global_uncertainty_assigned_context.
Правило representation_has_global_unit_assigned_context определяет, что объект representation содержит объект global_unit_assigned_context, если в нем содержится объект representation_items типа value_representation_item и/или geometric_representation_item.
EXPRESS-спецификация:
*)
RULE representation_has_global_unit_assigned_context
FOR (REPRESENTATION);
LOCAL
has_guac: LOGICAL := TRUE;
END_LOCAL;
REPEAT i := 1 TO HIINDEX(REPRESENTATION) WHILE has_guac;
REPEAT j := 1 TO SIZEOF(REPRESENTATION[i].ITEMS) WHILE has_guac;
IF (('SHIP_MOULDED_FORM_SCHEMA.VALUE_REPRESENTATION_ITEM'
IN TYPEOF(REPRESENTATION[i].ITEMS[j])) OR
('SHIP_MOULDED_FORM_SCHEMA.GEOMETRIC_REPRESENTATION_ITEM'
IN TYPEOF(REPRESENTATION[i].ITEMS[j]))) THEN
has_guac := ('SHIP_MOULDED_FORM_SCHEMA.GLOBAL_UNIT_ASSIGNED_CONTEXT'
IN TYPEOF(REPRESENTATION[i].CONTEXT_OF_ITEMS));
END_IF;
END_REPEAT;
END_REPEAT;
WHERE
WR1: has_guac;
END_RULE;
(*
Определения аргументов:
representation: набор всех экземпляров объектов representation.
Формальные высказывания:
WR1: Для каждого объекта representation, содержащего объект value_representation_items или geometric_representation_items, имеется объект representation_context, представляющий собой global_unit_assigned_context.
Правило representation_items_appendage_moulded_form_design_parameter определяет наличие для атрибута items объекта representation для каждой записи в перечне нулевого или единичного объекта representation_item, значение атрибута name которого указано в этом перечне, если объект representation представляет собой объект used_representation в объекте property_definition_representation, атрибут name которого имеет значение 'appendage moulded form design parameter'.
EXPRESS-спецификация:
*)
RULE representation_items_appendage_moulded_form_design_parameter FOR
(representation);
LOCAL
reps: BAG OF REPRESENTATION := [];
arg_list: LIST OF STRING := ['moulded form outer surface',
'moulded form displacement', 'user def appendage type'];
found: LOGICAL := FALSE;
END_LOCAL;
(* Find all instances of representation which are used by a property_definition_
representation with name equal to 'appendage moulded form design parameter' *)
reps := QUERY (
temp_rep <* representation |
SIZEOF (
QUERY(
temp_prop_def_rep <* bag_to_set(USEDIN(temp_rep,
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.'+'USED_REPRESENTATION'))
| (temp_prop_def_rep.name =
'appendage moulded form design parameter')
)
) > 0
);
(* iterate over all representations found above. Stop, if for one of them the
names of its representation_items are duplicated. *)
REPEAT i:=1 TO HIINDEX(reps) WHILE (NOT found);
REPEAT j:=1 TO HIINDEX(arg_list) WHILE (NOT found);
found := (SIZEOF(QUERY(rep_item <* reps[i].items |
rep_item.name=arg_list[j])) > 1);
END_REPEAT;
END_REPEAT;
WHERE
wr1: NOT found;
END_RULE;
(*
Определения аргументов:
representation: набор всех экземпляров объектов representation.
Формальные высказывания:
WR1: Для всех объектов representation_item, на которые дана ссылка посредством атрибута items каждого объекта representation, на который приведена ссылка посредством атрибута definition объекта property_definition_representation с name = 'appendage moulded form design parameter', значения 'moulded form outer surface', 'moulded form displacement' или 'user def appendage type' не должны возникать более одного раза в качестве значения атрибута name объекта representation_item.
Правило representation_items_for_bottom_moulded_form_design_parameter определяет наличие для атрибута items объекта representation для каждой записи в перечне нулевого или единичного объекта representation_item, значение атрибута name которого указано в этом перечне, если объект representation представляет собой объект used_representation в объекте property_definition_representation, атрибут name которого имеет значение 'bottom moulded form design parameter'.
EXPRESS-спецификация:
*)
RULE representation_items_for_bottom_moulded_form_design_parameter
FOR (representation);
LOCAL
reps: BAG OF REPRESENTATION := [];
arg_list: LIST OF STRING := ['moulded form outer surface',
'moulded form displacement'];
found: LOGICAL := FALSE;
END_LOCAL;
(* Find all instances of representation which are used by a property_definition_
representation with name equal to 'bottom moulded form design parameter' *)
reps := QUERY(
temp_rep <* representation |
SIZEOF (
QUERY(
temp_prop_def_rep <* bag_to_set(USEDIN(temp_rep,
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.'+'USED_REPRESENTATION'))
| (temp_prop_def_rep.name =
'bottom moulded form design parameter')
)
) > 0
);
(* iterate over all representations found above. Stop, if for one of *)
(* them the names of its representation_items are duplicated. *)
REPEAT i:=1 TO HIINDEX(reps) WHILE (NOT found);
REPEAT j:=1 TO HIINDEX(arg_list) WHILE (NOT found);
found := (SIZEOF(QUERY(rep_item <* reps[i].items |
rep_item.name=arg_list[j])) > 1);
END_REPEAT;
END_REPEAT;
WHERE
wr1: NOT found;
END_RULE;
(*
Определения аргументов:
representation: набор всех экземпляров объектов representation.
Формальные высказывания:
WR1: Для всех объектов representation_item, на которые дана ссылка посредством атрибута items каждого объекта representation, на который приведена ссылка посредством атрибута definition объекта property_definition_representation с name = 'bottom moulded form design parameter', значения 'moulded form outer surface' или 'moulded form displacement' не должны возникать более одного раза в качестве значения атрибута name объекта representation_item.
Правило representation_items_for_bulb_moulded_form_design_parameter определяет наличие для атрибута item объекта representation для каждой записи в перечне нулевого или единичного объекта representation_item, значение атрибута name которого указано в этом перечне, если объект representation представляет собой объект used_representation в объекте property_definition_representation, атрибут name которого имеет значение 'bulb moulded form design parameter'.
EXPRESS-спецификация:
*)
RULE representation_items_for_bulb_moulded_form_design_parameter
FOR (representation);
LOCAL
reps: BAG OF REPRESENTATION := [];
arg_list: LIST OF STRING := ['moulded form outer surface',
'moulded form displacement'];
found: LOGICAL := FALSE;
END_LOCAL;
(* Find all instances of representation which are used by a property_definition_
representation with name equal to 'bulb moulded form design parameter' *)
reps := QUERY(
temp_rep <* representation |
SIZEOF (
QUERY(
temp_prop_def_rep <* bag_to_set(USEDIN(temp_rep,
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.'+'USED_REPRESENTATION'))
| (temp_prop_def_rep.name =
'bulb moulded form design parameter')
)
) > 0
);
(* iterate over all representations found above. Stop, if for one of them the
names of its representation_items are duplicated. *)
REPEAT i:=1 TO HIINDEX(reps) WHILE (NOT found);
REPEAT j:=1 TO HIINDEX(arg_list) WHILE (NOT found);
found := (SIZEOF(QUERY(rep_item <* reps[i].items |
rep_item.name=arg_list[j])) > 1);
END_REPEAT;
END_REPEAT;
WHERE
wr1: NOT found;
END_RULE;
(*
Определения аргументов:
representation: набор всех экземпляров объектов representation.
Формальные высказывания:
WR1: Для всех объектов representation_item, на которые дана ссылка посредством атрибута items каждого объекта representation, на который приведена ссылка посредством атрибута definition объекта property_definition_representation с name = 'bulb moulded form design parameter', значения 'moulded form outer surface' или 'moulded form displacement' не должны возникать более одного раза в качестве значения атрибута name объекта representation_item.
Правило representation_items_for_deck_moulded_form_design_parameter определяет наличие для атрибута items объекта representation для каждой записи в перечне нулевого или единичного объекта representation_item, значение атрибута name которого указано в этом перечне, если объект representation представляет собой объект used_representation в объекте property_definition_representation, атрибут name которого имеет значение 'deck moulded form design parameter'.
EXPRESS-спецификация:
*)
RULE representation_items_for_deck_moulded_form_design_parameter
FOR (representation);
LOCAL
reps: BAG OF REPRESENTATION := [];
arg_list: LIST OF STRING := ['moulded form outer surface',
'moulded form displacement'];
found: LOGICAL := FALSE;
END_LOCAL;
(* Find all instances of representation which are used by a property_definition_
representation with name equal to 'deck moulded form design parameter' *)
reps := QUERY(
temp_rep <* representation |
SIZEOF (
QUERY(
temp_prop_def_rep <* bag_to_set(USEDIN(temp_rep,
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.'+'USED_REPRESENTATION'))
| (temp_prop_def_rep.name =
'deck moulded form design parameter')
)
) > 0
);
(* iterate over all representations found above. Stop, if for one of them the
names of its representation_items are duplicated. *)
REPEAT i:=1 TO HIINDEX(reps) WHILE (NOT found);
REPEAT j:=1 TO HIINDEX(arg_list) WHILE (NOT found);
found := (SIZEOF(QUERY(rep_item <* reps[i].items |
rep_item.name=arg_list[j])) > 1);
END_REPEAT;
END_REPEAT;
WHERE
wr1: NOT found;
END_RULE;
(*
Определения аргументов:
representation: набор всех экземпляров объектов representation.
Формальные высказывания:
WR1: Для всех объектов representation_item, на которые дана ссылка посредством атрибута items каждого объекта representation, на который приведена ссылка посредством атрибута definition объекта property_definition_representation с name = 'deck moulded form design parameter', значения 'moulded form outer surface' или 'moulded form displacement' не должны возникать более одного раза в качестве значения атрибута name объекта representation_item.
Правило representation_items_for_hull_moulded_form_design_parameter определяет наличие для атрибута items объекта representation для каждой записи в перечне нулевого или единичного объекта representation_item, значение атрибута name которого указано в этом перечне, если объект representation представляет собой объект used_representation в объекте property_definition_representation, атрибут name которого имеет значение 'hull moulded form design parameter'.
EXPRESS-спецификация:
*)
RULE representation_items_for_hull_moulded_form_design_parameter
FOR (representation);
LOCAL
reps: BAG OF REPRESENTATION := [];
arg_list: LIST OF STRING := ['moulded form outer surface',
'moulded form displacement',
'waterline angle of entrance at stern',
'waterline angle of entrance at bow',
'max frame section area location',
'hull length pp',
'hull length waterline',
'hull breadth',
'hull depth',
'hull design draught',
'gunwale radius'];
found: LOGICAL := FALSE;
END_LOCAL;
(* Find all instances of representation which are used by a property_definition_
representation with name equal to 'hull moulded form design parameter' *)
reps := QUERY (
temp_rep <* representation |
SIZEOF (
QUERY(
temp_prop_def_rep <* bag_to_set(USEDIN(temp_rep,
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.'+'USED_REPRESENTATION'))
| (temp_prop_def_rep.name =
'hull moulded form design parameter')
)
) > 0
);
(* iterate over all representations found above. Stop, if for one of them the
names of its representation_items are duplicated. *)
REPEAT i:=1 TO HIINDEX(reps) WHILE (NOT found);
REPEAT j:=1 TO HIINDEX(arg_list) WHILE (NOT found);
found := (SIZEOF(QUERY(rep_item <* reps[i].items |
rep_item.name=arg_list[j])) > 1);
END_REPEAT;
END_REPEAT;
WHERE
wr1: NOT found;
END_RULE;
(*
Определения аргументов:
representation: набор всех экземпляров объектов representation.
Формальные высказывания:
WR1: Для всех объектов representation_item, на которые дана ссылка из атрибута items каждого объекта representation, на который приведена ссылка из атрибута definition объекта property_definition_representation с name = 'hull moulded form design parameter', значения: 'moulded form outer surface', 'moulded form displacement', 'waterline angle of entrance at stern', 'waterline angle of entrance at bow', 'max frame section area location', 'hull length pp', 'hull length waterline', 'hull breadth', 'hull depth', 'hull design draught' или 'gunwale radius' не должны возникать более одного раза в качестве значений атрибута name объекта representation_item.
Правило representation_items_for_moulded_form_design_parameters определяет наличие для атрибута items объекта representation для каждой записи в перечне нулевого или единичного объекта representation_item, значение атрибута name которого указано в этом перечне, если объект representation представляет собой объект used_representation в объекте property_definition_representation, атрибут name которого имеет значение 'moulded form design parameters'.
EXPRESS-спецификация:
*)
RULE representation_items_for_moulded_form_design_parameters
FOR (representation);
LOCAL
reps: BAG OF REPRESENTATION := [];
arg_list: LIST OF STRING := ['status'];
found: LOGICAL := FALSE;
END_LOCAL;
(* Find all instances of representation which are used by a property_definition_
representation with name equal to 'moulded form design parameters' *)
reps := QUERY(
temp_rep <* representation |
SIZEOF (
QUERY(
temp_prop_def_rep <* bag_to_set(USEDIN(temp_rep,
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.'+'USED_REPRESENTATION'))
| (temp_prop_def_rep.name =
'moulded form design parameters')
)
) > 0
);
(* iterate over all representations found above. Stop, if for one of them the
names of its representation_items are duplicated. *)
REPEAT i:=1 TO HIINDEX(reps) WHILE (NOT found);
REPEAT j:=1 TO HIINDEX(arg_list) WHILE (NOT found);
found := (SIZEOF(QUERY(rep_item <* reps[i].items |
rep_item.name=arg_list[j])) > 1);
END_REPEAT;
END_REPEAT;
WHERE
wr1: NOT found;
END_RULE;
(*
Определения аргументов:
representation: набор всех экземпляров объектов representation.
Формальные высказывания:
WR1: Для всех объектов representation_item, на которые дана ссылка посредством атрибута items каждого объекта representation, на который приведена ссылка посредством атрибута definition объекта property_definition_representation с name = 'moulded form design parameters', значение 'status' не должно возникать более одного раза в качестве значения атрибута name объекта representation_item.
Правило representation_items_for_moulded_form_function_parameters определяет наличие для атрибута items объекта representation для каждой записи в перечне нулевого или единичного объекта representation_item, значение атрибута name которого указано в этом перечне, если объект representation представляет собой объект used_representation в объекте property_definition_representation, атрибут name которого имеет значение 'moulded form function parameters'.
EXPRESS-спецификация:
*)
RULE representation_items_for_moulded_form_function_parameters
FOR (representation);
LOCAL
reps: BAG OF REPRESENTATION := [];
arg_list: LIST OF STRING := ['user def function'];
found: LOGICAL := FALSE;
END_LOCAL;
(* Find all instances of representation which are used by a property_definition_
representation with name equal to 'moulded form function parameters' *)
reps := QUERY(
temp_rep <* representation |
SIZEOF (
QUERY(
temp_prop_def_rep <* bag_to_set(USEDIN(temp_rep,
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION'))
| (temp_prop_def_rep.name = 'moulded form function parameters')
)
) > 0
);
(* iterate over all representations found above. Stop, if for one of them the
names of its representation_items are duplicated. *)
REPEAT i:=1 TO HIINDEX(reps) WHILE (NOT found);
REPEAT j:=1 TO HIINDEX(arg_list) WHILE (NOT found);
found := (SIZEOF(QUERY(rep_item <* reps[i].items |
rep_item.name=arg_list[j])) > 1);
END_REPEAT;
END_REPEAT;
WHERE
wr1: NOT found;
END_RULE;
(*
Определения аргументов:
representation: набор всех экземпляров объектов representation.
Формальные высказывания:
WR1: Для всех объектов representation_item, на которые дана ссылка посредством атрибута items каждого объекта representation, на который приведена ссылка посредством атрибута definition объекта property_definition_representation с name = 'moulded form function parameters', значение 'user def function' не должно возникать более одного раза в качестве значений атрибута name объекта representation_item.
Правило representation_items_propeller_moulded_form_design_parameter определяет наличие для атрибута items объекта representation для каждой записи в перечне нулевого или единичного объекта representation_item, значение атрибута name которого указано в этом перечне, если объект representation представляет собой объект used_representation в объекте property_definition_representation, атрибут name которого имеет значение 'propeller moulded form design parameter'.
EXPRESS-спецификация:
*)
RULE representation_items_propeller_moulded_form_design_parameter
FOR (representation);
LOCAL
reps: BAG OF REPRESENTATION := [];
arg_list: LIST OF STRING := ['blade_mean_height',
'moulded form outer surface',
'moulded form displacement'];
found: LOGICAL := FALSE;
END_LOCAL;
(* Find all instances of representation which are used by a property_definition_
representation with name equal to 'propeller moulded form design parameter' *)
reps := QUERY(
temp_rep <* representation |
SIZEOF (
QUERY(
temp_prop_def_rep <* bag_to_set(USEDIN(temp_rep,
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.'+'USED_REPRESENTATION'))
| (temp_prop_def_rep.name =
'propeller moulded form design parameter')
)
) > 0
);
(* iterate over all representations found above. Stop, if for one of them the
names of its representation_items are duplicated. *)
REPEAT i:=1 TO HIINDEX(reps) WHILE (NOT found);
REPEAT j:=1 TO HIINDEX(arg_list) WHILE (NOT found);
found := (SIZEOF(QUERY(rep_item <* reps[i].items |
rep_item.name=arg_list[j])) > 1);
END_REPEAT;
END_REPEAT;
WHERE
wr1: NOT found;
END_RULE;
(*
Определения аргументов:
representation: набор всех экземпляров объектов representation.
Формальные высказывания:
WR1: Для всех объектов representation_item, на которые дана ссылка посредством атрибута items каждого объекта representation, на который приведена ссылка посредством атрибута definition объекта property_definition_representation с name = 'propeller moulded form design parameter', значения 'blade_mean_height', 'moulded form outer surface' или 'moulded form displacement' не должны возникать более одного раза в качестве значения атрибута name объекта representation_item.
Правило representation_items_for_rudder_moulded_form_design_parameter определяет наличие для атрибута items объекта representation для каждой записи в перечне нулевого или единичного объекта representation_item, значение атрибута name которого указано в этом перечне, если объект representation представляет собой объект used_representation в объекте property_definition_representation, атрибут name которого имеет значение 'rudder moulded form design parameter'.
EXPRESS-спецификация:
*)
RULE representation_items_for_rudder_moulded_form_design_parameter
FOR (representation);
LOCAL
reps: BAG OF REPRESENTATION := [];
arg_list: LIST OF STRING := ['moulded form outer surface',
'moulded form displacement'];
found: LOGICAL := FALSE;
END_LOCAL;
(* Find all instances of representation which are used by a property_definition_
representation with name equal to 'rudder moulded form design parameter' *)
reps := QUERY(
temp_rep <* representation |
SIZEOF (
QUERY(
temp_prop_def_rep <* bag_to_set(USEDIN(temp_rep,
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.'+'USED_REPRESENTATION'))
| (temp_prop_def_rep.name =
'rudder moulded form design parameter')
)
) > 0
);
(* iterate over all representations found above. Stop, if for one of them the
names of its representation_items are duplicated. *)
REPEAT i:=1 TO HIINDEX(reps) WHILE (NOT found);
REPEAT j:=1 TO HIINDEX(arg_list) WHILE (NOT found);
found := (SIZEOF(QUERY(rep_item <* reps[i].items |
rep_item.name=arg_list[j])) > 1);
END_REPEAT;
END_REPEAT;
WHERE
wr1: NOT found;
END_RULE;
(*
Определения атрибутов:
representation: набор всех экземпляров объектов representation.
Формальные высказывания:
WR1: Для всех объектов representation_item, на которые дана ссылка посредством атрибута items каждого объекта representation, на который приведена ссылка посредством атрибута definition объекта property_definition_representation с name = 'rudder moulded form design parameter', значения 'moulded form outer surface' или 'moulded form displacement' не должны возникать более одного раза в качестве значения атрибута name объекта representation_item.
Правило representation_items_of_thruster_moulded_form_design_parameter определяет наличие для атрибута items объекта representation для каждой записи в перечне нулевого или единичного объекта representation_item, значение атрибута name которого указано в этом перечне, если объект representation представляет собой объект used_representation в объекте property_definition_representation, атрибут name которого имеет значение 'thruster moulded form design parameter'.
EXPRESS-спецификация:
*)
RULE representation_items_of_thruster_moulded_form_design_parameter
FOR (representation);
LOCAL
reps: BAG OF REPRESENTATION := [];
arg_list: LIST OF STRING := ['moulded form outer surface',
'moulded form displacement'];
found: LOGICAL := FALSE;
END_LOCAL;
(* Find all instances of representation which are used by a property_definition_
representation with name equal to 'thruster moulded form design parameter' *)
reps := QUERY(
temp_rep <* representation |
SIZEOF (
QUERY(
temp_prop_def_rep <* bag_to_set(USEDIN(temp_rep,
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.'+'USED_REPRESENTATION'))
| (temp_prop_def_rep.name =
'thruster moulded form design parameter')
)
) > 0
);
(* iterate over all representations found above. Stop, if for one of them the
names of its representation_items are duplicated. *)
REPEAT i:=1 TO HIINDEX(reps) WHILE (NOT found);
REPEAT j:=1 TO HIINDEX(arg_list) WHILE (NOT found);
found := (SIZEOF(QUERY(rep_item <* reps[i].items |
rep_item.name=arg_list[j])) > 1);
END_REPEAT;
END_REPEAT;
WHERE
wr1: NOT found;
END_RULE;
(*
Определения аргументов:
representation: набор всех экземпляров объектов representation.
Формальные высказывания:
WR1: Для всех объектов representation_item, на которые дана ссылка посредством атрибута items каждого объекта representation, на который приведена ссылка посредством атрибута definition объекта property_definition_representation с name = 'thruster moulded form design parameter', значения 'moulded form outer surface' или 'moulded form displacement' не должны возникать более одного раза в качестве значения атрибута name объекта representation_item.
Правило representation_item_for_transformation_to_parent определяет, что на экземпляр объекта property_definition с идентификатором класса 'local co ordinate system' приведена ссылка только из одного экземпляра объекта representation_map через mapped_representation.
EXPRESS-спецификация:
*)
RULE
representation_item_for_transformation_to_parent
FOR(APPLIED_CLASSIFICATION_ASSIGNMENT);
LOCAL
c_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT := [];
t1_set: SET OF property_definition := [];
t2_set: SET OF property_definition_representation := [];
t3_set: SET OF representation := [];
t4_set: SET OF representation_map := [];
t5_set: SET OF mapped_item := [];
arg_list: LIST OF STRING :=
['local coordinate system position in global coordinate system', 'local coordinate
system position in parent local coordinate system', 'local coordinate system
position in parent local coordinate system with position reference'];
violations1 LOGICAL := FALSE;
violation2: LOGICAL := FALSE;
END_LOCAL;
c_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.assigned_class.NAME = 'local co ordinate system');
REPEAT i := 1 TO HIINDEX(c_a_set);
REPEAT j := 1 TO HIINDEX(c_a_set[i].items);
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) WHILE NOT violation1;
t2_set := bag_to_set(USEDIN(t1_set[i],
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'));
violation1 := NOT (SIZEOF(QUERY(t2_inst <* t2_set |
t2_inst.used_representation.name =
'local axis representation')) = 1);
t3_set := t3_set + t2_set[i].used_representation;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) WHILE NOT violation1;
t4_set := bag_to_set(USEDIN(t3_set[i],
'SHIP_MOULDED_FORM_SCHEMA.REPRESENTATION_MAP.MAPPED_REPRESENTATION'));
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) WHILE NOT violation1;
t5_set := bag_to_set(USEDIN(t4_set[i],
'SHIP_MOULDED_FORM_SCHEMA.MAPPED_ITEM.MAPPING_SOURCE'));
REPEAT j := 1 TO 3 WHILE NOT violation2;
violation2 := NOT (SIZEOF(QUERY(t2_inst <* t5_set | t2_inst.name =
ARG_LIST[j])) = 1);
END_REPEAT;
END_REPEAT;
WHERE
WR1: NOT violation1;
WR2: NOT violation2;
END_RULE;
(*
Определения аргументов:
applied_classification_assignment: набор всех экземпляров объектов applied_classification_assignment.
Формальные высказывания:
WR1: На каждый объект property_definition, на который дана ссылка из объекта applied_classification_assignment с assigned_class.name = 'local co ordinate system', приведена ссылка только из одного атрибута property_definition_representation.definition, где property_definition_representation.name = 'local co ordinate system', и атрибута used_representation, представляющего собой объект representation с name = 'local axis representation'.
WR2: Для каждого объекта mapped_item со значением: 'local coordinate system position in global coordinate system', 'local coordinate system position in parent local coordinate system' или 'local coordinate system position in parent local coordinate system with position reference' для name имеется атрибут mapping_source, который указывает объект representation_map, содержащий атрибут mapped_representation, указывающий объект representation с name = 'local axis representation'.
Правило representation_items_optional_for_class_notation определяет наличие для атрибута items объекта representation для каждой записи в перечне нулевого или единичного объекта representation_item, значение атрибута name которого указано в этом перечне, если объект representation представляет собой объект used_representation в объекте property_definition_representation, атрибут name которого имеет значение 'class notation'.
EXPRESS-спецификация:
*)
RULE representation_items_optional_for_class_notation FOR (representation);
LOCAL
reps: BAG OF REPRESENTATION := [];
arg_list: LIST OF STRING := ['ice class notation','service factor',
'approval required for heavy cargo'];
found: LOGICAL := FALSE;
END_LOCAL;
reps := QUERY(
temp_rep <* representation |
SIZEOF (
QUERY(
temp_prop_def_rep <* bag_to_set(USEDIN(temp_rep,
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.'+'USED_REPRESENTATION'))
| (temp_prop_def_rep.name = 'class notation')
)
) > 0
);
REPEAT i:=1 TO HIINDEX(reps) WHILE (NOT found);
REPEAT j:=1 TO HIINDEX(arg_list) WHILE (NOT found);
found := (SIZEOF(QUERY(rep_item <* reps[i].items |
rep_item.name=arg_list[j])) > 1);
END_REPEAT;
END_REPEAT;
WHERE
wr1: NOT found;
END_RULE;
(*
Определения аргументов:
representation: набор всех экземпляров объектов representation.
Формальные высказывания:
WR1: Для всех объектов representation_item, на которые дана ссылка посредством атрибута items каждого объекта representation, на который приведена ссылка посредством атрибута definition объекта property_definition_representation с name = 'class notation', значения 'ice class notation', 'service factor' или 'approval required for heavy cargo' не должны возникать более одного раза в качестве значений атрибута name объекта representation_item.
Правило representation_items_optional_for_owner_designation определяет наличие для атрибута items объекта representation для каждой записи в перечне нулевого или единичного объекта representation_item, значение атрибута name которого указано в этом перечне, если объект representation представляет собой объект used_representation в объекте property_definition_representation, атрибут name которого имеет значение 'owner designation'.
EXPRESS-спецификация:
*)
RULE representation_items_optional_for_owner_designation
FOR (representation);
LOCAL
reps: BAG OF REPRESENTATION := [];
arg_list: LIST OF STRING := ['owner approval'];
found: LOGICAL := FALSE;
END_LOCAL;
(* Find all instances of representation which are used by a property_definition_
representation with name equal to 'owner designation' *)
reps := QUERY(temp_rep <* representation |
SIZEOF (QUERY(temp_prop_def_rep <* bag_to_set(USEDIN(temp_rep,
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.'+'USED_REPRESENTATION'))
| (temp_prop_def_rep.name = 'owner designation'))) > 0);
(* iterate over all representations found above. Stop, if for one of them the
names of its representation_items are duplicated. *)
REPEAT i:=1 TO HIINDEX(reps) WHILE (NOT found);
REPEAT j:=1 TO HIINDEX(arg_list) WHILE (NOT found);
found := (SIZEOF(QUERY(rep_item <* reps[i].items |
rep_item.name = arg_list[j])) > 1);
END_REPEAT;
END_REPEAT;
WHERE
wr1: NOT found;
END_RULE;
(*
Определения аргументов:
representation: набор всех экземпляров объектов representation.
Формальные высказывания:
WR1: Для всех объектов representation_item, на которых дана ссылка посредством атрибута items каждого объекта representation, на который приведена ссылка посредством атрибута used_representation объекта property_definition_representation с name = 'owner designation', значение 'owner approval' не должно возникать более одного раза в качестве значения атрибута name объекта representation_item.
Правило representation_items_optional_for_principal_characteristics определяет наличие для атрибута items объекта representation для каждой записи в перечне нулевого или единичного объекта representation_item, значение атрибута name которого указано в этом перечне, если объект representation представляет собой объект used_representation в объекте property_definition_representation, атрибут name которого имеет значение 'principal characteristics'.
EXPRESS-спецификация:
*)
RULE representation_items_optional_for_principal_characteristics
FOR (representation);
LOCAL
reps: BAG OF REPRESENTATION := [];
arg_list: LIST OF STRING := ['block coefficient',
'design draught',
'design deadweight',
'min draught at fp',
'max draught at fp',
'min draught at ap',
'max draught at ap'];
found: LOGICAL := FALSE;
END_LOCAL;
reps := QUERY(
temp_rep <* representation |
SIZEOF (
QUERY(
temp_prop_def_rep <* bag_to_set(USEDIN(temp_rep,
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.'+'USED_REPRESENTATION'))
| (temp_prop_def_rep.name = 'principal characteristics')
)
) > 0
);
REPEAT i:=1 TO HIINDEX(reps) WHILE (NOT found);
REPEAT j:=1 TO HIINDEX(arg_list) WHILE (NOT found);
found := (SIZEOF(QUERY(rep_item <* reps[i].items |
rep_item.name=arg_list[j])) > 1);
END_REPEAT;
END_REPEAT;
WHERE
wr1: NOT found;
END_RULE;
(*
Определения аргументов:
representation: набор всех экземпляров объектов representation.
Формальные высказывания:
WR1: Для всех объектов representation_item, на которые дана ссылка из атрибута items каждого объекта representation, на который приведена ссылка из атрибута definition объекта property_definition_representation с name = 'principal characteristics', значения: 'block coefficient', 'design draught', 'design deadweight', 'min draught at fp', 'max draught at fp', 'min draught at ap', 'max draught at ap' не должны возникать более одного раза в качестве значений атрибута name объекта representation_item.
Правило representation_restricted_by_name_class_notation определяет наличие для атрибута items объекта representation для каждой записи в перечне только одного объекта representation_item, значение атрибута name которого указано в этом перечне, если объект representation представляет собой объект used_representation в объекте property_definition_representation, атрибут name которого имеет значение 'class notation'.
EXPRESS-спецификация:
*)
RULE representation_restricted_by_name_class_notation
FOR (representation);
LOCAL
reps: BAG OF REPRESENTATION := [];
arg_list: LIST OF STRING := ['service area',
'approval required for oil cargo',
'approval required for loading unloading aground',
'approval required for unloading grabs'];
violation: LOGICAL := FALSE;
END_LOCAL;
reps := QUERY(
temp_rep <* representation |
SIZEOF (
QUERY(
temp_prop_def_rep <* bag_to_set(USEDIN(temp_rep,
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.'+'USED_REPRESENTATION'))
| (temp_prop_def_rep.name = 'class notation')
)
) > 0
);
REPEAT i:=1 TO HIINDEX(reps) WHILE (NOT violation);
REPEAT j:=1 TO HIINDEX(arg_list) WHILE (NOT violation);
violation := (SIZEOF(QUERY(rep_item <* reps[i].items |
rep_item.name = arg_list[j])) <> 1);
END_REPEAT;
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
representation: набор всех экземпляров объектов representation.
Формальные высказывания:
WR1: Для каждого объекта property_definition_representation с name = 'class notation' должен использоваться объект representation, содержащий только один элемент (item) из своего набора items, который должен быть типом объекта representation_item с именем (name) со значением: 'service area', 'approval required for oil cargo', 'approval required for loading unloading aground' или 'approval required for unloading grabs'.
Правило representation_restricted_by_name_class_parameters определяет наличие для атрибута items объекта representation для каждой записи в перечне только одного объекта representation_item, значение атрибута name которого указано в этом перечне, если объект representation представляет собой объект used_representation в объекте property_definition_representation, атрибут name которого имеет значение 'class parameters'.
EXPRESS-спецификация:
*)
RULE representation_restricted_by_name_class_parameters
FOR (representation);
LOCAL
reps: BAG OF REPRESENTATION := [];
arg_list: LIST OF STRING := ['length class', 'length solas',
'scantlings draught', 'block coefficient class',
'design speed ahead','design speed astern'];
violation: LOGICAL := FALSE;
END_LOCAL;
reps := QUERY(
temp_rep <* representation |
SIZEOF (
QUERY(
temp_prop_def_rep <* bag_to_set(USEDIN(temp_rep,
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.'+'USED_REPRESENTATION'))
| (temp_prop_def_rep.name = 'class parameters')
)
) > 0
);
REPEAT i:=1 TO HIINDEX(reps) WHILE (NOT violation);
REPEAT j:=1 TO HIINDEX(arg_list) WHILE (NOT violation);
violation := (SIZEOF(QUERY(rep_item <* reps[i].items |
rep_item.name = arg_list[j])) <> 1);
END_REPEAT;
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
representation: набор всех экземпляров объектов representation.
Формальные высказывания:
WR1: Для каждого объекта property_definition_representation с name = 'class parameters' должен использоваться объект representation, содержащий только один элемент (item) в своем наборе items, который должен быть типом объекта representation_item с именем (name) со значением 'length class', 'length solas', 'scantlings draught', 'block coefficient class', 'design speed ahead' или 'design speed astern'.
Правило representation_restricted_by_name_principal_characteristics определяет наличие для атрибута items объекта representation для каждой записи в перечне только одного объекта representation_item, значение атрибута name которого указано в этом перечне, если объект representation представляет собой объект used_representation в объекте property_definition_representation, атрибут name которого имеет значение 'principal characteristics'.
EXPRESS-спецификация:
*)
RULE representation_restricted_by_name_principal_characteristics
FOR (representation);
LOCAL
reps: BAG OF REPRESENTATION := [];
arg_list: LIST OF STRING := ['length between perpendiculars',
'moulded breadth', 'moulded depth'];
violation: LOGICAL := FALSE;
END_LOCAL;
reps := QUERY(
temp_rep <* representation |
SIZEOF (
QUERY(
temp_prop_def_rep <* bag_to_set(USEDIN(temp_rep,
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.'+'USED_REPRESENTATION'))
| (temp_prop_def_rep.name =
'principal characteristics')
)
) > 0
);
REPEAT i:=1 TO HIINDEX(reps) WHILE (NOT violation);
REPEAT j:=1 TO HIINDEX(arg_list) WHILE (NOT violation);
violation := (SIZEOF(QUERY(rep_item <* reps[i].items |
rep_item.name = arg_list[j])) <> 1);
END_REPEAT;
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
representation: набор всех экземпляров объектов representation.
Формальные высказывания:
WR1: Для каждого объекта property_definition_representation с name = 'principal characteristics' должен использоваться объект representation, содержащий только один элемент (item) в своем наборе items, который должен быть типом объекта representation_item с именем (name), имеющим значение 'length between perpendiculars', 'moulded breadth' или 'moulded depth'.
Правило representation_restricted_by_name_ship_overall_dimensions определяет наличие для атрибута items объекта representation для каждой записи в перечне только одного объекта representation_item, значение атрибута name которого указано в этом перечне, если объект representation представляет собой объект used_representation в объекте property_definition_representation, атрибут name которого имеет значение 'ship overall dimensions'.
EXPRESS-спецификация:
*)
RULE representation_restricted_by_name_ship_overall_dimensions
FOR (representation);
LOCAL
reps: BAG OF REPRESENTATION := [];
arg_list: LIST OF STRING := ['overall breadth', 'overall depth',
'overall length', 'stem overhang'', 'stern overhang'];
violation: LOGICAL := FALSE;
END_LOCAL;
reps := QUERY(
temp_rep <* representation |
SIZEOF (
QUERY(
temp_prop_def_rep <* bag_to_set(USEDIN(temp_rep,
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.'+'USED_REPRESENTATION'))
| (temp_prop_def_rep.name = 'ship overall dimensions')
)
) > 0
);
REPEAT i:=1 TO HIINDEX(reps) WHILE (NOT violation);
REPEAT j:=1 TO HIINDEX(arg_list) WHILE (NOT violation);
violation := (SIZEOF(QUERY(rep_item <* reps[i].items |
rep_item.name = arg_list[j])) <> 1);
END_REPEAT;
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
representation: набор всех экземпляров объектов representation.
Формальные высказывания:
WR1: Для каждого объекта property_definition_representation с name = 'ship overall dimensions' должен использоваться объект representation, содержащий только один элемент (item) в своем наборе items, который должен быть типом объекта representation_item с именем (name), имеющим значение 'overall breadth', 'overall depth', 'overall length', 'stem overhang' или 'stern overhang'.
Правило revision_has_mandatory_attribute_description определяет, что для экземпляра объекта group с идентификатором класса 'revision' создается экземпляр необязательного атрибута description.
EXPRESS-спецификация:
*)
RULE
revision_has_mandatory_attribute_description
FOR (group);
LOCAL
t1_set: SET OF group := [];
violate: LOGICAL := FALSE;
END_LOCAL;
t1_set := QUERY(i <* group | VALUE_IN(WHICH_CLASS(i), 'revision'));
violate := (SIZEOF(QUERY(k <* t1_set |
NOT EXISTS (k.description))) > 0);
WHERE
WR1: NOT violate;
END_RULE;
(*
Определения аргументов:
group: набор всех экземпляров объектов group.
Формальные высказывания:
WR1: Необязательный атрибут description должен быть для каждого экземпляра объекта group, содержащего объект applied_classification_assignment, чей объект assigned_class представляет собой group с атрибутом name, значение которого равно 'revision'.
Правило revision_with_context_referenced_for_context_of_revision определяет, что на каждый экземпляр типа group с классификацией 'revision' должна быть дана ссылка только из одного присваивания типа applied_group_assignment со значением роли 'context of revision' через атрибут assigned_group.
EXPRESS-спецификация:
*)
RULE
revision_with_context_referenced_for_context_of_revision FOR(applied_group_
assignment, group);
LOCAL
t1_set: SET OF group := [];
a_set: SET OF applied_group_assignment := [];
violate: LOGICAL := FALSE;
END_LOCAL;
t1_set := QUERY(a <* group |
VALUE_IN(WHICH_CLASS(a), 'revision with context'));
REPEAT i := 1 TO HIINDEX(t1_set) WHILE NOT violate;
a_set := QUERY(b <* applied_group_assignment |
(b.assigned_group = t1_set[i]) AND
(b.role.name = 'context of revision'));
violate := SIZEOF(a_set) <> 1;
END_REPEAT;
WHERE
WR1: NOT violate;
END_RULE;
(*
Определения аргументов:
applied_group_assignment: набор всех экземпляров объектов applied_group_assignment.
group: набор всех экземпляров объектов group.
Формальные высказывания:
WR1: На каждый экземпляр объекта group, содержащий объект applied_classification_assignment, чей объект assigned_classification представляет собой объект group со значением 'revision with context' для атрибута name, должна даваться ссылка только из одного экземпляра вида applied_group_assignment, со значением роли 'context of revision', через атрибут assigned_group.
Правило ship_curve_has_name определяет наличие у атрибута item_element объекта compound_representation_item с идентификатором класса 'ship curve' в объекте list_representation_item для каждой записи в перечне только одного объекта representation_item, значение атрибута name которого указано в этом перечне.
EXPRESS-спецификация:
*)
RULE ship_curve_has_name
FOR (APPLIED_CLASSIFICATION_ASSIGNMENT);
LOCAL
c_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT := [];
t1_set: SET OF Compound_representation_item := [];
t2_set: SET OF representation_item := [];
arg_list: LIST OF STRING := ['side condition', 'curve shape'];
violation: LOGICAL := FALSE;
END_LOCAL;
(* get all classification_assignment instances with id 'ship curve' *)
c_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.ASSIGNED_CLASS.NAME = 'ship curve');
(* get all instances of compound_representation_item that have class id 'ship curve' *)
REPEAT i := 1 TO HIINDEX(c_a_set);
REPEAT j := 1 TO HIINDEX(c_a_set[i].items);
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
(* iterate over all compound_representation_item found above; stop, if one of
them has not exactly one rep_item for each name in the arg_list *)
REPEAT i:=1 TO HIINDEX(t1_set) WHILE (NOT violation);
REPEAT j:=1 TO HIINDEX(arg_list) WHILE (NOT violation);
t2_set := t1_set[i].item_element;
violation := (SIZEOF(QUERY(items <* t2_set | items.name = arg_list[j])) <> 1);
END_REPEAT;
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
applied_classification_assignment: набор всех экземпляров объектов applied_classification_assignment.
Формальные высказывания:
WR1: У каждого экземпляра объекта compound_representation_item, содержащего объект applied_classification_assignment со значением атрибута assigned_class.name, равным 'ship curve', должен быть свой атрибут item_element, экземпляр которого приведен как list_representation_item, который должен для каждого из следующих значений: 'side condition' или 'curve shape' забирать только один экземпляр объекта representation_item с атрибутом name, значение которого равно этому значению.
Правило ship_curve_segment_has_class определяет наличие для атрибута item_element объекта compound_representation_item с идентификатором класса 'ship curve segment' в объекте list_representation_item только одного объекта compound_representation_item с идентификатором класса 'ship curve'.
EXPRESS-спецификация:
*)
RULE ship_curve_segment_has_class
FOR (APPLIED_CLASSIFICATION_ASSIGNMENT);
LOCAL
c_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT := [];
c_a_set2 : SET OF APPLIED_CLASSIFICATION_ASSIGNMENT := [];
t1_set: SET OF COMPOUND_REPRESENTATION_ITEM := [];
t2_set: SET OF COMPOUND_REPRESENTATION_ITEM := [];
t3_set: SET OF REPRESENTATION_ITEM := [];
l_rep_item : list_representation_item;
violation: LOGICAL := FALSE;
END_LOCAL;
(* get all classification_assignment instances with id 'ship curve segment' *)
c_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.ASSIGNED_CLASS.NAME = 'ship curve segment');
(* get all instances of compound_representation_item that have class id 'ship
curve segment' *)
REPEAT i := 1 TO HIINDEX(c_a_set);
REPEAT j := 1 TO HIINDEX(c_a_set[i].items);
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
(* get all classification_assignment instances with id 'ship curve' *)
c_a_set2 := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.ASSIGNED_CLASS.NAME = 'ship curve');
(* get all instances of compound_representation_item that have class id 'ship
curve' *)
REPEAT i := 1 TO HIINDEX(c_a_set2);
REPEAT j := 1 TO HIINDEX(c_a_set2[i].items);
t2_set := t2_set + c_a_set2[i].items[j];
END_REPEAT;
END_REPEAT;
(* iterate over all compound_representation_item found in the first list; then
iterate over all item_element for each compound_representation_item, check that the
intersection of these item_elements and and the second list of compound_representation_
item is equal 1 *)
REPEAT i:=1 TO HIINDEX(t1_set) WHILE (NOT violation);
REPEAT j := 1 TO HIINDEX(t1_set[i].item_element);
l_rep_item := t1_set[i].item_element;
t3_set := t3_set + l_rep_item[j];
END_REPEAT;
violation := (SIZEOF(t3_set * t2_set) <> 1);
t3_set:= [];
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
applied_classification_assignment: набор всех экземпляров объектов applied_classification_assignment.
Формальные высказывания:
WR1: У каждого экземпляра объекта compound_representation_item, содержащего объект applied_classification_assignment, чей атрибут assigned_class.name равен значению 'ship curve segment', должен быть свой атрибут item_element, экземпляр которого приведен как list_representation_item, который должен забирать только один экземпляр объекта compound_representation_item, содержащего объект applied_classification_assignment, чей атрибут assigned_class равен значению 'ship curve'.
Правило ship_curve_with_spacing_position_has_class определяет наличие у атрибута item_element объекта compound_representation_item с идентификатором класса 'ship curve with spacing position' в объекте list_representation_item только одного объекта compound_representation_item с идентификатором класса 'spacing position'.
EXPRESS-спецификация:
*)
RULE ship_curve_with_spacing_position_has_class
FOR (APPLIED_CLASSIFICATION_ASSIGNMENT);
LOCAL
c_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT := [];
c_a_set2 : SET OF APPLIED_CLASSIFICATION_ASSIGNMENT := [];
t1_set: SET OF COMPOUND_REPRESENTATION_ITEM := [];
t2_set: SET OF COMPOUND_REPRESENTATION_ITEM := [];
t3_set: SET OF REPRESENTATION_ITEM := [];
l_rep_item : list_representation_item;
violation: LOGICAL := FALSE;
END_LOCAL;
(* get all classification_assignment instances with id 'ship curve with spacing
position' *)
c_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.ASSIGNED_CLASS.NAME = 'ship curve with spacing position');
(* get all instances of compound_representation_item that have class id 'ship
curve with spacing position' *)
REPEAT i := 1 TO HIINDEX(c_a_set);
REPEAT j := 1 TO HIINDEX(c_a_set[i].items);
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
(* get all classification_assignment instances with id 'spacing position' *)
c_a_set2 := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.ASSIGNED_CLASS.NAME = 'spacing position');
(* get all instances of compound_representation_item that have class id 'spacing
position' *)
REPEAT i := 1 TO HIINDEX(c_a_set2);
REPEAT j := 1 TO HIINDEX(c_a_set2[i].items);
t2_set := t2_set + c_a_set2[i].items[j];
END_REPEAT;
END_REPEAT;
(* iterate over all compound_representation_item found in the first list; then
iterate over all item_element for each compound_representation_item, check that
the intersection of these item_elements and and the second list of compound_
representation_item is equal 1 *)
REPEAT i:=1 TO HIINDEX(t1_set) WHILE (NOT violation);
REPEAT j := 1 TO HIINDEX(t1_set[i].item_element);
l_rep_item := t1_set[i].item_element;
t3_set := t3_set + l_rep_item[j];
END_REPEAT;
violation := (SIZEOF(t3_set * t2_set) <> 1);
t3_set:= [];
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
applied_classification_assignment: набор всех экземпляров объектов applied_classification_assignment.
Формальные высказывания:
WR1: У каждого экземпляра объекта compound_representation_item, содержащего объект applied_classification_assignment, чей атрибут assigned_class.name равен значению 'ship curve with spacing position', должен быть свой атрибут item_element, экземпляр которого приведен как list_representation_item, который должен забирать только один экземпляр объекта compound_representation_item, содержащего объект applied_classification_assignment, чей атрибут assigned_class равен значению 'spacing position'.
Правило ship_designation_has_one_specified_names определяет, что на экземпляр объекта product_definition с идентификатором класса 'ship designation' приведена ссылка только из одного экземпляра объекта applied_identification_assignment через items, у которого атрибут role, определяющий объект с атрибутом name, имеет значение 'imo number' или 'pennant hull number'.
EXPRESS-спецификация:
*)
RULE ship_designation_has_one_specified_names FOR(applied_classification_
assignment);
LOCAL
c_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT := [];
t1_set: SET OF product_definition := [];
t2_set: SET OF applied_identification_assignment := [];
violation: LOGICAL := FALSE;
END_LOCAL;
c_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.assigned_class.NAME = 'ship designation');
REPEAT i := 1 TO HIINDEX(c_a_set);
REPEAT j := 1 TO HIINDEX(c_a_set[i].items);
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) WHILE NOT violation;
t2_set := bag_to_set(USEDIN(t1_set[i],
'SHIP_MOULDED_FORM_SCHEMA.APPLIED_IDENTIFICATION_ASSIGNMENT.ITEMS'));
violation := NOT (SIZEOF(QUERY(t2_inst <* t2_set | (t2_inst.role.name =
'imo number')OR (t2_inst.role.name = 'pennant hull number') )) = 1);
END_REPEAT;
WHERE
WR1: NOT violation;
END_RULE;
(*
Определения аргументов:
applied_classification_assignment: набор всех экземпляров объектов applied_classification_assignment.
Формальные высказывания:
WR1: На каждый экземпляр объекта product_definition, содержащий объект applied_classification_assignment, где assigned_class представляет собой group с атрибутом name со значением 'ship designation', приведена ссылка только из одного экземпляра объекта applied_identification_assignment через атрибут items, чей атрибут role представляет собой identification_role с атрибутом name, равным либо 'imo number', либо 'pennant hull number'.
Правило ship_moulded_form_revision_has_description определяет, что для экземпляра объекта product_definition_relationship с идентификатором класса 'ship moulded form revision' создается экземпляр необязательного атрибута description.
EXPRESS-спецификация:
*)
RULE ship_moulded_form_revision_has_description
FOR (product_definition_relationship);
LOCAL
t1_set: SET OF product_definition_relationship := [];
violate: LOGICAL := FALSE;
END_LOCAL;
(* get all instances of product_definition_relationship being classified as 'ship
moulded form revision' *)
t1_set := QUERY(i <* product_definition_relationship |
VALUE_IN(WHICH_CLASS(i), 'ship moulded form revision'));
(* from all instances found above: find those for which attribute description is
not instanciated *)
violate := (SIZEOF(QUERY(k <* t1_set | NOT EXISTS (k.description))) > 0);
WHERE
wr1: NOT violate;
END_RULE;
(*
Определения аргументов:
product_definition_relationship: набор всех экземпляров объектов product_definition_relationship.
Формальные высказывания:
WR1: Необязательный атрибут description должен существовать для каждого экземпляра объекта product_definition_relationship, у которого есть объект applied_classification_assignment со значением 'ship moulded form revision' для assigned_class.name.
Правило ship_overall_dimensions_has_properties определяет, что на объект product_definition с идентификатором класса 'ship overall dimensions' приведена ссылка из одного объекта property_definition_representation со значением имени 'ship overall dimensions' через объект property_definition.
EXPRESS-спецификация:
*)
RULE ship_overall_dimensions_has_properties
FOR (property_definition_representation, applied_classification_assignment);
LOCAL
c_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT := [];
t1_set: LIST OF product_definition := [];
t2_set: SET OF property_definition_representation := [];
t3_set: LIST OF property_definition := [];
t4_set: LIST OF product_definition := [];
violation: LOGICAL := FALSE;
END_LOCAL;
c_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.assigned_class.NAME =
'ship overall dimensions');
REPEAT i := 1 TO HIINDEX(c_a_set);
REPEAT j := 1 TO HIINDEX(c_a_set[i].items);
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
t2_set:= QUERY(i <* PROPERTY_DEFINITION_REPRESENTATION |
i.NAME = 'ship overall dimensions');
REPEAT i := 1 TO HIINDEX(t2_set);
t3_set := t3_set + t2_set[i].definition;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t3_set);
t4_set := t4_set + t3_set[i].definition;
END_REPEAT;
violation := t1_set <> t4_set;
WHERE
WR1: NOT violation;
END_RULE;
(*
Определения аргументов:
property_definition_representation: набор всех экземпляров объектов property_definition_representation.
applied_classification_assignment: набор всех экземпляров объектов applied_classification_assignment.
Формальные высказывания:
WR1: На каждый экземпляр объекта product_definition, содержащий объект applied_classification_assignment, чей атрибут assigned_class представляет собой group со значением 'ship overall dimensions' для атрибута name, должна быть дана ссылка только из одного экземпляра объекта property_definition через атрибут definition, на который, в свою очередь, приведена ссылка из экземпляра объекта property_definition_representation через атрибут definition, значение атрибута name которого равно 'ship overall dimensions'.
Правило ship_point_compound_representation_has_name определяет наличие у атрибута item_element объекта compound_representation_item с идентификатором класса 'ship point' в объекте list_representation_item для каждой записи в перечне только одного объекта representation_item, значение атрибута name которого указано в этом перечне.
EXPRESS-спецификация:
*)
RULE ship_point_compound_representation_has_name
FOR (APPLIED_CLASSIFICATION_ASSIGNMENT);
LOCAL
c_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT := [];
t1_set: SET OF Compound_representation_item := [];
t2_set: SET OF representation_item := [];
arg_list: LIST OF STRING := ['point shape'];
violation: LOGICAL := FALSE;
END_LOCAL;
(* get all classification_assignment instances with id 'ship point' *)
c_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.ASSIGNED_CLASS.NAME = 'ship point');
(* get all instances of compound_representation_item that have class id 'ship
point' *)
REPEAT i := 1 TO HIINDEX(c_a_set);
REPEAT j := 1 TO HIINDEX(c_a_set[i].items);
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
(* iterate over all compound_representation_item found above; stop, if one of
them has not exactly one rep_item for each name in the arg_list *)
REPEAT i:=1 TO HIINDEX(t1_set) WHILE (NOT violation);
REPEAT j:=1 TO HIINDEX(arg_list) WHILE (NOT violation);
t2_set := t1_set[i].item_element;
violation := (SIZEOF(QUERY(items <* t2_set | items.name = arg_list[j])) <> 1);
END_REPEAT;
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
applied_classification_assignment: набор всех экземпляров объектов applied_classification_assignment.
Формальные высказывания:
WR1: У каждого экземпляра объекта compound_representation_item, имеющего объект applied_classification_assignment со значением атрибута assigned_class.name, равным 'ship point', должен быть свой атрибут item_element, экземпляр которого приведен как list_representation_item, который должен для каждого из значений 'point shape' забирать только один экземпляр объекта representation_item с атрибутом name, значение которого равно этому значению.
Правило ship_surface_compound_representation_has_name определяет наличие у атрибута item_element объекта compound_representation_item с идентификатором класса 'ship surface' в объекте list_representation_item для каждой записи в перечне только одного объекта representation_item, значение атрибута name которого указано в этом перечне.
EXPRESS-спецификация:
*)
RULE ship_surface_compound_representation_has_name
FOR (APPLIED_CLASSIFICATION_ASSIGNMENT);
LOCAL
c_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT := [];
t1_set: SET OF Compound_representation_item := [];
t2_set: SET OF representation_item := [];
arg_list: LIST OF STRING := ['surface shape'];
violation: LOGICAL := FALSE;
END_LOCAL;
(* get all classification_assignment instances with id 'ship surface' *)
c_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.ASSIGNED_CLASS.NAME = 'ship surface');
(* get all instances of compound_representation_item that have class id 'ship
surface' *)
REPEAT i := 1 TO HIINDEX(c_a_set);
REPEAT j := 1 TO HIINDEX(c_a_set[i].items);
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
(* iterate over all compound_representation_item found above; stop, if one of
them has not exactly one rep_item for each name in the arg_list *)
REPEAT i:=1 TO HIINDEX(t1_set) WHILE (NOT violation);
REPEAT j:=1 TO HIINDEX(arg_list) WHILE (NOT violation);
t2_set := t1_set[i].item_element;
violation := (SIZEOF(QUERY(items <* t2_set | items.name = arg_list[j])) <> 1);
END_REPEAT;
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
applied_classification_assignment: набор всех экземпляров объектов applied_classification_assignment.
Формальные высказывания:
WR1: У каждого экземпляра объекта compound_representation_item, имеющего объект applied_classification_assignment со значением атрибута assigned_class.name, равным 'ship surface', должен быть свой атрибут item_element, экземпляр которого приведен как list_representation_item, который должен для каждого из значений 'surface shape' забирать только один экземпляр объекта representation_item с атрибутом name, значение которого равно этому значению.
Правило spacing_position_compound_representation_has_name определяет для атрибута item_element объекта compound_representation_item с идентификатором класса 'spacing position' наличие в перечне объектов representation_item для каждой записи в перечне только одного объекта representation_item, значение атрибута name которого указано в этом перечне.
EXPRESS-спецификация:
*)
RULE spacing_position_compound_representation_has_name
FOR (applied_classification_assignment);
LOCAL
c_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT := [];
t1_set: SET OF Compound_representation_item := [];
t2_set: SET Of representation_item := [];
arg_list: LIST OF STRING := ['position number', 'position'];
violation: LOGICAL := FALSE;
END_LOCAL;
c_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.assigned_class.NAME = 'spacing position');
REPEAT i := 1 TO HIINDEX(c_a_set);
REPEAT j := 1 TO HIINDEX(c_a_set[i].items);
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i:=1 TO HIINDEX(t1_set) WHILE (NOT violation);
REPEAT j:=1 TO HIINDEX(arg_list) WHILE (NOT violation);
t2_set := t1_set[i].item_element;
violation := (SIZEOF(QUERY(items <* t2_set |
items.name = arg_list[j])) <> 1);
END_REPEAT;
END_REPEAT;
WHERE
WR1: NOT violation;
END_RULE;
(*
Определения аргументов:
applied_classification_assignment: набор всех экземпляров объектов applied_classification_assignment.
Формальные высказывания:
WR1: У каждого экземпляра объекта compound_representation_item, содержащего объект applied_classification_assignment, где атрибут assigned_class представляет собой group с атрибутом name, равным 'spacing position', должен быть свой атрибут item_element, экземпляр которого приведен как list_representation_item, который должен для каждого из значений 'position number' или 'position' забирать только один экземпляр объекта representation_item с атрибутом name, значение которого равно этому значению.
Правило spacing_position_with_offset_compound_representation_has_class задает атрибут item_element для compound_representation_item с идентификатором класса 'spacing position with offset' для получения в list_representation_item ровно одного compound_representation_item с идентификатором класса 'spacing position'.
EXPRESS-спецификация:
*)
RULE spacing_position_with_offset_compound_representation_has_class
FOR (applied_classification_assignment);
LOCAL
t3_set : SET OF representation_item := [];
violation : LOGICAL := FALSE;
t1_set : SET OF compound_representation_item := [];
c_a_set : SET OF applied_classification_assignment := [];
c_a_set2 : SET OF applied_classification_assignment := [];
l_rep_item : list_representation_item;
t2_set : SET OF compound_representation_item := [];
END_LOCAL;
c_a_set := QUERY ( i <* applied_classification_assignment |
(i.assigned_class.name = 'spacing position with offset') );
REPEAT i := 1 TO HIINDEX(c_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
c_a_set2 := QUERY ( i <* applied_classification_assignment |
(i.assigned_class.name = 'spacing position') );
REPEAT i := 1 TO HIINDEX(c_a_set2) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set2[i].items) BY 1;
t2_set := t2_set + c_a_set2[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
REPEAT j := 1 TO HIINDEX(t1_set[i].item_element) BY 1;
l_rep_item := t1_set[i].item_element;
t3_set := t3_set + l_rep_item[j];
END_REPEAT;
violation := SIZEOF(t3_set * t2_set) <> 1;
t3_set := [];
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE;
(*
Определения аргументов:
applied_classification_assignment: набор всех экземпляров applied_classification_assignment.
Формальные высказывания:
WR1: Каждый экземпляр compound_representation_item, у которого есть applied_classification_assignment, чей атрибут assigned_class является группой group с равной 'spacing position with offset' атрибута имени name, должен иметь свой атрибут item_element в качестве list_representation_item, который должен забирать ровно один экземпляр compound_representation_item, имеющий назначение applied_classification_assignment, чей атрибут assigned_class равен 'spacing position'.
Правило spacing_position_with_offset_compound_representation_has_name определяет для атрибута item_element объекта compound_representation_item с идентификатором класса 'spacing position' наличие в перечне объектов representation_item для каждой записи в перечне только одного объекта representation_item, значение атрибута name которого указано в этом перечне.
EXPRESS-спецификация:
*)
RULE spacing_position_with_offset_compound_representation_has_name
FOR (applied_classification_assignment);
LOCAL
c_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT := [];
t1_set: SET OF Compound_representation_item := [];
t2_set: SET Of representation_item := [];
arg_list: LIST OF STRING := ['offset'];
violation: LOGICAL := FALSE;
END_LOCAL;
c_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.assigned_class.NAME =
'spacing position with offset');
REPEAT i := 1 TO HIINDEX(c_a_set);
REPEAT j := 1 TO HIINDEX(c_a_set[i].items);
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i:=1 TO HIINDEX(t1_set) WHILE (NOT violation);
REPEAT j:=1 TO HIINDEX(arg_list) WHILE (NOT violation);
t2_set := t1_set[i].item_element;
violation := (SIZEOF(QUERY(items <* t2_set |
items.name = arg_list[j])) <> 1);
END_REPEAT;
END_REPEAT;
WHERE
WR1: NOT violation;
END_RULE;
(*
Определения аргументов:
applied_classification_assignment: набор всех экземпляров объектов applied_classification_assignment.
Формальные высказывания:
WR1: У каждого экземпляра объекта compound_representation_item, содержащего объект applied_classification_assignment, где атрибут assigned_class представляет собой group с атрибутом name, равным 'spacing position with offset', должен быть свой атрибут item_element, экземпляр которого приведен как list_representation_item, который должен для каждого из значений 'offset' забирать только один экземпляр объекта representation_item с атрибутом name, значение которого равно этому значению.
Правило stability_properties_for_floating_position_has_class определяет наличие у атрибута item_element объекта compound_representation_item с идентификатором класса 'stability properties for one floating position' в объекте list_representation_item одного или более объектов compound_representation_item с идентификатором класса 'stability property'.
EXPRESS-спецификация:
*)
RULE
stability_properties_for_floating_position_has_class
FOR (APPLIED_CLASSIFICATION_ASSIGNMENT);
LOCAL
c_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT := [];
c_a_set2 : SET OF APPLIED_CLASSIFICATION_ASSIGNMENT := [];
t1_set: SET OF COMPOUND_REPRESENTATION_ITEM := [];
t2_set: SET OF COMPOUND_REPRESENTATION_ITEM := [];
t3_set: SET OF REPRESENTATION_ITEM := [];
l_rep_item: list_representation_item;
violation: LOGICAL := FALSE;
END_LOCAL;
(* get all classification_assignment instances with id 'stability properties
for one floating position' *)
c_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.Assigned_class.name = 'stability properties for one floating
position');
(* get all instances of compound_representation_item that have class id
'stability properties for one floating position' *)
REPEAT i := 1 TO HIINDEX(c_a_set);
REPEAT j := 1 TO HIINDEX(c_a_set[i].items);
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
(* get all classification_assignment instances with id 'stability property' *)
c_a_set2 := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.Assigned_class.name = 'stability property');
(* get all instances of compound_representation_item that have class id
'stability property' *)
REPEAT i := 1 TO HIINDEX(c_a_set2);
REPEAT j := 1 TO HIINDEX(c_a_set2[i].items);
t2_set := t2_set + c_a_set2[i].items[j];
END_REPEAT;
END_REPEAT;
(* iterate over all compound_representation_item found in the first list;
then iterate over all item_element for each compound_representation_item, check
that the intersection of these item_elements and the second list of compound_
representation_item is greater than or equal to 1 *)
REPEAT i:=1 TO HIINDEX(t1_set) WHILE (NOT violation);
REPEAT j := 1 TO HIINDEX(t1_set[i].item_element);
l_rep_item := t1_set[i].item_element;
t3_set := t3_set + l_rep_item[j];
END_REPEAT;
violation := (SIZEOF(t3_set * t2_set) < 1);
t3_set:= [];
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
applied_classification_assignment: набор всех экземпляров объектов applied_classification_assignment.
Формальные высказывания:
WR1: У каждого экземпляра объекта compound_representation_item, содержащего объект applied_classification_assignment, чей атрибут assigned_class.name равен значению 'stability properties for one floating position', должен быть свой атрибут item_element, экземпляр которого приведен как list_representation_item, который должен забирать один или более экземпляров объекта compound_representation_item, содержащего объект applied_classification_assignment, чей атрибут assigned_class равен значению 'stability property'.
Правило stability_properties_for_floating_position_has_name определяет для атрибута item_element объекта compound_representation_item с идентификатором класса 'stability properties for one floating position' наличие в объекте list_representation_item для каждой записи в перечне только одного объекта representation_item, значение атрибута name которого указано в этом перечне.
EXPRESS-спецификация:
*)
RULE
stability_properties_for_floating_position_has_name
FOR (APPLIED_CLASSIFICATION_ASSIGNMENT);
LOCAL
c_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT := [];
t1_set: SET OF Compound_representation_item := [];
t2_set: SET OF representation_item := [];
arg_list: LIST OF STRING := ['centre of gravity above keel',
'definition of starting floating position'];
violation: LOGICAL := FALSE;
END_LOCAL;
(* get all classification_assignment instances with id 'stability properties
for one floating position' *)
c_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.Assigned_class.name = 'stability properties for one floating
position');
(* get all instances of compound_representation_item that have class id
'stability properties for one floating position' *)
REPEAT i := 1 TO HIINDEX(c_a_set);
REPEAT j := 1 TO HIINDEX(c_a_set[i].items);
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
(* iterate over all compound_representation_item found above; stop, if one of
them has not exactly one rep_item for each name in the arg_list *)
REPEAT i:=1 TO HIINDEX(t1_set) WHILE (NOT violation);
REPEAT j:=1 TO HIINDEX(arg_list) WHILE (NOT violation);
t2_set := t1_set[i].item_element;
violation := (SIZEOF(QUERY(items <* t2_set | items.name = arg_list[j])) <>
1);
END_REPEAT;
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
applied_classification_assignment: набор всех экземпляров объектов applied_classification_assignment.
Формальные высказывания:
WR1: У каждого экземпляра объекта compound_representation_item, имеющего объект applied_classification_assignment со значением атрибута assigned_class.name, равным 'stability properties for one floating position', должен быть свой атрибут item_element, экземпляр которого приведен как list_representation_item, который должен для каждого из значений 'centre of gravity above keel' или 'definition of starting floating position' забирать только один экземпляр объекта representation_item с атрибутом name, значение которого равно этому значению.
Правило stability_property_has_name определяет для атрибута item_element объекта compound_representation_item с идентификатором класса 'stability property' наличие в объекте list_representation_item для каждой записи в перечне только одного объекта representation_item, значение атрибута name которого указано в этом перечне.
EXPRESS-спецификация:
*)
RULE stability_property_has_name
FOR (APPLIED_CLASSIFICATION_ASSIGNMENT);
LOCAL
c_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT := [];
t1_set: SET OF Compound_representation_item := [];
t2_set: SET OF representation_item := [];
arg_list: LIST OF STRING := ['angle of heel', 'righting arm', 'centre of buoyancy'];
violation: LOGICAL := FALSE;
END_LOCAL;
(* get all classification_assignment instances with id 'stability
property' *)
c_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.Assigned_class.name = 'stability property');
(* get all instances of compound_representation_item that have class id
'stability property' *)
REPEAT i := 1 TO HIINDEX(c_a_set);
REPEAT j := 1 TO HIINDEX(c_a_set[i].items);
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
(* iterate over all compound_representation_item found above; stop, if one of
them has not exactly one rep_item for each name in the arg_list *)
REPEAT i:=1 TO HIINDEX(t1_set) WHILE (NOT violation);
REPEAT j:=1 TO HIINDEX(arg_list) WHILE (NOT violation);
t2_set := t1_set[i].item_element;
violation := (SIZEOF(QUERY(items <* t2_set | items.name = arg_list[j])) <> 1);
END_REPEAT;
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
applied_classification_assignment: набор всех экземпляров объектов applied_classification_assignment.
Формальные высказывания:
WR1: У каждого экземпляра объекта compound_representation_item, имеющего объект applied_classification_assignment со значением атрибута assigned_class.name, равным 'stability property', должен быть свой атрибут item_element, экземпляр которого приведен как list_representation_item, который должен для каждого из значений 'angle of heel', 'righting arm' или 'centre of buoyancy' забирать только один экземпляр объекта representation_item с атрибутом name, значение которого равно этому значению.
Правило surface_with_identification_assignment задает перечень сущностей, для которых требуется идентификация. Идентификация определяется атрибутом applied_identification_assignment.
EXPRESS-спецификация:
*)
RULE surface_with_identification_assignment
FOR (APPLIED_CLASSIFICATION_ASSIGNMENT);
LOCAL
c_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT := [];
t1_set: SET OF surface := [];
t2_set: SET OF applied_identification_assignment := [];
arg_list: LIST OF STRING := ['surface with identifier'];
violation: LOGICAL := FALSE;
END_LOCAL;
(* get all classification_assignment instances *)
REPEAT j:=1 TO HIINDEX(arg_list) WHILE (NOT violation);
c_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.assigned_class.NAME = arg_LIST[j]);
END_REPEAT;
(* get all instances of surface that have class id *)
REPEAT i := 1 TO HIINDEX(c_a_set);
REPEAT j := 1 TO HIINDEX(c_a_set[i].items);
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
t2_set := bag_to_set(USEDIN(t1_set[i],
'SHIP_MOULDED_FORM_SCHEMA.APPLIED_IDENTIFICATION_ASSIGNMENT.ITEMS'));
t2_set := QUERY ( j <* t2_set |
j.role.name = 'globally unambiguous identifier');
violation := NOT (SIZEOF(T2_SET) = 1);
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
applied_classification_assignment: набор всех экземпляров applied_classification_assignment.
Формальные высказывания:
WR1: Для каждого экземпляра поверхности surface, на который ссылается application_classification_assignment, чей assigned_class имеет атрибут имени name со значением "поверхность с идентификатором", должно требоваться application_identification_assignment для определения идентификатора экземпляра.
Правило user_def_appendage_type_description_required определяет для атрибута representation, содержащего объект descriptive_representation_item со значением 'type of appendage' для name и 'user defined' для description, наличие другого объекта descriptive_representation_item со значением 'user def appendage type' для name.
EXPRESS-спецификация:
*)
RULE user_def_appendage_type_description_required
FOR (REPRESENTATION);
LOCAL
violation: LOGICAL := FALSE;
END_LOCAL;
REPEAT i := 1 TO HIINDEX(REPRESENTATION) WHILE NOT violation;
violation := (SIZEOF(QUERY(r <* REPRESENTATION[i].ITEMS |
('SHIP_MOULDED_FORM_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM'
IN TYPEOF(r)) AND
(r.NAME = 'type of appendage') AND
(r\DESCRIPTIVE_REPRESENTATION_ITEM.DESCRIPTION = 'user defined'))) > 0)
AND
(SIZEOF(QUERY(r <* REPRESENTATION[i].ITEMS |
(r.NAME = 'user def appendage type'))) = 0);
END_REPEAT;
WHERE
WR1: NOT violation;
END_RULE;
(*
Определения аргументов:
representation: набор всех экземпляров объектов representation.
Формальные высказывания:
WR1: Для каждого объекта representation, содержащего объект descriptive_representation_item со значением 'type of appendage' для name и 'user defined' для description в своем наборе элементов (items), должен быть другой объект descriptive_representation_item со значением 'user def appendage type' для name в его наборе items.
Правило user_def_function_description_required определяет для атрибута representation, содержащего объект descriptive_representation_item со значением 'function' для name и 'user defined' для description, наличие другого объекта descriptive_representation_item со значением 'user def function' для name.
EXPRESS-спецификация:
*)
RULE user_def_function_description_required
FOR (REPRESENTATION);
LOCAL
violation: LOGICAL := FALSE;
END_LOCAL;
REPEAT i := 1 TO HIINDEX(REPRESENTATION) WHILE NOT violation;
violation := (SIZEOF(QUERY(r <* REPRESENTATION[i].ITEMS |
('SHIP_MOULDED_FORM_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM'
IN TYPEOF(r)) AND
(r.NAME = 'function') AND
(r\DESCRIPTIVE_REPRESENTATION_ITEM.DESCRIPTION = 'user defined'))) > 0)
AND
(SIZEOF(QUERY(r <* REPRESENTATION[i].ITEMS |
(r.NAME = 'user def function'))) = 0);
END_REPEAT;
WHERE
WR1: NOT violation;
END_RULE;
(*
Определения аргументов:
representation: набор всех экземпляров объектов representation.
Формальные высказывания:
WR1: Для каждого объекта representation, содержащего объект descriptive_representation_item со значением 'function' для name и 'user defined' для description в своем наборе элементов (items), должен быть другой объект descriptive_representation_item со значением 'user def function' для name в его наборе items.
Правило valid_product_definition_for_class_moulded_form определяет объект product_definition с классификацией 'ship moulded form', который также представляет собой объект group. На объект group должна быть дана ссылка из объекта applied_group_assignment, чей атрибут role.name = 'item structure' и который собирает экземпляры product_definition с классификацией 'moulded form', и экземпляры product_definition_relationship с классификацией 'moulded form relationship' через свой атрибут applied_group_assignment.items.
EXPRESS-спецификация:
*)
RULE
valid_product_definition_for_class_moulded_form
FOR (APPLIED_CLASSIFICATION_ASSIGNMENT,APPLIED_GROUP_ASSIGNMENT);
LOCAL
c_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT:= [];
t1_set: SET OF PRODUCT_DEFINITION := [];
gr_ass: SET OF APPLIED_GROUP_ASSIGNMENT := [];
groups: SET OF GROUP := [];
violation: LOGICAL := FALSE;
violate1, violate2 : LOGICAL;
END_LOCAL;
(* get all classification_assignment instances with id 'ship moulded form' *)
c_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.ASSIGNED_CLASS.NAME = 'ship moulded form');
(* get all instances of product_definition that have class id 'ship moulded
form' *)
REPEAT i := 1 TO HIINDEX(c_a_set);
REPEAT j := 1 TO HIINDEX(c_a_set[i].items);
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
(* get the groups associated with these product_definitions *)
gr_ass := QUERY(i <* APPLIED_GROUP_ASSIGNMENT |
i.role.name = 'equivalence');
REPEAT i := 1 TO HIINDEX(gr_ass);
REPEAT j := 1 TO HIINDEX(gr_ass[i].items); -- should always be just one
IF (gr_ass[i].items[j] IN t1_set) THEN
groups := groups + gr_ass[i].assigned_group;
END_IF;
END_REPEAT;
END_REPEAT;
(* get the non-empty group_assignments having role 'item structure' and
referencing these groups *)
gr_ass := QUERY(i <* APPLIED_GROUP_ASSIGNMENT |
(SIZEOF(i.items) <> 0) AND
(i.role.name = 'item structure') AND
(i.assigned_group IN groups));
(* check if there are only instances of class 'moulded form' and of class
'moulded form relationship' in each group_assignment.items *)
REPEAT i := 1 TO HIINDEX(gr_ass) WHILE NOT(violation);
REPEAT j := 1 TO HIINDEX(gr_ass[i].items) WHILE NOT(violation);
violate1 := VALUE_IN(WHICH_CLASS(gr_ass[i].items[j]),'moulded form');
violate2 := VALUE_IN(WHICH_CLASS(gr_ass[i].items[j]),'moulded form relationship');
violation := NOT(violate1 OR violate2);
END_REPEAT;
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
applied_classification_assignment: набор всех экземпляров объектов applied_classification_assignment.
applied_group_assignment: набор всех экземпляров объектов applied_group_assignment.
Формальные высказывания:
WR1: Для каждого экземпляра объекта product_definition с классификацией 'ship moulded form', который также представляет собой объект group, на который дана ссылка из объекта applied_group_assignment, чей атрибут role.name = 'item structure', объект applied_group_assignment должен собирать только экземпляры product_definition с классификацией 'moulded form' и экземпляры product_definition_relationship с классификацией 'moulded form relationship' через свой атрибут applied_group_assignment.items.
Правило version_creation_has_mandatory_attribute_description определяет, что для экземпляра объекта action с идентификатором класса 'version creation' приведен экземпляр необязательного атрибута description.
EXPRESS-спецификация:
*)
RULE
version_creation_has_mandatory_attribute_description
FOR (action);
LOCAL
t1_set: SET OF action := [];
violate: LOGICAL := FALSE;
END_LOCAL;
t1_set := QUERY(i <* action | VALUE_IN(WHICH_CLASS(i),
'version creation'));
violate := (SIZEOF(QUERY(k <* t1_set |
NOT EXISTS (k.description))) > 0);
WHERE
WR1: NOT violate;
END_RULE;
(*
Определения аргументов:
action: набор всех экземпляров объектов action.
Формальные высказывания:
WR1: Необязательный атрибут description должен быть для каждого экземпляра объекта action, содержащего объект applied_classification_assignment, чей объект assigned_class представляет собой group с атрибутом name, значение которого равно 'version creation'.
Правило version_deletion_has_mandatory_attribute_description определяет, что для экземпляра объекта action с идентификатором класса 'version deletion' приведен экземпляр необязательного атрибута description.
EXPRESS-спецификация:
*)
RULE
version_deletion_has_mandatory_attribute_description
FOR (action);
LOCAL
t1_set: SET OF action := [];
violate: LOGICAL := FALSE;
END_LOCAL;
t1_set := QUERY(i <* action | VALUE_IN(WHICH_CLASS(i),
'version deletion'));
violate := (SIZEOF(QUERY(k <* t1_set |
NOT EXISTS (k.description))) > 0);
WHERE
WR1: NOT violate;
END_RULE;
(*
Определения аргументов:
action: набор всех экземпляров объектов action.
Формальные высказывания:
WR1: Необязательный атрибут description должен быть для каждого экземпляра объекта action, содержащего объект applied_classification_assignment, чей объект assigned_class представляет собой group с атрибутом name, значение которого равно 'version deletion'.
Правило version_history_has_exactly_one_assigned_group определяет, что на каждый экземпляр типа group с классификацией 'version history' должна быть дана ссылка только одним присваиванием вида applied_group_assignment через атрибут assigned_group.
EXPRESS-спецификация:
*)
RULE version_history_has_exactly_one_assigned_group FOR(applied_group_
assignment, group);
LOCAL
t1_set: SET OF group := [];
set_1, set_2: SET OF applied_group_assignment := [];
set_3: SET OF group_item := [];
violate: LOGICAL := FALSE;
END_LOCAL;
t1_set := QUERY(a <* group | VALUE_IN(WHICH_CLASS(a), 'version history'));
REPEAT i := 1 TO HIINDEX(t1_set) WHILE NOT violate;
set_1 := QUERY(b <* applied_group_assignment |
(b.assigned_group = t1_set[i]) AND (b.role.name = 'current version'));
set_2 := QUERY(c <* applied_group_assignment |
(c.assigned_group = t1_set[i]) AND (c.role.name = 'members'));
violate := ((SIZEOF(set_1) <> 1) OR (SIZEOF(set_2) <> 1));
IF not violate THEN
set_3 := set_1[1].items * set_2[1].items;
violate := (SIZEOF(set_3) <> 1) OR
NOT (VALUE_IN(WHICH_CLASS(set_3[1]), 'versionable
object'));
END_IF;
END_REPEAT;
WHERE
wr1: NOT violate;
END_RULE;
(*
Определения аргументов:
applied_group_assignment: набор экземпляров объектов applied_group_assignment.
group: набор экземпляров объектов group.
Формальные высказывания:
WR1: На каждый экземпляр объекта group, содержащий объект applied_classification_assignment, чей assigned_class идентифицирует объект с атрибутом name со значением 'version history', должна быть дана ссылка только из одного экземпляра вида объекта applied_group_assignment через атрибут assigned_group.
Правило version_history_is_referenced_by_at_least_one_versions определяет, что на каждый экземпляр типа group с классификацией 'version history' должна быть дана ссылка хотя бы одним присваиванием вида applied_group_assignment со значением 'versions' для role.name через атрибут assigned_group.
EXPRESS-спецификация:
*)
RULE version_history_is_referenced_by_at_least_one_versions
FOR(applied_group_assignment, group);
LOCAL
t1_set: SET OF group := [];
a_set: SET OF applied_group_assignment := [];
violate: LOGICAL := FALSE;
END_LOCAL;
t1_set := QUERY(a <* group | VALUE_IN(WHICH_CLASS(a), 'version history'));
REPEAT i := 1 TO HIINDEX(t1_set) WHILE NOT violate;
(* get the instances of applied_group_assignment that have a role 'versions' *)
a_set := QUERY(b <* applied_group_assignment |
(b.assigned_group = t1_set[i]) AND (b.role.name =
'versions'));
(* there shall be at least one such instance *)
violate := SIZEOF(a_set) < 1;
END_REPEAT;
WHERE
wr1: NOT violate;
END_RULE;
(*
Определения аргументов:
applied_group_assignment: набор экземпляров объектов applied_group_assignment.
group: набор экземпляров объектов group.
Формальные высказывания:
WR1: На каждый экземпляр объекта group, содержащий объект applied_classification_assignment, у которого значение для assigned_class.name равно 'version history', должна быть дана ссылка из одного или нескольких экземпляров вида applied_group_assignment со значением 'versions' для role.name через атрибут assigned_group.
Правило version_history_referenced_by_exactly_one_current_version определяет, что на каждый экземпляр типа group с классификацией 'version history' должна быть дана ссылка только одним присваиванием вида applied_group_assignment со значением 'current version' для role.name через атрибут assigned_group.
EXPRESS-спецификация:
*)
RULE version_history_referenced_by_exactly_one_current_version
FOR(applied_group_assignment, group);
LOCAL
t1_set: SET OF group := [];
a_set: SET OF applied_group_assignment := [];
violate: LOGICAL := FALSE;
END_LOCAL;
(* get all instances of group with class 'version history' *)
t1_set := QUERY(a <* group | VALUE_IN(WHICH_CLASS(a), 'version history'));
(* for all instances found above *)
REPEAT i := 1 TO HIINDEX(t1_set) WHILE NOT violate;
(* get the instances of applied_group_assignment that have a role 'current
version' *)
a_set := QUERY(b <* applied_group_assignment |
(b.assigned_group = t1_set[i]) AND (b.role.name = 'current version'));
(* there shall be one such instance *)
violate := SIZEOF(a_set) <> 1;
END_REPEAT;
WHERE
wr1: NOT violate;
END_RULE;
(*
Определения аргументов:
applied_group_assignment: набор экземпляров для объектов applied_group_assignment.
group: набор экземпляров для объектов group.
Формальные высказывания:
WR1: На каждый экземпляр объекта group, содержащий объект applied_classification_assignment, чей assigned_class идентифицирует объект с атрибутом name со значением 'version history', должна быть дана ссылка только из одного экземпляра вида объекта applied_group_assignment со значением роли 'current version' через атрибут assigned_group.
Правило version_history_referenced_by_multiple_roles определяет, что на каждый экземпляр вида group с классификацией 'version history' должна быть дана ссылка из одного или нескольких экземпляров вида applied_group_assignment со значением 'versions', 'current version' или 'relationships' для role.name через атрибут assigned_group.
EXPRESS-спецификация:
*)
RULE version_history_referenced_by_multiple_roles
FOR(applied_group_assignment, group);
LOCAL
t1_set: SET OF group := [];
a_set: SET OF applied_group_assignment := [];
violate: LOGICAL := FALSE;
END_LOCAL;
t1_set := QUERY(a <* group | VALUE_IN(WHICH_CLASS(a), 'version history'));
REPEAT i := 1 TO HIINDEX(t1_set) WHILE NOT violate;
a_set := QUERY(b <* applied_group_assignment |
(b.assigned_group = t1_set[i]) AND NOT (b.role.name IN ['versions', 'current
version', 'relationships']));
violate := SIZEOF(a_set) < 1;
END_REPEAT;
WHERE
wr1: NOT violate;
END_RULE;
(*
Определения аргументов:
applied_group_assignment: набор экземпляров объектов applied_group_assignment.
group: набор экземпляров объектов group.
Формальные высказывания:
WR1: На каждый экземпляр объекта group, содержащий объект applied_classification_assignment, чей assigned_class идентифицирует объект с атрибутом name со значением 'version history', должна быть дана ссылка только из экземпляров вида applied_group_assignment со значением role.name 'versions', 'current version' или 'relationships' через атрибут assigned_group.
Правило version_modification_has_mandatory_attribute_description определяет, что для экземпляра объекта action с идентификатором класса 'version modification' приведен экземпляр необязательного атрибута description.
EXPRESS-спецификация:
*)
RULE
version_modification_has_mandatory_attribute_description
FOR (action);
LOCAL
t1_set: SET OF action := [];
violate: LOGICAL := FALSE;
END_LOCAL;
t1_set := QUERY(i <* action | VALUE_IN(WHICH_CLASS(i), 'version modification'));
violate := (SIZEOF(QUERY(k <* t1_set |
NOT EXISTS (k.description))) > 0);
WHERE
WR1: NOT violate;
END_RULE;
(*
Определения аргументов:
action: набор экземпляров объектов action.
Формальные высказывания:
WR1: Необязательный атрибут description должен быть для каждого экземпляра объекта action, содержащего объект applied_classification_assignment, чей assigned_class представляет собой group с атрибутом name, значение которого равно 'version modification'.
Правило version_relationship_associates_with_versionable_object задает экземпляр объекта identification_assignment_relationship с классификацией 'version relationship', который связывает только экземпляры вида applied_identification_assignment, чей атрибут items указывает на экземпляры с классификацией 'versionable object'.
EXPRESS-спецификация:
*)
RULE version_relationship_associates_with_versionable_object
FOR (applied_identification_assignment);
LOCAL
violate: LOGICAL := FALSE;
END_LOCAL;
REPEAT i := 1 TO HIINDEX(applied_identification_assignment) BY 1 WHILE NOT violate;
IF ( (SIZEOF(USEDIN(applied_identification_assignment[i],
('SHIP_MOULDED_FORM_SCHEMA.IDENTIFICATION_ASSIGNMENT_RELATIONSHIP.'
+'RELATING_IDENTIFICATION_ASSIGNMENT'))) > 0) OR
(SIZEOF(USEDIN(applied_identification_assignment[i],
('SHIP_MOULDED_FORM_SCHEMA.IDENTIFICATION_ASSIGNMENT_RELATIONSHIP.'
+'RELATED_IDENTIFICATION_ASSIGNMENT'))) > 0) ) THEN
REPEAT j := 1 to HIINDEX(applied_identification_assignment[i].-items) BY 1 WHILE NOT violate;
violate := NOT
VALUE_IN(which_class(applied_identification_assignment[i].items[j]), 'versionable object');
END_REPEAT;
END_IF;
END_REPEAT;
WHERE
WR1: NOT violate;
END_RULE;
(*
Определения аргументов:
applied_identification_assignment: набор экземпляров объектов applied_identification_assignment.
Формальные высказывания:
WR1: Каждый экземпляр объекта identification_assignment_relationship, у которого имеется объект applied_classification_assignment со значением 'version relationship' для атрибута assigned_class.name, должен указывать только экземпляры объекта applied_identification_assignment с атрибутом items, чье значение указывает на экземпляр, у которого есть объект applied_classification_assignment со значением 'versionable object' для assigned_class.name.
Правило version_relationship_has_mandatory_attribute_description определяет, что для экземпляра объекта identification_assignment_relationship с идентификатором класса 'version relationship' приведен экземпляр необязательного атрибута description.
EXPRESS-спецификация:
*)
RULE
version_relationship_has_mandatory_attribute_description
FOR (identification_assignment_relationship);
LOCAL
t1_set: SET OF identification_assignment_relationship := [];
violate: LOGICAL := FALSE;
END_LOCAL;
t1_set := QUERY(i <* identification_assignment_relationship | VALUE_IN(WHICH_
CLASS(i), 'version relationship'));
violate := (SIZEOF(QUERY(k <* t1_set | NOT EXISTS (k.description))) > 0);
WHERE
WR1: NOT violate;
END_RULE;
(*
Определения аргументов:
identification_assignment_relationship: набор экземпляров объектов identification_assignment_relationship.
Формальные высказывания:
WR1: Необязательный атрибут description должен быть для каждого экземпляра объекта identification_assignment_relationship, содержащего объект applied_classification_assignment, чей объект assigned_class представляет собой group с атрибутом name, значение которого равно 'version relationship'.
Правило version_relationship_has_unique_versions определяет, что для всех экземпляров объекта identification_assignment_relationship с классификацией 'version relationship', атрибуты successor и predecessor должны ссылаться на разные экземпляры классификации 'versionable object'.
EXPRESS-спецификация:
*)
RULE
version_relationship_has_unique_versions
FOR (identification_assignment_relationship);
LOCAL
t1_set: SET OF identification_assignment_relationship := [];
violate: LOGICAL := FALSE;
END_LOCAL;
t1_set := QUERY(a <* identification_assignment_relationship |
VALUE_IN(WHICH_CLASS(a), 'version relationship'));
REPEAT i := 1 TO HIINDEX(t1_set) WHILE NOT violate;
violate :=
( t1_set[i].relating_identification_assignment.assigned_id =
t1_set[i].related_identification_assignment.assigned_id ) ;
END_REPEAT;
WHERE
WR1: NOT violate;
END_RULE;
(*
Определения аргументов:
identification_assignment_relationship: набор экземпляров объектов identification_assignment_relationship.
Формальные высказывания:
WR1: Значения assigned_id для атрибутов related_identification_assignment и relating_identification_assignment каждого экземпляра объекта identification_assignment_relationship, содержащего объект applied_classification_assignment, где assigned_class представляет собой group со значением 'version relationship' для атрибута name, должны быть разными.
Правило versionable_object_has_one_version_id определяет, что у вида, на который дана ссылка из объекта applied_identification_assignment, где значение для role.name равно 'version identifier', имеется только одна ссылка этого вида.
EXPRESS-спецификация:
*)
RULE versionable_object_has_one_version_id FOR(APPLIED_IDENTIFICATION_
ASSIGNMENT);
LOCAL
version_ids: SET OF APPLIED_IDENTIFICATION_ASSIGNMENT := [];
versionable_objects: BAG OF identification_item := [];
duplicate: LOGICAL := FALSE;
END_LOCAL;
version_ids := QUERY(i <* APPLIED_IDENTIFICATION_ASSIGNMENT |
i.ROLE.NAME = 'version identifier');
REPEAT i := 1 TO HIINDEX(version_ids);
versionable_objects := versionable_objects + version_ids[i].items;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(versionable_objects) WHILE NOT duplicate;
REPEAT j := i + 1 TO HIINDEX(versionable_objects) WHILE NOT duplicate;
duplicate := versionable_objects[i] :=: versionable_objects[j];
END_REPEAT;
END_REPEAT;
WHERE
WR1: NOT duplicate;
END_RULE;
(*
Определения аргументов:
applied_classification_assignment: набор экземпляров объектов applied_classification_assignment.
Формальные высказывания:
WR1: У каждого экземпляра объекта должен быть нулевой или единичный объект applied_identification_assignment со значением 'version identifier' для атрибута role.name.
Правило versioned_action_request_with_identification_assignment задает перечень объектов, для которых требуется идентификация. Идентификация определяется объектом applied_identification_assignment.
EXPRESS-спецификация:
*)
RULE versioned_action_request_with_identification_assignment
FOR (APPLIED_CLASSIFICATION_ASSIGNMENT);
LOCAL
c_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT := [];
t1_set: SET OF versioned_action_request := [];
t2_set: SET OF applied_identification_assignment := [];
arg_list: LIST OF STRING := [ 'change request'];
violation: LOGICAL := FALSE;
END_LOCAL;
REPEAT j:=1 TO HIINDEX(arg_list) WHILE (NOT violation);
c_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.assigned_class.NAME = arg_LIST[j]);
END_REPEAT;
REPEAT i := 1 TO HIINDEX(c_a_set);
REPEAT j := 1 TO HIINDEX(c_a_set[i].items);
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
t2_set := bag_to_set(USEDIN(t1_set[i], 'SHIP_MOULDED_FORM_SCHEMA.APPLIED_
IDENTIFICATION_ASSIGNMENT.ITEMS'));
t2_set := QUERY ( j <* t2_set |
j.role.name = 'globally unambiguous identifier');
violation := NOT (SIZEOF(T2_SET) = 1);
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE;
(*
Определения аргументов:
applied_classification_assignment: набор экземпляров объектов applied_classification_assignment.
Формальные высказывания:
WR1: Для каждого экземпляра объекта version_action_request, на который приведена ссылка из объекта applied_classification_assignment, где у assigned_class имеется атрибут name со значением 'change request', должен требоваться объект applied_identification_assignment для определения идентификатора экземпляра.
Правило versions_is_referenced_by_at_least_one_version_history определяет, что на каждый экземпляр вида group с классификацией 'version history' должна быть дана ссылка хотя бы одним присваиванием вида applied_group_assignment со значением 'version history' для role.name через атрибут assigned_group.
EXPRESS-спецификация:
*)
RULE versions_is_referenced_by_at_least_one_version_history FOR(applied_group_
assignment, group);
LOCAL
t1_set: SET OF group := [];
a_set: SET OF applied_group_assignment := [];
violate: LOGICAL := FALSE;
END_LOCAL;
t1_set := QUERY(a <* group | VALUE_IN(WHICH_CLASS(a), 'versions'));
REPEAT i := 1 TO HIINDEX(t1_set) WHILE NOT violate;
a_set := QUERY(b <* applied_group_assignment |
(b.assigned_group = t1_set[i]) AND (b.role.name = 'version history'));
violate := SIZEOF(a_set) < 1;
END_REPEAT;
WHERE
wr1: NOT violate;
END_RULE;
(*
Определения аргументов:
applied_group_assignment: набор экземпляров объектов applied_group_assignment.
group: набор экземпляров объектов group.
Формальные высказывания:
WR1: На каждый экземпляр объекта group, содержащий объект applied_classification_assignment, чей assigned_class идентифицирует объект с атрибутом name со значением 'versions', должна быть дана ссылка из одного или нескольких экземпляров вида applied_group_assignment со значением роли 'version history' через атрибут assigned_group.
5.2.5 Определения функций корабельных конструкций
5.2.5.1 Функция which_class
Функция which_class определяет объект applied_classification_assignments, указывающий на экземпляр произвольного типа, и возвращает идентификаторы класса (class ids) в список строк.
EXPRESS-спецификация:
*)
FUNCTION WHICH_CLASS(T: GENERIC): LIST OF STRING;
LOCAL
elements: BAG OF APPLIED_CLASSIFICATION_ASSIGNMENT;
class_list: LIST OF STRING :=[];
END_LOCAL;
elements :=
USEDIN(T,'SHIP_MOULDED_FORM_SCHEMA.APPLIED_CLASSIFICATION_ASSIGNMENT.ITEMS');
REPEAT i:=1 TO HIINDEX(elements);
IF (elements[i]\classification_assignment.role.name = 'class membership') THEN
class_list := class_list + elements[i]\classification_assignment.assigned_class\group.name;
END_IF;
END_REPEAT;
RETURN(class_list);
END_FUNCTION;
END_SCHEMA;
(*
Соответствие настоящего стандарта включает в себя соблюдение требований, указанных в настоящем стандарте, требований к поддерживаемым методам реализации, а также соответствующих требований нормативной документации.
Реализация должна поддерживать как минимум один из следующих методов реализации:
- ИСО 10303-21;
- ИСО 10303-22;
- ISO/TS 10303-28.
Специальные требования, относящиеся к методам реализации, приведены в приложении C.
Форма ЗСРП содержит перечень вариантов или комбинаций вариантов, которые могут быть включены в реализацию. Форма ЗСРП приведена в приложении D.
В настоящем стандарте приведен ряд опций, которые могут обеспечиваться реализацией. Эти опции сгруппированы в следующие классы соответствия:
- класс 1 - класс соответствия для обмена гидростатическими данными (см. 4.1.6);
- класс 2 - класс соответствия для обмена геометрией теоретических обводов в виде таблицы ординат (см. 4.1.9);
- класс 3 - класс соответствия для обмена геометрией теоретических обводов в каркасном представлении (см. 4.1.13 и 4.1.15);
- класс 4 - класс соответствия для обмена геометрией теоретических обводов в поверхностном представлении (см. 4.1.13 и 4.1.14);
- класс 5 - класс соответствия для обмена геометрией теоретических обводов в поверхностном представлении применительно к корпусу (см. 4.1.5, 4.1.13 и 4.1.14).
Соответствие определенному классу требует, чтобы для всех элементов ПИМ была определена принадлежность к обеспечиваемому классу. В таблице 2 определены классы соответствия, к которым принадлежит каждая функциональная единица. В таблице 3 определены классы, к которым принадлежит каждый элемент ПИМ.
Примечание - В прикладном протоколе установление тестовых сценариев (AP 216 Test Case Definitions) [13] определяет комплект абстрактных тестов, используемых при оценке соответствия 2).
Таблица 2
Таблица 3
(обязательное)
НА ЯЗЫКЕ EXPRESS
Приведенный ниже фрагмент на языке EXPRESS является развернутой формой схемы краткой формы, представленной в 5.2. При расхождении между краткой формой и данным развернутым листингом следует использовать развернутый листинг.
SCHEMA ship_moulded_form_schema;
CONSTANT
dummy_gri : geometric_representation_item :=
representation_item('') ||
geometric_representation_item();
dummy_tri : topological_representation_item := representation_item('')
|| topological_representation_item();
END_CONSTANT;
TYPE action_item = SELECT
(product,
product_definition,
property_definition,
product_definition_relationship,
product_definition_shape,
product_related_product_category,
action_request_solution,
executed_action);
END_TYPE; -- action_item
TYPE action_request_item = SELECT
(action,
executed_action);
END_TYPE; -- action_request_item
TYPE ahead_or_behind = ENUMERATION OF
(ahead,
exact,
behind);
END_TYPE; -- ahead_or_behind
TYPE amount_of_substance_measure = REAL;
END_TYPE; -- amount_of_substance_measure
TYPE approval_item = SELECT
(product_definition,
product_definition_shape,
property_definition,
product_related_product_category);
END_TYPE; -- approval_item
TYPE area_measure = REAL;
END_TYPE; -- area_measure
TYPE attribute_type = SELECT
(label,
text);
END_TYPE; -- attribute_type
TYPE axis2_placement = SELECT
(axis2_placement_2d,
axis2_placement_3d);
END_TYPE; -- axis2_placement
TYPE b_spline_curve_form = ENUMERATION OF
(polyline_form,
circular_arc,
elliptic_arc,
parabolic_arc,
hyperbolic_arc,
unspecified);
END_TYPE; -- b_spline_curve_form
TYPE b_spline_surface_form = ENUMERATION OF
(plane_surf,
cylindrical_surf,
conical_surf,
spherical_surf,
toroidal_surf,
surf_of_revolution,
ruled_surf,
generalised_cone,
quadric_surf,
surf_of_linear_extrusion,
unspecified);
END_TYPE; -- b_spline_surface_form
TYPE boolean_operand = SELECT
(solid_model);
END_TYPE; -- boolean_operand
TYPE celsius_temperature_measure = REAL;
END_TYPE; -- celsius_temperature_measure
TYPE characterized_definition = SELECT
(characterized_object,
characterized_product_definition,
shape_definition);
END_TYPE; -- characterized_definition
TYPE characterized_product_definition = SELECT
(product_definition,
product_definition_relationship);
END_TYPE; -- characterized_product_definition
TYPE classification item = SELECT
(action,
action_request_solution,
applied_action_request_assignment,
approval,
axis2_placement_3d,
compound_representation_item,
document,
document_reference,
edge_curve,
executed_action,
external_source,
group,
identification_assignment_relationship,
measure_with_unit,
product,
product_definition,
product_definition_relationship,
product_definition_shape,
product_related_product_category,
property_definition,
property_definition_representation,
representation,
representation_item,
representation_relationship,
shape_representation,
surface,
vertex_point,
versioned_action_request);
END TYPE; -- classification_item
TYPE compound_item_definition = SELECT
(list_representation_item,
set_representation_item);
END_TYPE; -- compound_item_definition
TYPE context_dependent_measure = REAL;
END TYPE; -- context_dependent_measure
TYPE count_measure = NUMBER;
END_TYPE; -- count_measure
TYPE curve_on_surface = SELECT
(pcurve,
surface_curve,
composite_curve_on_surface);
END_TYPE; -- curve_on_surface
TYPE date_and_time_item = SELECT
(action_request_solution,
executed_action,
versioned_action_request,
product_definition,
action);
END_TYPE; -- date_and_time_item
TYPE date_time_or_event_occurrence = SELECT
(date_time_select);
END_TYPE; -- date_time_or_event_occurrence
TYPE date_time_select = SELECT
(date,
local_time,
date_and_time);
END_TYPE; -- date_time_select
TYPE day_in_month_number = INTEGER;
WHERE
wr1: ((1 <= SELF) AND (SELF <= 31));
END_TYPE; -- day_in_month_number
TYPE day_in_week_number = INTEGER;
WHERE
wr1: ((1 <= SELF) AND (SELF <= 7));
END_TYPE; -- day_in_week_number
TYPE day_in_year_number = INTEGER;
WHERE
wr1: ((1 <= SELF) AND (SELF <= 366));
END_TYPE; -- day_in_year_number
TYPE derived_property_select = SELECT
(property_definition);
END_TYPE; -- derived_property_select
TYPE description_attribute_select = SELECT
(action_request_solution,
application_context,
approval_role,
date_time_role,
effectivity,
external_source,
organization_role,
person_and_organization_role,
person_and_organization,
person_role,
property_definition_representation,
representation);
END_TYPE; -- description_attribute_select
TYPE dimension_count = INTEGER;
WHERE
wr1: (SELF > 0);
END_TYPE; -- dimension_count
TYPE document_reference_item = SELECT
(action,
product,
property_definition,
product_definition);
END_TYPE; -- document_reference_item
TYPE effectivity_item = SELECT
(product_definition,
property_definition,
product_definition_shape,
product_related_product_category);
END_TYPE; -- effectivity_item
TYPE electric_current_measure = REAL;
END_TYPE; -- electric_current_measure
TYPE external_identification_item = SELECT
(action,
document,
product,
product_definition,
product_definition_relationship,
property_definition);
END_TYPE; -- external_identification_item
TYPE founded_item_select = SELECT
(founded_item,
representation_item);
END_TYPE; -- founded_item_select
TYPE geometric_set_select = SELECT
(point,
curve,
surface);
END_TYPE; -- geometric_set_select
TYPE group_item = SELECT
(approval,
identification_assignment_relationship,
product_definition,
product_definition_relationship);
END_TYPE; -- group_item
TYPE hour_in_day = INTEGER;
WHERE
wr1: ((0 <= SELF) AND (SELF < 24)); END_TYPE; -- hour_in_day
TYPE id_attribute_select = SELECT
(action,
address,
product_category,
property_definition,
shape_aspect,
application_context,
group,
organizational_project,
representation);
END_TYPE; -- id_attribute_select
TYPE identification item = SELECT
(action,
action_request_solution,
compound_representation_item,
document,
executed_action,
group,
product,
product_definition,
product_definition_relationship,
product_definition_shape,
product_related_product_category,
property_definition,
surface,
versioned_action_request);
END_TYPE; -- identification_item
TYPE identifier = STRING;
END_TYPE; -- identifier
TYPE knot_type = ENUMERATION OF
(uniform_knots,
quasi_uniform_knots,
piecewise_bezier_knots,
unspecified);
END_TYPE; -- knot_type
TYPE label = STRING;
END_TYPE; -- label:
TYPE length_measure = REAL;
END_TYPE; -- length_measure
TYPE list_of_reversible_topology_item = LIST [0:?] OF
reversible_topology_item;
END_TYPE; -- list_of_reversible_topology_item
TYPE list_representation_item = LIST [1:?] OF representation_item;
END_TYPE; -- list_representation_item
TYPE luminous_intensity_measure = REAL;
END_TYPE; -- luminous_intensity_measure
TYPE mass_measure = REAL;
END_TYPE; -- mass_measure
TYPE measure value = SELECT
(length_measure,
mass_measure,
time_measure,
electric_current_measure,
thermodynamic temperature measure,
celsius temperature measure,
context_dependent_measure,
amount_of substance_measure,
luminous_intensity_measure,
plane_angle_measure,
solid_angle_measure,
area_measure,
volume_measure,
ratio_measure,
parameter_value,
positive_length_measure,
positive_plane_angle_measure,
count_measure);
END_TYPE; -- measure_value
TYPE minute_in_hour = INTEGER;
WHERE
wr1: ((0 <= SELF) AND (SELF <= 59));
END_TYPE; -- minute_in_hour
TYPE month_in_year_number = INTEGER;
WHERE
wr1: ((1 <= SELF) AND (SELF <= 12));
END_TYPE; -- month_in_year_number
TYPE name_attribute_select = SELECT
(action_request_solution,
address,
derived_unit,
effectivity,
person_and_organization,
product_definition,
property_definition_representation);
END_TYPE; -- name_attribute_select
TYPE organization_item = SELECT
(document,
product_definition,
property_definition);
END_TYPE; -- organization_item
TYPE parameter_value = REAL;
END_TYPE; -- parameter_value
TYPE pcurve_or_surface = SELECT
(pcurve,
surface);
END_TYPE; -- pcurve_or_surface
TYPE person_and_organization_item = SELECT
(action_request_solution,
document, executed_action,
versioned_action_request,
action);
END_TYPE; -- person_and_organization_item
TYPE person_item = SELECT
(document);
END_TYPE; -- person_item
TYPE person_organization_select = SELECT
(person,
organization,
person_and_organization);
TYPE plane_angle_measure = REAL;
END_TYPE; -- plane_angle_measure
TYPE positive_length_measure = length_measure;
WHERE
wr1: (SELF > 0);
END_TYPE; -- positive_length_measure
TYPE positive_plane_angle_measure = plane_angle_measure;
WHERE
wr1: (SELF > 0);
END_TYPE; -- positive_plane_angle_measure
TYPE preferred_surface_curve_representation = ENUMERATION OF
(curve_3d,
pcurve_s1,
pcurve_s2);
END_TYPE; -- preferred_surface_curve_representation
TYPE product_or_formation_or_definition = SELECT
(product,
product_definition_formation,
product_definition);
END_TYPE; -- product_or_formation_or_definition
TYPE ratio_measure = REAL;
END_TYPE; -- ratio_measure
TYPE represented_definition = SELECT
(property_definition,
property_definition_relationship,
shape_aspect);
END_TYPE; -- represented_definition
TYPE reversible_topology = SELECT
(reversible_topology_item,
list_of_reversible_topology_item,
set_of_reversible_topology_item);
END_TYPE; -- reversible_topology
TYPE reversible_topology_item = SELECT
(edge,
path,
face,
face_bound,
closed_shell,
open_shell);
END_TYPE; -- reversible_topology_item
TYPE role_select = SELECT
(action_assignment,
action_request_assignment,
approval_assignment,
approval_date_time,
document_reference,
effectivity_assignment,
group_assignment);
END_TYPE; -- role_select
TYPE second_in_minute = REAL;
WHERE
wr1: ((0 <= SELF) AND (SELF <= 60));
END_TYPE; -- second_in_minute
TYPE set_of_reversible_topology_item = SET [0:?] OF reversible_topology_item;
END_TYPE; -- set_of_reversible_topology_item
TYPE set_representation_item = SET [1:?] OF representation_item;
END_TYPE; -- set_representation_item
TYPE shape_definition = SELECT
(product_definition_shape,
shape_aspect);
END_TYPE; -- shape_definition
TYPE shell = SELECT
(open_shell,
closed_shell);
END_TYPE; -- shell
TYPE si_prefix = ENUMERATION OF
(exa,
peta,
tera,
giga,
mega,
kilo,
hecto,
deca,
deci,
centi,
milli,
micro,
nano,
pico,
femto,
atto);
END_TYPE; -- si_prefix
TYPE si_unit_name = ENUMERATION OF
(metre,
gram,
second,
ampere,
kelvin,
mole,
candela,
radian,
steradian,
hertz,
newton,
pascal,
joule,
watt,
coulomb,
volt,
farad,
ohm,
siemens,
weber,
tesla,
henry,
degree_celsius,
lumen,
lux,
becquerel,
gray,
sievert);
END_TYPE; -- si_unit_name
TYPE solid_angle_measure = REAL;
END_TYPE; -- solid_angle_measure
TYPE source_item = SELECT
(identifier);
END_TYPE; -- source_item
TYPE supported_item = SELECT
(action,
action_method);
END_TYPE; -- supported_item
TYPE surface_boundary = SELECT
(degenerate_pcurve);
END_TYPE; -- surface_boundary
TYPE surface_model = SELECT
(face_based_surface_model);
END_TYPE; -- surface_model
TYPE text = STRING;
END_TYPE; -- text
TYPE thermodynamic_temperature_measure = REAL;
END_TYPE; -- thermodynamic_temperature_measure
TYPE time_measure = REAL;
END_TYPE; -- time_measure
TYPE transformation = SELECT
(item_defined_transformation,
functionally_defined_transformation);
TYPE transition_code = ENUMERATION OF
(discontinuous,
continuous,
cont_same_gradient,
cont_same_gradient_same_curvature);
END_TYPE; -- transition_code
TYPE trimming_select = SELECT
(cartesian_point,
parameter_value);
END_TYPE; -- trimming_select
TYPE unit = SELECT
(named_unit,
derived_unit);
END_TYPE; -- unit
TYPE vector_or_direction = SELECT
(vector,
direction);
END_TYPE; -- vector_or_direction
TYPE volume_measure = REAL;
END_TYPE; -- volume_measure
TYPE week_in_year_number = INTEGER;
WHERE
wr1: ((1 <= SELF) AND (SELF <= 53));
END_TYPE; -- week_in_year_number
TYPE wireframe_model = SELECT
(edge_based_wireframe_model);
END_TYPE; -- wireframe_model
TYPE year_number = INTEGER;
END_TYPE; -- year_number
ENTITY action;
name : label;
description : OPTIONAL text;
chosen_method : action_method;
DERIVE
id : identifier := get_id_value(SELF);
WHERE
wr1: (SIZEOF(USEDIN(SELF,'SHIP_MOULDED_FORM_SCHEMA.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1);
END_ENTITY; -- action
ENTITY action_assignment
ABSTRACT SUPERTYPE;
assigned_action : action;
DERIVE
role : object_role := get_role(SELF);
WHERE
wr1: (SIZEOF(USEDIN(SELF,'SHIP_MOULDED_FORM_SCHEMA.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1);
END_ENTITY; -- action_assignment
ENTITY action_method;
name : label;
description : OPTIONAL text;
consequence : text;
purpose : text;
END_ENTITY; -- action_method
ENTITY action_relationship;
name : label;
description : OPTIONAL text;
relating_action : action;
related_action : action;
END_ENTITY; -- action_relationship
ENTITY action_request_assignment
ABSTRACT SUPERTYPE;
assigned_action_request : versioned_action_request;
DERIVE
role : object_role := get_role(SELF);
WHERE
wr1: (SIZEOF(USEDIN(SELF,'SHIP_MOULDED_FORM_SCHEMA.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1);
END_ENTITY; -- action_request_assignment
ENTITY action_request_solution;
method : action_method;
request : versioned_action_request;
DERIVE
description : text := get_description_value(SELF);
name : label := get_name_value(SELF);
WHERE
wr1: (SIZEOF(USEDIN(SELF,'SHIP_MOULDED_FORM_SCHEMA.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1);
wr2: (SIZEOF(USEDIN(SELF,'SHIP_MOULDED_FORM_SCHEMA.' + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1);
END_ENTITY; -- action_request_solution
ENTITY address;
internal_location : OPTIONAL label;
street_number : OPTIONAL label;
street : OPTIONAL label;
postal_box : OPTIONAL label;
town : OPTIONAL label;
region : OPTIONAL label;
postal_code : OPTIONAL label;
country : OPTIONAL label;
facsimile_number : OPTIONAL label;
telephone_number : OPTIONAL label;
electronic_mail_address : OPTIONAL label;
telex_number : OPTIONAL label;
DERIVE
name : label := get_name_value(SELF);
url : identifier := get_id_value(SELF);
WHERE
wr1: (EXISTS(internal_location) OR EXISTS(street_number)
OR EXISTS(street) OR EXISTS(postal_box) OR EXISTS(town) OR EXISTS(region)
OR EXISTS(postal_code) OR EXISTS(country)
OR EXISTS(facsimile_number) OR EXISTS(telephone_number)
OR EXISTS(electronic_mail_address) OR EXISTS(telex_number));
END_ENTITY; -- address
ENTITY advanced_face
SUBTYPE OF (face_surface);
WHERE
wr1 : (SIZEOF(['SHIP_MOULDED_FORM_SCHEMA.ELEMENTARY_SURFACE',
'SHIP_MOULDED_FORM_SCHEMA.B_SPLINE_SURFACE',
'SHIP_MOULDED_FORM_SCHEMA.SWEPT_SURFACE'] * TYPEOF( face_geometry)) = 1);
wr2 : (SIZEOF(QUERY ( elp_fbnds <* QUERY ( bnds <* bounds | (
'SHIP_MOULDED_FORM_SCHEMA.EDGE_LOOP' IN TYPEOF(bnds.bound)) )
| (NOT (SIZEOF(QUERY ( oe <* elp_fbnds.bound\path. edge_list | (NOT
('SHIP_MOULDED_FORM_SCHEMA.EDGE_CURVE' IN
TYPEOF(oe\oriented_edge.edge_element))) )) =0)) )) = 0);
wr3 : (SIZEOF(QUERY ( elp_fbnds <* QUERY ( bnds <* bounds | (
'SHIP_MOULDED_FORM_SCHEMA.EDGE_LOOP' IN TYPEOF(bnds.bound)) )
| (NOT (SIZEOF(QUERY ( oe <* elp_fbnds.bound\path. edge_list
| (NOT (SIZEOF(['SHIP_MOULDED_FORM_SCHEMA.LINE',
'SHIP_MOULDED_FORM_SCHEMA.CONIC',
'SHIP_MOULDED_FORM_SCHEMA.POLYLINE',
'SHIP_MOULDED_FORM_SCHEMA.SURFACE_CURVE',
'SHIP_MOULDED_FORM_SCHEMA.B_SPLINE_CURVE'] *
TYPEOF(oe.edge_element\edge_curve.edge_geometry)) = 1)) )) = 0)) )) = 0);
wr4 : (SIZEOF(QUERY ( elp_fbnds <* QUERY ( bnds <* bounds | (
'SHIP_MOULDED_FORM_SCHEMA.EDGE_LOOP' IN TYPEOF(bnds.bound)) )
| (NOT (SIZEOF(QUERY ( oe <* elp_fbnds.bound\path.edge_list
| (NOT (('SHIP_MOULDED_FORM_SCHEMA.VERTEX_POINT'
IN TYPEOF(oe\edge.edge_start)) AND (
'SHIP_MOULDED_FORM_SCHEMA.CARTESIAN_POINT' IN TYPEOF(oe\
edge.edge_start\vertex_point.vertex_geometry)) AND (
'SHIP_MOULDED_FORM_SCHEMA.VERTEX_POINT' IN
TYPEOF(oe\ edge.edge_end)) AND
('SHIP_MOULDED_FORM_SCHEMA.CARTESIAN_POINT' IN
TYPEOF(oe\edge.edge_end\vertex_point.vertex_geometry)))) )) = 0)) )) = 0);
wr5 : (SIZEOF(QUERY ( elp_fbnds <* QUERY ( bnds <* bounds | (
'SHIP_MOULDED_FORM_SCHEMA.EDGE_LOOP' IN TYPEOF(bnds.bound)) )
| ('SHIP_MOULDED_FORM_SCHEMA.ORIENTED_PATH' IN
TYPEOF(elp_fbnds.bound)) )) = 0);
wr6 : ((NOT ('SHIP_MOULDED_FORM_SCHEMA.SWEPT_SURFACE' IN TYPEOF(
face_geometry))) OR (SIZEOF([
'SHIP_MOULDED_FORM_SCHEMA.LINE',
'SHIP_MOULDED_FORM_SCHEMA.CONIC',
'SHIP_MOULDED_FORM_SCHEMA.POLYLINE',
'SHIP_MOULDED_FORM_SCHEMA.B_SPLINE_CURVE'] * TYPEOF(
face_geometry\swept_surface.swept_curve)) = 1));
wr7 : (SIZEOF(QUERY ( vlp_fbnds <* QUERY ( bnds <* bounds | (
'SHIP_MOULDED_FORM_SCHEMA.VERTEX_LOOP' IN TYPEOF(bnds.bound)) )
| (NOT (('SHIP_MOULDED_FORM_SCHEMA.VERTEX_POINT' IN
TYPEOF(vlp_fbnds\face_bound.bound\vertex_loop.loop_vertex))
AND ('SHIP_MOULDED_FORM_SCHEMA.CARTESIAN_POINT' IN TYPEOF(
vlp_fbnds\face_bound.bound\vertex_loop.loop_vertex\
vertex_point.vertex_geometry)))) )) = 0);
wr8 : (SIZEOF(QUERY ( bnd <* bounds | (NOT (SIZEOF([
'SHIP_MOULDED_FORM_SCHEMA.EDGE_LOOP',
'SHIP_MOULDED_FORM_SCHEMA.VERTEX_LOOP'] * TYPEOF(bnd.bound)) = 1)) )) = 0);
wr9 : (SIZEOF(QUERY ( elp_fbnds <* QUERY ( bnds <* bounds | (
'SHIP_MOULDED_FORM_SCHEMA.EDGE_LOOP' IN TYPEOF(bnds.bound)) )
| (NOT (SIZEOF(QUERY ( oe <* elp_fbnds.bound\path.edge_list |
(('SHIP_MOULDED_FORM_SCHEMA.SURFACE_CURVE' IN
TYPEOF(oe\oriented_edge.edge_element\edge_curve.
edge_geometry)) AND (NOT (SIZEOF(QUERY ( sc_ag <*
oe.edge_element\edge_curve.edge_geometry\surface_curve.
associated_geometry | (NOT (
'SHIP_MOULDED_FORM_SCHEMA.PCURVE' IN TYPEOF(sc_ag))) )) = 0))) ))
= 0)) )) = 0);
wr10: (((NOT ('SHIP_MOULDED_FORM_SCHEMA.SWEPT_SURFACE' IN TYPEOF(
face_geometry))) OR (NOT (
'SHIP_MOULDED_FORM_SCHEMA.POLYLINE' IN TYPEOF(face_geometry
\swept_surface.swept_curve))) OR
(SIZEOF(face_geometry\swept_surface.swept_curve\polyline.points) >= 3))
AND (SIZEOF(QUERY ( elp_fbnds <* QUERY ( bnds <* bounds |
('SHIP_MOULDED_FORM_SCHEMA.EDGE_LOOP' IN TYPEOF(bnds.bound)) )
| (NOT (SIZEOF(QUERY ( oe <* elp_fbnds.bound\path.
edge_list | (('SHIP_MOULDED_FORM_SCHEMA.POLYLINE' IN
TYPEOF(oe\oriented_edge.edge_element\edge_curve.
edge_geometry)) AND (NOT (SIZEOF(oe\oriented_edge.
edge_element\edge_curve.edge_geometry\polyline.points) >= 3))) ))
= 0)) )) = 0));
END_ENTITY; -- advanced_face
ENTITY amount_of_substance_unit
SUBTYPE OF (named_unit);
WHERE
wr1: ((SELF\named_unit.dimensions.length_exponent = 0) AND (SELF\
named_unit.dimensions.mass_exponent = 0) AND (SELF\
named_unit.dimensions.time_exponent = 0) AND (SELF\
named_unit.dimensions.electric_current_exponent = 0) AND (
SELF\named_unit.dimensions.
thermodynamic_temperature_exponent = 0) AND
(SELF\named_unit.dimensions.amount_of_substance_exponent = 1) AND
(SELF\named_unit.dimensions.luminous_intensity_exponent = 0));
END_ENTITY; -- amount_of_substance_unit
ENTITY application_context;
application : label;
DERIVE
description : text := get_description_value(SELF);
id : identifier := get_id_value(SELF);
INVERSE
context_elements : SET [1:?] OF application_context_element FOR
frame_of_reference;
WHERE
wr1: (SIZEOF(USEDIN(SELF,'SHIP_MOULDED_FORM_SCHEMA.' +
'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1);
wr2: (SIZEOF(USEDIN(SELF,'SHIP_MOULDED_FORM_SCHEMA.' +
'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1);
END_ENTITY; -- application_context
ENTITY application_context_element
SUPERTYPE OF (ONE OF (product_context,product_definition_context));
name : label;
frame_of_reference : application_context;
END_ENTITY; -- application_context_element
ENTITY application_protocol_definition;
status : label;
application_interpreted_model_schema_name : label;
application_protocol_year : year_number;
application : application_context;
END_ENTITY; -- application_protocol_definition
ENTITY applied_action_assignment
SUBTYPE OF (action_assignment);
items : SET [1:?] OF action_item;
END_ENTITY; -- applied_action_assignment
ENTITY applied_action_request_assignment
SUBTYPE OF (action_request_assignment);
items : SET [1:?] OF action_request_item;
END_ENTITY; -- applied_action_request_assignment
ENTITY applied_approval_assignment
SUBTYPE OF (approval_assignment);
items : SET [1:?] OF approval_item;
WHERE
wr1: ((NOT (SELF\approval_assignment.role.name =
'proposed alternative')) OR (SIZEOF(QUERY ( app <*USEDIN(
SELF\approval_assignment.assigned_approval,'SHIP_MOULDED_FORM_SCHEMA
.APPROVAL_ASSIGNMENT.ASSIGNED_APPROVAL') |
(('SHIP_MOULDED_FORM_SCHEMA.APPLIED_APPROVAL_ASSIGNMENT'
IN TYPEOF(app)) AND
(app\approval_assignment.role.name ='subject')) )) = 1));
END_ENTITY; -- applied_approval_assignment
ENTITY applied_classification_assignment
SUBTYPE OF (classification_assignment);
items : SET [1:?] OF classification_item;
END_ENTITY; -- applied_classification_assignment
ENTITY applied_date_and_time_assignment
SUBTYPE OF (date_and_time_assignment);
items : SET [1:?] OF date_and_time_item;
END_ENTITY; -- applied_date_and_time_assignment
ENTITY applied_document_reference
SUBTYPE OF (document_reference);
items : SET [1:?] OF document_reference_item;
END_ENTITY; -- applied_document_reference
ENTITY applied_effectivity_assignment
SUBTYPE OF (effectivity_assignment);
items : SET [1:?] OF effectivity_item;
END_ENTITY; -- applied_effectivity_assignment
ENTITY applied_external_identification_assignment
SUBTYPE OF (external_identification_assignment);
items : SET [1:?] OF external_identification_item;
END_ENTITY; -- applied_external_identification_assignment
ENTITY applied_group_assignment
SUBTYPE OF (group_assignment);
items : SET [1:?] OF group_item;
END_ENTITY; -- applied_group_assignment
ENTITY applied_identification_assignment
SUBTYPE OF (identification_assignment);
items : SET [1:?] OF identification_item;
END_ENTITY; -- applied_identification_assignment
ENTITY applied_organization_assignment
SUBTYPE OF (organization_assignment);
items : SET [1:?] OF organization_item;
END_ENTITY; -- applied_organization_assignment
ENTITY applied_person_and_organization_assignment
SUBTYPE OF (person_and_organization_assignment);
items : SET [1:?] OF person_and_organization_item;
END_ENTITY; -- applied_person_and_organization_assignment
ENTITY applied_person_assignment
SUBTYPE OF (person_assignment);
items : SET [1:?] OF person_item;
END_ENTITY; -- applied_person_assignment
ENTITY approval;
status : approval_status;
level : label;
END_ENTITY; -- approval
ENTITY approval_assignment
ABSTRACT SUPERTYPE;
assigned_approval : approval;
DERIVE
role : object_role := get_role(SELF);
WHERE
wr1: (SIZEOF(USEDIN(SELF,'SHIP_MOULDED_FORM_SCHEMA.' +
'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1);
END_ENTITY; -- approval_assignment
ENTITY approval_date_time;
date_time : date_time_select;
dated_approval : approval;
DERIVE
role : object_role := get_role(SELF);
WHERE
wr1: (SIZEOF(USEDIN(SELF,'SHIP_MOULDED_FORM_SCHEMA.' +
'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1);
END_ENTITY; -- approval_date_time
ENTITY approval_person_organization;
person_organization : person_organization_select;
authorized_approval : approval;
role :approval_role;
END_ENTITY; -- approval_person_organization
ENTITY approval_role;
role : label;
DERIVE
description : text := get_description_value(SELF);
WHERE
wr1: (SIZEOF(USEDIN(SELF,'SHIP_MOULDED_FORM_SCHEMA.' +
'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1);
END_ENTITY; -- approval_role
ENTITY approval_status;
name : label;
END_ENTITY; -- approval_status
ENTITY axis1_placement
SUBTYPE OF (placement);
axis : OPTIONAL direction;
DERIVE
z : direction := NVL(normalise(axis),dummy_gri || direction([0,0,1]));
WHERE
wr1: (SELF\geometric_representation_item.dim = 3);
END_ENTITY; -- axis1_placement
ENTITY axis2_placement_2d
SUBTYPE OF (placement);
ref_direction : OPTIONAL direction;
DERIVE
p : LIST [2:2] OF direction := build_2axes(ref_direction);
WHERE
wr1: (SELF\geometric_representation_item.dim = 2);
END_ENTITY; -- axis2_placement_2d
ENTITY axis2_placement_3d
SUBTYPE OF (placement);
axis : OPTIONAL direction;
ref_direction : OPTIONAL direction;
DERIVE
p : LIST [3:3] OF direction := build_axes(axis,ref_direction);
WHERE
wr1: (SELF\placement.location.dim = 3);
wr2: ((NOT EXISTS(axis)) OR (axis.dim = 3));
wr3: ((NOT EXISTS(ref_direction)) OR (ref_direction.dim = 3));
wr4: ((NOT EXISTS(axis)) OR (NOT EXISTS(ref_direction)) OR (
cross_product(axis,ref_direction).magnitude > 0));
END_ENTITY; -- axis2_placement_3d
ENTITY b_spline_curve
SUPERTYPE OF (ONEOF (uniform_curve,b_spline_curve_with_knots,
quasi_uniform_curve,bezier_curve) ANDOR rational_b_spline_curve)
SUBTYPE OF (bounded_curve);
degree : INTEGER;
control_points_list : LIST [2:?] OF cartesian_point;
curve_form : b_spline_curve_form;
closed_curve : LOGICAL;
self_intersect : LOGICAL;
DERIVE
upper_index_on_control_points : INTEGER := SIZEOF(control_points_list) - 1;
control_points : ARRAY [0:upper_index_on_control_points] OF
cartesian_point := list_to_array( control_points_list,0, upper_index_on_control_points);
WHERE
wr1: (('SHIP_MOULDED_FORM_SCHEMA.UNIFORM_CURVE' IN TYPEOF(SELF)) OR
('SHIP_MOULDED_FORM_SCHEMA.QUASI_UNIFORM_CURVE' IN
TYPEOF(SELF)) OR ('SHIP_MOULDED_FORM_SCHEMA.BEZIER_CURVE' IN
TYPEOF(SELF)) OR ('SHIP_MOULDED_FORM_SCHEMA.B_SPLINE_CURVE_WITH_KNOTS'
IN TYPEOF(SELF)));
END_ENTITY; -- b_spline_curve
ENTITY b_spline_curve_with_knots
SUBTYPE OF (b_spline_curve);
knot_multiplicities : LIST [2:?] OF INTEGER;
knots : LIST [2:?] OF parameter_value;
knot_spec : knot_type;
DERIVE
upper_index_on_knots : INTEGER := SIZEOF(knots);
WHERE
wr1: constraints_param_b_spline(degree,upper_index_on_knots,
upper_index_on_control_points,knot_multiplicities,knots);
wr2: (SIZEOF(knot_multiplicities) = upper_index_on_knots);
END_ENTITY; -- b_spline_curve_with_knots
ENTITY b_spline_surface
SUPERTYPE OF (ONEOF
(b_spline_surface_with_knots,uniform_surface,
quasi_uniform_surface,bezier_surface) ANDOR
rational_b_spline_surface)
SUBTYPE OF (bounded_surface);
u_degree : INTEGER;
v_degree : INTEGER;
control_points_list : LIST [2:?] OF LIST [2:?] OF cartesian_point;
surface_form : b_spline_surface_form;
U_closed : LOGICAL;
v_closed : LOGICAL;
self_intersect : LOGICAL;
DERIVE
u_upper : INTEGER := SIZEOF(control_points_list) - 1;
v_upper : INTEGER := SIZEOF(control_points_list[1]) - 1;
control_points : ARRAY [0:u_upper] OF ARRAY [0:v_upper] OF
cartesian_point := make_array_of_array(
control_points_list,0,u_upper,0,v_upper);
WHERE
wr1: (('SHIP_MOULDED_FORM_SCHEMA.UNIFORM_SURFACE' IN TYPEOF(SELF))
OR ('SHIP_MOULDED_FORM_SCHEMA.QUASI_UNIFORM_SURFACE'
IN TYPEOF(SELF)) OR ('SHIP_MOULDED_FORM_SCHEMA.BEZIER_SURFACE'
IN TYPEOF(SELF)) OR (
'SHIP_MOULDED_FORM_SCHEMA.B_SPLINE_SURFACE_WITH_KNOTS' IN TYPEOF(SELF)));
END_ENTITY; -- b_spline_surface
ENTITY b_spline_surface_with_knots
SUBTYPE OF (b_spline_surface);
u_multiplicities : LIST [2:?] OF INTEGER;
v_multiplicities : LIST [2:?] OF INTEGER;
u_knots : LIST [2:?] OF parameter_value;
v_knots : LIST [2:?] OF parameter_value;
knot_spec : knot_type;
DERIVE
knot_u_upper : INTEGER := SIZEOF(u_knots);
knot_v_upper : INTEGER := SIZEOF(v_knots);
WHERE
wr1: constraints_param_b_spline(SELF\b_spline_surface.u_degree,
knot_u_upper,SELF\b_spline_surface.u_upper,u_multiplicities,u_knots);
wr2: constraints_param_b_spline(SELF\b_spline_surface.v_degree,
knot_v_upper,SELF\b_spline_surface.v_upper,v_multiplicities,v_knots);
wr3: (SIZEOF(u_multiplicities) = knot_u_upper);
wr4: (SIZEOF(v_multiplicities) = knot_v_upper);
END_ENTITY; -- b_spline_surface_with_knots
ENTITY bezier_curve
SUBTYPE OF (b_spline_curve);
END_ENTITY; -- bezier_curve
ENTITY bezier_surface
SUBTYPE OF (b_spline_surface);
END_ENTITY; -- bezier_surface
ENTITY bounded_curve
SUPERTYPE OF (ONEOF (polyline,b_spline_curve,bounded_pcurve,
bounded_surface_curve,composite_curve))
SUBTYPE OF (curve);
END_ENTITY; -- bounded_curve
ENTITY bounded_pcurve
SUBTYPE OF (pcurve, bounded_curve);
WHERE
wr1: ('SHIP_MOULDED_FORM_SCHEMA.BOUNDED_CURVE' IN TYPEOF(
SELF\pcurve.reference_to_curve.items[1]));
END_ENTITY; -- bounded_pcurve
ENTITY bounded_surface
SUPERTYPE OF (b_spline_surface)
SUBTYPE OF (surface);
END_ENTITY; -- bounded_surface
ENTITY bounded_surface_curve
SUBTYPE OF (surface_curve, bounded_curve);
WHERE
wr1: ('SHIP_MOULDED_FORM_SCHEMA.BOUNDED_CURVE' IN TYPEOF(SELF\
surface_curve.curve_3d));
END_ENTITY; -- bounded_surface_curve
ENTITY calendar_date
SUBTYPE OF (date);
day_component : day_in_month_number;
month_component : month_in_year_number;
WHERE
wr1: valid_calendar_date(SELF);
END_ENTITY; -- calendar_date
ENTITY cartesian_point
SUBTYPE OF (point);
coordinates : LIST [1:3] OF length_measure;
END_ENTITY; -- cartesian_point
ENTITY cartesian_transformation_operator
SUPERTYPE OF (cartesian_transformation_operator_3d)
SUBTYPE OF (geometric_representation_item,
functionally_defined_transformation);
axis1 : OPTIONAL direction;
axis2 : OPTIONAL direction;
local_origin : cartesian_point;
scale : OPTIONAL REAL;
DERIVE
scl : REAL := NVL(scale,1);
WHERE
wr1: (scl > 0);
END_ENTITY; -- cartesian_transformation_operator
ENTITY cartesian_transformation_operator_3d
SUBTYPE OF (cartesian_transformation_operator);
axis3 : OPTIONAL direction;
DERIVE
u : LIST [3:3] OF direction := base_axis(3,SELF\
cartesian_transformation_operator.axis1,SELF\
cartesian_transformation_operator.axis2,axis3);
WHERE
wr1: (SELF\geometric_representation_item.dim = 3);
END_ENTITY; -- cartesian_transformation_operator_3d
ENTITY characterized_object;
name : label;
description : OPTIONAL text;
END_ENTITY; -- characterized_object
ENTITY circle
SUBTYPE OF (conic);
radius : positive_length_measure;
END_ENTITY; -- circle
ENTITY class
SUBTYPE OF (group);
WHERE
wr1: (SIZEOF(QUERY ( oa <* USEDIN(SELF,
'SHIP_MOULDED_FORM_SCHEMA.GROUP_ASSIGNMENT.ASSIGNED_GROUP')
| (NOT ('SHIP_MOULDED_FORM_SCHEMA.APPLIED_GROUP_ASSIGNMENT'
IN TYPEOF(oa))) )) = 0);
END_ENTITY; -- class
ENTITY classification_assignment
ABSTRACT SUPERTYPE;
assigned_class : group;
role : classification_role;
END_ENTITY; -- classification_assignment
ENTITY classification_role;
name : label;
description : OPTIONAL text;
END_ENTITY; -- classification_role
ENTITY closed_shell
SUBTYPE OF (connected_face_set);
END_ENTITY; -- closed_shell
ENTITY composite_curve
SUBTYPE OF (bounded_curve);
segments : LIST [1:?] OF composite_curve_segment;
self_intersect : LOGICAL;
DERIVE
n_segments : INTEGER := SIZEOF(segments);
closed_curve : LOGICAL := segments[n_segments].transition <> discontinuous;
WHERE
wr1: (((NOT closed_curve) AND (SIZEOF(QUERY ( temp <* segments|
(temp.transition = discontinuous) )) = 1)) OR
(closed_curve AND (SIZEOF(QUERY ( temp <* segments |
(temp.transition = discontinuous) )) = 0)));
END_ENTITY; -- composite_curve
ENTITY composite_curve_on_surface
SUBTYPE OF (composite_curve);
DERIVE
basis_surface : SET [0:2] OF surface := get_basis_surface(SELF);
WHERE
wr1: (SIZEOF(basis_surface) > 0);
wr2: constraints_composite_curve_on_surface(SELF);
END_ENTITY; -- composite_curve_on_surface
ENTITY composite_curve_segment
SUBTYPE OF (founded_item);
transition : transition_code;
same_sense : BOOLEAN;
parent_curve : curve;
INVERSE
using_curves : BAG [1:?] OF composite_curve FOR segments;
WHERE
wr1: ('SHIP_MOULDED_FORM_SCHEMA.BOUNDED_CURVE' IN TYPEOF(parent_curve));
END_ENTITY; -- composite_curve_segment
ENTITY compound_representation_item
SUBTYPE OF (representation_item);
item_element : compound_item_definition;
END_ENTITY; -- compound_representation_item
ENTITY conic
SUPERTYPE OF (ONEOF (circle,ellipse,hyperbola,parabola))
SUBTYPE OF (curve);
position : axis2_placement;
END_ENTITY; -- conic
ENTITY conical_surface
SUBTYPE OF (elementary_surface);
radius : length_measure;
semi_angle : plane_angle_measure;
WHERE
wr1: (radius >= 0);
END_ENTITY; -- conical_surface
ENTITY connected_edge_set
SUBTYPE OF (topological_representation_item);
ces_edges : SET [1:?] OF edge;
END_ENTITY; -- connected_edge_set
ENTITY connected_face_set
SUPERTYPE OF (ONEOF (closed_shell,open_shell))
SUBTYPE OF (topological_representation_item);
cfs_faces : SET [1:?] OF face;
END_ENTITY; -- connected_face_set
ENTITY context_dependent_unit
SUBTYPE OF (named_unit);
name : label;
END_ENTITY; -- context_dependent_unit
ENTITY conversion_based_unit
SUBTYPE OF (named_unit);
name : label;
conversion_factor : measure_with_unit;
END_ENTITY; -- conversion_based_unit
ENTITY coordinated_universal_time_offset;
hour_offset : INTEGER;
minute_offset : OPTIONAL INTEGER;
sense : ahead_or_behind;
DERIVE
actual_minute_offset : INTEGER := NVL(minute_offset,0);
WHERE
wr1: ((0 <= hour_offset) AND (hour_offset < 24));
wr2: ((0 <= actual_minute_offset) AND (actual_minute_offset <= 59));
wr3: (NOT (((hour_offset <> 0) OR (actual_minute_offset <> 0))
AND (sense = exact)));
END_ENTITY; -- coordinated_universal_time_offset
ENTITY curve
SUPERTYPE OF (ONEOF
(line,conic,pcurve,surface_curve,offset_curve_3d,
curve_replica))
SUBTYPE OF (geometric_representation_item);
END_ENTITY; -- curve
ENTITY curve_replica
SUBTYPE OF (curve);
parent_curve : curve;
transformation : cartesian_transformation_operator;
WHERE
wr1: (transformation.dim = parent_curve.dim);
wr2: acyclic_curve_replica(SELF,parent_curve);
END_ENTITY; -- curve_replica
ENTITY cylindrical_surface
SUBTYPE OF (elementary_surface);
radius : positive_length_measure;
END_ENTITY; -- cylindrical_surface
ENTITY date
SUPERTYPE OF (ONEOF (calendar_date,ordinal_date,
week_of_year_and_day_date));
year_component : year_number;
END_ENTITY; -- date
ENTITY date_and_time;
date_component : date;
time_component : local_time;
END_ENTITY; -- date_and_time
ENTITY date_and_time_assignment
ABSTRACT SUPERTYPE;
assigned_date_and_time : date_and_time;
role : date_time_role;
END_ENTITY; -- date_and_time_assignment
ENTITY date_time_role;
name : label;
DERIVE
description : text := get_description_value(SELF);
WHERE
wr1: (SIZEOF(USEDIN(SELF,'SHIP_MOULDED_FORM_SCHEMA.' +
'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1);
END_ENTITY; -- date_time_role
ENTITY definitional_representation
SUBTYPE OF (representation);
WHERE
wr1: ('SHIP_MOULDED_FORM_SCHEMA.PARAMETRIC_REPRESENTATION_CONTEXT'
IN TYPEOF(SELF\representation.context_of_items));
END_ENTITY; -- definitional_representation
ENTITY degenerate_pcurve
SUBTYPE OF (point);
basis_surface: surface;
reference_to_curve : definitional_representation;
WHERE
wr1: (SIZEOF(reference_to_curve\representation.items) = 1);
wr2: ('SHIP_MOULDED_FORM_SCHEMA.CURVE' IN TYPEOF(reference_to_curve\
representation.items[1]));
wr3: (reference_to_curve\representation.items[1]\
geometric_representation_item.dim = 2);
END_ENTITY; -- degenerate_pcurve
ENTITY degenerate_toroidal_surface
SUBTYPE OF (toroidal_surface);
select_outer : BOOLEAN;
WHERE
wr1: (major_radius < minor_radius);
END_ENTITY; -- degenerate_toroidal_surface
ENTITY derived_unit;
elements : SET [1:?] OF derived_unit_element;
DERIVE
name : label := get_name_value(SELF);
WHERE
wr1: ((SIZEOF(elements) > 1) OR ((SIZEOF(elements) = 1) AND (
elements[1].exponent <> 1)));
wr2: (SIZEOF(USEDIN(SELF,'SHIP_MOULDED_FORM_SCHEMA.' +
'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1);
END_ENTITY; -- derived_unit
ENTITY derived_unit_element;
unit : named_unit;
exponent : REAL;
END_ENTITY; -- derived_unit_element
ENTITY description_attribute;
attribute_value : text;
described_item : description_attribute_select;
END_ENTITY; -- description_attribute
ENTITY descriptive_representation_item
SUBTYPE OF (representation_item);
description : text;
END_ENTITY; -- descriptive_representation_item
ENTITY dimensional_exponents;
length_exponent : REAL;
mass_exponent : REAL;
time_exponent : REAL;
electric_current_exponent : REAL;
thermodynamic_temperature_exponent : REAL;
amount_of_substance_exponent : REAL;
luminous_intensity_exponent : REAL;
END_ENTITY; -- dimensional_exponents
ENTITY direction
SUBTYPE OF (geometric_representation_item);
direction_ratios : LIST [2:3] OF REAL;
WHERE
wr1: (SIZEOF(QUERY ( tmp <* direction_ratios | (tmp <> 0) )) > 0);
END_ENTITY; -- direction
ENTITY document;
id : identifier;
name : label;
description : OPTIONAL text;
kind : document_type;
INVERSE
representation_types : SET [0:?] OF
document_representation_type FOR
represented_document;
END ENTITY; -- document
ENTITY document_reference
ABSTRACT SUPERTYPE;
assigned_document : document;
source : label;
DERIVE
role : object_role := get_role(SELF);
WHERE
wr1: (SIZEOF(USEDIN(SELF,'SHIP_MOULDED_FORM_SCHEMA.' +
'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1);
END_ENTITY; -- document_reference
ENTITY document_representation_type;
name : label;
represented_document : document;
END_ENTITY; -- document_representation_type
ENTITY document_type;
product_data_type : label;
END_ENTITY; -- document_type
ENTITY document_usage_constraint;
source : document;
subject_element : label;
subject_element_value : text;
END_ENTITY; -- document_usage_constraint
ENTITY edge
SUPERTYPE OF (ONEOF (edge_curve,oriented_edge))
SUBTYPE OF (topological_representation_item);
edge_start : vertex;
edge_end : vertex;
END_ENTITY; -- edge
ENTITY edge_based_wireframe_model
SUBTYPE OF (geometric_representation_item);
ebwm_boundary : SET [1:?] OF connected_edge_set;
END_ENTITY; -- edge_based_wireframe_model
ENTITY edge_based_wireframe_shape_representation
SUBTYPE OF (shape_representation);
WHERE
wr1: (SIZEOF(QUERY ( it <* SELF.items | (NOT (SIZEOF([
'SHIP_MOULDED_FORM_SCHEMA.EDGE_BASED_WIREFRAME_MODEL',
'SHIP_MOULDED_FORM_SCHEMA.MAPPED_ITEM',
'SHIP_MOULDED_FORM_SCHEMA.AXIS2_PLACEMENT_3D'] * TYPEOF(it)) = 1)) )) = 0)
wr2: (SIZEOF(QUERY ( it <* SELF.items | (SIZEOF([
'SHIP_MOULDED_FORM_SCHEMA.EDGE_BASED_WIREFRAME_MODEL',
'SHIP_MOULDED_FORM_SCHEMA.MAPPED_ITEM'] * TYPEOF(it)) = 1) )) >= 1);
wr3: (SIZEOF(QUERY ( ebwm <* QUERY ( it <* SELF.items |(
'SHIP_MOULDED_FORM_SCHEMA.EDGE_BASED_WIREFRAME_MODEL'
IN TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( eb <* ebwm\
edge_based_wireframe_model.ebwm_boundary | (NOT
(SIZEOF(QUERY ( edges <* eb.ces_edges | (NOT (
'SHIP_MOULDED_FORM_SCHEMA.EDGE_CURVE' IN TYPEOF(edges))) ))
= 0)) )) = 0)) )) = 0);
wr4: (SIZEOF(QUERY ( ebwm <* QUERY ( it <* SELF.items |(
'SHIP_MOULDED_FORM_SCHEMA.EDGE_BASED_WIREFRAME_MODEL'
IN TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( eb <* ebwm\
edge_based_wireframe_model.ebwm_boundary | (NOT
(SIZEOF(QUERY ( pline_edges <* QUERY ( edges <* eb.ces_edges
| ('SHIP_MOULDED_FORM_SCHEMA.POLYLINE' IN TYPEOF(edges\
edge_curve.edge_geometry)) ) | (NOT
(SIZEOF(pline_edges\edge_curve.edge_geometry\polyline.points) > 2)) )) = 0)) ))
= 0)) )) = 0);
wr5: (SIZEOF(QUERY ( ebwm <* QUERY ( it <* SELF.items |(
'SHIP_MOULDED_FORM_SCHEMA.EDGE_BASED_WIREFRAME_MODEL'
IN TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( eb <* ebwm\
edge_based_wireframe_model.ebwm_boundary | (NOT
(SIZEOF(QUERY ( edges <* eb.ces_edges | (NOT ((
'SHIP_MOULDED_FORM_SCHEMA.VERTEX_POINT' IN
TYPEOF(edges.edge_start)) AND
('SHIP_MOULDED_FORM_SCHEMA.VERTEX_POINT' IN
TYPEOF(edges.edge_end)))) )) = 0)))) = 0)) )) = 0);
wr6: (SIZEOF(QUERY ( ebwm <* QUERY ( it <* SELF.items |(
'SHIP_MOULDED_FORM_SCHEMA.EDGE_BASED_WIREFRAME_MODEL'
IN TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( eb <* ebwm\
edge_based_wireframe_model.ebwm_boundary | (NOT
(SIZEOF(QUERY ( edges <* eb.ces_edges | (NOT
valid_wireframe_edge_curve(edges\edge_curve.edge_geometry)) ))
= 0)) )) = 0)) )) = 0);
wr7: (SIZEOF(QUERY ( ebwm <* QUERY ( it <* SELF.items |(
'SHIP_MOULDED_FORM_SCHEMA.EDGE_BASED_WIREFRAME_MODEL'
IN TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( eb <* ebwm\
edge_based_wireframe_model.ebwm_boundary | (NOT
(SIZEOF(QUERY ( edges <* eb.ces_edges | (NOT (
valid_wireframe_vertex_point(edges.edge_start\vertex_point.
vertex_geometry) AND :
valid_wireframe_vertex_point(edges.
edge_end\vertex_point.vertex_geometry))) )) = 0)) )) = 0)) )) = 0);
wr8: (SIZEOF(QUERY ( mi <* QUERY ( it <* SELF.items | (
'SHIP_MOULDED_FORM_SCHEMA.MAPPED_ITEM' IN TYPEOF(it))
) | (NOT (('SHIP_MOULDED_FORM_SCHEMA.' +
'EDGE_BASED_WIREFRAME_SHAPE_REPRESENTATION') IN
TYPEOF(mi\mapped_item.mapping_source.mapped_representation))) )) = 0);
wr9: (SELF.context_of_items\geometric_representation_context.
coordinate_space_dimension = 3);
END_ENTITY; -- edge_based_wireframe_shape_representation
ENTITY edge_curve
SUBTYPE OF (edge, geometric_representation_item);
edge_geometry : curve;
same_sense : BOOLEAN;
END_ENTITY; -- edge_curve
ENTITY edge_loop
SUBTYPE OF (loop, path);
DERIVE
ne : INTEGER := SIZEOF(SELF\path.edge_list);
WHERE
wr1: (SELF\path.edge_list[1].edge_start :=:
SELF\path.edge_list[ne].edge_end);
END_ENTITY; -- edge_loop
ENTITY effectivity
SUPERTYPE OF (serial_numbered_effectivity);
id : identifier;
DERIVE
name : label := get_name_value(SELF);
description : text := get_description_value(SELF);
WHERE
wr1: (SIZEOF(USEDIN(SELF,'SHIP_MOULDED_FORM_SCHEMA.' +
'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1);
wr2: (SIZEOF(USEDIN(SELF,'SHIP_MOULDED_FORM_SCHEMA.' +
'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1);
END_ENTITY; -- effectivity
ENTITY effectivity_assignment
ABSTRACT SUPERTYPE;
assigned_effectivity : effectivity;
DERIVE
role : object_role := get_role(SELF);
WHERE
wr1: (SIZEOF(USEDIN(SELF,'SHIP_MOULDED_FORM_SCHEMA.' +
'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1);
END_ENTITY; -- effectivity_assignment
ENTITY electric_current_unit
SUBTYPE OF (named_unit);
WHERE
wr1: ((SELF\named_unit.dimensions.length_exponent = 0) AND (SELF\
named_unit.dimensions.mass_exponent = 0) AND (SELF\
named_unit.dimensions.time_exponent = 0) AND (SELF\
named_unit.dimensions.electric_current_exponent = 1) AND (
SELF\named_unit.dimensions.
thermodynamic_temperature_exponent = 0) AND
(SELF\named_unit.dimensions.amount_of_substance_exponent = 0) AND (SELF\
named_unit.dimensions.luminous_intensity_exponent = 0));
END_ENTITY; -- electric_current_unit
ENTITY elementary_surface
SUPERTYPE OF (ONEOF (plane,cylindrical_surface,conical_surface,
spherical_surface,toroidal_surface))
SUBTYPE OF (surface);
position : axis2_placement_3d;
END_ENTITY; -- elementary_surface
ENTITY ellipse
SUBTYPE OF (conic);
semi_axis_1 : positive_length_measure;
semi_axis_2 : positive_length_measure;
END_ENTITY; -- ellipse
ENTITY evaluated_degenerate_pcurve
SUBTYPE OF (degenerate_pcurve);
equivalent_point : cartesian_point;
END_ENTITY; -- evaluated_degenerate_pcurve
ENTITY executed_action
SUBTYPE OF (action);
END_ENTITY; -- executed_action
ENTITY external_identification_assignment A
ABSTRACT SUPERTYPE
SUBTYPE OF (identification_assignment);
source : external_source;
END_ENTITY; -- external_identification_assignment
ENTITY external_source;
source_id : source_item;
DERIVE
description : text := get_description_value(SELF);
WHERE
wr1: (SIZEOF(USEDIN(SELF,'SHIP_MOULDED_FORM_SCHEMA.' +
'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1);
END_ENTITY; -- external_source
ENTITY external_source_relationship;
name : label;
description : OPTIONAL text;
relating_source : external_source;
related_source : external_source;
END_ENTITY; -- external_source_relationship
ENTITY externally_defined_item;
item_id : source_item;
source : external_source;
END_ENTITY; -- externally_defined_item
ENTITY face
SUPERTYPE OF (ONEOF (face_surface,subface,oriented_face))
SUBTYPE OF (topological_representation_item);
bounds : SET [1:?] OF face_bound;
WHERE
wr1: (NOT mixed_loop_type_set(list_to_set(list_face_loops(SELF))));
wr2: (SIZEOF(QUERY ( temp <* bounds | (
'SHIP_MOULDED_FORM_SCHEMA.FACE_OUTER_BOUND' IN TYPEOF(temp)) )) <= 1);
END_ENTITY; -- face
ENTITY face_based_surface_model
SUBTYPE OF (geometric_representation_item);
fbsm_faces : SET [1:?] OF connected_face_set;
END_ENTITY; -- face_based_surface_model
ENTITY face_bound
SUBTYPE OF (topological_representation_item);
bound : loop;
orientation : BOOLEAN;
END_ENTITY; -- face_bound
ENTITY face_outer_bound
SUBTYPE OF (face_bound);
END_ENTITY; -- face_outer_bound
ENTITY face_surface
SUBTYPE OF (face, geometric_representation_item);
face_geometry : surface;
same_sense : BOOLEAN;
WHERE
wr1: (NOT ('SHIP_MOULDED_FORM_SCHEMA.ORIENTED_SURFACE' IN TYPEOF(face_geometry)));
END_ENTITY; -- face_surface
ENTITY faceted_brep
SUBTYPE OF (manifold_solid_brep);
END_ENTITY; -- faceted_brep
ENTITY founded_item;
END_ENTITY; -- founded_item
ENTITY functionally_defined_transformation;
name : label;
description : OPTIONAL text;
END_ENTITY; -- functionally_defined_transformation
ENTITY geometric_curve_set
SUBTYPE OF (geometric_set);
WHERE
wr1: (SIZEOF(QUERY ( temp <* SELF\geometric_set.elements | (
'SHIP_MOULDED_FORM_SCHEMA.SURFACE' IN TYPEOF(temp)) )) = 0);
END_ENTITY; -- geometric_curve_set
ENTITY geometric_representation_context
SUBTYPE OF (representation_context);
coordinate_space_dimension : dimension_count;
END_ENTITY; -- geometric_representation_context
ENTITY geometric_representation_item
SUPERTYPE OF (ONEOF (point,direction,vector,placement,
cartesian_transformation_operator,curve,surface,edge_curve,
face_surface,poly_loop,vertex_point,solid_model,
face_based_surface_model,edge_based_wireframe_model,geometric_set))
SUBTYPE OF (representation_item);
DERIVE
dim : dimension_count := dimension_of(SELF);
WHERE
wr1: (SIZEOF(QUERY ( using_rep <* using_representations(SELF) | (
NOT ( 'SHIP_MOULDED_FORM_SCHEMA.GEOMETRIC_REPRESENTATION_CONTEXT'
IN TYPEOF(using_rep.context_of_items))) )) = 0);
END_ENTITY; -- geometric_representation_item
ENTITY geometric_set
SUPERTYPE OF (geometric_curve_set)
SUBTYPE OF (geometric_representation_item);
elements : SET [1:?] OF geometric_set_select;
END_ENTITY; -- geometric_set
ENTITY global_uncertainty_assigned_context
SUBTYPE OF (representation_context);
uncertainty : SET [1:?] OF uncertainty_measure_with_unit;
END_ENTITY; -- global_uncertainty_assigned_context
ENTITY global_unit_assigned_context
SUBTYPE OF (representation_context);
units : SET [1:?] OF unit;
END_ENTITY; -- global_unit_assigned_context
ENTITY group;
name : label;
description : OPTIONAL text;
DERIVE
id : identifier := get_id_value(SELF);
WHERE
wr1: (SIZEOF(USEDIN(SELF,'SHIP_MOULDED_FORM_SCHEMA.' +
'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1);
END_ENTITY; -- group
ENTITY group_assignment
ABSTRACT SUPERTYPE;
assigned_group : group;
DERIVE
role : object_role := get_role(SELF);
WHERE
wr1: (SIZEOF(USEDIN(SELF,'SHIP_MOULDED_FORM_SCHEMA.' +
'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1);
END_ENTITY; -- group_assignment
ENTITY group_relationship;
name : label;
description : OPTIONAL text;
relating_group : group;
related_group : group;
END_ENTITY; -- group_relationship
ENTITY hyperbola
SUBTYPE OF (conic);
semi_axis : positive_length_measure;
semi_imag_axis : positive_length_measure;
END_ENTITY; -- hyperbola
ENTITY id_attribute;
attribute_value : identifier;
identified_item : id_attribute_select;
END_ENTITY; -- id_attribute
ENTITY identification_assignment
ABSTRACT SUPERTYPE;
assigned_id : identifier;
role : identification_role;
END_ENTITY; -- identification_assignment
ENTITY identification_assignment_relationship;
name : label;
description : OPTIONAL text;
relating_identification_assignment : identification_assignment;
related_identification_assignment : identification_assignment;
END_ENTITY; -- identification_assignment_relationship
ENTITY identification_role;
name : label;
description : OPTIONAL text;
END_ENTITY; -- identification_role
ENTITY intersection_curve
SUBTYPE OF (surface_curve);
WHERE
wr1: (SIZEOF(SELF\surface_curve.associated_geometry) = 2);
wr2: (associated_surface(SELF\surface_curve.associated_geometry[1]) <>
associated_surface(SELF\surface_curve.associated_geometry [2]));
END_ENTITY; -- intersection_curve
ENTITY item_defined_transformation;
name : label;
description : OPTIONAL text;
transform_item_1 : representation_item;
transform_item_2 : representation_item;
END_ENTITY; -- item_defined_transformation
ENTITY length_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
wr1: ('SHIP_MOULDED_FORM_SCHEMA.LENGTH_UNIT' IN TYPEOF(SELF\
measure_with_unit.unit_component));
END_ENTITY; -- length_measure_with_unit
ENTITY length_unit
SUBTYPE OF (named_unit);
WHERE
wr1: ((SELF\named_unit.dimensions.length_exponent = 1) AND
(SELF\named_unit.dimensions.mass_exponent = 0) AND (SELF\
named_unit.dimensions.time_exponent = 0) AND (SELF\
named_unit.dimensions.electric_current_exponent = 0)
AND (SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0)
AND (SELF\named_unit.dimensions.amount_of_substance_exponent = 0) AND
(SELF\named_unit.dimensions.luminous_intensity_exponent = 0));
END_ENTITY; -- length_unit
ENTITY line
SUBTYPE OF (curve);
pnt : cartesian_point;
dir : vector;
WHERE
wr1: (dir.dim = pnt.dim);
END_ENTITY; -- line
ENTITY local_time;
hour_component : hour_in_day;
minute_component : OPTIONAL minute_in_hour;
second_component : OPTIONAL second_in_minute;
zone : coordinated_universal_time_offset;
WHERE
wr1: valid_time(SELF);
END_ENTITY; -- local_time
ENTITY loop
SUPERTYPE OF (ONEOF (vertex_loop,edge_loop,poly_loop))
SUBTYPE OF (topological_representation_item);
END_ENTITY; -- loop
ENTITY luminous_intensity_unit
SUBTYPE OF (named_unit);
WHERE
wr1: ((SELF\named_unit.dimensions.length_exponent = 0) AND
(SELF\named_unit.dimensions.mass_exponent = 0) AND (SELF\
named_unit.dimensions.time_exponent = 0) AND (SELF\
named_unit.dimensions.electric_current_exponent = 0) AND (
SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0) AND
(SELF\named_unit.dimensions.amount_of_substance_exponent = 0) AND
(SELF\named_unit.dimensions.luminous_intensity_exponent = 1));
END_ENTITY; -- luminous_intensity_unit
ENTITY manifold_solid_brep
SUBTYPE OF (solid_model);
outer : closed_shell;
END_ENTITY; -- manifold_solid_brep
ENTITY mapped_item
SUBTYPE OF (representation_item);
mapping_source : representation_map;
mapping_target : representation_item;
WHERE
wr1: acyclic_mapped_representation(using_representations(SELF),[SELF]);
END_ENTITY; -- mapped_item
ENTITY mass_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
wr1: ('SHIP_MOULDED_FORM_SCHEMA.MASS_UNIT' IN TYPEOF(SELF\
measure_with_unit.unit_component));
END_ENTITY; -- mass_measure_with_unit
ENTITY mass_unit
SUBTYPE OF (named_unit);
WHERE
wr1: ((SELF\named_unit.dimensions.length_exponent = 0) AND (SELF\
named_unit.dimensions.mass_exponent = 1) AND (SELF\
named_unit.dimensions.time_exponent = 0) AND (SELF\
named_unit.dimensions.electric_current_exponent = 0) AND (
SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0) AND
SELF\named_unit.dimensions.amount_of_substance_exponent = 0) AND
(SELF\named_unit.dimensions.luminous_intensity_exponent = 0));
END_ENTITY; -- mass_unit
ENTITY measure_with_unit
SUPERTYPE OF (ONEOF
(length_measure_with_unit,mass_measure_with_unit,
plane_angle_measure_with_unit,solid_angle_measure_with_unit));
value_component : measure_value;
unit_component : unit;
WHERE
wr1: valid_units(SELF);
END_ENTITY; -- measure_with_unit
ENTITY name_attribute;
attribute_value : label;
named_item : name_attribute_select;
END_ENTITY; -- name_attribute
ENTITY named_unit
SUPERTYPE OF (ONEOF (si_unit,conversion_based_unit,
context_dependent_unit) ANDOR ONEOF (length_unit,mass_unit,
time_unit,electric_current_unit,thermodynamic_temperature_unit,
amount_of_substance_unit,luminous_intensity_unit,plane_angle_unit,
solid_angle_unit,ratio_unit));
dimensions : dimensional_exponents;
END_ENTITY; -- named_unit
ENTITY non_manifold_surface_shape_representation
SUBTYPE OF (shape_representation);
WHERE
wr1 : (SIZEOF(QUERY ( it <* SELF.items | (NOT (SIZEOF([
'SHIP_MOULDED_FORM_SCHEMA.FACE_BASED_SURFACE_MODEL',
'SHIP_MOULDED_FORM_SCHEMA.MAPPED_ITEM',
'SHIP_MOULDED_FORM_SCHEMA.AXIS2_PLACEMENT_3D'] * TYPEOF(it)) = 1)) )) = 0);
wr2 : (SIZEOF(QUERY ( it <* SELF.items | (SIZEOF([
'SHIP_MOULDED_FORM_SCHEMA.FACE_BASED_SURFACE_MODEL',
'SHIP_MOULDED_FORM_SCHEMA.MAPPED_ITEM'] * TYPEOF(it)) = 1) )) > 0);
wr3 : (SIZEOF(QUERY ( mi <* QUERY ( it <* SELF.items | (
'SHIP_MOULDED_FORM_SCHEMA.MAPPED_ITEM' IN TYPEOF(it)) ) | (
NOT ((('SHIP_MOULDED_FORM_SCHEMA.' +
'NON_MANIFOLD_SURFACE_SHAPE_REPRESENTATION') IN TYPEOF(mi\
mapped_item.mapping_source.mapped_representation)) AND (
SIZEOF(QUERY ( mr_it <* mi\mapped_item.mapping_source.
mapped_representation.items | ('SHIP_MOULDED_FORM_SCHEMA.FACE_BASED_SURFACE_MODEL'
IN TYPEOF(mr_it)) )) > 0))) )) = 0);
wr4 : (SIZEOF(QUERY ( fbsm <* QUERY ( it <* SELF.items | (
'SHIP_MOULDED_FORM_SCHEMA.FACE_BASED_SURFACE_MODEL'
IN TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( cfs <* fbsm\
face_based_surface_model.fbsm_faces | (NOT (SIZEOF(
QUERY ( fa <* cfs.cfs_faces | (NOT (SIZEOF([
'SHIP_MOULDED_FORM_SCHEMA.FACE_SURFACE',
'SHIP_MOULDED_FORM_SCHEMA.ORIENTED_FACE'] * TYPEOF(fa)) = 1)) ))
= 0)) )) = 0)) )) = 0);
wr5 : (SIZEOF(QUERY ( fbsm <* QUERY ( it <* SELF.items | (
'SHIP_MOULDED_FORM_SCHEMA.FACE_BASED_SURFACE_MODEL'
IN TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( cfs <* fbsm\
face_based_surface_model.fbsm_faces | (NOT (SIZEOF(
QUERY ( f_sf <* QUERY ( fa <* cfs.cfs_faces | (
'SHIP_MOULDED_FORM_SCHEMA.FACE_SURFACE' IN TYPEOF(fa)) ) |
(NOT (('SHIP_MOULDED_FORM_SCHEMA.ADVANCED_FACE' IN TYPEOF(
f_sf)) OR nmsf_surface_check(f_sf\face_surface.
face_geometry))) )) = 0)) )) = 0)) )) = 0);
wr6 : (SIZEOF(QUERY ( fbsm <* QUERY ( it <* SELF.items | (
'SHIP_MOULDED_FORM_SCHEMA.FACE_BASED_SURFACE_MODEL'
IN TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( cfs <* fbsm\
face_based_surface_model.fbsm_faces | (NOT (SIZEOF(
QUERY ( o_fa <* QUERY ( fa <* cfs.cfs_faces | (
'SHIP_MOULDED_FORM_SCHEMA.ORIENTED_FACE' IN TYPEOF(fa)) )
| (NOT (('SHIP_MOULDED_FORM_SCHEMA.ADVANCED_FACE'
IN TYPEOF(o_fa\oriented_face.face_element)) OR
msf_surface_check(o_fa\oriented_face.face_element\
ace_surface.face_geometry))) )) = 0)) )) = 0)) )) = 0);
wr7 : (SIZEOF(QUERY ( fbsm <* QUERY ( it <* SELF.items | (
'SHIP_MOULDED_FORM_SCHEMA.FACE_BASED_SURFACE_MODEL'
IN TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( cfs <* fbsm\
face_based_surface_model.fbsm_faces | (NOT (SIZEOF(
QUERY ( fa <* cfs.cfs_faces | (NOT ((
'SHIP_MOULDED_FORM_SCHEMA.ADVANCED_FACE' IN
(SIZEOF(QUERY ( bnds <* fa.bounds | (NOT (SIZEOF([
'SHIP_MOULDED_FORM_SCHEMA.EDGE_LOOP',
'SHIP_MOULDED_FORM_SCHEMA.VERTEX_LOOP'] * TYPEOF(bnds.bound))
= 1)) )) = 0))) )) = 0)) )) = 0)) )) = 0);
wr8 : (SIZEOF(QUERY ( fbsm <* QUERY ( it <* SELF.items | (
'SHIP_MOULDED_FORM_SCHEMA.FACE_BASED_SURFACE_MODEL'
IN TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( cfs <* fbsm\
face_based_surface_model.fbsm_faces | (NOT (SIZEOF(
QUERY ( fa <* cfs.cfs_faces | (NOT ((
'SHIP_MOULDED_FORM_SCHEMA.ADVANCED_FACE' IN
TYPEOF(fa)) OR (SIZEOF(QUERY ( elp_fbnds <* QUERY ( bnds <*
fa.bounds | ('SHIP_MOULDED_FORM_SCHEMA.EDGE_LOOP' IN
TYPEOF(bnds.bound)) ) | (NOT (SIZEOF(QUERY ( oe <*
elp_fbnds\path.edge_list |(
NOT ('SHIP_MOULDED_FORM_SCHEMA.EDGE_CURVE' IN
TYPEOF(oe.edge_element))) )) = 0)) )) = 0))) )) = 0)) )) = 0)) )) = 0);
wr9 : (SIZEOF(QUERY ( fbsm <* QUERY ( it <* SELF.items | (
'SHIP_MOULDED_FORM_SCHEMA.FACE_BASED_SURFACE_MODEL'
IN TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( cfs <* fbsm\
face_based_surface_model.fbsm_faces | (NOT (SIZEOF(
QUERY ( fa <* cfs.cfs_faces | (NOT ((
'SHIP_MOULDED_FORM_SCHEMA.ADVANCED_FACE' IN TYPEOF(fa)) OR
(SIZEOF(QUERY ( elp_fbnds <* QUERY ( bnds <* fa.bounds | (
'SHIP_MOULDED_FORM_SCHEMA.EDGE_LOOP' IN TYPEOF(bnds.bound)) )
| (NOT (SIZEOF(QUERY ( oe_cv <* QUERY ( oe <* elp_fbnds\ path.edge_list |
('SHIP_MOULDED_FORM_SCHEMA.EDGE_CURVE' IN
TYPEOF(oe.edge_element)) ) | (NOT (SIZEOF([
'SHIP_MOULDED_FORM_SCHEMA.B_SPLINE_CURVE',
'SHIP_MOULDED_FORM_SCHEMA.CONIC',
'SHIP_MOULDED_FORM_SCHEMA.CURVE_REPLICA',
'SHIP_MOULDED_FORM_SCHEMA.LINE',
'SHIP_MOULDED_FORM_SCHEMA.OFFSET_CURVE_3D',
'SHIP_MOULDED_FORM_SCHEMA.PCURVE',
'SHIP_MOULDED_FORM_SCHEMA.POLYLINE',
'SHIP_MOULDED_FORM_SCHEMA.SURFACE_CURVE'] *
TYPEOF(oe_cv.edge_element\edge_curve.edge_geometry)) = 1)) )) = 0))) )) =
0)) )) = 0)) )) = 0);
wr10: (SIZEOF(QUERY ( fbsm <* QUERY ( it <* SELF.items | (
'SHIP_MOULDED_FORM_SCHEMA.FACE_BASED_SURFACE_MODEL'
IN TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( cfs <* fbsm\
face_based_surface_model.fbsm_faces | (NOT (SIZEOF(
QUERY ( fa <* cfs.cfs_faces | (NOT ((
'SHIP_MOULDED_FORM_SCHEMA.ADVANCED_FACE' IN
TYPEOF(fa)) OR (SIZEOF(QUERY ( elp_fbnds <* QUERY ( bnds <* fa.bounds | (
'SHIP_MOULDED_FORM_SCHEMA.EDGE_LOOP' IN TYPEOF(bnds.bound)) )
| (NOT (SIZEOF(QUERY ( oe <*
elp_fbnds\path.edge_list |(
NOT nmsf_curve_check(oe.edge_element\edge_curve.
edge_geometry)) )) = 0)) )) = 0))) )) = 0)) )) = 0)) )) = 0);
wr11: (SIZEOF(QUERY ( fbsm <* QUERY ( it <* SELF.items | (
'SHIP_MOULDED_FORM_SCHEMA.FACE_BASED_SURFACE_MODEL'
IN TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( cfs <* fbsm\
face_based_surface_model.fbsm_faces | (NOT (SIZEOF(
QUERY ( fa <* cfs.cfs_faces | (NOT ((
'SHIP_MOULDED_FORM_SCHEMA.ADVANCED_FACE' IN
TYPEOF(fa)) OR (SIZEOF(QUERY ( elp_fbnds <* QUERY ( bnds <*
fa.bounds | ( 'SHIP_MOULDED_FORM_SCHEMA.EDGE_LOOP' IN
TYPEOF(bnds.bound)) ) | (NOT (SIZEOF(QUERY ( oe <*
elp_fbnds\path.edge_list | ( NOT (('SHIP_MOULDED_FORM_SCHEMA.VERTEX_POINT' IN
TYPEOF(oe.edge_element.edge_start)) AND (
'SHIP_MOULDED_FORM_SCHEMA.VERTEX_POINT' IN
TYPEOF(oe.edge_element.edge_end)))) )) = 0)) )) = 0))) )) = 0)) )) = 0)) )) = 0);
wr12: (SIZEOF(QUERY ( fbsm <* QUERY ( it <* SELF.items | (
'SHIP_MOULDED_FORM_SCHEMA.FACE_BASED_SURFACE_MODEL'
IN TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( cfs <* fbsm\
face_based_surface_model.fbsm_faces | (NOT (SIZEOF(
QUERY ( fa <* cfs.cfs_faces | (NOT ((
'SHIP_MOULDED_FORM_SCHEMA.ADVANCED_FACE' IN TYPEOF(fa)) OR
(SIZEOF(QUERY ( elp_fbnds <* QUERY ( bnds <*fa.bounds | (
'SHIP_MOULDED_FORM_SCHEMA.EDGE_LOOP' IN
TYPEOF(bnds.bound)) ) | (NOT (SIZEOF(QUERY ( oe <*elp_fbnds\path.edge_list | (
NOT ((SIZEOF(['SHIP_MOULDED_FORM_SCHEMA.CARTESIAN_POINT',
'SHIP_MOULDED_FORM_SCHEMA.DEGENERATE_PCURVE', 'SHIP_MOULDED_FORM_SCHEMA.
POINT_ON_CURVE', 'SHIP_MOULDED_FORM_SCHEMA.POINT_ON_SURFACE'] *
TYPEOF(oe.edge_element.edge_start\vertex_point.vertex_geometry)) = 1) AND
(SIZEOF(['SHIP_MOULDED_FORM_SCHEMA.CARTESIAN_POINT',
'SHIP_MOULDED_FORM_SCHEMA.DEGENERATE_PCURVE', 'SHIP_MOULDED_FORM_SCHEMA.
POINT_ON_CURVE', 'SHIP_MOULDED_FORM_SCHEMA.POINT_ON_SURFACE'] *
TYPEOF(oe.edge_element.edge_end\vertex_point.vertex_geometry)) = 1))) ))
= 0)) )) = 0))) )) = 0)) )) = 0)) )) = 0);
wr13: (SIZEOF(QUERY ( fbsm <* QUERY ( it <* SELF.items | (
'SHIP_MOULDED_FORM_SCHEMA.FACE_BASED_SURFACE_MODEL'
IN TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( cfs <* fbsm\
face_based_surface_model.fbsm_faces | (NOT (SIZEOF(
QUERY ( fa <* cfs.cfs_faces | (NOT ((
'SHIP_MOULDED_FORM_SCHEMA.ADVANCED_FACE' IN TYPEOF(fa)) OR
(SIZEOF(QUERY ( vlp_fbnds <* QUERY ( bnds <*fa.bounds | (
'SHIP_MOULDED_FORM_SCHEMA.VERTEX_LOOP' IN TYPEOF(bnds.bound)) )
| (NOT ('SHIP_MOULDED_FORM_SCHEMA.VERTEX_POINT' IN TYPEOF(
vlp_fbnds\vertex_loop.loop_vertex))) )) = 0))) )) = 0)) ))
= 0)) )) = 0);
wr14: (SIZEOF(QUERY ( fbsm <* QUERY ( it <* SELF.items | (
'SHIP_MOULDED_FORM_SCHEMA.FACE_BASED_SURFACE_MODEL' IN
TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( cfs <* fbsm\
face_based_surface_model.fbsm_faces | (NOT (SIZEOF(
QUERY ( fa <* cfs.cfs_faces | (NOT ((
'SHIP_MOULDED_FORM_SCHEMA.ADVANCED_FACE' IN TYPEOF(fa)) OR
(SIZEOF(QUERY ( vlp_fbnds <* QUERY ( bnds <*fa.bounds |(
'SHIP_MOULDED_FORM_SCHEMA.VERTEX_LOOP' IN TYPEOF(bnds.bound)) )
| (NOT (SIZEOF(['SHIP_MOULDED_FORM_SCHEMA.CARTESIAN_POINT',
'SHIP_MOULDED_FORM_SCHEMA.DEGENERATE_PCURVE',
'SHIP_MOULDED_FORM_SCHEMA.POINT_ON_CURVE',
'SHIP_MOULDED_FORM_SCHEMA.POINT_ON_SURFACE'] *
TYPEOF(vlp_fbnds\vertex_loop.loop_vertex\vertex_point.
vertex_geometry)) = 1)) )) = 0))) )) = 0)) )) = 0)) )) = 0);
END_ENTITY; -- non_manifold_surface_shape_representation
ENTITY object_role;
name : label;
description : OPTIONAL text;
END_ENTITY; -- object_role
ENTITY offset_curve_3d
SUBTYPE OF (curve);
basis_curve : curve;
distance : length_measure;
self_intersect : LOGICAL;
ref_direction : direction;
WHERE
wr1: ((basis_curve.dim = 3) AND (ref_direction.dim = 3));
END_ENTITY; -- offset_curve_3d
ENTITY offset_surface
SUBTYPE OF (surface);
basis_surface : surface;
distance : length_measure;
self_intersect : LOGICAL;
END_ENTITY; -- offset_surface
ENTITY open_shell
SUBTYPE OF (connected_face_set);
END_ENTITY; -- open_shell
ENTITY ordinal_date
SUBTYPE OF (date);
day_component : day_in_year_number;
WHERE
wr1: (((NOT leap_year(SELF.year_component)) AND (1 <= day_component)
AND (day_component <= 365)) OR (leap_year(SELF.year_component) AND
(1 <= day_component) AND (day_component <= 366)));
END_ENTITY; -- ordinal_date
ENTITY organization;
id : OPTIONAL identifier;
name : label;
description : OPTIONAL text;
END_ENTITY; -- organization
ENTITY organization_assignment
ABSTRACT SUPERTYPE;
assigned_organization : organization;
role : organization_role;
END_ENTITY; -- organization_assignment
ENTITY organization_role;
name : label;
DERIVE
description : text := get_description_value(SELF);
WHERE
wr1: (SIZEOF(USEDIN(SELF,'SHIP_MOULDED_FORM_SCHEMA.' +
'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1);
END_ENTITY; -- organization_role
ENTITY organizational_address
SUBTYPE OF (address);
organizations : SET [1:?] OF organization;
description : OPTIONAL text;
END_ENTITY; -- organizational_address
ENTITY organizational_project;
name : label;
description : OPTIONAL text;
responsible_organizations : SET [1:?] OF organization;
DERIVE
id : identifier := get_id_value(SELF);
WHERE
wr1: (SIZEOF(USEDIN(SELF,'SHIP_MOULDED_FORM_SCHEMA.' +
'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1);
END_ENTITY; -- organizational_project
ENTITY oriented_closed_shell
SUBTYPE OF (closed_shell);
closed_shell_element : closed_shell;
orientation : BOOLEAN;
DERIVE
SELF\connected_face_set.cfs_faces : SET [1:?] OF face :=
conditional_reverse(SELF.orientation,SELF.closed_shell_element.cfs_faces);
WHERE
wr1: (NOT ('SHIP_MOULDED_FORM_SCHEMA.ORIENTED_CLOSED_SHELL' IN
TYPEOF(SELF.closed_shell_element)));
END_ENTITY; -- oriented_closed_shell
ENTITY oriented_edge
SUBTYPE OF (edge);
edge_element : edge;
orientation : BOOLEAN;
DERIVE
SELF\edge.edge_start : vertex := boolean_choose(SELF.orientation,
SELF.edge_element.edge_start,SELF.edge_element.edge_end);
SELF\edge.edge_end : vertex := boolean_choose(SELF.orientation,
SELF.edge_element.edge_end,SELF.edge_element.edge_start);
WHERE
wr1: (NOT ('SHIP_MOULDED_FORM_SCHEMA.ORIENTED_EDGE' IN TYPEOF(SELF.edge_element)));
END_ENTITY; -- oriented_edge
ENTITY oriented_face
SUBTYPE OF (face);
face_element : face;
orientation : BOOLEAN;
DERIVE
SELF\face.bounds : SET [1:?] OF face_bound := conditional_reverse(
SELF.orientation,SELF.face_element.bounds);
WHERE
wr1: (NOT ('SHIP_MOULDED_FORM_SCHEMA.ORIENTED_FACE' IN
TYPEOF(SELF.face_element)));
END_ENTITY; -- oriented_face
ENTITY oriented_open_shell
SUBTYPE OF (open_shell);
open_shell_element : open_shell;
orientation : BOOLEAN;
DERIVE
SELF\connected_face_set.cfs_faces : SET [1:?] OF face :=
conditional_reverse(SELF.orientation,SELF.
open_shell_element.cfs_faces);
WHERE
wr1: (NOT ('SHIP_MOULDED_FORM_SCHEMA.ORIENTED_OPEN_SHELL' IN
TYPEOF(SELF.open_shell_element)));
END_ENTITY; -- oriented_open_shell
ENTITY oriented_path
SUBTYPE OF (path);
path_element : path;
orientation : BOOLEAN;
DERIVE
SELF\path.edge_list : LIST [1:?] OF UNIQUE oriented_edge :=
conditional_reverse(SELF.orientation,SELF.path_element.edge_list);
WHERE
wr1: (NOT ('SHIP_MOULDED_FORM_SCHEMA.ORIENTED_PATH' IN ;
TYPEOF(SELF.path_element)));
END_ENTITY; -- oriented_path
ENTITY oriented_surface
SUBTYPE OF (surface);
orientation : BOOLEAN;
END_ENTITY; -- oriented_surface
ENTITY parabola
SUBTYPE OF (conic);
focal_dist : length_measure;
WHERE
wr1: (focal_dist <> 0);
END_ENTITY; -- parabola
ENTITY parametric_representation_context
SUBTYPE OF (representation_context);
END_ENTITY; -- parametric_representation_context
ENTITY path
SUPERTYPE OF (ONEOF (edge_loop,oriented_path))
SUBTYPE OF (topological_representation_item);
edge_list : LIST [1:?] OF UNIQUE oriented_edge;
WHERE
wr1: path_head_to_tail(SELF);
END_ENTITY; -- path
ENTITY pcurve
SUBTYPE OF (curve);
basis_surface : surface;
reference_to_curve : definitional_representation;
WHERE
wr1: (SIZEOF(reference_to_curve\representation.items) = 1);
wr2: ('SHIP_MOULDED_FORM_SCHEMA.CURVE' IN
TYPEOF(reference_to_curve\representation.items[1]));
wr3: (reference_to_curve\representation.items[1]\
geometric_representation_item.dim = 2);
END_ENTITY; -- pcurve
ENTITY person;
id : identifier;
last_name : OPTIONAL label;
first_name : OPTIONAL label;
middle_names : OPTIONAL LIST [1:?] OF label;
prefix_titles: OPTIONAL LIST [1:?] OF label;
suffix_titles: OPTIONAL LIST [1:?] OF label;
WHERE
wr1: (EXISTS(last_name) OR EXISTS(first_name));
END_ENTITY; -- person
ENTITY person_and_organization;
the_person : person;
the_organization : organization;
DERIVE
name : label := get_name_value(SELF);
description : text := get_description_value(SELF);
WHERE
wr1: (SIZEOF(USEDIN(SELF,'SHIP_MOULDED_FORM_SCHEMA.' +
'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1);
wr2: (SIZEOF(USEDIN(SELF,'SHIP_MOULDED_FORM_SCHEMA.' +
'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1);
END_ENTITY; -- person_and_organization
ENTITY person_and_organization_assignment
ABSTRACT SUPERTYPE;
assigned_person_and_organization : person_and_organization;
role : person_and_organization_role;
END_ENTITY; -- person_and_organization_assignment
ENTITY person_and_organization_role;
name : label;
DERIVE
description : text := get_description_value(SELF);
WHERE
wr1: (SIZEOF(USEDIN(SELF,'SHIP_MOULDED_FORM_SCHEMA.' +
'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1);
END_ENTITY; -- person_and_organization_role
ENTITY person_assignment
ABSTRACT SUPERTYPE;
assigned_person : person;
role : person_role;
END_ENTITY; -- person_assignment
ENTITY person_role;
name : label;
DERIVE
description : text := get_description_value(SELF);
WHERE
wr1: (SIZEOF(USEDIN(SELF,'SHIP_MOULDED_FORM_SCHEMA.' +
'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1);
END_ENTITY; -- person_role
ENTITY personal_address
SUBTYPE OF (address);
people : SET [1:?] OF person;
description : OPTIONAL text;
END_ENTITY; -- personal_address
ENTITY placement
SUPERTYPE OF (ONEOF (axis1_placement,axis2_placement_2d, axis2_placement_3d))
SUBTYPE OF (geometric_representation_item);
location : cartesian_point;
END_ENTITY; -- placement
ENTITY plane
SUBTYPE OF (elementary_surface);
END_ENTITY; -- plane
ENTITY plane_angle_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
wr1: ('SHIP_MOULDED_FORM_SCHEMA.PLANE_ANGLE_UNIT' IN
TYPEOF(SELF\measure_with_unit.unit_component));
END_ENTITY; -- plane_angle_measure_with_unit
ENTITY plane_angle_unit
SUBTYPE OF (named_unit);
WHERE
wr1: ((SELF\named_unit.dimensions.length_exponent = 0) AND
(SELF\named_unit.dimensions.mass_exponent = 0) AND (SELF\
named_unit.dimensions.time_exponent = 0) AND (SELF\
named_unit.dimensions.electric_current_exponent = 0) AND (
SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0) AND
(SELF\named_unit.dimensions.amount_of_substance_exponent = 0) AND
(SELF\named_unit.dimensions.luminous_intensity_exponent = 0));
END_ENTITY; -- plane_angle_unit
ENTITY point
SUPERTYPE OF (ONEOF
(cartesian_point,point_on_curve,point_on_surface,
point_replica,degenerate_pcurve))
SUBTYPE OF (geometric_representation_item);
END_ENTITY; -- point
ENTITY point_on_curve
SUBTYPE OF (point);
basis_curve : curve;
point_parameter : parameter_value;
END_ENTITY; -- point_on_curve
ENTITY point_on_surface
SUBTYPE OF (point);
basis_surface : surface;
point_parameter_u : parameter_value;
point_parameter_v : parameter_value;
END_ENTITY; -- point_on_surface
ENTITY point_replica
SUBTYPE OF (point);
parent_pt : point;
transformation : cartesian_transformation_operator;
WHERE
wr1: (transformation.dim = parent_pt.dim);
wr2: acyclic_point_replica(SELF,parent_pt);
END_ENTITY; -- point_replica
ENTITY poly_loop
SUBTYPE OF (loop, geometric_representation_item);
polygon : LIST [3:?] OF UNIQUE cartesian_point;
END_ENTITY; -- poly_loop
ENTITY polyline
SUBTYPE OF (bounded_curve);
points : LIST [2:?] OF cartesian_point;
END_ENTITY; -- polyline
ENTITY product;
id : identifier;
name : label;
description : OPTIONAL text;
frame_of_reference : SET [1:?] OF product_context;
END_ENTITY; -- product
ENTITY product_category;
name : label;
description : OPTIONAL text;
DERIVE
id : identifier := get_id_value(SELF);
WHERE
wr1: (SIZEOF(USEDIN(SELF,'SHIP_MOULDED_FORM_SCHEMA.' +
'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1);
END_ENTITY; -- product_category
ENTITY product_category_relationship;
name : label;
description : OPTIONAL text;
category : product_category;
sub_category : product_category;
WHERE
wr1: acyclic_product_category_relationship(SELF,[SELF.sub_category]);
END_ENTITY; -- product_category_relationship
ENTITY product_context
SUBTYPE OF (application_context_element);
discipline_type : label;
END_ENTITY; -- product_context
ENTITY product_definition;
id : identifier;
description : OPTIONAL text;
formation : product_definition_formation;
frame_of_reference : product_definition_context;
DERIVE
name : label := get_name_value(SELF);
WHERE
wr1: (SIZEOF(USEDIN(SELF,'SHIP_MOULDED_FORM_SCHEMA.' +
'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1);
END_ENTITY; -- product_definition
ENTITY product_definition_context
SUBTYPE OF (application_context_element);
life_cycle_stage : label;
END_ENTITY; -- product_definition_context
ENTITY product_definition_formation;
id : identifier;
description : OPTIONAL text;
of_product : product;
UNIQUE
ur1 : id, of_product;
END_ENTITY; -- product_definition_formation
ENTITY product_definition_relationship;
id : identifier;
name : label;
description : OPTIONAL text;
relating_product_definition : product_definition;
related_product_definition : product_definition;
END_ENTITY; -- product_definition_relationship
ENTITY product_definition_shape
SUBTYPE OF (property_definition);
UNIQUE
ur1 : definition;
WHERE
wr1: (SIZEOF(['SHIP_MOULDED_FORM_SCHEMA.CHARACTERIZED_PRODUCT_DEFINITION',
'SHIP_MOULDED_FORM_SCHEMA.CHARACTERIZED_OBJECT'] *
TYPEOF(SELF\property_definition.definition)) > 0);
END_ENTITY; -- product_definition_shape
ENTITY product_related_product_category
SUBTYPE OF (product_category);
products : SET [1:?] OF product;
END_ENTITY; -- product_related_product_category
ENTITY property_definition;
name : label;
description : OPTIONAL text;
definition : characterized_definition;
DERIVE
id : identifier := get_id_value(SELF);
WHERE
wr1: (SIZEOF(USEDIN(SELF,'SHIP_MOULDED_FORM_SCHEMA.' +
'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1);
END_ENTITY; -- property_definition
ENTITY property_definition_relationship;
name : label;
description : text;
relating_property_definition : property_definition;
related_property_definition : property_definition;
END_ENTITY; -- property_definition_relationship
ENTITY property_definition_representation;
definition : represented_definition;
used_representation : representation;
DERIVE
description : text := get_description_value(SELF);
name : label := get_name_value(SELF);
WHERE
wr1: (SIZEOF(USEDIN(SELF,'SHIP_MOULDED_FORM_SCHEMA.' +
'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1);
wr2: (SIZEOF(USEDIN(SELF,'SHIP_MOULDED_FORM_SCHEMA.' +
'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1);
END_ENTITY; -- property_definition_representation
ENTITY quasi_uniform_curve
SUBTYPE OF (b_spline_curve);
END_ENTITY; -- quasi_uniform_curve
ENTITY quasi_uniform_surface
SUBTYPE OF (b_spline_surface);
END_ENTITY; -- quasi_uniform_surface
ENTITY ratio_unit
SUBTYPE OF (named_unit);
WHERE
wr1: ((SELF\named_unit.dimensions.length_exponent = 0) AND
(SELF\named_unit.dimensions.mass_exponent = 0) AND (SELF\
named_unit.dimensions.time_exponent = 0) AND (SELF\
named_unit.dimensions.electric_current_exponent = 0)
AND (SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0)
AND (SELF\named_unit.dimensions.amount_of_substance_exponent = 0) AND
(SELF\named_unit.dimensions.luminous_intensity_exponent = 0));
END_ENTITY; -- ratio_unit
ENTITY rational_b_spline_curve
SUBTYPE OF (b_spline_curve);
weights_data : LIST [2:?] OF REAL;
DERIVE
weights : ARRAY [0:upper_index_on_control_points] OF REAL :=
list_to_array(weights_data,0,
upper_index_on_control_points);
WHERE
wr1: (SIZEOF(weights_data) = SIZEOF(SELF\b_spline_curve.control_points_list));
wr2: curve_weights_positive(SELF);
END_ENTITY; -- rational_b_spline_curve
ENTITY rational_b_spline_surface
SUBTYPE OF (b_spline_surface);
weights_data : LIST [2:?] OF LIST [2:?] OF REAL;
DERIVE
weights : ARRAY [0:u_upper] OF ARRAY [0:v_upper] OF REAL :=
make_array_of_array(weights_data,0,u_upper,0,v_upper);
WHERE
wr1: ((SIZEOF(weights_data) = SIZEOF(SELF\b_spline_surface.
control_points_list)) AND (SIZEOF(weights_data[1]) =
SIZEOF(SELF\b_spline_surface.control_points_list[1])));
wr2: surface_weights_positive(SELF);
END_ENTITY; -- rational_b_spline_surface
ENTITY representation;
name : label;
items : SET [1:?] OF representation_item;
context_of_items : representation_context;
DERIVE
id : identifier := get_id_value(SELF);
description : text := get_description_value(SELF);
WHERE
wr1: (SIZEOF(USEDIN(SELF,'SHIP_MOULDED_FORM_SCHEMA.' +
'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1);
wr2: (SIZEOF(USEDIN(SELF,'SHIP_MOULDED_FORM_SCHEMA.' +
'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1);
END_ENTITY; -- representation
ENTITY representation_context;
context_identifier : identifier;
context_type : text;
INVERSE
representations_in_context : SET [1:?] OF representation FOR
context_of_items;
END_ENTITY; -- representation_context
ENTITY representation_item;
name : label;
WHERE
wr1: (SIZEOF(using_representations(SELF)) > 0);
END_ENTITY; -- representation_item
ENTITY representation_map;
mapping_origin : representation_item;
mapped_representation : representation;
INVERSE
map_usage : SET [1:?] OF mapped_item FOR mapping_source;
WHERE
wr1: item_in_context(SELF.mapping_origin,SELF.mapped_representation.context_of_items);
END_ENTITY; -- representation_map
ENTITY representation_relationship;
name : label;
description : OPTIONAL text;
rep_1 : representation;
rep_2 : representation;
END_ENTITY; -- representation_relationship
ENTITY role_association;
role : object_role;
item_with_role : role_select;
END_ENTITY; -- role_association
ENTITY seam_curve
SUBTYPE OF (surface_curve);
WHERE
wr1: (SIZEOF(SELF\surface_curve.associated_geometry) = 2);
wr2: (associated_surface(SELF\surface_curve.associated_geometry[1]) =
associated_surface(SELF\surface_curve.associated_geometry[2]));
wr3: ('SHIP_MOULDED_FORM_SCHEMA.PCURVE' IN
TYPEOF(SELF\surface_curve.associated_geometry[1]));
wr4: ('SHIP_MOULDED_FORM_SCHEMA.PCURVE' IN
TYPEOF(SELF\surface_curve.associated_geometry[2]));
END_ENTITY; -- seam_curve
ENTITY serial_numbered_effectivity
SUBTYPE OF (effectivity);
effectivity_start_id : identifier;
effectivity_end_id : OPTIONAL identifier;
END_ENTITY; -- serial_numbered_effectivity
ENTITY shape_aspect;
name : label;
description : OPTIONAL text;
of_shape : product_definition_shape;
product_definitional : LOGICAL;
DERIVE
id : identifier := get_id_value(SELF);
WHERE
wr1: (SIZEOF(USEDIN(SELF,'SHIP_MOULDED_FORM_SCHEMA.' +
'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1);
END_ENTITY; -- shape_aspect
ENTITY shape_definition_representation
SUBTYPE OF (property_definition_representation);
WHERE
wr1: (('SHIP_MOULDED_FORM_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN
TYPEOF(SELF.definition)) OR (
'SHIP_MOULDED_FORM_SCHEMA.SHAPE_DEFINITION' IN
TYPEOF(SELF.definition.definition)));
wr2: ('SHIP_MOULDED_FORM_SCHEMA.SHAPE_REPRESENTATION' IN
TYPEOF(SELF.used_representation));
END_ENTITY; -- shape_definition_representation
ENTITY shape_representation
SUBTYPE OF (representation);
END_ENTITY; -- shape_representation
ENTITY si_unit
SUBTYPE OF (named_unit);
prefix : OPTIONAL si_prefix;
name : si_unit_name;
DERIVE
SELF\named_unit.dimensions : dimensional_exponents := dimensions_for_si_unit(name);
END_ENTITY; -- si_unit
ENTITY solid_angle_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
wr1: ('SHIP_MOULDED_FORM_SCHEMA.SOLID_ANGLE_UNIT' IN TYPEOF(SELF\
measure_with_unit.unit_component));
END_ENTITY; -- solid_angle_measure_with_unit
ENTITY solid_angle_unit
SUBTYPE OF (named_unit);
WHERE
wr1: ((SELF\named_unit.dimensions.length_exponent = 0) AND (SELF\
named_unit.dimensions.mass_exponent = 0) AND (SELF\
named_unit.dimensions.time_exponent = 0) AND (SELF\
named_unit.dimensions.electric_current_exponent = 0) AND (
SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0) AND
(SELF\named_unit.dimensions.amount_of_substance_exponent = 0) AND
(SELF\named_unit.dimensions.luminous_intensity_exponent = 0));
END_ENTITY; -- solid_angle_unit
ENTITY solid_model
SUPERTYPE OF (manifold_solid_brep)
SUBTYPE OF (geometric_representation_item);
END_ENTITY; -- solid_model
ENTITY spherical_surface
SUBTYPE OF (elementary_surface);
radius : positive_length_measure;
END_ENTITY; -- spherical_surface
ENTITY subface
SUBTYPE OF (face);
parent_face : face;
WHERE
wr1: (NOT mixed_loop_type_set(list_to_set(list_face_loops(SELF)) +
list_to_set(list_face_loops(parent_face))));
END_ENTITY; -- subface
ENTITY surface
SUPERTYPE OF (ONEOF
(elementary_surface,swept_surface,bounded_surface,offset_surface,surface_replica))
SUBTYPE OF (geometric_representation_item);
END_ENTITY; -- surface
ENTITY surface_curve
SUPERTYPE OF (ONEOF (intersection_curve,seam_curve) ANDOR
bounded_surface_curve)
SUBTYPE OF (curve);
curve_3d : curve;
associated_geometry : LIST [1:2] OF pcurve_or_surface;
master_representation : preferred_surface_curve_representation;
DERIVE
basis_surface : SET [1:2] OF surface := get_basis_surface(SELF);
WHERE
wr1: (curve_3d.dim = 3);
wr2: (('SHIP_MOULDED_FORM_SCHEMA.PCURVE' IN TYPEOF(
associated_geometry[1])) OR (master_representation <> pcurve_s1));
wr3: (('SHIP_MOULDED_FORM_SCHEMA.PCURVE' IN TYPEOF(
associated_geometry[2])) OR (master_representation <> pcurve_s2));
wr4: (NOT ('SHIP_MOULDED_FORM_SCHEMA.PCURVE' IN TYPEOF(curve_3d)));
END_ENTITY; -- surface_curve
ENTITY surface_of_linear_extrusion
SUBTYPE OF (swept_surface);
extrusion_axis : vector;
END_ENTITY; -- surface_of_linear_extrusion
ENTITY surface_of_revolution
SUBTYPE OF (swept_surface);
axis_position : axis1_placement;
DERIVE
axis_line : line := representation_item('') ||
geometric_representation_item() || curve() ||
line(axis_position.location,representation_item('') ||
geometric_representation_item() || vector(axis_position.z,1));
END_ENTITY; -- surface_of_revolution
ENTITY surface_replica
SUBTYPE OF (surface);
parent_surface : surface;
transformation : cartesian_transformation_operator_3d;
WHERE
wr1: acyclic_surface_replica(SELF,parent_surface);
END_ENTITY; -- surface_replica
ENTITY swept_surface
SUPERTYPE OF (ONEOF
(surface_of_linear_extrusion,surface_of_revolution))
SUBTYPE OF (surface);
swept_curve : curve;
END_ENTITY; -- swept_surface
ENTITY thermodynamic_temperature_unit
SUBTYPE OF (named_unit);
WHERE
wr1: ((SELF\named_unit.dimensions.length_exponent = 0) AND (SELF\
named_unit.dimensions.mass_exponent = 0) AND (SELF\
named_unit.dimensions.time_exponent = 0) AND (SELF\
named_unit.dimensions.electric_current_exponent = 0) AND (
SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 1) AND
(SELF\named_unit.dimensions.amount_of_substance_exponent = 0) AND (SELF\
named_unit.dimensions.luminous_intensity_exponent = 0));
END_ENTITY; -- thermodynamic_temperature_unit
ENTITY time_unit
SUBTYPE OF (named_unit);
WHERE
wr1: ((SELF\named_unit.dimensions.length_exponent = 0) AND (SELF\
named_unit.dimensions.mass_exponent = 0) AND (SELF\
named_unit.dimensions.time_exponent = 1) AND (SELF\
named_unit.dimensions.electric_current_exponent = 0) AND (
SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0) AND
(SELF\named_unit.dimensions.amount_of_substance_exponent = 0) AND
(SELF\named_unit.dimensions.luminous_intensity_exponent = 0));
END_ENTITY; -- time_unit
ENTITY topological_representation_item
SUPERTYPE OF (ONEOF
(vertex,edge,face_bound,face,connected_edge_set,
connected_face_set,loop ANDOR path))
SUBTYPE OF (representation_item);
END_ENTITY; -- topological_representation_item
ENTITY toroidal_surface
SUBTYPE OF (elementary_surface);
major_radius : positive_length_measure;
minor_radius : positive_length_measure;
END_ENTITY; -- toroidal_surface
ENTITY uncertainty_measure_with_unit
SUBTYPE OF (measure_with_unit);
name : label;
description : OPTIONAL text;
WHERE
wr1: valid_measure_value(SELF\measure_with_unit.value_component);
END_ENTITY; -- uncertainty_measure_with_unit
ENTITY uniform_curve
SUBTYPE OF (b_spline_curve);
END_ENTITY; -- uniform_curve
ENTITY uniform_surface
SUBTYPE OF (b_spline_surface);
END_ENTITY; -- uniform_surface
ENTITY value_representation_item
SUBTYPE OF (representation_item);
value_component : measure_value;
WHERE
wr1: (SIZEOF(QUERY ( rep <* using_representations(SELF) | (NOT (
'SHIP_MOULDED_FORM_SCHEMA.GLOBAL_UNIT_ASSIGNED_CONTEXT' IN
TYPEOF(rep.context_of_items))) )) = 0);
END_ENTITY; -- value_representation_item
ENTITY vector
SUBTYPE OF (geometric_representation_item); o
rientation : direction;
magnitude : length_measure;
WHERE
wr1: (magnitude >= 0);
END_ENTITY; -- vector
ENTITY versioned_action_request;
id : identifier;
version : label;
purpose : text;
description : OPTIONAL text;
END_ENTITY; -- versioned_action_request
ENTITY vertex
SUBTYPE OF (topological_representation_item);
END_ENTITY; -- vertex
ENTITY vertex_loop
SUBTYPE OF (loop);
loop_vertex : vertex;
END_ENTITY; -- vertex_loop
ENTITY vertex_point
SUBTYPE OF (vertex, geometric_representation_item);
vertex_geometry : point;
END_ENTITY; -- vertex_point
ENTITY week_of_year_and_day_date
SUBTYPE OF (date);
week_component : week_in_year_number;
day_component : OPTIONAL day_in_week_number;
END_ENTITY; -- week_of_year_and_day_date
RULE action_request_solution_connected_to_action FOR (
LOCAL
violate : LOGICAL := FALSE;
t1_set : SET OF action_request_solution := [];
set_3 : SET OF action_method := [];
t2_set : SET OF action := [];
END_LOCAL;
t1_set := QUERY ( a <* action_request_solution | VALUE_IN(which_class(a),'change plan') );
t2_set := QUERY ( b <* action | VALUE_IN(which_class(b),'change') );
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violate;
set_3 := [];
REPEAT j := 1 TO HIINDEX(t2_set) BY 1;
set_3 := set_3 + [t2_set[j].chosen_method];
END_REPEAT;
violate := VALUE_IN(set_3,t1_set[i].method);
END_REPEAT;
WHERE
wr1: (NOT violate);
END_RULE; -- action_request_solution_connected_to_action
RULE action_request_solution_with_identification_assignment FOR (
applied_classification_assignment);
LOCAL
violation : LOGICAL := FALSE;
t1_set : SET OF action_request_solution := [];
c_a_set : SET OF applied_classification_assignment := [];
arg_list : LIST OF STRING := ['change plan'];
t2_set : SET OF applied_identification_assignment := [];
END_LOCAL;
REPEAT j := 1 TO HIINDEX(arg_list) BY 1 WHILE NOT violation;
c_a_set := QUERY ( i <* applied_classification_assignment |
(i.assigned_class.name = arg_list[j]) );
END_REPEAT;
REPEAT i := 1 TO HIINDEX(c_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
t2_set := bag_to_set(USEDIN(t1_set[i],'SHIP_MOULDED_FORM_SCHEMA.APPLIED_IDENTI
FICATION_ASSIGNMENT.ITEMS'));
t2_set := QUERY ( j <* t2_set | (j.role.name = 'globally unambiguous identifier') );
violation := NOT (SIZEOF(t2_set) = 1);
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; --action_request_solution_with_identification_assignment
RULE action_with_identification_assignment FOR (
applied_classification_assignment);
LOCAL
violation : LOGICAL := FALSE;
t1_set : SET OF action := [];
c_a_set : SET OF applied_classification_assignment := [];
arg_list : LIST OF STRING := ['change',
'versionable object change event','check'];
t2_set : SET OF applied_identification_assignment := [];
END_LOCAL;
REPEAT j := 1 TO HIINDEX(arg_list) BY 1 WHILE NOT violation;
c_a_set := QUERY ( i <* applied_classification_assignment |
(i.assigned_class.name = arg_list[j]) );
END_REPEAT;
REPEAT i := 1 TO HIINDEX(c_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
t2_set := bag_to_set(USEDIN(t1_set[i],
'SHIP_MOULDED_FORM_SCHEMA.APPLIED_IDENTIFICATION_ASSIGNMENT.ITEMS'));
t2_set := QUERY ( j <* t2_set | (j.role.name = 'globally unambiguous identifier') );
violation := NOT (SIZEOF(t2_set) = 1);
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; -- action_with_identification_assignment
RULE alternative_version_relationship_has_mandatory_description FOR (
identification_assignment_relationship);
LOCAL
violate : LOGICAL := FALSE;
t1_set : SET OF identification_assignment_relationship := [];
END_LOCAL;
t1_set := QUERY ( i <* identification_assignment_relationship |
VALUE_IN(which_class(i),'alternative version relationship'));
violate := SIZEOF(QUERY ( k <* t1_set | (NOT EXISTS(k.description)) )) > 0;
WHERE
wr1: (NOT violation);
END_RULE; --alternative_version_relationship_has_mandatory_description
RULE alternative_version_relationship_has_unique_versions FOR (
identification_assignment_relationship);
LOCAL
violate : LOGICAL := FALSE;
t1_set : SET OF identification_assignment_relationship := [];
END_LOCAL;
t1_set := QUERY ( a <* identification_assignment_relationship |
VALUE_IN(which_class(a),'alternative version relationship'));
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violate;
violate := t1_set[i].relating_identification_assignment.assigned_id
= t1_set[i].related_identification_assignment.assigned_id;
END_REPEAT;
WHERE
wr1: (NOT violate);
END_RULE; -- alternative_version_relationship_has_unique_versions
RULE alternative_version_relationship_versionable_object FOR (
applied_identification_assignment, identification_assignment_relationship);
LOCAL
violate : LOGICAL := FALSE;
END_LOCAL;
REPEAT i := 1 TO HIINDEX(applied_identification_assignment) BY 1 WHILE NOT violate;
IF
(SIZEOF(USEDIN(applied_identification_assignment[i],'SHIP_MOULDED_FO
RM_SCHEMA.IDENTIFICATION_ASSIGNMENT_RELATIONSHIP.'
+ 'RELATING_IDENTIFICATION_ASSIGNMENT')) > 0) OR
(SIZEOF(USEDIN(applied_identification_assignment[i],
'SHIP_MOULDED_FORM_SCHEMA.IDENTIFICATION_ASSIGNMENT_RELATIONSHIP.'
+ 'RELATED_IDENTIFICATION_ASSIGNMENT')) > 0) THEN
REPEAT j := 1 TO
HIINDEX(applied_identification_assignment[i].items) BY 1 WHILE NOT violate;
violate := NOT VALUE_IN(which_class(applied_identification_assignment[i].items[j)),
'versionable object');
END_REPEAT;
END_IF;
END_REPEAT;
WHERE
wr1: (NOT violate);
END_RULE; -- alternative_version_relationship_versionable_object
RULE approval_event_with_approval_date_time FOR (approval);
LOCAL
violate : LOGICAL := FALSE;
t1_set : SET OF approval := [];
t2_set : SET OF approval_date_time := [];
END_LOCAL;
t1_set := QUERY ( i <* approval | VALUE_IN(which_class(i),
'approval event') );
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violate;
t2_set := bag_to_set(USEDIN(t1_set[i],
'SHIP_MOULDED_FORM_SCHEMA.APPROVAL_DATE_TIME.' + 'DATED_APPROVAL'));
violate := NOT (SIZEOF(t2_set) = 1);
END_REPEAT;
WHERE
wr1: (NOT violate);
END_RULE; -- approval_event_with_approval_date_time
RULE approval_event_with_approval_person_organization FOR (approval);
LOCAL
violate : LOGICAL := FALSE;
t1_set : SET OF approval := [];
t2_set : SET OF approval_person_organization := [];
END_LOCAL;
t1_set := QUERY ( i <* approval | VALUE_IN(which_class(i), 'approval event') );
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violate;
t2_set := bag_to_set(USEDIN(t1_set[i],
'SHIP_MOULDED_FORM_SCHEMA.APPROVAL_PERSON_ORGANIZATION.' + 'AUTHORIZED_APPROVAL'));
violate := NOT (SIZEOF(t2_set) = 1);
END_REPEAT;
WHERE
wr1: (NOT violate);
END_RULE; -- approval_event_with_approval_person_organization
RULE approval_history_approves_same_definition FOR (
applied_group_assignment, applied_approval_assignment);
LOCAL
violate : LOGICAL := FALSE;
t3_set : SET OF approval := [];
t4_set : SET OF group_item := [];
t5_set : SET OF applied_approval_assignment := [];
t2_set : SET OF applied_group_assignment := [];
END_LOCAL;
t2_set := QUERY ( a <* applied_group_assignment | VALUE_IN(
which_class(a.assigned_group),'approval history') );
t3_set := QUERY ( b <* t2_set[1].items | (
'SHIP_MOULDED_FORM_SCHEMA.APPROVAL' IN TYPEOF(b)) );
t4_set := QUERY ( b <* t2_set[1].items | VALUE_IN(which_class(b), 'DEFINITION') );
violate := NOT (SIZEOF(t4_set) = 1);
REPEAT i := 1 TO HIINDEX(t3_set) BY 1 WHILE NOT violate;
t5_set := QUERY ( a <* applied_approval_assignment | ((a.
assigned_approval = t3_set[i]) AND (NOT
VALUE_IN(a.items,t4_set[1]))) );
violate := SIZEOF(t5_set) > 0;
END_REPEAT;
WHERE
wr1: (NOT violate);
wr2: (SIZEOF(t4_set) = 1);
END_RULE; -- approval_history_approves_same_definition
RULE approval_history_has_at_least_one_member FOR (group, applied_group_assignment);
LOCAL
violate : LOGICAL := FALSE;
t1_set : SET OF group := [];
t2_set : SET OF applied_group_assignment := [];
END_LOCAL;
t1_set := QUERY ( i <* group | VALUE_IN(which_class(i), 'approval history') );
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violate;
t2_set := QUERY ( a <* applied_group_assignment | (a.assigned_group = t1_set[i]) );
violate := NOT (SIZEOF(t2_set) = 1);
END_REPEAT;
WHERE
wr1: (NOT violate);
END_RULE; -- approval_history_has_at_least_one_member
RULE approvals_references_approval_history FOR (applied_group_assignment, group);
LOCAL
violate : LOGICAL := FALSE;
t1_set : SET OF group := [];
a_set : SET OF applied_group_assignment := [];
END_LOCAL;
t1_set := QUERY ( a <* group | VALUE_IN(which_class(a), 'approval history') );
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violate;
a_set := QUERY ( b <* applied_group_assignment | (NOT ((b.
assigned_group = t1_set[i]) AND (b.role.name = 'approvals'))) );
violate := SIZEOF(a_set) > 0;
END_REPEAT;
WHERE
wr1: (NOT violate);
END_RULE; -- approvals_references_approval_history
RULE author_for_change_plan FOR (applied_person_and_organization_assignment,
action_request_solution);
LOCAL
violate : LOGICAL := FALSE;
t1_set : SET OF action_request_solution := [];
a_set : SET OF applied_person_and_organization_assignment := [];
END_LOCAL;
t1_set := QUERY ( a <* action_request_solution |
VALUE_IN(which_class(a),'change plan') );
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violate;
a_set := QUERY ( b <*applied_person_and_organization_assignment | (
VALUE_IN(b.items,t1_set[i]) AND (b.role.name = 'author')));
violate := SIZEOF(a_set) <> 1;
END_REPEAT;
WHERE
wr1: (NOT violate);
END_RULE; -- author_for_change_plan
RULE author_for_change_realisation FOR (applied_person_and_organization_assignment,
executed_action);
LOCAL
violate : LOGICAL := FALSE;
t1_set : SET OF executed_action := [];
a_set : SET OF applied_person_and_organization_assignment := [];
END_LOCAL;
t1_set := QUERY ( a <* executed_action | VALUE_IN(which_class(a),
'change realization') );
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violate;
a_set := QUERY ( b <* applied_person_and_organization_assignment | (
VALUE_IN(b.items,t1_set[i]) AND (b.role.name = 'author')));
violate := SIZEOF(a_set) <> 1;
END_REPEAT;
WHERE
wr1: (NOT violate);
END_RULE; -- author_for_change_realisation
RULE author_for_change_request FOR (applied_person_and_organization_assignment,
versioned_action_request);
LOCAL
violate : LOGICAL := FALSE;
t1_set : SET OF versioned_action_request := [];
a_set : SET OF applied_person_and_organization_assignment := [];
END_LOCAL;
t1_set := QUERY ( a <* versioned_action_request | VALUE_IN(which_class(a),'change request') );
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violate;
a_set := QUERY ( b <*applied_person_and_organization_assignment | (
VALUE_IN(b.items,t1_set[i]) AND (b.role.name = 'author')));
violate := SIZEOF(a_set) <> 1;
END_REPEAT;
WHERE
wr1: (NOT violate);
END_RULE; -- author_for_change_request
RULE caused_by_for_check FOR (applied_person_and_organization_assignment, action);
LOCAL
violate : LOGICAL := FALSE;
t1_set : SET OF action := [];
a_set : SET OF applied_person_and_organization_assignment := [];
END_LOCAL;
t1_set := QUERY ( a <* action | VALUE_IN(which_class(a),'check') );
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violate;
a_set := QUERY ( b <*applied_person_and_organization_assignment | (
VALUE_IN(b.items,t1_set[i]) AND (b.role.name = 'caused by')));
violate := SIZEOF(a_set) <> 1;
END_REPEAT;
WHERE
wr1: (NOT violate);
END_RULE; -- caused_by_for_check
RULE caused_by_for_envisaged_version_creation FOR (
applied_person_and_organization_assignment, action);
LOCAL
violate : LOGICAL := FALSE;
t1_set : SET OF action := [];
a_set : SET OF applied_person_and_organization_assignment := [];
END_LOCAL;
t1_set := QUERY ( a <* action | VALUE_IN(which_class(a),
'envisaged version creation') );
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violate;
a_set := QUERY ( b <*applied_person_and_organization_assignment | (
VALUE_IN(b.items,t1_set[i]) AND (b.role.name = 'caused by')));
violate := SIZEOF(a_set) <> 1;
END_REPEAT;
WHERE
wr1: (NOT violate);
END_RULE; -- caused_by_for_envisaged_version_creation
RULE caused_by_for_version_creation FOR (applied_person_and_organization_assignment, action);
LOCAL
violate : LOGICAL := FALSE;
t1_set : SET OF action := [];
a_set : SET OF applied_person_and_organization_assignment := [];
END_LOCAL;
t1_set := QUERY ( a <* action | VALUE_IN(which_class(a), 'version creation') );
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violate;
a_set := QUERY ( b <*applied_person_and_organization_assignment | (
VALUE_IN(b.items,t1_set[i]) AND (b.role.name = 'caused by')));
violate := SIZEOF(a_set) <> 1;
END_REPEAT;
WHERE
wr1: (NOT violate);
END_RULE; -- caused_by_for_version_creation
RULE caused_by_for_version_deletion FOR (applied_person_and_organization_assignment,
action);
LOCAL
violate : LOGICAL := FALSE;
t1_set : SET OF action := [];
a_set : SET OF applied_person_and_organization_assignment := [];
END_LOCAL;
t1_set := QUERY ( a <* action | VALUE_IN(which_class(a), 'version deletion') );
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violate;
a_set := QUERY ( b <*applied_person_and_organization_assignment | (
VALUE_IN(b.items,t1_set[i]) AND (b.role.name = 'caused by')) );
violate := SIZEOF(a_set) <> 1;
END_REPEAT;
WHERE
wr1: (NOT violate);
END_RULE; -- caused_by_for_version_deletion
RULE caused_by_for_version_modification FOR (
applied_person_and_organization_assignment, action);
LOCAL
violate : LOGICAL := FALSE;
t1_set : SET OF action := [];
a_set : SET OF applied_person_and_organization_assignment := [];
END_LOCAL;
t1_set := QUERY ( a <* action | VALUE_IN(which_class(a), 'version modification') );
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violate;
a_set := QUERY ( b <*applied_person_and_organization_assignment | (
VALUE_IN(b.items,t1_set[i]) AND (b.role.name = 'caused by')));
violate := SIZEOF(a_set) <> 1;
END_REPEAT;
WHERE
wr1: (NOT violate);
END_RULE; -- caused_by_for_version_modification
RULE caused_when_for_check FOR (applied_date_and_time_assignment, action);
LOCAL
violate : LOGICAL := FALSE;
t1_set : SET OF action := [];
a_set : SET OF applied_date_and_time_assignment := [];
END_LOCAL;
t1_set := QUERY ( a <* action | VALUE_IN(which_class(a),'check'));
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violate;
a_set := QUERY ( b <* applied_date_and_time_assignment |
(VALUE_IN(b.items,t1_set[i]) AND (b.role.name = 'caused when')) );
violate := SIZEOF(a_set) <> 1;
END_REPEAT;
WHERE
wr1: (NOT violate);
END_RULE; -- caused_when_for_check
RULE caused_when_for_envisaged_version_creation FOR (
applied_date_and_time_assignment, action);
LOCAL
violate : LOGICAL := FALSE;
t1_set : SET OF action := [];
a_set : SET OF applied_date_and_time_assignment := [];
END_LOCAL;
t1_set := QUERY ( a <* action | VALUE_IN(which_class(a),
'envisaged version creation') );
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violate;
a_set := QUERY ( b <* applied_date_and_time_assignment |
(VALUE_IN(b.items,t1_set[i]) AND (b.role.name = 'caused when')) );
violate := SIZEOF(a_set) <> 1;
END_REPEAT;
WHERE
wr1: (NOT violate);
END_RULE; -- caused_when_for_envisaged_version_creation
RULE caused_when_for_version_creation FOR (
applied_date_and_time_assignment, action);
LOCAL
violate : LOGICAL := FALSE;
t1_set : SET OF action := [];
a_set : SET OF applied_date_and_time_assignment := [];
END_LOCAL;
t1_set := QUERY ( a <* action | VALUE_IN(which_class(a),
'version creation') );
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violate;
a_set := QUERY ( b <* applied_date_and_time_assignment |
(VALUE_IN(b.items,t1_set[i]) AND (b.role.name = 'caused when')) );
violate := SIZEOF(a_set) <> 1;
END_REPEAT;
WHERE
wr1: (NOT violate);
END_RULE; -- caused_when_for_version_creation
RULE caused_when_for_version_deletion FOR (
applied_date_and_time_assignment, action);
LOCAL
violate : LOGICAL := FALSE;
t1_set : SET OF action := [];
a_set : SET OF applied_date_and_time_assignment := [];
END_LOCAL;
t1_set := QUERY ( a <* action | VALUE_IN(which_class(a),
'version deletion') );
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violate;
a_set := QUERY ( b <* applied_date_and_time_assignment |
(VALUE_IN(b.items,t1_set[i]) AND (b.role.name = 'caused when')) );
violate := SIZEOF(a_set) <> 1;
END_REPEAT;
WHERE
wr1: (NOT violate);
END_RULE; -- caused_when_for_version_deletion
RULE caused_when_for_version_modification FOR (
applied_date_and_time_assignment, action);
LOCAL
violate : LOGICAL := FALSE;
t1_set : SET OF action := [];
a_set : SET OF applied_date_and_time_assignment := [];
END_LOCAL;
t1_set := QUERY ( a <* action | VALUE_IN(which_class(a),
'version modification') );
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violate;
a_set := QUERY ( b <* applied_date_and_time_assignment |
(VALUE_IN(b.items,t1_set[i]) AND (b.role.name = 'caused when')) );
violate := SIZEOF(a_set) <> 1;
END_REPEAT;
WHERE
wr1: (NOT violate);
END_RULE; -- caused_when_for_version_modification
RULE centre_location_compound_representation_has_specified_name FOR (
applied_classification_assignment);
LOCAL
violation : LOGICAL := FALSE;
t1_set : SET OF compound_representation_item := [];
c_a_set : SET OF applied_classification_assignment := [];
arg_list : LIST OF STRING := ['longitudinal location',
'transversal location','vertical location'];
t2_set : SET OF representation_item := [];
END_LOCAL;
c_a_set := QUERY ( i <* applied_classification_assignment | (i.
assigned_class.name = 'centre location') );
REPEAT i := 1 TO HIINDEX(c_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
REPEAT j := 1 TO HIINDEX(arg_list) BY 1 WHILE NOT violation;
t2_set := t1_set[i].item_element;
violation := SIZEOF(QUERY ( items <* t2_set | (items.name = arg_list[j]) )) <> 1;
END_REPEAT;
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; --centre_location_compound_representation_has_specified_name
RULE change_impact_with_versionable_object_change_event FOR (
applied_action_request_assignment);
LOCAL
violate : LOGICAL := FALSE;
t1_set : SET OF applied_action_request_assignment := [];
a_set : SET OF action := [];
END_LOCAL;
t1_set := QUERY ( b <* applied_action_request_assignment |
(b.role.name = 'change impact') );
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violate;
a_set := QUERY ( b <* t1_set[i].items | ((
'SHIP_MOULDED_FORM_SCHEMA.ACTION' IN TYPEOF(b)) AND
VALUE_IN(which_class(b),'versionable object change event')) );
violate := SIZEOF(a_set) = 0;
END_REPEAT;
WHERE
wr1: (NOT violate);
END_RULE; -- change_impact_with_versionable_object_change_event
RULE change_plan_has_mandatory_attribute_description FOR (action_request_solution);
LOCAL
violate : LOGICAL := FALSE;
t1_set : SET OF action_request_solution := [];
END_LOCAL;
t1_set := QUERY ( i <* action_request_solution | VALUE_IN(which_class(i),'change plan') );
violate := SIZEOF(QUERY ( k <* t1_set | (NOT EXISTS(k.description)) )) > 0;
WHERE
wr1: (NOT violate);
END_RULE; -- change_plan_has_mandatory_attribute_description
RULE class_and_statutory_designation_has_properties FOR (
property_definition_representation, applied_classification_assignment);
LOCAL
violation : LOGICAL := FALSE;
t4_list : LIST OF product_definition := [];
c_a_set : SET OF applied_classification_assignment := [];
t3_list : LIST OF property_definition := [];
t1_list : LIST OF product_definition := [];
t2_set : SET OF property_definition_representation := [];
END_LOCAL;
c_a_set := QUERY ( i <* applied_classification_assignment | (i.
assigned_class.name = 'class and statutory designation') );
REPEAT i := 1 TO HIINDEX(c_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
t1_list := t1_list + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
t2_set := QUERY ( i <* property_definition_representation |
(i.name = 'class and statutory designation') );
REPEAT i := 1 TO HIINDEX(t2_set) BY 1;
t3_list := t3_list + t2_set[i].definition;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t3_list) BY 1;
t4_list := t4_list + t3_list[i].definition;
END_REPEAT;
violation := t1_list <> t4_list;
WHERE
wr1: (NOT violation);
END_RULE; -- class_and_statutory_designation_has_properties
RULE class_notation_with_named_representation_items FOR (representation);
LOCAL
violation : LOGICAL := FALSE;
arg_list : LIST OF STRING := ['class notations hull', 'class notations machinery'];
reps : BAG OF representation := [];
END_LOCAL;
reps := QUERY ( temp_rep <* representation | (SIZEOF(
QUERY ( temp_prop_def_rep <* bag_to_set(USEDIN(temp_rep,
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.' +
'USED_REPRESENTATION')) | (temp_prop_def_rep.name =
'class notation') )) > 0) );
REPEAT i := 1 TO HIINDEX(reps) BY 1 WHILE NOT violation;
REPEAT j := 1 TO HIINDEX(arg_list) BY 1 WHILE NOT violation;
violation := SIZEOF(QUERY ( rep_item <* reps[i].items |
(rep_item.name = arg_list[j]) )) < 1;
END_REPEAT;
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; -- class_notation_with_named_representation_items
RULE class_parameters_has_properties FOR (property_definition_representation,
applied_classification_assignment);
LOCAL
t3_set : LIST OF property_definition := [];
violation : LOGICAL := FALSE;
t4_set : LIST OF product_definition := [];
t1_set : LIST OF product_definition := [];
c_a_set : SET OF applied_classification_assignment := [];
t2_set : SET OF property_definition_representation := [];
END_LOCAL;
c_a_set := QUERY ( i <* applied_classification_assignment | (i.
assigned_class.name = 'class parameters') );
REPEAT i := 1 TO HIINDEX(c_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
t2_set := QUERY ( i <* property_definition_representation |
(i.name = 'class parameters') );
REPEAT i := 1 TO HIINDEX(t2_set) BY 1;
t3_set := t3_set + t2_set[i].definition;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t3_set) BY 1;
t4_set := t4_set + t3_set[i].definition;
END_REPEAT;
violation := t1_set <> t4_set;
WHERE
wr1: (NOT violation);
END_RULE; -- class_parameters_has_properties
RULE compatible_dimension FOR (cartesian_point, direction, representation_context,
geometric_representation_context);
WHERE
wr1: (SIZEOF(QUERY ( x <* cartesian_point | (SIZEOF(QUERY ( y <*
geometric_representation_context | (item_in_context(x,y) AND (
HIINDEX(x.coordinates) <> y.coordinate_space_dimension)) )) > 0) )) = 0);
wr2: (SIZEOF(QUERY ( x <* direction | (SIZEOF(QUERY ( y <*
geometric_representation_context | (item_in_context(x,y) AND (
HIINDEX(x.direction_ratios) <> y.coordinate_space_dimension)) )) > 0) )) = 0);
END_RULE; -- compatible_dimension
RULE compound_representation_item_with_class_id_knot FOR (applied_classification_assignment);
LOCAL
t3_set : SET OF representation_item := [];
violation : LOGICAL := FALSE;
t1_set : SET OF compound_representation_item := [];
c_a_set : SET OF applied_classification_assignment := [];
c_a_set2 : SET OF applied_classification_assignment := [];
l_rep_item : list_representation_item;
t2_set : SET OF compound_representation_item := [];
END_LOCAL;
c_a_set := QUERY ( i <* applied_classification_assignment |
(i.assigned_class.name = 'knot') );
REPEAT i := 1 TO HIINDEX(c_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
c_a_set2 := QUERY ( i <* applied_classification_assignment |
(i.assigned_class.name = 'ship curve') );
REPEAT i := 1 TO HIINDEX(c_a_set2) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set2[i].items) BY 1;
t2_set := t2_set + c_a_set2[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
l_rep_item := t1_set[i].item_element;
REPEAT j := 1 TO HIINDEX(t1_set[i].item_element) BY 1;
t3_set := t3_set + l_rep_item[j];
END_REPEAT;
violation := SIZEOF(t3_set * t2_set) < 2;
t3_set := [];
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; -- compound_representation_item_with_class_id_knot
RULE compound_representation_item_with_hydrostatic_properties FOR (
applied_classification_assignment);
LOCAL
violation : LOGICAL := FALSE;
t1_set : SET OF compound_representation_item := [];
c_a_set : SET OF applied_classification_assignment := [];
arg_list : LIST OF STRING := ['hydrostatic property value'];
t2_set : LIST OF representation_item := [];
END_LOCAL;
c_a_set := QUERY ( i <* applied_classification_assignment |
(i.assigned_class.name = 'hydrostatic properties for constant floating position') );
REPEAT i := 1 TO HIINDEX(c_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
REPEAT j := 1 TO HIINDEX(arg_list) BY 1 WHILE NOT violation;
t2_set := t1_set[i].item_element;
violation := SIZEOF(QUERY ( items <* t2_set | (items.name = arg_list[j]) )) < 1;
END_REPEAT;;
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; --compound_representation_item_with_hydrostatic_properties
RULE compound_representation_item_with_section_identifier FOR (
applied_classification_assignment);
LOCAL
violation : LOGICAL := FALSE;
t1_set : SET OF compound_representation_item := [];
c_a_set : SET OF applied_classification_assignment := [];
t2_set : SET OF applied_identification_assignment := [];
END_LOCAL;
c_a_set := QUERY ( i <* applied_classification_assignment |
(i.assigned_class.name = 'section of offset point table') );
REPEAT i := 1 TO HIINDEX(c_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
t2_set := bag_to_set(USEDIN(t1_set[i],'SHIP_MOULDED_FORM_SCHEMA.' +
'APPLIED_IDENTIFICATION_ASSIGNMENT' + '.ITEMS'));
violation := NOT (SIZEOF(QUERY ( t2_inst <* t2_set |
(t2_inst.role.name = 'section identifier') )) = 1);
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; -- compound_representation_item_with_section_identifier
RULE date_time_for_change_plan FOR (applied_date_and_time_assignment,
action_request_solution);
LOCAL
violate : LOGICAL := FALSE;
t1_set : SET OF action_request_solution := [];
a_set : SET OF applied_date_and_time_assignment := [];
END_LOCAL;
t1_set := QUERY ( a <* action_request_solution |
VALUE_IN(which_class(a),'change plan') );
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violate;
a_set := QUERY ( b <* applied_date_and_time_assignment |
(VALUE_IN(b.items,t1_set[i]) AND (b.role.name = 'date time')) );
violate := SIZEOF(a_set) <> 1;
END_REPEAT;
WHERE
wr1: (NOT violate);
END_RULE; -- date_time_for_change_plan
RULE date_time_for_change_realisation FOR (
applied_date_and_time_assignment, executed_action);
LOCAL
violate : LOGICAL := FALSE;
t1_set : SET OF executed_action := [];
a_set : SET OF applied_date_and_time_assignment := [];
END_LOCAL;
t1_set := QUERY ( a <* executed_action |
VALUE_IN(which_class(a), 'change realisation') );
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violate;
a_set := QUERY ( b <* applied_date_and_time_assignment |
(VALUE_IN(b.items,t1_set[i]) AND (b.role.name = 'date time')) );
violate := SIZEOF(a_set) <> 1;
END_REPEAT;
WHERE
wr1: (NOT violate);
END_RULE; -- date_time_for_change_realisation
RULE date_time_for_change_request FOR (applied_date_and_time_assignment,
versioned_action_request);
LOCAL
violate : LOGICAL := FALSE;
t1_set : SET OF versioned_action_request := [];
a_set : SET OF applied_date_and_time_assignment := [];
END_LOCAL;
t1_set := QUERY ( a <* versioned_action_request | VALUE_IN(
which_class(a),'change request') );
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violate;
a_set := QUERY ( b <* applied_date_and_time_assignment |
(VALUE_IN(b.items,t1_set[i]) AND (b.role.name = 'date time')) );
violate := SIZEOF(a_set) <> 1;
END_REPEAT;
WHERE
wr1: (NOT violate);
END_RULE; -- date_time_for_change_request
RULE document_has_at_least_one_references FOR (document);
LOCAL
violate : LOGICAL := FALSE;
t1_set : SET OF document := [];
t2_set : SET OF document_representation_type := [];
END_LOCAL;
t1_set := QUERY ( i <* document |
VALUE_IN(which_class(i),'document') );
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violate;
t2_set := bag_to_set(USEDIN(t1_set[i],
'SHIP_MOULDED_FORM_SCHEMA.DOCUMENT_REPRESENTATION_TYPE.' +
'REPRESENTED_DOCUMENT'));
violate := SIZEOF(t2_set) < 1;
END_REPEAT;
WHERE
wr1: (NOT violate);
END_RULE; -- document_has_at_least_one_references
RULE document_has_exactly_one_author FOR (document);
LOCAL
violate : LOGICAL := FALSE;
bag_3 : BAG OF applied_organization_assignment := [];
bag_2 : BAG OF applied_person_and_organization_assignment := [];
bag_1 : BAG OF applied_person_assignment := [];
END_LOCAL;
REPEAT i := 1 TO SIZEOF(document) BY 1 WHILE NOT violate;
bag_1 := USEDIN(document[i],'SHIP_MOULDED_FORM_SCHEMA.' +
'APPLIED_PERSON_ASSIGNMENT.ITEMS');
bag_1 := QUERY ( assign <* bag_1 | (assign.role.name = 'author') );
bag_2 := USEDIN(document[i],'SHIP_MOULDED_FORM_SCHEMA.' +
'APPLIED_PERSON_AND_ORGANIZATION_ASSIGNMENT.ITEMS');
bag_2 := QUERY ( assign <* bag_2 | (assign.role.name = 'author') );
bag_3 := USEDIN(document[i],'SHIP_MOULDED_FORM_SCHEMA.' +
'APPLIED_ORGANIZATION_ASSIGNMENT.ITEMS');
bag_3 := QUERY ( assign <* bag_3 | (assign.role.name = 'author') );
violate := NOT ((SIZEOF(bag_1) + SIZEOF(bag_2) +
SIZEOF(bag_3)) = 1);
END_REPEAT;
WHERE
wr1: (NOT violate);
END_RULE; -- document_has_exactly_one_author
RULE document_reference_with_address_has_at_least_one_references FOR (document);
LOCAL
violate : LOGICAL := FALSE;
t1_set : SET OF document := [];
t2_set : SET OF applied_external_identification_assignment := [];
END_LOCAL;
t1_set := QUERY ( i <* document | VALUE_IN(which_class(i),
'document reference with address') );
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violate;
t2_set := bag_to_set(USEDIN(t1_set[i],'SHIP_MOULDED_FORM_SCHEMA.APPLIED_EXTERN
AL_IDENTIFICATION_ASSIGNMENT.ITEMS'));
violate := SIZEOF(t2_set) < 1;
END_REPEAT;
WHERE
wr1: (NOT violate);
END_RULE; --document_reference_with_address_has_at_least_one_references
RULE envisaged_version_creation_has_mandatory_attribute_description FOR (action);
LOCAL
violate : LOGICAL := FALSE;
t1_set : SET OF action := [];
END_LOCAL;
t1_set := QUERY ( i <* action | VALUE_IN(which_class(i),
'envisaged version creation') );
violate := SIZEOF(QUERY ( k <* t1_set | (NOT EXISTS(k.description)) )) > 0;
WHERE
wr1: (NOT violate);
END_RULE; --envisaged_version_creation_has_mandatory_attribute_description
RULE executed_action_with_identification_assignment FOR (
applied_classification_assignment);
LOCAL
violation : LOGICAL := FALSE;
t1_set : SET OF executed_action := [];
c_a_set : SET OF applied_classification_assignment := [];
arg_list : LIST OF STRING := ['change realization'];
t2_set : SET OF applied_identification_assignment := [];
END_LOCAL;
REPEAT j := 1 TO HIINDEX(arg_list) BY 1 WHILE NOT violation;
c_a_set := QUERY ( i <* applied_classification_assignment |
(i.assigned_class.name = arg_list[j]) );
END_REPEAT;
REPEAT i := 1 TO HIINDEX(c_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
t2_set := bag_to_set(USEDIN(t1_set[i],'SHIP_MOULDED_FORM_SCHEMA.APPLIED_IDENTI
FICATION_ASSIGNMENT.ITEMS'));
t2_set := QUERY ( j <* t2_set | (j.role.name = 'globally unambiguous identifier') );
violation := NOT (SIZEOF(t2_set) = 1);
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; -- executed_action_with_identification_assignment
RULE external_instance_reference_has_same_identifier FOR (
applied_external_identification_assignment);
LOCAL
violation : LOGICAL := FALSE;
extref_set : SET OF applied_external_identification_assignment := [];
aia_set : SET OF applied_identification_assignment := [];
END_LOCAL;
extref_set := QUERY ( i <* applied_external_identification_assignment |
(i.role.name = 'external instance reference') );
REPEAT i := 1 TO HIINDEX(extref_set) BY 1 WHILE NOT violation;
aia_set := bag_to_set(USEDIN(extref_set[i].items[1],
'SHIP_MOULDED_FORM_SCHEMA.APPLIED_IDENTIFICATION_ASSIGNMENT.ITEMS'));
violation := NOT (aia_set[1].assigned_id = extref_set[i].assigned_id);
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE; -- external_instance_reference_has_same_identifier
RULE floating_position_compound_representation_with_name FOR (
applied_classification_assignment);
LOCAL
violation : LOGICAL := FALSE;
t1_set : SET OF compound_representation_item := [];
c_a_set : SET OF applied_classification_assignment := [];
arg_list : LIST OF STRING := ['moulded form displacement',
'draught at amidships','length of waterline',
'breadth of waterline','angle of trim','angle of heel'];
t2_set : SET OF representation_item := [];
END_LOCAL;
c_a_set := QUERY ( i <* applied_classification_assignment |
(i.assigned_class.name = 'floating position') );
REPEAT i := 1 TO HIINDEX(c_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
REPEAT j := 1 TO HIINDEX(arg_list) BY 1 WHILE NOT violation;
t2_set := t1_set[i].item_element;
violation := SIZEOF(QUERY ( items <* t2_set | (items.name = arg_list[j]) )) <> 1;
END_REPEAT;
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; -- floating_position_compound_representation_with_name
RULE global_axis_placement_has_properties FOR (
property_definition_representation, group, applied_classification_assignment);
LOCAL
t3_set : LIST OF property_definition := [];
violation : LOGICAL := FALSE;
t4_set : LIST OF product_definition := [];
t1_set : LIST OF product_definition := [];
c_a_set : SET OF applied_classification_assignment := [];
t2_set : SET OF property_definition_representation := [];
END_LOCAL;
c_a_set := QUERY ( i <* applied_classification_assignment |(i.
assigned_class.name = 'global axis placement') );
REPEAT i := 1 TO HIINDEX(c_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
t2_set := QUERY ( i <* property_definition_representation |
(i.name = 'global axis placement') );
REPEAT i := 1 TO HIINDEX(t2_set) BY 1;
t3_set := t3_set + t2_set[i].definition;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t3_set) BY 1;
t4_set := t4_set + t3_set[i].definition;
END_REPEAT;
violation := t1_set <> t4_set;
WHERE
wr1: (NOT violation);
END_RULE; -- global_axis_placement_has_properties
RULE global_id_is_unique FOR (applied_identification_assignment);
LOCAL
violation : LOGICAL := FALSE;
set_1 : SET OF applied_identification_assignment := [];
bag_2 : BAG OF STRING := [];
END_LOCAL;
set_1 := QUERY ( i <* applied_identification_assignment |
(i.role.name = 'globally unambiguous identifier') );
REPEAT i := 1 TO HIINDEX(set_1) BY 1;
bag_2 := bag_2 + [set_1[i].assigned_id];
END_REPEAT;
violation := SIZEOF(QUERY ( i <* set_1 | (SIZEOF(i.items) = 1))) <> SIZEOF(set_1);
WHERE
wr1: VALUE_UNIQUE(bag_2);
wr2: (NOT violation);
END_RULE; -- global_id_is_unique
RULE hull_moulded_form_design_parameter_with_class_references FOR (
applied_classification_assignment);
LOCAL
t3_set : SET OF representation := [];
violation : LOGICAL := FALSE;
t1_set : SET OF property_definition := [];
c_a_set : SET OF applied_classification_assignment := [];
t2_set : SET OF property_definition_representation := [];
END_LOCAL;
c_a_set := QUERY ( i <* applied_classification_assignment |
(i.assigned_class.name = 'hull moulded form design parameter'));
REPEAT i := 1 TO HIINDEX(c_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
t2_set := bag_to_set(USEDIN(t1_set[i],
'SHIP_MOULDED_FORM_SCHEMA. PROPERTY_DEFINITION_REPRESENTATION.' +
'DEFINITION'));
REPEAT j := 1 TO HIINDEX(t2_set) BY 1;
t3_set := t3_set + t2_set[j].used_representation;
END_REPEAT;
violation := SIZEOF(QUERY ( t2_inst <* t3_set | ('midship tumble' IN
which_class(t2_inst)) )) > 1;
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; -- hull_moulded_form_design_parameter_with_class_references
RULE hydrostatic_properties_with_specified_class FOR (
applied_classification_assignment);
LOCAL
t3_set : SET OF representation_item := [];
violation : LOGICAL := FALSE;
t1_set : SET OF compound_representation_item := [];
c_a_set : SET OF applied_classification_assignment := [];
c_a_set2 : SET OF applied_classification_assignment := [];
l_rep_item : list_representation_item;
t2_set : SET OF compound_representation_item := [];
END_LOCAL;
c_a_set := QUERY ( i <* applied_classification_assignment |
(i.assigned_class.name = 'hydrostatic properties for constant floating position') );
REPEAT i := 1 TO HIINDEX(c_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
c_a_set2 := QUERY ( i <* applied_classification_assignment |
(i.assigned_class.name = 'floating position') );
REPEAT i := 1 TO HIINDEX(c_a_set2) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set2[i].items) BY 1;
t2_set := t2_set + c_a_set2[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
l_rep_item := t1_set[i].item_element;
REPEAT j := 1 TO HIINDEX(t1_set[i].item_element) BY 1;
t3_set := t3_set + l_rep_item[j];
END_REPEAT;
violation := SIZEOF(t3_set * t2_set) <> 1;
t3_set := [];
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; -- hydrostatic_properties_with_specified_class
RULE hydrostatic_property_with_specified_name FOR (
applied_classification_assignment);
LOCAL
violation : LOGICAL := FALSE;
t1_set : SET OF compound_representation_item := [];
c_a_set : SET OF applied_classification_assignment := [];
arg_list : LIST OF STRING := ['property type'];
t2_set : SET OF representation_item := [];
END_LOCAL;
c_a_set := QUERY ( i <* applied_classification_assignment | (i.
assigned_class.name = 'hydrostatic property') );
REPEAT i := 1 TO HIINDEX(c_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
REPEAT j := 1 TO HIINDEX(arg_list) BY 1 WHILE NOT violation;
t2_set := t1_set[i].item_element;
violation := SIZEOF(QUERY ( items <* t2_set | (items.name = arg_list[j]) )) <> 1;
END_REPEAT;
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; -- hydrostatic_property_with_specified_name
RULE identification_role_optional_attribute_description_required FOR (
identification_role);
WHERE
wr1: (SIZEOF (QUERY ( i <* identification_role |
((i.name = 'external reference') AND (NOT EXISTS(i.description))))) = 0);
END_RULE; --identification_role_optional_attribute_description_required
RULE initiator_for_change_request FOR (
applied_person_and_organization_assignment, versioned_action_request);
LOCAL
violate : LOGICAL := FALSE;
t1_set : SET OF versioned_action_request := [];
a_set : SET OF applied_person_and_organization_assignment := [];
END_LOCAL;
t1_set := QUERY ( a <* versioned_action_request | VALUE_IN(
which_class(a),'change request') );
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violate;
a_set := QUERY ( b <*applied_person_and_organization_assignment | (
VALUE_IN(b.items,t1_set[i]) AND (b.role.name = 'initiator')) );
violate := SIZEOF(a_set) <> 1;
END_REPEAT;
WHERE
wr1: (NOT violate);
END_RULE; -- initiator_for_change_request
RULE mandatory_entity_type_for_external_instance_reference FOR (
external_source, external_source_relationship);
LOCAL
violate : LOGICAL := FALSE;
bag_1: BAG OF external_source:= [];
END_LOCAL;
bag_1 := QUERY ( a <* external_source | (a.description = 'schema name') );
REPEAT i := 1 TO SIZEOF(bag_1) BY 1 WHILE NOT violate;
violate := SIZEOF(QUERY ( a <* external_source_relationship |
((a.relating_source :=: bag_1[i]) AND
(a.related_source.description = 'entity type')) )) = 0;
END_REPEAT;
WHERE
wr1: (NOT violate);
END_RULE; -- mandatory_entity_type_for_external_instance_reference
RULE members_is_referenced_by_at_least_one_revision FOR (
applied_group_assignment, group);
LOCAL
violate : LOGICAL := FALSE;
t1_set : SET OF group := [];
a_set : SET OF applied_group_assignment := [];
END_LOCAL;
t1_set := QUERY ( a <* group |
VALUE_IN(which_class(a),'revision') );
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violate;
a_set := QUERY ( b <* applied_group_assignment |
((b.assigned_group :=: t1_set[i]) AND (b.role.name = 'members')) );
violate := SIZEOF(a_set) < 1;
END_REPEAT;
WHERE
wr1: (NOT violate);
END_RULE; -- members_is_referenced_by_at_least_one_revision
RULE no_approvals_except_in_approval_history FOR (approval);
LOCAL
violate : LOGICAL := FALSE;
t1_set : SET OF approval := [];
t2_set : SET OF applied_group_assignment := [];
END_LOCAL;
t1_set := QUERY ( a <* approval | VALUE_IN(which_class(a), 'approval event') );
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violate;
t2_set := bag_to_set(USEDIN(t1_set[i],
'SHIP_MOULDED_FORM_SCHEMA.APPLIED_GROUP_ASSIGNMENT.ITEMS'));
violate := SIZEOF(t2_set) = 0;
REPEAT k := 1 TO HIINDEX(t2_set) BY 1 WHILE NOT violate;
violate := NOT
VALUE_IN(which_class(t2_set[k].assigned_group), 'approval history');
END_REPEAT;
END_REPEAT;
WHERE
wr1: (NOT violate);
END_RULE; -- no_approvals_except_in_approval_history
RULE offset_point_table_model_compound_representation_has_name FOR (
applied_classification_assignment);
LOCAL
violation : LOGICAL := FALSE;
t1_set : SET OF compound_representation_item := [];
c_a_set : SET OF applied_classification_assignment := [];
arg_list : LIST OF STRING := ['offset point table type'];
t2_set : SET OF representation_item := [];
END_LOCAL;
c_a_set := QUERY ( i <* applied_classification_assignment | (i.
assigned_class.name = 'offset point table model') );
REPEAT i := 1 TO HIINDEX(c_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
REPEAT j := 1 TO HIINDEX(arg_list) BY 1 WHILE NOT violation;
t2_set := t1_set[i].item_element;
violation := SIZEOF(QUERY ( items <* t2_set |
(items.name = arg_list[j]) )) <> 1;
END_REPEAT;
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; --offset_point_table_model_compound_representation_has_name
RULE principal_characteristics_has_properties FOR (
property_definition_representation, applied_classification_assignment);
LOCAL
t3_set : LIST OF property_definition := [];
violation : LOGICAL := FALSE;
t4_set : LIST OF product_definition := [];
t1_set : LIST OF product_definition := [];
c_a_set : SET OF applied_classification_assignment := [];
t2_set : SET OF property_definition_representation := [];
END_LOCAL;
c_a_set := QUERY ( i <* applied_classification_assignment | (i.
assigned_class.name = 'principal characteristics') );
REPEAT i := 1 TO HIINDEX(c_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
t2_set := QUERY ( i <* property_definition_representation |
(i.name = 'principal characteristics') );
REPEAT i := 1 TO HIINDEX(t2_set) BY 1;
t3_set := t3_set + t2_set[i].definition;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t3_set) BY 1;
t4_set := t4_set + t3_set[i].definition;
END_REPEAT;
violation := t1_set <> t4_set;
WHERE
wr1: (NOT violation);
END_RULE; -- principal_characteristics_has_properties
RULE product_definition_for_call_sign FOR (
applied_classification_assignment);
LOCAL
violation : LOGICAL := FALSE;
t1_set : SET OF product_definition := [];
c_a_set : SET OF applied_classification_assignment := [];
t2_set : SET OF applied_identification_assignment := [];
END_LOCAL;
c_a_set := QUERY ( i <* applied_classification_assignment |
(i.assigned_class.name = 'ship designation') );
REPEAT i := 1 TO HIINDEX(c_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
t2_set := bag_to_set(USEDIN(t1_set[i],
'SHIP_MOULDED_FORM_SCHEMA.APPLIED_IDENTIFICATION_ASSIGNMENT.ITEMS'));
violation := NOT (SIZEOF(QUERY ( t2_inst <* t2_set |
(t2_inst.role.name = 'call sign') )) = 1);
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; -- product_definition_for_call_sign
RULE product_definition_for_class_notation FOR (
applied_classification_assignment);
LOCAL
violation : LOGICAL := FALSE;
t1_set : SET OF product_definition := [];
c_a_set : SET OF applied_classification_assignment := [];
t2_set : SET OF property_definition := [];
END_LOCAL;
c_a_set := QUERY ( i <* applied_classification_assignment | (i.
assigned_class.name = 'class and statutory designation') );
REPEAT i := 1 TO HIINDEX(c_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
t2_set := bag_to_set(USEDIN(t1_set[i],
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION.DEFINITION'));
violation := NOT (SIZEOF(QUERY ( t2_inst <* t2_set | (
'class notation' IN which_class(t2_inst)) )) = 1);
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; -- product_definition_for_class_notation
RULE product_definition_for_flag_state FOR (
applied_classification_assignment);
LOCAL
violation : LOGICAL: = FALSE;
t1_set : SET OF product_definition := [];
c_a_set : SET OF applied_classification_assignment := [];
t2_set : SET OF applied_identification_assignment := [];
END_LOCAL;
c_a_set := QUERY ( i <* applied_classification_assignment | (i.
assigned_class.name = 'ship designation') );
REPEAT i := 1 TO HIINDEX(c_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
t1_set := t1_set + c_a_set(i).items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
t2_set := bag_to_set(USEDIN(t1_set[i],
'SHIP_MOULDED_FORM_SCHEMA.APPLIED_IDENTIFICATION_ASSIGNMENT.ITEMS'));
violation := NOT (SIZEOF(QUERY ( t2_inst <* t2_set |
(t2_inst.role.name = 'flag state') )) = 1);
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; -- product_definition_for_flag_state
RULE product_definition_for_hydrostatic_definition_requires_reference FOR (
applied_classification_assignment);
LOCAL
t3_set : SET OF property_definition_representation := [];
violation : LOGICAL := FALSE;
t4_set : SET OF property_definition := [];
t1_set : SET OF property_definition := [];
c_a_set : SET OF applied_classification_assignment := [];
c2_a_set : SET OF applied_classification_assignment := [];
t2_set : SET OF representation := [];
END_LOCAL;
c_a_set := QUERY ( i <* applied_classification_assignment | (i.
assigned_class.name = 'hydrostatic definition') );
REPEAT i := 1 TO HIINDEX(c_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
c2_a_set := QUERY ( i <* applied_classification_assignment | (i.
assigned_class.name = 'hydrostatic table') );
REPEAT i := 1 TO HIINDEX(c2_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c2_a_set[i].items) BY 1;
t2_set := t2_set + c2_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t2_set) BY 1;
t3_set := t3_set +
bag_to_set(USEDIN(t2_set[i],
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION'));
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t3_set) BY 1;
t4_set := t4_set + t3_set[i].definition;
END_REPEAT;
violation := t1_set <> t4_set;
WHERE
wr1: (NOT violation);
END_RULE; --product_definition_for_hydrostatic_definition_requires_reference
RULE product_definition_for_managing_company FOR (
applied_classification_assignment);
LOCAL
violation : LOGICAL := FALSE;
t1_set : SET OF product_definition := [];
c_a_set : SET OF applied_classification_assignment := [];
t2_set : SET OF applied_organization_assignment := [];
END_LOCAL;
c_a_set := QUERY ( i <* applied_classification_assignment | (i.
assigned_class.name = 'owner designation') );
REPEAT i := 1 TO HIINDEX(c_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
t2_set := bag_to_set(USEDIN(t1_set[i],'SHIP_MOULDED_FORM_SCHEMA.' +
'APPLIED_ORGANIZATION_ASSIGNMENT.ITEMS'));
violation := NOT (SIZEOF(QUERY ( t2_inst <* t2_set |
(t2_inst.role.name = 'managing company') )) = 1);
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; -- product_definition_for_managing_company
RULE product_definition_for_ordering_company FOR (
applied_classification_assignment);
LOCAL
violation : LOGICAL := FALSE;
t1_set : SET OF product_definition := [];
c_a_set : SET OF applied_classification_assignment := [];
t2_set : SET OF applied_organization_assignment := [];
END_LOCAL;
c_a_set := QUERY ( i <* applied_classification_assignment | (i.
assigned_class.name = 'owner designation') );
REPEAT i := 1 TO HIINDEX(c_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
t2_set := bag_to_set(USEDIN(t1_set[i],'SHIP_MOULDED_FORM_SCHEMA.' +
'APPLIED_ORGANIZATION_ASSIGNMENT.ITEMS'));
violation := NOT (SIZEOF(QUERY ( t2_inst <* t2_set |
(t2_inst.role.name = 'ordering company') )) = 1);
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; -- product_definition_for_ordering_company
RULE product_definition_for_owning_company FOR (
applied_classification_assignment);
LOCAL
violation : LOGICAL := FALSE;
t1_set : SET OF product_definition := [];
c_a_set : SET OF applied_classification_assignment := [];
t2_set : SET OF applied_organization_assignment := [];
END_LOCAL;
c_a_set := QUERY ( i <* applied_classification_assignment | (i.
assigned_class.name = 'owner designation') );
REPEAT i := 1 TO HIINDEX(c_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
t2_set := bag_to_set(USEDIN(t1_set[i],
'SHIP_MOULDED_FORM_SCHEMA.APPLIED_ORGANIZATION_ASSIGNMENT.ITEMS'));
violation := NOT (SIZEOF(QUERY ( t2_inst <* t2_set |
(t2_inst.role.name = 'owning company') )) = 1);
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; -- product_definition_for_owning_company
RULE product_definition_for_port_of_registration FOR (
applied_classification_assignment);
LOCAL
violation : LOGICAL := FALSE;
t1_set : SET OF product_definition := [];
c_a_set : SET OF applied_classification_assignment := [];
t2_set : SET OF applied_identification_assignment := [];
END_LOCAL;
c_a_set := QUERY ( i <* applied_classification_assignment |
(i.assigned_class.name = 'ship designation') );
REPEAT i := 1 TO HIINDEX(c_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
t2_set := bag_to_set(USEDIN(t1_set[i],
'SHIP_MOULDED_FORM_SCHEMA.APPLIED_IDENTIFICATION_ASSIGNMENT.ITEMS'));
violation := NOT (SIZEOF(QUERY ( t2_inst <* t2_set |
(t2_inst.role.name = 'port of registration') )) = 1);
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; -- product_definition_for_port_of_registration
RULE product_definition_for_regulation FOR (
applied_classification_assignment);
LOCAL
violation : LOGICAL := FALSE;
t1_set : SET OF product_definition := [];
c_a_set : SET OF applied_classification_assignment := [];
t2_set : SET OF property_definition := [];
END_LOCAL;
c_a_set := QUERY ( i <* applied_classification_assignment | (i.
assigned_class.name = 'class and statutory designation') );
REPEAT i := 1 TO HIINDEX(c_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
t2_set := bag_to_set(USEDIN(t1_set[i],
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION.DEFINITION'));
violation := NOT (SIZEOF(QUERY ( t2_inst <* t2_set |
('regulation' IN which_class(t2_inst)) )) = 1);
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; -- product_definition_for_regulation
RULE product_definition_for_shipyard FOR (
applied_classification_assignment);
LOCAL
violation : LOGICAL := FALSE;
t1_set : SET OF product_definition := [];
c_a_set : SET OF applied_classification_assignment := [];
t2_set : SET OF applied_organization_assignment := [];
END_LOCAL;
c_a_set := QUERY ( i <* applied_classification_assignment | (i.
assigned_class.name = 'shipyard designation') );
REPEAT i := 1 TO HIINDEX(c_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
t2_set := bag_to_set(USEDIN(t1_set[i],
'SHIP_MOULDED_FORM_SCHEMA.APPLIED_ORGANIZATION_ASSIGNMENT.ITEMS'));
violation := NOT (SIZEOF(QUERY ( t2_inst <* t2_set |
(t2_inst.role.name = 'shipyard') )) = 1);
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; -- product_definition_for_shipyard
RULE product_definition_for_stability_definition FOR (
applied_classification_assignment);
LOCAL
t3_set : SET OF property_definition_representation := [];
violation : LOGICAL := FALSE;
t4_set : SET OF property_definition := [];
t1_set : SET OF property_definition := [];
c_a_set : SET OF applied_classification_assignment := [];
c2_a_set : SET OF applied_classification_assignment := [];
t2_set : SET OF representation := [];
END_LOCAL;
c_a_set := QUERY ( i <* applied_classification_assignment | (i.
assigned_class.name = 'stability definition') );
REPEAT i := 1 TO HIINDEX(c_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
c2_a_set := QUERY ( i <* applied_classification_assignment | (i.
assigned_class.name = 'stability table') );
REPEAT i := 1 TO HIINDEX(c2_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c2_a_set[i].items) BY 1;
t2_set := t2_set + c2_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t2_set) BY 1;
t3_set := t3_set +
bag_to_set(USEDIN(t2_set[i],
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION'));
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t3_set) BY 1;
t4_set := t4_set + t3_set[i].definition;
END_REPEAT;
violation := t1_set <> t4_set;
WHERE
wr1: (NOT violation);
END_RULE; -- product_definition_for_stability_definition
RULE product_definition_relationship_references_are_distinct FOR (
product_definition_relationship);
LOCAL
cyclic_relationship : LOGICAL := FALSE;
END_LOCAL;
REPEAT i := 1 TO HIINDEX(product_definition_relationship) BY 1
WHILE
NOT cyclic_relationship;
cyclic_relationship := product_definition_relationship[i].
related_product_definition :=:
product_definition_relationship[i].relating_product_definition;
END_REPEAT;
WHERE
wr1: (NOT cyclic_relationship);
END_RULE; --product_definition_relationship_references_are_distinct
RULE product_definition_relationship_related_to_class_moulded_form FOR (
applied_classification_assignment);
LOCAL
t3_set : SET OF product_definition := [];
violation : LOGICAL := FALSE;
t1_set : SET OF product_definition_relationship := [];
c_a_set : SET OF applied_classification_assignment := [];
c2_a_set : SET OF applied_classification_assignment := [];
t2_set : SET OF product_definition := [];
END_LOCAL;
c_a_set := QUERY ( i <* applied_classification_assignment | (i.
assigned_class.name = 'moulded form relationship') );
REPEAT i := 1 TO HIINDEX(c_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1;
t2_set := t2_set + t1_set[i].related_product_definition;
t2_set := t2_set + t1_set[i].relating_product_definition;
END_REPEAT;
c2_a_set := QUERY ( i <* applied_classification_assignment |
(i.assigned_class.name = 'moulded form') );
REPEAT i := 1 TO HIINDEX(c2_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c2_a_set[i].items) BY 1;
t3_set := t3_set + c2_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
violation := NOT (t2_set <= t3_set);
WHERE
wr1: (NOT violation);
END_RULE; --product_definition_relationship_related_to_class_moulded_form
RULE product_definition_relationship_with_identification_assignment FOR (
applied_classification_assignment);
LOCAL
violation : LOGICAL := FALSE;
t1_set : SET OF product_definition_relationship := [];
c_a_set : SET OF applied_classification_assignment := [];
arg_list : LIST OF STRING := ['item relationship'];
t2_set : SET OF applied_identification_assignment := [];
END_LOCAL;
REPEAT j := 1 TO HIINDEX(arg_list) BY 1 WHILE NOT violation;
c_a_set := QUERY ( i <* applied_classification_assignment |
(i.assigned_class.name = arg_list[j]) );
END_REPEAT;
REPEAT i := 1 TO HIINDEX(c_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
t2_set := bag_to_set(USEDIN(t1_set[i],
'SHIP_MOULDED_FORM_SCHEMA.APPLIED_IDENTIFICATION_ASSIGNMENT.ITEMS'));
t2_set := QUERY ( j <* t2_set | (j.role.name = 'globally unambiguous identifier') );
violation := NOT (SIZEOF(t2_set) = 1);
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; --product_definition_relationship_with_identification_assignment
RULE product_definition_shape_with_identification_assignment FOR (
applied_classification_assignment);
LOCAL
violation : LOGICAL := FALSE;
t1_set : SET OF product_definition_shape := [];
c_a_set : SET OF applied_classification_assignment := [];
arg_list : LIST OF STRING := ['definition'];
t2_set : SET OF applied_identification_assignment := [];
END_LOCAL;
REPEAT j := 1 TO HIINDEX(arg_list) BY 1 WHILE NOT violation;
c_a_set := QUERY ( i <* applied_classification_assignment |
(i.assigned_class.name = arg_list[j]) );
END_REPEAT;
REPEAT i := 1 TO HIINDEX(c_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
t2_set := bag_to_set(USEDIN(t1_set[i],
'SHIP_MOULDED_FORM_SCHEMA.APPLIED_IDENTIFICATION_ASSIGNMENT.ITEMS'));
t2_set := QUERY ( j <* t2_set | (j.role.name = 'globally unambiguous identifier') );
violation := NOT (SIZEOF(t2_set) = 1);
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; --product_definition_shape_with_identification_assignment
RULE product_definition_with_identification_assignment FOR (
applied_classification_assignment);
LOCAL
violation : LOGICAL := FALSE;
t1_set : SET OF product_definition := [];
c_a_set : SET OF applied_classification_assignment := [];
arg_list : LIST OF STRING := ['definition','definable object'];
t2_set : SET OF applied_identification_assignment := [];
END_LOCAL;
REPEAT j := 1 TO HIINDEX(arg_list) BY 1 WHILE NOT violation;
c_a_set := QUERY ( i <* applied_classification_assignment |
(i.assigned_class.name = arg_list[j]) );
END_REPEAT;
REPEAT i := 1 TO HIINDEX(c_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
t2_set := bag_to_set(USEDIN(t1_set[i],
'SHIP_MOULDED_FORM_SCHEMA.APPLIED_IDENTIFICATION_ASSIGNMENT.ITEMS'));
t2_set := QUERY ( j <* t2_set | (j.role.name = 'globally unambiguous identifier') );
violation := NOT (SIZEOF(t2_set) = 1);
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; -- product_definition_with_identification_assignment
RULE product_related_product_category_with_identification_assignment FOR (
applied_classification_assignment);
LOCAL
violation : LOGICAL := FALSE;
t1_set : SET OF product_related_product_category := [];
c_a_set : SET OF applied_classification_assignment := [];
arg_list : LIST OF STRING := ['Shiptype'];
t2_set : SET OF applied_identification_assignment := [];
END_LOCAL;
REPEAT j := 1 TO HIINDEX(arg_list) BY 1 WHILE NOT violation;
c_a_set := QUERY ( i <* applied_classification_assignment |
(i.assigned_class.name = arg_list[j]) );
END_REPEAT;
REPEAT i := 1 TO HIINDEX(c_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
t2_set := bag_to_set(USEDIN(t1_set[i],
'SHIP_MOULDED_FORM_SCHEMA.APPLIED_IDENTIFICATION_ASSIGNMENT.ITEMS'));
t2_set := QUERY ( j <* t2_set | (j.role.name = 'globally unambiguous identifier') );
violation := NOT (SIZEOF(t2_set) = 1);
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; --product_related_product_category_with_identification_assignment
RULE product_with_identification_assignment FOR (
applied_classification_assignment);
LOCAL
violation : LOGICAL := FALSE;
t1_set : SET OF product := [];
c_a_set : SET OF applied_classification_assignment := [];
arg_list : LIST OF STRING := ['ship'];
t2_set : SET OF applied_identification_assignment := [];
END_LOCAL;
REPEAT j := 1 TO HIINDEX(arg_list) BY 1 WHILE NOT violation;
c_a_set := QUERY ( i <* applied_classification_assignment |
(i.assigned_class.name = arg_list[j]) );
END_REPEAT;
REPEAT i := 1 TO HIINDEX(c_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
t2_set := bag_to_set(USEDIN(t1_set[i],
'SHIP_MOULDED_FORM_SCHEMA.APPLIED_IDENTIFICATION_ASSIGNMENT.ITEMS'));
t2_set := QUERY ( j <* t2_set | (j.role.name = 'globally unambiguous identifier') );
violation := NOT (SIZEOF(t2_set) = 1);
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; -- product_with_identification_assignment
RULE propeller_moulded_form_design_parameter_with_class_references FOR (
applied_classification_assignment);
LOCAL
t3_set : SET OF representation := [];
violation : LOGICAL := FALSE;
t1_set : SET OF property_definition := [];
c_a_set : SET OF applied_classification_assignment := [];
t2_set : SET OF property_definition_representation := [];
END_LOCAL;
c_a_set := QUERY ( i <* applied_classification_assignment |
(i.assigned_class.name = 'propeller moulded form design parameter') );
REPEAT i := 1 TO HIINDEX(c_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
t2_set := bag_to_set(USEDIN(t1_set[i],
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.' +
'DEFINITION'));
REPEAT j := 1 TO HIINDEX(t2_set) BY 1;
t3_set := t3_set + t2_set[j].used_representation;
END_REPEAT;
violation := SIZEOF(QUERY ( t2_inst <* t3_set | (
'propeller location' IN which_class(t2_inst)) )) > 1;
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; --propeller_moulded_form_design_parameter_with_class_references
RULE property_definition_appendage_moulded_form_design_parameter FOR (
applied_classification_assignment);
LOCAL
violation : LOGICAL := FALSE;
t1_set : SET OF property_definition := [];
c_a_set : SET OF applied_classification_assignment := [];
t2_set : SET OF property_definition_representation := [];
END_LOCAL;
c_a_set := QUERY ( i <* applied_classification_assignment |
(i.assigned_class.name = 'appendage moulded form design parameter') );
REPEAT i := 1 TO HIINDEX(c_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
t2_set := bag_to_set(USEDIN(t1_set[i],'SHIP_MOULDED_FORM_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION' + '.DEFINITION'));
violation := NOT (SIZEOF(QUERY ( t2_inst <* t2_set |
(t2_inst.name = 'appendage moulded form design parameter') )) = 1);
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; -- property_definition_appendage_moulded_form_design_parameter
RULE property_definition_for_bottom_moulded_form_design_parameter FOR (
applied_classification_assignment);
LOCAL
violation : LOGICAL := FALSE;
t1_set : SET OF property_definition := [];
c_a_set : SET OF applied_classification_assignment := [];
t2_set : SET OF property_definition_representation := [];
END_LOCAL;
c_a_set := QUERY ( i <* applied_classification_assignment |
(i.assigned_class.name = 'bottom moulded form design parameter') );
REPEAT i := 1 TO HIINDEX(c_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
t2_set := bag_to_set(USEDIN(t1_set[i],'SHIP_MOULDED_FORM_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION' + '.DEFINITION'));
violation := NOT (SIZEOF(QUERY ( t2_inst <* t2_set |
(t2_inst.name = 'bottom moulded form design parameter') )) = 1);
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; --property_definition_for_bottom_moulded_form_design_parameter
RULE property_definition_for_bulb_moulded_form_design_parameter FOR (
applied_classification_assignment);
LOCAL
violation : LOGICAL := FALSE;
t1_set : SET OF property_definition := [];
c_a_set : SET OF applied_classification_assignment := [];
t2_set : SET OF property_definition_representation := [];
END_LOCAL;
c_a_set := QUERY ( i <* applied_classification_assignment |
(i.assigned_class.name = 'bulb moulded form design parameter'));
REPEAT i := 1 TO HIINDEX(c_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
t2_set := bag_to_set(USEDIN(t1_set[i],'SHIP_MOULDED_FORM_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION' + '.DEFINITION'));
violation := NOT (SIZEOF(QUERY ( t2_inst <* t2_set |
(t2_inst.name = 'bulb moulded form design parameter') )) = 1);
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; --property_definition_for_bulb_moulded_form_design_parameter
RULE property_definition_for_class_notation FOR (
applied_classification_assignment);
LOCAL
violation : LOGICAL := FALSE;
t1_set : SET OF property_definition := [];
c_a_set : SET OF applied_classification_assignment := [];
t2_set : SET OF property_definition_representation := [];
END_LOCAL;
c_a_set := QUERY ( i <* applied_classification_assignment |
(i.assigned_class.name = 'class notation') );
REPEAT i := 1 TO HIINDEX(c_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
t2_set := bag_to_set(USEDIN(t1_set[i],
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'));
violation := NOT (SIZEOF(QUERY ( t2_inst <* t2_set |
(t2_inst.name = 'class notation') )) = 1);
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; -- property_definition_for_class_notation
RULE property_definition_for_class_society FOR (
applied_classification_assignment);
LOCAL
violation : LOGICAL := FALSE;
t1_set : SET OF property_definition := [];
c_a_set : SET OF applied_classification_assignment := [];
t2_set : SET OF applied_organization_assignment := [];
END_LOCAL;
c_a_set := QUERY ( i <* applied_classification_assignment | (i.
assigned_class.name = 'class notation') );
REPEAT i := 1 TO HIINDEX(c_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
t2_set := bag_to_set(USEDIN(t1_set[i],
'SHIP_MOULDED_FORM_SCHEMA.APPLIED_ORGANIZATION_ASSIGNMENT.ITEMS'));
violation := NOT (SIZEOF(QUERY ( t2_inst <* t2_set |
(t2_inst.role.name = 'class society') )) = 1);
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; -- property_definition_for_class_society
RULE property_definition_for_deck_moulded_form_design_parameter FOR (
applied_classification_assignment);
LOCAL
violation : LOGICAL := FALSE;
t1_set : SET OF property_definition := [];
c_a_set : SET OF applied_classification_assignment := [];
t2_set : SET OF property_definition_representation := [];
END_LOCAL;
c_a_set := QUERY ( i <* applied_classification_assignment |
(i.assigned_class.name = 'deck moulded form design parameter'));
REPEAT i := 1 TO HIINDEX(c_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
t2_set := bag_to_set(USEDIN(t1_set[i],'SHIP_MOULDED_FORM_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION' + '.DEFINITION'));
violation := NOT (SIZEOF(QUERY ( t2_inst <* t2_set |
(t2_inst.name = 'deck moulded form design parameter') )) = 1);
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; --property_definition_for_deck_moulded_form_design_parameter
RULE property_definition_for_hull_moulded_form_design_parameter FOR (
applied_classification_assignment);
LOCAL
violation : LOGICAL := FALSE;
t1_set : SET OF property_definition := [];
c_a_set : SET OF applied_classification_assignment := [];
t2_set : SET OF property_definition_representation := [];
END_LOCAL;
c_a_set := QUERY ( i <* applied_classification_assignment |
(i.assigned_class.name = 'hull moulded form design parameter'));
REPEAT i := 1 TO HIINDEX(c_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
t2_set := bag_to_set(USEDIN(t1_set[i],'SHIP_MOULDED_FORM_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION' + '.DEFINITION'));
violation := NOT (SIZEOF(QUERY ( t2_inst <* t2_set |
(t2_inst.name = 'hull moulded form design parameter') )) = 1);
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; --property_definition_for_hull_moulded_form_design_parameter
RULE property_definition_for_local_coordinate_system FOR (
applied_classification_assignment);
LOCAL
violation : LOGICAL := FALSE;
t1_set : SET OF property_definition := [];
c_a_set : SET OF applied_classification_assignment := [];
t2_set : SET OF property_definition_representation := [];
END_LOCAL;
c_a_set := QUERY ( i <* applied_classification_assignment |
(i.assigned_class.name = 'local co-ordinate system') );
REPEAT i := 1 TO HIINDEX(c_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
t2_set := bag_to_set(USEDIN(t1_set[i],'SHIP_MOULDED_FORM_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION' + '.DEFINITION'));
violation := NOT (SIZEOF(QUERY ( t2_inst <* t2_set |
(t2_inst.name = 'local co-ordinate system') )) = 1);
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; -- property_definition_for_local_coordinate_system
RULE property_definition_for_local_coordinate_system_with_position FOR (
applied_classification_assignment);
LOCAL
violation : LOGICAL := FALSE;
t1_set : SET OF property_definition := [];
c_a_set : SET OF applied_classification_assignment := [];
t2_set : SET OF property_definition_representation := [];
END_LOCAL;
c_a_set := QUERY ( i <* applied_classification_assignment | (i.
assigned_class.name = 'local co-ordinate system with position reference') );
REPEAT i := 1 TO HIINDEX(c_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
t2_set := bag_to_set(USEDIN(t1_set[i],
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'));
violation := NOT (SIZEOF(QUERY ( t2_inst <* t2_set |
(t2_inst.name = 'local co-ordinate system with position reference') )) = 1);
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; --property_definition_for_local_coordinate_system_with_position
RULE property_definition_for_moulded_form_function_parameters FOR (
applied_classification_assignment);
LOCAL
violation : LOGICAL := FALSE;
t1_set : SET OF property_definition := [];
c_a_set : SET OF applied_classification_assignment := [];
t2_set : SET OF property_definition_representation := [];
END_LOCAL;
c_a_set := QUERY ( i <* applied_classification_assignment |
(i.assigned_class.name = 'moulded form functional definition'));
REPEAT i := 1 TO HIINDEX(c_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
t2_set := bag_to_set(USEDIN(t1_set[i],'SHIP_MOULDED_FORM_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION' + '.DEFINITION'));
violation := NOT (SIZEOF(QUERY ( t2_inst <* t2_set |
(t2_inst.name = 'moulded form function parameters') )) = 1);
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; --property_definition_for_moulded_form_function_parameters
RULE property_definition_for_rudder_moulded_form_design_parameter FOR (
applied_classification_assignment);
LOCAL
violation : LOGICAL := FALSE;
t1_set : SET OF property_definition := [];
c_a_set : SET OF applied_classification_assignment := [];
t2_set : SET OF property_definition_representation := [];
END_LOCAL;
c_a_set := QUERY ( i <* applied_classification_assignment |
(i.assigned_class.name = 'rudder moulded form design parameter') );
REPEAT i := 1 TO HIINDEX(c_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
t2_set := bag_to_set(USEDIN(t1_set[i],'SHIP_MOULDED_FORM_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION' + '.DEFINITION'));
violation := NOT (SIZEOF(QUERY ( t2_inst <* t2_set |
(t2_inst.name = 'rudder moulded form design parameter') )) = 1);
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; --property_definition_for_rudder_moulded_form_design_parameter
RULE property_definition_for_thruster_moulded_form_design_parameter FOR (
applied_classification_assignment);
LOCAL
violation : LOGICAL := FALSE;
t1_set : SET OF property_definition := [];
c_a_set : SET OF applied_classification_assignment := [];
t2_set : SET OF property_definition_representation := [];
END_LOCAL;
c_a_set := QUERY ( i <* applied_classification_assignment | (i.
assigned_class.name = 'thruster moulded form design parameter') );
REPEAT i := 1 TO HIINDEX(c_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
t2_set := bag_to_set(USEDIN(t1_set[i],'SHIP_MOULDED_FORM_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION' + '.DEFINITION'));
violation := NOT (SIZEOF(QUERY ( t2_inst <* t2_set |
(t2_inst.name = 'thruster moulded form design parameter') )) = 1);
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; --property_definition_for_thruster_moulded_form_design_parameter
RULE property_definition_for_thruster_propeller_parameter FOR (
applied_classification_assignment);
LOCAL
violation : LOGICAL := FALSE;
t1_set : SET OF property_definition := [];
c_a_set : SET OF applied_classification_assignment := [];
t2_set : SET OF property_definition_relationship := [];
END_LOCAL;
c_a_set := QUERY ( i <* applied_classification_assignment |
(i.assigned_class.name = 'thruster moulded form design parameter') );
REPEAT i := 1 TO HIINDEX(c_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
t2_set := bag_to_set(USEDIN(t1_set[i],'SHIP_MOULDED_FORM_SCHEMA.' +
'PROPERTY_DEFINITION_RELATIONSHIP' +
'.RELATING_PROPERTY_DEFINITION'));
violation := NOT (SIZEOF(QUERY ( t2_inst <* t2_set |
(t2_inst.name = 'thruster propeller parameter') )) = 1);
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; -- property_definition_for_thruster_propeller_parameter
RULE property_definition_of_propeller_moulded_form_design_parameter FOR (
applied_classification_assignment);
LOCAL
violation : LOGICAL := FALSE;
t1_set : SET OF property_definition := [];
c_a_set : SET OF applied_classification_assignment := [];
t2_set : SET OF property_definition_representation := [];
END_LOCAL;
c_a_set := QUERY ( i <* applied_classification_assignment |
(i.assigned_class.name = 'propeller moulded form design parameter') );
REPEAT i := 1 TO HIINDEX(c_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
t2_set := bag_to_set(USEDIN(t1_set[i],'SHIP_MOULDED_FORM_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION' + '.DEFINITION'));
violation := NOT (SIZEOF(QUERY ( t2_inst <* t2_set |
(t2_inst.name = 'propeller moulded form design parameter') )) = 1);
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; --property_definition_of_propeller_moulded_form_design_parameter
RULE property_definition_with_identification_assignment FOR (
applied_classification_assignment);
LOCAL
violation : LOGICAL := FALSE;
t1_set : SET OF property_definition := [];
c_a_set : SET OF applied_classification_assignment := [];
arg_list : LIST OF STRING := [
'moulded form characteristics definition',
'moulded form functional definition',
'local co-ordinate system','spacing table',
'hydrostatic definition','stability definition'];
t2_set : SET OF applied_identification_assignment := [];
END_LOCAL;
REPEAT j := 1 TO HIINDEX(arg_list) BY 1 WHILE NOT violation;
c_a_set := QUERY ( i <* applied_classification_assignment |
(i.assigned_class.name = arg_list[j]) );
END_REPEAT;
REPEAT i := 1 TO HIINDEX(c_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
t2_set := bag_to_set(USEDIN(t1_set[i],
'SHIP_MOULDED_FORM_SCHEMA.APPLIED_IDENTIFICATION_ASSIGNMENT.ITEMS'));
t2_set := QUERY ( j <* t2_set | (j.role.name = 'globally unambiguous identifier') );
violation := NOT (SIZEOF(t2_set) = 1);
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; -- property_definition_with_identification_assignment
RULE representation_for_appendage_moulded_form_design_parameter FOR (
representation);
LOCAL
violation : LOGICAL := FALSE;
arg_list : LIST OF STRING := ['appendage length',
'appendage breadth','appendage depth',
'type of appendage'];
reps : BAG OF representation := [];
END_LOCAL;
reps := QUERY ( temp_rep <* representation | (SIZEOF(
QUERY ( temp_prop_def_rep <* bag_to_set(USEDIN(temp_rep,
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.' +
'USED_REPRESENTATION')) | (temp_prop_def_rep.name =
'appendage moulded form design parameter') )) > 0) );
REPEAT i := 1 TO HIINDEX(reps) BY 1 WHILE NOT violation;
REPEAT j := 1 TO HIINDEX(arg_list) BY 1 WHILE NOT violation;
violation := SIZEOF(QUERY ( rep_item <* reps[i].items |
(rep_item.name = arg_list[j]) )) <> 1;
END_REPEAT;
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; --representation_for_appendage_moulded_form_design_parameter
RULE representation_for_bottom_moulded_form_design_parameter FOR (
representation);
LOCAL
violation : LOGICAL := FALSE;
arg_list : LIST OF STRING := ['bilge radius','rise of floor',
'aft end of flat of bottom',
'front end of flat of bottom','flat of bottom breadth', 'rake of keel'];
reps : BAG OF representation := [];
END_LOCAL;
reps := QUERY (temp_rep <* representation | (SIZEOF(
QUERY ( temp_prop_def_rep <*bag_to_set(USEDIN(temp_rep,
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION'))
| (temp_prop_def_rep.name = 'bottom moulded form design parameter') )) > 0) );
REPEAT i := 1 TO HIINDEX(reps) BY 1 WHILE NOT violation;
REPEAT j := 1 TO HIINDEX(arg_list) BY 1 WHILE NOT violation;
violation := SIZEOF(QUERY ( rep_item <* reps[i].items |
(rep_item.name = arg_list[j]) )) <> 1;
END_REPEAT;
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; --representation_for_bottom_moulded_form_design_parameter
RULE representation_for_bulb_moulded_form_design_parameter FOR (
representation);
LOCAL
violation : LOGICAL := FALSE;
arg_list : LIST OF STRING := ['bulb length','bulb length from pp',
'bulb breadth','bulb breadth pp','bulb depth',
'bulb depth pp','bulb frame section area at pp', 'bulb location'];
reps : BAG OF representation := [];
END_LOCAL;
reps := QUERY ( temp_rep <* representation | (SIZEOF(
QUERY ( temp_prop_def_rep <*bag_to_set(USEDIN(temp_rep,
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION'))
| (temp_prop_def_rep.name = 'bulb moulded form design parameter') )) > 0) );
REPEAT i := 1 TO HIINDEX(reps) BY 1 WHILE NOT violation;
REPEAT j := 1 TO HIINDEX(arg_list) BY 1 WHILE NOT violation;
violation := SIZEOF(QUERY ( rep_item <* reps[i].items |
(rep_item.name = arg_list[j]) )) <> 1;
END_REPEAT;
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; -- representation_for_bulb_moulded_form_design_parameter
RULE representation_for_class_and_statutory_designation FOR (
representation);
LOCAL
violation : LOGICAL := FALSE;
arg_list : LIST OF STRING := ['class number'];
reps : BAG OF representation := [];
END_LOCAL;
reps := QUERY ( temp_rep <* representation | (SIZEOF(
QUERY ( temp_prop_def_rep <* bag_to_set(USEDIN(temp_rep,
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.' +
'USED_REPRESENTATION')) | (temp_prop_def_rep.name =
'class and statutory designation') )) > 0) );
REPEAT i := 1 TO HIINDEX(reps) BY 1 WHILE NOT violation;
REPEAT j := 1 TO HIINDEX(arg_list) BY 1 WHILE NOT violation;
violation := SIZEOF(QUERY ( rep_item <* reps[i].items |
(rep_item.name = arg_list[j]) )) <> 1;
END_REPEAT;
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; -- representation_for_class_and_statutory_designation
RULE representation_for_deck_moulded_form_design_parameter FOR (
representation);
LOCAL
violation : LOGICAL := FALSE;
arg_list : LIST OF STRING := ['camber','sheer at ap','sheer at fp'];
reps : BAG OF representation := [];
END_LOCAL;
reps := QUERY ( temp_rep <* representation | (SIZEOF(
QUERY ( temp_prop_def_rep <*bag_to_set(USEDIN(temp_rep,
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION'))
| (temp_prop_def_rep.name = 'deck moulded form design parameter') )) > 0) );
REPEAT i := 1 TO HIINDEX(reps) BY 1 WHILE NOT violation;
REPEAT j := 1 TO HIINDEX(arg_list) BY 1 WHILE NOT violation;
violation := SIZEOF(QUERY ( rep_item <* reps[i].items |
(rep_item.name = arg_list[j]) )) <> 1;
END_REPEAT;
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; -- representation_for_deck_moulded_form_design_parameter
RULE representation_for_global_axis_placement FOR (representation);
LOCAL
violation : LOGICAL := FALSE;
arg_list : LIST OF STRING := ['global axes and origin',
'after perpendicular offset','orientation'];
reps : BAG OF representation := [];
END_LOCAL;
reps := QUERY ( temp_rep <* representation | (SIZEOF(
QUERY ( temp_prop_def_rep <* bag_to_set(USEDIN(temp_rep,
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.' +
'USED_REPRESENTATION')) | (temp_prop_def_rep.name =
'global axis placement') )) > 0) );
REPEAT i := 1 TO HIINDEX(reps) BY 1 WHILE NOT violation;
REPEAT j := 1 TO HIINDEX(arg_list) BY 1 WHILE NOT violation;
violation := SIZEOF(QUERY ( rep_item <* reps[i].items |
(rep_item.name = arg_list[j]) )) <> 1;
END_REPEAT;
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; -- representation_for_global_axis_placement
RULE representation_for_hull_moulded_form_design_parameter FOR (
representation);
LOCAL
violation : LOGICAL := FALSE;
arg_list : LIST OF STRING := [
'aft end of parallel midbody at design draught',
'front end of parallel midbody at design draught',
'aft end of flat of side','front end of flat of side',
'block coefficient','prismatic coefficient',
'max wetted frame section area','waterplane coefficient'];
reps : BAG OF representation := [];
END_LOCAL;
reps := QUERY ( temp_rep <* representation | (SIZEOF(
QUERY ( temp_prop_def_rep <*bag_to_set(USEDIN(temp_rep,
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION'))
| (temp_prop_def_rep.name = 'hull moulded form design parameter') )) > 0) );
REPEAT i := 1 TO HIINDEX(reps) BY 1 WHILE NOT violation;
REPEAT j := 1 TO HIINDEX(arg_list) BY 1 WHILE NOT violation;
violation := SIZEOF(QUERY ( rep_item <* reps[i].items |
(rep_item.name = arg_list[j]) )) <> 1;
END_REPEAT;
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; -- representation_for_hull_moulded_form_design_parameter
RULE representation_for_hydrostatic_table_constrained FOR (
applied_classification_assignment);
LOCAL
t3_set : SET OF representation_item := [];
violation : LOGICAL := FALSE;
t1_set : SET OF representation := [];
c_a_set : SET OF applied_classification_assignment := [];
c2_a_set : SET OF applied_classification_assignment := [];
t2_set : SET OF representation_item := [];
END_LOCAL;
c_a_set := QUERY ( i <* applied_classification_assignment | (i.
assigned_class.name = 'hydrostatic table') );
REPEAT i := 1 TO HIINDEX(c_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
c2_a_set := QUERY ( i <* applied_classification_assignment |
(i.assigned_class.name = 'hydrostatic properties for constant floating position') );
REPEAT i := 1 TO HIINDEX(c2_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c2_a_set[i].items) BY 1;
t2_set := t2_set + c2_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
REPEAT j := 1 TO HIINDEX(t1_set[i].items) BY 1;
t3_set := t3_set + t1_set[i].items[j];
END_REPEAT;
violation := SIZEOF(t3_set * t2_set) < 1;
t3_set := [];
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; -- representation_for_hydrostatic_table_constrained
RULE representation_for_hydrostatic_table_restricted FOR (
applied_classification_assignment);
LOCAL
t3_set : SET OF representation_item := [];
violation : LOGICAL := FALSE;
t1_set : SET OF representation := [];
c_a_set : SET OF applied_classification_assignment := [];
c2_a_set : SET OF applied_classification_assignment := [];
t2_set : SET OF representation_item := [];
END_LOCAL;
c_a_set := QUERY ( i <* applied_classification_assignment | (i.
assigned_class.name = 'hydrostatic table') );
REPEAT i := 1 TO HIINDEX(c_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
c2_a_set := QUERY ( i <* applied_classification_assignment | (i.
assigned_class.name = 'hydrostatic property') );
REPEAT i := 1 TO HIINDEX(c2_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c2_a_set[i].items) BY 1;
t2_set := t2_set + c2_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
REPEAT j := 1 TO HIINDEX(t1_set[i].items) BY 1;
t3_set := t3_set + t1_set[i].items[j];
END_REPEAT;
violation := SIZEOF(t3_set * t2_set) < 1;
t3_set := [];
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; -- representation_for_hydrostatic_table_restricted
RULE representation_for_hydrostatic_table_restricted_by_class_id FOR (
applied_classification_assignment);
LOCAL
violation : LOGICAL := FALSE;
t1_set : SET OF representation := [];
c_a_set : SET OF applied_classification_assignment := [];
arg_list : LIST OF STRING := ['mean shell thickness'];
END_LOCAL;
c_a_set := QUERY ( i <* applied_classification_assignment | (i.
assigned_class.name = 'hydrostatic table') );
REPEAT i := 1 TO HIINDEX(c_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
REPEAT j := 1 TO HIINDEX(arg_list) BY 1 WHILE NOT violation;
violation := SIZEOF(QUERY ( rep_item <* t1_set[i].items |
(rep_item.name = arg_list[j]) )) <> 1;
END_REPEAT;
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; --representation_for_hydrostatic_table_restricted_by_class_id
RULE representation_for_local_coordinate_system FOR (representation);
LOCAL
violation : LOGICAL := FALSE;
arg_list : LIST OF STRING := ['local axes and origin'];
reps : BAG OF representation := [];
END_LOCAL;
reps := QUERY ( temp_rep <* representation | (SIZEOF(
QUERY ( temp_prop_def_rep <* bag_to_set(USEDIN(temp_rep,
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.' +
'USED_REPRESENTATION')) | (temp_prop_def_rep.name =
'local co-ordinate system') )) > 0) );
REPEAT i := 1 TO HIINDEX(reps) BY 1 WHILE NOT violation;
REPEAT j := 1 TO HIINDEX(arg_list) BY 1 WHILE NOT violation;
violation := SIZEOF(QUERY ( rep_item <* reps[i].items |
(rep_item.name = arg_list[j]) )) <> 1;
END_REPEAT;
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; -- representation_for_local_coordinate_system
RULE representation_for_midship_tumble_restricted_by_class_id FOR (
applied_classification_assignment);
LOCAL
violation : LOGICAL := FALSE;
t1_set : SET OF representation := [];
c_a_set : SET OF applied_classification_assignment := [];
arg_list : LIST OF STRING := ['tumble out at bottom',
'tumble in at top','tumble out at side', 'tumble in at side'];
END_LOCAL;
c_a_set := QUERY ( i <* applied_classification_assignment | (i.
assigned_class.name = 'midship tumble') );
REPEAT i := 1 TO HIINDEX(c_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
REPEAT j := 1 TO HIINDEX(arg_list) BY 1 WHILE NOT violation;
violation := SIZEOF(QUERY ( rep_item <* t1_set[i].items |
(rep_item.name = arg_list[j]) )) <> 1;
END_REPEAT;
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; --representation_for_midship_tumble_restricted_by_class_id
RULE representation_for_moulded_form_function_parameters FOR (representation);
LOCAL
violation : LOGICAL := FALSE;
arg_list : LIST OF STRING := ['function'];
reps : BAG OF representation := [];
END_LOCAL;
reps := QUERY ( temp_rep <* representation | (SIZEOF(
QUERY ( temp_prop_def_rep <*bag_to_set(USEDIN(temp_rep,
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION'))
| (temp_prop_def_rep.name = 'moulded form function parameters') )) > 0) );
REPEAT i := 1 TO HIINDEX(reps) BY 1 WHILE NOT violation;
REPEAT j := 1 TO HIINDEX(arg_list) BY 1 WHILE NOT violation;
violation := SIZEOF(QUERY ( rep_item <* reps[i].items |
(rep_item.name = arg_list[j]) )) <> 1;
END_REPEAT;
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; -- representation_for_moulded_form_function_parameters
RULE representation_for_offset_point_table_model_for_point FOR (
applied_classification_assignment);
LOCAL
violation : LOGICAL := FALSE;
t1_set : SET OF compound_representation_item := [];
c_a_set : SET OF applied_classification_assignment := [];
arg_list : LIST OF STRING := ['section point'];
t2_set : SET OF representation_item := [];
END_LOCAL;
c_a_set := QUERY ( i <* applied_classification_assignment | (i.
assigned_class.name = 'section of offset point table') );
REPEAT i := 1 TO HIINDEX(c_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
REPEAT j := 1 TO HIINDEX(arg_list) BY 1 WHILE NOT violation;
t2_set := t1_set[i].item_element;
violation := SIZEOF(QUERY ( items <* t2_set | (items.name = arg_list[j]) )) < 1;
END_REPEAT;
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; -- representation_for_offset_point_table_model_for_point
RULE representation_for_offset_point_table_model_for_section FOR (
applied_classification_assignment);
LOCAL
violation : LOGICAL := FALSE;
t1_set : SET OF compound_representation_item := [];
c_a_set : SET OF applied_classification_assignment := [];
arg_list : LIST OF STRING := ['offset point table section'];
t2_set : SET OF representation_item := [];
END_LOCAL;
c_a_set := QUERY ( i <* applied_classification_assignment | (i.
assigned_class.name = 'offset point table model') );
REPEAT i := 1 TO HIINDEX(c_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
REPEAT j := 1 TO HIINDEX(arg_list) BY 1 WHILE NOT violation;
t2_set := t1_set[i].item_element;
violation := SIZEOF(QUERY ( items <* t2_set | (items.name = arg_list[j]) )) < 1;
END_REPEAT;
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; --representation_for_offset_point_table_model_for_section
RULE representation_for_offset_table_shape_representation_restricted FOR (
applied_classification_assignment);
LOCAL
t3_set : SET OF representation_item := [];
violation : LOGICAL := FALSE;
t1_set : SET OF representation := [];
c_a_set : SET OF applied_classification_assignment := [];
c2_a_set : SET OF applied_classification_assignment := [];
t2_set : SET OF representation_item := [];
END_LOCAL;
c_a_set := QUERY ( i <* applied_classification_assignment |
(i.assigned_class.name = 'offset table shape representation'));
REPEAT i := 1 TO HIINDEX(c_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
c2_a_set := QUERY ( i <* applied_classification_assignment |
(i.assigned_class.name = 'offset point table model') );
REPEAT i := 1 TO HIINDEX(c2_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c2_a_set[i].items) BY 1;
t2_set := t2_set + c2_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
REPEAT j := 1 TO HIINDEX(t1_set[i].items) BY 1;
t3_set := t3_set + t1_set[i].items[j];
END_REPEAT;
violation := SIZEOF(t3_set * t2_set) < 1;
t3_set := [];
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; --representation_for_offset_table_shape_representation_restricted
RULE representation_for_propeller_location_restricted_by_class_id FOR (
applied_classification_assignment);
LOCAL
violation : LOGICAL := FALSE;
t1_set : SET OF representation := [];
c_a_set : SET OF applied_classification_assignment := [];
arg_list : LIST OF STRING := ['shaft line inclination x',
'shaft line inclination y','shaft line location','propeller location'];
END_LOCAL;
c_a_set := QUERY ( i <* applied_classification_assignment | (i.
assigned_class.name = 'propeller location') );
REPEAT i := 1 TO HIINDEX(c_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
REPEAT j := 1 TO HIINDEX (arg_list) BY 1 WHILE NOT violation;
violation := SIZEOF(QUERY ( rep_item <* t1_set[i].items |
(rep_item.name = arg_list[j]) )) <> 1;
END_REPEAT;
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; --representation_for_propeller_location_restricted_by_class_id
RULE representation_for_propeller_moulded_form_design_parameter FOR (
representation);
LOCAL
violation : LOGICAL := FALSE;
arg_list : LIST OF STRING := ['type of propulsion',
'propeller diameter','chord length at 0 7 radius',
'thickness at 0 7 radius','number of propeller blades',
'expanded area ratio','hub diameter ratio',
'nominal design pitch ratio','type of propeller blades',
'rake','skew','design sense of rotation'];
reps : BAG OF representation := [];
END_LOCAL;
reps := QUERY ( temp_rep <* representation | (SIZEOF(
QUERY ( temp_prop_def_rep <*bag_to_set(USEDIN(temp_rep,
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION'))
| (temp_prop_def_rep.name = 'propeller moulded form design parameter') )) > 0) );
REPEAT i := 1 TO HIINDEX(reps) BY 1 WHILE NOT violation;
REPEAT j := 1 TO HIINDEX(arg_list) BY 1 WHILE NOT violation;
violation := SIZEOF(QUERY ( rep_item <* reps[i].items |
(rep_item.name = arg_list[j]) )) <> 1;
END_REPEAT;
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; --representation_for_propeller_moulded_form_design_parameter
RULE representation_for_rudder_moulded_form_design_parameter FOR (
representation);
LOCAL
violation : LOGICAL := FALSE;
arg_list : LIST OF STRING := ['rudder height','rudder mean height',
'rudder length','rudder mean length','rudder thickness',
'projected rudder area','type of the rudder','rudder location'];
reps : BAG OF representation := [];
END_LOCAL;
reps := QUERY ( temp_rep <* representation | (SIZEOF(
QUERY ( temp_prop_def_rep <*bag_to_set(USEDIN(temp_rep,
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION'))
| (temp_prop_def_rep.name = 'rudder moulded form design parameter') )) > 0) );
REPEAT i := 1 TO HIINDEX(reps) BY 1 WHILE NOT violation;
REPEAT j := 1 TO HIINDEX(arg_list) BY 1 WHILE NOT violation;
violation := SIZEOF(QUERY ( rep_item <* reps[i].items |
(rep_item.name = arg_list[j]) )) <> 1;
END_REPEAT;
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; --representation_for_rudder_moulded_form_design_parameter
RULE representation_for_stability_table_restricted FOR (
applied_classification_assignment);
LOCAL
t3_set : SET OF representation_item := [];
violation : LOGICAL := FALSE;
t1_set : SET OF representation := [];
c_a_set : SET OF applied_classification_assignment := [];
c2_a_set : SET OF applied_classification_assignment := [];
t2_set : SET OF representation_item := [];
END_LOCAL;
c_a_set := QUERY ( i <* applied_classification_assignment |
(i.assigned_class.name = 'stability table') );
REPEAT i := 1 TO HIINDEX(c_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
c2_a_set := QUERY ( i <* applied_classification_assignment | (i.
assigned_class.name = 'stability properties for one floating position') );
REPEAT i := 1 TO HIINDEX(c2_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c2_a_set[i].items) BY 1;
t2_set := t2_set + c2_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
REPEAT j := 1 TO HIINDEX(t1_set[i].items) BY 1;
t3_set := t3_set + t1_set[i].items[j];
END_REPEAT;
violation := SIZEOF(t3_set * t2_set) < 1;
t3_set := [];
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; -- representation_for_stability_table_restricted
RULE representation_for_stability_table_restricted_by_class_id FOR (
applied_classification_assignment);
LOCAL
violation : LOGICAL := FALSE;
t1_set : SET OF representation := [];
c_a_set : SET OF applied_classification_assignment := [];
arg_list : LIST OF STRING := ['mean shell thickness'];
END_LOCAL;
c_a_set := QUERY ( i <* applied_classification_assignment |
(i.assigned_class.name = 'stability table') );
REPEAT i := 1 TO HIINDEX(c_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
REPEAT j := 1 TO HIINDEX(arg_list) BY 1 WHILE NOT violation;
violation := SIZEOF(QUERY ( rep_item <* t1_set[i].items |
(rep_item.name = arg_list[j]) )) <> 1;
END_REPEAT;
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; --representation_for_stability_table_restricted_by_class_id
RULE representation_for_thruster_moulded_form_design_parameter FOR (
representation);
LOCAL
violation : LOGICAL := FALSE;
arg_list : LIST OF STRING := ['thruster tunnel diameter',
'thruster tunnel min length', 'thruster tunnel max length',
'geometric thruster location','thruster location'];
reps : BAG OF representation := [];
END_LOCAL;
reps := QUERY ( temp_rep <* representation | (SIZEOF(
QUERY ( temp_prop_def_rep <* bag_to_set(USEDIN(temp_rep,
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION'))
| (temp_prop_def_rep.name = 'thruster moulded form design parameter') )) > 0) );
REPEAT i := 1 TO HIINDEX(reps) BY 1 WHILE NOT violation;
REPEAT j := 1 TO HIINDEX(arg_list) BY 1 WHILE NOT violation;
violation := SIZEOF(QUERY ( rep_item <* reps[i].items |
(rep_item.name = arg_list[j]) )) <> 1;
END_REPEAT;
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; --representation_for_thruster_moulded_form_design_parameter
RULE representation_has_global_uncertainty_assigned_context FOR (
shape_representation);
LOCAL
has_gunac : LOGICAL := TRUE;
END_LOCAL;
REPEAT i := 1 TO HIINDEX(shape_representation) BY 1 WHILE has_gunac;
has_gunac := 'SHIP_MOULDED_FORM_SCHEMA.GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT'
IN TYPEOF(shape_representation[i].context_of_items);
END_REPEAT;
WHERE
wr1: has_gunac;
END_RULE; --representation_has_global_uncertainty_assigned_context
RULE representation_has_global_unit_assigned_context FOR
(representation);
LOCAL
has_guac : LOGICAL := TRUE;
END_LOCAL;
REPEAT i := 1 TO HIINDEX(representation) BY 1 WHILE has_guac;
REPEAT j := 1 TO SIZEOF(representation[i].items) BY 1 WHILE has_guac;
IF ('SHIP_MOULDED_FORM_SCHEMA.VALUE_REPRESENTATION_ITEM' IN
TYPEOF(representation[i].items[j])) OR (
'SHIP_MOULDED_FORM_SCHEMA.GEOMETRIC_REPRESENTATION_ITEM' IN
TYPEOF(representation[i].items[j])) THEN
has_guac := 'SHIP_MOULDED_FORM_SCHEMA.GLOBAL_UNIT_ASSIGNED_CONTEXT' IN
TYPEOF(representation[i].context_of_items);
END_IF;
END_REPEAT;
END_REPEAT;
WHERE
wr1: has_guac;
END_RULE; -- representation_has_global_unit_assigned_context
RULE representation_item_for_transformation_to_parent FOR (
applied_classification_assignment);
LOCAL
t3_set : SET OF representation := [];
t4_set : SET OF representation_map := [];
t1_set : SET OF property_definition := [];
t5_set : SET OF mapped_item := [];
c_a_set : SET OF applied_classification_assignment := [];
arg_list : LIST OF STRING := ['local coordinate system
position in global coordinate system','local coordinate system
position in parent local coordinate system','local coordinate system
position in parent local coordinate system with position reference'];
violation1 : LOGICAL := FALSE;
violation2 : LOGICAL := FALSE;
t2_set : SET OF property_definition_representation := [];
END_LOCAL;
c_a_set := QUERY ( i <* applied_classification_assignment | (i.
assigned_class.name = 'local co-ordinate system') );
REPEAT i := 1 TO HIINDEX(c_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation1;
t2_set := bag_to_set(USEDIN(t1_set[i],
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'));
violation1 := NOT (SIZEOF(QUERY ( t2_inst <* t2_set |
(t2_inst.used_representation.name = 'local axis representation') )) = 1);
t3_set := t3_set + t2_set[i].used_representation;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1 set) BY 1 WHILE NOT violation1;
t4_set := bag_to_set(USEDIN(t3_set[i],
'SHIP_MOULDED_FORM_SCHEMA.REPRESENTATION_MAP.MAPPED_REPRESENTATION'));
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation1;
t5_set := bag_to_set(USEDIN(t4_set[i],
'SHIP_MOULDED_FORM_SCHEMA.MAPPED_ITEM.MAPPING_SOURCE'));
REPEAT j := 1 TO 3 BY 1 WHILE NOT violation2;
violation2 := NOT (SIZEOF(QUERY ( t2_inst <* t5_set |
(t2_inst.name = arg_list[j]) )) = 1);
END_REPEAT;
END_REPEAT;
WHERE
wr1: (NOT violation1);
wr2: (NOT violation2);
END_RULE; -- representation_item_for_transformation_to_parent
RULE representation_items_appendage_moulded_form_design_parameter FOR (
representation);
LOCAL
found : LOGICAL := FALSE;
arg_list : LIST OF STRING: = ['moulded form outer surface',
'moulded form displacement','user def appendage type'];
reps : BAG OF representation := [];
END_LOCAL;
reps := QUERY ( temp_rep <* representation | (SIZEOF(
QUERY ( temp_prop_def_rep <* bag_to_set(USEDIN(temp_rep,
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.' +
'USED_REPRESENTATION')) | (temp_prop_def_rep.name =
'appendage moulded form design parameter') )) > 0) );
REPEAT i := 1 TO HIINDEX(reps) BY 1 WHILE NOT found;
REPEAT j := 1 TO HIINDEX(arg_list) BY 1 WHILE NOT found;
found := SIZEOF(QUERY ( rep_item <* reps[i].items |
(rep_item.name = arg_list[j]) )) > 1;
END_REPEAT;
END_REPEAT;
WHERE
wr1: (NOT found);
END_RULE; --representation_items_appendage_moulded_form_design_parameter
RULE representation_items_for_bottom_moulded_form_design_parameter FOR (
representation);
LOCAL
found : LOGICAL := FALSE;
arg_list : LIST OF STRING := ['moulded form outer surface',
'moulded form displacement'];
reps : BAG OF representation := [];
END_LOCAL;
reps := QUERY ( temp_rep <* representation | (SIZEOF(
QUERY ( temp_prop_def_rep <* bag_to_set(USEDIN(temp_rep,
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.' +
'USED_REPRESENTATION')) | (temp_prop_def_rep.name =
'bottom moulded form design parameter') )) > 0) );
REPEAT i := 1 TO HIINDEX(reps) BY 1 WHILE NOT found;
REPEAT j := 1 TO HIINDEX(arg_list) BY 1 WHILE NOT found;
found := SIZEOF(QUERY ( rep_item <* reps[i].items |
(rep_item.name = arg_list[j]) )) > 1;
END_REPEAT;
END_REPEAT;
WHERE
wr1: (NOT found);
END_RULE; --representation_items_for_bottom_moulded_form_design_parameter
RULE representation_items_for_bulb_moulded_form_design_parameter FOR (
representation);
LOCAL
found : LOGICAL := FALSE;
arg_list : LIST OF STRING := ['moulded form outer surface',
'moulded form displacement'];
reps : BAG OF representation := [];
END_LOCAL;
reps := QUERY ( temp_rep <* representation | (SIZEOF(
QUERY ( temp_prop_def_rep <* bag_to_set(USEDIN(temp_rep,
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.' +
'USED_REPRESENTATION')) | (temp_prop_def_rep.name =
'bulb moulded form design parameter') )) > 0) );
REPEAT i := 1 TO HIINDEX(reps) BY 1 WHILE NOT found;
REPEAT j:= 1 TO HIINDEX(arg_list) BY 1 WHILE NOT found;
found := SIZEOF(QUERY ( rep_item <* reps[i].items |
(rep_item.name = arg_list[j]) )) > 1;
END_REPEAT;
END_REPEAT;
WHERE
wr1: (NOT found);
END_RULE; --representation_items_for_bulb_moulded_form_design_parameter
RULE representation_items_for_deck_moulded_form_design_parameter FOR (
representation);
LOCAL
found : LOGICAL := FALSE;
arg_list : LIST OF STRING := ['moulded form outer surface',
'moulded form displacement'];
reps : BAG OF representation := [];
END_LOCAL;
reps := QUERY ( temp_rep <* representation | (SIZEOF(
QUERY ( temp_prop_def_rep <* bag_to_set(USEDIN(temp_rep,
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.' +
'USED_REPRESENTATION')) | (temp_prop_def_rep.name =
'deck moulded form design parameter') )) > 0) );
REPEAT i := 1 TO HIINDEX(reps) BY 1 WHILE NOT found;
REPEAT j := 1 TO HIINDEX(arg_list) BY 1 WHILE NOT found;
found := SIZEOF(QUERY ( rep_item <* reps[i].items |
(rep_item.name = arg_list[j]) )) > 1;
END_REPEAT;
END_REPEAT;
WHERE
wr1: (NOT found);
END_RULE; --representation_items_for_deck_moulded_form_design_parameter
RULE representation_items_for_hull_moulded_form_design_parameter FOR (
representation);
LOCAL
found : LOGICAL := FALSE;
arg_list : LIST OF STRING := ['moulded form outer surface',
'moulded form displacement',
'waterline angle of entrance at stern',
'waterline angle of entrance at bow',
'max frame section area location','hull length pp',
'hull length waterline','hull breadth','hull depth',
'hull design draught','gunwale radius'];
reps : BAG OF representation := [];
END_LOCAL;
reps := QUERY ( temp_rep <* representation | (SIZEOF(
QUERY ( temp_prop_def_rep <* bag_to_set(USEDIN(temp_rep,
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.' +
'USED_REPRESENTATION')) | (temp_prop_def_rep.name =
'hull moulded form design parameter') )) > 0) );
REPEAT i := 1 TO HIINDEX(reps) BY 1 WHILE NOT found;
REPEAT j := 1 TO HIINDEX(arg_list) BY 1 WHILE NOT found;
found := SIZEOF(QUERY ( rep_item <* reps[i].items |
(rep_item.name = arg_list[j]) )) > 1;
END_REPEAT;
END_REPEAT;
WHERE
wr1: (NOT found);
END_RULE; --representation_items_for_hull_moulded_form_design_parameter
RULE representation_items_for_moulded_form_design_parameters FOR (
representation);
LOCAL
found : LOGICAL := FALSE;
arg_list : LIST OF STRING := ['status'];
reps : BAG OF representation := [];
END_LOCAL;
reps := QUERY ( temp_rep <* representation | (SIZEOF(
QUERY ( temp_prop_def_rep <* bag_to_set(USEDIN(temp_rep,
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.' +
'USED_REPRESENTATION')) | (temp_prop_def_rep.name =
'moulded form design parameters') )) > 0) );
REPEAT i := 1 TO HIINDEX(reps) BY 1 WHILE NOT found;
REPEAT j := 1 TO HIINDEX(arg_list) BY 1 WHILE NOT found;
found := SIZEOF(QUERY ( rep_item <* reps[i].items |
(rep_item.name = arg_list[j]) )) > 1;
END_REPEAT;
END_REPEAT;
WHERE
wr1: (NOT found);
END_RULE; --representation_items_for_moulded_form_design_parameters
RULE representation_items_for_moulded_form_function_parameters FOR (
representation);
LOCAL
found : LOGICAL := FALSE;
arg_list : LIST OF STRING := ['user def function'];
reps : BAG OF representation := [];
END_LOCAL;
reps := QUERY ( temp_rep <* representation | (SIZEOF(
QUERY ( temp_prop_def_rep <*
bag_to_set(USEDIN(temp_rep,
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION'))
| (temp_prop_def_rep.name = 'moulded form function parameters') )) > 0) );
REPEAT i := 1 TO HIINDEX(reps) BY 1 WHILE NOT found;
REPEAT j := 1 TO HIINDEX(arg_list) BY 1 WHILE NOT found;
found := SIZEOF(QUERY ( rep_item <* reps[i].items |
(rep_item.name = arg_list[j]) )) > 1;
END_REPEAT;
END_REPEAT;
WHERE
wr1: (NOT found);
END_RULE; --representation_items_for_moulded_form_function_parameters
RULE representation_items_for_rudder_moulded_form_design_parameter FOR (
representation);
LOCAL
found : LOGICAL := FALSE;
arg_list : LIST OF STRING := ['moulded form outer surface',
'moulded form displacement'];
reps : BAG OF representation := [];
END_LOCAL;
reps := QUERY ( temp_rep <* representation | (SIZEOF(
QUERY ( temp_prop_def_rep <* bag_to_set(USEDIN(temp_rep,
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.' +
'USED_REPRESENTATION')) | (temp_prop_def_rep.name =
'rudder moulded form design parameter') )) > 0) );
REPEAT i := 1 TO HIINDEX(reps) BY 1 WHILE NOT found;
REPEAT j := 1 TO HIINDEX(arg_list) BY 1 WHILE NOT found;
found := SIZEOF(QUERY ( rep_item <* reps[i].items |
(rep_item.name = arg_list[j]) )) > 1;
END_REPEAT;
END_REPEAT;
WHERE
wr1: (NOT found);
END_RULE; --representation_items_for_rudder_moulded_form_design_parameter
RULE representation_items_of_thruster_moulded_form_design_parameter FOR (
representation);
LOCAL
found : LOGICAL := FALSE;
arg_list : LIST OF STRING := ['moulded form outer surface',
'moulded form displacement'];
reps : BAG OF representation := [];
END_LOCAL;
reps := QUERY ( temp_rep <* representation | (SIZEOF(
QUERY ( temp_prop_def_rep <* bag_to_set(USEDIN(temp_rep,
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.' +
'USED_REPRESENTATION')) | (temp_prop_def_rep.name =
'thruster moulded form design parameter') )) > 0) );
REPEAT i := 1 TO HIINDEX(reps) BY 1 WHILE NOT found;
REPEAT j := 1 TO HIINDEX(arg_list) BY 1 WHILE NOT found;
found := SIZEOF(QUERY ( rep_item <* reps[i].items |
(rep_item.name = arg_list[j]) )) > 1;
END_REPEAT;
END_REPEAT;
WHERE
wr1: (NOT found);
END_RULE; --representation_items_of_thruster_moulded_form_design_parameter
RULE representation_items_optional_for_class_notation FOR (
representation);
LOCAL
found : LOGICAL := FALSE;
arg_list : LIST OF STRING := ['ice class notation','service factor',
'approval required for heavy cargo'];
reps : BAG OF representation := [];
END_LOCAL;
reps := QUERY ( temp_rep <* representation | (SIZEOF(
QUERY ( temp_prop_def_rep <* bag_to_set(USEDIN(temp_rep,
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.' +
'USED_REPRESENTATION')) | (temp_prop_def_rep.name = 'class notation') )) > 0) );
REPEAT i := 1 TO HIINDEX(reps) BY 1 WHILE NOT found;
REPEAT j := 1 TO HIINDEX(arg_list) BY 1 WHILE NOT found;
found := SIZEOF(QUERY ( rep_item <* reps[i].items |
(rep_item.name = arg_list[j]) )) > 1;
END_REPEAT;
END_REPEAT;
WHERE
wr1: (NOT found);
END_RULE; -- representation_items_optional_for_class_notation
RULE representation_items_optional_for_owner_designation FOR (
representation);
LOCAL
found : LOGICAL := FALSE;
arg_list : LIST OF STRING := ['owner approval'];
reps : BAG OF representation := [];
END_LOCAL;
reps := QUERY ( temp_rep <* representation | (SIZEOF(
QUERY ( temp_prop_def_rep <* bag_to_set(USEDIN(temp_rep,
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.' +
'USED_REPRESENTATION')) | (temp_prop_def_rep.name =
'owner designation') )) > 0) );
REPEAT i := 1 TO HIINDEX(reps) BY 1 WHILE NOT found;
REPEAT j := 1 TO HIINDEX(arg_list) BY 1 WHILE NOT found;
found := SIZEOF(QUERY ( rep_item <* reps[i].items |
(rep_item.name = arg_list[j]) )) > 1;
END_REPEAT;
END_REPEAT;
WHERE
wr1: (NOT found);
END_RULE; -- representation_items_optional_for_owner_designation
RULE representation_items_optional_for_principal_characteristics FOR (
representation);
LOCAL
found : LOGICAL := FALSE;
arg_list : LIST OF STRING := ['block coefficient','design draught',
'design deadweight','min draught at fp',
'max draught at fp','min draught at ap',
'max draught at ap'];
reps : BAG OF representation := [];
END_LOCAL;
reps := QUERY ( temp_rep <* representation | (SIZEOF(
QUERY ( temp_prop_def_rep <* bag_to_set(USEDIN(temp_rep,
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.' +
'USED_REPRESENTATION')) | (temp_prop_def_rep.name =
'principal characteristics') )) > 0) );
REPEAT i := 1 TO HIINDEX(reps) BY 1 WHILE NOT found;
REPEAT j := 1 TO HIINDEX(arg_list) BY 1 WHILE NOT found;
found := SIZEOF(QUERY ( rep_item <* reps[i].items |
(rep_item.name = arg_list[j]) )) > 1;
END_REPEAT;
END_REPEAT;
WHERE
wr1: (NOT found);
END_RULE; --representation_items_optional_for_principal_characteristics
RULE representation_items_propeller_moulded_form_design_parameter FOR (
representation);
LOCAL
found : LOGICAL := FALSE;
arg_list : LIST OF STRING := ['blade_mean_height',
'moulded form outer surface','moulded form displacement'];
reps : BAG OF representation := [];
END_LOCAL;
reps := QUERY ( temp_rep <* representation | (SIZEOF(
QUERY ( temp_prop_def_rep <* bag_to_set(USEDIN(temp_rep,
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.' +
'USED_REPRESENTATION')) | (temp_prop_def_rep.name =
'propeller moulded form design parameter') )) > 0) );
REPEAT i := 1 TO HIINDEX(reps) BY 1 WHILE NOT found;
REPEAT j := 1 TO HIINDEX(arg_list) BY 1 WHILE NOT found;
found := SIZEOF(QUERY ( rep_item <* reps[i].items |
(rep_item.name = arg_list[j]) )) > 1;
END_REPEAT;
END_REPEAT;
WHERE
wr1: (NOT found);
END_RULE; --representation_items_propeller_moulded_form_design_parameter
RULE representation_of_local_coordinate_system_with_position_reference FOR (
representation);
LOCAL
violation : LOGICAL := FALSE;
arg_list : LIST OF STRING := ['local axes and origin'];
reps : BAG OF representation := [];
END_LOCAL;
reps := QUERY ( temp_rep <* representation | (SIZEOF(
QUERY ( temp_prop_def_rep <* bag_to_set(USEDIN(temp_rep,
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.' +
'USED_REPRESENTATION')) | (temp_prop_def_rep.name =
'local co-ordinate system with position reference') )) > 0));
REPEAT i := 1 TO HIINDEX(reps) BY 1 WHILE NOT violation;
REPEAT j := 1 TO HIINDEX(arg_list) BY 1 WHILE NOT violation;
violation := SIZEOF(QUERY ( rep_item <* reps[i).items |
(rep_item.name = arg_list[j]) )) <> 1;
END_REPEAT;
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; --representation_of_local_coordinate_system_with_position_reference
RULE representation_restricted_by_name_class_notation FOR (
representation);
LOCAL
violation : LOGICAL := FALSE;
arg_list : LIST OF STRING := ['service area',
'approval required for oil cargo',
'approval required for loading unloading aground',
'approval required for unloading grabs'];
reps : BAG OF representation := [];
END_LOCAL;
reps := QUERY ( temp_rep <* representation | (SIZEOF(
QUERY ( temp_prop_def_rep <* bag_to_set(USEDIN(temp_rep,
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.' +
'USED_REPRESENTATION')) | (temp_prop_def_rep.name =
'class notation') )) > 0) );
REPEAT i := 1 TO HIINDEX(reps) BY 1 WHILE NOT violation;
REPEAT j := 1 TO HIINDEX(arg_list) BY 1 WHILE NOT violation;
violation := SIZEOF(QUERY ( rep_item <* reps[i].items |
(rep_item.name = arg_list[j]) )) <> 1;
END_REPEAT;
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; -- representation_restricted_by_name_class_notation
RULE representation_restricted_by_name_class_parameters FOR (
representation);
LOCAL
violation : LOGICAL := FALSE;
arg_list : LIST OF STRING := ['length class','length solas',
'scantlings draught','block coefficient class',
'design speed ahead','design speed astern'];
reps : BAG OF representation := [];
END_LOCAL;
reps := QUERY ( temp_rep <* representation | (SIZEOF(
QUERY ( temp_prop_def_rep <* bag_to_set(USEDIN(temp_rep,
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.' +
'USED_REPRESENTATION')) | (temp_prop_def_rep.name =
'class parameters') )) > 0) );
REPEAT i := 1 TO HIINDEX(reps) BY 1 WHILE NOT violation;
REPEAT j := 1 TO HIINDEX(arg_list) BY 1 WHILE NOT violation;
violation := SIZEOF(QUERY ( rep_item <* reps[i].items |
(rep_item.name = arg_list[j]) )) <> 1;
END_REPEAT;
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; -- representation_restricted_by_name_class_parameters
RULE representation_restricted_by_name_principal_characteristics FOR (
representation);
LOCAL
violation : LOGICAL := FALSE;
arg_list : LIST OF STRING := ['length between perpendiculars',
'moulded breadth','moulded depth'];
reps : BAG OF representation := [];
END_LOCAL;
reps := QUERY ( temp_rep <* representation | (SIZEOF(
QUERY ( temp_prop_def_rep <* bag_to_set(USEDIN(temp_rep,
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.' +
'USED_REPRESENTATION')) | (temp_prop_def_rep.name = 'principal characteristics') )) > 0) );
REPEAT i := 1 TO HIINDEX(reps) BY 1 WHILE NOT violation;
REPEAT j := 1 TO HIINDEX(arg_list) BY 1 WHILE NOT violation;
violation := SIZEOF(QUERY ( rep_item <* reps[i].items |
(rep_item.name = arg_list[j]) )) <> 1;
END_REPEAT;
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; --representation_restricted_by_name_principal_characteristics
RULE representation_restricted_by_name_ship_overall_dimensions FOR (
representation);
LOCAL
violation : LOGICAL := FALSE;
arg_list : LIST OF STRING := ['overall breadth','overall depth',
'overall length','stem overhang','stern overhang'];
reps : BAG OF representation := [];
END_LOCAL;
reps := QUERY ( temp_rep <* representation | (SIZEOF(
QUERY ( temp_prop_def_rep <* bag_to_set(USEDIN(temp_rep,
'SHIP_MOULDED_FORM_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.' +
'USED_REPRESENTATION')) | (temp_prop_def_rep.name =
'ship overall dimensions') )) > 0) );
REPEAT i := 1 TO HIINDEX(reps) BY 1 WHILE NOT violation;
REPEAT j := 1 TO HIINDEX(arg_list) BY 1 WHILE NOT violation;
violation := SIZEOF(QUERY ( rep_item <* reps[i].items |
(rep_item.name = arg_list[j]) )) <> 1;
END_REPEAT;
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; --representation_restricted_by_name_ship_overall_dimensions
RULE revision_has_mandatory_attribute_description FOR (group);
LOCAL
violate : LOGICAL := FALSE;
t1_set : SET OF group := [];
END_LOCAL;
t1_set := QUERY ( i <* group |
VALUE_IN(which_class(i),'revision') );
violate := SIZEOF(QUERY ( k <* t1_set | (NOT EXISTS(k.description)) )) > 0;
WHERE
wr1: (NOT violate);
END_RULE; -- revision_has_mandatory_attribute_description
RULE revision_with_context_referenced_for_context_of_revision FOR (
applied_group_assignment, group);
LOCAL
violate : LOGICAL := FALSE;
t1_set : SET OF group := [];
a_set : SET OF applied_group_assignment := [];
END_LOCAL;
t1_set := QUERY ( a <* group | VALUE_IN(which_class(a),
'revision with context') );
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violate;
a_set := QUERY ( b <* applied_group_assignment |
((b.assigned_group = t1_set[i]) AND (b.role.name = 'context of revision')) );
violate := SIZEOF(a_set) <> 1;
END_REPEAT;
WHERE
wr1: (NOT violate);
END_RULE; --revision_with_context_referenced_for_context_of_revision
RULE ship_curve_has_name FOR (applied_classification_assignment);
LOCAL
violation : LOGICAL := FALSE;
t1_set : SET OF compound_representation_item := [];
c_a_set : SET OF applied_classification_assignment := [];
arg_list : LIST OF STRING := ['side condition','curve shape');
t2_set : SET OF representation_item := [];
END_LOCAL;
c_a_set := QUERY ( i <* applied_classification_assignment | (i.
assigned_class.name = 'ship curve') );
REPEAT i := 1 TO HIINDEX(c_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
REPEAT j := 1 TO HIINDEX(arg_list) BY 1 WHILE NOT violation;
t2_set := t1_set[i].item_element;
violation := SIZEOF(QUERY ( items <* t2_set | (items.name = arg_list[j]) )) <> 1;
END_REPEAT;
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; -- ship_curve_has_name
RULE ship_curve_segment_has_class FOR (applied_classification_assignment);
LOCAL
t3_set : SET OF representation_item := [];
violation : LOGICAL := FALSE;
t1_set : SET OF compound_representation_item := [];
c_a_set : SET OF applied_classification_assignment := [];
c_a_set2 : SET OF applied_classification_assignment := [];
l_rep_item : list_representation_item;
t2_set : SET OF compound_representation_item := [];
END_LOCAL;
c_a_set := QUERY ( i <* applied_classification_assignment |
(i.assigned_class.name = 'ship curve segment') );
REPEAT i := 1 TO HIINDEX(c_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
c_a_set2 := QUERY ( i <* applied_classification_assignment |
(i.assigned_class.name = 'ship curve') );
REPEAT i := 1 TO HIINDEX(c_a_set2) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set2[i].items) BY 1;
t2_set := t2_set + c_a_set2[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
REPEAT j := 1 TO HIINDEX(t1_set[i].item_element) BY 1;
l_rep_item := t1_set[i].item_element;
t3_set := t3_set + l_rep_item[j];
END_REPEAT;
violation := SIZEOF(t3_set * t2_set) <> 1;
t3_set := [];
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; -- ship_curve_segment_has_class
RULE ship_curve_with_spacing_position_has_class FOR (
applied_classification_assignment);
LOCAL
t3_set : SET OF representation_item := [];
violation : LOGICAL := FALSE;
t1_set : SET OF compound_representation_item := [];
c_a_set : SET OF applied_classification_assignment := [];
c_a_set2 : SET OF applied_classification_assignment := [];
l_rep_item : list_representation_item;
t2_set : SET OF compound_representation_item := [];
END_LOCAL;
c_a_set := QUERY ( i <* applied_classification_assignment |
(i.assigned_class.name = 'ship curve with spacing position') );
REPEAT i := 1 TO HIINDEX(c_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
c_a_set2 := QUERY ( i <* applied_classification_assignment |
(i.assigned_class.name = 'spacing position') );
REPEAT i := 1 TO HIINDEX(c_a_set2) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set2[i].items) BY 1;
t2_set := t2_set + c_a_set2[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
REPEAT j := 1 TO HIINDEX(t1_set[i].item_element) BY 1;
l_rep_item := t1_set[i].item_element;
t3_set := t3_set + l_rep_item[j];
END_REPEAT;
violation := SIZEOF(t3_set * t2_set) <> 1;
t3_set := [];
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; -- ship_curve_with_spacing_position_has_class
RULE ship_designation_has_one_specified_names FOR (
applied_classification_assignment);
LOCAL
violation : LOGICAL := FALSE;
t1_set : SET OF product_definition := [];
c_a_set : SET OF applied_classification_assignment := [];
t2_set : SET OF applied_identification_assignment := [];
END_LOCAL;
c_a_set := QUERY ( i <* applied_classification_assignment | (i.
assigned_class.name = 'ship designation') );
REPEAT i := 1 TO HIINDEX(c_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
t2_set := bag_to_set(USEDIN(t1_set[i],
'SHIP_MOULDED_FORM_SCHEMA.APPLIED_IDENTIFICATION_ASSIGNMENT.ITEMS'));
violation := NOT (SIZEOF(QUERY ( t2_inst <* t2_set |
((t2_inst.role.name = 'imo number') OR
(t2_inst.role.name = 'pennant hull number')) )) = 1);
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; -- ship_designation_has_one_specified_names
RULE ship_moulded_form_revision_has_description FOR (
product_definition_relationship);
LOCAL
violate : LOGICAL := FALSE;
t1_set : SET OF product_definition_relationship := [];
END_LOCAL;
t1_set := QUERY ( i <* product_definition_relationship |
VALUE_IN(which_class(i),'ship moulded form revision') );
violate := SIZEOF(QUERY ( k <* t1_set | (NOT
EXISTS(k.description)) )) > 0;
WHERE
wr1: (NOT violate);
END_RULE; -- ship_moulded_form_revision_has_description
RULE ship_overall_dimensions_has_properties FOR (
property_definition_representation,applied_classification_assignment);
LOCAL
t3_set : LIST OF property_definition := [];
violation : LOGICAL := FALSE;
t4_set : LIST OF product_definition := [];
t1_set : LIST OF product_definition := [];
c_a_set : SET OF applied_classification_assignment := [];
t2_set : SET OF property_definition_representation := [];
END_LOCAL;
c_a_set := QUERY ( i <* applied_classification_assignment |
(i.assigned_class.name = 'ship overall dimensions') );
REPEAT i := 1 TO HIINDEX(c_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
t2_set := QUERY ( i <* property_definition_representation |
(i.name = 'ship overall dimensions') );
REPEAT i := 1 TO HIINDEX(t2_set) BY 1;
t3_set := t3_set + t2_set[i].definition;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t3_set) BY 1;
t4_set := t4_set + t3_set[i].definition;
END_REPEAT;
violation := t1_set <> t4_set;
WHERE
wr1: (NOT violation);
END_RULE; -- ship_overall_dimensions_has_properties
RULE ship_point_compound_representation_has_name FOR (
applied_classification_assignment);
LOCAL
violation : LOGICAL := FALSE;
t1_set : SET OF compound_representation_item := [];
c_a_set : SET OF applied_classification_assignment := [];
arg_list : LIST OF STRING := ['point shape'];
t2_set : SET OF representation_item := [];
END_LOCAL;
c_a_set := QUERY ( i <* applied_classification_assignment |
(i.assigned_class.name = 'ship point') );
REPEAT i := 1 TO HIINDEX(c_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
REPEAT j := 1 TO HIINDEX(arg_list) BY 1 WHILE NOT violation;
t2_set := t1_set[i].item_element;
violation := SIZEOF(QUERY ( items <* t2_set | (items.name = arg_list[j]) )) <> 1;
END_REPEAT;
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; -- ship_point_compound_representation_has_name
RULE ship_surface_compound_representation_has_name FOR (
applied_classification_assignment);
LOCAL
violation : LOGICAL := FALSE;
t1_set : SET OF compound_representation_item := [];
c_a_set : SET OF applied_classification_assignment := [];
arg_list : LIST OF STRING := ['surface shape'];
t2_set : SET OF representation_item := [];
END_LOCAL;
c_a_set := QUERY ( i <* applied_classification_assignment |
(i.assigned_class.name = 'ship surface') );
REPEAT i := 1 TO HIINDEX(c_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
REPEAT j := 1 TO HIINDEX(arg_list) BY 1 WHILE NOT violation;
t2_set := t1_set[i].item_element;
violation := SIZEOF(QUERY ( items <* t2_set | (items.name = arg_list[j]) )) <> 1;
END_REPEAT;
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; -- ship_surface_compound_representation_has_name
RULE spacing_position_compound_representation_has_name FOR (
applied_classification_assignment);
LOCAL
violation : LOGICAL := FALSE;
t1_set : SET OF compound_representation_item := [];
c_a_set : SET OF applied_classification_assignment := [];
arg_list : LIST OF STRING := ['position number','position'];
t2_set : SET OF representation_item := [];
END_LOCAL;
c_a_set := QUERY ( i <* applied_classification_assignment |
(i.assigned_class.name = 'spacing position') );
REPEAT i := 1 TO HIINDEX(c_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
REPEAT j := 1 TO HIINDEX(arg_list) BY 1 WHILE NOT violation;
t2_set := t1_set[i].item_element;
violation := SIZEOF(QUERY ( items <* t2_set | (items.name = arg_list[j]) )) <> 1;
END_REPEAT;
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; -- spacing_position_compound_representation_has_name
RULE spacing_position_with_offset_compound_representation_has_class FOR (
applied_classification_assignment);
LOCAL
t3_set : SET OF representation_item := [];
violation : LOGICAL := FALSE;
t1_set : SET OF compound_representation_item := [];
c_a_set : SET OF applied_classification_assignment := [];
c_a_set2 : SET OF applied_classification_assignment := [];
t2_set : SET OF compound_representation_item := [];
END_LOCAL;
c_a_set := QUERY ( i <* applied_classification_assignment |
(i.assigned_class.name = 'spacing position with offset') );
REPEAT i := 1 TO HIINDEX(c_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
c_a_set2 := QUERY ( i <* applied_classification_assignment |
(i.assigned_class.name = 'spacing position') );
REPEAT i := 1 TO HIINDEX(c_a_set2) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set2[i].items) BY 1;
t2_set := t2_set + c_a_set2[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
REPEAT j := 1 TO HIINDEX(t1_set[i].item_element) BY 1;
t3_set := t3_set + t1_set[i].item_element;
END_REPEAT;
violation := SIZEOF(t3_set * t2_set) <> 1;
t3_set := [];
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; --spacing_position_with_offset_compound_representation_has_class
RULE spacing_position_with_offset_compound_representation_has_name FOR (
applied_classification_assignment);
LOCAL
violation : LOGICAL := FALSE;
t1_set : SET OF compound_representation_item := [];
c_a_set : SET OF applied_classification_assignment := [];
arg_list : LIST OF STRING := ['offset'];
t2_set : SET OF representation_item := [];
END_LOCAL;
c_a_set := QUERY ( i <* applied_classification_assignment |
(i.assigned_class.name = 'spacing position with offset') );
REPEAT i := 1 TO HIINDEX(c_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
REPEAT j := 1 TO HIINDEX(arg_list) BY 1 WHILE NOT violation;
t2_set := t1_set[i].item_element;
violation := SIZEOF(QUERY ( items <* t2_set | (items.name = arg_list[j]) )) <> 1;
END_REPEAT;
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; --spacing_position_with_offset_compound_representation_has_name
RULE stability_properties_for_floating_position_has_class FOR (
applied_classification_assignment);
LOCAL
t3_set : SET OF representation_item := [];
violation : LOGICAL := FALSE;
t1_set : SET OF compound_representation_item := [];
c_a_set : SET OF applied_classification_assignment := [];
c_a_set2 : SET OF applied_classification_assignment := [];
l_rep_item : list_representation_item;
t2_set : SET OF compound_representation_item := [];
END_LOCAL;
c_a_set := QUERY ( i <* applied_classification_assignment |
(i.assigned_class.name = 'stability properties for one floating position') );
REPEAT i := 1 TO HIINDEX(c_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
c_a_set2 := QUERY ( i <* applied_classification_assignment | (i.
assigned_class.name = 'stability property') );
REPEAT i := 1 TO HIINDEX(c_a_set2) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set2[i].items) BY 1;
t2_set := t2_set + c_a_set2[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
REPEAT j := 1 TO HIINDEX(t1_set[i].item_element) BY 1;
l_rep_item := t1_set[i].item_element;
t3_set := t3_set + l_rep_item[j];
END_REPEAT;
violation := SIZEOF(t3_set * t2_set) < 1;
t3_set := [];
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; -- stability_properties_for_floating_position_has_class
RULE stability_properties_for_floating_position_has_name FOR (
applied_classification_assignment);
LOCAL
violation : LOGICAL := FALSE;
t1_set : SET OF compound_representation_item := [];
c_a_set : SET OF applied_classification_assignment := [];
arg_list : LIST OF STRING := ['centre of gravity above keel',
'definition of starting floating position'];
t2_set : SET OF representation_item := [];
END_LOCAL;
c_a_set := QUERY ( i <* applied_classification_assignment |
(i.assigned_class.name = 'stability properties for one floating position') );
REPEAT i:= 1 TO HIINDEX(c_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
REPEAT j := 1 TO HIINDEX(arg_list) BY 1 WHILE NOT violation;
t2_set := t1_set[i].item_element;
violation := SIZEOF(QUERY ( items <* t2_set | (items.name = arg_list[j]) )) <> 1;
END_REPEAT;
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; -- stability_properties_for_floating_position_has_name
RULE stability_property_has_name FOR
(applied_classification_assignment);
LOCAL
violation : LOGICAL := FALSE;
t1_set : SET OF compound_representation_item := [];
c_a_set : SET OF applied_classification_assignment := [];
arg_list : LIST OF STRING := ['angle of heel','righting arm',
'centre of buoyancy'];
t2_set : SET OF representation_item := [];
END_LOCAL;
c_a_set := QUERY ( i <* applied_classification_assignment |
(i.assigned_class.name = 'stability property') );
REPEAT i := 1 TO HIINDEX(c_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
REPEAT j := 1 TO HIINDEX(arg_list) BY 1 WHILE NOT violation;
t2_set := t1_set[i].item_element;
violation := SIZEOF(QUERY ( items <* t2_set | (items.name = arg_list[j]) )) <> 1;
END_REPEAT;
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; -- stability_property_has_name
RULE surface with identification assignment FOR (APPLIED_CLASSIFICATION_ASSIGNMENT);
LOCAL
c_a_set: SET OF APPLIED_CLASSIFICATION_ASSIGNMENT := [];
t1_set: SET OF surface := [];
t2_set: SET OF applied_identification_assignment := [];
arg_list: LIST OF STRING := ['surface with identifier'];
violation: LOGICAL := FALSE;
END_LOCAL;
(* get all classification_assignment instances *)
REPEAT j:=1 TO HIINDEX(arg_list) WHILE (NOT violation);
c_a_set := QUERY(i <* APPLIED_CLASSIFICATION_ASSIGNMENT |
i.assigned class.NAME = arg LIST[j]);
END_REPEAT;
(* get all instances of surface that have class id *)
REPEAT i := 1 TO HIINDEX(c_a_set);
REPEAT j := 1 TO HIINDEX(c_a_set[i].items);
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
t2_set := bag_to_set(USEDIN(t1_set[i],
'SHIP_MOULDED_FORM_SCHEMA.APPLIED_IDENTIFICATION_ASSIGNMENT.ITEMS'));
t2_set := QUERY ( j <* t2_set |
j.role.name = 'globally unambiguous identifier');
violation := NOT (SIZEOF(T2_SET) = 1);
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE; -- surface_with_identification_assignment
RULE unique_approvals_in_approval_history FOR (group,
applied_group_assignment);
LOCAL
violate : LOGICAL := FALSE;
t3_set : SET OF approval := [];
t1_set : SET OF group := [];
t2_set : SET OF applied_group_assignment := [];
END_LOCAL;
t1_set := QUERY ( i <* group | VALUE_IN(which_class(i),
'approval history') );
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violate;
t2_set := QUERY ( a <* applied_group_assignment |
(a.assigned_group = t1_set[i]) );
t3_set := QUERY ( b <* t2_set[1].items | (
'SHIP_MOULDED_FORM_SCHEMA.APPROVAL' IN TYPEOF(b)) );
violate := NOT VALUE_UNIQUE(t3_set);
END_REPEAT;
WHERE
wr1: (NOT violate);
END_RULE; -- unique_approvals_in_approval_history
RULE user_def_appendage_type_description_required FOR (representation);
LOCAL
violation : LOGICAL := FALSE;
END_LOCAL;
REPEAT i := 1 TO HIINDEX(representation) BY 1 WHILE NOT violation;
violation := (SIZEOF(QUERY ( r <* representation[i].items | ((
'SHIP_MOULDED_FORM_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN
TYPEOF(r)) AND (r.name = 'type of appendage') AND (r\
descriptive_representation_item.description = 'user defined')) ))
> 0) AND (SIZEOF(QUERY ( r <* representation[i].items |
(r.name = 'user def appendage type') )) = 0);
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; -- user_def_appendage_type_description_required
RULE user_def_function_description_required FOR (representation);
LOCAL
violation : LOGICAL := FALSE;
END_LOCAL;
REPEAT i := 1 TO HIINDEX(representation) BY 1 WHILE NOT violation;
violation := (SIZEOF(QUERY ( r <* representation[i].items | ((
'SHIP_MOULDED_FORM_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN
TYPEOF(r)) AND (r.name = 'function') AND (r\
descriptive_representation_item.description = 'user defined')) ))
> 0) AND (SIZEOF(QUERY ( r <* representation[i].items |
(r.name = 'user def function') )) = 0);
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; -- user_def_function_description_required
RULE valid_product_definition_for_class_moulded_form FOR (
applied_classification_assignment, applied_group_assignment);
LOCAL
violation : LOGICAL := FALSE;
t1_set : SET OF product_definition := [];
violate1 : LOGICAL;
violate2 : LOGICAL;
c_a_set : SET OF applied_classification_assignment := [];
gr_ass : SET OF applied_group_assignment := [];
groups : SET OF group := [];
END_LOCAL;
c_a_set := QUERY ( i <* applied_classification_assignment |
(i.assigned_class.name = 'ship moulded form') );
REPEAT i := 1 TO HIINDEX(c_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
gr_ass := QUERY ( i <* applied_group_assignment | (i.role.name = 'equivalence') );
REPEAT i := 1 TO HIINDEX(gr_ass) BY 1;
REPEAT j := 1 TO HIINDEX(gr_ass[i].items) BY 1;
IF gr_ass[i].items[j] IN t1_set THEN
groups := groups + gr_ass[i].assigned_group;
END_IF;
END_REPEAT;
END_REPEAT;
gr_ass := QUERY ( i <* applied_group_assignment |
((SIZEOF(i.items) <> 0) AND (i.role.name = 'item structure') AND
(i.assigned_group IN groups)) );
REPEAT i := 1 TO HIINDEX(gr_ass) BY 1 WHILE NOT violation;
REPEAT j := 1 TO HIINDEX(gr_ass[i].items) BY 1 WHILE NOT violation;
violate1 := VALUE_IN(which_class(gr_ass[i].items[j]), 'moulded form');
violate2 := VALUE_IN(which_class(gr_ass[i].items[j]), 'moulded form relationship');
violation := NOT (violate1 OR violate2);
END_REPEAT;
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; -- valid_product_definition_for_class_moulded_form
RULE version_creation_has_mandatory_attribute_description FOR (action);
LOCAL
violate : LOGICAL := FALSE;
t1_set : SET OF action := [];
END_LOCAL;
t1_set := QUERY ( i <* action | VALUE_IN(which_class(i),
'version creation') );
violate := SIZEOF(QUERY ( k <* t1_set | (NOT EXISTS(k.description)) )) > 0;
WHERE
wr1: (NOT violate);
END_RULE; -- version_creation_has_mandatory_attribute_description
RULE version_deletion_has_mandatory_attribute_description FOR (action);
LOCAL
violate : LOGICAL := FALSE;
t1_set : SET OF action := [];
END_LOCAL;
t1_set := QUERY ( i <* action | VALUE_IN(which_class(i),'version deletion') );
violate := SIZEOF(QUERY ( k <* t1_set | (NOT EXISTS(k.description)) )) > 0;
WHERE
wr1: (NOT violate);
END_RULE; -- version_deletion_has_mandatory_attribute_description
RULE version_history_has_exactly_one_assigned_group FOR (
applied_group_assignment, group);
LOCAL
violate : LOGICAL := FALSE;
t1_set : SET OF group := [];
set_1 : SET OF applied_group_assignment := [];
set_3 : SET OF group_item := [];
set_2 : SET OF applied_group_assignment := [];
END_LOCAL;
t1_set := QUERY ( a <* group | VALUE_IN(which_class(a),
'version history') );
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violate;
set_1 := QUERY ( b <* applied_group_assignment |
((b.assigned_group = t1_set[i]) AND (b.role.name = 'current version')) );
set_2 := QUERY ( c <* applied_group_assignment |
((c.assigned_group = t1_set[i]) AND (c.role.name = 'members')) );
violate := (SIZEOF(set_1) <> 1) OR (SIZEOF(set_2) <> 1);
IF NOT violate THEN set_3 := set_1[1].items * set_2[1].items;
violate := (SIZEOF(set_3) <> 1) OR (NOT
VALUE_IN(which_class(set_3 [1]),'versionable object'));
END_IF;
END_REPEAT;
WHERE
wr1: (NOT violate);
END_RULE; -- version_history_has_exactly_one_assigned_group
RULE version_history_is_referenced_by_at_least_one_versions FOR (
applied_group_assignment, group);
LOCAL
violate : LOGICAL := FALSE;
t1_set : SET OF group := [];
a_set : SET OF applied_group_assignment := [];
END_LOCAL;
t1_set := QUERY ( a <* group | VALUE_IN(which_class(a),
'version history') );
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violate;
a_set := QUERY ( b <* applied_group_assignment |
((b.assigned_group = t1_set[i]) AND (b.role.name = 'versions')) );
violate := SIZEOF(a_set) < 1;
END_REPEAT;
WHERE
wr1: (NOT violate);
END_RULE; --version_history_is_referenced_by_at_least_one_versions
RULE version_history_referenced_by_exactly_one_current_version FOR (
applied_group_assignment, group);
LOCAL
violate : LOGICAL := FALSE;
t1_set : SET OF group := [];
a_set : SET OF applied_group_assignment := [];
END_LOCAL;
t1_set := QUERY ( a <* group | VALUE_IN(which_class(a),
'version history') );
REPEAT := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violate;
a_set := QUERY ( b <* applied_group_assignment |
((b.assigned_group = t1_set[i]) AND (b.role.name = 'current version')) );
violate := SIZEOF(a_set) <> 1;
END_REPEAT;
WHERE
wr1: (NOT violate);
END_RULE; -- version_history_referenced_by_exactly_one_current_version
RULE version_history_referenced_by_multiple_roles FOR (
applied_group_assignment, group);
LOCAL
violate : LOGICAL := FALSE;
t1_set : SET OF group := [];
a_set : SET OF applied_group_assignment := [];
END_LOCAL;
t1_set := QUERY ( a <* group | VALUE_IN(which_class(a),
'version history') );
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violate;
a_set := QUERY ( b <* applied_group_assignment |
((b.assigned_group = t1_set[i]) AND (NOT (b.role.name IN ['versions',
'current version','relationships']))) );
violate := SIZEOF(a_set) < 1;
END_REPEAT;
WHERE
wr1: (NOT violate);
END_RULE; -- version_history_referenced_by_multiple_roles
RULE version_modification_has_mandatory_attribute_description FOR (action);
LOCAL
violate : LOGICAL := FALSE;
t1_set : SET OF action := [];
END_LOCAL;
t1_set := QUERY ( i <* action | VALUE_IN(which_class(i),
'version modification') );
violate := SIZEOF(QUERY ( k <* t1_set | (NOT EXISTS(k.description)) )) > 0;
WHERE
wr1: (NOT violate);
END_RULE; --version_modification_has_mandatory_attribute_description
RULE version_relationship_associates_with_versionable_object FOR (
applied_identification_assignment);
LOCAL
violate : LOGICAL := FALSE;
END_LOCAL;
REPEAT i := 1 TO HIINDEX(applied_identification_assignment) BY 1
WHILE NOT violate;
IF (SIZEOF(USEDIN(applied_identification_assignment[i],'SHIP_MOULDED_FO
RM_SCHEMA.IDENTIFICATION_ASSIGNMENT_RELATIONSHIP.'
+ 'RELATING_IDENTIFICATION_ASSIGNMENT')) > 0) OR
(SIZEOF(USEDIN(applied_identification_assignment[i],
'SHIP_MOULDED_FORM_SCHEMA.IDENTIFICATION_ASSIGNMENT_RELATIONSHIP.'
+ 'RELATED_IDENTIFICATION_ASSIGNMENT')) > 0) THEN
REPEAT j := 1 TO HIINDEX(applied_identification_assignment[i].items) BY 1 WHILE NOT violate;
violate := NOT VALUE_IN(which_class(applied_identification_assignment[i].items[j]),
'versionable object');
END_REPEAT;
END_IF;
END_REPEAT;
WHERE
wr1: (NOT violate);
END_RULE; --version_relationship_associates_with_versionable_object
RULE version_relationship_has_mandatory_attribute_description FOR (
identification_assignment_relationship);
LOCAL
violate : LOGICAL := FALSE;
t1_set : SET OF identification_assignment_relationship := [];
END_LOCAL;
t1_set := QUERY ( i <* identification_assignment_relationship |
VALUE_IN(which_class(i),'version relationship') );
violate := SIZEOF(QUERY ( k <* t1_set | (NOT EXISTS(k.description)) )) > 0;
WHERE
wr1: (NOT violate);
END_RULE; --version_relationship_has_mandatory_attribute_description
RULE version_relationship_has_unique_versions FOR (
identification_assignment_relationship);
LOCAL
violate : LOGICAL := FALSE;
t1_set : SET OF identification_assignment_relationship := [];
END_LOCAL;
t1_set := QUERY ( a <* identification_assignment_relationship |
VALUE_IN(which_class(a),'version relationship') );
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violate;
violate := t1_set[i].relating_identification_assignment.assigned_id
= t1_set[i].related_identification_assignment.assigned_id;
END_REPEAT;
WHERE
wr1: (NOT violate);
END_RULE; -- version_relationship_has_unique_versions
RULE versionable_object_has_one_version_id FOR (
applied_identification_assignment);
LOCAL
version_ids : SET OF applied_identification_assignment := [];
duplicate : LOGICAL := FALSE;
versionable_objects : BAG OF identification_item := [];
END_LOCAL;
version_ids := QUERY ( i <* applied_identification_assignment |
(i.role.name = 'version identifier') );
REPEAT i := 1 TO HIINDEX(version_ids) BY 1;
versionable_objects := versionable_objects + version_ids[i].items;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(versionable_objects) BY 1 WHILE NOT duplicate;
REPEAT j := i + 1 TO HIINDEX(versionable_objects) BY 1 WHILE NOT duplicate;
duplicate := versionable_objects[i] :=: versionable_objects[j];
END_REPEAT;
END_REPEAT;
WHERE
wr1: (NOT duplicate);
END_RULE; -- versionable_object_has_one_version_id
RULE versioned_action_request_with_identification_assignment FOR (
applied_classification_assignment);
LOCAL
violation : LOGICAL := FALSE;
t1_set : SET OF versioned_action_request := [];
c_a_set : SET OF applied_classification_assignment := [];
arg_list : LIST OF STRING := ['change request'];
t2_set : SET OF applied_identification_assignment := [];
END_LOCAL;
REPEAT j := 1 TO HIINDEX(arg_list) BY 1 WHILE NOT violation;
c_a_set := QUERY ( i <* applied_classification_assignment |
(i.assigned_class.name = arg_list[j]) );
END_REPEAT;
REPEAT i := 1 TO HIINDEX(c_a_set) BY 1;
REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
t1_set := t1_set + c_a_set[i].items[j];
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
t2_set := bag_to_set(USEDIN(t1_set[i],
'SHIP_MOULDED_FORM_SCHEMA.APPLIED_IDENTIFICATION_ASSIGNMENT.ITEMS'));
t2_set := QUERY ( j <* t2_set | (j.role.name = 'globally unambiguous identifier') );
violation := NOT (SIZEOF(t2_set) = 1);
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE; --versioned_action_request_with_identification_assignment
RULE versions_is_referenced_by_at_least_one_version_history FOR (
applied_group_assignment, group);
LOCAL
violate : LOGICAL := FALSE;
t1_set : SET OF group := [];
a_set : SET OF applied_group_assignment := [];
END_LOCAL;
t1_set := QUERY ( a <* group |
VALUE_IN(which_class(a),'versions') );
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violate;
a_set := QUERY ( b <* applied_group_assignment |
((b.assigned_group = t1_set[i]) AND (b.role.name = 'version history')) );
violate := SIZEOF(a_set) < 1;
END_REPEAT;
WHERE
wr1: (NOT violate);
END_RULE; --versions_is_referenced_by_at_least_one_version_history
FUNCTION acyclic_curve_replica(
rep: curve_replica;
parent: curve
): BOOLEAN;
IF NOT ('SHIP_MOULDED_FORM_SCHEMA.CURVE_REPLICA' IN TYPEOF(parent))
THEN
RETURN(TRUE);
END_IF;
IF parent :=: rep THEN
RETURN(FALSE);
ELSE
RETURN(acyclic_curve_replica(rep,parent\curve_replica.parent_curve));
END_IF;
END_FUNCTION; -- acyclic_curve_replica
FUNCTION acyclic_mapped_representation(
parent_set: SET OF representation;
children_set: SET OF representation_item
): BOOLEAN;
LOCAL
x : SET OF representation_item;
y : SET OF representation_item;
END_LOCAL;
x := QUERY ( z <* children_set | ('SHIP_MOULDED_FORM_SCHEMA.MAPPED_ITEM' IN TYPEOF(z)) );
IF SIZEOF(x) > 0 THEN
REPEAT i := 1 TO HIINDEX(x) BY 1;
IF x[i]\mapped_item.mapping_source.mapped_representation IN
parent_set THEN
RETURN(FALSE);
END_IF;
IF NOT acyclic_mapped_representation(parent_set +
x[i]\mapped_item.mapping_source.mapped_representation,
x[i]\mapped_item.mapping_source.mapped_representation.items) THEN RETURN(FALSE);
END_IF;
END_REPEAT;
END_IF;
x := children_set - x;
IF SIZEOF(x) > 0 THEN
REPEAT i := 1 TO HIINDEX(x) BY 1;
y := QUERY ( z <* bag_to_set(USEDIN(x[i],'')) | (
'SHIP_MOULDED_FORM_SCHEMA.REPRESENTATION_ITEM' IN
TYPEOF(z)) );
IF NOT acyclic_mapped_representation(parent_set,y) THEN
RETURN(FALSE);
END_IF;
END_REPEAT;
END_IF;
RETURN(TRUE);
END_FUNCTION; -- acyclic_mapped_representation
FUNCTION acyclic_point_replica(
rep: point_replica;
parent: point
): BOOLEAN;
IF NOT ('SHIP_MOULDED_FORM_SCHEMA.POINT_REPLICA' IN TYPEOF(parent))
THEN RETURN(TRUE);
END_IF;
IF parent :=: rep THEN RETURN(FALSE);
ELSE
RETURN(acyclic_point_replica(rep,parent\point_replica.parent_pt));
END_IF;
END_FUNCTION; -- acyclic_point_replica
FUNCTION acyclic_product_category_relationship(
relation: product_category_relationship;
children: SET OF product_category
): BOOLEAN;
LOCAL
x : SET OF product_category_relationship;
local_children : SET OF product_category;
END_LOCAL;
REPEAT i := 1 TO HIINDEX(children) BY 1;
IF relation.category :=: children[i] THEN
RETURN(FALSE);
END_IF;
END_REPEAT;
x := bag_to_set(USEDIN(relation.category,'SHIP_MOULDED_FORM_SCHEMA.' +
'PRODUCT_CATEGORY_RELATIONSHIP.SUB_CATEGORY'));
local_children := children + relation.category;
IF SIZEOF(x) > 0 THEN
REPEAT i := 1 TO HIINDEX(x) BY 1;
IF NOT
acyclic_product_category_relationship(x[i],local_children)
THEN RETURN(FALSE);
END_IF;
END_REPEAT;
END_IF;
RETURN(TRUE);
END_FUNCTION; -- acyclic_product_category_relationship
FUNCTION acyclic_surface_replica(
rep: surface_replica;
parent: surface
): BOOLEAN;
IF NOT ('SHIP_MOULDED_FORM_SCHEMA.SURFACE_REPLICA' IN
TYPEOF(parent))
THEN
RETURN(TRUE);
END_IF;
IF parent :=: rep THEN
RETURN(FALSE);
ELSE
RETURN(acyclic_surface_replica(rep,parent\surface_replica.parent_surface));
END_IF;
END_FUNCTION; -- acyclic_surface_replica
FUNCTION associated_surface(
arg: pcurve_or_surface
): surface;
LOCAL
surf : surface;
END_LOCAL;
IF 'SHIP_MOULDED_FORM_SCHEMA.PCURVE' IN TYPEOF(arg) THEN
surf := arg.basis_surface;
ELSE
surf := arg;
END_IF;
RETURN(surf);
END_FUNCTION; -- associated_surface
FUNCTION bag_to_set(
the_bag: BAG OF GENERIC:intype
): SET OF GENERIC:intype;
LOCAL
the_set : SET OF GENERIC:intype := [];
END_LOCAL;
IF SIZEOF(the_bag) > 0 THEN
REPEAT i := 1 TO HIINDEX(the_bag) BY 1;
the_set := the_set + the_bag[i];
END_REPEAT;
END_IF;
RETURN(the_set);
END_FUNCTION; -- bag_to_set
FUNCTION base_axis(
dim: INTEGER;
axis1, axis2, axis3: direction
): LIST [2:3] OF direction;
LOCAL
u : LIST [2:3] OF direction;
d1 : direction;
d2 : direction;
factor : REAL;
END_LOCAL;
IF dim = 3 THEN
d1 := NVL(normalise(axis3),dummy_gri || direction([0,0,1]));
d2 := first_proj_axis(d1,axis1);
u := [d2,second_proj_axis(d1,d2,axis2),d1];
ELSE
IF EXISTS(axis1) THEN
d1 := normalise(axis1);
u := [d1,orthogonal_complement(d1)];
IF EXISTS(axis2) THEN
factor := dot_product(axis2,u[2]);
IF factor < 0 THEN
u[2].direction_ratios[1] := -u[2].direction_ratios[1];
u[2].direction_ratios[2] := -u[2].direction_ratios[2];
END_IF;
END_IF;
ELSE
IF EXISTS(axis2) THEN
d1 := normalise(axis2);
u := [orthogonal_complement(d1),d1];
u[1].direction_ratios[1] := -u[1].direction_ratios[1];
u[1].direction_ratios[2] := -u[1].direction_ratios[2];
ELSE;
u := [dummy_gri || direction([1,0]),dummy_gri ||
direction([0,1])];
END_IF;
END_IF;
END_IF;
RETURN(u);
END_FUNCTION; -- base_axis
FUNCTION boolean_choose(
b: BOOLEAN;
choice1: GENERIC:item;
choice2: GENERIC:item
): GENERIC:item;
IF b THEN
RETURN(choice1);
ELSE
RETURN(choice2);
END_IF;
END_FUNCTION; -- boolean_choose
FUNCTION build_2axes(
ref_direction: direction
): LIST [2:2] OF direction;
LOCAL
d : direction := NVL(normalise(ref_direction),dummy_gri ||
direction([1,0]));
END_LOCAL;
RETURN([d,orthogonal_complement(d)]);
END_FUNCTION; -- build_2axes
FUNCTION build_axes(
axis, ref_direction: direction
): LIST [3:3] OF direction;
LOCAL
d1 : direction;
d2 : direction;
END_LOCAL;
d1 := NVL(normalise(axis),dummy_gri || direction([0,0,1]));
d2 := first_proj_axis(d1,ref_direction);
RETURN([d2,normalise(cross_product(d1,d2)).orientation,d1]);
END_FUNCTION; -- build_axes
FUNCTION closed_shell_reversed(
a_shell: closed_shell
): oriented_closed_shell;
LOCAL
the_reverse : oriented_closed_shell;
END_LOCAL;
IF 'SHIP_MOULDED_FORM_SCHEMA.ORIENTED_CLOSED_SHELL' IN
TYPEOF(a_shell)
THEN
the_reverse := dummy_tri || connected_face_set(a_shell\
connected_face_set.cfs_faces) || closed_shell() ||
oriented_closed_shell(a_shell\oriented_closed_shell.closed_shell_element,NOT
a_shell\oriented_closed_shell.orientation);
ELSE
the_reverse := dummy_tri || connected_face_set(a_shell\connected_face_set.cfs_faces)
|| closed_shell() || oriented_closed_shell(a_shell,FALSE);
END_IF;
RETURN(the_reverse);
END_FUNCTION; -- closed_shell_reversed
FUNCTION conditional_reverse(
p: BOOLEAN;
an_item: reversible_topology
): reversible_topology;
IF p THEN
RETURN(an_item);
ELSE
RETURN(topology_reversed(an_item));
END_IF;
END_FUNCTION; -- conditional_reverse
FUNCTION constraints_composite_curve_on_surface(
c: composite_curve_on_surface
): BOOLEAN;
LOCAL
n_segments : INTEGER := SIZEOF(c.segments);
END_LOCAL;
REPEAT k := 1 TO n_segments BY 1;
IF (NOT ('SHIP_MOULDED_FORM_SCHEMA.PCURVE' IN TYPEOF(c\
composite_curve.segments[k].parent_curve))) AND (NOT (
'SHIP_MOULDED_FORM_SCHEMA.SURFACE_CURVE' IN TYPEOF(c\
composite_curve.segments[k].parent_curve))) AND (NOT (
'SHIP_MOULDED_FORM_SCHEMA.COMPOSITE_CURVE_ON_SURFACE' IN
TYPEOF(c\composite_curve.segments[k].parent_curve))) THEN
RETURN(FALSE);
END_IF;
END_REPEAT;
RETURN(TRUE);
END_FUNCTION; -- constraints_composite_curve_on_surface
FUNCTION constraints_param_b_spline(
degree: INTEGER;
up_knots: INTEGER;
up_cp: INTEGER;
knot_mult: LIST OF INTEGER;
knots: LIST OF parameter_value
): BOOLEAN;
LOCAL
k : INTEGER;
sum : INTEGER;
result : BOOLEAN := TRUE;
END_LOCAL;
sum := knot_mult[1];
REPEAT i := 2 TO up_knots BY 1;
sum := sum + knot_mult[i];
END_REPEAT;
IF (degree < 1) OR (up_knots < 2) OR (up_cp < degree) OR (sum <> (
degree + up_cp + 2)) THEN
result := FALSE;
RETURN(result);
END_IF;
k := knot_mult[1];
IF (k < 1) OR (k > (degree + 1)) THEN
result := FALSE;
RETURN(result);
END_IF;
REPEAT i := 2 TO up_knots BY 1;
IF (knot_mult[i] < 1) OR (knots[i] <= knots [i - 1]) THEN
result := FALSE;
RETURN(result);
END_IF;
k := knot_mult[i];
IF (i < up_knots) AND (k > degree) THEN
result := FALSE;
RETURN(result);
END_IF;
IF (i = up_knots) AND (k > (degree + 1)) THEN
result := FALSE;
RETURN(result);
END_IF;
END_REPEAT;
RETURN(result);
END_FUNCTION; -- constraints_param_b_spline
FUNCTION cross_product(
arg1, arg2: direction
): vector;
LOCAL
v2 : LIST [3:3] OF REAL;
v1 : LIST [3:3] OF REAL;
mag : REAL;
res : direction;
result : vector;
END_LOCAL;
IF (NOT EXISTS(arg1)) OR (argl.dim = 2) OR (NOT EXISTS(arg2)) OR
(arg2.dim = 2) THEN
RETURN(?);
ELSE
BEGIN
v1 := normalise(arg1).direction_ratios;
v2 := normalise(arg2).direction_ratios;
res := dummy_gri || direction([(v1[2] * v2[3]) - (v1[3] * v2[2]),(
v1[3] * v2[1]) - (v1[1] * v2[3]),(v1[1] * v2[2]) - (v1[2] * v2[1])]);
mag := 0;
REPEAT i := 1 TO 3 BY 1;
mag := mag + (res.direction_ratios[i] * res.direction_ratios[i]);
END_REPEAT;
IF mag > 0 THEN
result := dummy_gri || vector(res,SQRT(mag));
ELSE
result := dummy_gri || vector(arg1,0);
END_IF;
RETURN(result);
END;
END_IF;
END_FUNCTION; -- cross_product
FUNCTION curve_weights_positive(
b: rational_b_spline_curve
): BOOLEAN;
LOCAL
result : BOOLEAN := TRUE;
END_LOCAL;
REPEAT i := 0 TO b.upper_index_on_control_points BY 1;
IF b.weights[i] <= 0 THEN
result := FALSE;
RETURN(result);
END_IF;
END_REPEAT;
RETURN(result);
END_FUNCTION; -- curve_weights_positive
FUNCTION derive_dimensional_exponents(
x: unit
): dimensional_exponents;
LOCAL
result : dimensional_exponents :=
dimensional_exponents(0,0,0,0,0,0,0);
END_LOCAL;
IF 'SHIP_MOULDED_FORM_SCHEMA.DERIVED_UNIT' IN TYPEOF(x) THEN
REPEAT i := LOINDEX(x.elements) TO HIINDEX(x.elements) BY 1;
result.length_exponent := result.length_exponent +
(x.elements[i].exponent * x.elements[i].unit.dimensions.length_exponent);
result.mass_exponent := result.mass_exponent + (x.elements[i].
exponent * x.elements[i].unit.dimensions.mass_exponent);
result.time_exponent := result.time_exponent +
(x.elements[i].exponent * x.elements[i].unit.dimensions.time_exponent);
result.electric_current_exponent := result.
electric_current_exponent + (x.elements[i].exponent * x.
elements[i].unit.dimensions.electric_current_exponent);
result.thermodynamic_temperature_exponent := result.
thermodynamic_temperature_exponent + (x.elements[i].exponent *
x.elements[i].unit.dimensions.thermodynamic_temperature_exponent);
result.amount_of_substance_exponent := result.
amount_of_substance_exponent + (x.elements[i].exponent *
x.elements[i].unit.dimensions.amount_of_substance_exponent);
result.luminous_intensity_exponent := result.
luminous_intensity_exponent + (x.elements[i].exponent *
x.elements[i].unit.dimensions.luminous_intensity_exponent);
END_REPEAT;
ELSE
result := x.dimensions;
END_IF;
RETURN(result);
END_FUNCTION; -- derive_dimensional_exponents
FUNCTION dimension_of(
item: geometric_representation_item
): dimension_count;
LOCAL
x : SET OF representation;
y : representation_context;
dim : dimension_count;
END_LOCAL;
IF 'SHIP_MOULDED_FORM_SCHEMA.CARTESIAN_POINT' IN TYPEOF(item)
THEN
dim := SIZEOF(item\cartesian_point.coordinates);
RETURN(dim);
END_IF;
IF 'SHIP_MOULDED_FORM_SCHEMA.DIRECTION' IN TYPEOF(item) THEN
dim := SIZEOF(item\direction.direction_ratios);
RETURN(dim);
END_IF;
IF 'SHIP_MOULDED_FORM_SCHEMA.VECTOR' IN TYPEOF(item) THEN
dim := SIZEOF(item\vector.orientation\direction.direction_ratios);
RETURN(dim);
END_IF;
x := using_representations(item);
y := x[1].context_of_items;
dim := y\geometric_representation_context.coordinate_space_dimension;
RETURN(dim);
END_FUNCTION; -- dimension_of
FUNCTION dimensions_for_si_unit(
n: si_unit_name
): dimensional_exponents;
CASE n OF
metre : RETURN(dimensional_exponents(1,0,0,0,0,0,0));
gram : RETURN(dimensional_exponents(0,1,0,0,0,0,0));
second : RETURN(dimensional_exponents(0,0,1,0,0,0,0));
ampere : RETURN(dimensional_exponents(0,0,0,1,0,0,0));
kelvin : RETURN(dimensional_exponents(0,0,0,0,1,0,0));
mole RETURN(dimensional_exponents(0,0,0,0,0,1,0));
candela : RETURN(dimensional_exponents(0,0,0,0,0,0,1));
radian : RETURN(dimensional_exponents(0,0,0,0,0,0,0));
steradian : RETURN(dimensional_exponents(0,0,0,0,0,0,0));
hertz : RETURN(dimensional_exponents(0,0,-1,0,0,0,0));
newton : RETURN(dimensional_exponents(1,1,-2,0,0,0,0));
pascal : RETURN(dimensional_exponents(-1,1,-2,0,0,0,0));
joule : RETURN(dimensional_exponents(2,1,-2,0,0,0,0));
watt : RETURN(dimensional_exponents(2,1,-3,0,0,0,0));
coulomb : RETURN(dimensional_exponents(0,0,1,1,0,0,0));
volt : RETURN(dimensional_exponents(2,1,-3,-1,0,0,0));
farad : RETURN(dimensional_exponents(-2,-1,4,1,0,0,0));
ohm : RETURN(dimensional_exponents(2,1,-3,-2,0,0,0));
siemens : RETURN(dimensional_exponents(-2,-1,3,2,0,0,0));
weber : RETURN(dimensional_exponents(2,1,-2,-1,0,0,0));
tesla : RETURN(dimensional_exponents(0,1,-2,-1,0,0,0));
henry : RETURN(dimensional_exponents(2,1,-2,-2,0,0,0));
degree_celsius : RETURN(dimensional_exponents(0,0,0,0,1,0,0));
lumen : RETURN(dimensional_exponents(0,0,0,0,0,0,1));
lux : RETURN(dimensional_exponents(-2,0,0,0,0,0,1));
becquerel : RETURN(dimensional_exponents(0,0,-1,0,0,0,0));
gray : RETURN(dimensional_exponents(2,0,-2,0,0,0,0));
sievert : RETURN(dimensional_exponents(2,0,-2,0,0,0,0));
OTHERWISE : RETURN(?);
END_CASE;
END_FUNCTION; -- dimensions_for_si_unit
FUNCTION dot_product(
arg1, arg2: direction
): REAL;
LOCAL
ndim : INTEGER;
scalar : REAL;
vec1 : direction;
vec2 : direction;
END_LOCAL;
IF (NOT EXISTS(arg1)) OR (NOT EXISTS(arg2)) THEN
scalar := ?;
ELSE
IF arg1.dim <> arg2.dim THEN
scalar := ?;
ELSE
BEGIN
vec1 := normalise(arg1);
vec2 := normalise(arg2);
ndim := arg1.dim;
scalar := 0;
REPEAT i := 1 TO ndim BY 1;
scalar := scalar + (vec1.direction_ratios[i] * vec2.
direction_ratios[i]);
END_REPEAT;
END;
END_IF;
END_IF;
RETURN(scalar);
END_FUNCTION; -- dot_product
FUNCTION edge_reversed(
an_edge: edge
): oriented_edge;
LOCAL
the_reverse : oriented_edge;
END_LOCAL;
IF 'SHIP_MOULDED_FORM_SCHEMA.ORIENTED_EDGE' IN TYPEOF(an_edge)
THEN
the_reverse := dummy_tri ||
edge(an_edge.edge_end,an_edge.edge_start)
|| oriented_edge(an_edge\oriented_edge.edge_element,NOT an_edge\
oriented_edge.orientation);
ELSE
the_reverse := dummy_tri ||
edge(an_edge.edge_end,an_edge.edge_start)
|| oriented_edge(an_edge,FALSE);
END_IF;
RETURN(the_reverse);
END_FUNCTION; -- edge_reversed
FUNCTION face_bound_reversed(
a_face_bound: face_bound
): face_bound;
LOCAL
the_reverse : face_bound;
END_LOCAL;
IF 'SHIP_MOULDED_FORM_SCHEMA.FACE_OUTER_BOUND' IN
TYPEOF(a_face_bound)
THEN
the_reverse := dummy_tri ||
face_bound(a_face_bound\face_bound.bound,
NOT a_face_bound\face_bound.orientation) ||
face_outer_bound();
ELSE
the_reverse := dummy_tri || face_bound(a_face_bound.bound,NOT
a_face_bound.orientation);
END_IF;
RETURN(the_reverse);
END_FUNCTION; -- face_bound_reversed
FUNCTION face_reversed(
a_face: face
): oriented_face;
LOCAL
the_reverse : oriented_face;
END_LOCAL;
IF 'SHIP_MOULDED_FORM_SCHEMA.ORIENTED_FACE' IN TYPEOF(a_face)
THEN
the_reverse := dummy_tri ||
face(set_of_topology_reversed(a_face.bounds)) ||
oriented_face(a_face\oriented_face.face_element,NOT
a_face\oriented_face.orientation);
ELSE
the_reverse := dummy_tri ||
face(set_of_topology_reversed(a_face.bounds)) || oriented_face(a_face,FALSE);
END_IF;
RETURN(the_reverse);
END_FUNCTION; -- face_reversed
FUNCTION first_proj_axis(
z_axis, arg: direction
): direction;
LOCAL
x_vec : vector;
v : direction;
z : direction;
x_axis : direction;
END_LOCAL;
IF NOT EXISTS(z_axis) THEN
RETURN(?);
ELSE
z := normalise(z_axis);
IF NOT EXISTS(arg) THEN
IF z.direction_ratios <> [1,0,0] THEN
v := dummy_gri || direction([1,0,0]);
ELSE
v := dummy_gri || direction([0,1,0]);
END_IF;
ELSE
IF arg.dim <> 3 THEN
RETURN(?);
END_IF;
IF cross_product(arg,z).magnitude = 0 THEN
RETURN(?);
ELSE
v := normalise(arg);
END_IF;
END_IF;
x_vec := scalar_times_vector(dot_product(v,z),z);
x_axis := vector_difference(v,x_vec).orientation;
x_axis := normalise(x_axis);
END_IF;
RETURN(x_axis);
END_FUNCTION; -- first_proj_axis
FUNCTION get_basis_surface(
c: curve_on_surface
): SET [0:2] OF surface;
LOCAL
surfs : SET [0:2] OF surface;
n : INTEGER;
END_LOCAL;
surfs := [];
IF 'SHIP_MOULDED_FORM_SCHEMA.PCURVE' IN TYPEOF(c) THEN
surfs := [c\pcurve.basis_surface];
ELSE
IF 'SHIP_MOULDED_FORM_SCHEMA.SURFACE_CURVE' IN TYPEOF(c) THEN
n := SIZEOF(c\surface_curve.associated_geometry);
REPEAT i := 1 TO n BY 1;
surfs := surfs + associated_surface(c\surface_curve.
associated_geometry[i]);
END_REPEAT;
END_IF;
END_IF;
IF 'SHIP_MOULDED_FORM_SCHEMA.COMPOSITE_CURVE_ON_SURFACE' IN
TYPEOF(c)
THEN
n := SIZEOF(c\composite_curve.segments);
surfs := get_basis_surface(c\composite_curve.segments[1].parent_curve);
IF n > 1 THEN
REPEAT i := 2 TO n BY 1;
surfs := surfs *
get_basis_surface(c\composite_curve.segments[i].parent_curve);
END_REPEAT;
END_IF;
END_IF;
RETURN(surfs);
END_FUNCTION; -- get_basis_surface
FUNCTION get_description_value(
obj: description_attribute_select
): text;
LOCAL
description_bag : BAG OF description_attribute := USEDIN(obj,
'SHIP_MOULDED_FORM_SCHEMA.' +
'DESCRIPTION_ATTRIBUTE.' + 'DESCRIBED_ITEM');
END_LOCAL;
IF SIZEOF(description_bag) = 1 THEN
RETURN(description_bag[1].attribute_value);
ELSE
RETURN(?);
END_IF;
END_FUNCTION; -- get_description_value
FUNCTION get_id_value(
obj: id_attribute_select
): identifier;
LOCAL
id_bag : BAG OF id_attribute := USEDIN(obj,
'SHIP_MOULDED_FORM_SCHEMA.' + 'ID_ATTRIBUTE.' +
'IDENTIFIED_ITEM');
END_LOCAL;
IF SIZEOF(id_bag) = 1 THEN
RETURN(id_bag[1].attribute_value);
ELSE
RETURN(?);
END_IF;
END_FUNCTION; -- get_id_value
FUNCTION get_name_value(
obj: name_attribute_select
): label;
LOCAL
name_bag : BAG OF name_attribute := USEDIN(obj,
'SHIP_MOULDED_FORM_SCHEMA.' + 'NAME_ATTRIBUTE.' +
'NAMED_ITEM');
END_LOCAL;
IF SIZEOF(name_bag) = 1 THEN
RETURN(name_bag[1].attribute_value);
ELSE
RETURN(?);
END_IF;
END_FUNCTION; -- get_name_value
FUNCTION get_role(
obj: role_select
): object_role;
LOCAL
role_bag : BAG OF role_association := USEDIN(obj,
'SHIP_MOULDED_FORM_SCHEMA.' + 'ROLE_ASSOCIATION.' + 'ITEM_WITH_ROLE');
END_LOCAL;
IF SIZEOF(role_bag) = 1 THEN
RETURN(role_bag[1].role);
ELSE
RETURN(?);
END_IF;
END_FUNCTION; -- get_role
FUNCTION item_in_context(
item: representation_item;
cntxt: representation_context
): BOOLEAN;
LOCAL
y : BAG OF representation_item;
END_LOCAL;
IF
SIZEOF(USEDIN(item,'SHIP_MOULDED_FORM_SCHEMA.REPRESENTATION.ITEMS')
* cntxt.representations_in_context) > 0 THEN RETURN(TRUE);
ELSE
y := QUERY ( z <* USEDIN(item,'') | (
'SHIP_MOULDED_FORM_SCHEMA.REPRESENTATION_ITEM' IN
TYPEOF(z)) );
IF SIZEOF(y) > 0 THEN
REPEAT i := 1 TO HIINDEX(y) BY 1;
IF item_in_context(y[i],cntxt) THEN
RETURN(TRUE);
END_IF;
END_REPEAT;
END_IF;
END_IF;
RETURN(FALSE);
END_FUNCTION; -- item_in_context
FUNCTION leap_year(
year: year_number
): BOOLEAN;
IF (((year MOD 4) = 0) AND ((year MOD 100) <> 0)) OR ((year MOD 400) = 0) THEN
RETURN(TRUE);
ELSE
RETURN(FALSE);
END_IF;
END_FUNCTION; -- leap_year
FUNCTION list_face_loops(
f: face
): LIST [0:?] OF loop;
LOCAL
loops : LIST [0:?] OF loop := [];
END_LOCAL;
REPEAT i := 1 TO SIZEOF(f.bounds) BY 1;
loops := loops + f.bounds[i].bound;
END_REPEAT;
RETURN(loops);
END_FUNCTION; -- list_face_loops
FUNCTION list_of_topology_reversed(
a_list: list_of_reversible_topology_item
): list_of_reversible_topology_item;
LOCAL
the_reverse : list_of_reversible_topology_item;
END_LOCAL;
the_reverse := [];
REPEAT i := 1 TO SIZEOF(a_list) BY 1;
the_reverse := topology_reversed(a_list[i]) + the_reverse;
END_REPEAT;
RETURN(the_reverse);
END_FUNCTION; -- list_of_topology_reversed
FUNCTION list_to_array(
lis: LIST [0:?] OF GENERIC:t;
low: INTEGER;
u: INTEGER
): ARRAY OF GENERIC:t;
LOCAL
n : INTEGER;
res : ARRAY [low:u] OF GENERIC:t;
END_LOCAL;
n := SIZEOF(lis);
IF n <> ((u - low) + 1) THEN
RETURN(?);
ELSE
res := [lis[1]];
REPEAT i := 2 TO n BY 1;
res[(low + i) - 1] := lis[i];
END_REPEAT;
RETURN(res);
END_IF;
END_FUNCTION; -- list_to_array
FUNCTION list_to_set(
l: LIST [0:?] OF GENERIC:t
): SET OF GENERIC:t;
LOCAL
s : SET OF GENERIC:t := [];
END_LOCAL;
REPEAT i := 1 TO SIZEOF(l) BY 1;
s := s + l[i];
END_REPEAT;
RETURN(s);
END_FUNCTION; -- list_to_set
FUNCTION make_array_of_array(
lis: LIST [1:?] OF LIST [1:?] OF GENERIC:t;
low1: INTEGER;
u1: INTEGER;
low2: INTEGER;
u2: INTEGER
): ARRAY OF ARRAY OF GENERIC:t;
LOCAL
res : ARRAY [low1:u1] OF ARRAY [low2:u2] OF GENERIC:t;
END_LOCAL;
IF ((u1 - low1) + 1) <> SIZEOF(lis) THEN
RETURN(?);
END_IF;
IF ((u2 - low2) + 1) <> SIZEOF(lis[1]) THEN
RETURN(?);
END_IF;
res := [list_to_array(lis[1],low2,u2)];
REPEAT i := 2 TO HIINDEX(lis) BY 1;
IF ((u2 - low2) + 1) <> SIZEOF(lis[i]) THEN
RETURN(?);
END_IF;
res[(low1 + i) - 1) := list_to_array(lis[i],low2,u2);
END_REPEAT;
RETURN(res);
END_FUNCTION; -- make_array_of_array
FUNCTION mixed_loop_type_set (
l: SET [0:?] OF loop
): LOGICAL;
LOCAL
poly_loop_type : LOGICAL;
END_LOCAL;
IF SIZEOF(l) <= 1 THEN
RETURN(FALSE);
END_IF;
poly_loop_type := 'SHIP_MOULDED_FORM_SCHEMA.POLY_LOOP' IN
TYPEOF(l[1]);
REPEAT i := 2 TO SIZEOF(l) BY 1;
IF ('SHIP_MOULDED_FORM_SCHEMA.POLY_LOOP' IN TYPEOF(l[i])) <>
poly_loop_type THEN
RETURN(TRUE);
END_IF;
END_REPEAT;
RETURN(FALSE);
END_FUNCTION; -- mixed_loop_type_set
FUNCTION nmsf_curve_check(
cv: representation_item
): BOOLEAN;
IF SIZEOF(['SHIP_MOULDED_FORM_SCHEMA.BOUNDED_CURVE',
'SHIP_MOULDED_FORM_SCHEMA.CONIC',
'SHIP_MOULDED_FORM_SCHEMA.CURVE_REPLICA',
'SHIP_MOULDED_FORM_SCHEMA.LINE',
'SHIP_MOULDED_FORM_SCHEMA.OFFSET_CURVE_3D') * TYPEOF(cv)) > 1 THEN
RETURN(FALSE);
ELSE
IF (('SHIP_MOULDED_FORM_SCHEMA.B_SPLINE_CURVE' IN TYPEOF(cv))
AND (cv\b_spline_curve.self_intersect = FALSE)) OR
(cv\b_spline_curve.self_intersect = UNKNOWN) THEN
RETURN(TRUE);
ELSE
IF SIZEOF(['SHIP_MOULDED_FORM_SCHEMA.CONIC',
'SHIP_MOULDED_FORM_SCHEMA.LINE'] * TYPEOF(cv)) = 1 THEN RETURN(TRUE);
ELSE
IF 'SHIP_MOULDED_FORM_SCHEMA.CURVE_REPLICA' IN TYPEOF(cv)
THEN
RETURN(nmsf_curve_check(cv\curve_replica.parent_curve));
ELSE
IF ('SHIP_MOULDED_FORM_SCHEMA.OFFSET_CURVE_3D' IN TYPEOF(cv))
AND ((cv\offset_curve_3d.self_intersect = FALSE) OR
(cv\offset_curve_3d.self_intersect = UNKNOWN)) AND (NOT(
'SHIP_MOULDED_FORM_SCHEMA.POLYLINE' IN TYPEOF(cv\
offset_curve_3d.basis_curve))) THEN
RETURN(nmsf_curve_check(cv\offset_curve_3d.basis_curve));
ELSE
IF 'SHIP_MOULDED_FORM_SCHEMA.PCURVE' IN TYPEOF(cv)
THEN
RETURN(nmsf_curve_check(cv\pcurve.reference_to_curve\
representation.items[1]) AND
nmsf_surface_check(cv\pcurve.basis_surface));
ELSE
IF 'SHIP_MOULDED_FORM_SCHEMA.SURFACE_CURVE' IN
TYPEOF(cv)
THEN
IF nmsf_curve_check(cv\surface_curve.curve_3d)
THEN
REPEAT i := 1 TO SIZEOF(cv\surface_curve.associated_geometry) BY 1;
IF 'SHIP_MOULDED_FORM_SCHEMA.SURFACE' IN
TYPEOF(cv\surface_curve.associated_geometry[i]) THEN
IF NOT nmsf_surface_check(cv\surface_curve.
associated_geometry[i]) THEN
RETURN(FALSE);
END_IF;
ELSE
IF 'SHIP_MOULDED_FORM_SCHEMA.PCURVE' IN
TYPEOF(cv\surface_curve.associated_geometry[i])
THEN
IF NOT nmsf_curve_check(cv\surface_curve.
associated_geometry[i]) THEN
RETURN(FALSE);
END_IF;
END_IF;
END_IF;
END_REPEAT;
RETURN(TRUE);
END_IF;
ELSE
IF 'SHIP_MOULDED_FORM_SCHEMA.POLYLINE' IN
TYPEOF(cv)
THEN
IF SIZEOF(cv\polyline.points) >= 3 THEN
RETURN(TRUE);
END_IF;
END_IF;
END_IF;
END_IF;
END_IF;
END_IF;
END_IF;
END_IF;
END_IF;
RETURN(FALSE);
END_FUNCTION; -- nmsf_curve_check
FUNCTION nmsf_surface_check(
surf: surface
): BOOLEAN;
IF 'SHIP_MOULDED_FORM_SCHEMA.ELEMENTARY_SURFACE' IN TYPEOF(surf)
THEN
RETURN(TRUE);
ELSE
IF 'SHIP_MOULDED_FORM_SCHEMA.SWEPT_SURFACE' IN TYPEOF(surf)
THEN
RETURN(nmsf_curve_check(surf\swept_surface.swept_curve));
ELSE
IF (('SHIP_MOULDED_FORM_SCHEMA.OFFSET_SURFACE' IN TYPEOF(surf))
AND (surf\offset_surface.self_intersect = FALSE)) OR
(surf\offset_surface.self_intersect = UNKNOWN) THEN
RETURN(nmsf_surface_check(surf\offset_surface.basis_surface));
ELSE
IF 'SHIP_MOULDED_FORM_SCHEMA.SURFACE_REPLICA' IN
TYPEOF(surf)
THEN
RETURN(nmsf_surface_check(surf\surface_replica.parent_surface));
ELSE
IF (('SHIP_MOULDED_FORM_SCHEMA.B_SPLINE_SURFACE' IN
TYPEOF(surf)) AND (surf\b_spline_surface.self_intersect = FALSE))
OR (surf\b_spline_surface.self_intersect = UNKNOWN)
THEN
RETURN(TRUE);
END_IF;
END_IF;
END_IF;
END_IF;
END_IF;
RETURN(FALSE);
END_FUNCTION; -- nmsf_surface_check
FUNCTION normalise(
arg: vector_or_direction
): vector_or_direction;
LOCAL
ndim : INTEGER;
v : direction;
vec : vector;
mag : REAL;
result : vector_or_direction;
END_LOCAL;
IF NOT EXISTS(arg) THEN
result := ?;
ELSE
ndim := arg.dim;
IF 'SHIP_MOULDED_FORM_SCHEMA.VECTOR' IN TYPEOF(arg) THEN
BEGIN
v := dummy_gri ||
direction(arg.orientation.direction_ratios);
IF arg.magnitude = 0 THEN
RETURN(?);
ELSE
vec := dummy_gri || vector(v,1);
END_IF;
END;
ELSE
v := dummy_gri || direction(arg.direction_ratios);
END_IF;
mag := 0;
REPEAT i := 1 TO ndim BY 1;
mag := mag + (v.direction_ratios[i] *
v.direction_ratios[i]);
END_REPEAT;
IF mag > 0 THEN
mag := SQRT(mag);
REPEAT i := 1 TO ndim BY 1;
v.direction_ratios[i] := v.direction_ratios[i] / mag;
END_REPEAT;
IF 'SHIP_MOULDED_FORM_SCHEMA.VECTOR' IN TYPEOF(arg) THEN
vec.orientation := v;
result := vec;
ELSE
result := v;
END_IF;
ELSE
RETURN(?);
END_IF;
END_IF;
RETURN(result);
END_FUNCTION; -- normalize
FUNCTION open_shell_reversed(
a_shell: open_shell
): oriented_open_shell;
LOCAL
the_reverse : oriented_open_shell;
END_LOCAL;
IF 'SHIP_MOULDED_FORM_SCHEMA.ORIENTED_OPEN_SHELL' IN
TYPEOF(a_shell)
THEN
the_reverse := dummy_tri || connected_face_set(a_shell\
connected_face_set.cfs_faces) || open_shell() ||
oriented_open_shell(a_shell\oriented_open_shell.open_shell_element,NOT
a_shell\oriented_open_shell.orientation);
ELSE
the_reverse := dummy_tri || connected_face_set(a_shell\
connected_face_set.cfs_faces) || open_shell() ||
oriented_open_shell(a_shell,FALSE);
END_IF;
RETURN(the_reverse);
END_FUNCTION; -- open_shell_reversed
FUNCTION orthogonal_complement(
vec: direction
): direction;
LOCAL
result : direction;
END_LOCAL;
IF (vec.dim <> 2) OR (NOT EXISTS(vec)) THEN
RETURN(?);
ELSE
result := dummy_gri ||
direction([-vec.direction_ratios[2],vec.
direction_ratios[1]]);
RETURN(result);
END_IF;
END_FUNCTION; -- orthogonal_complement
FUNCTION path_head_to_tail(
a_path: path
): BOOLEAN;
LOCAL
n : INTEGER;
p : BOOLEAN := TRUE;
END_LOCAL;
n := SIZEOF(a_path.edge_list);
REPEAT i := 2 TO n BY 1;
p := p AND (a_path.edge_list[i - 1].edge_end :=:
a_path.edge_list[i].edge_start);
END_REPEAT;
RETURN(p);
END_FUNCTION; -- path_head_to_tail
FUNCTION path_reversed(
a_path: path
): oriented_path;
LOCAL
the_reverse : oriented_path;
END_LOCAL;
IF 'SHIP_MOULDED_FORM_SCHEMA.ORIENTED_PATH' IN TYPEOF(a_path)
THEN
the_reverse := dummy_tri ||
path(list_of_topology_reversed(a_path.edge_list)) ||
oriented_path(a_path\oriented_path.path_element,
NOT a_path\oriented_path.orientation);
ELSE
the_reverse := dummy_tri ||
path(list_of_topology_reversed(a_path.
edge_list)) || oriented_path(a_path,FALSE);
END_IF;
RETURN(the_reverse);
END_FUNCTION; -- path_reversed
FUNCTION scalar_times_vector(
scalar: REAL;
vec: vector_or_direction
): vector;
LOCAL
v : direction;
mag : REAL;
result : vector;
END_LOCAL;
IF (NOT EXISTS(scalar)) OR (NOT EXISTS(vec)) THEN
RETURN(?);
ELSE
IF 'SHIP_MOULDED_FORM_SCHEMA.VECTOR' IN TYPEOF(vec) THEN
v := dummy_gri ||
direction(vec.orientation.direction_ratios);
mag := scalar * vec.magnitude;
ELSE
v := dummy_gri || direction(vec.direction_ratios);
mag := scalar;
END_IF;
IF mag < 0 THEN
REPEAT i := 1 TO SIZEOF(v.direction_ratios) BY 1;
v.direction_ratios[i] := -v.direction_ratios[i];
END_REPEAT;
mag := -mag;
END_IF;
result := dummy_gri || vector(normalise(v),mag);
END_IF;
RETURN(result);
END_FUNCTION; -- scalar_times_vector
FUNCTION second_proj_axis(
z_axis, x_axis, arg: direction
): direction;
LOCAL
temp : vector;
v : direction;
y_axis : vector;
END_LOCAL;
IF NOT EXISTS(arg) THEN
v := dummy_gri || direction([0,1,0]);
ELSE
v := arg;
END_IF;
temp := scalar_times_vector(dot_product(v,z_axis),z_axis);
y_axis := vector_difference(v,temp);
temp := scalar_times_vector(dot_product(v,x_axis),x_axis);
y_axis := vector_difference(y_axis,temp);
y_axis := normalise(y_axis);
RETURN(y_axis.orientation);
END_FUNCTION; -- second_proj_axis
FUNCTION set_of_topology_reversed(
a_set: set_of_reversible_topology_item
): set_of_reversible_topology_item;
LOCAL
the_reverse : set_of_reversible_topology_item;
END_LOCAL;
the_reverse := [];
REPEAT i := 1 TO SIZEOF(a_set) BY 1;
the_reverse := the_reverse + topology_reversed(a_set[i]);
END_REPEAT;
RETURN(the_reverse);
END_FUNCTION; -- set_of_topology_reversed
FUNCTION shell_reversed(
a_shell: shell
): shell;
IF 'SHIP_MOULDED_FORM_SCHEMA.OPEN_SHELL' IN TYPEOF(a_shell) THEN
RETURN(open_shell_reversed(a_shell));
ELSE
IF 'SHIP_MOULDED_FORM_SCHEMA.CLOSED_SHELL' IN TYPEOF(a_shell)
THEN
RETURN(closed_shell_reversed(a_shell));
ELSE
RETURN(?);
END_IF;
END_IF;
END_FUNCTION; -- shell_reversed
FUNCTION surface_weights_positive(
b: rational_b_spline_surface
): BOOLEAN;
LOCAL
result : BOOLEAN := TRUE;
END_LOCAL;
REPEAT i := 0 TO b.u_upper BY 1;
REPEAT j := 0 TO b.v_upper BY 1;
IF b.weights[i][j] <= 0 THEN
result := FALSE;
RETURN(result);
END_IF;
END_REPEAT;
END_REPEAT;
RETURN(result);
END_FUNCTION; -- surface_weights_positive
FUNCTION topology_reversed(
an_item: reversible_topology
): reversible_topology;
IF 'SHIP_MOULDED_FORM_SCHEMA.EDGE' IN TYPEOF(an_item) THEN
RETURN(edge_reversed(an_item));
END_IF;
IF 'SHIP_MOULDED_FORM_SCHEMA.PATH' IN TYPEOF(an_item) THEN
RETURN(path_reversed(an_item));
END_IF;
IF 'SHIP_MOULDED_FORM_SCHEMA.FACE_BOUND' IN TYPEOF(an_item) THEN
RETURN(face_bound_reversed(an_item));
END_IF;
IF 'SHIP_MOULDED_FORM_SCHEMA.FACE' IN TYPEOF(an_item) THEN
RETURN(face_reversed(an_item));
END_IF;
IF 'SHIP_MOULDED_FORM_SCHEMA.SHELL' IN TYPEOF(an_item) THEN
RETURN(shell_reversed(an_item));
END_IF;
IF 'SET' IN TYPEOF(an_item) THEN
RETURN(set_of_topology_reversed(an_item));
END_IF;
IF 'LIST' IN TYPEOF(an_item) THEN
RETURN(list_of_topology_reversed(an_item));
END_IF;
RETURN(?);
END_FUNCTION; -- topology_reversed
FUNCTION using_items(
item: founded_item_select;
checked_items: SET OF founded_item_select
): SET OF founded_item_select;
LOCAL
next_items : SET OF founded_item_select;
new_check_items : SET OF founded_item_select;
result_items : SET OF founded_item_select;
END_LOCAL;
result_items := [];
new_check_items := checked_items + item;
next_items := QUERY ( z <* bag_to_set(USEDIN(item,'')) | ((
'SHIP_MOULDED_FORM_SCHEMA.REPRESENTATION_ITEM' IN TYPEOF(z))
OR ('SHIP_MOULDED_FORM_SCHEMA.FOUNDED_ITEM' IN TYPEOF(z))) );
IF SIZEOF(next_items) > 0 THEN
REPEAT i := 1 TO HIINDEX(next_items) BY 1;
IF NOT (next_items[i] IN new_check_items) THEN
result_items := result_items + next_items[i] +
using_items(next_items[i],new_check_items);
END_IF;
END_REPEAT;
END_IF;
RETURN(result_items);
END_FUNCTION; -- using_items
FUNCTION using_representations(
item: founded_item_select
): SET OF representation;
LOCAL
results : SET OF representation;
intermediate_items : SET OF founded_item_select;
result_bag : BAG OF representation;
END_LOCAL;
results := [];
result_bag := USEDIN(item,
'SHIP_MOULDED_FORM_SCHEMA.REPRESENTATION.ITEMS');
IF SIZEOF(result_bag) > 0 THEN
REPEAT i := 1 TO HIINDEX(result_bag) BY 1;
results := results + result_bag[i];
END_REPEAT;
END_IF;
intermediate_items := using_items(item,[]);
IF SIZEOF(intermediate_items) > 0 THEN
REPEAT i := 1 TO HIINDEX(intermediate_items) BY 1;
result_bag := USEDIN(intermediate_items[i],
'SHIP_MOULDED_FORM_SCHEMA.REPRESENTATION.ITEMS');
IF SIZEOF(result_bag) > 0 THEN
REPEAT j := 1 TO HIINDEX(result_bag) BY 1;
results := results + result_bag[j];
END_REPEAT;
END_IF;
END_REPEAT;
END_IF;
RETURN(results);
END_FUNCTION; -- using_representations
FUNCTION valid_calendar_date(
date: calendar_date
): LOGICAL;
CASE date.month_component OF
1 : RETURN((1 <= date.day_component) AND (date.day_component <= 31));
2 : BEGIN
IF leap_year(date.year_component) THEN
RETURN((1 <= date.day_component) AND (date.day_component <= 29));
ELSE
RETURN((1 <= date.day_component) AND (date.day_component <= 28));
END_IF;
END;
3 : RETURN((1 <= date.day_component) AND (date.day_component <= 31));
4 : RETURN((1 <= date.day_component) AND (date.day_component <= 30));
5 : RETURN((1 <= date.day_component) AND (date.day_component <= 31));
6 : RETURN((1 <= date.day_component) AND (date.day_component <= 30));
7 : RETURN((1 <= date.day_component) AND (date.day_component <= 31));
8 : RETURN((1 <= date.day_component) AND (date.day_component <= 31));
9 : RETURN((1 <= date.day_component) AND (date.day_component <= 30));
10 : RETURN((1 <= date.day_component) AND (date.day_component <= 31));
11 : RETURN((1 <= date.day_component) AND (date.day_component <= 30));
12 : RETURN((1 <= date.day_component) AND (date.day_component <= 31));
END_CASE;
RETURN(FALSE);
END_FUNCTION; -- valid_calendar_date
FUNCTION valid_measure_value(
m: measure_value
): BOOLEAN;
IF 'REAL' IN TYPEOF(m) THEN
RETURN(m > 0);
ELSE
IF 'INTEGER' IN TYPEOF(m) THEN
RETURN(m > 0);
ELSE
RETURN(TRUE);
END_IF;
END_IF;
END_FUNCTION; -- valid_measure_value
FUNCTION valid_time(
time: local_time
): BOOLEAN;
IF EXISTS(time.second_component) THEN
RETURN(EXISTS(time.minute_component));
ELSE
RETURN(TRUE);
END_IF;
END_FUNCTION; -- valid_time
FUNCTION valid_units(
m: measure_with_unit
): BOOLEAN;
IF 'SHIP_MOULDED_FORM_SCHEMA.LENGTH_MEASURE' IN TYPEOF(m.
value_component) THEN
IF derive_dimensional_exponents(m.unit_component) <>
dimensional_exponents(1,0,0,0,0,0,0) THEN
RETURN(FALSE);
END_IF;
END_IF;
IF 'SHIP_MOULDED_FORM_SCHEMA.MASS_MEASURE' IN
TYPEOF(m.value_component)
THEN
IF derive_dimensional_exponents(m.unit_component) <>
dimensional_exponents(0,1,0,0,0,0,0) THEN
RETURN(FALSE);
END_IF;
END_IF;
IF 'SHIP_MOULDED_FORM_SCHEMA.TIME_MEASURE' IN
TYPEOF(m.value_component)
THEN
IF derive_dimensional_exponents(m.unit_component) <>
dimensional_exponents(0,0,1,0,0,0,0) THEN
RETURN(FALSE);
END_IF;
END_IF;
IF 'SHIP_MOULDED_FORM_SCHEMA.ELECTRIC_CURRENT_MEASURE' IN
TYPEOF(m.value_component) THEN
IF derive_dimensional_exponents(m.unit_component) <>
dimensional_exponents(0,0,0,1,0,0,0) THEN
RETURN(FALSE);
END_IF;
END_IF;
IF 'SHIP_MOULDED_FORM_SCHEMA.THERMODYNAMIC_TEMPERATURE_MEASURE' IN
TYPEOF(m.value_component) THEN
IF derive_dimensional_exponents(m.unit_component) <>
dimensional_exponents(0,0,0,0,1,0,0) THEN
RETURN(FALSE);
END_IF;
END_IF;
IF 'SHIP_MOULDED_FORM_SCHEMA.CELSIUS_TEMPERATURE_MEASURE' IN
TYPEOF(m.value_component) THEN
IF derive_dimensional_exponents(m.unit_component) <>
dimensional_exponents(0,0,0,0,1,0,0) THEN
RETURN(FALSE);
END_IF;
END_IF;
IF 'SHIP_MOULDED_FORM_SCHEMA.AMOUNT_OF_SUBSTANCE_MEASURE' IN
TYPEOF(m.value_component) THEN
IF derive_dimensional_exponents(m.unit_component) <>
dimensional_exponents(0,0,0,0,0,1,0) THEN
RETURN(FALSE);
END_IF;
END_IF;
IF 'SHIP_MOULDED_FORM_SCHEMA.LUMINOUS_INTENSITY_MEASURE' IN
TYPEOF(m.value_component) THEN
IF derive_dimensional_exponents(m.unit_component) <>
dimensional_exponents(0,0,0,0,0,0,1) THEN
RETURN(FALSE);
END_IF;
END_IF;
IF 'SHIP_MOULDED_FORM_SCHEMA.PLANE_ANGLE_MEASURE' IN TYPEOF(m.value_component) THEN
IF derive_dimensional_exponents(m.unit_component) <>
dimensional_exponents(0,0,0,0,0,0,0) THEN
RETURN(FALSE);
END_IF;
END_IF;
IF 'SHIP_MOULDED_FORM_SCHEMA.SOLID_ANGLE_MEASURE' IN TYPEOF(m.value_component) THEN
IF derive_dimensional_exponents(m.unit_component) <>
dimensional_exponents(0,0,0,0,0,0,0) THEN
RETURN(FALSE);
END_IF;
END_IF;
IF 'SHIP_MOULDED_FORM_SCHEMA.AREA_MEASURE' IN
TYPEOF(m.value_component)
THEN
IF derive_dimensional_exponents(m.unit_component) <>
dimensional_exponents(2,0,0,0,0,0,0) THEN
RETURN(FALSE);
END_IF;
END_IF;
IF 'SHIP_MOULDED_FORM_SCHEMA.VOLUME_MEASURE' IN TYPEOF(m.
value_component) THEN
IF derive_dimensional_exponents(m.unit_component) <>
dimensional_exponents(3,0,0,0,0,0,0) THEN
RETURN(FALSE);
END_IF;
END_IF;
IF 'SHIP_MOULDED_FORM_SCHEMA.RATIO_MEASURE' IN TYPEOF(m.
value_component) THEN
IF derive_dimensional_exponents(m.unit_component) <>
dimensional_exponents(0,0,0,0,0,0,0) THEN
RETURN(FALSE);
END_IF;
END_IF;
IF 'SHIP_MOULDED_FORM_SCHEMA.POSITIVE_LENGTH_MEASURE' IN
TYPEOF(m.value_component) THEN
IF derive_dimensional_exponents(m.unit_component) <>
dimensional_exponents(1,0,0,0,0,0,0) THEN
RETURN(FALSE);
END_IF;
END_IF;
IF 'SHIP_MOULDED_FORM_SCHEMA.POSITIVE_PLANE_ANGLE_MEASURE' IN
TYPEOF(m.value_component) THEN
IF derive_dimensional_exponents(m.unit_component) <>
dimensional_exponents(0,0,0,0,0,0,0) THEN
RETURN(FALSE);
END_IF;
END_IF;
RETURN(TRUE);
END_FUNCTION; -- valid_units
FUNCTION valid_wireframe_edge_curve(
crv: curve
): BOOLEAN;
IF SIZEOF(['SHIP_MOULDED_FORM_SCHEMA.LINE',
'SHIP_MOULDED_FORM_SCHEMA.CONIC',
'SHIP_MOULDED_FORM_SCHEMA.B_SPLINE_CURVE',
'SHIP_MOULDED_FORM_SCHEMA.POLYLINE'] * TYPEOF(crv)) = 1 THEN
RETURN(TRUE);
ELSE
IF 'SHIP_MOULDED_FORM_SCHEMA.CURVE_REPLICA' IN TYPEOF(crv)
THEN
RETURN(valid_wireframe_edge_curve(crv\curve_replica.parent_curve));
ELSE
IF 'SHIP_MOULDED_FORM_SCHEMA.OFFSET_CURVE_3D' IN TYPEOF(crv)
THEN
RETURN(valid_wireframe_edge_curve(crv\offset_curve_3d.basis_curve));
END_IF;
END_IF;
END_IF;
RETURN(FALSE);
END_FUNCTION; -- valid_wireframe_edge_curve
FUNCTION valid_wireframe_vertex_point(
pnt: point
): BOOLEAN;
IF 'SHIP_MOULDED_FORM_SCHEMA.CARTESIAN_POINT' IN TYPEOF(pnt)
THEN
RETURN(TRUE);
ELSE
IF 'SHIP_MOULDED_FORM_SCHEMA.POINT_REPLICA' IN TYPEOF(pnt)
THEN
RETURN(valid_wireframe_vertex_point(pnt\point_replica.parent_pt));
END_IF;
END_IF;
RETURN(FALSE);
END_FUNCTION; -- valid_wireframe_vertex_point
FUNCTION vector_difference(
arg1, arg2: vector_or_direction
): vector;
LOCAL
ndim : INTEGER;
mag2 : REAL;
mag1 : REAL;
mag : REAL;
res : direction;
vec1 : direction;
vec2 : direction;
result : vector;
END_LOCAL;
IF (NOT EXISTS(arg1)) OR (NOT EXISTS(arg2)) OR (arg1.dim <> arg2.dim)
THEN
RETURN(?);
ELSE
BEGIN
IF 'SHIP_MOULDED_FORM_SCHEMA.VECTOR' IN TYPEOF(arg1) THEN
mag1 := arg1.magnitude;
vec1 := arg1.orientation;
ELSE
mag1 := 1;
vec1 := arg1;
END_IF;
IF 'SHIP_MOULDED_FORM_SCHEMA.VECTOR' IN TYPEOF(arg2) THEN
mag2 := arg2.magnitude;
vec2 := arg2.orientation;
ELSE
mag2 := 1;
vec2 := arg2;
END_IF;
vec1 := normalise(vec1);
vec2 := normalise(vec2);
ndim := SIZEOF(vec1.direction_ratios);
mag := 0;
res := dummy_gri || direction(vec1.direction_ratios);
REPEAT i := 1 TO ndim BY 1;
res.direction_ratios[i] := (mag1 * vec1.direction_ratios[i]) + (
mag2 * vec2.direction_ratios[i]);
mag := mag + (res.direction_ratios[i] * res.direction_ratios[i]);
END_REPEAT;
IF mag > 0 THEN
result := dummy_gri || vector(res,SQRT(mag));
ELSE
result := dummy_gri || vector(vec1,0);
END_IF;
END;
END_IF;
RETURN(result);
END_FUNCTION; -- vector_difference
FUNCTION which_class(
t: GENERIC
): LIST OF STRING;
LOCAL
class_list : LIST OF STRING := [];
elements : BAG OF applied_classification_assignment;
END_LOCAL;
elements := USEDIN(t,'SHIP_MOULDED_FORM_SCHEMA.APPLIED_CLASSIFICATION_ASSIGNMENT.ITEMS');
REPEAT i := 1 TO HIINDEX(elements) BY 1;
IF elements[i]\classification_assignment.role.name = 'class membership' THEN
class_list := class_list +
elements[i]\classification_assignment.assigned_class\group.name;
END_IF;
END_REPEAT;
RETURN(class_list);
END_FUNCTION; -- which_class
END_SCHEMA; -- ship_moulded_form_schema
(обязательное)
СОКРАЩЕННЫЕ НАИМЕНОВАНИЯ ОБЪЕКТОВ ПРИКЛАДНОЙ
ИНТЕРПРЕТИРОВАННОЙ МОДЕЛИ
В таблице B.1 приведены сокращенные наименования объектов, указанных в ПИМ настоящего стандарта. Требования к использованию сокращенных наименований определены в методах реализации, описанных в ИСО 10303-21, ИСО 10303-22, ISO/TS 10303-28.
Таблица B.1
(обязательное)
Метод реализации определяет, какие типы поведения при обмене необходимы относительно настоящего стандарта. Соответствие настоящего стандарта должно быть реализовано в структуре обмена. Файловый формат должен быть закодирован в соответствии с синтаксисом и отображением языка EXPRESS, как определено в ИСО 10303-21, ИСО 10303-28, а также в ПИМ, определенной в приложении A настоящего стандарта. Заголовок структуры обмена должен определять использование настоящего стандарта посредством наименования схемы 'ship moulded form schema'.
По разным причинам некоторые сущности могут не полностью экспортироваться в структуру обмена. В ПИМ может быть обязательная информация, не имеющая соответствия в ПЭМ. Иногда приложение может не поддерживать всю информацию, предусмотренную для обмена данными. В других случаях информация может поддерживаться отправляющей системой, но не включаться в обмен данными. Тем не менее, препроцессор должен обеспечивать значения для всех обязательных атрибутов в файле обмена.
Если отправляющая система не предоставляет данных для требуемого строкового значения, препроцессор должен использовать ".UNUSED". или пустую строку ".
Для дальнейшего указания причины отсутствия данных используется следующее соглашение:
- пустая строка " указывает пользовательские данные, управляемые отправляющей системой, но не предоставленные для обмена данными. Поскольку программное обеспечение принимающей системы может зависеть от набора реалистичных значений данных для требуемых атрибутов, использование пустых строк не рекомендуется;
- строка со значением '.UNUSED.' указывает данные пользователя в обязательном атрибуте, который не управляется отправляющей системой, неизвестен на момент обмена данными или является обязательной информацией ПИМ, не имеющей соответствия в ПЭМ;
- $ используется в физическом файле, если необязательный атрибут не создан.
C.2 Требования к методу реализации, определенному в ИСО 10303-21
Если используется метод реализации ИСО 10303-21, формат файла должен быть закодирован в соответствии с синтаксисом и языковым отображением языка EXPRESS, определенным в ИСО 10303-21.
Элемент FILE_SCHEMA заголовка должен указывать имя используемой схемы EXPRESS и включать идентификатор информации об объекте (см. приложение E).
Пример - Приведенный ниже экземпляр идентифицирует схему ship_moulded_form:
FILE_SCHEMA (('SHIP_MOULDED_FORM_SCHEMA { 1 0 10303 216 2 1 1} '))
В ИСО 10303-21:2002 добавлена возможность указания конкретного класса соответствия, которому соответствует раздел "Данные файла обмена". Файлы обмена, соответствующие ISO 10303-21 издания 2002 г., должны содержать один или несколько экземпляров сущности Section_context в разделе "Заголовок файла".
Пример - SECTION_CONTEXT ($,('CC1'));
Если в файл обмена включен один раздел данных, то должен быть включен один экземпляр сущности Section_context, а значением атрибута section_context.section должно быть $. Набор значений атрибута section_context.context_identifiers должен содержать одно значение для идентификации конкретного класса соответствия прикладного протокола, которому соответствуют эти данные.
Значение атрибута должно быть одним из следующих:
- CC1;
- CC2;
- CC3;
- CC4;
- CC5.
(обязательное)
В данном приложении перечислены необязательные элементы настоящего стандарта. Реализация может выбирать поддержку любой комбинации этих необязательных элементов. Однако некоторые комбинации вариантов, вероятно, будут реализованы вместе. Эти комбинации называются классами соответствия и описаны в подразделах данного приложения.
Данное приложение представляет собой анкету, которая заполняется реализатором и может использоваться при подготовке к проверке соответствия в испытательной лаборатории. Заполненная форма называется ЗСРП.
Ряд вариантов (опций) определен в настоящем стандарте с целью их возможного использования в соответствующих реализациях. Некоторые из этих опций могут быть использованы (или не использованы) при динамическом выборе (для прогона), например, в качестве атрибутов OPTIONAL какого-либо объекта. Другие опции могут быть выбраны статически (в пределах времени формирования соответствующей конфигурации), например конкретный стиль геометрии, заданный в классе соответствия.
Вопросы:
1 Для упрощения ссылки, необходим идентификатор изделия или системы, с помощью которого тестируемая реализация STEP (стандарт для обмена данными об изделии) формируется в пакет и/или закупается.
Идентификатор (или наименование) изделия/системы: _____________
2 В настоящем стандарте определено 12 классов. Каждый класс задает подмножество конструктивов ПИМ. Данные классы описываются в настоящем стандарте (см. раздел 6). Для соответствия настоящего стандарта требуется хотя бы один из основных классов соответствия с 1 по 4.
Требуемые классы соответствия (функциональные возможности) - нужное обвести:
класс 1. Поддержка обмена гидростатическими данными;
класс 2. Поддержка обмена базовой геометрией теоретических обводов в форме таблицы ординат;
3 Соответствие настоящему стандарту может быть выполнено посредством одного или нескольких различных методов реализации. Эти методы реализации определяют необходимые типы выполнения обмена данными в соответствии с настоящим стандартом.
Требуемые формы реализации - нужное обвести:
- структура обмена (ИСО 10303-21);
- структура обмена (ИСО 10303-22);
- структура обмена (ISO/TS 10303-28).
4 Используется ли структура обмена в ISO/TS 10303-28, какая?
Структура обмена ISO/TS 10303-28: _____________
5 Если эта реализация получает данные, не отвечающие требованиям настоящего стандарта в части выбора класса(ов) соответствия или требованиям части 20 данной серии по выбранному методу реализации, должен быть выдан ответ по умолчанию. Ответ по умолчанию должен быть статическим.
Ответ по умолчанию: _____________
6 Соответствующая реализация должна обеспечивать статические опции, выбранные посредством последующей динамической оценки (тестирования) без необходимости внесения изменений. В среде пользователя соответствующая реализация должна постоянно обеспечивать выполнение выбранных статических опций, или обеспечивать авторизованный контроль пользователем изменений и определений выбранных статических опций, или то и другое (в зависимости от специфики данной опции).
Обеспечивает ли тестируемая реализация (ТР) некоторую свободу пользователю при изменении и определении статических опций?
Да или Нет
7 Если да, то какие?
(a) Класс(ы) соответствия: _____________
(b) Ответ по умолчанию: _____________
8 Формулировка соответствия должна включать идентификацию хотя бы одной стороны, заявляющей о соответствии данной реализации.
Эксперт(ы) (испытатель/сертификатор/аккредитатор): _____________
(обязательное)
E.1 Обозначение документа
Для обеспечения однозначной идентификации информационного объекта в открытой системе настоящему стандарту присвоен идентификатор объекта {iso standard 10303 part(216) version(2)}.
Смысл данного обозначения определен в ИСО/МЭК 8824-1 и описан в ИСО 10303-1.
E.2 Обозначение схемы
Для обеспечения однозначной идентификации схемы ship_moulded_form_schema в открытой системе полной схеме ship_moulded_form_schema присвоен идентификатор объекта
{iso standard 10303 part(216) version(2) object(1) ship-moulded-form-schema(1)} (см. приложение A).
Смысл данного обозначения определен в ИСО/МЭК 8824-1 и описан в ИСО 10303-1.
(справочное)
ПФМ предназначена для облегчения понимания области применения и информационных требований, определяемых в настоящем стандарте. Данная модель представлена в виде набора рисунков, на которых показаны диаграммы действий, и набора определений видов деятельности и их данных. Виды деятельности и потоки данных, выходящие за область применения, отмечены звездочкой.
ПФМ охватывает виды деятельности, выходящие за рамки данного ПП. В схемах использована измененная нотация IDEF0 [9]. Базовая нотация показана на рисунке F.1. Каждый вид деятельности может быть разбит на части с целью более детального рассмотрения. Если какой-либо вид деятельности разбит на части, то он представлен на отдельном рисунке.
![]() Как и любая модель IDEF0, ПФМ зависит от конкретной точки зрения и цели. Точка зрения ПФМ определяется инженером-технологом. Целью ПФМ является объяснение контекста и области применения данного ПП.
Это функциональная модель жизненного цикла во всем судостроении. Существует несколько диаграмм деятельности, на которых все виды деятельности выходят за рамки, но они важны для иллюстрации того, как разрабатывался процесс изготовления детали и как были получены требования, входящие в объем работ.
Примечание - Точка зрения ПФМ представляет собой глобальный процесс разработки судна. Эта функциональная модель определяет виды деятельности жизненного цикла для всех ПП в области судостроения. Виды деятельности, связанные с жизненным циклом в судостроении, не развернутые в данной функциональной модели, подробно описаны в других прикладных протоколах в области судостроения.
F.1 Определения и сокращения ПФМ
Ниже приведены термины, используемые в прикладной функциональной модели. Термины, отмеченные "звездочкой", не входят в область применения данного прикладного протокола.
Определения, приведенные в данном приложении, не заменяют определения, приведенные в основном тексте настоящего стандарта.
F.1.1 утвержденный проект (approved design): Состояние передачи проекта для производства и инспекции.
F.1.2 планы расположения (arrangements)*: Отсеки и помещения судна.
Примечание - Любое описание планов расположения будет включать соответствующие определения назначения отсека или помещения.
F.1.3 сборка судна (assemble ship)*: Этап изготовления судна, в ходе которого собираются модульные блоки и дополнительные части.
Примечание - Результатом является собранное судно, которое должно еще пройти испытания.
F.1.4 информация об эксплуатационной готовности, надежности и ремонтопригодности (availability, reliability and maintainability information)*: Информация, необходимая для монтажа и планового обслуживания всех компонентов на судне.
F.1.5 основные параметры корпуса (basic hull parameters): Главные размеры и пропорции, основанные на оценках по данным за предыдущие периоды или взятые по предварительным проектным разработкам.
F.1.6 бюджет (budget)*: Ограниченные денежные средства на проектирование, строительство и техническое обслуживание судна.
F.1.7 расчет с применением вычислительной гидродинамики (calculate CFD)*: Выполнение расчета движения жидкости вокруг корпуса.
Примечание - Эти результаты используют в расчетах требований к гидродинамике и силовым двигателям.
F.1.8 расчет стоимости судна (calculate cost of ship)*: Описание формирования документов для переговоров на основе технических данных о продукции и расчет сметной стоимости ее изготовления.
Примечание - Результаты этого вида деятельности могут включать документацию о цене продажи, план обеспечения финансирования, а также документы, описывающие финансирование заемными средствами и возможные займы.
F.1.9 расчет гидростатических характеристик (calculate hydrostatic properties): Выполнение расчета теоретической плавучей части судна исходя из его проектных параметров.
F.1.10 свидетельства (certificates)*: Документы, лицензии и разрешения, выданные на готовое судно.
F.1.11 проверка проекта в части правил и нормативов (check design against rules and regulations): Рассмотрение проекта для обеспечения соответствия требованиям национальной и международной классификации.
Примечание - Это вид деятельности высшего уровня для утверждения по утверждению базисного проекта в рамках процесса утверждения и сертификации. Содержание этого вида деятельности одинаково для всех судов, когда речь идет о соответствии основным правилам класса, но может отличаться, когда речь идет о дополнительных правилах класса (типе судна) и нотациях регистра. Выполняемые виды деятельности адаптированы к требованиям правил в части общего расположения и глобальной прочности. Эта часть утверждения необходима до того, как верфь сможет начать заказывать сталь.
F.1.12 классификационное общество (Classification Society): Организация, которая повышает безопасность человеческой жизни и имущества в море, обеспечивая правила, положения и персонал для оценки и классификации судов в течение их жизненного цикла.
F.1.13 завершение и утверждение проекта машин и механизмов (complete and approve design of machinery)*: Выбор, устройство и утверждение всех машин и механизмов на судне.
F.1.14 завершение и утверждение проекта насыщения и распределительных систем (complete and approve design of outfitting and distribution systems)*: Выбор и утверждение всего необходимого достроечного оборудования.
Примечание - Выбор основывается, главным образом, на предыдущих проектах и в соответствии с установленными требованиями к судну. Также включает компоновку распределительных систем различных типов, таких как трубопроводы, электрические системы и системы ОВКВ.
F.1.15 завершение и утверждение проекта конструкции судна (complete and approve design of ship structure)*: Утверждение окончательного проекта судна до начала строительства.
F.1.16 завершение и утверждение проекта судна (complete and approve ship design): Создание, проверка и утверждение данных об изделии проекта судна, необходимых правил и нормативов, документов и классификационных чертежей с использованием предварительного проекта.
Примечание - Результатом этого вида деятельности является утвержденный проект и график изготовления и поставки.
F.1.17 проведение приемочных испытаний (conduct acceptance trials): Окончательные испытания для поставки судна.
F.1.18 выполнение ходовых испытаний подрядчиком (conduct contractor sea trials): Ходовые испытания для проверки соответствия построенного судна контрактным требованиям.
F.1.19 выполненная строевая по шпангоутам (completed sectional area curve): Кривая, построенная путем представления площади каждого поперечного сечения, в виде точки на кривой, через заданные интервалы через корпус по всей длине судна (см. рисунок 43).
Примечание - Выполненная строевая по шпангоутам используется для оценки соответствия теоретических обводов корпуса.
F.1.20 консультанты (consultants): Организации и учреждения, предоставляющие определенные услуги верфям, судовладельцам и классификационным обществам в течение жизненного цикла судна.
F.1.21 контракт (contract): Юридическое соглашение, документирующее и утверждающее заказ на судно.
Примечание - Контракт используется как инструмент для ограничения последующих видов деятельности, таких как окончательный проект, утверждение и производство.
F.1.22 стоимость (cost)*: Рассчитываемые денежные затраты на судно, основанные на затратах на материалы, труд и накладные расходы.
F.1.23 выполнение предварительного проектирования (create preliminary design): Начальный этап проектирования судна с учетом классификационных правил, национальных и международных требований, ограничений на судостроительной верфи, а также требований владельца.
F.1.24 выполнение предварительных планов общего расположения (create preliminary general arrangements)*: Создание начальных планов деления на отсеки исходя из предварительного определения формы корпуса.
F.1.25 создание предварительной формы корпуса (create preliminary hull form): Начальный этап проектирования формы корпуса судна.
Примечание - Первый этап проектирования судна с использованием основных размеров и параметров формы судов-прототипов. Создают один или несколько вариантов предварительной формы судна.
F.1.26 выполнение предварительного проектирования машин и механизмов (create preliminary machinery design)*: Начальный выбор и расположение главных машин и механизмов судна.
Примечание - Включает главную силовую установку, систему валов, энергосистемы и погрузочно-разгрузочное оборудование.
F.1.27 выполнение предварительного проектирования насыщения (create preliminary outfitting design)*: Создание начального проекта корабельного достроечного оборудования.
Примечание - Включает распределительные системы, такие как трубопроводы и электрические системы.
F.1.28 выполнение предварительного конструктивного проектирования (create preliminary structure design)*: Создание начального проекта стальной конструкции и расположения основных конструктивных элементов.
F.1.29 принятие решения об обеспечении послепродажного и технического обслуживания (decide post-sales & maintenance support)*: Подготовка предложения по техническому обслуживанию судна.
Примечание - Эта часть относится к конкурсной пакетной документации и включает в себя обеспечение послепродажного обслуживания.
F.1.30 вывод из эксплуатации и разборка (decommission and disassemble)*: Фаза жизненного цикла судна, в ходе которой судно изымается из эксплуатации или демонтируется.
F.1.31 график выполнения проекта (design schedule): Данные, которые контролируют промежуток времени от этапа проектирования до производства.
F.1.32 данные потока (details of flow): Результаты анализа вычислительной гидродинамики, который моделирует поток жидкости вдоль корпуса. Используются для оценки сопротивления корпуса воде, а также при оценке требований к силовым установкам судна.
F.1.33 проектирование насыщения и распределительных систем (distribution and outfitting design)*: Выполнение проекта распределительных систем и насыщения.
Пример - К распределительным системам относятся системы ОВКВ, электрические и трубопроводные системы. К насыщению относятся двери, трапы, насосы, электродвигатели, а также пульты управления.
F.1.34 выполнение изменений параметров (do parametric variations): Выполнение оценки альтернативных проектных решений для корпуса, созданных путем изменения параметров теоретических обводов корпуса.
Примечание - При изменении скорости, длины или ширины судна меняется форма корпуса судна.
F.1.35 свидетельства на оборудование (equipment certificates)*: Свидетельства (сертификаты), выданные классификационным обществом по завершении изготовления элементов оборудования, которые будут собираться для создания конечного изделия.
F.1.36 оценка параметров формы (estimate form parameters): Определение предварительных параметров формы корпуса на основе предыдущих данных судна-прототипа и расчетных главных размерений.
F.1.37 оценка гидродинамики и мощности (estimate hydrodynamics and powering)*: Расчеты, аппроксимирующие данные гидродинамических характеристик для предварительной формы корпуса.
Пример - Типы оценок: сопротивление, ходкости, мореходность и маневренность.
F.1.38 оценка главных размерений и параметров (estimate main dimensions and parameters): Параметры и измерения, отвечающие требованиям клиентов.
Пример - К требованиям клиентов относятся скорость, загрузка, задача и емкости.
F.1.39 оценка маневренности (estimate manoeuvrability)*: Аппроксимация маневренности судна и сравнение результатов модельных испытаний с проектными требованиями.
Примечание - Подтверждение маневренности судна в основном обеспечивается на практике или путем модельных испытаний. Измерение усилий и моментов на рулях, а также радиуса поворота при модельных испытаниях будет выполняться либо в циркуляционных гидроканалах, либо в бассейнах для испытаний на маневренность.
F.1.40 оценка сопротивления и мощности (estimate resistance and powering)*: Расчеты, выполняемые на основе предыдущих данных для получения данных о мощности силовых установок и сопротивлении для эскизного предварительного проекта.
F.1.41 оценка мореходности (estimate sea-keeping)*: Расчеты теоретического поведения судна на волнении.
Примечание - Результирующие коэффициенты уравнений движения могут быть получены либо аналитическими, либо численными методами. Собственные периоды колебаний судна будут рассчитаны для бортовой, килевой и вертикальной качки.
F.1.42 оценка запроса и составление графика подготовки предложения (evaluate request and schedule bid): Функция судостроительной верфи в части выполнения анализа и рассмотрения заявки от судовладельца на новое судно.
F.1.43 придание обтекаемой формы корпусу (fair hull): Корректировки теоретического обвода корпуса для исправления любых искажений (аберраций) поверхности.
F.1.44 обратная связь (feedback): Возврат информации после выполнения какого-либо вида деятельности.
F.1.45 окончательное формирование и утверждение планов общего расположения (finalise and approve general arrangements)*: Окончательный проект распределения пространства и расположения отсеков и входов.
F.1.46 окончательное формирование и утверждение формы корпуса (finalise and approve hull form)*: Получение утвержденной законченной формы корпуса за счет выполнения предварительного проекта.
Примечание - Результатом этого вида деятельности является утвержденный проект формы корпуса.
F.1.47 окончательное формирование и утверждение гидродинамики и силовых установок (finalise and approve hydrodynamics and powering)*: Выполнение гидродинамического анализа для окончательного проекта.
Примечание - Включает соответствующие гидродинамические расчеты, такие как сопротивление, ходкость, мореходность и маневренность.
F.1.48 получение окончательных главных размерений и параметров (finalise main dimensions and parameters): Доработка модельных испытаний, анализа и требований к использованию.
F.1.49 определение носовой части корпуса (fore-body definition): Проектирование теоретических обводов корпуса, относящихся к носовой части судна.
Примечание - Носовой частью называется часть судна, идущая от передней стороны средней части корпуса до форштевня судна.
F.1.50 планы общего расположения (general arrangements)*: Проект распределения пространства и расположения отсеков и входов.
Примечание - Планом общее расположения судна является чертеж отсека доступом, показывающий местоположение, доступ и размер различных отсеков.
F.1.51 создание начального определения кормовой части корпуса (generate initial aft-body definition): Установка основной формы теоретического обвода корпуса, относящейся к кормовой части корпуса судна, на основе главных размерений, предварительной формы корпуса и эксплуатационных характеристик с учетом количества и размера гребных винтов.
Примечание - Кормовая часть корпуса судна - это часть судна в корму от средней части судна (для цилиндрической вставки корпуса) или мидель-шпангоута (для нецилиндрической вставки корпуса).
F.1.52 создание начального определения палубы (generate initial deck definition): Определение положения и формы главной открытой палубы судна по главным размерам, предварительной форме корпуса и эксплуатационным характеристикам.
F.1.53 создание начального определения носовой части корпуса (generate initial fore-body definition): Установка основной формы теоретического обвода корпуса, относящейся к носовой части корпуса судна, на основе главных размерений, предварительной формы корпуса и эксплуатационных характеристик.
Примечание - Носовая часть корпуса судна - это часть судна в нос от средней части судна (для цилиндрической вставки корпуса) или мидель-шпангоута (для нецилиндрической вставки корпуса).
F.1.54 создание начального определения формы корпуса (generate initial hull form definition): Установка первичной формы теоретического обвода корпуса на основе рассчитанных главных размерений, предварительной формы корпуса и эксплуатационных характеристик.
F.1.55 создание начального определения средней части корпуса (generate initial mid-body definition): Установка основной формы теоретического обвода корпуса, относящейся к средней части корпуса судна, на основе главных размерений, предварительной формы корпуса и эксплуатационных характеристик.
F.1.56 данные из предыдущих проектов (historical data from previous designs): Данные, хранящиеся на судостроительной верфи или в модельном бассейне, по предыдущим проектам судов.
Примечание - Эти данные используют для оценки гидродинамики, требований к силовым установкам и мореходности.
F.1.57 параметры формы корпуса (hull form parameters): Коэффициент полноты водоизмещения, призматический коэффициент и число Фруде, используемые на этапе предварительного проектирования для оценки гидростатических и гидродинамических характеристик судна.
F.1.58 сечения формы корпуса (hull form sections): Деления теоретических обводов корпуса между плоскостными сечениями по продольной оси судна.
F.1.59 определение формы теоретического обвода корпуса с палубой (hull moulded form with deck definition): Теоретический обвод корпуса, включающий водонепроницаемую палубу судна.
F.1.60 теоретический обвод корпуса (hull moulded form): Поверхность, определяющая форму корпуса судна.
Примечание - Включает определения формы корпуса в кормовой, средней и носовой части, но не учитывает толщину материала, из которого изготавливается корпус.
F.1.61 результаты в части гидродинамики и силовой установки (hydrodynamics & powering results)*: Конструкторские расчеты и данные модельных испытаний в опытовом бассейне.
Примечание - Содержат данные о сопротивлении, ходкости, рабочих характеристиках гребного винта, полезной мощности двигателей, эксплуатационной скорости, мореходности и маневренности.
F.1.62 таблица гидростатических характеристик (hydrostatics table): Таблицы с данными, описывающими гидростатические характеристики судна, полученные в результате расчетов на начальном и конечном этапах проектирования.
F.1.63 знания и опыт (knowledge and experience): Предыдущая история работы компании, осмысление информации о судах, понимание проблемных областей и способность выполнять анализ в отношении судна на протяжении всего его жизненного цикла.
F.1.64 законы, правила и нормативы (laws, rules and regulations): Национальные законы, законодательные акты и правила классификационных обществ, которые используются для управления проектированием, производством, эксплуатацией, техническим обслуживанием и утилизацией судна.
F.1.65 перечень необходимых свидетельств (list of required certificates)*: Свидетельства (сертификаты) на судно, выданные классификационным обществом, национальными и международными регулирующими органами.
F.1.66 условия загрузки (loading conditions)*: Количества груза, водяного балласта и расходных материалов, определенных для каждого помещения или отсека, которые используются в качестве основы для проектирования.
Пример - К расходным материалам относятся запасы продуктов, топлива и медикаментов.
F.1.67 руководство по обеспечению остойчивости и загрузки (loading and stability manual): Буклет, хранящийся на борту судна, в котором указаны предписанные пределы загрузки и разгрузки судна в зависимости от прочности и остойчивости судна.
F.1.68 проект машин и механизмов (machinery design): Проектные чертежи, прототипы, а также модели в электронном формате машин и механизмов судна.
Примечание - Результаты, полученные в процессе окончательного проектирования.
F.1.69 главное размерение (main dimension): Длина, ширина, высота и осадка судна.
Примечание - Оценивают во время предварительного проектирования теоретического обвода корпуса, а затем окончательно уточняют на этапе основного проектирования.
F.1.70 вес машин и механизмов (machinery weights): Оцененный или рассчитанный проектный вес всех машин и механизмов на борту судна.
Примечание - Являются результатом нескольких расчетов и проектной деятельности.
F.1.71 результаты в части маневрирования (manoeuvring results)*: Просчитанные результаты зигзагообразных маневров, запланированных движений и поворотов, основанные на предыдущих модельных испытаниях в опытовом бассейне или ходовых испытаниях.
F.1.72 производственные ограничения (manufacturing restrictions): Ограничения процессов строительства, сборки и проектирования судов, регулируемые доступными технологиями и мощностями судостроительной верфи.
F.1.73 ведомость материалов (material list)*: Перечень всех исходных материалов, необходимых для изготовления судна.
Примечание - Результат процесса окончательного проектирования.
F.1.74 определение средней части корпуса (mid-body definition): Проект теоретического обвода корпуса прямостенной части корпуса, которая включает в себя проект плоскости мидель-шпангоута судна, которая идет между кормовой частью и носовой частью корпуса судна, или проект теоретического обвода корпуса проекта плоскости мидель-шпангоута для судов без прямостенной части корпуса.
Пример - У нефтяных танкеров и сухогрузов имеется прямостенная часть корпуса, при этом у военных судов прямостенная часть корпуса встречается редко.
F.1.75 консультанты модельного бассейна (model basin consultants): Организации, выполняющие испытания в модельном бассейне для расчета данных в части гидродинамики и силовых установок.
F.1.76 теория модельного бассейна (model basin theory)*: Формулы, а также опыт, знания и эмпирические данные, используемые консультантами модельного бассейна для расчета данных в части гидродинамики и силовых установок.
F.1.77 изменения на основании машин и механизмов (modifications from machinery)*: Внесение изменений или корректировок в гидродинамику и требования к силовым установкам на базе обратной связи, полученной из предварительного проекта машин и механизмов.
F.1.78 изменения формы корпуса (modifications to hull form): Внесение изменений или корректировок в геометрическую форму корпуса на базе обратной связи, полученной по результатам гидродинамики и требований к силовым установкам, а также в процессе окончательного проектирования.
F.1.79 изменения параметров формы корпуса (modifications to hull form parameters): Внесение изменений или корректировок в параметры формы по результатам выполнения изменений параметров на этапе предварительного проектирования.
F.1.80 изменения главных измерений (modifications to main dimensions): Внесение изменений или корректировок в главные размеры корпуса, возникшие в процессе проектирования теоретических обводов корпуса.
F.1.81 модульные блоки (modular units)*: Подсекции судна, уже оборудованного машинами, механизмами и достроечным оборудованием, которые будут собираться для создания конечного изделия.
F.1.82 предложение (offer): Предложение от судостроительной верфи на изготовление указанного в запросе судна.
Примечание - Являются данными верфи, получаемыми в процессе предварительного проектирования.
F.1.83 указания по предложению (offer guidelines): Данные, необходимые для того, чтобы сделать безусловное предложение судовладельцу.
F.1.84 эксплуатация и техническое обслуживание судна (operate and maintain a ship)*: Процедуры и документация по эксплуатации, обслуживанию и ремонту судна в течение его срока службы.
F.1.85 эксплуатационная информация (operational information)*: Документ, составляемый в результате эксплуатации, технического обслуживания и освидетельствования судна, в который входит информация о состоянии судна.
Примечание - Этот документ включает в себя накопленную информацию, записываемую на этапе функционирования и обслуживаемости судна, используемую для технического обслуживания, а также на заключительном этапе утилизации.
F.1.86 владелец (owner): Организация, которая направляет запрос на судно, заказывает, принимает поставку и эксплуатирует его.
F.1.87 запрос владельца с требованиями (owner request with requirements): Документ, содержащий требования, представляемые на судостроительную верфь владельцем с приглашением на подачу конкурсной заявки.
F.1.88 выполнение модельных испытаний (perform model tests)*: Проведение модельных испытаний в буксировочном или модельном бассейне.
Примечание - Результаты этих испытаний используют при проектировании гидродинамической части и требований к силовым установкам.
F.1.89 выполнение жизненного цикла судна (perform ship lifecycle): Завершенные этапы существования судна, включающие разработку концепции, проектирование, строительство, эксплуатацию и утилизацию.
F.1.90 размещение заказа (place order)*: Подтверждение получения и принятие тендерного предложения судостроительной верфи на изготовление судна.
Примечание - На основании этого заключается контракт с судостроительной верфью.
F.1.91 система планового технического обслуживания (planned maintenance system)*: Данные, полученные в процессе окончательного проектирования и используемые во время эксплуатации и технического обслуживания судна.
F.1.92 требования к мощности двигателя (power requirements for engine)*: Данные в части гидродинамики и ходкости, используемые при выборе главного двигателя.
F.1.93 предварительная компоновка (pre layout): Первая компоновка судна, разработанная на стадии рассмотрения тендерных предложений и являющаяся основой для выполнения предварительного проекта.
F.1.94 прогнозирование полезной мощности двигателей и рабочей скорости (predict brake power and service speed)*: Выполнение оценки требуемой полезной мощности двигателя и необходимой мощности, подаваемой на гребной винт, для определения типоразмера основного двигателя.
F.1.95 прогнозирование рабочих характеристик гребного винта (predict propeller performance)*: Выполнение оценки данных в части требований к ходкости для создания предварительного проекта гребного винта.
F.1.96 прогнозирование данных в части ходкости (predict propulsion data)*: Выполнение расчета требований к силовой установке судна.
Примечание - Приблизительное определение движущей силы может быть выполнено с помощью уравнения перемещения для конкретных чисел Фруда (см. 4.2.21.4) на этапе предварительного проектирования.
F.1.97 прогнозирование сопротивления (predict resistance)*: Выполнение оценки площади смачиваемой поверхности судна, оказывающей сопротивление волнению.
Примечание - В расчетах сопротивления используются данные за предыдущий период в части геометрии теоретического обвода корпуса.
F.1.98 предварительный проект (проектирование) (preliminary design): Проект, в результате которого представляется тендерное предложение.
F.1.99 предварительные планы общего расположения (preliminary general arrangements): Определение помещений и отсеков на судне на раннем этапе.
Примечание - Планы общего расположения аппроксимируют или рассчитывают в результате процесса выполнения предварительного проектирования.
F.1.100 предварительная форма корпуса (preliminary hull form): Определение на раннем этапе теоретического обвода корпуса, в результате процесса выполнения предварительного проектирования.
Примечание - Используют в документации тендерного предложения для предварительного проектирования отсеков, гидродинамики, а также расчетов требований к силовой установке.
F.1.101 предварительный проект машин и механизмов (preliminary machinery design)*: Определение на раннем этапе проектирования машин и механизмов.
Примечание - Используют на ранних этапах для оценки шумов, скорости вращения и вибрации, а также для оценки веса машин и механизмов.
F.1.102 предварительный проект машин и механизмов, конструкции и насыщения (preliminary machinery, structure and outfitting design)*: Имеющаяся на раннем этапе обратная связь в части проектной информации по машинам и механизмам, конструкции, а также насыщению и отделке.
Примечание - Используют при разработке предварительных планов общего расположения.
F.1.103 предварительный проект насыщения (preliminary outfitting design)*: Определение на раннем этапе судового насыщения и жилых помещений.
Примечание - Входит в процесс предварительного проектирования.
F.1.104 предварительный конструктивный проект (preliminary structure design)*: Определение на раннем этапе стальной конструкции судна.
Примечание - Входит в процесс предварительного проектирования.
F.1.105 подготовка тендерной заявки (prepare bid): Подготовка всей документации и данных, необходимых для подачи предложения владельцу на постройку судна.
F.1.106 представление предложения (present offer)*: Предоставление всей необходимой документации в составе тендерного предложения на изготовление указанного в запросе судна потенциальному владельцу.
F.1.107 разработка и утверждение нормативной документации (produce and approve reference documents): Составление и подборка технической документации, утвержденной для судна, с использованием производственной информации.
Примечание - Документация на выходе включает руководство по загрузке и остойчивости, одобренное классификационным обществом.
F.1.108 изготовление и инспектирование судна (produce and inspect a ship): Выполнение строительства и обеспечение качества на каждом этапе постройки или сборки судна.
Примечание - Инспектирование означает контроль всех видов деятельности на протяжении всего жизненного цикла судна.
F.1.109 изготовление модульных стандартных блоков (produce modular build units)*: Выполнение сборки стальных подсекций и их монтажа в большие отдельные сертифицированные блоки, которые после сборки или присоединения составляют готовое судно.
Примечание - Их изготовление контролируют графиком, контрактом, утвержденным проектом, любыми производственными ограничениями и классификационным обществом. В результате получаются модульные блоки, из которых собирается судно.
F.1.110 изготовление стальных подсекций (produce steel sub-sections)*: Создание и соединение элементы стальной конструкции, которые после сборки и сертификации образуют модульный блок.
Примечание - Их изготовление контролируют графиком, контрактом, утвержденным проектом, любыми производственными ограничениями и классификационным обществом. В результате получаются стальные подсекции, которые собираются в модульные блоки для сборки в окончательное судно.
F.1.111 информация о комплектующих изделиях (product component information)*: Технические данные по всем деталям, частям и элементам, которые будут использованы на судне.
Примечание - Эти данные учитывают при выполнении предварительных проектов.
F.1.112 график производства и поставки (production and delivery schedule): График, в соответствии с которым судно должно быть изготовлено и поставлено.
F.1.113 производственная информация (production information): Данные, описывающие детали изготовления и строительства.
Пример - К этим данным относятся: размеры, механические свойства, материалы и информация о цехах.
F.1.114 проект гребного винта (propeller design)*: Проект гребного винта или движителя на основании гидродинамических и расчетов требований к силовой установке.
Примечание - Этот проект определяет некоторые конструкции судовых машин и механизмов.
F.1.115 теория гребного винта (propeller theory)*: Знания, основанные на опыте, данных за предыдущие периоды и научных исследованиях характеристик судовых гребных винтов.
F.1.116 обеспечение качества (quality assurance): Правила, применяемые организацией на территории судостроительной верфи, перед которой поставлена задача провести аудит организации верфи и процессов, применяемых таким образом, чтобы обеспечить качество конечной продукции.
F.1.117 теория регулярных волн (regular wave theory)*: Знания и опыт, относящиеся к реакции судна движения на перемещения на волнах с постоянной высотой и периодом.
F.1.118 заявка на судно (quest a ship): Первое действие или обращение судовладельца, имеющего намерение заказать судно.
Примечание - Имея определенные представления о внешнем виде и функциональности судна, владелец излагает эти представления в своем запросе, направляемом на верфь.
F.1.119 запрос на внесение производственных изменений (request for production changes): Запрашиваемые изменения в проект судна на основании производственного опыта или трудностей с реализацией данного проекта судна.
F.1.120 сопротивление и мощность на валу (resistance and shaft power)*: Противодействие движению, на основании которого выполняются оценки гидродинамики и требований к силовой установке.
Примечание - Сопротивление и мощность на валу являются ограничивающими параметрами при создании предварительной формы корпуса.
F.1.121 теория сопротивления (resistance theory)*: Принципы, теоремы и правила, используемые для прогнозирования сопротивления корпуса при движении вперед в море.
F.1.122 ресурсы (resources): Судостроительная верфь, классификационное общество и внешние консультанты.
F.1.123 график (schedule): План управления сроками производственных этапов.
Примечание - Формируется в составе процесса окончательного проектирования.
F.1.124 план утилизации (scrapping plan)*: Документ, используемый для планирования времени и ресурсов, необходимых для разборки судна.
F.1.125 судно (ship): Большое плавучее судно, проектирование, производство и жизненный цикл которого регулируются принципами теории судостроения, а также в соответствии с международными правилами и правилами классификационного общества.
F.1.126 данные модели изделия судна (ship product model data): Данные об изделии для судна, накопленные на протяжении всего его жизненного цикла.
Примечание - Поскольку утилизация также входит в жизненный цикл, судно не является результатов на выходе (выходом), и сохраняется только задокументированная информация и знания о судне.
F.1.127 изменение веса судна (ship weight modifications)*: Пересмотр веса судна после выполнения предварительного проекта конструкций.
Примечание - Является обратной связью для изменения предварительной формы корпуса и пересмотра планов общего расположения.
F.1.128 судостроительная верфь (shipyard): Организация, выполняющая проектирование, строительство, техническое обслуживание и ремонт судов.
F.1.129 краткосрочные и долгосрочные реакции (short and long term responses)*: Аппроксимация мореходных качеств с расчетами, основанными на регулярном волнении определенной высоты и периода.
Примечание - Эти результаты используют для прогнозирования максимальной реакции на нерегулярных волнах в течение длительного периода времени.
F.1.130 задание технических требований на судно (specify ship): Разработка точных спецификаций на судно до заключения контракта.
F.1.131 стальные подсекции (steel sub-sections)*: Подсекции стальной конструкции, в которые устанавливают машины, механизмы и распределительные системы до сборки.
F.1.132 конструктивный проект (structural design)*: Проект основания и набора судна.
Пример - Этот проект включает в себя киль, корпус, переборки, палубы, надстройки, балки, ребра жесткости и пр.
F.1.133 техническая документация (technical documentation): Детальная информация о существенных вещах, необходимых для изготовления судна и системы.
Примечание - При техническом обслуживании техническая документация какой-либо системы означает часть описания изделия, необходимая для выполнения планово-предупредительного ремонта, ремонта и устранения неисправностей данной системы.
F.1.134 технические требования (technical requirements): Спецификации владельца, которые должны быть реализованы в готовом судне.
F.1.135 результаты испытаний (test results)*: Задокументированные оценки и заключения по каждому контролю, проверке или анализу на соответствие проектным спецификациям, правилам и нормативам.
Примечание - В рамках технического обслуживания судна на протяжении всего его жизненного цикла результатами испытаний являются результаты функциональных испытаний, проводимых после выполнения работ по техническому обслуживанию.
F.1.136 испытание судна (test ship): Выполнение испытаний и оценки фактического судна на соответствие проектным спецификациям, правилам и нормативам, а также контрактным требованиям.
Примечание - Выполняют испытания конструкции и проводят ходовые испытания. Результаты испытаний документируют.
F.1.137 испытание конструкций (test structures): Выполнение испытания и оценка стальных конструкций на соответствие проектным спецификациям, правилам и нормативам, а также контрактным требованиям.
Примечание - Результатом является документация с результатами испытаний.
F.1.138 испытание систем (test systems)*: Судовые системы, включая оборудование, которые испытывают и оценивают на соответствие проектным спецификациям, правилам и нормативам, а также контрактным требованиям.
Примечание - Результатом является документация с результатами испытаний.
F.1.139 суммарное сопротивление (total resistance)*: Противодействующие силы, действующие на корпус при движении вперед.
Пример - Суммарное сопротивление включает в себя сопротивление трения, сопротивление волны, вихревое сопротивление и сопротивление воздуха.
F.1.140 модель для буксировочного опытового бассейна (towing tank model): Масштабная модель судна, используемая в буксировочном опытовом бассейне для оценки гидродинамических характеристик.
F.1.141 необходимость транспортировки (transportation need): Ограничение, определяющее спецификацию для строительства судна.
F.1.142 вес и центры тяжести (weights and centres of gravity)*: Значение веса предметов и центры тяжести этих предметов.
Примечание - Вес и центры тяжести необходимы для дальнейших расчетов.
F.1.143 трудоемкость (workload)*: Суммарные усилия, необходимые для строительства судна выбранного проекта, по оценке судостроительной верфи и привлекаемых консультантов.
F.2 Диаграммы прикладной функциональной модели
Диаграммы ПФМ представлены на рисунках F.2 - F.15. Графическая форма ПФМ представлена в формате моделирования видов деятельности IDEF0 [9]. Виды деятельности и потоки данных, не относящиеся к рассматриваемой области, отмечены звездочкой.
![]() ![]() Рисунок F.3 - Узел A0 - выполнение жизненного цикла судна
![]() Рисунок F.4 - Узел A0 - задание технических
требований на судно
![]() Рисунок F.5 - Узел A12 - подготовка тендерной заявки
![]() Рисунок F.6 - Узел A122 - создание предварительного проекта
![]() Рисунок F.7 - Узел A1221 - создание предварительной
формы корпуса
![]() Рисунок F.8 - Узел A12214 - создание начального определения
формы корпуса
![]() Рисунок F.9 - Узел A1223 - оценка гидродинамики и требований
к силовой установке
![]() Рисунок F.10 - Узел A12231 - оценка сопротивления
и требований к силовой установке
![]() Рисунок F.11 - Узел A2 - завершение и утверждение
проекта судна
![]() Рисунок F.12 - Узел A22 - окончательное определение
и утверждение формы корпуса
![]() Рисунок F.13 - Узел A23 - окончательное определение
и утверждение гидродинамики и требований к силовой установке
![]() Рисунок F.14 - Узел A3 - изготовление
и инспектирование судна
![]() (справочное)
В настоящем приложении приведена ПЭМ для настоящего стандарта, которая представлена на рисунках G.1 - G.25. Прикладная эталонная модель является графическим представлением структуры и ограничений прикладных объектов (см. раздел 4). Графическая форма прикладной эталонной модели представлена нотацией EXPRESS-G. Прикладная эталонная модель не зависит от методов реализации. Определение нотации EXPRESS-G приведено в ИСО 10303-11:2004 (приложение D).
![]() ![]() Рисунок G.2 - Схема ПЭМ 2 из 25 в EXPRESS-G
![]() Рисунок G.3 - Схема ПЭМ 3 из 25 в EXPRESS-G
![]() Рисунок G.4 - Схема ПЭМ 4 из 25 в EXPRESS-G
![]() Рисунок G.5 - Схема ПЭМ 5 из 25 в EXPRESS-G
![]() Рисунок G.6 - Схема ПЭМ 6 из 25 в EXPRESS-G
![]() Рисунок G.7 - Схема ПЭМ 7 из 25 в EXPRESS-G
![]() Рисунок G.8 - Схема ПЭМ 8 из 25 в EXPRESS-G
![]() Рисунок G.9 - Схема ПЭМ 9 из 25 в EXPRESS-G
![]() Рисунок G.10 - Схема ПЭМ 10 из 25 в EXPRESS-G
![]() Рисунок G.11 - Схема ПЭМ 11 из 25 в EXPRESS-G
![]() Рисунок G.12 - Схема ПЭМ 12 из 25 в EXPRESS-G
![]() Рисунок G.13 - Схема ПЭМ 13 из 25 в EXPRESS-G
![]() Рисунок G.14 - Схема ПЭМ 14 из 25 в EXPRESS-G
![]() Рисунок G.15 - Схема ПЭМ 15 из 25 в EXPRESS-G
![]() Рисунок G.16 - Схема ПЭМ 16 из 25 в EXPRESS-G
![]() Рисунок G.17 - Схема ПЭМ 17 из 25 в EXPRESS-G
![]() Рисунок G.18 - Схема ПЭМ 18 из 25 в EXPRESS-G
![]() Рисунок G.19 - Схема ПЭМ 19 из 25 в EXPRESS-G
![]() Рисунок G.20 - Схема ПЭМ 20 из 25 в EXPRESS-G
![]() Рисунок G.21 - Схема ПЭМ 21 из 25 в EXPRESS-G
![]() Рисунок G.22 - Схема ПЭМ 22 из 25 в EXPRESS-G
![]() Рисунок G.23 - Схема ПЭМ 23 из 25 в EXPRESS-G
![]() ![]() (справочное)
Рисунки H.1 - H.26 соответствуют аннотированному EXPRESS-листингу ПИМ, приведенному в приложении A. В этих рисунках использована графическая нотация EXPRESS-G языка EXPRESS. Определение EXPRESS-G приведено в ИСО 10303-11:2004 (приложение A).
![]() в EXPRESS-G
![]() Рисунок H.2 - Определение изделия - схема ПИМ 2 из 26
в EXPRESS-G
![]() Рисунок H.3 - Определение свойства - схема ПИМ 3 из 26
в EXPRESS-G
![]() ![]() Рисунок H.5 - Действие - схема ПИМ 5 из 26 в EXPRESS-G
![]() Рисунок H.6 - Человек и организация - схема ПИМ 6 из 26
в EXPRESS-G
![]() Рисунок H.7 - Назначение человека и организации - схема
ПИМ 7 из 26 в EXPRESS-G
![]() Рисунок H.8 - Согласование - схема ПИМ 8 из 26 в EXPRESS-G
![]() Рисунок H.9 - Дата и время - схема ПИМ 9 из 26 в EXPRESS-G
![]() ПИМ 10 из 26 в EXPRESS-G
![]() в EXPRESS-G
![]() Рисунок H.12 - Документ - схема ПИМ 12 из 26 в EXPRESS-G
![]() Рисунок H.13 - Измерение с единицей измерения - схема
ПИМ 13 из 26 в EXPRESS-G
![]() в EXPRESS-G
![]() Рисунок H.15 - Геометрическое и топологическое
представление - схема ПИМ 15 из 26 в EXPRESS-G
![]() Рисунок H.16 - Точка - схема ПИМ 16 из 26 в EXPRESS-G
![]() Рисунок H.17 - Расположение - схема ПИМ 17 из 26 в EXPRESS-G
![]() Рисунок H.18 - Кривая - схема ПИМ 18 из 26 в EXPRESS-G
![]() Рисунок H.19 - Ограниченная кривая - схема ПИМ 19 из 26
в EXPRESS-G
![]() ![]() Рисунок H.21 - Элементарная поверхность - схема ПИМ 21 из 26
в EXPRESS-G
![]() Рисунок H.22 - Ограниченная поверхность - схема ПИМ 22 из 26
в EXPRESS-G
![]() Рисунок H.23 - Твердая модель и обшивка - схема ПИМ 23 из 26
в EXPRESS-G
![]() Рисунок H.24 - Топология - схема ПИМ 24 из 26 в EXPRESS-G
![]() Рисунок H.25 - Атрибут имени и ролевая связь - схема
ПИМ 25 из 26 в EXPRESS-G
![]() атрибуты - схема ПИМ 26 из 26 в EXPRESS-G
(справочное)
МАШИННО-ИНТЕРПРЕТИРУЕМЫЕ ЛИСТИНГИ
В настоящем стандарте приведены также листинги всех EXPRESS-схем, указанных в настоящем стандарте, без комментариев или прочих пояснений. Эти листинги представлены в машинно-интерпретируемой форме и находятся по следующим адресам в Интернете:
- сокращенные имена: /template/go.php?url=https://www.tc184-sc4.org/Short_names/
- EXPRESS: http:www.tc84-sc4.ord/EXPRESS/
В случае каких-либо затруднений при доступе к данным сайтам, следует обращаться в Центральный секретариат ИСО или напрямую в ИСО ТК 184/ПК4 по адресу: sc4sec@tc184-sc4.org.
Примечание - Информация, представленная в машинно-интерпретируемой форме по указанным выше адресам в Интернете, носит справочный характер. Обязательной является информация, приведенная в тексте настоящего стандарта.
(справочное)
РУКОВОДСТВО ПО ПРИМЕНЕНИЮ ПРИКЛАДНОГО ПРОТОКОЛА
В настоящем приложении приведены ответы на некоторые вопросы в отношении ПЭМ настоящего стандарта.
K.1 Каким образом можно привязать интервальное расстояние (spacing position) к теоретическому обводу (moulded form)?
Используйте прикладной объект local_co_ordinate_system_with_position_reference, указывающий на этот объект moulded_form.
K.2 Каким образом можно дать ссылку на определенный во внешнем коде теоретический обвод (moulded form)?
Перечень теоретических обводов в теоретических обводах судна включает определенный во внешнем коде теоретический обвод, идентифицируемый внешней ссылкой и, в частности, глобальным идентификатором.
K.3 Что происходит с системами координат, когда судно находится в воде в определенном положении на плаву?
У судна фиксированная глобальная система координат. Для гидростатических расчетов приведена локальная система координат, привязанная к поверхности воды. Глобальная система координат является родительской системой координат.
K.4 Руководство по использованию и определения тестовых сценариев
Руководство по использованию приведено в ESTEP AP 216 Test Case Definitions [12]. В этом руководстве описываются сценарии использования, а также примеры тестовых сценариев.
(справочное)
L.1 Модель изделия судна
Целью STEP <1> является поддержка методов и функций для разработки моделей изделий. Модель изделия - это однозначное представление изделия, такого как судно, автомобиль, самолет или производственная установка, в нейтральном машинно-интерпретируемом формате, на протяжении всего срока службы изделия. Задача состоит в том, чтобы представить изделие от этапа определения требований и концептуального проектирования до производства, технического обслуживания и, наконец, вывода из эксплуатации и демонтажа. Представление должно включать все геометрические и негеометрические данные, связанные с изделием, включая топологию, геометрию, функциональность, прочность, параметры и характеристики, статус состояния и историю обслуживания.
--------------------------------
<1> Стандарт по обмену данными моделей изделий.
STEP основан на идее, что основное представление изделия связано с его структурой. Это означает, что для определения судна в STEP необходимо предоставить базовую идентификационную информацию и информацию о конструкции судна. В рамках этого подхода геометрия рассматривается как отдельный вид представления судна и его конструкции. Поэтому при обмене геометрией теоретических обводов с использованием STEP также происходит обмен дополнительной информацией о том, как каждый элемент, представленный этой геометрией, относится к конкретной части конкретного судна. В этом заключается отличие от существующих и предыдущих стандартов обмена, в которых происходит обмен чисто геометрией. Именно поэтому STEP основан на изделии, а не на чертежах или геометрии. Также по этой причине STEP используется в качестве набора стандартных описаний повторно используемых данных об изделии, суммарная совокупность которых называется моделью данных изделия. STEP разработан в комплексе со своими собственными методами, и, таким образом, его допускается использовать как при обмене файлами, так и в базах данных.
Из-за сложности судна неизбежно разделение модели изделия судна STEP на узнаваемые и возможные для использования части; в результате получают согласованную модель планирования ПП. Эта модель делит область судостроения на отдельные функциональные области, что позволяет выполнить разделение на фиксированное количество ПП. Схематично текущая версия модели изделия судна представлена на рисунке L.1.
![]() Ключевыми элементами модели изделия судна являются:
- планы расположения;
- теоретические обводы;
- механические системы (машины и механизмы, силовые установки, погрузо-разгрузочные системы);
- конструкции;
- распределительные системы (трубопроводы, ОВКВ, электрические, гидравлические/пневматические);
- оснащение и меблировка;
- связь;
- боевые системы;
- навигация;
- эксплуатация.
Каждая функциональная область модели изделия судна описывается одним или несколькими разными ПП. В судостроении используют следующие ПП:
- ИСО 10303-215: Ship Arrangements (планы расположения судна);
- ИСО 10303-216: Ship Moulded Forms (теоретические обводы судна);
- ИСО 10303-218: Ship Structures (судовые конструкции).
Подразделение модели изделия судна в целом позволяет применять подход с использованием распределенного моделирования. После этого также можно начать работы по моделированию с функциональных областей, отражающих начальные этапы жизненного цикла судна, и проверить эти модели перед началом моделирования в областях на более поздних этапах жизненного цикла. Жизненный цикл настоящего стандарта, а также функциональные единицы, представляющие этот жизненный цикл, представлены на рисунке L.2.
![]() ПП приложений являются единственными частями STEP, предназначенными для использования при обмене данными, но, тем не менее, каждый ПП в области судостроения распространяется только на часть модели изделия судна. Таким образом, если ПП должны работать вместе как единая модель изделия судна, необходимо определить общий механизм, вокруг которого могут быть интегрированы все ПП в области судостроения. Только после этого модель изделия может быть реализована в системе управления данными об изделии, где все данные хранятся вне прикладных систем в нейтральном формате данных модели изделия судна. Этот механизм интеграции различных точек доступа называется ОМК. Эта модель описана в следующем разделе.
L.2 Общая модель судна
ОМК определяет общий каркас и основу моделирования для всех ПП в области судостроения в целях обеспечения взаимодействия между этими ПП.
Общая модель судна представляет собой набор строительных блоков, которые используют в контексте модели изделия судна. ОМК обеспечивает каркас для моделирования, набор моделей предметной области (отдельных и многократно используемых) структуры изделия, которые требуются более чем для одного ПП, а также набор общеиспользуемых конструктивов или утилит, например, которые используются для управления конфигурацией и концепций управления. Задача ОМК заключается в обеспечении интеграции и общей согласованности ПЭМ различных ПП судна.
ОМК описывается в руководстве по разработке ПП для судостроения [11]. В этом руководстве описываются:
- подход с использованием стандартных блоков;
- руководство по моделированию;
- общая модель судна.
L.3 Руководство по моделированию
Руководство по моделированию можно рассматривать как расширение языка EXPRESS, определенного в разделе 11 STEP. Оно определяет использование конструктивов языка EXPRESS для моделирования данных в области судостроения. Это руководство по моделированию также используют в общей модели судна.
Все работы по моделированию ПП в области судостроения выполняются в форме стандартных блоков. Стандартный блок - это спецификация на основе языка EXPRESS, которая используется для определения функциональной единицы для точки доступа. Функциональная единица может включать один или несколько стандартных блоков. Стандартный блок состоит из трех схем:
- схема импорта, обеспечивающая интерфейс для тех элементов других стандартных блоков, которые будут использоваться схемой модели этого стандартного блока;
- схема экспорта, обеспечивающая наличие тех элементов схемы модели, которые предназначены для использования другими строительными блоками; и
- схема модели, определяющая все новые элементы для данного стандартного блока.
Помимо схем у каждого стандартного блока имеется заголовок стандартного блока с некоторой административной информацией, позволяющей выполнять автоматическую обработку почтовым сервером стандартного блока. Руководство по моделированию относится к концепции стандартных блоков. Текущее руководство охватывает следующие области:
- имя стандартного блока;
- размер стандартного блока;
- существующие стандартные блоки;
- комментирование стандартных блоков;
- ограничения по использованию языка EXPRESS;
- ссылки на ресурсы STEP;
- ограничения на количество элементов в стандартных блоках;
- модельные функции;
- ссылочные экземпляры в прикладных протоколах;
- импортирование стандартных блоков в прикладные протоколы;
- составление стандартных блоков.
Руководство по комментированию стандартных блоков имеет важность для ПП и т.д. Эти комментарии используются инструментами для (полу)автоматического создания пунктов 4.2 и 4.3 ПП.
L.4 Каркас моделирования
Каркас моделирования, являющийся частью общей модели судна, обеспечивает реализацию общих концепций установки отношений между вещами, определения их свойств и их представления. Этот каркас определяют следующие три стандартных блока на основе языка:
- definitions;
- generic_product_structures;
- representation_resources.
Этот каркас представляет собой укрупненный подход, который делит модель изделия на основные конструктивы, а именно:
- items (элементы);
- definitions (определения);
- representations (представления),
при этом они связаны через ряд обобщенных отношений, приведенных на рисунке L.3.
![]() Элементы представляют концепцию и могут рассматриваться как местозаполнитель. Элемент - это постоянный флаг на протяжении всего жизненного цикла физического объекта. Новые элементы в судостроительных ПП вводятся путем создания их подтипов из элемента.
К типовым элементам в судостроительных прикладных протоколах относятся:
- комплектующие судна (корпус, надстройка, палуба, руль, гребной винт и пр.);
- оборудование (насос, генератор, главный двигатель, труба и пр.);
- элементы стальной конструкции (двойное дно, шпангоут, переборка, ребра жесткости и пр.).
Свойства элемента переносятся определениями. Для элемента должно быть задано определение, но элемент может существовать без какого-либо определения. Определение элемента может меняться в течение жизненного цикла. Эти аспекты жизненного цикла учитываются в понятии жизненного цикла (см. рисунок L.4), где для элемента вводятся разные определения для разных этапов жизненного цикла. Новые определения в судостроительных ПП могут создаваться путем создания их подтипов из определения.
![]() Каждое свойство понятия и, следовательно, каждое определение элемента может быть описано многими различными способами. Определение теоретического обвода может быть представлено с помощью:
- представления таблицы ординат теоретического чертежа;
- каркасного представления;
- поверхностного представления;
- интервального положения.
Таким образом, определение может иметь разные представления, но в некоторых случаях может быть определение без представления. Новые представления в ПП в области судостроения могут создаваться путем создания их подтипов из представления.
Высокоуровневые отношения между основными конструктивами каркаса моделирования могут ограничиваться в подтипе каждого ПП. Это выполняется переопределениями атрибутов. Например, определение проекта теоретического обвода, подтип определения определяется для теоретического обвода, который является подтипом элемента, как показано на рисунке L.5.
![]() L.5 Модели предметной области
Целью моделей предметной области является создание нового уровня обобщенных элементов под основными конструктивами каркаса моделирования, с возможностью ограничения отношений атрибутов с помощью переопределений. Эти новые элементы, вводимые моделями предметной области, являются подтипами основных конструктивов каркаса моделирования.
В состав общей модели судна входят следующие модели предметной области:
- структура изделия (product structure);
- часть (part);
- структура изделия по системам (product structure by system);
- структура изделия по сборке (product structure by assembly);
- структура изделия по пространству (product structure by space);
- возможность подключения.
L.6 Общие утилиты
Общие утилиты представляют собой стандартные блоки на основе языка EXPRESS, которые относятся к ПП в области судостроения, но также являются достаточно общими, чтобы их можно было использовать в разных ПП.
Общие утилиты в настоящее время доступны для:
- общих параметров судна (ship general characteristics);
- управления конфигурацией (configuration management);
- концепции местоположения [глобальная локальная система координат, пространственная сетка (location concepts (global local co-ordinate system, spacing grid)];
- базовой геометрии и топологии (basic geometry and topology);
- точек форм обводов (moulded form points);
- линий форм обводов (moulded form lines);
- поверхности форм обводов (moulded form surfaces);
- судов (ships);
- материалов (materials);
- функций (features);
- единиц измерений (units);
- внешней ссылки/внешней ссылки на экземпляр.
Подробная информация о ОМК, а также руководство по моделированию представлены в руководстве по разработке ПП для судостроения (AP Development Guidelines for Shipbuilding).
Некоторые атрибуты прикладных объектов в настоящем стандарте определяют отношения к типам параметров. Необходимая единица измерения, соответствующая каждому параметру, определяется глобально в атрибуте unit объекта Ship (см. 4.2.88) или локально в атрибуте local_units объекта Definition (см. 4.2.23). Единицы могут быть указаны либо в единицах СИ, либо в других системах единиц измерения.
Существует много объектов ПЭМ, которые определяют свои собственные локальные единицы. Для отображения такой локальной единицы требуется property_definition_representation (где name = "local units") для указания представления с помощью global_unit_assigned_context. Однако у многих из этих же объектов ПЭМ уже имеются атрибуты, которые отображают другое представление, содержащее сложный объект geometric_representation_context и global_unit_assigned_context. Такой сложный экземпляр требуется правилом 5.2.4.114 - representation_has_global_unit_assigned_context. Также, если с параметром связано значение допуска, для сложного экземпляра будет иметься дополнительный вид объекта global_uncertainty_assigned_context. Поэтому, если объекту ПЭМ требуются локальные единицы измерения, рекомендуется, чтобы единицы, связанные с этим сложным экземпляром, были такими же, как единицы, на которые приведена ссылка через ссылочный путь атрибута local units.
В таблице L.7 приведены единицы, используемые в прикладной интерпретируемой модели настоящего стандарта, соответствующие каждому типу параметра ПЭМ.
Таблица L.7
L.8 Использование однозначного глобального идентификатора
Однозначные глобальные идентификаторы (GUID) были включены в общую модель судна и используются всеми ПП в области судостроения. Они используются для поддержки следующих сценариев пошагового обмена:
- отдельный обмен элементами, определениями и представлениями внутри ПП при сохранении взаимосвязей между этими прикладными объектами. Например, первый обмен может идентифицировать только moulded_forms, отправляя только объекты Moulded_form, в то время как второй обмен может содержать определенные свойства и представления, отправляя объекты Moulded_form и Moulded_form_design_definition;
- отдельный обмен одной моделью судна с использованием ПП AP 216 с сохранением взаимосвязей между выбранными прикладными объектами AP 216. Например, первый обмен может включать в себя объект Moulded_form корпуса, а второй - объект Moulded_form главной палубы, граница которого определяется объектом External_instance_reference, содержащим однозначный глобальный идентификатор корпуса;
- отдельный обмен одной моделью с использованием нескольких точек доступа в области судостроения с сохранением взаимосвязей между прикладными объектами в разных точках доступа. Например, первый обмен может включать в себя объект Moulded_form палубы в AP 216, а второй может включать в себя листы (Plates) главной палубы в AP 218, нижняя поверхность которых определяется объектом External_instance_reference, содержащим однозначный глобальный идентификатор палубы moulded_form в AP 216.
Однозначные глобальные идентификаторы и пошаговые обмены важны для судостроения по следующим причинам:
- объем данных в проекте судна. Выполнить обмен всего проекта судна за один раз просто невозможно. Как правило, обмен данными сосредоточен на определенных зонах судна или конкретных системах. Важно, чтобы результатом этих множественных обменов стала модель судна, в которой сохраняются основные взаимосвязи между судостроительными элементами;
- длительные сроки проектирования и изготовления. Проект судна разрабатывается в течение длительного периода времени, вплоть до нескольких лет в случае с военными судами. Аналогично, производственная информация также разрабатывается за такой же период. Важно осуществлять обмен данными в любой момент проектирования или производственного цикла, сохраняя при этом основные взаимосвязи между судостроительными элементами;
- проект на основе экземпляров. Проект судна состоит из отдельных появлений частей в определенных местах на судне. Важно однозначно идентифицировать и отслеживать каждый отдельный экземпляр на судне в процессе проектирования, производства и, в конечном итоге, до эксплуатации;
- применимость корпуса. Класс судов может быть проектирован так же, как и отдельное судно, с исключениями, относящимися к корпусу. Он состоит из отдельных появлений частей в определенных местах на судах. Важно однозначно идентифицировать и отслеживать каждый отдельный экземпляр в классе судов на этапах проектирования, производства и, в конечном итоге, до эксплуатации;
- параллельное проектирование и производство. Как правило, изготовление судна начинается до завершения проекта полностью. Информация о проекте и производстве собирается постепенно. Кроме того, для управления изменениями важно однозначно идентифицировать каждый отдельный экземпляр на судне в процессе проектирования и производства;
- совместное проектирование. Над проектом судна или класса судов могут совместно работать несколько проектных организаций. Это возможно только в том случае, если каждая компания сможет определять пошаговые изменения, вносимые другим партнером;
- совместное производство. При производстве судна или класса судов могут сотрудничать несколько судостроительных организаций. Это возможно только в том случае, если каждая компания сможет определять пошаговые изменения, вносимые другим партнером;
- сотрудничество. Ряд компаний могут сотрудничать при проектировании и изготовлении судна или класса судов. Это возможно только в том случае, если каждая компания сможет определять пошаговые изменения, внесенные каждой компанией.
L.8.1 Функциональные требования
Поскольку GUID используются для поддержки пошаговых обменов, невозможно указать полностью функциональные требования к GUID в ПП в области судостроения. Функциональные требования к GUID приведены ниже:
- идентификатор GUID должен быть уникальным в глобальном масштабе и постоянным в рамках одного проекта судна, в разных проектах судов и в разных компаниях. Он должен указывать на экземпляр, который он обозначает, или не указывать вообще ни на что (например, когда экземпляр был удален);
- каждая система ПО должна назначать постоянные идентификаторы GUID каждому созданному или обновленному прикладному объекту;
- каждая система ПО должна поддерживать доступ к прикладному объекту через GUID;
- каждая система ПО должна хранить идентификатор GUID всех прикладных объектов;
- каждая система ПО должна возвращать тот же идентификатор GUID, который она получила, если прикладной объект не был изменен.
L.8.2 Ограничения реализации
Для поддержки этой нотации идентификатора GUID допускается использовать ряд различных схем и технологий реализации. Однако существует несколько ограничений реализации, которые следует учитывать:
- должна поддерживаться функциональная совместимость между компаниями, приложениями/системами и технологиями. (Идентификатор не должен быть непрозрачным, но должен раскрывать основные элементы данных, необходимые для постоянной идентификации. Непрозрачные идентификаторы были заданы в CORBA v1 и, как оказалось, препятствовали взаимодействию между системами);
- должны поддерживаться системы, использующие ключи на основе значений, а также системы, использующие сгенерированные системой идентификаторы объектов. (Требование хранить дополнительный атрибут для идентификаторов, сгенерированных системой, не следует применять к системам, основанным на значениях);
- идентификаторы экземпляров должны содержать уникальные глобальные идентификаторы типов, но при этом также иметь дополнительные требования. Следовательно, идентификаторы экземпляров несут больше информации, чем идентификаторы типов (например, PLIB BSU);
- идентификатор должен быть символьным, а синтаксис должен быть указан таким образом, чтобы можно было использовать стандартные отраслевые инструменты и алгоритмы;
- идентификатор должен поддерживать использование существующей части 21 и SDAI, а также использование ожидаемого XML части 28;
- идентификаторы должны быть основаны на уникальной идентификации отдельных объектов данных в программном приложении. Общая модель судна обычно использует четыре или более объектов для описания одного объекта данных: item, design_definition, functional_definition и manufacturing_definition. При том что важно однозначно идентифицировать каждый прикладной объект STEP, для программного приложения также важно однозначно идентифицировать объект данных, который генерирует эти прикладные объекты STEP.
L.8.3 Формат GUID, рекомендованный ISE
В проекте интегрированной среды в области судостроения (ISE) приняты и внедряются трансляторы на основе следующего формата GUID.
Атрибут ПЭМ Global_id.id (атрибут ПИМ applied_classification_assignment.id) записывается в виде строки в следующем формате:
Определение аргументов:
XX_Key - XX - это имя связанного объекта ПЭМ, например Moulded_form_function_definition. Этот аргумент является обязательным. Первая буква объекта приложения заглавная, остальные строчные. Суффикс = "_Key".
x-href=YY - YY - это URL-адрес SOAP-сервера и/или базы данных. Этот аргумент является обязательным.
Id=WW - WW - это строка, идентифицирующая объект. Идентификатор Id необходим только для definable_objects. Идентификатор Id может быть одним из двух типов:
Value (прозрачное использование) - уникальное значение, идентифицирующее данный экземпляр
GUID (непрозрачное использование) - сгенерированный системой идентификатор. Должен иметь префикс "guid:"
x-owner=ZZ - ZZ - это строка, идентифицирующая объект. Этот аргумент требуется только для объектов Definition. Та же строка, что и идентификатор Id связанного объекта definable_object.
x-rev=AA - AA - номер изменения. Этот аргумент требуется только для объектов Definition. Та же строка, что и Definition.version_id attribute.
Сочетание (XX_key, x-href, Id) уникально для definable_objects.
Сочетание (XX_key, x-href, x-owner, x-rev) уникально для Definitions
Пример 1 - Следующие примеры иллюстрируют такое использование для связанных объектов moulded_form в прикладном протоколе AP 216:
'<Moulded_form_Key x-href="//j oshua.ingr.com"
Id="guid:123-123-123" />'
'<Moulded_form_functional_definition_Key
x-href="//joshua.ingr.com"
x-owner="guid:123-123-123"
x-rev="A"/>'
'<Moulded_form_design_definition_Key
x-href="//joshua.ingr.com"
x-owner="guid:123-123-123"
x-rev="A"/>'
Пример 2 - Объект Part определен в языке EXPRESS и инстанцирован в репозитории, локатором которого является "/template/go.php?url=https://www.acme.com/stepdataserver". В приведенном ниже примере показано, как его постоянный идентификатор будет закодирован, а затем представлен в файле части 21:
SCHEMA part_schema;
ENTITY Part
Name: STRING;
Description: STRING;
END_ENTITY;
END_SCHEMA;
Глобально-уникальный постоянный идентификатор для экземпляра этого типа будет закодирован как:
<Part_Key href = "/template/go.php?url=https://www.acme.com/stepdataserver" Id =
"P1" />
Этот пример показывает три основных компонента данных для глобально уникальной постоянной идентификации экземпляра: глобально уникальное имя типа, глобально уникальный локатор экземпляра (репозиторий), локально уникальный идентификатор (ключ) в этом локаторе (репозиторий).
Глобально уникальное имя типа представляет собой комбинацию схемы на языке EXPRESS и имен типов, отображаемых в соответствии с ISO/TS 10303-28. Имя EXPRESS SCHEMA связано с пространством имен типа ("urn:iso10303:osb/part_schema"); а имя EXPRESS ENTITY фиксируется как квалифицированное имя элемента со строкой '_Key', к которой добавлено (p:Part_Key). Атрибут xlink:href фиксирует локатор репозитория, который управляет экземпляром. Он включает орган (компанию) и устанавливает глобальную уникальность идентификатора. Остальные элементы фиксируют имена и значения атрибутов локальной идентификации (Id = "P1"), которые будут гарантированно уникальными в репозитории. Рекомендуемое имя при наличии одного локального идентификатора - Id.
Для предоставления информации о версии экземпляра, на который дана ссылка, может быть включен специальный атрибут x-rev. Это правило заключается в том, что присутствие x-rev означает особое отношение этого экземпляра к другим экземплярам, ключи которых имеют одинаковые значения для всех полей, кроме x-rev. Каждый такой экземпляр представляет разные версии одного и того же объекта; порядок версий зависит от приложения.
Система, использующая сгенерированные системой идентификаторы объектов (например, guid's), будет использовать строку guid в качестве значения первого ключевого атрибута.
<p:Part_Key xmlns:p = "urn:iso10303:osb/part_schema" x-id = "_10"
xlink:href = "/template/go.php?url=https://www.acme.com/stepdataserver"
Id = "guid: BDA4A1BA-110C-11d0-8CC3-0080F394BA32" x-rev = "A"/>
Глобально-уникальный постоянный идентификатор будет представлен в файле STEP как:
#10 = Part('P1','Description for this part');
#20 = applied_identification_assignment(
'<p:Part_Key xmlns:p = "urn:iso10303:osb/part_schema"
xlink:href = "/template/go.php?url=https://www.acme.com/stepdataserver" Id = "P1" x-re v= "A"/>',
#21,#10);
#21 = identification_role('xml_guid',' ');
(справочное)
К ИСО 10303-216:2003
В текст настоящего стандарта внесена техническая поправка ИСО 10303-216:2003/Попр. 1:2008.
Эта поправка относится к следующим элементам стандарта:
- подпункт 4.1.14 (добавление прикладного объекта Surface_with_identifier в ПЭМ в функциональную единицу surface_representations);
- подпункт 4.2.110 (4.2.110.1) после подпункта 4.2.109.1 [добавление прикладного объекта Surface_with_identifier в прикладную эталонную модель (ПЭМ (ARM)), изменение нумерации следующих за ним подпунктов соответственно];
- подпункт 4.3.109, после подпункта 4.3.108 [добавление условия между прикладными объектами Surface_with_identifier и Global_id в ПЭМ, изменение нумерации следующих за ним подпунктов соответственно];
- подпункт 5.1.1.9 [добавление заключающих косых черт в шаблоны отображения (Mapping Templates), на которые ссылаются другие шаблоны отображения];
- подпункт 5.1.1.10 (добавление заключающих косых черт в шаблоны отображения данных, на которые ссылаются другие шаблоны отображения);
- подпункт 5.1.1.11 (добавление заключающих косых черт в шаблоны отображения данных, на которые ссылаются другие шаблоны отображения);
- подпункт 5.1.1.12 (добавление заключающих косых черт в шаблоны отображения данных, на которые ссылаются другие шаблоны отображения);
- подпункт 5.1.1.13 (добавление заключающих косых черт в шаблоны отображения данных, на которые ссылаются другие шаблоны отображения);
- подпункт 5.1.1.14 (добавление заключающих косых черт в шаблоны отображения данных, на которые ссылаются другие шаблоны отображения);
- подпункт 5.1.1.18 (добавление заключающих косых черт в шаблоны отображения данных, на которые ссылаются другие шаблоны отображения);
- подпункт 5.1.1.23 (добавление заключающих косых черт в шаблоны отображения данных, на которые ссылаются другие шаблоны отображения);
- подпункт 5.1.1.28 (добавление заключающих косых черт в шаблоны отображения данных, на которые ссылаются другие шаблоны отображения);
- подпункт 5.1.1.30 (добавление заключающих косых черт в шаблоны отображения данных, на которые ссылаются другие шаблоны отображения);
- подпункт 5.1.1.31 (добавление заключающих косых черт в шаблоны отображения данных, на которые ссылаются другие шаблоны отображения);
- подпункт 5.1.1.32 (добавление заключающих косых черт в шаблоны отображения данных, на которые ссылаются другие шаблоны отображения);
- подпункт 5.1.1.33 (добавление заключающих косых черт в шаблоны отображения данных, на которые ссылаются другие шаблоны отображения);
- подпункт 5.1.1.34 (добавление заключающих косых черт в шаблоны отображения данных, на которые ссылаются другие шаблоны отображения);
- подпункт 5.1.1.35 (добавление заключающих косых черт в шаблоны отображения данных, на которые ссылаются другие шаблоны отображения);
- подпункт 5.1.1.36 (добавление заключающих косых черт в шаблоны отображения данных, на которые ссылаются другие шаблоны отображения);
- подпункт 5.1.1.38 (добавление заключающих косых черт в шаблоны отображения данных, на которые ссылаются другие шаблоны отображения);
- подпункт 5.1.1.39 (добавление заключающих косых черт в шаблоны отображения данных, на которые ссылаются другие шаблоны отображения);
- подпункт 5.1.1.40 (добавление заключающих косых черт в шаблоны отображения данных, на которые ссылаются другие шаблоны отображения)
- подпункт 5.1.1.42 (добавление заключающих косых черт в шаблоны отображения данных, на которые ссылаются другие шаблоны отображения);
- подпункт 5.1.1.43 (добавление заключающих косых черт в шаблоны отображения данных, на которые ссылаются другие шаблоны отображения);
- подпункт 5.1.1.44 (добавление заключающих косых черт в шаблоны отображения данных, на которые ссылаются другие шаблоны отображения);
- подпункт 5.1.1.45 (добавление заключающих косых черт в шаблоны отображения данных, на которые ссылаются другие шаблоны отображения);
- подпункт 5.1.1.47 (добавление заключающих косых черт в шаблоны отображения данных, на которые ссылаются другие шаблоны отображения);
- подпункт 5.1.1.48 (добавление заключающих косых черт в шаблоны отображения данных, на которые ссылаются другие шаблоны отображения);
- подпункт 5.1.1.51 (добавление заключающих косых черт в шаблоны отображения данных, на которые ссылаются другие шаблоны отображения);
- подпункт 5.1.1.54 (добавление заключающих косых черт в шаблоны отображения данных, на которые ссылаются другие шаблоны отображения);
- подпункт 5.1.13.2 [не используются параметры плотности, силы и давления. Целью данного изменения является удаление фрагментов "Пути Отображения" (Mapping Path) Derived_unit в части единицы плотности, единицы силы и единицы давления и замена другим текстом];
- подпункт 5.1.15.3 (5.1.15.3.1) (добавление спецификации отображения для прикладного объекта Surface_with_identifier);
- пункт 5.2 (добавление context_dependent_measure в USE FROM measure_schema);
- подпункт 5.2.2.4 [изменение AIM EXPRESS с целью добавления определения прикладного объекта Surface_with_identifier и исправления ошибок компиляции глобальных правил, добавление поверхности (surface) и representation_item в выбор типа classification_item Select type];
- подпункт 5.2.2.10 [изменение AIM EXPRESS с целью добавления отображения прикладного объекта Surface_with_identifier, добавление Surface (поверхность) в выбор типа identification_item Select type];
- подпункт 5.2.4.42 (исправление ошибки глобального правила, замена определения EXPRESS другим текстом);
- подпункт 5.2.4.144 (исправление ошибки компиляции глобального правила и приведение правила в соответствие с другими этого же типа, замена текста);
- подпункт 5.2.4.150 (изменение AIM EXPRESS с целью добавления отображения Surface_with_identifier в прикладное условие Global_id, добавление глобального правила для обеспечения данного прикладного условия, приведение нового подпункта 5.2.2.149 после подпункта 5.2.4.148, изменение нумерации следующих за ним подпунктов соответственно;
- приложение A (страница 420: изменение AIM EXPRESS с целью добавления определения прикладного объекта Surface_with_identifier и исправления ошибок компиляции глобальных правил. Добавление поверхности surface и representation_item в classification_item Select type);
- приложение A (страница 420: добавление context_dependent_measure в расширенный листинг AIM EXPRESS);
- приложение A (страница 422: изменение расширенного листинга AIM EXPRESS с целью добавления отображения прикладного объекта Surface_with_identifier, добавление поверхности Surface в выбор типа identification_item Select type);
- приложение A (страница 423: добавление context_dependent_measure в measure_value SELECT Type);
- приложение A (страница 476: исправление ошибки в глобальном правиле, замена текста);
- приложение A (страницы 522, 523: изменение AIM EXPRESS с целью добавления отображения Surface_with_identifier в прикладное условие Global_id);
- приложение C [добавление части 28 в качестве допустимого метода реализации дополнительно к части 21, добавление спецификации значений для настоящего стандарта в целях использования данной возможности (добавлены пункты C.1 - C.3)];
- приложение E (замена идентификаторов объектов);
- приложение G (изменение AIM EXPRESS с целью добавления прикладного объекта Surface_with_identifier, замена рисунка G.24);
- приложение H (изменение AIM EXPRESS-G в целях добавления ссылки на другую страницу к representation_item для classification_item SELECT type, замена рисунка H.4);
- приложение H (изменение AIM EXPRESS-G в целях добавления поверхности surface и representation_item в classification_item SELECT type, замена рисунков H.10, H.11);
- приложение H (добавление context_dependent_measure в measure_value SELECT Type в схеме AIM, замена рисунка H.14);
- приложение H (изменение AIM EXPRESS-G в целях корректировки ссылок на другие страницы для поверхности, замена рисунка H.20);
- приложение L, таблица L.7 (удаление Density_measure и Force_measure, удаление Pressure_measure в связи с их неприменением в настоящем стандарте).
(справочное)
И ДОКУМЕНТОВ НАЦИОНАЛЬНЫМ СТАНДАРТАМ
Таблица ДБ.1
--------------------------------
<1> Действует ГОСТ Р ИСО 10303-1-2022 "Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 1. Общие представления и основополагающие принципы", идентичный ИСО 10303-1:2021.
<2> Действует ГОСТ Р ИСО 10303-45-2022 "Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 45. Интегрированный обобщенный ресурс. Материал и другие технические характеристики", идентичный ИСО 10303-45:2019.
Вернуться в "Каталог нормативных документов"
Источник информации: https://internet-law.ru/documents/prod/gost-r_gosudarstvennyj-standart/18/gost_31938.html
На правах рекламы:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||