Skip to main content

Math Schema

Writing math expressions is a very natural way within education, to learn and solve problems. Now, to make this content exchangeable and understandable, we introduce a schema that describes mathematical structures and their attributes. Humans read and write math as a line of structured text with commonly shared formatting conventions, e.g.:

Sample expression

with the recognized formula: $\left( x^2+2\right) \cdot \left( x^2-2\right) = 0$.

This would result in a MathML expression:

<math xmlns='http://www.w3.org/1998/Math/MathML'>
<mrow>
<mo> ( </mo>
<msup>
<mrow>
<mi> x </mi>
</mrow>
<mrow>
<mn> 2 </mn>
</mrow>
</msup>
<mo> + </mo>
<mn> 2 </mn>
<mo> ) </mo>
</mrow>
<mo> &#x00B7; <!-- middle dot --> </mo>
<mrow>
<mo> ( </mo>
<msup>
<mrow>
<mi> x </mi>
</mrow>
<mrow>
<mn> 2 </mn>
</mrow>
</msup>
<mo> - </mo>
<mn> 2 </mn>
<mo> ) </mo>
</mrow>
<mo> = </mo>
<mn> 0 </mn>
</math>

or a Latex representation:

\left( x^{2}+2\right) \cdot \left( x^{2}-2\right) = 0

For computer systems (e.g. computer algebra systems, or CAS) - a representation as a tree (expression trees) is better suited. A binary expression tree is a specific kind of binary tree used to represent math expressions. Two common types of expressions that a binary expression tree can represent are algebraic and boolean. These trees can represent expressions that contain both unary and binary operators.

Sample expression

Each node of a binary tree, and hence of a binary expression tree, has zero, one, or two children. This restricted structure simplifies the processing of expression trees.

The math schema will leverage the math structure and it is based on similar terminology as MathML.

Includes

NameValue
Schema URIschema will:seg/0.3
Class Count45
Classeswill:seg/0.3/Root, will:seg/0.3/ContentBlock, will:seg/0.3/TextRegion, will:seg/0.3/TextLine, will:seg/0.3/Word, will:seg/0.3/WordOfStrokes, will:seg/0.3/ExtendedTextRegion, will:seg/0.3/Line, will:seg/0.3/UnlabelledBlock, will:seg/0.3/UnlabelledItemGroup, will:seg/0.3/UnlabelledItem, will:seg/0.3/Drawing, will:seg/0.3/DrawingItemGroup, will:seg/0.3/DrawingItem, will:seg/0.3/ExpressionBlock, will:seg/0.3/GenericExpressionBlock, will:seg/0.3/GenericExpressionItemGroup, will:seg/0.3/GenericExpressionItem, will:seg/0.3/MathBlock, will:seg/0.3/MathItemGroup, will:seg/0.3/MathItem, will:seg/0.3/ChemistryBlock, will:seg/0.3/ChemistryItemGroup, will:seg/0.3/ChemistryItem, will:seg/0.3/PhysicsBlock, will:seg/0.3/PhysicsItemGroup, will:seg/0.3/PhysicsItem, will:seg/0.3/ContentBlockOfStrokeNodes, will:seg/0.3/ChemicalStructure, will:seg/0.3/Signature, will:seg/0.3/Garbage, will:seg/0.3/Unlabeled, will:seg/0.3/Doodle, will:seg/0.3/Diagram, will:seg/0.3/DiagramConnector, will:seg/0.3/DiagramPart, will:seg/0.3/Table, will:seg/0.3/Border, will:seg/0.3/List, will:seg/0.3/ListItem, will:seg/0.3/ListItemBullet, will:seg/0.3/Annotation, will:seg/0.3/Marking, will:seg/0.3/Connector, will:seg/0.3/Correction

Classes

Term

Term is an abstract class covering atomic parts of a math formula.

NameValue
Classwill:math/0.6/Term [abstract]
Defined Inwill:math/0.6
Specializeswill:seg/0.3/MathItem
Specialized Bywill:math/0.6/Symbol,will:math/0.6/Number

Properties

PropertyAttributeValue
hasChildData Type(s)will:uim/1.1/StrokeNode
Association Typecomposition
Cardinality[0, 1] overridden to [0, inf] (optional)
hasOperandLabelData Type(s)@string
DescriptionReserved for debug purposes.
Association Typecomposition
Cardinality[0, 1] (optional)
hasOperandTypeData Type(s)@string
DescriptionReserved for debug purposes.
Association Typecomposition
Cardinality[0, 1] (optional)
hasParentData Type(s)
Association Typeaggregation
Cardinality[1, 1] overridden to [0, 1] (mandatory)
isStructuralItemData Type(s)@bool
DescriptionReserved for debug purposes.
Association Typecomposition
Cardinality[0, 1] (optional)

Symbol

A Symbol can include variables, function names, and symbolic constants.

NameValue
Classwill:math/0.6/Symbol
Defined Inwill:math/0.6
Specializeswill:math/0.6/Term

Properties

PropertyAttributeValue
hasChildData Type(s)will:uim/1.1/StrokeNode
Association Typecomposition
Cardinality[0, 1] overridden to [0, inf] (optional)
hasOperandLabelData Type(s)@string
DescriptionReserved for debug purposes.
Association Typecomposition
Cardinality[0, 1] (optional)
hasOperandTypeData Type(s)@string
DescriptionReserved for debug purposes.
Association Typecomposition
Cardinality[0, 1] (optional)
hasParentData Type(s)
Association Typeaggregation
Cardinality[1, 1] overridden to [0, 1] (mandatory)
isStructuralItemData Type(s)@bool
DescriptionReserved for debug purposes.
Association Typecomposition
Cardinality[0, 1] (optional)
representationData Type(s)@string
DescriptionContains the representation of the symbol.
Association Typecomposition
Cardinality[0, 1] (optional)
symbolTypeData Type(s)@string
DescriptionDefines the type of the symbol.
Association Typecomposition
Cardinality[0, 1] (optional)

