\ontology#math{ %{ Top level math commands -- block math (equivalent to LaTeX AMS "array") and inline math. }% \struct#math[root=true] \syntax \open{\\\[} \close{\\\]} \field \childRef[ref=equation] \struct#inlineMath \syntax \open{\\(} \close{\\)} \field \childRef[ref=primitive] %{ Commands for block math -- these are used to define equations, seperable by the "&" field separator. }% \struct#equation[transparent=true, cardinality={>0}] \syntax \close{\\\\} \field \childRef[ref=field] \struct#field[transparent=true] \syntax \close{&} \field \childRef[ref=primitive] %{ All classes derived from "primitive" can be used inside all equations }% \struct#primitive %{ Variables and functions }% \struct#def[isa=primitive] \field#representation[subtree=true, optional=true] \childRef[ref=primitive] % this should rather be a field incorporating text elements \primitive#shortDescription[subtree=true, type=string, optional=true] \primitive#description[type=string, optional=true] \struct#var[isa=primitive] \syntax \short[greedy=false]{$} \primitive#ref[type=@def] \struct#fun[isa=primitive] \primitive#name[subtree=true,type=string,optional=false] \field#arguments[subtree=true,optional=true] \childRef[ref=primitive] %{ Basic mathematical commands, sum, product, fraction, square root }% \struct#mathop[isa=primitive] \field \childRef[ref=limits] \struct#sum[isa=mathop] \struct#prod[isa=mathop] \struct#int[isa=mathop] \struct#iint[isa=mathop] \struct#lim[isa=primitive] \field \childRef[ref=lowerLimit] \struct#frac[isa=primitive] \field#denominator[subtree=true,optional=false] \childRef[ref=primitive] \field#nominator[subtree=true,optional=false] \childRef[ref=primitive] \struct#sqrt[isa=primitive] \attributes \attribute#base[type=int,default=2] \field \childRef[ref=primitive] \struct#root[isa=primitive] \field#base[subtree=true,optional=true] \childRef[ref=primitive] \field \childRef[ref=primitive] % TODO: Differentiate between lower and upper index vs. power operator? \struct#power[isa=primitive] \syntax \short[greedy=false]{^} \field \childRef[ref=primitive] \struct#index[isa=primitive] \syntax \short[greedy=false]{_} \field \childRef[ref=primitive] %{ Separators }% \struct#comma[isa=primitive] \syntax \short{,} \struct#colon[isa=primitive] \syntax \short{:} \struct#semicolon[isa=primitive] \syntax \short{;} %{ Operators and Relations }% \struct#plus[isa=primitive] \syntax \short{+} \struct#minus[isa=primitive] \syntax \short{-} \struct#multiplication[isa=primitive] \syntax \short{*} \struct#division[isa=primitive] \syntax \short{/} \struct#equals[isa=primitive] \syntax \short{=} \struct#equiv[isa=primitive] \syntax \short{==} \struct#smaller[isa=primitive] \syntax \short{<} \struct#larger[isa=primitive] \syntax \short{>} \struct#smallerEq[isa=primitive] \syntax \short{<=} \struct#largerEq[isa=primitive] \syntax \short{>=} \struct#times[isa=primitive] \struct#circ[isa=primitive] \struct#cdot[isa=primitive] \struct#bullet[isa=primitive] \struct#cup[isa=primitive] \struct#cap[isa=primitive] \struct#subset[isa=primitive] \struct#subseteq[isa=primitive] \struct#sqcup[isa=primitive] \struct#sqcap[isa=primitive] \struct#sim[isa=primitive] \struct#vee[isa=primitive] \struct#wedge[isa=primitive] \struct#pm[isa=primitive] \struct#mp[isa=primitive] \struct#infty[isa=primitive] %{ Arrows }% \struct#arrow[isa=primitive] \struct#to[isa=arrow] \syntax \short{->} \struct#mapsto[isa=arrow] \syntax \short{|->} \struct#leftarrow[isa=arrow] \syntax \short{<--} \struct#Leftarrow[isa=arrow] \syntax \short{<==} \struct#rightarrow[isa=arrow] \syntax \short{-->} \struct#Leftrightarrow[isa=arrow] \syntax \short{<=>} \struct#leftrightarrow[isa=arrow] \syntax \short{<->} \struct#uparrow[isa=arrow] \struct#Uparrow[isa=arrow] \struct#downarrow[isa=arrow] \struct#Downarrow[isa=arrow] \struct#updownarrow[isa=arrow] \struct#Updownarrow[isa=arrow] \struct#longleftarrow[isa=arrow] \syntax \short{<---} \struct#Longleftarrow[isa=arrow] \syntax \short{<===} \struct#longrightarrow[isa=arrow] \syntax \short{--->} \struct#Longrightarrow[isa=arrow] \syntax \short{===>} \struct#longleftrightarrow[isa=arrow] \syntax \short{<-->} \struct#Longleftrightarrow[isa=arrow] \syntax \short{<==>} \struct#number[isa=primitive,transparent=true] \primitive[type=int] \struct#text[isa=primitive,transparent=true] \primitive[type=string] \struct#limits[transparent=true] \field \childRef[ref=lowerLimit] \childRef[ref=upperLimit] \struct#lowerLimit[cardinality={0,1}] \syntax \short[greedy=false]{_} \field \childRef[ref=primitive] \struct#upperLimit[cardinality={0,1}] \syntax \short[greedy=false]{^} \field \childRef[ref=primitive] }