315
.pdf1.3. Метод описания: язык концептуальных схем данных Express
Express – это используемый в STEP язык определения данных или язык концептуальных схем данных. Описание языка Express содержится в томе ISO 10303-11.
Язык Express может применяться вне стандарта STEP как самостоятельный язык информационного моделирования и уже используется в других международных стандартах (ISO 13584 PLIB, ISO 15531 MANDATE, ISO 15926 OIL&GAS, IFC), а также для пред-
ставления информационной модели CALS НАТО.
Концептуальная схема данных, или концепт – это описание того, какие сущности существуют в предметной области, как эти сущности соотносятся между собой, какими свойствами обладают с точки зрения данной предметной области и какие ограничения накладывают на значения свойств сущностей.
Независимость Express от предметной области достигается за счет того, что для представления объекта применяется не специфическое, а обобщенное понятие «сущность» (entity) – основной элемент модели STEP. Каждая сущность обладает атрибутами, выражающими характерные свойства моделируемого объекта.
Cущность – это класс информации, предназначенный для отображения объектов денотата, имеющих с точки зрения рассматриваемой предметной области одинаковый набор свойств.
Денотат – объект информационного моделирования. Информационная модель на языке Express состоит из одной или
нескольких частей, называемых схемами (schema). В схеме вводятся необходимые типы данных.
Описание схемы начинается с заголовка, состоящего из служебного слова schema и идентификатора – имени схемы. Далее следует содержательная часть – тело схемы. Описание заканчивается служебным словом end_schema:
SCHEMA <имя_схемы>; <тело_схемы>; END_SCHEMA;
11
elib.pstu.ru
Для установления интерфейса между двумя схемами вводятся спецификации интерфейса. Применяют два типа спецификаций – use и reference. Например:
SCHEMA s1; ENTITY par1; name: STRING; END_ENTITY; END_SCHEMA;
SCHEMA s2; (*в схеме s2 в качестве параметра х использу-
ется name из s1.par1*)
USE FROM s1.par1 (name AS x); END_SCHEMA;
Отметим, что между символами * и * записывается комментарий – произвольный текст по усмотрению автора модели. Если комментарий умещается в одной строке, то достаточно перед его текстом поставить двойной дефис ( -- ).
Ссылки типа use отличаются тем, что декларации сущностей из другой схемы используются в данной схеме как свои локальные, в то время как reference просто позволяет обращаться к декларациям другой сущности. Ограниченность reference выражается в том, что сущности из другой схемы можно использовать только в качестве типов атрибутов в сущностях данной схемы.
Втеле схемы декларируются типы данных. Тип данных – это множество значений некоторой величины или множество объектов.
Вязыке Express используются следующие типы данных: сущ-
ность (Entity), простой (Simple Type), агрегативный (Aggregation Data Type), определяемый (Defined Data Type), нечисловой (Enumeration Data Type) и выделяемый (Select Data Type) типы.
Описание сущности начинается со служебного слова entity, за которым следуют идентификатор сущности, описания ее атрибутов и, возможно, правил. Каждый из атрибутов представлен его идентификатором и типом:
ENTITY <имя_сущности>; <идентификатор_атрибута>:<тип_атрибута>;
...
END_ENTITY;
12
elib.pstu.ru
Например, задание прямой линии в виде двух инцидентных точек р0 и р1 (атрибутов типа point) выглядит следующим образом:
ENTITY line; p0: point; p1: point;
END_ENTITY;
Атрибуты и переменные сами могут быть сущностями. Так, тип атрибутов p0 и p1 предыдущего примера декларируется как сущность, атрибутами которой в случае пространства 3D являются геометрические координаты x, y, z:
ENTITY point;
x:REAL;
y:REAL;
z:REAL; END_ENTITY;
Если свойство является необязательным для данной сущности,
то его выражают так называемым необязательным (optional) атрибутом. В его описании перед типом атрибута добавляется служеб-
ное слово optional:
<идентификатор_атрибута>: OPTIONAL <тип_атрибута>;
Некоторые из атрибутов могут определяться через другие атрибуты. Тогда атрибуты, выражаемые через другие атрибуты, называют порожденными, что отображается служебным словом derive в декларации атрибута. Например, описание окружности, кроме обязательных атрибутов, которыми в нижеследующем примере выбраны радиус и центр окружности, может включать в себя порожденные атрибуты «площадь круга» и «длина окружности»:
ENTITY point;
x:REAL;
y:REAL;
z:REAL; END_ENTITY; ENTITY cirle; center: point;
13
elib.pstu.ru
radius: REAL; DERIVE
Perimeter: REAL:=2*pi*radius area: REAL := pi*radius**2; END_ENTITY;
Вэтом примере использованы явные атрибуты center, radius
ипорожденные атрибуты area и perimeter.
К простым типам данных относятся следующие:
–integer – целые числа;
–real – вещественные числа;
–number – тип, объединяющий типы integer и real;
–logical – его значениями могут быть true, false или unknown (неопределенность);
–Boolean – с возможными значениями true или false;
–binary – последовательность битов 1 или 0;
–string – строка символов.
Для binary и string в круглых скобках можно указать максимально возможное число элементов множества, например, если строка A может включать до 24 символов, то
A: STRING(24);
Если строка должна содержать ровно 24 символа, то
A: STRING(24) FIXED;
Если же ограничений на длину строки нет, то
A: STRING;
Если переменная х имеет тип binary, то выражение х[5:7] означает биты с 5-го по 7-й в коде х.
Значения простых типов выражаются с помощью литералов. Литералы – это числа (целые, вещественные), двоичные коды, логические значения (true, false, unknown), фрагменты текста (строковый тип). Примеры записи литералов:
–двоичный (начинается со знака %) %100101110;
–целое десятичное число 1052;
–вещественный (обязательна десятичная точка) 34.е-3, или
0.034;
14
elib.pstu.ru
– строковый (занимает не более одной строки) 'first name'. Агрегативный тип данных – множество элементов некоторого
типа. Различают четыре разновидности агрегативных типов: array, bag, list, set.
При описании типа «массив» (array) после слова array в квадратных скобках указываются нижняя и верхняя границы индексов. Для остальных агрегативных типов записываются не граничные значения индекса, а нижняя и верхняя границы числа элементов. Например:
F1: ARRAY[2:8] of REAL;
(*массив F1 из 7 элементов, элементы имеют тип real и нумеруются начиная с индекса 2*);
F2: LIST[1:?] of INTEGER;
(*множество F2 содержит по крайней мере один элемент ти-
па INTEGER*)
matr: ARRAY[1:10] of ARRAY[9:12] of atrac;
(*массив matr состоит из 10 четырехэлементных массивов, элементы типа atrac*)
Нечисловой тип – тип данных, экземплярами которого являются нечисловые (предметные) переменные.
Определение нечислового типа начинается со служебных слов enumeration of, после которых в скобках перечисляются элементы множества. Например:
TYPE color = ENUMERATION OF (red, green, blue); END_TYPE;
Ссылка на значение red теперь возможна в виде red или color.red.
Выделяемый тип соответствует поименованной совокупности других типов. Описание этих типов данных начинается со служебного слова type, за которым следует идентификатор типа и его определение. Пример описания определяемого типа:
TYPE volume = real; END_TYPE; ENTITY manual;
15
elib.pstu.ru
name: STRING; v1: volume;
v2: volume; v3: volume; END_ENTITY;
Выделяемый тип соответствует одному из некоторого списка уже введенных типов. Этот список записывается после служебного слова select. Ссылка на имя выделяемого типа означает, что выбирается один из типов совокупности:
TYPE a_c = SELECT (one, two, three); END_TYPE;
...
proc: a_c; (*proc может быть объектом одного из типов one, two, three*)
Способ описания констант очевиден из следующего фрагмента модели:
CONSTANT
year: INTEGER := 1995; start: date := date(12,16,1982);
(*подразумевается, что при описании типа date указаны три атрибута месяц, число, год*)
END_CONSTANT;
1.4. Метод реализации: символьный обменный файл STEP
Для обмена конкретными значениями атрибутов в STEP введен обменный файл (протокол ISO 10303-21). Файл состоит из головной и информационной секций. В головной секции (между служебными словами HEADER и ENDSEC) указываются:
–Entity file_name – имя и некоторые другие атрибуты данного конкретного обменного файла;
–Entity file_description – неформальное описание содержимого файла и требования к ПО для обработки данного файла;
16
elib.pstu.ru
–Entity file_schema – схемы, для которых далее даны экземпляры сущностей;
–keyword (список типов).
В информационной секции (между словами DATA и ENDSEC) указываются имена экземпляров сущностей и значения их атрибутов в виде следующих строк:
#1 = POINT(0.0,0.2,0.5);
(*экземпляр сущности типа POINT с именем 1, значения параметров 0, 0.2 и 0.5 типа REAL*)
#2 = WIDGET(.RED.);
(*экземпляр сущности типа WIDGET с именем 2, значение типа RED*)
...
#8 = LINE(#1,#4);
(*значениями атрибутов являются экземпляры сущностей с именами 1 и 4*)
Пример:
Рис. 3. Чертеж детали
Express-схема, описывающая геометрию простой фигуры
(рис. 3):
SCHEMA detail; ENTITY line;
17
elib.pstu.ru
p1: point; p2: point;
END_ENTITY; ENTITY cycle; p1: point;
r: REAL; END_ENTITY; ENTITY point;
x:REAL;
y:REAL; END_ENTITY; END_SCHEMA;
Обменный файл получен в следующем виде:
ISO-10303-21; HEADER;
FILE_DESCRIPTION((),'2;1'); FILE_NAME('model_1','2006-02-
26T15:27:12',('ANONYMOUS USER'),('ANONYMOUS ORGANISATION'),
'EXPRESS Data Manager version 20050406',$,$); FILE_SCHEMA(('DETAIL'));
ENDSEC;
DATA;
#1= POINT(0.,0.);
#2= POINT(30.,0.);
#3= POINT(0.,16.);
#4= POINT(30.,16.);
#5= POINT(18.,9.);
#6= LINE(#1,#2);
#7= LINE(#1,#3);
#8= LINE(#2,#4);
#9= LINE(#3,#4); #10= CYCLE(#5,5.); ENDSEC; END-ISO-10303-21;
18
elib.pstu.ru
Формат обменного файла STEP – мягкий – в нем существуют только ограничения на максимальную длину физической записи (строки). В настоящее время многие совместимые со STEP приложения генерируют и читают обменные файлы с произвольной длиной записи, хотя формально заложенное в стандарте ограничение длины физической записи остается в силе. Между разделителями допускается любое число пробелов, в любом месте могут быть вставлены комментарии.
Используемые в обменном файле символы: space = ‘ ‘. – WSN-20.
special = ‘!’ | ‘"’ | ‘*’ | ‘$’ | ‘%’ | ‘&’ | ‘.’ | ‘#’ | ‘+’ | ‘,’ | ‘-‘ | ‘(‘ | ‘)’ | ‘?’ | ‘/’ | ‘:’ | ‘;’ | ‘<’ | ‘=’ | ‘>’ | ‘@’ | ‘[‘ | ‘]’ | ‘{‘ | ‘|’ | ‘}’ | ‘^’ | ‘`’ . –
WSN-21.
reverse_solidus = ‘\’. – WSN-22. apostrophe = ‘’’’. – WSN-23.
character = space | digit | lower | upper | ‘_’ | special | reverse_solidus | apostrophe. – WSN-24.
Обменный файл обладает свойством самодостаточности и при своей передаче не сопровождается никакой дополнительной информацией, поэтому он должен содержать в себе все необходимые для своей интерпретации данные. В обменном файле отсутствуют ссылки на какие-либо данные, не содержащиеся в самом обменном файле (за исключением имени express-схемы).
19
elib.pstu.ru
2. РАБОТА С ПРОГРАММНЫМИ МОДУЛЯМИ
2.1. Начало работы
Все модули имеют сходный интерфейс. Для начала работы необходимо, запустив модуль, выбрать пункт STEP > Open Session (рис. 4).
Рис. 4. Начало работы с программными модулями
При этом инициализируются внутренние структуры библиотеки SDAI и открывается репозиторий (файл sdai00.rp). Для работы необходимо, чтобы все файлы базы данных STEP (см. комплект поставки) размещались в одной папке.
При этом модули Express Compiler.exe и Converter Pattern.exe
должны размещаться в той же папке, что и файлы базы данных start.rpd, sdai00.rp и ses00.rp.
2.2. Работа компилятора
Express compiler.exe
Компилятор предназначен для преобразования исходного текста express-схемы в словарь данных. Текст express-схемы должен содержать только буквы латинского алфавита, цифры и специаль-
20
elib.pstu.ru