Описание ядра
|
Описание ядра
Общие замечания.Ядром сети называются метаданные, служащие для описания метаданных. Ядро состоит из множества системных объектов и связей, появляющихся в сети в момент её инициализации и остающихся неизменными всё время работы с сетью. Системные классы (класс CLASS).
Описания системных классовКласс ACONDЭтот суперкласс объединяет все общие свойства условий и действий составляющих ассоциации и правила. Класс ALTОбъекты класса представляют альтернативы ассоциаций, т.е. AND-группы условий объединенные подразумеваемым OR. Класс AMEMЭто абстрактный класс (не содержащий представителей) для членов условий в виртуальных отношениях. В него входят два класса: VAR - переменных и REF - ссылок. Класс ATYPEКласс сущностей - категорий аспектов. Его представители - дескрипторы категорий аспектов - 4 штуки. Класс AVALСуперкласс объединяющий все классы значений (категории VALUE). Класс CATEGКласс сущностей - категорий классов. Его представители - дескрипторы категорий классов - 4 штуки. Класс CLASSЭто класс сущностей - дескрипторов всех классов. См. таблицу представителей класса CLASS. Класс CONDЭто класс неименованных структур - условий в виртуальных отношениях. Условия как бы "состоят" из одного предиката - представителя класса LINK, и нескольких членов - представителей абстрактного класса AMEM. Класс INTЭто класс значений - целых чисел. Класс KEY_Это класс структур, описателей-ключей для отношений/ассоциаций. Эти описатели связаны с входящими в их состав аспектами и со своими отношениями. Класс LINKЭто класс сущностей - дескрипторов всех отношений. См. таблицу представителей класса LINK. Класс LITERОбъекты-значения могут входить в условия/действия в виде аргументов, но входят туда не непосредственно, а в оболочке из структур этого класса. Класс LTYPEКласс сущностей - категорий отношений. Его представители - дескрипторы категорий отношений - 3 штуки. Класс NUMЭто класс значений - действительных чисел. Класс RALTАлтернативы (группы действий, соединенные подразумеваемым OR) для правил. Класс RARGСуперкласс для аргументов объектов RCOND. Класс RCONDЭто класс структур представляющих условия ЛЧ и действий ПЧ правил. Условия и действия работают по разному но формально устроены одинаково. Класс REFЭто класс структур - ссылок на объекты-константы в отношениях. Класс RULEКласс сущностей - описателей правил. Класс RVARПеременные в правилах. Переменные локально именуются внутри правила. Класс SLOTЭто класс сущностей - дескрипторов всех аспектов. Эти дескрипторы локально именуются в пределах своих отношений (ассоциаций). Класс STRЭто класс значений - текстовых строчек. Класс TOBJЭто особый абстрактный класс, являющийся всеобщим суперклассом. Всякий класс является его наследником. Поэтому если доменом некоторого аспекта является этот класс, то в соответствующих слотах связи может быть любой объект. Класс VARIЭто класс сущностей - переменных ассоциаций (виртуальных отношений) Переменные локально именуются внутри ассоциации. При нескольких альтернативах множество переменных ассоциации разбивается на непересекающиеся подмножества для альтернатив, т.е. в разных альтернативах не могут встретиться одноименные переменные. Категории классов (класс CATEG).
Категории аспектов (класс ATYPE).
Категории отношений (класс LTYPE).
Системные отношения (класс LINK).
(**) Именующие отношения NAME, ANAME, VNAME RVARS имеют по три аспекта, аспект №3 имеет категорию U, и домен формально TOBJ, SLOT VARI RVAR соответственно. Описание системных отношений.Отношения, описывающие структуру сети.Отношение CATEGФормат: CATEG:LINK(CAT1:&CLASS,CAT2:(&CATEG)) Это отношение задаёт категорию класса, категория выбирается из класса CATEG. Если категория не задана, для класса по умолчанию предполагается категория ITEM. Отношение DOMAIN.Формат: DOMAIN:LINK(DOMAIN:&SLOT,ATTRIBS:(&CLASS)) Это отношение связывает класс домен с его аспектами - атрибутами. Для каждого аспекта указание домена обязательно. Класс может не иметь собственных атрибутов, (однако, если он не наследует атрибутов от суперклассов, то от такого класса мало пользы). Отношение ISAФормат: ISA:LINK(ISA:(&CLASS),BASE_FOR:{&CLASS}) Это отношение связывает классы в структуру наследования. Если задано ISA(A,B) это значит, что класс A наследует от класса B все его атрибуты (вместе с теми, который класс B унаследовал сам от своих суперклассов). В указанном отношении наследующий класс называется наследником, а второй класс - предком. Отношение NAME.Формат: NAME:LINK(ITEMS:{&CLASS},NAME_OF:STR,CLASS:TOBJ) Это трехместное отношение играет особую роль в системе. Оно связывает классы категории ITEM с их представителями и именами этих представителей. 1-й слот связи NAME связан с классом, 2-й - связан со строковым объектом, представляющим имя, а третий слот связан с объектом представителем класса. Фактически отношение NAME представляет собой множество словарей для объектов глобально доступных классов. Отношение GENLNKФормат: GENLK:LINK(GENLK:&CLASS,GENCL:&LINK) Это отношение задаёт для локального класса его именующее отношение. Локально доступные классы имеют именующее отношение, которое используется для этих классов вместо NAME. Именующее отношение должно иметь тот же формат, что и NAME. Доменом его 1-го аспекта должен быть "старший" класс, объекты которого содержат словари для локального класса. (Например, для класса Улица "старшим" классом может быть Город). Домен 2-го аспекта - класс STR (для имен). Доменом третьего аспекта должен быть тот же локальный класс, для которого это отношение является именующим. Отношение LTYPEФормат: LTYPE:LINK(LTYPE:LINK,LTYPE_OF:{<YPE}) Это отношение задаёт категорию отношения. Категорией отношений могут быть три объекта из одноименного класса LTYPE:PRIM, REAL, VIRT. По умолчанию категория нового отношения равна REAL. Отношения REAL настоящие, в том смысле, что для них фактически существуют связи (факты) в базе данных (в сети). Отношения оставшихся двух категорий вычисляются тем или иным образом. Отношение SL_LKФормат:SL_LK:LINK(LINK_SLOTS:(&LINK),SLOT_LINK:SLOT) Данное отношение связывает дескриптор отношения со списком дескрипторов его аспектов. Каждый аспект должен принадлежать к некоторому отношению. Каждое отношение должно иметь хотя бы один аспект. Отношение KEYSKEYS:LINK(KEYS:(&LINK),RELAT:&KEY_) Данное отношение связывает дескриптор отношения со списком дескрипторов его ключей. Отношение ASPKEYФормат: ASPKEY:LINK(ASPKEY:{&SLOT},KEYASP:(&KEY_)) Это отношение связывает дескриптор ключа с дескрипторами составляющих этот ключ аспектов. Аспект может входить в два ключа, хотя это довольно редкий случай. Отношение ATYPEФормат: ATYPE:LINK(ATYPE:&SLOT,TYPE_OF:{&ATYPE}) Это отношение задает категорию аспекта. По умолчанию категорией аспекта считается категория SET. Отношение HOLDФормат: HOLD:LINK(HOLD:&SLOT) Унарное отношение HOLD, отмечает соответствующим признаком дескрипторы аспектов, владеющих объектами. При удалении связи, все объекты, соединенные со слотами аспектов, имеющих этот признак, также автоматически удаляются. Это значит, что объекты через такие слоты соединяются со своими объектами "хозяевами", частями которых они являются. Отношение POLYФормат: POLY:LINK(POLY:&SLOT) Унарное отношение POLY задаёт признак полиморфных аспектов. Полиморфными считаются аспекты могущие принадлежать объектам нескольких классов. Эти классы должны быть наследниками домена данного аспекта. Если домен аспекта принадлежит категории SUPER, то этот аспект считается полиморфным по умолчанию. Отношение LOCALФормат: LOCAL:LINK(LOCAL:&SLOT) Унарное отношение LOCAL, отмечает соответствующим признаком дескрипторы локально выбираемых аспектов. Отношения, поддерживающие интерфейс пользователя.Отношение TITLEФормат: TITLE:LINK(TITLE:&SLOT,TITLE_OF:STR) Это отношение задаёт текстовую строку - заголовок аспектного столбца таблицы для данного аспекта. По умолчанию для заголовка используется имя аспекта. Отношение TITLRФормат: TITLR:LINK(TITLER:&SLOT,TITLEROF:STR) Это отношение задаёт текстовую строку - заголовок объектного столбца таблицы для данного аспекта. По умолчанию для заголовка используется имя аспекта. Отношение WIDEФормат: WIDE:LINK(WIDE:&SLOT,WIDE_OF:INT) Это отношение задаёт ширину аспектного столбца таблицы для данного аспекта. При корректировке ширины столбца пользователем с помощью мыши, установленная ширина запоминается в значении данного свойства, и потом при сохранении сети в файле базы данных запоминается там до следующего сеанса. Отношение WIDERФормат: WIDER:LINK(WIDER:&SLOT,WIDER_OF:INT) Это отношение задаёт ширину объектного столбца таблицы для данного аспекта. Используется аналогично WIDE. Отношение MASKФормат: MASK:LINK(MASK:&SLOT,MASK_OF:STR) Это отношение задаёт текстовую строку - формат для вводимого значения простого аспекта. Простой аспект, это одиночный аспект бинарного отношения. Например, аспект MASK является простым. Отношение NO_TXTФормат: NO_TXT:LINK(NO_TXT:&SLOT,NO_TXT_OF:STR) Это отношение задаёт текстовую строку, выводимую по умолчанию в клетках таблицы соответствующих пустому значению аспекта. Например, может быть задано NO_TXT(Жена,"Холост") Отношение BODYATRФормат: BODYATR:LINK(BODYATR:&CLASS,BODY_OF:{SLOT}) Это отношение задаёт для некоторого класса аспект содержимого. Когда у класса есть аспект содержимого, меняет своё поведение таблица просмотра: если в главной таблице просматриваются объекты данного класса и выбран объектный столбец, то в таблице просмотра показывается содержание аспекта содержимого. Например, в главной таблице мы можем выбирать заголовки разделов помощи (help), а в таблице просмотра будут показываться сами эти разделы, если сделать соответствующий аспект аспектом содержимого для класса "Заголовок help-а". Отношение ROOTATRФормат: ROOTATR:LINK(ROOTATR:&CLASS,ROOT_OF:{SLOT}) Это отношение задаёт для некоторого класса так называемый порождающий аспект. Когда у некоторого класса есть такой аспект, меняется реакция на клавишу Esc при просмотре таблицы состоящей из представителей этого класса. При этом происходит переход по порождающему аспекту к старшему объекту, взамен обычной реакции на клавишу Esc. Отношения, поддерживающие вычислительную модель.Это отношения (CONDS, MEMS, PRED, ROBJ, VARS) а также примитивные ассоциации. Отношение CONDSФормат: CONDS:LINK(CONDS:{&LINK},COND_OF:COND) Это отношение связывает дескриптор виртуального отношения с его условиями. Отношение MEMSФормат: MEMS:LINK(MEMS:(&COND),MEMB_OF:{AMEM}) Это отношение связывает условие виртуального отношения с его членами. Отношение PREDФормат: PRED:LINK(PRED:&COND,PRED_OF:{&LINK}) Это отношение связывает условие виртуального отношения с дескриптором отношения-предиката, т.е. с типом этого условия. Отношение ROBJФормат: ROBJ:LINK(REF:&AMEM,REF_OF:{&TOBJ}) Это отношение связывает член условия виртуального отношения - ссылку с тем объектом, на который она ссылается. Связь с этим объектом нужна только для объектов класса REF, но аспект распространяется и на VAR, для того чтобы в таблице членов условия был виден аспект REF. Отношение VARSФормат: VARS:LINK(VARS:(&SLOT),VAR_OF:VAR) Это отношение связывает аспект-параметр виртуального отношения с соответствующими ему переменными. Форматы всех системных классов отношений.Ниже приводится описание ядра на языке представления знаний. При сохранении базы данных это описание пропускается. При загрузке - добавляется автоматически. CLASS:CLASS(NAME\ITEMS,CATEG\CAT1,DOMAIN\ATTRIBS, ISA\ISA,ISA\BASE_FOR,BODYATR\BODYATR,
ROOTATR\ROOTATR,GENLK\GENLK) Графическая схема ядра
|
|