Jess (programming language)

JessDeveloper(s)| Sandia National Laboratories

|

Stable release|

7.1p2 / November 5, 2008; 17 years ago (2008-11-05)

Platform| Java
License| Closed source / Public Domain
Website| www.jessrules.com

Jess is a rule engine for the Java platform that was developed by Ernest Friedman-Hill of Sandia National Labs.[1] It is a superset of the CLIPS programming language.[1] It was first written in late 1995.[1] The language provides rule-based programming for the automation of an expert system, and is frequently termed as an expert system shell.[1] In recent years, intelligent agent systems have also developed, which depend on a similar capability.

Rather than a procedural paradigm, where a single program has a loop that is activated only one time, the declarative paradigm used by Jess continuously applies a collection of rules to a collection of facts by a process called pattern matching. Rules can modify the collection of facts, or they can execute any Java code. It uses the Rete algorithm[1] to execute rules.

## Contents

* 1 License
* 2 Code examples
* 3 See also
* 3.1 Related systems
* 4 References
* 4.1 Additional sources
* 5 External links

## License

While CLIPS is licensed as open source, Jess is not open source. JESS is free for educational and government use but a license is required to use JESS for commercial systems.

## Code examples

Code examples:

; 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)))

Sample code:

(clear)
(deftemplate blood-donor (slot name) (slot type))
(deffacts blood-bank ; put names & their types into [[Working memory|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)

## See also

* JSR-94
* Decision Model and Notation

### Related systems

* CLIPS: public domain software tool for building expert systems.
* ILOG rules: a business rule management system.
* JBoss Drools: a business rule management system (BRMS).
* Prolog: a general purpose logic programming language.
* OpenL Tablets: business centric rules and BRMS.
* DTRules: a decision table based, open-sourced rule engine for Java.

## References

1. ↑ 1.0 1.1 1.2 1.3 1.4 Hemmer, Markus C. (2008). Expert Systems in Chemistry Research. CRC Press. pp. 47–48. ISBN 9781420053241. https://books.google.com/books?id=KepsLbpWe-0C&dq=Jess,+Java&pg=PA47. Retrieved March 30, 2012. ISBN 978-1-4200-5323-4

### Additional sources

* Friedman-Hill, Ernest (2003). Jess in Action: Rule Based Systems in Java. Manning Publications. ISBN 9781930110892. https://books.google.com/books?id=-xxjRZhyF0IC&q=Jess+in+Action:+Rule+Based+Systems+in+Java. Retrieved March 30, 2012. ISBN 1-930110-89-8

## External links

* Official Website

0.00

(0 votes)

Original source: https://en.wikipedia.org/wiki/Jess (programming language). Read more

|

Retrieved from "https://handwiki.org/wiki/index.php?title=Jess_(programming_language)&oldid=301265"