In principio c’era l’HTML. Poi sono arrivati i Cascading Style Sheets e si è imposto il paradigma che impone di “separare lo stile dalla struttura del documento“. Ora, con la salda affermazione dell’XML, si stanno cominciando a diffondere anche i principi del cosiddetto web semantico (Semantic Web in inglese). Ora, andando oltre alla semplice descrizione strutturale e stilistica di una pagina, si cerca di rendere esplicito anche il “significato” dei dati presenti nella pagina (permettendo quindi anche alla macchina di “rendersi conto” del significato di quello che sta presentando, con ovvi vantaggi rispetto alle interazioni possibili con la pagina stessa). In questo articolo cercherò di fare una rapida panoramica dello “stato dell’arte attuale” per quanto riguarda il Web Semantico.
Come scrivere “pagine semantiche”?
Per prima cosa, vorrei far capire che una “pagina web semantica” è una naturale estensione di una pagina ben formata e ordinata. Per cui è bene (anche se non è obbligatorio) che la sua struttura sia standard: consiglierei di utilizzare XHTML (anche il DTD XHTML 1.0 Transitional può essere un’ottimo punto di partenza) per strutturare la pagina nei suoi elementi base, cui andremo ad aggiungere le informazioni stilistiche (colori, posizioni, sfondi e quant’altro) utilizzando lo standard CSS da applicare ai vari elementi che formano l’albero strutturale della nostra pagina. Non sto a dilungarmi su questi aspetti, che non fanno parte dell’argomento trattato da questo articolo.
La cosa importante è che abbiamo delineato un’architettura a tre livelli:
- Al livello più basso abbiamo la struttura del documento (XHTML): gli elementi della pagina (header, barre laterali, blocchi di testo, immagini, tabelle e così via);
- Al livello intermedio troviamo lo stile del documento (CSS): come gli elementi specificati in XHTML si disporranno sullo schermo e con che stile;
- Al livello superiore troviamo informazioni semantiche: in questo livello si definiscono i significati dei vari elementi strutturali e le loro relazioni
Dare un “livello semantico” alla pagina può essere fatto innanzitutto utilizzando determinate convenzioni a livello di XHTML: in particolare, è necessario utilizzare gli elementi strutturali in modo coerente in tutta la vostra applicazione web. Ad esempio:
- Utilizzare <p></p> per delimitare paragrafi di testo e non per creare la formattazione ed inserire spazi;
- Utilizzare i tag degli header (<h1> … <h6>) solamente per gli header effettivi del vostro documento, e rispettando l’ordine d’importanza imposto dalla numerazione;
- Una lista di elementi qualsiasi (ad esempio, anche una barra di navigazione è una lista di elementi, in questo caso di links) deve essere delimitata da un tag di lista (<ul>,<ol>,<dl>)
- Evitare l’utilizzo di tags la cui funzione è puramente stilistica e non “semantica” (ad esempio: <b>,<i>,<font>)
In questo modo si va a costruire un documento dotato di una “semantica di basso livello coerente”. E’importante mantenere queste convenzioni e questa coerenza in tutti i documenti che fanno parte della vostra applicazione web.
Il ruolo di XML
Quello che abbiamo visto fin qui rappresenta solamente la “punta dell’iceberg”: difatti con l’affermarsi della specifica XML è stato possibile creare linguaggi di markup specificatamente pensati per descrivere il significato semantico delle pagine (che vedremo più avanti). Come saprete (o come state per apprendere) il linguaggio XML (eXtensible Markup Language) è utilizzato per definire altri linguaggi di markup in modo “rigoroso”. Ad esempio, XHTML non è nient’altro che HTML definito in modo “preciso” tramite XML. Essendo XML un linguaggio parsificabile (cioè interpretabile in modo automatico da una macchina), è naturale che lo siano anche tutti i linguaggi che lo estendono (come XHTML).
Credo che il vantaggio di tutto questo cominci a diventare evidente: se riusciamo a definire tramite XML un linguaggio di “specifica semantica” del nostro documento web, siamo a cavallo! In questo modo rendiamo disponibile l’informazione semantica anche alla macchina sottostante che sarà così “conscia” non solo della struttura e dello stile della pagina, ma anche del significato dei suoi componenti. Ad esempio, potremmo avere una pagina WEB che mostra gli orari dei treni: l’applicazione web che non ha conoscenza semantica della pagina saprà solamente che deve visualizzare una pagina con una tabella formattata in un certo modo e contenente del testo. L’applicazione web con conoscenza semantica invece saprà, ad esempio, che quella cella della tabella rappresenta l’orario di partenza, quell’altra quello di arrivo, che da una parte ci sono le destinazioni e le partenze e così via. Tutta questa informazione aggiuntiva permetterebbe di scaricare certe funzionalità dinamiche dalle spalle del “programmatore” della logica applicativa (ad esempio automatizzando parzialmente le query di ricerca sui dati sfruttando solamente la struttura della pagina). Bel vantaggio no?
I linguaggi per il web semantico
Ovviamente linguaggi come questi sono già stati sviluppati e sono in circolazione da un paio di annetti: stiamo parlando, ad esempio, di RDF (Resource Description Framework) e OWL (Web Ontology Language).
Quella che si va a definire è un’ulteriore architettura a tre livelli (che non ha nulla a che vedere con quella vista in precedenza nel presente articolo: qui infatti stiamo ponendo l’accento sui dati):
- Al primo livello abbiamo i dati veri e propri, che vengono definiti in modo strutturato tramite XML
- Al livello successivo si hanno informazioni relazionali (metadati) sui dati definiti al punto precedente (tramite RDF)
- Al livello più alto troviamo le ontologie che specificano la rappresentazione semantica di dati e metadati (tramite OWL)
Il ruolo di RDF è quello di definire delle asserzioni sui dati, più precisamente sugli elementi costitutivi di un documento web. Queste asserzioni sono realizzate tramite triple (soggetto,predicato e oggetto) che legano tra loro gli elementi in una relazione binaria.
Il ruolo di OWL è invece quello di associare un significato semantico alle relazioni viste poco sopra. Questo viene effettuato definendo classi, proprietà ed individui e creando dei significati tra questi componenti con una sintassi particolare.
Per il momento mi fermo qui, lasciandovi una lista di link cui potete approfondire molte delle tematiche viste sopra. Direi che come articolo introduttivo abbiamo messo abbastanza carne al fuoco per cui vi lascio meditare!

Questo/a opera è pubblicato sotto una Licenza Creative Commons.




dove l’hai copiata sta roba?
Da nessuna parte.