Distribution
Category UC-411
SAND98-8206 (revised)
Unlimited Release
First Printed November 1997
Jess, The Expert System Shell for the Java Platform
http://herzberg.ca.sandia.gov/jess
Ernest J. Friedman-Hill
Distributed Computing Systems
Sandia National Laboratories
Livermore, CA
Version 6.1RC1 (24 March 2003)
ABSTRACT
This report describes Jess, an expert system shell and scripting language written entirely in Sun
Microsystem’s Java language. Jess supports the development of rule-based expert systems which can
be tightly coupled to code written in the powerful, portable Java language. The syntax of the Jess
language is discussed, and a comprehensive list of supported functions is presented. Guides to calling
Java functions from Jess, to extending Jess by writing Java code, and to embedding Jess in Java
applications are also included.
Abbreviated Table of Contents
Full Table of Contents
An overview of this manual
Introduction
Unpacking and compiling Jess; when to use Jess; designing a Jess application
The Jess Language
A reference guide to the Jess language, from basic language elements to rule-based programming
Programming in the Jess Language
Helpful hints and techniques for writing Jess programs
Introduction to Programming with Jess in Java
A tutorial introduction to the most commonly used Java classes in the Jess library
Adding Commands to Jess
Writing new functions for the Jess language in Java
Embedding Jess in Java Code
A brief discussion of Java application structure
Writing GUIs in Jess
How to create GUIs without writing a single line of Java code
The Jess Function List
Reference documentation for every function in the Jess language
Java API Guide
Javadoc-generated documentation for the Java classes that comprise Jess
The Rete Algorithm
An introduction to the technical details of how Jess works
Change History
How Jess got to where it is today
Useful Reference Material
A bibliography of books, articles and links useful to the Jess user
Release Notes
Information about bugs and limitations specific to this version of Jess, and information about porting
applications from Jess 5 to Jess 6
Function Cross-reference
A list of all Jess functions organized by usage
Table of Contents
1. Introduction
1.1. Abstract
1.2. Compatibility
1.3. Mailing List
1.4. Bugs
1.5. Assumptions
1.6. Getting ready
1.6.1. Unpacking the Distribution
1.6.2. Compiling Jess
1.6.3. Jess Example Programs
1.6.4. Command-line Interface
1.6.5. Jess as an Applet
1.7. What makes a good Jess application?
1.7.1. Jess vs. Prolog
1.8. About Jess and performance
1.8.1. Sun’s HotSpot Virtual Machine
1.9. Command-line, GUI, or embedded?
2. The Jess Language
2.1. Basics
2.1.1. Atoms
2.1.2. Numbers
2.1.3. Strings
2.1.4. Lists
2.1.5. Comments
2.2. Functions
2.3. Variables
2.3.1. Global variables (or defglobals)
2.4. Deffunctions
2.5. Defadvice
2.6. Java reflection
2.7. The knowledge base
2.7.1. Ordered facts
2.7.2. Unordered facts
2.7.3. The deffacts construct
2.7.4. Definstance facts
2.8. Defrules
2.8.1. Basic Patterns
2.8.2. Pattern bindings
2.8.3. Salience and conflict resolution
2.8.4. The ’and’ conditional element.
2.8.5. The ’or’ conditional element.
2.8.5.1. Subrule generation and the ’or’ conditional element.
2.8.6. The ’not’ conditional element.
2.8.7. The ’test’ conditional element.
2.8.7.1. Time-varying method returns
2.8.8. The ’logical’ conditional element.
2.8.9. The ’unique’ conditional element.
2.8.10. The ’exists’ conditional element.
2.8.11. Node index hash value.
2.8.12. Forward and backward chaining
2.9. Defqueries
2.9.1. The variable declaration
2.9.2. The max-background-rules declaration
2.9.3. The run-query command
2.9.4. The count-query-results command
2.9.5. The future of queries
2.10. Defmodules
2.10.1. Defining constructs in modules
2.10.2. Modules, scope, and name resolution
2.10.3. Module focus and execution control
2.10.3.1. The auto-focus declaration
2.10.3.2. Returning from a rule RHS
3. Programming in the Jess Language
3.1. Using an External Editor
3.2. Efficiency of rule-based systems
3.3. Error Reporting and Debugging
3.4. Putting Java Objects into Fact Slots
4. Introduction to Programming with Jess in Java
4.1. The jess.JessException class
4.2. The jess.Value class
4.2.1. The subclasses of jess.Value
4.2.1.1. The class jess.Variable
4.2.1.2. The class jess.FuncallValue
4.2.1.3. The class jess.LongValue
4.2.1.4. The class jess.FactIDValue
4.2.2. Value resolution
4.3. The jess.Context class
4.4. The jess.Rete class
4.4.1. Equivalents for common Jess functions
4.4.2. Executing other Jess commands
4.4.2.1. Optional commands
4.4.3. The script library
4.4.4. Transferring values between Jess and Java code
4.4.5. Methods for adding, finding and listing constructs
4.4.6. I/O Routers
4.4.7. jess.awt.TextAreaWriter and jess.awt.TextReader
4.5. The jess.ValueVector class
4.6. The jess.Funcall class
4.7. The jess.Fact class
4.7.1. Constructing an Unordered Fact from Java
4.7.2. Constructing a Multislot from Java
4.7.3. Constructing an Ordered Fact from Java
4.8. The jess.Deftemplate class
4.9. The jess.Token class
4.10. The jess.JessEvent and jess.JessListener classes
4.10.1. Working with events from the Jess language
4.11. Setting and Reading Java Bean Properties
4.12. Formatting Jess Constructs
5. Adding Commands to Jess
5.1. Writing Extensions
5.1.1. Implementing your Userfunction
5.1.1.1. Legal return values
5.1.2. Loading your Userfunction
5.1.3. Calling assert from a Userfunction
5.2. Writing Extension Packages
5.3. Obtaining References to Userfunction Objects
6. Embedding Jess in a Java Application
6.1. Using the class jess.Main
6.2. Manipulating Jess in other ways
7. Creating Graphical User Interfaces in the Jess Language
7.1. Handling Java AWT events
7.2. Screen Painting and Graphics
8. The Jess Function List
9. Jess’s Java APIs
10. The Rete Algorithm
11. Change History
12. References
12.1. Java and Java Programming
12.2. Expert Systems
13. Release Notes
13.1. Important changes in Jess 6.1
1 / 150 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !