Simulazione dell`evoluzione del Trust all`interno di una comunità di

Transcript

Simulazione dell`evoluzione del Trust all`interno di una comunità di
UNIVERSITÀ DEGLI STUDI DI MILANO
Facoltà di Scienze Matematiche, Fisiche e Naturali
Dipartimento di Tecnologie dell’Informazione
Corso di Laurea in Informatica
"Tecniche di Trust Management per la
gestione di Metadati: Un tool di
simulazione dell'evoluzione del trust
all'interno di una comunità di utenti"
Relatore: Chiar.mo Prof.
Ernesto Damiani
Correlatore: Dott.
Paolo Ceravolo
Anno Accademico 2004/2005
AUTORE
ALESSIO CURCIO
Matr. 621527
____________________________________________________________________
II
____________________________________________________________________
RINGRAZIAMENTI
Ringrazio il Chiar.mo Prof. Ernesto Damiani per avermi aiutato ed accolto come
tesista; in particolare ringrazio il mio relatore, Dott. Paolo Ceravolo per il tempo
dedicato a me e alla mia tesi e per avermi seguito con interesse, disponibilità e
spirito collaborativo.
Ringrazio i miei genitori per avermi dato la possibilità di arrivare fin qui e per
essermi stati sempre vicini e Micol per avermi incoraggiato e sostenuto in tutti
questi anni.
Ringrazio Marco Viviani, Alberto Colombo e Fulvio Frati per i consigli e la
disponibilità.
III
____________________________________________________________________
PAROLE CHIAVE
Web Semantico
Trust
Simulazione
IV
____________________________________________________________________
“Trust is the result of a risk successfully
survived”
A.Gibb
V
____________________________________________________________________
Indice dei capitoli
Capitolo 1
Il web semantico
Introduzione
1.1 Il web semantico: Knowledge management
1.1.1 Web semantico
1.1.2 I metadati
1.1.3 Linguaggi per il web semantico
1
2
3
5
7
1.1.3.1 Resource Description Framework:RDF
1.1.3.2 Extensible Modelling Language:XML
1.1.3.3 Ontology Web Language:OWL
7
20
24
1.2 Ontologie
1.3 Applicazioni del web semantico
25
30
Capitolo 2
L’uso del trust negli ambienti centralizzati e distribuiti
2.1 Definizione di trust
2.2 Metriche di trust
2.2.1 Approcci centralizzati
2.2.2 Approcci distribuiti
2.3 Il problema della computazione del trust
35
37
39
44
50
Capitolo 3
Simulazione dell’evoluzione del trust in una comunità
di utenti.
3.1 Obiettivi del progetto
3.2 Il modello
3.2.1 Formalismo di descrizione degli utenti
3.2.2 La funzione di accesso
3.2.3 Funzione di correttezza del voto espresso
3.2.4 Scelta della funzione statistica:la gaussiana
3.2.5 Schema del modello per la simulazione
52
53
53
55
57
57
59
VI
____________________________________________________________________
3.3 Simulazione
3.3.1 Definizione e scopo
3.3.2 Modelli fornali
3.3.3 Tipi di simulazione
3.3.3.1 Il tempo
3.3.4 Strutture di modelli di simulazione
3.3.5 Pianificazione
3.4 Ingegnerizzazione
3.4.1 Scelta delle tecnologie
3.4.1.1 Java
3.4.1.2 XML
3.4.2 Scelta dell’interfaccia
3.5 Aggregatore del trust
3.5.1 Definizione di aggregatore e proprietà
3.5.2 Operatori di aggregazione
3.5.3 Aggregatori creati per la simulazione
3.6 Progetti collegati
62
62
65
66
66
67
68
68
73
73
75
78
78
78
81
84
85
Capitolo 4
Trust Simulator in funzione
4.1 Interfaccia utente
4.1.1 Creazione dei componenti
4.1.1.1 Schema
4.1.1.2 Usergroup
4.1.1.3 Project
87
87
87
88
89
4.1.2 I l Run della simulazione
90
4.1.2.1 Simulation Configuration
4.1.2.2 Usergroups
4.1.2.3 Assertions Trust
4.1.2.4 General Info
90
91
93
94
Capitolo 5
Conclusioni
5.1 Prove di evoluzione del sistema
5.1.1 Scelta del contesto di esempio per la simulazione
5.1.2 La composizione della popolazione
5.1.2.1 Prima simulazione
97
97
98
100
VII
____________________________________________________________________
5.1.2.2 Seconda simulaizone
5.1.2.3 Terza simulzione
5.1.2.4 Quarta simulaizone
5.1.2.5 Osservazioni sulla composizione della popolazione
5.1.3 La composizione delle risorse
5.1.3.1 Simulazione
5.1.3.2 Osservazioni sulla composizione delle risorse
5.1.4 Utenti anonimi ed aggregatori
5.1.4.1 Simulazione uno
5.1.4.2 Simulazione due
5.1.4.3 Osservazione su utenti anonimi ed aggregatori
5.2 Sviluppi futuri
100
101
103
105
105
105
107
107
107
109
111
111
VIII
____________________________________________________________________
Indice delle figure
CAPITOLO 1.
FIGURA 1.1. MODELLO DEL WEB SEMANTICO ................................................................ 4
FIGURA 1.2. GRAFO RDF DELL’ESEMPIO DI ASSERZIONE RDF ....................................... 9
FIGURA 1.3. NUOVA RISORSA NELL’ASSERZIONE RDF ................................................ 10
FIGURA 1.4. GRAFO RELAZIONE NON BINARIA . .......................................................... 13
FIGURA 1.5. ESEMPIO DI MODELLO DI CLASSIFICAZIONE . ............................................ 14
FIGURA 1.6. DIAGRAMMA RDFS:CLASS E RDF:PROPERTY . .......................................... 18
FIGURA 1.7. DIAGRAMMA DELLA GERARCHIA DELLE CLASSI DI RDF(S) . .................... 19
FIGURA 1.8. CLASSI . ............................................................................................... 27
FIGURA 1.9. PROPRIETÀ ED ATTRIBUTI . .................................................................... 27
FIGURA 1.10. ASSIOMI . .......................................................................................... 28
FIGURA 1.11. INDIVIDUI . ........................................................................................ 28
CAPITOLO 2.
FIGURA 2.1. CATEGORIE DI RATING.......................................................................... 38
FIGURA 2.2. PAGE RANK. ........................................................................................ 43
FIGURA 2.3. : PGP .................................................................................................. 45
CAPITOLO 3.
FIGURA
FIGURA
FIGURA
FIGURA
FIGURA
FIGURA
3.1.
3.2.
3.3.
3.4.
3.5.
3.6.
TRE STATI DELLE ATTIVITÀ DI UN UTENTE. ............................................. 54
PROBABILITÀ DI ACCESSO..................................................................... 56
PROFILO UTENTE ED ASSERZIONI. ......................................................... 56
CORRETTEZZA DEL VOTO ESPRESSO. ...................................................... 57
LA GAUSSIANA..................................................................................... 58
CASI D’USO. ........................................................................................ 70
CAPITOLO 4.
FIGURA
FIGURA
FIGURA
FIGURA
FIGURA
FIGURA
4.1.
4.2.
4.3.
4.4.
4.5.
4.6.
IMPOSTAZIONI DELLO SCHEMA .............................................................. 87
SCHERMATA DEGLI USERGROUP. ........................................................... 88
DEFINIZIONE DI UN PROGETTO ............................................................... 89
CONFIGURAZIONE DELLA SIMULAZIONE..................................................
90
VISUALIZZAZIONE GRAFICO ROLES DISTRIBUTION DEGLI USERGROUP .. 91
VISUALIZZAZIONE GRAFICO EXPERTISE DEGLI USERGROUP ...................... 92
IX
____________________________________________________________________
FIGURA
FIGURA
FIGURA
FIGURA
4.7. SCHERMATA ASSERTIONS TRUST........................................................... 93
4.8. SCHERMATA GENERAL INFO. ................................................................ 94
4.9. VISUALIZZAZIONE GRAFICO PRECISION. ................................................. 95
4.10. VISUALIZZAZIONE GRAFICO RECALL. .................................................... 96
CAPITOLO 5.
FIGURA
FIGURA
FIGURA
FIGURA
FIGURA
FIGURA
FIGURA
FIGURA
FIGURA
FIGURA
FIGURA
FIGURA
FIGURA
FIGURA
FIGURA
FIGURA
FIGURA
FIGURA
FIGURA
FIGURA
FIGURA
5.1.
5.2.
5.3.
5.4.
5.5.
5.6.
5.7.
TRUSTWORTHINESS “IDEALE” ............................................................... 99
RECALL “IDEALE”................................................................................ 99
PRECISIONE “IDEALE” .......................................................................... 99
TRUSTWORTHINESS “ESPERTI NON EQUAMENTE DISTRIBUITI”................. 100
RECALL “ESPERTI NON EQUAMENTE DISTRIBUITI” ............................. 101
PRECISION “ESPERTI NON EQUAMENTE DISTRIBUITI” ............................. 101
TRUSTWORTHINESS “ESPERTI BEN DISTRIBUITI E GENERICI BEN
DISTRIBUITI” ...................................................................................... 102
5.8. RECALL “ESPERTI BEN DISTRIBUITI E GENERICI BEN DISTRIBUITI”. .......... 102
5.9. PRECISION “ESPERTI BEN DISTRIBUITI E GENERICI BEN DISTRIBUITI”........ 103
5.10. TRUSTWORTHINESS “ESPERTI NON EQUAMENTE DISTRIBUITI E GENERICI NON
EQUAMENTE DISTRIBUITI”. .................................................................. 104
5.11. RECALL “ESPERTI NON EQUAMENTE DISTRIBUITI E GENERICI NON
EQUAMENTE DISTRIBUITI” ................................................................... 104
5.12. PRECISION “ESPERTI NON EQUAMENTE DISTRIBUITI E GENERICI NON
EQUAMENTE DISTRIBUITI”. .................................................................. 104
5.13. TRUSTWORTHINESS .......................................................................... 106
5.14. RECALL. ......................................................................................... 106
5.15.
5.16.
5.17.
5.18.
5.19.
5.20.
5.21.
PRECISION ...................................................................................... 107
TRUSTWORTHINESS SIMULAZIONE UNO .............................................. 108
RECALL SIMULAIZONE UNO............................................................... 108
PRECISION SIMULAZIONE UNO. .......................................................... 109
TRUSTWORTHINESS SIMULAZIONE DUE............................................... 110
RECALL SIMULAIZONE DUE. .............................................................. 110
PRECISION SIMULAIZONE DUE............................................................ 110
X
____________________________________________________________________
Indice delle tabelle
CAPITOLO 3.
FIGURA 3.1. OWA................................................................................................... 83
CAPITOLO 5.
FIGURA 5.1. PARAMETRI SIMULAZIONE “IDEALE” ...................................................... 98
FIGURA 5.2. PARAMETRI SIMULAZIONE “ESPERTI NON EQUAMENTE DISTRIBUITI” ....... 100
FIGURA 5.3. PARAMETRI SIMULAZIONE “ESPERTI BEN DISTRIBUITI E GENERICI BEN
DISTRIBUITI” ...................................................................................... 103
FIGURA 5.4. PARAMETRI SIMULAZIONE “ESPERTI NON EQUAMENTE DISTRIBUITI E
GENERICI NON EQUAMENTE DISTRIBUITI”.............................................. 104
FIGURA 5.5. PARAMETRI DELLA SIMULAZIONE...................................................... 106
FIGURA 5.6. PARAMETRI DELLA SIMULAZIONE UNO ................................................ 108
FIGURA 5.7. PARAMETRI DELLA SIMULAZIONE DUE ................................................. 109
XI
____________________________________________________________________
XII
____________________________________________________________________
Capitolo 1.
Il web semantico.
Introduzione
La gestione della conoscenza è un argomento che va assumendo sempre maggior
rilievo, facedosi da tramite all’integrazione di varie ricerche.
Oggi il web è forse il maggiore contenitore di conoscenza ed è quello più
frequentemente utilizzato da una vasta gamma di utenti. Il web, però, per sua natura
decentralizzato, rende d’importanza fondamentale l’interoperabilità delle
applicazioni a livello semantico e tecnologico.
Una esigenza fondamentale per l’evoluzione del web è quella di rappresentare la
conoscenza in maniera comprensibile alla macchina e di renderla di immediata
reperibilità.
Da sempre il W3C sviluppa tecnologie (linee guida, specifiche, software e
strumenti) per portare il web al massimo del suo potenziale, definendo protocolli
comuni che ne favoriscano l’evoluzione e l’interoperabilità. Gli obiettivi a lungo
termine del W3C sono coerenti con le motivazioni iniziali che hanno portato alla
nascita del web.
Possiamo riassumere come obiettivi a lungo termine del W3C i seguenti:
• Universal access: Rendere il web accessibile a tutti, promuovendo tecnologie che
tengano conto delle notevoli differenze in termini di formazione, capacità, risorse, e
limitazioni fisiche degli utenti di tutto il mondo.
• Semantic web: Sviluppare un ambiente software che consenta ad ogni utente di
fare il miglior utilizzo possibile delle risorse disponibili sul web
• Web of trust: guidare lo sviluppo del web tenendo in attenta considerazione gli
aspetti innovativi che questa tecnologia solleva in campo legale, commerciale e
sociale.
Il reperimento di risorse sul web è oggi diventato una via di mezzo tra la ricerca
delle informazioni e l’apprendimento del contesto in cui l’informazione si trova,
poiché l’utente richiede di selezionare informazioni di volta in volta più complesse
e complete in modo da ottenere come risultato di una ricerca le informazioni il più
possibile coerenti con ciò che ha cercato.
Il W3C considera l’ideale evoluzione del Web da machine-representable a machineunderstandable. L’idea è di generare documenti che possano al tempo stesso essere
letti ed apprezzati da esseri umani, ma anche acceduti ed interpretati da agenti
automatici alla ricerca di contenuti. Il Web si deve dunque dotare di una
sovrastruttura semantica utilizzabile dalle applicazioni, in modo da poter svolgere
1
____________________________________________________________________
quelle funzioni che oggi debbono essere fatte a mano o codificate dentro ai
programmi.
Questo porta alla definizione di un programma denominato web semantico, in cui
esprimi le risorse fondamentali del web non siano rappresentate da semplici testi
(all'interno dei quali le informazioni stanno nascoste e richiedono un umano), ma da
affermazioni (informazioni non ambigue, che esprimono relazioni tra oggetti,
risorse, esseri umani, fatti del mondo reale, e che possono essere utilizzate anche da
applicazioni automatiche).
Nel momento in cui inizio a realizzare inferenze però, ho da considerare anche il
problema della veridicità delle informazioni, e della loro affidabilità. Il passo
successivo allora è creare una rete di affermazioni di affidabilità e fiducia (trust)
sulle collezioni, in cui viene espresso il valore di affidabilità delle affermazioni
contenute, e attraverso sistemi di sicurezza e crittografia rendere più affidabile il
sistema di affermazioni. Il web of trust è allora il passo ultimo per permettere la
creazione di significato utile, automatico, affidabile su documenti e cose del mondo
reale.
Questa tesi si propone quindi di creare un tool che permetta di generare asserzioni
che permettano di dare una semantica a delle risorse e al tempo stesso garantirne il
trust.
1.1. Il web semantico: Knowledge management
I processi di fondamentale importanza nel Knowledge Management sono la
possibilità di reperire le fonti di conoscenza rilevanti per il problema specifico, e
fornire le fonti di conoscenza da utilizzare per risolvere i problemi.
In un sistema di Knowledge Management possiamo individuare cinque processi
fondamentali:
1. Acquisizione della conoscenza: catturando le competenze degli esperti, operando
deduzioni da fatti concreti, etc.
2. Rappresentazione della conoscenza: memorizzazione delle regole
3. Elaborazione della conoscenza: manipolazione della conoscenza memorizzata,
per derivare dipendenze o consistenza di regole
4. Condivisione della conoscenza: mediante la ricerca di regole che soddisfano la
query dell’utente.
5. Utilizzo della conoscenza: per risolvere il problema contingente, eventualmente
annotando la conoscenza esistente, in modo da renderne disponibile di nuova.
1-L'inferenza è il processo con il quale da una proposizione accolta come vera, si passa a una proposizione la cui verità è
considerata contenuta nella prima.Inferire è quindi trarre una conclusione. Inferire X significa concludere che X è vero; un
inferenza è la conclusione tratta da un insieme di fatti o circostanze.
2
____________________________________________________________________
Il Web, e in particolare il Semantic Web, che ne è la naturale evoluzione, costituisce
un indispensabile componente per supportare gran parte di questi processi. In
questo contesto, come verrà dettagliato in seguito, viene utilizzato un formalismo
per rappresentare, in forma molto semplice, dei fatti, sui quali è possibile operare
delle inferenze. Un elemento significativo è che la conoscenza codificata nel web è
rappresentata in maniera elaborabile dalla macchina, e quindi può essere utilizzata
da componenti automatizzati, denominati agenti software.
La ricerca di informazioni è uno dei principali punti deboli del web, nonostante il
gran numero di motori di ricerca esistenti, che sono poveri di semantica sia in fase
di indicizzazione che in fase di ricerca. In fase di indicizzazione, essi utilizzano o
moduli compilati dai fornitori di informazioni, che spesso non consentono di
specificare metainformazioni come l’ autore, le parole chiave, etc., o strumenti
automatici (spider) per accedere alle pagine ed estrarre semantica. Talvolta, anche
le informazioni contenute nei tag <meta> vengono di fatto ignorate. In fase di
ricerca, viene consentito di combinare le parole con operatori di contesto (“tutte le
parole”, “una parola qualunque”, “nel titolo”), ma in definitiva il risultato scaturisce
sempre da una ricerca sulla presenza di parole chiave e dall’ identificazione dei
documenti più affini alla domanda posta.
L’ esistenza di proposizioni più ricche dal punto di vista espressivo permette invece
agli utenti di ritrovare in maniera più facile ed efficace le informazioni necessarie
per risolvere i problemi. Tra l’altro, la presenza di queste proposizioni condizionali
consente di indicizzare le risorse esistenti sul web in maniera più ricca rispetto al
metodo tradizionale di associare alle risorse parole chiave o concetti. Diventa allora
possibile formulare richieste più sofisticate, migliorando sia la precisione delle
risposte ottenute, che il richiamo dei documenti pertinenti.
1.1.1 Web semantico
“The Semantic Web is the representation of data on the World Wide Web. It is a
collaborative effort led by W3C with participation from a large number of
researchers and industrial partners. It is based on the Resource Description
Framework (RDF), which integrates a variety of applications using XML for syntax
and URIs for naming.”
"Il Semantic Web è un'estensione del Web attuale in cui alle informazioni sono date
un senso, un significato ben definito, migliorando in questo modo la cooperazione
tra i computer e le persone." -- Tim Berners-Lee, James Hendler, Ora Lassila, The
Semantic Web, Scientific American, May 2001
Secondo una traduzione di primo acchito, si potrebbe pensare che il Semantic Web
stia a indicare il “Web che ha significato”, oppure il “Web che è significativo”.
Certo, detta in questi termini, la traduzione non potrebbe essere appagante. Bisogna,
perciò, tradurre Semantic Web come quel procedimento in base al quale vengono
applicati al World Wide Web i principi della semantica. Dal greco “sema’ino”
(indico), la semantica è lo studio del dei processi di costituzione del significato
all’interno del linguaggio. Anche se è difficile spiegare con semplici parole che
3
____________________________________________________________________
cosa sia effettivamente il Web Semantico (come ha ammesso lo stesso Tim
Berners-Lee), si può dire che esso costituisca una modalità nuova per dare ai dati
(presenti in rete) maggior significato.
La sfida dei prossimi anni è quindi il Semantic Web, che, nella visione di BernersLee, ha una architettura a livelli (Figura 1.1).
Figura 1.1: Modello del web semantico
Per chiarezza di terminologia, va ricordato che la filosofia di base del Web è quella
di uno spazio informativo universale, navigabile, con un mapping da URI (Uniform
Resource Identifier) alle risorse. Nel contesto del Semantic Web, il termine
semantico assume la valenza di "elaborabile dalla macchina" e non intende fare
riferimento alla semantica del linguaggio naturale e alle tecniche di intelligenza
artificiale. Il Semantic Web è, come l’ XML, un ambiente dichiarativo, in cui si
specifica il significato dei dati, e non il modo in cui si intende utilizzarli. La
semantica dei dati consiste nelle informazioni utili perché la macchina possa
utilizzarli nel modo corretto, eventualmente convertendoli.
Come chiaramente descritto da Tim Berners Lee, il Semantic Web potrà funzionare
solo se le macchine potranno accedere ad un insieme strutturato di informazioni e a
un insieme di regole di inferenza da utilizzare per il ragionamento automatico. La
sfida del semantic web, quindi, è fornire un linguaggio per esprimere dati e regole
per ragionare sui dati, che consenta l’esportazione sul web delle regole da
qualunque sistema di rappresentazione della conoscenza.
Esaminando più in dettaglio la Figura 1.1, si può notare il ruolo di base giocato da
XML (con Name Space e xmlschema), che consente di dare ai documenti una
struttura arbitraria, mentre RDF può essere usato per esprimere il significato,
asserendo che alcuni particolari elementi hanno delle proprietà (p.es. autore-di).
Un terzo componente è l’ Ontology Vocabulary (livello ontologico), inteso come il
contenitore che definisce in modo formale le relazioni fra i termini. Una ontologia
permette di descrivere le relazioni tra i tipi di elementi (per es. "questa è una
proprietà transitiva") senza però fornire informazioni su come utilizzare queste
4
____________________________________________________________________
relazioni dal punto di vista computazionale. Le ontologie possono svolgere un ruolo
fondamentale nel migliorare il funzionamento del Web (ricerca di concetti,
collegamento delle informazioni contenute in una pagina alle strutture di
conoscenza associate, etc.). Il linguaggio definito dal W3C per definire ontologie
strutturate, in architettura web, per consentire una migliore integrazione dei dati tra
applicazioni in settori diversi è OWL (Ontology Web Language).
Il livello logico è il livello immediatamente superiore al livello ontologico. A questo
livello le asserzioni esistenti sul Web possono essere utilizzate per derivare nuova
conoscenza. Tuttavia, i sistemi deduttivi non sono normalmente interoperabili, per
cui, secondo Berners-Lee, invece di progettare un unico sistema onnicomprensivo
per supportare il ragionamento (reasoning system), si potrebbe pensare di definire
un linguaggio universale per rappresentare le dimostrazioni. I sistemi potrebbero
quindi autenticare con la firma digitale queste dimostrazioni ed esportarle ad altri
sistemi che le potrebbero incorporare nel Semantic Web.
La firma digitale (digital signature) è di significativa importanza in diversi strati nel
modello astratto del Semantic Web. La crittografia a chiave pubblica è una tecnica
nota da qualche anno, ma non si è ancora diffusa su larga scala come ci si poteva
attendere.
Nella visione di Berners-Lee, un elemento che potrebbe aver giocato contro la
diffusione di questa tecnica è che essa è a "grana grossa", imponendo una scelta
binaria tra fiducia o non fiducia (trusted/not trusted), mentre sarebbe necessaria una
infrastruttura in cui le parti possano essere riconosciute e accettate come credibili in
specifici domini. Con una granularità più fine come questa, la firma digitale
potrebbe essere utilizzata per stabilire la provenienza delle ontologie e delle
deduzioni, oltre che dei dati.
L’ intera comunità scientifica sta investendo molte energie nel settore del Semantic
Web.
1.1.2 I metadati
Nel navigare sul web, si seguono dei link, che portano a quella che formalmente
viene detta risorsa (resource) identificata univocamente da un URI. Nel linguaggio
corrente una risorsa viene anche detta “documento”, per mettere in evidenza il fatto
che sia leggibile da un essere umano, o “oggetto”, per mettere in evidenza che è
leggibile da una macchina. Qualunque sia il termine utilizzato, la risorsa non è una
entità a sé, ma è accompagnata da informazioni che la descrivono. Le informazioni
sulla risorsa vengono generalmente dette Metadati.
Si può quindi dire che i metadati sono informazioni, comprensibili dalla macchina,
relative a una risorsa web o a qualche altra cosa. Il punto chiave è costituito
appunto dal fatto che i metadati sono comprensibili dalla macchina (machine
understandable). Di conseguenza, i metadati costituiscono un tipo di informazione
che può essere utilizzata dai software agent, per fare un uso appropriato delle
risorse, rendendo più semplice e veloce il funzionamento del Web, aumentando la
nostra fiducia in esso. A titolo di esempio, quando si reperisce un documento (o un
oggetto) sul web, utilizzando il protocollo HTTP, è possibile che il server invii
alcune informazioni sulla risorsa, quali la sua data di aggiornamento, la data
5
____________________________________________________________________
massima di validità dell’ informazione, il suo autore, etc. Quindi il Web, come
insieme di risorse e di informazioni sulle risorse (cioè metadati) è già una realtà alla
quale siamo abituati.
Va tenuto presente che i metadati sono dati, e questo fatto ha alcune conseguenze:
• possono essere memorizzati come dati, in una risorsa, che può quindi contenere
informazioni relative a se stessa o ad un’altra risorsa. I metadati relativi ad un
documento possono essere contenuti nel documento, oppure contenuti in un
documento separato, oppure essere trasferiti a corredo del documento.
• possono essere descritti da altri metadati, e così via.
I metadati costituiscono il più grosso punto debole del Semantic Web, e questo lo si
può capire in modo intuitivo fin da subito.
I metadati costituiscono una difficoltà perché sono molto costosi da produrre e
possono risultare imprecisi. Se la produzione dei metadati avviene attraverso
un’indicizzazione manuale, questa risulterà costosa in termini di tempo e costiuomo. Inoltre quando l’indicizzazione non è fatta da persone motivate e addestrate
può risultare piuttosto imprecisa, perché vissuta come obbligo ed eseguita di fretta.
La creazione dei metadati è un’attività molto importante ma allo stesso tempo molto
complessa e ciò è tipicamente motivato dalle molteplici interpretazioni che un
metadato può presentare.
I metadati non hanno tutti lo stesso valore, alcuni valgono più di altri. Un metadato
descrive la struttura di una classe, di un tipo di dato. Ma può farlo in due modi
molto diversi. Il modo più agevole consiste semplicemente nel riempire il valore di
un campo, di una proprietà della classe (una Persona che si chiama "Paolo"). In
questo caso si attribuisce solo un valore ad una struttura, ma non si indica nulla di
preciso. Se si trovasse un altro metadato per la persona di nome Paolo non si
saprebbe mai se è la stessa persona o sono due diverse. Altrimenti un metadato può
puntare ad una risorsa e utilizzare quella per definire il valore della proprietà di una
classe (una persona che si chiama "http:/dominio.nomi.com/#Paolo"). In questo
caso il metadato compie un'operazione molto più precisa, in quanto va ad
individuare qualche cosa di univoco, di cui si potrà sapere con esattezza quali altri
metadati sono stati espressi. Il meccanismo è ancora più potente se si indica la
localizzazione di risorse fisiche, come pagine web, immagini, documenti.
Il problema che subito si pone, nella localizzazione dei contenuti, è quello
dell’evoluzione dei contenuti stessi. Come sappiamo il Web è dinamico, cioè
cambia molto rapidamente, dal momento che si interviene quotidianamente su di
esso con:
• Aggiunta di nuove pagine;
• Modifica delle pagine esistenti: tali variazioni possono avvenire ad intervalli
regolari o in qualunque momento, e riguardare parti non inerenti al contenuto
informativo (come la correzione di errori di sintassi, il cambiamento di
formattazione) oppure coinvolgere dati significativi;
• Rimozione di pagine (o di interi siti).
Tutto questo, in aggiunta alla mancanza di un controllo centralizzato, fa sì che i dati
possano essere
• Inconsistenti, per la mancanza di vincoli di qualunque tipo;
• Inaffidabili, perchè non sono controllati in alcun modo;
6
____________________________________________________________________
• Non disponibili, se la pagina in cui sono contenuti è rimossa.
Pertanto è possibile distinguere i metadati, in base ai dati che essi strutturano, in
metadati vivi e morti. È diverso definire un metadato per un documento di cui si
possiede in locale una copia piuttosto che di un documento di cui si possiede una
URL, una localizzazione nella rete. Nel primo caso si è certi di poter effettivamente
disporre di quel documento, nel secondo caso si rischia che l’URL non localizzi
nulla: si sa i link invecchiano piuttosto facilmente. Nel primo caso però è possibile
che si forniscano informazioni vecchie, nel secondo i dati saranno aggiornati in
tempo reale. Qui le scelte dipendono molto da cosa si intende fare e dai mezzi che si
hanno a disposizione. Una via di mezzo può essere quella di registrare sia una URL
sia una copia in cache, alla Google, per intendersi.
1.1.3 Linguaggi per il web semantico
1.1.3.1 Il Resource Description Framework(RDF)
“The Semantic Web provides a common framework that allows data to be shared
and reused across application, enterprise, and community boundaries. […] It is
based on the Resource Description Framework (RDF), which integrates a variety of
applications using XML for syntax and URIs for naming.”
Tim Berners-Lee, James Hendler, Ora Lassila
RDF (Resource Description Framework)
Il mattone fondamentale su cui poggerà l’intera sovrastruttura del Web Semantico è
RDF (Resource Description Framework, ovvero “Struttura finalizzata alla
Descrizione di Risorse”) che è il modello proposto dal W3C per consentire
l’aggiunta di semplici meta-informazioni semantiche a documenti web arbitrari. È
bene precisare subito che RDF è un modello astratto di descrizione delle risorse e
può dunque essere indifferentemente rappresentato in modi (ovvero, sintassi) e
forme diverse (ad es. in forma grafica): la scelta del W3C di adottare XML come
sintassi privilegiata per RDF (da cui deriva la dicitura “RDF/XML”) è dovuta
esclusivamente a ragioni di praticità, legate alla facilità di veicolare (ai fini della
serializzazione, trasmissione ed elaborazione) i contenuti RDF nella forma standard
e ben supportata di XML.
Il meccanismo per la descrizione di risorse di RDF è neutrale (general-purpose)
rispetto ai domini applicativi, cioè non è rivolto ad un particolare dominio di
applicazione, né definisce a priori il vocabolario e la semantica di qualche dominio,
ma il suo scopo essenziale è proprio quello di essere adattabile alla descrizione di
informazioni relative ad un qualsivoglia dominio.
Riepilogando, RDF è lo strumento basilare per la codifica, lo scambio e il riutilizzo
di metadati strutturati, e consente la condivisione di conoscenza tra applicazioni che
interagiscono tra loro, scambiandosi sul Web informazioni machineunderstandable: esso non specifica un meccanismo per il ragionamento automatico,
7
____________________________________________________________________
ma si limita a costituire una base al di sopra della quale tale meccanismo può essere
costruito.
Tre sono i tipi di oggetti fondamentali con cui RDF lavora : Risorse, Proprietà ed
Asserzioni.
-Una Risorsa è una qualunque cosa che possa essere nominata per mezzo di un
URI: una risorsa può essere un'intera pagina web, o solo una sua parte (ad es. uno
specifico elemento HTML o XML) oppure può anche essere un'intera collezione di
pagine (ad es. un intero sito web). Una risorsa può inoltre essere un oggetto
materiale non direttamente accessibile via Web (ad es. un libro o perfino una
persona fisica). Infine, anche entità del tutto immateriali (quali, ad esempio, la
proprietà “avere come autore”) possono essere considerate delle Risorse.
-Una Proprietà specifica una caratteristica di una risorsa, definendo una relazione
binaria tra la risorsa stessa ed un’altra risorsa oppure tra la risorsa e valori atomici
(espressi nella forma di tipi di dati primitivi definiti in XML Schema).
-Una Asserzione è una frase con una struttura fissa, composta da: un Soggetto
(ovvero, una risorsa), un Predicato (ovvero, una proprietà) ed un Complemento
oggetto (che può essere costituito indifferentemente da una Risorsa o da un
Letterale – cioè una stringa di caratteri o qualche altro tipo primitivo di XML
Schema -). Un’asserzione in RDF è quindi una Tripla (Subject, Predicate, Object)
in cui subject e predicate devono essere obbligatoriamente delle risorse mentre
object (cioè il valore della proprietà, property value) può essere sia una risorsa che
un letterale.
La cosa interessante di questo modo di rappresentare la conoscenza è che il
Complemento oggetto può a sua volta essere visto come il Soggetto di una nuova
tripla. Questa tecnica permette quindi di rappresentare situazioni anche molto
articolate. In situazioni nelle quali vi sia una certa proprietà con molti valori, ci si
può sempre ricondurre alla situazione (Soggetto, Proprietà, Complemento Oggetto).
Il modello dei dati di RDF è molto simile al modello Entity-Relationship (proprio
della modellazione di Database Relazionali) e può essere visto come un’estensione
del modello ER al web; infatti RDF si basa sui concetti di Entità e di Relazione, con
la differenza che in RDF quest’ultimo concetto, grazie all’utilizzo di URI, è stato
elevato allo stesso livello delle Entità, nel senso che anche le Relazioni possiedono
una propria specifica identità, indipendente dalle entità che mettono in relazione; in
questo modo non è necessario che tutte le informazioni su un’entità siano definite in
un unico luogo e chiunque può dire tutto su tutto ("anything can say anything about
anything").
Esempi di Asserzioni RDF
Sia data la frase in linguaggio naturale: “www.miosito.it ha per autore Mario
Rossi”, si riconoscono:
http://www.miosito.it/
Ha_Autore
“Mario Rossi”
Soggetto (Risorsa)
Predicato (Proprietà) Oggetto (Letterale)
8
____________________________________________________________________
Cioè: la proprietà “Ha_Autore” (che supponiamo essere definita nel namespace
http://esempio.it/proprieta/ per rappresentare la relazione binaria “avere come
autore”) della risorsa “http://www.miosito.it/” vale “Mario Rossi” (inteso come
stringa di caratteri) .
Ciascuna asserzione RDF può essere rappresentata graficamente con un grafo RDF,
che è un grafo orientato in cui il nodo di partenza di ogni arco rappresenta il Subject
dell’asserzione, l’arco stesso il Predicate e il nodo di arrivo l’Object. I nodi ovali
identificano le Risorse, mentre quelli rettangolari indicano i Letterali.
Il grafo RDF associato all’esempio (Directed Labeled Graph o DLG) sarà dunque:
Figura 1.2: Grafo RDF dell’esempio di asserzione RDF
Per serializzare questo grafo nella sintassi RDF/XML ci si deve riferire al
namespace "http://www.w3.org/1999/02/22-rdf-syntax-ns#” (con prefisso rdf) la cui
URL contiene un documento che definisce i nomi di tag usati da RDF/XML: i tag
<rdf:RDF> (che deve sempre costituire l’elemento radice di un documento
RDF/XML) e <rdf:Description> (attraverso il quale vengono fatte le asserzioni)
appartengono a tale namespace.
Esistono poi due modi per identificare il Subject; infatti, a seconda che la risorsa da
descrivere sia gia esistente o sia ancora da creare, possiamo:
-assegnare il nome della risorsa che vogliamo descrivere (cioe l’URI che la
identifica) all’attributo rdf:about del tag <rdf:Description>
-assegnare un letterale all’attributo rdf:ID del tag <rdf:Description>, cosi facendo,
il nome specificato diventa il nome locale di una risorsa per la quale non esiste
ancora una URI.
Per il nostro esempio avremo così:
<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:d="http://www.esempio.it/proprieta/">
<rdf:Description rdf:about="http://www.miosito.it"> SOGGETTO
<d:Ha_Autore> PREDICATO
Mario_Rossi OGGETTO (Letterale)
</d:Ha_Autore> PREDICATO
</rdf:Description>
</rdf:RDF>
9
____________________________________________________________________
I nomi delle proprietà usati per descrivere delle risorse (nell’esempio, Ha_Autore)
devono essere sempre associati ad un namespace (in questo caso,
http://www.esempio.it/proprieta/) a cui solitamente viene assegnato un prefisso
(nell’esempio, d): così facendo possono essere utilizzati nel documento RDF/XML
come tag espressi in forma <Prefisso:NomeProprietà>
Si
noti
che
il
fatto
di
usare
una
URI
(quale
http://
www.esempio.it/proprieta/Ha_Autore), e non un semplice letterale, per nominare
una proprietà presenta grandi vantaggi: il significato (ovvero, la semantica) della
proprietà può essere descritta dettagliatamente all’interno della pagina identificata
dalla URI stessa; inoltre, una volta referenziata con una URI, quella proprietà potrà
essere usata da chiunque, in una qualsiasi pagina del Web. Semantico per descrivere
una qualsiasi cosa, mantenendone però il significato originale e con in più la
certezza di non incorrere in un conflitto di nomi.
Tornando all’esempio, possiamo poi pensare di trasformare il letterale “Mario
Rossi” in una vera e propria risorsa a sé stante: è sufficiente introdurre una nuova
risorsa con URI, ad esempio, http://www.miosito.it/Mario_Rossi.
Il vantaggio di questa operazione di trasformazione è dato dalla possibilità di usare
la nuova Risorsa Mario_Rossi come soggetto per nuove asserzioni in grado di
specificarne (oltre al nome) anche altre proprietà, ad es. l’indirizzo e-mail.
Quello che si ottiene è un insieme non ordinato di asserzioni, in cui di volta in volta
una Risorsa può ricoprire il ruolo di Soggetto o di Oggetto:
Nota: stiamo ipotizzando che le tre Proprietà Ha_Autore, Ha_Nome, Ha_Email
siano
tutte
definite
all’interno
dello
stesso
namespace
http://www.esempio.it/proprieta/ il cui prefisso è d).
La nuova rappresentazione grafica sarà:
Figura 1.3: Nuova risorsa nell’asserzione RDF
Poiché è un fatto piuttosto usuale quello di dichiarare contemporaneamente più
asserzioni
sulla
stessa
risorsa
(nell’esempio
in
esame,
http://www.miosito.it/Mario_Rossi), la sintassi RDF/XML permette di raggrupparle
assieme, annidandole all’interno dello stesso tag <rdf:Description>.
La struttura delle asserzioni specificate all’interno del tag <rdf:Description> (ed
aventi come soggetto quello specificato negli attributi di <rdf:Desctription>) è del
tipo:
10
____________________________________________________________________
<predicate>object</predicate>
Ma quando, come accade per l’Asserzione n.1, l’object è una URI (e non un
semplice letterale), questa va inserita direttamente nel tag <predicate> attraverso
l’attributo rdf:resource.
In sintassi RDF/XML avremo pertanto:
<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:d="http://www.esempio.it/proprieta/">
<rdf:Description rdf:about="http://www.miosito.it">
<d:Ha_Autore rdf:resource="http://www.miosito.it/Mario_Rossi"/>
</rdf:Description>
<rdf:Description rdf:about="http://www.miosito.it/Mario_Rossi">
<d:Ha_Nome>Mario Rossi</d:Ha_Nome>
<d:Ha_Email>[email protected]</d:Ha_Email>
</rdf:Description>
</rdf:RDF>
Contenitori RDF
Si può talvolta presentare la necessità di descrivere una risorsa attraverso una
proprietà che assume più valori (ad es. una squadra composta da più giocatori). Per
rappresentare situazioni di questo genere abbiamo a disposizione i Contenitori RDF,
che possono essere di 3 tipi:
Bag (rdf:Bag)
Lista non ordinata di risorse o letterali, in cui sono ammessi valori duplicati.
Sequence (rdf:Seq)
Lista ordinata di risorse o letterali, in cui sono ammessi valori duplicati.
Alternative (rdf:Alt)
Lista di risorse o letterali tra loro alternativi: la Proprietà deve assumere uno ed uno
soltanto dei valori specificati in questa lista di possibili valori.
Per poter utilizzare oggetti di questo tipo è necessario introdurre una risorsa fittizia,
la quale assumerà il ruolo di Contenitore e andrà successivamente descritta
attraverso le usuali asserzioni RDF.
Reificazione
Con il termine reificazione si indica il processo di trasformazione di una asserzione
(ovvero di una frase) in una Risorsa: grazie a tale trasformazione risulterà possibile
rappresentare in RDF anche delle “asserzioni su asserzioni”, ovvero delle citazioni,
quali, ad esempio: “Tizio afferma che Caio è l’autore di http://www.caio.it”. Per
riportare in RDF tale citazione, occorre innanzitutto introdurre una nuova risorsa
(mediante l’attributo rdf:ID) che rappresenti la frase più interna: “Caio è l’autore di
http://www.caio.it“ e su questa nuova risorsa, intesa come Subject, andrà
specificata la proprietà “Affermata_Da” avente “Tizio” quale Object.
In sintassi RDF/XML abbiamo:
<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:d="http://www.esempio.it/proprieta/">
11
____________________________________________________________________
<rdf:Description rdf:ID="Frase">
<rdf:type rdf:resource="http://www.w3.org/1999/02/22-rdf-syntaxns#Statement"/>
// queste ultime linee possono essere abbreviate con
// <rdf:Statement rdf:ID="Frase">
<rdf:subject rdf:resource="http://www.caio.it"/>
<rdf:predicate rdf:resource="http://www.esempio.it//proprieta/Ha_Autore/"/>
<rdf:object rdf:resource="http://www.persone.it/Caio"/>
</rdf:Description>
<rdf:Description rdf:about="#Frase">
<d:Affermata_Da rdf:resource="http://www.persone.it/Tizio"/>
</rdf:Description>
</rdf:RDF>
Dunque, la nuova risorsa online (che è stata chiamata “Frase”) è stata creata
definendola (mediante la Proprietà rdf:type) come una istanza della classe
rdf:Statement: in questo modo abbiamo indicato che tale nuova risorsa è una
asserzione. Successivamente abbiamo specificato il Soggetto (con la proprietà
rdf:subject), il Predicato (con rdf:predicate) e l’Oggetto (con rdf:object) di tale
Risorsa-Asserzione. Infine, abbiamo dichiarato che la risorsa con identificatore
locale “Frase” è stata asserita dalla risorsa http://www.persone.it/Tizio.
Relazioni Non Binarie
Il modello di dati RDF supporta intrinsecamente solo relazioni binarie; ovvero,
un'asserzione RDF specifica una relazione tra due sole risorse. La tecnica
raccomandata per rappresentare in RDF relazioni di ordine superiore (usando solo
relazioni binarie) è di usare una risorsa intermedia (Blank node) avente proprietà
addizionali che forniscano le rimanenti relazioni.
Frequentemente si hanno esempi di relazioni non-binarie quando si tratta con delle
unità di misura: ad esempio, non è corretto (ed anzi può condurre ad insidiose
ambiguità) indicare il prezzo di un certo prodotto con solo un numero (per es.
"100"): occorre specificare esplicitamente anche quale è la valuta usata (Euro,
Dollaro, Sterlina, … ).
Nel grafo RDF occorre dunque introdurre un nodo intermedio addizionale, che
presenti una relazione (arco) in grado di specificare il tipo di valuta:
12
____________________________________________________________________
Figura 1.4: Grafo relazione non binaria
In sintassi RDF/XML avremo:
<?xml version="1.0"?>
<RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:d="http://www.esempio.it/proprieta">
<rdf:Description rdf:ID="Prodotto xxxxx">
<d:prezzo rdf:parseType="Resource">
<rdf:value>100</rdf:value>
<d:valuta rdf:resource="http://www.esempio.it/Euro"/>
</d:prezzo>
</rdf:Description>
</RDF>
L'attributo parseType modifica l'interpretazione del contenuto dell'elemento e
dovrebbe avere uno dei valori “Literal” o “Resource” (il valore è case-sensitive).
Il valore “Literal” specifica che il contenuto dell'elemento deve essere trattato
come un letterale RDF/XML (ovvero il contenuto non deve essere interpretato da
un processore RDF); il valore “Resource” specifica che il contenuto dell'elemento
deve essere trattato come se fosse il contenuto di un elemento <rdf:Description>.
Oppure, utilizzando l’attributo rdf:nodeID (che permette di dare un identificativo ad
un nodo):
<?xml version="1.0"?>
<RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:d="http://www.esempio.it/proprieta">
<rdf:Description rdf:about="Prodotto xxxxx">
<d:prezzo rdf:nodeID="abc"/>
</rdf:Description>
<rdf:Description rdf:nodeID="abc">
<rdf:value>100</rdf:value>
<d:valuta rdf:resource="http://www.esempio.it/Euro"/>
</rdf:Description>
</RDF>
Confronto tra RDF e XML
La struttura di un documento XML è quella di un albero, mentre il modello di dati
di RDF è costituito da un grafo orientato, con archi etichettati.
Nel contesto del Web Semantico, rileviamo inoltre come, nel momento in cui si
rende necessaria la rappresentazione di una realtà di interesse e non di un dato,
viene meno il modello gerarchico e classificatorio dell’albero, in favore di un
modello relazionale e predicativo.
La struttura di un documento XML è una strutturazione ad albero di modi di
predicazione, adatti a soggetti sempre meno numerosi, a partire da classi più
generali via via attraverso differenziazioni e successive fino a giungere alla più
determinata possibile al di sotto della quale non esistono più ulteriori specie, ma
solo individui.
13
____________________________________________________________________
Un esempio di classificazione:
Figura 1.5: Esempio di modello di classificazione
Osservando questo schema rileviamo come, dal punto di vista strutturale, non vi sia
alcuna differenza fra la relazione che intercorre, ad esempio, tra Animali e
Carnivori e quella che intercorre fra Piante e Rami: in entrambi i casi si è di fronte
semplicemente a due relazioni di subordinazione. Dunque, benché esista una chiara
differenza fra il concetto di parte e quello di sottoinsieme (un carnivoro è un
animale, un ramo non è una pianta), l’albero porfiriano non offre alcuna possibilità
di segnalarla.
Il modello ad albero si rivela pertanto insufficiente allo scopo di rappresentare un
insieme di conoscenze, non perché sia privo di contenuto semantico, ma piuttosto
perché di tale semantica non viene definita alcuna regola di interpretazione, perché
il modello appare insufficiente di fronte all’insieme delle possibili relazioni fra i
concetti. La caratteristica dunque che più di ogni altra costituisce un limite alle
capacità rappresentative di XML, ma soprattutto dell’intera tradizione del modello
ad albero, è l’assenza di relazioni interpretabili. Nello sforzo di definire un modello
per la rappresentazione della conoscenza, si è constatato quanto sia cruciale la
questione dei tipi di relazioni, e la possibilità stessa di distinguere e definire
tipologie diverse di relazione, sia dal punto di vista del significato che ad esse si
associa, sia dal punto di vista delle proprietà di tali relazioni e della definizione di
un dominio e di un range di applicabilità.
RDF Schema
Quando scriviamo una frase in linguaggio naturale, usiamo parole che
convenzionalmente sono associate ad uno specifico significato. Questo significato è
fondamentale per la comprensione delle asserzioni, e, nel caso di applicazioni RDF,
è cruciale per stabilire il trattamento corretto che si intende indicare.
RDF consente di definire un semplice modello dei dati per descrivere proprietà di
risorse e relazioni tra le risorse stesse, ma senza contemplare livelli di astrazione
differenti: le risorse e le loro relazioni sono tutte organizzate allo stesso livello di
astrazione, in un grafo piatto. In altre parole, RDF non permette di definire tipi (o
“classi”) di risorse con loro proprietà specifiche e, a tal fine, RDF è stato arricchito,
per mezzo di RDF Schema, con un semplice sistema di tipi (che ricorda i sistemi di
14
____________________________________________________________________
tipi dei linguaggi di programmazione object-oriented). Una risorsa può, per
esempio, essere definita come istanza di una classe (o di più classi) e le classi
possono essere organizzate in modo gerarchico, permettendo di derivare, per
ereditarietà, nuova conoscenza. Altra lacuna di RDF (alla quale RDF Schema
intende porre rimedio) è quella di non fornire alcun meccanismo per definirne i
vincoli d’applicabilità delle Proprietà, per organizzarle gerarchicamente.
Per poter utilizzare gli strumenti offerti da RDF Schema è necessario riferirsi
esplicitamente al Namespace "http://www.w3.org/2000/01/rdf-schema#" , al quale è
comunemente assegnato l’alias “rdfs”.
I concetti messi a disposizione da RDF Schema sono quelli di:
Classe e sotto Classe (rdfs:Class, rdfs:subClassOf)
Sotto Proprietà (rdfs:subPropertyOf)
Dominio e Codominio di una Proprietà (rdfs:domain, rdfs:range)
Commenti, Etichette ed Informazioni Addizionali (rdfs:comment, rdfs:label,
rdfs:seeAlso)
In RDF Schema, una classe è una qualunque risorsa che abbia una proprietà
rdf:type il cui valore sia rdfs:Class (che a sua volta è una risorsa definita nel
namespace di RDF Schema).
Ad es. per creare una classe “Animale” (paradigma astratto di tutti gli animali del
mondo) basta asserire che ex:Animale rdf:type rdfs:Class ( in cui ex è inteso essere
il prefisso per una generica URI di esempio) cioè :
<rdfs:Class rdf:ID="Animale"/>
N.B. questa è una abbreviazione del codice RDF/XML
<rdf:Description rdf:ID="Animale">
<rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class"/>
</rdf:Description>
Possiamo ora dire che “la classe Cane è sottoclasse della classe Animale”:
ex:Cane rdfs:subClassOf ex:Animale
cioè
<rdfs:Class rdf:ID="Cane">
<rdfs:subClassOf rdf:about="#Animale"/>
</rdfs:Class>
Ed anche che “Fido è un Cane”:
ex:fido rdf:type ex:Cane
cioè
<ex:fido rdf:ID=”Cane”/>
È bene avere ben chiara la differenza tra le due proprietà rdf:type (definita in RDF)
e rdfs:subClassOf (definita in RDF Schema): rdf:type può essere letta come “essere
15
____________________________________________________________________
istanza di” ed è impiegata per definire istanze di classi (es. “Fido è una particolare
istanza della classe Cane”), mentre rdfs:subClassOf è impiegata per definire
sottoclassi di classi (es. “la classe Cane è sottoclasse della classe Animale”).
Occorre fare attenzione quando si definiscono nuove classi: la nuova classe sarà una
istanza particolare di rdfs:Class, dunque si dovrà usare rdf:type. rdfs:subClassOf è
transitiva e consente di definire relazioni di sovra/sotto-insieme fra le classi.
Uno schema RDF rappresenta anche la sede in cui vengono documentate le
definizioni ed i vincoli d’uso delle proprietà che caratterizzano le classi.
In RDF tutte le proprietà devono essere definite come istanze della classe
rdf:Property, ad es.
ex:essere_Parente_Di rdf:type rdf:Property
cioè
<rdf:Property rdf:ID="essere_Parente_Di"/>
RDF Schema fornisce un modo per specializzare, come avviene per le classi, anche
le proprietà: ciò si ottiene usando la proprietà rdfs:subPropertyOf, ad es.
ex:essere_Fratello_Di rdfs:subPropertyOf ex:essere_Parente_Di
cioè
<rdf:Property rdf:ID="essere_Fratello_Di">
<rdfs:subPropertyOf rdf:resource="#essere_Parente_Di"/>
</rdf:Property>
RDF Schema offre inoltre degli strumenti linguistici (le proprietà rdfs:domain e
rdfs:range)per limitare il campo d'applicabilità delle varie proprietà definite a
livello utente, consentendo di porre, per ciascuna di esse, vincoli sul loro Dominio
(quali classi siano da considerare lecite come Soggetto della proprietà) e sul loro
Codominio (quali classi siano da considerare lecite come Valore, ossia come
complemento oggetto, della proprietà).
Ad esempio, se volessimo definire una nuova proprietà ha_Autore, imponendo che
essa possa avere come soggetto esclusivamente degli oggetti Libro e come valore
unicamente delle istanze della classe Persona, potremmo scrivere:
ex:Libro rdf:type rdfs:Class
Libro è una Classe
ex:Persona rdf:type rdfs:Class
Persona è una Classe
ex:ha_Autore rdf:type rdf:Property
ha_Autore è una Proprietà
ex:ha_Autore rdfs:domain ex:Libro
ha_Autore ha per Dominio istanze di Libro
ex:ha_Autore rdfs:range ex:Persona
ha_Autore ha per Codominio istanze di Persona
cioè
<rdfs:Class rdf:ID="Libro"/>
<rdfs:Class rdf:ID="Persona"/>
<rdf:Property rdf:ID=”ha_Autore”>
<rdfs:Domain rdf:about=”#Libro”>
<rdfs:Range rdf:about=”#Persona”>
16
____________________________________________________________________
</rdf:Property>
Abbiamo pertanto esplicitato esattamente il modo in cui la proprietà ha_Autore
mette in relazione oggetti della classe Libro con oggetti della classe Persona.
Ricordiamo che il valore (ma non il Soggetto!) di uno statement RDF può anche
essere costituito da un letterale; per questo motivo, la proprietà rdfs:range può
anche essere usata per indicare che il valore di una proprietà è dato da un tipo
particolare di letterale; ad esempio, volendo specificare che la Proprietà
anno_Di_Nascita (che si applica a risorse appartenenti alla classe Persona) ha come
valore un letterale “intero” (integer) secondo la definizione di XML Schema,
potremmo scrivere:
ex:anno_Di_Nascita rdf:type rdf:Property
ex:anno_Di_Nascita rdfs:domain ex: Persona
ex:anno_Di_Nascita rdfs:range xsd:integer
cioè
<rdfs:Datatype rdf:about="&xsd;integer"/>
<rdf:Property rdf:ID=”anno_Di_Nascita”>
rdfs:Domain rdf:about=”#Persona”>
rdfs:Range rdf:about=”&xsd;integer”>
</rdf:Property>
Benché l’URI http://www.w3.org/2001/XMLSchema#integer, che identifica il “tipo
di dato” integer, possa essere usata senza affermare esplicitamente in RDF Schema
che essa identifica un “tipo di dato”, tuttavia è consigliabile farlo comunque,
utilizzando la classe rdfs:Datatype.
Si presti attenzione al fatto che questa asserzione non costituisce una definizione di
un nuovo tipo di dato, in quanto non esiste alcuna possibilità di definire “tipi di
dato” in RDF Schema: l’asserzione presentata documenta solamente l’esistenza di
un “tipo di dato”, definito esternamente a RDF Schema, che può però essere usato
nello schema attraverso il suo riferimento URI.
Riepilogando, gli statements in uno Schema RDF sono sempre e solo delle
descrizioni, che possono anche essere considerate vincolanti, ma soltanto se
l’applicazione che li tratta è stata progettata per seguire questa interpretazione. RDF
Schema è un linguaggio dichiarativo che si limita a fornire un mezzo per affermare
informazioni addizionali sui dati, ma sono le singole applicazioni che stabiliscono
individualmente come affrontare l’eventualità che i dati non siano conformi agli
Schemi. RDF Schema mette a disposizione altre proprietà per fornire ulteriori
informazioni, come:
- rdfs:comment
Può essere usata per fornire una descrizione di una risorsa, in una forma che sia
leggibile da un utente.
- rdfs:label
Può essere usata per fornire una versione del nome di una risorsa che risulti più
facilmente comprensibile da un utente.
- rdfs:seeAlso
Può essere usata per indicare un’altra risorsa che potrebbe essere in grado di fornire
informazioni aggiuntive relativamente alla risorsa in esame.
17
____________________________________________________________________
- rdfs:isDefinedBy (è una sotto proprietà di rdfs:seeAlso)
Può essere usata per indicare un’ulteriore risorsa che definisca ulteriormente la
risorsa in esame (S rdfs:isDefinedBy O). La risorsa O può anche non essere
reperibile, e nel caso lo fosse, su di essa non sono imposte regole di formattazione.
Nello schema delle classi base di RDF/RDF Schema(figura 1.6), gli archi
rdfs:subClassOf indicano una relazione di sottoclasse (la freccia punta verso la
superclasse) e gli archi rdf:type indicano “questo oggetto è una istanza della classe
… ” (la freccia punta verso la classe). Ovviamente le istanze della classe rdfs:Class
sono, a loro volta, delle classi.
Tale diagramma mostra come sia la classe rdfs:Class che la classe rdf:Property
sono sottoclassi della classe delle risorse rdfs:Resource. In questo modo, ciascuna
Classe (istanza della classe rdfs:Class) e ciascuna proprietà (istanza della classe
rdf:Property) saranno automaticamente anche delle risorse (ciò è comprensibile
poiché in RDF una proprietà è sempre considerata una risorsa). La classe rdfs:Class
è una classe definita come istanza di se stessa.
Figura 1.6: Diagramma rdfs:Class e rdf:property
Un diagramma più completo della gerarchia di classi di RDF/RDF Schema è invece
il seguente:
18
____________________________________________________________________
Figura 1.7: Diagramma della gerarchia delle classi di RDF(S)
Questo diagramma viene anche detto il “Meta-Schema” (o lo “Schema degli
Schemi”).
Carenze di RDF Schema
RDF Schema è sufficientemente generale per creare ontologie, ma il numero ridotto
di proprietà e classi predefinite lo rendono, a volte, poco utilizzabile praticamente.
Ad esempio, mediante RDF Schema è possibile dichiarare che la proprietà
essere_Fratello_Di è una sottoproprietà di essere_Parente_Di, dunque esprimendo,
mediante una asserzione RDF, che “B è fratello di A”, un sistema inferenziale
basato su RDF Schema sarebbe in grado di rispondere correttamente alla domanda
“B è parente di A?”.
Non altrettanto può dirsi del caso in cui volessimo interrogare il sistema dopo aver
espresso, con due asserzioni RDF, una situazione in cui “A è antenato di B” e “B è
antenato di C”: alla domanda “A è antenato di C?” il sistema non sarebbe in grado
di rispondere, poiché per mezzo del solo RDF Schema non è possibile qualificare
come transitiva la proprietà essere_Antenato_Di.
La creazione di ontologie è una attività concettualmente complessa e raffinata, che
prevede sia profonde conoscenze sul dominio che si intende modellare, sia sugli
strumenti linguistici che vengono impiegati per farlo. Le ontologie possono essere
classificate, in prima battuta, in due grandi famiglie: alla prima appartengono
ontologie, che potremmo chiamare di dominio stretto, che permettono la creazione
di tassonomie le quali, pur avendo una validità generale, risultano però ristrette ad
un ben specifico dominio (ad es., quello dei veicoli a motore).
Alla seconda famiglia appartengono ontologie, che chiameremo generali, che si
preoccupano di fornire un vocabolario di uso così generale da essere utilizzabile per
creare, in modo molto più agevole ed efficace, le ontologie di dominio stretto.
RDF(S) fanno parte di questa seconda famiglia, ma il loro vocabolario presenta
rilevanti lacune espressive, ed è pertanto opportuno estenderlo con ulteriori
19
____________________________________________________________________
strumenti linguistici ed è proprio a questo fine che sono stati sviluppati altri
linguaggi.
In aggiunta alle basilari capacità espressive offerte da RDF Schema per descrivere i
vocabolari RDF, sene possono infatti individuare altre che risultano assai utili,
benché non strettamente necessarie (considerando che, come abbiamo visto, alcuni
utili applicazioni sono già state implementate sulla base del solo RDF Schema):
queste capacità addizionali potranno essere incluse in successivi sviluppi di RDF
Schema, o in linguaggi basati su RDF.
Tra le capacità extra, non fornite da RDF Schema ma dai linguaggi per definire
ontologie, menzioniamo la possibilità di specificare che:
-Esistono vincoli sulla Cardinalità delle proprietà.
-Una data proprietà può essere Transitiva
-Una data proprietà ha una Chiave (identificatore univoco) per istanze di una
particolare classe.
-Due diverse classi (aventi riferimenti URI diversi) rappresentano in realtà il
medesimo concetto.
-Due diverse Istanze (aventi riferimenti URI diversi) rappresentano in realtà lo
stesso individuo.
-Nuove classi sono definite per Combinazione di altre classi (ad esempio, mediante
l’Unione o l’Intersezione).
-Due classi sono Disgiunte, ovvero nessuna risorsa può essere istanza di entrambe
le classi.
1.1.3.2 Extensible Markup Langage (XML)
XML e l’interoperabilità sintattica
Al pari di HTML, anche XML (eXtensible Markup Language) discende da SGML
(Standard Generalized Markup Language), madre di tutti i linguaggi di markup.
Nato come raccomandazione del W3C nel 1998, XML, assieme alle numerose
tecnologie ad esso collegate, ha beneficiato di un consistente supporto industriale ed
ha determinato una profonda rivoluzione nel mondo del software (non solo in
ambito web) tanto da essere da alcuni ribattezzato “L’ASCII del terzo millennio”.
Vediamo brevemente come si presenta un documento XML: innanzitutto
osserviamo che si tratta di un file di puro testo (può essere facilmente prodotto con
un qualunque text-editor) ed è pertanto assolutamente platform-independent.
Notiamo poi che questa caratteristica gli conferisce una migliore resistenza ai danni:
a differenza di molti formati compressi o proprietari per i quali la perdita anche di
un solo byte può rendere illeggibile l’intero documento, in XML (essendo plain
text) la perdita di alcuni byte non preclude la leggibilità della parte di testo
rimanente. In XML i nomi dei tag non sono predeterminati (come in HTML) ma
possono essere scelti arbitrariamente, un documento XML consiste così in un
insieme correttamente annidato di tag aperti e chiusi, detti elementi: se esso rispetta
tutte le regole sintattiche di XML (quali: chiusura di ciascun tag aperto, i tag aperti
per ultimi devono chiudersi per primi, nomi dei tag scelti in conformità con
particolari specifiche, etc.) allora viene definito well-formed (ossia ben formato
sintatticamente e dunque leggibile da un qualunque parser XML).
Gli elementi sono quindi i blocchi base di ogni documento XML e quella che si
viene a creare è una struttura ad albero.
20
____________________________________________________________________
Un esempio è il seguente codice XML:
<?xml version="1.0" encoding="ISO-8859-1"?>
<LIBRO>
<TITOLO> I Promessi Sposi </TITOLO>
<AUTORE>
<NOME> Alessandro </NOME>
<COGNOME> Manzoni </COGNOME>
<DATA_DI_NASCITA> 1785-03-07 </DATA_DI_NASCITA>
</AUTORE>
<PREZZO> 10 </PREZZO>
</LIBRO>
Ogni documento XML inizia con la dichiarazione di aperture che indica la versione
delle specifiche (in questo caso la 1.0) e il tipo di caratteri utilizzati (ISO-8859-1:
Latin-1/West European).
Ciascun elemento può inoltre avere (all’interno del tag di apertura) un numero
arbitrario di coppie attributo-valore che consentono di qualificare ulteriormente
l’informazioni in esso contenuta, ad esempio:
<PREZZO valuta=”Euro”>10</PREZZO>
1
XML non fa elaborazioni, ma sono i Parser XML che permettono ad una
applicazione di accedere direttamente ai dati XML. Ogni parser deve per lo meno
recuperare e leggere il documento XML, assicurarsi che il documento soddisfi
determinati canoni di struttura (ben formato, valido), rendere disponibile
all’applicazione il contenuto del documento.
XML Schema Definition (XSD)
Finora ci siamo limitati ad analizzare l’aspetto sintattico dei documenti XML, ora
invece ci occuperemo di come sia possibile esprimere delle specifiche sulla loro
struttura dati, così da permettere un controllo più approfondito sulla loro
rispondenza alle nostre aspettative (o, per meglio dire, alle aspettative delle
applicazioni incaricate di processarli). I documenti che, oltre ad essere leggibili
(ovvero sintatticamente corretti), risultano conformi a tali specifiche vengono
definiti validi (ossia accettabili dal punto di vista del loro contenuto informativo).
1 Esistono due modelli di Parser XML: il modello tree-based (DOM - Document Object Model) e sisto quello event-based
(SAX - Simple Api for XML). Il primo genera in memoria una versione ad albero del documento di partenza, sulla quale
lavora l'applicazione; il secondo genera eventi man mano che incontra gli elemento xml, inviandoli all'applicazione che li
interpreterà.
21
____________________________________________________________________
XML Schema è stato appositamente elaborato dal W3C per consentire di descrivere
2
la struttura dei documenti XML, con maggiore espressività rispetto al DTD ed in
maniera più aderente alle necessità degli sviluppatori.
La sua particolarità è quella di essere descritto attraverso una sintassi XML: ciò non
deve stupire in quanto XML è un metalinguaggio e può quindi essere utilizzato per
rappresentare altri linguaggi di markup.
Tutti i documenti XSD devono presentare un elemento root (radice) di nome
schema
e
devono
fare
riferimento
al
namespace
http://www.w3.org/2001/XMLSchema# (di norma il prefisso utilizzato è xsd).
XML Schema consente la definizione di:
elementi, attributi e relazioni (come le DTD)
tipi di dato
vincoli (range, lunghezza stringa, precisione decimale, …)
XSD riconosce un certo numero di tipi semplici, a loro volta suddivisi tra tipi
semplici primitivi e tipi semplici derivati: questi ultimi sono ottenuti a partire dai
tipi semplici primitivi, attraverso forme di restrizione o di generazione di liste.
Essi comprendono un insieme di tipi di dato comunemente usati in programmazione
(quali Boolean, sting, float, ….): possono essere utilizzati come contenuto testuale
di elementi o attributi ma non possono contenere al loro interno la definizione di
altri elementi o attributi.
Se desideriamo definire elementi che possano contenere al loro interno non solo
testo, ma anche altri elementi o attributi dobbiamo creare un tipo complesso: ad
esempio, se volessimo progettare uno schema da associare all’elemento AUTORE
(incontrato precedentemente) potremmo definire un tipo complesso Type_Autore
come una sequenza di elementi semplici presenti al suo interno, in questo modo:
<xsd:complexType name="Type_Autore">
<xsd:sequence>
<xsd:element name="NOME" type="xsd:string" />
<xsd:element name="COGNOME" type="xsd:string" />
<xsd:element name="DATA_DI_NASCITA" type="xsd:date" />
</xsd:sequence>
</xsd:complexType>
2 DTD( TD Document Type Definition). Fino al 2 Maggio 2001 (data di rilascio della raccomandazione del W3C che
definisce la grammatica XML Schema Definition), DTD è stato l’unico vero standard di validazione del contenuto XML.
Occorre precisare fin da subito che DTD era preesistente ad XML e non era stato originariamente concepito come linguaggio
di descrizione per documenti XML; ne consegue che quando DTD viene impiegato per descrivere strutture dati XML esso
presenta significative lacune espressive (in particolare per quanto riguarda i tipi di dati primitivi che mette a disposizione) ed
inoltre la sua sintassi è diversa da quella di XML.
Per questi motivi, benché DTD sia molto conosciuto ed importante dal punto di vista “storico”, ai fini della validazione XML
è oggi senz’altro da preferire l’utilizzo di XML Schema che è stato espressamente progettato per questo scopo.
22
____________________________________________________________________
Limiti delle DTD: non supportano i namespace, non sono scritti in XML, non sono
estensibili, non specificano tipi di dato.
Namespace in XML
Abbiamo visto come la produzione di documenti XML lasci molto spazio al libero
arbitrio, in particolare nella scelta dei nomi da assegnare a tag e attributi: al fine di
facilitare lo scambio di dati in formato XML tra applicazioni diverse evitando
problemi determinati dalla possibile collisione di nomi, è stato introdotto il concetto
di namespace [21] (spazio di nomi). L’idea è quella di associare a ciascuna
collezione di nomi (internamente priva di conflitti) un nome che sia universale e
persistente. I nomi dei tag saranno dunque espressi nella forma:
PREFISSO:NOME_DEL_TAG in cui PREFISSO indica a quale namespace
appartiene il tag NOME_DEL_TAG.
Prima però di poter usare un namespace è necessario dichiararlo e ciò può essere
fatto indicandolo, ad esempio nel tag radice, nell’attributo riservato xmlns (Xml
Namespace).
Vantaggi di XML
Riassumiamo ora brevemente alcuni dei vantaggi offerti da XML:
-Ampi ambiti di utilizzo, grazie ai tag personalizzati
-Attitudine ad essere impiegato come formato per lo scambio dei dati tra
applicazioni e sul web
-Netta distinzione tra contenuto informativo (dati memorizzati nel file XML) e sua
presentazione
-Possibilità di verificare la validità della struttura dei dati di un documento XML
rispetto ad un insieme di regole liberamente definite mediante DTD (Document
Type Definition) o XML-Schema
-Possibilità di essere processato in modo semplice per eseguire le elaborazioni sui
dati (quali ordinamenti, filtraggi, riorganizzazioni, ….)
-Realizza un solido livello di interoperabilità sintattica (ma non semantica, vedi
paragrafo successivo)
Carenze semantiche di XML
I documenti XML hanno una loro semantica che rimane però implicita e pertanto,
non essendo definita formalmente, essa può eventualmente essere indovinata e
compresa solo dall’uomo, ma non dalla macchina. Le applicazioni che devono
scambiarsi dati in formato XML devono condividere a priori ed off-line la
conoscenza della semantica dei vari tag, infatti non esiste un meccanismo per
consentire alle applicazioni di scoprire, in un documento XML la cui semantica non
sia nota a priori, quali entità rappresentino i singoli tag e di indagare la natura delle
relazioni semantiche tra i vari tag innestati. I nomi dei tag, che spesso permettono
agli esseri umani di intuirne il significato, non sono infatti significativi per il
computer ed inoltre l’innestamento tra elementi può rappresentare molteplici
relazioni semantiche, senza però poterle specificare esplicitamente
Una ulteriore limitazione è data dal fatto che le applicazioni che trattano documenti
XML non sono capaci di trarre da essi nuova conoscenza, a meno che non siano
stati precedentemente programmati in modo opportuno, dunque la nuova
conoscenza non viene dedotta partendo solo ed esclusivamente dall’informazione
23
____________________________________________________________________
contenuta nei documenti XML, ma è necessario uno specifico intervento esterno
che sia antecedente al momento dell’elaborazione. Quello che si desidera è invece
un linguaggio che codifichi l’informazione in modo tale da avere sistemi diversi
che, basandosi unicamente sulla pura informazione contenuta nel documento,
possano inferire correttamente nuova conoscenza senza utilizzare nulla di esterno.
Un altro problema è costituito dal fatto che possono essere date diverse
rappresentazioni XML di una stessa informazione e le applicazioni si costruiscono
internamente delle strutture dati ad albero differenti per ciascuna di queste
rappresentazioni.
Da quanto esposto consegue che XML può essere considerato il mattone del
“Syntactic Web” (nel quale i costrutti sintattici sono dotati di significato implicito
solo in virtù di accordi off-line inaccessibili alle macchine), ma non potrà essere il
building block del “Semantic Web”.
Questo compito, nelle intenzioni del comitato W3C, sarà infatti affidato al
successivo livello.
1.1.3.3 Ontology Web Language(OWL)
L’OWL (Ontology Web Language) è un linguaggio per definire ed istanziare
ontologie Web. “Ontologia” è un termine preso in prestito dalla filosofia che si
riferisce alla scienza della descrizione dei tipi di entità esistenti nel mondo reale e
del modo in cui esse sono tra loro relazionate. Un’ontologia OWL può includere la
descrizione di classi, proprietà e delle loro istanze. A partire da una siffatta
ontologia, la semantica di OWL specifica come derivare le sue logiche
conseguenze: fatti non letteralmente presenti nell’ontologia ma implicati da essi.
Queste implicazioni possono essere basate su un singolo documento o su documenti
multipli, magari distribuiti sulla rete, che sono stati “fusi” tra loro per costituire un
unico insieme di fatti sui quali “ragionare”.
Ma perché le attuali tecnologie non sono sufficienti? E cosa offrono le ontologie
che XML e XML Schema non sono in grado di fornire?
• XML rende disponibile una mera sintassi superficiale per strutturare i documenti,
ma non impone nessun vincolo semantico sul loro significato.
• XML Schema è semplicemente un linguaggio per regolamentare la struttura dei
documenti XML e estendere l’XML attraverso i datatype..
• RDF è un modello basato sui dati (data-modello) dedicato agli oggetti (“risorse”)
ed alle relazioni intercorrenti fra essi; fornisce una semplice semantica e può
rappresentare questi data-modelli in sintassi XML.
• RDF Schema è, in fine, un vocabolario per descrivere proprietà e classi di risorse
definite in RDF, con una semantica basata quasi esclusivamente su gerarchie di
generalizzazione/specializzazione.
L’OWL offre, in aggiunta alle caratteristiche citate, nuovi vocabolari per
rappresentare le entità del dominio in esame: relazioni tra classi (es. predicare la
disgiunzione), cardinalità (es. “esattamente uno”), uguaglianza, una maggiore
24
____________________________________________________________________
tipizzazione delle proprietà e delle loro caratteristiche (es. “simmetria”,
“transitività”), classi enumerative, e così via.
Il linguaggio OWL prevede tre sottolinguaggi secondo un livello progressivamente
più elevato di espressività:
• OWL Lite è adatto a quegli utenti che necessitano di una classificazione in
gerarchie e di semplici vincoli. Per intendersi, sebbene OWL Lite supporti i vincoli
di cardinalità, esso consente solo valori di 0 o 1. È previsto che saranno presto
disponibili tool per supportare questa versione più semplice del linguaggio e che
quindi essa potrà imporsi come strumento leader nella definizione (e migrazione) di
tesauri e tassonomie.
• OWL DL è stato progettato per quegli utenti che vogliono la massima espressività
senza perdere in completezza computazionale (è garantito che tutte le implicazioni
saranno computate) e in decidibilità (tutte le computazioni saranno completate in un
tempo finito) nei “sistemi di ragionamento”. L’OWL DL include tutti i costrutti del
linguaggio al pari delle loro restrizioni, quale la separazione dei tipi: una risorsa
dichiarata come classe non può essere allo stesso tempo un individual o una
proprietà, ed una proprietà non può essere contemporaneamente anche una classe o
un individual. L’OWL DL è così denominato per la sua affinità con le description
logics, un campo di ricerca che studia una particolare porzione decisionale della
logica di base. Esso è stato progettato proprio per supportare il settore delle
description logic esistente, e possiede specifiche proprietà computazionali per i
“sistemi di ragionamento”.
• OWL Full si rivolge agli utenti che vogliono la massima espressività e la “libertà
sintattica” di RDF, pur rinunciando alle garanzie computazionali. Ad esempio, in
OWL Full una classe può essere trattata simultaneamente come una collezione di
individual e come un singolo. OWL Full consente ad un’ontologia di accrescere il
significato del vocabolario predefinito (RDF o OWL) a disposizione. È piuttosto
improbabile che tutti i software per la gestione delle ontologie saranno in grado di
supportare tutte le caratteristiche di OWL Full.
1.2. Ontologie
Nella filosofia, l'ontologia, la branca più fondamentale della metafisica, è lo studio
dell'essere o dell'esistenza nonché delle sue categorie fondamentali. In ambito
tecnico il termine è stato ripreso restringendo il suo significato ad una generica
specificazione di termini e relazioni da utilizzarsi nell'ambito di un dato dominio.
Prendiamo ora come esempio alcune definizioni di letteratura:
25
____________________________________________________________________
La definizione di Ontologia secondo Gruber
La definizione più citata di ontologia fu data da Tom Gruber nel 1993. Un'ontologia
è una esplicita specificazione di una concettualizzazione. La definizione di Gruber
costruisce l'idea che la formalizzazione del dominio di conoscenza inizia con la
concettualizzazione del dominio [Genesereth e Nilsson 1987], cioè è
l'identificazione degli oggetti che si è ipotizzato esistano nel mondo e delle relazioni
tra loro.
Secondo Gruber un'ontologia è una quintupla composta di classi, istanze, funzioni,
relazioni, assiomi. Le classi corrispondono alle entità del dominio, le istanze sono
gli oggetti che stanno nel dominio, le funzioni e le relazioni collegano le entità al
dominio, ed in fine gli assiomi che limitano il senso e l'uso delle classi, istanze,
funzioni e relazioni.
La definizione di Ontologia secondo Guarino
Un'ontologia secondo Guarino, è invece: un set di assiomi logici progettati per
considerare il senso di un vocabolario.
Da questa definizione nasce la relazione tra una concettualizzazione e l’ontologia
che la specifica e la formalizza. La definizione di Gruber è così stata estesa
prendendo non solo la concettualizzazione ma anche il linguaggio usato per
descriverla ed un insieme di assiomi associati con essa. In questo senso un'ontologia
è un linguaggio dipendente mentre una concettualizzazione è un linguaggio
indipendente.
L’RDF pur essendo un linguaggio potente per la rappresentazione della conoscenza,
non ha modo di operare in modo autonomo delle inferenze o delle deduzioni
ragionate. Per questo occorre un livello ulteriore del web semantico che permettta di
associare a dei concetti a regole logiche di uso, nasce così l’ontologia.
Nell'ambito informatico, una ontologia è il tentativo di formulare uno schema
concettuale esaustivo e rigoroso nell'ambito di un dato dominio; si tratta
generalmente di una struttura dati gerarchica che contiene tutte le entità rilevanti, le
relazioni esistenti fra di esse, le regole, gli assiomi, ed i vincoli specifici del
dominio.
La costruzione di un’ontologia non è altro che la definizione dei caratteri
fondamentali di quanto può venire accettato in un determinato mondo possibile,
sottoinsieme, nel nostro caso, dei possibili mondi di significato del web semantico.
Un’ ontologia è un vocabolario che contiene collezioni di asserzioni, che
definiscono le relazioni tra i concetti e specificano le regole logiche per ragionare su
di essi .
Elementi di un’ontologia:
Classi
Generalmente organizzati in tassonomie. La “classe” viene utilizzata in senso lato
per descrivere i concetti (le classi di individui) che si vuole rappresentare (es.
PERSONA, GENITORE, MADRE…).
26
____________________________________________________________________
FEMMINA
DONNA
PERSONA
GENITORE
MADRE
PADRE
Figura 1.8: Classi
Proprietà e attributi
Rappresentano le relazioni esistenti tra le classi del dominio
(es. “le MADRI sono GENITORI”, “i GENITORI hanno figli che sono
PERSONE”…).
FEMMINA
PERSONA
ha_figli
DONNA
MADRE
GENITORE
(1,n)
is_
a
PADRE
Figura 1.9: Proprietà ed attributi
• Il legame tra MADRE e GENITORE (is_a) indica che “le MADRI sono
GENITORI” e definisce una gerarchia tra concetti, provvedendo una base per
l’eredità di proprietà: un concetto specifico eredita le proprietà del concetto più
generale che lo sussume.
• E’ possibile rappresentare anche proprietà più complesse della relazione is_a.
• Ad esempio, è possibile definire la proprietà ha_figli, che connette le due classi
GENITORE e PERSONA, specificando degli attributi che ne vincolano
l’applicazione: v/r denota una restrizione sulle classi che possono soddisfare la
proprietà, mentre (1,n) rappresenta una restrizione di cardinalità.
• L’esempio può essere letto come “un GENITORE è una PERSONA che ha
almeno 1 figlio e tutti i figli che ha sono PERSONE”.
Assiomi
• Vengono utilizzati per modellare in maniera esplicita espressioni in ogni caso
vere.
• Possono essere utilizzati per diversi scopi: definire il significato dei vari
componenti dell’ontologia, definire relazioni complesse, verificare la correttezza
dell’informazione specificata o dedurre nuova informazione.
(es. disjoint (MADRE, PADRE) esprime il fatto che un elemento della classe
PADRE non può mai essere anche un elemento della classe MADRE).
27
____________________________________________________________________
GENITORE
MADRE
PADRE
Figura 1.10: Assiomi
Individui
Sono i singoli oggetti contenuti in una classe, a vari livelli di generalità, a seconda
dello scopo dell’ontologia.
FEMMINA
PERSONA
DONNA
GENITORE
GENITORE
PADRE
MADRE
Luisa, Anna,
Maria,…
Luca,
Mario,
…
Figura 1.11: Individui
Linguaggio
Una volta selezionati i componenti dell’ontologia occorre definirli in maniera
esplicita. E’ possibile distinguere ontologie diverse sulla base del linguaggio
utilizzato per definirne i componenti:
Informali: espresse tramite linguaggio naturale
• Semi-formali: espresse tramite linguaggio artificiale definito formalmente
• Formali: espresse in un linguaggio dotato di semantica formale, teoremi e
proprietà quali validità e completezza.
•
Le ontologie possono differire non solo nel contenuto ma anche nella loro struttura
ed implementazione. Un primo aspetto di diversificazione è senza dubbio il livello
di descrizione.
La modalità di costruzione di un’ontologia varia a seconda di chi si occupa di
realizzarla. In particolare un’ontologia può assumere la forma di:
• un semplice lessico o vocabolario controllato,
• un tesauro organizzato in categorie,
• una tassonomia dove i termini sono relazionati gerarchicamente, ognuno dei quali
possiede proprietà che lo distinguono dagli altri,
28
____________________________________________________________________
• ontologie propriamente dette, nelle quali si possono definire proprietà e concetti, e
dove questi ultimi possono avere relazioni con nome (named relationship) con altri
concetti come ad esempio “cambia l’effetto di” e “compra da”.
Un altro aspetto importante da considerare è l’ambito concettuale delle ontologie.
Queste possono variare in relazione al dominio di riferimento ed alla natura del
contenuto. La distinzione più evidente che si può operare è tra:
•
•
ontologie di scopo,
ontologie di dominio.
Si chiamano ontologie di scopo (task ontology) quelle che rappresentano la struttura
dei processi produttivi, mentre quelle che forniscono le descrizioni degli oggetti
specifici dell’applicazione sono dette di dominio (domain ontology). Queste ultime
stabiliscono le relazioni che si possono osservare quando le informazioni da
modellare sono espresse in linguaggio naturale.
Un’altra distinzione si basa sull’istanziazione. Tutte le ontologie possiedono due
componenti fondamentali. La prima è quella che è stata chiamata la componente
terminologica. Questa è approssimativamente quello che conosciamo come schema
di un database relazionale o di un documento XML. Essa definisce i termini e la
struttura dell’area di interesse per la quale l’ontologia è stata scritta. La seconda
componente, quella asserzionale, popola l’ontologia con entità che manifestano una
determinata definizione terminologica. Queste entità possono essere considerate o
come concetti o come entità individuali, ovvero come entità che vanno istanziate o
che non derivano da nessuna concettualizzazione. Il limite tra il trattare qualcosa
come concetto o come individual è come al solito molto sottile e dipende
tipicamente dalle specifiche necessità.
Infine quello che rende due ontologie diverse tra loro è il linguaggio utilizzato per
la specifica. Le ontologie, infatti, non sono costruite tutte allo stesso modo. E’
possibile utilizzare diversi linguaggi, inclusi quelli di logica generale come il
Prolog. Tuttavia, i più utilizzati sono quelli che sono stati concepiti (e qualche volta
ideati) appositamente per la creazione delle ontologie.
Il modello della Open Knowledge Base Connettivity (OKBC) e linguaggi come KIF
(e il suo immediato successore CL – Common Logic) ne sono i primi esempi: essi
sono diventati la base per nuovi linguaggi ontology-oriented. Ci sono anche diversi
linguaggi dedicati alla costruzione delle description logic. Tra di essi troviamo
Loom e DAML+OIL, il quale si è evoluto nello standard per la descrizione delle
ontologie: OWL, l’Ontology for Web Language. Ogni applicazione, ogni intenzione
di scopo applicata ad un dominio, utilizzerà una sua propria ontologia. Nasce quindi
la difficoltà di collegare fra loro le varie ontologie, conciliando le diverse
semantiche utilizzate. L'operazione che consiste nel collegare ontologie che
definiscono gli stessi oggetti ma con una semantica differente è chiamata Mapping.
Si potrebbe pensare di risolvere il problema attraverso la definizione di una
Ontologia Globale; questa soluzione presenterebbe il grande vantaggio di richiedere
un unico mapping: ogni diverso schema dovrebbe mapparsi soltanto all'ontologia
globale che funzionerebbe così come una lingua universale, traduzione universale
dei vari linguaggi usati. Questo tipo di soluzione si baserebbe su transazioni di
29
____________________________________________________________________
comunicazione punto a punto e comporterebbe un accordo totale, ad ogni livello,
sul significato della semantica utilizzata.
Ovviamente questa visione è improponibile. L'accordo su tutto non è pensabile e,
qualora fosse anche raggiunto, sarebbe incapace di dare risposta a quei naturali
mutamenti del dominio descritto che inevitabilmente sorgono nel tempo.
1.3. Applicazioni del web semantico
3
È Tim Berners-Lee a chiarire che non esiste una precisa Killer Application del web
semantico, ciò a motivo del fatto che è esso stesso una applicazione rivoluzionaria
ed è una infrastruttura di portata generale, della quale si gioveranno molte delle
applicazioni già esistenti e sulla quale potranno essere sviluppate applicazioni a tal
punto innovative da essere oggi difficilmente immaginabili. Possiamo comunque
elencare alcuni dei principali campi applicativi che trarranno i maggiori benefici
dalla costruzione del web semantico:
-Sviluppo di software ad agenti intelligenti
Essi sono in grado di eseguire in modo personalizzato, trasparente ed autonomo,
transazioni complesse, sollevando l’utente dall’onere di dover ricercare le
informazioni sui vari passi delle differenti procedure e liberandolo dalla necessità di
districarsi tra moduli software incompatibili tra loro.
Ad esempio, un agente che arriva al sito di una clinica ospedaliera potrà non solo
(come accade oggi) leggerne le parole chiavi (trattamento, medicine, terapia, ecc..),
ma capirà anche che il Dr. Rossi è lo specialista nel campo che ci interessa (es.
Oculistica) e lavora nella clinica, ad esempio, il Lunedì mattina e il Venerdì
pomeriggio; l’agente sarà così in grado di fissare, senza la nostra supervisione, un
appuntamento che risulti compatibile con gli impegni memorizzati nella nostra
agenda personale.
Un altro esempio può essere la pianificazione di una vacanza: la prenotazione di
viaggio e albergo, come pure l’organizzazione dell’agenda delle escursioni e delle
visite ai musei, potranno essere resi molto più semplici grazie a software di questo
tipo che, opportunamente informati sulle proprie preferenze, lasceranno all’utente il
solo compito di scegliere tra le varie opzioni risultanti.
Anche agenti che non erano progettati per lavorare assieme possono scambiarsi sia
dei dati, se questi sono dotati di semantica, sia le “prove” delle loro risposte (ossia
la catena di deduzioni logiche per mezzo della quale sono state ottenute), a patto
che tali dimostrazioni vengano comunicate attraverso l’apposito linguaggio
unificante del web semantico.
3 Una killer Application di una tecnologia è l’applicazione che porta l’utente a provarla e poi ad usarla con assiduità (ad es. il
telefono cellulare può essere considerato la Killer Application della tecnologia senza fili).
30
____________________________________________________________________
-Servizi di Ricerca
"The web is getting fat": se ne parla ormai da anni, il web sta diventando troppo
grande, ingrassando al ritmo di decine di migliaia di pagine al giorno. Ingrassano i
database di pubblicazione, ingrassano gli archivi e il numero di informazioni lievita
paurosamente. La sua incontrollabilità inizia a disturbare, i sistemi di ricerca
tradizionali segnano il passo e si fanno sempre più pressanti gli allarmi per un
miglior controllo dei contenuti. Inoltre gli utenti cominciano a mostrarsi
insofferenti.
Il loro livello di attenzione è un bene prezioso, da non dilapidare: è forse il bene più
prezioso in rete, più di tutti gli indicatori economici standard, più dei contatti e più
delle visite. L'utente ha una sola esigenza ormai: vuole raggiungere in poco tempo
l'informazione che cerca e quella soltanto, il resto è rumore, il resto non è più solo
superfluo, ma inizia a diventare fastidioso. In questo contesto si inserisce la
proposta di un web semantico popolato da asserzioni, nel quale non verranno più
indicizzate le parole-chiave, ma gli oggetti RDF. Potrà così essere superato l’attuale
approccio sintattico basato su keywords, cosicché pagine sintatticamente diverse ma
semanticamente correlate potranno essere restituite assieme come risultato di una
ricerca. Ugualmente, i search-engines saranno capaci di distinguere tra pagine
sintatticamente simili ma differenti dal punto di vista del contenuto, così da evitare,
ad esempio, che effettuando una interrogazione con la keyword “Dante”
(intendendo il grande scrittore) vengano restituiti tra i risultati della ricerca
documenti non rilevanti (ad es. quelli contenenti dei riferimenti ad omonimi oppure
a strade, scuole, fondazioni intitolate al Sommo Poeta). Inconvenienti di questo tipo
sono oggi assai frequenti, stante l’impossibilità di selezionare un particolare
significato da attribuire alla stringa “Dante”. L’efficienza dei motori di ricerca
migliorerà a tal punto da presentare il web come un gigantesco database, piuttosto
che come un gigantesco libro; essi saranno infatti in grado di rispondere a query
complesse, del tipo: aziende (soggetto) che hanno come servizio (predicato) la
fornitura di scarpe (oggetto).
Ad oggi, effettuare interrogazioni di questo tipo non é possibile, nel senso che si
possono solamente proporre tutte assieme le tre keywords “azienda”, “servizio” e
“scarpe”, ma non potremo mai esprimere il legame fra di esse, ed è proprio questa
la causa delle imprecisioni degli odierni motori di ricerca. Grazie alla possibilità
offerte dall’allargamento/restringimento semantico delle query verrà inoltre favorita
la navigazione per prossimità semantica piuttosto che quella basata sul caotico
attraversamento dei link.
-E-commerce
L’uso delle ontologie potrà facilitare la comunicazione machine-based tra venditore
e compratore, consentendo il riutilizzo su mercati diversi delle stesse descrizioni.
- Integrazione di DataBase
Sono applicazioni particolarmente rilevanti in ambito aziendale laddove è richiesta
la condivisione di informazioni tra sistemi informativi eterogenei (integrazione dei
dati B2B, Business to Business). Mentre in un database locale il significato di ogni
singolo campo è ben noto a tutti, nei database appartenenti al Web Semantico
ognuno può assegnare un nome ai propri campi con un proprio significato.
31
____________________________________________________________________
- Web services
Il web si sta evolvendo dall’essere un fornitore di documenti ed immagini all’essere
un fornitore di servizi: uno dei requisiti per lo sviluppo dei web services è la
capacità di descrivere l’interfaccia, ovvero l’aspetto estreno mediante il quale
comunicano le applicazioni. Esattamente come, fin dai primi tempi del web, le
interfacce di programmazione sono state accessibili mediante HTML Form, così ora
i programmi possono scambiarsi le informazioni utilizzando protocolli come
4
SOAP .
La potenza dei Web Services risiede non solo nella loro interoperabilità ed
estensibilità, ma anche nel fatto che possono essere combinati, in modo da ottenere
servizi complessi, semplicemente facendo interagire un insieme di programmi che
forniscono, ognuno, un servizio semplice.
Uno dei problemi di fondo è la comunicazione tra i Web services stessi. Il problema
può essere risolto solo se si dispone di un adeguato vocabolario, o, meglio, di
ontologie. Grazie alle ontologie, le descrizioni dei servizi offerti diverranno più
ricche di semantica e potranno essere interpretate in modo piu completo dagli agenti
intelligenti.
Altro problema è quello della localizzazione, da parte di agenti software, di un
servizio che esegua una specifica funzione: servizi e agenti possono infatti
depositare in elenchi sul web(tipo pagine gialle) le descrizioni delle loro funzioni,
ma è necessario che queste siano espresse in un linguaggio comune che ne permetta
un facile reperimento.
Nell’ottica delle architetture orientate ai servizi web, la modellazione dell’ontologia
diventerà un aspetto di fondamentale importanza.
- Domotica
Con gli URI, si è detto, è possibile nominare qualunque cosa, anche gli oggetti
fisici, e dunque si può usare RDF per descrivere anche dei dispositivi(quali
televisori, impianti stereo, cellulari, …., ma anche semplici elettrodomestici, quali,
ad es. tostapane,…). Ciascuno di questi è cioè in grado di dichiarare, nel linguaggio
comune di RDF, le proprie funzionalità e modalità di controllo: su queste basi si
può realizzare quella che viene detta “automazione domestica” (o “domotica”),
ovvero la configurazione semplice e personalizzata del funzionamento integrato di
più apparecchi.
4 SOAP
(Simple Object Access Protocol) è un protocollo leggero (sviluppato da Microsoft) per lo scambio di informazioni tra
applicazioni in un ambiente decentralizzato e distribuito.SOAP si basa principalmente sul protocollo HTTP (HyperText
Transfer Protocol) e su XML.
32
____________________________________________________________________
A questo obiettivo è rivolto lo sviluppo di uno standard, basato su RDF, detto
5
CC/PP (Composite Capability / Preference Profile) che si prefigge di descrivere
sia le capacità funzionali dei diversi dispositivi (ad es., le dimensione dello
schermo), sia le preferenze dell’utente.
- e-Learning
Organizzare una piattaforma di e-learning secondo strutture ontologiche può portare
immediati vantaggi, in quanto organizzando i vari materiali didattici in unità
(learning objects ), ogni singola unità può essere collegata alle altre e ricomposta in
un nuovo corso. Esistono già alcune applicazioni: http://edutella.jxta.org e
http://www.merlot.org.
- Voice Browsing
Finora siamo abituati ad accedere alle risorse di Internet attraverso un PC e ad un
software di navigazione ipertestuale e multimediale (noto come “Browser”), questo
tipo di approccio potrebbe però presto essere affiancato da esso vocale ai contenuti
web dotati di una interfaccia vocale (detta VUI, “Vocal User Interface”).
È possibile distinguere tre componenti fondamentali necessari alla realizzazione del
Voice Browsing: il primo é il sistema di ascolto (software di speech recognition),
che effettua la trasformazione del segnale acustico di input, prodotto da un utente
umano, in una stringa testuale. Il secondo componente é un sistema di
comprensione per l’estrazione dei dati rilevanti nell’ambito del testo riconosciuto e
la loro interpretazione semantica. La comprensione di una richiesta consente la
ricerca delle relative informazioni e la successiva preparazione di una informazione
di riscontro: il Web Semantico costituisce la fonte informativa su cui eseguire la
ricerca automatizzata. Il terzo é invece un sistema di uscita con tecnologia TTS
(Text To Speech) grazie al quale l’informazione testuale viene trasformata (grazie a
software di speech synthesis) in comunicazione verbale di output che può essere
resa disponibile anche su dispositivi mobili privi di schermo. In questo modo,
l’informazione di Internet è fruibile in qualunque luogo, in qualunque istante e su
qualunque apparecchio.
La rappresentazione della conoscenza è un campo che attualmente sembra avere la
reputazione di essere all'inizio interessante, ma che non sembra scuotere il mondo
così come speravano alcuni dei proponenti. Esso aveva senso ma era di uso limitato
su piccola scala, ma mai su larga scala. Questo è esattamente lo stato in cui era il
settore dell'ipertesto prima del Web. Ogni settore ha fatto alcune assunzioni
centralistiche se non in filosofia, in implementazioni, che hanno impedito una
diffusione globale. Ma ogni settore era basato sull'idea della rappresentazione della
conoscenza.
5 Graham Klyne, Franklin Reynolds, Chris Woodrow, Hidetaka Ohto, Johan Hjelm, Mark H.
Butler, Luu Tran, “Composite Capability/Preference Profiles (CC/PP): Structure and Vocabularies 1.0”, W3C
Recommendation , 15 gennario 2004. http://www.w3.org/TR/2004/REC-CCPP-struct-vocab-20040115/
33
____________________________________________________________________
Il Web Semantico rappresenta ciò che potremo avere se realizzeremo lo stesso
processo di globalizzazione di Rappresentazione della Conoscenza che il Web
inizialmente realizzò per l'Ipertesto. Una delle migliori cose sul Web è che ci sono
tante cose differenti per tante persone differenti. Il Web Semantico che sta per
venire moltiplicherà questa versatilità per mille. Per alcuni, la caratteristica
principale del Web Semantico sarà la facilità con la quale il PDA, il laptop, il
desktop, il server e l'auto comunicheranno l'un l'altro. Per altri, essa sarà
l'automazione di decisioni aziendali che precedentemente dovevano essere svolte in
modo laborioso. Per altri ancora, essa sarà l'abilità di dare la fiducia a documenti sul
Web e la facilità con la quale potremo trovare le risposte alle nostre domande - un
processo che è attualmente realizzato con frustazione.
In futuro dato un ampio Web semantico di dichiarazioni, l'odierna tecnologia dei
motori di ricerca applicata alle pagine HTML presumibilmente tradurrà
direttamente in indici fatti non di parole, ma di oggetti RDF. Questo permetterà una
ricerca del Web molto più efficiente come se esso fosse un gigantesco database,
piuttosto che un gigantesco libro.
Qualunque sia la causa, già ognuno può trovare una ragione per supportare questa
grande visione del Web Semantico. Sicuramente è una lunga strada da percorrere e non esiste garanzia che la percorreremo - ma già abbiamo fatto un pò di
progresso.
34
____________________________________________________________________
Capitolo 2.
L'uso del trust in ambienti centralizzati o
distribuiti.
2.1. Definizione di TRUST
Uno degli interrogativi più importanti legati al web semantico riguarda la fiducia
che si può riporre in un tale sistema. Chi può dare fiducia al sistema di asserzioni
che compongono il web semantico? Poiché esiste la regola "ogni cosa può dire ogni
cosa su ogni cosa", chi può fermarmi? A questo punto assume forte rilevanza il
livello di Trust, composto principalmente da tecnologie per la gestione della Firma
Digitale e dal così detto “Web of Trust”.
Basata su lavori in matematica e crittografia, la firma digitale fornisce la prova che
una certa persona ha scritto (o è d'accordo con) un documento o dichiarazione. Così
vengono firmate digitalmente le dichiarazioni RDF. In questo modo si può essere
sicuri dell’identità di chi le ha scritte (o almeno confermato la loro autenticità).
È chiamato “Web of Trust” quella prospettiva che vorrebbe associare ai
collegamenti tra i nodi della rete un grado di affidabilità, che si possa propagare
parallelamente ai collegamenti tra i nodi. Per esempio Dici al tuo computer che tu
hai fiducia nel tuo migliore amico, Robert. Robert sembra essere piuttosto popolare
sul Web e ha fiducia di molte persone. E naturalmente, tutte le persone di cui ha
fiducia, hanno fiducia di un altro gruppo di persone. Ognuna di queste persone ha
fiducia in altre persone e così via. Queste relazioni di fiducia formano il "Web of
Trust", e ognuna di queste relazioni è associata a un grado di fiducia (o di sfiducia).
Le manifestazioni del trust sono facili da riconoscere perché le sperimentiamo e ci
basiamo su di esse ogni giorno, ma allo stesso tempo il trust è difficile da definire
poiché si presenta in molte forme differenti. La letteratura sul trust può anche essere
abbastanza confusa a riguardo poiché il termine è utilizzato in una grande varietà di
significati. Presentiamo quindi diverse definizioni:
Definizione 1 (Reliability Trust) Il trust è la probabilità soggettiva attraverso la
quale un individuo, A, si aspetta che un altro individuo, B, esegua una determinata
azione che fa si che la sua attività sia efficiente.
Questa definizione include il concetto di dipendenza sul gruppo di trust e la
probabilità di affidabilità del party stesso. Secondo Falcone e Castelfranchi
infatti[1] avere alto trust su di una persona non significa necessariamente che si sia
disposti ad entrare in una situazione di dipendenza da essa.
35
____________________________________________________________________
Definizione 2 (Decision Trust) Il trust qualcosa o qualcuno al quale un certo
gruppo di persone vorrebbe dipendere in una certa situazione con una sensazione
di relativa sicurezza, anche se sono possibili conseguenze negative.
L’aspetto vago di questa definizione la rende più generale. Include infatti
implicitamente ed esplicitamente l’aspetto di una nozione di trust nella quale ha
importanza anche la dipendenza sull’entità o sul gruppo di appartenenza,
l’affidabilità dell’entità o del gruppo, l’utilità nel senso che una utilità positiva
scaturisce da un guadagno positivo, ed infine un certo rischio accettato da un
gruppo di persone, viste esperienze precedenti.
La difficoltà di catturare la nozione di trust in modelli formali in un modo
significativo deve quindi prendere in considerazione sia il rischio che l’affidabilità.
Definizione 3 (Reputazione) La reputazione è ciò che è generalmente detto o
creduto del comportamento di una persona o di una cosa.
Questa definizione corrisponde alle ricerche in campo delle reti sociali, la
differenza sostanziale tra trust e reputation si può esemplificare come segue:
1-“Credo in te per la tua buona reputazione”
2-“Ti credo nonostante la tua cattiva reputazione”
Assumendo che le due affermazioni siano relative ad identiche transazioni, la 1
assume che la parte che deve dare trust è a conoscenza del trust della controparte.
La 2 sottolinea che la parte giudicante ha una conoscenza privata del soggetto da
giudicare, attraverso esperienza diretta per esempio, ed ha prevalenza anche sul
giudizio generale di un gruppo di persone.
Questo sottolinea quanto il Trust sia in ultima analisi un fenomeno personale e
soggettivo che è basato su diversi fattori evidenti, e che alcuni di essi hanno più
peso di altri.
La Reputation invece assume più il senso di una misura collettiva di veridicità
basata su esperienze o votazioni di membri in una certa comunità.
Altre definizioni piu generali:
Definizione 4 "Ottenere la fiducia del consumatore on-line per la trasparenza e
l'affidabilità della propria attività on-line è un fattore fondamentale. Ovvero la
convinzione relativa alla bontà delle qualità di una persona o di un servizio, o
anche la fede in un comportamento; la convinzione relativa al soddisfacimento di
certe aspettative in certe condizioni, oppure la convinzione relativa all'abilità e alle
buone intenzioni associate all'altro attore di un rapporto di tipo commerciale. In
altre parole, il grado di affidabilità associato da un cliente alle dichiarazioni
espresse da un venditore in grado di soddisfare specifici bisogni del mondo reale."
36
____________________________________________________________________
Definizione 5 Nell'ambito della crittografia, una web of trust (rete di fiducia) è un
concetto utilizzato da PGP, GnuPG, e altri sistemi compatibili con OPEN PGP per
stabilire l'autenticità dell'associazione chiave pubblica-utente. Sotto alcuni aspetti è
un'alternativa all'affidarsi esclusivamente ad una certificate authority (o a una
gerarchia di esse) tipico dei sistemi PKI centralizzati. Così come ci sono moltissime
reti di computer, ci sono molte reti di fiducia indipendenti, e ogni utente (attraverso
il suo certificato d'identità) può essere parte e fungere da collegamento tra molte di
esse.
Il problema del trust è assai complesso poiché porta a diversi dilemmi:
1-Quali elementi informativi sono più adatti per misurare il trust?
2-Come possono essere catalogate e raccolte queste informazioni?
3-Quale modello è migliore per computare il trust?
4-Come passare da una vista teorica ad una reale applicazione?
5-Sicurezza delle “opinioni”, fidarsi di votazioni false?
6-Definire il trust a vari livelli:server,client e agent.
7-Occorre tenere conto del tempo che passa per il calcolo del trust?( forgetting
factor, aging factor or fading factor….).
2.2 Metriche di TRUST
Le metriche di trust possono essere molteplici e differenti, sono infatti emersi un
buon numero di sistemi per il management del trust, che raccolgono e computano i
valori di trust espressi dal network su cui una comunità è basata.
Quando la comunità è costituita su modelli del tipo client-server, esiste una terza
parte che certifica il trust e raccoglie le votazioni per formare una visuale globale.
E-bay, Amazon e Sladshot sono sistemi che utilizzano feedback dagli utenti per
raccoglierli in un DataBase centralizzato. In questo caso tutti gli utenti hanno la
possibilità di accedere ai dati relativi al trust direttamente dal database centralizzato.
Quando la comunità è distribuita sul modello P2P la sfida di gestire i feedback dagli
utenti diviene molto più difficile. Non c’è un database centralizzato del trust, e, la
raccolta, gestione, aggregazione del trust deve essere concepita in modo distribuito.
In questo caso il sistema diviene più vulnerabile alla falsificazione ed agli attacchi,
ed il modello computazionale assai più complesso.
37
____________________________________________________________________
Classificazione generale in categorie di rating:
Figura 2.1:Categorie di rating
Soggettivo e specifico: misure usate per esempio in questionari di controllo dove
viene chiesto di esprimere una opinione su una certa cosa scegliendo da una certa
scala di valori.
Soggettivo e generale: misure utilizzate per esempio su e-bay.
Che utilizza il Feedback Forum on eBay che dà la possibilità a compratore e
venditore di votarsi reciprocamente come positive, negative, or neutral (i.e. 1, -1, 0).
Il totale viene poi calcolato sommando i valori. C’è inoltre una history del
comportamento dei soggetti con il numero di 0,1,-1(6 mesi fa,1mese fa e 1
settimana fa). È primitivo e può avere poco significato.
Oggettive e specifiche: usate per misure di test per prodotti oggettivamente
misurabili(verificati sul campo, reale qualità dell’oggetto).
Oggettive e generali: misure sulle reali caratteristiche di un oggetto(punteggi per
ogni caratteristica, medie , pesi diversi….).
_
Il modo più semplice di dare un rating è quello di e-bay come somma di
rating(postivi-negativi) totale, poi ci può essere un sistema più corretto che effettua
una media dei voti(Amazon), oppure una media pesata di voti in cui mettere anche
il parametro tempo(età del rating differenza col rating precedente…).
Qualunque modello scelto per misurare il trust deve garantire:
1. Accuratezza per performance di lunga durata. Il sistema deve riflettere la
confidenza di un certo voto dato. Deve anche avere la capacità di distinguere tra una
nuova entità di qualità sconosciuta ed una entità con scarsa performance a lungo
termine.
2. Pesare il comportamento corrente. Il sistema deve riconoscere e riflettere I trend
recenti nella performance di una entità. Per esempio, una entità che ha avuto un
comportamento buono per lungo tempo e comincia a calare bruscamente deve
essere velocemente riconosciuta come non affidabile.
3. Robustezza contro gli attacchi. Il sistema dovrebbe resistere ai tentativi, da parte
di terse parti, di manipolare i punteggi di trust.
38
____________________________________________________________________
4. Non eccessiva influenzabilità. Aggiungere ogni singolo voto non dovrebbe
influenzare il voto totale in modo significativo.
2.2.1 Approcci centralizzati
Un gestore di reputazione ad approccio centralizzato è un servizio indipendente che
si tiene al corrente della qualità, della credibilità e della reputazione di ogni
elemento in un insieme. Tipicamente si ha la necessità di valutare siti web, aziende,
prodotti o anche persone. Più genericamente qualunque cosa che possa essere
osservata prima di effettuare delle transazioni che la riguardino è soggetta a
reputazione.
Diverse esigenze hanno prodotto modelli per la gestione della reputazione; nel
seguito vengono presentate alcuni dei principali sistemi commerciali ad approccio
centralizzato che fanno uso di reputazione.
eBay
eBay [2] è un'asta elettronica dove ogni utente registrato che desideri vendere un
prodotto, può indire un'asta specificando i dettagli del prodotto e il prezzo base dal
quale partire. Chi sia interessato all'acquisto, dopo essersi anch'egli registrato al
servizio, ha modo di proporre un prezzo e, nel caso in cui vinca l'asta, ha il diritto (e
dovere) d'acquisto. I pagamenti avvengono in modo diretto o tramite un servizio
messo a disposizione di eBay stesso, chiamato ePay, che come una banca
elettronica, permette di trasferire denaro in modo semplice, tramite carta di credito.
eBay è stato uno dei primi siti a tener traccia della reputazione dei vari utenti che
partecipano al servizio.
Dal momento che le transazioni avvengono tra sconosciuti spesso di diversi paesi, è
infatti necessario che ci sia un metodo per valutare la credibilità dei partecipanti.
Che fare infatti, se chi vende non spedisce effettivamente la merce? Che fare se chi
compra non paga?
Ad ogni acquisto, il compratore fornisce a eBay un giudizio esteso e uno sintetico
sul venditore. Il giudizio sintetico può assumere i valori di buono, medio e scarso,
mentre il giudizio esteso è una frase che ne spieghi le ragioni. Possibili compratori
si possono sentire tranquillizzati dal riscontrare che le recenti transazioni del
venditore sono terminate con la soddisfazione dei clienti precedenti.
D'altra parte i venditori sono incentivati a mantenere un buon comportamento da
questo sistema, poichè basta una sola cattiva esperienza per rovinare la reputazione
di un venditore. eBay ha quindi un gestore di reputazione centralizzato con utenti
registrati non anonimi, cosa che implica il fatto di non poter abbandonare l'account
nemmeno in caso di pessima reputazione. Questo meccanismo è supportato inoltre
da un'assicurazione che copre parte dei danni dovuti ad un suo eventuale cattivo
funzionamento.
39
____________________________________________________________________
Siti esperti
Dove si scambiano informazioni e consigli su aree di interesse comuni tra più
soggetti.Votazioni per diverse caratteristiche che una spiegazione data da un
soggetto deve avere (chiarezza, comprensività, leggibilità, tempestività) più un
numero che demarca il prestigio(media voti ricevuti per le risposte). Metodo usato
da Allexpert.
Epinions
Epinions [3] permette di esprimere opinioni su una serie vastissima di prodotti e di
servizi in vendita in rete, dai computer palmari ai musei di NewYork. Chi abbia
necessità di acquistare un prodotto in Internet si trova spesso nella condizione di
non sapere di chi fidarsi e nel timore di spendere più denaro del necessario e di non
acquistare la scelta migliore. Epinions, grazie ai contributi degli utenti, riesce ad
attribuire una reputazione ai vari prodotti in vendita e permette di confrontarne le
caratteristiche, così da permettere di valutare la scelta migliore. Scelto il prodotto è
possibile continuare la navigazione controllando le valutazioni dei siti che lo
vendono, trovando, inoltre, un confronto sui prezzi. Questo sito ha introdotto per la
prima volta il concetto di credibilità associato agli utenti che scrivono i commenti ai
prodotti, in modo da ridurre o evitare del tutto commenti faziosi. Ogni commento
può essere giudicato utile o meno da parte degli altri lettori, giudizio che serve a
modificare la credibilità di chi lo ha scritto. Gli utenti che hanno acquisito una
credibilità molto alta hanno maggior peso nella valutazione complessiva e hanno
diritto a maggior visibilità nell'elenco dei giudizi estesi. Questo modello, chiamato
gestione a doppia reputazione, è diventato attualmente lo standard de facto,
dimostratosi infatti un'ottima soluzione.
Amazon
Amazon.com [4], una delle aziende che per prima ha sfruttato il commercio
elettronico diventando un riferimento mondiale per la vendita on-line di libri, ha da
subito incluso la possibilità di lasciare ai lettori la libertà di aggiungere commenti ai
libri in vendita. Purtroppo questa idea, che poteva apparire ingenuamente un modo
per migliorare il servizio e per coinvolgere gli utenti, si è rivelata essere un'arma
molto potente utilizzabile contro autori e libri. Infatti è capitato che alcuni libri e
alcuni autori venissero presi di mira da loro detrattori ed insultati pubblicamente,
con devastanti conseguenze sulle vendite. A questi commenti seguivano
tipicamente elogi e panegirici da parte di amici, mandando in confusione i
compratori. Ora vengono effettuati dei controlli ed è stata introdotta la doppia
reputazione.
Google
Google [5] è un motore di ricerca tra i più efficienti ed innovativi: restituisce la lista
delle pagine che soddisfano la ricerca sulla base di un valore di qualità che dipende
dal numero di documenti che si riferiscono alla pagina stessa. Questa soluzione,
difficilmente estendibile ad altri ambienti, è stata sfruttata da alcune aziende che
sono riuscite ad aumentare la propria reputazione, e quindi la probabilità di
comparire nelle ricerche, creando migliaia di pagine piene di riferimenti ai prodotti
da pubblicizzare(Questo sistema è detto PageRank).
40
____________________________________________________________________
Google PageRank
Google utilizza una tecnologia basata su hardware e software avanzato. La velocità
con cui possono essere eseguite le ricerche è attribuibile in parte all'efficienza
dell'algoritmo di ricerca e in parte all'elevato numero di PC collegati in rete, che,
insieme, contribuiscono a creare un motore di ricerca superveloce. Il nucleo
principale del software è rappresentato da PageRank, che consiste in un sistema che
permette di classificare le pagine Web in ordine di importanza. Il sistema è stato
sviluppato da Larry Page e Sergey Brin all'Università di Stanford. PageRank
continua ad essere l'elemento chiave degli strumenti di ricerca di Google.
Basato sullo specifico carattere "democratico" del Web, PageRank sfrutta la
vastissima rete di collegamenti associati alle singole pagine per determinarne il
valore. In pratica, Google interpreta un collegamento dalla pagina A alla pagina B
come un "voto" espresso dalla prima in merito alla seconda. Tuttavia, non si limita
a calcolare il numero di voti, o collegamenti, assegnati a una pagina. Oltre a
effettuare questo calcolo, Google prende in esame la pagina che ha assegnato il
voto. I voti espressi da pagine "importanti" hanno più rilevanza e quindi
contribuiscono a rendere "importanti" anche le pagine collegate. PageRank assegna
ai siti Web importanti e di alta qualità un "voto" più elevato di cui Google tiene
conto ogni volta che esegue una ricerca. È evidente che oltre ad essere importanti,
le pagine devono corrispondere ai termini ricercati. Quindi, Google integra
PageRank con sofisticate procedure di ricerca testo per trovare le pagine che sono
rilevanti e rispondono ai criteri di ricerca indicati. Google non si limita solo ad
esaminare il numero di volte in cui una parola specifica è presente nella pagina, ma
esamina tutti gli aspetti del contenuto della pagina (e dei contenuti delle pagine
correlate ad essa) per stabilire se risponde o meno ai criteri di ricerca indicati. I
complessi metodi di ricerca automatici di Google sono studiati per limitare al
minimo le interferenze degli utenti. Sebbene vengano visualizzati annunci
pubblicitari accanto ad alcuni dei risultati più rilevanti, Google non vende spazi
pubblicitari all'interno dei risultati (cioè i clienti non possono acquistare un
PageRank superiore). Le funzioni di ricerca di Google offrono un sistema semplice,
onesto ed obiettivo per trovare siti Web di alta qualità contenenti dati rispondenti a
quelli ricercati.
Slashdot
Slashdot [6], forum di discussione, permette agli utenti di definire, per ogni
commento, un giudizio. In modo da permettere la visione selettiva delle migliaia di
mail che vengono pubblicate quotidianamente. Ad ogni utente registrato viene
associata una reputazione, denominata karma, che viene modificata sulla base dei
giudizi espressi dai lettori sui suoi messaggi. Un buon comportamento innalza il
karma, e i messaggi avranno maggior peso, e pertanto avranno maggior probabilità
di essere effettivamente letti.
TrustRank (evoluzione del PageRank)
Lo scopo del TrustRank[7] è quello di aiutare nella classificazione di una pagina o
di un sito web. Il processo per definire se una pagina è considerabile come web-
41
____________________________________________________________________
spam, o comunque per la sua corretta classificazione qualitativa, può essere
sintetizzato in 3 passi:
-L’algoritmo prima seleziona un gruppo di pagine delle quali non è chiaro lo “spam
status” (definite seed).
-Un esperto umano esamina le pagine e comunica all’algoritmo quali posso essere
definite spam (bad pages) e quali no (good pages).
-L’algoritmo identifica le altre pagine sulla base della classificazione umana
iniziale.
Basi del trustRank
La determinazione certa di una pagina può provenire esclusivamente dalla
soggettiva valutazione umana, l’esperto in questione viene definito Oracolo.
Da questo è possibile comunque generare un semplice algoritmo che assegna una
valore binario pari a 0 se la pagina contiene spam (bad page), oppure pari a 1 se la
pagina è da considerarsi di buona qualità o senza spam (good page).
L’intervento dell’Oracolo come detto porta via molto tempo ed è anche costoso in
altri termini, non è possibile un suo intervento costante. Per diminuire gli interventi
dell’Oracolo è possibile adottare una tecnica basata sull’esperienza che ogni singolo
navigatore del web può avere: una
pagina buona difficilmente punta a una pagina cattiva. Questo perché l’autore di
una pagina con una qualità elevata difficilmente ha interesse che venga collegata
con pagine con una qualità minore o nulla. Per questo motivo le tecniche di spam
hanno cominciato ad adottare dei sistemi per collegare pagine che a prima vista
sembrano buone, a pagine contenenti web-spam, con varie tecniche:
-Introduzione nei siti che offrono la possibilità ai visitatori di inserire commenti, di
un numero elevato di link verso le pagine cattive (questo problema viene risolto con
la moderazione dei commenti o con la futura introduzione del tag link
rel=”nofollow” –NDR). Tecnica valida anche per forum o web chat.
-Creazione di pagine che offrono contenuti validi, ma che hanno un elevato numero
di link nascosti verso siti equivoci. Questa tecnica viene definita Honey Pot. Per
avvalorare questa tecnica chi crea queste pagine inserisce anche numerosi link verso
pagine buone.
-Creazione di directory basate sui risultati dei principali motori di ricerca, che
utilizzano dei motori chiamati spam-engine, per piazzarsi nei primi posti delle
ricerche.
In questi casi di esempio, adottando un algoritmo che funzioni da Oracolo,
potrebbero crearsi situazioni equivoche. Se abbiamo un sito di 100 pagine, con 70
pagine buone (quindi con valore binario pari a 1) e 30 pagine cattive (con valore
binario pari a 0), si avrà un indice di fiducia intermedio. In questo caso solo
l’occhio umano riesce a stabilire una verità certa.
42
____________________________________________________________________
Figura 2.2:Page rank
Inverse PageRank
Una tecnica valida per stabilire la qualità di un sito potrebbe venire dall’inversione
della tecnica del PageRank. Ovvero dare una preferenza positiva a quella pagine
dalla quale è possibile raggiungere molte altre pagine, basandosi quindi sul numero
dei link uscenti (outbound links).
High PageRank
Per realizzare questa tecnica è stata effettuata una query su un motore di ricerca che
utilizza PageRank come tecnica. Ogni risultato avrà vicino risultati con PageRank
simile. Questo perché il PageRank si propaga tra i link. Pagine con un elevato
PageRank saranno collegate a pagine con un PageRank simile.
Sperimentazione del TrustRank
Per valutare l’algoritmo TrustRank, il team ha usato l’indicizzazione del motore di
ricerca Altavista. Per ridurre la complessità del sistema i test si sono svolti
prendendo in considerazione la totalità di ogni sito web, e non ogni singola pagina
che lo compone. Quindi diversi miliardi di pagine sono stati raggruppati in
31.003.946 siti, usando uno degli algoritmi proprietari di Altavista.rticolo scritto da
Simone Messina – www.officialsm.net
Osservazione: un terzo dei siti selezionati non avevano alcun tipo di classificazione,
questo perché l’algoritmo PageRank che propaga la fiducia si basa sulla presenza di
link tra i siti. Ma questi siti comunque avevano un indicizzazione bassa, non è stato
difficile quindi separare manualmente siti
buoni e siti cattivi. Questo tipo di controllo ha portato via delle settimane, ulteriore
conferma
dell’impossibilità dell’intervento completamente manuale. Con la crescita smisurata
delle fonti e dei siti sul web i motori di ricerca giocano un ruolo fondamentale per la
ricerca e soprattutto l’effettivo
successo nella ricerca di informazioni. Il web-spam demolisce questa capacità di
successo nella ricerca di informazioni utili. I motori di ricerca quindi devono
necessariamente evolvere. Il sistema TrustRank, anche in combinazione al
PageRank o altri algoritmi potrebbe contribuire a questa evoluzione.
43
____________________________________________________________________
2.2.2 Approcci distribuiti
Tutti gli approcci visti precedentemente richiedono la presenza di un server
centralizzato che possa associare ad ogni utente un valore di reputazione, univoco e
super partes. Queste soluzioni, per quanto interessanti, non sono applicabili ad
ambienti distribuiti, come ad esempio le reti peerto-peer. Esistono poche soluzioni
proposte per ambienti distribuiti e solo poche di queste effettivamente
implementate. Segue una descrizione di PGP che implementa Web of Trust[1], un
modello di reputazione storico da cui nessun'altro nuovo modello può prescindere.
Successivamente vengono descritti Poblano, Global Trust e Free Heaven.
PGP
Un approccio decentralizzato storico è stato implementato in Pretty Good Privacy
[8] un sistema crittografico a chiavi asimmetriche. PGP è una pietra miliare nella
storia dei sistemi crittografici perchè ha permesso alle grandi masse che popolano
Internet di utilizzare per la prima volta gratuitamente e con semplicità la crittografia
di grado militare. PGP è nato principalmente per crittare e-mail usando chiavi
asimmetriche ma supporta anche la crittografia simmetrica, principalmente per la
crittazione di file locali.
La crittografia asimmetrica prevede che ci sia un mittente e un destinatario, dotati di
una propria chiave pubblica, di una propria chiave privata e della chiave pubblica
dell'altro.
Il sistema prevede che per mandare un messaggio crittato ad un utente il messaggio
di testo debba venire crittato usando la chiave pubblica del ricevente. Un'altra
caratteristica estremamente interessante di questo software è che permette di
firmare i messaggi in modo da garantire, oltre alla riservatezza, anche l'autenticità
del mittente.
44
____________________________________________________________________
Figura 2.3: PGP
La Figura 2.3 illustra lo schema utilizzato per la firma digitale e per la crittazione:
Alice, che vuole spedire un messaggio firmato e crittato a Bob, procede come
segue:
1. Alice recupera la chiave pubblica di Bob.
2. Alice firma il messaggio con la propria chiave privata.
3. Alice critta il messaggio firmato con la chiave pubblica di Bob.
4. Alice spedisce il risultato dell'operazione precedente a Bob.
5. Bob riceve il messaggio e lo decritta con la propria chiave privata, l'unica in
grado di decifrare il messaggio.
6. Bob verifica la firma digitale con la chiave pubblica di Alice.
Si nota da questo schema come il rapporto tra la chiave pubblica e privata sia stretto
e al contempo complementare.
Quello che questo schema non dice come Alice e Bob possano scambiarsi la chiave
pubblica in modo sicuro. Infatti, se Alice spedisse la propria chiave pubblica a Bob
in un canale insicuro, non darebbe a Bob la garanzia di ricevere la chiave esatta. Un
possibile attacco chiamato man in the middle prevede infatti che un terzo
partecipante si collochi nel mezzo della trasmissione, facendosi credere Alice a
Bob, e viceversa.
Risultato di questa situazione, dovuta al fatto che né Bob né Alice hanno avuto
modo di cambiarsi in modo sicuro la chiave pubblica, e che tutte le transazioni
successive sono diventate a rischio. Si consideri che uno scenario di questo genere è
ben lungi dall'essere inattuabile: spesso i messaggi crittati passano via mail
attraverso un certo numero, più o meno fisso, di server SMTP.
All'attaccante basterebbe quindi prendere possesso di uno di questi nodi e
modificare le regole di trasferimento in modo da attuare le modifiche necessarie ai
messaggi.
Se ci fosse un'autorità di cui tutti conoscono la chiave pubblica allora lo scambio
delle chiavi sarebbe semplice, poichè ad Alice basterebbe crittare la propria chiave
pubblica con quella pubblica dell'autorità (Certification Authority), in modo che
essa soltanto possa decifrare il messaggio. La Certification Authority restituirebbe
ad Alice un certificato che ne autentichi la chiave pubblica, che può essere esibito a
45
____________________________________________________________________
suo fianco. PGP non adotta questa tecnica, essendo un'architettura distribuita:
preferisce che l'autenticazione avvenga tramite catene di utenti. L'idea di fondo è
che, supponendo che Alice abbia la certezza di aver ricevuto proprio la chiave
pubblica di Bob, potrebbe lei stessa fornire un certificato firmato per quella chiave.
A questo punto, un terzo amico di Alice, che di lei ha massima fiducia, potrebbe,
verificando la firma digitale, riconoscere l'autenticità della chiave pubblica di Bob e
trasferirne di conseguenza la fiducia. In questo modo sono state create delle catene
di migliaia di chiavi. Alla creazione di un certificato che autentichi una chiave
pubblica, è possibile scegliere il livello di fiducia da attribuire alla chiave. La
ragione per cui è necessario introdurre diversi livelli è per dare delle limitazioni alla
proprietà altrimenti transitiva della fiducia, molto pericolosa quando le catene si
allungano a dismisura. Certe volte infatti, pur essendo necessario includere una
chiave nel proprio key ring, non si può avere la certezza assoluta di aver ricevuto la
chiave dell'individuo a cui si pensa appartenga. Seguono i quattro livelli ammessi,
con una breve descrizione.
-Non definito : non ci sono dati per attribuire alcuna fiducia alla chiave.
-Nessuna : la chiave pubblica non deve essere considerata valida e i certificati
prodotti da questa non devono essere presi in considerazione.
- Marginale : la chiave deve essere creduta quando introduce un'altra, ma deve
restituire un certificato di fiducia marginale.
-Completa : massima fiducia nella chiave. Ogni chiave firmata da questa deve
essere presa in considerazione.
Detto questo rimane il problema di stabilire quando una chiave, con diverse firme,
può essere considerata valida o meno. Ovviamente se tutte le firme fossero di
completa fiducia e di chiavi a loro volta certificate, il dubbio non si porrebbe.
Accade spesso però che alcune firme siano di reputazione marginale. In questo caso
vengono contate e sulla base del loro valore, in relazione ad alcune variabili
configurabili dall'utente che riflettono il suo scetticismo, si decide quale valore di
fiducia attribuire alla chiave.
Il risultato di questa operazione è un livello di fiducia associato ad ogni certificato,
che prevede tre livelli:
-Non definito : non si sa se il certificato sia valido.
-Marginale : si è abbastanza sicuri che il certificato sia valido.
-Completo : si ha la certezza assoluta che la chiave appartenga all'utente che la
dichiara propria.
Il meccanismo di gestione delle chiavi a fiducia marginale è però risultato troppo
complesso e soggetto a variabili locali, quindi ne viene sconsigliato l'utilizzo, se
non in casi di necessità. Le grandi comunità che adottano questo sistema, come ad
esempio Debian, usano certificare le chiavi sempre con la massima fiducia e infatti
prevedono che i possessori delle chiavi si incontrino personalmente mostrando le
proprie credenziali (carta d'identità o passaporto).
Poblano
Poblano [9] È un modello di fiducia sviluppato da Sun Microsystem espressamente
per ambienti distribuiti peer-to-peer in architetture JXTA [10]. Come accennato,
46
____________________________________________________________________
questi ambienti non prevedono delle strutture centrali che possano fungere da
autorità e il problema di non aver strumenti per valutare la fiducia di un
partecipante alle transazioni è presente e pressante. L'idea, come nel modello PGP,
è quella di creare una catena di nodi reciprocamente connessi da un legame di
fiducia, definito come un valore compreso tra -1 e 4, con questi significati:
Valore Significato
-1 Sfiducia
0 Ignora
1 Fiducia minima
2 Fiducia media
3 Fiducia buona
4 Massima fiducia
Nel modello viene specificato come viene trasferita la fiducia e come associare un
valore ad un server, tuttavia Poblano non ha riscosso molte approvazioni da parte
della comunità scientifica.
Global Trust Model
Il modello Global Trust assume per semplicità che esistano due soli valori di fiducia
e che i nodi, per ogni transazione, possano comportarsi correttamente oppure no.
Un'altra assunzione importante è che il numero di nodi scorretti sia basso e che per
un osservatore non sia possibile determinare quale di due parti sia disonesta in una
transazione non andata a buon fine. Il metodo proposto utilizza delle griglie di
routing, chiamate P-Grid, che permettono di gestire le comunicazioni dei nodi
mantenendo la struttura scalabile e distribuita. Le operazioni ammesse in questa
griglia sono la ricerca di chiavi e l'inserimento di valori associati a chiavi
particolari.
L'idea di base è di fare in modo che i valori di fiducia vengano inseriti in più copie
(repliche) in questa struttura ed estratti per effettuare delle valutazioni statistiche
sulla reputazione di qualche agente. Il modello non è mai stato implementato.
Free Heaven
Free Heaven [11] È un sistema di condivisione risorse anonimo e distribuito che
cerca di garantire la libertà di espressione degli individui. Il modello adotta una
definizione di fiducia, necessaria per stabilire delle connessioni sicure: ogni nodo
infatti, afferma di garantire un certo comportamento, verificato nel tempo. La
reputazione di ogni nodo viene così determinata dalla serietà con la quale vengono
mantenuti gli impegni presi, facilmente verificabili, essendo misurabili in termini di
persistenza di file. Ogni nodo infatti deve dichiarare, nel momento in cui accetta di
mantenere una chiave, il tempo per il quale è disposto a farlo. Questa chiave viene
periodicamente controllata, per verificarne la presenza. Free Heaven non ha
sviluppato una metrica particolarmente interessante né tantomeno portabile ad altri
ambienti, essendo molto semplice verificare l'integrità di ogni nodo. Da questo fatto
deriva che i meccanismi di propagazione della fiducia sono minimali. Del resto
l'obiettivo del modello è di garantire persistenza dei file in modo anonimo e non si
47
____________________________________________________________________
pone come risultato da perseguire la valutazione della fiducia di ogni nodo, essendo
questa funzionale soltanto alla correttezza di un comportamento gestito
internamente.
FOAF
Il progetto FOAF [12]costituisce un interessante esperimento, il tentativo di
costruire un vocabolario comune per lo sviluppo di comunità online, legate da un
clima di fiducia costruito (parzialmente o interamente) sulla Rete attraverso una
catena di relazioni. FOAF (Friend-of-a-Friend) è il nome-acronimo del personaggio
misterioso a cui capitano tutte le vicende raccontate nelle leggende metropolitane
di mezzo mondo; ma è anche il nome di un progetto (FOAF-project.org) di
semantic web che punta a creare una rete mondiale di amici-di-amici utilizzando un
vocabolario comune, un dialetto XML (o un vocabolario RDF) chiamato FOAF: a
essere codificati in formato standard sono dati personali e relazioni tra persone
(gruppi di persone, comunità, aziende).
In un file FOAF vengono inseriti la descrizione di un singolo e una lista di contatti
(friends): amici, collaboratori, colleghi, ecc. L'idea di fondo è quella che per cercare
una persona si possa fare come nella vita di tutti i giorni, muovendosi tra le
conoscenze: questa persona ha collaborato con un amico con cui ho lavorato, per
cui potrebbe interessarmi contattarlo... Il tutto si basa su un file di metadati RDF
legato ad una pagina personale, che oltre a specificare dati e caratteristiche della
persona, permette di ricostruire un elenco di altre pagine e dei relativi metadati (la
rete di amici). Per generare automaticamente la propria descrizione in formato
FOAF è sufficiente compilare i campi presenti in un apposito servizio di FOAF-amatic. Il progetto FOAF mira a costruire nuove opportunità di sviluppo per le
comunità online. E dal punto di vista del Web Trust garantisce una trasparenza del
percorso di individui e gruppi di individui, favorendo una crescita di credibilità e
fiducia nelle relazioni interpersonali sviluppate sulla Rete.
Si cerca di usare il Web per creare spazi in cui le persone sono interconnesse in una
sorta di grande mappatura, che possa coinvolgerle già a partire dal semplice
contatto, giungendo fino ai rapporti di amicizia più stretti. Del resto, l'inventore
dell'acronimo FOAF, lo studioso di folclore americano Jan Harold Brunvald,
riteneva che l'analisi della diffusione di una leggenda metropolitana permettesse di
studiare come gruppi sociali o comunità differenti comunicassero tra loro: una
leggenda che ha origine, per esempio tra gli studenti dei licei, può successivamente
diffondersi in ambienti completamente diversi, come quello delle casalinghe.
Conoscere il "percorso" che una determinata leggenda ha seguito da una comunità
all'altra può aiutarci a comprendere la natura dei loro rapporti
Uno studio:P2PRep [13]
In Gnutella, ogni server ha associato un identificativo (ServentID) che viene
comunicato agli altri durante l'invio di messaggi QueryHit, come stabilito dal
protocollo. L’approccio proposto richiede la persistenza degli identificativi dal
momento che è l'unico modo per mantenere la storia di un servent nell'arco di tutte
48
____________________________________________________________________
le sue transazioni. La persistenza di un ServentID non influisce sull'anonimato
dell'utente dal momento che si comporta come uno pseudonimo opaco e non è
associato in modo inequivocabile a nomi o indirizzi IP. La persistenza di un
ServentID non influisce sull'anonimato dell'utente dal momento che si comporta
come uno pseudonimo opaco e non è associato in modo inequivocabile a nomi o
indirizzi IP.
In un ambiente tipo Gnutella un servent p che desideri cercare una risorsa genera un
messaggio broadcast (Query) e seleziona dalla lista di coloro che rispondono (che
chiameremo offerenti) un nodo al quale si connetterà per prelevare i file scelti. La
scelta tipicamente viene effettuata sulla base del nome della risorsa, della velocità à
dichiarata, ed eventualmente da dati aggiunti dall'implementazione (come ad
esempio quelli definiti dall'estensione BearShare che permettono di selezionare
nodi che abbiano effettivamente disponibilità di accettare nuove connessioni) e
della dimensione. Si noti che non c'è alcuno strumento per valutare a priori la
qualità di una risorsa. In certi casi, risulta ragionevole scegliere la risorsa più
comune in rete, nell'ipotesi evoluzionista che venga più facilmente distribuita la
versione qualitativamente superiore. Inoltre, qualora la transazione non dovesse
terminare in modo corretto, sarebbe sempre possibile proseguire lo scaricamento del
file da un altro servent.
Purtroppo questa tecnica palliativa non offre reali garanzie, e la quantità di file privi
di senso con nomi allettanti distribuiti in rete ne è la dimostrazione.
L’approccio, chiamato P2PRep, permette ad un servent p di chiedere alla comunità
quale sia la reputazione di altri servent, tramite la spedizione di un messaggio
broadcast (Poll) che esprime la volontà di indire una votazione. L'idea fondamentale
è la seguente: ogni servent, una volta ottenuto un insieme di risposte ad una Query
seleziona un sottoinsieme degli offerenti e genera un messaggio broadcast diretto a
tutta la comunità, per ottenere informazioni sulla loro reputazione. Tutti i nodi
riceventi possono rispondere esprimendo le loro opinioni, costruitesi nel tempo e
con l'esperienza diretta, dando a p la possibilità di effettuare un miglior
raffinamento della scelta iniziale e ridurre i rischi legati alle transazioni.
Sono stati presentati due tipi diversi di protocollo, una versione base e una
avanzata. La versione base assume che i votanti non dichiarino la loro identità. La
versione avanzata richiede che ciascun voto sia accompagnato da un identificativo
del servent votante, così da poter valutare la credibilità del votante. In effetti, con
questo secondo meccanismo è possibile attribuire un peso differente ai voti, sulla
base della credibilità stessa dei votanti. Naturalmente, essendo la qualità di un
server non necessariamente correlata alla sua abilità di fornire delle indicazioni
utili, si parlerà di due tipi di esperienze differenti: la reputazione vera e propria
legata alla distribuzione delle risorse, e la credibilità, che riflette l'abilità di un nodo
di esprimere giudizi utili e veritieri.
Il protocollo viene leggermente complicato dal fatto che è necessario aggiungere
delle condizioni per ridurre le possibilità di violazioni. Per ridurre la vulnerabilità
ad attacchi, è prevista la possibilità di effettuare dei controlli sull'identità dei votanti
tramite connessioni dirette.
Per riuscire ad ottenere la sicurezza sufficiente, è necessario utilizzare in modo
massiccio la crittografia asimmetrica, così da riuscire a garantire l'integrità dei
pacchetti (firma digitale) e la confidenzialità (crittazione). A questo scopo, il
49
____________________________________________________________________
protocollo richiede infatti che l'identificativo di servent sia funzione della chiave
pubblica di una coppia di chiavi persistente. In questo modo è possibile controllare
l'identità di un servent verificando la sua conoscenza della chiave privata associata
in modo indissolubile all'identificativo.
La chiave pubblica, che può essere resa nota tramite messaggio QueryHit, può
essere utilizzata infatti per crittare una sequenza casuale di dati, decrittabile soltanto
dal possessore della rispettiva chiave privata.
Ad ogni votazione, viene generata un'altra coppia di chiavi, in modo da
massimizzare laddove possibile l'anonimato e rendere complesso risalire alle
votazioni indette da un determinato servent.
2.3 Il problema della computazione del trust
Esistono due problemi fondamentali per la gestione delle informazioni di trust su
metadati: come raccoglierli e come aggregarli. La raccolta dei dati può essere
effettuata sia in modo implicito che esplicito, atttraverso cioè la registrazione di
votazioni consapevoli dell’utente o attraverso l’interpretazione delle azioni
dell’utente(ad esempio se ha cliccato o no su di un link, se è rimasto per un certo
tempo su di una risorsa...).
Una volta che sono stati ottenuti questi valori occorre decidere quale aggregazione
utilizzare. Prima di tutto occorre considerare che tipo di sistema stiamo osservando,
cioè se si tratta di un sistema con utenti anonimi o autenticati. Nel primo caso ogni
comportamento degli utenti contribuisce allo stesso modo per il calcolo di un unico
valore totale di trust; nel secondo caso le votazioni devono essere aggregate
secondo il livello dell’utente(il ruolo e le conoscenze ad esso legate ad esempio) e
successivamente a livello globale.
Nel nostro progetto gli utenti sono autenticati e tipizzati a seconda del loro ruolo,
questo fa si che ci siano diversi livello di trust associati a seconda delle conoscenze
dell’utente, il trust sarà quindi maggiormente influenzato dagli utenti con un trust di
ruolo con valori elevati.
Esistono diversi principi per computare il trust e la reputation:
Somma o media dei voti
Si tratta semplicemente di voti positivi e negativi separatamente, calcolando un
punteggio totale come il punteggio positivo meno quello negativo.
Modelli Bayesiani
Prende input (0,1) e calcola punteggi in base a procedimenti statistici sommando
punteggi a priori e a posteriori.
Modelli discreti
Trust espresso con valori non numerici: Very Trustworthy, Trustworthy,
Untrustworthy and Very Untrustworthy.Non computabili, hanno significati vago.
50
____________________________________________________________________
Modelli di fiducia
Sempre legati alla statistica ma la somma totale delle probabilità non è 1, cioè si dà
spazio ad eventuali situazioni di incertezza.
Modelli Fuzzy
Rappresentazione in concetti linguistici dove alcune funzioni descrivono a quale
grado un soggetto può essere definito affidabile o non affidabile.
Modelli di Flusso
Ottenuti valori da iterazioni di loop di link o da lunghe sequenze di link.
51
____________________________________________________________________
Capitolo 3.
Il progetto: Simulazione dell'evoluzione del
Trust all'interno di una comunità di utenti
3.1.
Obbiettivi del progetto
Il modello che è stato creato ha l’obiettivo di definire una simulazione che emuli
l’interazione tra utenti di una piattaforma di knowledge management.
La simulazione ha l’obiettivo di evidenziare l’evoluzione della conoscenza
organizzativa nel tempo a partire dall’accesso alla base documentale, fondato sulla
discriminazione del profilo di conoscenza dei componenti l’organizzazione (gli
utenti del sistema).
Questo modello si colloca nel contesto del Trust Manager, meglio descritto nel
documento Adding a Trust Layer to Metadata Generators[19]. In breve il Trust
Manager è un sistema che aggrega asserzioni prodotte da diversi client (ogni client
produce asserzioni con relativo valore di trust) e le fornisce ad un navigatore con il
valore di trust aggregato.
I client producono asserzioni con un valore di trust correlato, questo valore di trust
dipende da una descrizione del ruolo dell’utente che sta producendo tali asserzioni.
La descrizione del ruolo contiene in pratica i concetti per i quali l’utente è dichiarato
esperto.
Una volta che le asserzioni sono fornite ad un navigatore con il loro valore di trust
finale (ottenuto dall’aggregazione dei voti provenienti dai client) il navigatore può
ordinare le risposte alle query degli utenti in base al valore di trust delle asserzioni.
Gli utenti del navigatore possono a loro volta consultare la base di asserzioni (tramite
delle query al navigatore) e implicitamente giudicare la bontà della risposta attraverso
il loro comportamento (uso o non uso dei documenti correlati alle asserzioni prodotte
come risposta). Questi voti impliciti degli utenti del navigatore sono a loro volta
ricevuti e valutati dal trust manager ed aggregati per produrre un nuovo valore di trust
delle asserzioni.
52
____________________________________________________________________
3.2. Il modello
La base di conoscenza dell’organizzazione è descritta semanticamente rispetto ad
una ontologia (o tassonomia) di dominio che descrive sia il contenuto semantico dei
documenti veri ei propri sia il profilo di conoscenza degli utenti del sistema in
esame. In questo modello non si terrà conto delle modalità di realizzazione di questa
indicizzazione.
Il risultato deve essere comunque la descrizione degli utenti e della base
documentale rispetto alla stessa ontologia, questo al fine di poter misurare una
distanza semantica tra gli utenti e le asserzioni disponibili che descrivono la base
documentale.
La misura della distanza semantica dovrà basarsi su principi e algoritmi specifici e
comunque non saranno discussi in questo documento. Il modello che si intende
realizzare è indipendente dalla misura realizzata, ma questa è un input fondamentale.
L’interazione di cui si vuole tenere traccia è l’espressione di un voto di correttezza
che l’utente può esprimere rispetto alle asserzioni semantiche presenti nella base di
conoscenza. Sostanzialmente l’utente dovrebbe avere un sistema di ricerca
semantica, quindi un’applicazione che gli permetta di esprimere la sua soddisfazione
(si/no) sulla correttezza della asserzione semantica trovata (si intende l’asserzione
semantica che lega il documento al concetto dell’ontologia). In questo modo sarà
possibile individuare la componente della base di conoscenza più efficacemente
rappresentata e strutturata, e la sua evoluzione nel tempo dipendentemente
dall’evoluzione dell’insieme degli utenti.
Sottolineiamo che il maggior interesse di questa lavoro di ricerca si concentra sul
formalismo per descrivere gli utenti. Modelli per studiare l’evoluzione delle idee
sono già stati proposti. Tuttavia in questi modelli la descrizione del comportamento
degli utenti è sicuramente semplicistica (generalmente la probabilità che si convinca
di una idea). Questi modelli non si incontrano con la ricchezza descrittiva utilizzata
per caratterizzare gli utenti nella letteratura della teoria dell’ organizzazione e delle
reti sociali.
Il nostro primo obiettivo è perciò quello di definire un formalismo di descrizione
degli utenti più ricco e flessibile.
3.2.1 Formalismo di descrizione degli utenti
La prima soluzione ipotizzata è quella di descrivere un utente come un automa a
stati finiti. Questa soluzione è probabilmente insufficiente per descrivere gli utenti.
Ci si aspetta infatti che in letteratura gli utenti vengano descritti anche in base alle
iterazioni che hanno con gli altri utenti. Questo formalismo non considera che
l’azione di un utente possa influenzare quella degli altri. È tuttavia un buon inizio
sul quale vale la pena lavorare con un primo lavoro di tesi che ci permetta di
53
____________________________________________________________________
esplorare le soluzioni implementative per realizzare applicazioni basate su un
formalismo di descrizione degli utenti.
Automi a stati finiti
Secondo questo formalismo, un utente è descritto in base agli stati in cui si situa
durante la sua attività lavorativa. Ogni stato è relativo ad un’attività differente. Nel
nostro esempio esistono tre stati: Ricerca, Stesura e Riflessione. In fase di ricerca
l’utente naviga le asserzioni e legge i documenti ad esse correlati. In fase di stesura
l’utente produce asserzioni.
Figura 3.1: I tre stati dell'attività di un utente
La figura 1 mostra i tre stati dell’attività di un utente. Ogni stato è collegato con altri
tramite una freccia, ad ogni freccia è associata la probabilità che l’utente ha di
passare da uno stato all’altro. Questa probabilità dipende dal tempo trascorso, come
è mostrato qui sotto:
Ricerca => Ricerca = P = P0(-T ricerca)
Ricerca => Stesura = P = P1(T ricerca)
In fase di Riflessione l’utente non compie alcuna azione. In fase di Stesura e di
Ricerca è necessario applicare delle ulteriori funzioni per capire su quali asserzioni
l’utente andrà ad agire.
Esistono due funzioni: Acesso f(d) e Correttezza g(d). La funzione f(d) individua
su quali asserzioni viene compita un azione. Nel caso della Stesura l’azione sarà
scrivere asserzioni; nel caso della Ricerca l’azione corrisponderà alla navigazione
delle asserzioni, e alla lettura dei documenti correlati. La funzione g(d) individua la
correttezza dell’azione prodotta; nel caso della Stesura la correttezza dell’asserzione
rispetto alla realtà, nel caso della Ricerca la correttezza del voto che l’utente
esprime sull’asserzione. Vi è poi da considerare un tempo di delay, che descrive la
velocità con cui un utente cambia stato, rappresenta cioè quanto un utente è attivo(a
livello di produzione e consultazione delle asserzioni).
54
____________________________________________________________________
3.2.2 La funzione “accesso” alla base documentale: f(d).
Ogni utente accede solamente ad una parte della base documentale. I motivi che
producono questo fenomeno sono molteplici:
1-la competenza dell’utente è un elemento che limita naturalmente la sua interazione
con la base documentale, un esperto di agenti software produrrà, ricercherà e
accederà con maggiore frequenza documenti relativi allo sviluppo di codice che non
a documenti relativi alle tematiche, ad esempio, del turismo;
2- il ruolo di un utente, che guida la crescita professionale, determina la tipologia di
documenti: un project manager sarà principalmente interessato a documenti
riguardanti la generalità dei progetti piuttosto che a documenti riguardanti lo
sviluppo di singole attività o task.
È indispensabile quindi introdurre una funzione1 che descriva la probabilità di
accesso alla base documentale in funzione della distanza concettuale. La dipendenza
dalla distanza semantica permette di avere una funzione che sia indipendente
dall’individuale competenza, essendo questa rappresentata nella distanza semantica
tra l’utente e la base di conoscenza. È pur vero che la misura di evoluzione di
conoscenza organizzativa si baserà (si veda successivamente) sull’accesso alla base
documentale, dipenderà quindi dalla capacità interattiva del singolo utente (dal
numero di ricerche effettuate, o meglio, dal numero di voti relativi alla bontà delle
asserzioni presenti nella base di conoscenza), tuttavia questo aspetto non è
attualmente modellizzabile. Il modello quindi conterrà utenti che interagiscono
equivalentemente alla base di conoscenza.
In
Figura 3.2 una rappresentazione possibile della probabilità di accesso alle asserzioni
in funzione della distanza semantica tra il profilo dell’utente e l’asserzione stessa. La
forma indica questo possibile comportamento: l’utente interagisce principalmente
con le asserzioni più vicine a lui, tuttavia ha una probabilità diversa da zero di
accedere anche ad asserzioni distanti dal suo profilo.
1
La funzione esprime la probabilità nell’unità di tempo. Quest’osservazione vale per tutte le funzioni di probabilità
introdotte.
55
____________________________________________________________________
Figura 3.2: probabilità di accesso
Il passo successivo è la costruzione di un insieme ordinato di asserzioni semantiche,
ordinate rispetto alla distanza semantica dall’utente.
In figura 3.3 è schematizzato il seguente processo: ad ogni utente è associato un
profilo, rispetto a questo specifico profilo si costruisce l’insieme costituito da una
serie di insiemi di asserzioni, ognuno di questi contiene le asserzioni che
corrispondono alla fissata distanza semantica dall’utente.
Figura 3.3: profilo utente ed asserzioni prodotte
Avendo le asserzioni che si trovano alla distanza d dal profilo dell’utente, e quindi
anche il loro numero, è possibile quantificare il numero di accessi, e quindi di voti2,
che l’utente specifico effettua in quell’insieme:
2
Si sta supponendo che ad ogni accesso corrisponda un voto che definisca la bontà o meno dell’asserzione, se
questo non fosse vero sarebbe sufficiente aggiungere una funzione che esprima la probabilità di esprimere un
voto all’accesso. Anche questa funzione potrebbe dipendere dalla distanza concettuale, in quanto è
ragionevole supporre che all’aumentare della distanza la disponibilità di esprimere un voto diminuisca. Il
modello comunque risulterebbe scalato per questa funzione.
56
____________________________________________________________________
N(di) = J(di)* f(di)
3.2.3 Funzione di “correttezza” del voto espresso: g(d).
Ad ogni voto espresso dagli utenti corrisponde anche una probabilità di giustezza,
ovvero la probabilità che il voto sia giusto (chiaramente la probabilità che sia
sbagliato è il complementare di questo rispetto ad 1). La probabilità di correttezza
dipende giustamente dalla distanza concettuale. In figura è rappresentata una
possibile funzione che rappresenti questa probabilità. Come si vede la funzione ha
valori alti per distanze basse, e valori bassi, diversi da zero, anche per valori di
distanza concettuale alta. Questa funzione g(d) dovrebbe essere indipendente
dall’utente (si assume costante il comportamento).
Figura 3.4: la funzione di correttezza del giudizio
Il numero di voti corretti sarà espresso dal prodotto tra il numero di voti espressi
N(di) e la probabilità di voto corretto g(di):
C(di) = N(di) * g(di) = J(di)* f(di) * g(di)
3.2.4 Scelta della funzione statistica: la gaussiana
La curva cosiddetta normale venne sviluppata nel 1733 da DeMoivre, come
un'approssimazione alla distribuzione binomiale. I suoi scritti vennero persi fino al
1924, quando Karl Pearson li ritrovò. Laplace utilizzò la curva normale nel 1783 per
descrivere la distribuzione degli errori. Nel 1809, Gauss la impiegò nell'analisi di
dati astronomici. La curva normale viene spesso chiamata "distribuzione gaussiana",
anche se più precisamente dovrebbe essere citata come "distribuzione di GaussLaPlace".
La normale è la distribuzione statistica più famosa ed utilizzata. Le tre ragioni
principali sono: essa si adatta bene alla rappresentazione grafica di molti fenomeni
fisici, biologi, sociali, ecc.
57
____________________________________________________________________
si adatta bene alla rappresentazione grafica di molti fenomeni fisici,
biologi, sociali, ecc.;
• è fondamentale in inferenza statistica;
• è una conseguenza del teorema centrale limite.
•
La formula matematica che descrive la funzione della densità di probabilità normale
è la seguente:
dove µ e σ rappresentano la popolazione media e lo scarto quadratico medio (o
deviazione standard). L'equazione della funzione di densità è costruita in modo tale
che l'area sottesa alla curva rappresenti la probabilità. Perciò, l'area totale è uguale a
1.
Figura 3.5: La gaussiana
Per la Gaussiana, nell’intervallo entro le due deviazioni standard che si trovano attorno
alla media (tra >-? e >+?) abbiamo il 68,3% della massa della distribuzione, entro le 4
deviazioni standard (tra >-2? e >+2?) abbiamo il 95,4 % e entro le sei deviazioni
standard (tra >-3? e >+3?) abbiamo il 99,7%. Questa è detta legge 3 sigma.
58
____________________________________________________________________
3.2.5 Schema del modello per la simulazione
Il modello della simulazione si basa sul presupposto di dover emulare i
comportamenti di utenti o gruppi di essi che si muovono ed interagiscono all’interno
di un sistema di knoweledge management eseguendo determinate azioni dipendenti
dal loro ruolo.
I soggetti di queste azioni sono gli user, raggruppati in usergroup che rappresentano
sottoinsiemi di utenti dalle caratteristiche comuni, all’interno di una popolazione più
vasta. Ogni usergroup ha un determinato ruolo e comportamenti (schema). Le azioni
che possono essere eseguite sono caratterizzate da un behaviour, che è il
comportamento che uno user può assumere in quegli stati. L’insieme degli stati è
definito da una macchina a stati finiti che ne descrive le relazioni.
Uno usergroup si muove all’interno di una macchina a stati finiti a seconda di uno
schema, che è un “filtro” che sovrapposto alla macchina a stati finiti descrive come
passare da uno stato ad un altro.
<Schema name="ruolo1" state_diagram="http://
XMLDatabase\treeStateDiagram.xml">
<ArcValues>
<State name="creation">
<Arc destination="research" value="0.3" />
<Arc destination="creation" value="0.4" />
<Arc destination="wait" value="0.3" />
</State>
<State name="research">
<Arc destination="research" value="0.2" />
<Arc destination="creation" value="0.6" />
<Arc destination="wait" value="0.2" />
</State>
<State name="wait">
<Arc destination="research" value="0.3" />
<Arc destination="creation" value="0.4" />
<Arc destination="wait" value="0.3" />
</State>
</ArcValues>
<Rules />
</Schema>
Esempio di schema
Usergroup con lo stesso diagramma di stati finiti possono avere invece schemi
diversi.
Al fine della simulazione tutti questi componenti sono riorganizzati all’interno di un
project che contiene tutti i parametri per effettuare la simulazione vera e propria.
Definiamo ora uno per uno i componenti della simulazione:
1- Macchina a stati finiti
Rappresenta il contenitore degli stati e degli archi (grafo). Ogni stato ha un nome ed
è legato ad un behaviour.
59
____________________________________________________________________
<StateDiagram name="wait-write-read">
<State name="creation">
<Behaviour name="Behaviour_Writer" />
<Arc destination="research" />
<Arc destination="creation" />
<Arc destination="wait" />
</State>
<State name="wait">
<Behaviour name="Behaviour" />
<Arc destination="research" />
<Arc destination="creation" />
<Arc destination="wait" />
</State>
<State name="research">
<Behaviour name="Behaviour_Evaluator" />
<Arc destination="research" />
<Arc destination="creation" />
<Arc destination="wait" />
</State>
</StateDiagram>
2- Il behaviour è la serie di azioni che un soggetto compie quando si trova in un
certo stato.
3- Usergroup per definirlo sono necessari:una macchina a stati finiti che caratterizza
le azioni che possono compiere gli utenti, lo schema che rappresenta come muoversi
tra gli stati, il ruolo che rappresenta la visione che ha lo usergroup della concept list.
Esempio usergroup
<usergroup name="usergoup2" delay="5000" type="registered">
<state_machine url="http://XMLDatabase\treeStateDiagram.xml" />
<schema url=" http://XMLDatabase\Schema_Ruolo1.xml" />
<user number="3" />
<role url=" http://XMLDatabase\XMLDatabase\esperto reti.xml" />
</usergroup>
60
____________________________________________________________________
4- Il ruolo definisce i concetti con relativo valore di trust, specifici per un
determinato tipo di utente.
Esempio ruolo
<?xml version="1.0" encoding="ISO-8859-1"?>
<role name = "hardware expert" >
<concept_list name = "conceptList1" namespace = "http://
XMLDatabase\conceptList1.cpl" />
<trust value = "0.8">
<concept name
<concept name
<concept name
<concept name
<concept name
<concept name
<concept name
<concept name
<concept name
</trust>
<trust value = "0.5">
<concept name
<concept name
<concept name
<concept name
<concept name
</trust>
<trust value = "0.1">
<concept name
<concept name
<concept name
<concept name
<concept name
</trust>
</role>
=
=
=
=
=
=
=
=
=
"video card hardware" />
"mouse hardware" />
"hard-disk hardware" />
"hard-disk controller" />
"memory hardware" />
"overheating" />
"power supply" />
"ram malfunction" />
"cluster" />
=
=
=
=
=
"video drivers" />
"mouse driver" />
"cd/dvd controller" />
"cd/dvd driver" />
"bios malfunction" />
=
=
=
=
=
"security" />
"network configuration" />
"virus" />
"O.S. corrupted" />
"software not compatible" />
5- Gli usergroup raggruppano gli user secondo caratteristiche comuni (stesso
schema, state machine, delay, e tipo user registrato) e hanno la forma xml seguente:
Esempio usergroup
<?xml version="1.0" encoding="ISO-8859-1"?>
<usergroup name="hardware expert" delay="1000" type="registered">
<state_machine url="http:\\XMLDatabase\Computer tecnical
support\wait_write_read.std" />
<schema url="http:\\XMLDatabase\Computer tecnical
support\generic_schema.scm" />
<user number="4" />
<role url="http:\\XMLDatabase\Computer tecnical support\hardware
expert.rl" />
</usergroup>
61
____________________________________________________________________
Il project raccoglie tutte le informazioni necessarie alla simulazione. Per effettuare la
simulazione vera e propria è necessario il comando Run Simulation.
Prima della simulazione è necessario impostare alcuni parametri quali:
-tempo di aggregazione che stabilisce ogni quanti secondi avviene il procedimento
di aggregazione.
-firma stabilisce se gli utenti possono firmare le asserzioni create o lette, impedendo
che lo stesso utente possa più volte valutare una asserzione. Rende il sistema chiuso,
dopo il voto di tutti gli users il sistema rimane fermo, a meno della presenza di utenti
anonimi che continuerebbero a votare in quanto sprovvisti di firma.
-aging stabilisce se fare invecchiare le asserzioni non votate da tempo
-discard prende in considerazione il fatto che un utente potrebbe scartare delle
asserzioni (uno pseudo voto negativo).
-pesato
-non pesato
Il progetto viene salvato in un file xml dalla forma seguente
Esempio di progetto
<?xml version="1.0" encoding="ISO-8859-1"?>
<project name="Computer technical support"
conceptList_Url="http:\\XMLDatabase\Computer tecnical
support\Computer tecnical support.cpl">
<userGroups trustAnonUser="0.0">
<userGroup url="http:\\XMLDatabase\Computer tecnical
support\generical technicians Usergroup.usg" />
<userGroup url="http:\\XMLDatabase\Computer tecnical
support\hardware expert Usergroup.usg" />
<userGroup url="http:\\XMLDatabase\Computer tecnical
support\network expert Usergroup.usg" />
<userGroup url="http:\\XMLDatabase\Computer tecnical
support\software expert Usergroup.usg" />
</userGroups>
</project>
3.3. Simulazione
3.3.1 Definizione e scopi
Per simulazione si intende un modello della realtà che consente di valutare e
prevedere lo svolgersi dinamico di una serie di eventi susseguenti all'imposizione di
certe condizioni da parte dell'analista o dell'utente. Un simulatore di volo, ad
esempio, consente di prevedere il comportamento dell'aeromobile a fronte delle sue
caratteristiche e dei comandi del pilota.
62
____________________________________________________________________
Le simulazioni sono uno strumento sperimentale molto potente e si avvalgono delle
possibilità di calcolo offerte dall'informatica; la simulazione, infatti, non è altro che
la trasposizione in termini logico-matematica-procedurali di un "modello
concettuale" della realtà; tale modello concettuale può essere definito come l'insieme
di processi che hanno luogo nel sistema valutato e il cui insieme permette di
comprendere le logiche di funzionamento del sistema stesso.
Una simulazione viene utilizzata per:
- Generazione di una storia artificiale del sistema
- Studio e valutazione delle caratteristiche del sistema (analisi delle prestazioni)
- Risposta alla domanda “cosa accade se…”
- Progetto: analisi di sistemi “ipotetici”
- Confronto tra due o più sistemi
- Ottimizzazione: determinare valore ottimale di parametri
- Determinare i punti critici (bottlenecks)
- Capacity planning
- Previsionale: predire le prestazioni del sistema nel futuro
La simulazione è utile nel caso in cui il sistema non esista ancora(non posso usare
benchmarks), o per valutare sistemi diversi nelle stesse condizioni(stabilite appunto
dalla simulazione), permette di valutare eventi rari o rischiosi ed infine può
permettere una buona accuratezza.
I vantaggi di una simulazione di un sistema sono:
• Test di sistemi prima di investire sulle strutture
• Possibilità di espansione e compressione del tempo simulato
• Possibilità di capire le cause di eventi
• Esplorare e valutare nuove politiche di gestione
• Diagnosi di problemi
• Identificazione di requisiti
• Comprensione del sistema
Purtroppo ci sono anche degli svantaggi:
• Costo: costruzione dei modelli lunga e non banale
• Interpretazione dei risultati lunga e complessa
• Vengono in aiuto
– Simulatori (primitive e strutture dati)
– Ambienti di simulazione (che includono strumenti per l’analisi dell’output)
Prima di effettuare la simulazione è necessario creare un modello. Definiamo ora
alcuni concetti fondamentali per la comprensione di una simulazione:
• Sistema: collezione di componenti (elementi, entità) interdipendenti che
interagiscono fra loro in accordo a specifiche predefinite.
• Creazione di un modello: rappresentazione del sistema
63
____________________________________________________________________
• Obbiettivo: studio del comportamento del sistema e delle relazioni fra le sue
componenti.
• Processo di creazione ed uso del modello:
1. Definizione
2. Parametrizzazione
3. Valutazione
È inoltre necessario definire il livello di astrazione del modello(livello di dettaglio di
rappresentazione) e definire degli obbiettivi.
È norma utilizzare modelli semplici e facilmente risolubili specie nelle prime fasi di
progetto di sistema.
Come costruire il modello?
La costruzione di un modello di sistema può essere una rappresentazione astratta
oppure una formalizzazione di osservazioni empiriche.
Con il modello è possibile organizzare le conoscenze, comprendere al meglio i
componenti e le loro relazioni per approfondire e facilitare l’analisi del sistema.
Occorre prevedere una certa modificabilità del modello, indispensabile in fase di
progetto e per venire incontro a possibili necessità di valutare alternative, per questo
possono essere impiegati diversi modelli a seconda degli obiettivi prefissi.
Per costituire un modello è necessario astrarre il sistema reale definendone le
caratteristiche, la complessità/semplicità, la fedeltà, il tipo di tempo simulato.
Ogni sistema simulato ha delle caratteristiche quali:
–Variabili di stato del sistema:che descrivono lo stato del sistema al tempo
(simulato) t, e al livello di definizione sufficiente per l’analisi. Queste permettono di
interrompere e riprendere la simulazione.
– Evento è un cambiamento nello stato del sistema che avviene in un certo istante t
Un evento può essere di tipo endogeno (riguarda variabili interne al modello)
oppure esogeno (riguarda variabili esterne al modello).
– Entità sono oggetti esplicitamente definiti nel modello, possono essere dinamici
(es. clienti) o statici (es. server).Possono competere per ottenere le risorse ed essere
accodati nelle corrispondenti code di attesa
– Attributi sono valori locali delle entità
-Risorse sono entità che forniscono servizi passivi o attivi ad entità dinamiche (che
possono richiedere una o più unità della risorsa). Le risorse richieste, se occupate,
possono determinare un’attesa in coda oppure possono fornire servizi in parallelo
(server parallelo).
– Liste sono strutture usate per implementare code, possono essere mantenute
ordinate, secondo i valori di attributi per ragioni di efficienza
64
____________________________________________________________________
– Attività periodo di tempo di durata pre-determinata caratterizzato da attività in
corso, ovvero collezione di operazioni che trasforma lo stato di una componente.
Nella simulazione a eventi discreti (DES) le attività fanno avanzare il tempo
simulato t. Può essere caratterizzata da distribuzione statistica.
– Ritardo (delay) Durata indefinita di un’attività, legata alle condizioni e
all’evoluzione del sistema (attesa).
3.3.2 Modelli formali
I modelli formali possono essere di diversi tipi:
1–Modelli a tempo continuo/discreto
Il tempo continuo (continuous-time model) rappresenta lo stato del sistema definito
sempre in ogni istante t, il tempo discreto (discrete-time model), invece, lo stato del
sistema definito in istanti di tempo discreti: t, t+1…
2–Modelli a stato continuo/discreto
I modelli a stato stato continuo (continuous-state o –event model) utilizzano variabili
di stato continue (Es. livello del liquido in un bacino idrico) e possono essere
approssimati da modelli a eventi discreti.
I modelli a stato discreto (discrete-state o -event model) utilizzano variabili di stato
discrete e cambiano valori in corrispondenza di eventi discreti (Es. numero di
persone in attesa alla posta).
3–Modello deterministico/probabilistico
Per modello deterministico intendiamo che esiste una dipendenza deterministica
output(input k)= x, per quello probabilistico abbiamo almeno una variabile casuale
output(input k)= x1, x2, x3…
4–Modello statico/dinamico
Nei modelli statici lo stato del sistema non dipende dal tempo, in quelli dianamici lo
stato (o almeno una variabile di stato) dipende dal tempo.
5–Modello lineare/non lineare
Un modello lineare ha un output che segue una forma lineare del tipo output(x)=
k*x, quello non lineare ha una forma del tipo output(x) ¹ k*x.
6–Modello aperto/chiuso
In un modello chiuso non esistono variabili esterne, es. nuovi job non entrano o
escono dal sistema, in quello aperto esistono variabili esterne, es. esistono “source”
e “sink” per i job.
7–Modello stabile/instabile
65
____________________________________________________________________
Un modello stabile ha un comportamento che converge allo stato stazionario, uno
instabile ha un comportamento che cambia continuamente.
I possibili modelli del sistema:
• Modello matematico, statistico e di input/output
–Descrivono input e output del sistema attraverso relazioni matematiche o statistiche
• Modello descrittivo
• Modello di simulazione a eventi discreti
–Rappresentazione dettagliata della struttura interna del modello.
3.3.3 Tipi di simulazione
-Emulazione: simulazione che coinvolge componenti del sistema hw e firmware
es. emulatore di terminale hw, emulatore di processore: emula un instruction set di
un altro processore.
–MonteCarlo simulation: non esiste o non è rilevante l’asse del tempo. Viene
utilizzata per modellare fenomeni che non cambiano nel tempo e richiede
generazione di numeri pseudo-casuali, può anche valutare espressioni non
probabilistiche.
- Trace-driven simulation: si tratta di una simulazione basata su una sequenza di
eventi ordinati per tempo registrati dal sistema reale (traccia).
Una trace-driven simulation risulta credibile, perchè non basata su ipotesi e
distribuzioni di input, con essa è possibile fare una buona analisi di sensitività in
quanto ci sono minori variabilità (varianza minore) che permettono una stima più
accurata e/o veloce.
Gli svantaggi riguardano la complessità del modello, che risulta maggiore (di solito),
in oltre è difficile ricavare una traccia rappresentativa dei carichi possibili
(soprattutto per sistemi diversi e molto dinamici). La traccia può essere lunga e
legata alla situazione in cui è registrata, problema della scelta della parte di traccia
da utilizzare, inoltre occorrono tracce diverse per ogni diverso carico (workload).
-Discrete-event simulation (DES): è una simulazione che usa un modello del
sistema a tempo discreto. È l’opposto di continuous-event simulation, può essere
basata su stato continuo o discreto. Le variabili di stato cambiano solo in
corrispondenza ad eventi discreti, determinati a loro volta da attività e ritardi.
3.3.3.1 Il Tempo
Di fondamentale importanza per l’avanzamento dello stato del sistema è la quantità
tempo.
Il tempo simulato può essere:
– reale: tempo del sistema da simulare
– simulato: tempo rappresentato nel modello (clock : variabile del modello il cui
valore è il tempo simulato corrente)
– di esecuzione : tempo di elaborazione del programma di simulazione
66
____________________________________________________________________
I meccanismi di avanzamento del tempo in simulazione possono essere:
– per intervalli fissi (unit-time): si incrementa il clock di una quantità fissa D e si
esamina il sistema per determinare gli eventi che devono aver luogo per i quali si
effettuano le necessarie trasformazioni. Questo approccio tratta tutti gli eventi con
tempo di occorrenza. In questo tipo di avanzamento eventi con diversi tempi di
occorrenza possono essere trattati come eventi simultanei.
– per eventi (event-driven): si incrementa il clock fino al tempo di occorrenza del
prossimo (primo) evento. Gli incrementi possono risultare irregolari, posso
considerare come simultanei eventi che hanno lo stesso tempo di occorrenza.
3.3.4 Strutture di modelli di simulazione
Esistono essenzialmente quattro metodologie:
-Simulazione per Interazione tra Processi
Il flusso di esecuzione di un processo in esecuzione emula il flusso di un oggetto
(entità) attraverso il sistema . L’esecuzione procede finché il flusso non viene
bloccato, ritardato, terminato o inizia una nuova attività . Quando il flusso di
un’entità viene bloccato, il tempo di simulazione avanza al tempo di inizio previsto
dalla prima successiva entità in esecuzione.
-Simulazione per scheduling di eventi
Si avanza il tempo simulato al tempo del prossimo evento successivo (di solito il
termine o l’inizio di un’attività). Si ha una lista ordinata di eventi e scheduler di
eventi. Il termine di un’attività coincide con la nuova allocazione di risorse rilasciate
tra le entità in attesa o con lo scheduling di nuove attività casualmente determinate.
Lo scheduler di eventi mantiene struttura di lista ordinata per tempo simulato
(multi-linked) di eventi futuri (schedulati, cancellati, rinviati, bloccati), gestisce
l’avanzamento del tempo simulato.
La routine di evento aggiorna le variabili di stato e aggiorna la lista di eventi
(inserisce, cancella, o rinvia eventi).La routine di inizializzazione definisce lo stato
iniziale del sistema, le sequenze dei numeri pseudo-casuali, ecc.
Esistono poi altre routine quali: routine di gestione degli eventi, report generator,
routine di trace, procedure per notificare eventi o stime a run-time, gestione
dinamica della memoria e garbage collection.
67
____________________________________________________________________
3.3.5 Pianificazione della simulazione
Primo passo necessario è la formulazione del problema, occorre quindi definire e
verificare la corretta e completa formulazione del problema attraverso un dialogo tra
cliente e analista.
Importante è anche la definizione delle assunzioni delle specifiche e delle definizioni
del sistema adottate.
Primo passo necessario è la definizione degli obiettivi, si procede quindi alla
preparazione di una proposta per definire gli obiettivi, le risposte attese dalla
simulazione, gli scenari oggetto di indagine, i tempi necessari, le risorse necessarie, i
costi e infine le fasi dell’analisi.
Si procede poi con l’astrazione del modello concettuale che definisce relazioni
logiche, matematiche e causali delle componenti e strutture del sistema. Occorre
decidere il livello di astrazione del modello, definire componenti, attributi,
caratteristiche funzionali, relazioni.
Un’altra fase importante è la raccolta dei dati, utile per caratterizzare il carico
(workload characterization), analizzare e indagaree sui dati che caratterizzano il
modello, stabilire le discipline di accesso e servizio, definire i tempi medi di
permanenza, attesa e servizio.
Il quarto passo è la codifica del modello, il modello concettuale ottenuto viene
codificato in una forma interpretabile dal calcolatore, ottenendo un modello
operazionale. Le tecniche di codifica possono avere diversi approcci quali: objectoriented, simulazione distribuita, ambienti di simulazione.
Si passa quindi alla verifica e validazione del modello, più in particolare è la
verifica della correttezza del modello operazionale (soluzione) del modello, la
convalida del modello concettuale come adeguata rappresentazione del sistema o la
convalida della adeguatezza di: modello, obbiettivi, risultati
Il sesto passo è il progetto degli esperimenti di simulazione che prevede la
lunghezza della simulazione, il numero di prove, la simulazione a termine o
stazionaria e gli esperimenti pilota.
Si passa infine all’esecuzione ed all’analisi dei dati ed alla stesura della
documentazione.
Per completare il tutto si effettua una analisi di sensitività che definisce la scelta del
metodo di analisi, gli intervalli di confidenza e stimatori, l’interpretazione dei
risultati e l’analisi comparativa.
3.4 Ingegnerizzazione
Aspetto fondamentale del progetto è il collegamento con il tool Semantic Navigator
e con il tool T.A.M (Truted assertion maker). La simulazione ottenuta infatti dal
modello creato servirà a testare e verificare l’evoluzione del trust all’interno di un
sistema.
68
____________________________________________________________________
Requisiti:
-Deve permettere di modellizzare il comportamento di un utente(o un gruppo di
utenti) in base al ruolo.
-Deve utilizzare una funzione di verità.
-Deve permettere di impostare il numero di utenti da simulare.
-Deve permettere di creare gruppi di utenti caratterizzati dal ruolo o da altre
caratteristiche comuni.
-Deve avere una interfaccia GUI per permettere di effettuare una simulazione
complessa in modo semplice.
-Lo stesso utente non si puo trovare in più di uno stato contemporaneamente.
-In base ad una certa probabilità l’utende cambia stato.
-Deve simulare le scritture di asserzioni degli utenti.
-Deve simulare la lettura delle asserzioni ed il conseguente voto degli utenti.
-Deve simulare tempi di delay o wait in cui l’utente è inattivo.
-Dovrebbe utilizzare tecnologie indipendenti e opensource.
-Deve utilizzare uno schema XML che rappresenta gruppi di utenti ed un relativo
schema.
-Deve produrre dati utili.
-Deve utilizzare XML.
-Deve avere una guida per l’utente
-Deve prendere in considerazione il concetto di “distanza” tra i concetti su cui
l’utente si esprime ed i concetti a lui congeniali a seconda del suo ruolo (expertise).
69
____________________________________________________________________
CASI D’USO
Figura 3.6: Casi d’uso
Il Caso d’uso di figura 3.6 rappresenta le azioni necessarie per la creazione di un
progetto.
Un utente può:
-creare un nuovo progetto(new project) significa aggiungere gli usergroup già
esistenti(implica che siano caricabili da file), settare la concept list alla quale i ruoli
dovranno fare riferimento.
-creare un nuovo usergroup(new usergroup) significa settare il numero degli user
con le stesse caratteristiche, settare la state machine ed il relativo schema, settare il
ruolo e il delay, cioè la velocità con cui ogni user cambia stato dopo aver eseguito
una certa azione.
-creare uno schema(new schema) significa creare una corrispondenza con una state
machine e definire i valori di probabilità per il cambiamento di stato.
-caricare un progetto(load project) , uno schema o uno usergroup esistente
significa visualizzarlo nelle sue caratteristiche e dare la possibilità all’utente di
modificarlo.
-caricare uno usergroup(load usergroup), già creato in precedenza.
70
____________________________________________________________________
-il save as e il save permettono all’ utente di salvare su file il project, usergroup o
schema correnti.
Gli stati in cui i soggetti della simulazione possono trovarsi sono rappresentati da
una o più macchine a stati finiti, che possono differire anche nel numero e nel tipo di
stato in cui possono trovarsi.
Per descrivere le probabilità di accesso tra uno stato e l'altro, si sovrappone alla
macchina a stati finiti un filtro Schema, caratteristico di un certo gruppo di
soggetti.(quindi più gruppi di soggetti possono condividere la stessa macchina a stati
finiti, ma differire nello schema di probabilità).
La creazione della popolazione di soggetti è gestita a gruppi con caratteristiche
simili, come gli stati e i comportamenti da eseguire in quegli stati, schema, e visione
del mondo descritta da un Ruolo. La visione del mondo rappresenterebbe qual è il
loro punto di vista sull' insieme delle degli oggetti su cui possono operare (nel caso
specifico della nostra simulazione, la conoscenza è relativa al rapporto trust-concetto
ontologico).
Una volta lanciata la simulazione, ogni soggetto, si muove negli stati eseguendo un
behaviour previsto dallo stato, (per esempio può trattarsi di produzione di un
asserzione, e un altro soggetto trovarsi nella valutazione dell' asserzione).
Il sistema riguardante la selezione del concetto da utilizzare per produrre l ‘
asserzione o per giudicarne una, è relativo a quelle curve decisionali di cui abbiamo
discusso nel nostro incontro, per la precisone si utilizza un generatore di numeri
pseudo casuali con caratteristiche di distribuzione normale (più in particolare una
mezza gaussiana) dove verso la media , si concentra la maggioranza delle scelte che
ci aspettiamo da quel tipo di soggetto(concetti più vicini al suo ruolo , concetti con
trust più alto).
Può essere salvato un progetto di simulazione intero per poter ripetere la
simulazione già impostata. Spiegando meglio: io posso,dati una certa popolazione e
comportamenti, ottenere risultati diversi, a seconda del seme che utilizzo, che nel
caso generale è l'istante in cui viene lanciata la simulazione, altri parametri che
potrebbero cambiare il risultato della simulazione sono ad esempio le impostazioni
dei parametri quali l’uso o meno della firma, l’invecchiamento delle asserzioni ecc.
Il modello scelto per ora non prevede perturbative derivanti da interazioni di tipo
“sociale”, in quanto il modello diventerebbe ancora più complesso.
Occorre comunque riportare le possibili implicazioni di “interferenze” che si
potrebbero creare all’interno di una comunità di utenti:
Se venisse resa pubblica l’identità di colui che ha creato l’asserzione si potrebbero
avere ripercussioni sul comportamento degli utenti. Ci saranno infatti degli utenti
che supporteranno le idee del creatore dell’asserzione in quanto lo conoscono
personalmente, hanno simpatie per il soggetto o ricordano esperienze positive
precedenti a lui collegate(si può arrivare alla situazione in cui difenderebbero a
spada tratta le idee di un certo soggetto senza valutarne la veridicità). All’opposto ci
può essere una schiera di detrattori che vorranno, di proposito abbassare il trust
dell’asserzione di un certo soggetto perché non lo conoscono, hanno avuto
71
____________________________________________________________________
precedenti esperienze negative con il soggetto o per semplice antipatia nei suoi
confronti. Queste perturbative nella realtà possono esserci ed essere molto forti,
tanto da poter falsare il valore di veridicità del sistema intero.
Consideriamo ora ambienti P2P in cui vengano utilizzati meccanismi come FOAF. Il
progetto FOAF costituisce un interessante esperimento, il tentativo di costruire un
vocabolario comune per lo sviluppo di comunità online, legate da un clima di fiducia
costruito (parzialmente o interamente) sulla Rete attraverso una catena di relazioni.
In un file FOAF vengono inseriti la descrizione di un singolo e una lista di contatti
(friends) : amici, collaboratori, colleghi, ecc. L'idea di fondo è quella che per cercare
una persona si possa fare come nella vita di tutti i giorni, muovendosi tra le
conoscenze: questa persona ha collaborato con un amico con cui ho lavorato, per cui
potrebbe interessarmi contattarlo... Il tutto si basa su un file di metadati RDF legato
ad una pagina personale, che oltre a specificare dati e caratteristiche della persona,
permette di ricostruire un elenco di altre pagine e dei relativi metadati (la rete di
amici). Con questo meccanismo gli utenti possono quindi scambiarsi opinioni sulle
asserzioni chiedendo alla rete dei soggetti un parere sulla veridicità. Da questo si
può capire che tipo di relazioni ed interdipendenze complesse possono crearsi
all’interno di una comunità di utenti che devono esprimersi sulla veridicità di una
asserzione basandosi sulle esperienze di altri soggetto della rete.
Il linguaggio scelto per sviluppare il tool è Java, indipendente dalla piattaforma su
cui dovrà funzionare, altro linguaggio utilizzato per la costituzione dei componenti è
XML.
72
____________________________________________________________________
3.4.1 Scelta delle tecnologie
3.4.1.1 Java
Java è un linguaggio di programmazione sviluppato dalla Sun Microsystem.
Inizialmente progettato come linguaggio per programmare elettrodomestici
"intelligenti" come, ad esempio, i videoregistratori, dal 1995, anno della sua uscita,
ha suscitato un'interesse crescente che a tutt'oggi non accenna a diminuire, grazie ad
un insieme di caratteristiche, che adesso analizzerò, che lo pongono ai massimi
livelli fra gli strumenti di programmazione, per la rete e non solo.
Proprietà di Java
Java è stato definito un'evoluzione del C++. Del resto, quest'ultimo linguaggio è
stato preso come modello per lo sviluppo di Java, analizzandone pregi e difetti, al
fine di ereditare i primi eliminando gli ultimi. Questo però non basta a spiegare il
successo di Java e l'interesse suscitato pressoché in ogni campo di applicazione, da
quello scientifico a quello aziendale.
Java ha il merito di possedere sinergicamente diverse caratteristiche positive, alcune
ereditate dai linguaggi considerati migliori (non solo dal C++), altre introdotte ex
novo:
•
•
•
•
•
Possiede un ambiente di programmazione object oriented
E' un linguaggio multipiattaforma ed indipendente dal processore
E' multithreaded
E' dinamico e adotta la garbage collection
E' verificabile
Ambiente di programmazione object oriented
L'idea di fondo della programmazione orientata agli oggetti è basata sulla logica di
sviluppare l'applicazione tramite oggetti abilitati a comunicare l'un l'altro sfruttando
particolari meccanismi. Un oggetto permette di incapsulare dati e metodi che
agiscono sui dati. Tali metodi possono essere invocati anche automaticamente, in
funzione del verificarsi di particolari eventi. Ad esempio, un controllo di input, un
bottone, può essere implementato come oggetto. Fra le proprietà di questo oggetto ci
sarà il colore, la dimensione, la posizione all'interno del form che lo contiene, la
stringa di caratteri contenente il messaggio informativo ('Ok', 'Esci', 'Annulla', ecc.),
fra i metodi, quello per abilitare/disabilitare il bottone e quello per renderlo
visibile/invisibile, fra gli eventi, quelli collegati al click sopra il bottone col tasto
destro del mouse, al click col tasto sinistro, al solo passaggio sopra con il mouse. Gli
oggetti sono raggruppati in un insieme, che prende il nome di classe. Per continuare
73
____________________________________________________________________
con l'esempio, tipicamente un oggetto bottone apparterrà alla classe dei controlli di
I/O video, assieme agli oggetti menu, etichetta, campo di input, ecc.
Assieme alle classi, nella programmazione orientata agli oggetti si hanno le
superclassi e le sottoclassi. La classe dei controlli, ad esempio può avere come
superclasse quella di tutti i controlli del sistema, che includono oltre ai controlli di
I/O, anche i form, i dialog, gli altri tipi di finestre, ecc. Come sottoclasse può avere
quella dei controlli particolari di una versione passata del sistema (come avviene per
i controlli in ambiente Windows, che esistono nella versione a 16 bit per Windows
3.1 ed in quella a 32 bit per Windows 95). La caratteristica di tutti gli oggetti
appartenenti ad una classe è di ereditare metodi, proprietà ed eventi della
superclasse che li contiene.
Java è un linguaggio completamente orientato agli oggetti.
Un programma Java è un insieme di classi, appartenenti alla "Java class library", e
programmare in Java significa principalmente saper utilizzare le classi esistenti e
saperne scrivere di nuove. I vantaggi di un simile ambiente di programmazione sono
essenzialmente quelli della riduzione e del riciclo del codice.
Linguaggio multipiattaforma ed indipendente dal processore
I programmi, o applet, Java una volta scritti, vengono compilati in bytecode, un
livello intermedio tra il codice macchina nativo del processore (che ovviamente
varia al variare di questo), ed il sorgente Java. Il vantaggio principale derivante da
questa traduzione è insito nella sua indipendenza dal processore, che permette di
eseguire il codice così com'è su qualsiasi macchina che disponga dell'interprete Java,
senza la necessità di ricompilarlo (come avviene invece con linguaggi come il C++,
il Delphi o altri comunemente usati). In un ambiente eterogeneo come Internet, in
cui comunicano ed interagiscono macchine diverse, dotate di processori e sistemi
operativi differenti, tale caratteristica si traduce nella possibilità di eseguire lo stesso
codice Java ovunque, giacché tutti i browser più diffusi dispongono dell'interprete.
Linguaggio multithreaded
Gli attuali sistemi operativi sono detti multitasking, in quanto sono capaci di
eseguire più processi (task) contemporaneamente. Quello che avviene, a meno che
non si disponga fisicamente di un sistema multiprocessore, è che il sistema simula
l'esecuzione contemporanea di più processi suddividendoli in quanti di tempo
piccolissimi ed eseguendo questi ultimi in modo da alternare, in maniera
estremamente rapida, l'esecuzione ora di un processo ora di un altro. Tale alternanza
di processi sul processore non è casuale, bensì risponde a precise politiche di
gestione dei processi, caratterizzati da priorità diverse e soggetti a possibili
interruzioni straordinarie. Java rende possibile agire attivamente su tali politiche
gestendo le unità di base a cui il sistema operativo alloca il tempo di CPU,
denominate thread, specificandone le priorità e gestendone la sincronizzazione.
Linguaggio dinamico
74
____________________________________________________________________
Essendo Java un linguaggio object oriented, deve sostanzialmente manipolare un
insieme di oggetti. Dal punto di vista della gestione della memoria questo pone
diversi problemi, primo fra tutti, quello relativo agli sprechi di memoria dovuti alla
presenza di oggetti inutilizzati. Java risolve questo problema gestendo la memoria in
maniera dinamica. Quando un programma viene lanciato, viene reperita la memoria
libera per instanziare gli oggetti. Durante l'esecuzione tali oggetti vengono creati e
distrutti, occupando e liberando dinamicamente la memoria necessaria per ogni
singolo oggetto, così da avere, in ogni momento, occupate solo le risorse
effettivamente utilizzate dal sistema.
Una simile gestione era già possibile in linguaggi come il C++, ma comportava un
ruolo attivo da parte del programmatore, che doveva effettuarla manualmente
inserendo nel codice le opportune istruzioni e, pertanto, mantenendo traccia di tutti
gli oggetti attivi in un dato momento dell'esecuzione. L'automatismo introdotto da
Java diventa ancora più apprezzabile con programmi complicati e di una certa
dimensione, dove le possibilità di commettere errori aumentano.
Per allocare dinamicamente la memoria Java utilizza due metodi di garbage
collection:
•
•
Compaction
Marking & sweeping
Compaction identifica una tecnica di deframmentazione della memoria, volta cioè
ad eliminare la presenza di piccole quantità di memoria libera sparse qua e là,
compattandole in un'unica area contigua.
Marking & Sweeping, identifica un processo ricorsivo atto a marcare gli oggetti in
uso al fine di poterli distinguere da quelli inutilizzati, che così possono essere
eliminati.
La garbage collection era già stata introdotta da linguaggi come lo Smalltalk ed il
Lisp. Questi imponevano al sistema di bloccare il processo ad intervalli di tempo
prestabiliti, al fine di consentire il controllo e l'applicazione della tecnica. La natura
multithread di Java ha permesso di evolverla, spostando l'esecuzione dei controlli e
delle azioni da compiere su un thread diverso e con priorità inferiore a quello
dell'applicazione vera e propria, realizzando quella forma di parallelismo descritta
precedentemente ed evitando così di bloccare il processo.
3.4.1.2 XML
Già descritto nel capitolo 1 riportiamo ora glia aspetti positivi del linguaggio.
Per la sua natura ibrida, che rende i documenti simili a database, XML è sempre
più usato per gestire basi di dati e per trasmettere informazioni tra diverse
applicazioni.
75
____________________________________________________________________
Un database può essere visto come un insieme di oggetti che contengono le
informazioni e le funzioni necessarie alla loro gestione; in particolare, conterrà
tabelle di dati e query per estrarle. I programmi che usano queste informazioni
aggiungono funzionalità utili alla modifica e alla consultazione dei dati da parte
dell’utente finale. Una tabella, a sua volta, suddivide le informazioni in unità
chiamate record, ciascuna delle quali è composta da un certo numero di campi. Ogni
campo contiene un’unità indivisibile di informazione, la cui natura (tipo, lunghezza
e via dicendo) è determinata a priori secondo una precisa struttura ed è valida per
tutti i record.
Con XML (Extensibile Markup Language), invece si usa un approccio differente.
XML è nato per rappresentare i documenti in forma elettronica e dispone di un
meccanismo efficiente per descrivere il contenuto di un testo; è in grado di includere
al proprio interno informazioni di altro tipo, come file multimediali, che però
resteranno nel loro formato originale.
Per quanto sia possibile definire con precisione il contenuto logico del documento,
attraverso una definizione di tipo di documento (DTD) o uno schema XML, nulla
vieta di farne a meno, se il file che si crea rispetta le regole fondamentali di XML. Il
testo è racchiuso all’interno di elementi che possono ripetersi con regolarità,
ricreando lo schema classico della griglia di una tabella di database, o contenere una
serie di informazioni che si susseguono con una struttura ad albero in un ordine
apparentemente casuale, ma in realtà guidato dalla logica dell’applicazione che lo
deve gestire. La caratteristica di XML grazie alla quale possiamo trattare un
documento come una tabella di database è che ogni suo elemento descrive il proprio
contenuto, che si usi o meno una DTD o uno schema. Grazie a questa
autodescrizione è possibile localizzare al suo interno ogni singolo elemento che ci
interessa, esaminarne il contenuto, elaborarlo ed eventualmente formattare il
risultato dell’elaborazione per la presentazione a video e/o a stampa.
Rispetto a un database tradizionale, XML offre qualcosa in più e qualcosa in meno.
Esso ha, per esempio, la possibilità di fare riferimento a fonti di informazione
esterne: si possono costruire documenti prendendo dei pezzi ora da una sorgente ora
da un’altra e ricombinarli secondo le necessità. Non si tratta di una semplice
operazione di copia e incolla: ogni cambiamento nella sorgente si riflette nel
documento che la usa. È già notevole la quantità di utilizzi offerta da questa
caratteristica; se poi si pensa che la sorgente non deve essere necessariamente un
altro documento XML, ma potrebbe trattarsi di un database o un’applicazione che
genera in tempo reale le informazioni, si capisce la grande potenza di questa tecnica.
Purtroppo, la potenza genera complessità; per questo motivo, di solito, questa
tecnica viene usata con attenzione. La conversione di documenti XML è
un’operazione molto semplice, grazie a un linguaggio collegato chiamato XSL che
definisce i fogli stile da applicare al documento. Grazie a XSL, formattare i dati
estratti da un documento XML per presentarli all’utente può essere molto più
semplice dell’analoga operazione compiuta su una tabella di database;
sfortunatamente, nel caso di estrazioni complesse, il procedimento risulta
significativamente più lento.
76
____________________________________________________________________
XML è un valido supporto ai database e rispetto alle visioni tradizionali consente di
realizzare architetture semplificate sia concettualmente sia tecnicamente. Opera
indifferentemente sia con basi di dati strutturate sia con insiemi di documenti non
strutturati, evitando l’uso di protocolli o convenzioni. Il fatto che molti database
inizino a fornire il supporto per XML significa che ormai si deve considerare la
tecnologia matura per ogni genere di applicazione e che il valore delle realizzazioni
basate su XML non decrescerà nel tempo; al contrario, sono sempre più numerosi i
campi di applicazione in cui questa tecnologia ha già dato buoni frutti. Inoltre,
permette di trattare i dati sotto differenti aspetti, aumentando la loro flessibilità e, di
conseguenza, il loro valore.
XML nel middleware
Sempre più vendor includono nei loro prodotti il supporto a XML; questo non
riguarda solo le suite di office automation, ma anche i database. Ci si potrebbe
stupire di questa scelta poiché, come abbiamo visto, XML è in una certa misura
alternativo ai DB strutturati in modo tradizionale; tuttavia accade sempre più spesso
di vederlo usato come vettore di informazioni tra applicazioni. Nel campo del
middleware, infatti, XML offre grande versatilità e semplifica le comunicazioni. Si
immagini di avere la necessità di trasferire dei dati estratti dall’applicazione A
all’applicazione B. Normalmente si deve mettere mano al codice di almeno una delle
due applicazioni, creare la procedura di estrazione dei dati da A e, se possibile,
inserirli nella base di dati di B; questo comporta lo studio delle applicazioni e delle
loro basi di dati. Sebbene concettualmente semplici, queste operazioni causano
spesso seri problemi nella pratica, soprattutto quando le applicazioni sono state
sviluppate da due team diversi o la loro documentazione non è sufficiente; quando
girano su due sistemi operativi diversi, i problemi aumentano ancora. XML aiuta a
prevenire almeno una parte di questi problemi: infatti, sarà sufficiente che ogni
programma possieda una funzione di esportazione dei dati in XML e una di
importazione. Entrambe le operazioni devono valere per documenti XML formattati
secondo una o più DTD pubbliche. Il lavoro di conversione e quindi la necessità di
conoscere i formati usati dalle applicazioni è lasciato a una terza applicazione, che
normalmente è disegnata come un plug-in, da creare di volta in volta secondo le
necessità.
XML e i documenti
XML dimostra una buona potenza anche nel trattamento di basi di dati non
strutturate; per esempio, quelle relative a documenti di testo che quotidiani, riviste e
in genere società editrici accumulano nel tempo sotto forma di archivi elettronici. E’
possibile dare un nuovo valore a queste informazioni, scomponendole (pur
conservando l’unità logica del documento) in parti riutilizzabili e di facile
manutenzione. Questi concetti sembreranno quasi banali a quanti, soprattutto nel
campo dell’editoria, usano abitualmente SGML, da cui XML discende, ma usando
quest’ultimo la gestione delle informazioni risulta ulteriormente semplificata.
Naturalmente questi vantaggi non si applicano solo all’editoria, ma a tutte le realtà
che producono documentazioni voluminose. Strutturare con XML i documenti
77
____________________________________________________________________
richiesti dalle norme di qualità ISO, per esempio, consente di trasformare un’attività
di certificazione nella creazione di informazione.
Manuali più o meno complessi possono essere aggiornati e tradotti con efficienza e
possono anche offrire i propri paragrafi ad altri manuali. Inoltre, XML permette di
creare indifferentemente versioni cartacee o elettroniche dei documenti senza
necessità di riformattarli, con un notevole risparmio di costi e di tempo rispetto agli
attuali processi di pubblicazione. XML è usato con interesse sempre maggiore su
Web, dove l’abitudine di suddividere i dati in tanti piccoli file HTML non permette
di svolgere agevolmente molte operazioni, come la stampa o la ricerca. A prezzo di
un tempo d’attesa iniziale più lungo, con XML è possibile trasferire sul browser un
documento e poi mostrarlo in base alla strategia di accesso e all’impostazione
grafica; è facile poi creare differenti percorsi di consultazione. In questo caso trattare
i documenti come una base di dati consente di realizzare con facilità operazioni
altrimenti complesse, come le ricerche all’interno del testo, la creazione di
segnalibri, la stampa e via dicendo. In generale, questa architettura ha impieghi
molto vasti; può essere adottata per esempio anche dalle applicazioni client/server
che vogliono migrare verso un’interfaccia Web.
3.4.2 Scelta dell’interfaccia
L’interfaccia scelta per il tool è di tipo GUI(in inglese Graphical User Interface,
abbrev. GUI) e mira a consentire all'utente di interagire col tool manipolando
graficamente degli oggetti, svincolandolo dal dover imparare una serie di comandi
da impartire con la tastiera.
La forma di GUI scelta è a pannelli, che permette all’utente di definire i parametri
necessari alla simulazione. E’ inoltre possibile caricare progetti già preimpostati per
generare immediatamente una simulazione senza preoccuparsi di impostare alcun
parametro.
3.5. Aggregatore del trust
3.5.1 Definizione e proprietà degli aggregatori
In una situazione abbastanza informale, il problema della aggregazione consiste in
aggregare tuple ennarie di oggetti tutti appartenenti ad un set determinato, in un
singolo oggetto dello stesso tipo. Nel caso di operatore di aggregazione matematica
questo set è l’insieme dei numeri reali. In questo caso, un operatore di aggregazione
è semplicemente una funzione, che assegna un numero reale ad una tupla ennaria
(x1,x2,…xn) di elementi:
78
____________________________________________________________________
Per chiamare tale operatore aggregatore esso deve soddisfare delle proprietà.
PROPRIETA’ MATEMATICHE
1-Condizioni limite: nel caso peggiore e migliore ci aspettiamo che una
aggregazione:
La prima significa che se osserviamo una tupla con risulatati completamente
negativi, falsi o non soddisfacenti il risultato aggregato sarà ancora completamente
negativo, falso o non soddisfacente.
La seconda al contrario significa che osserviamo una tupla con risulatati
completamente positivi, veri o soddisfacenti il risultato aggregato sarà ancora
completamente positivo, vero o soddisfacente.
2-Monotonicità: ci aspettiamo che se un argomento della tupla aumenta allora anche
il valore finale aggregato cresca(o almeno non diminuisca, rimanendo uguale).
3-Continuità: la funzione di aggregazione è continua rispetto ad ognuna delle
variabili che la compone. Questa proprietà garantisce che la funzione sia robusta,
consistente e non caotica.
4-Associatività: una proprietà interessante è la capacità di aggregare per gruppi. Ci
aspettiamo che la scelta del gruppo non influenzi il risultato finale. Per tre argomenti
ad esempio si può scrivere:
5-Simmetria: conosciuta come proprietà commutativa,. L’ordine degli argomenti
non influenza il risultato. Questa proprietà è sottointesa quando l’aggregazione è
fatta di argomenti con la stessa importanza. Per ogni permutazione σ of {1,2, … , n
} l’operatore soddisfa:
6-Elemento assorbente: se l’operatore di aggregazione ha un elemento assorbente a,
allora può essere usato come voto di eliminazione o veto:
79
____________________________________________________________________
7-Elemento neutro: se l’operatore di aggregazione ha un elemento neutro e, allora
può essere usato come argomento che non dovrebbe avere alcuna influenza
sull’aggregazione:
8-Idempotenza: conosciuta come unanimità o accordo. Se aggreghiamo n volte lo
stesso valore ci aspettiamo di ritrovare il valore iniziale:
9-Compensazione: conosciuta anche come regola di Pareto. Ci aspettiamo che il
risultato totale della aggregazione sia più basso del valore massimo aggregato e più
alto del valore minimo aggregato:
10-Controbilanciamento: chiamiamo controbilanciamento o compensazione il
comportamento di un operatore che decresce il valore finale se ci sono argomenti
che vanno nella direzione opposta:
11-Rafforzamento: con questa proprietà vogliamo indicare che un insieme di
punteggi alti si rinforzano tra loro dando un risultato più affermativo che quello che
darebbero tanti voti individuali da soli. Allo stesso modo un insieme di voti bassi ha
la tendenza a dare un risultato molto più negativo che tanti voti singoli negativi.
12-Invarianza: quando aggreghiamo numeri (x1,x2, …,xn) che rappresentano misure
di un certo tipo dobbiamo specificare la scala in cui queste misure vengono fatte.
Vogliamo quindi che la funzione di aggregazione rispetti quindi la scala data.
Avremo quindi:
PROPRIETA’ COMPORTAMENTALI
1-Comportamento decisionale: è utile avere la possibilità di esprimere il
comportamento della necessità di prendere decisioni di un certo tipo. Per esempio:
tollerante, ottimistico, pessimistico o restrittivo.
2- Interoperabilità dei parametri: è auspicabile che i parametri abbiano per lo più la
stessa interpretazione semantica. Questa proprietà proibisce l’utilizzo della
metodologia black box.
80
____________________________________________________________________
3- Pesi sugli argomenti: è cruciale avere la possibilità di esprimere pesi sugli
argomenti. Questo può essere spiegato come attribuzione di privilegi ad alcuni di
essi.
3.5.2 Operatori di aggregazione
La media aritmetica
La statistica ci fornisce diversi concetti di media e, quella che spesso si definisce
"tradizionale" è la media aritmetica. Si consideri una serie di n termini x1, x2, ..., xn,
la media aritmetica,
simboli:
, è data dalla somma dei termini diviso il loro numero; in
Questo operatore è interessante perchè produce un valore aggregato che è inferiore
al valore più grande e superiore al valore più piccolo. Così il risultato
dell’aggregazione è un valore centrale. Questa proprietà è conosciuta come
compensazione. La media gode delle proprietà monotonicità, continuità, simmetria,
associatività e idempotenza ma non ha né elemento neutro né assorbente e non ha
proprietà comportamentali.
La media pesata
Quando i valori xi, (i = 1, ..., n) non hanno tutti la stessa importanza (lo stesso
"peso") la media aritmetica semplice viene sostituita dalla media pesata (o media
ponderata), cioè da quella media che considera ogni singolo valore in relazione al
suo "peso"(come indicato sotto con w).
La mediana
La mediana è un indice di posizione e si definisce come quel valore che bipartisce la
distribuzione ordinata in senso non decrescente delle modalità di un carattere. Per
cui al primo gruppo apparterranno le osservazioni inferiori o uguali alla mediana, al
secondo gruppo le osservazioni superiori o uguali alla stessa.
Minimo e Massimo
81
____________________________________________________________________
Anche il minimo ed il massimo sono operatori di aggregazione base. Il minimo dà il
valore più piccolo del set mentre il massimo dà il più alto valore del set. Essi non
danno un valore “di mezzo” ma possono essere veramente significativi in diversi
contesti. Questi aggregatori hanno le proprietà monotona, simmetrica, associativa,
idempotente.
Media geometrica
Media geometrica o proporzionale. Dati n numeri a1,a2,a3,…an si chiama loro
media geometrica il numero:
Ci si può facilmente convincere che, dati due numeri distinti, la loro media
geometrica è minore della loro media aritmetica.
Infatti:
Media armonica
La media armonica
è ... il reciproco della media aritmetica dei reciproci.
Particolarmente utile per qualche tipo di variabili come ad esempio per calcolare la
velocità media lungo un percorso.
OWA (Ordered Weighted Average)
Gli operatori di media ordinata pesata sono stati introdotti da Yager [20] per fornire
un mezzo di aggregazione di voti associati alla soddisfazione, permettendo di
utilizzare criteri multipli.
Dove σ è una permutazione che ordina gli elementi: x σ(1)≤ x
sono tutti non negativi (wi≥0) e la loro somma è uguale ad 1.
σ(2)
≤…≤
x σ(n).
I pesi
82
____________________________________________________________________
Questo operatore è molto utile, grazie alla sua versatilità, ed è stato ulteriormente
sviluppato dando luogo a diverse famiglie parametrizzate di aggregatori ed include
ben noti aggregatori come: il massimo, il minimo, la mediana, la media aritmetica.
Per ottenere questi particolare operatori possiamo scegliere semplicemente
particolari pesi:
Tabella 3.1 : OWA
Gli operatori OWA sono commutative, monotoni, idempotenti ed hanno un
comportamento compensativo. Questa ultima proprietà traduce di fatto che
l’aggregazione fatta da un OWA è sempre tra il massimo ed il minimo.
In pratica un operatore OWA di dimensione n è una funzione F : Rn → R, che ha
associati n vettori.
con
e
Inoltre
Dove bj è il jesimo elemento più grande del bag <a1…..,an>
Per esempio assumiamo
allora
Un aspetto fondamentale di questo operatore è il passaggio di riordinamento, in
particolare un aggregato ai non è associato ad un particolare peso w i ma piuttosto un
peso è associato ad una particolare posizione ordinata dell’aggregato.
83
____________________________________________________________________
WOWA (Weighted Order Weighted Average)
L’operatore WOWA è una funzione di aggregazione che generalizza la media pesata
e l’operatore OWA. Per mezzo di due diversi vettori di pesi, l’operatore permette la
fusione di un dato set di valori numerici considerando sia l’importanza delle sorgenti
che hanno fornito i dati (come nella media pesata) ed il grado di compensazione o
differenza tra i valori grandi ed i valori piccoli (come nell’operatore OWA).
3.5.3 Aggregatori creati per la simulazione
Gli aggregatori creati per la simulazione sono:
Discard dà la possibilità di differenziare voti positivi da pseudo voti negativi
(asserzioni scartate). Questo nella prospettiva di avere un browser di asserzioni che
consente di eliminare da un elenco di asserzioni, restituite dopo un processo di
ricerca, alcuni risultati non ritenuti significativi.
Nel caso del discard si ha che le votazioni sia positive sia negative che avvengono
nel quanto di tempo di aggregazione vengono inserite in due code distinte.
Il calcolo per entrambe avviene secondo questa formula:
TotalWeight = ! Expertise RELEVANCE
Expertise RELEVANCE
Totalweight
AverageTrustComponent = ! Expertise " TrustWeight
TrustWeight =
Dove per Expertise intendiamo un valore (compreso tra 0 e 1) che rappresenta la
conoscenza di determinati concetti relativi al ruolo dell’utente e per Relevance
intendiamo un parametro settabile, dall’utente della simulazione, che rappresenta
quanto è rilevante (in misura esponenziale) l’expertise dell’utente simulato.
Si otterranno così valori compresi tra 0 e 1 per i voti positivi e tra 0 e -1 per quelli
pseudo-negativi. L’aggregazione finale avviene secondo questa formula:
A.T . =
(AvgTrustComponent + * PosVotes )+ (AvgTrustComponent ! * DiscVotes )
PosVotes + DiscVotes
Dove A.T. è Average Trust, AvgTrustComponent+/- è la media pesata dei voti
positivi/scartati, PosVotes e DiscVotes sono rispettivamente il numero di voti
positivi e di voti negativi dell’ultimo periodo di tempo prima dell’aggregazione.
L’A.T. verrà poi moltiplicata per un fattore di crescita compreso tra 0 e 1 settato in
fase di avvio della simulazione, che limita la possibile crescita o decrescita del
valore per ogni aggregazione.
FinalTrust = StartTrust + (A.T . ! GrowthFactor )
84
____________________________________________________________________
Aging prevede la possibilità di far “invecchiare” il valore delle asserzioni. Quando
le asserzioni non vengono votate da tempo questo meccanismo fa si che il loro
valore decresca gradualmente finché non vengono votate ancora almeno una volta.
La componente positiva dei voti è ottenuta in modo del tutto analogo a quella
dell’aggregatore Discard mentre la componente di invecchiamento viene ottenuta
seguendo questo ragionamento:
#E = ExpectedvalueT "10!T "1 " ExpectedvalueT "9!T 0
Se "E ! 0 allora il trust finale dell’asserzione deve essere:
FinalTrust = StartTrust + (!E * AgingFactor )
Dove per T-10 intendiamo il tempo dieci “istanti” fa T0 indichiamo questo
momento…ecc si ottiene cioè traslando di uno e aggiungendo il valore attuale.
In questo caso il valore deve essere fatto decrescere per il valore pari alla differenza
qui sopra, sempre moltiplicato per un fattore compreso tra 0 e 1(AgingFactor) che
stabilisce di quanto il trust può decrescere(ad esempio ho stabilito che al massimo
può invecchiare di uno 0,01).
Per entrambi gli aggregatori il tempo di aggregazione scandisce ogni quanto avviene
il calcolo del valore aggregato. É importante calibrare in modo corretto questo
valore per sincronizzarlo con quelli che sono i tempi di produzione degli utenti
(quanto sono attivi e reattivi).
Ad esempio, un tempo di aggregazione troppo breve rispetto all’attività dell’utente
fa sì che, nel caso dell’aging il valore invecchi troppo rapidamente (molti zero nel
valore atteso di voti), nel caso del discard non ci sarebbe molta differenza a parte
vedere meno voti nel quanto di tempo previsto dall’aggregazione (sarebbe come
vedere aggiornamento in tempo reale del valore di trust).
3.6. Progetti collegati
I progetti correlati sono tutti appartenenti al progetto KIWI (Knowledge-based
Innovation for the Web Infrastructure) i cui obiettivi sono:
mettere a punto le tecniche necessarie per ricavare interattivamente dalle
ontologie generali di dominio delle rappresentazioni personalizzate di spazi
concettuali "centrati sull'utente", cioè riferiti al ruolo e alla visione del mercato di
singoli e delle piccole organizzazioni, ed utilizzare queste rappresentazioni per
accedere ai dati attraverso concetti familiari all'utente, con granularità controllata;
•
le visioni locali della conoscenza di dominio saranno espresse attraverso profili
dinamici degli utenti, anch'essi rappresentati sotto forma di metadati basati su XML
•
85
____________________________________________________________________
e parametrizzati rispetto alle specifiche esigenze informative al momento
dell'accesso;
le viste personalizzate sui metadati RDF così ottenute saranno poi usate per
l'accesso navigazionale e cooperativo, basato sulla conoscenza, alle informazioni
Web da parte di utenti umani e di agenti software che usino protocolli "leggeri"
basati su XML come il Simple Object Access Protocol (SOAP), nonchè per
l'alimentazione di vari tipi di cruscotti di monitoraggio, sistemi di reporting e di
supporto alle decisioni. La personalizzazione delle ontologie di dominio sulla base
dei profili utente sarà inoltre utilizzata per permettere di esprimere e imporre
politiche di controllo dell'accesso innovative perchè basate sulla semantica dei dati,
cioè sui concetti usati per indicizzarli rispetto all'ontologia di dominio e alle viste
personalizzate calcolate su di essa.
•
86
____________________________________________________________________
Capitolo 4.
Il Simulatore in funzione
4.1. Interfaccia utente
L’interfaccia utente è stata pensata in modo da suddividere la simulazione in due
parti distinte: una rappresenta la creazione dei componenti del sistema da simulare
(entità statica), che verranno raggruppati in un “Project”, l’altra il run effettivo della
simulazione (entità dinamica).
4.1.1 Creazione dei componenti
Per componenti si intendono tutte le entità che interagiscono all’interno del sistema
da simulare.
4.1.1.1
Schema
Figura 4.1: Impostazioni dello schema
87
____________________________________________________________________
Lo schema rappresenta un “filtro” che sovrapposto alla macchina a stati finiti
descrive la probabilità, che un utente simulato ha, di muoversi tra gli stati della
macchina stessa. È quindi necessario definire una macchina a stati finiti (premendo
il bottone Set state Machine) per poter creare uno schema vuoto.
Successivamente, perché lo schema risulti valido, è necessario definire tutte le
probabilità dei cammini in uscita da ciascuno stato, ovviamente la somma delle
probabilità degli archi uscenti da un nodo è 1.
4.1.1.2
Usergroup
Figura 4.2: Schermata degli Usergroup
Lo usergroup è l’entità più importante in quanto descrive le caratteristiche che
definiscono il tipo di popolazione attiva nel sistema. Si vedrà nel capitolo 5 quanto
composizioni diverse di popolazione possano influire sul risultato della simulazione.
Uno Usergroup rappresenta un sottoinsieme della popolazione simulata con
caratteristiche uguali quali:
- Interest Variance rappresenta quanto l’utente simulato tende a scegliere concetti
in cui ha più expertise. Più il parametro tende a zero e più sceglierà concetti con
expertise alto, più si avvicina a 1 e più espanderà il suo interesse verso tutti i
concetti.
- User Delay è il valore che definisce la velocità, in milllisecondi, di interazione
dell’utente. Descrive ogni quanto tempo un utente simulato passerà da uno stato
ad un altro ed eseguire un’azione.
- User Type definisce se l’utente simulato è considerato conosciuto dal
sistema(registered) oppure è estreno al sistema(anonymous).
88
____________________________________________________________________
-
-
Treshold value definisce la “prudenza” dell’utente simulato. Sotto una certa
soglia di expertise l’utente decide di non esprimere giudizi sulle asserzioni. Più il
valore è alto, più l’utente è prudente nel valutare/scrivere le asserzioni (si astiene
dal giudizio di concetti con valori di expertise sotto il valore definito) e
viceversa.
Set State Machine definisce la macchina a stati finiti che rappresenta gli stati in
cui l’utente simulato si può trovare e le relative azioni.
Set Schema aggiunge lo schema che caratterizza come l’utente simulato si
muove tra gli stati. Deve essere completamente compatibile con la macchina a
stati finiti.
Set Group Role definisce le conoscenze degli utenti simulati riguardanti la
Concept List. Nel caso di un utente registrato, rappresenta la figura professionale
riconosciuta all’interno del sistema, nel caso dell’utente anonimo sono le
effettive conoscenze non certificate e non risconosciute dal sistema.
I parametri restanti definiscono il nome dello Usergroup ed il numero di utenti che
ne fanno parte.
4.1.1.3
Project
Figura 4.3: Definizione di un project
Il project raccoglie tutti i componenti necessari alla simulazione, inanzitutto la
Concept List (è l’insieme dei concetti che possono essere utilizzati nella creazione
delle asserzioni) sui cui si basano tutti i ruoli del progetto.
89
____________________________________________________________________
Anonymous users default expertise definisce come il sistema considera la
componente di expertise degli utenti anonimi.
Forced Treshold stabilisce un limite forzato di expertise al di sotto del quale la
creazione o votazione di asserzioni viene inibita.
Con Add, Remove ed Edit usergroup è possibile aggiungere, rimuovere ed editare
gli usergroup, questo è permesso se gli Usergroup hanno nomi diversi e se il ruolo è
compatibile con la Concept List.
4.1.2 Il Run della simulazione
4.1.2.1
Simulation Configuration
Figura 4.4: Configurazione della simulazione
Dopo avere creato e salvato il project è possibile lanciare la simulazione con il
comando Run. Prima di avviare la simulazione è necessario impostare alcuni
parametri di fondamentale importanza:
Aggregator config
- Type definisce il tipo di aggregatore(discard o aging) utilizzato per il calcolo del
trust.
- Use weighted positive vote stabilisce se pesare o no i voti positivi dati alle
asserzioni.
90
____________________________________________________________________
-
-
Use weighted discarded stabilisce se pesare o no i discard dati alle asserzioni.
Weight Relevance definisce quanto è rilevante (in misura esponenziale)
l’expertise dell’utente simulato.
Growth weight fattore di crescita compreso tra 0 e 1, che limita la possibile
crescita o decrescita del valore per ogni aggregazione.
Aging Weight fattore di discesa compreso tra 0 e 1, che limita la possibile
crescita o decrescita del valore per ogni aggregazione.
Assertion evaluation permette di decidere se le asserzioni prodotte o votate da un
utente simulato vengono etichettate con una segnature. Con signature spuntato
un utente simulato non potrà votare più volte un’asserzione.
Activation interval definisce ogni quanti secondi l’aggregatore entra in
funzione.
Resources List
- Con i bottoni Add, Remove e Edit Resources è possibile definire le
caratteristiche delle risorse che potranno essere valutate dagli utenti simulati. Se
una risorsa contiene uno o più concetti della Concept List significa che sono i
concetti che effettivamente caratterizzano quella risorsa e starà agli utenti
simulati riconoscerne la presenza.
4.1.2.2
UserGroups
Figura 4.5: Visualizzazione grafico Roles Distribution degli usergroup
91
____________________________________________________________________
In questa fase di simulazione è possibile visualizzare alcune delle caratteristiche
statiche del sistema quali: “Roles distribution”, “Usergroups”, “User roles
recognized by system” e “Population experise”.
In figura 4.5 è mostrato un esempio di “Roles distribution”, che in particolare
rappresenta, con un grafico a torta,. la composizione dei ruoli rispetto alla
popolazione totale. Questo grafico mostra esplicitamente anche i ruoli degli utenti
anonimi.
Il grafico “Usergruops” rappresenta invece la composizione degli Usergroup rispetto
alla popolazione totale, senza distinguere i gruppi di utenti anonimi.
Il grafico “User roles recognized by system” mostra come il sistema vede la
popolazione. In questo caso c’è una distinzione tra ruoli registrati e ruoli anonimi,
infatti i ruoli anonimi vengono raggruppati in un’unica entità anonima.
A seconda della composizione della popolazione questi tre grafici possono risultare
identici o molto diversi tra loro.
Figura 4.6: Visualizzazione grafico Expertise degli usergroup
In figura 4.6 è mostrato il grafico “Population expertise” che permette di confrontare
l’expertise di ogni Usergroup, relativa ai singoli concetti della Concept List, tra loro
e rispetto alla expertise media della popolazione del sistema.
92
____________________________________________________________________
4.1.2.3
Assertions Trust
Figura 4.7: Schermata Assertions Trust
Il pannello “Assertions Trust” permette di visualizzare le singole risorse
precedentemente generate all’interno del “Simulation Configuration” in modo da
poterne osservare, nel pannello “Concepts Contained”, i concetti effettivamente
contenuti all’interno di essa e nel pannello “Assertions”, le asserzioni create
dinamicamente dagli utenti simulati.
La selezione di ogni singola asserzione del pannello “Assertions” produce un grafico
“Assertion Trust” che mostra l’andamento del trust nel tempo.
Nel pannello “Assertion Statistics” compaiono inoltre alcuni parametri che
caratterizzano l’evoluzione del valore di trust dell’asserzione.
93
____________________________________________________________________
4.1.2.4
General Info
Figura 4.8: Schermata General Info
Il pannello General Info dà la possibilità di visionare l’andamento del sistema nel
tempo secondo tre punti di vista.
Il primo di questi è “System Trustwothiness” (mostrato in figura 4.8), che disegna in
tempo reale, il livello di veridicità del sistema calcolato come rapporto tra la somma
dei trust delle asserzioni corrette e la somma dei trust di tutte le asserzioni.
Il secondo grafico è “Precision” (mostrato in figura 4.9) che disegna nel tempo il
rapporto tra il numero di asserzioni che dovrebbero comparire e il numero delle
asserzioni che sono effettivamente comparse. Questo calcolo mette in luce quanto la
popolazione è capace di individuare i concetti effettivamente rilevanti delle risorse.
Più questo valore è alto, più la popolazione è precisa.
94
____________________________________________________________________
Figura 4.9: Visualizzazione grafico Precision
L’ultimo grafico che è possibile analizzare è “Recall” (mostrato Figura 4.10). Il
valore di richiamo è inteso come il rapporto tra il numero delle asserzioni corrette
che effettivamente compaiono e il numero delle asserzioni corrette che dovrebbero
comparire, quindi mostra la frazione di asserzioni classificate come esatte e rilevanti
(cioè realmente relative ad una risorsa).
95
____________________________________________________________________
Figura 4.10: Visualizzazione grafico Recall
96
____________________________________________________________________
Capitolo 5.
Conclusioni.
5.1 Prove di evoluzione del sistema
In questo capitolo si considererà un esempio di un possibile sistema reale. Le prove
di simulazione serviranno per sperimentare quali parametri influenzano in modo
significativo i risultati presi in considerazione come output del simulatore attuale.
Con queste simulazioni non si vuole dare una valutazione quantitativa di un sistema
reale, in quanto il simulatore è composto in parte da algoritmi non ancora
sufficientemente complessi da rappresentare in maniera verosimile la realtà, anche
se ne copre molti aspetti.
5.1.1 Scelta del contesto di esempio per la simulazione
Il contesto preso in esame per la simulazione rappresenta una società che si occupa
di manutenzione e riparazione di computer. Le risorse analizzate sono quindi i
computer arrivati che necessitano di riparazioni, mentre gli utenti simulati sono i
tecnici ai quali vengono sottoposte queste risorse per stabilire quali sono i
malfunzionamenti. La “Concept List” considerata è un insieme di termini legati ai
malfunzionamenti più comuni rilevabili su un computer, per semplicità se ne è
scelto un numero molto limitato. Sono qui elencati i concetti considerati:
- Video card hardware
- Video drivers
- Virus
- Mouse hardware
- Hard-disk controller
- Hard-disk hardware
- Network configuration
- O.S. corrupted
- RAM malfunction
-Mouse driver
- Software not compatible
- Security
- Memory hardware
- Overheating
- CD/DVD controller
- CD/DVD driver
- Power supply
- Bios malfunction
- Cluster
I tecnici scrivono e valutano asserzioni legate ai malfunzionamenti delle risorse e
dopo un certo numero di interazioni vengono evidenziate quelli che secondo la
popolazione del sistema sono i problemi più plausibili.
Per simulare in modo più completo l’utente si è cercato di far sì che questi ultimi
valutino i concetti della “Concept List” anche in base ad un “interesse” legato alle
proprie conoscenze.
97
____________________________________________________________________
Come accennato nel capitolo 4 l’output della simulazione è rappresentato da tre
grafici (“System Trustworthiness”, “Precision”, “Recall”) grazie ai quali si
evidenziano alcune delle caratteristiche del sistema in evoluzione nel tempo. Il
grafico “System Trustworthiness” permette di valutare quanto la popolazione del
sistema sia in gardo di garantire l’affidabilità delle asserzioni prodotte. Questo
valore è il rapporto tra la somma del trust delle asserzioni corrette e la somma del
trust di tutte le asserzioni. Il grafico “Precision” evidenzia quanto la popolazione sia
capace di individuare solo i concetti effettivamente rilevanti delle risorse. Questo
valore è calcolato come rapporto tra il numero delle asserzioni corrette rispetto al
numero totale delle asserzioni prodotte.
Il grafico “Recall” è inteso come il rapporto tra il numero delle asserzioni corrette
che effettivamente compaiono e il numero delle asserzioni corrette che dovrebbero
comparire, quindi mostra la frazione di asserzioni classificate come esatte e rilevanti
(cioè realmente relative ad una risorsa).
5.1.2 La composizione della popolazione
Con le seguenti quattro simulazioni si mostra quale rilevanza riveste la distribuzione
della conoscenza della popolazione rispetto alla “Concept List”.
5.1.2.1 Prima simulazione
La prima simulazione prevede che gli utenti simulati siano tutti esperti, cioè che
abbiano expertise elevata rispetto ai concetti che più gli competono, e ruoli che
coprono in maniera uniforme tutta la “Concept List” in modo da rappresentare una
situazione ideale. Riportiamo nella tabella i parametri della prima simulazione
chiamata “Ideale”.
Usergroups
Role
N°
Hardware expert 10
Software expert 10
Network expert 10
Number
40
Aggregator
Parameter
Value
Type
Discarded
Relevance Weight
1.0
Growth Weight
0.4
Aging Weight
0.1
Aggregation interval
1 sec.
Resources List
% of correct concepts
15%
Forced concepts
None
Tabella 5.1: Parametri simulazione “Ideale”
98
____________________________________________________________________
I grafici risultanti dalla simulazione sono i seguenti:
Grafico 5.1: Trustworthiness “Ideale”
Grafico 5.2: Recall “Ideale”
Grafico 5.3: Precision “Ideale”
Come prevedibile si può notare che sia la trustworthiness, sia la recall tendono ad 1,
mentre la precision ha un valore molto elevato.
99
____________________________________________________________________
5.1.2.2 Seconda simulazione
La seconda simulazione prevede che gli utenti simulati siano esperti, ma, solo in
alcuni concetti della “Concept List”, quindi la conoscenza non è distribuita
uniformemente.
Riportiamo nella tabella i parametri della seconda simulazione chiamata per le sue
caratteristiche “Esperti non equamente distribuiti”.
Usergroups
Role
N°
Software expert 10
Network expert 10
Number
40
Aggregator
Parameter
Value
Type
Discarded
Relevance Weight
1.0
Growth Weight
0.4
Aging Weight
0.1
Aggregation interval
1 sec.
Resources List
% of correct concepts
15%
Forced concepts
None
Tabella 5.2: Parametri simulazione “Esperti non equamente distribuiti”
I grafici risultanti dalla simulazione sono i seguenti:
Grafico 5.4: Trustworthiness “Esperti non equamente distribuiti”
100
____________________________________________________________________
Grafico 5.5: Recall “Esperti non equamente distribuiti”
Grafico 5.6: Precision “Esperti non equamente distribuiti”
Come si può notare sia la trustworthiness, sia la precision tendono a valori elevati,
mentre la recall ha un valore scarso.
5.1.2.3 Terza simulazione
La terza simulazione è simile a quella “Ideale” con l’introduzione di una
componente di popolazione con esperienze generiche (con expertise medio 0.35)
distribuite su tutta la “Concept List”.
Riportiamo nella tabella i parametri della terza simulazione chiamata per le sue
caratteristiche “Esperti ben distribuiti e Generici ben distribuiti”.
Usergroups
101
____________________________________________________________________
Role
Software expert
Network expert
Hardware expert
Generical
technician
Number
60
N°
10
10
10
30
Aggregator
Parameter
Value
Type
Discarded
Relevance Weight
1.0
Growth Weight
0.4
Aging Weight
0.1
Aggregation interval
1 sec.
Resources List
% of correct concepts
15%
Forced concepts
None
Tabella 5.3:
Parametri simulazione “Esperti ben distribuiti e Generici ben distribuiti”
I grafici risultanti dalla simulazione sono i seguenti:
Grafico 5.7: Trustworthiness “Esperti ben distribuiti e Generici ben distribuiti”
Grafico 5.8: Recall “Esperti ben distribuiti e Generici ben distribuiti”
102
____________________________________________________________________
Grafico 5.9: Precision “Esperti ben distribuiti e Generici ben distribuiti”
Come si può notare sia la trustworthiness, sia la recall tendono a valori elevati,
mentre la precision ha un valore medio.
5.1.2.4 Quarta simulazione
La quarta simulazione è simile alla simulazione “Esperti non equamente distribuiti”
con l’aggiunta di tecnici generici con expertise non uniforme come quella degli
esperti.
Riportiamo nella tabella i parametri della terza simulazione chiamata per le sue
caratteristiche “Esperti non equamente distribuiti e Generici non equamente
distribuiti”.
Usergroups
Role
N°
Software expert 10
Network expert 10
Generical
30
technician
Number
40
Aggregator
Parameter
Value
Type
Discarded
Relevance Weight
1.0
Growth Weight
0.4
Aging Weight
0.1
Aggregation interval
1 sec.
Resources List
% of correct concepts
15%
Forced concepts
None
Tabella 5.4:
Parametri simulazione “Esperti non equamente distribuiti e Generici non equamente
distribuiti”
103
____________________________________________________________________
Grafico 5.10: Trustworthiness “Esperti non equamente distribuiti e Generici non
equamente distribuiti”
Grafico 5.11: Recall “Esperti non equamente distribuiti e Generici non equamente
distribuiti”
Grafico 5.12: Precision “Esperti non equamente distribuiti e Generici non equamente
distribuiti”
Come si può notare la trustworthiness ha un valolre medio-alto, la recall tende a
valori medi, mentre la precision ha un valore molto scarso.
104
____________________________________________________________________
5.1.2.5 Osservazioni sulla composizione della popolazione
Confrontando i grafici delle quattro simulazioni si può notare che la Recall è
influenzata dalla uniformità di distribuzione delle conoscenze sulla “Concept List”.
All’aumentare della distribuzione sulla “Concept List”, si ha un miglioramento del
valore finale di recall. Questo risultato è anche influenzato da un parametro legato
ad un intervallo di “interesse” che potrebbe spingere un utente a valutare concetti
che meno gli sono congeniali, infatti, all’allargarsi dell’interesse la recall sale,
mentre allo stringersi verso i concetti più legati al ruolo, la recall diminuisce.
Il parametro Precision invece, è influenzato per la maggior parte dal livello di
expertise medio del sistema, lo si può notare nei risultati diversi ottenuti tra la
simulazione uno e la simulazione tre. Si può anche notare quaesto aspetto
confrontando i grafici della simulazione due e della simulazione quattro. Nella
simulazione due si nota una precision molto elevata, questo è dovuto ad un forte
interesse degli esperti solo rispetto ai concetti che gli competono fortemente. Nella
quattro, invece, la semplice aggiunta di utenti generici ha portato ad un crollo della
precision dovuta al fatto che i loro interessi sono più ampi e meno sicuri (quindi
hanno commesso più errori).
Il parametro Trustworthiness, come osservabile da tutte e quattro le simulazioni è
influenzato quasi esclusivamente dal fatto che esistano contemporaneamente due
fattori negativi quali la non completa distribuzione delle conoscenze sulla “Concept
List” e l’abbassamento del expertise media di tutta la popolazione.
5.1.3 La composizione delle risorse
Con la seguente simulazione si mostra quale rilevanza riveste la distribuzione delle
risorse nel caso in cui la popolazione non abbia conoscenze ben distribuite sulla
“Concept List”. Non si sono considerate altre configurazioni di utenti, in quanto, una
data una buona distribuzione degli utenti sulla “Concept List”, una qualsiasi
configurazione dei concetti delle risorse avrebbe dato gli stessi risultati.
Confronteremo quindi una nuova simulazione con la simulazione degli “Esperti non
equamente distribuiti e Generici non equamente distribuiti” (trattata nel paragrafo 5.1.2.4).
5.1.3.1 Simulazione
La simulazione intende dimostrare la caduta del rendimento finale del sistema nel
caso in cui i concetti delle risorse fossero molto distanti dalle conoscenze della
popolazione.
Vengono riportati nella pagina successiva i parametri relativi alla simulazione.
105
____________________________________________________________________
Usergroups
Role
N°
Software expert 10
Network expert 10
Generical
30
technician
Number
20
20
Aggregator
Parameter
Value
Type
Discarded
Relevance Weight
1.0
Growth Weight
0.4
Aging Weight
0.1
Aggregation interval
1 sec.
Resources List
% of correct concepts
Forced concepts
0%
Hard-disk hardware,
Hard-disk controller
0%
Video card hardware,
power supply
Tabella 5.5: Parametri della simulazione
I grafici ottenuti per questa simulazione sono:
Grafico 5.13 :Trustworthiness
Grafico 5.15 :Recall
106
____________________________________________________________________
Grafico 5.14 :Precision
5.1.3.2 Osservazioni sulla composizione delle risorse
Questi grafici ottenuti mostrano come il sistema risulti molto sensibile al tipo di
concetti contenuti nelle risorse, infatti nel caso in cui le risorse sono per la
maggioranza di competenza della popolazione si ha un sistema molto simile a quello
descritto nella simulazione “Ideale” descritta nel paragrafo 5.1.2.1, quindi un
sistema molto performante. Nel caso in cui la composizione delle risorse fosse molto
distribuita si ha una situazione molto simile alla simulazione descritta nel paragrafo
5.1.2.4, dove già si notava un forte abbassamento della qualità dei risultati prodotti
dal sistema. Nel caso invece analizzato in questo paragrafo si nota il caso estremo in
cui il sistema produce risultati non utili.
5.1.4 Utenti anonimi e aggregatori
Gli utenti anonimi sono una componente della popolazione che apre il sistema verso
una situazione più dinamica ma meno controllabile. Si è deciso di cambiare
approccio riguardo al sistema considerato sino ad ora, dove c’erano solo utenti
autenticati che davano la loro opinione sui problemi dei computer analizzati. Ora
passiamo ad una situazione in cui ad esempio abbiamo un forum di utenti anonimi
che rispondono a problematiche relative a malfunzionamenti di computer esposti da
altri utenti dello stesso forum.
Si è pensato di modellare due simulazioni in cui lo stesso gruppo di utenti anonimi
agisce, ma con la differenza nell’utilizzo dell’aggregatore che effettua il calcolo dei
valori di trust delle asserzioni.
5.1.4.1 Simulazione uno
Questa simulazione prende in considerazione utenti anonimi con aggregatore
“discard”, dove gli utenti sono liberi sia di votare positivamente le asserzioni che di
scartare le asserzioni che non considerano interessanti o veritiere.
107
____________________________________________________________________
Si è considerata una popolazione di utenti anonimi con media di expertise di circa
0.35 e conoscenze ben distribuite.
I parametri della simulazione sono i seguenti:
Usergroups
Role
N°
Anonymous
30
users
Number
40
Aggregator
Parameter
Value
Type
Discarded
Relevance Weight
1.0
Growth Weight
0.3
Aging Weight
0.1
Aggregation interval
2 sec.
Resources List
% of correct concepts
15%
Forced concepts
None
Tabella 5.6: Parametri della simulazione uno
I risultati della simulazione sono:
Grafico 5.16 :Trustworthiness simulazione uno
Grafico 5.17 :Recall simulazione uno
108
____________________________________________________________________
Grafico 5.18 :Precision simulazione uno
5.1.4.2 Simulazione due
Questa simulazione prende in considerazione utenti anonimi con aggregatore
“aging”, dove gli utenti sono liberi sia di votare positivamente le asserzioni ma non
di scartare le asserzioni che non considerano interessanti o veritiere. La componente
negativa del valore di trust aggregato è dato dall’invecchiamento.
Si è considerata una popolazione di utenti anonimi con media di expertise di circa
0.35 e conoscenze ben distribuite.
I parametri della simulazione sono i seguenti:
Usergroups
Role
N°
Anonymous
30
users
Number
40
Aggregator
Parameter
Type
Relevance Weight
Growth Weight
Aging Weight
Aggregation interval
Resources List
% of correct concepts
15%
Value
Aging
1.0
0.3
0.1
2 sec.
Forced concepts
None
Tabella 5.7: Parametri della simulazione due
109
____________________________________________________________________
I risultati della simulazione sono:
Grafico 5.19 :Trustworthiness simulazione due
Grafico 5.20 :Recall simulazione due
Grafico 5. 21 :Precision simulazione due
110
____________________________________________________________________
5.1.4.3 Osservazioni sugli utenti anonimi e sugli aggregatori
Dai risultati ottenuti si può notare che l’unica differenza ottenuta è nel tempo di
convergenza ad uno della trustworthiness, in particolare con aggregatore di aging si
è avuto un tempo di convergenza minore rispetto alla simulazione con aggregatore
discard. In più la trustworthiness nel caso del discarded non è arrivata ad uno.
5.2 Sviluppi futuri
Per questo tool di simulazione integrato nell’ambito del progetto K.I.W.I. sono
previsti futuri miglioramenti degli algoritmi scelti per l’aggregazione, e una più
precisa profilazione degli utenti che permetterà di definirne al meglio i
comportamenti.
Il tool così migliorato permetterà di testare il tool in una situazione più realistica.
111
____________________________________________________________________
CITAZIONI
[1] R. Falcone and C. Castelfranchi. Social Trust: A Cognitive Approach, pages 55–
99.Kluwer, 2001
[2] ebay. http://www.ebay.com.
[3] Epinions. http://www.epinions.com.
[4] ] Amazon.com. http://www.amazon.com.
[5] www.google.com/intl/en/technology/
[6] http://slashdot.org/
[7] www.officialsm.net/articoli/trustrank_for_dummies.pdf
[8] http://www.pgpi.org/
[9] Poblano - a distributed trust model for peer-to-peer networks.
http://www.jxta.org/project/www/docs/trust.pdf.
[10] www.jxta.org
[11] R. Dingledine, M.J. Freedman, and D. Molnar. The free haven project:
Distributed
anonymous storage service. In Proc. of the Workshop on Design Issues in Anonymity
and Unobservability, Berkeley, California, USA, July 2000.
[12] www.foaf-project.org
[13] R. Aringhieri, E. Damiani, S. D. C. D. Vimercati, S. Paraboschi, and P.
Samarati. Fuzzy Techniques for Trust and Reputation Management in Anonymous
Peer-to-Peer Systems. Journal of the American Society for Information Science and
Technology, 57(6), April 2006.
[14] jena.sourceforge.net
[15] java.sun.com/
[16] jakarta.apache.org/tomcat/
[17] www.mysql.com
[18] www.w3.org/DSig
[19] Paolo Ceravolo, Ernesto Damiani, and Marco Viviani. Adding a Trust Layer to
Metadata Generators
[20] Yager, R. R., On ordered weighted averaging aggregation operators in multicriteria decision making
FONTI
- A. Abdul-Rahman and S. Hailes. Supporting Trust in Virtual Communities. In
Proceedings of the Hawaii International Conference on System Sciences, Maui,
Hawaii, 4-7 January 2000 2000.
- K. Aberer and Z. Despotovic. Managing trust in a peer-2-peer information system.
In Henrique Paques, Ling Liu, and David Grossman, editors, Proceedings of the
Tenth International Conference on Information and Knowledge Management
(CIKM01), pages 10–317. ACM Press, 2001.
112
____________________________________________________________________
- E. Damiani et al. A Reputation-Based Approach for Choosing Reliable Resources
in Peer-to-Peer Networks. In Proceedings of the 9th ACM conference on Computer
and Communications Security (CCS’02), pages 207–216. ACM, 2002.
- A. Jøsang, E. Gray, and M. Kinateder. A Survey of Trust and Reputation Systems
for Online Service Provision
- R. Levien. Attack Resistant Trust Metrics (to appear). PhD thesis, University of
California at Berkeley, 2004.
-Rainer Burkhardt. UML: Uni_ed Modeling Language. Addison-Wesley, 1997.
- D.Gambetta. Can we trust? In Trust: Making and Breaking Cooperative Relations,
Oxford, 1990.
- Philip R. Zimmermann. The Of_cial PGP User's Guide. MIT Press, Cambridge,
MA, USA, 1995.
- Alfarez Abdul-Rahman. The pgp trust model. In EDI-Forum: The Journal of
Electronic Commerce, April 1997.
- Alfarez Abdul-Rahman and Stephen Hailes. A distributed trust model. pages
48ñ60.
- Yager, R. R., On ordered weighted averaging aggregation operators in multicriteria decision making, IEEE transactions on Systems, Man and Cybernetics 18,
183-190, 1988.
- W3C Signed RDF Workshop, A Position Paper.Martin Lee, AND Data Ltd.
- RDF Schema Specification 1.0, W3C Candidate Recommendation 27 March 2000.
http://www.w3.org/TR/rdf-schema/
WordNet
a
Lexical
Database
http://www.cogsci.princeton.edu/~wn/online/
- http://www.w3.org/TR/WD-rdf-syntax-971002/#signing
for
English.
- The Reputation, Opinion, Credibility and Quality (ROCQ) Scheme_ Anurag Garg
Roberto Battiti
Dipartimento di Informatica e Telecomunicazioni, Universit di Trento,
- Accuracy of Metrics for Inferring Trust and Reputation in Semantic Web-based
Social Networks Jennifer Golbeck, James Hendler University of Maryland, College
Park
- A Classification Scheme for Trust Functions in Reputation-Based Trust
management Qing Zhang, Ting Yu , and Keith Irwin Department of Computer
Science North Carolina State University
113
____________________________________________________________________
- Trust Modeling for Security Architecture Development Donna Andert,
RobinWakefield, and JoelWeise, Professional Services Security Practice Sun
BluePrints™ OnLine—December 2002
- Certifying Trust Ilari Lehti and Pekka Nikander Helsinki University of
Technology, Department of Computer Science
- Framework for the Semantic Web: An RDF Tutorial STEFAN DECKER,
PRASENJIT MITRA, AND SERGEY MELNIK Stanford University
- Berners-Lee, James Hendler, Ora Lassila, “ The Semantic Web”, Scientific
American,
17
Maggio
2001
http://www.scientificamerican.com/article.cfm?articleID=00048144-10D2-1C7084A9809EC588EF21&catID=2
Tim
Berners-Lee,
“Semantic
http://www.w3.org/DesignIssues/Semantic.html
Web
roadmap”,
1998.
-Tim Berners-Lee, “Why RDF model is different from the XML model”, Settembre
1998 http://www.w3.org/DesignIssues/RDF-XML.html
- The semantic web Home Page, W3C Consortium http://www.w3.org/2001/sw/
- The web Ontology Group Home Page(Web Ont), W3C Consortium
http://www.w3.org/2001/sw//WebOnt
- Semantic Web Activity Statement http://www.w3.org/2001/sw/Activity
-Web Ontology Language OWL Home Page http://www.w3.org/2004/OWL
- http://logicerror.com/signYourPage
-www.w3.org/2000/10/swap/doc/Trust
-XML. Riferimento al sito http://www.w3.org/XML/
- Strutturare la conoscenza:XML, RDF, Semantic Web Oreste Signore W3C Office
in Italy e ISTI-CNR
114