Corso di Laurea in INFORMATICA



Documenti analoghi
Università degli Studi di Bari Dipartimento di Informatica. Laboratorio di ICSE. CLIPS - Parte 1 - Nicola Di Mauro ndm@di.uniba.it

Corso di Laurea in INFORMATICA

Corso sul linguaggio SQL

Telerilevamento e GIS Prof. Ing. Giuseppe Mussumeci

I database relazionali (Access)

Organizzazione degli archivi

Il linguaggio SQL. è di fatto lo standard tra i linguaggi per la gestione di data base relazionali.

Funzioni in C. Violetta Lonati

Database. Si ringrazia Marco Bertini per le slides

MODELLO RELAZIONALE. Introduzione

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1)

Esercitazioni di Progettazione del Software. Esercitazione (Prova al calcolatore del 17 settembre 2010)

Access. P a r t e p r i m a

Manuale Operativo GESTIONE FISICA GUIDA ALL INSERIMENTO DATI

Dati relazionali e XML

Esercitazione CLIPS (I)

DB - Modello relazionale dei dati. DB - Modello Relazionale 1

LINGUAGGI DI PROGRAMMAZIONE

Basi di dati. Concetti introduttivi ESEMPIO. INSEGNAMENTI Fisica, Analisi, Aule. Docenti. Entità Relazioni Interrogazioni. Ultima modifica: 26/02/2007

Esercitazione di Basi di Dati

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Capitolo Quarto...2 Le direttive di assemblaggio di ASM Premessa Program Location Counter e direttiva ORG

Riccardo Dutto, Paolo Garza Politecnico di Torino. Riccardo Dutto, Paolo Garza Politecnico di Torino

Progettazione di Database. Un Esempio

Università degli Studi di Verona. Laboratorio di Basi di Dati

Abilità Informatiche A.A. 2010/2011 Lezione 9: Query Maschere Report. Facoltà di Lingue e Letterature Straniere

CORSO ACCESS PARTE II. Esistono diversi tipi di aiuto forniti con Access, generalmente accessibili tramite la barra dei menu (?)

Corso di Informatica (Basi di Dati)

Corso di Laurea in INFORMATICA

Basi di dati. (Sistemi Informativi) teoria e pratica con Microsoft Access. Basi di dati. Basi di dati. Basi di dati e DBMS DBMS DBMS

Laboratorio Progettazione Web PHP e FORMs HTML. Andrea Marchetti IIT-CNR andrea.marchetti@iit.cnr.ita 2013/2014

Mon Ami 3000 Varianti articolo Gestione di varianti articoli

Excel. A cura di Luigi Labonia. luigi.lab@libero.it

Algoritmi di Ricerca. Esempi di programmi Java

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori

Università degli Studi di L Aquila. Facoltà di Ingegneria. Corso di Laurea in Ingegneria Elettronica Corso di Sistemi Informativi

Basi di dati. Il Linguaggio SQL. K. Donno - Il Linguaggio SQL

Sistema Informativo Gestione Fidelizzazione Clienti MANUALE D USO

Archivi e Basi di Dati

Strutturazione logica dei dati: i file

Esercizio data base "Biblioteca"

Definire gli attributi dei blocchi

Il file seme o file modello del disegno

Basi di Dati corso C Esercitazione 18/12/2002 Autonoleggio tempo: 3 ore

Informatica (Basi di Dati)

Insegnamento di Informatica CdS Scienze Giuridiche A.A. 2006/7. Il trattamento dei dati

Esercitazione CLIPS. Realizzazione di un Sistema a Regole per la Risoluzione del Problema dell'agricoltore

Corso di Sistemi di Elaborazione delle informazioni

Le query. Lezione 6 a cura di Maria Novella Mosciatti

Progettazione di Basi di Dati

LUdeS Informatica 2 EXCEL. Seconda parte AA 2013/2014

Laboratorio di Basi di Dati e Web

I casi d uso corrispondono ai compiti che l attore (che può essere una persona fisica e non) può svolgere.

Nuovo Order Manager per il software NobelProcera

(Esercizi Tratti da Temi d esame degli ordinamenti precedenti)

Modello Relazionale. Modello Relazionale. Relazioni - Prodotto Cartesiano. Relazione: tre accezioni. Es. Dati gli insiemi

Tutorial 2014/15. (Istruzioni operative dell applicativ web predisposto per l inserimento dei docenti proposti)

INTERNET e RETI di CALCOLATORI A.A. 2011/2012 Capitolo 4 DHCP Dynamic Host Configuration Protocol Fausto Marcantoni fausto.marcantoni@unicam.

