CLIPS is a rule-based expert system originally developed at Johnson Space Center of NASA. It attained remarkable popularity and was ported to many different computer platforms (there is even a java version Jess). For the purposes of the TInferenceEngine component, CLIPS refers to the syntax of the text files which contain rules, facts, fact templates, and functions. The TInferenceEngine component supports a subset of the functions available in CLIPS (see functions).
The TInferenceEngine component supports the following CLIPS constructs:
The IECS also adds an additional CLIPS-like construct, the deftype. The DefType serves as a type definition (and type constraint) and is used to define the types of fact template slots. The deftype allows you to define types that allow type inheritance, enumerations, range checking, and fuzzy sets. Defined types are required to use the fuzzy logic features of the IECS.
The major delimiter in CLIPS, like LISP, are parentheses. Everything is surrounded by parentheses, they are the begin and end statements in CLIPS. A construct will start with a open parentheses, usually followed by the construct type, then the construct definition, and finally closed with the close parentheses. For example, "(deffunction hello () (printout t "Hello"))" defines an interpreted function "hello", and "(deftemplate person (slot name))" defines a fact template. If the open parenthesis is not followed by a construct type (defrule, deftemplate, deffacts, defglobal, deffunction) and it is not somewhere in another construct where a fact is expected, the CLIPS parser tries to match the first token to a function name. For example, "(hello)" would execute the deffunction defined above.
Comments may be inserted using the semi-colon character which acts just like the "//" in pascal. Everything after the semi-colon until the end of the line is considered a comment. Some constructs allow a comment to be inserted right after the name of the construct.
The inference engine reads and writes CLIPS syntax using the TIEClipsParser object. Component writers can create their own parser objects to handle different syntax.
•COOL (CLIPS Object Oriented Language) and its functions are not supported
•truth maintenance is not supported currently (logical keyword)
•Other miscellaneous functions are not supported