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 (preferrably - a standardized diagram is already better than a sheet of paper)?
XSD for XML and JSON Schema for JSON are mappings of a data model onto a specific data format. What I was hoping to find is one level higher, providing an abstraction of the data model to be consumed my multiple, different data formats. I don't design the application, I design the data model. If application A consumes a piece of data from a web service, JSON might be a good choice for a data format here. But an application B, which works with the same data, but only over the wire, might prefer to use a binary format. I hope it gets clear what kind of abstraction I want - not to model data for a specific format, but for all formats.