Questo articolo raccoglie una serie di appunti e riflessioni personali, incomplete ed imperfette su come costruire un software perfetto. Non c'è nulla di tecnico (per ora), solo un po' filosofia. A molti non sfuggirà però una risonanza con i lavori sul fronte del Semantic Web. In continua evoluzione.
Premesse
- Una affermazione è una proposizione composta da un soggetto, una proprietà e un oggetto.
- Un concetto è un insieme di affermazioni riferite al medesimo soggetto.
- INFERENZA: i soggetti devono essere univocamente identificabili.
- Le affermazioni si trovano sparpagliate in documenti oppure sono inferite da altre affermazioni attraverso regole.
- Le regole sono anchesse esprimibili come affermazioni.
- Un documento è, esso stesso, un concetto.
- INFERENZA:I documenti raccolgono affermazioni relative a diversi soggetti.
- Un documento evolve per edizioni.
- INFERENZA: ogni edizione di un documento deve essere univocamente identificabile.
- INFERENZA: Ogni affermazione deriva da una specifica edizione di un documento o da una catena di inferenze.
- Ogni edizione di un documento normalmente modifica una o più affermazioni.
- INFERENZA: Le affermazioni che definiscono un soggetto (ovvero un concetto) si modificano nel tempo.
- Una snapshot di un concetto è una fotografia di tutte le affermazioni note che lo riguardano catturate in un lasso di tempo possibilmente breve.
- Ogni documento può contenere affermazioni vere o false.
- INFERENZA: Un concetto (e quindi anche un documento) può contenere affermazioni in contrasto tra di loro.
- Un concetto è integro se non contiene affermazioni tra di loro in contrasto.
- L'integrità di un concetto è una metrica derivante dalla misura del numero di affermazioni in contrasto.
- Non è possibile determinare oggettivamente la veridicità delle affermazioni.
- E' possibile giudicare la veridicità delle affermazioni. Il giudizio sulla veridicità di una affermazione dipende dall'osservatore.
- Per ogni affermazione non inferita, è possibile stimare un livello di fiducia (trust) con un atto di fede soggettiva. Implicto o esplicito, conscio o inconscio. Il livello di trust per le affermazioni inferite può essere anchesso inferito.
- Un concetto ha un livello di trust influenzato dalla fiducia riposta nelle affermazioni che lo compongono e dalla sua integrità.
- la fiducia nelle affermazioni è influenzata dal trust nei documenti in cui l'affermazione è contenuta.
- Il trust nei documenti è influenzato delle relazioni sociali dell'osservatore (ad dal livello di trust di altri individui sugli stessi documenti, sui concetti espressi o so concetti analoghi, sull'autore, etc).
- INFERENZA: il cortocircuito tra trust delle affermazioni e trust dei concetti (documenti) genera un feedback.
- INFERENZA: sperimentalmente il livello di trust sulle affermazioni tende a stabilizzarsi velocemente ma eventi inattesi lo possono far cambiare anche in modo significativo e improvviso.
- INFERENZA: Il livello di trust in un affermazione è influenzato da una rete di atti di fede ("credo che...") che si influenzano continuamente tra di loro.
- INFERENZA: La visione del mondo, ovvero la fiducia di un osservatore sui concetti che gli appartengono, può mutare improvvisamente. Gli elementi che determinano il cambiamento sono: le mutazioni nelle reti sociali, la disponibilità di nuovi documenti, il cambiamento delle regole che determinano le inferenze.
- INFERENZA: La snapshot di un concetto più essere ritenuta più o meno credibile da diversi osservatori allo stesso tempo e/o dallo stesso osservatore in tempi differenti.
Conclusioni
- E' necessario che ogni affermazione mantenga traccia della edizione del documento da cui è tratta.
- E' necessario che ogni documento mantenga la storia delle proprie edizioni.
- E' necessario uno schema di identificazione per i soggetti.
- Il sofware perfetto conosce tutti i documenti noti al suo utente.
- E' possibile calcolare algoritmicamente una stima del livello di fiducia per ogni affermazione (rank). L'algoritmo di calcolo del rank deve però poter cambiare da persona a persona e nel tempo.
- E' possibile calcolare algoritmicamente una stima del livello di integrità di un concetto (ovvero la presenza o assenza di affermazioni tra di loro contrastanti). Tale algoritmo può essere generizzabile ma deve essere parametrico.
- Gli algoritmi possono essere implementati in applicazioni software.
- Il presentare una, alcune o tutte le affermazioni presenti in un concetto e come presentarle è una scelta che compete al software applicativo (ovvero dal suo programmatore).
- L'osservatore (utente) può avere più o meno fiducia nel software (e/o nel suo programmatore). Anche il software può essere espresso come concetto.
- Il software perfetto dovrebbe permettere di scegliere l'algoritmo di calcolo del rank sulle informazioni ed essere parametrico rispetto alla quantità di affermazioni contrastanti da visualizzare.
- L'algoritmo di rank dovrebbe essere noto e condiviso dall'utente.
- Il software perfetto è in grado di inferire informazioni elaborando le regole sulla base di una logica definita e condivisa con l'utente.
- Il software perfetto è in grado continuare la catena di inferenze anche in presenza di affermazioni in contrasto, tenendo conto del rank e/o computando differenti alternative.
- Il software perfetto è in grado di mostrare, a richiesta, risposte alternative alla stessa domanda.
- Un software che sceglie, per definizione può sbagliare. Il software perfetto è sempre in grado di motivare esplicitamente le sue scelte.
- Il software perfetto permette all'utente di creare delle nuove affermazioni.
- Il software perfetto produce nuovi documenti.
{fcomment}