База ГОСТовallgosts.ru » 25. МАШИНОСТРОЕНИЕ » 25.040. Промышленные автоматизированные системы

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

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

Дата введения: 10/01/2016
Дата отмены: -
Заменен на: -
Код ОКС: 25.040.40
Скачать PDF: ГОСТ Р ИСО 10303-14-2015 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 14. Методы описания. Справочное руководство по языку EXPRESS-X.pdf
Скачать Word:ГОСТ Р ИСО 10303-14-2015 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 14. Методы описания. Справочное руководство по языку EXPRESS-X.doc


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



ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ТЕХНИЧЕСКОМУ РЕГУЛИРОВАНИЮ И МЕТРОЛОГИИ

ГОСТ Р исо

10303-14-

2015



НАЦИОНАЛЬНЫЙ

СТАНДАРТ

РОССИЙСКОЙ

ФЕДЕРАЦИИ

Системы автоматизации производства и их интеграция

ПРЕДСТАВЛЕНИЕ ДАННЫХ ОБ ИЗДЕЛИИ И ОБМЕН ЭТИМИ ДАННЫМИ

Часть 14

Методы описания.

Справочное руководство по языку EXPRESS-X

ISO 10303-14:2005

Industrial automation systems and integration — Product data representation and exchange — Part 14: Description methods: The EXPRESS-X language reference manual

(IDT)

Издание официальное

ХПШ

Предисловие

1    ПОДГОТОВЛЕН Федеральным государственным автономным научным учреждением «Центральный научно-исследовательский и опытно-конструкторский институт робототехники и технической кибернетики» (ЦНИИ РТК) на основе собственного аутентичного перевода на русский язык международного стандарта, указанного в пункте 4

2    ВНЕСЕН Техническим комитетом по стандартизации ТК 459 «Информационная поддержка жизненного цикла изделий»

3    УТ8ЕРЖДЕН И ВВЕДЕН В ДЕЙСТВИЕ Приказом Федерального агентства по техническому регулированию и метрологии от 21 июля 2015 г. No 925-ст

4    Настоящий стандарт идентичен международному стандарту ИСО 10303-14:2005 «Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 14. Методы описания. Справочное руководство по языку EXPRESS-Х» (ISO 10303-14:2005 «Industrial automation systems and integration — Product data representation and exchange — Part 14: Description methods: The EXPRESS-X language reference manual»).

При применении настоящего стандарта рекомендуется использовать вместо ссылочных международных стандартов соответствующие им национальные стандарты Российской Федерации, сведения о которых приведены в дополнительном приложении ДА

5    ВВЕДЕН ВПЕРВЫЕ

Правила применения настоящего стандарта установлены е ГОСТ Р 1.0—2012 (раздел 8). Информация об изменениях к настоящему стандарту публикуется в ежегодном (по состоянию на 1 января текущего года) информационном указателе «Национальные стандарты». а официальный текст изменений и поправок — в ежемесячном информационном указателе «Национальные стандарты». В случае пересмотра (замены) или отмены настоящего стандарта соответствующее уведомление будет опубликовано в ближайшем выпуске ежемесячного информационного указателя «Национальные стандарты». Соотеетствующаяинформация. уведомление и тексты размещаются также в информационной системе общего пользования — на официальном сайте Федерального агентства по техническому регулированию и метрологии в сети Интернет fmwv.gosf.ru)

© Стамдартинформ. 2016

Настоящий стандарт не может быть полностью или частично воспроизведен, тиражирован и распространен в качестве официального издания без разрешения Федерального агентства по техническому регулированию и метрологии

II

Содержание

Приложение С (обязательное) Алгоритм преобразования текста с языка EXPRESS-X на язык

Приложение ДА (справочное) Сведения о соответствии ссылочных международных стандартов

Введение

Стандарты комплекса ИСО 10303 распространяются на компьютерное представление информации об изделиях и обмен данными об изделиях. Их целью является обеспечение нейтрального механизма. способного описывать изделия на всем протяжении их жизненного цикла. Этот механизм применим не только для обмена файлами в нейтральном формате, но является также основой для реализации и совместного доступа к базам данных об изделиях и организации архивирования.

Стандарты комплекса ИСО 10303 представляют собой набор отдельно издаваемых стандартов (частей). Стандарты данного комплекса относятся к одной из следующих тематических групп: «Методы описания». «Методы реализации». «Методология и основы аттестационного тестирования». «Интегрированные обобщенные ресурсы». «Интегрированные прикладные ресурсы». «Прикладные протоколы», «Комплекты абстрактных тестов». «Прикладные интерпретированные конструкции» и «Прикладные модули». Полный перечень стандартов комплекса ИСО 10303 представлен на сайте . Настоящий стандарт входит в тематическую группу «Методы описания». Он подготовлен подкомитетом SC4 «Производственные данные» Технического комитета 184 ИСО «Системы автоматизации производства и их интеграция». Приложения А. В и С являются неотъемлемой частью настоящего стандарта; приложения D, Е и F являются справочными.

Настоящий стандарт определяет язык для описания взаимосвязей между данными, управляемыми EXPRESS-схемами, и для описания альтернативных представлений таких данных. Данный язых называется EXPRESS-X.

Пользователи настоящего стандарта должны быть знакомы со спецификацией языка EXPRESS, определенной в ИСО 10303-11, и со спецификацией кодирования открытым текстом структуры обмена, определенной в ИСО 10303-21.

НАЦИОНАЛЬНЫЙ СТАНДАРТ РОССИЙСКОЙ ФЕДЕРАЦИИ

Системы автоматизации производства и их интеграция ПРЕДСТАВЛЕНИЕ ДАННЫХ ОБ ИЗДЕЛИИ И ОБМЕН ЭТИМИ ДАННЫМИ

Часть 14 Методы описания.

Справочное руководство по языку EXPRESS-X

industrial automaton systems and integration. Product data representation and exchange. Part 14. Description methods. The EXPRESS-X language reference manual

Дата введения — 2016—10—01

1    Область применения

Настоящий стандарт определяет язык для описания взаимосвязей между данными, управляемыми EXPRESS-схемами. и для описания альтернативных представлений таких данных. Данный язых называется EXPRESS-X.

EXPRESS-X является языком отображения структурированных данных. Данный язык состоит из элементов, которые позволяют однозначно определять взаимосвязь между EXPRESS-схемами.

Требования настоящею стандарта распространяются:

•    на отображение данных, управляемых одной EXPRESS-схемой. на данные, управляемые другой EXPRESS-схемой:

•    отображение данных, управляемых одной версией EXPRESS-схемы, на данные, управляемые другой версией той же EXPRESS-схемы, причем эти две версии схемы имеют разные имена;

. определение требований к трансляторам данных для приложений совместного использования данных и обмена данными:

•    спецификацию альтернативных представлений данных, определенных в EXPRESS-схеме;

•    альтернативное представление таблиц отображения прикладных протоколов:

•    двунаправленные отображения в тех случаях, когда это математически возможно;

•    спецификацию ограничений, которые могут быть оценены по отношению к данным, полученным в результате отображения.

Требования настоящего стандарта не распространяются:

•    на отображение данных, определенных с помощью средств, отличных от языка EXPRESS:

•    идентификацию версии EXPRESS-схемы:

•    графическое представление конструкций языка EXPRESS-X.

2    Нормативные ссылки

8 настоящем стандарте использованы ссылки на следующие международные стандарты (для датированных ссылок следует использовать только указанное издание, для недатированных ссылок — последнее издание указанного документа, включая все поправки к нему):

ИСО/МЭК 8824-1:2002* Информационная технология. Абстрактная синтаксическая нотация версии 1 (АСН.1). Часть 1. Спецификация основной нотации (ISO/IEC 8824-1:2002. Information technology — Abstract Syntax Notation One (ASN.1) — Part 1: Specification of basic notation)

' Отменен. Действует ИСО/МЭК 8624-1:2006. Для однозначного соблюдения требований настоящего стандарта. выраженных в датированных ссылках, рекомендуется использовать только данный ссылочный стандарт.

Издание официальное

ИСО 10303-1:1994 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 1. Общие представления и основополагающие принципы {ISO 10303-1:1994. Industrial automation systems and integration — Product data representation and exchange — Part 1: Overview and fundamental principles)

ИСО 10303-11:2004 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 11. Методы описания. Справочное руководство по языку EXPRESS (IS0 10303-11:2004, Industrial automation systems and integration — Product data representation and exchange — Part 11: Description methods: The EXPRESS language reference manual)

ИСО/МЭК 10646-1:2000 Информационные технологии. Универсальный многоохтетный набор кодированных символов (UCS). Часть 1. Архитектура и основная многоязычная матрица (ISO/IEC 10646:2003, Information technology — Universal Multiple-Octet Coded Character Set (UCS) — Part 1: Architecture and Basic Multiligual Plane)

3 Термины и определения

3.1    Термины, определенные е ИСО 10303-1

В настоящем стандарте применены следующие термины:

-    данные (data);

-    информация (information).

3.2    Термины, определенные в ИСО/МЭК 10303-11

В настоящем стандарте применены следующие термины:

-    сложный объектный тип данных (complex entity data type);

-    экземпляр сложного объекта (сложного объектного типа данных) (complex entity (data type) instance);

-    константа (constant);

-    объект (entity);

-    объектный тип данных (entity data type);

-    экземпляр объекта (объектного типа данных) [entity (data type) instance);

-    экземпляр (instance);

-    частичный сложный объектный тип данных (partial complex entity data type);

-    значение частичного сложного объекта (partial complex entity value):

-    совокупность (population);

• экземпляр простого объекта (простого объектного типа данных) [simple entity (data type) instance);

-    граф подтипов/супертигов (subtype/supertype graph);

-    лексема (token);

-    значение (value).

3.3    Другие термины и определения

В настоящем стандарте применены следующие термины с соответствующими определениями:

3.3.1    связующее пространство (Unding extent): Множество связующих экземпляров, созданных из экземпляров, присутствующих в исходных пространствах объектных типов данных и пространствах образов.

3.3.2    связующий экземпляр (binding instance): Совокупность ссылок на экземпляры объектною типа данных и экземпляры типа данных образа, связанные с образом или отображением.

3.3.3    пространство объектного типа данных (entity data type extent): Совокупность экземпляров данного объектного типа данных.

3.3.4    анализатор EXPRESS-X (EXPRESS-X parser): Сервисная программа, способная выполнять синтаксический анализ детализированного описания, сформулированного на языке EXPRESS-X.

3.3.5    программа отображения EXPRESS-X (EXPRESS-X mapping engine): Программное средство. выполняющее отображение структурированной информации, основанное на детализированном описании, сформулированном на языке EXPRESS-X.

3.3.6    отображение (тар): Объявление взаимосвязи между данными, представляющими один или несколько исходных объектных типов данных или исходных типов данных образа, и данными, пред* ставляющими один или несколько целевых объектных типов данных.

3.3.7    сетевое отображение (network mapping): Отображение на множество целевых экземпляров объектов.

3.3.8    квалифицированное связующее пространство (qualified binding extent): Подмножество связующего пространства, состоящее из связующих экземпляров, соответствующих набору критериев выбора.

3.3.9    критерий выбора (selection criterion): Логическое выражение: критерий выбора соответ* ствует требованиям только в том случае, если оценкой данного выражения является значение TRUE (ИСТИНА).

3.3.10    исходный набор данных (source data set): Совокупность экземпляров объектных типов данных, управляемых EXPRESS-схемой. являющаяся источником данных для отображения.

3.3.11    исходное пространство (source extent): Пространство образа или пространство объект* ных типов данных, предназначенное для создания связующего пространства.

3.3.12    целевой набор данных (target data set): Совокупность экземпляров объектов, созданных в результате отображения.

3.3.13    образ (view): Альтернативная организация информации в EXPRESS-схеме.

3.3.14    тип данных образа (view data type): Представление образа.

3.3.15    экземпляр типа данных образа (view data type instance): Именованный блок информации. созданный с помощью оценки образа.

3.3.16    пространство образа (view extent): Агрегированная структура экземпляров типов данных образа, содержащая все экземпляры, которые могут быть созданы из квалифицированного связующего пространства.

4 Основные принципы

4.1 Введение

Настоящий стандарт основан на изложенных в данном разделе основных принципах. Кроме того, к настоящему стандарту применимы понятия, описанные в ИСО 10303*11. раздел 5.

Язык EXPRESS-X обеспечивает спецификацию:

•    различающихся образов данных, управляемых EXPRESS-схемой. с использованием объявлений образов (см. 9.3) в образе схемы (см. 9.5);

•    отображения данных, управляемых одной или несколькими исходными EXPRESS-схемами. с использованием объявлений отображения (см. 9.4) в отображении схемы (см. 9.6).

Схема, представленная на языке EXPRESS-X. может содержать спецификации функций и процедур языка EXPRESS, для того чтобы поддержать определение образов и отображений.

Примечания

1    Соглашение об обозначениях, используемое в данной спецификации, должно контекстуализирован» части предложения относительно обсуждения образов или отображений за счет включения в соответствующие места предложения терминов '{views [образы])" или "(maps (отображения))*.

2    Соглашение об обозначениях, используемое в данной спецификации, заключается в том. что связующий экземпляр обозначается как упорядоченный набор имен экземпляров объектов или образов, разделенных запятыми (*.’). заключенный в угловые скобки ("о"). Упорядочение имен экземпляров соответствует порядку появления исходного пространства в элементе языка FROM в объявлении образа или отображения.

Пример — Пусть заданы:

•    объявление образа;

SCHEMA_VIEW my_person_org_achema_view;

REFERENCE FROM pe rs on_and_org_s chema;

VIEW person_org;

FROM p: person; о : organization; -- определяет порядок SELECT

name : STRING :■ p.last_name;

org : STRING :■ o.department_name;

END_VIEW;

END SCHEMA VIEW;

•    исходная EXPRESS-схвма:

SCHEMA person_and_org_scheraa;

ENTITY parson;

first_name : STRING; last_name : STRING;

END_ENTITY;

ENTITY organization;

department name : STRING;

END_ENTITY;

END_SCHEMA;

•    данные, закодированные в соответствии с ИСО 10303-21 [2]:

#l«FERSON('James','Smith');

#2«PERSON('Fredrick','Jones');

#31«ORGANIZATION('Engineering');

#32*ORGANIZATION('Sales');

тогда связующие экземпляры для заданных образа и данных могут быть записаны в представленном ниже виде. Понятие связующих экземпляров определено в других разделах настоящего стандарта и не является необходимым для понимания данного примера. Однако необходимо отметить, что первый элемент каждого связующего экземпляра берется из пространства объекта person, а второй элемент — из пространства объекта organization. Данный порядок соответствует порядку появления объектов person и organization в элементе языка FROM данного образа:

{<#1,#31>,<#1.#32>,<#2,#31>,<#2.#32».

4.2 Основные принципы модели исполнения

4.2.1    введение

Настоящая спецификация определяет язык и модель исполнения. Модель исполнения состоит из двух фаз — процесса связывания и процесса реализации. При оценке образов и отображений используется общий процесс связывания, но их процессы реализации различаются.

4.2.2    Процесс связывания

Связующей средой является среда, в которой переменным присваиваются значения. Связующий экземпляр представляет собой структуру, которая связывает переменные, объявленные в элементе языка FROM из объявления образа или отображения. Элемент языка FROM ссылается на исходные пространства объектов и пространства образов. Границы значений берутся из этих исходных пространств. Каждый связующий экземпляр входит в набор, определяемый как декартово произведение ссылочных исходных пространств. Рассчитанный таким образом набор связующих экземпляров является связующим пространством для данного образа или отображения при заданных исходных пространствах. Связки переменных в связующем экземпляре образуют среду для оценки тела образа или отображения в процессе реализации, когда ссылочные данные в связующем экземпляре соотносятся со структурами, создаваемыми в целевой совокупности. Таким образом, каждый связующий экземпляр соответствует экземпляру типа данных образа (образов) либо экземплярам целевого объектного типа данных (отображениям) в целевой совокупности.

Исходные пространства отображений и образов должны быть пространствами объектных типов данных или пространствами образов.

Зацикливание между ссылками и исходными пространствами запрещено.

Примеры

1 В процессе связывания, относящемся к образу, данным и схеме и определенном в примере из 4.1, вычисляется связующее пространство объекта person_org {<#1,#31>,<#1,#32>, <#2, #31>, <#2, #32 >). Данное пространство представлено ниже в табличной форме;

Связующий экземпляр

person

organization

4

!irst_name

last_n6me

4

depar tment_name

<41,431>

41

'Janes'

'Smith'

431

'Engineering'

<41,432>

♦ 1

• James'

'Smith'

*32

'Sales'

<42,431>

42

'Fredrick'

'Jones'

431

'Engineering'

<42,432>

42

'Fredrick'

'Jones'

*32

'Sales'

2 Приведенный ниже образ схемы invalid является примером неправильного образа схемы, так как он содержит цикл ссылок (образ а ссылается на образ Ь, который ссылается на образ в):

SCHEMA VIEW invalid;

VIEW aT

FROM sotne_b : b;

attrl : INTEGER :■ some b.attr2 + 2;

END_VIEW;    ~

VIEW b;

FROM some_a : a;

attr2 : INTEGER    some_a.attrl * 3;

END_VIEW;

END SCHEMA VIEW;

4.2.3 Процесс реализации

Связующей средой является среда, в которой переменным присваиваются значения, используемые во время процесса реализации. Каждый связующий экземпляр содержит набор значений, которые должны быть использованы в качестве границ переменных. Процесс реализации образа является процессом оценки тела образа (см. 9.3.2) для каждого связующего экземпляра в связующем пространстве. Порядок оценки связующих экземпляров не определен.

Примеры

1 Процесс связывания, относящийся к объявлению схемы, данных и образа из примера в 4.1, дает в результате связующее пространство объекта person_org:    (<#1,#31>,<#1,#32>,

<#2, #31> ,<#2, #32>). Объявление образа и данные, использованные в примере из 4.1, здесь приведены еще раз:

VIEW person_org;

FROM р: person; о ; organization; -- определяет порядок SELECT

name : STRING :■ p.last_name;

org : STRING :■ o.department name;

END VIEW;

#l**PERSON (' James' , ' Smith') ;

#2*PERSON('Fredrick','Jones');

# 3l*ORGANIEATION('Engineering');

#32«ORGANIEATION('Sales');

Связующий экземпляр <Щ, Й31> соответствует заданию экземпляра объектного типа данных #1 переменной р и объектного типа данных #31 переменной о. Оценка тела образа в данном связующем пространстве дает в результате экземпляр типа данных образа со значением ' Smi th' для атрибута пате и значением ' Engineering' для атрибута org. Экземпляры типа данных образа могут быть закодированы так же, как если бы они были экземплярами объектного типа данных, с помощью кодирования, определенного в ИСО 10303-21 [2]. Пространство образа для банного примера выглядит следующим образом:

<#1,#31> <#1,#32> <#2,#31> <#2,#32>


/•

/*

/*

Л


V */

V */


'Engineering') 'Sales');

'Engineering') 'Sales');


#10 О* PERSON_ORG('Smith' #101«PERSON_ORG('Smith' #102«PERSON ORG('Jones' #103«PERSON~ORG('Jones'

2 Целевая EXPRESS-схема и отображение схемы со структурой, подобной структуре образа схемы, использованного в предыдущем примере, могут быть определены следующим образом:

SCHEMA similar_target;

ENTITY person_org; name : STRING; org : STRING;

END_ENTITY;

END SCHEMA;

SCHEMA_MAP similar;

REFERENCE FROM person_and org_schema AS SOURCE; REFERENCE FROM similar_target AS TARGET;

MAP person_org_map AS po : person org;

FROM    ~

p : person;

о : organization;

3BUCT

po.name :■ p.last_name; po.org :■ о.department name; END_MAP;

END SCHEMA MAP;

Оценка данных из предыдущего примера дает в результате следующие экземпляры объектного типа данных, управляемого схемой similar target:

Engineering');

/*

<tl,#31>

V

Sales');

/*

<#1,»32>

*/

Engineering');

/*

<#2,#31>

*/

Sales');

/*

<#2,#32>

*/


#100» P£RS0N_0RG('Smith',    ~

