НАЦИОНАЛЬНЫЙ СТАНДАРТ РОССИЙСКОЙ ФЕДЕРАЦИИ Системы промышленной автоматизации и интеграция ИНТЕГРАЦИЯ ДАННЫХ ЖИЗНЕННОГО ЦИКЛА ПЕРЕРАБАТЫВАЮЩИХ ПРЕДПРИЯТИЙ, ВКЛЮЧАЯ НЕФТЯНЫЕ И ГАЗОВЫЕ ПРОИЗВОДСТВЕННЫЕ ПРЕДПРИЯТИЯ Часть 7 Практические методы интеграции распределенных систем: методология шаблонов Industrial automation systems and integration. Integration of life-cycle data for process plants including oil and gas production facilities. Part 7. Implementation methods for the integration of distributed systems. Template methodology ОКС 75.020; 25.040.40 Дата введения 2016-01-01 ПредисловиеПредисловие 1 ПОДГОТОВЛЕН Обществом с ограниченной ответственностью "НИИ экономики связи и информатики "Интерэкомс" (ООО "НИИ "Интерэкомс") на основе собственного перевода на русский язык англоязычной версии документа, указанного в пункте 4 2 ВНЕСЕН Техническим комитетом по стандартизации ТК 100 "Стратегический и инновационный менеджмент" 3 УТВЕРЖДЕН И ВВЕДЕН В ДЕЙСТВИЕ Приказом Федерального агентства по техническому регулированию и метрологии от 26 ноября 2014 г. N 1857-ст 4 Настоящий стандарт идентичен международному документу ИСО/ТС 15926-7:2011* "Системы промышленной автоматизации и интеграция. Интеграция данных жизненного цикла перерабатывающих предприятий, включая нефтяные и газовые производственные предприятия. Часть 7. Практические методы интеграции распределенных систем: методология шаблонов" (ISO/TS 15926-7:2011 "Industrial automation systems and integration - Integration of life-cycle data for process plants including oil and gas production facilities - Part 7: Implementation methods for the integration of distributed systems: Template methodology", IDT) ________________ * Доступ к международным и зарубежным документам, упомянутым в тексте, можно получить, обратившись в Службу поддержки пользователей. - Примечание изготовителя базы данных.
5 ВВЕДЕН ВПЕРВЫЕ
6 ПЕРЕИЗДАНИЕ. Февраль 2020 г.
Правила применения настоящего стандарта установлены в статье 26 Федерального закона от 29 июня 2015 г. N 162-ФЗ "О стандартизации в Российской Федерации". Информация об изменениях к настоящему стандарту публикуется в ежегодном (по состоянию на 1 января текущего года) информационном указателе "Национальные стандарты", а официальный текст изменений и поправок - в ежемесячном информационном указателе "Национальные стандарты". В случае пересмотра (замены) или отмены настоящего стандарта соответствующее уведомление будет опубликовано в ближайшем выпуске ежемесячного информационного указателя "Национальные стандарты". Соответствующая информация, уведомление и тексты размещаются также в информационной системе общего пользования - на официальном сайте Федерального агентства по техническому регулированию и метрологии в сети Интернет (www.gost.ru)
ВведениеВведение Комплекс международных стандартов ИСО 15926 предназначен для представления информации о жизненном цикле перерабатывающих предприятий, включая нефтяные и газовые производственные предприятия. Это представление определяется общей концептуальной моделью данных, которая является основой для совместного использования баз данных и хранилищ информации. Такая модель предназначена для применения совместно со справочными данными, например стандартными экземплярами, которые представляют информацию, общую для ряда пользователей, технологических установок или того и другого вместе. Поддержка деятельности на протяжении жизненного цикла зависит от использования необходимых справочных данных совместно с моделью данных.
Комплекс международных стандартов ИСО 15926 состоит из частей. Каждая часть публикуется отдельно. Настоящий стандарт определяет методологию шаблонов (темплейтов), от английского слова template. Она не зависит от методологий практической реализации и компьютерных языков.
Под шаблоном в настоящем стандарте понимается специальная структура данных, установленная в комплексе международных стандартов ИСО 15926. В настоящем стандарте шаблоны рассматриваются с нескольких точек зрения.
Во-первых, шаблон - это предикат, утверждение которого формулируется в качестве аксиомы. Шаблон формулирует в себе некое утверждение о модели данных и каждый его экземпляр - истинное утверждение в рамках используемой модели данных.
Во-вторых, шаблон - это способ передачи данных. Когда создается шаблон, четко оговаривается семантика каждой его свободной переменной, а требование к структуре модели данных, в рамках которой применяется шаблон, оформляется в виде формулы логики первого порядка. Предполагается, что справочные данные при обмене не передаются - к ним имеют доступ и получатель, и отправитель, то есть они пользуются общим "словарем" (хотя понятие "справочные данные" намного шире, чем понятие "словарь"). В основном передаются экземпляры шаблонов (template instance), поскольку их семантика задана наперед, получатель и отправитель всегда знают, какой смысл вложен в переданный набор данных. Кроме того, в случае создания хранилища данных об индивидуальных объектах (индивидах) в виде триплетов [реализация фасадов (от английского слова faсade) как способа представления информации об индивидах на основе справочных данных] к нему возможен доступ при помощи SPARQL-запросов, тогда вопрос получения необходимых данных сводится к построению соответствующего запроса. Таким образом, если шаблон соответствует моделям данных передающей и принимающей сторон, то достаточно передать лишь блок данных, идентифицирующий шаблон и содержащий в себе заполненные свободные переменные. Тогда принимающая сторона, зная его семантику, соотнесет переданные значения переменных со своей моделью данных необходимым образом. В-третьих, шаблоны являются справочными данными, их спецификация хранится в библиотеке справочных данных RDL при помощи специальных структур данных.
Поскольку в соответствии с ИСО 15926 шаблон является предикатом логики первого порядка, удовлетворяющим аксиоматике модели данных настоящего стандарта, то, заполняя соответствующими значениями переменные такого предиката, мы получаем утверждения об объектах с фиксированной семантикой - экземплярах шаблона. Шаблоны позволяют как генерировать справочные данные (для создания однородной группы утверждений об элементах библиотеки справочных данных RDL достаточно применить шаблон необходимое количество раз с соответствующими значениями переменных), так и создавать связи между библиотеками справочных данных RDL и моделью данных приложения (например, PLMприложения) - так называемый маппинг (mapping).
Настоящий стандарт рассматривает методологию шаблонов, определяющую точное содержание концептуальных элементов модели ИСО 15926-2, используемых при формировании данных, интеграции или при использовании методов взаимодействия агрегатов. Настоящий стандарт не зависит от используемых языков, инфраструктуры практической реализации и методов испытаний, а служит основой для языков и инфраструктуры практической реализации и методов испытаний.
Настоящий стандарт определяет:
- методы логики первого порядка;
- синтаксис шаблонов;
- семантику шаблонов;
- метод расширения шаблона;
- протошаблон;
- начальное множество шаблонов.
Для понимания положений настоящего стандарта требуется знание концептуальных моделей данных в соответствии с ИСО 15926-2.
Целевая аудитория настоящего стандарта:
- технические директора, определяющие степень соответствия ИСО 15926 их деловым потребностям;
- сотрудники, использующие настоящий стандарт для решения практических задач.
В настоящем стандарте одно и то же английское понятие может^ 1) обозначать реальный объект (элемент) (thing); 2) задавать представление реального объекта на языке EXPRESS; 3) задавать представление реального элемента (объекта) на языке RDF/XML. Указанные значения слова различаются путем введения нижеследующих типографских обозначений:
- если слово (фраза) набрано обычным шрифтом, то оно обозначает реальный элемент;
- если слово (фраза) набрано жирным шрифтом, то это представление на языке EXPRESS в соответствии с моделью данных ИСО 15926-2.
Пример 1 - "class_of_inanimate_physical_object";
- если слово (фраза) набраны жирным "горбатым" шрифтом, то это термин языка ИСО 15926-2 (см. раздел 4.1).
Пример 2 "ClassOfApprovalByStatus";
- если слово (фраза) набраны "горбатым" курсивом, то это название шаблона.
Пример 3 - "RTriple(z, x, y)".
Ссылки на идентификаторы в примерах вымышленные.
В настоящем стандарте в ряде случаев использованы диаграммы. Они иллюстрируют паттерны моделирования (modelling patterns) в соответствии с ИСО 15926-2. Символы, используемые в диаграммах экземпляров, являются производными символов, определенных ИСО 15926-2.
1 Область применения 1 Область применения Настоящий стандарт содержит описание процедуры обмена данными и интеграции информации о жизненном цикле с помощью шаблонов, основанных на модели данных ИСО 15926-2. Настоящий стандарт устанавливает методологию интеграции данных об онтологиях с помощью математической логики первого порядка, что позволяет сделать данную топологию независимой от компьютерных языков.
Настоящий стандарт распространяется на:
- представление модели языка EXPRESS ИСО 15926-2 в формальной логике;
- критерии определений шаблонов;
- методы расширения и проверки шаблонов;
- начальное множество определений шаблонов.
Примечание - Практическое руководство для представления информации с помощью шаблонов приведено в [17].
Настоящий стандарт не распространяется на:
- практическую реализацию на компьютерно-представимых языках;
- хранение и получение данных;
- безопасность данных.
2 Термины, определения и аббревиатуры 2 Термины, определения и аббревиатуры 2.1 Термины и определения 2.1 Термины и определения В настоящем документе применены следующие термины с соответствующими определениями: 2.1.1 базовый шаблон (base template): Шаблон, содержащий только типы сущности в расширении соответствующей аксиомы шаблона.
2.1.2 класс (class): Категория или классификация элементов, выделенных по одному или нескольким критериям для последующего включения или исключения.
Примечание 1 - Класс не обязательно должен состоять из известных членов класса (сущностей, которые удовлетворяют критериям вхождения в данный класс).
Примечание 2 - Из-за пространственно-временной парадигмы, используемой для определения индивидуальных объектов (индивидов) в настоящем стандарте, не все классы являются хорошо обособленными множествами. Пояснение приводится в ИСО 15926-2.
Примечание 3 - Адаптировано из ИСО 15926-1:2004, определение 3.1.1.
2.1.3 шаблон класса (class template): Шаблон формирования утверждений (высказываний) о классах.
2.1.4 концептуальная модель данных (conceptual data model): Модель данных в трехсхемной архитектуре, определенной в ИСО/ТО 9007, в которой структура данных представляется в форме, не зависимой от формата физического хранения или внешнего представления.
2.1.5 основной класс (core class): Класс, отражающий разделения индивидов и отношений в соответствии с общеупотребительными терминами, применяемыми в обычном языке.
Примечание - Условия членства часто не имеют формального определения; понимание класса может быть задано примером.
Пример - Труба, пол, насос, лампочка - основные классы.
[ИСО 15926-1:2004, определение 3.1.4] 2.1.6 основной шаблон (core template): Шаблон библиотеки справочных данных RDL, для которого все элементы справочных данных в расширении аксиомы шаблона являются основными классами.
2.1.7 банк данных (data store): Компьютерная система, обеспечивающая хранение данных для обращения к ним в будущем.
2.1.8 тип данных (data type): Область значений.
2.1.9 хранилище данных (data warehouse): Банк данных, в котором смежные данные объединяются для обеспечения интегрированного множества данных без дублирования или избыточности с поддержкой множества различных прикладных вариантов.
2.1.10 документ (document): Элемент, представляющий информацию с помощью специальных символов.
Примечание - Слово "документ" используется в широком смысле. Кроме обычной информации, содержащейся в бумажных документах (это не тот бумажный документ, который является экземпляром физического объекта PhysicalObject), например "описание оборудования" или "заказ на покупку", документ может также содержать другие данные, например данные транзакций на входе в инженерные программы или данные, которыми обмениваются деловые партнеры.
2.1.11 сущность (entity): Класс информации, определенный общими свойствами.
[ИСО 10303-11:2004, определение 3.3.6] 2.1.12 экземпляр сущности (entity instance): Именованный блок данных, представляющий собой блок информации внутри класса, определенного некоторой сущностью.
Примечание 1 - Является членом области, установленной типом данных сущности.
Примечание 2 - Адаптировано из ИСО 10303-11:2004, определение 3.3.8.
2.1.13 логика первого порядка (first-order logic): Формализованные суждения, в которых каждое предложение или высказывание (утверждение) подразделяются на субъект (подлежащее) и предикат (сказуемое).
Примечание 1 - Предикат модифицирует или определяет свойства субъекта. В логике первого порядка предикат может относиться только к одному субъекту.
Примечание 2 - Логику первого порядка также называют исчислением предикатов первого порядка или функциональным исчислением первого порядка.
2.1.14 шаблон индивидуального объекта (individual template): Шаблон утверждений об индивидуальном объекте.
2.1.15 экземпляр (instance): Именованное значение.
[ИСО 10303-11:2004, определение 3.3.10] 2.1.16 язык ИСО 15926-2 (ISO 15926-2 language): Язык первого порядка, на котором выражена модель данных ИСО 15926-2.
Примечание - Язык ИСО 15926-2 описан в разделе 4.1.
2.1.17 информация о жизненном цикле (life-cycle information): Информация (сведения) об объекте possible_individual, собранная в некоторый момент времени в течение жизненного цикла конкретного индивидуального объекта (индивида).
Примечание - В ИСО 15926-2:2003, определение 3.1.6, индивидуальный объект - это "объект реального мира, который существует в пространстве и времени".
2.1.18 шаблон библиотеки справочных данных RDL (RDL template): Шаблон, имеющий, по крайней мере, один элемент справочных данных в расширении аксиомы данного шаблона.
2.1.19 справочные данные (reference data): Данные жизненного цикла перерабатывающих предприятий, предоставляющие информацию о классе или об отдельных его элементах, которые являются типовыми для большей части оборудования или представляют интерес для многих пользователей.
[ИСО 15926-1:2004, определение 3.1.18] 2.1.20 библиотека справочных данных (reference data library; RDL): Управляемый набор справочных данных.
[ИСО 15926-1:2004, определение 3.1.19]
Примечание - В ИСО/ТС 15926-8 понятия "RDL" и "онтология" взаимозаменяемы. Альтернативный термин - "информационная модель".
2.1.21 воплощение (reification): Стиль моделирования, в котором отношение выражается как класс объектов.
Пример - Отношение Employed-by (принят на работу) воплощается объектом Employment (прием на работу), соединенным с объектами Employee (служащий) и Organization (организация). Смысл данного отношения (с определенным количеством элементов с обеих сторон) заключается в том, что "количество служащих организации должно быть больше или равно нулю". Воплощенный объект Employment может быть субъектом в других отношениях, определяя их.
Примечание - Реляционные типы данных сущности ИСО 15926 - это все типы данных сущности, имеющей два атрибута, за исключением класса отношений class_of_relationship.
2.1.22 шаблон (template): Множество, включающее предикат логики первого порядка (для которого определение задается как аксиома), шаблонные подписи и расширение аксиомы шаблона.
2.1.23 расширение шаблона; расширение аксиомы шаблона (template expansion; template axiom expansion): Утверждение (высказывание), выраженное в типах данных сущности ИСО 15926-2, эквивалентных аксиоме шаблона.
Примечание - Расширение аксиомы шаблона относится к типовым комплексным условиям равнозначности на языке ИСО 15926-2. Данное расширение получается путем повторного использования условий равнозначности шаблона до тех пор, пока интерпретация шаблона будет выражена непосредственно в терминах простых конструктивов (конструкций) языка ИСО 15926-2.
2.1.24 расширение экземпляра шаблона (template instance expansion): Множество простых утверждений (высказываний) на языке ИСО 15926-2, полученных путем задания значений переменных в расширенной аксиоме шаблона с экземплярами сущности.
2.1.25 аксиома шаблона (template axiom): Аксиома на языке шаблона, определяющая интерпретацию шаблонных высказываний (утверждений шаблона).
2.1.26 экземпляр шаблона (template instance): Упорядоченный список экземпляров сущности, для которых шаблон является истинным.
2.1.27 язык шаблона (template language): Аксиомы логики первого порядка, расширяющие модель данных ИСО 15926-2.
2.1.28 роль шаблона (template role): Поименованный и перенумерованный аргумент шаблона с требуемым типом, представленным как тип данных сущности, тип данных или класс справочных данных.
Пример - Экземпляр косвенного (непрямого) свойства шаблона InstanceOflndirectProperty(a, b, c) означает, что a - это класс косвенных свойств ClassOflndirectProperty, b (временная часть) - это возможный индивидуальный объект Possiblelndividual, к которому относится рассматриваемая зависимость, и c - это экземпляр свойства Property. Аргумент b имеет тип ClassOflndirectProperty, который имеет экземпляр Property равный c. Шаблон имеет следующие роли:
- название роли: тип свойства;
- название роли: обладатель свойства;
- название роли: Property.
2.1.29 шаблонная подпись (template signature): Поименованный, упорядоченный и напечатанный список ролей шаблона.
Пример - Релизация косвенного (непрямого) свойства шаблона InstanceOflndirectProperty(a, b, c) означает, что a - это класс косвенного (непрямого) свойства ClassOflndirectProperty, b (временная часть) - это возможный индивидуальный объект Possiblelndividual, к которому относится рассматриваемая зависимость и c - это экземпляр свойства Property. Аргумент b имеет тип ClassOflndirectProperty, c - это экземпляр Property. Шаблонная подпись:
- название роли: тип свойства, тип роли: ClassOflndirectProperty;
- название роли: обладатель свойства, тип роли: Possiblelndividual;
- название роли: Property, тип роли: Property.
2.1.30 утверждение шаблона, шаблонное высказывание (template statement): Утверждение (высказывание), сделанное путем задания значений (инстанцирования) ролей шаблона экземплярами сущностей.
2.1.31 значение (value): Элемент (единица) данных.
[ИСО 10303-11:2004, definition 3.3.22]
2.2 Аббревиатуры 2.2 Аббревиатуры FOL - Логика первого порядка (first order logic); DL - Описательная логика (description logic);
RDL - Библиотека справочных данных (reference data library).
3 Фундаментальные понятия и допущения 3 Фундаментальные понятия и допущения 3.1 Общие положения 3.1 Общие положения Модель данных ИСО 15926-2 является базовой и высоконормализованной. С одной стороны, это обеспечивает требуемую гибкость, с другой - это усложняет рассмотрение. Настоящий стандарт определяет шаблоны, являющиеся выражениями предварительно заданных семантических блоков, допускающих удобное использование в рамках рассматриваемой модели. Подход, принятый в настоящем стандарте, основан на архитектуре, описанной в ИСО/ТС 18876-1 (см. рисунок 1).
3.2 Понятия и модели 3.2 Понятия и модели Понятия и модели, показанные на рисунке 1, рассмотрены в настоящем стандарте.
3.2.1 Модель данных ИСО 15926-2
Фундаментальные понятия представлены в ИСО 15926-2 с помощью базовой концептуальной модели данных, являющейся основой для практической реализации в базе данных (с совместным доступом) или в хранилище данных. Модель данных используется вместе со справочными данными. Поддержка конкретного жизненного цикла операции зависит от использования соответствующих справочных данных вместе с рассматриваемой моделью данных (см. 4.1).
В настоящем стандарте модель языка EXPRESS ИСО 15926-2 транслируется в логику первого порядка (FOL). Каждый тип сущности транслируется в унарный предикат, каждый атрибут транслируется в бинарный предикат (см. 4.1). 3.2.2 Справочные данные ИСО/ТС 15926-4
ИСО/ТС 15926-4 содержит справочные данные, определяющие таксономию основных классов, представляющих типы данных сущностей, определенные в ИСО 15926-2.
В настоящем стандарте справочные данные рассматриваются как постоянные термины логики первого порядка. Понятие справочных данных, задающих значения типов сущности модели данных, таким образом, сводятся к понятиям достоверности представлений (первого порядка) типов сущностей ИСО 15926-2 для постоянных справочных терминов или для атрибутов ИСО 15926-2 (упорядоченных пар терминов).
Пример - Шаблон устанавливает зависимость между экземпляром насоса PUMP, идентифицирующей строкой "PU101" и типом идентификации (номер бирки) TAG NUMBER.
Classifiedldentification (myPump; PU10100; TagNumber)
Указанные три термина - это справочные данные, шаблон определен в логике первого порядка.
Если практическая реализация верифицирует шаблон, то типы сущностей справочных данных проверяются путем лифтинга шаблона. Указанные справочные данные рассматриваются как постоянные. При этом результатом проверки может быть значение true или false.
3.2.3 Таксономия пользователя
Там, где таксономия ИСО/ТС 15926-4 определяет общие понятия на рисунке 1, организации (пользователю) часто бывает необходимым определить конкретные прикладные понятия. Указанные понятия определяются в форме специализаций общих понятий в таксономии ИСО/ТС 15926-4.
Пример - СР-834833 ('Модель насоса AK/150') - это специализированный класс в каталоге поставщика корпорации XYZ. Этот класс поставщика размещается в библиотеке RDL поставщика. При этом данный класс должен быть специализацией другого класса, размещенного в рассматриваемой таксономии вверх по дереву до попадания внутрь таксономии ИСО/ТС 15926-4.
3.2.4 Шаблоны
Шаблоны (см. разделы 4 и 5), определенные в настоящем стандарте и в специализациях пользователя, формируют "производные понятия" на рисунке 1.
4 Основы моделирования 4 Основы моделирования 4.1 Модели данных ИСО 15926-2 в логике первого порядка 4.1 Модели данных ИСО 15926-2 в логике первого порядка Настоящий раздел определяет язык ИСО 15926-2 (формулировку ИСО 15926-2, стандартизованную в соответствии с форматом языка EXPRESS) в логике первого порядка. В настоящем стандарте этот язык служит для представления модели данных ИСО 15926.
В языке EXPRESS ИСО 15926-2 названия типов сущностей и атрибутов пишутся в нижнем регистре вместе с символом нижнего подчеркивания "_", разделяющем слова в названии. В языке ИСО 15926-2, типы сущностей и названия атрибутов пишутся в верхнем регистре в "горбатом" стиле. Атрибуты имеют дополнительную приставку "has". Например, тип сущности class_of_class_of_relationship поименован как ClassOfClassOfRelationship. Атрибут shape_dimension в настоящем стандарте поименован как hasShapeDimension.
В языке ИСО 15926-2 типы сущностей представляются как унарные предикаты первого порядка. Пусть а - тип сущности EXPRESS. На языке ИСО 15926-2 он представляется как A(x), где A(c) истинно только в том случае, если c является экземпляром a.
Атрибуты представляются на языке ИСО 15926-2 как бинарные предикаты: если r - атрибут EXPRESS, то получим: hasR(x; у). Интерпретация hasR(c, d) истинна только в том случае, если значением атрибута r экземпляра сущности c является величина d.
Примечание 1 - Причина добавления приставки has к атрибутам в том, что некоторые названия практической реализации EXPRESS ИСО 15926-2 используются и для типа сущности, и для атрибута. Данная приставка необходима, так как сущности и атрибуты занимают различные области имен в языке EXPRESS, но одни и те же области имен в языке ИСО 15926-2. Использование данного соглашения допускает использование непротиворечивых отображений.
В моделях языка EXPRESS "родные" типы данных обычно пишутся большими буквами, например, INTEGER. На языке ИСО 15926-2 указанные типы данных также пишутся большими буквами, например, INTEGER. Все "родные" тип данных EXPRESS, кроме LIST, должны представляться унарными предикатами. Если A - это тип данных EXPRESS, то следует писать:
A(x). Здесь интерпретация A(c) истинна только в том случае, если c является типом данных A.
Использование атрибута LIST в ИСО 15926-2 ограничено определением типов сущностей многомерного объекта multidimensional_object и класса многомерных объектов class_of_multidimensional_object. В настоящем стандарте указанные типы рассматриваются как части определения языка шаблона. Таким образом, атрибут LIST не является предикатом языка ИСО 15926-2.
Создание подтипов среди типов сущностей языка EXPRESS представляется на языке ИСО 15926-2 с помощью условных выражений. Если a - это подтип b, то язык ИСО 15926-2 утверждает, что все a - это b:
A(x)B(x). Типы сущностей ABSTRACT ИСО 15926-2 представляются на языке ИСО 15926-2 утверждением, что каждый экземпляр абстрактного типа сущности также задает значение, по крайней мере, одному ближайшему подтипу абстрактного типа сущности. Если тип сущности a - это тип ABSTRACT, а b, c и d - ближайшие подтипы a, то a - это абстрактный объект. Он представляется в логике первого порядка (FOL) следующим образом:
A(x)(B(x)C(x)D(x))
Стандарт ИСО 10303-11 описывает утверждения типа ONEOF следующим образом.
Ограничение ONEOF утверждает, что совокупности операндов в списке ONEOF взаимно исключают друг друга; экземпляры совокупности одних операндов в списке ONEOF не могут появиться в совокупности других операндов списка ONEOF Ограничение ONEOF может быть объединено с другими ограничениями супертипов для записи сложных ограничений. Если ограничение ONEOF является операндом в другом ограничении, то оно представляет множество экземпляров сущности - объединение совокупностей операндов списка ONEOF.
[ИСО 10303-11:2004, 9.2.5.2]
Утверждения ONEOF представляются как аксиомы непересекаемости на языке ИСО 15926-2.
Утверждения EXPRESS типа ONEOF (a, b, c) представляются следующей формулой:
(A(x)B(x))
Атрибут EXPRESS представляется бинарным предикатом в логике первого порядка FOL. Множество допустимых значений, стоящих в первой позиции бинарного предиката, называются областью, а множество допустимых значений во второй позиции - диапазоном.
Примечание 2 - Указанные атрибуты EXPRESS часто называют ролями.
Множество типов сущности ИСО 15926-2, к которым относится атрибут, представляется на языке ИСО 15926-2 ограничением, наложенным на область бинарного предиката, представляющего рассматриваемый атрибут. Если атрибут r определен для типов сущностей a и b, то:
hasR(x, y)(A(x)B(x)). Множество допустимых значений атрибута представляется на языке ИСО 15926-2 путем задания ограничения на диапазон бинарного предиката, представляющего рассматриваемый атрибут. В языке EXPRESS значения атрибутов всегда ограничиваются по отношению к данному типу сущности. Указанные ограничения представляются локальными ограничениями диапазонов на языке ИСО 15926-2. Это означает, что ограничение диапазона всегда включает ограничение области бинарного предиката.
Предположим, что r - это атрибут, значения которого ограничены типом сущности f для типа сущности a и типом сущности g для типа сущности b. Тогда на языке ИСО 15926-2 это записывается следующим образом:
A(x)hasR(x, y)F(y)
Каждый атрибут практической реализации EXPRESS ИСО 15926-2 имеет ограничение кардинального числа: [0,1] или [1,1]. Ограничения кардинального числа для атрибутов задаются на каждый тип сущности как для ограничений диапазона. Ограничения кардинального числа на бинарные предикаты представляются с помощью двух аксиом. Предположим, что атрибут r имеет ограничение кардинального числа [1,1] для типа сущности a. На языке ИСО 15926-2 это записывается как пара аксиом:
A(x)y(hasR(x, y)), (1)
Формула (1) представляет собой ограничение кардинального числа [1,*). Вторая аксиома представляет собой ограничение кардинального числа [0,1]. Вместе они выражают ограничение кардинального числа [1,1]. Ограничение кардинального числа [0,1] представляется только формулой (2).
Если атрибут ограничен правилом UNIQUE языка EXPRESS, то на языке ИСО 15926-2 это представляется путем задания требования, что предикат - это обратный функционал. Если атрибут r удовлетворяет требованию UNIQUE для типа сущности A, то:
A(x)A(y)hasR(x, z)hasR(y, z)x=y. Множество аксиом языка ИСО 15926-2 перечислено в приложении В.
Примечание 3 - С помощью блока проверки логики первого порядка FOL доказано, что рассматриваемое множество аксиом логически непротиворечиво.
4.2 Определение логического шаблона 4.2 Определение логического шаблона Настоящий раздел определяет логические шаблоны. Данные шаблоны, в соответствии с разделом 5, дополнительно имеют подписи. В настоящем стандарте этот вопрос не рассматривается.
Для формулы первого порядка, использующей названия предикатов аксиоматики языка ИСО 15926-2 для базового языка, определением логического шаблона для является формула логики первого порядка: , где N - символ предиката, называемого именем шаблона, x, y, ... набор переменных, называемых формальными аргументами, - формула типа "" над символами в , содержащая только формальные аргументы x, y, ... как свободные переменные (тело шаблона).
Множество TS (), состоящее из множеств логических шаблонов над , индуктивно определяется как наименьшее множество. В этом случае:
- TS () - множество логических шаблонов над ;
- если STS () - множество логических шаблонов над и d - определение логического шаблона над names(S), то S{d}TS() - также множество логических шаблонов над , где - это множество названий шаблонов, определенных в S.
Примечание - Интуитивное представление о рассматриваемом множестве шаблонов: чтобы гарантировать, что расширение шаблона заканчивается, нужно запретить множества циклических определений шаблонов (например, если шаблон расширяется до формулы, содержащей шаблон B, который, в свою очередь, расширяется до формулы, содержащей шаблон A). Наше определение гарантирует, что определение шаблона N(...) может только быть добавлено к множеству шаблонов, если все шаблоны, поименованные в , были предварительно определены без ссылок на N.
Пример - Множество определений
{А(х)y.(B(y)R(x,y)),
это действительное множество шаблонов, а множество определений {A(x)y.(B(y)R(x,y)),
4.3 Протошаблоны 4.3 Протошаблоны Протошаблоны являются базовой формой шаблонов. Они реализуют слой абстракции сразу над реляционными типами сущностей ИСО 15926-2 путем сокрытия конкретизированных (см. 2.1.21) отношений ИСО 15926-2.
Каждый протошаблон основывается на двух аксиомах в логике первого порядка FOL. Первая аксиома дает краткую форму реляционного типа сущности. Предикат протошаблона называется прототройкой (прототриплетом).
Предположим, что R - это реляционный тип сущности в ИСО 15926-2, и что R имеет две роли: r1 и r2. Прототройка для R, Rtriple, определяется как:
Rtriple(z, x, y)R(z)hasR1(z, x)hasR2(z, y). Если реляционная сущность T наследует свою роль из супертипа R, то прототройка TTriple определяется как:
TTriple(z, x, y)T(z)RTriple(z, x, y). Предложение (бинарное) протошаблона выражает отношение между двумя заполнителями роли соответствующего реляционного типа сущности. Протошаблон для R, RTemplate, определяется как RTemplate(x, y)z(RTriple(z, x, y)). Аксиомы, определяющие протошаблоны для реляционных типов сущностей ИСО 15926-2, представлены в приложении C. Краткий листинг всех протошаблонов дан в приложении D. 4.3.1 entity Triple
Сказуемое entityTriple определено в разделе C.3, как дизъюнкция всех протошаблонов, данных в разделах C.1 и C.2. Данная тройка позволяет получить краткие выражения утверждений, применимых ко всем реляционным типам сущностей.
4.4 Диаграммы 4.4 Диаграммы Настоящий раздел определяет порядок интерпретации диаграмм.
Класс представляется прямоугольником, разделенным пополам. Верхняя часть содержит обозначение, нижняя определяет тип сущности ИСО 15926-2 класса. Класс с обозначением A и типом сущности Class показан на рисунке 2.
Зависимость показана двойным ромбом и соединительной линией, идущей к прямоугольнику, показывающему тип сущности и (по выбору) обозначение зависимости. Зависимость с обозначением R и тип сущности ClassOfConnectionOflndividual показаны на рисунке 3 (справа с обозначением, слева без обозначения).
Отношение (экземпляр зависимости) показывается аналогично зависимости, но с одинарным ромбом. Отношениям в общем случае не дают обозначений. На рисунке 4 показано отношение с типом сущности ConnectionOflndividual.
Роли зависимостей и отношений указываются соединительными линиями с расшифровкой названия роли по ИСО 15926-2. Зависимость R типа ClassOfConnectionOflndividual между классами A и B (класс A - в роли hasClassOfSide1, класс B - в роли hasClassOfSide2) показана на рисунке 5.
Кардинальное число зависимости ставится в соответствие роли с помощью соединительной линии, указывающей, какая роль соответствует end_l_cardinality, а какая - end_2_cardinality. См. рисунок 6.
Для часто используемых зависимостей типа "Классификация (членство)" и "Специализация (разбиение на подклассы)" символы отношений и индикаторы ролей могут отсутствовать. Вместо них рисуют стрелки. Зависимости представляются "точечными" и "пулевидными" стрелками соответственно. На рисунке 7 представлено отношение специализации между классами A и B.
На рисунке 8 представлено отношение классификации индивидуального объекта a как члена класса A.
5 Спецификации шаблона 5 Спецификации шаблона 5.1 Требования к шаблону, общие положения 5.1 Требования к шаблону, общие положения Шаблон должен иметь:
- название;
- неформальное текстовое объяснение надлежащего использования шаблона и его смысл;
- роли листинга подписей и типы каждого аргумента (см. 5.2);
- формальное определение в форме двухусловного выражения (двухсторонней условной зависимости) на языке шаблона.
Формальное определение шаблона должно расширяться для иллюстративных целей до паттернов (образцов) языка ИСО 15926-2 (см. 4.1). Данное определение должно быть проверено на соответствие модели данных (см. 5.4).
5.2 Шаблонные подписи 5.2 Шаблонные подписи Шаблонные подписи должны указывать ограничение для каждой роли шаблона, для допустимого типа индивидуального объекта, заполняющего роль. Каждое ограничение роли должно задаваться унарным предикатом.
Примечание 1 - Подпись можно рассматривать как представление полного определения шаблона, в который не включены зависимости между заполнителями ролей (указателями ролей).
Шаблонные подписи важны для представления и хранения данных. Выбор ограничений (из определения шаблона) для включения в подпись определяется только соображениями практической пользы.
Примечание 2 - Дальнейшая информация о представлении шаблона в виде справочных данных приведена в разделе 8.
Шаблонная подпись описывается как упорядоченный список ролей шаблона. Каждая роль должна иметь: a) название. Названия ролей должны быть уникальными внутри подписи; b) допустимый тип ограничения для индивидуальных объектов, заполняющих данную роль:
1) тип сущности,
2) класс библиотеки справочных данных RDL;
3) тип данных, означающий, соответственно, что любой индивидуальный объект, заполняющий роль: 1) должен иметь заданный тип сущности, 2) классифицирован в указанном классе библиотеки RDL, 3) является экземпляром указанного типа данных.
Примечание - Каждая роль подписи задает ограничение на тип индивидуального объекта, реализующего рассматриваемую роль. Если унарные шаблоны используются в практических реализациях справочных данных, то в общем случае они не подходят для определения типов роли, даже если хранятся в библиотеке RDL в качестве классов. Именно шаблоны "пробегают" упорядоченный список индивидуальных объектов, а не индивидуальные объекты. Роль, тип которой задается унарным шаблоном, может, таким образом, быть реализована только списками, содержащими один элемент.
5.3 Шаблонная специализация 5.3 Шаблонная специализация Специальным случаем определения шаблона является введение одного шаблона как специализированной версии другого шаблона. Пусть обозначает трехкомпонентный шаблон с ролями, ограниченными выражениями , и и условиями "моделирования", наложенными на аргументы выражения : T(x, y, z)(x)(y)(z). Предположим, что - специализация . Она содержит роль , ограничивающую первую роль вместо . Ниже приведено формальное определение : , Отсюда следует, что - специализированный шаблон : каждый экземпляр является экземпляром , и зависимости между индивидуальными объектами (задействованными в экземпляре) - те же, что и для .
Примечание - Это относится только к логическому определению специализированного шаблона. Если шаблон соответствует настоящему стандарту, то требования давать пояснения и иметь подписи (см. 5.1) сохраняются.
5.4 Проверка соответствия по ИСО 15926-2 5.4 Проверка соответствия по ИСО 15926-2 Каждое определение шаблона должно быть проверено на выполнение ограничений, наложенных моделью данных ИСО 15926-2. Нужно удостовериться, что каждый шаблон может быть реализован способом, соответствующим требованиям языка ИСО 15926-2.
Примечание 1 - Нижеследующая процедура может быть использована для проверки того, что шаблон T удовлетворяет требованиям ИСО 15926-2.
Реализуем T с парой четко выраженных произвольных индивидуальных объектов, а затем расширим данное утверждение в соответствии с аксиомой шаблона. Расширение данного шаблона обычно требует расширения других шаблонов (любых шаблонов, появляющихся в определении T и в определениях последующих шаблонов, являющихся результатом расширения предшествующих). Выполним расширение рассматриваемого экземпляра шаблона и посмотрим, содержит ли данное расширение предикаты языка, которые не являются частью ИСО 15926-2 (то есть, посмотрим содержатся ли в нем языковые предикаты шаблона):
- если "да", то определение шаблона обращается к предикатам, для которых формальное определение ИСО 15926-2 отсутствует и определение T является неполным;
- если "нет", то расширение экземпляра шаблона является выражением языка ИСО 15926-2. Данное выражение должно быть проверено на соответствие модели ИСО 15926-2 с помощью обобщенных методов логики первого порядка.
Успешные испытания соответствия доказывают, что рассматриваемый шаблон имеет интерпретацию в терминах модели данных ИСО 15926 и, таким образом, удовлетворяет требованиям формального критерия соответствия.
Примечание 2 - Процедура проверки соответствия поставленной цели в настоящем стандарте не рассматривается.
6 Шаблоны индивидуальных объектов 6 Шаблоны индивидуальных объектов 6.1 Цель 6.1 Цель В данном разделе рассматриваются шаблоны, характеризующие индивидуальные объекты, в отличие от классов. Обычно данные шаблоны регистрируют информацию об одном физическом объекте.
Примечание 1 - ИСО 15926 не требует четкого разделения всей (совокупной) предметной области на индивидуальные объекты, классы, метаклассы и т.д. Соответственно, вопрос "Что такое индивидуальный объект?" не имеет четкого ответа.
6.2 Необходимые справочные элементы 6.2 Необходимые справочные элементы В настоящем разделе рассмотрены следующие элементы справочных данных, используемые в аксиомах шаблона. Расширение языка ИСО 15926-2 происходит за счет термина индивидуального объекта. Для практических приложений шаблонов, определения которых относятся к рассматриваемому элементу, указанный элемент должен быть внесен в библиотеку справочных данных.
Таблица 1 - Справочные элементы: шаблоны индивидуальных объектов (индивид)
ActivityLocation и InvolvementSuccession - это зависимости. Соответствующие записи библиотеки RDL должны определять классы для ролей в соответствии с типом сущности hasClassOfEnd1 или hasClassOfEnd2, представляющие, соответственно, области и диапазоны указанных зависимостей.
Для ActivityLocation область и диапазон задаются справочными элементами, представляющими типы сущностей Activity и SpatialLocation, в соответствии с предназначением в части размещения операции.
Для InvolvementSuccession область и диапазон задаются справочными элементами, представляющими тип сущности InvolvementByReference.
6.3 Начальное множество 6.3 Начальное множество 6.3.1 Шаблон ClassificationOflndividual
Рассматривается шаблон классификации индивидуальных объектов (в отличие от пар индивидуальных объектов, классов или зависимостей).
ClassificationOflndividual(a, b) означает, что a - это индивидуальный объект, b - это класс индивидуальных объектов, и a - член класса b.
В соответствии с ИСО 15926-2:
Классификация - это тип отношения, указывающего, что классифицируемый элемент является членом некоторого класса.
ClassificationOflndividual(, )
Possiblelndividual()
ClassOflndividual()
ClassificationTemplate(, )
Пример - Классификация Alfred (Альфреда) как Engineer (инженера) может быть выражена с помощью настоящего шаблона. Расширение утверждения ClassificationOflndividual(Alfred, Person) соответствует утверждению на языке ИСО 15926-2, показанному на нижеследующей диаграмме.
Отметим, что справочные индивидуальные объекты Alfred и Engineer не определяются утверждениями шаблона. Каждый элемент может иметь более специализированный тип сущности в отличие от показанного на диаграмме.
6.3.2 Шаблон ClassificationOfRelationship
Настоящий шаблон задает тип отношения. Это шаблон классификации. Он только классифицирует пары элементов как члены зависимостей.
ClassificationOfRelationship(a, b) означает, что a - это упорядоченая пара, b - это зависимость, и a - член b.
ClassificationOfRelationship(, )
Relationship()
ClassOfRelationshipfe()
ClassificationTemplate(, )
Примечание - См. также InstanceOfRelationship.
Пример - Утверждение ClassificationOfRelationship(<Alfred, ACME Co.>, Employment) расширяется на представление, структурированное в следующей диаграмме. Отметим, что:
- определение первого аргумента (спецификация типа сущности и членов упорядоченной пары) не представлено как часть утверждения шаблона;
- тип сущности Relationship является абстрактным. В надлежащей реализации настоящего шаблона упорядоченная пара имеет тип сущности, являющийся подтипом Relationship;
- использование угловых скобок,, для поименования упорядоченных пар, не является нормативным в настоящем стандарте.
6.3.3 Шаблон InstanceOfRelation
Настоящий шаблон выражает отношения, не имеющие предварительно определенного типа ИСО 15926-2. Утверждение lnstanceOfRelationship(a, b, c) означает, что a - обычная зависимость, в которой аргумент b поставлен в соответствие аргументу c.
lnstanceOfRelation(, , )
ClassOfRelationshipWithSignature()
Thing()
Thing()
u(OtherRelationshipTriple(u, , )
ClassificationOfRelationship(u, ))
Примечание - Настоящий шаблон использует шаблон ClassificationOfRelationship. Если этот шаблон использует некоторую упорядоченную пару (отношение) как аргумент, классифицируемый некоторой зависимостью, то данный шаблон использует указанные элементы упорядоченной пары как аргументы. Представление указанных элементов в виде упорядоченной пары определяется аксиомой шаблона.
Пример - Пусть Alfred и ACME Co. - это экземпляры сущности Person, а Employment - заданная зависимость (то есть ClassesOfRelationshipWithSignature). Тогда экземпляр зависимости InstanceOfRelationship(Employment, Alfred, ACME Co.) расширяется на нижеследующее представление, сравнимое с тем, что показано в примере для зависимости ClassificationOfRelationship. Отметим, что:
- никакие обозначения классифицированных упорядоченных пар не определены;
- определение зависимости ClassOfRelationshipWithSignature, включающей спецификации ролей для границ зависимости, в утверждении шаблона не дается.
6.3.4 Шаблон IdentificationByNumber (идентификация по номеру)
Данный шаблон обеспечивает именование элементов (things) действительными числами.
ldentificationByNumber(a, b) означает, что a - действительное число, и что а ставится в соответствие b.
ldentificationByNumber(, )
ExpressReal()
Thing()
ClassOfldentificationTemplate(, )
Примечание - Настоящий шаблон - это специализированная версия ClassOfldentificationTemplate, накладывающая ограничение на тип первого аргумента от ClassOfinformationRepresentation до его подтипа ExpressReal.
Пример - Утверждение, что число идентифицируется десятичным числом 3,14, может быть представлено в виде IdentificationByNumber (3,14, ).
6.3.5 Шаблон Classifiedldentification (классифицированная идентификация)
Настоящий шаблон задает типизированное название элемента.
Classifiedldentification(a, b, c) означает, что b - это строка, c - тип назначения имени, а b - имя c-типа для a.
Classifiedldentification(, , )
Thing()
ExpressString()
ClassOfClassOfldentification()
u(ClassOfldentificationTriple(u, , )
ClassificationTemplate(u, ))
Пример - Утверждение Classifiedldentification(Alfred, PN4723, Employee No. ACME Co.) (например, присвоение номера сотруднику) расширяется следующим образом.
Примечание - Настоящий шаблон определяет названия элементов, а также тип (классификатор) для самих назначений. Надлежащее использование данного классификатора - представление контекста, в котором назначение имени является действительным.
6.3.6 Шаблон LocationOfActivity (размещение операции)
Настоящий шаблон определяет место проведения операции.
LocationOfActivity(a, b) означает, что a - это операция, b - размещение, и a происходит в b.
LocationOfActivity(, )
Activity()
SpatialLocation()
InstanceOfRelationship(ActivityLocation, , )
Пример - Утверждение LocationOfActivity(Site Survey #23, Site No. 11) расширяется до нижеследующего представления.
Примечание - LocationOfActivity - это шаблон библиотеки RDL, так как справочный индивидуальный объект ActivityLocation (ClassOfRelationshipWithSignature) имеется в соответствующей аксиоме шаблона.
6.3.7 Шаблон BeginningOflndividual
Настоящий шаблон устанавливает время начала существования индивидуального объекта (индивидуума).
BeginningOflndividual(a, b) означает, что a - это индивидуальный объект, b - момент времени, и a начинает существовать в момент b.
BeginningOflndividual(,)
Possiblelndividual()
RepresentationOfGregorianDateAndUtcTime()
u(PointlnTime(u)BeginningTemplate(u, )
ClassOfRepresentationOfThingTemplate(, u)) 6.3.8 Шаблон BeginningEndOflndividual
Настоящий шаблон задает время начала и время окончания существования индивидуального объекта.
BeginningEndOflndividual(a, b, c) означает, что a - это индивидуальный объект, b и c - моменты времени. При этом a начинает существование в момент b и прекращает существование в момент c.
BeginningEndOflndividual(, , )
Possiblelndividual()
RepresentationOfGregorianDateAndUtcTime()
RepresentationOfGregorianDateAndUtcTime()
u(PointlnTime(u)BeginningTemplate(u, )
ClassOfRepresentationOfThingTemplate(, u))
u(PointlnTime(u)EndTemplate(u, )
ClassOfRepresentationOfThingTemplate(, u))
Пример - Утверждение BeginningEndOflndividual(Survey # 23,2009-10-19,2009-10-21) расширяется до нижеследующего представления. Отметим, что обозначение экземпляра PointlnTime не определено.
6.3.9 Шаблон BeginningOfTemporalPart
Настоящий шаблон служит для утверждения того, что некоторый индивидуальный объект является временной частью другого индивидуального объекта и что он инициирован в момент времени, определенный значением временной отметки.
BeginningOfTemporalPart(a, b, c) означает, что a - индивидуальный объект, b - индивидуальный объект, c - это момент времени, а также что a - это временная часть b, и a начинает существовать в момент времени c.
BeginningOfTemporalPart(, , )
Possiblelndividual()
Possiblelndividual()
RepresentationOfGregorianDateAndUtcTime()
TemporalWholePartTemplate(,)
BeginningOflndividual(,) 6.3.10 Шаблон BeginningEndLocationOfActivity
Настоящий шаблон указывает, где и когда выполняется операция.
BeginningEndLocationOfActivity(a, b, c, d) означает, что a - это операция, b и c - моменты времени, d - это размещение, а также что a происходит в расположении d, начинается в момент b и заканчивается в момент времени c.
BeginningEndLocationOfActivity(, , )
Activity()
RepresentationOfGregorianDateAndUtcTime()
RepresentationOfGregorianDateAndUtcTime()
SpatialLocation()
BeginningEndOflndividual(, , )
LocationOfActivity(, ) 6.3.11 Шаблон InstanceOflndirectProperty (экземпляр косвенного (непрямого) свойства)
Настоящий шаблон выражает классифицированное обладание индивидуального объекта косвенным свойством.
lnstanceOflndirectProperty(a, b, c) означает, что a - это класс ClassOflndirectProperty, b (временная часть) - это возможный индивидуальный объект Possiblelndividual, к которому относится рассматриваемая зависимость, c - это экземпляр свойства Property. При этом b имеет тип a для класса ClassOflndirectProperty, в котором c - это экземпляр свойства Property.
lnstanceOflndirectProperty(, , )
ClassOflndirectProperty()
Possiblelndividual()
Property()
u(ClassificationOfRelationship(u, )
lndirectPropertyTriple(u, , )) 6.3.12 Шаблон RealMagnitudeOfProperty (действительная величина свойства)
Настоящий шаблон определяет версию MagnitudeOfProperty, для которой величина представляется типом данных, а не нумерованным объектом.
RealMagnitudeOfProperty(a, b, c) означает, что a - это экземпляр Property, b - число с плавающей точкой, задающее значение свойства, а d - шкала (единица измерения).
RealMagnitudeOfProperty(, , )
Property()
ExpressReal()
Scale()
u(MagnitudeOfProperty(, u, )
ldentificationByNumber(, u)) 6.3.13 Шаблон IndirectPropertyScaleReal
Настоящий шаблон назначает типизированное косвенное свойство индивидуальному объекту. Величина свойства задается действительным числом и шкалой.
lndirectPropertyScaleReal(a, b, c, d) означает, что a - это класс ClassOflndirectProperty, b (временная часть) возможного индивидуального объекта Possiblelndividual, к которому относится данная зависимость, c - это число с плавающей точкой, задающее значение свойства, d - это шкала (единица измерения). При этом b имеет тип a для класса ClassOflndirectProperty, имеет значение c, и d - единица измерения.
IndirectPropertyScaleReal(, , , )
ClassOflndirectProperty()
Possiblelndividual()
ExpressReal()
Scale()
u(lnstanceOflndirectProperty(, , u)
RealMagnitudeOfProperty(u, , )) 6.3.14 Шаблон StatusApproval (утверждение статуса)
Настоящий шаблон указывает, что утверждающее лицо назначает статус отношения.
StatusApproval(a, b, c) означает, что a - это отношение, b - это класс утверждения по статусу, c - это утверждающее лицо, назначающее величине a статус b.
StatusApproval(, , )
Relationship()
ClassOfApprovalByStatus()
Possiblelndividual()
u(ApprovalTriple(u, , )
ClassificationTemplate(u, )) 6.3.15 Шаблон Classifiedlnvolvement (классифицированное вовлечение в операцию)
Настоящий шаблон задает следующее условие: некоторый элемент вовлечен в операцию, и тип вовлечения классифицирован.
Примечание 1 - Настоящий шаблон также годится для слабых типов вовлечения, например "по ссылке".
Classifiedlnvolvement(a, b, c) означает, что a - это элемент, b - это операция и c - это тип вовлечения. При этом аргумент a вовлечен в операцию b, c - это тип вовлечения.
Classifiedlnvolvement(, , )
Thing()
Activity()
ClassOflnvolvementByReference()
u(lnvolvementByReferenceTriple(u, , )
ClassificationTemplate(u, )) 6.3.16 Шаблон InvolvementStatus (статус вовлечения)
Настоящий шаблон нужен для утверждения, что элемент вовлечен в операцию, что данное вовлечение классифицировано и имеет определенный тип и что данное вовлечение утверждено утверждающим лицом и имеет определенный статус.
lnvolvementStatus(a, b, c, d, e) означает, что a - это элемент, b - операция, c - тип вовлечения, d - статус утверждения, e - утверждающее лицо. Аргумент a вовлечен в операцию b, c - тип вовлечения; операция утверждена, d - тип статуса утверждения, e - утверждающее лицо.
lnvolvementStatus(, , , , )
Thing()
Activity()
ClassOflnvolvementByReference()
ClassOfApprovalByStatus()
Possiblelndividual()
u(lnvolvementByReferenceTriple(u, , )
ClassificationTemplate(u, )
StatusApproval(u, , )) 6.3.17 Шаблон InvolvementStatusBeginning
Настоящий шаблон служит для утверждения, что начало происходит в определенное время, что элемент вовлечен в операцию, вовлечение классифицировано и имеет определенный тип, вовлечение утверждено утверждающим лицом и имеет определенный статус.
lnvolvementStatusBeginning(a, b, c, d, e, f) означает, что a - это элемент, b - операция, c - тип вовлечения, d - статус утверждения, e - утверждающее лицо, f - момент времени. Аргумент a вовлечен в операцию b, c - тип вовлечения, операция утверждена, d - тип статуса утверждения, e - утверждающее лицо, f - время начала операции.
lnvolvementStatusBeginning(, , , , )
Thing()
Activity()
ClassOflnvolvementByReference()
ClassOfApprovalByStatus()
Possiblelndividual()
RepresentationOfGregorianDateAndUtcTime()
u(BeginningOfTemporalPart(u, , )
InvolvementStatus(, u, , , )) 6.3.18 Шаблон SuccessionOflnvolvementByReference
Настоящий шаблон указывает, что за одним вовлечением следует другое.
SuccessionOflnvolvementByReference(a, b) означает, что a - это вовлечение, b - вовлечение, и b следует за a.
Примечание - Утверждение SuccessionOflnvolvementByReference - это шаблон RDL, так как справочный индивидуальный объект InvolvementSuccession имеется в аксиоме шаблона.
SuccessionOflnvolvementByReference(, )
InvolvementByReference()
lnvolvementByReference()
lnstanceOfRelationship(InvolvementSuccession, , )
6.3.19 Шаблон SuccessionOflnvolvementlnActivity
Настоящий шаблон указывает, что в некоторой операции за одним элементом, вовлеченным в данную операцию, следует другой элемент.
Примечание 1 - Здесь именно вовлеченные элементы являются аргументами шаблона, а не отношения вовлечения.
SuccessionOflnvolvementlnActivity(a, b, c) означает, что a - это вовлечение, b - вовлечение, c - операция. Аргумент b следует за a, и оба они вовлечены в операцию c.
SuccessionOflnvolvementlnActivity(, , )
Thing()
Thing()
Activity()
(lnvolvementByReferenceTriple(, , )
lnvolvementByReferenceTriple(, , )
SuccessionOflnvolvementByReference(, ))
7 Шаблоны классов 7 Шаблоны классов 7.1 Цель 7.1 Цель В данном разделе рассмотрены шаблоны, характеризующие типы сущностей. В характеристическом случае члены класса (индивидуальные объекты) или члены зависимостей (упорядоченные пары) удовлетворяют общим ограничениям.
Примечание - ИСО 15926 не требует строгого разделения на индивидуальные объекты, классы, метаклассы и т.д.
7.2 Необходимые элементы справочных данных 7.2 Необходимые элементы справочных данных В настоящем разделе следующие элементы справочных данных используются в аксиомах шаблона. Они представляют собой расширение языка ИСО 15926-2 за счет членов индивидуальных объектов. Для практических приложений шаблонов, чьи определения относятся к указанным элементам, данные элементы должны быть занесены в библиотеку справочных данных.
Таблица 2 - Справочные элементы: шаблоны классов
7.2.1 Справочные классы
Справочные элементы SetOf1Class, SetOf2Classes и SetOf3Classes являются классами. Их следует использовать в качестве классификаторов, например, EnumeratedSetOfClass, классифицирующих один, два или три класса соответственно. Классы с большим кардинальным числом могут быть добавлены к справочным данным.
Примечание - Справочные элементы SetOf1Class и т.д. используются в настоящем стандарте для представления того, что все члены экземпляров типа сущности EnumeratedSetOfClass заданы явно. Для класса A EnumeratedSetOfClass, членство в этом классе A выражается отношениями классификации. Классификация A, например, SetOf3Classes, указывает, что там есть три таких члена.
Справочный индивидуальный объект EmptyClass - это класс, в котором нет членов. Семантически данный класс может быть определен как результат применения класса DifferenceOfSetOfClass к классу EnumeratedSetOfClass, содержащему только один класс (какой класс выбрать - это несущественно). См. диаграмму ниже.
Примечание - На рисунке 16 экземпляр класса EnumeratedSetOfClass {а} обозначен фигурными скобками. Это означает, что его естественная интерпретация - это множество, содержащее элемент a. Данный паттерн (образец) представления названия не является обязательным.
Справочный элемент * Cardinality в настоящем стандарте представляет собой неограниченное максимальное кардинальное число.
Справочные элементы Infinity (бесконечность) и -Infinity в настоящем стандарте представляют собой положительную и отрицательную бесконечность в соответствии с требованиями определения числовых диапазонов.
7.2.2 Справочные зависимости
Элементы End1UniversalRestriction, End2UniversalRestriction и UomSymbolAssignment - это зависимости (relations), их типы сущностей являются подтипами ClassOfRelationship. Это означает, что запись в библиотеке RDL должна назначать классы для ролей указанных элементов в соответствии с требованиями соответствующих типов сущностей. Для рассматриваемых целей достаточно указания общих требований к таким назначениям в библиотеке справочных данных RDL.
Ограничения End1UniversalRestriction и End2UniversalRestriction характеризуют отношения подзависимостей. Для каждого элемента требуются роли hasClassOfSubclass и hasClassOfSuperclass. Этим ролям назначаются справочные элементы, представляющие тип сущности ClassOfRelationship.
Сущность UomSymbolAssignment назначает символы для шкал. Требуемые роли - это hasClassOfRepresented и hasClassOfPattern. Им назначают справочные элементы, представляющие типы сущностей Scale и ExpressString, соответственно.
7.3 Представление комплексных классов 7.3 Представление комплексных классов В соответствии с ИСО 15926 операции классов объединение, пересечение и дополнение выражаются с помощью функциональных зависимостей UnionOfSetOfClass, IntersectionOfSetOfClass и DifferenceOfSetOfClass, соответственно. Каждый экземпляр указанных типов сущностей относится к множеству классов (элемент типа EnumeratedSetOfClass) в роли haslnput и к одному классу в роли hasResult.
Пусть A - это множество классов , , ..., . С этим классом A в роли haslnput для экземпляров UnionOfSetOfClass, IntersectionOfSetOfClass или DifferenceOfSetOfClass, роль hasResult является классом с нижеследующим определением:
- для UnionOfSetOfClass: объединение множеств в A, то есть множество элементов, принадлежащих либо , либо и т.д.;
- для IntersectionOfSetOfClass: пересечение множеств в A, то есть множество элементов, принадлежащих одновременно и , и и т.д.;
- для DifferenceOfSetOfClass: члены объединения множеств в A, не принадлежащих пересечению множеств в A.
Шаблоны, выражающие определения комплексных классов, включают сущности UnionOf2Classes, lntersectionOf2Classes и RelativeComplementOf2Classes.
Пример - Пусть A, B и C - это сущности типа EnumeratedSetOfClass. A - это класс, содержащий только класс MOTOR. B - это класс, содержащий классы ELECTRIC MOTOR и HYDRAULIC MOTOR. C - класс, содержащий классы PUMP и PIPE. (Используя фигурные скобки, можно записать, что A - это {MOTOR}, B - это {ELECTRIC MOTOR, HYDRAULIC MOTOR} и C - это {PUMP, PIPE}.)
Протошаблоны, поддерживающие операции с множествами, - это UnionOfSetOfClassTemplate, IntersectionOfSetOfClassTemplate и DifferenceOfSetOfClassTemplate. Ниже используются сокращенные обозначения множеств (например, X, X и X\X). Они дают значения второго аргумента соответствующего шаблона при условии, что X - это первый аргумент. Предполагая по умолчанию, что MOTOR - это класс моторов, получим:
A - это класс моторов (класс MOTOR);
B - это класс либо электрических, либо гидравлических моторов; B - это класс, включающий сразу и электрические, и гидравлические моторы;
{MOTOR, ELECTRIC MOTOR}\{MOTOR, ELECTRIC MOTOR} - класс неэлектрических моторов;
C - (обычно, пустой) класс элементов, включающий насосы PUMP и трубы PIPE;
{MOTOR, B}\{MOTOR, B} - класс моторов, не являющихся электрическими или гидравлическими.
Примечание - Вместе с пересечением IntersectionOfSetOfClass, тип сущности DifferenceOfSetOfClass необходим для представления общего понятия дополнения множества. (Относительное) дополнение двух множеств a и b определяется как {x a|x b}. Разность DifferenceOfSetOfClass множеств {a, b} - это {x a b | x b}. Пусть c обозначает данное множество. Тогда относительным дополнением множеств a и b является пересечение IntersectionOfSetOfClass {a, c}. Данное указание содержится в шаблоне RelativeComplementOf2Classes.
7.4 Ограничения зависимостей 7.4 Ограничения зависимостей В данном разделе показано, как сложные ограничения на классы и зависимости могут быть представлены в соответствии с настоящим стандартом. 7.4.1 зависимости: области и сообласти
Представление зависимости между классами C и D не означает наложения ограничений на C или на D. Покажем, как можно использовать настоящий стандарт для наложения ограничений на классы в соответствии с зависимостями, в которые могут входить члены этих классов.
Пример - Типовое множество справочных данных механического оборудования включает данные рисунка 17 (параметр "Допустимая наружная температура") и число 18 (температура по Цельсию). В соответствии с иллюстрацией, Permitted Ambient Temperature - это зависимость, включающая Equipment в его роли hasClassOfPossessor, Temperature в роли hasPropertySpace и Celsius, как шкалу, соотносящую свойство Temperature с его числовым значением.
Рисунок 17 соответствует нижеследующему множеству утверждений на языке ИСО 15926-2.
ClassOflnanimatePhysicalObject(Equipment)
SinglePropertyDimension(Temperature)
ClassOflndirectProperty(Perimitted Ambient Temperature)
hasClassOfPossessor(Permitted Ambient Temperature, Equipment)
hasPropertySpace(Permitted Ambient Temperature, Temperature)
Естественно рассматривать два направления (слева-направо и справа-налево) для такой зависимости, как Permitted Ambient Temperature, как четко выраженные направленные зависимости:
a) зависимость с областью Equipment (оборудование) и сообластью Temperature (температура); ________________ Термин "сообласть" - синоним термина "диапазон". Используется для ссылок на множество вторых элементов бинарной зависимости.
b) зависимость с областью Temperature и сообластью Equipment.
На каждое направление могут быть наложены различные ограничения. 7.4.2 Экзистенциальные и универсальные ограничения
Экзистенциальные ("некоторые") и универсальные ("все") ограничения представляют особый интерес для справочных данных. В обозначениях логики первого порядка FOL характеристические случаи соответствуют выражениям, представленным в нижеследующей форме, где C и D обозначают классы, а R - некоторую зависимость.
C(x)y(R(x, y)D(y)), (1)
По формуле (1) каждому C поставлен в соответствие с помощью R, по крайней мере, один класс D; (2) если C ставится в соответствие с помощью R, то оно ставится в соответствие D.
Экзистенциальные ограничения указывают, что экземпляры данного класса необходимы для формирования некоторого минимального числа отношений. В соответствии с ИСО 15926 они выражаются как ограничения кардинального числа для зависимостей. В приложении к примеру на рисунке 17 паттерн (pattern) представления ограничения (1) "один ко многим" (для направления зависимости слева-направо) может иметь вид как показано на рисунке 19. Ограничение на максимальное количество поставленных в соответствие экземпляров может также быть выполнено с помощью кардинальных чисел, как показано на рисунке 20, где ограничение кардинального числа составляет 1:1 ("ровно 1"). Универсальные ограничения не могут быть выражены с помощью ограничений кардинального числа. ИСО 15926-2 не предоставляет для указанных ограничений необходимых примитивов. В настоящем стандарте используется общепринятое соглашение о дополнительных выразительных средствах для элементов справочных данных End1UniversalRestriction и End2UniversalRestriction. Они нужны для классификации специализаций зависимостей, при этом один элемент нужен для каждого направления отношения ClassOfRelationship (см. рисунок 21). Зависимости, к которым применяются универсальные ограничения, обычно являются подзависимостями обобщенных зависимостей. Для представления универсального ограничения специализация Specialization зависимости классифицируется сама как ограничение End2UniversalRestriction. Конструкция интерпретируется в соответствии с нижеследующим соглашением (для End1UniversalRestriction соответственно):
если специализация Specialization S, действующая из R в R', где C' - это область R', классифицирована с помощью ограничения End1UniversalRestriction, то каждая пара величин (x, y) в R, для которой выполняется C'(x), является членом R'. (3)
Паттерн (pattern) представления классификации для специализации зависимости с помощью ограничения End2UniversalRestriction представлена на рисунке 22. В соответствии с настоящим стандартом классификация показывает, что ограничение (4) выполняется. C'(x)y(R(x, y)D'(y)). (4)
Пример - Пример паттерна (формы представления) приведен на рисунке 23, где подзависимость (без имени) между типом двигателя Туре N Engine и диапазоном Temperature представлена как Specialization для обобщенного отношения Permitted Ambient Temperature. Классифицирование сущности как универсальной означает, что каждое назначение допустимой наружной температуры Permitted Ambient Temperature для Type N Engine ограничивает свойства в диапазоне Temperature от 0 до 70 градусов Цельсия. ________________
7.4.3 Подограничение зависимости "не более, чем n" (At-most n)
Паттерн (форма представления) ограничения лимитирует число отношений данного типа, в которые могут входить элементы данного класса. Для обобщенной зависимости R, действующей из C в D, и подкласса C' из C (см. рисунок 24), ограничения кардинального числа типа "не более, чем n", действующие по отношению к R, могут быть применены к C в соответствии с паттероном (5), который говорит, что C' может быть поставлено в соответствие (с помощью R) не более, чем n элементам. x(C' (x)y)(R (x, y))). (5)
Что касается универсальных ограничений, то справочные элементы ограничений End1UniversalRestriction и End2UniversalRestriction используются в настоящем стандарте, чтобы выражать ограничения типа "не более, чем n". Чтобы лимитировать число отношений R для класса C', используйте ограничения кардинального числа на подзависимости R', для которой область ограничена сущностью C'. Тогда специализация подзависимости классифицируется как универсальное ограничение паттерна (формы представления), указанного выше.
Пример - Пример паттерна ограничения типа "не более, чем n" приведен на рисунке 25. В соответствии с ним каждый член сущности C' участвует в 1-3 отношениях типа R'. Классификация ограничения End2UniversalRestriction гарантирует, что каждое отношение R с сущностью C в левой роли - это отношение R'. Таким образом, C' поставлено в соответствие (с помощью R) не более, чем трем D'.
7.5 Начальное множество 7.5 Начальное множество 7.5.1 Шаблон ClassificationOfClass
Это шаблон для классификации классов.
ClassificationOfClass(a, b) означает, что a - это класс, b - это класс классов и a - это член b.
ClassificationOfClass(, )
Class()
ClassOfClass()
ClassificationTemplate(, )
Пример - Типовое применение настоящего шаблона заключается в классификации классов, используемых либо специальными сущностями, либо сущностями, определенными в стандартах областей. На порядок класса ограничения не накладываются. В качестве примера классификации класса второго порядка с помощью класса третьего порядка рассмотрим "типы буровой штанги из области бурения". Можно использовать выражение ClassificationOfClass(Drilling Domain Class, Drill String Type), которое расширяется до утверждения на языке ИСО 15926-2, представленного на нижеследующей диаграмме.
7.5.2 Шаблон ClassificationOfClassOflndividual
Настоящий шаблон классифицирует классы, имеющие своими членами только индивидуальные объекты.
ClassificationOfClassOflndividual(a, b) означает, что a - это класс первого порядка, b - это класс второго порядка и a - это член b.
ClassificationOfClassOflndividual(, )
ClassOflndividual()
ClassOfClassOflndividual()
ClassificationOfClass(, )
Примечание - Настоящий шаблон - это специализированная версия ClassificationOfClass с добавленным ограничением: первый аргумент - это класс первого порядка (ClassOflndividual), а второй аргумент - это класс второго порядка (ClassOfClassOflndividual).
Пример - Расширение утверждения ClassificationOfClass(Drilling Class, Drill String) показано на нижеследующей диаграмме.
7.5.3 Шаблон ClassificationOfClassOfRelationship
Настоящий шаблон классифицирует зависимости.
ClassificationOfClassOfRelationship(a, b) означает, что a - это зависимость, b - это класс зависимостей и a - это член b.
ClassificationOfClassOfRelationship(, )
ClassOfRelationship()
ClassOfClassOfRelationship()
ClassificationOfClass(, )
Примечание - Настоящий шаблон - это специализированная версия утверждения ClassificationOfClass с добавленным ограничением: первый аргумент является зависимостью (ClassOfRelationship), второй аргумент - это класс зависимостей (ClassOfClassOfRelationship).
Пример - Расширение утверждения ClassificationOfClass(Shaft Seal Connection, Machinery relation) показано на нижеследующей диаграмме.
7.5.4 Шаблон RelationOflndividualsTolndividuals
Настоящий шаблон устанавливает, что зависимость относится только к индивидуальным объектам.
RelationOflndividualsTolndividuals(a) означает, что a - это зависимость одного из подтипов ClassOfRelationship, и что ее область и диапазон (определенные атрибутами в соответствии с типом сущности) являются классами первого порядка.
RelationOflndividualsTolndividuals()
ClassOfRelationship(x)
(entityTriple(x, , )
ClassOflndividual()CIassOflndividual())
Примечание 1 - Цель настоящего унарного шаблона - выразить ограничение на зависимость. Использование дизъюнктивного шаблона entityTriple (см. приложение С.3) при определении аксиомы означает, что настоящий шаблон не подходит для представления зависимостей.
Примечание 2 - Языку шаблона не хватает выразительности для полного представления ограничения для рассматриваемого шаблона. Полное представление требует универсальной квантификации, утверждающей, что для каждого типа сущности, которому принадлежит рассматриваемое отношение субъектов, атрибуты данного отношения являются классами первого порядка. Универсальные утверждения в определениях шаблонов не рассматриваются (см. 4.2, приложение Н). Шаблон дает полезную аппроксимацию, так как надлежащее ограничение удовлетворяется при условии, что рассматриваемое отношение субъектов имеет только одну пару атрибутов (то есть, имеет уникальную область и диапазон). Данное требование не содержится в ИСО 15926-2 или языках шаблона.
Пример - Расширением утверждения RelationOflndividualTolndividuals(Shaft Seal Connection) является дизъюнктивное утверждение, что Shaft Seal Connection (соединение вала через уплотнение) принадлежит одному из подтипов отношения ClassOfRelationship с соответствующими атрибутами, заполненными элементами классов первого порядка. Данное утверждение не вполне подходит для представления одной диаграммой. Ниже приведена неформальная иллюстрация, соединительные линии не аннотированы названиями атрибутов.
7.5.5 Шаблон SpecializationOflndividualRelation (специализация зависимости для индивидуального объекта)
Настоящий шаблон показывает, что одна зависимость - это подзависимость другой зависимости. Она ограничена зависимостями между индивидуальными объектами.
SpecializationOflndividualRelation(a, b) означает, что a и b - это зависимости между индивидуальными объектами и a - это подзависимость b.
SpecializationOflndividualRelation(, )
ClassOfRelationship()
ClassOfRelationship()
RelationOflndividualTolndividuals()
RelationOflndividualTolndividuals()
SpecializationTemplate(, )
Пример - Расширение утверждения SpecializationOflndividualRelation(Shatt Seal Connection, Seal Connection) - это дизъюнктивное утверждение: для сравнения см. пример утверждения RelationOflndividualsTolndividuals. Неформальная иллюстрация приведена на нижеследующей диаграмме.
7.5.6 Шаблон EnumeratedSetOf2Classes (Нумерованное множество двух классов)
Шаблон EnumeratedSetOf2Classes собирает два класса в один третий класс.
EnumeratedSetOf2Classes(a, b, c) означает, что a, b и c - это классы и a имеет только b и c своими членами.
EnumeratedSetOf2Classes(, , )
Class()
Class()
EnumeratedSetOfClass()
ClassificationTemplate(, )
ClassificationTemplate(, )
ClassificationTemplate(, SetOf2Classes)
Примечание 1 - Порядок, в котором даются первые два аргумента, является несущественным. Нумерация названий роли ("Классифицирован N 1", "Классифицирован N 2") нужна только для того, чтобы отличить одну роль от другой.
Примечание 2 - См. 7.2.1, указание о представлении, используемом в настоящем шаблоне.
Пример - Утверждение EnumeratedSetOf2Classes(Pump, Pipe, {Pump, Pipe}) расширяется на нижеследующее представление.
7.5.7 Шаблон EnumeratedSetOf3Classes
Шаблон EnumeratedSetOf2Classes собирает три класса в один четвертый.
EnumeratedSetOf2Classes(a, b, c, d) означает, что a, b, c и d - классы, и что a имеет только b, c и d своими членами.
EnumeratedSetOf3Classes(, , , )
Class()
Class()
Class()
EnumeratedSetOfClass()
ClassificationTemplate(, )
ClassificationTemplate(, )
ClassificationTemplate(, )
ClassificationTemplate(, SetOf3Classes)
Примечание - См. 7.2.1, дальнейшую информацию о представлении, используемом в настоящем шаблоне.
7.5.8 Шаблон UnionOf2Classes (объединение двух классов)
Шаблон UnionOf2Classes указывает, что один класс является объединением двух классов.
UnionOf2Classes(a, b, c) означает, что a, b и c - классы, c - это объединение a и b.
UnionOf2Classes(, , )
Class()
Class()
Class()
y(EnumeratedSetOf2Classes(, , y)
UnionOfSetOfClassTemplate(y, ))
Примечание - См. 7.3, дальнейшую информацию о представлении, используемом в настоящем шаблоне.
Пример - Утверждение UnionOf2Classes(Pump, Pipe, PumpPipe) расширяется до нижеследующего представления. Примечание: обозначение элемента {Pump,Pipe} делает диаграмму более читабельной, оно не входит в определение расширения.
7.5.9 Шаблон lntersectionOf2Classes (пересечение двух классов)
Шаблон lntersectionOf2Classes указывает, что класс является пересечением двух классов.
lntersectionOf2Classes(a, b, c) означает, что c - это пересечение a и b.
lntersectionOf2Classes(, , )
Class()
Class()
Class()
y(EnumeratedSetOf2Classes(, , y)
lntersectionOfSetOfClassTemplate(y, ))
Примечание - См. 7.3, дальнейшую информацию о представлении, используемом в настоящем шаблоне.
7.5.10 Шаблон DifferenceOf2Classes (разность двух классов)
Шаблон DifferenceOf2Classes указывает, что класс - это Difference (разность) двух классов в соответствии с ИСО 15926-2.
DifferenceOf2Classes(a, b, c) означает, что c - это разность a и b.
DifferenceOf2Classes(, , )
Class()
Class()
Class()
y(EnumeratedSetOf2Classes(, , y)
DifferenceOfSetOfClassTemplate(y, ))
Примечание - ИСО 15926-2 определяет разность двух классов a и b как (ab)n(ab). См. 7.3, дальнейшую информацию о представлении, используемом в настоящем шаблоне.
7.5.11 Шаблон RelativeComplementOf2Classes (относительное дополнение двух классов)
Шаблон RelativeComplementOf2Classes указывает, что один класс является относительным дополнением двух других классов.
RelativeComplementOf2Classes(a, b, c) означает, что c - это относительное дополнение a и b.
RelativeComplementOf2Classes(, , )
Class()
Class()
Class()
y(DifferenceOf2Classes(, , y)
lntersectionOf2Classes(, y, ))
Примечание - Относительное дополнение двух классов a и b обычно обозначается как anb. См. 7.3, дальнейшую информацию о представлении, используемом в настоящем шаблоне.
Пример - Нижеследующая диаграмма показывает расширение RelativeComplementOf2Classes(a, b, a\b). Примечание: обозначения элементов {a,b}, (ab)n(ab) и {a, (ab)n(ab)} включены, чтобы сделать диаграмму более читабельной. В определение расширения они не включены.
7.5.12 Шаблон DisjointnessOf2Classes (непересекаемость двух классов)
Настоящий шаблон указывает, что два класса не имеют общих членов (не пересекаются).
DisjointnessOf2Classes(x, y) означает, что пересечение x и y пусто.
DisjointnessOf2Classes(, )
Class()
Class()
lntersectionOf2Classes(, , EmptyClass)
Примечание - См. 7.3, дальнейшую информацию о представлении, используемом в настоящем шаблоне. См. 7.2.1, описание элемента EmptyClass (пустой класс), использованного в настоящем шаблоне.
Пример - Утверждение DisjointnessOf2Classes(Pamp, Pipe, EmptyClass) расширяется до нижеследующего представления. Примечание: обозначения элемента {Pump,Pipe} включено, чтобы сделать диаграмму более читабельной. В определение расширения оно не включено.
7.5.13 Шаблоны SpecializationAsEnd1UniversalRestriction, SpecializationAsEnd2UniversalRestriction
Шаблоны SpecializationAsEnd1UniversalRestriction и SpecializationAsEnd2UniversalRestriction указывают на специализацию зависимости с силой универсального ограничения.
Указанные шаблоны имеют одинаковые роли и подобные определения, за исключением использования справочных элементов End1UniversalRestriction и End2UniversalRestriction, соответственно.
SpecializationAsEnd1UniversalRestriction означает, что a и b - это зависимости, a - это подзависимость b, зависимость специализации между a и b является членом универсального ограничения End1UniversalRestriction.
SpecializationAsEnd1UniversalRestriction(, )
ClassOfRelationship()
ClassOfRelationship()
y(SpecializationTriple(y, , )
ClassificationTemplate(y, End1UniversalRestriction))
SpecializationAsEnd2UniversalRestriction(, )
ClassOfRelationship()
ClassOfRelationship()
y(SpecializationTriple(y, , )
ClassificationTemplate(y, End2UniversalRestriction))
Примечание - Утверждение SpecializationAsEnd1UniversalRestriction(a, b) означает, что специализация b в a имеет силу универсального ограничения в классе, являющемся областью a: любая пара элементов b, в которой первый элемент является членом области в a - это член a (соответственно утверждение SpecializationAsEnd2UniversalRestriction(a, b) ограничивает диапазон a). См. 7.4, дальнейшую информацию о представлении, используемом в настоящем шаблоне. Пример - Расширение утверждения SpecializationAsEnd2UniversalRestriction (Допустимая наружная температура 330А-3-874, Допустимая наружная температура) показано в нижеследующей диаграмме:
7.5.14 Шаблоны CardinalityMin, CardinalityMax, CardinalityMinMax (минимум кардинального числа, максимум кардинального числа, минимакс кардинального числа)
Шаблоны CardinalityMin, CardinalityMax и CardinalityMinMax указывают значение кардинального числа.
CardinalityMinMax(a, b, c) означает, что a - кардинальное число, b и c - целые, b - нижняя, а c - верхняя граница значений a. CardinalityMin и CardinalityMax аналогичные утверждения. Они относятся только к минимальному и, соответственно, к максимальному ограничению.
CardinalityMin
CardinalityMax
CardinalityMinMax
CardinalityMin(, )
Cardinality()
INTEGER()
hasMinimumCardinality(, )
CardinalityMax(, )
Cardinality()
INTEGER()
hasMaximumCardinality(, )
CardinalityMinMax(, , )
Cardinality()
INTEGER()
INTEGER()
CardinalityMin(, )
CardinalityMax(, )
Примечание - В соответствии с ИСО 15926 кардинальные числа - это объекты первого класса. В ИСО 15926-2 указано, что отсутствие описанных минимального или максимального значений кардинального числа должно интерпретироваться как отсутствие ограничений (см. 5.2.13.1). В основе представления ИСО 15926-2 лежит логика первого порядка, с общеизвестным допущением, что и нижняя, и верхняя границы задаются явно. Если нижняя граница не задана, то она принимается равной 0. Если верхняя граница не задана, то назначается справочный элемент * Cardinality (кардинальное число) (см. 7.2.1).
Пример - Утверждение CardinalityMin(2:*, 2, * Cardinality), с нижней границей кардинального числа равной 2 и неограниченной верхней границей иллюстрируется нижеследующей диаграммой.
7.5.15 Шаблоны назначения кардинального числа
Шаблоны CardinalityEnd1Min, CardinalityEnd1Max, CardinalityEnd1MinMax, CardinalityEnd2Min, CardinalityEnd2Max и CardinalityEnd2MinMax указывают ограничения кардинальных чисел для зависимостей.
CardinalityEnd1MinMax(a, b) означает, что a - это зависимость, b и c - целые, первая роль a имеет b как минимальное кардинальное число, c - как максимальное кардинальное число. Другие шаблоны настоящей группы имеют тот же паттерн.
CardinalityEnd1Min
CardinalityEnd1Max
CardinalityEnd1MinMax
CardinalityEnd2Min
CardinalityEnd2Max
CardinalityEnd2MinMax
CardinalityEnd1Min(, )
ClassOfRelationship()
INTEGER()
u(CardinalityMin(u, )
hasEnd1Cardinality(, u))
CardinalityEnd1Max(, )
ClassOfRelationship()
INTEGER()
u(CardinalityMax(u, )
hasEnd1Cardinality(, u))
CardinalityEnd1MinMax(, , )
ClassOfRelationship()
INTEGER()
INTEGER()
u(CardinalityMinMax(u, , )
hasEnd1Cardinality(, u))
CardinalityEnd2Min(, )
ClassOfRelationship()
INTEGER()
hasEnd2Cardinality(, u))
CardinalityEnd2Max(, )
ClassOfRelationship()
INTEGER()
u(CardinalityMax(u, )
hasEnd2Cardinality(, u))
CardinalityEnd2MinMax(, , )
ClassOfRelationship()
INTEGER()
INTEGER()
u(CardinalityMinMax(u, , )
hasEnd2Cardinality(, u))
Примечание 1 - Для неограниченных минимальных и максимальных кардинальных чисел следует назначать значения 0 и * Cardinality соответственно. См. определения шаблонов CardinalityMin и т.д. выше.
Примечание 2 - Первые и вторые роли зависимостей определены в таблице протошаблонов (см. приложение D.1).
Примечание 3 - Пусть R - это зависимость, в которой кардинальное число : назначено для первой роли, и кардинальное число : - для второй роли. Это означает, что: (1) каждому экземпляру первой роли с помощью зависимости R поставлено в соответствие минимум и максимум четко выраженных экземпляров второй роли; (2) каждому экземпляру второй роли поставлено в соответствие минимум и максимум четко выраженных экземпляров первой роли.
Пример - Утверждение CardinalityEnd1MinMax(6 М8 bolt assembly, 6, 6) дает (для болтового соединения) пример задания ограничения в соответствии с ИСО 15926-2, 4.10.3, "болтовое соединение "[t] he class of relationship with signature '6 M8 bolt assembly' имеет такое кардинальное число, что каждые 6 болтов M8 ('6 M8 bolts') в любой момент времени связаны ровно шестью отношениями с различными болтами M8". Расширение данного утверждения иллюстрируется нижеследующей диаграммой.
7.5.16 Шаблон TimeRepresentation
Настоящий шаблон задает координаты моментов времени.
TimeRepresentation(a, b, c, d, e, f, g) означает, что a - это представление момента времени, b, c, d, e и f - целые числа, g - действительное число. Координаты величины a задаются числом b, представляющим год, c - месяц, d - день, e - часы, f - минуты, g - секунды.
TimeRepresentation(, , , , , , )
RepresentationOfGregorianDateAndUtcTime()
INTEGER()
INTEGER()
INTEGER()
INTEGER()
INTEGER()
REAL()
hasYear(, )
hasMonth(, )
hasDay(, )
hasHour(, )
hasMinute(, )
hasSecond(, )
Примечание - Настоящий шаблон задает паттерн для определения моментов времени. В то время, как у типа сущности RepresentationOfGregorianDateAndUtcTime все атрибуты кроме hasYear (года) задаются по выбору, в данном шаблоне аргументов по выбору нет.
7.5.17 Шаблон MagnitudeOfProperty (величина свойства)
Шаблон MagnitudeOfProperty задает величину свойства.
MagnitudeOfProperty(a, b, c) означает, что a - это свойство, b - число, c - шкала значений, b - значение а, измеренное по шкале c.
MagnitudeOfProperty(, , )
Property()
ArithmeticNumber()
Scale()
u(PropertyQuantificationTriple(u, , )
ClassificationTemplate(u, ))
Пример - Расширение утверждения MagnitudeOfProperty(Mass 2 kg, 2, Kilogramme) иллюстрируется нижеследующей диаграммой.
7.5.18 Шаблон LowerUpperOfNumberRange
Шаблон LowerUpperOfNumberRange задает верхнюю и нижнюю границы числового диапазона.
LowerUpperOfNumberRange(a, b, с) означает, что a - это числовой диапазон, b и c - числа. Число b является нижней, а число c - верхней границей a.
LowerUpperOfNumberRange(, , )
NumberRange()
ArithmeticNumber()
ArithmeticNumber()
LowerBoundOfNumberRangeTemplate(, )
UpperBoundOfNumberRangeTemplate(, )
Примечание - Если числовой диапазон не ограничен, то используйте справочные элементы Infinity и -Infinity (см. 7.2.1).
Пример - Расширение утверждения LowerUpperOfNumberRange([-213.1 Infinity], 273.1, Infinity) иллюстрируется нижеследующей диаграммой.
7.5.19 Шаблон LowerUpperOfPropertyRange
Шаблон LowerUpperOfPropertyRange задает верхнюю и нижнюю границы диапазона свойств.
LowerUpperOfPropertyRange(a, b, c) означает, что a - это диапазон свойств, b и c - свойства. Свойство b - нижняя граница, свойство c - верхняя граница a.
LowerUpperOfPropertyRange(, , )
PropertyRange()
Property()
Property()
LowerBoundOfPropertyRangeTemplate(, )
UpperBoundOfPropertyRangeTemplate(, )
Пример - Расширение утверждения LowerUpperOfPropertyRange(0 20 Fahrenheit,0 Fahrenheit, 20 Fahrenheit) иллюстрируется нижеследующей диаграммой.
7.5.20 Шаблон LowerUpperMagnitudeOfPropertyRange
Шаблон LowerUpperMagnitudeOfPropertyRange задает протяженность диапазона свойств в терминах максимального и минимального значений по шкале.
LowerUpperMagnitudeOfPropertyRange(a, b, c, d) означает, что a - диапазон свойств, b - шкала, c и d - числа. Величина a имеет c и d, соответственно, своими нижней и верхней границами, измеренными по шкале b.
LowerUpperMagnitudeOfPropertyRange(, , , )
PropertyRange()
Scale()
ArithmeticNumber()
ArithmeticNumber()
, (LowerUpperOfPropertyRange(, , )
MagnitudeOfProperty(, , )
Magnitude Property(, , ))
Пример - Расширение утверждения LowerUpperMagnitudeOfPropertyRange(-40 to 85 Celsius,Celsius,-40, 85) иллюстрируется нижеследующей диаграммой. Примечание: обозначения Temperature -40°С и Temperature 85°С включены, чтобы сделать диаграмму более читабельной. В определение расширения они не входят.
7.5.21 Шаблон PropertyRangeRestrictionOfClass
Шаблон PropertyRangeRestrictionOfClass для класса индивидуальных объектов указывает, что величина свойства ограничена диапазоном значений.
PropertyRangeRestrictionOfClass(a, b, c) означает, что a - это класс, b - зависимость между свойствами, c - диапазон свойств. Каждое назначение свойства b для a принадлежит подзависимости b, диапазон которой ограничен c.
PropertyRangeRestrictionOfClass(, , )
ClassOflndividual()
ClassOflndirectProperty()
PropertyRange()
u(ClassOflndirectPropertyTriple(u, , )
SpecializationAsEnd2UniversalRestriction(u, ))
Пример - Утверждение PropertyRangeRestrictionOfClass(330A-3-874, Working Pressure, 0-300 psi) (которое может представлять утверждение "допустимое рабочее давление насосов типа 330А-3-874 находится в диапазоне от 0 до 300 фунтов на квадратный дюйм") расширяется до нижеследующего представления.
7.5.22 Шаблон PropertyRangeMagnitudeRestrictionOfClass
Шаблон PropertyRangeMagnitudeRestrictionOfClass задает диапазон значений свойств, применимый к классу индивидуальных объектов.
PropertyRangeMagnitudeRestrictionOfClass(a, b, c, d, e) означает, что a - это класс индивидуальных объектов, b - зависимость для свойства, c - шкала, d и e - действительные числа. Каждое свойство b имеет значение в диапазоне от d до e, измеренное по шкале c.
PropertyRangeMagnitudeRestrictionOfClass(, , , , )
ClassOflndividual()
ClassOflndirectProperty()
Scale()
ExpressReal()
ExpressReal()
u(PropertyRangeRestrictionOfClass(, , u)
(ldentificationByNumber(, )
ldentificationByNumber(, )
LowerUpperMagnitudeOfPropertyRange(u, , , )))
Пример - Утверждение PropertyRangeMagnitudeRestrictionOfClass(330A-3-874, Working Pressure, pound-force per square inch, 0, 300) имеет нижеследующее расширение.
7.5.23 Шаблон SymbolOfScale
Шаблон SymbolOfScale указывает, что символ представляет шкалу.
SymbolOfScale(a, b, c) означает, что a - шкала, b - строка. b - это идентификатор a, обозначенный как единица измерения.
SymbolOfScale{, )
Scale()
ExpressString()
Classifiedldentification(, , UomSymbolAssignment)
Примечание - Настоящий шаблон использует справочный элемент UomSymbolAssignment. Это зависимость, используемая для выбора символа названия. См. 7.2.2.
Пример - Расширение утверждения SymbolOfScale(Celsius,DegrC) иллюстрируется нижеследующей диаграммой.
7.5.24 Шаблон DimensionUnitNumberRangeOfScale
Шаблон DimensionUnitNumberRangeOfScale задает размерность, числовой диапазон и обозначение шкалы.
DimensionUnitNumberRangeOfScale(a, b, с, d) означает, что a - это шкала, b - строка, c - размерность свойства, d - числовой диапазон, b - символ единицы измерения для шкалы, c - размерность, d - числовой диапазон шкалы.
DimensionUnitNumberRangeOfScale(, , , )
Scale()
ExpressString()
SinglePropertyDimension()
NumberRange()
SymbolOfScale(, )
ScaleТройк(, , )
Пример - Расширение утверждения DimensionUnitNumberRangeOfScale(Celsius, DegrC, Temperature, [-273.1 to Infinity]) иллюстрируется нижеследующей диаграммой.
7.5.25 Шаблон ClasslnvolvementStatusBeginning
Настоящий шаблон специализирует шаблон InvolvementStatusBeginning путем наложения ограничения: элемент, вовлеченный в операцию, должен быть классом.
ClasslnvolvementStatusBeginning(a, b, с, d, e, f) означает, что a - это класс, b - операция, c - тип вовлечения, d - статус утверждения, e - утверждающее лицо, f - момент времени. Объект a вовлечен в операцию b, c - тип вовлечения. Операция должна быть утверждена. d - тип статуса утверждения, e - утверждающее лицо, f - время начала операции.
ClasslnvolvementStatusBeginning(, , , , )
Class()
Activity()
ClassOflnvolvementByReference()
ClassOfApprovalByStatus()
Possiblelndividual()
RepresentationOfGregorianDateAndUtcTime()
InvolvementStatusBeginning(, , , , , ) 7.5.26 Шаблон ClasslnvolvementSuccession
ClasslnvolvementSuccession(a, b, c, d, e, f, g, h) означает, что два класса a, b вовлечены в одинаковой степени в операцию c. За вовлечением a с момента времени h происходит вовлечение b. Утверждающее лицо g назначает статус e для вовлечения a и статус f для вовлечения b.
Примечание 1 - В соответствии с ИСО 15926 классы являются неизменными (eternal class), то есть не имеющими жизненного цикла. Вместе с тем, некоторые высокоспециализированные классы могут быть пересмотрены (это тоже операция). Настоящий шаблон используется для соединения классов наследников (successor). Шаблон квалифицирует последующее вовлечение путем указания операции, утверждающего лица и отметки времени.
ClasslnvolvementSuccession(, , , , , , , )
Class()
Class()
Activity()
ClassOflnvolvementByReference()
ClassOfApprovalByStatus()
ClassOfApprovalByStatus()
Possiblelndividual()
RepresentationOfGregorianDateAndUtcTime()
(BeginningOfTemporalPart(, , )
lnvolvementByReferenceTriple(, , )
lnvolvementByReferenceTriple(, , )
ClassificationTemplate(, )
ClassificationTemplate(, )
StatusApproval(, , )
StatusApproval(, , )
SuccessionOflnvolvementByReference(, ))
8 Шаблоны как справочные данные 8 Шаблоны как справочные данные Если шаблон заносится в библиотеку справочных данных (RDL) в соответствии с ИСО 15926, то ему назначается идентификатор в соответствии с ИСО 15926. Хранение шаблона в библиотеке RDL обеспечивает эффективное совместное использование паттернов информации ИСО 15926.
8.1 Шаблонные подписи и аксиомы шаблонов 8.1 Шаблонные подписи и аксиомы шаблонов В соответствии с ИСО 15926 библиотека RDL хранит справочные данные, представленные на языке ИСО 15926-2. Язык ИСО 15926-2 и языки шаблонов, используемые в настоящем стандарте для выражения аксиом шаблонов, содержат логические операторы и кванторы. Выразительная сила указанных языков не ограничивается возможностями ИСО 15926-2. Формальные требования к представлению шаблонов в библиотеке RDL ограничиваются аспектом шаблонной подписи.
Библиотечное RDL-представление шаблона должно включать аксиому шаблона как аннотацию. Жесткие требования на синтаксис аксиом (превышающие стандартные требования к выражениям как формулам первого порядка в соответствии с языком ИСО 15926-2, рассматриваемым в настоящем стандарте в приложении В) не накладываются.
8.2 Представление class_of_multidimensional_object 8.2 Представление class_of_multidimensional_object Если шаблон представляется как справочные данные, то он имеет тип сущности ClassOfMultidimensionalObject (по ИСО 15926-2). Экземпляры шаблонов имеют, соответственно, тип сущности MultidimensionalObject.
Шаблонная подпись, в соответствии с настоящим стандартом, является ограниченной формой объекта ClassOfMultidimensionalObject. В соответствии со спецификацией языка EXPRESS, атрибуты данного типа сущности представляют собой следующие списки: кардинальные числа, элементы по выбору, параметры, позиции параметров, роли. Из данного перечня кардинальные числа, параметры и позиции параметров для шаблонных подписей не используются. Библиотечное (RDL) представление данные атрибуты не указывают.
Требования к введению ролей в шаблон приведены в 5.2. В соответствии с требованиями RDL каждая роль представляется справочным элементом типа RoleAndDomain.
Примечание - Тип сущности RoleAndDomain определен ИСО 15926-2 следующим образом: "Сущность role_and_domain - это класс, указывающий область и роль для окончания отношения class_of_relationship или объекта class_of_multidimensional_object".
Для каждой роли ее название является обозначением элемента реквизита библиотеки RDL для типа сущности RoleAndDomain. Тип роли, служащий ограничением диапазона допустимых значений, задается ограничениями, применимыми к указанному элементу библиотеки RDL.
Роли шаблонных подписей указываются атрибутом roles в виде упорядоченного списка справочных элементов типа RoleAndDomain. Шаблон, в соответствии с настоящим стандартом, не имеет ролей по выбору. Поэтому атрибут optional_element для шаблонной подписи должен быть списком. Длина этого списка равна длине списка атрибута roles, каждый элемент которого имеет значение TRUE.
8.2.1 Роли, ограниченные конструктивами библиотеки справочных данных RDL
Каждая роль, на тип которой наложены ограничения конструктивами (конструкциями) библиотеки RDL, представляется справочным элементом с типом сущности RoleAndDomain, на реквизиты которого накладываются ограничения.
8.2.2 Роли, ограниченные только типом сущности
Настоящий стандарт допускает определение ролей шаблона, ограниченных только типом сущности. В подписи базового шаблона, таким образом, ограничивается каждая роль.
В соответствии с ИСО 15926-2 каждая роль объекта ClassOfMultidimensionalObject ограничена классом типа RoleAndDomain. Не существует требований наложения ограничений ролей непосредственно на тип сущности. Таким образом, библиотека RDL, представляющая шаблоны, определенные в соответствии с настоящим стандартом, должна задавать паттерн (форму представления) типов сущностей, таких как справочные классы RoleAndDomain. Для каждой роли, ограниченной только типом сущности, библиотека RDL должна представлять тип сущности как справочный элемент RoleAndDomain. Данное представление применяет метод "трамбования" (punning), используемый также для представления знаний ([9]).
Примечание - Настоящий подход также использован в ИСО/ТС 15926-4. В указанной части ИСО 15926 выбор типа сущности описан как выбор множества классов, используемых в качестве суперклассов для стандартизованных основных справочных классов.
Приложение A (обязательное). Регистрация информационного объектаПриложение A Регистрация информационного объекта А.1 Идентификация документа
Для однозначной идентификации информационного объекта в открытой системе настоящему стандарту присвоен следующий идентификатор: {iso standard 15926 part(7) version(l)} Смысл идентификатора определен в ИСО/МЭК 8824-1. Описание приведено в ИСО 10303-1.
Приложение B (обязательное). Листинг: ИСО 15926-2 в логике первого порядкаПриложение B Листинг: ИСО 15926-2 в логике первого порядка B.1 Общие положения
Настоящее приложение содержит множество аксиом в логике первого порядка FOL, представляющих практические реализации ИСО 15926-2 на языке EXPRESS, используемые в настоящем стандарте. Результаты трансляции практической реализации ИСО 15926-2 с языка EXPRESS в настоящее представление в логике первого порядка FOL представлены в 4.1. B.2 Аксиома генеральной совокупности
x(Thing(x))
B.3 Аксиомы подтипов
B.4 Абстрактные аксиомы
B.5 Аксиомы непересечения
B.6 Аксиомы ролей
ClassOflndividualUsedlnConnection(x) ^ hasClassOfConnection(x; y) ClassOfConnectionOflndividual(y)
ClassOfRepresentationOfThing(y) B.7 Аксиомы дополнительного ограничения диапазона Приложение C (обязательное). Листинг: протошаблоны Приложение C Листинг: протошаблоны В настоящем приложении рассмотрено полное множество протошаблонов, определенных в настоящем стандарте. См. также 4.3. С.1 Протошаблоны реляционных типов сущностей
C.2 Протошаблоны для подтипов реляционных типов сущностей
C.3 entity Triple
entityTriple(x; y; z)(ApprovalTriple(x; y; z) v ArrangementOflndividualTriple(x; y; z) v
TemporalBoundingTriple(x; y; z) v TemporalSequenceTriple(x; y; z) v TemporalWholePartTriple(x; y; z) v
Приложение D (справочное). Таблица протошаблоновПриложение D Таблица протошаблонов В таблице D.1 представлен список всех протошаблонов и их ролей.
Пример 1 - Листинг протошаблона ApprovalTemplate
Это означает, что первая роль шаблона - это hasApproved, и экземпляры первой роли должны быть экземплярами типа сущности Relationship. Вторая роль - это hasApprover, и экземпляры настоящей роли должны быть экземплярами типа сущности Possiblelndividual.
Таблица D.1 - Сжатый листинг протошаблонов
Приложение E (справочное). Рекурсивное и нерекурсивное расширение шаблона Приложение E Рекурсивное и нерекурсивное расширение шаблона E.1 Номенклатура
На компьютерном языке слова макрос, шаблон, встраивание (замещение вызова) используются для обозначения различных частично перекрывающихся понятий.
Макрос:
- на языке LISP макрос - функция, выполняемая в процессе компиляции. Она формирует вспомогательную программу, которая встраивается в нужное место. Так как данная функция работает в произвольном коде, это весьма общий механизм;
- в препроцессоре языка C (cpp) вызов макроса заменяется тестом на расширение. После этого снова производится сканирование для поиска вызовов макроса. Обычно препятствий для рекурсии нет, однако это приводит к зацикливанию препроцессора. Блок GNU (cpp) может выявлять и блокировать рекурсию; ________________ GNU - это рекурсивный акроним "GNUs Not Unix".
- в языке ТеХ, макросы расширяются аналогично (cpp), рекурсия допускается. Но здесь также используются условные структуры данных, позволяющие предотвращать рекурсию.
Шаблон:
- в языке C++ шаблоны, изначально рассматривавшиеся как средства описания параметрического полиморфизма типов данных, также могут быть рекурсивными. Допускаются несколько расширений одного шаблона с различными аргументами. Компилятор предпочитает самое конкретное определение, соответствующее конкретной реализации. Это дает возможность определить завершающий "базовый случай". Данная ситуация часто имеет место при так называемом метапрограммировании шаблона;
- шаблоны кодов в средах IDE4. ________________ Интегрированная среда разработки.
Встраивание (замещение вызова): вычислительный процесс, где вызовы функции/процедуры не компилируются в код, который сначала использует стековую память, чтобы запомнить свое предыдущее состояние, а затем "прыгает" в код функции. Вместо этого тело функции расширяется в месте вызова. Данный процесс не откликается на рекурсивные вызовы или, по крайней мере, ограничивает глубину замещаемого вызова. Некоторые компиляторы производят так называемое встраивание "за кулисами". В языке GNU функцию можно также объявить как встраивание, чтобы подсказать компилятору порядок действий. В отличие от ограничений на рекурсию, семантика функции замещения вызова похожа на семантику нормальной функции, но код работает быстрее.
Так как настоящий стандарт определяет работу с шаблонами, то мы далее будем говорить о механизмах работы шаблонов при обсуждении различных вариантов их определения. Е.2 Использовать рекурсию или нет?
Имеет место существенная разница между шаблонами и макромеханизмами, допускающими циклические (рекурсивные) определения и не допускающими их.
Обсуждение данного вопроса см. в 1.3.1 и 2.2.2 [11]. Различие между рекурсивными и нерекурсивными макросами то же самое, что различие между циклическими и ациклическими элементами ТВох.
Пример надлежащего определения одного нерекурсивного механизма расширения макроса приведен в [16].
Рассмотрим абстрактное описание множества определений шаблона. Пусть N - это множество возможных имен шаблонов или других частей языка. Пусть определение шаблона дает определение некоторого имени nN, ссылающегося на (или использующее) имена различных других шаблонов или других элементов с именами N, например, , , ..., ... . Пусть , если на имеется ссылка в определении n. Например, для определения шаблона: SpecOrEqual(a,b) := Spec(a,b)a = b (1)
SpecStar(a,b) := (x.Spec(a,x)SpecStar(x,b))a = b (2)
Для нерекурсивных механизмов шаблонов, зависимость ">" для всех определений должна быть ациклической. То есть не должно существовать последовательности , где . В частности, не существует такое , для которого .
Другими словами, транзитивное замыкание >+ должно быть нерефлексивным.
В частности, пример (1) допускается в нерекурсивных механизмах, а пример (2) не допускается.
Обычно множество имен N разделяют на множество примитивных имен P и множество определенных имен D, N=PD, PD=0. При этом не существует определений шаблонов для имен из P, в то время как любое имя в D должно иметь определение.
Если механизм шаблона работает путем повторной замены ссылок (на определенные имена nD) на тело определения n, это означает, что любой вход в конечном счете (в результате большого конечного числа шагов) приводит к чему-то, что содержит только имена из P, то есть примитивные имена. Видно, что результат не зависит от порядка, в котором расширяются полученные определенные имена.
Можно видеть, что оценка шаблона путем его расширения непротиворечива с аксиоматической точки зрения. Для каждого определения шаблона: , где тело b - это комплексный термин, возможно содержащий х, у, ..., определим аксиому ________________ Если это есть шаблоны формул, то можно взять вместо =.
.
и соберем все указанные аксиомы во множество Ax. Теперь, если s - это результат повторного расширения всех определенных имен в t, то справедливо: x | = s = t Из аксиоматического прочтения определений шаблонов следует, что расширение s семантически эквивалентно оригинальному члену t. Это можно доказать по индукции, рассматривая шаги расширений и повторные приложения леммы подстановки. ________________ Обратное не обязательно верно, так как из Ax может следовать много отношений, которые нельзя доказать только путем расширения шаблона.
Следует очень внимательно относиться к аргументам шаблонов: если допустимы аргументы "более высокого порядка" (то есть имеются аргументы, которые используются в расширении как функции), то циклы могут появиться неожиданно. Например, после определения: SelfApp(x):=x(x) использование расширения SelfApp(SelfApp) приводит к зацикливанию, что уничтожает все достоинства рассматриваемого механизма. Если исключать аргументы более высокого порядка не хочется, то нужно подобрать для аргументов соответствующую систему типов, исключающую данную проблему.
С другой стороны, рекурсивные механизмы шаблонов ограничений на зависимость ">" не накладывают. В частности, можно использовать рекурсивные определения вида (2), рассмотренные выше. Очевидным преимуществом здесь является возможность представить комплексные свойства, например, транзитивное замыкание. Недостатки:
- нет гарантии, что выход в конкретном оконечном устройстве не зависит от порядка расширения;
- можно получить полный по Тьюрингу механизм, то есть нетипированное лямбда-исчисление. Программировать с шаблонами тоже можно. Настоящий программист всегда с этим справится. Правда, механизм шаблонов - плохой язык программирования: его трудно понять, в нем часто ошибаются. Метапрограммирование шаблонов на языке C++ - типовой пример. Е.3 Прочие технические вопросы
Меры предосторожности для нерекурсивных механизмов шаблонов:
- может оказаться интересным использование тела шаблона, не являющегося правильным (действительным) членом. Например, определение & := позволяет использовать предпочтительный символ в качестве связующего элемента. Если расширение имеет вид строки, то это реально сработает. Однако это сильно затрудняет анализ системы определений шаблона;
- в контексте первого порядка аргументы шаблона не квантифицируются в теле определения: t(x):=x.p(x), это недопустимо и не имеет смысла;
- реализация должна обеспечить переименование связанных переменных при необходимости. Для шаблона t(x):=x.p(x,y) реализация t(y) не сводится к: у.p(у,у). Это известно как захват переменной. Этого можно избежать, например, путем переименования связанных переменных: y'.p(y,y'). Приложение F (справочное). Пример расширения шаблонаПриложение F Пример расширения шаблона В настоящем разделе рассмотрен пример, иллюстрирующий, как выражения, использующие шаблоны, расширяются и соответствуют выражениям языка ИСО 15926-2. Три простых утверждения шаблона расширяются на формулу первого порядка с помощью только предикатов языка ИСО 15926-2. Кванторы данной формулы затем заменяются константами, соответствующими идентификаторам элементарных данных на основе ИСО 15926-2. Результаты проверяются на логическую достоверность. F.1 Пример расширения шаблона
Нижеследующее утверждение приведено на языке шаблона (см. предшествующие разделы). Следующие разделы показывают результаты расширения данного утверждения, при этом шаблоны заменяются утверждениями на языке ИСО 15926-2.
LowerUpperOfNumberRange([-273.1 to Infinity]; -273.1; Infinity) ^
DimensionUnitNumberRangeOfScale(Celsius; DegrC;
Temperature; [-273.1 to Infinity]) ^
PropertyRangeMagnitudeRestrictionOfClass(PressureTransmitter;
AmbientTemperature; Celsius; -40;+40) F.2 Результат расширения в соответствии с аксиомами шаблонов
Шаблоны расширяются в соответствии с их аксиоматическими определениями. Получается экзистенциально квантифицированная формула первого порядка, в которой все предикаты шаблона заменяются на тип сущности (атрибуты) ИСО 15926-2.
F.3 Задание значений кванторов существования
Кванторы существования заменяются на их значения (константы). Это аналогично назначению идентификаторов элементов данных в архиве данных ИСО 15926. Результатом является множество элементарных утверждений языка ИСО 15926-2. Используемые константы соответствуют данным, реализующим типы ИСО 15926-2 аналогично данным в библиотеках справочных данных.
NumberRange([-273.1 to Infinity])
ArithmeticNumber(-273.1)
ArithmeticNumber(Infinity)
LowerBoundOfNumberRange(X)
hasClassified(X;-273.1)
hasClassifier(X; [-273.1 to Infinity])
UpperBoundOfNumberRange(Y)
hasClassified(Y; Infinity)
hasClassifier(Y; [-273.1 to Infinity])
Scale(Celsius)
ExpressString(DegrC)
SinglePropertyDimension(Temperature)
Thing(Celsius)
ClassOfClassOfldentification(UomSymbolAssignment)
ClassOfldentification(Z)
hasPattern(Z; DegrC)
hasRepresented(Z; Celsius)
Classification(U)
hasClassified(U;Z)
hasClassifier(U; UomSymbolAssignment)
hasCodomain(Celsius; [-273.1 to Infinity])
hasDomain(Celsius;Temperature)
ClassOflndividual(PressureTransmitter)
ClassOflndirectProperty(AmbientTemperature)
ExpressReal(-40)
ExpressReal(+40)
PropertyRange(W)
ClassOflndirectProperty(V5)
hasClassOfPossessor(V5; PressureTransmitter)
hasPropertySpace(V5;W)
ClassOfRelationship(V5)
ClassOfRelationship(AmbientTemperature)
Specialization(V6)
hasSubclass(V6; V5)
hasSuperclass(V6; AmbientTemperature)
Classification(V7)
hasClassified(V7; V6)
hasClassifier(V7; End2UniversalRestriction)
Thing(V8)
ClassOfldentification(V9)
hasPattern(V9; -40)
hasRepresented(V9; V8)
Thing(V10)
ClassOfldentification(V11)
hasPattern(V11;+40)
hasRepresented(V11; V10)
ArithmeticNumber(V8)
ArithmeticNumber(V10)
Property(V12)
Property(V13)
LowerBoundOfPropertyRange(V14)
hasClassified(V14; V12)
hasClassifier(V14;W)
UpperBoundOfPropertyRange(V15)
hasClassified(V15; V13)
hasClassifier(V15;W)
PropertyQuantification(V16)
haslnput(V16; V12)
hasResult(V16; V8)
Classification(V17)
hasClassified(V17; V16)
hasClassifier(V17; Celsius)
PropertyQuantification(V18)
haslnput(V18; V13)
hasResult(V18; V10)
Classification(V19)
hasClassified(V19; V18)
hasClassifier(V19; Celsius) F.4 Проверка на соответствие
Множество данных, полученное путем расширения и задания значений (F.3) можно проверить на соответствие ИСО 15926-2. Для этого множество данных интерпретируется как элементарные утверждения, расширяющие аксиоматизацию ИСО 15926-2 (приложение В). Результирующее множество аксиом можно проверить с помощью программы автоматического доказательства теорем и базовой логики первого порядка, а также с помощью более специализированной дедуктивной программы. Примеры последней включают программы автоматического доказательства с помощью описательной логики.
Приложение G (справочное). Проверка соответствия с помощью когерентной логикиПриложение G Проверка соответствия с помощью когерентной логики Проверка показывает, что язык формализации ИСО 15926-2 и настоящего стандарта попадает внутрь фрагмента логики первого порядка (FOL), известного как когерентная логика (CL), составленная из формул вида: , где - это элементы (атомы), а - их сопряжения. При записи формул когерентной логики (CL) универсальные кванторы обычно опускают. При этом свободные переменные неявно универсально квантифицируются. В примере из приложения В:
- универсальная аксиома x(Thing(x)) - это формула когерентной логики (CL)
Thing(x); - аксиомы непересечения могут быть записаны в кодах с помощью операции , например, (lntegerNumber(x)(MultidimensionalNumber(x))) записывается в виде: IntegerNumber(x)MultidimensionalNumber(x) - все другие аксиомы уже имеют форму CL.
Отметим, что логика CL включает оба квантора и . Но их возможное чередование ограничено: единственная допустимая смена кванторов производится благодаря квантору существования во втором элементе, который может появляться внутри области применения универсальных кванторов, вмещающих всю формулу: hasClassOfClassOfWhole(x, y)(ClassOfClassOfComposition(x)CtossOfNamespace(x)). Рассматриваемая здесь проблема - это проблема соответствия множеств T и : для заданного множества T формул когерентной логики (CL) (когерентная теория) и множества формул типа необходимо идентифицировать такие условия для T и , что проверка множества T на соответствие логике первого порядка (FOL) будет разрешима. Ключевое наблюдение: достаточно проверить множество на соответствие когерентной логике (CL). ________________ Отметим, что указанное покрывает проблему проверки соответствия из раздела K.2: выполнить проверку соответствия , где - формула, представляющая аксиоматизацию ИСО 15926-2, S - множество шаблонов и - это нормальная формула, R(S) для - замкнутая формула типа , подлежащая проверке на соответствие.
Важное место CL: когерентные формулы можно использовать как генерирующие правила, формирующие полную процедуру доказательства для логики CL. В настоящем примечании мы используем ту же идею для решения проблемы соответствия множеств T,. Реализации процедуры способствуют знание констант и знание основных элементарных формул (число которых всегда конечно). Мы изначально предполагаем, что множество содержит, по крайней мере, один символ константы. Если же существует индивидуальный объект, о котором мы ничего не знаем, то используется представление Thing(a).
Технически мы представляем последовательность приложений, которое является строкой приложений правил. Для каждой последовательности приложений s, fml(s) - это множество формул и dom(s) - это множество констант. Множество последовательностей приложений из индуктивно определяется следующим образом:
- пустая строка - это последовательность приложений;
- fml()= и dom() - это множество символов констант из fml().
- Если s - это последовательность приложений, s.r означает, что реализация r - одна из нижеследующих:
- замкнутая реализация C для формулы из T такая, что каждое fml(s). Тогда fml(s.r)=fml(s){C} и dom(s.r)=dom(s);
- , где fml(s), и ни один из членов s не относится к . Тогда fml(s.r) =fml(s){} и dom(s.r)=dom(s);
- , где каждое fml(s). Тогда fml(s.r)=fml(s){} и dom(s.r) =dom(s);
- xA(x)A(t) для xA(x)fml(s) такое, что ни одна из формул формы A(t') не относится к fml(s). В данном случае t - это новый символ константы, fml(s.r)=fml(s){A(t)} и dom(s.r)=dom(s){t};
- A(a)A(b) для A(a), и либо a=b, либо b=a из fml(s). Тогда fml(s.r)=fml(s){A(b)} и dom(s.r)=dom(s).
Необходимо пояснить невозможность использования сопряжения "или" в следующем случае. Из последовательности приложений для сущности {Possiblelndividual(a)AbstractObject(a)} следует, что либо a - это возможный индивидуальный объект, либо a - абстрактный объект, но не то и другое вместе.
Необходимо пояснить возможность отсутствия , когда в логике CL можно избежать сколемизации. Если, например, выведено R(a, b), то xR(a, x) дальше не может быть расширено (свидетель уже есть). Это основной источник улучшения полной логики первого порядка FOL (также используемый в механизмах доказательства описательной логики DL).
Легко заметить, что соответствие по отношению к T разрешимо, если для любого последовательности приложений s из
конечно, где ts означает, что t - это начальная последовательность s.
Это типовой случай, когда можно ограничить число новых членов, появляющихся вследствие отказа от . Единственные аксиомы формализации по ИСО 15926-2, дающие формулы с кванторами существования, - это аксиомы ролей, например: ClassOfClassOfComposition(x)hasClassOfClassOfWhole(x, y)ClassOfClassOflndividual(y)
Последняя аксиома является потенциально вредной. Если a - это композиция ClassOfClassOfComposition, то она может генерировать новый член b как заполнитель hasClassOfClassOfWhole, из которого следует ClassOfClassOflndividual(b). Но так как это действительно влечет ClassOfClassOfComposition(b), то не существует неограниченная генерация новых членов на базе указанных аксиом.
Соединение с когерентной логикой CL не противоречит ИСО 15926-2/настоящему стандарту. Имеет смысл ее дальнейшее изучение по нескольким причинам:
- синтаксическая форма формул когерентной логики (CL) допускает использование очень простой процедуры доказательства, известной как "forward ground reasoning" (опережающее базовое логическое обоснование). Данная процедура эффективна для формул когерентной логики (CL), с ее помощью легко строить умозаключения. Предполагается, что алгоритмы проверки соответствия, основанные на логике CL, могут быть использованы для настоящего стандарта и ИСО 15926-2, которые более эффективны, чем алгоритмы, основанные на трансляции в описательную логику (DL). Знание о структурах ИСО 15926-2 может быть использовано при построении исследовательских процедур;
- логика CL более выразительна, чем логика DL. Можно идентифицировать разрешимые фрагменты логики CL, которые более удобны, чем логика DL для приложений типа ИСО 15926, например, при указании ограничений на архивы данных;
- когерентная логика CL конструктивна. Это означает, что она более структурирована, чем логика первого порядка FOL. Во многих ситуациях рассматриваемая структура способствует изучению метасвойств.
Так как когерентная логика - это недостаточно изученный фрагмент логики первого порядка FOL, мы здесь приводим некоторые ключевые сведения:
- когерентная логика CL возникла благодаря норвежцу Торалфу Сколему (Thoralf Skolem), разработавшему ее в 1920 г. Его целью было получение метаматематических результатов в теории кристаллических решеток и проективной геометрии [24], [25]. Она также известна как геометрическая логика;
- недавно когерентная логика CL была открыта повторно: см. работу [15] (на предмет обоснования ее соответствия компьютерной науке) и работу [12] (в части достигнутого прогресса в компьютерных исследованиях, выполненных на основе когерентной логики CL); - "восходящие" процедуры доказательств, используемые сегодня в дедуктивных базах данных, и система SATCHMO [21] (для логик слабее когерентной логики CL) описаны в работе [24];
- когерентная логика CL расширяет логику дизъюнкта Хорна [19], на котором основан язык программирования Пролог [20]. В нем, в заключение, можно получить полную дизъюнкцию экзистенциально квантифицированных сопряжений элементов;
- неразрешимость когерентной логики CL без символов функций доказана в работе [13];
- когерентная логика CL менее выразительна, чем полная логика первого порядка FOL. Вместе с тем, существует естественная трансляция FOL в CL [14], дающая удовлетворительные результаты, правда, путем резкого увеличения громоздкости формул. Каждая теория первого порядка имеет консервативное (определительное) расширение, эквивалентное когерентной теории.
Приложение H (справочное). Формальные ограничения вне шаблонаПриложение H Формальные ограничения вне шаблона Язык шаблона может быть встроен в более выразительный язык первого порядка. С помощью богатых формализмов можно получить выражения для широкого диапазона ограничений, представляющих практический интерес.
Пример 1 - Транзитивность сущности Specialization может быть показана следующим образом. xyz(SpecializationTemplate(x, y)SpecializationTemplate(y, z)SpecializationTemplate(x, z)). Пример 2 - Если a - это член b, то b может не быть членом a. Настоящее ограничение можно представить в виде: xy(ClassificationTemplate(x, y)ClassificationTemplate(y, x)). Приложение J (обязательное). Семантика шаблонаПриложение J Семантика шаблона J.1 Правило переписывания
Нижеследующее определение взято дословно из определений 3.1 и 3.3 работы [22]. Изначально они представлены в работе [23], где система переписывания паттерна (формы представления) называется системой переписывания высокого порядка.
Член t типа в -нормальной форме называется паттерном (высокого порядка), если каждое свободное использование переменной F является подчленом F() для t, так что является -эквивалентом списка четко выраженных связанных переменных.
Правило переписывания - это пара -членов r, таких, что не является свободной переменной. и r имеют одинаковый базовый тип и fv()fv(r). Правило переписывания паттерна - это правило переписывания, где - это паттерн. Система переписывания паттерна (PRS) - это множество правил переписывания паттернов.
Примечание - Указанные определения являются очень общими:
- элементы первого порядка N(x, у, ...), являющиеся левыми частями определений шаблонов, фактически являются паттернами (в этом случае список аргументов пустой);
- если определение шаблона, то - это правило переписывания паттерна.
Указанные определения использованы вместо стандартных понятий переписывания первого порядка. Это гарантирует, что использование кванторов тела определения шаблона не нанесет вреда. Они также обеспечат достаточно общие рамки рассмотрения в том случае, когда механизм шаблона потребуется расширить в будущем. J.2 Система переписывания паттернов, соответствующая множеству шаблонов
Система переписывания паттернов R(S), соответствующая множеству шаблонов S - это множество всех правил для всех .
Нижеследующая лемма гарантирует, что если учащается появление шаблонов в какой-либо заданной формуле, то: а) в конечном счете, этот процесс прекращается, то есть зацикливания не происходит. Можно последовательно расширять шаблоны до тех пор, пока из них не получится формула, не имеющая к шаблонам никакого отношения; б) если эта формула и содержит ссылки на шаблоны, то, в конечном счете, все равно, в каком порядке происходит расширение, так как результат такого последовательного расширения всегда один и тот же. Лемма 1 Форма представления R(S) является конечной и конфлюэнтной для любого множества логических шаблонов S.
Доказательство: Для доказательства конечности сначала определяется порядок на множестве names(S) для всех базовых символов и названий шаблонов. Пусть NA, если и только если существует определение шаблона такое, что A появляется в . - это транзитивное замыкание, если определено. Конструкция множества логических шаблонов гарантирует, что фактически является порядком, так как не может иметь циклов. Кроме того, вследствие индуктивного характера определения множеств логических шаблонов понятие хорошо обосновано. Это означает, что расширение мультимножества для - это задание хорошо обоснованного порядка на мультимножествах символов.
Теперь пусть - это мультимножество базовых символов и названий шаблонов в . В частности, если символ появляется несколько раз в , то он должен появиться в такое же количество раз. Если однократное использование шаблона N в расширено по определению до , то появляется в N на один раз меньше , не считая дополнительных появлений символов в теле определения шаблона, что меньше N по отношению к . По определению расширения мультимножества в процессе упорядочивания, это означает, что . Так как вполне обосновано, то сразу следует, что расширение шаблона конечно.
Для доказательства конфлюэнтности, рассмотрим лемму "критической пары" для системы переписывания паттернов. Это теорема 4.7 в работе [22]. Покажем, что все критические пары в R(S) сходятся к одной точке. Это тривиальный случай, так как в R(S) критических пар нет: никаких символов не появляется в более чем одной левой части правила в R(S). Что и требовалось доказать.
Этим можно воспользоваться для определения семантики шаблонов просто как окончательного результата последовательного расширения. Данная лемма гарантирует, что полученное определение будет правильным.
Пример - Множество шаблонов:
{A(x) y.(B(y)R(х, у)).
B(x)C(x)D(x) }
расширено до формулы A(a)B(b) в виде:
A(a)B(b)
A(a)B(b)
A(a)B(b)
Видно, что получился тот же результат.
J.3 Расширение шаблона
Для множества шаблонов STS() и формулы типа над символами во множестве names(S), определено расширение по отношению к S как нормальной формы для R(S). Это есть уникально определенный результат последовательного применения правил переписывания из R(S) к .
Приложение K (обязательное). Свойства расширения шаблонаПриложение K Свойства расширения шаблона K.1 Логическое считывание определений шаблонов
Если определения шаблона на множестве рассматриваются как аксиомы эквивалентности, то сама формула и ее расширение эквивалентны по отношению к указанным аксиомам.
Лемма 2 Пусть STS() - это множество шаблонов, а и - это формулы типа над символами из множества names(S). Если - это расширение , то .
Доказательство леммы 2. Так как каждый шаг расширения шаблона заменяет одну подформулу другой, эквивалентной ей в соответствии с рассматриваемыми аксиомами, то результирующая формула будет также эквивалентна исходной. Что и требовалось доказать.
Пример - Аксиомы, соответствующие множеству шаблонов, рассмотренному выше:
x. (A(x)y.(B(y)R(x, y)))
y. (B(x)C(x)D(x)).
В соответствии с леммой 2, указанные две аксиомы подразумевают эквивалентность
A(a)B(b)
y.((C(y)D(y))R(a, y))(C(b)D(b))
K.2 Разрешимость соответствия ИСО 15926-2
Для практических приложений определений шаблонов представляет интерес нижеследующая проблема. Пусть заданы:
- аксиоматизация по ИСО 15926-2 (формула );
- множество шаблонов S;
- формула типа без свободных переменных.
Необходимо проверить непротиворечивость выражения .
Примечание - может быть громоздкой формулой, ссылающейся на большое количество определенных шаблонов. Необходимо удостовериться в том, что вместе с определениями шаблонов, не противоречат базовой аксиоматике ИСО 15926-2.
Пример - Аксиоматика ИСО 15926-2 включает аксиомы:
Activily(x)Possiblelndividual(x)
Relationship(x)AbstractObject(x)
(Possiblelndividual(x)AbstractObject(x)).
Из определений шаблонов: AB(x)A(x) B(x)
A(x)Activily(x)
B(x)Relationship(x)
=AB(a)
следует, что a - это и Possiblelndividual, и AbstractObject, что противоречит ИСО 15926-2. Данный пример это показывает. Для более громоздкой формулы , большего набора шаблонов и, особенно, для большего потребного число аксиом ИСО 15926-2 постановка указанной проблемы затрудняется. Целесообразно иметь возможность ставить такую проблему автоматически.
Нижеследующая лемма утверждает, что для решения указанной проблемы сначала нужно расширить все шаблоны.
Лемма 3 Пусть - это расширение по отношению к множеству шаблонов S. Тогда формула непротиворечива только в том случае, если непротиворечива формула .
Доказательство. Для любой модели, удовлетворяющей формуле из леммы 2 следует, что она также удовлетворяет , и, таким образом, справедливо . С другой стороны, предположим, что существует модель M для . Ни , ни названий шаблонов не содержат. Поэтому M может быть расширена по индукции над конструкцией S до новой модели M', интерпретирующей базовые символы типа M и все названия шаблонов N, так что аксиомы шаблона N(···)... удовлетворяются в M'. Это означает, что M' удовлетворяет . Используя лемму 2 повторно, получаем, что M' также удовлетворяет . Что и требовалось доказать.
Необходимо проверить непротиворечивость формул типа , содержащей только базовые символы, в контексте аксиоматики по ИСО 15926-2. Для ответа на данный вопрос может быть использована стандартная технология описательной логики. Также предпочтительным может оказаться метод гипертаблиц, описанный в приложении G.
K.2.1 Трансляция языка ИСО 15926-2 в описательную логику
Аксиоматику ИСО 15926-2 можно транслировать в ТВох в рамках ALCIQ (описательной логики с обратными ролями и квантифицированными числовыми ограничениями). Это есть подмножество хорошо изученной и используемой на практике описательной логики SHIQ. Для оценки имеющихся возможностей нужно проанализировать различные аксиомы, используемые в формализациях ИСО 15926-2 первого порядка в соответствии с 4.1:
- одноместные предикаты A(x) для сущностей EXPRESS отображаются на элементарные понятия описательной логики; - двухместные предикаты hasR(x) атрибутов языка EXPRESS отображаются на роли hasR описательной логики (DL);
- типы данных списков EXPRESS в аксиомах фактически не используются;
- практическая реализация A(x)B(x), представляющая отношение подтипов языка EXPRESS, отображается на аксиому A B описательной логики DL;
- аксиома A(x) B(x)C(x)D(x)) декларации ABSRACT языка EXPRESS отображается на аксиому = BCD в DL;
- аксиома (A(x)(B(x)C(x))) декларации ONEOF языка EXPRESS отображается на аксиому A (SC);
- аксиома hasR(x, y)(A(x)B(x)), представляющая область атрибута языка EXPRESS, отображается на аксиому .(AB);
- аксиома A(x)hasR(x, у)F(y) локального ограничения диапазона языка EXPRESS отображается на аксиому A .F;
- аксиома A(x)hasR(x, y)hasR(x, z)у = z, необходимая для ограничения кардинального числа [0,1] в языке EXPRESS, отображается на аксиому А hasR max 1 в описательной логике (DL);
- аксиома A(x)y(hasR(x, у)), дополнительно необходимая для задания ограничения кардинального числа [1,1] в языке EXPRESS, отображается на аксиому A hasR. в описательной логике (DL);
- аксиома A(x)A(y)hasR(x, z)hasR(y, z)х = у для правила UNIQUE языка EXPRESS отображается на аксиому max 1 A в описательной логике DL.
Это аксиомы ТВох описательной логики для ИСО 15926-2.
K.2.2 Проверка достоверности расширения шаблона
Для проверки достоверности формула типа сколемизируется. При этом каждая экзистенциально связанная переменная заменяется на новый постоянный символ, порождающий . В этом случае, формула непротиворечива, если и только если непротиворечива формула . Это снова можно проверить путем преобразования в дизъюнктивную нормальную форму: , где - это сопряжения основных элементов над . Указанные сопряжения можно интерпретировать как сущности АВох над предварительно определенной трансляцией ТВох для ИСО 15926-2. Формула непротиворечива только в том случае, если одна из указанных сущностей АВох непротиворечива по отношению к ТВох. Данная проблема известна как "проблема непротиворечивости АВох". Ее можно решать с помощью ультрасовременных систем доказательств описательной логики (DL). Пример - Пример расширения и проверки достоверности см. в приложении F.
БиблиографияБиблиография
|