CLIPS
This article needs additional citations for verification. (September 2013) |
expert systems | |
---|---|
First appeared | 1985 |
Website | https://clipsrules.net |
CLIPS is a
CLIPS was probably the most widely used expert system tool as of 2005.[1] CLIPS itself is written in C, extensions can be written in C, and CLIPS can be called from C. Its syntax resembles that of the programming language Lisp.[2]
CLIPS incorporates a complete object-oriented language for writing expert systems. COOL combines the programming paradigms of procedural, object oriented and logical (theorem proving) languages.[3]
Facts and rules
CLIPS uses forward chaining.[4][2] Like other expert system languages, CLIPS deals with rules and facts. Various facts can make a rule applicable. An applicable rule is then fired.[4] Facts and rules are created by first defining them, as shown below:
(deftemplate car_problem
(slot name)
(slot status))
(deffacts trouble_shooting
(car_problem (name ignition_key) (status on))
(car_problem (name engine) (status wont_start))
(car_problem (name headlights) (status work)))
(defrule rule1
(car_problem (name ignition_key) (status on))
(car_problem (name engine) (status wont_start))
=>
(assert (car_problem (name starter) (status faulty))))
Having set this up, the (reset) command causes CLIPS to read the facts and rules. In this case, that would lead to the three "trouble_shooting" facts being asserted. Then the (run) command is used. Given that the two facts listed in rule1 have both been asserted, the conditions for doing its action have been met so the additional fact is asserted as a result of the run.
CLIPS> (reset)
CLIPS> (agenda)
0 rule1: f-1,f-2
For a total of 1 activation.
CLIPS> (facts)
f-0 (initial-fact)
f-1 (car_problem (name ignition_key) (status on))
f-2 (car_problem (name engine) (status wont_start))
f-3 (car_problem (name headlights) (status work))
For a total of 4 facts.
CLIPS> (run)
CLIPS> (facts)
f-0 (initial-fact)
f-1 (car_problem (name ignition_key) (status on))
f-2 (car_problem (name engine) (status wont_start))
f-3 (car_problem (name headlights) (status work))
f-4 (car_problem (name starter) (status faulty))
For a total of 5 facts.
CLIPS>
(assert <fact>+)
(Assert (object (name "chair")
(Material wood)
(height 3feet)
(Color brown))
CLIPS(retract <fact-index+)
(retract 0)
for a color
In CLIPS, salience allows a user to assign priority (or weight) to a rule.
Descendants
Descendants of the CLIPS language include Jess (rule-based portion of CLIPS rewritten in Java, it later grew up in different direction),[5] and FuzzyCLIPS (which adds concept of relevancy into the language).
See also
References
- ISBN 1-59593-066-3.
- ^ ISBN 81-315-0167-1.
- ^ Riley, Gary (30 Nov 2017). CLIPS Reference Manual: Volume 1 - Basic Programming Guide (PDF). Retrieved 29 April 2023.
- ^
- ^ Goyal, R; Jayasudha, T; Pandey, P; Devi, R. D; Rebecca, A; Sarma, M. Manju; Lakshmi, B (2014), "Knowledge based system for Satellite data product selection", The International Archives of the Photogrammetry, Remote Sensing and Spatial Information Sciences, 40 (8): 1233–1236 "JESS was originally inspired by the CLIPS expert system shell, but has grown into a complete, distinct Java-influenced environment of its own."