#101*PERSON_ORG('Smith',

#102*PERSON_ORG('Jones',

#103*PERSON_ORG('Jones',

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

3 В приведенном ниже фрагменте, является ли атрибут ро. dept_number двунаправленным или нет. зависит от сущности функции dept_£unc:

MAP person_org_map AS ро : person org;

FROM

p: person; о ; organization;

SELECT

po.name :■ p.last name;    -- двунаправленный

po.org : “ о.department name; -- двунаправленный

po.industry_code :■ о.owning_enterprise.industry.code_num; -- двунаправленный po.dept number :■ dept_func(o.department name); -- возможно, не двунаправленный END MAP;    ~

В данном подразделе определены только основные аспекты модели исполнения. Детали процесса связывания описаны в 9.2. Детали процесса реализации для образов описаны в 9.3. а для отображений — в 9.4.

4.3 Среда исполнения

Язык EXPRESS-X не описывает среду исполнения. 8 частности, язык EXPRESS-X не определяет:

•    как ссыпки соотносятся с именами;

•    как задаются наборы входных и выходных данных:

•    как осуществляется отображение для экземпляров, которые не соответствуют EXPRESS-схеме. При оценке образа создается пространство образа. При оценке отображения могут быть созданы

экземпляры объектов в целевом наборе данных. Язык EXPRESS-X не определяет, какой эффект модификация исходных данных может оказать на пространства образов или целевые наборы данных после первоначального отображения.

5 Требования соответствия

5.1    Классы соответствия языка EXPRESS-X

5.1.1    введение

Класс соответствия реализации анализатора или программы отображения EXPRESS-X показывает, какую часть языка поддерживает данная реализация. Объявления классифицируются с помощью подмножеств языка, как показано в таблице 1.

Таблица 1 — Объявления и подмножества язъка EXPRESS-X

Объявление

Подмножество 1

Подмножество 2

Объявление образа

+

-

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

-

+

Окончание таблицы 1

Объявление

Подмножество 1

Подмножество 2

Объявление зависимого отображения

-

+

Объявление константы

+

+

Объявление функции

+

+

Объявление процедуры

+

+

Объявление правила

-

Разработчик анализатора или программы отображения EXPRESS-X должен установить любые ограничения, которые данная реализация накладывает на число и длину идентификаторов, на диапазон обрабатываемых чисел и на максимальную точность представления действительных чисел. Данные ограничения должны быть задокументированы для тестирования на соответствие.

5.1.2    Классы соответствия анализатора EXPRESS-X

Реализация анализатора EXPRESS-X должна обеспечивать синтаксический анализ любых фор* мальных спецификаций, написанных на языке EXPRESS-X. которые согласуются с классом соответствия. присвоенным данной реализации. Считают, что анализатор EXPRESS-X соответствует конкретному уровню проверки, определенному в 5.1.4, если он может выполнить все проверки формальной спецификации, написанной на языке EXPRESS-X. необходимые для данного уровня (и всех нижележащих уровней).

Анализатор EXPRESS-X. относящийся к классу соответствия 1. должен анализировать все объявления из подмножества языка 1 (см. таблицу 1).

Анализатор EXPRESS-X. относящийся к классу соответствия 2. должен анализировать все объявления из подмножества языка 2 (см. таблицу 1).

Анализатор EXPRESS-X. относящийся к классу соответствия 3. должен анализировать все объявления. определенные в настоящем стандарте.

5.1.3    Классы соответствия программы отображения EXPRESS-X

Реализация программы отображения EXPRESS-X должна обеспечивать отображение любых формальных спецификаций, написанных на языке EXPRESS-X. которые согласуются с классом соответствия. присвоенным данной реализации. Отображение осуществляется по отношению к одному или нескольким наборам исходных данных; определение того, как эти наборы данных становятся доступными для программы отображения, находится вне области применения настоящего стандарта.

Программа отображения EXPRESS-X. относящаяся к классу соответствия 1, должна обеспечивать отображение всех объявлений из подмножества языка 1 (см. таблицу 1).

Программа отображения EXPRESS-X. относящаяся к классу соответствия 2. должна обеспечивать отображение всех объявлений из подмножества языка 2 (см. таблицу 1).

Программа отображения EXPRESS-X. относящаяся к классу соответствия 3, должна обеспечивать отображение всех объявлений, определенных в настоящем стандарте.

5.1.4    Проверка совместимости анализаторов EXPRESS-X

5.1.4.1    Введение

Формальная спецификация, написанная на языке EXPRESS-X. должна быть совместима с заданным уровнем проверки. Формальная спецификация совместима с заданным уровнем в том случае, когда все проверки, определенные для данного уровня, а также для всех нижележащих уровней, могут быть выполнены для данной спецификации.

5.1.4.2    Уровень 1: проверка ссылок

Данный уровень предусматривает проверку формальной спецификации на ее синтаксическую и ссылочную правильность. Формальная спецификация считается синтаксически правильной в том случае. если она соответствует синтаксису, сгенерированному при расширении основного синтаксического правила, представленного в приложении В. Формальная спецификация считается ссылочно правильной в том случае, если все ссылки на элементы языка EXPRESS-X соответствуют правилам области действия и области видимости, определенным в разделе 13.

5.1.4.3    Уровень 2: проверка типов данных

Данный уровень включает проверки уровня 1 и проверку формальной спецификации на ее совместимость по следующим позициям:

• выражения должны подчиняться правилам, определенным в разделе 10 и в ИСО 10303-11. раздел 12:

- назначения должны подчиняться правилам, определенным в ИСО 10303. подраздел 13.3.

5.1.4.4    Уровень 3: проверка значений

Данный уровень включает проверки уровня 2 и проверку формальной спецификации на ее совместимость с выражениями вида «А должно быть больше, чем В», определенным в ИСО 10303-11, разделы 7—14. При этом данные выражения ограничены случаями, когда значения А и В могут быть получены из литералов и/или констант.

5.1.4.5    Уровень 4. полная проверка

Данный уровень включает проверку формальной спецификации на ее совместимость со всеми требованиями, установленными в настоящем стандарте.

6 Синтаксис спецификации языка

В данном разделе определена нотация, используемая для представления синтаксиса языка EXPRESS-X.

Полный синтаксис языка EXPRESS-X приведен в приложении В. Части этих синтаксических правил воспроизведены в различных разделах настоящего стандарта для иллюстрации синтаксиса конкретных операторов. Эти части не всегда полны. Поэтому иногда необходимо руководствоваться приложением 8 в отношении недостающих в данном примере правил. Части синтаксических правил в тексте настоящего стандарта представлены в рамках. Каждое синтаксическое правило внутри рамки обозначено слева уникальным номером для использования его в перекрестных ссылках е других синтаксических правилах.

Синтаксис языка EXPRESS-X определен как производная от синтаксической нотации Вирта (СНВ)

[1].

Соглашения об обозначениях и самоопредепенная СНВ приведены ниже.

syntax

production

expression

term

factor

identifier

literal

group

option

repetition


