Jess
Jess — система для розробки експертних систем, яка є нащадком CLIPS і повністю написана під JAVA. Дана система була розроблена у Національній лабораторії Сандія (Sandia National Laboratories) в Ліверморі, Каліфорнія. За допомогою Jess можна створити програмне забезпечення мовою[уточнити] Java, яке розглядає знання у вигляді декларативних правил.
Тип | мова програмування |
---|---|
Розробник | Sandia National Laboratoriesd |
Вебсайт | jessrules.com |
Його потужна скриптова мова дає доступ до всіх API Java. Jess включає в себе повнофункціональне середовище розробки на основі Eclipse. Jess використовує розширену версію алгоритму Рете до процесу правил. Алгоритм Рете є досить ефективним механізмом для вирішення важких завдань типу "багато-до-багатьох". Також має багато унікальних особливостей, включаючи зворотний ланцюжок, може безпосередньо керувати[Що?] і оцінювати[Що?] об'єкти 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