efQuesto 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

  1. Una affermazione è una proposizione composta da un soggetto, una proprietà e un oggetto.
  2. Un concetto è un insieme di affermazioni riferite al medesimo soggetto.
  3. INFERENZA: i soggetti devono essere univocamente identificabili.
  4. Le affermazioni si trovano sparpagliate in documenti oppure sono inferite da altre affermazioni attraverso regole.
  5. Le regole sono anchesse esprimibili come affermazioni.
  6. Un documento è, esso stesso,  un concetto.
  7. INFERENZA:I documenti raccolgono affermazioni relative a diversi soggetti.
  8. Un documento evolve per edizioni.
  9. INFERENZA: ogni edizione di un documento deve essere univocamente identificabile.
  10. INFERENZA: Ogni affermazione deriva da una specifica edizione di un documento o da una catena di inferenze.
  11. Ogni edizione di un documento normalmente modifica una o più affermazioni.
  12. INFERENZA: Le affermazioni che definiscono un soggetto (ovvero un concetto) si modificano nel tempo.
  13. Una snapshot di un concetto è una fotografia di tutte le affermazioni note che lo riguardano catturate in un lasso di tempo possibilmente breve.
  14. Ogni documento può contenere affermazioni vere o false.
  15. INFERENZA: Un concetto (e quindi anche un documento) può contenere affermazioni in contrasto tra di loro.
  16. Un concetto è integro se non contiene affermazioni tra di loro in contrasto.
  17. L'integrità di un concetto è una metrica derivante dalla misura del numero di affermazioni in contrasto.
  18. Non è possibile determinare oggettivamente la veridicità delle affermazioni.
  19. E' possibile giudicare la veridicità delle affermazioni. Il giudizio sulla veridicità di una affermazione dipende dall'osservatore.
  20. 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.
  21. Un concetto ha un livello di trust influenzato dalla fiducia riposta nelle affermazioni che lo compongono e dalla sua integrità.
  22. la fiducia nelle affermazioni è influenzata dal trust nei documenti in cui l'affermazione è contenuta.
  23. 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).
  24. INFERENZA: il cortocircuito tra trust delle affermazioni e trust dei concetti (documenti) genera un feedback.
  25. 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.
  26. 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.
  27. 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.
  28. 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}