-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Embedding the semantic tree in MathML
Davide P. Cervone edited this page Apr 22, 2015
·
9 revisions
This proposal is in its very early stages and will change considerably
Simple starting example: a+b+c
which might be realized as
<math>
<mi>a</mi>
<mo>+</mo>
<mi>b</mi>
<mo>+</mo>
<mi>c</mi>
</math>
which would yield a semantic tree looking like
+
|--- a
|--- b
|--- c
which could be embedded as follows
<math id=0>
<mrow id=1 data-math-semantic-parent="3,5" data-math-semantic-children="2,4,6">
<mi id=2 data-math-semantic-child>a</mi>
<mo id=3 data-math-semantic-operator="sum(meaning),+(type)">+</mo>
<mi id=4 data-math-semantic-child>b</mi>
<mo id=5 data-math-semantic-operator="sum,+">+</mo>
<mi id=6 data-math-semantic-child>c</mi>
</mrow>
</math>
In other words,
- add mrows when necessary for semantic-tree-nodes with children
- identify parent and children
- use "standard" MathML tree numbering (IDs) (Texthelp/DSI/MathJax conversation but simplified).
The hope is that this simple parent/child structure works well recursively, e.g.,
a + b*d + c
i.e.,
<math>
<mi>a</mi>
<mo>+</mo>
<mi>b</mi>
<mo>⋅</mo>
<mi>d</mi>
<mo>+</mo>
<mi>c</mi>
</math>
would lead to a semantic tree of
+
|--- a
|--- *
| |--- b
| |--- c
|--- d
and we simply start from the leafs adding an mrow for * etc. to get
<math id=0>
<mrow id=1 data-math-semantic-parent="3,8" data-math-semantic-children="2,4,9">
<mi id=2 data-math-semantic-child>a</mi>
<mo id=3 data-math-semantic-operator="sum,+">+</mo>
<mrow id=4 data-math-semantic-child data-math-semantic-parent="6" data-math-semantic-children="5,7">
<mi id=5 data-math-semantic-child>b</mi>
<mo id=6 data-math-semantic-operator="product,⋅">⋅</mo>
<mi id=7 data-math-semantic-child>d</mi>
</mrow>
<mo id=8 data-math-semantic-operator="sum,+">+</mo>
<mi id=9 data-math-semantic-child>c</mi>
</mrow>
</math>
Questions:
- Is this too simplistic?
- Is adding mrows too destructive?
- Do we need/want to be more destructive than that?