·
Re-lecteur : Stéphane Ayache
·
Article étudié : « Content-Faithful
Transformations for MathML »
·
Auteurs : Sandy Huerter, Igor Rodionov, et Stephen
Watt (University of Western Ontario)
·
Référence : http://www.mathmlconference.org/2002/presentations/huerter/
·
Type d’article : expérience et recherche
·
Notes :
|
Note |
Commentaire |
Pertinence de l’article par
rapport aux thèmes du cours |
4/5 |
Bien que le cours mentionne seulement le standard
MathML, cet article fait parfaitement ressortir l’intérêt des standards XML
et XSL. |
Clarté et qualité rédactionnelle
|
3/5 |
L’article est globalement clair et bien écrit. Il
demande cependant une bonne connaissance préalable du standard MathML2.0. Les
parties présentant les différents types de balisages parallèles sont peut être
superflues, ceux ci sont parfaitement présentés dans le standard. |
Globale |
4/5 |
Le contenu de l’article
est novateur dans le domaine MathML, il apporte la première transformation
fidèle au contenu. |
MathML est un standard du W3C basé sur XML pour la
description d’expressions mathématiques. Il permet à la fois de capturer la
structure et le contenu de ces expressions. L’objectif de MathML est
double : la publication de documents mathématiques sur le web, et le
traitement de ces expressions par des applications de calcul formel. Dans ce
sens, la DTD MathML fait la distinction entre deux types de balisages :
-
Le balisage de présentation
= Le "Presentation Markup"
est une représentation "humaine", il n'y a aucune sémantique. Il est
dédié à la publication d’expressions mathématiques.
ex : A + B = <mrow> <mi>A</mi>
<mo>+</mo> <mi>B</mi> </mrow>
-
Le balisage de contenu = Le
"Content Markup" est dédié au calcul formel, il contient la
sémantique de l'expression mathématique.
ex : la somme entre deux variables numériques A et B est
définie par :
<apply>
<plus/>
<ci>A</ci>
<ci>B</ci>
</apply>
Cet
article s’intéresse aux transformations de documents MathML pour obtenir un
balisage de présentation depuis un balisage de contenu. L’objectif de ces
transformations est notamment de publier des expressions mathématiques décrites
par leur contenu sémantique. Ces transformations existent depuis la première
recommandation MathML du W3C ; aujourd’hui, certains navigateurs intègrent
cette fonctionnalité. Ce type de transformations a l’inconvénient de perdre la
sémantique du document original et empêche toute interaction entre des
applications de calculs mathématiques et les navigateurs web.
La transformation présentée
dans cet article offre l’avantage d’être fidèle au contenu. En effet, le
document MathML résultat d’une telle transformation est défini par un balisage
de présentation, tout en conservant la sémantique du document original. Par
ailleurs, cette transformation est implémentée à l’aide des standards XSLT et
XPath.
Une transformation fidèle
au contenu nécessite l’utilisation d’un balisage parallèle, défini dans la
spécification MathML2.0 du W3C. Le balisage parallèle permet de lier la
présentation et le contenu de chaque expression mathématique. Il peut être de
granularité haute (pour l’ensemble du document) ou fine (pour chaque partie du
document).
Syntaxiquement, on définit
un balisage parallèle en utilisant l'élément <semantics>, il sera père
d’un arbre (ou sous-arbre) à deux branches filles : l’une ayant un balisage de
contenu et l’autre un balisage de présentation ; le balisage de
présentation étant généré à partir du balisage de contenu.
Une transformation fidèle
au contenu à granularité fine augmente la taille du document avec un facteur de
n.log(n). Ainsi, est-il préférable, dans le cas de transformations de grands
documents, d’utiliser un balisage parallèle à référencement croisé, défini dans
la spécification MathML2.0.
La feuille de style
présentée fonctionne selon différents modes, le mode est spécifié par
l’application qui l’utilise. Les deux premiers modes génèrent simplement la
présentation associée au contenu, les transformations qui utilisent ces modes
ne sont pas fidèles au contenu. Le deuxième mode a cependant l’avantage de
conserver les correspondances sémantiques.
Les quatre modes suivant
permettent une transformation fidèle au contenu, ils spécifient le type de
balisage parallèle à utiliser (granularité haute, fine, référencement croisé).
Chaque mode correspond à un
besoin particulier, les transformations non fidèles au contenu sont plus
rapides, elles permettent par exemple un traitement en temps réel, utile pour
les navigateurs web. Par ailleurs, une transformation fidèle au contenu avec
granularité fine sera préférée à celle de haut niveau si l’on souhaite
« copier-coller » une partie d’expression à partir d’un navigateur
web vers une application de calcul mathématique…
Les éléments de contenu définis
dans le standard MathML2.0 ne couvrent pas l’ensemble des concepts
mathématiques. Ainsi, le standard MathML permet de définir de nouvelles balises
de contenus dont la sémantique est définie par un autre langage. Il est par
exemple intéressant de se référer au dictionnaire OpenMath pour sa richesse en
concepts mathématiques, OpenMath étant conçu pour l’échange de données
mathématiques.
L’article [1] propose des transformations entre OpenMath
et MathML, celles-ci permettent notamment d’obtenir un balisage de présentation
MathML pour un élément du dictionnaire OpenMath. Ceci étant, l’article étudié
propose une démarche pour préserver la sémantique des
éléments étendus lors d’une transformation fidèle au contenu. Les auteurs
s’appuient sur une combinaisons de transformations : F est la
transformation décrite dans l’article, X est une transformation qui génère la
présentation associée à un élément étendu (des exemples de feuille de style
d’extension sont présentés dans [8]) et A est une transformation qui modifie le
préfixe (espace de nom) de l’élément étendu (A-1 est la
transformation inverse). La modification du préfixe de l’élément étendu permet
de ne pas perdre la sémantique de cet élément lors de la transformation X.
La
transformation fidèle au contenu d’éléments étendus est alors notée : A-1
o X o A o F, le schéma suivant illustre une telle transformation :
Pour ce
travail de relecture, j’ai jugé pertinent de lire deux autres documents
référencés par l’article étudié : la spécification MathML2.0, auquel est
fortement lié cet article ; et l’article [1] qui traite des multiples
transformations qu’est susceptible de subir un document mathématique.
Ces
trois documents ont la caractéristique commune d’avoir été écrit conjointement
par Stephen Watt.
A
travers l’article étudié, nous pouvons nous rendre compte que MathML est
fortement lié avec le domaine des transformations XML. C’est sans doute le
standard du W3C qui dispose d’autant de possibilités de transformation.
Dans un
premier temps, ce commentaire situe la transformation proposée dans l’article
par rapport aux évolutions du standard MathML. La deuxième partie du
commentaire présente plusieurs feuilles de styles XSL existant dans le
domaine MathML. La troisième partie fera un bilan des tests réalisés pour ce
travail.
L’article reprend une bonne partie du chapitre 5 de la
spécification MathML2.0. Celle ci a fait l’objet de plusieurs modifications par
rapport à MathML1.01. Le W3C a ajouté la définition d’une transformation
« fidèle au contenu », ainsi que la description du balisage
parallèle. On remarque ainsi que l’article est tout à fait conforme aux
spécifications du W3C et qu’il exploite parfaitement les dernières évolutions
du standard. En effet, le W3C définit une transformation « fidèle au
contenu » comme étant une transformation qui retient le contenu original
dans un balisage parallèle.
Ce lien
étroit qui apparaît entre ces deux documents est d’autant plus accentué que ces
derniers se référencent réciproquement… Les deux documents ont probablement été
écrits durant la même période.
Cela
dit, au-delà de ces similitudes, l’article étudié apporte un réel intérêt, il
présente la première implémentation XSLT d’une transformation « fidèle au
contenu » tel que le décrit MathML2.0. Par ailleurs, cet article propose
une méthode intéressante pour conserver la sémantique des éléments étendus en
s’appuyant sur les feuilles de style d’extensions présentées dans [1].
Pour
des raisons d’extensibilité, MathML permet d’importer la sémantique de concepts
mathématiques depuis un autre standard. Le standard OpenMath est basé sur XML
pour l’échange de données mathématiques entre différentes applications. Les
sémantiques des concepts qu’il manipule sont définies dans un dictionnaire qui
de part sa fonction se veut exhaustif. Un auteur de documents MathML se
référera, par exemple, au dictionnaire OpenMath pour utiliser des concepts qui
ne sont pas définis dans la terminologie des éléments de contenu MathML.
Ainsi, la fonction de combinaison entre deux entiers
(noté n’est définie que dans le
dictionnaire OpenMath. Les instructions MathML suivantes permettent d’importer
la définition de cette fonction depuis le dictionnaire OpenMath.
<csymbol
encoding="OpenMath" definitionURL=”http://www.openmath.org/cd/combinat1.ocd”
/>
Dans un souci de simplicité et
de réutilisation, le standard MathML prévoit la possibilité de remplacer
les instructions précédentes par :
<xm:binomial/>
xm
est l’espace de nom où est défini la balise ‘binomial’.
En balisage de contenu, s’écrirait alors :
<apply>
<xm:binomial/>
<ci>n</ci>
<ci>m</ci>
</apply>
Dans un tel cas de figure,
l’article [8] décrit une transformation pour générer la présentation associée à
un élément étendu. En considérant l’exemple précédent, cette transformation
générerait :
<msubsup>
<mo>C</mo>
<mi>n</mi>
<mi>m</mi>
</msubsup>
La
méthode proposée par l’article pour préserver la sémantique des éléments
étendus MathML se réfère à ce type de transformations. Ces transformations sont
appelées feuilles de styles d’extensions dans la spécification MathML2.0.
Par
ailleurs, la transformation présentée dans l’article requiert une légère
modification pour « matcher » les éléments étendus. La version
actuelle ne contient pas de « template » pour les balises non
définies par la DTD MathML.
3.2.
Les feuilles de styles XSL
La transformation consistant à établir une notation (balisage de présentation) à partir d’un concept mathématique (balisage de contenu) est appelée feuilles de styles de notation dans la spécification MathML2.0.
Plusieurs
feuilles de style XSLT permettent de faire cette conversion,
« ctop.xsl » (David Carlisle, 2001), « mathmlctop.xsl »
(Emmanuel Pietriga, 2000) et sont utilisées par plusieurs projets s’appuyant
sur MathML.
Si un
concept est exprimable avec plusieurs notations, une règle de transformation
(template) peut agir selon un paramètre de la feuille de style (ex :
langue). Dans d’autres cas, on peut imaginer des transformations de documents
MathML à balisage de présentation vers un autre balisage de présentation.
D’un
point de vue plus général, les transformations XSLT permettent de transformer
un document XML en un autre document XML. Un document MathML peut ainsi être
transformé en un document XML s’appuyant sur une DTD (ou Schema XML) de nature
différente.
Il
existe ainsi un convertisseur MathML vers SVG
(http://www.schemasoft.com/MathML) qui permet de transformer un document
MathML, quel que soit son type de balisage, en un dessin vectoriel affichable
par la plupart des navigateurs. SVG a l’avantage d’être largement diffusé dans
l’industrie, et contrairement à MathML les nouvelles versions de navigateurs
intègrent son rendu.
De
nombreux outils d’éditions mathématiques proposent des fonctionnalités de
conversions entre différents standards. Latex est probablement le plus connu et
le plus utilisé des standards pour la publication d’expressions mathématiques.
Certains environnements d’édition Latex permettent déjà d’exporter ou
d’importer un document MathML. Par ailleurs, les environnements de calcul
formel (Mathematica, Maple, …) intègrent ce type de conversions et s’appuient
sur le balisage MathML de contenu.
J’ai
souhaité tester la transformation présentée. Pour cela, j’ai utilisé le
processeur XSLT Apache : XALAN. La feuille de style XSLT est en
téléchargement à l’adresse : http://www.orcca.on.ca/TechReports/2000/TR-00-24.html
Le mode de la transformation est spécifié en paramètre de la feuille de style. On distingue ainsi six modes. Voici mes remarques concernant chacun des modes :
·
mode = -1 : transformation non fidèle au contenu, supprime les
correspondances sémantique. Il ne faut pas utiliser ce mode pour transformer
des documents contenant des correspondances sémantiques.
·
mode = 0 : non fidèle au
contenu, conserve les correspondances sémantiques. Cette transformation est
équivalentes aux feuilles de style de notations existantes.
·
mode = 1 : fidèle au contenu avec balisage parallèle à granularité
haute
·
mode = 2 : fidèle au contenu avec balisage parallèle à granularité
fine
·
mode = 3 : fidèle au contenu avec référencement croisé et balisage
parallèle à granularité haute. Nécessite que le balisage du document d’entrée
soit préalablement parsemé d’attributs id…
·
mode = 4 : fidèle au contenu avec référencement croisé. Nécessite que
le balisage du document d’entrée soit préalablement parsemé d’attributs id…
L’article propose
l’implémentation d’une transformation fidèle au contenu pour les documents
MathML. Le standard MathML2.0 défini une transformation fidèle au contenu comme étant une transformation qui retient le contenu
original dans un balisage parallèle. Les auteurs de l’article s’appuient bien
sur un balisage parallèle pour conserver la sémantique originale du document.
Dans ce sens, l’article est tout à fait conforme aux spécifications du W3C.
Par ailleurs, l’article va plus
loin et se penche sur le cas des éléments étendus. Ces derniers n’étant pas
définis dans la DTD MathML, leur transformation est plus problématique. Les auteurs suggèrent de combiner la transformation
présentée avec des feuilles de styles d’extensions pour parvenir à préserver la
sémantique des éléments étendus lors d’une transformation fidèle au contenu.
Le
travail effectué par les auteurs de cet article prend en compte les dernières
avancées effectuées dans le domaine de MathML : balisage parallèle,
feuilles de styles d’extensions. La transformation présentée se situe au cœur
d’une problématique avancée dans la spécification MathML2.0 :
l’utilisation de MathML pour les applications interactives.
·
Spécification MathML2.0 du
W3C
· [1] : Meta stylesheets for the conversion of mathematical documents in to multiple forms
(Bill Naylor, Stephen Watt, Ontario Research Centre for Computer Algebra)