Грамматика языка

  1. алфавит и грамматика языка  Friend
  2. дополнительные правила грамматики языка  Friend
  3. правила описания знаний на языке  Friend
  4. графо-динамическая База Знаний (гдБЗ)
  5. контекст выражения

В языке  Friend легкие синтаксис и грамматика. Вы можете писать на своем родном языке, а затем простой подменой словаря перевести на любой другой язык.

 

Алфавит и грамматические правила языка Friend

a-z; A-Z; а-я; А-Я   — допустимые символы

KAT; X; Y; СЛОН    — переменные, всегда пишутся большими буквами

@                                    —  оператор ссылки        @Имя_переменной

 0 1 2 3 4 5 6 7 8 9       — цифры (десятичный разделитель  — точка «.«,  отрицательное число  — минус ««)

 пробел » »                      —  разделитель слов

 запятая «,»                    —  разделитель при перечислении {a,s,d,f}

точка в конце фразы  —  оператор записи высказывания в гдБЗ  Слон имеет хобот, 4 лапы.

точка между словами — оператор доступа к именуемому полю объекта  или процедуре  X.Text

‘  ‘ ; » »                               — кавычки (можно вкладывать одни в другие « имя =   Коля ‘    » 

«текст 12  текст»         — произвольная символьная строка   « имя =   Коля ‘    » 

( a + b )                             —  любое подвыражение

sin(X)                                — вызов существующей функции

абракадабра(X)          — вызов формальной функции

!(a+b)                                — не вычисляемое выражение, передается как есть

10 -> X ;  10  Y              —  оператор присвоения значения переменной

{q,e,t,y,1,44,y}              —  вычисляемый список произвольных элементов (каждый элемент заменяется на значение)

!{q,e,t,y,1,44,y}              — не вычисляемый список произвольных элементов

имя{q,e,t,y,i,44,21}    — вычисляемое именуемое множество  (каждый элемент заменяется на значение)

%{ключ, значение; ключ, значение} — ассоциативный список в котором доступ к значениям происходит по ключу

X[10] ;  Name[KEY]      — операция получения элемента массива, списка или множества по индексу или ключу

#                                             — оператор определения новой функции (или теоремы)

                                                                                                                                    # sum(X,Y) {X+Y}

##                                          — оператор описания блока событий (создает сторожа ожидающего заданную ситуацию)

:                                              — оператор описания контекста   контекст :  10 -> X        

                                                                                                         {контекст, контекст} :  12 -> Y

;                                             — логический разделитель смысловых блоков

Дополнительные правила

  1.  Фрэнд не чувствителен к регистру символов которыми записаны слова, за исключением описания переменных, — все символы заглавные, и описания методов и свойств объектов, — должны писаться так как они даны в документации.

  2. Фрэнд допускает множественные имена одних и тех-же понятий, при условии что дополнительные имена понятий будут заранее перечислены в объявлении «synonyms». Пример synonyms{ true правда, истина, да}

  3. Фрэнд допускает использование многословных имен понятий (например Африканский Слон, Потенциал Гравитационного Поля и т. п.) при условии что они будут заранее перечислены в объявлении «idioms». Пример idioms{Африканский Слон, Потенциал Гравитационного Поля}

  4. Разделителем слов являются пробел, запятая, точка с запятой, знаки математических операций и все виды скобок, а так же физическое завершение текущей строки.

  5. Символ «запятая», используется для разделения однотипных по смыслу элементов во всех видах перечислениях.

  6. Символ «точка с запятой» используется для разделения разных смысловых категорий в смешанных перечислениях.

  7.  Выражения внутри вызова функций или методов объектов нужно помещать в защитные скобки.

Правильно:    function(20)        function( (20  * 5) )   function( (X.Lenght +5) )

Ошибка:    function((20))        function( 20  * 5 )   function( X.Lenght +5 )

  1. Высказывания оперативного назначения ни каких завершающих знаков не имеют.

  2. Френд работает с нечеткой логикой. Логические предлоги «не, иногда, возможно, часто, всегда» перед любым отношение (глаголом) означает вероятность или достоверность отношения. При этом «всегда» для простоты упускается. Можно также описывать достоверность числом со знаком процента. Пример:

           «Кот не имеет крылья; имеет хвост» или «Кот имеет 4 лапы».

Описание  логически структурированных данных (знаний) в языке Friend

На языке Friend можно описывать произвольные знания о внешнем мире или некоторой задаче, при этом, Friend автоматически анализирует и составляет логические ассоциации в единой  графо-динамической Базе Знаний (гдБЗ). Это позволяет хранить информацию не табличным способом, как это делают обычные Базы Данных, а в виде логически связанных «деревьев», в «лесу» которых, затем, алгоритм вашей программы способен находить самые неожиданные ассоциации и закономерности.

Для того, чтобы информация при ее вводе размещалась в гдБЗ правильно, необходимо описывать знания на простом, близком к естественным языкам, логическом языке.

Расположение членов высказывания в языке Friend строго позиционное. Изменение позиции слова ведет к изменению смысла всего высказывания.

      Простейшее высказывание состоит из трех элементов: Понятие Отношение Параметр. Например: «Слон имеет хобот»

    Схема высказывания (не обязательные члены выделены квадратными скобками, члены имеющие значение  по умолчанию выделены угловыми скобками):

  1.  Понятие <вероятность =100%> Отношение  <количество=1>  [Качество, Качество,..]  Параметр

Примечание:  для элемента «вероятность» предусмотрены стандартные слова «не» «иногда» «возможно» «часто» «всегда».  Слово

«всегда»  и количество =1  как правило упускаются.

Пример пример высказывания с точкой на конце, которое будет помещено в гдБЗ

   Дерево имеет корень.

Правила составления высказываний

  1. Каждое специфическое отношение Понятия образует собственную КЛАУЗУ (в данном случаи — клаузу ИМЕЕТ), что позволяет группировать высказывания методом простого перечисления.

       Пример:

       Слон имеет хобот, хвост, голову, лапы.

  2. Простые высказывания могут дополняться числителями (любым целым или дробным положительным или отрицательным числом). Числитель ставится сразу после имени отношения (предиката).

     Пример:

     Слон имеет 2 бивня, 4 лапы.

  3. Простые высказывания могут дополняться описателями качества (любым их количеством стоящим после числа или предиката но обязательно до объекта2).

      Пример:

      Слон имеет 2 острых бивня, 4 сильных толстых лапы.

  4. Если необходимо характеризовать не одно Понятие а некоторое множество однотипных объектов, то Фрэнд позволяет перечислить их через запятую перед первым предикатом (отношением).

      Пример:

      Слон, бегемот, мамонт имеет 4 сильных лапы.

  5. Когда необходимо охарактеризовать Понятие с нескольких сторон, используют переключение смысловых КЛАУЗ с помощью «точки с запятой».

       Пример:

       Слон имеет длинный хобот, 4 сильных лапы ; ест бананы, фрукты ; живет джунгли.

  6. Френд позволяет вводить любые именуемые величины и их произвольную классификацию.

    Пример:

    Длина включает миллиметр :=0.001, сантиметр := 0.01, метр := 1, километр :=1000.

    Дом имеет высота := 10 метров, длина :=20 метров, ширина := 8 метров.

  7. Френд позволяет присваивать любому высказыванию некоторое произвольное значение. Это ОЧЕНЬ ВАЖНОЕ СВОЙСТВО не только упрощает общение, но и превращает Френд-систему в графоди-намическую Базу Данных с произвольной динамической структурой связей.

     Пример:

      Слон имеет рост := 3 метра, вес := 2 тонна.

  8. Френд позволяет создавать произвольную многоуровневую классификацию понятий. При этом все свойства определенные у предка прослеживаются и у наследника. Для определения нового класса и его наследников используется ПРЕДИКАТ «Включает».

    Пример:

     Хищник включает волк, тигр, лев, медведь; ест мясо; ловит слабый  животное.

     В этом примере определен класс понятий «Хищник» и 4 его подкласса. При этом все свойства определенные для класса будут прослеживаться и у подклассов.

  9. Понятие «ФРЕЙМА». Френд автоматически объединяет, минимизирует и свертывает все знаний касающиеся однотипных сущностей в так называемые ФРЕЙМЫ. Фрейм это сумма всех знаний о некотором понятийном классе.

    Например ФРЕЙМ «Кот» хранит все возможные знания о любых КОТАХ. Как мы уже говорили выше, знания в Фремах распределены по КЛАУЗАМ и их очень легко извлечь или сопоставлять.

  10. Фреймовая структура ХРАНИЛИЩА Фрэнда, приводит к необходимости наличия понятия ЭКЗЕМПЛЯРА некоторого множества. В Френде это называется «Именуемый (или перечисляемый) член множества», который легко вводится предикатом «Имя». Когда именуемый член множества (экземпляр) определен, он:

    а) Наследует все свойства Фрема-типа (множества)

    б) Может создавать собственные именуемые\перечисляемые подмножества

    в) Ему можно приписывать собственные уникальные свойства.