Number

Numbers represent a 'numeric literal'. In general, a numeric literal is a sequence of digits, perhaps including a decimal point, representing an unsigned integer or real number.

NameValue
Classwill:math/0.6/Number
Defined Inwill:math/0.6
Specializeswill:math/0.6/Term

Properties

PropertyAttributeValue
hasChildData Type(s)will:uim/1.1/StrokeNode
Association Typecomposition
Cardinality[0, 1] overridden to [0, inf] (optional)
hasOperandLabelData Type(s)@string
DescriptionReserved for debug purposes.
Association Typecomposition
Cardinality[0, 1] (optional)
hasOperandTypeData Type(s)@string
DescriptionReserved for debug purposes.
Association Typecomposition
Cardinality[0, 1] (optional)
hasParentData Type(s)
Association Typeaggregation
Cardinality[1, 1] overridden to [0, 1] (mandatory)
isStructuralItemData Type(s)@bool
DescriptionReserved for debug purposes.
Association Typecomposition
Cardinality[0, 1] (optional)
numberTypeData Type(s)@string
DescriptionDefines the type of the number.
Association Typecomposition
Cardinality[0, 1] (optional)
representationData Type(s)@float64
DescriptionContains the numerical representation of the number. A symbolic representation such as Π, is using Symbol.
Association Typecomposition
Cardinality[0, 1] (optional)

CompoundTerm

Describes entities that are considered atomic and cannot be split further. E.g. 2ab, sin a, f(x), etc.

NameValue
Classwill:math/0.6/CompoundTerm
Defined Inwill:math/0.6
Specializeswill:seg/0.3/MathItemGroup

Properties

PropertyAttributeValue
bodyData Type(s)will:math/0.6/Term,will:math/0.6/Expression,will:math/0.6/Fenced,will:math/0.6/Fraction,will:math/0.6/RootExpression,will:math/0.6/CompoundTerm,will:math/0.6/Indexed,will:math/0.6/Matrix
Association Typeaggregation
Cardinality[1, inf] (mandatory)
Inverse OfhasParent
hasChildData Type(s)
Association Typecomposition
Cardinality[0, 0] overridden to [0, inf] (optional)
hasOperandLabelData Type(s)@string
DescriptionReserved for debug purposes.
Association Typecomposition
Cardinality[0, 1] (optional)
hasOperandTypeData Type(s)@string
DescriptionReserved for debug purposes.
Association Typecomposition
Cardinality[0, 1] (optional)
hasParentData Type(s)
Association Typeaggregation
Cardinality[1, 1] overridden to [0, 1] (mandatory)
isStructuralItemData Type(s)@bool
DescriptionReserved for debug purposes.
Association Typecomposition
Cardinality[0, 1] (optional)

Operator

Describes the operator symbol.

NameValue
Classwill:math/0.6/Operator [final]
Defined Inwill:math/0.6
Specializeswill:seg/0.3/MathItem

Properties

PropertyAttributeValue
hasChildData Type(s)will:uim/1.1/StrokeNode
Association Typecomposition
Cardinality[0, 1] overridden to [0, inf] (optional)
hasOperandLabelData Type(s)@string
DescriptionReserved for debug purposes.
Association Typecomposition
Cardinality[0, 1] (optional)
hasOperandTypeData Type(s)@string
DescriptionReserved for debug purposes.
Association Typecomposition
Cardinality[0, 1] (optional)
hasParentData Type(s)
Association Typeaggregation
Cardinality[1, 1] overridden to [0, 1] (mandatory)
isStructuralItemData Type(s)@bool
DescriptionReserved for debug purposes.
Association Typecomposition
Cardinality[0, 1] (optional)
representationData Type(s)@string
DescriptionContains the symbol for the operator.
Association Typeaggregation
Cardinality[1, 1] (mandatory)

Relation

Describes the relation symbol.

NameValue
Classwill:math/0.6/Relation [final]
Defined Inwill:math/0.6
Specializeswill:seg/0.3/MathItem

Properties

PropertyAttributeValue
hasChildData Type(s)will:uim/1.1/StrokeNode
Association Typecomposition
Cardinality[0, 1] overridden to [0, inf] (optional)
hasOperandLabelData Type(s)@string
DescriptionReserved for debug purposes.
Association Typecomposition
Cardinality[0, 1] (optional)
hasOperandTypeData Type(s)@string
DescriptionReserved for debug purposes.
Association Typecomposition
Cardinality[0, 1] (optional)
hasParentData Type(s)
Association Typeaggregation
Cardinality[1, 1] overridden to [0, 1] (mandatory)
isStructuralItemData Type(s)@bool
DescriptionReserved for debug purposes.
Association Typecomposition
Cardinality[0, 1] (optional)
representationData Type(s)@string
DescriptionContains the symbol for the relation.
Association Typeaggregation
Cardinality[1, 1] (mandatory)

FractionLine

Links the strokes that are associated with the fraction line using the hasChild property.

NameValue
Classwill:math/0.6/FractionLine [final]
Defined Inwill:math/0.6
Specializeswill:seg/0.3/MathItem

Properties

