Комплексное определение для информационного моделирования (IDEF1X), страница 41

атом

Выражение atom( X ) значит, что X это, либо не пустой список, либо элемент, названный функцией присваивания.

 точка зрения

В независимой интерпретации, view( X ) значит, что X – это представление. Для TcCo например, view( production ).

сущность

В независимой интерпретации, entity( X ) значит, что X – это сущность. Для TcCo например, entity( part ).

специфичная сущность

Выражение viewEntity( X ) значит, что X – это сущность-представление. Для TcCo, например, viewEntity( production: part ).

домен

Выражение domain( X ) значит, что X - домен.  Для TcCo, например, domain( qty_on_hand ).

псевдоним

Выражение alias( A, R ) значит, что A – это псевдоним для R. Для TcCo нет псевдонимов.

isa

Выражение X isa Y значит, что сущность или домен X – это подкласс сущности или домена Y. Для TcCo, например, production: made_part isa production: part означает, что с в представлении production, made_part подкласс  part.

ссылки

Выражение X → Y значит, что X ссылается на Y.

Предикат ссылка используется, чтобы согласовать типы, например qty_on_hand: 17 не может быть интерпретировано равным standard_cost: 17, но значение атрибута внешнего ключа, например backup_vendor_no: 101 должно ссылаться на первичный ключ vendor_no: 101. Для выполнения всех этих условий было введено утверждение, которое показывает, что backup_vendor_no: 101 → vendor_no: 101 верно.

Базисный тип данных

Унарный предикаты character, numeric и boolean связывают выражения с типом. Выражение character( X ) верно, если X - символьная строка, numeric( X ) верно, если X - число, и boolean( X ) верно, если X  true или false.  

Эти предикаты не описываются утверждениями. Они неопределённые примитивы. В случае TcCo, например, character( X )  истина для всех цифернобуквенных констант, таких как top.

существование

Унарный предикат exist записывается как префикс, например exists Term. Отметим, что exists не только квантор существования.

Выражение exist C: I значит, что класс-сущность (или класс-домен) C: I существует, если С – класс сущность, а I – идентификатор сущности. Если С – класс домена, то I – значение. Отметим, что выражение С:I называет нечто, что может быть экземпляром класса. C:I – экземпляр класса, если только указано, что exist C:I.

Предикат exist определен для определенной IDEF1X модели набором правил. В таком случае, exist C:I верно только в случае определенных значений С и I – только таких, который входят в модель.

Например, для TcCo, выражение exists ( production: part ): i1 будет истинно, если production – это представление, part – сущность, production: part это специфичная сущность production part и i1 – экземпляр production part. В отличие от этого, ( production: part ): i101 ложное утверждение.

Предикат существования используется по двум причинам. Первая, что экземпляр специфичной сущности, например production_part( I ), не позволяет налагать условия на part. Второе, экземпляр instance( production, part, I ) не использует специфичную сущность.

viewEntityAttribute

Выражение viewEntityAttribute( X ) означает, что  X – атрибут сущности-представления.  Пример для TcCo -  viewEntityAttribute( ( production: part ): qty_on_hand ).

viewEntityParticipant

Выражение viewEntityParticipant( X ) означает, что X используется в сущности-представлении.  Для TcCo, например, viewEntityParticipant( ( production: bought_part ): ‘standard vendor’ ).

has

Бинарный предикат has записывается как инфикс (между операндами), например Term1 has Term2, где Term2 имеет вид P:V.

Это означает, что сущность или домен Term1 имеет значение для свойства P, и это значение V. Отметим, что null означает отсутствие значения.

Например,

( production: part ): I has qty_on_hand: QOH,

( production: bought_part ): I has ‘standard vendor’: J,

и

qty_on_hand: 2000 has value: V

соответственно значит, что

экземпляр сущности production part I имеет значение для атрибута qty_on_hand и это значение QOH,

экземпляр сущности production bought_part I имеет значение участника ‘standard vendor’ и это значение J,

и

экземпляр домена qty_on_hand: 2000 имеет значение для свойства value и это значение - V.

Предикат has определен для конкретной модели набором правил. Так, C:I has P:V истина только для определенных значений C, I, P и V, только тех, которые принадлежат модели.

Предикат has предоставляет возможность ссылаться на экземпляр сущности или домена и на значения её свойств, независимо от относительной позиции свойства в предикате.

B.3.3.2 Предикаты, описанные IDEF1X

View Entities

Каждая сущность, у которой n атрибутов, добавляет (n+1)й предикатный символ к словарю.

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

Для каждого представления, v, в наборе представлений, и для каждой сущности e в v, где у e n атрибутов, добавляется (n+1)й предикатный символ

v_e

к словарю.

Выражение v_e( I, X1, X2, ..., Xn ) значит, что идентификатор I принадлежит классу v_e как член этого класса, может иметь значения для каждого его атрибута. Если Xk – null, тогда идентификатор I не имеет значения для атрибута k. Если Xk не null, тогда у него есть значение для атрибута k. Это значение – экземпляр домена и Xk часть домена.

Для сущности part в модели TcCo в результате добавляется 6й предикатный символ production_part к словарю метода IDEF1X.

 Связи соединения

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

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

Для каждого представления v, в наборе представлений, и для каждой сущности e1 и сущности e2 (не обязательно уникальной) есть связь между e1 и e2, где

e1 сущность-предок

e2 сущность-потомок

n1 связь от e1 к e2 

n2 связь от e2 к e1 

добавляет бинарный предикат

v_e1_n1_n2_e2

к словарю.  (Это не очень удобно, но гарантирует уникальность.)