Один рендеринг имеет несколько выражений MathML?
В настоящее время я работаю над математическим распознаванием выражений. Я иду через набор данных CROHME и нашел это:
<math xmlns='http://www.w3.org/1998/Math/MathML'>
<mrow>
<mi xml:id="y_1">y</mi>
<mrow>
<mo xml:id="=_1">=</mo>
<mrow>
<mi xml:id="A_1">A</mi>
<mrow>
<mi xml:id="x_1">x</mi>
<mrow>
<mo xml:id="+_1">+</mo>
<msup>
<mi xml:id="A_2">A</mi>
<mn xml:id="2_1">2</mn>
</msup>
</mrow>
</mrow>
</mrow>
</mrow>
</mrow>
</math>
что делает для (с http://www.mathmlcentral.com/Tools/FromMathML.jsp)
Применение mrow
кажется довольно произвольным для меня. Разве это выражение не семантически идентично
<math xmlns='http://www.w3.org/1998/Math/MathML'>
<mrow>
<mi xml:id="y_1">y</mi>
<mo xml:id="=_1">=</mo>
<mi xml:id="A_1">A</mi>
<mi xml:id="x_1">x</mi>
<mo xml:id="+_1">+</mo>
<msup>
<mi xml:id="A_2">A</mi>
<mn xml:id="2_1">2</mn>
</msup>
</mrow>
</math>
или же
<math xmlns='http://www.w3.org/1998/Math/MathML'>
<mrow>
<mi xml:id="y_1">y</mi>
<mo xml:id="=_1">=</mo>
<mrow>
<mi xml:id="A_1">A</mi>
<mi xml:id="x_1">x</mi>
</mrow>
<mo xml:id="+_1">+</mo>
<msup>
<mi xml:id="A_2">A</mi>
<mn xml:id="2_1">2</mn>
</msup>
</mrow>
</math>
В чем разница между этими тремя выражениями MathML? Должны ли они все делать то же самое?
1 ответ
mrow
существует для разрешения длинных выражений внутри элементов / тегов, которые могут иметь ограниченное число дочерних элементов. Например, квадратный корень из "x + y" должен быть записан как
<math>
<msqrt>
<mrow>
<mi>x</mi>
<mo>+</mo>
<mi>y</mi>
</mrow>
</msqrt>
</math>
Программное обеспечение рендеринга должно сделать
<math>
<mi>x</mi>
</math>
а также
<math>
<mrow>
<mi>x</mi>
</mrow>
</math>
таким же образом.
Возвращаясь к вашему вопросу,
Разве это выражение не семантически идентично?
мы говорим о презентации MathML, поэтому не имеет смысла говорить о семантике.
В чем разница между этими тремя выражениями MathML?
Разница в MathML-дереве выражений. Если вы собираетесь обрабатывать выражение с помощью некоторого программного обеспечения, оно может сделать некоторые предположения на основе дерева MathML и иметь различные варианты поведения на его основе.
Должны ли они все делать то же самое?
Да.