Linguistica, sistemi, modelli: SGML

<prefazio>Nooo ancora SGML? Sì, questa è la seconda parte di “Dal markup del medioevo al markup di oggi“. Come risolvere tutti i problemi evidenziati nella prima parte, considerata anche l’enorme aumento dei libri disponibili, la complessità della documentazione, la necessità di rendere interoperabili i frammenti informativi e poterli riutilizzare, elaborare, trasformare? (da leggere: XML Web Kit, II ed, Goldfarb – Prescod – Jelliliffe – McGrath, un pacchettone di tre libri un po’ vecchi ma esplicativi per i ricercatori del gro[o]ve di SGML, verso XML.</prefazio>

da http://rmcisadu.let.uniroma1.it/~orlandi/modello.html

qualsiasi trasmissione d’informazione ne implica
una perdita parziale (entropia
dell’informazione)

Considerando, dal punto di vista informatico e semiotico, un testo come un mezzo per trasmettere informazione, si deve prendere atto che qualsiasi trasmissione d’informazione ne implica una perdita parziale (entropia dell’informazione). Questo accade dunque già prima del lavoro di codifica compiuto da chi inserisce testi in una memoria di tipo digitale; accade anche nella trasmissione manoscritta e a stampa. Non si allude qui all’eventuale accumularsi di errori, ma proprio all’impossibilità di conservare nella trasmissione testuale tutta l’informazione che un testo anche già scritto conteneva all’origine. Il lettore recupera quel tipo di informazione mediante una serie di operazioni mentali, cioè vari tipi di interpretazione, che si basano sulla sua competenza. Ne deriva che nella macchina occorre inserire non solo l’equivalente del testo come si presenta sul supporto planare, ma anche, per quanto è possibile, una certa competenza.

Una semplice codifica degli elementi superficiali di un testo scritto, e cioè la sequenza dei grafemi non basta, ma è necessario ricorrere ad una procedura più complessa, più aderente al complicato oggetto «testo», che sia capace di produrre un modello

Necessità del modello e modo di costruirlo

Il risultato essenziale delle ricerche a cui ci siamo riferiti è questo: che non basta, in ambiente informatico, ricorrere ad una semplice codifica degli elementi superficiali di un testo scritto, e cioè la sequenza dei grafemi, ma è necessario ricorrere ad una procedura più complessa, più aderente al complicato oggetto «testo», che sia capace di produrre un modello. Da un punto di vista operativo, questo ha portato alla formulazione di un apposito linguaggio mediante il quale è possibile descrivere gli elementi che formano il testo: lo «Standardized General Markup Language» (sgml).

Convegno: Il ruolo del modello nella scienza e nel sapere, Lincei, 27-28 ottobre 1998 , Tito Orlandi

Cos’è SGML

SGML (Standard Generalized Markup Language) è uno standard ISO (International Standard Organization n. 8879 del 1986) ed è un meta-linguaggio non proprietario di markup, leggibile, descrittivo, strutturato, gerarchico e, di conseguenza, permette di creare markup con queste caratteristiche.

ringraziamenti: materiale tratto dal lavoro di Fabio Vitali, Dept. of Computer Science Univ. of Bologna – ITALY

Essendo uno standard, SGML è il risultato di discussioni e compromessi fra i rappresentanti di tutte le comunità interessate al suo uso, è un investimento nel tempo di queste comunità e non dipende dai piani commerciali o dai capricci di una singola casa produttrice.

Meta-linguaggio di markup

Un meta-linguaggio è un linguaggio per definire linguaggi, una grammatica di costruzione di linguaggi. SGML non è un linguaggio di markup, ma un linguaggio con cui definiamo linguaggi di markup. SGML non fornisce le risposte di markup, ma una sintassi per definire il linguaggio. SGML non sa cosa sia un paragrafo, una lista, un titolo, ma fornisce una grammatica per definirli.

Linguaggio non proprietario

Non proprietario significa che non esiste un’unica ditta o casa produttrice che ne detenga il controllo. Viceversa, RTF è proprietà di Microsoft, come PostScript e Acrobat sono di Adobe. Essendo standard non proprietario, non dipende da un singolo programma, da una singola architettura. Gli stessi dati possono essere portate da un programma all’altro, da una piattaforma all’altra senza perdita di informazione. Inoltre, anche l’evoluzione nel tempo è assicurata per lo stesso motivo.

Markup leggibile

In SGML il markup è posto in maniera leggibile a fianco degli elementi del testo a cui si riferisce, e può essere usato sia da un programma sia da un essere umano. Il markup in SGML è semplice testo facilmente interpretabile.

Markup descrittivo

Il markup in SGML non è pensato unicamente per la stampa su carta: è possibile combinare markup per scopi o applicazioni diverse, e in ogni contesto considerare o ignorare di volta in volta i markup non rilevanti.

Markup strutturato

SGML permette di definire delle strutture, suggerite o imposte, a cui i documenti si debbono adeguare. Per esempio, si può imporre che un testo sia diviso in capitoli, ognuno dei quali dotato di un titolo, una breve descrizione iniziale e almeno un paragrafo di contenuto. Cioè, è possibile definire una serie di regole affinché il testo sia strutturalmente corretto.

Markup gerarchico

Le strutture imposte da SGML sono tipicamente a livelli di dettaglio successivi. Gli elementi del testo possono comporsi gli uni con gli altri, permettendo di specificare la struttura in maniera gerarchica. Per esempio, si può imporre che il libro sia fatto di capitoli, e che questi a loro volta siano fatti di un una descrizione e molti paragrafi. Una descrizione sarà quindi fatta di elementi, ciascuno dei quali sarà una frase composta di testo; i paragrafi saranno testo eventualmente contenenti anche elementi in evidenza o figure.

I documenti SGML

Un documento in un linguaggio di markup definito sulla base di SGML è sempre composto delle seguenti tre parti:

  1. Dichiarazione SGML
  2. DTD
  3. Istanza del documento

Dichiarazione SGML

La dichiarazione SGML contiene le istruzioni di partenza delle applicazioni SGML. Essa permette di specificare valori fondamentali come la lunghezza dei nomi degli elementi, il set di caratteri usati, le specifiche caratteristiche di minimizzazione ammesse, ecc.) Non è obbligatoria. Se è assente, viene usata una dichiarazione di default detta Reference Concrete Syntax.

