title: Jess (informatica)
text: # Jess (informatica)
  
  Jess (Java Expert System Shell) è un sistema a regole implementato in Java. Utilizzato principalmente a scopo didattico, è un semplice ed intuitivo sistema utilizzato principalmente nell'ambito dell'intelligenza artificiale. Fu realizzato da Ernest J. Friedman-Hill.
  
  ## Linguaggio
  
  I componenti principali sono:
  
  * i fatti (facts);
  * le regole (rules);
  * il motore inferenziale (rules engine) o interprete.
  
  I fatti rappresentano l'informazione: essi sono essenzialmente delle assegnazioni attraverso le quali introduciamo conoscenza nel sistema. Per la definizione di un fatto viene utilizzato il comando assert. Ecco un esempio:
  
  L'elenco di tutti i fatti presenti nella base di conoscenza del sistema possono essere visualizzati attraverso il comando (watch facts).
  
  Le regole sono componenti che possono produrre conoscenza a partire dai fatti. Esse sono composte da due parti, antecedente e conseguente (o LHS, Left Hand Side e RHS, Right Hand Side). L'antecedente è costituito da condizioni che devono essere soddisfatte affinché la regola venga attivata; il conseguente è composto da azioni che vengono svolte dalla regola. Per la definizione delle regole viene utilizzato il comando 'defrule' che ha la seguente struttura:
  
  Il motore funziona in questo modo: confronta le condizioni di tutte le regole con tutti i fatti contenuti nella base dei fatti. Per ogni regola le cui condizioni sono soddisfatte, viene eseguita l'azione corrispondente.
  
  Tutto il codice in Jess (strutture di controllo, assegnamenti, chiamate a procedure) prende la forma di una chiamata a funzione. In particolare una chiamata a funzione è una lista: se la testa della lista è il nome di una funzione esistente, la lista è una chiamata a funzione.
  
  