ГОСТ Р 59791—2021
Приложение А
(обязательное)
Формат обмена общей логикой (CLIF)
А.1 Общие сведения
Исторически проект CL возник в результате попытки обновить и рационализировать язык KIF [1], который
был впервые предложен в качестве «формата обмена знаниями» более десяти лет назад и в упрощенной форме
де-факто
стал стандартной системой обозначений во многих сферах применения логики. Некоторые особенности
CL, в первую очередь использование маркеров последовательности, явным образом заимствованы из KIF. Однако
концепция CL имеет определенные отличия от KIF, которые в сжатой форме рассматриваются в настоящем стан
дарте.
Во-первых, эти языки преследуют разные цели. Язык KIF был задуман как общее обозначение для пере
вода с множества других языков без потери смысла. CL предназначен для обмена информацией через сеть без
выполнения какого-либо перевода (по возможности). При выполнении перевода CL предоставляет единую общую
семантическую структуру, а не синтаксически определенный промежуточный язык.
Во-вторых, в значительной степени в результате вышесказанного, KIF рассматривался как «полный» язык,
содержащий репрезентативный синтаксис для широкого спектра форм выражений, включая, например, сортировку
кванторов, различные форматы определений и полностью экспрессивный метаязык. KIF должен был стать единым
языком, с помощью которого можно было бы выразить множество других языков. Языку CL, напротив, специально
отводилась роль «малого» языка, что позволяет упростить определение точной семантики и наложение точных
границ экспрессивности подмножеств языка, а также позволяет определять расширенные языки в качестве коди
ровки аксиоматических теорий, выраженных в CL.
В-третьих, в основе KIF лежит язык программирования LISP. Синтаксис KIF определен как S-выражения
языка LISP, а основанные на LISP идеи были включены в семантику KIF, например в виде определения семантики
переменных последовательности. Хотя поверхностный синтаксис CLIF внешне напоминает LISP за счет использо
вания вложенных немаркированных круглых скобок и может быть легко проанализирован в качестве S-выражений
LISP, CL не основан на LISP и не содержит никаких допущений относительно каких-либо структур LISP. Рекоменду
емая нотация взаимозамены CL основана на XML — стандарте, который не существовал во время первоначальной
разработки KIF.
Наконец, многие из «новых» функций CL были непосредственно основаны на идеях, вытекающих из новой
работы о языках для семантической сети [7].
Основанный на KIF синтаксис в CL называют CL Interchange Format (CLIF). Это упоминание приведено в
связи с тем, что эта версия формата рекомендована настоящим стандартом, а также чтобы выделить ее на фоне
других диалектов KIF, которые могут не быть полностью совместимыми.
Форматы KIF и CLIF во многом похожи. В качестве субдиалектов оба языка содержат синтаксис классической
логики первого порядка (FO). Оба языка имеют обозначения для переменных последовательности (в настоящем
стандарте называемых маркерами последовательности). Оба языка следуют исключительно префиксным услов
ным обозначениям и соглашениям о синтаксисе стиля для S-выражений. Оба используют круглые скобки в каче стве
лексических разделителей. Оба одинаковым образом определяют ограничения квантора.
Ниже описаны некоторые известные различия между KIF и CLIF:
а) KIF использует кодировку ASCII, a CLIF — Юникод;
б) в KIF, в отличие от CLIF, есть явные обозначения для определения функций и отношений;
в) в KIF не используют обозначение выделенных имен, доступное в CLIF;
г) в KIF в качестве префикса переменной последовательности используют символ «@», в CLIF маркеры по
следовательности обозначают тремя точками;
д) в KIF комментарии обрабатывают иначе, чем в CLIF, и отсутствует «изолирующая» конструкция;
е) в KIF, в отличие от CLIF, отсутствуют конструкции пар ролей;
ж) в KIF отсутствует тип нерегулярного высказывания, который в CLIF допускается для расширений языка;
и) в KIF отсутствуют понятия импорта, текстов, заявлений и ограничений области, которые есть в CLIF;
к) в KIF переменные имеют отличия от имен, а кванторы могут связывать только переменные. В CLIF такие
различия отсутствуют;
л) свободные переменные в KIF обрабатывают как универсальные. Свободные имена в CLIF — это просто
имена, квантификация которых не выполняется;
м) в KIF операторы и предикаты могут быть только именами. В CLIF допускают использование общих терми
нов, а имена могут быть связаны кванторами;
н) в KIF не поддерживается конструкция защищенного квантора.
А.2 Синтаксис CLIF
А.2.1 Символы
Всоответствии с [6] все выражения CLIF кодируют в качестве последовательности символов Юникода. Может
быть использована любая кодировка символов, которая соответствует требованиям [6], но не следует использо-
24