{ production

identifier ' = ' expression    .

term ( 1|' term } . factor ( factor } .

identifier I literal I group I option I repetition character ( character | .

character { character } * 1'* .

= ' (' expression *)* -= • [ * expression ' ] ' .

» '(' expression ' } ’ •

Знак равенства обозначает порождающее правило. Элемент слева от знака равенства определяется как комбинация элементов, расположенных справа от него. Любые пробелы между элементами правой части не имеют значения, если только они не входят в состав литерала. 8 конце порождающего правила ставится точка '.'.

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

Литерал используется для обозначения терминального символа, который не может быть раскрыт в дальнейшем. Литерал представляется последовательностью символов, заключенной в апострофы. Чтобы апостроф был включен в литерал, он должен быть записан дважды, т.е. ''''.

Семантика разных видов скобок определена следующим образом:

•    фигурные скобки ' | \' обозначают ни одного или несколько повторений:

•    квадратные скобки 1 [ ] ’ обозначают необязательные параметры:

- круглые скобки ' ( > • обозначают, что группа порождающих правил, заключенная в круглые скобки, должна использоваться как единое порождающее правило;

•    вертикальная линия • | ’ обозначает, что в выражении должен использоваться только один из элементов, разделенных вертикальными линиями.

Следующая нотация используется для представления полных наборов символов и некоторых специальных символов, которые трудно визуально отобразить:

•    \ а — представляет любой символ из ИСО/МЭК 10646-1;

•    \п — представляет символ новой строки (newline), роль которого зависит от системы (см. пункт 7.1.5.2 ИСО 10303*11).

7    Основные элементы языка

7.1    Введение

8    данном разделе определены основные элементы, из которых формируется спецификация ото* бражения EXPRESS-X: набор символов, комментарии, знаки, зарезервированные слова, идентификаторы и литералы.

Элементы языка EXPRESS-X совпадают с элементами языка EXPRESS, определенными в ИСО 10303*11. раздел 7. с некоторыми исключениями, отмеченными далее.

7.2    Зарезервированные слова

Зарезервированными словами языка EXPRESS-X являются ключевые слова и имена встроенных констант, функций и процедур. Все зарезервированные слова языка EXPRESS (см. ИСО 10303*11) являются зарезервированными словами языка EXPRESS-X. Зарезервированные слова не должны использоваться в качестве идентификаторов. Дополнительные зарезервированные слова языка EXPRESS-X определены в таблице 2.

Таблица 2 — Дополнительные ключевые слова языка EXPRESS-X

DEPENDENT МАР

EACH

ELS1F

END DEPENDENT MAP

END КАР

END SCHEMA MAP

END SCHEMA VIEW

END VIEW

EXTENT

IDENTIFIED BY

INDEXING

MAP

ORDERED BY

PARTITION

SCHEMA MAP

SCHEMA VIEW

SOURCE

TARGET

VIEW

Примечание — В том случае, если правильный идентификатор языка EXPRESS совпадает с зарезервированным словом языка EXPRESS-X. использующие данный идентификатор схемы могут быть отображены с помощью переименования конфликтующего идентификатора с использованием элемента языка REFERENCE (см. 13.2).

8 Типы данных

8.1    Введение

Определенный е данном разделе тип данных аместе с типами данных, определенными е языке EXPRESS (ИСО 10303*11, раздел 8), составляют часть языка EXPRESS-X.

Каждый атрибут образа (см. 9.3.2) имеет связанный с ним тип данных.

8.2    Тип данных образа

Типы данных образа устанавливаются с помощью объявлений образа (см. 9.3). Типу данных образа присваивается идентификатор при определении отображения схемы или образа схемы. Ссылки на тип данных образа осуществляются с помощью данного идентификатора.

Синтаксис:

230 view_reference - | ( schema_map_ref I schema_view_ref )    | view_ref .

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

а) Элемент языка view_reference должен представлять собой ссылку на образ, видимый в текущей области действия.

Ь) Элемент языка view_reference не должен ссылаться на зависимый образ {см. 9.3.5).

Пример — Следующее объявление определяет тип данных образа с именем circle;

VIEW circle;

FROM e : ellipse;

WHERE (e.major axis ■ e.minor_axis);

SELECT    “

radius : REAL :■ e.minor_axis; centre ; point :■ e.centre;

£ND_VIEW;

9 Объявления

9.1    Введение

В данном разделе определены объявления, доступные в языке EXPRESS-X. Объявление в языке EXPRESS-X создает новый элемент языка и связывает с ним некоторый идентификатор. На элемент языка EXPRESS-X можно ссылаться в любом месте с помощью данного идентификатора.

В языке EXPRESS-X определены следующие объявления:

•    образа:

-    отображения:

•    зависимого отображения:

•    образа схемы:

-    отображения схемы.

Кроме того, спецификация на языке EXPRESS-X может содержать следующие объявления, определенные в ИСО 10303-11:

•    константы:

•    функции:

-    процедуры:

•    правила.

9.2    Связывание

9.2.1    введение

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

Квалифицированное связующее пространство является подмножеством связующего пространства. состоящим только из тех связующих экземпляров, для которых элемент языка where возвращает значение true при связывании их переменных со значениями в связующем экземпляре.

Примечание — Положения, определенные в 9.2. применяются к объявлениям отображений и объявлениям образов. Положения, применяемые только к объявлениям образов, определены в 9.3. Положения, применяемые только к объявлениям отображений, определены в 9.4.

9.2.2    Связующее пространство

Элемент языка FROM определяет элементы связующих экземпляров в связующем пространстве. Элемент языка FROM включает один или несколько параметров. Каждый исходный параметр связывает идентификатор с пространством.

Синтаксис:

228 view_decl - ( root_view_decl | dependent_view_decl I subtype view decl > •

136 map decl - КАР map_id AS target_parameter    ( target parameter    ) <

map_subtype_of_clause subtype_binding_header map decl body ) I ( binding_header map_decl_body I binding_header map_decl_body ) )

END_MAP ';' .

47 binding_header - ( PARTITION partitioned J { from_clause 1 ( local_decl ] [ where_clause ] ( identified_by_c^ause ] (

ordered_by_c^auae J •

90 from clause - FROM sourcejparameter    ( source parameter    ) .

198 source_parameCe£ “ source_para(nete£_£<1 ''• 1 extent reference .

83 extent_reference • source_entity_reference I view_reference .


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

Идентификаторы source_parameter_id должны быть уникальными а области действия объявления отображения или образа.

Связующее пространство вычисляют как декартово произведение экземпляров пространств, на которые имеются ссылки в элементе языка prom.

Пример — Связующее пространство строятся нам совокупностями объектов item и person.

SCHEMA source_schema;    -- EXPRESS-схема

ENTITY item; item_nuober : INTEGER; approved_by : STRING;

END ENTITY;

ENTITY person;

name : STRING;

END_ENTITY;

END_SCHEMA;

SCHEMA_VIEW example;

REFERENCE FROM source_schema;

VIEW items and persons;

FROM i : item; p : person;

SELECT

item_number : INTEGER :■ i.item number; responsible : STRING :» p.name;

END_VIEW;

END_SCHEMA_VIEW;

Пусть задана следующая совокупность (объекты представлены в соответствии с ИСО 10303-21):

#1«*1ТЕМ(123, 'Smith') ;

#2*ITEM(234,'Smith');

#33»PERSON('Jones');

#44*PERSON('Smith');

тогда соответствующее связующее пространство будет выглядеть следующим образом: {<#1,#33»<#1,#44>,<#2,#33» <#2,#44».

9.2.3 Квалификация связующего пространства

Элемент языка WHERE определяет критерии выбора связующих экземпляров е связующем пространстве. Элемент языка WHERE вместе с исходными пространствами, определенными в элементе языка FROM, определяют квалифицированное связующее пространство.

Связующей средой является среда, в которой переменным присваиваются значения. Исходные параметры элемента языка FROM являются границами связующего экземпляра. Выражения для правил области действия элемента языка WHERE вычисляют в процессе данного связывания. Связующий экземпляр из связующего пространства включается в квалифицированное связующее пространство в том случае, если вычисленным значением всех выражений для правил области действия элемента языка WHERE является TRUE.

Синтаксис элемента языка WHERE определен в пункте 9.2.2.2 ИСО 10303-11.

Пример — Квалифицированное связующее пространство включает те пары объектов item и person из связующего пространства, для которых значением атрибута person.name является 'Smith' или ‘Jones' и значением атрибута item.approved__by является также 'Smith' или 'Jones'.    

SCHEMAJ/IEW example;

REFERENCE FROM source_schema;

VIEW items and persons;

FROM i : item; p : person;

WHERE (p.name ■ 'Smith') OR (p.name ■ 'Jones');

(i.approved by * p.name);

SELECT

name : STRING :“ p.name;

END_VIEW;

END_SCHEMA VIEW;

Квалифицированное связующее пространство, соответствующее данный из примера в 9.2.2, будет выглядеть следующим образом:

<<#1,#44>,<#2,#44>) .

9.2.4 Идентификация экземпляров образа и целевых экземпляров

Связующий экземпляр отображения или образа, не содержащий элемент языка iden t iiied_by_ clause, идентифицируют значениями (экземплярами объектного типа данных), которые он получает из пространств, на которые имеются ссылки в элементе языка FROM. Связующий экземпляр отображения или образа, содержащий элемент языка identified_by_clause. идентифицируют значением (значениями) элемента языка expression в соответствии с синтаксическим правилом 108. Эти схемы идентификации используют при вызове образа (см. 10.2) и вызове отображения (см. 10.3).

Элемент языка identified_by_clause определяет отношение эквивалентности между экземплярами в связующем пространстве.

Синтаксис:

107 identified_by_clause - IDENTIFIED_BY id_parameter '{id_parameter •; ' ) -

106 id_parameter • iid_parasneter_id expression .

109 id_paramecer_id • siraple_id .

90 from_clause - FROM source_parameter    ( source_parameter    ) .

196 source_parameter - source_parameter_id •:1 extent_reference .


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

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

Два связующих экземпляра относятся к одному классу эквивалентности, если для каждого выражения элемента языка identified_by_clause вычисление значения данного выражения е контексте этих экземпляров дает в результате то. что данные экземпляры равны (пункт 12.2.2 ИСО 10303-11). 8 процессе реализации создается один экземпляр образа (образов) или целевая сеть (отображения) для каждого класса эквивалентности.

Пример —Данный пример иллюстрирует использование элемента языка identified_by.

SCHEMA_VIEW example;

REFERENCE FROM some_schema;

VIEW department;

FROM e : employee;

IDENTIFI£D_BY e.department_name;

SELECT

name : STRING :■ e.department_name;

END_VIEW;

END_SCHEMA_VIEW;

SCHEMA some_schema;

ENTITY employee; name : STRING; department name : STRING;

END_ENTITY;

END_SCHEMA;

fl-EMPLOYEE('Jones’,'Engineering');

#2-EMPLOYEE('Smith','Sales');

#3-EMPLOYEE('Doe','Engineering');

Для представленных в данном примере образе и данных существуют два класса эквивалентности: {<#1>,<#3>) и {<#2>), соответствующие связующим экземплярам с е. department_name -' Engineering* и е. department_name - ' Sales ’ соответственно.

9.2.5 Классы эквивалентности и процесс реализации

Атрибуты образа (см. 9.3.2) и атрибуты целевого объекта (см. 9.4.2) представляют характеристики соответствующих образа (объявление образа) и объектов целевой сети (объявление отображения). Эти 12

атрибуты получают значения с помощью вычисления соответствующего выражения, представленного элементом языка expression (синтаксическое правило 224). Вычисление выражений производится в контексте связующего экземпляра из квалифицированного связующего пространства.

Синтаксис:

224 view_attribute_decl » view_attribute_id ':' J OPTIONAL ] [ source_schema_ref ) base_type *:«•* expression    .

134 map_attribute_declaration - [ target_parameter_re£ ( index_qualifier ) ( group_qualifier ) '•' ) atcribute_ref [ index_qualifier ] expression    .


Если класс эквивалентности, определенный элементом языка identified__by_class, содер-жит более одного квалифицированного связующего экземпляра, то значение элемента expression вычисляется следующим образом:

•    если существуют связующие экземпляры, для которых вычисление значения элемента expression (синтаксическое правило 224) не приводит к неопределенному результату, и если все такие значения, не являющиеся неопределенными, одинаковы (равенство экземпляров) или если су* щестеует только одно такое значение, то данное значение присваивается данному атрибуту:

•    если для двух или более связующих экземпляров вычисление значения элемента expression дает не являющиеся неопределенными неравные результаты или если все вычисления производят не* определенные значения, то данному атрибуту присваивается неопределенное значение.

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


END_ENTITY; END SCHEMA;


(* Исходная схема *) SCHEMA src;

ENTITY employee; name: STRING; manager: STRING; dept: STRING;


END_ENTITY; END SCHEMA;


(* Целевая схема *) SCHEMA tar;

ENTITY department; employee: STRING; manager: STRING; dept_name: STRING;


(• Схема отображения *)

SCH£MA_MAP example;

REFERENCE FROM etc AS SOURCE; REFERENCE FROM tar AS TARGET;

MAP department_map AS d : department; FROM e : src.employee;

IDENTIFIED BY e.dept;

SELECT ~ d.employee :■ e.name; d.manager :■ e.manager; d.dept name :■ e.dept;

END_MAP;“

END SCHEMA MAP;

#1«EMPLOYEE('Smith','Jones','Marketing');

#2«EMPLOYEE('Doe','Jones','Marketing');

В приведенном фрагменте целевой набор данных содержит один экземпляр объекта. ^«DEPARTMENT (S, ' Jones ', 'Marketing'). Атрибут department .dept_name является неопределенным, так как результатом вычисления выражения для данного атрибута являются два разных значения ('Smith' и 'Doe').

9.2.6 Упорядочение экземпляров образа и целевых экземпляров

Элемент языка ORDERED BY определяет упорядочение связующих экземпляров квалифицированного связующего пространства. Обращения к процедуре частичного связывания (см. 10.4) в соответствующем разделе образа или отображения дают в результате агрегированные структуры, упорядоченные в соответствии с элементом языка ORDERED BY. если он присутствует.

Элемент expression в элементе языка ORDEREDBY должен вычислять значения одинакового сопоставимого по упорядоченности типа данных для всех связок в данном разделе. К сопоставимым по упорядоченности типам данных относятся NUMBER, BINARY, STRING и ENUMERATION, а также их конкретизации. Результирующее упорядочение в связующем пространстве должно быть таким, чтобы значением выражения (е < £) не было FALSE, где е и £ представляют значения, полученные при вычислении выражения expression (см. синтаксическое правило 148) для любых двух последовательных элементов связующего пространства, а < — оператор сравнения значений языка EXPRESS (ИСО 10303-11, пункт 12.2.1) . Если определены дополнительные элементы языка expression, то для каждого последующего элемента expression описанный процесс применяется к результату вычисления значения предыдущего элемента expression.

Синтаксис:

47 binding header = ( PARTITION partitioned_id    ) ( £rom_clause ]    (

loCal_decl ) ( where clause ] ( identified_by_clause ] ( ordered_by_clause ].

148 ordered_by_clause = ORDERED_BY expression (    expression )    .


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

a)    Выражение expression из синтаксического правила 148 не должно давать в результате неопределенное значение для любых связок в данном разделе.

b)    В дочерних разделах образов и отображений не должен быть задан элемент языка ORDERED BY. Дочерние разделы образов и отображений должны наследовать упорядочение от своих родительских разделов, которое определяется элементом языка ORDERED by, если он там задан.

c)    Совокупность разделов образов, образующая иерархию. должна содержать не более одного элемента языка ORDERED BY.

<3) Совокупность разделов отображений, связанных элементом map_subtype_of^clause (см. синтаксическое правило 141}, должна содержать не более одною элемента языка ORDERED_BY.

9.3 Объявление образа

9.3.1 Введение

Объявление образа создает тип данных образа и объявляет идентификатор, чтобы на него ссылаться.

Пример — Следующее объявление образа создает тип данных образа arra_person_role_ in_ organization.

VIEW arm_person_role_in organization;

FROM    ~

pao : person_and organization;

ccdpaoa : cc_desTgn_person_and_organization_assignment;

WHERE ccdpaoa.assigned_person_and organization :■: pao;

SELECT    “

person : person :■ pao.the_person; org : organization :■ pao.the_organization; role ; label :■ ccdpaoa.role.name;

END VIEW;

Синтаксис:

228 view_decl = ( root view_decl | dependent_view_decl I subtype_view_decl ) -

177 root_view_decl = VIEW view_id ( supertype_constraint )

Binding_header SELECT view attr decl_stmt_list ( binding_header SELECT view_attr_decl stmt_list ) END VIEW *;' .

ordered_by_clause ) .

198 Source_parameter = source_parameter_id *:’ extent_reference .

83 extent reference = source entity reference I view reference .


9.3.2 Атрибуты образа

Атрибут типа данных образа представляет характеристику образа. Значение атрибута экземпляра образа получают е результате вычисления значения выражения, представленного элементом языка expression из синтаксического правила 224.

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

Синтаксис:

226 view_attr_decl_stmt_list = ( view_attribute_decl ) .

224 view_attribute_decl * view_attribute id *:' ( OPTIONAL J ( source_schema ref    J base_type ’expression 1 ;* .

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

a)    Значение, полученное в результате вычисления выражения, представленного элементом языка expression из синтаксического правила 224. должно быть совместимо по присваиванию с атрибутом образа base_cype.

b)    Любое имя атрибута образа view_attribute_id, объявленное в объявлении образа, должно быть уникально в рамках данного объявления.

c)    Элемент языка OPTIONAL показывает, что значение данного атрибута может быть неопределенным. Использование элемента языка optional не влияет на модель исполнения.

9.3.3 Разделы образа

Раздел образа является подмножеством пространства образа. Пространство образа представляет собой объединение его разделов. Объявление образа состоит из одного или нескольких объявлений разделов, в каждое из которых входят свои собственные элементы языка from и where.

Пример — В ИСО 10303-201 прикладной объект ORGANIZATION может быть отображен из объекта PERSON. ORGANIZATION или PERSON_AND_ORGANT.ZATION. Отображение образа данной схемы на образ arm_organization определено следующим образом:

VIEW arm_organization;

PARTITION a_single_person;

FROM p : person;

PARTITION a_single_organization;

FROM o: organization;

PARTITION a_person_in_an_organization;

FROM po: person_and_organization;

END VIEW;

Синтаксис:

22S view dec! = ( root_view deci I dependent_view_decl | subtype view decl ) •

177 root_view_decl * VIEW view_id [ supertype constraint ) *;•

Binding_header SELECT view_attr_decl_stmt_list < binding_header SELECT view_attr_decl_stmt list ) END_VIEW    .

67 dependent_view_decl ■ VIEW view_id 1:’ base type 1;1 binding_header RETURN expression { binding_header RETURN expression ) END_VIEW    .

206 subtype_view_decl ■ VIEW view_id subtype_declaration

subtype_binding_header SELECT view attr_decl_stmt_list ( subtype_binding_header SELECT view_attr_decl_stmt_list | END_VIEW

203 subtype_binding_header * ( PARTITION partition id ) where_clause .

47 binding header * ( PARTITION partition -id ] [ from_clause ] [ local_decl ] [ where clause ) [ identified by clause ] [ ordered by_clause ]    .


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

a)    Если в объявлении образа присутствует более одного раздела, то элемент языка partition_ id должен быть задан для каждого раздела.

b)    Значение элемента partitioned должно быть уникальным в рамках объявления образа.

c)    Все разделы объявления образа должны определять одинаковые атрибуты (включая имена и типы данных).

d)    Атрибуты объявления образа должны быть представлены в одинаковом порядке в каждом из его разделов.

9.3.4 Постоянные разделы

Раздел, в котором отсутствуют синтаксические элементы from, where и identified_bv, называется постоянным разделом. Постоянный раздел лредставляет один экземпляр образа без привязки к исходным данным.

Пример —Данный пример иллюстрирует использование постоянных разделов; VIEW person;

PARTITION тагу;

SELECT

name : STRING :» 'Mary'; age : INTEGER :» 22;

PARTITION john;

SELECT

name : STRING :» 'John’; age : INTEGER :■ 23;

END VIEW;

9.3.5 Зависимые образы

Зависимым образом является образ, в котором нет определения атрибутов. 8 разделах зависимого образа определен элемент языка return expression (см. синтаксическое правило 67}. вычисление значения элемента языка expression не должно давать в результате значение типа aggregate. вычисленное значение должно быть сопоставимо по типу данных с элементом языка base_type (см. синтаксическое правило 67).

Синтаксис:

228 view decl = ( root view decl I dependent view_decl I subtype_view decl ) - "

67 dependent_view decl ■ VIEW view_id ':1 base type ';* binding header RETURN expression ( binding_header RETURN expression ) END_VIEW '; ' .


Если класс эквивалентности, определенный элементом языка identified_by зависимого образа, содержит более одного квалифицированного связующего экземпляра, то возвращаемое значение вычисляется следующим образом:

• если для каждой такой связки элемент языка return expression (см. синтаксическое правило 67) вычисляет одинаковые значения, то возвращается данное значение:

- если для двух или более связок элемент языка return expression (см. синтаксическое правило 67) вычисляет разные значения, то возвращается неопределенное значение.

Примеры

1    В данном примере определен подтип типа данных cat, у экземпляров которого атрибут colour имеет значение • red';

VIEW red car : car;

FROM rc : car;

WHERE rc.colour «'red';

RETURN rc;

END_VIEW;

2    В данном примере определено пространство, члены которого являются строками. Эти строки поступают из двух источников:

VIEW owner name : STRING;

PARTITION one;

FROM po : person;

RETURN ро.паше;

PARTITION two;

FROM or : organization;

RETURN org.name;

END_VIEW;

9.3.6 Определение подтипов образов

Язык EXPRESS-X допускает определение образов как подтипов других образов, при этом тип данных подтипа образа является конкретизацией своего супертипа. Это устанавливает наследствен* ную взаимосвязь между типами данных образа, при которой подтип наследует атрибуты и критерии выбора своего супертипа. Образ является подтипом другого образа, если в его объявлении присутствует элемент языка subtype. Пространство типа данных подтипа образа является подмножеством пространства его супертипа в соответствии с критерием выбора, определенным элементом языка where в данном подтипе.

Подтип образа наследует атрибуты от своего супертипа образа (или образов). Наследование атрибутов должно соответствовать правилам и ограничениям наследования атрибутов, определенным в пункте 9.2.3.3 ИСО 10303*11..

8 объявлении подтипа образа могут быть заново определены атрибуты, присутствующие у одного из его сулертипое. Новое определение атрибутов должно соответствовать правилам и ограничениям повторного объявления атрибутов, определенным в пункте 9.2.3.4 ИСО 10303*11.

При вычислении значения образа должен быть создан экземпляр образа в том случае, если удовлетворяется критерий выбора для самого общего супертипа. Экземпляр образа должен относиться к типу, соответствующему образу подтипа, если оценка всех критериев выбора для данного подтипа образа. а также всех его супертипов образа дает значение true.

Синтаксис:

228 view_decl ■ ( root view decl | dependent_view_decl | subtype_view decl ) *

206 subtype view decl = VIEW view id subtype_declaration

subtype_binding_header SELECT view_attr_decl stmt_list ( subtype_binding header SELECT view attr_decl stmt list ) END VIEW 1; 1

205 subtype declaration = SUBTYPE OF 1(1 view ref (    1 view_ce£ ) *)1 .

203 subtype binding header * { PARTITION partition id ] where_clause .


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

a)    Только в одном супертипе образа для данного подтипа образа должен быть определен элемент языка FROM.

b)    Множество разделов подтипа образа должно быть подмножеством множества разделов его супертипа образа.

Примеры

1    В данном примере показано определение подтипа образа. Подтип образа male определяет дополнительное требование принадлежности к данному подтипу для экземпляров образа (атрибут gender ■ 'M'J;

VIEW person;

FROM e:employee;

END_VIEW;

VIEW male SUBTYPE OF (person);

WHERE e.gender ■ 'M';

END_VIEW;

2    В банном примере показано использование разделов и подтипов образа;

VIEW j;

PARTITION first;

FROM s:three, t:four WHERE cond6;

PARTITION second;

FROM г:four, q:five WHERE cond?;

END_VIEW;

VIEW к SUBTYPE OF <j);

PARTITION second;

WHERE cond9;

END_VIEW;

Только тот подтип обрезе, для которого к является супертипом, может включать разбел second.

9.3.7 Ограничения супертипа

В объявлении образа могут быть определены ограничения супертипа (см. пункт 9.2.4 ИСО 10303-11). Удовлетворяется или нет ограничение супертипа не влияет ни на выполнение модели, ни на содержимое пространств образа.

Синтаксис:

226 view_decl = ( root view decl | dependent_view decl | subtype view decl

) .

177 root_view decl * VIEW view_id | supertype_constraint } 1;*

binding_header SELECT view_attr_decl_stmt_list ( binding_header SELECT view_attr_decl_stmt_list ) END_VIEW    .

207 supertype_constraint * abstract^supertype declaration | supertype rule

33 abstract_supertype declaration = ABSTRACT SUPERTYPE [ subtype_constraint ] .

205    subtype_declaration * SUBTYPE OF *(* view ref { ', * view_ref ) 1J * . 204 subtype constraint * OF '(' supertype_expression '-

206    supertype expression = supertype_factor ( ANDOR supertype_factor } . 209 supertype_factor * supertype_term ( AND supertype_term ) .

211 supertype term = view ref I one_of I '{' supertype_expression ')1 -147 one of = ONEOF '(* supertype expression ( supertype expression }

*) ~_*_

Пример

VIEW a ABSTRACT SUPERTYPE OF ONEOF(b ANDOR c, d);

END_VIEW;

Экземпляр образа а является допустимым в том случае, если у него есть по крайней мере два типа данных (а и какой-нибудь еще), что определено наличием ключевого слова ABSTRACT, а одним из возможных других типов данных может быть d или некоторая комбинация Ь и с, что определено наличием ключевого слова ONEOF.

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

9.4.1 введение

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

Синтаксис:

{ map subtype_of clause subtype_binding_header map_decl body ) I ( binding_header map_decl_body | binding header map decl_body ) > END_MAP ,;* .

local_decl ]    ( where_clause ] [ identiiied by_clause ] [

ordered_by_clause ] .

203 subtype_binding_header = [ PARTITION partitioned ,; * ) where clause .

199 source_parameter = source_parameter_id ,:1 extent reference .

83 extent_reference = source entity^reference I 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 s 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 ,; 1 ) (

map_subtype_o£_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_ir.stantiation loop ) ) I map_project_clause I ( RETURN expression

, ) •

139 map_project clause = SELECT { map_attribute_declaration } .

134 map attribute_declaration = [ target_parameter_re£ [ index qualifier J [ group_qualifier ) ,    ] attribute_ref [ index_qualifier ] , : = '

expression ,;' .


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

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

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

9.4.3.1 Введение

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

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

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

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

Синтаксис:

7? entity_instantiation_loop = FOR instantiation loop_control map project_clause .

139 map project_clause * SELECT ( map_attribute_declaration ) .

119 instantiation_loop_control = instantiation_£oreach_control | repeat_control .

116 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) определены неявным образом.

b)    Типом данных переменной, неявно объявленной элементом variable_id, расположенным перед ключевым словом IN (см. синтаксическое правило 118), является тип данных выражения.

c)    Типом данных переменной, неявно объявленной элементом variableid, расположенным после ключевого слове INDEXING (см. синтаксическое правило 118). является тип данных INTEGER.

Элемент variableid, расположенный после ключевого слова INDEXING (см. синтаксическое правило 118), инициализируется значением 1 в начале первого итерационного цикла и наращивается на 1 в начале каждого последующего цикла.

9.4.3.2 Управление с помощью числового приращения

Синтаксический элемент repeat_control обеспечивает итерационный процесс для одного связующего экземпляра с помощью оператора REPEAT языка EXPRESS (см. подраздел 13.9 ИСО 10303*11).

Пример — В данном примере показано использование синтаксического элемента repeat_con-trol в целевой реализации на языке EXPRESS-X. Совокупность целевых экземпляров объекта child создается для каждого исходного объекта parent. Число созданных экземпляров определяет атрибут number of children объекта parent.

SCHEMA tar;

ENTITY parent; END_ENTITY;

ENTITY child;

parent : parent; END_ENTITY;

END SCHEMA;


SCHEMA src;

ENTITY parent;

number_of_children: INTEGER; END_ENTITY;

END SCHEMA;

SCHEMAJ4AP example;

REFERENCE FROM arc AS SOURCE; REFERENCE FROM tar AS TARGET;

MAP parent_map AS tp : tar.parent; FROM ap : ere.parent;

SELECT END MAP;

MAP children_map AS c : AGGREGATE OF child;

FROM p : src.parent;

FOR I :■ 1 TO p.number_of_children;

SELECT

c[i).parent :» tp(p);

END_MAP;

END_SCHEMA_MAP;

9.4.3.3 Управление с помощью итераций на агрегированной структуре

При выполнении синтаксического элемента instantiation_foreach_control на каждом шаге итерации следующий элемент указанной агрегированной структуры связывается с переменной и. возможно, индекс, определяющий позицию данного элемента, связывается с переменной итератора. Область действия данных привязок переменных включает элемент map project_clause.

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

SCHEMA tar;

ENTITY item_yersion; item_id : INTEGER; version_id : INTEGER;

END_ENTITY ;

END_SCHEMA;

SCHEMA arc;

ENTITY item_with_versione; id : INTEGER;

id_of_versions : LIST OF INTEGER;

END ENTITY;

END~SCHEMA;

SCHEMA_MAP mapping_echema;

REFERENCE FROM ere AS SOURCE;

REFERENCE FROM tar AS TARGET;

MAP item version map AS iv : AGGREGATE OF item version;

FROM

iwv : item_with_vereions;

FOR EACH version_iterator IN iwv.id_of_versions INDEXING i;

SELECT

iv[i).item_id :■ iwv.id;

iv[i).version id :■ version_iterator;

END_MAP;

END_SCHEMA_MAP;

Например, следующее исходное множество экземпляров:

#1 ■ ITEM_WITH_VERSIONS(l,(10,11,12)); создает следующее целевое множество экземпляров:

#1 ■ ITEM_VERSION(1,10);

#2 ■ ITEM_VERSION(1,11) ;

#3 » ITEM_VERSION(1,12);

В синтаксическом элементе instantiation_f oreach_controi может быть определено несколько выражений с помощью факультативного синтаксического элемента and (см. синтаксическое правило 118). Итерации продолжаются до тех пор. пока по крайней мере одна исходная агрегированная структура не будет исчерпана. Элементу variable_id исчерпанных агрегированных структур присваивается неопределенное значение.

9.4.4 Разделы отображения

Экземпляры объектного типа данных могут по-разному связываться с исходными данными. Для определения этих разных связей могут использоваться разделы отображения.

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

Синтаксис:

binding_header map_decl body ( binding^header map_decl_body ) ) END_MAP »;• .

local_decl ) ( where_clause ) ( identified by_clause ) ( ordered by^clause ) .


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

a)    Если в объявлении отображения существует более одного раздела, то для каждого раздела должен быть задан элемент partitioned.

b)    Каждый элемент partitioned в рамках объявления отображения должен быть уникальным.

c)    Для каждого целевого объектного типа данных, на который имеется ссылка в заголовке отображения. по крайней мере в одном из разделов объявления отображения должны быть созданы экземпляры.

Пример — Данный пример иллюстрирует, как разные исходные объектные типы данных могут быть отображены на один целевой объектный тип данных с помощью объявления отображения, содержащего разделы.

{* Исходная SCHEMA arc;

ENTITY student;

name: STRING; END_ENTITY;

ENTITY employee;

name: STRING; END_ENTITY;

END SCHEMA;


схема


)    <‘ Целевая схема *)

SCHEMA tar;

ENTITY person;

name: STRING;

END ENTITY;

END_SCHEMA;

(* Схема отображения л)

SCHEMA_MAP example;

REFERENCE FROM ere AS SOURCE;

REFERENCE FROM tar AS TARGET;

MAP student_employee to_person AS p : tar.person;

PARTITION student; “

FROM s : src.student;

SELECT

p.name :■ s.name;

PARTITION employee;

FROM e : src.employee;

SELECT

p.name :■ e.name;

END_MAP;

END_SCHEMA_MAP;

9.4.5 Отображение на тип данных и его подтипы

Объявления отображений могут быть представлены в виде иерархии типов и подтипов данных. В объявлениях отображений подтипов данных может быть расширено множество экземпляров объектов. созданных отображением их супертипа. Определение задания значений целевых атрибутов, объявленное в отображении супертипа, наследуется отображениями его подтипов. Таким образом, шаблон наличия наследования е целевой схеме может быть дублирован в объявлениях отображений.

Синтаксис:

136 map_decl = MAP map_id AS target parameter ( target_parameter ) { map_subtype_o£_clause subtype binding_header map decl_body )    |    (

binding_header map_decl body { binding header map_decl body ) > END_MAP ';» .

141 map_subtype o£_clause ■ SUBTYPE OF 1 {’ map_re£erence 1)' 1; * .


Наследование между объявлениями отображений должно соответствовать следующим правилам:

•    объявление отображения подтипа должно быть выполнено в том случае, если вычисленные значения его правила WHERE и правил WHERE всех отображений его супертипое равны TRUE:

•    объявление отображения подтипа наследует все целевые параметры от объявлений отображений его супертипов;

•    в объявлении отображения подтипа может быть повторно объявлен тип данных любого целевого параметра из объявлений его супертипов. Тип данных повторно объявленного целевого параметра должен быть конкретизацией каждого типа данных целевого параметра, объявленного в отображениях его супертипое. Правила конкретизации определены в пункте 9.2.6 ИСО 10303-11;

•    в объявлении отображения подтипа могут быть добавлены новые целевые параметры с помощью объявления дополнительного синтаксического элемента target_parameter с атрибутом target_parameter_id, которые должны отличаться от использованных е объявлениях отображений его супертипое;

•    если в отображении супертипа объявлен целевой параметр типа данных SELECT (см. пункт 8.4.2 ИСО 10303-11), GENERIC (см. пункт 9.5.3.2 ИСО 10303-11) или объектного типа данных, объявленного как ABSTRACT (см. пункт 9.2.4.1 ИСО 10303-11), и не выполняется объявление отображения подтипа, которое повторно объявляет данный целевой параметр, то для данного целевого параметра не должны быть созданы экземпляры.

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

В отображении подтипа может присутствовать ссылка на задание целевого атрибута, на задание которого имеется ссылка в одном из его супертипов (возможно, через несколько уровней наследования). При этом целевому атрибуту задается значение, соответствующее значению самого конкретизированного отображения, которому соответствуют критерии выбора, а также критерии выбора его супертипов. Отображение подтипа должно иметь только одно отображение непосредственного супертипа.

Пример — Данный пример иллюстрирует задание атрибутов, объявленных в супертипах и подтипах с помощью отображений супертипов и подтипов. Исходные объекты относятся к одному типу данных s_project. Целевью объекты относятся к типу данных t_project и. возможно, к одному из его подтипов in_house_project или external_project. Синтаксический элемент target_ parameter_id. представленный элементом tp, использованным в отображении супертипа (pro ject_map). используется снова в отображениях его подтипов (in_house_map, ext_mapj, указывая на то, что соответствующий целевой объект конкретизирован в отображениях подтипов. SCHEMA source_schema;

ENTITY s^roject; name : STRING; project_type : STRING; cost : INTEGER; price : INTEGER; vendor : STRING;

END_ENTITY;

END_SCHEMA;

SCHEMA targe t_schema;

ENTITY t_project

SUPERTYPE OF (ONEOF (in_house_project, external_project)); name : STRING; cost : INTEGER; management : STRING;

£ND_ENTITY;

ENTITY in_house_project SUBTYPE OF (t_project);

END_ENTITY;

ENTITY external_project SUBTYPE OF (t_project); price : INTEGER;

END_BNTITY;

END SCHEMA;

SCHEMA_MAP example;

REFERENCE FROM source_schema AS SOURCE;

REFERENCE FROM target_schema AS TARGET;

MAP project_map AS tp : target_schema.t_project; FROM p : source_schema.s_project;

SELECT

tp.name :» p.name; tp.cost :■ p.cost;

END MAP;

MAP in_house_map AS tp : target schema.in house_project; SUBTYPE OF (projectjnap);    "    ~

WHERE (p.project type * 'in house'};

SELECT

tp.management END MAP;


IF (p.cost < 50000) THEN 'small accts' ELSE ‘large accts' END IF;

MAP ext_map AS tp ; target_schema.external_project; SUBTYPE OF (projectjnap)

WHERE (p.project_type * 'external');

SELECT

tp.price :■ р.price;

tp.management :■ p.vendor;

END_MAP;

END_SCHEMA_MAP;

В отображении супертипа могут быть определены циклы создания экземпляров объектов. Отображение подтипа данного отображения супертипа должно наследовать эти циклы создания экземпляров. Тело цикла создания экземпляров может быть повторно определено. Соответствие между телами циклов в отображении супертила и в отображении подтипа, в котором используются циклы создания экземпляров, реализуется с помощью использования идентичных индексных идентификаторов; в тепе из отображения подтипа, наследующем цикл, должна использоваться ссылка на индексный идентификатор. идентичный индексному идентификатору, определенному в отображении супертипа.

Пример — Данный пример иллюстрирует наследование цикла создания экземпляров объектов. SCHEMA source_schema;

ENTITY part; name : STRING; no_of_versions : INTEGER; ie_assembly : BOOLEAN;

END_ENTITY;

END_SCHEMA;

SCHEMA target schema;

ENTITY product;

name : STRING;

END_ENTITY;

ENTITY product_yersion; version_id : INTEGER; of_product : product;

END_ENTITY;

ENTITY product_definition; name : STRING;

of version : product_version;

END_ENTITY;

END_SCHEMA;

SCHEMA_MAP example;

REFERENCE FROM source schema AS SOURCE;

REFERENCE FROM target~schema AS TARGET;

MAP super_map AS

pvw : AGGREGATE OF product_definition; pver : AGGREGATE OF product_version; pro : product;

FROM prt : part;

FOR i :■ 1 TO prt.no_of_versions;

SELECT

pver[i).version_id :■ i;

pver(i).of_product :■ pro;

pvw(i).of_yersion :■ pverjij;

pvw(i).name :■ 'view of part ' + prt.name;

SELECT

pro.name :■ 'part ' + prt.name;

END_MAP;

MAP sub_map AS pro : product;

SUBTYPE OF (auper_map);

WHERE

prt.is_assembly ■ TRUE;

SELECT

pvw[i].name :■ 'view of assembly ' + prt.name; pro.name :■ 'assembly ' + prt.name;

END_MAP;

END_SCHEMA_MAP;

9.4.6 Объявление в явном виде сложных объектных типов данных

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

Список составляющих сложного объектного типа данных может быть представлен в произвольном порядке.

Синтаксис:

214 target parameter ■ target_parameter_id ( target_parameter_id ) ,

( AGGREGATE [ bound spec ) OF ] target_entity_re£erence .

213 target_entity_reference = entity_reference ( entity_reference ) . T8 entity_reference = ( ( source_schema_re£ | target_schema_ref | schema_re£ ) ,.1 ) entity_ref .


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

a)    Каждый элемент entity_ref должен быть ссылкой на определение объектного типа данных, видимого в текущей области действия.

b)    Ссылочный сложный объектный тип данных должен описывать допустимую область действия в рамках целевой схемы (см. приложение В ИСО 10303-11).

c)    Элемент ENTITY_REFERENCE должен присутствовать не менее одного раза в определении элемента TARGETENTITY^REFERENCE.

d)    Для каждого элемента ENTITY^ REFERENCE, объявленного в определении элемента TAR-GET_ENTITY^REFERENCE, не должен быть объявлен ни один из его супертипов.

Пример —Данный пример иллюстрирует использование синтаксических конструкций с символом для определения сложных объектных типов данных.

SCHEMA source_schema;

ENTITY pump;

id, name : STRING;

END_ENTITY;

END_SCHEMA;

SCHEMA target_schema;

ENTITY item

ABSTRACT SUPERTYPE OF (ONEOF (product, kitchen appliance));

END_ENTITY;    ”

ENTITY product SUBTYPE OF (item);

id, name :STRING;

END_ENTITY;

ENTITY kitchen_appliance SUBYPE OF (item);

END_ENTITY;

ENTITY product related__product category; name : STRING?    ~

products : SET OF product;

EMD_EKTITY;

END_SCHEMA;

SCHEMA_MAP example;

REFERENCE FROM eource_schema AS SOURCE;

REFERENCE FROM target_schema AS TARGET;

MAP network_for_purap AS pr : product & kitchen_appliance; 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;

9.4.7 Зависимое отображение

Зависимым отображением является отображение, которое выполняется только с помощью вызова отображения (см.10.3). У зависимого отображения исходные параметры должны быть представлены только простыми и/или объектными типами данных.

Синтаксис:

66 dependent_map_decl = DEPENDENT_MAP map id AS target_parameter { target_parameter }    [ map_subtype_o£_clause ] dep_map_partition {

dep_map_partition J END_DEPENDENT_MAP    .

214 target_parameter = target_parameter_id { ,target_parameter_id }

[ AGGREGATE [ bound spec ) OF ] target_entity reference .

71    dep_map_partition * ( PARTITION partition_id , : 1 J dep_map_decl_body . 70 dep_map__decl_body = dep_binding_decl map_project_clause .

68    dep_binding_decl « dep £rom_clause [ where_clause ]    (

ordered_by_clause ] .

69    dep_from clause = FROM dep_source_parameter { dep_source_parameter

* • 1 *

72    dep source parameter = source_parameter_id ( ,source_parameter_id }

, : ' { simple_types | type_reference ) .


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

a)    Если существует более одного раздела, то для каждого раздела должен быть задан элемент

partition id.

b)    Для каждого целевого объектного типа данных, на который имеется ссылка в заголовке зависимого отображения, по крайней мере в одном из разделов объявления отображения должны быть созданы его экземпляры.

c)    Значения элементов partitioned должны быть уникальными в области действия объявления зависимого отображения.

d)    Объявление зависимого отображения, содержащее элемент map_subtype_o£_clause. должно содержать только один раздел.

Пример — Данный пример иллюстрирует использование зависимого отображения для создания целевых экземпляров объекта organization, имеющих уникальные атрибуты id. вызов зависимого отображения обеспечивает то. что экземпляры объекта organization из целевой совокупности имеют уникальные атрибуты id, так как вызовы отображения с идентичными аргументами возвращают такие же экземпляры целевых объектов. См. 10.3.

SCHEMA source;

ENTITY named organization;

name : STRING;

END_ENTITY;

ENTITY id_organization;

id : STRING;

END_ENTITY;

END^SCHEMA;

SCHEMA target_schema;

ENTITY organization;

id : STRING;

UNIQUE url: id;

END_ENTITY;

END_SCHEMA;

SCHEMA_MAP example;

REFERENCE FROM source_schema AS SOURCE;

REFERENCE FROM target_schema AS TARGET;

MAP unique_orgs_map AS org : organization;

PARTITION a_org;

FROM a ; named_organization;

RETURN org_map(a.name);

PARTITION b_org;

FROM b : id_organization;

RETURN org_map(b.id);

END_MAP;

DEPENDENT MAP org_map AS org ; organization;

FROM id T STRING;

SELECT

org.id :■ id;

END_DEPENDFNT_MAP;

END_SCHEMA_MAP;

9.5 Объявление образа схемы

Объявление образа схемы определяет общую область действия для совокупности взаимосвязанных объявлений. Образ схемы может содержать любые объявления из подмножества языка 1 (см. таблицу 1).

Порядок, в котором объявления присутствуют в объявлении образа схемы, не имеет значения. Объявления из одного образа схемы или EXPRESS-схемы могут быть сделаны видимыми в рамках области действия другого образа схемы с помощью задания интерфейса, определенного в разделе 13.

Синтаксис:

189 schema_view_decl = SCHEMA_VIEW schema_view_id ( reference clause } ( constant_decl ] schema_view body_element_list END_SCHEMA__VIEW *; ' .

16? reference_clause - REFERENCE FROM schema_ref_or_rename ( '(/

resource or rename | ' resource_or_rename ) ')* ] [AS ( SOURCE | TARGET    7;1 .

188 schema view_body element list - schema_view_body_element [ schema_view body_element ) .

187 schema_view_body element * function_decl I procedure_decl I view decl I rule decl .


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

Синтаксический элемент AS { SOURCE t TARGET ) не должен использоваться в схеме об* раза схемы.

Пример — ар203_агш является именем обреза схемы, который может содержать объявления, определяющие образ схемы config_control design.

SCHEMA_VIEW ap203_arm;    "

REFERENCE FROM conflg_control_design;

VIEW part version ...

(* другие возможные объявления *)

END_SCHEMA_VIEW;

9.6 Объявление отображения схемы

Объявление отображения схемы определяет общее пространство для совокупности взаимосвя* занных объявлений. Отображение схемы должно идентифицировать одну или несколько схем как ис* ходные схемы и одну или несколько схем как целевые схемы (см. 13.2). Отображение схемы не ограни* чено объявлениями из подмножеств языка EXPRESS-X (см. таблицу 1).

Порядок, в котором объявления присутствуют в объявлении отображения схемы, не имеет значения.

Объявления из одного отображения схемы могут быть сделаны видимыми в рамках области дей* ствия другого отображения схемы с помощью задания интерфейса, определенного в разделе 13.

Синтаксис:

184 schema map_decl * SCHEMA_MAP schema_map_id ,;' reference_clause { reference_clause ) { constant decl ] schema map_body element_list END_SCHEMA_MAP , ; ' .

182 schema_map_body_element = function decl | procedure decl | view decl | map_decl | dependent_map_decl | rule_decl .


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

Отображение схемы должно включать в явном виде или через ссылку с использованием элемента языка REFERENCE (см. 13.2) по крайней мере одно объявление отображения.

Пример — iges2step является именем отображения схемы, которое может содержать объявления для л epee оба геометрической формы, определенной с использованием набора данных языка EXPRESS, основанного нг формате графики IGES, на набор данных, основанный на ИСО 10303-203.

SCHEMA_MAP iges2step;

REFERENCE FROM step_scheraa AS TARGET;

REFERENCE FROM ige8_express_schema AS SOURCE;

MAP iges_etructure ...

(* другие возможные объявления *)

END_SCHEMA_MAP;

Отображение схемы может ссыпаться на EXPRESS-схему. другую схему отображения схемы и схему образа схемы, используя синтаксический элемент языка reference clause (см. 13.2).

Синтаксис:

184 schema_map decl = SCHEMA_MAP schema_map_id ,; * reference clause ( reference clause ) ( constant_decl ] schema_map_body_element_list END_SCHEMA_MAP , ; ' .

167 reference^clause = REFERENCE FROM schema_ref_or_rename ( *(»

resource_or rename ( 1 ,* resource_or_rename )*)*)[ AS ( SOURCE | TARGET ) J ";1 .

186 schema ref_or_rename = ( general_schema_alias_id ,:* J general schema_re£ .


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

a)    Отображение схемы должно ссылаться по крайней мере на одну EXPRESS-схему. объявленную как источник отображения, используя синтаксический элемент AS SOURCE.

b)    Отображение схемы должно ссылаться по крайней мере на одну EXPRESS-схему. объявленную как цель отображения, используя синтаксический элемент as target.

Пример — Данный пример иллюстрирует обозначение исходной и целевой EXPRESS-cxeu. EXPRESS-схема schema_target_one представляет цель отображения. EXPRESS-схема schema_ source_one представляет источник отображения; на нее можно ссылаться как на el в рамках области действия данного отображения схемы тар_пате.

SCHEMA_MAP тар_пате;

REFERENCE FROM schema_target_one AS TARGET;

REFERENCE FROM el : schema_source_one AS SOURCE;

MAP myjmap AS ...

£ND_SCHEMA_MAP;

9.7 Локальное объявление

В разделе отображения могут быть объявлены локальные переменные. Локальные переменные объявляются с помощью элемента языка LOCAL. Локальная переменная видима только в рамках области действия раздела отображения, в котором она объявлена, включая элементы языка IDENTIFIED_BY, WHERE и SELECT. При вычислении значения раздела отображения все локальные переменные изначально имеют неопределенное значение, если только их значения не инициализированы в явном виде. Локальным переменным могут присваиваться значения в теле раздела отображения. а в выражениях на них могут даваться ссылки.

Синтаксис:

47 binding_header * l PARTITION partition id 1;* ] ( from clause J ( local_decl ] ( where^clause ] ( identified_by_clause ] ( ordered_by_clause ] .

129    local_decl « LOCAL local variable ( local variable ) END_LOCAL *;* .

130    local variable - variable id ( ’variable_id) 1parameter type [

':=1 expression ]    .


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

Синтаксический элемент local_decl не должен использоваться в объявлении образа.

Пример — В данном примере локальной переменной задается значение экземпляра целевого объекта. Атрибут данного объекта модифицируется в теле отображения.

SCHEMA_MAP arm2aim;

REFERENCE FROM arm AS SOURCE;

REFERENCE FROM aim AS TARGET;

MAP product_map AS p : product; p : product;

FROM

ap : arm_j>roduct ;

LOCAL

aec : applied_security classification;

END_LOCAL;    ~

SELECT

asc :■ asc<?security_clas3ification_map{ap. security); aec.items :■ asc.items + p;

END_MAP;

MAP security_classification_map AS

asc : applied_security_classification; scl : security classification;

FROM    ~

arm asc : arm security classification;

SELECT    “    ~

asc.items :■ {];

asc.classification :■ eel;

END_MAP;

END_SCHEMA_MAP;

9.8    Объявление констант

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

Объявления констант определены в подразделе 9.4 ИСО 10303*11.

9.9    Объявление функций

Функции могут быть определены для использования с помощью элемента языка WHERE в объявлении образа или отображения либо в теле объявления отображения. Экземпляр объекта, созданный и возвращенный после вычисления функции, будет присутствовать в целевом множестве в том случае, если на него ссылается атрибут целевого экземпляра из объявления отображения.

Объявления функций определены в пункте 9.5.1 ИСО 10303*11.

9.10    Объявление процедур

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

Объявления процедур определены в пункте 9.5.2 ИСО 10303*11.

9.11    Объявление правил

Правила могут быть определены для использования в образе схемы.

Объявления правил определены в пункте 9.6 ИСО 10303*11.

включение объявлений правил не оказывает влияния ни на модель исполнения, ни на содержимое исходного пространства или пространства образа.

10 Выражения

10.1 введение

выражения являются комбинациями операторов, операндов и вызовов функций, с которыми выполняются вычисления для получения значения выражения.

встроенные функции, определенные в разделе 15. и операторы, определенные в разделе 12 ИСО 10303*11, применимы к настоящему стандарту. Аргументы типов данных образов допжны трактоваться как аргументы объектных типов данных, взаимосвязь между определениями образов и определениями объектов определена в приложении С.

Синтаксис:

8L expression - simple_expression [ rei_op extended simple expression ] .

169 rel_op extended - rel op | IN | LIKE .

168 rel_op”= '<•    | •>•    | 7<«* |    •>=' |    '<>»    | •='    | *:<>:'    | • : =    .

193    simple_expression = term | add like_op term | .

216 term ■ factor [ multiplication_like_op factor ) .

84 factor * simple_factor ( 1 **' simple_factor ] .

194    simple factor = aggregate initializer | entity constructor |

enumeration_reference I interval I query_expression |    { [ unary_op ]    {

expression *>' 1 primary ) )    | case_expr I for_expr | if_expr .

158 primary - literal |    { qualifiable_factor { qualifier ) ) .

153 qualifiable_factor * attribute_ref | constant_factor l function_call | general_ref I map_call | population | target_parameter_ref | view attribute ref I view call .


Конструкторы объектов создают экземпляры, являющиеся локальными только в той функции или процедуре, в которой они используются. Экземпляры, созданные конструкторами объектов, не должны образовывать ни целевых, ни исходных множеств.

Процесс вычисления значения выражения управляется приоритетом операторов, составляющих часть выражения. Вычисление значения выражения, заключенного в круглые скобки, производится до того, как оно будет трактоваться как один операнд. Вычисление выражения осуществляется слева направо. при этом сначала выполняются операторы, имеющие наивысший приоритет. В таблице 3 приведены правила приоритетов для всех операторов языка EXPRESS-X. Операторы, расположенные в одной строке таблицы 3. имеют одинаковый приоритет, а строки расположены в порядке убывания приоритета. Операнд, расположенный между двумя операторами с разным приоритетом, относится к оператору с более высоким приоритетом. Операнд, расположенный между двумя операторами с одинаковым приоритетом, относится к левому оператору.

Таблица 3 — Приоритет операторов

Приоритет

Описание

Операторы

1

Ссылки на компоненты

II . \ <- U

2

Унарные операторы

+ - НОТ

3

Возведение в степень

♦ *

4

Умнажение/деление

/ • DIV MOD АНО I I

5

Сложение/вычитание

* - OR XOR

6

Отношение

-<><->-<> :<>: IH LIKE

10.2 Вызов образа

Вызов образа представляет собой выражение, результатом вычисления которого является экземпляр типа данных образа или агрегированная структура экземпляров типа данных образа. Вызов образа обеспечивает средства для доступа к экземпляру (или экземплярам) типа данных образа через имя образа и фактические параметры, соответствующие его связующему экземпляру (если в образе не определен синтаксический элемент IDENTIFIED BY) или значениям выражений, заданных синтаксическим элементом IDENTIFIEDBY (если в образе определен синтаксический элемент identified BY). Если в разделе отсутствует синтаксический элемент I DENT I FI ED_BY, то число, тип и порядок фактических параметров должны соответствовать числу, типу и порядку исходных параметров, указанных в образе в синтаксическом элементе FROM. Если в разделе присутствует синтаксический элемент IDENTIFIEDBY, то число, тип и порядок фактических параметров должны соответствовать числу, типу и порядку выражений, заданных в синтаксическом элементе IDENTIFIED BY.

Если ни один связующий экземпляр не соответствует фактическим параметрам вызова образа, то данному вызову присваивается неопределенное значение.

Вызов образа относится к одному разделу образа. Если образ содержит более одного раздела, то может быть задан синтаксический элемент partition qualification, для тою чтобы в явном виде указать раздел, для которого вычисляется значение выражения для данного вызова образа. 8 противном случае, если синтаксический элемент partition_qualification не задан, то раздел, для которою вычисляется значение выражения для данного вызова образа, должен быть первым разделом в объявлении образа, для которого число и тип аргументов соответствуют параметрам вызова, а синтаксический элемент WHERE возвращает значение TRUE. Для согласования типов данных должны применяться правила совместимости типов данных, определенные в подразделе 12.11 ИСО 10303-11.

Вызов образа, ссылающийся на постоянный раздел, должен иметь пустой список аргументов.

Синтаксис:

22? view_call « view_re£erence [ partition_qualilication ] , (, ( expression_or_wild (    expression_or_wild ) )    .

153 partition_qualification * , V partition_ref .

82 expression or wild = expression | ,    1 .


Пример—Данный пример иллюстрирует использование вызова образа для определения взаимосвязи между двумя типами данных образа. Синтаксический элемент IDENTIFIED_B¥ в разделе person_ part определяет одно выражение — a.creator. Поэтому вызовы образа approver\person_part будут осуществляться с одним араументов типа STRING, который является также атрибутом creator экземпляра объекта approval.

SCREMA_VIEW example;

REFERENCE FROM erc_schema;

VIEW approver;

PARTITION person_part;

FROM a : approval; p : person;

WHERE a.creator • p.name;

IDENTIFIED BY a.creator;

SELECT “

approver_id : INTEGER :■ p.id;

PARTITION org_part;

FROM a : approval; о : organization;

WHERE a.creator * o.name;

IDENTIFIED BY a.creator;

SELECT “

approver id : INTEGER :■ o.id;

END_VIEW; “

VIEW design order;

FROM a : approval;

SELECT

id : STRING :■ a.id; approved by : approver :■

approver\person_part(a.creator);

END_VIEW;

END_SCHEMA_VIEW;

SCHEMA src_schema;

ENTITY approval; id : STRING; creator : STRING;

END_ENTITY;

ENTITY person; name : STRING; id : INTEGER;

END_ENTITY;

ENTITY organization; id : INTEGER; name ; STRING;

END_ENTITY;

END_SCHEMA;

(* Исходный на&ор данных в формате ИСО 10303*21 — см. [2] *)

V1«АРPROVALС а 1','Jones');

#2«»APPROVAL (• а~2 ' , • Smith') ;

#3«APPROVAL(1а 3','Jones');

#4*PERSON('Jones*,123);

#5«PERSON('Smith',234);

(* Конечные экземпляры oOpasa в формате ИСО 10303*21 *}

#101«APPROVER<123);

#102«APPROVER(234);

«103*>DESIGN 0RDER{'a l',«101); tfl04«DESIGN~0RDER{'a~2',*102);

*105aDESIGN~0RDER('a 3',*101);

10.3 Вызов отображения

Вызов отображения представляет собой выражение, результатом вычисления которого являются экземпляры целевою объекта или агрегированная структура экземпляров объектов. Вызов отображения обеспечивает средства для доступа к значениям, полученным при вычислении отображения (включая зависимое отображение) через имя отображения и фактические параметры, соответствующие ею связующему экземпляру (если в данном отображении не определен синтаксический элемент identified BY) или значениям выражений, заданных синтаксическим элементом IDENTIFIED BY (если в отображении определен синтаксический элемент IDENTIFIED_BY). Если в отображении отсутствует синтаксический элемент IDENTIFI£D_BY, то число, тип и порядок фактических параметров должны соответствовать числу, типу и порядку исходных параметров синтаксического элемента FROM в данном разделе. Если в отображении присутствует синтаксический элемент IDENTIFIED_BY. то число, тип и порядок фактических параметров должны соответствовать числу, типу и порядку выражений, заданных в синтаксическом элементе IDENTIFIED_BY.

Если ни один связующий экземпляр не соответствует фактическим параметрам вызова отображения. то данному вызову присваивается неопределенное значение.

Вызов отображения относится к одному разделу отображения. Если отображение содержит более одного раздела, то может быть задан синтаксический элемент partitionqualification, для тою чтобы в явном виде указать раздел, для которого вычисляется значение выражения для данного вызова отображения. В противном случае, если синтаксический элемент partition_qualification не задан, то раздел, для которого вычисляется значение выражения для данного вызова отображения, должен быть первым разделом в объявлении отображения, для которого число и тип аргументов соответствуют параметрам вызова, а синтаксический элемент WHERE возвращает значение TRUE. Для согласования типов данных должны применяться правила совместимости типов данных, определенные в подразделе12.11 ИСО 10303-11.

Синтаксис:

135 map_call = ( target parameter ref *@') map_reference [ partition_qualification )    expression_or_wild (

expression_or wild ) *)' •

153 partition_qualification * , \1 partition_ref .


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

a)    Синтаксический элемент target parameter_ref должен ссылаться на ссылку на параметр. объявленный в объявлении отображения, на которое ссылается синтаксический элемент map reference.

b)    Если в объявлении отображения, на которое ссылается данный вызов отображения, объявлено более одного целевого параметра, то синтаксический элемент targetparameterref @ должен использоваться для идентификации целевого параметра, который должен быть возвращен данным вызовом отображения.

Примеры

1 Данный пример иллюстрирует использование вызова отображения для определения взаимосвязи между объектами в целевой схеме;

(* Исходная схема *)

SCHEMA arc;

ENTITY approval; id : STRING; creator : STRING;

END_ENTITY;

END_SCHEMA;

(* Целевая схема *)

SCHEMA tar;

ENTITY person;

name : STRING;

END ENTITY;

ENTITY design order; id : STRING? approved_by ; person;

END_ENTITY;

END_SCHEMA;

SCHEMA_MAP example;

REFERENCE FROM ere AS SOURCE;

REFERENCE FROM tar AS TARGET;

MAP person_map AS p : tar.person;

FROM a : approval;

IDENTIFIED_BY a.creator;

SELECT

p.id :■ a.creator;

END_MAP;

MAP design_order_map AS d : tar.design_order;

FROM a : approval;

SELECT

d.id :■ a.id;

d.approved_by :■ p$person_map(a.creator); -- вызов отображения END_MAP;

END_SCHEMA_MAP;

(* Исходный набор экземпляров, представленный в формате ИСО 10303-21, — см. (2) *> #1 ■ APPROVAL{'а_1'Miller');

#2 ■ APPROVAL('а_2',*Jones');

#3 ■ APPROVAL{'а_31,’Miller1);

(" Конечные целевые экземпляры в формате ИСО 10303-21 (см. (2)) •)

#101«PERS0N(‘Miller');

M102-PERS0N('Jones');

#103®DESIGN_0RDER{'a l',#101); ttl04«DESIGN_0RDER(,a~2',#102);

#105»DESIGN_0RDER (' a__3' ,#101) ;

2 Данный пример иллюстрирует использование вызовов отображения, когда разделы не определены в явном виде:

SCHEMA source_scheraa;

TYPE person_select ■ SELECT (male, female, child);

END_TYPE;

ENTITY male;

name: STRING;

END_ENTITY;

ENTITY female;

name : STRING;

END_ENTITY;

ENTITY child; name : STRING;

parents : SET of person select;

END_ENTITY;    ~

END_SCHEMA;

SCHEMA target_schema;

ENTITY person;

name : STRING;

END ENTITY;

ENTITY person_with_parents SUBTYPE OF (person); parents : SET (1:2] of person;

END_ENTITY;

END_SCHEMA;

SCHEHA_HAP eource_to_target;

REFERENCE FROM source_schema AS SOURCE;

REFERENCE FROM target_schema AS TARGET;

MAP person_map AS p : person;

PARTITION pjnale;

FROM m : male;

SELECT

p.name :■ m.name;

PARTITION p_female;

FROM f : female;

SELECT

p.name :■ f.name;

PARTITION p_child;

FROM c : child;

RETURN person_with_parents_map(c);

ENDJ4AP;

MAP person_with_parents_map AS p : person_with_parents;

FROM c: child;

WHERE SIZEOF (c.parents) > 0; -- объект person_with_parents создается только в том

-- случае, когда имеется хотя бы один из родителей.

SELECT

р.name :■ с.name;

р.parents :■ FOR EACH par IN c.parents;

RETURN personjmap(par); -- cm. 10.5.

END_MAP;

END_SCHEMA_MAP;

I* Пример значений:

SOURCE:

*1«FEMALE{'Julia');

#3*MALE('Richard');

#4®CHILD(’Mary', (#1));

#5®CHILD('Paul', (#1,#3));

TARGET:

#6«PERSON('Julia') ;

#7*PERSON_WITH_PARENTS('Mary', (#6));

#8*PERSON('Richard');

ff9«PERSON WITH_PARENTS('Paul', (#8.#6));

*>

10.4 Вызовы частичного связывания

Вызов частичного связывания представляет собой вызов образа или отображения, в котором в качестве одного или нескольких аргументов используется элемент языка • _'. Вызов частичного связывания обеспечивает оценку подмножества пространства образа или целевой совокупности элементов в объявлении образа или отображения соответственно.

Элемент языка from определяет элементы связующих экземпляров в связующем пространстве вызова образа или отображения (см. 9.2.1). Если в объявлении образа или отображения не задан элемент языка IDENTIFIED BY. то данное объявление определяет функциональное соответствие между связующими экземплярами и экземплярами из пространства образа или целевой совокупности: в пространстве образа или е целевой совокупности для каждого связующего экземпляра существует уникальный экземпляр. Если в объявлении образа или отображения задан элемент языка IDENTI-Fl ED BY. то данное соответствие не является функциональным и для любого связующего экземпляра не существует уникального экземпляра в пространстве образа или в целевой совокупности. Вместо этого уникальный экземпляр в пространстве образа или в целевой совокупности существует для каждого класса эквивалентности связующих экземпляров, определенного в элементе языка IDENTIFIED_BY (см. 9.2.2).

Если элемент языка I DENT IF IED_BY не задан, то каждый квалифицированный связующий экземпляр служит ключом для идентификации экземпляра из данного соответствия. Если элемент языка IDENTIFIEDBY задан, то любой связующий экземпляр из класса эквивалентности служит ключом для идентификации экземпляра из данного соответствия. Элементы этих двух видов ключей (компоненты ключей) определяются элементом языка from и выражениями в IDENTIFIED_BY соответственно.

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

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

Если элемент языка IDENTIFIEDBY задан, то данный частично заданный ключ соответствует значениям, полученным в результате вычисления выражения, указанного в элементе языка IDENTI-FIED BY. Неэаданные компоненты ключа (обозначенные с помощью ' ') игнорируются.

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

Пример — в данном примере разные версии, связанные с деталью, собраны вместе с использованием вызова частичного связывания. Возвращенный после вызова частичного связывания объект version_and_its_product является подмножеством пространства, для которого вторым элементом связующего экземпляра является элемент, равный заданному экземпляру объекта product;

VIEW part;

FROM p : product;

SELECT

versions : SET OF version_and_its_product

:■ version_and its_product( , p);

END_VIEW;    “    “

VIEW version_and_its_product;

FROM pdf : product_definition_formation; p : product;

WHERE p pdf.of_product;

SELECT

the version : product definition formation :■ pdf;

END_VIEW;    “    "

10.5 выражение FOR

Выражение for обеспечивает вычисление агрегированного значения с помощью итераций, управляемых значением индекса или агрегированной структурой. Настоящий стандарт определяет два вида итераций.

•    выражение f oreach_expr проводит итерации, управляемые агрегированной структурой языка EXPRESS, и вычисляет значение объекта expression для каждого элемента данной агрегированной структуры. Все результаты вычислений собираются в агрегированную структуру, которая представляет значение выражения FOR;

•    выражение forloop ехрг проводит итерации, управляемые объектом repeat_control (см. подраздел 13.9 ИСО 10303-11). и на каждой итерации вычисляет значение объекта expression.

Если не сделано ни одной итерации, то выражение FOR в качестве результата возвращает пустую агрегированную структуру.

Синтаксис:

89 for_expr = FOR ( foreach_expr J forloop_expr )    .

85    foreach_expr = EACH variable_id IN expression [ where clause ) RETURN expression .

86    forloop_expr = repeat_control RETURN expression .

171 repeat_control = ( increment control ] [ while_control ) t until_control ] .

113 increment_control * variable_id 1;=' bound_l TO bound_2 ( BY increment ) -

232 while_control = WHILE logical expression .

222 until_control * UNTIL logical_expression .


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

a)    Вычисленное значение объекта expression из выражения foreach ехрг должно быть агрегированной структурой языка EXPRESS, пространством или пространством образа.

b)    Объявление образа не должно содержать выражение for.

Элемент языка foreach_expr неявно объявляет переменную итератора variable_id (см. синтаксическое правило 85) типа GENERIC, видимую в области действия элементов where clause и expression. Элемент expression, расположенный после элемента языка in, должен быть агрегированной структурой языка EXPRESS, над которой выполняются операции. На каждом цикле итерации элемент данной агрегированной структуры связан со своей переменной итератора, начиная с ее значения LOINDEX и до значения HI INDEX (см. подразделы 15.17 и 15.11 ИСО 10303-11).

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

Необязательный элемент whereclause из синтаксического правила 85 определяет выражение. которое должно возвращать значение типа LOGICAL или неопределенное значение. Выражение, следующее за элементом языка return, только вычисляется, а его результат включается в агрегированную структуру результата только в том случае, если рассчитанным значением элемента where_ clause является TRUE.    ”

Примеры

1 В данном примере целевой объект component является отображением исходного объекта product_definition. а все экземпляры объекта product_definition_name. ссылающиеся на один экземпляр объекта product_defmition, сгруппированы в целевом атрибуте component. names;

(* Исходная схема SCHEMA source_schema;

ENTITY product_definition; product_name ; STRING; description ; STRING;

END_ENTITY;

ENTITY product_definition_name ; name : STRING;

of_product definition : product_definition;

END_ENTITY; ~

END_SCHEMA;

{* Целевая схема *)

SCHEMA target_schema;

ENTITY component;

names : SET (0:7) OF STRING; product_name : STRING; description : STRING;

END_ENTITY;

END SCHEMA;

(* Определение отображения *)

SCHEMA_MAP example;

REFERENCE FROM source_schema AS SOURCE;

REFERENCE FROM target_schema AS TARGET;

MAP componentjmap AS c : component;

FROM pd : product definition;

SELECT    ~

c.description :* pd.description; c.product_name :■ pd.product_name; c.names :■ FOR EACH pdn_instance

IN EXTENT(‘SOURCE_SCHEMA.PRODUCT_DEFINITION_NAME');

WHERE pdn_instance.of_product_defmition pd;

RETURN pdn_instance.name;

END_MAP;

END SCHEMA MAP;

2 Данный пример иллюстрирует использование вложенных выражений FOR. При этом пример 1 изменяется следующим образом:

(’ Исходная схема “)

SCHEMA source_schema;

ENTITY product_definition; product_name : STRING; description r STRING;

END_ENTITY;

ENTITY product_definition_name; name : STRING;

of_product definition : product definition;

END_ENTITY; "

ENTITY product definition_value; of_pdn : product_definition_name; val : STRING;

END_ENTITY;

END_SCHEMA;

(* Целевая схема *)

SCHEMA target_schema;

ENTITY component;

values : SET (0:?) OF SET (0:?) OF STRING; product_name : STRING; description : STRING;

END_ENTITY;

END_SCHEMA;

Все экземпляры объекта product_definition_value, ссылающиеся на один экземпляр объекта product_definition_name, сгруппированы вместе и представлены во внутренней агрегированной структуре атрибута component. values. Это выглядит следующим образом:

(* Определение отображения *)

SCHEMA_MAP example;

REFERENCE FROM source_schema AS SOURCE;

REFERENCE FROM target_schema AS TARGET;

MAP component_map AS c : component;

FROM pd : product definition;

SELECT    ~

c.description :■ pd.description; c.product name :■ pd.product_name; c.values :■ FOR EACH pdn_instance

IN EXTENT (' SOURCE_SCHEMA. PRODUCT_DEFINITION_NAME *) ;

WHERE pdn_instance.o£_product_definition pd;

RETURN FOR EACH pdv_instance

IN EXTENT('SOURCE_SCHEMA.PRODUCT_DEFINITION_VALUE1); WHERE pdv_instance.ofpdn :■: pdn_instance;

RETURN pdv~instance.val;

ENDJ4AP;

END~SCHEMA MAP;

10.6 Выражение IF

Выражение IF обеспечивает условную оценку элементов языка expression на основе оценки элемента logical_expression из синтаксического правила 110. Если ни один из элементов logi-calexpression не имеет значения TRUE и не задан элемент языка ELSE, то атрибуту отображения или образа присваивается неопределенное значение.

Синтаксис:

110 if_expr » IF logical expression THEN expression ( ELSIF

Logical_expression expression ) ( ELSE expression ] END_IF .


10.7 Выражение CASE

Выражение case обеспечивает условную оценку элементов языка expression в соответствии с шаблоном выполнения оператора CASE языка EXPRESS (см. подраздел 13.4 ИСО 10303-11). Если ни один элемент языка OTHERWISE не задан и ни один из элементов case_expr_action не имеет значения TRUE, то атрибуту отображения или образа присваивается неопределенное значение.

Синтаксис:

56    case_expr = CASE selector OF ( case_expr_action ) ( OTHERWISE ,:' expression ] END_CASE .

57    case expr_action = case label ( ,, ’ case_label J , :' expression ,; ' .


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

Выражение case не должно использоваться в образах схем, относящихся к классу соответствия 1.

Пример —Данный пример иллюстрирует использование выражения CASE;

SCHEMA source_schema;

ENTITY approval;

status : STRING;

END_ENTITY;

END_SCHEMA;

SCHEMA target_schema;

ENTITY my approval;

status ;~*INTEGER;

END_ENTITY;

END_SCHEMA;

SCHEMA_MAP mapping_example;

REFERENCE FROM source_schema AS SOURCE;

REFERENCE FROM target_scheraa AS TARGET;

MAP approval_map AS ma : my_approval;

FROM a : approval;

SELECT

ma.status :» CASE a.status OF

'not yet approved' : -l;

'disapproved' : 0;

END CASE;

END_SCHEMA_MAP;

10.8 Оператор прямого пути

Оператор прямого пути (::) создает агрегированную структуру экземпляров объектов, на которые ссылается значение элемента attribute_re£ из синтаксического правила 88. Если необязательный элемент extent reference из синтаксического правила 154 задан, то созданная агрегированная структура должна содержать экземпляры только тех объектов, тип данных которых соответствует элементу extent reference или одному из его подтипов.

Синтаксис:

88 forward_path_qualifier * ’ : : * attribute ref [ path condition ) .

154 path_condition * 1(* extent reference ( '|• logical expression J ,)' .


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

a)    Оператор прямого пути не должен использоваться в образах схем, относящихся к классу соответствия 1.

b)    Переменная, имя которой совпадает с именем элемента extent_ref егепсе. является неявно объявленной в области действия оператора прямого пути.

Примечания

1    Данная переменная не должна быть объявлена где-либо еще. и она не будет существовать за пределами данного оператора.

2    Использование оператора прямого пути иллюстрирует пример в 10.9.

Если логическое выражение logical_expression из синтаксического правила 154 задано, то элементы выбираются по очереди из пространства, на которое дана ссылка, и связываются с неявно объявленной переменной. Затем вычисляется значение логического выражения logica^expression с учетом данного связывания. Для каждого такого связывания переменной проверяется, является ли значением логического выражения 1 og ica ^expression TRUE, и если это так. то данный элемент добавляется к результату, в противном случае данный элемент к результату не добавляется.

Примечание — Функция unnest, использованная в приведенном ниже примере, принимает один аргумент произвольного типа данных (включая вложенные агрегированные структуры) и возвращает агрегированную структуру, элементы которой не относятся к агрегированному типу данных. Например обращение unnest( ([а] , [Ь, с) , ( [d]) ]) возвращает результат [а, Ь, с, d). Определение функции unnest приведено в приложении Е.

Пример —Для некоторого множества элементов а. ссылки на объект product и атрибута экземпляров of_product выражение result: *а: :of_product(product) эквивалентно следующей EXPRESS-спецификации:

LOCAL

result : AGGREGATE OF GENERIC :■ (]; trap : AGGREGATE OF GENERIC :■ (];

END_LOCAL;

trap :■ unnest(a);

REPEAT i :■ 1 TO HIJNDEX(tmp);

result :■ result ♦ QUERY(e <* unnest(tmp[ij.of_product)|

•SCHEMA_NAM£.PRODUCT‘ IN TYPEOF(e));

END_REPEAT;

result :■ unnest (result);

Выражение resul t: *a;.- x эквивалентно следующей EXPRESS-спецификации: result :■ {]; trap :■ unnest(a);

REPEAT i :■ 1 TO HlINDEX(trap);

result :■ result ♦ unnest(trap[i].x);

END_REPEAT;

result :■ unnest(result)

10.9 Оператор обратного пути

Оператор обратного пути (<•) создает агрегированную структуру экземпляров объектов, используя выражение, расположенное справа от данного оператора, вычисление выражения а <-х ( b | с | в результате дает агрегированную структуру экземпляров объектов, в которой для каждого ее элемента е справедливы следующие утверждения:

• атрибут х элемента е ссылается на элемент невложенного а;

•    элемент е имеет тип данных Ь;

•    результатом логического выражения с является TRUE е среде, е которой неявная переменная Ь связана с е.

Синтаксис:

43 backward_path_qualifier *    [ attribute ref } path_condition .

154 path condition ■ ' ( ' extent^reference t 1 I ' logical_expression ] , ) * .


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

a)    Оператор обратного пути не должен использоваться в образах схем, относящихся к классу соответствия 1.

b)    Элемент attribute_re£ должен быть определен в каком-либо из частичных объектных типов данных в каждом экземпляре из пространства аргумента.

c)    Переменная, имя которой совпадает с именем элемента extent reference, является неявно объявленной в области действия оператора обратного пути.    ~

Если идентификатор а представляет совокупность элементов, то выражение result а<-х(Ь) эквивалентно следующей EXPRESS-спецификации:

LOCAL

result : AGGREGATE OF GENERIC := [); tmp : AGGREGATE OF GENERIC := (];

END_LOCAL; result []; tmp := unnest(a);

REPEAT i :« 1 TO HIINDEX(tmp);

result := result + QUERY(e <* USEDIN (tmp{i),    ' •) I

('SCHEMA NAME.В * IN TYPEOF(e))

AND (tmpli) IN e.x));

ENDREPEAT;

Выражение a<-(b) эквивалентно следующей EXPRESS-спецификации: result := (]; tmp := unnest(a);

REPEAT i :■ 1 TO HIINDEX(tmp);

result := result + QUERY(e <* USEDIN(tmp[i], ••) |

('SCHEMANAME.B' IN TYPEOF(e)) ) ;

ENDREPEAT?

Примечание — Функция unnest, использованная в приведенных выше EXPRESS-спецификациях, принимает один аргумент произвольного типа данных (включая вложенные агрегированные структуры) и возвращает агрегированную структуру, элементы которой не относятся к агрегированному типу данных. Например, обращение unnest (((а), (Ъ,с), [(d))]) возвращает результат (а, Ь/ с,d). Определение функции unnest приведено в приложении Е.

Пример — В данном примере операторы пути используются для вычисления исходной агрегированной структуры в цикле создания экземпляра объемна. Исходная агрегированная структура содержит все экземпляры объекта document_file. ссылающегося на экземпляр объекта repreeentation_ type со значением атрибута папе 'digital' , и на который имеется ссылка как на атрибут documentation_ids экземпляра объекта product_definition_with_associated_documents, который в свою очередь ссылается на экземпляр исходного объекта product_ definition_f ormation:

SCHEMA document_8chema;

ENTITY folder;

name : STRING;

END_ENTITY;

ENTITY file;

name    : STRING;

location : folder;

END_ENTITY;

END SCHEMA;

SCHEMA source_schema;

ENTITY product_definition formation; id : STRING;    ”

name : STRING;

END_ENTITY;

ENTITY product_definition_with_associated__documents; documentation_ida : SET OF document_file; formation : product definition formation;

END_ENTITY;    ”    ”

ENTITY document file; name : STRING;”

representation type : document representation;

END_ENTITY; ”    ”

ENTITY document_representation;

name : STRING;

END_ENTITY;

END SCHEMA;

SCHEMAJ4AP example2;

REFERENCE FROM document_schema AS TARGET;

REFERENCE FROM source_schema AS SOURCE;

MAP document_map AS folder : folder; files: AGGREGATE OF file;

FROM pdf : product_definition formation;

FOR EACH f IN    ”

pdf<-formation(product_definition_with_>as8ociated_documents>

::documentation^ds{document_file

| document file.representstion_type.name ■ 'digital')

INDEXING i; “

SELECT

files[i).name :■ f.name; files[ij.location :* folder; folder.name :■ pdf.name;

END_MAP;

END_SCHEMA_MAP;

11    Встроенная функция

11.1    Универсальная функция EXTENT

FUNCTION EXTENT < R : STRING )    : SET OF GENERIC;

Функция EXTENT формирует пространство, содержащее множество всех экземпляров из данной совокупности, которые имеют тип данных, заданный параметром функции.

Параметр R является строкой, содержащей имя объектного типа данных или типа данных обра* за. Эти имена квалифицируются с помощью имени схемы, содержащей определение указанного типа данных.

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

Пример — Пространство объектного типа данных action в схеме automotive_design формируется с помощью следующего вызова функции EXTENT;

EXTENT('AUTOMOTIVE_OESIGN.ACTION') ;

12    Области действия и видимости

12.1    Введение

Объявление на языке EXPRESS-X создает идентификатор, который может быть использован для ссылки на объявленный элемент в других частях образа схемы или отображения схемы, а также в других образах или отображениях схем. Некоторые конструкции языка EXPRESS-X неявно объявляют элементы, присваивая им идентификаторы. Можно сказать, что элемент является видимым в тех областях. где на идентификатор, присвоенный объявленному элементу, может быть дана ссылка. Ссылка на элемент должна даваться только там. где его идентификатор является видимым.

Некоторые элементы языка EXPRESS-X определяют некоторую область (блок текста), называемую областью действия элемента. Область действия ограничивает видимость объявленных в ней идентификаторов. Области действия могут быть вложенными, т. е. элемент языка EXPRESS-X. установивший некоторую область действия, может быть включен в область действия другого элемента. Существуют ограничения того, какие элементы могут присутствовать в области действия конкретного элемента языка EXPRESS-X. Такие ограничения задаются в терминах синтаксиса элементов языка.

В таблице 4 представлены элементы языка EXPRESS-X. для каждого из которых в соответствующем подразделе определены ограничения на область действия (если таковые имеются) и область видимости объявленного идентификатора как в общих терминах, так и в деталях. Для используемых в языке EXPRESS-X элементов, определенных в языке EXPRESS (см. ИСО 10303-11), ограничения заданной области действия и области видимости объявленного идентификатора соответствуют ограничениям. установленным е языке EXPRESS (см. подраздел 10.3 ИСО 10303-11).

В языке EXPRESS-X применяются общие правила для областей действия и видимости, установленные в языке EXPRESS (см. подразделы 10.1.10.2. пункт 10.2.1 ИСО 10303-11).

Таблица 4 — Области действия и идентификаторы элементов языка EXPRESS-X

Элемент

Область действия

Идентификатор

Цикл создания экземпляра объекта

+

+•

Выражение FOR

+

Зависимое отображение. Отображение

+

+

Зависимый образ. Образ

+

Исходный параметр

+

Целевой параметр

4*

Оператор пути

+

4*

‘Идентификатор является неявно объявленной переменной в рамках области действия данного объявления.

12.2 Образ схемы

Область видимости: Объявление образа схемы является видимым во всех других образах схемы.

Область действия: Объявление образа схемы определяет новую область действия. Данная область действия начинается с ключевого слова SCHEMAVIEW и заканчивается ключевым словом END SCHEMA VIEW, которое завершает объявление образа схемы.

Объявления: Объявлять идентификаторы е рамках области действия объявления образа схемы могут следующие элементы:

•    константы;

-    функции;

•    процедуры;

•    правила;

-    образы.

12.3 Отображение схемы

Область видимости: Идентификатор отображения схемы является видимым во всех других образах схемы и отображениях схемы.

Примечание — На объявления отображений в отображении схемы не должен ссыпаться образ схемы.

Область действия: Объявление отображения схемы определяет новую область действия. Данная область действия начинается с ключевого слова SCHEMA МАР и заканчивается ключевым словом END_SCHEMA_MAP, которое завершает объявление отображения схемы.

Объявления: Объявлять идентификаторы в рамках области действия отображения схемы могут следующие элементы:

•    константы:

•    функции:

•    процедуры:

. образы;

•    зависимые образы;

•    отображения;

•    зависимые отображения;

•    правила.

12.4    Образ и зависимый образ

Область видимости: Идентификатор образа или зависимого образа является видимым в об* ласти действия образа или отображения схемы, в которой он объявлен. Идентификатор образа или зависимого образа остается видимым во всех внутренних областях действия, в которых данный идеи* тификатор не объявлен повторно.

Область действия: Объявление образа или зависимого образа определяет новую область дей* ствия. Данная область действия начинается с ключевого слова VIEW (DEPENDENT_VIEW) и за* канчивается ключевым словом END_VIEW‘ (END__DEPENDENT_ VIEW), которое завершает данное объявление образа.

Объявления: Объявлять идентификаторы в рамках области действия объявления образа могут следующие элементы:

•    метки раздела;

•    элементы языка FROM;

•    элементы языка IDENTIFIED_BY:

•    атрибуты образа.

12.5    Метка раздела образа

Область видимости: Правила области видимости для метки раздела образа идентичны правилам области видимости для образа (см. 12.4).

12.6    Идентификатор атрибута образа

Область видимости: Идентификатор атрибута образа является видимым в области действия образа, в котором он объявлен.

12.7    выражение FOR

Область видимости: Неявно объявленная переменная итератора является видимой в выражении. которое следует после ключевого слова return в выражении FOR. и в элементе языка WHERE из синтаксического правила 85.

Область действия: Выражение for определяет новую область действия. Данная область действия является видимой для выражения, которое завершается ключевым словом RETURN в выражении FOR.

Объявления: Объявлять идентификаторы в рамках области действия выражения FOR могут следующие элементы:

•    выражения FOR;

•    выражения QUERY.

12.8    Отображение и зависимое отображение

Область видимости: Идентификатор отображения или зависимого отображения является видимым в области действия образа или отображения схемы, в которой он объявлен. Идентификатор отображения или зависимого отображения остается видимым во всех внутренних областях действия, в которых данный идентификатор не объявлен повторно.

Область действия: Объявление отображения или зависимого отображения определяет новую область действия. Данная область действия начинается с ключевого слова МАР (D£PENDENT_MAP) и заканчивается ключевым словом END_MAP <END_DEPENDENT^ MAP). которое завершает данное объявление отображения.

Объявления: Объявлять идентификаторы в рамках области действия объявления отображения или зависимого отображения могут следующие элементы:

-    выражения FOR;

•    выражения QUERY;

-    циклы создания экземпляра объекта;

-    элементы языка FROM;

-    элементы языка IDENTIFIED_BY;

-    атрибуты.

12.9    Элемент языка FROM

Область видимости: Идентификатор исходного параметра является видимым в разделе, в котором он объявлен и в образах или отображениях подтипов данного образа либо отображения.

12.10    Цикл создания экземпляра объекта

Область видимости: Неявно объявленные идентификаторы циклов создания экземпляров объектов являются видимыми в рамках представителей элемента языка SELECT, за которым следует цикл создания экземпляра объекта. Область действия заканчивается ключевым словом END_MAP или предыдущим циклом создания экземпляра объекта.

Объявления: Выражение QUERY может объявлять идентификаторы в рамках области действия цикла создания экземпляра объекта.

12.11    Оператор пути

Область видимости: В рамках пути, заданного выражением path_condition, атрибуты квалификатора типа данных и его супертипов являются видимыми так же. как ключевое слово SELF. Кроме того, все идентификаторы, объявленные вне данною выражения, являются видимыми.

Область действия: Оператор пути определяет новую вложенную область действия, заданную выражением языка path_condition, которая является областью действия объектного типа данных. к которому относится квалификатор типа данных (см. пункт 10.3.5 ИСО 10303-11). Новая область действия начинается с синтаксического элемента ' | • и заканчивается закрывающей фигурной скобкой ')1.

Объявления: Выражение QUERY может объявлять идентификаторы в рамках области действия пути, заданного выражением path_condi.ti.on.

13 Спецификация интерфейса

13.1    Введение

Спецификации интерфейсов дают возможность элементам, объявленным в одной внешней схеме. образе схемы или отображении схемы, быть видимыми в другом образе или отображении схемы.

13.2    Элемент языка REFERENCE

Элемент языка REFERENCE дает возможность элементам, объявленным в одной схеме, образе схемы или отображении схемы, быть видимыми в другом образе или отображении схемы.

Спецификация интерфейса REFERENCE позволяет сделать видимыми в данном образе схемы следующие элементы, объявленные во внешней схеме, образе схемы или отображении схемы:

-    образы:

•    зависимые образы;

-    отображения;

-    зависимые отображения:

•    константы;

•    объекты;

•    типы данных;

-    функции;

•    процедуры;

•    правила.

Спецификация интерфейса reference определяет имя внешней схемы, образа схемы или отображения схемы и. необязательно, имена объявленных в них элементов языка EXPRESS или EXPRESS-X. Если имена элементов не заданы, то все элементы, объявленные во внешней схеме, об* разе схемы или отображении схемы, являются видимыми в данном образе или отображении схемы.

Синтаксис:

167

reference clause =

REFERENCE FROM schema ref or rename (

resource or rename TARGET > ) ~ ' .

1 1,' resource or rename ) M'

) [ AS ( SOURCE |

186

schema ref or^rename = [ general schema alias id general schema ref .

]

103

qeneral schema ref

= schema ref I schema map ref |

schema view ref .

174

resource or rename

= resource ref [ AS rename id

] -

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

a)    Элемент rename_id должен быть уникальным в области действия ссылающейся на него схемы. включая все другие ссылочные идентификаторы. Ссылающаяся схема должна ссылаться на объявление с помощью своего элемента renameid.

b)    Элемент general_schema ref должен быть уникальным в области действия ссылающейся на него схемы.

c)    Образ схемы не должен ссылаться на объявление отображения.

Пример — Данный пример иллюстрирует обозначение исходной EXPRESS-схемы и ссылку на ее ресурсы из другой схемы. На ресурс your_view_decl дается ссылка из схемы other_map_schema. и он переименовывается в my_viеw_deс 1 для использования в обрезе данной схемы:

SCHEMA_VIEW my_view_schema;

REFERENCE FROM autofnotive_design ;

REFERENCE FROM other map schema {your_view_decl AS my view decl);

END SCHEMA VIEW;    ~    ~    “    “

Приложение А (обязательное)

Регистрация информационного объекта

Для обеспечения однозначного обозначения информационного объекта в открытой системе настоящему стандарту присвоен следующий идентификатор объекта:

(isostandard 10303 part(14)version(l))

Смысл данного обозначения установлен вИСО/МЭК 8824-1 и описан в ИСО 10303-1.

Приложение В (обязательное)

Синтаксис языка EXPRESS-X

В настоящем приложении определены лексические элементы языка и грамматические правила, которым данные элементы должны подчиняться.

Примечание — Прямое применение данного определения синтаксиса приведет к неоднозначности при построении синтаксических анализаторов. Данное определение разработано для представления информации, относящейся к использованию идентификаторов. Интерпретированные идентификаторы определяют лексические элементы, являющиеся ссылками на объявленные идентификаторы, и поэтому не должны трактоваться как простые идентификаторы (simple_id). Разработчик синтаксического анализатора должен обеспечить разрешение осыгкж на идентификаторы и получение необходимого ссылочного лексического элемента для проверки грамматических правил.

Все грамматические правила языка EXPRESS, определенные 8 ИСО 10303-11. приложение А. являются также грамматическими правилами языка EXPRESS-X. Помимо грамматических правил языка EXPRESS к грамматическим правилам языка EXPRESS-X относятся грамматические правила, определенные в данном приложении.

В.1 Лексические элементы

Приведенные ниже правила определяют лексические элементы, используемые в языке EXPRESS-X. За исключением тех случаев, когда это явно установлено в синтаксических правилах, никакие пробелы или комментарии не должны присутствовать в тексте, относящемся к отдельному синтаксическому правилу, представленному в настоящем приложении.

В.1.1 Ключевые слова

В настоящем подразделе установлены правила, используемые для представления ключевых слое языка EXPRESS-X.

Примечание — В настоящем подразделе используется соглашение, по которому каждое ключевое слово представлено синтаксическим правилом, содержащим в левой части данное ключевое слово, записанное с использованием символов верхнего регистра (прописных бую).

Зарезервированными словами языка EXPRESS-X являются зарезервированные слова языка EXPRESS, а также ключевые слова и имена встроенных функций языка EXPRESS-X. Зарезервированные слова языка ЕХ-PRESS-X не должны использоваться как идентификаторы.

1    DE Р Е NDENГ_МАР - 'dependent_map' .

2    EACH - 'each* .

3    ELSEIF - 'elaeif .

4    END_DEPENDENT_MAP - 'end_dependent_map' .

5    END_MAP “ 'end_map' .

6    END_SCHEMA_MAP - 'end_schema_map' .

7    END_SCHEMA_VIEW - 'end_schema_view' .

в END_VIEW - *end_view' .

9 EXTENT - 'extent' .

10    IDENT1 FIED_BY - ' ident ified_by' .

11    INDEXING - 'indexing* .

12    MAP - 'map' .

13    ORDERED_BT - *ordered_by' .

14    PARTITION - 'partition' .

15    SCHEMA_MAP - 'schemajnap' .

16    SCHEMA_VIEW - 'schema_view' .

17    SOURCE - 'source' .

IS TARGET - 'target' .

19    VIEW - 'view' .

B.1.2 Классы символов

20    digit - 'O' | *1* | '2' | '3' | '4* | '5' | *6' | '7' | '8' | '9' .

21    letter    -    'a'    I    'b'    |    *c'    I    'd'    I    'e'    |    •f'    |    'g' | 'h' | 'i* | 'j'

I    'k'    |    *1'    |    *m'    |    'n'    |    'o'    |    'p'    |    'q* I 'г' I 's' I 't'

I    *u'    I    'v'    I    'w'    I    *x'    |    'y'    |    '2'    .

22    simple_id » letter    (    letter I digit    l'_M.

В.1.3 Интерпретированные идентификаторы

Примечание — Все интерпретированные идентификаторы языка EXPRESS являются также интерпретированными идентификаторами языка EXPRESS-X. Кроме того, в языке EXPRESS-X используются следующие интерпретированные идентификаторы.

23    partition_ref - partitioned .

24    map_ref - map_id .

25    schema_map_re£ - schema_map_id .

26    schema_view_ref - schema_view_id .

27    source_parameter_ref - 30urce_parameter_id .

28    aource_schema_re£ - schema_ref .

29    target_parameter_ref • target_parameter_id .

30    target_schema_ref - schema_ref .

31    view_attribute_ref - view_attribute_id .

32    view_re£ * view_id .

B.2 Грамматические правила

Представленные в настоящем разделе правила определяют, как рассмотренные выше лексические элементы и лексические элементы языка EXPRESS могут объединяться 8 конструкции языка EXPRESS-X. Пробелы и комментарии языка EXPRESS могут быть помещены между любыми двумя лексемами в данных правилах. Первичным синтаксическим правилом языка EXPRESS-X является syntax_x.

33    abatract_supertype_declaration » ABSTRACT SUPERTYPE [ aubtype_conatraint ] .

34 actualjparameter_list -    parameter (    parameter )    .

35    add_like_op - * + ' | *-• | OR | XOR .

36 aggregate_initializer -    [ element (    element 1 ] ’]’ .

37    aggregate_source * 3impLe_expression .

38    aggregate_type «• AGGREGATE ( 's' type_label J OF parameter_type .

39    aggregation_types « array_type | bag_type I list_type I aet_type .

40    algorithm_head «• ( declaration ) [ conatant_decl ) ( local_decl ] .

41    array_type « ARRAY bound_spec OF [ OPTIONAL ] | UNIQUE ] baae_type .

42 asaignment_atmt - general_ref { qualifier }    expression    .

43 backward_path_qualifier -    [ attribute_ref ] path_condition .

44    bag_type «• BAG ( bound_spec ] OF base_type .

45    base_type - aggregation_types I simple_types | named_types .

46    binary_type « BINARY [ width_spec ] .

47    binding_header - ( PARTITION partitioned '; ’ ] [ from_clause ]

[ local_decl J ( where_clause ] ( identified_by_c^ause ]

[ ordered_by_cl-ause I •

48    boolean_type » BOOLEAN .

49    bound_l - numeric_expression .

50    bound_2 • numeric_expression .

I EXISTS | EXTENT |    EXP I    FORMAT    | HIBOUND | HIINDEX |    LENGTH

I LOBOUND | LOINDEX    | LOG    | LOG2    | LOG10 | NVL | ODD |    ROLESOF

I SIN | SIZEOF | SORT I TAN I TYPEOF I USEDIN | VALUE | VALUE_IN

I VALUEJJNIOUE .

54    bui1t_in_procedure - INSERT I REMOVE .

55 case_action * case_label \    case_label }    stmt .

56 case_expr « CASE selector OF [ case_expr_action ) ( OTHERWISE ’s' expression ] END_CASE .

57    case_expr_action - case_label { case_label ] 1 s' expression    .

58    case label - expression .

59    case_stmt - CASE selector OF ( case_action | [ OTHERWISE 1:' stmt ]

END_CASE 1;' .

60    compound_stmt - BEGIN stmt [ stmt ) END .

61    constant_bot^y “* constant_id base_type 1 s*' expression .

62    constant_decl • CONSTANT constant_b°dy { constant_b°dy ^ END_CUNSTANT

I « 9 r •

63    constant factor « built in constant I constant ref .

64    constant_id *» simple_id .

65    declaration - function_decl | procedure_decl .

66    dependent_map_decl *» DEPENDENT_MAP ntap_id AS target_parameter { target_parameter ) [ map_subtype_of_clause | dep_map_partition ( depjnapjpartition ) END_DEPENDENT_MAP -

67    dependent_view_decl » VIEW view_id baee_type ';* binding_header RETURN expression { binding_header RETURN expression } END_VIEW *;• .

68    dep_binding_decl • dep_from_clause [ where_clause ] [ ordered_by_clause ) .

69    dep_from_clause * FROM dep_source_parameter ';' {

dep_source_parameter    l .

70    dep_map_decl_body - dep_binding_decl map_project_clause .

71    dep_map_partition ** [ PARTITION partition_id * : *

) dep_map_decl_body .

72    dep_source_parameter - source_pararr»eter_id ( *, '

source_parameter_id}    ( simple_types I type_reference )

73    doaiain_rule - [ label ': • ] logical_expression .

74    element - expression ( ':' repetition ] .

75    entity_constructor ■» entity_reference    { expression

{ expression J |    •

76    entity_id - simple_id .

77    entity_instantiation_loop » FOR instantiation_loop_control '?' map_project_clause .

78    entity reference • [ ( source_schema_ref | target_schema_ref |

schema_ref >    ] entity_ref .

79    enumeration_reference * { type_reference    } enumeration_ref .

80    escape_stmt - ESCAPE    .

81    expression - simple_expression [ rel_op_extended simple_expression ) .

82    expression_or_wild ■» expression I    .

83    extent_reference «• source_entity_reference I view_reference .

84    factor ® simple_factor ( '**' siraple_factor 1 .

85    foreach_expr • EACH variable_id IN expression ( vhere_clause ]

RETURN expression .

86    forloop_expr • repeat_control RETURN expression .

87    formal_parameter - parameter_id {    parameter_id J

parameter_type .

88    forward_path_qualifier - • attribute_ref [ path_condition ) .

89    for_expr - FOR ( foreach_expr i forloop_expr ) .

90    from_clause FROM source_parameter ’( source_parameter    J .

91    function_call «• ( built_in_function | function_ref ) [ actual_parameter_list ] .

92    function_decl - function_head { algorithm_head ] stmt { stmt } END_FUNCTION ';' .

93    function_head «• FUNCTION functioned [ ,(r formal_parameter { ' formal_parameter ) ')• ] 'j* parameter_typ« -

94    function_id - simple_id .

95    generali2ed_typea * aggregate_type I general_aggregation_tyP«s I

generic_type .

96    general_a99re9acn_tyPes “ депега1_аггаУ_сУРе I депега1_Ьа9_сУРе I general_liat_cyPe I generalee^eyP® *

97    general_array_tyPe “ ARRAf { bound_spec ] OF f OPTIONAL 1 [ UNIQUE | parameter_type .

98    general_attc^bute_qualif}er . »„ • ( attribute_ref I view_attribute_ref ) .

99    депега1_Ьа9_сУРе “ BAG [ bound_apec ) OF parameter_typ® •

100    general_list_cyPe * LIST ( bound_spec ] OF [ UNIQUE ] parameter_type .

101    general_ref - parameter_ref I variable_ref | source_parameter_ref ■

102    general_schema_ali.as_id » schema_id I schema_map_id I schema_view_id .

103    general_sc^ema_re^ “ schema_ref | schema_map_ref | schema_view_re* •

104    general_set_cyPe “ SET [ bound_spec ) OF parameter_typ« •

105    generic_tyP® • GENERIC ( type_label ] .

106 group_qualiiier « • \ • entity_ref .

101 identified_by_clause «• IDENTIFIED_BY id_parameter { id_parameter | .

108    id_parameter - [ id_parameter_id , :' ] expression .

109    id_parameter_id - simple_id .

110    if_expr - IF logical_expression THEN expression { ELSIF logical_expression expression } ( ELSE expression ) END_IF .

111    if_stmt » IF logical_expression THEN scmt f atmc ) [ ELSE stmt |

stmt \ ] END_1F ,    .

112    increment * numeric_expression .

113    increment_control « variable_id /:•' bound_l TO bound_2 [ BY increment ] .

114    index «• numeric_expression .

115    index_l • index .

116    index_2 «• index .

1П index_qualiiier л ir.dex_l ( index_2J ,.

118    instantiation_foreach_control « EACH variable_id IN expression |

AND variable_id IN expression } ( INDEXING variable_id ] .

119    instantiation_loop_control ** instantiation_foreach_control I repeat_control .

120    integer_type - INTEGER .

121    interval « ' interval_low interval_op interval_item interval_op interval_high '|1

122    interval_high • simple_expression .

123    interval_item - simple_expression .

124    interval_low - simple_expression .

125    interval_op - '<• | •<-• .

126    label - simple_id .

127    list_type - LIST ( bound_spec ] OF [ UNIQUE ) base_type .

128    literal • binary_literal | integer_literal I logical_literal | real_literal I string_literal .

129    local_decl - LOCAL local_variable \ local_variable | END_LOCAL 1;' .

130    local_variable ** variable_id ( ■variable_id \

parameter_type [ *:«•’ expression ]    .

131    logical_expression - expression .

132    logical_literal *• FALSE I TRUE I UNKNOWN .

133    logical_type - LOGICAL .

134    map_attribute_declaration • [ target_parameter_ref l

index_qualifier ] [ group_qualifier ] 1. * ] attribute_ref ( index_qualifier ]    expression 1; ’ .

135    map_call •* [ target_parameter_ref '0'] raap_reference [ partition_qualification ] '(' expression_or_wild { expression_or_wild ] 1 >' .

136    map_decl «» MAP map_id AS target_parameter '4 target_parameter

1 < map_subtype_of_clause subtype_binding_header map_decl_body > | ( binding_header map_decl_body ( binding_header map_decl_body | ) END_MAP 1;' .

137    map_decl_body - ( entity_instantiation_loop ( entity_instantiation_loop \ }

I map_project_clause I ( RETURN expression ) .

138    map_id - simple_id .

139    map_project_clause - SELECT \ map_attribute_declaration \ .

140    map_reference • [ schema_map_ref ] map_ref .

141    map_subtype_of_clause - SUBTYPE OF ' <' raap_reference    .

142    multiplication_like_op • **' | V I DIV | MOD | AND | ’ll' •

143    named_types * entity_reference | type_reference | view_reference .

144    null_stmt • ';* .

145    number_type » NUMBER .

146    numeric_expression - simple_expression .

147    one_of - ONEOF supertype_expression I 1,1 sopertype_expression l 1)1 .

148    ordered_by_clause *» ORDERED_BY expression { 1expression |    .

149    parameter ~ expression .

150    parameter_id * simple_id .

151    parameter_type • generalized_tуpes | named_types I simple_types .

152    partitioned * simple_id .

153    partition_qualification • *\' partition_ref .

154    path_condition » ■ extent_reference [ ' |' logical_expression J

•r .

155    path_qualifier - forward_path_qualifier I backward_path_qualifter .

156    population - entity_referer.ce .

157    precision_spec » numeric_expression .

158    primary « literal I < qualifiable_factor ( qualifier ) ) .

159    procedure_call_stmt « ( built_in_procedure I procedure_ref ) [

actual_parameter_list ]    .

160    procedure_decl • procedure_head [ algorithm_head ] { stmt } END_PROCEDURE .

161    procedure_head - PROCEDURE procedure_id [ , {, [ VAR ]

formal_parameter {    [ VAR ] formal_parameter ) ,)* )    .

162    procedure_id “ simple_id .

163    qualiftable_factor - attribute_ref I constant_factor | function_call | general_ref I map_call | population I target_parameter_ref | view_attribute_ref | view_call .

164    qualifier • general_attribute_qualifier | group_qualifier | index_qualifier | path_qualifier .

165    query_expression - QUERY variable id ,<" aggregate_source •|* logical expression ,J' .

166    real_type » REAL [ , <, precision_spec ,)* J .

167    reference_clause *» REFERENCE FROM schema_ref_or_rename [ resource_or_rename ( ,, ' resource_or_rename 1 ,)' ] [AS ( SOURCE I

tiDftPT \ X • t

168    rel_op -    ,>' |    |    t ,<>' |    |    |    .

169    rel_op_extended » rel_op | IN l LIKE .

170    rename_id » constant_id | entity_id | function_id I procedure_id | type_id .

171    repeat_control - [ increment_control ] [ while_control | [ until_control ] .

172    repeat_stmt - REPEAT repeat_control , stmt { stmt \ END_REPEAT

•    t

* *

173    repetition «• numeric_expression .

174    resource_or_rename • resource_ref [ AS rename_id | .

175    resource_ref * constant_ref I entity_ref I function_ref | procedure_ref | type_ref | view_ref | map_ref .

176    return_stmt « RETURN [ ,(, expression ,)* )    .

177    root_view_decl - VIEW view_id { supertype_constraint J binding_header SELECT view_attr_decl_stmt_list { binding_header SELECT view_attr_decl_stmt_list | END_VIEW , ; • .

176 rule_decl » rule_head ( algorithm_head ) { stmt ) where_clause END_RULE ,; ' .

179    rule_head *» RULE rule_id FOR , (, entity_ref l , , * entity_ref } ,) 1

•    %

* *

180    rule_id « simple_id .

181    schema_id « simple_id .

182    schema_map_body_element « function_decl I procedure_decl I view_decl I map_decl | dependent_map_decl | rule_decl .

183    schema_map_body_element_list «• schema_map_body_eleraent ( schema_map_body_element ) .

184    schema_map_decl * SCHEMA_MAP schema_map_id , reference_clause [ reference_clause | [ constant_decl ] schema_map_body_element_list END_SCHEMA_MAP , ; ' .

185    schema_map_id » simple_id .

186    schema_ref_or_rename - [ general_schema_alias_id ] general_schema_re£ .

L87 schema_view_body_element - fonction_decl I procedure_decl I view_decl I rule_decl .

188    schema_view_body_element_list - achema_view_body_element [ schema_view_body_element ) .

189    schema_view_decl « SCHEt4A_VIEW schema_view_id    (

reference_clause \ [ constant_decl ] schema_view_body_element_list END_SCHEMA_VIEW ';' .

190    schema_view_id « simple_id .

191    selector - expression .

192    set_type « SET ( bound_spec ] OF base_type .

193    simple_expression » term { add_like_op term \ .

194    simple_factor - aggregate_initiali2er I entity_constructor I enumeration_reference | interval I query_expression | < [ unary_op ]

< expression I primary ) ) I case_expr | for_expr I if_expr .

195    simple_types - binary_type I boolean_type | integer_type I logical_type | number_type I real_type | string_type .

196    skip_stmt - SKIP    .

197    source_entity_reference - entity_reference .

198    sourcejparameter “ source_parameter_id extent_re£erence .

199    source_parameter_id - simple_id .

200    stmt * assignment_stmt I case_stmt I compound_stmt | escape_stmt | if_stmt | null_stmt I procedure_call_stmt | repeat_stmt I return_stmt I skip_stmt .

201    string_literal « simple_string_literal | encoded_string_literal .

202    string_type - STRING [ width_spec ] .

203    subtype_binding_header • [ PARTITION partitioned ' ' ] where_clause .

204    subtype_constraint - OF '(' supertype_expression

205    subtype_d®cJ-acation * SUBTVPE OF '(* view_ref \ 1view_ref 1

206    subtype_view_decl “ VIEW view_id subtype_dec^acaC^on ‘• ' subtype_Mnding_header SELECT view_attr_d®cl_stmt_4-st \ subtype_binding_header SELECT view_attr_d®cl_stmt_4-st )

END_VIEW    .

207    supertype_constraint » abstract_supertype_declaration | supertype_rule .

208    supertype_expression - supertype_factor \ ANDOR supertype_factor \ .

209    supertype_factor •• supertype_t®rm \ AND supertype_t®rm ) •

210    sopertype_rule » SUPERTYPE [ subtype_constraint ] .

211    supertype_t®c,n “ view_ref I one_of I '{* supertype_expression .

212    syntax_x •« schema_map_d®cl I schema_view_d®cl •

213    target_entity_reference - entity_re£erence { '4* entity_re£erence | .

214    target_parameter « target_parameter_id | target_parameter_id \

's' [ AGGREGATE [ bound_spec ] OF ] target_entity_re£erence .

215    target_parameter_id - simple_id ' ' .

216    term «• factor ( multiplication_like_op factor ) .

217    type_id - simple_id .

218    type_label type_label_id | type_label_ref .

219    type_label_id - simple_id .

220    type_reference ** [ schema_ref 1 .' ] type_ref .

221    unary_op - •+• | *-• | NOT .

222    until_control • UNTIL logical_expression .

223    variable_id - simple_id .

224    view_attribute_decl - view_attribute_id ':1 [ OPTIONAL ] [ source_schema_ref ) base_tyPe 'г**' expression ' ' .

225    view_attribute_id « simple_id .

226    view_attr_d®cl_stmt_H-8C “ l view_attribute_d®cl ) .

227    view_call • view_reference f partition_qualilication ]    [

expression_or_wild \    expression_or_wild \ ] 1.

228    view_decl - < root_view_decl I dependent_view_decl |

subtype_view_d®cl > -

229    view_id - simplest! •

230    view_reference - [ ( schema_map_ref | schema_view_ref J '.' ]

view_ref .

231    where_clause • WHERE domain_rule    ( domain_rule    \

232    while_control - WHILE logical_expression .

233    width - numeric_expression .

234    width_spec - »(* width •)' ( FIXED ] .

8.3 Список перекрестных ссылок

DEPENDENT_MAP

EXTENT

IDENTIFIED_BY MAP

ORDERED_BY

PARTITION

SCHEMAJ4AP

SCHEMA_VIEW

SELECT

VIEW

abstract_supertype_declaration

actual_parameter_list

add_like_op

aggregate_initializer

aggregate_source

aggregate_type

aggregation_types

algorithm_head

array_type

assignment_atrat

bac kward_pa th_qua 1 ifle r

bag_type

base_type

binary_type

bind!ng_heade r

boolean_type

bound_l

bound_2

bound_spec

built_in_constant

bu11t_in_function

built_in_procedure

case_action

case_expr

ca se_e xpr_ac ti on

case_label

case_stmt

compound_stmt

constant_body

constant_decl

constant_factor

constant_id

declaration

dependent_map_decl

dependent_view_decl

dep_binding_decl

dep_from_c1ause

dep_map_decl_body

dep_map_partition

dep_source_parameter

domain_rule

element

entity_conatruetor entity_id

entity_instantiatlon_loop

66

53

107

136 148

47 71 203

184

189

139 177 206 67 177 206 207

91    159

193

194 165 95 45

92    160 178 39

200

155

39

41 44 61 127 192 224

195

67    136 177 195

51 113 51 113

41 44 97 99 100 104 127 192 214

63

91

159

59

194

56

55 57 200 200 62

40    184 189 163

61 170 40 182 228

70

68

71 66 69 231 36 194 170

137

entity_reference

enumeration_reference

escape_stmt

expression


expression_or_wiId extent_reference factor

foreach_expr

forloop_expr

formal_parameter

f о rwa rd_pa t h_qua 1 ifie r

for_expr

from_clause

function_call

function_decl

function_head

function_id

generaLi2ed_typea

general_aggregation_types

general_array_type

general_attribute_qualifier

general_bag_type

general_list_type

general_ref

general_schema_alias_id

general_schema_ref

general_set_type

generic_type

group_qua1ifier

identified_by_clause

id_parameter

id_parameter_id

if_expr

if_stmt

increment

increment_controi

index

index_l

index_2

index_qualifier

instantiation_foreach_control

instantiation_loop_control

integer_type

interval

interval_high

interval_item

interval_low

interval_op

label

list_type

literal

local_decl

local_variable

logical_expression

logical_literal

logical_type

map_attribute_declaration

map_call

map_decl

map_dec'l_body


75 143 156 197 213 194 200

42 56 57 58 61 67 74 75 82 85 86 108 110 118 130 131 134 137 148 149 176 191 194 224

135    227

154    198 216

89

89

93 161

155 194 47

163

65 182 187

92

93    170 151

95

96

164 96 96

42 163 186 186 96 95

134 164 47

107

108

194 200 113 171

115 116

117

117

134 164

119

77

195

194 121 121 121 121 73

39 158

40    47 129

73 110 111 154 165 222 232 128

195 139 163 182

136 map_id

map_projecc_clause

map_re£erence

map_subcype_o£_c1au s e

multiplicac i on_li ke_op

named_types

null_stmt

number_type

numeric_expression

one_of

о rde red_by_clau se

parameter

parameter_id

parameter_type

partitioned

parti tion_qualificat ion

path_condition

pa th_qua 1 ifie r

population

precision_spec

primary

procedure_call_stmt

procedure_decl

procedure_head

procedure_id

qualifiable_f actor

qualifier

query_expression

real_type

reference_clause

rel_op

rel_op_extended

rename_id

repeat_control

repeat_stmt

repetition

resource_or_rename

resource_ref

return_stmt

root_view_decl

rule_decl

rule_head

rule_id

schema_id

schema_map_body_element

schema_map_body_element_list

schema_map_deci

schema_map_id

schema_re f_or_rename

schema_view_body_element

schema_view_body_element_list

schema_view_decl

schema_view_id

selector

set_type

simple_expression simple_factor simple_types skip_stmt

source_entity_re£erence

source_parameter

source_parameter_id

136

77 137 141 136

151

50 112 114 157 173 233 66

87 93 97 99 100 104 130 71 203 227 86

182 187 170 158

189

119 172


187


184

189

59

81 122 123 124 146 72 151

198


stmt

string_literal

string_type

subtype_binding_header

subtype_constraint

subtype_declaration

subtype_view_decl

supertype_constraint

supertype_expression

supertype_factor

supertype_rule

supertype_term

target_entity_reference

target_parameter

target_parameter_id

term

type_id

type_label

type_label_id

type_reference

unary_op

until_control

variable_id

view_attribute_decl

view_attribute_id

view_attr_decl_stmt_list

view_call

view_decl

view_id

view_reference

where_clause

while_control

width

width_spec 55 59 60 92 111 160 172 178

128

195

136 206 33 210 206 228 177

147 204 211 208 207 209 214

66    136 214

193

170

38 105 218

72 79 143

194

171

65 113 118 130 165 226 224

177 206 163

182 187

67    177 206 83 143 227

47 68 65 178 203

171

234

46 202

Алгоритм прообразования текста с языка EXPRESS-X на язык EXPRESS

В настоящем приложении представлено преобразование совокупности объявлений образов в совокупность объявлений объектов на языке EXPRESS, обеспечивающую представление результатов выполнения операторов языка EXPRESS-X. Данное преобразование представлено в форме алгоритма, принимающего текст объявления образа в качестве входного параметра и производящего в реэутътате своей работы текст объявления объекта. Данный алгоритм представлен здесь только с целью спецификации языка EXPRESS-X и не предусматривает какой-либо конкретной реализации.

Предполагается, что преобразованные объекты существуют в схеме с уникальными именами, с которой все необходимые внешние объявления связаны с помощью интерфейсов.

Описание алгоритма

a)    Если объявление образа представляет зависимый образ (то есть не определяет никаких атрибутов образа), то пропустить данное объявление.

b)    Заменить ключевое споео VIEW на ENTITY.

c)    Удалить элементы языка FROM, WHERE, IDENTZFIED_BY и ORDER£D_BY. Элементы WHERE удалить только в заголовке, но не удалять е ограничениях.

d)    Удалить ключевое слово SELECT.

в) Если объявление образа содержит раздеты, то полностью удалить все разделы, кроме объявления первого раздела: удалить ключевое слово PARTITION и идентификатор раздела (вели он имеется) из объявления первого раздела.

f) Удалить оператор присваивания и следующее за ним выражение у каждого атрибута образа, д) Заменить ключевое споео END_VIEW на END_ENT1TY.

Примеры

1    Следующее объявление образа:

VIEW a ABSTRACT SUPERTYPE;

PARTITION one;

FROM b:one; c:two;

WHERE condl; cond2;

SELECT

x : attrl : * expression].; у : attr2 : * expreesion2;

PARTITION two;

FROM d:two; e:three;

WHERE cond3; cond4;

SELECT

x : attrl : ■ expression3; у : attr2 : * expression^

END_VIEW;

преобразуется e следующее объявление объекта на языке EXPRESS:

ENTITY a ABSTRACT SUPERTYPE; x : attrl; у : attr2;

END_ENTITY;

2    Следующее объявление образа:

VIEW b SUBTYPE OF (a);

PARTITION one;

WHERE cond5;

SELECT

z : attr3 :■ expressions;

PARTITION two;

WHERE condS;

SELECT

г : attr3 :■ expressions;

WHERE

WR2 : rule_expression2;

END-VIEW;

преобразуется в следующее объявление объекта на языке EXPRESS: ENTITY b SUBTYPE OF (a);

z : attr3;

WHERE

WR2 : rule_expression2;

END ENTITY;

Вопросы реализации

D.1 Полное отображение

Реализация выполняет полное отображение е том случае, если она удовлетворяет следующим критериям:

•    программа отображения принимает на входе один иш несколько наборов исходных данных и производит один или нескогъко выходных наборов данных (отображений) или пространств образов (образов):

•    выходные наборы данных производятся из входных наборов данных с помощью выполнения и вычисления всех объявлений образов (VIEW) отображений и отображений (МАР):

•    каждый экземпляр из входных наборов данных отображается на выходные наборы данных (отображения) или пространства образов (образы) так. как указано в схеме отображения.

0.2 Отображение по запросам

Реализация выполняет отображете по запросам в том случае, если она удовлетворяет следующим критериям:

•    программа отображения принимает на входе один или несколько наборов исходных данных

•    только указанные в запросах экземпляры целевых данных производятся из наборов входных данных с помощью выполнения и вычисления соответствующих объявлений образов или отображений.

Примечание — В настоящем стандарте не определено, как объявления образов и отображений выбираются для отображения по запросам.

0.3 Поддержка проверки ограничений

Реализация поддерживает проводку ограничений в том случае, если е ней реализованы положения, описанные е подразделе 9.6 ИСО 10303-11. по отношению к экземплярам объектов в целевых наборах данных и экземплярам образов в пространствах образов.

Примечание — Проводка ограничений не влияет на выполнение отображения.

0.4 Поддержка обновлений

Выполнение обновлений невозможно в тех случаях, когда имеет место любое из следующих положений:

•    образ/целввой объект л рои зводится/от обряжается из двух игы более исходных объектов с помощью одной операции.

Пример — Образ/целевой объект person_in_dept соответствует исходным объектам person и department, если значением объединяющего их условия person.id ■ department.pereon_id является TRUE;

•    дубликаты, т. в. экземпляры, имеющие одинаковые значения атрибутов, существующие е исходных данных, удаляются из образ а/целевых данных:

•    атрибуты образов/целевые атрибуты лолучены/отображены из элементов исходной схемы с помощью математических выражений, которые не являются математически обратимыми:

•    схема образа/целевая схема определяет дополнительные подтипы данных, которые не существуют в исходной схеме (схемах):

•    подтипы данных, определенные в исходной схеме (схемах), переносятся в схему образа/целевую схему (т. е. не содержатся в ней):

•    порядок сортировки исходных атрибутов типа данных AGGREGATE аннулируется в схеме обраэа/целввой схеме:

•    дубликаты (с точки зрения эквивалентности значений) элементов исходных атрибутов типа данных AGGREGATE исключаются из схемы образа/цепевой схемы;

•    один исходный объект соответствует сети взаимосвязанных обраэов/целевых объектов (через взаимосвязи или эквивалентность значений атрибутов).

Функция unnest оператора пути

Следующий текст на языке EXPRESS реализует функцию unnest, на которую даны ссылки в 10.8 и 10.9:

FUNCTION unnest(arc : GENERIC) : AGGREGATE OF GENERIC;

LOCAL

result : AGGREGATE OF GENERIC [); tmp : AGGREGATE OF GENERIC;

END_LOCAL;

IF SIZEOF((1 LIST', 'SAG', 'SET1, ’ARRAY', ’AGGREGATE’) * TYPEOF(src)) > 0 THEN

REPEAT i s-lTO HIINDEX (src) ; trap :• unnesc<src[i]);

REPEAT j    1 TO HIINDEX(trap);

result    result + tmp(j);

£ND_REP£AT;

END_REPEAT;

ELSE

IF SIZEOF<[’STRING', 'BINARY’, ’LOGICAL', 'NUMBER') 4 TYPEOF(src)) - 0 THEN -- entity instance result :• result + src;

END_IF;

END_IF;

RETURN (result);

END FUNCTION;

Семантика таблицы отображений

Язык EXPRESS-X может быть использован в качестве альтернативной спецификации ссылочных путей в таблицах отображений прикладного протокола STEP. В данном приложении показано, как эго может быть сделано с помощью примеров прототипов на языке EXPRESS-X для всех конструкций ссылочных путей из таблиц отображений. описанных в Руководстве по разработке спецификаций отображений, подраздел 9.1 «Использование символов». В данных примерах использована спецификация с большей функциональностью за счет применения конструкции VIEW языка EXPRESS-X. При этом отображение осуществляется от прикладной интерпретированной модели (ПИМ) к прикладной эталонной модели (ПЭМ). Отображение в обратном направлении от ПЭМ кПИМможет быть сделано более наглядно с помощью процедурной конструкции ХА? языка EXPRESS-X. Направление ссылочных путей предполагается таким же. как в таблицах отображений прикладных протоколов. — от ПЭМ (сверху и слева) к ПИМ (вниз и направо)

F.1 Разделительные символы

Символ супертипа показывает, что элемент со стороны ПЭМ. расположенный слева от этого символа, должен быть супертипом для элемента со стороны ПИМ. расположенного справа от символа. При отображении на ПЭМ данный символ показывает направление от подтипа к супергипу. которое не требует отдельной спецификации на языке EXPRESS-X. так как такое наследование определено в языке EXPRESS.

Символ подтипа    показывает, что элемент со стороны ПЭМ. расположенный слева от этого символа, дол

жен быть подтипом для элемента со стороны ПИМ. расположенного справа от символа. При отображении на ПЭМ данный символ показывает требование к подтипу, который должен быть задан на языка EXPRESS-X с помощью элемента языка WHERE, содержащего осыпку TYPEOF. следующим образом:

Таблица отображений: cc_design_approval <• approvel_assignment

Фрагмент на языке EXPRESS-X:

VIEW ...;

FROM ... aa:approval_assignment? ...

WHERE ... ,CONFIG_CONTROL_DESIGN.CG_DESIGN_APPROVAL' IN TYPEOF(aa); ...

Следует огметить.что приведенный выше фрагмент во всех случаях эквивалентен следующему:

VIEW ...;

FROM ... aa:cc_design_approval; ...

Поэтому е случае наличия обоих ограничителей связанных супертипое или связанных подтипов только наиболее конкретизированный подтип должен появиться в качестве исходного типа данных, как показано 8 следующем примере:

Таблица отображений: product_definicion_usage -> assembly_component_usage «•> next_assembly_usage_occurrenee

Фрагмент на языке EXPRESS-X:

VIEW

FROM ... nauo:next_assembly_usage_occurrence; ...

Если существует несколько таких специфичных подтипов в цепочке связанных ограничителей супергипов и подтипов, то может быть использовано условие TYPEOF или условие равенства экземпляров:

Таблица отображений: representation_item *> measure_representation_item { measure_representation_item <-measure_vith_unit •> length_measure_with_unit )

Фрагмент на языке EXPRESS-X:

VIEW .. .;

FROM ... mri:measure_representation_item; ...

WHERE ... * FEATURE_BASED_PROCESS_PLANNING.LENGTH_MEASURE_WITH_UNIT' IN TYPEOF (ЛИП;

или

VIEW

FROM ... lmwuslength_measure_with_unit; ...

WHERE • FEATURE_BASED_PROCESS_PLANNIN<3.MEASURE_REPRESENTATION_ITEM' IN TYPEOFUmwu) ; или

VIEW ...;

FROM ... mri:mea3ure_representation_item;

lmwu:length_measure_with_unit; ...

WHERE ... mri lmwu; ...

Символ ссылки на атрибут *->" показывает, что элемент со стороны ПЭМ. расположенный слева от этого символа, является ссылкой на атрибут, тип данных которого определяет элемент со стороны ПИМ. расположенный справа от символа. При отображении на ПЭМ данный символ показывает направление от типа данных к атрибуту данного типа. Символ ссылки от атрибута *•- является обратным, показывая в отображении на ПЭМ направление от атрибута к типу данных этого атрибута. В общем случае оба эти символа могут быть определены на языке EXPRESS-X с помощью условия равенства экземпляров:

Таблица отображений:

approval_assignment.assigned_approval -> approval

Фрагмент на языке EXPRESS-X:

VIEW

FROM ... aa:approval_assignment; asapproval; ...

WHERE ... aa.assigned_approval a; ...

Аналогично ограничителям супвртипов и подтипов, цепочки ограничителей осылок на атрибуты могут быть объединены так, что только «самые верхние» ссылки должны появиться в качестве исходных типов данных. Кроме того, может быть желательно включить также начальный и^или конечный типы данных из полного ссылочного пути, для того чгобы зафиксировать их:

Таблица отображений:

cc_design_person_and_organization_assignment <» person_and_organi2ation_assignment

person_and_organization_assignment.assigned_person_and_organization -> person_and_organization person_and_organization.the_person -> person

Фрагмент на языке EXPRESS-X:

VIEW ...;

FROM ... poa:cc_designjperson_and_organization_assignment; p:person; ...

WHERE ... poa.assigned_person_and_organization.the_person p; ...

F.2 Символы агрегированных структур

Символ агрегированной структуры‘(1)” определен в языке EXPRESS-X с помощью ограничения *1М". а символ ' (п)" определен аналогично тому, как в языке EXPRESS-X определена ссылка на атрибут:

Таблица отображений:

property_definition_representation

property_definition_representation.used_representation -> representation representation.items[i] -> representation_item «> measure_representation_item Фрагмент на языке EXPRESS-X:

VIEW

FROM ... pdr:property_definition_representation;

mri:measure_representation_item;

WHERE ... mri IN pdr.used_representation.items;

Таблица отображений: representation representation.items[2] -> representation_item -> geometric_representation_item -> placement -> axis2_placement_3d

Фрагмент на языке EXPRESS-X:

VIEW .. .;

FROM ... ^representation; ap:axis2_placement_3d;

WHERE ... r.items[2) ap;

F.3 Знак равенства

Символ знака равенства используется для задания типа у типа данных SELECT или для ограничения значения атрибута, имеющего простой тип данных. В первом случав функции знака равенства очень похожи на функции символов задания супертипов и подтипов данных, и он может комбинироваться с ними в цепочках конкретизации или обобщения. 8 которых, как было отмечено выше, только наиболее конкретизированные типы данных из цепочки должны быть определены как исходные типы данных для элемента языка VIЕК:

Таблица отображений: approvel_date_time approval_date_time.date_time -> date_time_select date_time_select - date date “> caLendar_date

Фрагмент на языке EXPRESS-X:

VIEW .. .;

FROM ... adt:approval_date_time; cdt calendar_date; ...

WHERE ... adt.date_time cd;

В случае, когда символ используется для ограничения значения атрибута, имеющего простой тип данных (т. е. заключенного в квадратные скобки), ограничение в языке EXPRESS-X задается непосредственно с помощью элемента языка WHERE:

Таблица отображений: representation representation.items(i) ->

{ representation_item

representation_item.name - 'diameter' }

Фрагмент на языке EXPRESS-X:

VIEW ...;

FROM ... ^representation; ri:representation_item; ...

WHERE ... ri IN r.items; ri.name • 'diameter'; ...

F.4 Круглые скобки

Символы крутых скобок Т и ')' испогъзуются для заключения в них отдельных опций в ссылочном пути. При отображении на ПЭМ это означает, что любые опции, присутствующие е ПИМ. в результате будут отражены на ПЭМ. В языке EXPRESS-X это задается с помощью элемента языка PARTITION:

Таблица отображений: person_and_organizacion ( person_and_organi2ation.the person -> person <-

personal_address.people(i] personal_address <-address )

( person_and_organization.the_organi2ation -> organization <-organizational_address <-address )

Фрагмент на языке EXPRESS-X:

VIEW

PARTITION p;

FROM ... po:person_and_organization; pa:personal_address; ...

WHERE ... po.the_person IN pa.people;

PARTITION o;

FROM ... po:person_and_organization; oa:organizational_address; ...

WHERE ... po.the_organization IN oa.organizations;

F.5 Квадратные скобки

Символы квадратных скобок *(“ и "Г используются для заключения а них ветвей ссылочного пути, все из которых должны существовать. В языке EXPRESS-X это задается с помощью добавления к образу спецификаций всех таких подветвей:

Таблица отображений:

[ mapped_item

mapped_item.mapping_target -> representation item ]

( mapped_item

mapped_item.mapping_source -> representation_map representation_map.mapping_origin representation_item ]

Фрагмент на языке EXPRESS-X:

VIEW . ..;

PROM ... mi:mapped_item; source:representation_item;

target:representation_item; ...

WHERE ... mi.mapping_target target;

mi.mapping_source.mapping_origin source; ...

F.6 Пример

Таблица отображений объекта circular_closed_profile на numeric_parameter. представляющий атрибут diameter: circular_closed_profile <• shape_aspect

shape_definition - shape_aspect shape_definition

characterized_definition - shape_definition characterized_definition <-pr ope r t y_def in i t i on. defin i t i on property_definition <-

property_definition_representat ion. definition ( property_definition_representation •> shape_definition_representation \ property_definition_representation

property_definition_representation.used_representation ->

( representation ■>

shape_representation -> shape_representation_with_parameters \ representation representation.items[i] ->

( representation_item

representation_item.name - 'diameter’ ) representation_item -> measure_representation_item ( measure_representation_item <-measure_with_unit «> length_measure_with_unit \

Фрагмент на языке EXPRESS-X:

VIEW find_diameter;

FROM ccp s c i rcu la r_cl osedjprofi le;

sdr :shape_definition_representation; srwp:shape_representation_with_parameters; mri;measure_representation_item; lmwu:length_measure_with_unit;

IDENTIFIED_BY ccp;

WHERE sdr.definition.definition    ccp;

sdr.used_representation    srwp;

mri IN srwp.items; mri.name • 'diameter'; lmwu mri;

RETURN

lmwu.value_component;

ENDJ/IEW;

Сведения о соответствии ссылочных международных стандартов национальным стандартам

Российской Федерации

Таблица ДАЛ

Обозначение ссылочного международного стандарта

Степени

соотесгствмя

Обозначение и наименование соответствующего национальною стандарта

ИСО/МЭК 8824-1:2002

IDT

ПОСТ Р ИСО/МЭК 8824-1—2001 «Информационная технология. Абстрактная синтаксическая нотация версии один (АСН.1). Часть 1. Спецификация основной нотации»

ИСО 10303-1:1994

IDT

ГОСТ Р ИСО 10303-1—99 «Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 1. Общие представления и основополагающие принципы»

ИСО 10303-11:2004

IDT

ГОСТ Р ИСО 10303-11—2009 «Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 11. Методы описания. Справочное руководство по языку EXPRESS»

ИСО/МЭК 10646-1:2000

* Соответствующий национальный стандарт отсутствует. До его утверждения рекомендуется использовать перевод на русский язык данного международного стандарта. Перевод данного международного стандарта находится в Федеральном информационном фонде технических регламентов и стандартов.

Примечание — В настоящей таблице использовано следующее условное обозначение степени соответствия стандартов:

- IDT — идентичные стандарты.

Библиография

[1]    Wirth, Niklaus. What can we do about the unnecessary diversity of notations for syntactic definitions? Communications of the ACM. November 1977. vol. 20, no. 11. p. 822

[2]    ISO 10303-21:1994. Industrial automation systems and integration — Product data representation and exchange — Part 21: implementation methods: Clear text encoding of the exchange structure

УДК 656.072:681.3:006.354    OKC 25.040.40

Ключевые слова: автоматизация производства, системы автоматизации, интеграция систем автоматизации. данные об изделиях, представление данных, обмен данными, методы описания, искусственные языки, языки моделирования, язык EXPRESS-X

Редактор Л. С. Зиыилова Корректор П.М. Смирнов Компьютерная верстка Л.А. Круговой

Подписано а печать 08.02.2016.    Формат $0 «84 Vg.

Уел. лвч. л. 8.37 Тираж 30 оо. Зак 3894.

Подготовлено на основе электронной версии, предоставленной раэработчнком стандарта «ГУП кСТАНДАРТИНФОРМ». 123995 Москва. Гранатный пер.. 4. <vww.goslmlo.ru

Отменен. Действует ИСО/МЭК 10646:2012. Для однозначного соблюдения требований настоящего стандарта. выраженных в датированных ссылках, рекомендуется использовать только данный ссылочный стандарт.

Данный вид взаимосвязи сопоставим со взаимосвязями типа «первичный ключ — внешний ключ» в реляционной модели данных.