In both standards it is possible to represent normal and partial differentiations. But the structures are different. Let us first look at diff. In MathML, it is possible to specify the order of the derivative. In OpenMath, differentiation is always of first order. The trouble here is translating MathML expressions where the order of derivation is higher than one. There is no equivalent representation in OpenMath.
What can be done to overcome this discrepancy is to construct an OpenMath expression differentiated as many times as is specified by the MathML derivation order. For instance, when dealing with a MathML second order derivative, the equivalent OpenMath expression could be a first order derivative of a first order derivative. This will surely generate very verbose OpenMath in cases where the order of derivation is high, but at least will convey the same semantic meaning and surmounts OpenMath's limitation.
The case of partial differentiation is complicated. The representations in both standards are very different. In MathML one specifies all the variables of integration and the order of derivation of each variable. In OpenMath one specifies a list of integers which index the variables of the function. Suppose a function has bound variables x, y and z. If we give as argument the integer list {1,3} then we are differentiating with respect to x and z. The differentiation is of first order for each variable.
Translating partial differentials from OpenMath to MathML is simple, because the information conveyed by the OpenMath expression can be represented without difficulty by MathML syntax. However the other way around is difficult. Given OpenMath's limitation of only allowing first order differentiation for each variable, many MathML expressions which differentiate with respect to various variables and each at a different degree cannot be translated. We recommend that such MathML expressions are discarded by the translator.