Статус документа
Статус документа

ГОСТ Р ИСО 10303-14-2015 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 14. Методы описания. Справочное руководство по языку EXPRESS-X (Переиздание)

     9.4 Объявление отображения

9.4.1 Введение

Объявление отображения поддерживает задание соответствия между определениями объектных типов данных из двух или более EXPRESS-схем. Данное объявление поддерживает также отображение из множества определений исходных объектных типов данных на множество определений целевых объектных типов данных.

Синтаксис:

136

map_decl = MAP map_id AS target_parameter ';' { target parameter ';' }
( map_subtype_of_clause subtype_binding_header map_decl_body ) | ( binding_header map_decl_body { binding_header map_decl_body } ) END_MAP ';' .

47

binding_header = [ PARTITION partition_id ';' ] [ from_clause ] [ local_decl ] [ where_clause ] [ identified_by_clause ] [ ordered_by_clause ] .

203

subtype_binding_header = [ PARTITION partition_id ';' ] where clause .

90

from clause = FROM source_parameter ';' { source parameter ';' } .

198

source_parameter = source_parameter_id ':' extent reference .

83

extent_reference = source_entity_reference | view_reference.

137

map_decl_body = ( entity_instantiation_loop { entity_instantiation_loop } ) | map_project_clause | ( RETURN expression ';' ).

214

target_parameter = target_parameter_id { ',' target_parameter_id } ':'
[ AGGREGATE [ bound_spec ] OF ] target_entity_reference .

213

target_entity_reference = entity_reference { '&' entity_reference } .


Правила и ограничения

Элемент map_id из синтаксического правила 136 присваивает имя объявлению отображения.

Пример - В данном примере объект pump из исходного набора данных отображается на объекты product и product_related_product_category:

SCHEMA source_schema;

ENTITY pump;

id, name : STRING;

END_ENTITY;

END_SCHEMA;

SCHEMA target_schema;

ENTITY product;

id, name : STRING;

END_ENTITY;

ENTITY product_related_product_category;

name : STRING;

products : SET OF product;

END_ENTITY;

END SCHEMA;

SCHEMA_MAP pump_mapping;

REFERENCE FROM source_schema AS SOURCE;

REFERENCE FROM target_schema AS TARGET;

MAP network_for_pump AS

pr : product;

prpc : product_related_product_category;

FROM p : pump;

SELECT

pr.id := p.id;

pr.name := p.name;

prpc.name := 'pump';

prpc.products := [ pr ];

END_MAP;

END_SCHEMA_MAP;

Необходимо отметить, что в данном примере для каждого созданного экземпляра объекта product существует точно один созданный экземпляр объекта product_related_product_category.


Исходные значения атрибутов вновь созданного экземпляра (экземпляров) являются неопределенными. Если такой атрибут не задан в теле отображения, то его значение остается неопределенным.

9.4.2 Вычисление значения тела отображения

Синтаксис:

136

map decl = MAP map_id AS target_parameter ';' { target parameter ';' } ( map_subtype_of_clause subtype_binding_header map decl body ) | ( binding_header map_decl_body { binding_header map_decl_body } ) END_MAP ';' .

137

map_decl_body = ( entity_instantiation_loop { entity_instantiation_loop } ) | map_project_clause | ( RETURN expression ';' ) .

139

map_project_clause = SELECT { map_attribute_declaration } .

134

map_attribute_declaration = [ target_parameter_ref [ index qualifier ]
[ group_qualifier ] '.' ] attribute_ref [ index_qualifier ] ' : =' expression ';' .


Синтаксические элементы map_attribute_declaration и определяющий его map_decl_body должны присваивать значения атрибутам экземпляров целевых объектов. Элемент expression должен вырабатывать значение, совместимое по присваиванию с атрибутом целевого объекта (см. подраздел 13.3 ИСО 10303-11).

Объект map_decl_body, определяющий элемент RETURN, должен вычислять значение выражения, указанного после ключевого слова RETURN. Результатом данного вычисления должна стать реализация экземпляров целевых объектов, совместимых по типу с объектными типами данных, определяемыми целевыми параметрами. Должны быть реализованы экземпляры объектов для всех целевых параметров.

9.4.3 Итерационный процесс для одного связующего экземпляра

9.4.3.1 Введение

При вычислении отображения могут быть созданы агрегированные структуры экземпляров целевых объектных типов данных. Начальное значение этих агрегированных структур является неопределенным.

Элементы языка instantiation_loop_control и repeat_control обеспечивают следующие виды итераций:

- итерация над совокупностью экземпляров агрегированной структуры языка EXPRESS;

- итерация, наращивающая значение числовой переменной.     

Синтаксис:

77

entity_instantiation_loop = FOR instantiation_loop_control ';'
map_project_clause .

139

map_project_clause = SELECT { map_attribute_declaration } .

119

instantiation_loop_control = instantiation_foreach_control | repeat_controI .

118

instantiation_foreach_control = EACH variable_id IN expression { AND
variable_id IN expression } [ INDEXING variable_id ] .

171

repeat_control = [ increment_control ] [ while_control ] [ until_control ] .


Правила и ограничения

a) Элемент языка map_project_clause (см. синтаксическое правило 139) устанавливает локальную область действия, в которой все переменные цикла variable_id (см. синтаксическое правило 118) определены неявным образом.