Web semantico
Con il termine Web Semantico si intende la trasformazione del World Wide Web in un ambiente dove è possibile pubblicare non più solo documenti (pagine HTML, file office, immagini, file multimediali,...) ma anche informazioni e dati in un formato adatto alla interrogazione, interpretazione e, più in generale, elaborazione automatica.
Per la sua costruzione/definizione si utilizza l'XML che, lo ricordiamo, consente di descrivere semanticamente (e con il dettaglio desiderato) le diverse parti di un documento. Un documento così descritto può poi essere elaborato per usi diversi: estrazione di informazioni secondo specifici criteri, riformulazione più o meno parziale per adattarlo ad altri formati, visualizzazione in funzione delle capacità del terminale,...
Sebbene un documento sia un buon modo per specificare informazioni, un documento, ancorché espresso in formato XML, è poco adatto al Web che per sua natura è distribuito e decentralizzato e, quindi, informazioni su una particolare entità possono essere localizzate ovunque.
Infatti, con XML è possibile descrivere adeguatamente i contenuti di un documento ma la sintassi XML non definisce alcun meccanismo esplicito per qualificare le relazioni tra documenti. In questo non è di aiuto neppure il meccanismi degli hyperlink reso popolare dall'HTML perché amorfo, cioè non prevede la possibilità di descrivere il legame definito.
In altre parole, sebbene in un documento (ad es. una pagina HTML) sia possibile parlare di un Signor Ciampi ed esprimere semanticamente questo con opportuni tag, é poi difficile capire se due documenti che parlano di un Signor Ciampi si riferiscono alla sessa persona con conseguente scarsa qualità dei risultati restituiti dai motore di ricerca. Nella migliore delle ipotesi sarebbe possibile dedurlo se, tra gli altri, vi fossero dati anagrafici semanticamente definiti e sufficientemente precisi (ad es. il Codice Fiscale) o hyperlink debitamente descritti che li collegano.
Poiché, però, i diversi documenti sono redatti per scopi differenti, indipendentemente gli uni dagli altri e normalmente senza condividere un comune formato XML, informazioni utili quali l'indirizzo postale o la data di nascita finiscono per essere espresse in modo dissimile e non uniforme. L'indirizzo in un caso può essere semplicemente racchiuso dal tag <indirizzo>, in altri da <indirizzo_postale>, <direccion>, <address> o <adresse>, e poi è da considerare la possibilità di avere esplicitamente identificati <via>, <numero_civico>,... rendendo ardua e non priva di rischi ogni deduzione automatica.
Nei prossimi paragrafi si illustreranno prima il linguaggio utilizzati per costruire il web semantico, quindi le previste evoluzioni, gli strumenti e il contributo che queste tecnologie potrebbero dare per rispondere definitivamente ad uno dei problemi irrisolti in ambito informatico: gestione della conoscenza aziendale
Linguaggi
Per la costruzione del web semantico, il W3C ha definito l'RDF (Resource Description Framework), una particolare applicazione XML che standardizza la definizione di relazioni tra informazioni utilizzando i principi della logica dei predicati e gli strumenti tipici del Web (ad es. URI) e dell'XML (namespace).
In estrema sintesi, secondo la logica dei predicati le informazioni sono esprimibili con asserzioni (statement in inglese) costituite da triple formate da soggetto, predicato e valore (in inglese spesso identificati come subject, verb e object, rispettivamente). Ad esempio, le seguenti affermazioni sul Presidente della Repubblica in carica all'epoca della stesura di quest'articolo (gennaio 2005):
- Il Signor Ciampi vive a Roma.
- Il Signor Ciampi ha codice fiscale CMPCLZ20T09E625V.
possono essere schematicamente scomposte come
Asserzione 1 | Asserzione 2 | |
Soggetto: | Il Signor Ciampi | Il Signor Ciampi |
Predicato: | vive a | ha codice fiscale |
Valore: | Roma | CMPCLZ20T09E625V |
allora per alcuni di questi elementi è possibile reperire arbitrariamente sul Web URI (risorse) che li identificano univocamente quali:
Il Signor Ciampi | http://www.quirinale.it/presidente/ciampi.htm |
vive a | http://it.wikidictionary.org/wiki/vivere |
Roma | http://www.comune.roma.it/index.asp |
Ha codice fiscale | http://it.wikipedia.org/wiki/codice_fiscale |
In questo caso, per
- Il Signor Ciampi si è scelto di referenziare la relativa biografia disponibile sul sito ufficiale del Quirinale
- Roma si è scelto di utilizzare il sito istituzionale del Comune di Roma
- vive a si è scelto di referenziare la definizione del verbo vivere disponibile su wikidizionario
- ha codice fiscale si è scelto di referenziare la definizione di codice fiscale disponibile su wikipedia
Nei prossimi paragrafi si descrive come formalizzare le precedenti frasi in RDF nella sua forma canonica, in due suoi formati testuali alternativi (N3 ed N3 con prefissi) e graficamente. Infine si introduce SPARQL, il linguaggio definito per l'interrogazioni di archivi di asserzioni RDF.
Si segnala che appositi programmi come IsaViz del W3C consentono di passare da un formato all'altro e sono utili per la sperimentazione del web semantico.
Soluzione RDF Canonica
Una possibile formalizzazione dell'esempio in RDF è:
1. <?xml version="1.0"?> 2. <rdf:RDF 3. xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 4. xmlns:wikipedia="http://it.wikipedia.org/wiki/" 5. xmlns:wikidizionario="http://it.wikidictionary.org/wiki/"> 6. <rdf:Description 7. rdf:about="http://www.quirinale.it/presidente/ciampi.htm"> 8. <wikidizionario:vivere 9. rdf:resource="http://www.comune.roma.it/index.asp" 10. /> 11. </rdf:Description> 12. <rdf:Description 13. rdf:about="http://www.quirinale.it/presidente/ciampi.htm"> 14. <wikipedia:codice_fiscale> 15. CMPCLZ20T09E625V 16. </wikipedia:codice_fiscale> 17. </rdf:Description> 18. </rdf:RDF>
Riga 1 | <?xml version='1.0'?>, header xml standard | |
Riga 2 | rdf:RDF è il nodo radice di un documento RDF definito nel namespace rdf di cui alla Riga 3 | |
Riga 3 | xmlns:rdf= referenzia il namespace standard della sintassi RDF, identificandolo come rdf. Si ricorda che in XML si definisce un namespace per rendere più sintetica la scrittura del codice. D'ora in poi, infatti, ogni volta che si incontra rdf: lo si deve (mentalmente) sostituire con quanto scritto a destra dell' = di questa espressione, come già fatto nella Riga 2. | |
Riga 4 e 5 | xmlns:wikipedia= e xmlns:wikidizionario= referenziano due ulteriori namespace, identificandoli come wikipedia e wikidizionario | |
Righe 6-11 | Definiscono l' asserzione Il Signor Ciampi vive a Roma | |
Riga 6 | rdf:Description é il tag del namespace rdf di cui alla Riga 3 che consente di specificare un' asserzione (soggetto, predicato, valore) | |
Riga 7 | rdf:about é un attributo dell'elemento Description di Riga 6 da utilizzare per specificare il soggetto di un'asserzione quando, come in questo caso, è un URI | Il signor Ciampi |
Riga 8 | vivere è il tag definito nel namespace wikidizionario di cui alla Riga 4, utilizzato per definire il predicato | vive a |
Riga 9 | rdf:resouce é un identificativo del namespace rdf di cui alla Riga 3 per specificare il valore dell'asserzione, quando espresso come URI | Roma |
Riga 10 | definizione della chiusura di un tag XML vuoto | |
Riga 11 | Chiude il tag Description aperto alla Riga 6 | |
Riga 12-17 | Definiscono l' asserzione Il Signor Ciampi ha codice fiscale CMPCLZ20T09E625V | |
Riga 12 | rdf:Description é il tag del namespace rdf di cui alla Riga 3 che consente di specificare un' asserzione (soggetto, predicato, valore) | |
Riga 13 | rdf:about é un attributo dell'elemento Description di Riga 12 da utilizzare per specificare il soggetto di un'asserzione quando, come in questo caso, è un URI | Il Signor Ciampi |
Riga 14 | codice_fiscale é il tag definito nel namespace wikipedia di cui alla Riga 4, utilizzato per definire il predicato | Ha codice fiscale |
Riga 15 | Il valore dell' asserzione | CMPCLZ20T09E625V |
Riga 16 | Chiude l'elemento aperto alla Riga 14 | |
Riga 17 | Chiude il tag Description aperto alla Riga 12 | |
Riga 18 | Chiude l'elemento radice RDF aperto alla Riga 2 |
Poiché le due frasi hanno lo stesso soggetto, allora possono essere riformulata come segue:
alla quale corrisponde una formalizzazione RDF altrettanto sintetica (ed equivalente alla precedente):
<?xml version='1.0'?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:wikipedia="http://it.wikipedia.org/wiki/" xmlns:wikidizionario="http://it.wikidictionary.org/wiki/"> <rdf:Description rdf:about="http://www.quirinale.it/presidente/ciampi.htm"> <wikidizionario:vivere rdf:resource="http://www.comune.roma.it/index.asp"/> <wikipedia:codice_fiscale> CMPCLZ20T09E625V </wikipedia:codice_fiscale> </rdf:Description> </rdf:RDF>
Soluzione Grafica
Per rappresentare graficamente asserzioni RDF, si utilizzano i grafi scegliendo i nodi per soggetto e valore, uniti da un arco orientato da soggetto a valore per il predicato.
Alcuni applicativi, come il già citato IsaViz utilizzato in quest'esempio, adottano ellissi per i nodi che sono URI (http://www.comune.roma.it/index.asp), altrimenti dei rettangoli (CMPCLZ20T09E625V). Ciò detto, al nostro esempio corrisponde il grafo:
Soluzione N3
N3 (noto anche come N-triples o Notation 3), propone una forma più facile da leggere rispetto ad RDF e l'esempio che stiamo considerando trova la seguente soluzione:
<http://www.quirinale.it/presidente/ciampi.htm> <http://it.wikidictionary.org/wiki/vivere> <http://www.comune.roma.it/index.asp>. <http://www.quirinale.it/presidente/ciampi.htm> <http://it.wikipedia.org/wiki/codice_fiscale> "CMPCLZ20T09E625V".
Ciascuna asserzione può essere scritta anche su un'unica linea, mettendo soggetto, predicato e valore l'uno di seguito all'altro. Si ricorda che in N3 è significativo anche il . (punto) che contrassegna la fine di ciascuna asserzione.
Soluzione N3 con Prefissi
N3 con Prefissi (N3 with prefix nella dizione inglese) è ancor più sintetico di N3 e riprende l'idea dei namespace XML per agevolare la compilazione utilizzando dei semplici editor. In questo caso l'esempio è tradotto come:
@prefix presidente: http://www.quirinale.it/presidente/ @prefix wikipedia: http://it.wikipedia.org/wiki/ @prefix wikidizionario: http://it.wikidictionary.org/wiki/ @prefix comune_roma: http://www.comune.roma.it/ presidente:ciampi.html wikidizionario:vivere comune_roma:index.asp. presidente:ciampi.html wikipedia:codice_fiscale "CMPCLZ20T09E625V".
Dove con il comando @prefix si definiscono costanti di sostituzione che specifici strumenti automatici si occupano di operare per completare le asserzioni che le utilizzano. Così come per N3, anche per N3 con Prefissi è significativo il . (punto) alla fine di ciascuna asserzione.
SPARQL
SPARQL (Simple Protocol And RDF Query Language) è il linguaggio definito per interrogare sistemi che gestiscono asserzioni RDF. Ad oggi sono disponibili altri linguaggi funzionalmente equivalenti ma SPARQL è candidato a divenire una raccomandazione W3C [1].
Modalità di Impiego
Dagli esempi precedenti si evince che condizione necessaria per il buon utilizzo di RDF è la disponibilità on-line di riferimenti di qualità alle URI utilizzate/referenziate. In particolare, è importante che queste risorse siano note, condivise e stabili nel tempo. Ad es., il riferimento utilizzato per identificare il Presidente Ciampi non è, da questo punto di vista, dei migliori perché valido solo durante il mandato presidenziale, dopodiché sarà spostata in http://www.quirinale.it/ex_presidenti/ciampi.htm dove già si trovano quelle dei suoi predecessori. Dopo questa data l'asserzione [RDF] continuerà a valere, ma si perderà il contributo informativo apportato dalla pagina referenziata sul web utile per una interpretazione dello stesso.
Molto più opportuno sarebbe utilizzare la biografia definita in wikipedia oppure il Codice Fiscale con, ad es.,
Sebbene questa URI oggi non referenzi alcunchè sul Web, la si potrebbe comunque utilizzare allo scopo perché RDF non presuppone alcuna verifica sulla effettiva disponibilità della risorsa stessa. In questo modo tutte le persone fisiche e giuridiche contemporanee e non solo personaggi, aziende, enti ed istituzioni 'importanti' potrebbero essere univocamente identificati, potenziando notevolmente le possibilità di RDF (in ogni caso nulla vieterebbe all'Agenzia delle Entrate di mettere a disposizione un servizio che a partire dalla URI citata restituisca automaticamente le relative informazioni anagrafiche).
Ciò detto si potrebbe affermare che:
La risorsa individuata dal codice fiscale CMPCLZ20T09E625V vive a Roma, ha una biografia in http://it.wikipedia.org/wiki/carlo_azelio_ciampi ed un'altra in http://www.quirinale.it/presidente/ciampi.htm
ovvero:
@prefix agenzia: http://www.agenziaentrate.it/servizi/ @prefix comune_roma: http://www.comune.roma.it/ @prefix presidente: http://www.quirinale.it/presidente/ @prefix wikipedia: http://it.wikipedia.org/wiki/ @prefix wikidizionario: http://it.wikidictionary.org/wiki/ agenzia:CF#CMPCLZ20T09E625V wikidizionario:vivere comune_roma:index.asp agenzia:CF#CMPCLZ20T09E625V wikidizionario:biografia presidente:ciampi.htm agenzia:CF#CMPCLZ20T09E625V wikidizionario:biografia wikipedia:carlo_azelio_ciampi
Un'altra accortezza da tenere presente nella scelta dei termini da utilizzare per la definizione delle relazioni è di ricorrere a dizionari già noti e diffusi invece che inventarne ogni volta di nuovi. Ad es. per le informazioni anagrafiche personali tipiche dei biglietti da visita quali nome, cognome, indirizzo, e-mail, ruolo aziendale,... è già disponibili vCard. Non sono da dimenticare neppure le numerose applicazioni XML definite per abilitare l'EDI (Electronic Data Interchange, scambio dati elettronico) nell'ambito della pubblica amministrazione (e-Governament [2]) o di associazioni di settore (xml.org).
Da quanto esposto fin'ora è facile intuire che, nella costruzione del web semantico, progetti come wikipedia o wikidizionario non sono solo funzionali ma, adeguatamente sfruttati, anche abilitanti perchè forniscono lemmi ben documentati per individuare risorse e predicati, garantendone la stabilità nel tempo e, grazie alla possibilità di dichiarare equivalenze nella stessa lingua e tra lingue diverse, di accrescere ulteriormente l'estensione di un'indagine automatica.
Evoluzioni
RDF non è che il primo passo. Il web semantico lo si sta costruendo a strati :
Di seguito sono presentati cenni e problematiche su alcuni di questi.
OWL: estensioni ad RDF
Sfruttando le possibilità offerte dall'elaborazione automatica, la logica dei predicati può essere ulteriormente estesa con costrutti capaci di ampliarne ulteriormente l'espressività. Due di queste, molto semplici da comprendere, sono l'equivalenza tra risorse e la relazione inversa.
- Per equivalenza tra risorse si intende la possibilità di poter affermare che due o più URI rappresentano lo stesso elemento
- Per inversa si intende la possibilità di dire che se è vero (soggetto, predicato, oggetto), allora è anche vero (oggetto, predicato_inverso, soggetto).
L'importanza di un costrutto come l'equivalenza è presto spiegata anche solo considerando gli esempi fatti in precedenza. Ad es. poter dichiarare che
CF:CMPCLZ20T09E625V, wikipedia:carlo_azelio_ciampi e quirinale:ciampi.htm sono equivalenti
consentirebbe di capire che le asserzioni
CF:CMPCLZ20T09E625V si chiama "Carlo Azeglio Ciampi" wikipedia:carlo_azelio_ciampi vive a Roma quirinale:ciampi.htm è un "Presidente della Repubblica"
debitamente formalizzate ed ovunque reperite si riferiscono alla stessa risorsa, un Presidente della Repubblica (qualsiasi cosa questo significhi, ovvero qualsiasi cosa possa essere inferito da questa informazione) che vive a Roma e si chiama Carlo Azeglio Ciampi.
Per quanto riguarda l'inversa, invece basta pensare che quando si afferma che Romolo è fratello di Remo, si intende anche che Remo è fratello di Romolo, asserzione da fare esplicitamente in RDF per poter essere note al sistema. Operazione fattibile ma tediosa. Per ovviare a ciò, sarebbe sufficiente poter definire una volta per tutte che se X è fratello di Y allora è vero anche Y è fratello di X
Questi costrutti, insieme ad altri, sono stati introdotti per primi da linguaggi precedenti o contemporanei ad RDF quali DAML (definito dall'amercana DARPA) ed OIL (sponsorizzata dalla Unione Europea nell'ambito del programma IST), successivamente confluiti in DAML+OIL. Su questa base il W3C ha definito OWL (Ontology Web Language), un'estensione di RDF.
Fiducia
Un altro tema molto importante e dibattuto è come gestire la fiducia sulle asserzioni o, più esattamente, sugli autori delle asserzioni.
Agenti
E' da segnalare che molto lavoro è attualmente in corso per estendere le possibilità del web semantico applicando l'idea degli agenti intelligenti (programmi in grado di esplorare ed interagire autonomamente con i sistemi informatici per, ad es., ricercare informazioni). Ruolo di questi agenti nel web semantico è di fornire più vaste capacità di inferenza realizzando quanto espresso in un articolo su Scientific American di Tim Berners-Lee intitolato The Semantic Web dove si prospetta un futuro in cui Lucy fissa una visita medica alla madre utilizzando alcuni agenti capaci di "capire" la patologie, contattare i centri in grado di curarla e perfino di richiedere un appuntamento ai relativi agenti, salvo poi lasciarle la decisione di confermare.
Strumenti
Ovviamente non è sufficiente avere solo una sintassi per esprimere predicati. Per rendere concreto ed utile quanto detto finora, occorrono anche strumenti in grado di gestire un insieme di asserzioni per rispondere alle richieste utente.
La gran parte, come si può intuire dagli esempi di N3 ed N3 con Prefissi, archiviano le asserzioni in una o più tabelle di un DB relazionale. Alcune di queste soluzioni sono state censite dal progetto SWAD-Europe sponsorizzata dall'Unione Europea nell'ambito dell'iniziativa IST.
Web Semantico e Gestione della Conoscenza
Da quanto detto si capisce perchè se l'XML si rivolge alla descrizione di documenti, RDF (e sue evoluzioni) è particolarmente indicato per rappresentare dati, fornendo un metodo potenzialmente capace di risolvere un tema finora solo parzialmente soddisfatto da strumenti informatici: la gestione della conoscenza aziendale, ovvero la capacità non solo di trattare le diverse anagrafiche (di prodotto, clienti, fornitori, dipendenti,...) e di classificare i documenti tecnici o amministrativi, (analisi di mercato, specifiche tecniche, norme, procedure,...) ma di arrivare anche a gestire i contenuti di questi documenti permettendo, ad es., il reperimento delle informazioni in funzione delle specifiche esigenze del richiedente, integrando quanto reso disponibile da fonti diverse.
Per quanto riguarda le anagrafiche, sarebbe molto semplice mappare i dati già disponibili in un RDBMS in asserzioni RDF: per ciascuna tabella
- le chiavi univoche identificano una entità;
- i nomi delle colonne possono essere i predicati;
- il contenuto delle colonne i valori.
Per quanto riguarda i documenti, passando per XML potrebbero essere rielaborati in modo da ricavare le necessarie asserzioni RDF sfruttando
- la paragrafazione, normalmente standardizzata nella documentazione tecnica;
- l'utilizzo di dizionari comuni (un dato elemento è chiamato allo stesso modo in documenti diversi);
- l'analisi lessicale.