0% found this document useful (0 votes)
29 views29 pages

Java Expert System Shell: Matthieu Moisse

This document discusses Java Expert System Shell (Jess), an expert system development tool and rule engine for the Java platform. Jess was inspired by CLIPS and uses declarative rules to simulate human reasoning. The document covers Jess' history, syntax, functions, templates, facts, rules, and provides an example of using Jess to solve a problem by matching facts and firing rules. Potential applications of Jess include puzzles, business environments, and J2EE applications.
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
29 views29 pages

Java Expert System Shell: Matthieu Moisse

This document discusses Java Expert System Shell (Jess), an expert system development tool and rule engine for the Java platform. Jess was inspired by CLIPS and uses declarative rules to simulate human reasoning. The document covers Jess' history, syntax, functions, templates, facts, rules, and provides an example of using Jess to solve a problem by matching facts and firing rules. Potential applications of Jess include puzzles, business environments, and J2EE applications.
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 29

Java Expert System Shell

Matthieu Moisse
AAU

5 November 2009

Matthieu Moisse (AAU)

Jess

5 November 2009

1 / 29

1 2

History Introduction Expert System Rule-Based System Syntax Functions Templates Facts Rules Example Use My Opinion Questions References
Matthieu Moisse (AAU) Jess 5 November 2009 2 / 29

4 5 6 7 8

History

Dr. Ernest J. Friedman-Hill Sandia National Laboratories (late 1995) inspired by CLIPS
C Language Integrated Production System 1985 at NASA-Johnson Space Center

Syntax of LISP

Matthieu Moisse (AAU)

Jess

5 November 2009

3 / 29

Expert System

Domain in AI Simulates human brain Expert Systems


Neural Networks Blackboard Systems Belief Networks Case-Based Reasoning Rule-Based Systems

Matthieu Moisse (AAU)

Jess

5 November 2009

4 / 29

Why would we use it?

Procedural Programming
functions logic control sequential deterministic

Declarative Programming
rules & facts no logic control

Matthieu Moisse (AAU)

Jess

5 November 2009

5 / 29

Rule-Based System
Working Memory (Facts) Rule Base (If Then Else) Inference Engine (Reasoning)

Matthieu Moisse (AAU)

Jess

5 November 2009

6 / 29

Inference Engine
Pattern Matching (Rete) Activate Rule Conict Resolution Fire Rule

Matthieu Moisse (AAU)

Jess

5 November 2009

7 / 29

Basics

Commands
(reset) (run)

Matthieu Moisse (AAU)

Jess

5 November 2009

8 / 29

Basics

Symbols
letters digits $ = +/ <> ?#

Symbols
foo rst-value contestant#1 abc

Matthieu Moisse (AAU)

Jess

5 November 2009

9 / 29

Basics

Numbers
int long double

Numbers
3 4. 5.643 5654L 6.0E4 1D

Matthieu Moisse (AAU)

Jess

5 November 2009

10 / 29

Basics

Strings
no escape sequences

Strings
foo Hello, World \Nonsense,\ he said rmly. Hello, There

Matthieu Moisse (AAU)

Jess

5 November 2009

11 / 29

Basics

Lists
everything is a list

Lists
(+ 3 2) (a b c) (Hello, World) () (deftemplate foo (slot bar))

Matthieu Moisse (AAU)

Jess

5 November 2009

12 / 29

Function

Functions
(deunction <function-name> [<doc-comment>] (<parameter>*) <exp>* [<return-specier>])

Function
(deunction max Calculates the max of 2 variables (?a ?b) (if (> ?a ?b) then (return ?a) else (return ?b) ))

Matthieu Moisse (AAU)

Jess

5 November 2009

13 / 29

Facts

Facts
Templates Unordered Facts Ordered Facts Shadow Facts

Matthieu Moisse (AAU)

Jess

5 November 2009

14 / 29

Templates
Templates
(deftemplate <template-name> [extends <extended-template-name>] [<doc-comment>] (slot multislot <slot-name> [some options])*)

Template
(deftemplate automobile A specic car.) (slot make) (slot model) (slot year (type INTEGER)) (slot color (default white)) )

Matthieu Moisse (AAU)

Jess

5 November 2009

15 / 29

Unordered Facts
Template
(deftemplate automobile A specic car.) (slot make) (slot model) (slot year (type INTEGER)) (slot color (default white)) )

