TDAT
The Tabular Data (TDAT) Data Interchange Format


Numerical Data
Photo by Mika Baumeister on Unsplash

When data has to be stored and exchanged between computer programs, one has to make a decision about the format of the data. There are binary exchange formats as well as text-based formats. Binary formats are often better suited for machines, but human readability suffers. Therefore, JSON and XML are nowadays the defacto standard for data interchange between computer programs. Both JSON and XML can be created, manipulated and read by humans. Both JSON and XML are well suited for structured data. For tabular data, CSV might be often better suited, as its representation resembles a tabular structure. The drawback of CSV however is that it's poorly specified and documented.

TDAT aims to be a better JSON/XML/CSV for tabular data. It's minimal, well specified, type-safe and can be read and written by humans as well as machines. TDAT is a data interchange format for tabular data. It is derived from CSV (Comma Separated Values). Its main characteristics are:

  • well-specified
  • type-safe
  • machine readable (and writable)
  • human readable (and writable)

A sample looks like this:

            persons
            |id:i   |name:s      |male:b     |birth:t
            |1      |"John Doe"  |true       |1972-05-03T10:11:12.193
            |2      |"Jane Doe"  |false      |1973-04-21T04:12:54.677
            |3      |"Paul Doe"  |true       |2004-01-02T08:04:12.677
            |4      |"Baby Doe"  |           |
        

TDAT is currently three things:

  • A specification
  • An implementation of a parser and a renderer (generator)
  • A tool that can be used to validate TDAT files and to convert TDAT files into various other formats (JSON, CSV)

The TDAT reference implementation is written in Go, so it will run an any system supported by Go. Other languages are not supported (as far as I know), but that might change in the future.

Check it out on github: https://github.com/cvilsmeier/tdat.

2018-01-01