Forward chaining
Il forward chaining o forward reasoning (lett. risp. "incatenamento in avanti" e "ragionamento in avanti") è uno dei due principali metodi di ragionamento usati da un motore inferenziale. Può essere descritto logicamente come la ripetuta applicazione del modus ponens. L'opposto del forward chaining è il backward chaining.
Funzionamento
[modifica | modifica wikitesto]Il forward chaining inizia dai dati disponibili e usa le regole di inferenza per ricavare ulteriori dati fino al raggiungimento di un certo obiettivo. Un motore inferenziale che usa forward chaining ad ogni passo va alla ricerca delle regole di inferenza tali per cui la premessa è nota essere vera, dopodiché può dedurre la conseguenza e aggiungerla come nuovo dato a disposizione.[1]
Esempio
[modifica | modifica wikitesto]Supponiamo che l'obbiettivo sia quello di trovare il colore di un certo animale di nome Fritz, sapendo che esso gracida e mangia le mosche e conoscendo le seguenti regole di inferenza:
- Se X gracida e X mangia mosche, allora X è una rana.
- Se X cinguetta e X canta, allora X è un canarino.
- Se X è una rana, allora X è verde.
- Se X è un canarino, allora X è giallo.
Assumiamo veri i seguenti fatti:
- Fritz gracida
- Fritz mangia le mosche
Ragionando tramite forward chaining, il motore inferenziale può derivare che Fritz è verde tramite la seguente serie di passaggi:
- Dato che i fatti a e b rendono la premessa della regola n° 1 vera, sostituendo in quest'ultima X con Fritz si deduce il seguente fatto:
- Fritz è una rana
- Dato che il fatto c rende la premessa della regola n° 3 vera, sostituendo in quest'ultima X con Fritz si deduce il seguente fatto:
- Fritz è verde
Differenze con il backward chaining
[modifica | modifica wikitesto]Il nome "forward chaining" deriva dal fatto che il motore di inferenza parte dai dati e ragiona "in avanti" verso la risposta, in opposizione al backward chaining, in cui avviene il procedimento inverso.
Visto che sono i dati disponibili a determinare la scelta delle regole di inferenza, il metodo è definito "data-driven", in contrasto con il metodo backward chaining che è definito "goal-driven". In altre parole, mentre il forward chaining prevede la materializzazione delle informazioni dedotte, il backward chaining consiste nel cosiddetto query rewriting (lett. "riscrittura della query"), ovvero sulla riformulazione intensionale dell'obiettivo da raggiungere.[2][3] Nelle basi di dati questi due paradigmi sono noti anche come bottom-up e top-down, rispettivamente.[4]
Note
[modifica | modifica wikitesto]- ^ (EN) Edward Feigenbaum, The Rise of the Expert Company, Times Books, 1988, p. 318, ISBN 0-8129-1731-6.
- ^ (EN) Riccardo Rosati, OWL 2 (PDF), su diag.uniroma1.it, Università degli Studi di Roma "La Sapienza", 2018-19. URL consultato il 6 marzo 2021.
- ^ (EN) Mariano Rodríguez-Muro e Diego Calvanese, Semantic Index: Scalable Query Answering without Forward Chaining or Exponential Rewritings (PDF), Atti della 10ª International Semantic Web Conference (ISWC 2011), 2011. URL consultato il 6 marzo 2021 (archiviato il 6 marzo 2021).
- ^ (EN) An Introduction to Existential Rules (PDF), su aspiq.lsis.org, ASPIQ, maggio 2014. URL consultato il 6 marzo 2021 (archiviato dall'url originale il 6 marzo 2021).