CycL (произносится «сайкл») — в информатике и искусственном интеллекте — язык онтологий, используемый в проекте Cyc Дугласа Лената. Ранние версии языка разрабатывались при участии Раманатхана В. Гухи. Существует близкая разновидность CycL под названием MELD.

Первоначальная версия CycL была фреймовым языком, однако современная версия таковой не является. Это декларативный язык, основанный на классической логике первого порядка с расширениями для модальных логических операторов и кванторов логики высшего порядка.

CycL используется для представления знаний, хранящихся в базе знаний Cyc, доступной от компании Cycorp. Исходный код, написанный на CycL и выпущенный в составе системы OpenCyc, распространяется как свободное программное обеспечение с открытым исходным кодом для поддержки семантической сети.

Основные понятия Базовые идеи CycL включают: именование констант, используемых для обозначения информации о представленных концептах; группировку констант в иерархию обобщения — специализации (категоризацию); формулировку общих правил, поддерживающих вывод о концептах; контекстную зависимость истинности предложений (контексты представляются в CycL как микротеории).

Константы Имена концептов в Cyc называются константами. Константы начинаются с префикса #$ и чувствительны к регистру. Выделяют следующие виды констант: Индивиды — отдельные объекты, например #$BillClinton или #$France. Коллекции — множества объектов, например #$Tree-ThePlant (все деревья) или #$EquivalenceRelation (все отношения эквивалентности). Член коллекции называется её экземпляром. Функции истинности — предикаты, которые могут быть применены к одному или нескольким концептам и возвращают истину или ложь. Например, #$siblings — отношение родства, истинное, если два аргумента являются братьями и/или сёстрами. По соглашению, константы функций истинности начинаются со строчной буквы. К ним относятся логические связки (#$and, #$or, #$not, #$implies), кванторы (#$forAll, #$thereExists) и собственно предикаты. Функции, которые порождают новые термы из заданных. Например, #$FruitFn, получив аргументом коллекцию растений, возвращает коллекцию их плодов. По соглашению, константы функций начинаются с заглавной буквы и заканчиваются строкой Fn.

Специализация и обобщение Наиболее важными предикатами являются #$isa и #$genls. Первый описывает, что один элемент является экземпляром некоторой коллекции (специализация), второй — что одна коллекция является подколлекцией другой (обобщение). Факты о концептах выражаются в виде предложений CycL. Предикаты записываются перед своими аргументами в круглых скобках.

Примеры: (#$isa #$BillClinton #$UnitedStatesPresident) — «Билл Клинтон принадлежит коллекции президентов США». (#$genls #$Tree-ThePlant #$Plant) — «Все деревья являются растениями». (#$capitalCity #$France #$Paris) — «Париж — столица Франции».

Правила Предложения могут содержать переменные — строки, начинающиеся с символа ?. Пример правила для предиката #$isa:

(#$implies (#$and (#$isa ?OBJ ?SUBSET) (#$genls ?SUBSET ?SUPERSET)) (#$isa ?OBJ ?SUPERSET))

Интерпретация: «если OBJ является экземпляром коллекции SUBSET и SUBSET является подколлекцией SUPERSET, то OBJ является экземпляром коллекции SUPERSET».

Другой пример — правило, выражающее отношение для группы или категории в целом:

(#$relationAllExists #$biologicalMother #$ChordataPhylum #$FemaleAnimal)

Это означает, что для каждого экземпляра коллекции #$ChordataPhylum (то есть для каждого хордового) существует животное женского пола (экземпляр #$FemaleAnimal), которое является его матерью (предикат #$biologicalMother).

(Или, говоря более свободно, если у данного животного есть позвоночник, то существует связь между этим животным и концепцией его «биологической матери». То, что «заполняет пробел» в определении биологической матери, также должно поддаваться классификации как животное женского пола.)

Микротеории База знаний разделена на микротеории (Мт), представляющие собой совокупности понятий и фактов, как правило, относящихся к одной конкретной области знаний. В отличие от базы знаний в целом, каждая микротеория должна быть свободна от противоречий.

Каждая микротеория имеет имя, которое является обычной константой; константы микротеорий по соглашению содержат строку "Mt". Примером может служить #$MathMt — микротеория, содержащая математические знания.

Микротеории могут наследовать друг от друга и организованы в иерархическую структуру. Одной из специализаций #$MathMt является #$GeometryGMt — микротеория геометрии.

См. также Список языков онтологий

Примечания

Литература

Категория:Языки онтологий Категория:Декларативные языки программирования Категория:Логические языки программирования Категория:Языки представления знаний