Всем привет.
С переменным успехом временами пытаюсь размышлять о языке, который был бы способен выполнять операции со знаниями, подобно языку SQL в операциях с данными. Выработались кое-какие общие положения, хочу поделиться. Чтобы не сочли за пеар, ссылок не размещал, имена собственные заменил условными. Приветствуется любая критика для последующего анализа.
Встроенный в базу знаний X промежуточный язык Y содержит слова из русского языка и имеет иерархическую структуру.
Минимальными неделимыми единицами языка являются понятие и линкат. Понятие - символьное обозначение предмета, явления, свойства, действия. Понятие может состоять из нескольких слов. Линкат - условное обозначение отношений между понятиями. Имя линката должно начинаться со знака "&" или "?".
Два понятия объединяются одним линкатом и образуют триаду. Триада - конструкция, состоящая из трех позиций, в которой крайние позиции занимают понятия, а центральное место отводится объединяющему их линкату. Например в триаде:
два понятия: "цвет" и "желтый" объединены линкатом "?какой".
Понятие может быть двух типов: понятие определения и понятие действия. Понятия определения отвечает на вопросы: кто, что, какой. Понятие действия отвечает на вопрос что делать. В триаде из предыдущего примера: "цвет ?какой желтый" оба понятия: "цвет" и "желтый" являются понятиями определения, а в триаде:
понятие "цвет" также является понятием определения, а понятие "иметь" является понятием действия.
Несколько триад могут быть объединены в цепочку и образовать простое суждение. Простое суждение - цепочка триад, в которой только одно из понятий является понятием действия. Каждое простое суждение обязано имееть понятие действия. Например, простым суждением является следующая цепочка триад:
солнце ?что иметь ?что цвет ?какой желтый
поскольку эта цепочка имеет понятие действия, и оно в данной цепочке триад является единственным понятием действия. Суждение из примера можно перевести как: "солнце имеет желтый цвет".
Понятие действия имеет главную роль в простом суждении и является отправной точкой при обработке триад суждения.
Простые суждения бывают утвердительными и вопросительными. Утвердительное суждение добавляет новые данные в базу знаний и заканчивается символом точка ("."). Вопросительные суждения служат для поиска информации в базе знаний и заканчиваются символом знак вопроса ("?").
В вопросительных суждениях могут отсутствовать те понятия, которые не известны на момент составления суждения и которые необходимо найти. Такие понятия заменяются символом знак подчеркивания ("_"). Например, вопросительное суждение:
солнце ?что иметь ?что цвет ?какой _ ?
можно перевести как "Какой цвет имеет Солнце?"
Простые суждения могут объединяться в составные (сложные) суждения. Сложные суждения используются для описания объектов, которые не имеют уникального имени, и для доступа к которым необходимо указывать их отличительные признаки. Допустим, имеются два шара: зеленый и красный. Требуется добавить в базу знаний информацию о диаметре шаров. В данном случае использование следующих конструкций:
шар ?что иметь ?что диаметр ?сколько 5.
шар ?что иметь ?что диаметр ?сколько 7.
будет некорректным. Поскольку оба объекта имеют одинаковый тип и не имеют уникальных имен, то обращение к ним имеет смысл только при указании цвета шара. Решить проблему можно построением составного суждения, заменив понятие шар простым суждением, которое уточняет цвет шара:
(=шар ?что иметь ?что цвет ?какой зеленый) ?что иметь ?что диаметр ?сколько 5.
(=шар ?что иметь ?что цвет ?какой красный) ?что иметь ?что диаметр ?сколько 7.
При замене понятия простым суждением, последнее должно быть заключено в круглые скобки. Таким образом, суждение "шар ?что иметь ?что цвет ?какой зеленый" становится вложенным в суждение "шар ?что иметь ?что диаметр ?сколько 5". В свою очередь, суждение "шар ?что иметь ?что цвет ?какой зеленый" могло бы тоже иметь вложенные суждения, формируя многоуровневую иерархическую структуру.
Знак равенства перед понятием шар указывает на то, что это понятие является связующим. Именно через него связывается суждение "шар ?что иметь ?что цвет ?какой зеленый" с суждением "шар ?что иметь ?что диаметр ?сколько 5". Логику обработки базой знаний составных суждений можно описать так:
- система, обрабатывая вложенное суждение "шар ?что иметь ?что цвет ?какой зеленый", находит по значению цвета внутренний идентификатор зеленого шара;
- полученный на предыдущем этапе внутренний идентификатор зеленого шара подставляется в суждение "шар ?что иметь ?что диаметр ?сколько 5";
- для зеленого шара (по его внутреннему идентификатору) делается пометка в базе знаний, что его диаметр равен 5.
Для красного шара будут выполнены такие же действия, в результате чего для красного шара также будет сделана пометка, что его диаметр равен 7.
На основании заложенной информации, база знаний будет способна обрабатывать запросы разного уровня сложности. Например, у пользователя появится возможность запрашивать сравнительную оценку характеристик объектов:
(=шар ?что иметь ?что цвет ?какой зеленый) ?что иметь ?что диаметр ?какой больше ?чем ((=шар ?что иметь ?что цвет ?какой красный) ?что иметь ?что =диаметр)?
что в переводе означает вопрос: "Диаметр зеленого шара больше чем диаметр красного шара?".