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.:
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> · <!-- 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.
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
Classes
Term
Term
is an abstract class covering atomic parts of a math formula.
Name | Value |
---|---|
Class | will:math/0.6/Term [abstract] |
Defined In | will:math/0.6 |
Specializes | will:seg/0.3/MathItem |
Specialized By | will:math/0.6/Symbol,will:math/0.6/Number |
Properties
Property | Attribute | Value |
---|---|---|
hasChild | Data Type(s) | will:uim/1.1/StrokeNode |
Association Type | composition | |
Cardinality | [0, 1] overridden to [0, inf] (optional) | |
hasOperandLabel | Data Type(s) | @string |
Description | Reserved for debug purposes. | |
Association Type | composition | |
Cardinality | [0, 1] (optional) | |
hasOperandType | Data Type(s) | @string |
Description | Reserved for debug purposes. | |
Association Type | composition | |
Cardinality | [0, 1] (optional) | |
hasParent | Data Type(s) | |
Association Type | aggregation | |
Cardinality | [1, 1] overridden to [0, 1] (mandatory) | |
isStructuralItem | Data Type(s) | @bool |
Description | Reserved for debug purposes. | |
Association Type | composition | |
Cardinality | [0, 1] (optional) |
Symbol
A Symbol
can include variables, function names, and symbolic constants.
Name | Value |
---|---|
Class | will:math/0.6/Symbol |
Defined In | will:math/0.6 |
Specializes | will:math/0.6/Term |
Properties
Property | Attribute | Value |
---|---|---|
hasChild | Data Type(s) | will:uim/1.1/StrokeNode |
Association Type | composition | |
Cardinality | [0, 1] overridden to [0, inf] (optional) | |
hasOperandLabel | Data Type(s) | @string |
Description | Reserved for debug purposes. | |
Association Type | composition | |
Cardinality | [0, 1] (optional) | |
hasOperandType | Data Type(s) | @string |
Description | Reserved for debug purposes. | |
Association Type | composition | |
Cardinality | [0, 1] (optional) | |
hasParent | Data Type(s) | |
Association Type | aggregation | |
Cardinality | [1, 1] overridden to [0, 1] (mandatory) | |
isStructuralItem | Data Type(s) | @bool |
Description | Reserved for debug purposes. | |
Association Type | composition | |
Cardinality | [0, 1] (optional) | |
representation | Data Type(s) | @string |
Description | Contains the representation of the symbol. | |
Association Type | composition | |
Cardinality | [0, 1] (optional) | |
symbolType | Data Type(s) | @string |
Description | Defines the type of the symbol. | |
Association Type | composition | |
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.
Name | Value |
---|---|
Class | will:math/0.6/Number |
Defined In | will:math/0.6 |
Specializes | will:math/0.6/Term |
Properties
Property | Attribute | Value |
---|---|---|
hasChild | Data Type(s) | will:uim/1.1/StrokeNode |
Association Type | composition | |
Cardinality | [0, 1] overridden to [0, inf] (optional) | |
hasOperandLabel | Data Type(s) | @string |
Description | Reserved for debug purposes. | |
Association Type | composition | |
Cardinality | [0, 1] (optional) | |
hasOperandType | Data Type(s) | @string |
Description | Reserved for debug purposes. | |
Association Type | composition | |
Cardinality | [0, 1] (optional) | |
hasParent | Data Type(s) | |
Association Type | aggregation | |
Cardinality | [1, 1] overridden to [0, 1] (mandatory) | |
isStructuralItem | Data Type(s) | @bool |
Description | Reserved for debug purposes. | |
Association Type | composition | |
Cardinality | [0, 1] (optional) | |
numberType | Data Type(s) | @string |
Description | Defines the type of the number. | |
Association Type | composition | |
Cardinality | [0, 1] (optional) | |
representation | Data Type(s) | @float64 |
Description | Contains the numerical representation of the number. A symbolic representation such as Π, is using Symbol. | |
Association Type | composition | |
Cardinality | [0, 1] (optional) |
CompoundTerm
Describes entities that are considered atomic and cannot be split further. E.g. 2ab, sin a, f(x), etc.
Name | Value |
---|---|
Class | will:math/0.6/CompoundTerm |
Defined In | will:math/0.6 |
Specializes | will:seg/0.3/MathItemGroup |
Properties
Property | Attribute | Value |
---|---|---|
body | Data 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 Type | aggregation | |
Cardinality | [1, inf] (mandatory) | |
Inverse Of | hasParent | |
hasChild | Data Type(s) | |
Association Type | composition | |
Cardinality | [0, 0] overridden to [0, inf] (optional) | |
hasOperandLabel | Data Type(s) | @string |
Description | Reserved for debug purposes. | |
Association Type | composition | |
Cardinality | [0, 1] (optional) | |
hasOperandType | Data Type(s) | @string |
Description | Reserved for debug purposes. | |
Association Type | composition | |
Cardinality | [0, 1] (optional) | |
hasParent | Data Type(s) | |
Association Type | aggregation | |
Cardinality | [1, 1] overridden to [0, 1] (mandatory) | |
isStructuralItem | Data Type(s) | @bool |
Description | Reserved for debug purposes. | |
Association Type | composition | |
Cardinality | [0, 1] (optional) |
Operator
Describes the operator symbol.
Name | Value |
---|---|
Class | will:math/0.6/Operator [final] |
Defined In | will:math/0.6 |
Specializes | will:seg/0.3/MathItem |
Properties
Property | Attribute | Value |
---|---|---|
hasChild | Data Type(s) | will:uim/1.1/StrokeNode |
Association Type | composition | |
Cardinality | [0, 1] overridden to [0, inf] (optional) | |
hasOperandLabel | Data Type(s) | @string |
Description | Reserved for debug purposes. | |
Association Type | composition | |
Cardinality | [0, 1] (optional) | |
hasOperandType | Data Type(s) | @string |
Description | Reserved for debug purposes. | |
Association Type | composition | |
Cardinality | [0, 1] (optional) | |
hasParent | Data Type(s) | |
Association Type | aggregation | |
Cardinality | [1, 1] overridden to [0, 1] (mandatory) | |
isStructuralItem | Data Type(s) | @bool |
Description | Reserved for debug purposes. | |
Association Type | composition | |
Cardinality | [0, 1] (optional) | |
representation | Data Type(s) | @string |
Description | Contains the symbol for the operator. | |
Association Type | aggregation | |
Cardinality | [1, 1] (mandatory) |
Relation
Describes the relation symbol.
Name | Value |
---|---|
Class | will:math/0.6/Relation [final] |
Defined In | will:math/0.6 |
Specializes | will:seg/0.3/MathItem |
Properties
Property | Attribute | Value |
---|---|---|
hasChild | Data Type(s) | will:uim/1.1/StrokeNode |
Association Type | composition | |
Cardinality | [0, 1] overridden to [0, inf] (optional) | |
hasOperandLabel | Data Type(s) | @string |
Description | Reserved for debug purposes. | |
Association Type | composition | |
Cardinality | [0, 1] (optional) | |
hasOperandType | Data Type(s) | @string |
Description | Reserved for debug purposes. | |
Association Type | composition | |
Cardinality | [0, 1] (optional) | |
hasParent | Data Type(s) | |
Association Type | aggregation | |
Cardinality | [1, 1] overridden to [0, 1] (mandatory) | |
isStructuralItem | Data Type(s) | @bool |
Description | Reserved for debug purposes. | |
Association Type | composition | |
Cardinality | [0, 1] (optional) | |
representation | Data Type(s) | @string |
Description | Contains the symbol for the relation. | |
Association Type | aggregation | |
Cardinality | [1, 1] (mandatory) |
FractionLine
Links the strokes that are associated with the fraction line using the hasChild
property.
Name | Value |
---|---|
Class | will:math/0.6/FractionLine [final] |
Defined In | will:math/0.6 |
Specializes | will:seg/0.3/MathItem |
Properties
Property | Attribute | Value |
---|---|---|
hasChild | Data Type(s) | will:uim/1.1/StrokeNode |
Association Type | composition | |
Cardinality | [0, 1] overridden to [0, inf] (optional) | |
hasOperandLabel | Data Type(s) | @string |
Description | Reserved for debug purposes. | |
Association Type | composition | |
Cardinality | [0, 1] (optional) | |
hasOperandType | Data Type(s) | @string |
Description | Reserved for debug purposes. | |
Association Type | composition | |
Cardinality | [0, 1] (optional) | |
hasParent | Data Type(s) | |
Association Type | aggregation | |
Cardinality | [1, 1] overridden to [0, 1] (mandatory) | |
isStructuralItem | Data Type(s) | @bool |
Description | Reserved for debug purposes. | |
Association Type | composition | |
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.
Name | Value |
---|---|
Class | will:math/0.6/Expression |
Defined In | will:math/0.6 |
Specializes | will:seg/0.3/MathItemGroup |
Properties
Property | Attribute | Value |
---|---|---|
hasChild | Data Type(s) | |
Association Type | composition | |
Cardinality | [0, 0] overridden to [0, inf] (optional) | |
hasOperandLabel | Data Type(s) | @string |
Description | Reserved for debug purposes. | |
Association Type | composition | |
Cardinality | [0, 1] (optional) | |
hasOperandType | Data Type(s) | @string |
Description | Reserved for debug purposes. | |
Association Type | composition | |
Cardinality | [0, 1] (optional) | |
hasParent | Data Type(s) | |
Association Type | aggregation | |
Cardinality | [1, 1] overridden to [0, 1] (mandatory) | |
isStructuralItem | Data Type(s) | @bool |
Description | Reserved for debug purposes. | |
Association Type | composition | |
Cardinality | [0, 1] (optional) | |
items | Data 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 |
Description | If the operator is set with an Operator or a Relation , the items must be considered as operands. | |
Association Type | aggregation | |
Cardinality | [1, inf] (mandatory) (ordered) | |
Inverse Of | hasParent | |
operator | Data Type(s) | will:math/0.6/Operator,will:math/0.6/Relation |
Description | Operations and Relations need at least one Operator or a Relation , items includes the operands. | |
Association Type | aggregation | |
Cardinality | [1, inf] (mandatory) (ordered) | |
Inverse Of | hasParent |
Fenced
A fenced term is a term that will always have opening and closing parentheses, e.g, ((x + 1) * 2).
Name | Value |
---|---|
Class | will:math/0.6/Fenced |
Defined In | will:math/0.6 |
Specializes | will:seg/0.3/MathItemGroup |
Properties
Property | Attribute | Value |
---|---|---|
body | Data 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 Type | aggregation | |
Cardinality | [1, inf] (mandatory) | |
Inverse Of | hasParent | |
closingBracket | Data Type(s) | will:math/0.6/Symbol |
Description | Symbol used for closing bracket, e.g., ) , ] , or } . | |
Association Type | aggregation | |
Cardinality | [1, 1] (mandatory) | |
Inverse Of | hasParent | |
hasChild | Data Type(s) | |
Association Type | composition | |
Cardinality | [0, 0] overridden to [0, inf] (optional) | |
hasOperandLabel | Data Type(s) | @string |
Description | Reserved for debug purposes. | |
Association Type | composition | |
Cardinality | [0, 1] (optional) | |
hasOperandType | Data Type(s) | @string |
Description | Reserved for debug purposes. | |
Association Type | composition | |
Cardinality | [0, 1] (optional) | |
hasParent | Data Type(s) | |
Association Type | aggregation | |
Cardinality | [1, 1] overridden to [0, 1] (mandatory) | |
isStructuralItem | Data Type(s) | @bool |
Description | Reserved for debug purposes. | |
Association Type | composition | |
Cardinality | [0, 1] (optional) | |
openingBracket | Data Type(s) | will:math/0.6/Symbol |
Description | Symbol used for opening bracket, e.g., ( , [ , or { . | |
Association Type | aggregation | |
Cardinality | [1, 1] (mandatory) | |
Inverse Of | hasParent |
System
A system of equations is grouping several lines via equation
.
Name | Value |
---|---|
Class | will:math/0.6/System |
Defined In | will:math/0.6 |
Specializes | will:seg/0.3/MathItemGroup |
Specialized By | will:math/0.6/Cases |
Properties
Property | Attribute | Value |
---|---|---|
equation | Data 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 Type | aggregation | |
Cardinality | [1, inf] (mandatory) (ordered) | |
Inverse Of | hasParent | |
hasChild | Data Type(s) | |
Association Type | composition | |
Cardinality | [0, 0] overridden to [0, inf] (optional) | |
hasOperandLabel | Data Type(s) | @string |
Description | Reserved for debug purposes. | |
Association Type | composition | |
Cardinality | [0, 1] (optional) | |
hasOperandType | Data Type(s) | @string |
Description | Reserved for debug purposes. | |
Association Type | composition | |
Cardinality | [0, 1] (optional) | |
hasParent | Data Type(s) | |
Association Type | aggregation | |
Cardinality | [1, 1] overridden to [0, 1] (mandatory) | |
isStructuralItem | Data Type(s) | @bool |
Description | Reserved for debug purposes. | |
Association Type | composition | |
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.
Name | Value |
---|---|
Class | will:math/0.6/Cases |
Defined In | will:math/0.6 |
Specializes | will:math/0.6/System |
Properties
Property | Attribute | Value |
---|---|---|
bracket | Data Type(s) | will:math/0.6/Symbol |
Association Type | aggregation | |
Cardinality | [1, 1] (mandatory) | |
Inverse Of | hasParent | |
equation | Data 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 Type | aggregation | |
Cardinality | [1, inf] (mandatory) (ordered) | |
Inverse Of | hasParent | |
hasChild | Data Type(s) | |
Association Type | composition | |
Cardinality | [0, 0] overridden to [0, inf] (optional) | |
hasOperandLabel | Data Type(s) | @string |
Description | Reserved for debug purposes. | |
Association Type | composition | |
Cardinality | [0, 1] (optional) | |
hasOperandType | Data Type(s) | @string |
Description | Reserved for debug purposes. | |
Association Type | composition | |
Cardinality | [0, 1] (optional) | |
hasParent | Data Type(s) | |
Association Type | aggregation | |
Cardinality | [1, 1] overridden to [0, 1] (mandatory) | |
isStructuralItem | Data Type(s) | @bool |
Description | Reserved for debug purposes. | |
Association Type | composition | |
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.
Name | Value |
---|---|
Class | will:math/0.6/RootExpression |
Defined In | will:math/0.6 |
Specializes | will:seg/0.3/MathItemGroup |
Properties
Property | Attribute | Value |
---|---|---|
body | Data 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 Type | aggregation | |
Cardinality | [1, 1] (mandatory) | |
Inverse Of | hasParent | |
degree | Data Type(s) | will:math/0.6/Symbol,will:math/0.6/Number |
Description | Describes the degree of the root expression. | |
Association Type | composition | |
Cardinality | [0, 1] (optional) | |
Inverse Of | hasParent | |
hasChild | Data Type(s) | |
Association Type | composition | |
Cardinality | [0, 0] overridden to [0, inf] (optional) | |
hasOperandLabel | Data Type(s) | @string |
Description | Reserved for debug purposes. | |
Association Type | composition | |
Cardinality | [0, 1] (optional) | |
hasOperandType | Data Type(s) | @string |
Description | Reserved for debug purposes. | |
Association Type | composition | |
Cardinality | [0, 1] (optional) | |
hasParent | Data Type(s) | |
Association Type | aggregation | |
Cardinality | [1, 1] overridden to [0, 1] (mandatory) | |
isStructuralItem | Data Type(s) | @bool |
Description | Reserved for debug purposes. | |
Association Type | composition | |
Cardinality | [0, 1] (optional) | |
rootSign | Data Type(s) | will:math/0.6/Symbol |
Association Type | aggregation | |
Cardinality | [1, 1] (mandatory) | |
Inverse Of | hasParent |
Fraction
Fraction expression with numerator and denominator.
Name | Value |
---|---|
Class | will:math/0.6/Fraction |
Defined In | will:math/0.6 |
Specializes | will:seg/0.3/MathItemGroup |
Properties
Property | Attribute | Value |
---|---|---|
denominator | Data 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 |
Description | Denominator part of the fraction (optional for partial fraction). | |
Association Type | composition | |
Cardinality | [0, 1] (optional) | |
Inverse Of | hasParent | |
fractionLine | Data Type(s) | will:math/0.6/FractionLine |
Description | Stroke(s) annotating the fraction line. | |
Association Type | aggregation | |
Cardinality | [1, inf] (mandatory) | |
Inverse Of | hasParent | |
fractionType | Data Type(s) | @string |
Description | Describes the type of fraction. | |
Association Type | composition | |
Cardinality | [0, 1] (optional) | |
hasChild | Data Type(s) | |
Association Type | composition | |
Cardinality | [0, 0] overridden to [0, inf] (optional) | |
hasOperandLabel | Data Type(s) | @string |
Description | Reserved for debug purposes. | |
Association Type | composition | |
Cardinality | [0, 1] (optional) | |
hasOperandType | Data Type(s) | @string |
Description | Reserved for debug purposes. | |
Association Type | composition | |
Cardinality | [0, 1] (optional) | |
hasParent | Data Type(s) | |
Association Type | aggregation | |
Cardinality | [1, 1] overridden to [0, 1] (mandatory) | |
isStructuralItem | Data Type(s) | @bool |
Description | Reserved for debug purposes. | |
Association Type | composition | |
Cardinality | [0, 1] (optional) | |
numerator | Data 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 |
Description | Numerator part of the fraction. (optional for partial fraction) | |
Association Type | composition | |
Cardinality | [0, 1] (optional) | |
Inverse Of | hasParent |
Row
Row of a matrix structure.
Name | Value |
---|---|
Class | will:math/0.6/Row |
Defined In | will:math/0.6 |
Specializes | will:seg/0.3/MathItemGroup |
Properties
Property | Attribute | Value |
---|---|---|
hasCell | Data 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 |
Description | Represents the content a cell within a matrix. | |
Association Type | aggregation | |
Cardinality | [1, inf] (mandatory) (ordered) | |
hasChild | Data Type(s) | |
Association Type | composition | |
Cardinality | [0, 0] overridden to [0, inf] (optional) | |
hasOperandLabel | Data Type(s) | @string |
Description | Reserved for debug purposes. | |
Association Type | composition | |
Cardinality | [0, 1] (optional) | |
hasOperandType | Data Type(s) | @string |
Description | Reserved for debug purposes. | |
Association Type | composition | |
Cardinality | [0, 1] (optional) | |
hasParent | Data Type(s) | |
Association Type | aggregation | |
Cardinality | [1, 1] overridden to [0, 1] (mandatory) | |
isStructuralItem | Data Type(s) | @bool |
Description | Reserved for debug purposes. | |
Association Type | composition | |
Cardinality | [0, 1] (optional) |
Matrix
Matrix expression, which consists of multiple rows.
Name | Value |
---|---|
Class | will:math/0.6/Matrix |
Defined In | will:math/0.6 |
Specializes | will:seg/0.3/MathItemGroup |
Properties
Property | Attribute | Value |
---|---|---|
closingBracket | Data Type(s) | will:math/0.6/Symbol |
Description | Symbol used for closing bracket, e.g., ) , or ] . | |
Association Type | aggregation | |
Cardinality | [1, 1] (mandatory) | |
hasChild | Data Type(s) | |
Association Type | composition | |
Cardinality | [0, 0] overridden to [0, inf] (optional) | |
hasOperandLabel | Data Type(s) | @string |
Description | Reserved for debug purposes. | |
Association Type | composition | |
Cardinality | [0, 1] (optional) | |
hasOperandType | Data Type(s) | @string |
Description | Reserved for debug purposes. | |
Association Type | composition | |
Cardinality | [0, 1] (optional) | |
hasParent | Data Type(s) | |
Association Type | aggregation | |
Cardinality | [1, 1] overridden to [0, 1] (mandatory) | |
hasRow | Data Type(s) | will:math/0.6/Row |
Description | Rows of the matrix. | |
Association Type | aggregation | |
Cardinality | [1, inf] (mandatory) (ordered) | |
isStructuralItem | Data Type(s) | @bool |
Description | Reserved for debug purposes. | |
Association Type | composition | |
Cardinality | [0, 1] (optional) | |
openingBracket | Data Type(s) | will:math/0.6/Symbol |
Description | Symbol used for opening bracket, e.g., ( or [ . | |
Association Type | aggregation | |
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.
Name | Value |
---|---|
Class | will:math/0.6/Indexed |
Defined In | will:math/0.6 |
Specializes | will:seg/0.3/MathItemGroup |
Properties
Property | Attribute | Value |
---|---|---|
body | Data Type(s) | will:math/0.6/Term,will:math/0.6/CompoundTerm,will:math/0.6/Fenced |
Description | Base expression. | |
Association Type | aggregation | |
Cardinality | [1, 1] (mandatory) | |
Inverse Of | hasParent | |
hasChild | Data Type(s) | |
Association Type | composition | |
Cardinality | [0, 0] overridden to [0, inf] (optional) | |
hasOperandLabel | Data Type(s) | @string |
Description | Reserved for debug purposes. | |
Association Type | composition | |
Cardinality | [0, 1] (optional) | |
hasOperandType | Data Type(s) | @string |
Description | Reserved for debug purposes. | |
Association Type | composition | |
Cardinality | [0, 1] (optional) | |
hasParent | Data Type(s) | |
Association Type | aggregation | |
Cardinality | [1, 1] overridden to [0, 1] (mandatory) | |
isStructuralItem | Data Type(s) | @bool |
Description | Reserved for debug purposes. | |
Association Type | composition | |
Cardinality | [0, 1] (optional) | |
overScript | Data 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 |
Description | Overscript expression / term. | |
Association Type | composition | |
Cardinality | [0, 1] (optional) | |
Inverse Of | hasParent | |
preSubScript | Data 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 |
Description | Pre-subscript expression / term. | |
Association Type | composition | |
Cardinality | [0, 1] (optional) | |
Inverse Of | hasParent | |
preSuperScript | Data 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 |
Description | Pre-superscript expression / term. | |
Association Type | composition | |
Cardinality | [0, 1] (optional) | |
Inverse Of | hasParent | |
subScript | Data 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 |
Description | Subscript expression / term. | |
Association Type | composition | |
Cardinality | [0, 1] (optional) | |
Inverse Of | hasParent | |
superScript | Data 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 |
Description | Superscript expression / term. | |
Association Type | composition | |
Cardinality | [0, 1] (optional) | |
Inverse Of | hasParent | |
underScript | Data 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 |
Description | Underscript expression / term. | |
Association Type | composition | |
Cardinality | [0, 1] (optional) | |
Inverse Of | hasParent |
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."
}
}
}
}