Unordered facts
(<template-name> (<slot-name> <value>)*)

Unordered fact
(automobile (make ford) (year 1999) (model Explorere))
Matthieu Moisse (AAU) Jess 5 November 2009 16 / 29

Ordered Facts
Ordered facts
(<template-name> <value>*)

Ordered fact
Domain in AI Simulates human brain (shopping-list eggs milk bread)

Template
(deftemplate shopping-list A list of stu we need to buy (declare (ordered TRUE)) )

Matthieu Moisse (AAU)

Jess

5 November 2009

17 / 29

Shadow Fact

Link to Java-Objects

Shadow Fact
(bind ?a (new Account)) (add ?a) (printout t (?a getBalance) crlf) (modify 0 (balance 1))

Matthieu Moisse (AAU)

Jess

5 November 2009

18 / 29

Rules

Rules
(defrule <rule-name> [<doc-comment>] <LHS> => <RHS> ) LHS
IF Pattern Matching

RHS
THEN ...

Matthieu Moisse (AAU)

Jess

5 November 2009

19 / 29

Rules
Rule
(defrule all-fords nd all ford models ?car < (automobile {make == ford}) => (printout t A ?car.model is a model of ford! crlf) )

Rule
(defrule match-list-with-bacon Find grocery-lists that contains bacon (grocery-list $? bacon $?) => (printout t Yes, bacon is on the list crlf) )
Matthieu Moisse (AAU) Jess 5 November 2009 20 / 29

Example

Example
(deftemplate pants-color (slot of) (slot is)) (deftemplate position (slot of) (slot is))

Matthieu Moisse (AAU)

Jess

5 November 2009

21 / 29

Example

Example
(defrule generate-possibilities => (foreach ?name (create$ Fred Joe Bob Tom) (foreach ?color (create$ red blue plaid orange) (assert (pants-color (of ?name) (is ?color)))) (foreach ?position (create$ 1 2 3 4) (assert (position (of ?name) (is ?position))))))

Matthieu Moisse (AAU)

Jess

5 November 2009

22 / 29

Example
Example
(defrule nd-solution ;; There is a golfer named Fred, whose position is ?p1 ;; and pants color is ?c1 (position (of Fred) (is ?p1)) (pants-color (of Fred) (is ?c1)) ;; The golfer to Freds immediate right ;; is wearing blue pants. (position (of ?n& Fred) (is ?p&:(eq ?p (+ ?p1 1)))) (pants-color (of ?n& Fred) (is blue& ?c1)) ;; Joe is in position #2 (position (of Joe) (is ?p2&2& ?p1)) (pants-color (of Joe) (is ?c2& ?c1))

Matthieu Moisse (AAU)

Jess

5 November 2009

23 / 29

. . . Example. . .

. . . Example. . .
;; Bob is wearing the plaid pants (position (of Bob) (is ?p3& ?p1& ?p& ?p2)) (pants-color (of Bob& ?n) (is plaid&?c3& ?c1& ?c2)) ;; Tom isnt in position 1 or 4 ;; and isnt wearing orange (position (of Tom& ?n) (is ?p4& 1& 4& ?p1& ?p2& ?p3)) (pants-color (of Tom) (is ?c4& orange& blue& ?c1& ?c2& ?c3))

Matthieu Moisse (AAU)

Jess

5 November 2009

24 / 29

. . . Example

. . . Example
=> (printout (printout (printout (printout t t t t Fred ?p1 ?c1 crlf) Joe ?p2 ?c2 crlf) Bob ?p3 ?c3 crlf) Tom ?p4 ?c4 crlf crlf))

Matthieu Moisse (AAU)

Jess

5 November 2009

25 / 29

Use

puzzles business environments J2EE enterprise applications Windows CE handhelds DDG 1000 destroyer ship

Matthieu Moisse (AAU)

Jess

5 November 2009

26 / 29

My Opinion

...

Matthieu Moisse (AAU)

Jess

5 November 2009

27 / 29

Questions

Matthieu Moisse (AAU)

Jess

5 November 2009

28 / 29

Use

http://www.jessrules.com/ http://www.developer.com/java/other/article.php/3089641 http: //www.sandia.gov/news/resources/releases/2008/jessengine.html http://www.pjug.org/introtojess.ppt

Matthieu Moisse (AAU)

Jess

5 November 2009

29 / 29

You might also like