Компонента KIF Converter проекта KNOWLEDGE.NET Санкт-Петербургский Государственный Университет Докладчик Сигалин Максим Владимирович Научный руководитель Сафонов Владимир Олегович, проф., д.т.н.
KIF (Knowledge Interchange Format) Обмен знаниями Язык исчисления предикатов второго порядка Не имеет конструкций для описания фреймов/онтологий
Система Ontolingua Надстройка над KIF Имеет конструкции для описания фреймов/онтологий Набор трансляторов в другие языки представления знаний
Процесс конвертации
Конструкции Knowledge.NET Фреймы Онтологии
Фреймы Общий вид: frame FR_CATEGORY FR_IDEN { SLOTS }
Слоты SLOTS ::= own_slots [[SL_DESC] SL_NAME[=SL_VALUE];]+ [ instance_slots [SL_DESC SL_NAME[=SL_VALUE];]+ ]
Слоты (расширенное описание) facets { type TYPE; [value VALUE;] [default_value DEF_VALUE;] } SL_NAME;
Наследование фреймов own_slots is_a FR_IDEN1, | FR_IDEN2, FR_IDEN3, FR_IDEN4, …;
Онтологическая модель Концепты Подконцепты A is_subconcept_of B,C; А { is_subconcept_of B,C; } Thing
Определение через отношения Пересечение concept A is_intersection_of B, C, D… Объединение concept A is_union_of B, C, D… Дополнение concept A is_complement_of B, C, D…
Свойства datatype property PROP_NAME { domain A, B, C, …; range X, Y, Z,...; }
Пример #ontology Vehicles #concepts Color is_subconcept_of Thing; Vehicle is_subconcept_of Thing; Plane is_subconcept_of Vehicle; Submarine is_subconcept_of Vehicle; disjoint Plane, Submarine; disjoint Color, Vehicle; #properties object property HasColor { domain Vehicle; range Color; }
Подсвойства object property X is_subproperty_of Y { domain A, B, C, …; range K, L, M, …; }
Пример #concepts concept Human { is_subconcept_of{ Thing; HasSibling some_values_from Sibling; IsChildOf cardinality 2; } #properties object property IsChildOf { domain Human; range Human; inverse HasChild; }
Экземпляры individual Dmitry { alias Dima; is_a Human; HasSibling = Nina; HasAncestor = {Victor, Ludmila, Grigory, Alena}; HasChild = {Egor, Maria}; }
Конструкции Ontolingua DEFINE-CLASS DEFINE-FRAME DEFINE-INSTANCE
DEFINE-CLASS (DEFINE-CLASS ( )DEFINE-CLASS {:def | :iff-def} [:constraints ] [:class-slots ( *)] [:instance-slots ( *)] [:default-slot-values ( *)] )
Пример (define-class female-person (?person) "female humans"define-class :iff-def (and (human ?person) (= (gender ?person) female)) )
Слоты (Name (SLOT-VALUE-TYPE string)) Предопределенные собственные слоты: INSTANCE-OF SUBCLASS-OF ALIAS DOMAIN RANGE...
DEFINE-INSTANCE (define-instance define-instance ( +)... )
Реализация Интерфейс IModelItem Паттерн Composite Методы: ICollection getChildren() Write(StreamWriter writer) Интерфейс IModel: IModelItem
Реализации IModelItem Класс AbstractModelItem реализация метода write(StreamWriter writer) – делегирует своим частям Иерархия KIFObject: AbsractModelItem Иерархия OntolinguaObject: KIFObject Части-терминалы паттерн Flyweight
Реализации IModel KIFModel OntolinguaModel
Создание моделей Интерфейс IModelBuilder паттерн Builder методы buildFrame(DataFrame frame) buildSlot(Slot slot)... IModel getModel() Реализации KifModelBuilder OntolinguaModelBuilder
Конвертация в KIF Класс KifModelBuilder: OntolinguaModelBuilder при создании делегирует методы предку канонизирует заменяет конструкции Ontolingua на конструкции KIF вычисляет зависимости, меняя и пополняя модель
Запуск из Visual Studio 2005
?