簡介
Jess是Java平台上的規則引擎,它是CLIPS程式設計語言的超集,由Sandia國家實驗室的Ernest Friedman-Hill開發。它的第一個版本寫於1995年晚期。
Jess提供適合自動化專家系統的邏輯編程,它常被稱作“專家系統外殼”。近年來,智慧型代理系統也在相似的能力上發展起來。
與一個程式中有一個只運行一次的循環的命令式程式語言不同,Jess使用的聲明式編程通過一個名為“模式匹配”的過程連續的對一個事實的集合運用一系列規則。規則可以修改事實集合,或者運行任何Java代碼。
Jess可以被用來構建使用規則定義形式的知識來推倒結論和推論的Java Servlet、EJB、Applet和應用程式。因為不同的規則匹配不同的輸入,所以有了一些有效的通用匹配算法。Jess規則引擎使用Rete算法。
特性
Jess非常小巧、靈活,並且是已知規則引擎中最快的。核心Jess語言與CLIPS依然兼容,許多Jess腳本也是有效的CLIPS腳本。與CLIPS一樣,Jess使用Rete運算法則來處理規則。Rete是一個非常高效的算法,用於解決複雜、艱深的多對多匹配問題。在CLIPS的基礎上,Jess添加了許多特性:後向鍊表、運行記憶體查詢以及操作和直接推理Java對象的能力。Jess同時也是一個強有力的Java腳本環境。通過它你能夠創建Java對象、調用Java方法而無需編譯任何Java代碼。
許可證
Jess不是開源軟體,而CLIPS是。
代碼實例
代碼實例:
(deftemplate male "" (declare (ordered TRUE)))
(deftemplate female "" (declare (ordered TRUE)))
(deftemplate parent "" (declare (ordered TRUE)))
(deftemplate father "" (declare (ordered TRUE)))
(deftemplate mother "" (declare (ordered TRUE)))
(deffacts initialFacts
(male bill)
(female jane)
(female sally)
(parent bill sally)
(parent jane sally)
)
(defrule father
(parent ?x ?y)
(male ?x)
=>
(printout t crlf ?x " is the father of " ?y crlf)
)
(defrule mother
(parent ?x ?y)
(female ?x)
=>
(printout t crlf ?x " is the mother of " ?y crlf)
)
(reset)
(facts)
(run)
(printout t crlf)