



(3 opiniones)
Una de las cosas más importantes del lenguaje de marcado es el poder codificar la notación que representa a un objeto matemático y la estructura matemática del mismo. Es más, ambas codificaciones pueden ser usadas juntas para definir presentación y contenido de una idea matemática. Debido a esto es que se puede realizar una clasificación de los elementos de MathML, pudiéndose decir que todos caen en alguna de tres categorías: elementos de presentación, elementos de contenido y elementos de interfaz. Ahora se revisará cada uno de estos ítemes, revisando los fundamentos sobre los que se basan y formas básicas de uso.
Corresponden a "constructores" de la notación matemática tradicional, es decir, los tipos básicos de símbolos y estructuras para la construcción de expresiones, a partir de los cuales cualquier parte de la notación tradicional de la matemática puede generarse. La descripción de las estructuras notacionales que los elementos representan se dan generalmente de una manera visualmente orientada. Sin embargo, los elementos son independientes de la materialización en el sentido de que han sido diseñados para contener suficiente información para, por ejemplo, una buena representación hablada (lectores automáticos). Los elementos de presentación sólo sugieren (no requieren) maneras específicas de representar, de forma de permitir una representación independiente del medio y para preferencias individuales de estilo. Esta especificación describe con algún detalle reglas de representación visual recomendadas, pero un renderizador de MathML es libre de usar sus propias reglas mientras la representación sea comprensible.
Están divididos en dos clases: elementos símbolo (token element), que representa símbolos, nombres, números, etc. Individuales. En general sólo tienen texto como contenido, salvo algunas excepciones.
La segunda clase son los esquemas de disposición (layout schemata), que construyen las expresiones de partes y sólo pueden tener elementos como contenido.
Los `símbolos' matemáticos deben ser representados por medio de elementos símbolo de MathML. Los principales son los identificadores (<mi>x</mi>), números (<mn>98</mn> y operadores (<mo>+</mo>).
En la notación tradicional matemática las expresiones se construyen a partir de expresiones más pequeñas, y finalmente a partir de simples símbolos, agrupados por usando otras estructuras notacionales (operadores, paréntesis, etc). En MathML las expresiones se construyen igual, siendo los esquemas de disposición lo que juegan el rol de constructores de expresiones. Dentro de estos tenemos por ejemplo a <mrow>...</mrow>, que dice que se despliegue en una fila la información dentro de los tags, y a <mfrac>...</mfrac>, que sirve para denotar fracciones. Es importante notar que en presentación el orden de los esquemas hijos si importa, pero no está forzado a nivel de la DTD de MathML. La idea de esta codificación es expresar la estructura sintáctica de la notación matemática. Por ejemplo para `a - db' seria representado como:
<mrow> <mi> a </mi> <mo> - </mo> <mrow> <mi> d </mi> <mo> ⁢ </mo> <mi> b </mi> </mrow> </mrow>
Elementos de Contenido
La intención fundamental de la codificación de contenido en MathML es proveer una codificación específica de la estructura matemática subyacente de una expresión, más allá de cualquier representación particular para la expresión.
La principal razón para proveer esta codificación es que aún con el uso sistemático de tags de presentación no se puede capturar la información semántica entregada por este sistema. La dificultad se origina de que existen muchos caminos distintos desde representación hacia semántica y viceversa. Además la notación cambia con el tiempo y la cultura, por lo que si bien `*' se usa como multiplicación hoy, no quiere decir que sea usado así en unos años, o quizás en otros países.
Al codificar la información de esta forma se puede asegurar un intercambio de información mucho más preciso, incluso permitiendo la evaluación de las expresiones de una forma simple.
Debido a la falta de consenso en la semántica de la notación general, en MathML se optó por hacer explícito un número relativamente pequeño de construcciones matemáticas comunes, proveyendo de un mecanismo para asociar semánticas con nuevas construcciones notacionales. De esta manera el conjunto de construcciones puede ser extendido más allá del originalmente entregado.
El conjunto básico de construcciones se elige de manera de ser adecuado para la representación de formulas desde kinder hasta fines de media (equivalente) en EE.UU., y cubre en parte:
El objetivo básico de la codificación de contenido es el establecimiento de relaciones explicitas entre las estructuras matemáticas y sus significados matemáticos. Cada estructura tiene una semántica predeterminadamente asociada y existe un mecanismo para asociar nuevos significados matemáticos con nuevas construcciones.
El uso de tags específicos de contenido nos reporta múltiples beneficios, como son la posibilidad de crear agente que procesen de manera mucho más precisa el contenido.
Finalmente, las expresiones descritas en términos de elementos de contenido deben ser llevadas a una representación también. Para esto existen visualizaciones claras para expresiones comunes. El resto se obtiene de la claridad de la definición.
La codificación de contenido de MathML esta basada en el concepto de árbol de expresión. En este árbol las hojas corresponden a objetos matemáticos básicos como son números (<cn>63</cn>), variables (<ci>p</ci>), etc. Los nodos intermedios generalmente representan algún tipo de función (<power/>) u otra construcción matemática que crea un objeto compuesto. Dado que no es la intención de este documento el enseñar a usar MathML, no profundizaré en las distintas clases de elementos de contenido que existen, pero si clarificare que el elemento <apply>...</apply> es quizás uno de los más importantes, ya que es el que se usa para efectivamente aplicar la función a sus argumentos. Nuevamente el orden de los hijos del elemento si importa, pero no esta forzado en la DTD de MathML.
Los elementos de contenido de MathML pueden ser agrupados en las siguientes categorías según su uso:
Estos son los bloques de construcción que componen las expresiones de contenido de MathML.
Los elementos de interfaz son aquellos relacionados en la generación y representación de MathML, siendo particularmente importantes los que respectan a insertar MathML en HTML y XHTML, puesto que la idea es codificar matemáticas en documentos web. Hay tres temas principales en lo que insertar MathML en otros documentos XML respecta. El primero es que MathML debe estar semánticamente integrado, es decir, debe ser reconocido como contenido XML válido insertado, y no como un error. Esto se soluciona mediante namespaces, y un tag particular que encapsula toda expresión MathML válida.
<math xmlns="http://www.w3.org/1998/Math/MathML"> . . . </math>
Otro problema es, en el caso de HTML/XHTML, el renderizado de MathML debe estar integrado en el browser, y aún son muy pocos los browsers que soportan MathML.
El tercer problema es que las herramientas para generar y procesar MathML deben ser capaces de intercomunicarse. Hay un número de herramientas que ya han sido o están siendo desarrolladas, y dado que las expresiones suelen a ser largas y tendientes a ser ingresadas erróneamente a mano, se debe poner especial énfasis en asegurar que el código puede ser generado con herramientas fáciles de usar, que sean independientes de plataforma y marca. Un ejemplo de MathML. El código para generar la siguiente ecuación mediante notación de presentación y de contenido.
En elementos de representación:
<math> <msup> <mrow> <mo> ( </mo> <mrow> <mi> x </mi> <mo> + </mo> <mi> y </mi> </mrow> <mo> ) </mo> </mrow> <mn> 2 </mn> </msup> </math>
En elementos de contenido:
<math> <apply> <power/> <apply> <plus/> <ci>x</ci> <ci>y</ci> </apply> <cn>3</cn> </apply> </math>
|