EH - Esposizione interattiva di xHTML etc.   Indici:   Pagine   Panoramica   Termini   Problemi   Esempi

ll linguaggio MathML

Motivazioni del linguaggio MathML

Come discusso in ehk0.htm, non è facile introdurre nelle pagine HTML formule matematiche di buon livello tipografico senza ricorrere a files di immagini di bassa versatilità. Malgrado il Web sia stato concepito e sviluppato da parte di ricercatori scientifici principalmente per le comunità scientifiche, la comunicazione di espressioni matematiche non dispone ancora di buoni veicoli.

D'altra parte sono molte le attività che coinvolgono la Rete globale di computers che manifestano l'esigenza di inserire formule  matematiche in pagine per il Web. I ricercatori che si servono di nozioni matematiche elevate (nei diversi settori scientifici e tecnologici, nell'economia, nella sociologia, ...) hanno la necessità di scambiarsi documenti contenenti formule. Nelle opere enciclopediche le espressioni matematiche si incontrano di frequente. Molte iniziative di insegnamento indipendente dalla distanza richiedono che docenti, discenti e partecipanti a liste di discussione si scambino formule. Nelle attività di commercio elettronico, quando interessa la presentazione dettagliata di prodotti o di servizi quantitativamente qualificati, si deve ricorrere a formule (e diagrammi). Le attività di monitoraggio del territorio, collegate naturalmente alle telecomunicazioni, richiedono di esprimersi mediante formule.

In effetti con lo sviluppo del Web si sono ripresentate in forma nuova esigenze che si erano manifestate da tempo nel mondo del computer e delle telecomunicazioni e che avevano portato a soluzioni di notevole impegno (tra queste la più rilevante è stata la definizione e la implementazione per opera di D. Knuth del sistema TEX

Per l'inserimento di formule nelle pagine HTML, cioè in documenti utilizzabili mediante programmi ricchi di prestazioni come gli odierni browsers, si pongono nuovi problemi. Da un lato cadono certe esigenze di impaginazione a causa dalla  larghezza variabile e della illimitata altezza delle finestre gestite dai browsers. Inoltre sta emergendo la richiesta di documenti per il Web che siano comprensibili da parte degli agents, automatismi che possono operare per conto degli utenti umani nella fase di scoperta delle informazioni e da parte di procedure che possono servire per aiutare ad utilizzare un documento e che in un browser possono trovare una loro naturale collocazione. In particolare emerge l'esigenza di capire se una formula che compare in un documento può servire a soddisfare una richiesta dell'utente e l'esigenza di interpreti-esecutori in grado di fornire valutazioni numeriche o semplificazioni di espressioni matematiche inserite in una pagina Web.

Il Consorzio W3C ha riconosciuto fin dal 1994 la necessità di migliorare il supporto alla comunicazione scientifica. In seguito ad una proposta del 1995, nel 1996 è stato costituito un Math Editorial Review Board che nel 1997 è diventato un Math Working Group. Grazie al suo lavoro, il 7 aprile 1998 si è giunti alla pubblicazione della Raccomandazione di MathML 1.0. Il lavoro e` proseguito in modo abbastanza fruttuoso ed il 21 febbraio 2001 e` stata pubblicata la Raccomandazione di MathML 2.0

Questi documenti riconoscono l'ampiezza del problema dell'inserimento delle formule in pagine ipertestuali e propongono il linguaggio MathML come specificazione di basso livello per la comunicazione della matematica da macchina a macchina, che in particolare fornisca un fondamento per soddisfare la sentita esigenza di includere espressioni matematiche nelle pagine Web.

MathML vuol facilitare l'utilizzo ed il riutilizzo di contenuti matematici nel Web e riesce a tener conto di una varietà di esigenze, anche in virtù dell'ampia composizione del gruppo di lavoro. I membri attuali o precedenti sono piu` di 30 e rappresentano un notevolissimo ventagli di organismi: AMS, Mathematical Reviews, W3C, INRIA, Università di Waterloo, West Ontario, Minnesota, Bologna; Waterloo Maple Inc., NAG, Maple, Wolfram, Adobe, IBM, Microsoft, Boing, ... . Queste esigenze riguardano temi riguardanti la ricerca, i pacchetti computazionali (computer algebra, librerie numeriche), la progettazione e la produzione industriale, le case editrici, i produttori di sistemi di publishing, la sintesi vocale e la composizione in Braille per la presentazione di documenti scientifici ai disabili. In generale oggi si parla di servizi matematici da erogare tramite Web e di risorse matematiche da rendere accessibili su Internet.

Con MathML non si vuole codificare solo la presentazione delle notazioni matematiche, ma anche il loro contenuto, cioe` il significato. In tal modo si apre la possibilità che sulle formule accessibili su Web possano operare programmi applicativi con finalità quali il calcolo effettivo e la presentazione visiva e vocale dei risultati.

MathML è un'applicazione di XML, anzi è stata la prima applicazione di XML ufficializzata come Raccomandazione di W3C. In quanto tale, esso si trova in sintonia con le ormai numerose ed influenti applicazioni di XML (può avvalersi degli Style Sheets, puo` fare riferimento a modelli di documento, ad elementi di grafica vettoriale, ...). Ad es. la collegabilita` con Style Sheets significa che con browsers dotati di un adeguato supporto, MathML consentirà che le espressioni matematiche siano visualizzate dagli strumenti di rendering più efficienti per le diverse piattaforme.

In effetti negli ultimi anni hanno cominciato ad essere resi disponibili traduttori ed editori di equazioni che consentono la costruzione di formule MathML come risultati di sistemi di computer algebra o come prodotti di sessioni interattive condotte con tecniche visuali (drag and drop, menu`, ...).

Caratteristiche principali

Gli elementi di MathML si distinguono in un elemento di interfaccia, una trentina di elementi per la presentazione, e circa 150 elementi per il contenuto. Tipici elementi per la presentazione sono mrow che delimita gli allineamenti di notazioni come ad es. le righe delle matrici e msup che delimita gli esponenti; ciascuno di questi elementi corrisponde ad un determinato schema notazionale elementare; molti di questi schemi ammettono varianti controllabili mediante attributi. Tipici elementi per il contenuto sono plus per l'operazione di somma e vector per i vettori dell'algebra lineare; ciascuno di questi elementi corrisponde ad una nozione matematica definita con cura. L'unico elemento di interfaccia, math, serve a collegare le espressioni MathML a processori che possono influenzarne la presentazione attraverso scelte di stile ed a browsers che decidono come rendere tipograficamente le espressioni e come integrarle nelle pagine HTML che le ospitano.

Con MathML una espressione matematica viene dotata di una codifica di presentazione ed una di contenuto chiamate rispettivamente presentation markup e content markup. Entrambe fanno riferimento ad un albero dell'espressione che riguarda la sua organizzazione in sottoespressioni di diversi livelli.

Consideriamo la semplice espressione (a+b)2.

Il suo presentation markup è

<msup>
  <mfenced>
    mrow>
	  <mi>a</mi>
	  <mo>+</mo>
	  <mi>b</mi>
    </mrow>
  </mfenced>
  <mn>2</mn>
</msup>
 

Il suo content markup è invece

<apply>
   <power>
    <apply>
        <plus/>
        <ci>a</ci>
        <ci>b</ci>
    </apply>
    <cn>2</cn>
</apply>

Già da questo semplice esempio emergono alcune caratteristiche di MathML.

Nelle codifiche MathML vengono evidenziati tutti gli elementi che entrano nelle formule, anche i molti che nelle notazioni usuali risultano impliciti. Ogni operando simbolico viene incapsulato in un elemento mi o ci ; ogni operando numerico costituisce un elemento mn o cn ; ogni operatore compare in un elemento mo o come tag specifico (plus).

Nel presentation markup compaiono vari elementi di allineamento (mrow, mfenced, msup). Altri elementi per il layout riguardano esponenti e deponenti (msub, munder, mmultiscript); altri costrutti più estesi (mrow, mstyle, mfrac), altri con tabelle. Vi è poi un elemento action che permette di influire in vari modi sulle notazioni.

Per il content markup sono stati definiti 150 elementi che accettano una dozzina di attributi. Molti sono elementi vuoti, ridotti al solo tag, e corrispondono ad operatori, relazioni e funzioni specifiche (partialdiff, leq, tan). Altri, come matrix e set, consentono di codificare vari tipi di dati. Altri, come apply, consentono di costruire oggetti matematici a partire da più semplici. Nel content markup le espressioni sono presentate nella forma con operatore prefisso. Vi sono poi molti schemi con ruolo di qualificatore come bvar usato con l'operatore diff e lowlimit usato con l'operatore di integrazione int. Ricordiamo infine il costrutto declare che consente di dichiarare variabili con valore assegnato, elemento ignorato per la visualizzazione ma in grado di dare indicazioni operative ai sistemi di computer algebra.

Conclusioni

Anche dai brevi cenni precedenti si vede che MathML non è un linguaggio rivolto prevalentemente ad autori e lettori umani, ma a sistemi automatici per la creazione e la trasformazione di testi e per la loro interpretazione per vari scopi. Data la molteplicità degli aspetti delle espressioni matematiche dei quali con la versione 2.0 e` giunto a tenere conto, si può sperare che in tempi relativamente brevi MathML diventi un canale in grado di mettere in comunicazione gli svariati tipi di agenti che possono utilmente operare sulle espressioni matematiche. Si può quindi pensare che tra qualche anno, anche in virtù del continuo progredire in termini di efficienza elaborativa, di ampiezza di portata e di versatilità d'uso delle piattaforme hardware e software, faranno ampio riferimento a MathML sistemi quali:

- programmi di elaborazione simbolica per l'emissione dei loro risultati e l'immissione di dati;

- sistemi tipografici per l'inclusione nei testi di formule matematiche;

- sistemi e dispositivi per la presentazione vocale o Braille e per l'immissione vocale;

- sistemi per la grafica ed il disegno assistito da computer;

- sistemi per l'insegnamento a distanza.

Per quanto riguarda la estensione dei contenuti matematici trattabili, la versione attuale di MathML tocca i seguenti campi:

Aritmetica, algebra e logica: quotient/, exp/, factorial/, divide/, max/, min/, minus/, plus/, power/, rem/ (resto della divisione intera), times/ (moltiplicazione), root/, gcd/ (massimo comun divisore), and/, or/, xor/, not/, implies/, forall/ (per ogni), exists/ (esiste), abs/, conjugate/ (complesso coniugato)

Relazioni: eq/ (uguale), neq/ (diverso), gt/ (maggiore), lt/ (minore), geq/ (maggiore e uguale), leq/ (minore e uguale)

Teoria degli insiemi: set, list, union/, intersect/, in/, notin/ (non appartiene), subset/ (contenuto), prsubset/ (contenuto strettamente), notsubset/, notprsubset/, setdiff/ (differenza)

Successioni e serie: sum/, product/, limit/, tendsto/ (tende a)

Calcolo infinitesimale: ln/, log/, int/, diff/, partialdiff/, lowlimit, uplimit, bvar, degree

Trigonometria: sin/, cos/, tan/, sec/, csc/, cot/, sinh/, cosh/, tanh/, sech/, csch/, coth/, arcsin/, arccos/, arctan/

Statistica: mean, sdev, var, median, mode, moment

Algebra lineare: vector, matrix, matrixrow, determinant, transpose, select

Vengono quindi toccati campi importanti e di grande utilità per le applicazioni. Tuttavia sono moltissimi i settori della matematica che sono completamente trascurati. In effetti gli studiosi che hanno contribuito a definire MathML 2.0 sono perfettamente coscienti di questi limiti, come del fatto che nuove notazioni per nuove nozioni vengono proposte di continuo, della tendenza delle subcomunità matematiche ad utilizzare notazioni specializzate e della lentezza necessariamente conservatrice dei processi di standardizzazione. Occorre dunque considerare MathML come uno standard ancora in uno stadio iniziale costituito da un insieme di tags e di attributi ``open-ended''. Essendo MathML descritto da una DTD, document type description, di XML, il suo insieme di elementi e di attributi risulta circoscritto. Sono quindi incoraggiate le definizioni di estensioni a MathML che passino attraverso DTD scritte in XML e che estendano quella delle Raccomandazione corrente. Il gruppo di lavoro di MathML inoltre consente la messa a punto di sistemi di rendering che accettino elementi ed attributi nonstandard, quale che sia il modo di renderli percepibili. Questi sistemi dovrebbero trattare elementi nonstandard non riconosciuti con chiare segnalazioni di insufficienza o con rese che operino semplicemente come se si incontrassero elementi mrow. Si auspica comunque che la portata di MathML 2.0 possa essere ulteriormente ampliata in tempi contenuti con nuove versioni del linguaggio.

Tra le estensioni auspicate vi è innanzitutto una più completa integrazione in HTML.

Si aspetta inoltre uno sviluppo del meccanismo dei fogli di stile per XML che accolga le esigenze di MathML. Tra queste, molto importante, è la possibilità di utilizzare macro.

Questi elementi linguistici potrebbero essere di grande utilità per la redazione di espressioni matematiche. Innanzitutto consentirebbero di servirsi di abbreviazioni che evitino la ripetizione di costrutti onerosi, soprattutto se dotate di un meccanismo di sostituzione di parametri. Mediante macro si potrebbero definire oggetti associati a numerosi enti matematici (tipicamente funzioni speciali come coefficienti binomiali o funzioni di Bessel) conseguendo in sostanza un ampliamento del markup per il contenuto. Macro di questo genere potrebbero contenere agganci semantici utilizzabili da procedure applicative. Con tali oggetti si potrebbero definire, nell'ambito di settori disciplinari specifici, pacchetti standard di macro corrispondenti a markups per il contenuto standardizzati. Pacchetti di questo genere si avvicinano ai dizionari che vengono precisati nell'ambito del progetto OpenMath.

Mediante macro si potrebbe facilitare il controllo dello stile e del rendering. Con queste macro si potrebbe anche controllare la resa tipografica delle estensioni a MathML che possono essere definite da un utente come estensioni XML. Mediante macro e fogli di stile si potrebbe realizzare un buon controllo dell'utente sul rendering delle formule. Ad es. si potrebbe fare in modo che un sistema per l'insegnamento del calcolo differenziale su più variabili possa leggere un elemento msubsup servendosi del termine specifico di ``derivata seconda rispetto ad x di una funzione''.

Occorre peraltro osservare che il problema delle macro nei linguaggi per il Web presenta un gran numero di problemi e che il gruppo di lavoro per MathML del Consorzio W3C si propone di affrontare questi problemi in tempi non brevi, operando in collegamento con i gruppi di lavoro che si occupano di fogli di stile.


La Home Page per la Matematica di W3C


Indice pagine - inizio pagina