PropertyAttributeValue
hasChildData Type(s)will:uim/1.1/StrokeNode
Association Typecomposition
Cardinality[0, 1] overridden to [0, inf] (optional)
hasOperandLabelData Type(s)@string
DescriptionReserved for debug purposes.
Association Typecomposition
Cardinality[0, 1] (optional)
hasOperandTypeData Type(s)@string
DescriptionReserved for debug purposes.
Association Typecomposition
Cardinality[0, 1] (optional)
hasParentData Type(s)
Association Typeaggregation
Cardinality[1, 1] overridden to [0, 1] (mandatory)
isStructuralItemData Type(s)@bool
DescriptionReserved for debug purposes.
Association Typecomposition
Cardinality[0, 1] (optional)

Expression

Flattened representation of the operation. It consists of at least 2 components - operator | relation, n-operands. If there are more operands it would result in, e.g., 5x+3y+3 -> +, 5x, 3y, 3.

NameValue
Classwill:math/0.6/Expression
Defined Inwill:math/0.6
Specializeswill:seg/0.3/MathItemGroup

Properties

PropertyAttributeValue
hasChildData Type(s)
Association Typecomposition
Cardinality[0, 0] overridden to [0, inf] (optional)
hasOperandLabelData Type(s)@string
DescriptionReserved for debug purposes.
Association Typecomposition
Cardinality[0, 1] (optional)
hasOperandTypeData Type(s)@string
DescriptionReserved for debug purposes.
Association Typecomposition
Cardinality[0, 1] (optional)
hasParentData Type(s)
Association Typeaggregation
Cardinality[1, 1] overridden to [0, 1] (mandatory)
isStructuralItemData Type(s)@bool
DescriptionReserved for debug purposes.
Association Typecomposition
Cardinality[0, 1] (optional)
itemsData Type(s)will:math/0.6/Term,will:math/0.6/CompoundTerm,will:math/0.6/Expression,will:math/0.6/Fenced,will:math/0.6/Fraction,will:math/0.6/Relation,will:math/0.6/Indexed,will:math/0.6/Matrix,will:math/0.6/RootExpression
DescriptionIf the operator is set with an Operator or a Relation, the items must be considered as operands.
Association Typeaggregation
Cardinality[1, inf] (mandatory) (ordered)
Inverse OfhasParent
operatorData Type(s)will:math/0.6/Operator,will:math/0.6/Relation
DescriptionOperations and Relations need at least one Operator or a Relation, items includes the operands.
Association Typeaggregation
Cardinality[1, inf] (mandatory) (ordered)
Inverse OfhasParent

Fenced

A fenced term is a term that will always have opening and closing parentheses, e.g, ((x + 1) * 2).

NameValue
Classwill:math/0.6/Fenced
Defined Inwill:math/0.6
Specializeswill:seg/0.3/MathItemGroup

Properties