La RCS definisce lunghezze e sintassi standard (come l’uso del carattere < per indicare l’inzio del tag).

Document Type Declaration

La dichiarazione del tipo del documento serve a specificare le regole che permettono di verificare la correttezza strutturale di un documento. Vengono cioè elencati [i file che contengono] gli elementi ammissibili, il contesto in cui possono apparire, ed altri eventuali vincoli strutturali. Nella terminologia SGML, si parla di modellare una classe (cioè una collezione omogenea) di documenti attribuendogli un tipo.

La Document Instance

L’istanza del documento è quella parte del documento che contiene il testo vero e proprio, dotato del markup appropriato. Esso contiene una collezione di elementi (tag), attributi, entità, PCDATA, commenti, ecc. Le applicazioni SGML sono in grado di verificare se l’istanza del documento segue le regole specificate nel DTD, e di identificare le violazioni.

I componenti del markup

Un documento con markup di derivazione SGML (inclusi HTML, XML, ecc.) contiene una varietà dei seguenti componenti:

  • Elementi
  • Attributi
  • Entità
  • Testo (detto anche #PCDATA)
  • Commenti

elementi

Gli elementi sono le parti di documento dotate di un senso proprio. Il titolo, l’autore, i paragrafi del documento sono tutti elementi. Un elemento è individuato da un tag iniziale, un contenuto ed un tag finale.

attributi

Gli attributi sono informazioni aggiuntive sull’elemento che non fanno effettivamente parte del contenuto (meta-informazioni). Essi sono posti dentro al tag iniziale dell’elemento. Tipicamente hanno la forma nome=“valore”.
<romanzo file="mobydick.sgm">…</romanzo>

entità

Le entità sono frammenti di documento memorizzati separatamente e richiamabili all’interno del documento. Esse permettono di riutilizzare lo stesso frammento in molte posizioni garantendo sempre l’esatta corrispondenza dei dati, e permettendo una loro modifica semplificata.

Testo #PCDATA

Rappresenta il contenuto vero e proprio del documento. Esso corrisponde alle parole, gli spazi e la punteggiatura che costituiscono il testo. Viene anche detto #PCDATA (Parsed Character DATA) perché i linguaggi di markup definiscono character data (CDATA) il contenuto testuale vero e proprio, e quello degli elementi è soggetto ad azione di parsing (perlopiù per identificare e sostituire le entità).

commenti

I documenti di markup possono contenere commenti, ovvero note da un autore all’altro, da un editore all’altro, ecc. Queste note non fanno parte del contenuto del documento, e le applicazioni di markup li ignorano. Sono molto comodi per passare informazioni tra un autore e l’altro, o per trattenere informazioni per se stessi, nel caso le dimenticassimo.

Processing Instruction

Le processing instructions (PI) sono elementi particolari (spesso di senso esplicitamente procedurale) posti dall’autore o dall’applicazione per dare ulteriori indicazioni su come gestire il documento XML nel caso specifico, Per esempio, in generale è l’applicazione a decidere quando cambiare pagina, ma in alcuni casi può essere importante specificare un comando di cambio pagina (oppure tutti i cambi pagina di un documento già impaginato). Un esempio tipico che conoscete bene:
<?xml version='1.0' encoding='UTF-16' standalone='yes'?>
<name nickname='Shiny John'>
<first>John</first>
<!--John lost his middle name in a fire-->
<middle/>
<?nameprocessor SELECT * FROM blah?>
<last>Doe</last>
</name>

Oppure,

<?NEWPAGE?>

Linguaggi basati su SGML

Tendenzialmente si pensa immediatamente a HTML, e molto probabilmente per molte persone SGML è una specie di effetto secondario di HTML, o ne hanno appreso l’esistenza leggendo le specifiche di HTML sul sito del W3C. In effetti, si dice:

HTML 4 is an SGML application conforming to International Standard ISO 8879 — Standard Generalized Markup Language

Prima di questo avvenimento, SGML era uno sconosciuto, o quasi. Ma esattamente, cosa significa?

Quando HTML è apparso sulla scena è stato un fenomeno. Ogni persona, non soltanto i tecnici, poteva pubblicare sul Web. Il Web, reso possibile dal markup, divenne un argomento di conversazione non riservato ai tecnici, ma di cui parlare anche bevendo un caffè.
XML sembra ripetere lo stesso straordinario fenomeno e in pochi anni ha cambiato il modo di scrivere, vendere e usare il software, e quotidianamente vengono rilasciati nuovi standard basati su esso.
Ne parleremo nella prossima puntata.

Annunci

Un pensiero su “Linguistica, sistemi, modelli: SGML

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...