Introduction Work on units and scales in data models and in XML has been going on for years without reaching a conclusion, so if we are going to do something which sticks we have to be very formal. Units and scales are mathematical things, so MathML is a good starting point. Unit quantities Metre (a "quantity" - VIM term 1,1) is a unit within length (a "quantities of the same kind" - VIM term 1.2). So is Kilometre. Expressing this in RDF-XML, we have: or in RDF-N3: unit:Metre a vim:Quantity ; a iso31:Length . unit:Kilometre a vim:Quantity ; a iso31:Length . vim:Quantity a owl:Class . iso31:Length a owl:Class ; a vim:Quantities_of_the_same_kind . vim:Quantities_of_the_same_kind rdfs:subClassOf owl:Class . NOTE 1 The statements shown in red are inconvenent, and may be ignored or kept in a separate ontology. We can say: kilometre = 1000 · metre where · is a binary operator such that (real, length) ? length. This is easily expressed in MathML, as follows: kilometre 1000 metre NOTE 2 MathML is imprecise about the times operator (· in the previous expression), but then so are most people most of the time. The MathML symbols can be identified by URIs as follows: 1000 In this MathML, the number 1000 is a literal, but we could name the number "kilo", and reference it as . So do we embed the MathML definition in the OWL as follows: or do we invent an RDF version of MathML? Units and scales A metre is a length. There is also a metre-scale which enables any length to be represented by a real number. Hence we have: metre-scale: length ? real which is defined such that: l = metre-scale(l) · metre for each length l. Many measurements rely upon scales which are not derived simply from units. The International Temperature Scale of 1990 is not defined with respect to a unit. A metre-scale is particularly convenient for representation. EXAMPLE MyShip has a waterline length of 12 metres. This can be recorded using a scale in RDF-XML as: 12 or in RDF-N3 as: :MyShip nautical:waterlineLength [ scale:metre 12 ] . To record the relationship between the metre and metre-scale formally requires lambda calculus. We say: ? (l, (l / metre)) = metre-scale where "/" is the inverse of the · operator defined above. This can be expressed in MathML as follows: l l It is also possible to specify that the domain of metre-scale is length and that the range (or co-domain) is the reals in MatML as follows: The MathML can be embedded in the OWL definition of metre-scale as follows: l l NOTE 1 There is no need to embed the MathML specification of the domain, because this can be directly specified by RDF. The MathML range (or co-domain) is reals. This is more correct, because the reals are not literals. If we wanted to be pedantic, we would have: so that the instantiation of the simple example above becomes: 12 or in RDF-N3: :MyShip nautical:waterlineLength [ scale:metre [ maths:decimal 12 ] ] . Do we want to compel people to be this pedantic? Do we want to give people the option to be this pedantic?