Informatica (Basi di Dati)

Corso sul linguaggio SQL

Università degli Studi di Ferrara - A.A. 2014/15 Dott. Valerio Muzzioli ORDINAMENTO DEI DATI

Inserimento esame nella procedura esami on-line. Passo 1: - Voce esse3: Calendario Esami->Esami Profitto->Abilita docenti

Corso di Fondamenti di Informatica

19. LA PROGRAMMAZIONE LATO SERVER

Ingegneria del Software 5. Esercizi sui casi d uso. Dipartimento di Informatica Università di Pisa A.A. 2014/15

Linguaggio SQL. Structured Query Language

B+Trees. Introduzione

Archivi e database. Prof. Michele Batocchi A.S. 2013/2014

Il File System. Il file system

Le Basi di Dati. Le Basi di Dati

corso di Access MICROSOFT ACCESS Docente: Andrea Mereu Università degli studi di Cagliari 16 aprile 9 maggio 2012

Basi di dati. Concetti Introduttivi ESEMPIO. Fisica, Analisi, Informatica. Entità Relazioni Interrogazioni. Database 2

Capitolo 4 Guida operativa del programma TQ Tara

ECDL - Database. European Computer Driving Licence - Modulo 5 - Database LEZIONE 2

Università degli Studi di Bari Dipartimento di Informatica. Laboratorio di ICSE. CLIPS - Parte 2 - Claudia d'amato claudia.damato@di.uniba.

Raggruppamenti Conti Movimenti

Introduzione ai database relazionali

Access. Microsoft Access. Aprire Access. Aprire Access. Aprire un database. Creare un nuovo database

Basi di Dati e Sistemi Informativi. Progettazione logica: Il modello relazionale

Gestione Filtri. InfoBusiness 2.8 Gestione Filtri Pag. 1/ 11

Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it

2 Reti di Calcolatori XML

I file di dati. Unità didattica D1 1

LABORATORIO. 2 Lezioni su Basi di Dati Contatti:

Link e permessi. Corso di Laurea Triennale in Ingegneria delle TLC e dell Automazione. Corso di Sistemi Operativi A. A

DDL, VINCOLI D INTEGRITÁ, AGGIORNAMENTI E VISTE. SQL è più di un semplice linguaggio di interrogazione

Capitolo 13. Interrogare una base di dati

5.3 TABELLE RECORD Inserire, eliminare record in una tabella Aggiungere record Eliminare record

La prima applicazione Java. Creazione di oggetti - 1. La prima applicazione Java: schema di esecuzione. Gianpaolo Cugola - Sistemi Informativi in Rete

Stream EDitor (sed) sed NON modifica l'input 2. L'output viene inviato allo standard output e puo' essere rediretto

Database. Appunti di Amaranto Oronzo e Giancane Diego Lezione dell Ing. Lucia Vaira 24/04/2014

Il sistema C.R.M. / E.R.M.

SQL Server Integration Services. SQL Server 2005: ETL - 1. Integration Services Project

Gestione Rapporti (Calcolo Aree)

Elena Baralis 2013 Politecnico di Torino 1

Tipi di Dato Ricorsivi

Guida Sintetica sulle operazioni iniziali per l'utilizzo di Scuolanext

RDBMS. Corso di Informatica RDBMS. Access. Corso di Laurea in Conservazione e Restauro dei Beni Culturali

Dispensa di database Access

Presidenza del Consiglio dei Ministri

Transcript:

Corso di Laurea in INFORMATICA INGEGNERIA DELLA CONOSCENZA E SISTEMI ESPERTI (a.a. 2010-2011) MODULO 1 Parte II 1.4 CLIPS: C Language Integrated Production System I fatti ordinati ed I Template. Claudia d'amato

La rappresentazione dell informazione in CLIPS avviene per mezzo di fatti, oggetti e variabili globali Fatti Rappresentazione dell'informazione I fatti sono uno strumento di base, di alto livello, per la rappresentazione dell informazione in CLIPS. Ogni fatto rappresenta una porzione di informazione memorizzata nel db dei fatti (lista dei fatti fact-list). I fatti rappresentano l unità fondamentale di dati utilizzata dalle regole. I fatti possono essere aggiunti alla fact-list (utilizzando il comando assert), rimossi dalla fact-list (utilizzando il comando retract), modificati (utilizzando il comando modify), o duplicati (utilizzando il comando duplicate).

