DAI GRAFFITI AL WEB: COME CAMBIA LA STRUTTURA REFERENZIALE NELL'ETA' DELLA RETE
[Gli sviluppi della scrittura nella storia]
[La referenza tramite il segno]
[L'ipertestualità come spazio di scrittura]
CAPITOLO IV: GESTIRE LA CONOSCENZA IN RETE
Ripensando
alla storia della scrittura, soprattutto nei suoi più recenti sviluppi, la si
potrebbe abbastanza bene interpretare come il tentativo di porre una rete di
relazioni, il più possibile esplicite e attive, fra gli elementi di un testo.
Questa spinta risponde chiaramente all'idea che ogni segno costituisca con
tutti gli altri una rete di rimandi ben al di là della sua più immediata
posizione nell'ordine lineare di lettura.
Le
implicazioni che questo approccio semiotico prometterebbe di sviluppare sono
legate all'antichissima utopia di poter servirsi, nella gestione della
conoscenza, di un corpo semiotico di segni completamente attivo, nel quale ogni
segno dica la sua relazione con ognuno degli altri come col tutto, di un corpo
semiotico che ci fornisca una esatta fotografia della realtà, essendo in grado
di esplicitare la collocazione di ogni significato di segno. Questa posizione
utopica richiederebbe la possibilità di servirsi: innanzi tutto di un corpo
universale di segni, di tutta la testualità che universalmente sia disponibile
all'uomo; inoltre della capacità di rendere esplicito l'intero rapporto di
relazioni che implicitamente un segno convoglia in sé.
Evidentemente
nel concreto queste due possibilità non sono realizzabili, per il semplice
fatto che non si potrà mai racchiudere in un solo spazio tutta la testualità
possibile e che non si sarà mai in grado di definire tutte le possibili
relazioni fra un segno ed un altro. Resta il fatto che una buona critica del
fenomeno della scrittura non possa mai dimenticarsi che tutta la storia e
l'evolvere di questa tecnica è sottoposta a queste due grandi tensioni: l'universalità e la connettività. Quello che abbiamo, in un certo senso, fin qua
tentato di fare è stato di mostrare la fondamentale rilevanza che queste due
tensioni hanno nello sviluppo della scrittura e attraverso quali modalità, nel
concreto della situazione tecnica odierna, esse trovino la loro attuazione.
Si
è visto bene come l'idea di ipertesto si vada necessariamente a risolvere in
quella di rete universale di testi e come la scarsa predittività che oggi il
link offre porti all'utilizzo delle possibilità di interconnessione nelle
modalità più semplici e tradizionali, con la preminenza delle funzioni di
archiviazione e di ricerca. Riguardo alla questione del legame, della referenza
tra segni, si è mostrato come la sola possibilità per un segno di costituire
referenze diverse in un sistema non eccessivamente complesso da risultare
insensato si attui nella disposizione a più livelli delle sue implicazioni,
mantenendo non rigida la gerarchia dei livelli ma consentendone differenti
configurazioni.
Per
quanto riguarda la situazione attuale i limiti che le tensioni di universalità
e di connettività devono subire possono dipendere da diversi fattori:
socio-culturali, socio-economici (si pensi ad esempio a problemi come quello
del diritto di autore o della effettiva diffusione della rete informatica) ma
certamente quello tecnico appare il più interessante da considerare.
La
rapidità della diffusione di Internet è dovuta certamente all'utilità dello
strumento, alle sue implicazioni rivoluzionarie, ma non si sarebbe mai
realizzata senza la presenza di un substrato tecnico facilmente diffondibile.
HTML ha rappresentato lo strumento ideale per fungere da substrato.
Innanzitutto, problema fondamentale in informatica, si tratta di un linguaggio
fruibile da qualsiasi sistema operativo, oltre a ciò il suo utilizzo è
semplice, sufficientemente intuitivo e aperto alla comprensione anche di chi
non possegga particolari competenze informatiche. Queste due caratteristiche
derivano dal fatto che HTML non è altro che un linguaggio di formattazione e
visualizzazione di testo, un linguaggio che, partendo da un testo qualsiasi,
definisce per ogni elemento la sua dimensione, forma, colore, posizione ecc…
HTML (Hyper Text Markup Language)
nasce dalla aggiunta dell'elemento Link che Tim Berners-Lee apportò ad una
applicazione SGML (Standard Generalized
Markup Language) utilizzata all'interno del CERN di Ginevra per la
circolazione dei documenti. In questo modo ad un testo si applica una marcatura
che ne definisce la formattazione degli elementi, tra cui la possibilità per un
elemento di costituire da collegamento ad un altro documento. Il fatto che
tutto avvenga nella semplice definizione ad un unico livello della marcatura
rende l'utilizzo di HTML semplice, tuttavia ne compromette fin da l'inizio la
potenza (Darnel, 1998, 11). Definendo il link, la formattazione, ma anche altre
informazioni quali ad esempio i metadati, a uno stesso livello, il mio
documento presenterà tutti questi elementi come unità rendendo difficoltosa la
trasmissione, l'interscambio differenziato, di questo tipo di informazioni.
La
cosa, detta così, può apparire non chiara, ma la scarsa predittività del link è
in parte conseguenza di questa impossibilità in HTML di scindere i pacchetti di
informazione. Se io esprimo i dati, i collegamenti e la formattazione sullo
stesso documento, una volta volessi posizionare quel documento diversamente
nella mia rete ipertestuale non potrò utilizzare solo le informazioni che mi
servono per costituire la nuova relazione ma dovrò trascinarmi tutto il
documento. In HTML i collegamenti fra documenti risultano molto spesso rozzi,
nel senso che si presentano o incapaci di comunicare la reale relazione
semantica che attivano o incapaci di offrire un testo che realizzi la relazione
semantica promessa. Questo proprio per la rigidità del linguaggio che posiziona
ogni tipo di marcatura allo stesso livello.
In
pratica HTML non consente nessun tipo di ordinamento semantico
dell'informazione, non è possibile definire al suo interno una struttura o
stabilire quali sezioni convoglino quale tipo di dati.
La
situazione è poi aggravata dal fatto che attualmente sulla rete le informazioni
convogliate da un documento non si limitano a testo ed immagine ma molto spesso
riguardano database, suoni, video, audio. HTML è stato chiamato a descrivere
tipi differenti e specifici di informazioni, a definire relazioni complesse di
collegamenti fra documenti, a trasmettere informazioni in diversi formati, cosa
per la quale non era stato progettato e che ha reso evidente la sua eccessiva
rigidità. Non a caso l'HTML è oggi affiancato da una miriade di supporti sul
server (CGI, JAVA) che ne accrescono le potenzialità ma che acutizzano il
problema della così detta balcanizzazione
del Web, cioè della sua frammentazione in territori di informazione gestita
da linguaggi diversi (Floyd, 2000).
Oggi
per la comunità informatica si offre tuttavia una possibilità di rendere più
agilmente gestibile l'informazione in Internet, come anche nelle reti locali.
Questa possibilità è offerta dal linguaggio di marcatura XML (Extensible Markup Language), un linguaggio
che ha come sue caratteristiche fondamentali quelle di rendere libera e
personale la marcatura del testo nonché di suddividere l'informazioni finale
prodotta attraverso più documenti.
XML
fu sviluppato dal XML Working Group, un gruppo di lavoro costituitosi nel 1996,
all'interno del World Wide Web Consortium
(W3C), il consorzio di aziende e produttori informatici che ha il compito di
fornire per il Web strumenti il più possibili standardizzati. Il gruppo di
lavoro era presieduto da Jon Bosak della Sun Microsystems con la partecipazione
attiva dell’XML Special Interest Group (precedentemente noto come SGML Working
Group) anch’esso organizzato dal W3C.
L’obiettivo
di questo gruppo di lavoro era di portare la potenza di SGML nel Web,
possibilmente semplificandone la complicata sintassi e costruendo un linguaggio
agile e flessibile (Young, 2000).
Negli
obiettivi progettuali del gruppo di lavoro XML si doveva presentare come un
linguaggio semplice da utilizzare su Internet, in grado di supportare un gran
numero di applicazioni, compatibile con SGML, costruito in modo da poter
risultare intuitivamente leggibile dal programmatore, facilitando così la
rapidità di progettazione (Floyd, 2000). Questi obbiettivi sono stati raggiunti
attraverso due caratteristiche di XML: innanzi tutto la libertà di marcatura,
per cui liberamente un programmatore decide quale nome e quale struttura dare
ai tag di marcatura, la divisione su due distinti file dei dati e della loro
formattazione consente invece un'agile gestione dell'informazione.
Sostanzialmente
un documento XML si costituisce di tre parti. Nel documento XML puro abbiamo
unicamente i dati di testo, marcati da tag di apertura e chiusura che possono
essere liberamente posti dal programmatore. In un altro documento viene invece
dichiarata la struttura secondo la quale è stata espressa la marcatura dei
dati. Questa dichiarazione può essere espressa o attraverso una DTD (Document Type Declaretion) o attraverso
un XML Schema, cioè attraverso due differenti modalità di dichiarazione che più
avanti esporremo meglio. In fine l'ultimo fondamentale stadio di definizione
dell'informazione si attua nel foglio di stile, cioè in un documento che
specifichi quale formattazione i dati debbano assumere. I fogli di stile
possono essere espressi in più linguaggi: XSL, che è il linguaggio di
formattazione costruito per XML, ma anche CSS o addirittura HTML.
Già
da queste semplici osservazioni si può capire come un linguaggio di questo tipo
offra un'alta flessibilità, sia nella definizione della struttura dei dati, sia
nella rappresentazione. In pratica, poiché i dati sono collocati a livello
diverso rispetto alla loro struttura e alla loro visualizzazione, essi possono
essere trasferiti verso nuovi rapporti strutturali e verso nuove funzioni
fruitive.
Una
delle caratteristiche principali dell’XML è la possibilità di fornire una
struttura a un documento. La struttura fornita è sia logica che fisica. Logica
nel senso che definisce ordine e gerarchia degli elementi in gioco. Fisica
poiché contiene i dati effettivi utilizzati nel documento, quali il testo
memorizzato nella memoria del computer, un’immagine memorizzata nel Web e così
via.
Ogni
documento XML deve innanzi tutto iniziare con una dichiarazione di tipo di documento, che definisce quale tipo di
documento si sta iniziando a descrivere nonché la versione delle specifiche
usate (Giannì, 2000). Una dichiarazione base si presenta in questo modo:
<?xml
version="1.0"?>
Una
dichiarazione XML può inoltre contenere una dichiarazione di codifica
(encoding) e una dichiarazione di documento autonomo (standalone). La
dichiarazione di codifica identifica lo schema di codifica dei caratteri, ad
esempio UTF-8 o EUC-JP. La dichiarazione di documento autonomo identifica
l’esistenza delle dichiarazioni di markup esterne al documento. Questo tipo di
dichiarazione può assumere valore yes o no.
<?xml
version="1.0" encoding="UTF-8"
standalone="yes"?>
Oltre
a questo è molto spesso necessario inserire una dichiarazione del tipo di
documento DTD al quale si fa riferimento. In pratica si rimanda ad un file nel
quale si è precedentemente definita la struttura che devono possedere i tag
utilizzati. Questa dichiarazione può anche essere diretta a un file esterno che
contiene tutta o parte della DTD e deve essere visualizzata dopo la
dichiarazione XML ma prima dell’inizio del
documento (Giannì, 2000). Ad esempio:
<?xml
version="1.0"?>
<!DOCTYPE
Esempio SYSTEM "esempio.dtd">
Con
DOCTYPE semplicemente si assegna un nome al documento, con SYSTEM si rimanda al
file che contiene la DTD, cioè la dichiarazione della struttura alla quale il
documento che andremo a scrivere dovrà uniformarsi.
A
questo punto è possibile iniziare a scrivere il nostro documento. Tutti i dati
contenuti nel mio documento dovranno essere inseriti all'interno di due tag:
uno di apertura, al quale potrò assegnare qualsiasi nome, a parte ovviamente
quelli già assegnati ad altri elementi, e uno di chiusura che porterà lo stesso
nome di quello di apertura preceduto però da una barra obliqua (slash).
Il
primo elemento, il primo tag, che verrà postò sarà l'elemento documento, spesso chiamato anche root, questo elemento conterrà tutti gli altri e
tutti i dati inseriti nel documento e ad esso bisognerà fare riferimento
qualora si voglia richiamare l'intero documento. E' quindi chiaro che potrà
esistere un solo elemento documento, che dovrà aprirsi all'inizio e chiudersi
alla fine, tutti gli altri elementi dovranno stare al suo interno e nessuno lo
potrà affiancare allo stesso livello della gerarchia (Giannì, 2000).
<?xml
version="1.0"?>
<!DOCTYPE
Esempio SYSTEM "esempio.dtd">
<DOCUMENTO>
<AUTORE>
Paolo </AUTORE>
<TITOLO>
Esempio minimo </TITOLO>
</DOCUMENTO>
Escludendo
l'elemento di documento, l'elemento iniziale, tutti gli altri possono essere
tranquillamente nidificati l'uno dentro l'altro. Un elemento che contiene al
suo interno un altro è detto genitore dell'elemento figlio, od anche
semplicemente parente. Ogni elemento
secondario, cioè un elemento diverso dall’elemento di documento risiede
interamente all’interno del relativo elemento
principale, così :
<DOCUMENTO>
<GENITORE1>
<FIGLIO1>
dati </ FIGLIO1>
<
FIGLIO2> dati </ FIGLIO2>
</
GENITORE1>
</DOCUMENTO>
E'
importante notare fin da ora come la struttura che viene a delinearsi in base a
queste semplici regole sarà comunque una struttura gerarchica, o ad albero, ma
mai circolare. Un elemento figlio non potrebbe mai contenere al suo interno un
elemento padre. Qualora si volesse inserire un elemento vuoto, e questo può
essere molto utile per segnalare dati esterni o non di testo, ci si deve
ricordare che la sintassi richiede non di aprire e chiudere un tag, ma
semplicemente di indicare un tag seguito da una sbarra:
<IMG
/>
La
struttura fisica di un documento XML è costituita da tutto il contenuto del
documento stesso. Questo contenuto può essere rappresentato da semplice testo
come anche da altri elementi definiti entità.
Le unità di memorizzazione definite entità, possono essere parte integrante del
documento o possono essere esterne. La caratteristica delle entità è di venir
identificate da un nome univoco e da un contenuto specifico che può essere
costituito da un singolo carattere all’interno del documento o da un file
esterno di grandi dimensioni. L'utilità di questo tipo di dati è quella di
poter richiamare informazione esterna al file, magari dati salvati con formati
diversi da quello di testo, tipo un'immagine ma anche documenti Word o Excel,
oltre a ciò è possibile definire per alcune informazioni un nome univoco e
quindi richiamarla in qualsiasi punto facendo riferimento al solo nome di
entità. Dopo aver dichiarato la DTD, l’entità può essere utilizzata in un punto
qualsiasi del documento. Un riferimento di entità indica all’elaboratore di
recuperare il contenuto di un’entità, come stabilito dalla dichiarazione di
entità, e di utilizzarla all’interno del documento. Sintatticamente le
dichiarazioni di entità vanno all'interno della dichiarazione di documento tra
due parentesi quadrate (Giannì, 2000).
Ad esempio, una
dichiarazione di entità potrebbe avere questa forma:
<!DOCTYPE
Esempio [
<!ENTITY
autore "nome autore">
] >
Ogni
volta che nel documento viene fatto riferimento a questa entità, quest’ultima
verrà sostituita dal contenuto. Modificando il contenuto dell’entità nella
dichiarazione la modifica avrà effetto
in qualsiasi punto del documento in cui venga richiamata l’entità.
Per
richiamare un'entità in un qualsiasi punto del documento è sufficiente inserire
una e commerciale (&) e immettere il nome dell’entità seguito da punto e
virgole (;). Ad esempio nel modo seguente:
<TITOLO>
Tesi in filosofia di: &autore;</ TITOLO >
Se
l'entità dichiarata è un'entità esterna,
gestita da un altro programma essa è detta entità non analizzabile e richiede
informazioni diverse da quelle incluse in un’entità analizzabile. Viene infatti
richiesta un’annotazione che identifica il formato o il tipo di risorsa per cui
l’entità viene dichiarata. Ad esempio :
<!ENTITY
MiaImmagine SYSTEM "Img1.gif" NDATA GIF>
Questa
dichiarazione significa che l’entità MiaImmagine è un file gestibile in
formato GIF. Nella dichiarazione è pure
necessario indicare quale applicazione dovrà essere attivata per la lettura di
questo formato di dati. La dichiarazione di annotazione consente
all’applicazione XML di gestire i file esterni. Nel caso fatto precedentemente,
la dichiarazione di annotazione potrebbe assumere la forma seguente:
<!NOTATION
GIF SYSTEM "/Utils/Gifview.exe">
In
pratica viene indicato alla applicazione XML a quale altra applicazione
rivolgersi per l'elaborazione di questo tipo di dati, ovviamente è necessario
fornire un percorso completo di localizzazione della applicazione annotata.
Nel
linguaggio XML alcuni caratteri sono utilizzati per contrassegnare il documento
in modo specifico. Le parentesi angolari (<>) e la barra (/) sono
interpretate come markup e non come dati di un carattere effettivo.
Questi
e altri caratteri sono riservati per il markup e non possono essere utilizzati
come contenuto. L'unica possibilità di utilizzare direttamente questi caratteri
è quella di utilizzare una applicazione in grado di gestire automaticamente la
transcodifica. Altrimenti se si desidera che questi caratteri siano
visualizzati come dati, è necessario utilizzare determinate entità predefinite
in grado di richiamare i caratteri necessari senza fare ricorso al loro
effettivo codice binario che sarebbe altrimenti confuso con istruzioni
sintattiche. Qui sotto riportiamo i codici di queste entità predefinite:
< < (parentesi
angolare di apertura)
> > (parentesi
angolare di chiusura)
& ; & (e
commerciale)
' ‘ (apostrofo)
" "
(virgolette doppie)
Ultima
cosa di cui dobbiamo trattare per descrivere la sintassi XML è la possibilità
di inserire all'interno degli elementi degli attributi. Gli attributi consentono di associare valori a un
elemento senza che siano considerati parte del contenuto dell’elemento stesso
(Giannì, 2000). In pratica di un elemento, oltre al suo contenuto, è possibile
definire alcuni valori espressi negli attributi, questi valori potranno poi
esseri richiamati in fase di visualizzazione senza doversi riferire all'intero
contenuto dell'elemento. Possiamo immaginare di associare ad un elemento un
attributo in questo modo:
<DOCUMENTO>
<AUTORE>
Manzoni </AUTORE >
<TITOLO
genere="romanzo"> Promessi Sposi </TITOLO>
</
DOCUMENTO >
L’attributo
"genere" all'interno dell'elemento <TITOLO> aggiunge
informazione, che può essere interessante richiamare separatamente rispetto a
quella contenuta nei dati fra i due tag dell'elemento. Sintatticamente
l'attributo segue sempre il nome dell'elemento nel suo tag di apertura, il
valore è specificato dopo l'uguale tra virgolette.
Aggiungendo
semplicemente che i dati preceduti da questi caratteri: <!-- , e chiusi da
quest'altri: -->, sono commenti,
cioè dati che non vengono analizzati dall'applicazione XML ma che semplicemente
sono posti dal programmatore come propri punti di riferimento, è possibile
riportare l'esempio di un listato di un ipotetico documento XML, chiamato
esempio.xml, che segua in modo corretto la sintassi:
Figura 4.1 esempio.xml.
|
<?xml version="1.0"?> <!DOCTYPE esempio [ <!-- Entità interne --> <!ENTITY tasc "tascabile
economico"> <!ENTITY ill "edizione
illustrata"> <!ENTITY rig "copertina rigida"> <!-- Entità esterne non analizzate --> <!-- Necessitano di una notazione che richiami
il programma necessario per avviarne la lettura --> <!NOTATION IMG SYSTEM "Addobe
Photoshop"> <!NOTATION DOC SYSTEM "Microsoft Word
document"> <!ENTITY anelli SYSTEM "anelli.gif"
NDATA IMG> <!ENTITY foglie SYSTEM "foglie.gif"
NDATA IMG> <!ENTITY spada SYSTEM "spada.gif"
NDATA IMG> <!ENTITY an1 SYSTEM "ancap1.doc"
NDATA DOC> <!ENTITY fo1 SYSTEM "focap1.doc"
NDATA DOC> <!ENTITY ar1 SYSTEM "arcap1.doc"
NDATA DOC> ] > <INVENTORY> < BOOK InStock="n"
Images="anelli" Rewiews="an1"> <TITLE>Il Signore degli anelli
</TITLE> <AUTHOR Born="18**"> J.R.R.
Tolkien </AUTHOR> <BINDING> &tasc; </BINDING> <PAGES> 1326 </PAGES> <PRICE Euro="19"> $15
</PRICE> </BOOK> < BOOK InStock="s"
Images="foglie" Rewiews="fo1"> <TITLE> Foglie d'erba </TITLE> <AUTHOR Born="18**"> Walt Whitman
</AUTHOR> <BINDING> &tasc;</BINDING> <BINDING> Edizione esaurita </BINDING> <PAGES> 102 </PAGES> <PRICE Euro="10"> $5
</PRICE> </BOOK> < BOOK InStock="s"
Images="spada" Rewiews="ar1"> <TITLE>Le leggende di re Artù </TITLE> <BINDING> &ill; </BINDING> <PAGES> 106 </PAGES> <PRICE Euro="29"> $25
</PRICE> </BOOK> </INVENTORY> |
Siccome
questo documento segue correttamente la sintassi è detto ben formato, nel senso che segue tutte le norme che permetteranno
al computer di leggere correttamente le istruzioni esposte nel listato.
Riassumendo si può dire che un documento è ben formato se segue le seguenti
regole:
§ Tutti
i tag di apertura e di chiusura corrispondono.
§ I
tag vuoti utilizzano una sintassi XML speciale.
§ Tutti
i valori degli attributi sono racchiusi tra virgolette.
§ Tutte
le entità sono dichiarate.
Una
delle caratteristiche fondamentali di XML è quella di consentire a chi lo
utilizza di costruire documenti che presentino la struttura logica che più si
ritiene opportuna. La gerarchia e l'ordine degli elementi posti come marcatori
dei dati del documento non è vincolata da regole rigide ma può essere definita
di volta in volta in base alle proprie necessità ed intenzioni. La definizione
della struttura del documento è posta nella DTD (Document Type Defintion) cioè in una dichiarazione delle regole
gerarchiche che i vari elementi del documento dovranno seguire.
Accanto
a documenti ben formati, cioè sintatticamente corretti, esistono quindi anche documenti validi, cioè documenti che
seguono la corretta gerarchia strutturale del documento. Naturalmente un documento può essere detto
valido o non valido solo in riferimento ad un dichiarazione di documento. Una
DTD deve essere inserita all'interno della dichiarazione di documento di un
file, tuttavia essa non deve essere fisicamente presente nel file ma è
possibile richiamare per quel file una DTD esterna. Questo significa che una
stessa DTD può servire per un numero indefinito di documenti. Per richiamare
una DTD esterna è sufficiente richiamare al seguito della istruzione SYSTEM il
nome del file nel quale è stata dichiarata la struttura del documento:
<?xml version="1.0"?>
<! DOCTIPE ESEMPIODTD SYSTEM
"esempiodtd.dtd">
Per
descrivere quale sintassi una DTD deve seguire esporremo subito un listato nel
quale, per il file precedentemente presentato, privo solo delle entità, viene
dichiarata la struttura del documento.
Figura 4.2 dtdesempio.xml.
|
<?xml version="1.0"?> <!DOCTYPE DTDESEMPIO [ <!ELEMENT INVENTORY (BOOK)*> <!ELEMENT BOOK (TITLE, AUTHOR?, BINDING+,
PAGES, PRICE)> <!ATTLIST BOOK InStock (s | n) #REQUIRED> <!ELEMENT TITLE (#PCDATA | SUBTITLE)> <!ELEMENT SUBTITLE (#PCDATA)> <!ELEMENT AUTHOR (#PCDATA)> <!ATTLIST AUTHOR Born CDATA #IMPLIED> <!ELEMENT BINDING (#PCDATA)> <!ELEMENT PAGES (#PCDATA)> <!ELEMENT PRICE (#PCDATA)> <!ATTLIST PRICE Euro CDATA "non
disponibile"> ] > <INVENTORY> < BOOK InStock="n"> <TITLE>Il Signore degli anelli
</TITLE> <AUTHOR Born="18**"> J.R.R.
Tolkien </AUTHOR> <BINDING> tascabile </BINDING> <PAGES> 1326 </PAGES> <PRICE Euro="19"> $15
</PRICE> </BOOK> < BOOK InStock="s"> <TITLE> Foglie d'erba </TITLE> <AUTHOR Born="18**"> Walt Whitman
</AUTHOR> <BINDING> tascabile </BINDING> <BINDING> Edizione esaurita </BINDING> <PAGES> 102 </PAGES> <PRICE Euro="10"> $5
</PRICE> </BOOK> < BOOK InStock="s"> <TITLE>Le leggende di re Artù </TITLE> <BINDING> Illustrato </BINDING> <PAGES> 106 </PAGES> <PRICE Euro="29"> $25
</PRICE> </BOOK> </INVENTORY> |
Innanzi
tutto bisogna notare come la dichiarazione vada posizionata all'interno
dell'elemento DOCTYPE, inserita fra due parentesi quadre (Giannì, 2000). Ogni
elemento che si vorrà dichiarare seguirà questa sintassi:
<!ELEMENT
nomelemento >
A
seguito del nome di elemento, racchiuso fra parentesi bisognerà poi specificare
che tipi di dati saranno contenuti nell'elemento. Si potrà fare riferimento o a
altri elementi o a semplici dati di testo. Se si vuole dichiarare la presenza
di altri elementi secondari rispetto all'elemento che si sta dichiarando
semplicemente si inserirà il nome di tali elementi, separati da virgola:
<!ELEMENT
BOOK (TITLE, AUTHOR, BINDING, PAGES, PRICE)>
Se
si intende dichiarare che all'interno dell'elemento saranno posizionati solo
dati allora si inserirà la parola chiave #PCDATA:
<!ELEMENT
BINDING (#PCDATA)>
La
virgola (,) sarà utilizzata per indicare una successione di elementi, qualora
si voglia indicare un'alternatività si potrà separare gli elementi dichiarati
attraverso il carattere pipe (|). A seguito del nome di un elemento inserito
fra parentesi sarà possibile inserire i seguenti caratteri di asterisco, punto
interrogativo e più. L'asterisco (*) indica che l'elemento dichiarato potrà
presentarsi all'interno dell'elemento superiore nessuna o più volte. Il punto
interrogativo (?) indicherà una presenza dell'elemento per nessuna o una volta.
Il simbolo più (+) definirà la possibilità per l'elemento di presentarsi uno o
più volte. Questi simboli possono posizionarsi anche fuori dalla parentesi ed
allora avranno valore per tutti gli elementi contenuti nella parentesi (Young,
2000).
<!ELEMENT INVENTORY (BOOK)*>
<!ELEMENT BOOK (TITLE, AUTHOR?, BINDING+, PAGES,
PRICE)>
<!ELEMENT TITLE (#PCDATA | SUBTITLE)>
<!ELEMENT SUBTITLE (#PCDATA)>
Ogni
elemento potrà anche possedere degli attributi. Gli attributi vanno dichiarati
immediatamente a seguito dell'elemento tramite questa sintassi:
<!ATTLIST nomeelemneto nomeattributo tipodidato
"dichiarazionedivalore">
Il
tipo di dato può essere:
§ Tipo stringa,
e in questo caso si può far seguire un qualsiasi tipo di dato in formato testo.
Questo tipo di attributi viene dichiarato facendo seguire al nome di attributo
la parola chiave CDATA alla quale è possibile far seguire, chiuso tra
virgolette, un valore di stringa predefinito:
<!ATTLIST PRICE Euro CDATA "non
disponibile">
§ Tipo token, si tratta di
attributi limitati in varie maniere. Ad esempio la parola chiave ID indica che
l'attributo in ciascun elemento deve possedere valore univoco. ENTITY indica
che il valore di attributo deve essere costituito da una entità esterna
dichiarata nella DTD. MNTOKEN indica che il valore dell'attributo deve essere
costituito da uno o più punti (.) trattini(-) o caratteri di sottolineatura
(_).
§ Tipo numerato, in
questo caso il valore dell'attributo deve appartenere ad una serie di
alternative indicate nella dichiarazione:
<!ATTLIST BOOK InStock (s | n) #REQUIRED>
La
dichiarazione di valore dell'attributo può assumere quattro forme:
§ Può
essere semplicemente un valore predefinito indicato tra virgolette grazie alla
digitazione di una stringa.
§ Può
essere specificata dalla parola chiave #REQUIRED, ed in questo caso si indica
che è sempre necessario dichiarare il valore di un attributo.
§ Può
determinarsi in base alla parola chiave #IMPLIED, ed in questo caso si indica
che il valore dell'attributo può essere assegnato come omesso.
§ Può
essere eseguita utilizzando la parola chiave #FIXED seguita dalla dichiarazione
di un valore predefinito messo fra virgolette. In questo caso è possibile
inserire o omettere il valore di attributo, nel caso lo si omettesse
automaticamente l'applicazione assegna il valore predefinito indicato tra
virgolette:
<!ATTLIST BOOK InStock (s | n) #FIXED "s">
<!ATTLIST LIBRO rilegatura CDATA #FIXED "in
pelle">
La
DTD fu il primo sistema di definizione della struttura di documento elaborato
all'interno del W3C (World Wide Web
Consortium), tuttavia ad oggi questo sistema, per quanto sia ormai
largamente diffuso, comincia a mostrare i suoi limiti. Il problema fondamentale
è che la DTD è costruita mediante una sintassi diversa da quella XML. Questa
cosa genera due diverse difficoltà, la prima è che per analizzare un documento
DTD sarà necessario un programma differente che non quello per analizzare il
file XML, inoltre il riferirsi al file XML mediante una diversa sintassi rende
impossibile la descrizione del nodo di un nodo (Floyd, 2000).
Le
soluzioni che il W3C ha studiato per ovviare a queste difficoltà si sono basate
sulla formazione di alcune definizioni di schema. Una definizione di schema è
un documento XML, scritto con sintassi XML, che definisce uno schema, che
vincola un altro documento ad assumere una certa forma e gerarchia. Il W3C ha
formulato diverse specifiche (DCD, XML-Data, DDML) ma attualmente punta su una
specifica chiamata XML Schema che si candida a sostituire nel futuro le DTD
(Floyd, 2000).
In
un documento XML Schema, successivamente alla dichiarazione di istruzione che definisce il documento come
XML, bisogna aprire un elemento Schema, all'interno del quale si posizionerà
tutta la definizione dello schema (Giannì, 2000).
<?xml
version="1.0">
<Schema
name="nomeschema"
xmlns="urn:schemas-microsoft-com:xml-data"
xmlns:dt="urn:schemas-microsoft-com:datatypes>
<!--
Inserire qui la definizione dello schema -->
</Schema>
Dopo
aver dichiarato l'apertura di un documento XML si dichiara il nome dello
schema. Nei due passi successivi della apertura di documento si fa ricorso ai namespace.
I
namespace sono un sistema per l'utilizzo di nuovi tipi di sintassi all'interno
di XML. In pratica vengono definiti dei nomi univoci coi quali richiamare
alcuni elementi che si intendono porre nel documento. Per definire questi nuovi
elementi, che saranno standard per tutte le dichiarazioni che seguano lo stesso
schema di namespace, si richiama una URN (Uniform
Resource Names), cioè un esterno file di schema nel quale sia definito il
ruolo di un determinato spazio di nomi.
Nell'esempio
qui sopra abbiamo inizialmente la dichiarazione dell'URN per i namespace di XML
Schema, in seguito si dichiara l'URN per l'elemento dt, data type, che verrà in
seguito richiamato nella esposizione completa dello schema.
Mostriamo
immediatamente un possibile listato che utilizzi degli elementi dichiarati
tramite la tecnica dei namespace. In questo esempio si riporta la definizione
di uno schema di catalogazione di dati relativi ad una email.
Figura 4.3 schemaesempio.xml.
|
<?xml
version="1.0"?> <Schema
name="email" xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-microsoft-com:datatypes"> <AttributeType name="language"
dt:type="enumeration" dt:values="Western Greek Latin
Universal"/> <AttributeType name="priority"
dt:type="enumeration" dt:values="NORMAL LOW HIGH"/> <AttributeType name="hidden"
default="true"/> <ElementType name="to"
content="textOnly"/> <ElementType name="from"
content="textOnly"/> <ElementType name="cc"
content="textOnly"/> <ElementType name="bcc"
content="mixed"> <attribute type="hidden"
required="yes"/> </ElementType> <ElementType name="subject"
content="textOnly"/> <ElementType name="body"
content="textOnly"/> <ElementType name="email"
content="eltOnly"> <attribute type="language"
default="Western"/> <attribute type="priority"
default="NORMAL"/> <element type="to"
minOccurs="1" maxOccurs="*"/> <element type="from"
minOccurs="1" maxOccurs="1"/> <element type="cc"
minOccurs="0" maxOccurs="*"/> <element type="bcc" minOccurs="0"
maxOccurs="*"/> <element type="subject"
minOccurs="0" maxOccurs="1"/> <element type="body"
minOccurs="0" maxOccurs="1"/> </ElementType> </Schema> |
Si
possono notare subito due cose: la struttura dichiarata è la stessa che ci si
potrebbe aspettare da una DTD, tuttavia la sintassi utilizzata è abbastanza
diversa. Si tratta infatti di una sintassi XML nella quale gli elementi
acquistano un ruolo in virtù della dichiarazione di spazio di nome espressa a
seguito dell'elemento xmlns.
Scorriamo
ora il listato per cercare di capire cosa sia stato dichiarato. L’elemento To è
dichiarato in modo che sia ripetuto una o più volte. I riferimenti all’elemento
To sono gli attributi minOccurs="1" e maxOccurs="*", che
indicano che l’elemento deve occorrere almeno una volta e che il numero di
ripetizioni è illimitato (Giannì, 2000).
L’elemento
From è dichiarato in modo che occorra una sola volta. I riferimenti
all’elemento From sono minOccurs="1" e maxOccurs="1", che
indicano che l’elemento deve occorrere una sola volta.
Gli
elementi Cc e Bcc sono dichiarati in modo che gli elementi siano opzionali e
occorrano più di una volta. Ambedue gli elementi devono contenere gli attributi
minOccurs="0" e maxOccurs="*", che indicano che sono
opzionali e che il numero di occorrenze è illimitato.
Gli
elementi Subject e Body sono dichiarati in modo che gli elementi siano
opzionali e che possano occorrere una sola volta. Gli attributi
minOccurs="0" e maxOccurs="1" indicano che gli elementi
sono opzioni e che possono apparire una sola volta.
Gli
elementi Email e Bcc hanno attributi associati, con valori predefiniti dove
necessario. I tipi di attributi sono dichiarati nel livello superiore del
documento e vi viene fatto riferimento nelle rispettive dichiarazioni dei tipi
di elemento. Non occorre dichiarare i tipi di attributi al livello superiore,
poiché è sufficiente che siano dichiarazioni a livello locale.
La
maggior parte degli elementi è dichiarata come elementi di testo. La maggior
parte delle dichiarazioni include l’attributo content"textOnly", che
indica che esse contengono solo testo. L’eccezione è rappresentata
dall’elemento Email, che contiene solo sottoelementi, e dall’elemento Bcc, che
contiene un attributo oltre al testo.
Ora
che abbiamo osservato la dichiarazione di Schema vediamo quale ipotetico file
XML potrebbe corrisponderle. Potremo così osservare in che senso si utilizza
nella dichiarazione una stessa sintassi XML supportata dalla definizione di uno
spazio dei nomi.
<?xml
version="1.0"?>
<em:email
xmlns:em="x-schema:schemaesempio.xml" language="Western"
priority="high">
<em:to>Luca-B@hotmail.com</em:to>
<em:from>Mirko-L@
hotmail.com</em:from>
<em:cc>Giusy-M@
hotmail.com</em:cc>
<em:subject>Saluti</em:subject>
<em:body>Ti
mando i miei saluti</em:body>
</em:email>
La
prima cosa da notare è come, nell’elemento em:email, l'elmento principale, sia
presente un riferimento allo spazio del nome dello schema. Inoltre nel
documento tutti i tag degli elementi contengono il prefisso em, che li identifica come parte di un namespace associato. Questo significa
che l'elemento è riconosciuto dall'applicazione come legato ad una struttura di
documento in virtù di due cose: il prefisso em
che li rimanda ad una dichiarazione nel prologo del documento ad uno
schema, nel documento dove verrà espresso lo schema apparirà a sua volta nel
prologo una dichiarazione che specificherà gli elementi utilizzati come
attuatori di un certo tipo di funzioni (Floyd, 2000).
Ad
eccezione della presenza di una dichiarazione nel prologo e della necessità di
far precedere ogni elemento da un prefisso em, il documento presenta la stessa
sintassi che si ci aspetterebbe da un documento XML collegato ad una DTD.
Da
queste prime osservazioni relative a uno specifico file proviamo ora a capire
meglio, almeno per le sue caratteristiche fondamentali, la sintassi di uno
schema.
Il
tipo di elemento è dichiarato nell’elemento ElementType
(Giannì, 2000). A seguito della
dichiarazione del tipo di elemento si deve inserire un attributo name, che definisce il nome
dell'elemento. Ad esempio:
<ElementType
name="BOOK">
A
questo punto è necessario definire il tipo di contenuto dell'elemento. Questo
può essere definito attraverso l’attributo content.
Ogni
tipo di elemento può contenere una delle quattro categorie relative al
contenuto: vuoto, solo testo, solo sotto elementi o una combinazione di testo e
sotto elementi:
§ Empty, se l'elemento non
contiene alcun tipo di contenuto
§ TextOnly, se contiene solo
testo
§ EltOnly, contiene solo
sotto elementi
§ Mixed, nel caso di una combinazione di testo e
sotto elementi
Utilizzando
l’attributo order è invece possibile
specificare l'ordine di apparizione
degli elementi. Order possiede questi possibili valori:
§ Seq, in questo caso gli elementi devono apparire
nella stessa sequenza degli elementi a cui si fa riferimento nella
dichiarazione del tipo di elemento.
§ One, almeno un sotto
elemento dichiarato nella dichiarazione del tipo di
elemento deve essere contenuto
nell’elemento principale.
§ All, un elemento di ogni tipo dichiarato nella
dichiarazione del tipo di
elemento deve comparire come sotto elemento, ma i sotto
elementi possono avere un ordine qualsiasi.
§ Many, ciascuno degli elementi dichiarati nella
dichiarazione del tipo di
elemento può avere un ordine qualsiasi.
<ElementType
name="nome" content="textOnly"/>
<ElementType
name="cognome" content="textOnly"/>
<ElementType
name="ruolo" content="textOnly"/>
<ElementType
name="anzianità" content="textOnly"/>
E'
anche possibile applicare vincoli in modo da determinare la posizione e il
numero delle volte in cui un elemento o un gruppo può essere ripetuto
all’interno di un documento. Gli attributi minOccurs e maxOccurs possono essere
specificati all'interno dell'elemento
ElementType. L’attributo minOccurs specifica il numero minimo delle
ripetizioni di un elemento, mentre maxOccurs quello massimo. L'asterisco (*)
indica che il valore può ricorrere più volte.
Come
valore predefinito minOccurs e maxOccurs hanno 1, questo significa che, se non
specificato diversamente, gli elementi devono occorrere una sola volta
all’interno di un determinato tipo di elemento. Nell’esempio che segue il
gruppo deve occorrere almeno una volta, quindi anche più volte:
<ElementType
name="name" content="textOnly"/>
<ElementType
name="zone" content="textOnly"/>
<ElementType
name="light" content="textOnly"/>
<ElementType
name="price" content="textOnly"/>
<ElementType
name="plant" content="eltOnly" order="seq">
<element
type="name"/>
<group
minOccurs="1" maxOccurs="*" order="one">
<element
type="zone"/>
<element
type="light"/>
<element
type="price"/>
</group>
</ElementType>
Uno
dei vantaggi di XML Schema è quello di descrivere accuratamete il tipo dei dati
trattati nella dichairazione. Come gli schemi sono definiti dallo spazio dei
nomi xml-data, allo stesso modo i tipi di dati sono definiti dallo spazio dei
nomi datatypes, come nel seguente
esempio:
<Schema
name="wildflowers"
xmlns="urn:schemas-microsoft-com:xml-data"
xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882">
<AttributeType
name="dateorder"/>
<ElementType
name="BOOK">
<attribute
type="dateorder"/>
</ElementType>
</Schema>
Un
tipo di dati viene definito riferendosi ad esso con l’attributo type nello
spazio dei nomi datatypes (Giannì,
2000). Nell’esempio seguente, viene specificato un tipo di dati per il tipo di
attributo dateorder:
<AttributeType
name="dateorder" dt:type="dateTime"/>
<ElementType
name="BOOK">
<attribute
type="dateorder"/>
</ElementType>
Come
si sarà capito una elaborazione in XML si costruisce grazie al collegamento di
più file. Come abbiamo fin ora visto in un documento possiamo posizionare i
soli dati, che non hanno nessuna forma se non che sono inseriti in una
gerarchia di marcatura, in un altro definiamo la struttura che più documenti
dello stesso tipo possono condividere. Fino a questo punto non abbiamo ancora
detto nulla della visualizzazione dei dati. Secondo la filosofia del XML la
visualizzazione del dato starà in un file ben distinto dal dato stesso. Questo
significa che lo stesso gruppo di dati potrà essere visualizzato diversamente a
seconda del documento di visualizzazione al quale verrà correlato. Questo fatto
è molto importante perché rappresenta la fondamentale differenza fra una
gestione dell'informazione tramite XML piuttosto che tramite un programma, che
sia di scrittura, che sia un database o che sia un documento per il Web,
progettato per gestire tutto il processo di trattamento dei dati,
dall'archiviazione, alla trasmissione, alla visualizzazione.
I
documenti utilizzati per descrivere la visualizzazione dei dati sono detti
fogli di stile. Si possono adoperare diversi linguaggi per scrivere un foglio
di stile per dei dati XML. Lo stesso HTML può essere utilizzato, tramite una
tecnica chiamata di Binding dei dati,
per consentire la visualizzazione di documenti XML. Un altro linguaggio molto
utilizzato, grazie soprattutto alla sua diffusione in ambiente HTML, è quello
dei fogli di stile CSS (Young, 2000).
Tuttavia
il linguaggio che il gruppo di lavoro del Consorzio ha elaborato come foglio di
stile per XML è XSL (Extensible
Stylesheet Language).
Sostanzialmente
XSL è un linguaggio di estrazione dei dati. Questo significa che
l'applicazione, in base alle istruzioni del documento, estrae i dati di un
altro documento e li posiziona all'interno della sua struttura di
formattazione. Come una specie di copertina che lascia trasparire solo alcuni
dati, il foglio di stile XSL si posiziona sopra il documento XML e porta alla
attenzione dell'utente una certa forma del documento. Questa caratteristica è
fondamentale perché determina tutte le implicazioni che derivano dall'uso di
questo linguaggio.
Fino
a poco tempo fa non esistevano software XML che fossero in grado di
visualizzare un file XML secondo quanto espresso nei principi base del progetto
del consorzio W3. La situazione era quindi tale che in attesa di un processore
o di un browser che supportasse completamente XML si dotevano seguire diverse
strade, ad esempio visualizzare i file XML con viewer SGML, utilizzare l’Active
X Msxml, generare off-line dei file HTML da sorgenti XML e XSL.
La
Microsoft è l'azienda che per prima ha sviluppato due parser XML che si
integrano con Microsoft Internet Explorer 5, attraverso questa versione del
famoso browser Microsoft è ora possibile visualizzare i dati XML utilizzando i
fogli di stile XSL come dei file HTML e indipendentemente da questi.
Per
visualizzare un file XML utilizzando XSL bisogna indicare il tipo e la
locazione del foglio di stile XSL con le istruzioni di elaborazione. Bisogna
cioè che a partire da un file XML si colleghi questo file ad un documento XSL
adatto a visualizzarne i dati. La forma base per queste istruzioni di
elaborazione sono del tipo
<?xml-stylesheet
type="text/xsl" href="nome.xsl"?>
Quando
Internet Explorer 5 sfoglia il documento XML, elabora l’istruzione di
elaborazione, scarica il foglio di stile e lo utilizza per visualizzare il
documento XML. Il valore dell’attributo type
descrive il tipo del foglio di stile da attuare, se XSL "text/xsl" se
CSS "text/css". L’attributo href
è un collegamento URL relativo al foglio di stile. Se il documento XML non
contiene queste istruzioni di elaborazione, Internet Explorer 5 visualizzerà il
documento XML come un albero gerarchico con il codice di vario colore.
Per
quanto riguarda Netscape, che inizialmente non aveva dimostrato molto interesse
verso XML, sembra essere ritornata sui suoi passi. La versione 6 del browser
Navigator contiene un processore in grado di leggere e formattare i file XML.
Una
prima importante implicazione dell'utilizzo di uno strumento come XSL è che si
avrà la possibilità di lavorare con dei modelli di stile. Si potrà cioè
definire un modello di regole di formattazione per tutti gli elementi
identificati da uno stesso tag e posizionati nello stesso ordine di struttura.
Questo significa che indipendentemente dal tipo e dal numero di dati presenti
nel mio documento XML potrò, tramite un'unica regola di formattazione,
stabilire una visualizzazione a tutti gli elementi che presentino quella
marcatura e quell'ordine strutturale.
Le
istruzioni utilizzate per specificare gli elementi XML a cui viene applicato il
modello XSL vengono dette pattern (Giannì,
2000). Il metodo di corrispondenza dei pattern rende XSL un linguaggio di dichiarazioni
in contrapposizione con i linguaggi basati sulle procedure. Questo significa
che i pattern definiscono il "livello" specifico della struttura del
documento da far corrispondere identificandone la gerarchia della struttura.
XSL si caratterizza fortemente per essere un linguaggio che agisce su una
struttura, legato all'ordine gerarchico di posizione degli elementi. Per avere
un’idea della struttura di un modello, sarà sufficiente prendere in esame un
semplice foglio di stile. Sarà quindi necessario creare un documento XML a cui
applicare il foglio di stile:
<CATALOGO>
<CD>
<TITOLO>Metamorfosi</
TITOLO >
<GRUPPO>
ESTRA </ GRUPPO >
<GENERE
> Rock Ita</ GENERE >
<PRODUZIONE
ANNO="1996">URLO</ PRODUZIONE >
<PREZZO>28.000</
PREZZO >
<
SCAFFALE DISPONIBILE="si">5A</SCAFFALE>
</CD>
</CATALOGO>
Quindi
procedere con la creazione di un foglio di stile XSL per un unico modello
dell’elemento TITOLO:
<?xml
version="1.0"?>
<xsl:template
xmlns:xsl="uri:xsl">
<HTML>
<BODY>
<xsl:repeat
for="CATALOGO/CD">
<DIV>
<SPAN
STYLE="font-weight:bold; font-size:20">
<xsl:get-value
for="TITOLO"/>
</SPAN>
</DIV>
</xsl:repeat>
</BODY>
</HTML>
</xsl:template>
Il
primo pattern specifica qualsiasi elemento CD secondario all’elemento CATALOGO.
Il secondo pattern per questa regola specifica l’elemento TITOLO. In base alla
regola, qualsiasi dato trovato nell’elemento del pattern verrà inserito
nell’elemento SPAN a cui viene quindi applicato lo stile
"font-weight:bold; font-size:20". Questo modello espresso in modo
discorsivo, sarebbe formulato nel seguente modo: "Ripetere quanto segue:
per ogni elemento CD secondario dell’elemento CATALOGO: prendere il valore
dell’elemento TITOLO e inserirlo nell’elemento SPAN applicando il grassetto e
una dimensione di carattere pari a 20" (Giannì, 2000).
Quando
il documento XML viene elaborato con il foglio di stile XSL, l’elaboratore
genera il seguente codice HTML:
<HTML>
<BODY>
<DIV>
<SPAN
STYLE="font-weight:bold; font-size:20">
Metamorfosi
</SPAN>
</DIV>
</BODY>
</HTML>
Questo
ci mostra come XSL non faccia altro che estrarre una serie di dati, per inserirli all'interno di un altro tipo di
documento, che può essere scritto in un linguaggio diverso da XML. In questo
caso, come nella più parte, sono inseriti dati XML in un documento scritto in
HTML. La cosa è molto utile perché permette di produrre un file facilmente
gestibile in ambiente Web, già coerente con la tecnologia delle piattaforme
nelle quali verrà adoperato.
L'esempio
sopra riportato costruiva un unico modello di formattazione. Un foglio di stile
a più modelli utilizza i tag <xsl:stylesheet> </xsl:stylesheet>,
che a loro volta possono contenere diverse coppie di tag <xsl:template>
</xsl:template> (Giannì, 2000). Ciascuna di queste coppie può essere
applicata indipendentemente dalle altre. Nell’esempio che segue è possibile
esaminare in modo più approfondito questa struttura:
Figura 4.4 CDesempio.xml.
|
<!xml
version="1.0"> <?xml-stylesheet
type="text/xsl" href="CDesempio.xsl"?> <CATALOGO> <CD> <NOMI> <TITOLO>Metamorfosi</
TITOLO > <GRUPPO> ESTRA </ GRUPPO
> <GENERE > Rock Ita</ GENERE
> </NOMI> <DATI> <PRODUZIONE
ANNO="1996">URLO</ PRODUZIONE > <PREZZO>28.000</ PREZZO
> </DATI> <ARCHIVIAZIONE> < SCAFFALE DISPONIBILE="si">5A</SCAFFALE> </ARCHIVIAZIONE> </CD> </CATALOGO> <CATALOGO> <CD> <NOMI> <TITOLO>2020 SpeedBall</
TITOLO > <GRUPPO> TIMORIA </ GRUPPO
> <GENERE > Rock Ita</ GENERE
> </NOMI> <DATI> <PRODUZIONE
ANNO="1995">POLYGRAM</ PRODUZIONE > <PREZZO>35.000</ PREZZO
> </DATI> <ARCHIVIAZIONE> < SCAFFALE
DISPONIBILE="no">5A</SCAFFALE> </ARCHIVIAZIONE> </CD> </CATALOGO> <CATALOGO> <CD> <NOMI> <TITOLO>Stagioni</ TITOLO
> <GRUPPO> GUCCINI FRANCESCO
</ GRUPPO > <GENERE > Cantautori Ita</
GENERE > </NOMI> <DATI> <PRODUZIONE
ANNO="2000">EMI</ PRODUZIONE > <PREZZO>38.000</ PREZZO
> </DATI> <ARCHIVIAZIONE> < SCAFFALE
DISPONIBILE="si">4A</SCAFFALE> </ARCHIVIAZIONE> </CD> </CATALOGO> |
Nel
listato seguente è riportato il foglio di stile dell’esempio precedente, il
quale contiene diversi modelli che vengono applicati in modo indipendente alle
diverse sezioni del documento XML:
Figura 4.5 CDesempio.xsl.
|
<?xml version="1.0"?> <xsl:stylesheet
xmlns:xsl="uri:xsl"> <xsl:template
match="/">
<HTML>
<BODY>
<TABLE BORDER="1">
<TR STYLE="font-weight:bold">
<TD>Titolo</TD> <TD>Autori</TD> <TD>Genere</TD> <TD>Produzione</TD> <TD>Prezzo</TD> <TD>Ubicazione</TD>
</TR>
<xsl:for-each select="CATALOGO/CD"> <TR> <xsl:apply-templates/> </TR>
</xsl:for-each>
</TABLE> </BODY>
</HTML> </xsl:template> <xsl:template match="NOMI">
<TD><xsl:value-of select="TITOLO"/></TD>
<TD><xsl:value-of select="GRUPPO"/></TD>
<TD><xsl:value-of select="GENERE"/></TD> </xsl:template> <xsl:template match="DATI">
<TD><xsl:value-of
select="PRODUZIONE"/></TD>
<TD><xsl:value-of select="PREZZO"/></TD> </xsl:template> <xsl:template match="ARCHIVIAZIONE">
<TD><xsl:value-of select="SCAFFALE"/></TD> </xsl:template> </xsl:stylesheet> |
Sintatticamente
bisogna fare alcune annotazioni. Un foglio di stile inizia con il tag
<xsl:stylesheet> e termina con il tag </xsl:stylesheet>. La sigla xmlns è una parola riservata e serve per
identificare un particolare namespace;
ad esempio in questo caso tutte le parole riservate che iniziano con xsl: fanno
parte del vocabolario individuato dall’URL htttp://www.w3.org/TR/WD-xsl.
Dal
momento che il documento XML può avere un solo elemento principale e che l’XSL
è un profilo di XML, il solo elemento xsl:stylesheet consente di includere più
elementi xsl:template nel foglio di stile.
Il
pattern di questo modello è semplicemente "/" e definisce l’elemento
principale del documento XML. E’ presente anche l’elemento xsl:for-each
all’interno del modello, che definisce un altro pattern, CATALOGO/CD, e stabilisce
che la struttura generata che segue deve essere applicata a ogni sezione
corrispondente al pattern. All’interno di tale struttura è contenuto l’elemento
xsl:apply-templates che avvia la ricerca da parte dell’elaboratore di altri
modelli nel foglio di stile, ciascuno con il suo pattern. Poiché l’elemento
xsl:apply-templates si trova all’interno del pattern CATALOGO/CD, gli altri
modelli verranno applicati solo quando verrà trovata una corrispondenza
all’interno dell’elemento. Ad esempio, il modello NOME verrà applicato solo
agli elementi nella gerarchia CATALOGO/CD/NOME (Giannì, 2000).
Ricapitolando
l'intero ciclo di operazioni legate alla visualizzazione di un file XML
possiamo evidenziare come il processo si svolga in tre fasi fondamentali.
Inizialmente,
in base alla sua stesura, il foglio di stile specifica pattern che
corrispondono ai dati rilevati nel documento XML. Questi pattern fanno parte di
singoli modelli che contengono strutture di output.
A
questo punto un elaboratore rileva i dati che corrispondono ai pattern e li
converte nella struttura di output.
Una
volta elaborato l’intero foglio di stile, nella memoria del computer esiste una
nuova struttura di dati basata sull’output del foglio di stile.
A
questo punto dovrebbe risultare chiaro come e in che senso si dice che XSL sia
un linguaggio di estrazione dei dati. Questa sua caratteristica è molto
importante non solo per le operazioni di visualizzazione. XSL, nella sua
specifica XSL Trasformation, è un
linguaggio che viene utilizzato anche per trasformare un documento XML in un
altro documento XML con struttura diversa. XSL va a reperire i nodi di
struttura di un documento ed è in grado, attraverso alcune istruzioni di
trasformarli in altri nodi (Floyd, 2000).
Per
l'impianto complessivo del linguaggio XML questa opportunità è importantissima
perché accresce notevolmente la flessibilità dei documenti che possono essere
trattati in più modalità, modificando, a partire dagli stessi dati, la
struttura o il linguaggio di elaborazione. Tutta la potenza di XML si gioca
sulla sua flessibilità e capacità di consegnare dati facilmente integrabili in
ogni sistema.
Ora
che abbiamo dato una generica scorsa al funzionamento tecnico di XML cerchiamo
di capire cosa è possibile fare attraverso questo linguaggio, cosa la comunità
informatica si aspetta da questa tecnologia, e cosa cambierà rispetto al nostro
approccio alla conoscenza e alla gestione dell'informazione. Chiunque segua,
anche da lontano, le vicende di Internet, sa quanto la comunità di tutti coloro
che lavorano per o attraverso la rete, si aspetti da questo nuovo metodo di
supporto dei dati.
Oggi
come oggi la rete presenta alcuni problemi che hanno tutto l'aspetto di doversi
acutizzare. Nel precedente capitolo abbiamo esposto il problema legato ai
motori di ricerca. I motori di ricerca, nel mare dei documenti collegati, si
stima alcuni miliardi di pagine, diventano un passaggio sempre più obbligato
per la navigazione e tuttavia sono assolutamente inadeguati a dare una completa
visione della informazione contenuta su Internet, si stima che i più grandi di
essi possano al massimo considerare un quinto della rete (www.searching.com).
Un
altro grosso problema legato alla attuale situazione della rete è quello della
scarsa permeabilità dei dati archiviati. In base alla struttura di HTML, come
già abbiamo detto, ogni pagina costituisce un'unità a livello di meri dati, ma
anche di formattazione e di struttura del documento. E' difficile estrarre
all'interno di un nodo-pagina, un gruppo di informazioni senza doversi
trascinare l'intero documento. Esistono possibilità di collegare documenti HTML
a database su server, consentendo lo scambio selettivo di informazione, tuttavia questi sistemi non
sono mai facilmente integrabili fra loro e si pongono come isole chiuse alla
comunicazione.
Secondo
alcuni la soluzione di questi problemi potrebbe arrivare dall'adozione diffusa
di XML come piattaforma base per la gestione dell'informazione, sicuramente in
ambiente Web, in parte su tutto l'impianto informatico. Questo perché XML
possiede le maggiori caratteristiche di flessibilità e di gestionalità ad ora mai sviluppate per un linguaggio
informatico. XML presenta semplicemente dei dati, molto spesso unicamente di
testo, che marca per organizzare in una struttura. Questi dati possono essere
poi riorganizzati e visualizzati a più maniere, attraverso semplici istruzioni
in forma script. XML si adatta a tutti gli ambienti, può essere trasformato nei
documenti più svariati e non costringe quindi ad adottare una nuove piattaforme
di elaborazione. XML inoltre, proprio per la sua adattabilità, accompagnata
alla sua natura di linguaggio di marcatura, cioè di individuazione di una
struttura di documento, offre dati facilmente attingibili, organizzati in una
strutturazione permeabile, riconoscibile, ma non vincolante per la
visualizzazione.
Queste
premesse tecniche di XML, in base ad una analisi teorica, lo porterebbero a
diventare il linguaggio adatto alla costruzione di un ambiente universalmente
condiviso, nel quale l'informazione possa essere trasferita con la massima
funzionalità nei punti nei quali sia richiesta. Se ci pensiamo bene niente
altro che la promessa programmatica dell'ipertesto, e, ancora più in generale,
della scrittura. Da quanti secoli si vagheggia un sistema, una tecnologia, in
grado di consentire la totale archiviazione dei dati e la possibilità di
convogliarli, magari già organizzati in relazioni strutturali, dove sia
necessario consultarli?
Sicuramente
non è possibile a priori capire quanto una tecnologia sia in grado di compiere
queste cose e quanto no. I fattori in gioco sono tantissimi, economici,
sociali, tecnici, e non si può fare altro che osservare il loro sviluppo.
Tuttavia è chiaro che nella comunità informatica molti credono a questa
possibilità, magari con un po' dell'ingenuo entusiasmo tipico dei
modernizzatori, e stanno lavorando per realizzarla.
La
Microsoft punta moltissimo sulla tecnologia XML. In una recente intervista Bill Gates ha motivato il suo entusiasmo per
il cambiamento che XML porterà in rete
(www.internetpolicy.org/briefing/current.html).
Il
padrone della Microsoft nota per prima cosa come, sotto molti punti di vista,
la Rete di oggi rispecchi il vecchio modello 'T' di processore costruito e
lanciato da Henry Ford, con un browser rigido e tutte le informazioni
conservate in database centralizzati che vengono presentate ai singoli utenti
una pagina alla volta. Le pagine Web sono ancora una immagine, una
rappresentazione dei dati e non sono i dati sottostanti. Si possono acquisire
molti dati ma non li si possono facilmente modificare.
La
soluzione a queste rigidità, secondo Gates, verrà proprio da XML che consentirà
di separare i dati sottostanti di una pagina Web dalla loro presentazione
grafica. In questo modo il dato inserito nella rete sarà accessibile, anche
solo parzialmente, a tutte le piattaforme.
Tale stato creerà una sorta di lingua franca del Web i cui effetti
saranno pressoché straordinari. Sbloccando i dati sottostanti, infatti, si
consentirà di organizzarli e modificarli, trasformando così ogni pagina Web in
un minidatabase programmabile. Si potrà condividere qualsiasi tipo di
informazione senza dover utilizzare lo stesso linguaggio di applicazione e i
singoli siti potranno interagire in modo intelligente spostando facilmente dati
da un database ad un altro.
La
Rete di nuova generazione sarà dunque una iper-piattaforma di calcolo e
comunicazione in cui convergeranno, in maniera continua, le informazioni di
tutti i database, senza una distinzione netta tra periferiche e server. Con il
crollo delle barriere tra informazioni in linea e database informativi Internet
della prossima generazione avrà una sola interfaccia unificata in grado di
muoversi in modo trasparente tra Internet e Pc, la cosa consentirà agli utenti
di esplorare, scrivere, programmare, modificare o analizzare i dati comuni, a
loro piacimento.
Tim
Berners-Lee da tempo lavora al concetto di Web
Semantico. L'ideatore del Web fondò fin dall'inizio le sue proposte sul
concetto di interazione semantica fra dati. Berners-Lee propose di costruire
una rete informativa partendo dalla semplice possibilità di link
unidirezionali, come sono quelli HTML. Inizialmente fu obbiettato che la
capacità di costruire relazioni in un sistema del genere era troppo debole per
consentire il costituirsi di una rete informativa universalmente diffusa.
Berners-Lee insisteva nel dire, e nel mostrare, che il solo rimando semantico
avrebbe consentito una buona capacità per correlare i documenti. Per quanto
tutti conoscano i limiti della attuale Rete, la sua rigidità e la povertà del
link unidirezionale, bisogna certamente convenire sul fatto che i rimandi fra
documenti, basati sulla semplice relazione semantica si sono dimostrati più che
sufficienti per la costruzione di una rete universale in grado di funzionare
produttivamente (Darnell, 1998, 12).
Per
Berners-Lee l'estensione del rimando semantico, nel semplice presentarsi di un
segno, l'estensione dell'attuale sistema di rete, sarà il Web Semantico. Il Web
Semantico è una realtà che non si può dire esista già, esistono applicazioni in
grado di funzionare su tali principi, ma perché l'idea sia realizzata bisogna
che la diffusione del sistema sia sufficientemente ampia da proporsi come nuova
struttura per l'intera Rete.
L'idea
del Web Semantico si basa su un concetto molto semplice, se la rete è una trama
di relazioni, essere in grado di gestire, di avere una visione più ampia su di
esse, significa amministrarle meglio, significa conoscere il ruolo delle
singole parti. Possedendo, a un certo livello della rete, informazioni sui
rapporti fra i collegamenti, e sul loro significato, si potrebbe gestire lo
scambio dell'informazione in modo molto più produttivo e automatizzato.
Il
gruppo di lavoro del World Wide Web Consortium, guidato appunto da Berners-Lee,
lavora al progetto del Web Semantico basandosi proprio su XML, perché è visto
come linguaggio adatto a gestire dell'informazione sui dati, rimanendo
applicabile a tutte le piattaforme, garantendo quindi la massima capacità di
diffusione.
Le
premesse programmatiche di un linguaggio come XML, si è visto, sono di enorme
interesse e di impatto rivoluzionario sulle nostre modalità di gestione della
conoscenza. Prima di proseguire lungo l'analisi critica delle implicazioni di
XML sul nostro rapporto col sapere è bene rendersi conto di come attualmente
sia utilizzato questo linguaggio. Molte aspettative sono riversate su esso,
molti settori stanno affidando a questo linguaggio la loro futura evoluzione.
Proviamo a vedere come e per quali motivi oggi come oggi XML è scelto come
supporto tecnico alla gestione di differenti problematiche comunicative.
Chi
scrive e coordina un sito in HTML, nel caso debba modificare l'informazione
contenuta nella struttura o la
struttura stessa del sito, deve rivedere pagina per pagina tutto il lavoro. Se
in una tabella si devono modificare dei contenuti bisogna farlo cella per
cella, se un dato deve essere presente su diverse pagine, questi va ripetuto su
ogni singola di esse. L'unico strumento in ausilio ai webmaster per evitare
riscritture complete di ogni pagina è il copia e incolla.
La
possibilità, attraverso XML, di separare i dati dalla visualizzazione e di
costruire fogli di stile che lavorano su modelli, che definiscono cioè una
stessa struttura per tutti gli elementi marcati dallo stesso tag, è per la
gestione di un sito un grosso guadagno (Floyd, 2000).
Per
fare un esempio abbastanza banale immaginiamo di dover pubblicare su internet
un elenco di CD con relative informazioni essenziali. Sul mio file XML dovrei
naturalmente crearmi una struttura di marcatura adatta per l'inserimento dei
dati estremi relativi ad un'opera musicale. Ad esempio potrei riprodurre il
listato della figura 4.4, nel quale ogni elemento CD ha come elementi secondati
NOMI, DATI, ARCHIVIAZIONI, secondo una struttura di questo tipo:
<CD>
<NOMI>
<TITOLO>Metamorfosi</
TITOLO >
<GRUPPO>
ESTRA </ GRUPPO >
<GENERE
> Rock Ita</ GENERE >
</NOMI>
<DATI>
<PRODUZIONE
ANNO="1996">URLO</ PRODUZIONE >
<PREZZO>28.000</
PREZZO >
</DATI>
<ARCHIVIAZIONE>
<
SCAFFALE DISPONIBILE="si">5A</SCAFFALE>
</ARCHIVIAZIONE>
</CD>
Nel
file XML potrò ripetere questa struttura quante volte io ritenga utile, nel
foglio di stile al contrario non dovrò descrivere la formattazione per ogni
singolo elemento ma solo per la struttura, automaticamente la formattazione
sarà estesa a tutti gli elementi con le stesse caratteristiche. Il mio foglio
di stile si presenterà quindi nella forma della figura 4.5, e avrà validità
indipendentemente dal numero di elementi CD che vorrò inserire, nonché dal
contenuto che ovviamente potrà essere modificato senza dover inserire ulteriori
istruzioni di formattazione.
Questa
possibilità è per un Webmaster molto interessante perché gli permette di
costruire una sola volta la struttura di visualizzazione del sito e di
modificare in seguito solo i file che descrivono i dati. Inoltre una stessa
base di dati potrebbe essere offerta a utenti diversi con diverse visualizzazioni.
Queste peculiarità di XML fanno presagire che lo strumento sarà abbastanza
facilmente in grado di venire accolto dalla comunità dei Webmaster e che di
conseguenza sarà in grado di inserirsi nel tessuto del Web con discreta
rapidità.
XML
è un linguaggio di marcatura e in un certo senso, vedremo in realtà non così
forte, permette di aggiungere informazioni semantiche al testo:
<AUTORE>
Manuel Agnelli</ AUTORE >
Il
tag di marcatura permette ad un elaboratore di leggere con più facilità i dati.
Questo per due motivi, primo perché, marcandoli, li individua in uno spazio,
inoltre perché, tramite un vocabolario, un applicazione potrebbe anche leggere
il significato del tag e sapere di dover cercare proprio quel determinato tag e
non altri. Un server collegato al Web potrebbe trovare tutti i documenti in cui
Manuel Agnelli è l'autore.
In
realtà la cosa non è così semplice. Perché la ricerca possa funzionare in
ambito sufficientemente diffuso servirebbe uno standard di marcatura, un set di
tag predefiniti e condivisi per marcare le informazioni. Facendo un esempio
banale, un utente che inoltrasse la ricerca servendosi della parola chiave
"compositore", non troverebbe alcunchè in un documento nel quale il
nome del redattore delle opere musicali fosse marcato col tag <AUTORE>.
Del resto uno degli elementi di forza di XML è quello di permettere una
marcatura libera, in modo da consentire a chiunque di costruire una
strutturazione il più possibile consona alle proprie necessità.
Il
problema della difficoltà di condividere uno standard di marcatura può essere
risolto tramite la creazione di vocabolari specifici. Singole categorie
professionali o gruppi omogenei di utenti potrebbero, e già esistono esempi,
costruire il proprio vocabolari di marcatura. A quel punto la condivisione di
documenti, o di parti di documenti, all'interno di quella comunità può essere
resa notevolmente più agevole.
Un
punto chiave da tener presente nella prossima evoluzione dei motori di ricerca
è quello definito dallo slogan: "L'informazione ha bisogno di conoscere se
stessa, ma ha anche bisogno di conoscere me". Un'applicazione con lo scopo
di compiere delle ricerche o di indirizzare la navigazione dell'utente dovrebbe
non solo disporre di buoni dispositivi di localizzazione delle informazioni
richieste, ma dovrebbe saper partire dalla conoscenza del tipo di utente che la
sta interrogando (Giannì, 2000). Conoscere i gusti, le esigenze dell'utente può
notevolmente facilitare il lavoro di ricerca. Sarà quindi utile costruire
vocabolari preferenziali, campi semantici degli orientamenti dell'utente.
L'esigenza di una semantica è oggi fortissima nel Web.
Un
altro strumento che XML offre per incrementare le potenzialità di comprensione
semantica di un documento sono gli RDF (Resource
Description Framework). Si tratta della possibilità di inserire per un
documento una serie di metadati relativi al documento, staccati dal documento
stesso. In pratica si imposta per un documento una struttura di riferimenti,
esterna al documento stesso, che sia in grado di descriverlo. La cosa
interessante di questa specifica XML è quella di poter permettere ad un
elaboratore di conoscere il contenuto dei dati, senza dover lavorare
direttamente sui dati e sulla loro immediata formulazione.
Ad
oggi questo genere di strumento è molto poco utilizzato e non è ancora riuscito
a penetrare con successo nel Web, tuttavia si tratta chiaramente di una
possibilità in più che andrà presa in considerazione e sulla quale il W3C ha
dimostrato di voler investire. Più avanti tratteremo meglio la questione
relativa agli RDF, per ora basti conoscere la possibilità di inserire metadati
di descrizione dei documenti.
Un
esempio interessante delle potenzialità di XML è il sistema di distribuzione
dei dati adottato dall'industria dei semiconduttori. Ogni grande industria nel
campo dei semiconduttori deve registrare e far circolare enormi quantità di
dati tecnici relative ai circuiti integrati che produce. Per abilitare lo scambio
di questi dati, anni fa fu formato un consorzio, il Pinnacles Group, formato da industrie quali Intel, National
Semiconductor, Philips, Texas Instrument e Hitachi (Giannì, 2000). Lo scopo del
consorzio era quello di sviluppare uno specifico linguaggio di markup in
ambiente SGML in grado di esprimere tutte le complesse informazioni necessarie
a descrivere un circuito. SGML garantiva una piattaforma neutra per la
memorizzazione dei dati, che non avrebbe penalizzato il linguaggio di
applicazione di nessuna azienda, consentendo la massima interscambiabilità dei
dati.
Si
potrebbe pensare che l'imporsi, attraverso una straordinaria popolarità, di
HTML avesse fatto cambiare idea ai membri del Pinnacles Group, ma le
limitazioni di tale linguaggio li convinsero che l'idea originale fosse più
corretta (Giannì, 2000). HTML ha un set tag rigido, per una descrizione
complessa di un documento è invece necessario possedere un set di tag
estensibile, cioè strutturabile a propria scelta.
La
scelta di utilizzare un linguaggio di markup come veicolo per la distribuzione
dei dati sui circuiti integrati doveva permettere, non solo la loro
visualizzazione, ma anche la possibilità di lavorare al progetto dei circuiti
stessi. Questo obbiettivo fu raggiunto molto bene attraverso la tecnologia dei
Java applet. Un applet Java tratta dei semplici dati di testo applicando su
essi un processo computazionale. In questo modo un ingegnere può accedere al
sito Web di una industria di semiconduttori e
scaricarsi, non solo i dati di un particolare circuito integrato, ma
anche un Java applet che permette di combinare i dati in vari modi.
Negli
ultimi anni non è stato difficile per il consorzio trasformare la marcatura
SGML in XML. I due linguaggi sono molto simili, tuttavia XML possiede una
maggior semplicità e, di conseguenza, manovrabilità.
La
gestione computazionale delle informazioni relative a un circuito integrato,
non è tra le operazioni più semplici per un calcolatore, tuttavia tramite XML,
tramite la possibilità di costruire una marcatura a dei dati su un supporto
neutro, l'operazione diventa fattibile e anche facilmente trasmissibile.
Moltissime
aziende, o reti di realtà aziendali, hanno tra le loro prime esigenze quelle di
gestire al meglio l'informazione che deve muoversi attraverso i vari settori
produttivi. Questo lavoro di organizzazione delle informazioni per una rete di
utenti viene definito, con termine forse eccessivamente impegnativo, gestione della conoscenza, e oggi
esistono molte società specializzate in questo settore. Chi lavora in società
di questo tipo ha tipicamente un grosso problema da risolvere. Per garantire
una buona trasmissibilità dei dati sarebbe necessario possedere un criterio
standard di archiviazione, in questo modo un'applicazione informatica sarebbe
in grado di riconoscere i dati, di trasferirli dove necessario e di elaborarli.
D'altro canto ogni settore produttivo è abituato a lavorare con le proprie
applicazioni informatiche e pretende di poterle gestire con la più ampia
libertà. Ad esempio il settore amministrativo fonda tutto il suo lavoro su
applicazioni tipo Excel, mentre quello di progettazione su programmi grafici
del tutto differenti. Per fare comunicare questi due sistemi applicativi è
necessario attribuire ai dati un minimo di omogeneità, del resto non è
possibile sminuire la potenza delle varie applicazioni specifiche, che nate per
affrontare un certo tipo di lavoro si fondano sui propri sistemi.
Generalmente
la maggior parte dei dati che l'esperto di gestione della conoscenza si trova a
dover trattare non sono in alcun modo organizzati. La Sotware AG, una delle più
importanti società di database stima che solo un 15% dei dati memorizzati al
mondo siano riconducibili ad un database, il resto, 85%, è legato ai documenti
più disparati, nelle applicazioni e nelle versioni più diverse
(www.softwareag.com).
Queste
difficoltà possono essere rese, almeno in parte, superabili con l'adozione di
un sistema di interscambio delle informazioni basato su XML. In quanto linguaggio
estensibile XML consente la marcatura dell'informazione e la creazione di un
vocabolario di archiviazione dei dati. La sua propria particolarità di dividere
dati dalla visualizzazione permette del resto di utilizzarlo come sistema ponte
tra le varie applicazioni. Vediamo alcuni esempi concreti di come sia stato
utilizzato XML.
I
sistemi informativi delle agenzie americane di "home health care"
sono stati recentemente ricostruiti attorno a XML. Questo tipo di agenzie sono
il maggior componente dell'industria medica americana e la loro importanza sta
aumentando da quando politiche governative hanno spostato l'assistenza medica
ospedaliera verso l'assistenza medica domestica (Giannì, 2000). Il loro scopo è
quello di gestire la storia medica di un paziente, questa è rappresentata nel
sistema informativo attraverso una collezione di documenti storici che
rappresentano la vita medica di una persona, passata attraverso vari dottori,
ospedali, farmacie e compagnie di assicurazioni. Quando un nuovo paziente entra
in una agenzia, c'è l'enorme compito di prelevare tutto il materiale e di
memorizzarlo nel database dell'agenzia.
L'avvento
del Web diede alla comunità informatica medica la speranza di poter
semplificare lo sforzo di memorizzazione delle informazioni nel database;
sfortunatamente le applicazioni Web esistenti offrono modelli di soluzione a
questo problema inadeguati.
Gli
ospedali offrono alle agenzie una soluzione che in poche parole è così
riassunta: raggiungere il sito Web dell'ospedale, accedere alla documentazione
medica del paziente attraverso il browser, stampare la documentazione, a
partire dalla stampa inserire manualmente i dati nel database.
Ovviamente
questa soluzione non può essere ritenuta completamente soddisfacente. La forma
ideale per organizzare questo tipo di lavoro dovrebbe basarsi sulla possibilità
di trasferire i dati direttamente da un database all'altro.
Quando
si trova di fronte ad una esigenza di questo genere tipicamente un consorzio di
grandi industrie definisce una Document Type Definition (in ambiente SGML) e
implementa un linguaggio di markup specifico al suo scopo; a questo punto il
linguaggio è utilizzato come standard per lo scambio dei dati.
La
soluzione XML è indipendente dai sistemi, dalle organizzazioni e proviene dalla
decennale esperienza di SGML. Anche nel caso delle home health care si è scelto
di optare per questa possibilità. L'opzione di servirsi di XML come piattaforma
base per l'interscambio dei dati è stata preferita alla proposta del governo
che intendeva costruire un database standard, adottabile da tutte le società
impegnate in questo tipo di attività. Il giorno del rilascio della prima
versione stabile di XML, l'organizzazione che raggruppa le maggiori agenzie di
home health care, ha infatti annunciato lo sviluppo di Health Care Markup Language in ambiente SGML (Giannì, 2000).
Per
fare ulteriori esempi di utilizzo di XML nella gestione della conoscenza si può
portare il caso di Software AG,
un'importante azienda di implementazione di database, che ha rilasciato già
nell’Ottobre del 1999 un database XML-nativo, sul quale ha puntato tutta la sua
futura competitività. Questo database, denominato Tamino, è stato pensato, secondo le dichiarazioni della società,
per inserirsi negli ambienti tecnologici più disparati, andando ad utilizzare
tutto ciò che è stato già implementato, in modo da poter salvaguardare gli
investimenti fatti in precedenza (www.softwareag.com).
Tamino
è in grado di integrare in modo trasparente tutte le sorgenti dati esterne già
presenti, presentando però all’utente i dati in un unico formato standard XML.
Il vantaggio di una soluzione di questo tipo è che progettare una nuova
applicazione basata su XML non comporta la conversione completa di tutto il
proprio patrimonio informativo.
Tamino
lavora alla massima integrazione basandosi innanzi tutto su una sua personale
DTD per la definizione dei documenti. Tutti i documenti che sono allacciati al
database sono in ultima istanza registrati come file XML, se un documento è
stato salvato per mezzo di altre applicazioni questo viene trasformato, nella
strutturazione dei dati, in formato XML. Tutto ciò che il database tratta e
restituisce è quindi XML. La localizzazione dei dati è basata su XPath e più
precisamente su un sistema denominato X-Query, che non è altro che XPath con
l'aggiunta di alcune estensioni. XPath è un'estensione di XML che fondandosi
sul fatto che i documenti XML sono sempre degli alberi gerarchici, localizza i
nodi in virtù della loro posizione strutturale. Se esistesse ad esempio una
successione di tag di questo tipo:
<padre>
<figlio1>
< figliofiglio1> dati </ figliofiglio1>
<figliofiglio2> dati </ figliofiglio2>
</figlio1>
<figlio2> dati </figlio2>
<figlio3> dati </figlio3>
</padre>
XPath
potrebbe localizzare i dati attraverso istruzioni del tipo: "Il terzo nodo
di padre", "l'elemento che
ha per padre figlio1 il quale ha per
padre padre", "tutti gli
elementi figli di padre",
"tutti gli elementi figli di padre ma
non i figli di figlio1".
Naturalmente tutte queste operazioni sono intergate da alcuni algoritmi di
intelligenza artificiale che le rendono rapide e maggiormente efficienti.
Un
altro campo, molto diverso da quelli trattati in precedenza, nel quale XML
promette di diventare strumento fondamentale è quello della codifica dei testi.
Studi filologici, linguistici e letterari hanno la necessità di accostarsi al
testo con la massima profondità e precisione. Calcolare le occorrenze dei
termini, stabilirne la posizione nel testo o la morfologia assunta, sono lavori
che richiedono un grosso impiego di tempo e risorse umane, in modo particolare
se queste operazioni vanno compiute su un ampio corpo testuale. Non da subito
la realtà umanistica si è accostata volentieri allo strumento informatico, le ricerche
tradizionali sui testi, anche dopo l'introduzione delle tecnologie
informatiche, hanno continuato nella maggioranza dei casi a produrre volumi
cartacei. Lo stesso si può dire per la maggior parte dei cataloghi di mostre e
per molti cataloghi tematici.
A
partire dagli anni '80 invece gruppi di ricerca all'avanguardia hanno
utilizzato i primi database per produrre archivi. Via via l'uso di strumenti
computazionali per la ricerca umanistica si è sempre più raffinato, diventando
oggi una vera e propria disciplina a sè stante. Negli ultimi anni, anche in
questo settore, si è scelto di affidarsi a XML, giudicandolo un supporto
flessibile ma potente.
Per
chi si occupa della codifica dei testi, quello che interessa maggiormente di
questo linguaggio risiede nella sua natura di linguaggio di marcatura, e nel
fatto che si costruisca attraverso un set di tag estensibile.
La
realtà più importante in questo campo è quella della TEI (Text Encoding Initiative),
un progetto per la costruzione e diffusione di uno standard internazionale di
codifica testuale. Il Consorzio TEI, costruito da numerose realtà, che
soprattutto nel mondo anglosassone, si occupano di linguistica computazionale e
di informatica applicata all'umanistica, ha iniziato a lavorare nel 1987,
finanziato dalle università di Oxford e di Brown (www.tei-c.org).
Inizialmente
la TEI stabilì uno standard servendosi di SGML, oggi la codifica è disponibile
anche in XML, con l'obbiettivo di renderla più agevolmente fruibile, in
particolare sul Web.
La
TEI ha costruito sei modelli base: prosa, poesia, dramma, parlato,
lessicografico, terminologico. I modelli però non sono rigidi e possono essere
riadattati alle proprie particolari esigenze di codifica testuale. Esistono
infatti dei moduli speciali: link, figure e tabelle, analisi strutturali,
trascrizioni, note critiche, grafici matematici, corpi linguistici. I moduli
possono essere combinati variabilmente, i singoli elementi di ogni modulo
possono essere rinominati, modificati o anche esclusi.
Molti
sono i progetti che anche in Italia stanno lavorando alla codifica di testi, o
di cataloghi di testi, basandosi sugli standard TEI. Solo per fare alcuni
esempi concreti citeremo alcuni progetti importanti, senza tuttavia alcuna
pretesa di essere esaustivi o di aver selezionato le realtà più significative.
In
ambito bibliotecario negli anni recenti si è diffuso l'uso dei database
relazionali, e sono state elaborate diverse procedure di catalogazione:
§ Manus, è un'applicazione
realizzata in MS Access,
dall'Istituto Centrale del Catalogo Unico del Ministero per i beni librari e le
attività culturali (www.iccu.sbn.it/docmano.htm).
§ Codex, è un programma
realizzato in CDS/ISIS, un software di information retrieval sviluppato
dall'Unesco, di cui è recentemente uscita una versione per Windows, utilizzato
ad esempio dalla Regione Toscana e dalla Regione Veneto
(sismel.meri.unifi.it/CODEX/codex.htm).
§ Digital Scriptorium,
è invece un'applicazione realizzata in MS
Access (sunsite.berkeley.edu/Scriptorium).
§ Alla British Library
è un database relazionale che è servito a organizzare i dati recuperati dai
cataloghi a stampa con un sistema di riconoscimento ottico dei caratteri
(molcat.bl.uk)
Alcuni
degli archivi prodotti con questi strumenti sono attualmente interrogabili da
Web. Tuttavia la presenza di archivi diversi ha posto con forza il problema
dell’interscambio dei dati, si è posto così il problema definire degli
standard.
EAMMS già da molti anni si
occupa di realizzare una codifica comune in SGML/XML, in collaborazione con la
Text Encoding Initiative e, da qualche tempo, con il progetto MASTER (Manuscript Access through Standards for
Electronic Records), progetto finanziato dall'Unione Europea
(www.cta.dmu.ac.uk/projects/master).
L’introduzione
del linguaggio di markup XML fornirà una soluzione ai problemi più
significativi della catalogazione elettronica dei manoscritti. In primo luogo
essa permette di codificare in un unico formato sia dati strutturati
provenienti dai campi di database relazionali, sia informazioni espresse in prosa,
un tipo di informazione alla quale gli umanisti sono abituati e che sanno
gestire spesso meglio che non quella fornita da un database. L’applicazione di
questo formato di catalogazione permetterà quindi di far confluire in un'unica
tipologia di archivio informazioni che fino ad ora sono state gestite
separatamente, con poca attenzione ad un uso economico delle risorse in campo.
Questo fatto renderà la consultazione di risorse bibliografiche un'operazione
molto più agevole, meno dispendiosa in tempo e denaro, ma anche enormemente più
accurata e precisa, perché risorse che fino ad oggi sono rimaste separate
potranno convergere.
Il
CRiBeCu (Centro Ricerche Informatiche per
i Beni Culturali della Scuola Normale Superiore di Pisa), nell’ambito di
uno studio metodologico sugli aspetti connessi all’interazione fra strumenti
informatici e discipline umanistiche, ha avviato in collaborazione con il
Gruppo di Ricerca sulle Basi di Dati ed il Gruppo di Ricerca sugli Algoritmi e
le Strutture Dati, una specifica attività di ricerca orientata allo studio e
alla sperimentazione di nuovi algoritmi e strutture dati per l’indicizzazione
ed il recupero di dati da documenti strutturati, degli aspetti inerenti la
definizione di un linguaggio di interrogazione (www.cribecu.sns.it).
Il
frutto di questo lavoro è stato lo sviluppo di TReSy (Text Retrieval System), un motore di ricerca testuale in grado di
effettuare ricerche sia sul contenuto che sulla struttura di documenti marcati
in XML.
Lo
sviluppo di TReSy nasce, con l’obiettivo di fornire un motore di ricerca in
grado di offrire il più ampio numero di possibilità di applicazione nei casi
più svariati di analisi di fonti letterarie, rispetto agli strumenti più
comunemente utilizzati nel panorama delle metodologie applicate al text retrieval, sia in ambito
commerciale che di ricerca. Per supportare alcune delle esigenze nate da
applicazioni umanistiche TReSy si basa su una particolare e recente struttura
dati per indicizzazioni testuali, lo String B-tree, e su una struttura dati per
l’indicizzazione dei marcatori, l’Interval Tree.
TReSy
ad oggi è stato utilizzato per l’interrogazione di diverse opere rappresentate
con XML, già rese disponibili tramite Web o in CD. In particolare il gruppo di
ricerca ha lavorato su: “Le Vite” di Giorgio Vasari; le Opere, la Biblioteca e
le Fonti di Giordano Bruno; il Vocabolario della Crusca; il Corpus Informatico
Belloriano ed il Corpus Epigrafico Sudarabico.
Il
progetto, attualmente in fase di sviluppo, si propone principalmente di
integrare TreSy come parte di un Sistema per Ricerche Testuali su Documenti XML
(XTReSy: eXtended Text Retrieval System),
che includa, oltre alle funzionalità di base di text retrieval, una maggiore potenzialità espressiva ed un insieme
di nuove strutture dati che lo supportino. Tale progetto verrà utilizzato anche
nell’ambito del Progetto Europeo META-e.
Il CIBIT (Centro Interuniversitario Biblioteca
Italiana Telematica) ha sviluppato una biblioteca di testi elettronici
dedicata alla diffusione e allo studio della cultura italiana. Tale centro è
nato nel 1997, vi aderiscono 15 università italiane: L’Aquila, Catania,
Ferrara, Genova, Messina, Napoli, Padova, Pavia, Piemonte Orientale, Pisa, Roma
“La Sapienza”, Siena per Stranieri, Torino, Trento, Venezia (cibit.unipi.it). Il CIBIT oggi conta su un patrimonio di circa 1500 testi.
Inizialmente la registrazione dei testi venne realizzata grazie al
software DBT nella versione
Java-Html, ma la necessità di rendere
disponibile al più ampio numero possibile di utenti tali risorse ha portato il
centro a dover riflettere sull’opportunità di continuare a mantenere i testi
nella codifica proprietaria prevista dal software DBT. La prima decisione che
fu presa per affrontare questa difficoltà fu di convertire il patrimonio della Biblioteca
Italiana Telematica nel linguaggio SGML che, per la sua natura di standard
internazionale universalmente riconosciuto, avrebbe garantito a tutti i
documenti digitali appartenenti alla biblioteca, di essere riportati ad uno
stesso sistema di decodifica. Per le stesse ragioni il centro ha presto deciso
di adottare il sistema di codifica TEI che allo stesso modo garantisce una
standardizzazione dei dati riconosciuta a livello internazionale.
Nell’ultimo anno tuttavia, quanto deciso in prima istanza, è stato
rivisto. Il centro ha perciò optato per l'adozione del linguaggio XML,
preferito al SGML, in quanto strumento più aggiornato e flessibile.
Nel
formato XML-TEI è stato convertito un campione di testi che attualmente è
sottoposto a verifica da parte di Lou Burnard, principale coordinatore del
Consorzio TEI, che dovrà certificare il sistema di codifica adottato da CIBIT
come conforme a TEI. Parallelamente il centro si è mosso nella realizzazione di
software adeguati per la conversione automatica dei testi dal formato DBT al
formato XML e nella selezione di strumentazioni informatiche adeguate che
potessero supportare i collaboratori delle varie unità di ricerca nella
codifica di nuovi testi.
In
altri settori ancora XML sta per essere adottato, o già lo è, come linguaggio
base di un sistema di gestione della informazione. In tutti i casi le
motivazioni che portano a sceglierlo nascono dalla sua particolare
flessibilità, sostanzialmente dalla possibilità di poterlo utilizzare come
mezzo ponte fra più applicazioni e allo stesso tempo come strumento di
indicizzazione dei dati.
Facendo
alcuni esempi che ci paiono significativi porteremo ancora qualche concreta
esperienza di implementazione di sistemi che sfruttano XML.
In
campo legislativo ad esempio il Ministero della
giustizia promuove dal 1999 il progetto NIR (www.normeinrete.it). Il suo
obiettivo fondamentale è la creazione di un portale Internet unico di accesso
gratuito a tutta la documentazione di interesse normativo prodotta nel nostro
paese e disponibile nei vari siti istituzionali. Superando le architetture
centralizzate che sono state finora adottate nelle basi documentali giuridiche,
il progetto NIR tenta di riprodurre anche nel sistema informatico la nuova
realtà costituita da una pluralità di organismi che producono documenti
normativi.
A tal fine nell'ambito del progetto NIR sono stati costituiti tre
Gruppi di lavoro interistituzionali, costituiti da funzionari, informatici,
giuristi, ricercatori e documentalisti. Questi gruppi hanno fondamentalmente il
compito di elaborare standard per la rappresentazione dei documenti giuridici.
Il primo Gruppo si occupa di costruire un set di DTD per gli atti
normativi. Il secondo deve elaborare le metainformazioni da associare ai
documenti. Il terzo ha il compito di creare un sistema di URN (Uniform Resource Name).
Un
settore completamente diverso nel quale è possibile sfruttare le potenzialità
di XML è quello dell'apprendimento a distanza. Il Dipartimento di Informatica e
Studi Aziendali e il Laboratorio di Maieutiche dell'Università degli Studi di
Trento hanno costruito un prototipo per la didattica in rete che si basa
fortemente su XML.
Il
prototipo consente ad un docente di preparare dei materiali didattici
ipermediali e di utilizzare gli stessi in un’attività di didattica a distanza
in tempo reale attraverso la rete Internet.
Il
prototipo è costituito da due moduli principali. Il primo modulo consente la
creazione dei materiali didattici. Questo modulo, scritto in Java considera XML
come la struttura dati sottostante dei materiali didattici sicché il modulo è
in grado di esportare ed importare in modo naturale materiali didattici
ipermediali in formato XML. Il secondo modulo consente ad un docente remoto di
pilotare i materiali didattici così costruiti direttamente sulle macchine degli
studenti in modo da poter decider in quale momento della lezione far entrare in
azione un determinato oggetto o documento, come farlo interagire con gli altri,
come modificarlo.
Oltre
alla possibilità di utilizzare la rete come strumento di comunicazione a
distanza la forza di questo modulo sta nel fatto che una stessa base di dati
possa essere utilizzata con modalità differenti in fase di progettazione della
lezione, in fase di esposizione e in fase di registrazione da parte degli
studenti.
In
altri termini i materiali didattici di questo tipo sono fruibili in differenti
modalità: come materiali con cui un docente fa lezione a studenti remoti, come
materiali attraverso i quali si assiste ad una lezione impartita da un docente
remoto, come materiali tradizionale di studio.
L'uso
di XML, e la definizione quindi di una DTD, ha dotato il prototipo di un paio
di vantaggi non ottenibili attraverso HTML. Si è creato innanzitutto un formato
interscambiabile fra qualunque piattaforma hardware e software, che, unito a
Java, ha reso il prototipo pienamente multipiattaforma. E' concessa la
possibilità, una volta stabilita la DTD, di importare ed esportare in maniera
semplice le lezioni da e in altri ambienti editor.
Le
potenzialità di XML non si applicano solo a sistemi informativi chiusi, limitati a certi soggetti, ad
aziende o reti comunicative che condividono un comune interesse. La forte flessibilità
di questo linguaggio, il fatto che consenta di lasciare i dati permeabili a più
visualizzazioni, la possibilità che offre di marcare i documenti, permettendo
di accederne alla struttura, fanno sperare che su questo supporto potrà
organizzarsi un nuovo tipo di rete informativa globale. Una Rete capace di
fornire informazione in correlazione alle richieste dell'utente, dimostrando un
certo grado di comprensione dei significati trattati. L'idea di un Internet
maggiormente capace di ordinare l'informazione, di garantire ricerche
automatiche e precise, è da sempre l'obbiettivo di un po' tutta la comunità
degli utenti, come degli addetti ai lavori.
Dopo
la decima International World Wide Web
Conference, tenutasi a Hong Kong nel Maggio 2001, il termine Web Semantico
ha incominciato a circolare per tutta la comunità informatica, diventando oggi
ormai una specie di parola d'ordine alla quale tutti, magari anche con accenti
critici, si stanno adeguando (La Vecchia, 2001). Nello stesso mese usciva su Scientific American un articolo di Tim
Berners-Lee, che per la frequenza delle citazioni in rete, è diventato una
specie di manifesto programmatico delle intenzioni del World Wide Web
Consotium, circa la costituzione nei prossimi anni di un Web più
"intelligente" (www.scientificamerican.com/2001/0501issue/0501berners-lee.html).
L'idea
di fondo del Web Semantico è quella di rendere la rete maggiormente in grado di
capire le nostre richieste. Non in senso proprio, ovviamente, ma nel senso che
i documenti non dovrebbero più risultare come delle isole di dati, ma piuttosto
come dei database aperti, nei quali una risorsa applicativa sia in grado di
distinguere le informazioni contenute, ricavandone solo quelle richieste.
Attualmente
il Web è una realtà costituita da documenti destinati quasi esclusivamente ad
essere letti da un'utenza umana. Dalle news, ai comunicati commerciali alla
poesia, tutto è rintracciabile sulla rete, ma poche cose possono essere
comprese da un agente non umano. Per agente
si intende un software in grado di eseguire compiti definiti da un utente,
senza diretto controllo da parte dell'utente stesso
(www.scientificamerican.com/2001/0501issue/0501berners-lee.html).
Il
Web Semantico si propone proprio di inserire nell'architettura della rete
elementi in grado di consentire ad agenti informatici una certa capacità di
azione. Si potrebbe ad esempio immaginare che un motore di ricerca, scorrendo
le pagine in rete alla ricerca di una prenotazione aerea, fosse in grado di
capire quali link portano alle pagine relative alla destinazione richiesta,
quali siano i costi e gli orari dei biglietti, di confrontare tra loro le
offerte e di coordinare la partenza con
l'agenda dell'utente o con le limitazioni sui costi che avesse voluto
impostare. Tutto questo non in virtù di sistemi di intelligenza artificiale, ma
molto più semplicemente in virtù di una marcatura dei documenti e di una lingua
franca, cioè di un linguaggio gestibile da tutte le applicazioni e
dall'introduzione di vocabolari specifici, cioè di collezioni di frasi alle
quali possano associasi relazioni ben stabilite fra gli elementi marcati.
In
pratica il Web Semantico per funzionare deve poter disporre di informazione
strutturata e di regole di deduzione per gestirla, in modo da accostare quelle
informazioni che un'interrogazione ha richiesto
(www.scientificamerican.com/2001/0501issue/0501berners-lee.html).
La
forza del Web Semantico non sarà solo quella di garantire una maggiore
automazione nella ricerca e nella gestione dei dati, più in generale questo
progresso della Rete porterà ad una maggior potenza nel gestire la conoscenza.
Di fronte ad una enorme estensione di risorse, di informazione, come è la Rete,
la capacità di avvicinare quelle più interessanti diventa capacità di ottenere
una maggior conoscenza. Molto spesso idee innovative si affermano nella
comunità umana solo all'interno di piccoli gruppi specializzati, e, anche
quando sono di eccezionale importanza, faticano diversi anni per diventare
acquisizioni condivise. Il Web Semantico, attraverso una certa automazione
della conoscenza, dovrebbe aumentare notevolmente la possibilità di confronto
fra informazioni, fra punti di vista diversi. Ipotizzando di costruire nel Web
una rete semantica di tutti gli elementi immagazzinati, potremmo addirittura
giungere fino a dire che automaticamente, la rete possa definire il significato
degli oggetti che tratta e aggiornare questo significato qualora venga
introdotta nuova informazione.
Come
si sarà capito, la base tecnica per il progresso di questo progetto sarà
offerta da XML, e dai linguaggi che si strutturano a partire dalla sua
sintassi. Ovviamente sistemi di ragionamento automatizzato, basati sulla
marcatura dei dati e sulla definizione di uno schema di regole, esistono già da
decenni nel campo dell'intelligenza artificiale, la novità di XML risiede
unicamente nel fatto di offrire la possibilità di un unico sistema globale di
interazione dei dati.
Il
Web Semantico baserà la sua architettura su tre livelli fondamentali, ben
distinti fra loro. Al primo livello abbiamo i dati, a un secondo le
informazioni sui dati e le relazioni che intercorrono tra dati, i metadati, a un terzo livello vocabolari, o ontologie, che definiscono il ruolo semantico dei metadati. I dati
ovviamente dovranno essere visualizzati e in questo senso si potrebbe parlare
di un quarto livello.
Il
primo livello, come è già stato più volte ripetuto, è affidato a XML. Le
caratteristiche fondamentali di questo linguaggio permettono una marcatura dei
dati, e quindi una loro individuazione dentro una struttura, nonché la
possibilità di rendere trattabili i dati da più applicazioni, con più
visualizzazioni.
Il
secondo livello, quello dei metadati, sarà affidato, secondo le intenzioni del
W3C, al linguaggio RDF (Resource
Description Framework). RDF è un linguaggio per la descrizione di metadati
pensato per affiancare XML. I suoi elementi costitutivi e la sua sintassi sono
XML, tramite l'utilizzo di alcuni namespace
sono specificate le funzioni dei suoi elementi.
RDF
consente di costruire delle asserzioni relativamente ai contenuti di una pagina
web, queste asserzioni si costruiscono in base a triple di soggetto, predicato
e complemento oggetto. Le asserzioni fatte individuano delle relazioni fra i
dati di cui trattano, ma non ancora esplicitano il significato di queste
relazioni. Se dico che un soggetto è predicato di un oggetto ho individuato una
relazione, ho indicato gli elementi che entrano in questa relazione, ma non ne
so ancora il significato, potrei voler dire che un certo nome corrisponde
all'autore di una pagina, ma anche che una pagina è indicata da un certo link,
piuttosto che qualsiasi altra cosa.
Per
definire il significato delle relazioni serve un ulteriore livello, quello
delle così dette ontologie. Le ontologie sono dei vocabolari nei quali
collezioni di frasi sono associate a concetti e in pratica a regole logiche.
Le
ontologie di dominio, cioè le ontologie relative ad una collezione di
documenti, possono essere scritte in vari linguaggi, il più adatto a XML è RDF Schema, ma ne esistono anche di più
evoluti come DAML (DARPA Agent Markup
Language). RDF, ed ancor di più le ontologie, non sono tuttavia linguaggi
ancora diffusi nel Web, molti addirittura dubitano della loro capacità di
espansione, ed è quindi difficile esprimersi a riguardo della effettiva forma
che assumerà questa sezione del Web Semantico. Gli scettici sottolineano come
un sistema di comprensione semantica dei dati in Internet richiederebbe la
quasi totale riscrittura delle risorse, cosa non fattibile in un database di,
non si sa nemmeno esattamente quanti, miliardi di pagine. In ogni caso il W3
Consortium punta su RDF per la gestione dei metadati e questo già garantisce a
questa tecnologia un'ottima base di lancio.
Consideriamo
ora brevemente il meccanismo di funzionamento di RDF, in modo da capirne meglio
le potenzialità. La prima cosa da fare per scrivere un documento RDF è
dichiararne la sintassi, si aprirà quindi il documento con un dichiarazione di
documento XML (www.w3.org/TR/1999/REC-rdf-syntax-19990222). Successivamente si
aprirà il tag per indicare la sezione all'interno della quale si andranno a
scrivere i metadati RDF, poi aprendo un tag rdf:Description si inizierà la
descrizione di un elemento:
<?xml version="1.0">
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:s="http://description.org/schema/">
<rdf:Description
about="http://www.w3c.org/Home/Lassila">
<s:Creator>Ora Lassila</s:Creator>
</rdf:Description>
</rdf:RDF>
Aprendo
la sezione RDF, per prima cosa viene indicato il namespace di RDF che
permetterà di definire la sintassi degli elementi RDF. Il secondo namespace si
riferisce all'ontologia utilizzata in questa descrizione dall'autore, e
permetterà quindi all'applicazione di definire il senso dell'elemento
s:Creator.
All'interno
dell'elemento rdf:Description l'attributo about indica la risorsa della quale
si sta formulando un'asserzione. L'elemento rdf:Creator fornisce i dati
relativi all'asserzione fatta sulla risorsa specificata (www.w3.org/TR/1999/REC-rdf-syntax-19990222).
Il
fatto fondamentale dei dati RDF è che ogni asserzione viene espressa come una
relazione fra un soggetto un predicato ed un oggetto. La risorsa indicata da
about è il soggetto dell'asserzione. Il predicato è l'elemento in namespace che
determina un valore. L'oggetto è questo valore indicato dai dati. Nel caso
sopra esposto: la risorsa http://www.w3c.org/Home/Lassila (soggetto), ha come
creatore (predicato), Ora Lassila (oggetto). Tutte le dichiarazioni RDF si basano
sul costruirsi di triple. In pratica, intrinsecamente, RDF supporta solo
relazioni binarie, cioè relazioni fra due risorse, per istaurare relazioni di
livello superiore è necessario servirsi di una risorsa intermedia in grado di
fornire le rimanenti relazioni che si intendano esprimere. L'ultima
raccomandazione W3C fa un esempio di questo tipo. Consideriamo come soggetto
uno degli articoli di John Smith. Possiamo associare alla risorsa un codice di
valore ma questo dovrà poi essere a sua volta riportata ad uno schema, cioè a
sua volta dovrà fungere da soggetto per il quale un predicato specificherà un
valore (www.w3.org/TR/1999/REC-rdf-syntax-19990222). Per fare questo abbiamo
bisogno di dichiarare due namespace, in modo da possedere due predicati:
<rdf:RDF
xmlns:="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/metadata/dublin_core#"
xmlns:l="http://mycorp.com/schemas/my-schema#">
<rdf:Description
about="http://www.webnuts.net/Jan97.html">
<dc:Subject
rdf: value="020"
l:Classification="Dewey Decimal Code"/>
</rdf:Description>
</rdf:RDF>
L'altro
concetto chiave di RDF è quello di reificazione.
Reificare significa riportare ad un oggetto concreto una realtà astratta. Nel
caso di RDF con questo verbo si intende indicare l'azione tramite la quale un
concetto, l'elemento che funge da predicato, è riportato a due localizzazioni,
due nodi pagina, dei quali si esprime una relazione. La particolarità e la
forza di RDF sta nel fatto di indicare delle URI (Uniform Resource Identifier), cioè degli indirizzi in grado di
localizzare esattamente e senza ambiguità una ed una sola risorsa. Questo fatto
è fondamentale in quanto permette di stabilire esattamente gli oggetti di cui
si parla e di dichiararne poi la loro appartenenza ad un determinato concetto.
In questo modo si possono confrontare le risorse in rete e capire quali
esprimono lo stesso tipo di concetto in relazione a quale altra concreta
risorsa.
Per
capire la particolarità di questo fatto pensiamo ad un ordinario file XML. In
questo caso abbiamo una serie di dati che sono marcati da elementi, dei vari
elementi è poi indicata la struttura e le relazioni fra di essi. Tuttavia gli
elementi che si usano, i tag che si è scelto di adoperare, per la macchina non
hanno nessun significato, se non in quanto si distinguono l'uno dall'altro. Per
di più, gli elementi che io ho deciso di usare per indicare un certo tipo di
dati non è detto che siano utilizzati
anche in altri documenti con la stessa occorrenza. In pratica il
computer non può confrontare i dati di due documenti decidendo se appartengono
ad uno stesso concetto, ad uno stesso tipo di relazione. In XML per lavorare
coi dati devo assicurarmi che appartengano ad una stessa DTD, o ad uno stesso
schema, altrimenti si può ingenerare confusione.
Nel
caso di RDF i dati che sono messi in relazione, oltre a definirsi in un
concetto, che sarà poi specificato nella ontologia di dominio, sono indicati in
modo univoco, come risorse che nella rete hanno una ed un'unica posizione. In
questo modo i dati possono essere confrontati nella maniera più produttiva,
consentendo addirittura di riconoscere uno specifico dato e di accrescere la
conoscenza relativamente alla sua appartenenza a un concetto.
La
cosa è di fondamentale importanza perché mette in gioco la capacità di
referenza dei segni nella rete. In base a quanto detto fin ora si capisce che
in un certo senso i "segni", cioè i dati archiviati in rete, in una
prospettiva di questo genere, avrebbero la forza di richiamare automaticamente
la loro referenza.
Queste
che abbiamo definito sono le caratteristiche fondamentali del linguaggio RDF.
Esistono poi una serie di possibilità per potenziare queste caratteristiche. Ad
esempio sono possibili varie tecniche di abbreviazione delle dichiarazioni che
sostanzialmente si basano sull'idea di nidificare i namespace e di inserire
all'interno dell'elemento rdf:Description più attributi. Ad esempio, attraverso
i tag rdf:Bag, rdf:Sequence o rdf:Alternative, esiste la possibilità di
utilizzare contenitori per racchiudere una lista di oggetti da associare ad un
soggetto.
<rdf:Description
about="http://www.unicatt.it/studenticorso/6.html">
<s:Students>
<rdf: Bag>
<rdf: li resource="http://www.unicatt.it/studenticorso/Mario.html"/>
<rdf: li resource="http://www.unicatt.it/studenticorso/Franceso.html"/>
<rdf: li resource="http://www.unicatt.it/studenticorso/Luca.html"/>
<rdf: li resource="http://www.unicatt.it/studenticorso/Maria.html"/>
</rdf: Bag>
</s:Students>
</rdf:Description>
</rdf:RDF>
Per fare un esempio concreto riportiamo ora
un file di descrizione di metadati di foto. Describing
and reterving photos using RDF è un progetto che si pone un comunissimo
obbiettivo: quello di fornire una descrizione tramite metadati per un archivio
di foto, facilitando così nella ricerca il reperimento della giusta immagine, senza l'obbligo di
visualizzare le singole fotografie archiviate
(www.w3.org/TR/2000/NOTE-photo-rdf-20000928). L'ontologia di riferimento per
dichiarare i dati si basa sul Dublin Core
Schema, al quale è accostato uno schema addizionale per le descrizioni
tecniche. Lo schema Dublin Core è un vocabolario di termini, sviluppato dalla Dublin Core metadata initiative, per la
descrizione di vocaboli, libri figure ed immagini
(http://purl.oclc.org/docs/core/documents/rec-dces-19990702.htm). A questo
schema è stata poi apportata una modifica introducendo uno schema per le
descrizioni tecniche delle immagini.
Nell'esempio sottostante il primo namespace richiama la sintassi RDF, il
secondo la sintassi Dublin Core ed il terzo lo schema tecnico appositamente
studiato per questo progetto. I documenti che costituiscono lo schema Dublin
Core sono illustrati all'indirizzo internet
http://dublincore.org/documents/dces/. Gli elementi preceduti dal prefisso DC:
si rifanno ad un'ontologia Dublin Core, gli elementi preceduti da Technical: si
richiamano alla ontologia Dublin Core modificata per le esigenze di risorse
fotografiche. All'interno dei tag sono espressi i metadati veri e propri
dichiarati per le singole immagini.
Figura
4.6 esempio RDF.
|
<?xml
version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:DC="http://purl.oclc.org/dc/documents/rec-dces-199809.htm#" xmlns:Technical="http://www.w3.org/2000/PhotoRDF/technical-1-0#"> <rdf:Description
about=""> <DC:Coverage>Montredon-Labessonié
(Tarn)</DC:Coverage> <DC:Source>Photo</DC:Source> <DC:Relation>Marian
in the Tarn</DC:Relation> <DC:Date>1999-06-26</DC:Date> <DC:Description>Marian
brings the sheep to the field in the morning. The lamb she carries was born
that night.</DC:Description> <DC:Publisher
rdf:resource="http://www.w3.org/People/Bos/"/> <DC:Title>Marian
with sheep</DC:Title> <DC:Type>image</DC:Type> <DC:Format>image/jpeg</DC:Format> <DC:Identifier>990621</DC:Identifier> <DC:Creator
rdf:resource="http://www.w3.org/People/Bos/"/> <Technical:camera
rdf:resource="http://www.w3.org/People/Bos/CanonEos"/> </rdf:Description> </rdf:RDF> |
L'ontologia è un vocabolario nel quale sono
espressi i significati dei termini, gli elementi dei tag, utilizzati in una
descrizione. Di un elemento bisogna identificare la risorsa alla quale si
riferisce, la relazione che questo elemento ha con altri e un eventuale
commento sul suo significato. Date queste tre cose sarà possibile applicare
delle regole di deduzione logica per stabilire, se e in che condizioni, una
risorsa, cioè una pagina web, può essere collegata a un'altra. Se ad esempio
un'applicazione alla ricerca di un corso di linguistica leggesse in un file di
metadati che la risorsa presa in considerazione ha come autore uno studente
universitario, e la sua ontologia di riferimento collegasse gli elementi
"studente" come sottocategorie degli elementi "università"
e tra i sottoelementi di "università" descrivesse l'elemento
"corso", per l'applicazione sarebbe possibile passare dalla risorsa
attribuita allo studente alla risorsa attribuita al corso usando come ponte la
risorsa attribuita all'elemento "università".
Una ontologia descrive insomma delle
relazione fra elementi, fra tag usati per descrivere risorse, nei metadati
invece vengono descritte relazioni fra risorse.
Ad oggi esistono diversi sistemi per
scrivere un'ontologia. Nei progetti del W3C l'idea è di promuovere il sistema RDF
Schema, che sempre in sintassi XML e attraverso l'uso di namespace, definisce
relazioni per gli elementi RDF usati nella descrizione di metadati. Ad oggi lo
stadio di valutazione del consorzio definisce questo sistema Candidate Recomandation, lo stadio precedente
la raccomandazione vera e propria (www.w3.org/TR/2000/CR-rdf-schema-20000327).
Il vocabolario di RDF Schema è informalmente
chiamato rdfs ed è richiamato tramite il riferimento all'URI
http://www.w3.org/2000/01/rdf-schema#".
In questa specifica si fa ovviamente riferimento alla sintassi RDF
tramite l"utilizzo del nemespace rdf, ci si riferirà quindi all'URI
http://www.w3.org/1999/02/22-rdf-syntax-ns#".
Nel documento RDF Schema si dovranno
specificare le gerarchie tra gli elementi e in questo modo fornire ad un agente
informatico la capacità di applicare ad essi regole di deduzione.
Per indicare le relazioni fra i vari
elementi ci sono varie possibilità di definire un elemento.
§
rdfs:Resource. Ogni cosa descritta attraverso gli
RDF è una risorsa. Solitamente si tratta di pagine web descritte dai metadati
RDF.
§
rdf:Property. La sottocategoria di rdfs:Resource è
rdf:Property.
§
rdfs:Class. Rappresenta il generico concetto di
categoria.
§
rdf:type. Con questo tag si indica una risorsa
della sintassi RDF e si dice di questa che è parte di una classe.
§
rdfs:subClassOf. Questa proprietà indica una
relazione di dipendenza tra due classi.
§
rdfs:ContraintResource. Si indica una risorsa che
si oppone ad un'altra risorsa.
§
rdfs:ContraintProperty. Si indica una proprietà che
si oppone ad un'altra risorsa.
§
rdfs:range. Si indica la classe, o le classi, il
cui valore di una proprietà sia membro della classe.
§
rdfs:domain. Si indica una classe che possiede una
priorità gerarchica rispetto alla risorsa descritta.
Un esempio di listato RDF Schema potrebbe
essere il seguente (www.w3.org/TR/2000/CR-rdf-schema-20000327). In questo
esempio si indica che gli elementi MotorVehicle e Person sono collegati a
quello registerdTo. MotorVehicle è una sottocategoria di registerdTo. Person è
un valore che può essere assunto da registerdTo. Il tipo di risorsa indicato è
una proprietà in base alle regole di sintassi RDF.
<rdf:RDF
xml:lang="en"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">
<rdf:Description
ID="registeredTo">
<rdf:type
resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#Property"/>
<rdfs:domain
rdf:resource="#MotorVehicle"/>
<rdfs:range
rdf:resource="#Person"/>
</rdf:Description>
<rdf:Description ID="rearSeatLegRoom">
<rdf:type
resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#Property"/>
<rdfs:domain
rdf:resource="#PassengerVehicle"/>
<rdfs:domain
rdf:resource="#Minivan"/>
<rdfs:range
rdf:resource="http://www.w3.org/2000/03/example/classes#Number"/>
</rdf:Description>
</rdf:RDF>
Il linguaggio RDF Schema possiede molte
altre proprietà e implicazioni. In questo lavoro non intendiamo però
esplicitare tutte le sue funzioni quanto più semplicemente mostrarne il
meccanismo di funzionamento. Quello che è importante osservare è come il
linguaggio RDF Schema sia un linguaggio che costruisce i suoi significati in
virtù delle relazioni fra gli elementi utilizzati negli RDF. In pratica i
metadati descrivono relazioni tra dati, in particolare fra risorse, cioè pagine
web, ma il significato di queste relazioni è costituito ad un secondo livello,
quello dell'ontologia, nella quale nuovamente si definiscono relazioni, ma non
più tra i dati quanto tra gli elementi, i tag, usati per descrivere quei dati.
Tutto questo avviene con un costante riferimento a risorse, cioè ad una
localizzazione precisa e univoca di dati. Questa cosa ci mostra molto bene come
il Web Semantico si fonda completamente su una distinzione di molti livelli di
significazione. Il ricorso a più livelli per la trattazione dei dati si motiva
nella ricerca di flessibilità e di interscambiabilità dell'informazione.
In realtà non è obbligatorio che un sistema
come RDF Schema sia una ontologia, intendendo questo termine per indicare non
semplice vocabolario ma una descrizione semantica degli elementi. La
definizione degli elementi può essere anche solo descrittiva e non proporre
alcuna relazione, alcun rapporto di significato fra gli elementi espressi. E'
il caso dell'esempio fatto precedentemente dell'uso degli RDF per la
catalogazione delle foto. In questo caso lo schema applicato è puramente
descrittivo ed introduce solo una traduzione dei vari elementi in più linguaggi
ed eventualmente un commento sul loro utilizzo. Riportiamo qui lo schema
tecnico dei metadati per una foto esposti nella figura 4.6.
Figura
4.7 RDF Schema.
|
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns="http://www.w3.org/TR/1999/PR-rdf-schema#"> <Class
rdf:ID="Technical-data"> <comment xml:lang="en">A
class that represents technical data about a photo</comment> <comment
xml:lang="fr">Une classe qui réprésente les dates techniques sur une
photo</comment> <comment
xml:lang="nl">Een class die de technische gegevens van een foto
representeert.</comment> </Class> <rdf:Property
rdf:ID="camera"> <label
xml:lang="en">Camera</label> <label
xml:lang="fr">Camera</label> <label
xml:lang="nl">Camera</label> <comment
xml:lang="en">Brand and type of camera</comment> <comment
xml:lang="fr">Marque et type de camera</comment> <comment
xml:lang="nl">Cameramerk en -type</comment> <domain
rdf:resource="#Technical-data"/> </rdf:Property> <rdf:Property
rdf:ID="film"> <label
xml:lang="en">Film</label> <label xml:lang="fr">Film</label> <label
xml:lang="nl">Film</label> <comment
xml:lang="en">Brand and type of film</comment> <comment
xml:lang="fr">Marque et type de film</comment> <comment
xml:lang="nl">Filmmerk en -type</comment> <domain
rdf:resource="#Technical-data"/> </rdf:Property> <rdf:Property
rdf:ID="lens"> <label
xml:lang="en">Lens</label> <label
xml:lang="fr">??</label> <label
xml:lang="nl">Lens</label> <comment
xml:lang="en">Brand and type of film.</comment> <comment
xml:lang="fr">Marque et type de film.</comment> <comment
xml:lang="nl">Filmmerk en -type.</comment> <domain
rdf:resource="#Technical-data"/> </rdf:Property> <rdf:Property
rdf:ID="devel-date"> <label
xml:lang="en">Development date</label> <label
xml:lang="fr">Date de developpement</label> <label
xml:lang="nl">Ontwikkeldatum</label> <comment
xml:lang="en">Date on which the film was
developed.</comment> <comment
xml:lang="fr">Date a laquelle le film a été developpée.</comment> <comment
xml:lang="nl">Datum waarop de film is
ontwikkeld.</comment> <domain
rdf:resource="#Technical-data"/> <!-- use
http://www.w3.org/TR/NOTE-datetime format:
YYYY[-MM[-DD[Thh:mm[:ss[.sTZD]]]]] example: 1999-10-01T17:53 if TZD is omitted the timezone is UTC
--> </rdf:Property> <!-- [more?] --> </rdf:RDF> |
Questa osservazione ci fa capire come sia
fondamentale l'esplicitarsi delle relazioni fra gli elementi se si vuole
ottenere un sistema che possegga delle potenzialità semantiche, cioè la
capacità di trattare i dati, e non solo di trasmetterli.
Se ad esempio in una descrizione di animali
io definissi la classe dei carnivori, sicuramente il leone rientrerebbe in
questa classe. Il leone è legato alla classe delle prede in quanto ne è
mangiatore. Le prede sono anche erbivore e si collegano a questa classe,
tuttavia gli elefanti che sono erbivori non sono prede in quanto un animale per
essere definito preda deve possedere delle dimensioni massime che l'elefante
supera. Una volta espresse tutte queste relazioni, senza la necessità di una
esplicita descrizione un agente informatico potrebbe sapere che il leone non è
mangiatore di elefanti.
La cosa interessante di un sistema di questo
tipo è che non è rigido. Io infatti potrei definire, in uno schema, un insieme
di relazioni fra le classi ma nulla vieta che in un futuro io possa collegare
quello schema ad un altro che introduca nuove relazioni. Ad esempio in un nuovo
schema si potrebbe affermare che gli elefanti possono essere adulti o non
adulti, e che queste due classi si distinguono per la taglia degli animali. A
questo punto un agente informatico potrebbe dedurre che il leone potrebbe
mangiare solo elefanti non adulti ma mai elefanti adulti.
Il sistema di specificazione delle relazioni
funziona ovviamente grazie a certi elementi della sintassi RDF Schema quali
rdfs:subClassOf, rdfs:ContraintResource, rdfs:ContraintProperty. Con un'altra
sintassi la comunicazione fra schemi non è possibile. Un grosso problema per il
Web Semantico è quindi la messa in relazione di ontologie basate su sintassi
diverse. Oltre a RDF esistono altri sistemi di ontologie, come ad esempio DAML
o OIL (http://lists.w3.org/Archivies/Pulic/www-rdf-logic/2000Nov/0094.html).
Oltre
ad avere una base di dati interscambiabile ed un linguaggio per descriverli, il
Web Semantico deve fornirsi della possibilità di definire il significato di
questi dati, solo così la sua capacità di ricercare, accostare e selezionare
l'informazione potrà basarsi su processi automatici. Come già detto
l'attribuzione di un significato agli elementi è un'operazione affidata a
vocabolari, detti anche ontologie.
La
prima cosa che dobbiamo senz'altro rilevare è il fatto che questo livello
rimanga staccato dagli altri. La cosa ha diverse conseguenze. Innanzi tutto se
la definizione del significato delle relazioni fra le risorse rimane una cosa
diversa dalle relazioni, questo significa che ad uno stesso schema di relazioni
si possono attribuire significati diversi, a seconda delle esigenze e delle
finalità. La conseguenza di ciò è in prima battuta la possibilità di aggiornare
le definizioni con le quali si lavora. Oltre a ciò la grande acquisizione è
quella di poter confrontare, per una stessa risorsa, più ontologie.
Questo
ultimo fatto è il maggiormente significativo. Il Web Semantico, il linea
teorica, potrebbe essere anche pensato come sistema funzionante a partire da
un'unica ontologia. Possedere un unico schema di definizioni permetterebbe
senz'altro di rendere tutte le risorse riconducibili tra loro, tuttavia ogni
tipo di definizione non prevista dal nostro schema non potrebbe essere trattata
dal sistema. Un sistema centralizzato collasserebbe sulla sua rigidità perché
non potrebbe essere usato per "dire" molte relazioni che magari
sarebbe utile esprimere.
Il
fatto di consentire la libertà a chiunque di istituire la propria ontologia è
al contrario molto più vantaggioso. Gruppi specializzati, abituati a trattare
un certo genere di informazione, non avranno difficoltà ad istituire la propria
ontologia, le proprie definizioni di riferimento. Ogni necessità comunicativa
richiede termini specifici e porta a definizioni diverse dei termini in gioco.
Le varie ontologie presenti nella rete potranno poi essere confrontate fra
loro, tradotte, in questo modo la forza semantica di una risorsa, la sua
capacità di significare non potrà che aumentare perché vista sotto l'effetto di
ontologie diverse.
Attualmente
il vero problema del Web Semantico è quello di raggiunger un'adeguata capacità
di confronto fra ontologie diverse. Sostanzialmente il problema è quello della
traduzione, come si traduce automaticamente un linguaggio in un altro.
Intuitivamente si capirà che la questione non è di banale risoluzione.
Esistono
da decenni sistemi di traduzione per dati posizionati sotto campi ontologici
diversi. Queste applicazioni vengono soprattutto utilizzate per far comunicare
fra loro due database o per trasferire i dati di un vecchio database in una applicazione
più moderna.
Il
sistema utilizzato per attuare queste traduzioni si basa sulla costruzione di
un campo intermedio di transito dei dati. Questo campo intermedio riconduce
alla propria categorizzazione le due diverse ontologie che sta mettendo in
comunicazione. Ovviamente questi schemi di traduzione devono essere aggiornati
qualora le definizioni all'interno delle ontologie dovessero cambiare. In
questo sta la loro più grossa debolezza. In ogni caso è anche vero che è sempre
possibile inserire elementi automatici di deduzione logica per l'ampliamento
delle deduzioni. Sostanzialmente i vari traduttori esistenti oggi si
distinguono per il grado di spazio che la parte automatica di deduzione logica
assume.
Sistemi
che fanno affidamento più fortemente su regole automatiche hanno meno necessità
di aggiornamento ma falliscono qualora si tenti di inserire al loro interno
elementi lontani dagli schemi logici utilizzati. Sistemi che si basano su un
maggior lavoro di aggiornamento funzionano solo relativamente alle relazioni
tra termini che sono state inserite.
Quello
che è importante sottolineare è come in ogni caso questi mezzi di traduzione
sono limitati nella loro definizione formale originaria. Non si discute qua la
loro funzionalità e la loro efficacia, ma la loro possibilità di raggiungere la
completezza. Ogni traduttore funziona a partire da un insieme di regole
formali, la sua capacità di definire significati è limitata fin dall'inizio dal
sistema formale adottato, non sarà mai quindi completa. La cosa interessante
nel Web Semantico, visto che si basa sulla collaborazione fra più vocabolari
ontologici, è che la sua forza di definizione non è legata ad un unico sistema
formale, ma si gioca su diversi livelli in collaborazione fra loro. E' in ogni
caso da notare come in realtà il dispiegarsi dei livelli si fermi al quarto o
quinto grado (gli RDF, due o tre ontologie in relazione fra loro, un sistema di
traduzione). Il sistema è ancora lontano dall'avvicinarsi alla completezza. In
ogni caso è anche da concedere che la funzionalità di uno strumento tecnico
debba essere valutata sul campo, nell'uso, e non può essere decisa a priori.
In
un articolo di Steffen Staab, dell'università di Karlsruhe, intitolato An Extensiblee Approach for Modeling
Ontologies in RDF(S), appare molto chiaro come le soluzioni per affrontare
il problema della interscambiabilità delle informazioni espresse da
un'ontologia sono di due opposti generi (www.aifd.uni-karlsruhe.de/WBS). Da un
lato abbiamo la costituzione di Repository
ben chiare e definite, di ontologie specifiche per un argomento condivise dalle
aziende, e dalle realtà che ne trattano. E' questa una soluzione che punta alla
standardizzazione di un sistema formale unico. All'opposto abbiamo la
possibilità di lasciare liberamente comunicare le ontologie permettendo che nel
confronto si accrescano le relazioni
espresse fra i termini. Si tratta di una soluzione che incentiva la
massima creatività e consentirebbe di creare un sistema veramente in grado di
accrescere la nostra conoscenza.
Entrambe
queste soluzioni hanno pregi e difetti. La prima è funzionale ma può fallire
per la sua povertà, per la sua rapidità di invecchiamento, ed il rischio che si
trovi a trattare informazione per la quale il sistema non è adeguato. La seconda
è più flessibile, si adegua alla molteplicità del mondo informatico, intendendo
sia la molteplicità dei sistemi applicativi, sia la molteplicità di soggetti
che vi accedono. E' una soluzione che consente la registrazione di nuove
relazioni semantiche pur restando in uno stesso sistema sintattico. Tuttavia
non sempre è funzionale, può comportare errori nel funzionamento del sistema,
può creare legami non significativi, insensati o che localizzano risorse non
più esistenti (il famoso Error 404). Tim Berners-Lee ha sempre sostenuto che un
sistema informatico con ambizioni semantiche dovrà abituarsi ad accettare
l'imprecisione e l'errore
(www.scientificamerican.com/2001/0501issue/0501berners-lee.html). Questo è
sicuramente vero, poiché un sistema rigido, del tipo database centrale, non può
funzionare su ampia scala, il successo di Internet nasce nel momento in cui si
è rotta la logica centralista, tuttavia è anche vero che attualmente, e di
certo anche nel futuro, il sistema sarà un sistema misto, che si baserà in
parte sulla standardizzazione e in parte sulla possibilità di creare più
sistemi di relazioni delle risorse.
Sicuramente già negli ultimi anni si è visto come molte aziende o gruppi di
aziende si siano mossi per la creazione di propri sistemi di interscambio dei
dati, che fornissero un approccio standard al genere di informazione da loro
trattato.
Attualmente
i sistemi di traduzione più utilizzati, quelli coi quali lavora il W3C, sono: KIF (Knowledge Interchange Format)
(www.semantic-translation.com) e UML (www-db.stanford.edu/skc).
Abbiamo
visto quali sono gli stadi fondamentali attraverso i quali dovrebbe funzionare
una realtà come quella del Web Semantico. Ovviamente, si è detto, il progetto
su cui sta lavorando il Consorzio, per diventare realtà, dovrà essere in grado
di superare, alla prova dei fatti, lo scarto, che esiste per ogni tecnologia,
fra costi richiesti e benefici prodotti. In pratica il passaggio ad un sistema
semantico nel Web potrà avvenire solo se la comunità dei naviganti sentirà
questa esigenza come più forte rispetto alle difficoltà che la sua introduzione
necessariamente comporterà. Gli scettici sottolineano come sia impossibile
pensare ad una riscrittura dell'intera rete informatica. Tuttavia bisogna dire
che perché il Web Semantico decolli non è strettamente necessario che la sua
diffusione coinvolga l'intera rete, è sufficiente che la diffusione sia
abbastanza ampia da rendere l'utilizzo di questa risorsa interessante, col tempo
la permeanza semantica non potrà che aumentare.
Se
pensiamo alla possibilità di marcare i dati, di visualizzarli in maniera
differente, di costruire collezioni di metadati reificando le risorse, di
attribuire a questi metadati vocabolari che li interpretino, ci rendiamo conto
come i dati in una rete di relazioni di questo tipo siano veramente inseriti in
una semiosi attiva.
Non
può non ritornarci alla mente un'affermazione che David Bolter, di certo con
eccessivo ottimismo, riferiva agli ipertesti, ma che con più successo si
potrebbe forse utilizzare per il Web Semantico:
Si
potrebbe dire che la teoria semiologica, acquista evidenza, un'evidenza quasi
triviale, nel mezzo offerto dal computer. Nei mezzi di comunicazione precedenti
come il libro a stampa, il riferimento dei segni a altri segni era solo
potenziale. Il computer invece, inteso come testo apparentemente capace di
lettura e di scrittura provvede a se stesso la sua propria semiosi. (Bolter, 1991, 248).
Verificheremo
con più precisione queste affermazioni, ma è chiaro che le implicazioni di uno
strumento, come quello che sarà forse il Web Semantico sono di questo tipo.
Per
la prima volta nella storia dell'umanità si prospetta l'ipotesi di possedere
una universale, o almeno tendente all'universale, collezione di segni in una
concreta rete di relazioni concettuali. Se dovessimo intendere in modo forte
una prospettiva del processo di semiosi come di un continuo rimando fra segni,
avremo qui forse la possibilità di definire in modo chiaro e univoco il
significato di ogni segno.
Questa
posizione apparirà intuitivamente esagerata, e così, lo si vedrà bene, è di
fatto. Tuttavia, di fronte ad uno strumento di comunicazione, uno strumento di
semiosi, così potente la domanda da porsi va certamente in quella direzione.
Quanto una rete di segni di questo tipo accresce la comprensione delle cose?
Quanto i significati di ciò che noi intendiamo potranno essere avvicinati a
oggetti concreti, a dati univoci ?
Durante
tutto il novecento, quasi come se si stesse per preparasi all'avvento delle
reti informatiche odierne, si è discusso moltissimo su questo problema.
Secondo
Umberto Eco se ogni singolo segno di un sistema si rifà a un testo siamo
immediatamente portati ad una prospettiva di semiosi illimitata, basata sul
concetto di interpretante. La nozione
di interpretante Eco la mutua direttamente da Peirce, che la introdusse nel
1895 (Eco, 1979, 27). Peirce parte dall'idea che un segno sta in luogo di
qualcosa in qualche rispetto o capacità. Esso indica nella mente di chi lo usa,
sia come mittente che come destinatario, un segno equivalente o piuttosto un
segno più sviluppato. Questo segno che esso indica è l'interpretante.
Sorprendentemente
questa definizione del processo di semiosi ci ricorda il meccanismo di funzionamento
del Web Semantico, e in particolare del sistema RDF. L'interpretante potrebbe
essere benissimo definito come il predicato che relaziona due risorse.
Ma
dove sta il limite di questo processo semiotico? Dove significato e
significante si toccano? A queste domande abbiamo già cercato di dare una
risposta nel secondo capitolo, ma ora le riprenderemo, considerando anche i
risultati ottenuti, posti di fronte alla concretezza di una vera e propria rete
attiva di segni.
Peirce
appare sicuro che il significato di una rappresentazione non possa essere altro
che una rappresentazione e perciò non sia mai del tutto possibile raggiungere
un limite, non compromesso dal continuo rimando, tuttavia egli stesso rileva
che dovrà pure esistere una zona di confine tra il rilevante e l'irrilevante.
Chi volesse definire la parola "litio" vedrà immediatamente quanto
sia difficile stabilire per questo termine una distinzione tra proprietà
necessarie o solo accessorie. Il litio potrebbe essere descritto come un minerale
vitreo e traslucido, che talora appare come un globulo di metallo rosato
argenteo, tuttavia certamente questa definizione non completa la totalità dell'informazione relativa al termine. Ad
esempio non si considera come allo stato liquido esso assuma proprietà radicalmente
diverse. L'unica altra strada che ci rimane è quella di dire che per riferire
un oggetto è sufficiente rilevarne l'informazione semantica necessaria a
inserirlo nei termini di un discorso. In questo modo Peirce arriva a definire la nozione di interpretante finale. Esso sarebbe
un'abitudine, una tendenza a agire in
modo simile in circostanze simili. Ogni segno, presentandosi in situazioni
analoghe, produce una risposta regolare e questa si consolida fino a diventare
una legge. Questa nozione di abitudine che si è così raggiunta non deve essere
limitata ad una categoria psicologica, il suo consolidarsi si origina nelle
risposte che un individuo produce in circostanze date, ma, poiché queste
risposte sono frutto di un accostarsi al mondo, l'abitudine manifesta una
regolarità cosmologica. Questo ci dice anche che l'esperienza viene a porsi
come limite ultimo della serie dei rimandi.
Questo
risultato ci mostra subito chiaramente una cosa. Esiste uno scarto tra il reale
che agisce ed un sistema comunicativo, un linguaggio, che tenta di definirlo.
Se noi definiamo la nostra conoscenza raffinando dei concetti in base a una
regolarità che cogliamo attraverso l'esperienza, in un continuo processo mai
completo, allora è chiaro che la realtà rimarrà sempre un pezzo più lontano
della nostra capacità di definirla. Questo ci dice che l'ontologia espressa da
un sistema comunicativo, qualora anche potesse esplicitare tutta la rete dei
riferimenti, sarebbe pur sempre un'ontologia di ciò che noi conosciamo, non della
realtà in sé.
Qualora
anche si potesse ottenere un sistema di comunicazione, completamente universale
e in grado di esplicitare tutti i riferimenti, l'ontologia da esso espressa, il
significato dei segni in esso contenuti, non si potrebbe mai ritenere
espressione della realtà, ma al massimo di ciò che l'umanità conosce della
realtà.
Ontologia dell'essere
è quella scienza che tenta di dedurre le proprietà di ciò che esiste in quanto
esistente, cioè non in quanto una particolare realtà ma in quanto una realtà
che, perché reale, possiede le caratteristiche di ogni reale. In questo senso
l'ontologia è intrinsecamente metafisica, è lo studio più assoluto dell'ente.
Accanto
a questo tipo di ontologia esistono anche le così dette ontologie regionali, ontologie che tentano una definizione delle
proprietà di specifiche realtà. Addirittura il metodo delle ontologie regionali
è utilizzato da alcune industrie per definire collezioni di caratteristiche
degli oggetti in produzione. Come collezione di caratteristiche e di relazioni
il temine è mutuato anche nel mondo informatico.
In
pratica bisogna evidenziare che la definizione di un'ontologia può possedere
due tipi di implicazioni. Può applicarsi alla realtà in quanto tale o a realtà
specifiche.
Prendiamo
ora l'esempio di un lavoro che sintetizza questi due aspetti. Nicola Guarino ha
lavorato molto sul problema della definizione di collezioni di proprietà. Il
suo approccio è in prima battuta filosofico ma pone molta attenzione alle
applicazioni concrete in campo soprattutto informatico.
Prendiamo
in considerazione l'articolo A Formal
Ontology of Properties, scritto
in collaborazione con Christopher Welty
(www.ladseb.pd.cnr.it/infor/ontology/ontology.html). Il punto di partenza per
l'analisi è stabilito nella distinzione di tre idee fondamentali: quella di identità, unità ed essenza. Per
capire queste tre idee è necessario confrontarle fra loro. L'unità si distingue dall'identità in
quanto si parla di unità nel caso in cui si intenda distinguere fra parti. Nel
caso dell'identità il problema che ci
si pone è quello della permanenza nel tempo. Come una cosa rimane se stessa?
Questa domanda ne pone immediatamente un'altra: quali proprietà di una cosa
possono cambiare e quali no? La risposta a questo problema si affronta
definendo l'essenza di una realtà.
A
partire da questi problemi Guarino definisce alcune proprietà fondamentali. Non
è nostro interesse elencarle tutte ma faremo alcuni esempi significativi. Una
proprietà si dice rigida se è essenziale
per tutte le istanze nelle quali si presenta. Non-rigida se non è essenziale per qualcuna delle istanze. Una
proprietà rigida veicola condizioni
d'identità necessarie se contiene queste condizioni come variabili libere e
queste condizioni confermano
l'identità. Proprietà con incompatibili condizioni d'identità sono disgiunte.
Ora
la cosa che ci interessa notare è che un lavoro di questo tipo può avere due
implicazioni molto diverse. Le proprietà definite possono essere intese come
proprietà dell'essere in quanto essere, cioè come le proprietà condivise da
qualsiasi essere. In questo senso il lavoro fatto può avere un'ottima
precisione ma non ci dirà mai nulla sulle realtà individuali, nel senso che
tutta questa griglia di proprietà non verrà riempita da singole realtà.
Se
al contrario il mio intento è quello di utilizzare questa catalogazione come
schema di distinzione e comprensione di realtà individuali le cose cambiano
radicalmente. Se voglio inserire degli oggetti concreti all'interno di queste catalogazioni,
in quanto lo ritengo utile per la loro gestione, devo decidere, per ogni
singolo oggetto che io considero, quali siano le sue caratteristiche. Questo è
esattamente l'approccio col quale vengono usate le ontologie nell'industria o
in informatica. Sapere dove collocare un oggetto e in che relazioni porlo con
altri mi può aiutare moltissimo a gestire il lavoro che dovrò operare tramite
gli oggetti, soprattutto nel caso in cui la quantità di informazione relativa
agli oggetti con cui operare è molto vasta.
Di
questo approccio bisogna tuttavia sottolinearne la peculiarità. Se io colloco
un oggetto in una categoria, se decido di attribuirgli certe proprietà e non
altre, lo potrò fare solo in base alla preconoscenza che ho di questo oggetto.
Dire, ad esempio, che due oggetti hanno proprietà disgiunte significa conoscere
il comportamento di questi oggetti.
Un
ontologia di questo tipo non apporterà propriamente nessun accrescimento di
conoscenza, al limite permetterà di coordinare meglio la propria conoscenza,
riconoscendo più rapidamente identità e disgiunzioni fra oggetti.
La
cosa ricorda il problema del limite dei sistemi formali, e in un certo senso
del teorema di Goëdel. Un'ontologia è sostanzialmente la definizione di un
sistema formale, si definiscono regole per ottenere teoremi. In questo senso
nessuna ontologia che vorrà applicarsi a degli oggetti concreti basandosi su
una definizione chiusa di proprietà sarà mai completa. Qualunque cosa non
prevista dalla nostra preconoscenza non riuscirebbe più a definirsi in questo
genere di ontologia. Costruire un sistema di sapere concreto su un'unica
ontologia significa fossilizzare la conoscenza, relegarla a essere sistema
chiuso.
E'
sorprendente notare come questo problema sia esattamente il problema che il Web
si trova ad affrontare. Il sistema più facile per possedere un sistema coerente
di scambio dell'informazioni potrebbe sembrare quello di definire un'unica
ontologia per tutta la rete e di concepire le comunicazioni al suo interno
tutte incentrate su quel tipo di ontologia. Ma questo in realtà sarebbe un
sistema molto svantaggioso, non tutti i tipi di comunicazione, non tutti i
linguaggi possono essere con coerenza riportati ad una stessa ontologia. Un
sistema rigido non produce mai grossa quantità di informazione. La cosa ricorda
le vicende legate ai primi anni di Internet. I detrattori di questo mezzo
sostenevano che senza un database centrale il sistema non avrebbe mai
funzionato. Al contrario la forza di Internet fu proprio nel non proporsi come
sistema centralizzato, in questo modo l'informazione aumentò a ritmi
eccezionali, creando in realtà una sorta di caos informativo, ma un caos
all'interno del quale è contenuto sostanzialmente tutto.
Tim
Berners-Lee ha insistito molto nel sottolineare che uno degli elementi
fondamentali del Web Semantico sarà la compresenza di più ontologie
(www.scientificamerican.com/2001/0501issue/0501berners-lee.html). Se si vuole
un sistema dinamico, capace di crescere, raffinarsi e funzionare sul scala
universale bisognerà pagare il prezzo di una certa dose di incoerenza.
L'imprecisione del sistema è il prezzo da pagare alla sua universalità, i
messaggi di not found non verranno insomma eliminati. Tutto questo per rendere
possibile l'affiancarsi di più referenze e quindi non perdere, almeno in linea
programmatica, la possibilità di più definizioni, di più comprensioni di uno
stesso oggetto concreto. Se crediamo che un sistema comunicativo debba
accrescere la conoscenza dobbiamo consentire l'accostarsi di più schemi
referenziali, se di uno stesso oggetto possediamo più definizioni e queste
potranno essere accostate, all'interno di una rete di rimandi, la nostra
conoscenza dell'oggetto dovrebbe solo accrescersi.
Parlando
del problema della referenza nel secondo capitolo, la nostra conclusione era
stata quella di dire che la referenza di un segno ad un significato si esprime
su più livelli, su più meccanismi regolativi, ma questi livelli non possono
intendersi come rigidi o gerarchici, lungo di essi deve essere possibile
muoversi agilmente da un piano all'altro.
Quello
che dovrebbe avvenire nel Web Semantico, in un sistema concreto di gestione
della conoscenza, è esattamente questo. I segni, a livello più basso i bit ma
possiamo partire dal considerare i dati di script delle pagine in rete, sono
collegati fra loro tramite un dispiegarsi di molti livelli. Ad un livello i
dati, ad un livello la visualizzazione, ad un livello i metadati, ad un livello
le ontologie. Questa modalità è la modalità che nella concretezza delle cose
garantisce la migliore scambiabilità e gestione del dato.
Bisogna
anche ricordare che una delle particolarità del Web Semantico è quella di
collegare risorse, di esprimere relazioni nodi pagina che sono localizzati in
modo preciso ed univoco. Con una parola si può parlare di questo fenomeno come
di reificazione delle informazioni. In una collezioni dei dati RDF si esprimono
relazioni fra concrete risorse. La referenza che si costituisce è in pratica
diretta.
Questo
fatto ci ricorda la teoria del riferimento diretto che appare nel dibattito
logico con l'obbiettivo di dare una risposta alla domanda: cosa indica un
termine? La teoria falliva perché non era in grado di tener debito conto
dell'inscrutabilità psicologica per cui non è precisamente possibile dire come
un parlante utilizzi un significato. Nel caso del Web Semantico questo problema
scompare perché sappiamo sempre a cosa ci stiamo riferendo, di che unità di
informazione affermiamo qualche cosa.
Il
problema nel Web Semantico si sposta nell'individuare una modalità di scambio
delle definizioni date di una risorsa. Per questo nascono le ontologie, per
permettere che le definizioni date di una risorsa siano inserite in un sistema
di concetti, gli elementi, i tag, usati nell'ontologia, maneggiabile da un agente software.
Come
si è visto la modalità di gestione delle ontologie rimane in bilico tra un
sistema centralizzato e standard ed un sistema estensibile di confronto fra le
relazioni semantiche poste.
Il
sistema standard garantisce senso al
rimando di referenze poste fra le risorse, tuttavia è vincolato da ciò che già
si conosce delle cose di cui si parla, è un sistema che si fonda sulla nostra
precognizione della realtà.
Il
sistema estensibile provoca errori e
buchi nella rete semantica, tuttavia consente un più efficace accrescimento
della conoscenza, poiché sperimenta automaticamente l'accostarsi di relazioni
semantiche magari mai tentate prima.
Il
Web Semantico si propone quindi come un sistema semiotico forte, ma non
certamente completo. Non solo per i suoi limiti tecnici, per la finitezza dei
suoi strumenti, ma in quanto si costruisce su un rimando dei livelli non
completamente svincolato. Si sale e scende da un livello semiotico all'altro,
dai dati all'ontologia, dai metadati ai dati, ma con delle interruzioni dovute
alla necessità di rifarsi a dei sistemi formali definiti, le sintassi, i domini
di ontologia.
Da
quando l'uomo ha iniziato a tracciare segni e a scrivere, egli ha tentato di
trasferire la referenza dei concetti fuori dalla sua mente, nel tentativo di
esplicitarla e renderla evidente. Internet è il primo sistema nel quale la
referenza dei segni sia attiva, automatica e rapida, poco legata alla linearità
alla quale era costretto il libro. Non deve essere un caso se la soluzione alla
quale la storia di questo media ha portato, nel tentativo di accrescere la
funzionalità del sistema di referenza e di accessibilità ai dati, sia passata
attraverso il disporsi su più livelli dell'informazione. A ben vedere tutta la
storia dell'informatica è un costruirsi di un livello su un altro nel tentativo
di aumentare la potenza di trasmissione dei dati.
Il
Web Semantico, come soluzione si costruisce proprio nella dispiegarsi in più
livelli dell'informazione. Se con HTML il grosso dei dati è posto tutto su uno
stesso documento con XML si attiva un processo di dislocazione delle varie
parti del documento.
Molto
significativo è certamente anche il fatto che le ontologie del Web Semantico
possono essere plurali. La capacità di definizione di una referenza è
accresciuta quando questa sia liberamente svincolata da schemi prefissati.
Ovviamente c'è la necessità dell'esistenza di schemi, di regole formali per il
trattamento dell'informazione e la definizione delle referenze. Una certa
regolarità è la solo possibilità per costruire un'automazione, per velocizzare
le procedure, tuttavia è anche necessario lasciare spazio alla possibilità del
raffinarsi di questi schemi, dell'accrescersi della conoscenza. Più in generale
si potrebbe dire che un sistema costruttivo, un sistema a stadi finiti, deve
costruirsi sul porsi di passaggi determinati, finiti appunto, ma che, poiché
questi passaggi finiti hanno sempre un limite nella capacità di agire, il
sistema sia portato a rivolgersi a livelli successivi per l'accrescimento della
propria potenza.
Sostanzialmente
il Web è un sistema semiotico, è un linguaggio. Potremmo definire l'ontologia
espressa da un linguaggio come ontologia
in attuale. Come un ontologia che esprime la realtà in virtù dell'attuale
stato di conoscenza condiviso dalla comunità che fa uso del sistema semiotico.
Questa affermazione applicata a Internet, e in particolare ad un Internet
semantizzato, diventa particolarmente interessante. La Rete si propone infatti
come il luogo di archiviazione, gestione e scambio di tutta la conoscenza
umana. Internet si propone come un sistema semiotico non solo universale ma
totalmente pervasivo delle nostre azioni comunicative. Non è probabilmente
lontana l'era nella quale anche tutti gli oggetti fisici di nostro uso
quotidiano utilizzeranno micro cip per comunicare con la rete. Si profila uno
scenario futuro nel quale ogni nostra azione potrà essere accresciuta
nell'efficacia da un collegamento in rete. In queste condizioni diventa
veramente interessante capire quale tipo di ontologia un sistema di questo tipo
ci proporrà.
Chiaramente
l'ontologia espressa da un sistema di comunicazione è il frutto delle
conoscenze che fino a quel momento si è stati in grado di inserire in quel
sistema. Le relazioni fra gli elementi sono quelle che si sono sapute definire.
Ovviamente Internet non è un sistema di primo livello, nel senso che mutua la
sua struttura e i suoi dati da altri linguaggi, dal linguaggio naturale, dall'esperienza
umana, da linguaggi informatici. In questo senso non si può dire che sulla Rete
vengano propriamente definita la realtà. Nella Rete entrano dati sulla realtà
già ampiamente strutturati, tuttavia la rete è in grado di raffinare la
capacità di confronto e utilizzo di questi dati accrescendo in questo modo
anche la conoscenza della realtà. Oggi come oggi questa cosa avviene in una
modalità sostanzialmente indiretta: è sempre l'uomo che fa il lavoro di
sintesi, la macchina fornisce solo una maggior quantità di informazione più
rapidamente. Col Web Semantico l'operazione di raffinamento della conoscenza
diventa in parte automatizzata perché alcune definizioni delle cose sono
contenute nelle ontologie.
In
ogni caso è bene tenere presente di come le possibilità di costruire realmente
una rete semantica in qualche modo completamente esplicitabile, siano limitate
dalle capacità tecniche degli strumenti usati.
Gli
RDF ad esempio hanno tra i loro pregi la semplicità della struttura assertiva
basata su triplette. Questa struttura, che mette in relazione due risorse, o
una risorsa e dei dati, attraverso un concetto, ha il pregio di essere
facilmente gestibile da una applicazione, in linea teorica inoltre non chiude
la possibilità a nessuna tipo di schema semantico perché consente, attraverso
l'utilizzo di concetti ponte di far intervenire relazioni fra più risorse, di
creare schemi circolari e gerarchie complesse. Detto questo è anche chiaro che
lo schema base degli RDF è comunque binario e se lo si trasforma in uno schema
fra più risorse lo si riesce a fare fino a un certo grado, se si prosegue
eccessivamente nella costruzione di schemi basati su rapporti binari
riallacciati tramite ponti, la struttura può cominciare a diventare pesante,
sia per il programmatore che deve idearla, sia per la macchina che deve
interpretarla attraverso continui rimandi a risorse in rete. In definitiva gli
schemi RDF sono uno strumento che semanticamente potrebbe risultare molto
potente ma che di fatto possiede dei suoi limiti tecnici intrinseci.
Per
quanto riguarda le ontologie, il loro limite è dettato dal fatto che solo a
piccolo gruppi possono essere confrontate. Un agente software che si trovasse a
dover interpretare il significato di un termine medico, sotto il dominio di
un'ontologia di ditte farmaceutiche, lo confronterebbe con le richieste del suo
utente, che magari cerca uno specialista per una cura, e fermerebbe li la sua
operazione. Nella prassi del Web Semantico gli agenti accosteranno piccole
quantità di domini di ontologie alla volta. La cosa è ovvia e naturale, nonché
pratica, tuttavia impedisce di pensare ad un possibilità fattiva di esplicitare
tutti i rapporti fra ontologie, e quindi di dedurre una specie di posizione
assoluta, di significato pieno, del termine trattato dall'agente. Nella realtà
del Web Semantico i significati dei termini saranno ricavati molto in base alla
necessità contingente e poco con l'obbiettivo di trarne il migliore dei
significati possibili.
I
campi di dominio dei termini si sintetizzeranno unicamente a piccoli settori:
non ci sarà l'esigenza ne la capacità tecnica di trarre per un termine una
sorta di significato trascendentale, attribuitogli dalla rete.
Quando
si dice che il Web Semantico fornirà la forma attuale dello stadio del sapere,
bisogna insomma tener bene conto di tutte queste limitazioni. In primo luogo
solo parzialmente la conoscenza è gestita dalla Rete, molte sono gli elementi
che direttamente sono inseriti in rete dall'esterno, inoltre anche nelle
migliori ipotesi di sviluppo del Web Semantico la sua capacità di trattare i
dati risulterà sempre parziale. Non qualsiasi tipo di informazione, a qualsiasi
livello risulterà inserita nel processo referenziale. Non tutti i dati saranno
definiti da schemi ed ontologie, non tutte le sezioni del documento saranno
realmente dati interscambiabili. Quello che al massimo sarà possibile concedere
a Internet e di definirlo come il sistema più potente per esprimere l'attuale
condizione della nostra conoscenza. Più potente non significa però più preciso.
Certamente il lavoro di sintesi compiuto dalla mente umana sarà ancora per
molto tempo ampiamente più profondo e significativo che non quello che farà la
macchina. Sulla rapidità e quantità di informazione gestita la Rete diventerà
invece un supporto rivoluzionario che permetterà certamente di accorciare i
tempi di apprendimento, sia del singolo, che dell'intera comunità umana.