Jess

Jess
Тип мова програмування
rule-based languaged і машина виведення
Розробник Національні лабораторії Sandia
Мова програмування Java
Вебсайт jessrules.com

Jess — система для розробки експертних систем, яка є нащадком CLIPS і повністю написана під JAVA. Дана система була розроблена у Національній лабораторії Сандія (Sandia National Laboratories) в Ліверморі, Каліфорнія. За допомогою Jess можна створити програмне забезпечення мовою[уточнити] Java, яке розглядає знання у вигляді декларативних правил.

Його потужна скриптова мова дає доступ до всіх API Java. Jess включає в себе повнофункціональне середовище розробки на основі Eclipse. Jess використовує розширену версію алгоритму Рете[en] до процесу правил. Алгоритм Рете є досить ефективним механізмом для вирішення важких завдань типу «багато-до-багатьох». Також має багато унікальних особливостей, включаючи зворотний ланцюжок, може безпосередньо керувати[що?] і оцінювати[що?] об'єкти Java.

Jess також є потужним Java сценарієм навколишнього середовища, з якого можна створювати Java-об'єкти, Java-методи, і реалізовувати Java інтерфейси без компіляції коду Java.

Jess 7[ред. | ред. код]

Версія 7 містить велику кількість оновлень, пов'язаних із правилами, а також нове графічне середовище розробки на основі Eclipse.

Список можливостей нового середовища розробки:

  • підсвічування синтаксису з можливістю налаштування;
  • підсвічування та перевірка помилок у режимі реального часу;
  • автоматичне форматування коду;
  • швидка навігація;
  • автоматичне доповнення дужками;
  • інтерактивна довідка для функцій;
  • запуск та налагодження програм;
  • графічний налагоджувач з припинення / відновлення, точки зупину.

Основні відмінності Jess 7 від попередніх випусків:

  • Jess 7 має свої декларативні правила XML під назвою jessml;
  • підключено інструменти для читання, запису і перетворення jessml;
  • підключено нові драйвера, які працюють з jessml ;
  • додано нові елементи такі як "forall" та "accumulate";
  • розроблено спрощені робочі запити пошуку jess пам'яті[що?] за допомогою jdbc-подібного інтерфейсу;
  • поліпшена система звітності;
  • значно[джерело?] спрощено роботу з об'єктами Java.

Версії[ред. | ред. код]

Випуск Дата випуску Зміни
5.1 24.04.2000 Виправлені помилки в зворотному зчеплення (Ашраф Афіфа).
5.0 28.01.2000 Додана нова функція перехресних посилань( ідея Роджера Файерстоуна).
5.0b1 21.09.1999 jess.Console працює. Компіляція з помилками компілятора JDK 1.1.x. bload / BSAVE зберігає слухачів (тобто, deffacts роботи).
5.0a6 8.07.1999 Прибрано деякі надлишкові перевірки в мережі. Внесено зміни у multivar в deffunction тепер multifields працюють без помилок, завдяки Нін Чжун. Додана функція import. Виправлена помилка при використанні змінної значущість цінності (Девід Янгоки).
5.0a5 20.05.1999 Різкі зміни внесені в Funcalls. Введені нові евристики для усунення надлишкових тестів.
4.0 - У BeanInfo підтримки .quiz .html вкладається тільки один QuizDisplay аплет. Стратегії вирішення конфліктів така ж, як за замовчуванням у CLIPS.
3.0 - Деякі зміни коду для сумісності з Microsoft.
2.0 - Jess 2.0 на 30% швидше, ніж версія 1.0.Невеликі внутрішні зміни. Мережа Rete ділить вузли в мережі Join, а не тільки в структурі мережі.

Початок роботи з Jess[ред. | ред. код]

Jess поставляється у вигляді .zip файлу, який може бути використаний на всіх підтримуваних платформах. Це один файл містить все, що потрібно використовувати Jess на Windows, UNIX, Macintosh або (за винятком JVM, які необхідно встановити самостійно.).

Jess має інтерактивний інтерфейс командного рядка. Дистрибутив включає в себе два сценарії: один для Windows і один для UNIX.

C:\Jess71p2> bin\jess.bat  

Результат виконання команди :

Jess, the Rule Engine for the Java Platform Copyright (C) 2008 Sandia Corporation Jess Version 7.1p1 8/6/2008 

Мова Jess[ред. | ред. код]

Символи[ред. | ред. код]

Символ є одним з основних концептів мови Jess . Символи дуже схожі на ідентифікатори в інших мовах. Jess символ може містити літери, цифри та наступні розділові знаки:

$ * = + / <> _ #?. .  

Символ не може починатися з цифри, він може почати з деяких знаків пунктуації (деякі з них мають особливе значення як операторів, коли вони з'являються на початку). Jess чутлива до регістру: foo, FOO і Foo - різні символи.

Числа[ред. | ред. код]

Jess використовує Java функції:

 ParseInt (java.lang.String)  parseLong (java.lang.String)  parseDouble (java.lang.String) 

Нижче приведені можливі варіанти представлення чисел:

5.643 
5654L 
6.0E4  
1D 

Рядки[ред. | ред. код]

Символьні рядки в Jess позначаються використовуються подвійні лапки ("). Нижче приведені можливі представлення рядків:

"sth" 
"Hello, World"  
"Hello, There" 

Останній рядок можна представити у вигляді наступного Java рядка

 "Hello,\nThere" 

Списки[ред. | ред. код]

Списки завжди вміщають у дужках і може включати нуль або більше символів, цифр, рядків або інших списків. Приклад:

(+ 2 4) 
(x y z)  
("Hello JESS !")  

Коментарі[ред. | ред. код]

Jess підтримує два типи коментарів : Lisp-стиль коментарів лінії і C-стиль коментарів блоку. Коментарі, що починаються з крапки з комою (;) тривають до кінця рядка тексту. Приклад:

; це коментар ( x y z ) 

Коментарі для деякого блоку:

/* Це Блок з коментарями Рядок 1 Рядок 2 */ 

Функції[ред. | ред. код]

Як і в Lisp, весь код Jess (керуючі структури, завдання, виклики процедур) приймає форму виклику функції. Функції викликів Jess просто списки. Функція вимагає використовувати префікс позначення, перелік яких голова символ того, що це ім'я існуючої функції можуть бути функції. Наприклад, вираз, який використовує функцію + додати цифри 2 і 3 буде написано (+ 2 3). При оцінці, значення цього виразу є число 5 (а не список, що містить один елемент 5!). Загалом, вираження визнані як такі й оцінювати в контексті, коли це необхідно. Ви можете ввести вираз у Jess> рядок. Jess обчислює вираз і виводить результат:

Jess> (+ (+ 1 2) (* 3 4)) 14 

Див. також[ред. | ред. код]