Джесс (язык программирования)
Эта статья нуждается в дополнительных цитатах для проверки . ( март 2012 г. ) |
Разработчик(и) | Сандианские национальные лаборатории |
---|---|
Первоначальный выпуск | 1995 год |
Стабильная версия | 7.1п2
/ 5 ноября 2008 г |
Написано в | Ява |
Платформа | Ява |
Лицензия | Собственность , общественное достояние |
Веб-сайт | www |
Jess — это механизм правил для Java вычислительной платформы , написанный на Java языке программирования . Его разработал Эрнест Фридман-Хилл из Национальной лаборатории Сандии . [1] Это расширенный вариант языка CLIPS . [1] Впервые оно было написано в конце 1995 года. [1] Язык обеспечивает программирование на основе правил для автоматизации экспертной системы , и его часто называют оболочкой экспертной системы . [1] В последние годы также были разработаны системы интеллектуальных агентов , которые зависят от аналогичных способностей.
Вместо процедурной парадигмы , где одна программа имеет цикл , который активируется только один раз, декларативная парадигма, используемая Джессом, непрерывно применяет набор правил к набору фактов с помощью процесса, называемого сопоставлением с образцом . Правила могут изменять набор фактов или выполнять любой код Java. Он использует алгоритм Rete [1] выполнять правила.
Лицензия
[ редактировать ]Лицензия бесплатное на Jess — программное обеспечение для образовательных и государственных учреждений, а также проприетарное программное обеспечение , требующее лицензии для коммерческого использования. Напротив, CLIPS, который является основой и исходным кодом Jess, является бесплатным программным обеспечением с открытым исходным кодом .
Примеры кода
[ редактировать ]Примеры кода:
; is a comment
(bind ?x 100)
; x = 100
(deffunction max (?a ?b)
(if (> ?a ?b) then ?a else ?b))
(deffacts myroom
(furniture chair)
(furniture table)
(furniture bed)
)
(deftemplate car
(slot color)
(slot mileage)
(slot value)
)
(assert (car (color red) (mileage 10000) (value 400)))
Пример кода:
(clear)
(deftemplate blood-donor (slot name) (slot type))
(deffacts blood-bank ; put names & their types into [[working memory]]
(blood-donor (name "Alice")(type "A"))
(blood-donor (name "Agatha")(type "A"))
(blood-donor (name "Bob")(type "B"))
(blood-donor (name "Barbara")(type "B"))
(blood-donor (name "Jess")(type "AB"))
(blood-donor (name "Karen")(type "AB"))
(blood-donor (name "Onan")(type "O"))
(blood-donor (name "Osbert")(type "O"))
)
(defrule can-give-to-same-type-but-not-self ; handles A > A, B > B, O > O, AB > AB, but not N1 > N1
(blood-donor (name ?name)(type ?type))
(blood-donor (name ?name2)(type ?type2 &:(eq ?type ?type2) &: (neq ?name ?name2) ))
=>
(printout t ?name " can give blood to " ?name2 crlf)
)
(defrule O-gives-to-others-but-not-itself ; O to O cover in above rule
(blood-donor (name ?name)(type ?type &:(eq ?type "O")))
(blood-donor (name ?name2)(type ?type2 &: (neq ?type ?type2) &: (neq ?name ?name2) ))
=>
(printout t ?name " can give blood to " ?name2 crlf)
)
(defrule A-or-B-gives-to-AB ; case O gives to AB and AB gives to AB already dealt with
(blood-donor (name ?name)(type ?type &:(or (eq ?type "A") (eq ?type "B" ))))
(blood-donor (name ?name2)(type ?type2 &: (eq ?type2 "AB") &: (neq ?name ?name2) ))
=>
(printout t ?name " can give blood to " ?name2 crlf)
)
;(watch all)
(reset)
(run)
См. также
[ редактировать ]Связанные системы
[ редактировать ]- CLIPS : общедоступный программный инструмент для создания экспертных систем.
- Правила ILOG : система управления бизнес-правилами
- JBoss Drools : система управления бизнес-правилами (BRMS)
- Пролог : язык логического программирования общего назначения.
- Таблетки OpenL : бизнес-ориентированные правила и BRMS
- DTRules: таблицы решений для Java. механизм правил с открытым исходным кодом на основе
Ссылки
[ редактировать ]- ^ Jump up to: а б с д и Хеммер, Маркус К. (2008). Экспертные системы в химических исследованиях . ЦРК Пресс. стр. 47–48. ISBN 9781420053241 . Проверено 30 марта 2012 г. ISBN 978-1-4200-5323-4
Дополнительные источники
[ редактировать ]- Фридман-Хилл, Эрнест (2003). Джесс в действии: системы на основе правил в Java . Публикации Мэннинга. ISBN 9781930110892 . Проверено 30 марта 2012 г. ISBN 1-930110-89-8