Пример

           «Кот имя Васька, Мурка, Рыжик»

           «Кот.Васька имеет злой характер»

    1. Фрэнд является контекстуально зависимым языком. Это означает, что одно и то же имя может иметь в нем много одназначно трактуемых разных значений уточняемых контекстом. Контекст в Фрэнде описывается явно, до специального символа «двоеточие». Если контекст состоит из одного слова, то его можно записать перед двоеточием сразу. Если имеется несколько описателей контекста, то они заключаются в символ множества — фигурные скобки. При поиске значений Френд-сиситема использует ближайшее минимальное совпадение контекста или логическое выведение контекста из описателей. Таким образом, контекст может быть задан не полностью или не явно. Подробности описаны в учебнике по программировании алгоритмов на языке Френд.

      Пример контекста:

      Африка: Хищник включает тигр, лев, леопард. Европа: Хищник включает волк, лиса, медведь.

      Социум: Хищник включает бандит, агрессор, вор.

                  Пример присвоения значений одной переменной в разном контексте:

                   Слон: 2 тонна ВЕС

                   Волк: 40 килограмм ВЕС

                   Воробей: 50 грамм → ВЕС

Для того чтобы получить значение из памяти в нужном контексте, достаточно его указать перед переменной или формулой:

                  Воробей: ВЕС ?

Описание произвольного содержания.

 Friend позволяет описывать содержание выраженное набором контекстуально связанных высказываний. Содержания ассоциируются в клаузе «Содержит» фрейма «тип«.

Существует упрощенная форма описания содержания. Общая схема такова:

{особенности-если есть, автор-если есть, название}: тип{высказывание 1.

                                                                                                                высказывание 2.

                                                                                                               ……

                                                                                                                     } .

Пример:

{Крылов, «Лебедь рак и щука«}:  басня{Лебедь, рак, щука тащить телега.

                                                                            Лебедь летит небо.

                                                                           Щука плывет река.

                                                                           Рак  идет назад.

                                                                           Телега не изменяет координаты. 

                                                                           }.