Per poter utilizzare i comandi retract, modify, e duplicate è necessario specificare un fatto per mezzo del suo fact-index o fact-address. Ad ogni fatto aggiunto (o modificato) viene associato un indice intero (unico) detto fact-index i fact-index partono da zero e sono incrementati di uno per ogni nuovo fatto cambiato I fatti

Fatti ordinati I fatti ordinati sono costituiti da un campo seguito da una sequenza di zero o più campi separati da spazi e delimitati da una parentesi aperta a sinistra e da una parentesi chiusa a destra. Generalmente il primo campo di un fatto ordinato specifica una relazione che è applicata ai restanti campi del fatto. Esempio: (padre giovanni mario) dice che giovanni è il padre mario. (forno acceso) (altezza 100 m) (elenco-spesa zucchero miele zucchine pomodori)

CLIPS opera mantenendo una lista di fatti ed un insieme di regole che operano sui fatti. Un fatto rappresenta informazione (colore verde) o (genitore Giovanni Maria) I fatti vengono creati asserendoli nel database dei fatti utilizzando il comando assert: CLIPS>(assert (colore verde)) <Fact-0> <Fact-0>: risposta del CLIPS per dire che è stato inserito un nuovo fatto (numero 0) nel database dei fatti. CLIPS>(facts) f-0 (colore verde) For a total of 1 fact I Fatti Ordinati

I fatti possono anche essere rimossi dal database dei fatti utilizzando il comando retract <indice-fatto-daritrattare>: CLIPS>(assert (colore verde)) <Fact-0> CLIPS>(assert (colore rosso)) <Fact-1> Ritrattiamo il primo fatto e visualizziamo la lista dei fatti: CLIPS>(retract 0) CLIPS>(facts) f-1 (colour red) For a total of 1 fact. I Fatti Per ritrattare un fatto bisogna specificare un numero (fact-index). I fact-index non vengono riusati. Una volta ritrattato il fatto, il prossimo fatto asserito avrà indice 1 e non 0.

Il costrutto deffacts permette di definire una lista di fatti che vengono asseriti automaticamente quando si invoca il comando reset. I fatti asseriti con deffacts possono essere ritrattati o modificati come gli atri fatti. La initial fact-list, che include ogni deffacts definito, viene sempre ricostruita dopo ogni comando reset Dunque reset ripulisce la lista dei fatti dei fatti singolarmente asserti con assert mentre carica il blocco dei fatti asseriti con deffacts Sintassi (deffacts <deffacts-name> [<comment>] <RHS-pattern>*) Es. (deffacts albero-genealogico "Albero G (maschio mario) (femmina giulia) (genitore mario giulia) ) Il costrutto deffacts

I Fatti non ordinati I fatti ordinati rappresentano informazione ordinata. Per poter accedere a questo tipo di informazione bisogna conoscere i campi che la contengono. I fatti non ordinati (o template) forniscono la possibilità di astrarre dalla struttura del fatto assegnando dei nomi ad ogni campo nel fatto. Il costrutto deftemplate (analogo alla definizione di record o di struttura in C) viene utilizzato per creare un template che poi può essere utilizzato per accedere ai campi per nome. Un template è definito da zero o più definizioni di slots.

I template (deftemplate <deftemplate-name> [<comment>] <slot-definition>*) <slot-definition> ::= <single-slot-definition> <multislot-definition> <single-slot-definition> ::= (slot <slot-name> <template-attribute>*) <multislot-definition> ::= (multislot <slot-name> <template-attribute>*) <template-attribute> ::= <default-attribute> <constraint-attribute> <default-attribute> ::= (default?derive?none <expression>*) (default-dynamic <expression>*) L attributo default specifica un valore di default statico. La valutazione avviene una sola volta alla definizione del deftemplate. L attributo default-dynamic è un dynamic default. La valutazione avviene ogni volta che viene asserito un template.

(deftemplate corso (slot nome) (slot studenti) (slot docente) (slot aula)) I template: Esempio Istanziazione singola di template (assert (corso (nome ASS) (docente "Bianchi") (studenti 30) (aula "37A") ) ) (assert (corso (nome TIT) (studenti 35) (docente "Rossi") (aula "37A") ) ) Istanziazione di template mediante deffacts (deffacts elenco_corsi (corso (nome pippo) (studenti 15) (docente pluto) (aula 3b) ) (corso (nome ciccio) (studenti 18) (docente pluto) (aula 3c) ) )

I valori di default CLIPS> (clear) CLIPS> (deftemplate componenti (slot w (default?none)) (slot x (default?derive)) (slot y (default (gensym*))) (slot z (default-dynamic (gensym*)))) CLIPS> (assert (componenti)) [TMPLTRHS1] Slot w requires a value because of its (default?none) attribute. CLIPS> (assert (componenti (w 3))) <Fact-0> CLIPS> (assert (componenti (w 4))) <Fact-1> CLIPS> (facts) f-0 (componenti (w 3) (x nil) (y gen1) (z gen2)) f-1 (componenti (w 4) (x nil) (y gen1) (z gen3)) For a total of 2 facts. CLIPS>

Regole per Determinare Valori di Default Default values 1) Il tipo di default per lo slot è scelto dalla lista dei tipi:symbol, STRING, INTEGER, FLOAT, INSTANCE- N A M E, I N S T A N C E -A D D R E S S, F A C T -ADDRESS, EXTERNAL-ADDRESS. 2) Se il tipo di default ha una allowed constant restriction, allora viene scelto come default il primo valore specificato nello allowed constant attribute 3) Se il valore di default non è stato specificato al passo 2 e il tipo di default è INTEGER o FLOAT ed è specificato il range attribute, allora viene utilizzato come valore di default il minimo valore dell intervallo se non è? VARIABLE, altrimenti il massimo se non è?variable.