PropertyAttributeValue
bodyData Type(s)will:math/0.6/Term,will:math/0.6/CompoundTerm,will:math/0.6/Expression,will:math/0.6/Fenced,will:math/0.6/Fraction,will:math/0.6/Indexed,will:math/0.6/RootExpression
Association Typeaggregation
Cardinality[1, inf] (mandatory)
Inverse OfhasParent
closingBracketData Type(s)will:math/0.6/Symbol
DescriptionSymbol used for closing bracket, e.g., ), ], or }.
Association Typeaggregation
Cardinality[1, 1] (mandatory)
Inverse OfhasParent
hasChildData Type(s)
Association Typecomposition
Cardinality[0, 0] overridden to [0, inf] (optional)
hasOperandLabelData Type(s)@string
DescriptionReserved for debug purposes.
Association Typecomposition
Cardinality[0, 1] (optional)
hasOperandTypeData Type(s)@string
DescriptionReserved for debug purposes.
Association Typecomposition
Cardinality[0, 1] (optional)
hasParentData Type(s)
Association Typeaggregation
Cardinality[1, 1] overridden to [0, 1] (mandatory)
isStructuralItemData Type(s)@bool
DescriptionReserved for debug purposes.
Association Typecomposition
Cardinality[0, 1] (optional)
openingBracketData Type(s)will:math/0.6/Symbol
DescriptionSymbol used for opening bracket, e.g., (, [, or {.
Association Typeaggregation
Cardinality[1, 1] (mandatory)
Inverse OfhasParent

System

A system of equations is grouping several lines via equation.

NameValue
Classwill:math/0.6/System
Defined Inwill:math/0.6
Specializeswill:seg/0.3/MathItemGroup
Specialized Bywill:math/0.6/Cases

Properties

PropertyAttributeValue
equationData Type(s)will:math/0.6/Term,will:math/0.6/CompoundTerm,will:math/0.6/Expression,will:math/0.6/Matrix,will:math/0.6/Indexed,will:math/0.6/Fraction,will:math/0.6/Fenced,will:math/0.6/RootExpression
Association Typeaggregation
Cardinality[1, inf] (mandatory) (ordered)
Inverse OfhasParent
hasChildData Type(s)
Association Typecomposition
Cardinality[0, 0] overridden to [0, inf] (optional)
hasOperandLabelData Type(s)@string
DescriptionReserved for debug purposes.
Association Typecomposition
Cardinality[0, 1] (optional)
hasOperandTypeData Type(s)@string
DescriptionReserved for debug purposes.
Association Typecomposition
Cardinality[0, 1] (optional)
hasParentData Type(s)
Association Typeaggregation
Cardinality[1, 1] overridden to [0, 1] (mandatory)
isStructuralItemData Type(s)@bool
DescriptionReserved for debug purposes.
Association Typecomposition
Cardinality[0, 1] (optional)

Cases

A fenced term with vertical alignment, where there is only one bracket. Cases are added via equation for the System class.

NameValue
Classwill:math/0.6/Cases
Defined Inwill:math/0.6
Specializeswill:math/0.6/System

Properties

PropertyAttributeValue
bracketData Type(s)will:math/0.6/Symbol
Association Typeaggregation
Cardinality[1, 1] (mandatory)
Inverse OfhasParent
equationData Type(s)will:math/0.6/Term,will:math/0.6/CompoundTerm,will:math/0.6/Expression,will:math/0.6/Matrix,will:math/0.6/Indexed,will:math/0.6/Fraction,will:math/0.6/Fenced,will:math/0.6/RootExpression
Association Typeaggregation
Cardinality[1, inf] (mandatory) (ordered)
Inverse OfhasParent
hasChildData Type(s)
Association Typecomposition
Cardinality[0, 0] overridden to [0, inf] (optional)
hasOperandLabelData Type(s)@string
DescriptionReserved for debug purposes.
Association Typecomposition
Cardinality[0, 1] (optional)
hasOperandTypeData Type(s)@string
DescriptionReserved for debug purposes.
Association Typecomposition
Cardinality[0, 1] (optional)
hasParentData Type(s)
Association Typeaggregation
Cardinality[1, 1] overridden to [0, 1] (mandatory)
isStructuralItemData Type(s)@bool
DescriptionReserved for debug purposes.
Association Typecomposition
Cardinality[0, 1] (optional)

RootExpression

RootExpression can have a symbol n √ x, or a number 3 √ x. If no degree is set, it is considered a squared root.

NameValue
Classwill:math/0.6/RootExpression
Defined Inwill:math/0.6
Specializeswill:seg/0.3/MathItemGroup

Properties

PropertyAttributeValue
bodyData Type(s)will:math/0.6/Term,will:math/0.6/CompoundTerm,will:math/0.6/Expression,will:math/0.6/Fenced,will:math/0.6/Fraction,will:math/0.6/RootExpression,will:math/0.6/Indexed
Association Typeaggregation
Cardinality[1, 1] (mandatory)
Inverse OfhasParent
degreeData Type(s)will:math/0.6/Symbol,will:math/0.6/Number
DescriptionDescribes the degree of the root expression.
Association Typecomposition
Cardinality[0, 1] (optional)
Inverse OfhasParent
hasChildData Type(s)
Association Typecomposition
Cardinality[0, 0] overridden to [0, inf] (optional)
hasOperandLabelData Type(s)@string
DescriptionReserved for debug purposes.
Association Typecomposition
Cardinality[0, 1] (optional)
hasOperandTypeData Type(s)@string
DescriptionReserved for debug purposes.
Association Typecomposition
Cardinality[0, 1] (optional)
hasParentData Type(s)
Association Typeaggregation
Cardinality[1, 1] overridden to [0, 1] (mandatory)
isStructuralItemData Type(s)@bool
DescriptionReserved for debug purposes.
Association Typecomposition
Cardinality[0, 1] (optional)
rootSignData Type(s)will:math/0.6/Symbol
Association Typeaggregation
Cardinality[1, 1] (mandatory)
Inverse OfhasParent

Fraction

Fraction expression with numerator and denominator.

NameValue
Classwill:math/0.6/Fraction
Defined Inwill:math/0.6
Specializeswill:seg/0.3/MathItemGroup

Properties

PropertyAttributeValue
denominatorData Type(s)will:math/0.6/Term,will:math/0.6/CompoundTerm,will:math/0.6/Expression,will:math/0.6/Fenced,will:math/0.6/Fraction,will:math/0.6/RootExpression,will:math/0.6/Indexed
DescriptionDenominator part of the fraction (optional for partial fraction).
Association Typecomposition
Cardinality[0, 1] (optional)
Inverse OfhasParent
fractionLineData Type(s)will:math/0.6/FractionLine
DescriptionStroke(s) annotating the fraction line.
Association Typeaggregation
Cardinality[1, inf] (mandatory)
Inverse OfhasParent
fractionTypeData Type(s)@string
DescriptionDescribes the type of fraction.
Association Typecomposition
Cardinality[0, 1] (optional)
hasChildData Type(s)
Association Typecomposition
Cardinality[0, 0] overridden to [0, inf] (optional)
hasOperandLabelData Type(s)@string
DescriptionReserved for debug purposes.
Association Typecomposition
Cardinality[0, 1] (optional)
hasOperandTypeData Type(s)@string
DescriptionReserved for debug purposes.
Association Typecomposition
Cardinality[0, 1] (optional)
hasParentData Type(s)
Association Typeaggregation
Cardinality[1, 1] overridden to [0, 1] (mandatory)
isStructuralItemData Type(s)@bool
DescriptionReserved for debug purposes.
Association Typecomposition
Cardinality[0, 1] (optional)
numeratorData Type(s)will:math/0.6/Term,will:math/0.6/CompoundTerm,will:math/0.6/Expression,will:math/0.6/Fenced,will:math/0.6/Fraction,will:math/0.6/RootExpression,will:math/0.6/Indexed
DescriptionNumerator part of the fraction. (optional for partial fraction)
Association Typecomposition
Cardinality[0, 1] (optional)
Inverse OfhasParent

Row

Row of a matrix structure.

NameValue
Classwill:math/0.6/Row
Defined Inwill:math/0.6
Specializeswill:seg/0.3/MathItemGroup

Properties

PropertyAttributeValue
hasCellData Type(s)will:math/0.6/Number,will:math/0.6/Symbol,will:math/0.6/CompoundTerm,will:math/0.6/Fraction,will:math/0.6/Fenced,will:math/0.6/Indexed,will:math/0.6/Expression,will:math/0.6/RootExpression,will:math/0.6/Matrix
DescriptionRepresents the content a cell within a matrix.
Association Typeaggregation
Cardinality[1, inf] (mandatory) (ordered)
hasChildData Type(s)
Association Typecomposition
Cardinality[0, 0] overridden to [0, inf] (optional)
hasOperandLabelData Type(s)@string
DescriptionReserved for debug purposes.
Association Typecomposition
Cardinality[0, 1] (optional)
hasOperandTypeData Type(s)@string
DescriptionReserved for debug purposes.
Association Typecomposition
Cardinality[0, 1] (optional)
hasParentData Type(s)
Association Typeaggregation
Cardinality[1, 1] overridden to [0, 1] (mandatory)
isStructuralItemData Type(s)@bool
DescriptionReserved for debug purposes.
Association Typecomposition
Cardinality[0, 1] (optional)

Matrix

Matrix expression, which consists of multiple rows.

NameValue
Classwill:math/0.6/Matrix
Defined Inwill:math/0.6
Specializeswill:seg/0.3/MathItemGroup

Properties

PropertyAttributeValue
closingBracketData Type(s)will:math/0.6/Symbol
DescriptionSymbol used for closing bracket, e.g., ), or ].
Association Typeaggregation
Cardinality[1, 1] (mandatory)
hasChildData Type(s)
Association Typecomposition
Cardinality[0, 0] overridden to [0, inf] (optional)
hasOperandLabelData Type(s)@string
DescriptionReserved for debug purposes.
Association Typecomposition
Cardinality[0, 1] (optional)
hasOperandTypeData Type(s)@string
DescriptionReserved for debug purposes.
Association Typecomposition
Cardinality[0, 1] (optional)
hasParentData Type(s)
Association Typeaggregation
Cardinality[1, 1] overridden to [0, 1] (mandatory)
hasRowData Type(s)will:math/0.6/Row
DescriptionRows of the matrix.
Association Typeaggregation
Cardinality[1, inf] (mandatory) (ordered)
isStructuralItemData Type(s)@bool
DescriptionReserved for debug purposes.
Association Typecomposition
Cardinality[0, 1] (optional)
openingBracketData Type(s)will:math/0.6/Symbol
DescriptionSymbol used for opening bracket, e.g., ( or [.
Association Typeaggregation
Cardinality[1, 1] (mandatory)

Indexed

Generic expression for all indexed terms. There is no mathematical interpretation of the indexed term, thus summations or integrals would be expressed as symbols with an overscript and underscript.

NameValue
Classwill:math/0.6/Indexed
Defined Inwill:math/0.6
Specializeswill:seg/0.3/MathItemGroup

Properties

PropertyAttributeValue
bodyData Type(s)will:math/0.6/Term,will:math/0.6/CompoundTerm,will:math/0.6/Fenced
DescriptionBase expression.
Association Typeaggregation
Cardinality[1, 1] (mandatory)
Inverse OfhasParent
hasChildData Type(s)
Association Typecomposition
Cardinality[0, 0] overridden to [0, inf] (optional)
hasOperandLabelData Type(s)@string
DescriptionReserved for debug purposes.
Association Typecomposition
Cardinality[0, 1] (optional)
hasOperandTypeData Type(s)@string
DescriptionReserved for debug purposes.
Association Typecomposition
Cardinality[0, 1] (optional)
hasParentData Type(s)
Association Typeaggregation
Cardinality[1, 1] overridden to [0, 1] (mandatory)
isStructuralItemData Type(s)@bool
DescriptionReserved for debug purposes.
Association Typecomposition
Cardinality[0, 1] (optional)
overScriptData Type(s)will:math/0.6/Term,will:math/0.6/CompoundTerm,will:math/0.6/Expression,will:math/0.6/Fenced,will:math/0.6/Fraction,will:math/0.6/RootExpression,will:math/0.6/Indexed
DescriptionOverscript expression / term.
Association Typecomposition
Cardinality[0, 1] (optional)
Inverse OfhasParent
preSubScriptData Type(s)will:math/0.6/Term,will:math/0.6/CompoundTerm,will:math/0.6/Expression,will:math/0.6/Fenced,will:math/0.6/Fraction,will:math/0.6/RootExpression,will:math/0.6/Indexed
DescriptionPre-subscript expression / term.
Association Typecomposition
Cardinality[0, 1] (optional)
Inverse OfhasParent
preSuperScriptData Type(s)will:math/0.6/Term,will:math/0.6/CompoundTerm,will:math/0.6/Expression,will:math/0.6/Fenced,will:math/0.6/Fraction,will:math/0.6/RootExpression,will:math/0.6/Indexed
DescriptionPre-superscript expression / term.
Association Typecomposition
Cardinality[0, 1] (optional)
Inverse OfhasParent
subScriptData Type(s)will:math/0.6/Term,will:math/0.6/CompoundTerm,will:math/0.6/Expression,will:math/0.6/Fenced,will:math/0.6/Fraction,will:math/0.6/RootExpression,will:math/0.6/Indexed
DescriptionSubscript expression / term.
Association Typecomposition
Cardinality[0, 1] (optional)
Inverse OfhasParent
superScriptData Type(s)will:math/0.6/Term,will:math/0.6/CompoundTerm,will:math/0.6/Expression,will:math/0.6/Fenced,will:math/0.6/Fraction,will:math/0.6/RootExpression,will:math/0.6/Indexed
DescriptionSuperscript expression / term.
Association Typecomposition
Cardinality[0, 1] (optional)
Inverse OfhasParent
underScriptData Type(s)will:math/0.6/Term,will:math/0.6/CompoundTerm,will:math/0.6/Expression,will:math/0.6/Fenced,will:math/0.6/Fraction,will:math/0.6/RootExpression,will:math/0.6/Indexed
DescriptionUnderscript expression / term.
Association Typecomposition
Cardinality[0, 1] (optional)
Inverse OfhasParent

Schema Definition

{
"head": {
"uri": "will:math/0.6",
"version": "0.6",
"description": "Math Schema to formalizing the math expression tree.",
"classUriTemplate": "will:math/0.6/[class]",
"propertyUriTemplate": "uim:math/0.6/[class]#[property]",
"includes": [
{
"namespace": "seg",
"schema": "will:seg/0.3"
}
]
},
"body": {
"extensions": {},
"classes": {
"will:math/0.6/Term": {
"subclassOf": "will:seg/0.3/MathItem",
"properties": {},
"isAbstract": true,
"isFinal": false,
"@desc": "`Term` is an abstract class covering atomic parts of a math formula."
},
"will:math/0.6/Symbol": {
"subclassOf": "will:math/0.6/Term",
"properties": {
"representation": {
"dataType": "@string",
"minCardinality": 0,
"maxCardinality": 1,
"isFinal": false,
"@desc": "Contains the representation of the symbol."
},
"symbolType": {
"dataType": "@string",
"minCardinality": 0,
"maxCardinality": 1,
"isFinal": false,
"@desc": "Defines the type of the symbol.",
"dataRange": [
"Constant,Variable,Function,Numerical"
]
}
},
"isAbstract": false,
"isFinal": false,
"@desc": "A `Symbol` can include variables, function names, and symbolic constants."
},
"will:math/0.6/Number": {
"subclassOf": "will:math/0.6/Term",
"properties": {
"representation": {
"dataType": "@float64",
"minCardinality": 0,
"maxCardinality": 1,
"isFinal": false,
"@desc": "Contains the numerical representation of the number. A symbolic representation such as \u03a0, is using Symbol."
},
"numberType": {
"dataType": "@string",
"minCardinality": 0,
"maxCardinality": 1,
"isFinal": false,
"@desc": "Defines the type of the number.",
"dataRange": [
"Integer,Decimal"
]
}
},
"isAbstract": false,
"isFinal": false,
"@desc": "Numbers represents a 'numeric literal'. In general, a numeric literal is a sequence of digits, perhaps including a decimal point, representing an unsigned integer or real number."
},
"will:math/0.6/CompoundTerm": {
"subclassOf": "will:seg/0.3/MathItemGroup",
"properties": {
"body": {
"dataType": "will:math/0.6/Term,will:math/0.6/Expression,will:math/0.6/Fenced,will:math/0.6/Fraction,will:math/0.6/RootExpression,will:math/0.6/CompoundTerm,will:math/0.6/Indexed,will:math/0.6/Matrix",
"minCardinality": 1,
"maxCardinality": -1,
"isFinal": false,
"inverseOf": "hasParent"
},
"hasChild": {
"dataType": "",
"minCardinality": 0,
"maxCardinality": 0,
"isFinal": false
}
},
"isAbstract": false,
"isFinal": false,
"@desc": "Describes entity that is considered atomic and would/could not be split further. E.g. 2ab, sin a, f(x), etc."
},
"will:math/0.6/Operator": {
"subclassOf": "will:seg/0.3/MathItem",
"properties": {
"representation": {
"dataType": "@string",
"minCardinality": 1,
"maxCardinality": 1,
"isFinal": false,
"@desc": "Contains the symbol for the operator."
}
},
"isFinal": true,
"@desc": "Describes the operator symbol."
},
"will:math/0.6/Relation": {
"subclassOf": "will:seg/0.3/MathItem",
"properties": {
"representation": {
"dataType": "@string",
"minCardinality": 1,
"maxCardinality": 1,
"isFinal": false,
"@desc": "Contains the symbol for the relation."
}
},
"isFinal": true,
"@desc": "Describes the relation symbol."
},
"will:math/0.6/FractionLine": {
"subclassOf": "will:seg/0.3/MathItem",
"properties": {},
"isFinal": true,
"@desc": "Links the strokes that are associated to the fraction line using `hasChild` property"
},
"will:math/0.6/Expression": {
"subclassOf": "will:seg/0.3/MathItemGroup",
"properties": {
"operator": {
"dataType": "will:math/0.6/Operator,will:math/0.6/Relation",
"minCardinality": 1,
"maxCardinality": -1,
"isFinal": false,
"isOrdered": true,
"inverseOf": "hasParent",
"@desc": "Operations and Relations need at least one `Operator` or a `Relation`, items includes the operands."
},
"items": {
"dataType": "will:math/0.6/Term,will:math/0.6/CompoundTerm,will:math/0.6/Expression,will:math/0.6/Fenced,will:math/0.6/Fraction,will:math/0.6/Relation,will:math/0.6/Indexed,will:math/0.6/Matrix,will:math/0.6/RootExpression",
"minCardinality": 1,
"maxCardinality": -1,
"isFinal": false,
"isOrdered": true,
"inverseOf": "hasParent",
"@desc": "If the operator is set with an `Operator` or a `Relation`, the items must be considered as operands."
},
"hasChild": {
"dataType": "",
"minCardinality": 0,
"maxCardinality": 0,
"isFinal": false
}
},
"isAbstract": false,
"isFinal": false,
"@desc": "Flattened representation of the operation. It consists of at least 2 components - operator | relation, n-operands. If there are more operands it would result in, e.g., 5x+3y+3 -> +, 5x, 3y, 3."
},
"will:math/0.6/Fenced": {
"subclassOf": "will:seg/0.3/MathItemGroup",
"properties": {
"openingBracket": {
"dataType": "will:math/0.6/Symbol",
"minCardinality": 1,
"maxCardinality": 1,
"isFinal": false,
"inverseOf": "hasParent",
"@desc": "Symbol used for opening bracket, e.g., (, [, or {."
},
"closingBracket": {
"dataType": "will:math/0.6/Symbol",
"minCardinality": 1,
"maxCardinality": 1,
"isFinal": false,
"inverseOf": "hasParent",
"@desc": "Symbol used for closing bracket, e.g., ), ], or }."
},
"body": {
"dataType": "will:math/0.6/Term,will:math/0.6/CompoundTerm,will:math/0.6/Expression,will:math/0.6/Fenced,will:math/0.6/Fraction,will:math/0.6/Indexed,will:math/0.6/RootExpression",
"minCardinality": 1,
"maxCardinality": -1,
"isFinal": false,
"inverseOf": "hasParent"
},
"hasChild": {
"dataType": "",
"minCardinality": 0,
"maxCardinality": 0,
"isFinal": false
}
},
"isAbstract": false,
"isFinal": false,
"@desc": "A fenced term has always an opening and closing brackets, e.g, ((x + 1) * 2)."
},
"will:math/0.6/System": {
"subclassOf": "will:seg/0.3/MathItemGroup",
"properties": {
"equation": {
"dataType": "will:math/0.6/Term,will:math/0.6/CompoundTerm,will:math/0.6/Expression,will:math/0.6/Matrix,will:math/0.6/Indexed,will:math/0.6/Fraction,will:math/0.6/Fenced,will:math/0.6/RootExpression",
"minCardinality": 1,
"maxCardinality": -1,
"isFinal": false,
"isOrdered": true,
"inverseOf": "hasParent"
},
"hasChild": {
"dataType": "",
"minCardinality": 0,
"maxCardinality": 0,
"isFinal": false
}
},
"isAbstract": false,
"isFinal": false,
"@desc": "A system of equations is grouping several lines via `equation`."
},
"will:math/0.6/Cases": {
"subclassOf": "will:math/0.6/System",
"properties": {
"bracket": {
"dataType": "will:math/0.6/Symbol",
"minCardinality": 1,
"maxCardinality": 1,
"isFinal": false,
"inverseOf": "hasParent"
}
},
"isAbstract": false,
"isFinal": false,
"@desc": "A fenced term with vertical alignment, where there is only one bracket. Cases are added via `equation` for `System` class."
},
"will:math/0.6/RootExpression": {
"subclassOf": "will:seg/0.3/MathItemGroup",
"properties": {
"degree": {
"dataType": "will:math/0.6/Symbol,will:math/0.6/Number",
"minCardinality": 0,
"maxCardinality": 1,
"isFinal": false,
"inverseOf": "hasParent",
"@desc": "Describes the degree of the root expression."
},
"rootSign": {
"dataType": "will:math/0.6/Symbol",
"minCardinality": 1,
"maxCardinality": 1,
"isFinal": false,
"inverseOf": "hasParent"
},
"body": {
"dataType": "will:math/0.6/Term,will:math/0.6/CompoundTerm,will:math/0.6/Expression,will:math/0.6/Fenced,will:math/0.6/Fraction,will:math/0.6/RootExpression,will:math/0.6/Indexed",
"minCardinality": 1,
"maxCardinality": 1,
"isFinal": false,
"inverseOf": "hasParent"
},
"hasChild": {
"dataType": "",
"minCardinality": 0,
"maxCardinality": 0,
"isFinal": false
}
},
"isAbstract": false,
"isFinal": false,
"@desc": "RootExpression can have a symbol n \u221a x, or a number 3 \u221a x. If no degree is set, it is considered as squared root."
},
"will:math/0.6/Fraction": {
"subclassOf": "will:seg/0.3/MathItemGroup",
"properties": {
"fractionLine": {
"dataType": "will:math/0.6/FractionLine",
"minCardinality": 1,
"maxCardinality": -1,
"isFinal": false,
"inverseOf": "hasParent",
"@desc": "Stroke(s) annotating the fraction line."
},
"numerator": {
"dataType": "will:math/0.6/Term,will:math/0.6/CompoundTerm,will:math/0.6/Expression,will:math/0.6/Fenced,will:math/0.6/Fraction,will:math/0.6/RootExpression,will:math/0.6/Indexed",
"minCardinality": 0,
"maxCardinality": 1,
"isFinal": false,
"inverseOf": "hasParent",
"@desc": "Numerator part of the fraction. (optional for partial fraction)"
},
"denominator": {
"dataType": "will:math/0.6/Term,will:math/0.6/CompoundTerm,will:math/0.6/Expression,will:math/0.6/Fenced,will:math/0.6/Fraction,will:math/0.6/RootExpression,will:math/0.6/Indexed",
"minCardinality": 0,
"maxCardinality": 1,
"isFinal": false,
"inverseOf": "hasParent",
"@desc": "Denominator part of the fraction (optional for partial fraction)."
},
"fractionType": {
"dataType": "@string",
"minCardinality": 0,
"maxCardinality": 1,
"isFinal": false,
"@desc": "Describes the type of fraction.",
"dataRange": [
"Normal,Slanted,Partial"
]
},
"hasChild": {
"dataType": "",
"minCardinality": 0,
"maxCardinality": 0,
"isFinal": false
}
},
"isAbstract": false,
"isFinal": false,
"@desc": "Fraction expression with numerator and denominator."
},
"will:math/0.6/Row": {
"subclassOf": "will:seg/0.3/MathItemGroup",
"properties": {
"hasCell": {
"dataType": "will:math/0.6/Number,will:math/0.6/Symbol,will:math/0.6/CompoundTerm,will:math/0.6/Fraction,will:math/0.6/Fenced,will:math/0.6/Indexed,will:math/0.6/Expression,will:math/0.6/RootExpression,will:math/0.6/Matrix",
"minCardinality": 1,
"maxCardinality": -1,
"isFinal": false,
"isOrdered": true,
"@desc": "Represents the content a cell within a matrix."
},
"hasChild": {
"dataType": "",
"minCardinality": 0,
"maxCardinality": 0,
"isFinal": false
}
},
"isAbstract": false,
"isFinal": false,
"@desc": "Row of a matrix structure."
},
"will:math/0.6/Matrix": {
"subclassOf": "will:seg/0.3/MathItemGroup",
"properties": {
"hasRow": {
"dataType": "will:math/0.6/Row",
"minCardinality": 1,
"maxCardinality": -1,
"isFinal": false,
"isOrdered": true,
"@desc": "Rows of the matrix."
},
"openingBracket": {
"dataType": "will:math/0.6/Symbol",
"minCardinality": 1,
"maxCardinality": 1,
"isFinal": false,
"@desc": "Symbol used for opening bracket, e.g., ( or [."
},
"closingBracket": {
"dataType": "will:math/0.6/Symbol",
"minCardinality": 1,
"maxCardinality": 1,
"isFinal": false,
"@desc": "Symbol used for closing bracket, e.g., ), or ]."
},
"hasChild": {
"dataType": "",
"minCardinality": 0,
"maxCardinality": 0,
"isFinal": false
}
},
"isAbstract": false,
"isFinal": false,
"@desc": "Matrix expression, which consists of multiple rows."
},
"will:math/0.6/Indexed": {
"subclassOf": "will:seg/0.3/MathItemGroup",
"properties": {
"body": {
"dataType": "will:math/0.6/Term,will:math/0.6/CompoundTerm,will:math/0.6/Fenced",
"minCardinality": 1,
"maxCardinality": 1,
"isFinal": false,
"inverseOf": "hasParent",
"@desc": "Base expression."
},
"superScript": {
"dataType": "will:math/0.6/Term,will:math/0.6/CompoundTerm,will:math/0.6/Expression,will:math/0.6/Fenced,will:math/0.6/Fraction,will:math/0.6/RootExpression,will:math/0.6/Indexed",
"minCardinality": 0,
"maxCardinality": 1,
"isFinal": false,
"inverseOf": "hasParent",
"@desc": "Superscript expression / term."
},
"subScript": {
"dataType": "will:math/0.6/Term,will:math/0.6/CompoundTerm,will:math/0.6/Expression,will:math/0.6/Fenced,will:math/0.6/Fraction,will:math/0.6/RootExpression,will:math/0.6/Indexed",
"minCardinality": 0,
"maxCardinality": 1,
"isFinal": false,
"inverseOf": "hasParent",
"@desc": "Subscript expression / term."
},
"overScript": {
"dataType": "will:math/0.6/Term,will:math/0.6/CompoundTerm,will:math/0.6/Expression,will:math/0.6/Fenced,will:math/0.6/Fraction,will:math/0.6/RootExpression,will:math/0.6/Indexed",
"minCardinality": 0,
"maxCardinality": 1,
"isFinal": false,
"inverseOf": "hasParent",
"@desc": "Overscript expression / term."
},
"underScript": {
"dataType": "will:math/0.6/Term,will:math/0.6/CompoundTerm,will:math/0.6/Expression,will:math/0.6/Fenced,will:math/0.6/Fraction,will:math/0.6/RootExpression,will:math/0.6/Indexed",
"minCardinality": 0,
"maxCardinality": 1,
"isFinal": false,
"inverseOf": "hasParent",
"@desc": "Underscript expression / term."
},
"preSuperScript": {
"dataType": "will:math/0.6/Term,will:math/0.6/CompoundTerm,will:math/0.6/Expression,will:math/0.6/Fenced,will:math/0.6/Fraction,will:math/0.6/RootExpression,will:math/0.6/Indexed",
"minCardinality": 0,
"maxCardinality": 1,
"isFinal": false,
"inverseOf": "hasParent",
"@desc": "Pre-superscript expression / term."
},
"preSubScript": {
"dataType": "will:math/0.6/Term,will:math/0.6/CompoundTerm,will:math/0.6/Expression,will:math/0.6/Fenced,will:math/0.6/Fraction,will:math/0.6/RootExpression,will:math/0.6/Indexed",
"minCardinality": 0,
"maxCardinality": 1,
"isFinal": false,
"inverseOf": "hasParent",
"@desc": "Pre-subscript expression / term."
},
"hasChild": {
"dataType": "",
"minCardinality": 0,
"maxCardinality": 0,
"isFinal": false
}
},
"isAbstract": false,
"isFinal": false,
"@desc": "Generic expression for all indexed terms. There is no mathematical interpretation of the indexed term, thus summations or integrals would be expressed as symbols with an over- and underscript."
}
}
}
}