Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Jess (programming language)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Refimprove|date=March 2012}} {{Infobox software | name = Jess | developer = [[Sandia National Laboratories]] | released = {{Start date and age|1995}} | latest release version = 7.1p2 | latest release date = {{Start date and age|2008|11|05}} | programming language = [[Java (programming language)|Java]] | platform = [[Java (software platform)|Java]] | license = [[Proprietary software|Proprietary]], [[public domain]] | website = {{URL|www.jessrules.com}} }} '''Jess''' is a [[rule engine]] for the [[Java (software platform)|Java]] [[computing platform]], written in the [[Java (programming language)|Java]] [[programming language]]. It was developed by [[Ernest Friedman-Hill]] of [[Sandia National Laboratories]].<ref name="ExpertSystems">{{cite book |last1=Hemmer |first1=Markus C. |date=2008 |url=https://books.google.com/books?id=KepsLbpWe-0C&dq=Jess%2C+Java&pg=PA47 |title=Expert Systems in Chemistry Research |publisher=CRC Press |pages=47β48 |isbn=9781420053241 |access-date=March 30, 2012}} {{ISBN|978-1-4200-5323-4}}</ref> It is a [[superset]] of the [[CLIPS]] language.<ref name="ExpertSystems"/> It was first written in late 1995.<ref name="ExpertSystems"/> The language provides [[rule-based programming]] for the automation of an [[expert system]], and is often termed as an ''expert system shell''.<ref name="ExpertSystems"/> In recent years, [[intelligent agent]] systems have also developed, which depend on a similar ability. Rather than a [[Imperative programming|procedural paradigm]], where one program has a [[Loop (computing)|loop]] that is activated only one time, the [[Declarative programming|declarative paradigm]] used by Jess applies a set of rules to a set of facts continuously by a process named ''[[pattern matching]]''. Rules can modify the set of facts, or can execute any Java code. It uses the [[Rete algorithm]]<ref name="ExpertSystems"/> to execute rules. ==License== The [[Software license|licensing]] for Jess is [[freeware]] for education and government use, and is [[proprietary software]], needing a license, for commercial use. In contrast, CLIPS, which is the basis and starting code for Jess, is [[free and open-source software]]. ==Code examples== Code examples: <syntaxhighlight lang="lisp"> ; 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))) </syntaxhighlight> Sample code: <syntaxhighlight lang="lisp"> (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) </syntaxhighlight> ==See also== * [[Semantic reasoner]] * [[Decision Model and Notation]] ===Related systems=== * [[CLIPS]]: [[public-domain software]] tool to build expert systems * [[ILOG]] rules: business rule management system * JBoss [[Drools]]: business rule management system (BRMS) * [[Prolog]]: general purpose logic programming language * [[OpenL Tablets]]: business centric rules and BRMS * DTRules: [[decision table]] based, open-source rule engine for Java ==References== {{Reflist}} ===Further sources=== * {{cite book |last1=Friedman-Hill |first1=Ernest |date=2003 |url=https://books.google.com/books?id=-xxjRZhyF0IC&q=Jess+in+Action:+Rule+Based+Systems+in+Java |title=Jess in Action: Rule Based Systems in Java |publisher=Manning Publications |isbn=9781930110892 |access-date=March 30, 2012}} {{ISBN|1-930110-89-8}} ==External links== * {{Official website|www.jessrules.com}} [[Category:Expert systems]] [[Category:Rule engines]] [[Category:Knowledge representation languages]] [[Category:Java APIs]] [[Category:Sandia National Laboratories]] <!-- Hidden categories below --> [[Category:Articles with example Lisp (programming language) code]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Cite book
(
edit
)
Template:ISBN
(
edit
)
Template:Infobox
(
edit
)
Template:Infobox software
(
edit
)
Template:Main other
(
edit
)
Template:Official website
(
edit
)
Template:Refimprove
(
edit
)
Template:Reflist
(
edit
)
Template:Template other
(
edit
)