Attributi 4) Se il valore di default non è stato specificato né al passo 2 né al passo 3, allora viene utilizzato il valore di default default. Esso assume valore nil per il tipo SYMBOL, "" per il tipo STRING, 0 per il tipo INTEGER, 0.0 per il tipo FLOAT, [nil] per il tipo INSTANCE-NAME, un puntatore ad una istanza fittizia per il tipo INSTANCE-ADDRESS, un puntatore ad un fatto fittizio per il tipo FACT-ADDRESS, e il puntatore NULL per il tipo EXTERNAL-ADDRESS. 5) Se il valore di default da derivare è per un single field slot, allora viene usato il valore derivato dai passi 1 a 4. Il valore di default per un multifield slot è un multifield value di lunghezza zero. Se il multifield slot ha una cardinalità minima maggiore di zero, allora viene creato un multifield value con una lunghezza della minima cardinalità.

I constraint attributes, associati ai costrutti deftemplates e defclasses, permettono di verificare la validità dei tipi dei valori degli slot quando vengono creati template facts e istanze. Vengono anche utilizzati nei pattern della LHS di una regola per determinare l attivazione della regola. Esistono due tipi di constraint checking: static e dynamic (set-static-constraint-checking e set-dynamicconstraint-checking). <constraint-attribute> ::= <type-attribute>! <allowed-constant-attribute> <range-attribute> <cardinality-attribute> I Constraint-Attributes

Attributi: Definizione dei Tipi <type-attribute> ::= (type <type-specification>) <type-specification> ::= <allowed-type>+?variable <allowed-type> := SYMBOL STRING LEXEME INTEGER FLOAT NUMBER INSTANCE-NAME INSTANCE-ADDRESS INSTANCE EXTERNAL-ADDRESS FACT-ADDRESS Esempio (deftemplate object (slot name (type SYMBOL) (default?derive)) (slot location (type SYMBOL) (default?derive)) (slot on-top-of (type SYMBOL) (default floor)) (slot weight (allowed-values light heavy) (default light)) (multislot contents (type SYMBOL) (default?derive)))

Attributi: Definizione Valori Ammessi <allowed-constant-attribute> ::= (allowed-symbols <symbol-list>) (allowed-strings <string-list>) (allowed-lexemes <lexeme-list> (allowed-integers <integer-list>) (allowed-floats <float-list>) (allowed-numbers <number-list>) (allowed-instance-names <instance-list>) (allowed-values <value-list>) <symbol-list> ::= <symbol>+?variable <string-list> ::= <string>+?variable <lexeme-list> ::= <lexeme>+?variable <integer-list> ::= <integer>+?variable <float-list> ::= <float>+?variable <number-list> ::= <number>+?variable <instance-name-list> ::= <instance-name>+?variable <value-list> ::= <constant>+?variable Esempio: (allowed-symbols red green blue)

Attributi: Range e Cardinalità range attribute: intervallo numerico per i valori di uno slot (quando per lo slot utilizziamo valori numerici) <range-attribute> ::= (range <range-specification> <range-specification>) <range-specification> ::= <number>?variable cardinality attribute: restringe il numero di campi di un multifield slot. <cardinality-attribute> ::= (cardinality <cardinalityspecification> <cardinality-specification>) <cardinality-specification> ::= <integer>?variable