ГОСТ Р ИСО/ТС 10303-26-2015
НАЦИОНАЛЬНЫЙ СТАНДАРТ РОССИЙСКОЙ ФЕДЕРАЦИИ
Системы автоматизации производства и их интеграция
ПРЕДСТАВЛЕНИЕ ДАННЫХ ОБ ИЗДЕЛИИ И ОБМЕН ЭТИМИ ДАННЫМИ
Часть 26
Методы реализации. Двоичное представление данных, определенных на языке EXPRESS
Industrial automation systems and integration. Product data representation and exchange. Part 26. Implementation methods. Binary representation of EXPRESS-driven data
ОКС 25.040.40
Дата введения 2016-10-01
Предисловие
1 ПОДГОТОВЛЕН Федеральным государственным автономным научным учреждением "Центральный научно-исследовательский и опытно-конструкторский институт робототехники и технической кибернетики" (ЦНИИ РТК) на основе собственного перевода на русский язык англоязычной версии документа, указанного в пункте 4
2 ВНЕСЕН Техническим комитетом по стандартизации ТК 459 "Информационная поддержка жизненного цикла изделий"
3 УТВЕРЖДЕН И ВВЕДЕН В ДЕЙСТВИЕ Приказом Федерального агентства по техническому регулированию и метрологии от 21 июля 2015 г. N 926-ст
4 Настоящий стандарт идентичен международному документу ИСО/ТС 10303-26:2011* "Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 26. Методы реализации. Двоичное представление данных, определенных на языке EXPRESS" (ISO/TS 10303-26:2011 "Industrial automation systems and integration - Product data representation and exchange - Part 26: Implementation methods: Binary representation of EXPRESS-driven data", IDT).
При применении настоящего стандарта рекомендуется использовать вместо ссылочных международных стандартов и документов соответствующие им национальные стандарты, сведения о которых приведены в дополнительном приложении ДА
5 ВВЕДЕН ВПЕРВЫЕ
6 ПЕРЕИЗДАНИЕ. Апрель 2020 г.
Правила применения настоящего стандарта установлены в статье 26 Федерального закона от 29 июня 2015 г. N 162-ФЗ "О стандартизации в Российской Федерации". Информация об изменениях к настоящему стандарту публикуется в ежегодном (по состоянию на 1 января текущего года) информационном указателе "Национальные стандарты", а официальный текст изменений и поправок - в ежемесячном информационном указателе "Национальные стандарты". В случае пересмотра (замены) или отмены настоящего стандарта соответствующее уведомление будет опубликовано в ближайшем выпуске ежемесячного информационного указателя "Национальные стандарты". Соответствующая информация, уведомление и тексты размещаются также в информационной системе общего пользования - на официальном сайте Федерального агентства по техническому регулированию и метрологии в сети Интернет (www.gost.ru)
Введение
Стандарты комплекса ИСО 10303 распространяются на компьютерное представление информации об изделиях и обмен данными об изделиях. Их целью является обеспечение нейтрального механизма, способного описывать изделия на всем протяжении их жизненного цикла. Этот механизм применим не только для обмена файлами в нейтральном формате, но является также основой для реализации и совместного доступа к базам данных об изделиях и организации архивирования.
Стандарты комплекса ИСО 10303 представляют собой набор отдельно издаваемых стандартов (частей). Стандарты данного комплекса относятся к одной из следующих тематических групп: "Методы описания", "Методы реализации", "Методология и основы аттестационного тестирования", "Интегрированные обобщенные ресурсы", "Интегрированные прикладные ресурсы", "Прикладные протоколы", "Комплекты абстрактных тестов", "Прикладные интерпретированные конструкции" и "Прикладные модули". Полный перечень стандартов комплекса ИСО 10303 представлен на сайте http://www.tc184-sc4.org/titles/STEP_Titles.htm. Настоящий стандарт входит в тематическую группу "Методы реализации". Он подготовлен подкомитетом SC4 "Производственные данные" Технического комитета 184 ИСО "Системы автоматизации производства и их интеграция".
Настоящий стандарт определяет связь языка EXPRESS с Иерархическим форматом данных, версия 5 (HDF5). HDF5 первоначально был разработан Национальным центром суперкомпьютерных приложений Иллинойского университета, а в настоящее время поддерживается некоммерческой организацией Группа HDF. Программное обеспечение HDF включает библиотеки ввода-вывода и средства анализа, визуализации и конвертирования научных данных.
Настоящий стандарт определяет отображение экземпляров данных, определенных на языке EXPRESS, на формат файла HDF5. Однако настоящий стандарт не отображает все конструкции языка моделирования EXPRESS на HDF5. HDF5 не является языком моделирования, но файл HDF5 содержит в себе типы данных, определяющие включенные в данный файл экземпляры данных.
Пользователи настоящего стандарта должны обладать детальными знаниями понятий языка EXPRESS, определенного в ИСО 10303-11, и HDF5. В приведенных примерах программ использован прикладной программный интерфейс HDF5.
1 Область применения
Настоящий стандарт определяет отображение конструкций данных, определенных на языке EXPRESS, на формат двоичного файла, соответствующего Иерархическому формату данных, версия 5 (HDF5).
Требования настоящего стандарта не распространяются на:
- отображение ограничений и правил, определенных на языке EXPRESS, на файл HDF5;
- отображение конкретных прикладных программных интерфейсов EXPRESS-схем на данные, определенные на языке EXPRESS.
2 Нормативные ссылки
В настоящем стандарте использованы нормативные ссылки на следующие документы. Для датированных ссылок применяют только указанное издание ссылочного документа, для недатированных - последнее издание (включая все изменения).
ISO 639-2, Codes for the representation of names of languages - Part 2: Alpha-3 code (Коды для представления названий языков. Часть 2. Код Alpha-3)
________________
ISO 10303-1, Industrial automation systems and integration - Product data representation and exchange - Part 1: Overview and fundamental principles (Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 1. Общие представления и основополагающие принципы)
ISO 10303-11, Industrial automation systems and integration - Product data representation and exchange - Part 11: Description methods: The EXPRESS language reference manual (Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 11. Методы описания. Справочное руководство по языку EXPRESS)
HDF5 File Format Specification. HDF Group. Available from Workd Wide Web: http://www.hdfgroup.org/ HDF5/doc/H5.format.html (Спецификация формата файлов HDF5. Группа HDF. Доступна в Интернете по адресу: http://www.hdfgroup.org/HDF5/doc/H5.format.html)
3 Термины и определения
В настоящем стандарте применены следующие термины с соответствующими определениями:
3.1 прикладной протокол (application protocol): Часть настоящего комплекса стандартов, которая определяет прикладную интерпретированную модель, удовлетворяющую области применения и информационным требованиям к конкретному приложению.
[ИСО 10303-1:1994, статья 3.2.7]
3.2 данные (data): Представление информации в формальном виде, пригодном для передачи, интерпретации или обработки людьми или компьютерами.
[ИСО 10303-1:1994, статья 3.2.14]
3.3 язык определения данных (data specification language): Набор правил для определения данных и их взаимосвязей, пригодный для компьютерной передачи, интерпретации или обработки.
[ИСО 10303-1:1994, статья 3.2.16]
3.4 данные, определенные на языке EXPRESS (EXPRESS-driven data): Набор экземпляров объектов, определенных в EXPRESS-схеме.
3.5 совокупность (population): Множество экземпляров объектного типа данных.
[ИСО 10303-11:2004, статья 3.3.16]
4 Сокращения
В настоящем стандарте применены следующие сокращения:
ПП - прикладной протокол (application protocol; АР);
ТБ - тепловой баланс (thermal balance; ТВ);
ЯОД - язык определения данных (data definition language; DDL);
API - интерфейс прикладного программирования (application programming interface);
HDF5 - Иерархический формат данных, версия 5 (Hierarchical Data Format Version 5);
I/O - ввод и вывод (input and output).
5 Соответствие
Отображение данных, определенных на языке EXPRESS, на формат файла HDF5 не зависит от интерфейса прикладного программирования, используемого при работе с файлом HDF5.
Примечание - Редакции 1.6.5 и 1.8.0 интерфейса прикладного программирования HDF5 поддерживаются данным отображением. Редакция 1.8.0 содержит новые конструкции, которые не используются в данном отображении.
Файл HDF5 соответствует настоящему стандарту в том случае, если:
- он соответствует определению формата файла HDF5;
- он основан на допустимой EXPRESS-схеме, которая может иметь интерфейсы с другими допустимыми схемами;
- данные, определенные на языке EXPRESS, представлены в файле HDF5 так, как это определено в настоящем стандарте.
Соответствие препроцессоров и постпроцессоров обработки данных находится вне области применения настоящего стандарта.
6 Отображение данных, определенных на языке EXPRESS, на формат файла HDF5
6.1 Общие положения
В данном разделе определены отображения данных, определенных на языке EXPRESS, на Иерархический формат данных, версия 5 (HDF5). В данном разделе использовано соглашение, что заданы отображаемые понятия языка EXPRESS и определены соответствующие понятия HDF5. Отображение не определено относительно какого-либо конкретного интерфейса прикладного программирования (API). Реализации HDF5 доступны на многих языках программирования.
Примечание - В настоящем стандарте в примерах использован API HDF5, разработанный в Группе HDF5.
На рисунке 1 показаны условные обозначения, использованные в настоящем стандарте на диаграммах, для того чтобы пояснять понятия HDF5, встречающиеся в соответствующем файле HDF5.
|
Рисунок 1 - Условные обозначения на диаграммах HDF5
Пример - На рисунке 2 показан пример обозначений для представления понятий HDF5, использованных в настоящем стандарте.
|
Рисунок 2 - Условные обозначения на диаграммах HDF5
6.2 Неотображаемые понятия языка EXPRESS
Следующие понятия языка EXPRESS в настоящем стандарте не отображаются на HDF5, и поэтому их представление не должно присутствовать в файле HDF5:
- объявления RULE;
- правила определения областей в объявлениях ENTITY и TYPE;
- правила UNIQUE в объявлениях ENTITY;
- объявления SUPERTYPE;
- объявления FUNCTION;
- объявления PROCEDURE;
- объявления CONSTANT, за исключением объявлений CONSTANT для экземпляров объектов;
- производные атрибуты и явно определенные атрибуты, переобъявленные как производные атрибуты;
- инверсные атрибуты;
- спецификации интерфейсов на языке EXPRESS;
- комментарии.
Примечание - Алгоритмические ограничения и значения атрибутов языка EXPRESS, являющиеся результатом оценочных вычислений, не включены в файл HDF5, отображающий экземпляры объектов языка EXPRESS. Поэтому проверка на основе EXPRESS-схемы достоверности файла HDF5 на соответствие настоящему стандарту потребует доступа к EXPRESS-схеме.
6.3 Общие требования к отображению и использованный подход
6.3.1 Использованный подход
Язык EXPRESS является языком определения данных. Схема в языке EXPRESS задает область определения, а также раздел, к которому относятся объявления. Поэтому в настоящем стандарте для определения контекста данной реализации должна быть выбрана единственная схема. Однако это не означает, что контекстные схемы, содержащие спецификации интерфейсов не поддерживаются данным отображением. Спецификации интерфейсов на языке EXPRESS поддерживаются до тех пор, пока они не отображены непосредственно на файл HDF5. Что касается определения данных, то набор схем, видимых для данной контекстной схемы, определяет полный набор допустимых типов данных. В настоящем стандарте принято, что EXPRESS-схемы определены в целях ограничения применимости совокупностей данных. Множество совокупностей данных, основанных на одной и той же EXPRESS-схеме, может существовать и быть включено в один файл HDF5. Так как HDF5 поддерживает разные способы представления значений данных, определенных на языке EXPRESS, на основе одной и той же схемы, то для любой EXPRESS-схемы не требуется существование единственного представления. Один и тот же файл HDF5 может содержать совокупности данных EXPRESS-схемы, использующие разные ее представления. Информация о конструкциях HDF5, использованных для кодирования данных, определенных на языке EXPRESS, хранится в файле HDF5 вместе с самими данными, поэтому постпроцессоры могут запросить данный файл для нахождения способов декодирования. Подход, использованный в настоящем стандарте для представления данных, определенных на языке EXPRESS, с помощью HDF5, основан на следующих предположениях:
- для обеспечения соответствия требованиям к производительности и размеру файла необходимо максимально использовать структуры HDF5, реализующие его оптимизационные возможности;
- определены только типы данных, используемые для записи данных на диск, но ничего не задано относительно представления этих данных в памяти;
- в тех случаях, когда это возможно, предпочтительно использовать предопределенные типы данных HDF5;
- должна поддерживаться межплатформенная функциональная совместимость.
Общий подход к представлению данных, определенных на языке EXPRESS, заключается в трактовке экземпляров объектных типов данных языка EXPRESS и экземпляров агрегированного типа данных языка EXPRESS одинаковым способом. Множество экземпляров объектного типа данных языка EXPRESS вместе с любыми неагрегированными значениями атрибутов трактуется как набор данных, основанный на составном типе данных HDF5. Агрегированные значения атрибутов языка EXPRESS представлены с помощью отдельного набора данных HDF5 для каждого агрегированного экземпляра. Кроме того, для экземпляров с небольшими агрегированными значениями определена возможность их непосредственного встраивания в набор данных HDF5, содержащий экземпляры объектного типа данных языка EXPRESS.
6.3.2 Имена связей HDF5
Группы, наборы данных и именованные типы данных, использованные в данном отображении, идентифицированы, или поименованы, с помощью связи HDF5. Имя, начинающееся с символа "косая черта" ("/"), является абсолютным именем, доступ к которому начинается с корневой группы файла; все остальные имена являются относительными, а доступ к поименованному объекту начинается с указанной группы. Особым случаем является имя "/", которое относится к корневой группе.
Для конструкций HDF5, являющихся непосредственным отображением конструкций языка EXPRESS, идентификаторы языка EXPRESS используются как часть имен связей HDF5. Все идентификаторы языка EXPRESS должны быть представлены символами верхнего регистра (прописными буквами). Символ "косая черта" ("/") используется для того, чтобы отделить имена HDF5, являющиеся частью данной связи.
Примечание - Символ "точка" ("."), используемый как разделитель в идентификаторах языка EXPRESS, является зарезервированным символом в HDF5 и поэтому не используется для этой цели в файле HDF5.
Важно отметить, что в соответствии с определением HDF5 так же, как и в файловой системе UNIX, объекты HDF5 не имеют имен, так как имена ассоциированы со связями. Объект имеет идентификатор объекта, являющийся уникальным в данном файле, но один объект может иметь много имен, потому что может существовать много связей для данного объекта. Объект может быть снабжен альтернативным именем или перемещен в другую группу с помощью добавления или удаления связей. Но в данном случае сам объект никуда не перемещается, а его членство в группе не имеет никакого отношения к физическому размещению объекта в памяти.
Настоящий стандарт не накладывает никаких ограничений на дополнительные связи (т.е. имена), определяемые в файле для любого объекта HDF5, определенного на языке EXPRESS. Если данные совместно используются разными представлениями, определенными на языке EXPRESS, то настоящий стандарт не препятствует тому, чтобы один объект HDF5 имел связи, отображенные из нескольких EXPRESS-схем.
Пример - Следующий фрагмент на языке EXPRESS, отображенный на группу HDF5 с именем "pets_encoding", может в результате стать частью имени связи HDF5, относящейся к набору данных HDF5, - "pets_encoding/Dogs":
SCHEMA pets;
ENTITY Dogs;
END_ENTITY;
END_SCHEMA;
6.3.3 Представление совокупностей данных, определенных на языке EXPRESS, в HDF5
Каждая совокупность данных из EXPRESS-схемы представлена группой HDF5 (см. пример в С.2). Разные совокупности данных из одной EXPRESS-схемы могут появиться в одном файле HDF5, но при этом они будут принадлежать к разным группам HDF5.
Пример - На рисунке 3 показаны три группы HDF5, содержащие данные в соответствии с настоящим стандартом.
|
Рисунок 3 - Совокупности данных в группах HDF5
Данные в файле HDF5 базируются на связанных с ними типах данных HDF5. Совокупности данных, определенных на языке EXPRESS, в файле HDF5 базируются на типах данных HDF5, которые получены, по крайней мере частично, из лежащей в их основе EXPRESS-схемы. Эти типы данных присутствуют в группе HDF5, как это определено в 6.5.
Группа HDF5, представляющая совокупность данных из EXPRESS-схемы, должна иметь два связанных с ней атрибута HDF5 со следующими именами и описаниями:
- iso_10303-26_data - имеет значение <schema_id> и тип данных HDF5 STRING;
- iso_10303_26_data_set_names - содержит имена наборов данных родительских групп. В действительности данный атрибут представляет массив, содержащий имена объектов, соответствующие именам наборов данных. Реальные имена наборов данных получаются с использованием соглашений об именах, представленных в 6.10.
Атрибут HDF5 с именем "iso_10303-26_data" является индикатором для программного приложения, указывающим, что группа HDF5 содержит данные, закодированные в соответствии с настоящим стандартом.
Настоящий стандарт определяет также несколько необязательных атрибутов HDF5, предназначенных для дополнительного описания групп HDF5, содержащих совокупности данных, определенных на языке EXPRESS. Данные атрибуты относятся к типу данных HDF5 STRING и имеют следующие имена и описания:
- iso_10303-26_description - имеет значение <user_defined_description>;
- iso_10303-26_timestamp - имеет значение, соответствующее расширенному формату полной календарной даты, определенному в ИСО 8601, объединенному с расширенным форматом времени дня, также определенному в ИСО 8601. Дата и время должны быть разделены прописной буквой "Т", как это определено в ИСО 8601, в котором также определены альтернативные форматы, допускающие факультативное включение указателя часового пояса;
- iso_10303-26_author - имеет значение <user>;
- iso_10303-26_organization - имеет значение <user_organization>;
- iso_10303-26_originating_system - имеет значение <software_system_name>;
- iso_10303-26_preprocessor_version - имеет значение <software_application_and_ version>;
- iso_10303-26_context - имеет значение <контекст, которому соответствуют данные>;
- iso_10303-26_language - имеет значение <язык, используемый по умолчанию для строковых значений>, где название языка должно быть закодировано с использованием библиографического кода Alpha-3, определенного в ИСО 639-2.
Настоящий стандарт не накладывает никаких ограничений на необязательные атрибуты HDF5, связанные с объектами HDF5 в файлах HDF5.
6.4 Отображение простых типов данных языка EXPRESS
Формат данных HDF5 поддерживает кодирование некоторых простых типов данных разными способами. Настоящий стандарт не требует определения конкретного способа кодирования для типов данных INTEGER, REAL или NUMBER языка EXPRESS.
Способ кодирования может быть запрошен из файла HDF5 постпроцессором. В таблице 1 определено представление значений простых и перечисляемых типов данных языка EXPRESS в HDF5 (см. раздел "Наборы данных HDF5" в [3]).
Таблица 1 - Отображение типов данных языка EXPRESS на HDF5
|
|
|
Тип данных языка EXPRESS | Представление в HDF5 | Пример - Исходные типы данных API HDF5 (справочно) |
INTEGER | HDF5 Standard 8, 16, 32 или 64 bits, Big- или Little-Endian | Н5Т_NATIVE_INT, H5T_NATIVE_LONG, H5T_NATIVE_LLONG |
REAL | HDF5 IEEE Floating Point 32 или 64 bits, Big- или Little-Endian | H5T_NATIVE_FLOAT, H5T_NATIVE_DOUBLE, H5T_NATIVE_LDOUBLE |
BOOLEAN | HDF5 ENUM из пар <string>:<integer> BOOLEAN-TRUE:1, BOOLEAN-FALSE:0 | - |
LOGICAL | HDF5 ENUM из пар <string>:<integer> LOGICAL-TRUE:1, LOGICAL-FALSE:0 и LOGICAL-UNKNOWN: -1 |
|
STRING | H5T_STRING переменной длины |
|
BINARY | HDF5 OPAQUE, если задано FIXED или разрядность, иначе - HDF5 VARYING OPAQUE |
|
NUMBER | Аналогично представлению типа данных REAL языка EXPRESS | H5T_NATIVE_FLOAT, H5T_NATIVE_DOUBLE, H5T_NATIVE_LDOUBLE |
ENUMERATION | HDF5 ENUM из пар <string>:<integer>, где string это <schema_group_name> + "/" + <enum name> + "/" + <enum_literal> | - |
Такое же кодирование для указанного типа данных языка EXPRESS может быть использовано во всей совокупности данных, содержащихся в файле HDF5. В этом случае в совокупности данных может быть использован необязательный атрибут для задания способа кодирования, который следует использовать для указанного типа данных языка EXPRESS. В зависимости от типа данных этот атрибут должен иметь следующее имя:
iso_10303_26_+ <data_type> + encoding
Значением данного атрибута должен быть тип данных HDF5, используемый для кодирования типа данных языка EXPRESS.
Пример - Атрибут iso_10303_26_real_encoding, имеющий значение "H5T_IEEE_F64LE", указывает, что все значения типа данных REAL языка EXPRESS из данной совокупности должны кодироваться как Eight-byte, little-endian, IEEE floating point (восьмибайтовый код с плавающей запятой по IEEE, начиная с младшего байта).
Настоящий стандарт не требует использования какого-либо конкретного способа кодирования. Для простых случаев способ кодирования, используемый по умолчанию, определяется следующим образом:
- для представления типа данных INTEGER языка EXPRESS используется способ кодирования HDF5 32 bits, Signed, Little-Endian (например, H5T_NATIVE_LONG в API HDF5);
- для представления типов данных REAL и NUMBER языка EXPRESS используется способ кодирования HDF5 IEEE Floating Point 64 bits, Little-Endian (например, H5T_NATIVE_DOUBLE в API HDF5);
- для представления типа данных ENUMERATION языка EXPRESS используются целые числа 1, 2, 3 и т.д.
6.5 Отображение объявлений и спецификаций интерфейсов из EXPRESS-схемы
Конкретная EXPRESS-схема является контекстом для любого отображения и называется далее контекстной схемой. Только объявления в контекстной схеме и объявления, видимые для данной контекстной схемы через спецификации интерфейсов на языке EXPRESS, должны быть основой для данных, определенных на языке EXPRESS.
Спецификации интерфейсов, объявленные в контекстной схеме, не отображаются на файл HDF5. Единственным исключением является случай, когда существует конфликт имен и имя внешней схемы требуется для разрешения данного конфликта. Для всех данных, записываемых в файл HDF5, требуется, чтобы соответствующий им тип (или типы) данных также был записан в файл HDF5. Поэтому для того, чтобы точно определить средства HDF5, используемые при кодировании совокупности данных на языке EXPRESS, все параметры EXPRESS-схемы также записываются в файл HDF5. Сама EXPRESS-схема и настоящий стандарт не требуют, чтобы закодированное представление всей EXPRESS-схемы было включено в файл HDF5.
Примечание - Текстовое или любое другое представление самой EXPRESS-схемы может факультативно быть включено в файл HDF5 также, как и многие другие типы данных (как атрибуты HDF5).
Параметры EXPRESS-схемы, закодированные в файле HDF5, должны быть определены в группе HDF5. Группа HDF5, представляющая EXPRESS-схему, должна быть расположена непосредственно под корневой группой ("/"). Имя группы, представляющей EXPRESS-схему, должно быть представлено следующим образом: <schema_name> + _encoding. Группа HDF5, содержащая схемы, может совместно использоваться совокупностями данных EXPRESS-схемы. Группа HDF5, содержащая представление необходимых параметров EXPRESS-схемы, должна иметь связанный с ней атрибут HDF5 с именем "iso_10303_26_schema" и значением <schema_id>. Атрибут HDF5 с именем "iso_10303_26_express_text" может дополнительно быть связан с группой HDF5 для обмена самим текстом на языке EXPRESS.
Пример - На рисунке 4 показана группа HDF5, содержащая именованные типы данных HDF5, ко торые относятся к EXPRESS-схеме, содержащей данную совокупность данных (т.е. группа HDF5 "Geometry_encoding" содержит определения типов данных для данных, закодированных на основании схемы "geometry").
|
Рисунок 4 - Группа HDF5 с информацией о EXPRESS-схеме
Дополнительные примеры приведены в С.1 приложения С
6.6 Отображение объектных типов данных языка EXPRESS
В конкретном файле HDF5 должны быть отображены только те объектные типы данных языка EXPRESS, которые представляют данные, определенные на языке EXPRESS, содержащиеся в данном файле HDF5. Для каждого такого объектного типа данных языка EXPRESS в группе HDF5, представляющей данную EXPRESS-схему, должен присутствовать именованный тип данных HDF5, относящийся к составному типу данных HDF5. Относительное имя именованного типа данных HDF5 должно быть представлено следующим образом: <schema_group_name> + "/" + <entity_id>, либо следующим образом (см. 6.7):
<schema_group_name> + "/" + <entity_id> + ("+" + <entity_id>)
В составном типе данных HDF5, представляющем объектный тип данных языка EXPRESS, должно присутствовать в качестве второго члена поле HDF5, основанное на типе данных INTEGER HDF5. Данное поле должно иметь имя "Entity-Instance-Identifier". Данное поле должно содержать уникальное целое число, идентифицирующее экземпляр объекта языка EXPRESS в рамках набора данных, содержащего полную совокупность экземпляров объектов языка EXPRESS, относящихся к конкретному объектному типу данных. Данное целое число не должно изменяться на протяжении всего существования данного экземпляра объекта языка EXPRESS.
Информация о представляемом объектном типе данных языка EXPRESS должна содержать информацию обо всех явно заданных атрибутах, включая все унаследованные явно заданные атрибуты. Для каждого явно заданного атрибута объектного типа данных языка EXPRESS, включая все унаследованные явно заданные атрибуты, должно быть создано поле (или объект) HDF5, относящееся к составному типу данных HDF5, которое представляет этот объектный тип данных.
Именем любого члена составного типа данных HDF5, представляющего атрибут языка EXPRESS, должно быть имя явно заданного атрибута языка EXPRESS, представленное символами верхнего регистра.
Типом данных любого члена составного типа данных HDF5 является тип данных HDF5, соответствующий области определения атрибута языка EXPRESS, как это установлено в 6.8.2 для простых типов данных, в 6.10.4 для идентификаторов экземпляров объектов, в 6.8.3 для типов данных ARRAY и в 6.8.4 для агрегированных типов данных.
Пример - Следующие объектные типы данных языка EXPRESS, относящиеся к представлению схемы "s_encoding":
SCHEMA s;
ENTITY x;
name : STRING;
END_ENTITY;
ENTITY у SUBTYPE OF (x) ;
age : INTEGER;
END_ENTITY;
END_SCHEMA;
приведут к следующим определениям HDF5:
- именованный тип данных HDF5 "s_encoding/x" определен одним полем HDF5 с именем "s_encoding/x/nате ";
- именованный тип данных HDF5 "s_encoding/у" определен двумя полями HDF5 с именами "s_encoding/y/nате" и "s_encoding/y/age".
Настоящий стандарт не определяет отображение для производных или инверсных атрибутов, следовательно, они не должны присутствовать в соответствующем файле HDF5.
Примечание - Хотя в настоящем стандарте не определено представление производных или инверсных атрибутов, это не препятствует им присутствовать в файле HDF5. Кроме того, можно сохранить и даже транслировать на язык программирования в файле HDF5 выражение, определяющее значение атрибута, и вычислить данное значение, когда это потребуется.
В языке EXPRESS унаследованный атрибут может быть переобъявлен несколькими способами. Обработка этих способов при отображении осуществляется следующим образом:
- заданные в явном виде атрибуты языка EXPRESS, которые переобъявляют унаследованные атрибуты, отображаются на основе области определения атрибута в переобъявляющем подтипе данных;
- производные атрибуты языка EXPRESS, являющиеся переобъявлениями унаследованных заданных в явном виде атрибутов, не присутствуют в составном типе данных HDF5, представляющем подтип данных, в котором они переобъявлены;
- заданные в явном виде атрибуты языка EXPRESS, которые переименовывают переобъявленные унаследованные атрибуты, отображаются с использованием нового имени, определенного в переобъявляющем подтипе данных.
Так как в HDF5 нет понятия отсутствующего значения данных, то для этого в составной тип данных HDF5 вводится дополнительный член. Данный вспомогательный член является битовым образом, полученным из соответствующего объектного типа данных языка EXPRESS, который определяет состояние "1" или "0" (присутствует или отсутствует) для всех остальных членов составного типа данных, за исключением поля номер 2, которое является обязательным полем. Данное поле должно иметь тип данных H5T_INTEGER. Вспомогательный член должен быть первым в своем составном типе данных и иметь имя "set_unset_bitmap". Самый младший бит представляет первый атрибут языка EXPRESS (второй член в составном типе данных, начиная с нулевого). Следующий бит представляет второй атрибут языка EXPRESS и т.д.
Пример приведен в приложении С.3.
6.7 Отображение объявлений подтипов данных языка EXPRESS
В языке EXPRESS взаимосвязь между подтипами объектного типа данных по умолчанию заключается в том, что они не являются взаимно исключающими, чему соответствует оператор ANDOR языка EXPRESS. Экземпляры объектов языка EXPRESS, основанные на комбинации объектных типов данных, называются сложными объектными типами данных. В данном случае отображение заключается в том, что для каждой комбинации, присутствующей в данном экземпляре, определены составные типы данных HDF5. Эти составные типы данных трактуются так, как если бы они были отображением объектных типов данных, непосредственно присутствующих в EXPRESS-схеме. Если какой-либо объектный тип данных в комбинации является супертипом любого другого объектного типа данных из той же комбинации, то идентификатор данного супертипа не присутствует в имени именованного типа данных HDF5.
Примечание - Сказанное выше означает, что в имени именованного типа данных HDF5 присутствуют только имена объектных типов данных самого нижнего уровня.
Относительное имя именованного типа данных HDF5 должно выглядеть следующим образом:
<schema_group_name> + "/" + <entity_id> + ("+" + <entity_id>),
где имена входящих в комбинацию объектных типов данных (entity_id) расположены в алфавитном порядке, а символ "+" является разделителем.
Атрибуты языка EXPRESS трактуются так, как если бы сложный тип данных являлся подтипом всех объектных типов данных, входящих в комбинацию. В случае если унаследованные атрибуты языка EXPRESS в подтипе данных имеют одинаковые имена, то либо с помощью обычного наследования, либо с помощью переобъявления, переименовывающего данный атрибут, представление в HDF5 данного атрибута в данном подтипе получает следующее имя:
<schema_group_name> + "/" + <entity_id> + ("+" + <entity_id>) + "/" + <entity_id> + "." + <attribute_id> .
Пример - Следующая EXPRESS-схема:
SCHEMA test;
ENTITY a;
name : STRING;
END_ENTITY;
ENTITY b SUBTYPE OF a;
age : INTEGER;
x : REAL;
END_ENTITY;
ENTITY с SUBTYPE OF a;
height : REAL;
x: BOOLEAN;
END_ENTITY;
END_SCHEMA;
приведет к появлению следующих имен в файле HDF5:
test/a
test/a/name
test/b
test/b/name
test/b/age
test/b/x
test/c
test/c/name
test/c/height
test/c/x
test/b+c
test/b+c/name
test/b+c/age
test/b+c/height
test/b+c/b.x
test/b+c/c.x
6.8 Отображение атрибутов языка EXPRESS
6.8.1 Общие положения
Конкретные детали отображения явных атрибутов языка EXPRESS зависят от области определения атрибута и представлены в данном подразделе для всех областей определения.
6.8.2 Области определения простых типов данных
Для каждого явного атрибута языка EXPRESS, областью определения которого является простой, перечисляемый или выбираемый тип данных языка EXPRESS, либо определенный тип данных, который сводится к простому или перечисляемому типу данных, определено поле HDF5 с единственным значением, относящимся к типу данных HDF5 в соответствии с 6.4, 6.9.4, 6.9.2 и 6.9.3.2.
6.8.3 Представление значений типа данных ARRAY языка EXPRESS в HDF5
В настоящем стандарте определены два подхода к отображению атрибутов языка EXPRESS, имеющих агрегированные значения:
a) в случае больших агрегированных экземпляров для представления данных используется отдельный набор данных HDF5;
b) в случае небольших агрегированных экземпляров для представления данных может быть использован тот же самый набор данных HDF5, который содержит диапазон объектов языка EXPRESS (т.е. агрегированные экземпляры встраиваются в составной тип данных, представляющий экземпляр родительского объекта языка EXPRESS).
Создание отдельного набора данных HDF5 с целью оптимизации доступа для небольших агрегированных экземпляров не является необходимым. Встраивание агрегированного экземпляра в представление родительского экземпляра позволяет избежать переполнения, вызванного многочисленными небольшими наборами данных HDF5. Решение о том, какой способ использовать (определить, является агрегированный экземпляр большим или нет), не определено в настоящем стандарте, а оставлено на усмотрение пользователей.
Примечание - Сказанное выше означает, что программа, обрабатывающая экземпляры объектов языка EXPRESS, имеющих атрибуты с агрегированными значениями, должна проверять определение типа данных HDF5, представляющего экземпляр объекта языка EXPRESS, для того чтобы установить, определены ли агрегированные данные в составном типе данных HDF5 как объектные ссылки HDF5 на наборы данных HDF5, либо как встроенный массив HDF5 или тип данных VLEN.
Значение атрибута языка EXPRESS, которое классифицировано как большое агрегированное значение, представляется как набор данных HDF5, в котором присутствует массив HDF5 или структура данных VLEN, содержащий реальные данные. В HDF5 все элементы массива могут иметь один и тот же тип данных HDF5. Кроме того, должны быть установлены число вложений массива (в терминах HDF5 это называется "рангом" массива) и размерность для каждого вложенного массива. Ранг массива в HDF5 должен быть представлен целым числом, определяющим число вложений массива, а размерности в HDF5 соответствуют числу элементов на каждом уровне. Массивы языка EXPRESS хранятся как отдельные наборы данных, доступ к которым осуществляется с помощью ссылок на наборы данных HDF5. Ссылка на набор данных HDF5 является значением, хранящимся в памяти для данного значения атрибута языка EXPRESS, и с нее должна быть снята косвенность для того, чтобы прочитать элементы массива.
Массивы могут содержать элементы, представляющие сброс или возврат в исходное состояние. Поэтому элементы массива хранятся как небольшие составные типы данных, состоящие из двух элементов. Первый элемент относится к типу данных H5T_BITFIELD и имеет имя "set_unset_array_element". Второй элемент имеет имя "value", и он может относиться к любому из типов данных, перечисленных в таблице 1, так же как и ссылки на экземпляры (см. 6.10.4) и составные типы данных, представляющие выбираемые типы данных. Если элементом массива является возврат в исходное состояние, то первый элемент составного типа данных должен иметь значение 0, а второй элемент должен быть пустым. Если второй элемент с именем "value" не пустой, то первый элемент должен иметь значение 1.
Примечания
1 Приложение, читающее и записывающее данные, закодированные в HDF5, само должно определять отличие индекса массива HDF5 от индекса массива языка EXPRESS.
2 В языке программирования С элементы массивов упорядочены. Таким же образом индексы экземпляра массива интерпретируются в HDF5.
Пример - Следующее объявление на языке EXPRESS:
ARRAY [1:2] OF ARRAY [1:3} OF INTEGER
будет представлено в HDF5 как массив ранга 2 с размерностями 2 и 3.
В таблице 2 определено представление значений элементов N-мерного массива, имеющих одинаковый тип данных языка EXPRESS.
Таблица 2 - Отображение массива языка EXPRESS на HDF5
|
|
Тип данных значений элементов N-мерного массива языка EXPRESS | Представление в HDF5 |
INTEGER | H5T_ARRAY базового типа данных для типа данных INTEGER языка EXPRESS |
REAL | Н5Т_ARRAY базового типа данных для типа данных REAL языка EXPRESS |
BOOLEAN | То же, что и для типа данных INTEGER |
LOGICAL | То же, что и для типа данных INTEGER |
STRING | Н5Т_ARRAY базового типа данных для типа данных STRING языка EXPRESS |
BINARY | Н5Т_ARRAY базового типа данных для типа данных STRING языка EXPRESS |
NUMBER | То же, что и для типа данных REAL |
ENUMERATION | То же, что и для типа данных INTEGER |
6.8.4 Представление значений агрегированных типов данных языка EXPRESS в HDF5
Так как размерности типов данных SET, LIST и BAG определяются их содержимым, а не схемой, то размерности типов данных HDF5 не могут быть определены на основе определения типов данных языка EXPRESS. Эти размерности должны быть установлены на основе самих данных.
Пример - Следующее объявление на языке EXPRESS:
LIST [2:?] OF LIST [2:?} OF INTEGER
будет иметь в HDF5 ранг 2, но его размерности не могут быть установлены исходя из информации, имеющейся в данной схеме. Если данные помещены в два списка, в каждом из которых содержится три целых числа, то размерности в HDF5 будут представлены значениями 2 и 3.
Для получения доступа к полной версии без ограничений вы можете выбрать подходящий тариф или активировать демо-доступ.