Often enough, the terms *data model* and *data format* are used interchangeably, but here I disagree. Let's start with the simpler one, the *data format*. I don't know exact definitions, but the data format describes the layout of a piece of data, the meaning of the individual bytes. There are many formats available, more general ones being for example JSON and XML. However, one can represent the same piece of data in different formats. Short example - a location.

JSON

    {
        "location": {
            "longitude": 41.25,
            "latitide": -120.9762
        }
    }

And XML

    <location>
        <longitude>41.25</longitude>
        <latitude>-120.9762</latitude>
    </location>

So, the basis for those two is a common *data model*, which states that a location is comprised of two fields, long and lat, and both those fields are floating point values.

Now my question is, how can I formally write down such a data model, preferrably in a common format that is machine readable?