Skip to content

Commit 7f03687

Browse files
authored
Update JData_specification.md
1 parent dc24726 commit 7f03687

1 file changed

Lines changed: 12 additions & 9 deletions

File tree

JData_specification.md

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@ JData: A general-purpose data annotation and interchange format
33

44
- **Copyright**: (C) Qianqian Fang (2011, 2015-2025) <q.fang at neu.edu>
55
- **License**: Apache License, Version 2.0
6-
- **Version**: V1 (Draft-3)
6+
- **Version**: V1 (Draft-4.preview)
77
- **URL**: https://neurojson.org/jdata/draft3
8-
- **Status**: Frozen on March 23, 2025. For future updates, please see the Development URL below
8+
- **Status**: Under development
99
- **Development**: https://github.com/NeuroJSON/jdata
1010
- **Acknowledgment**: This project is supported by US National Institute of Health (NIH)
1111
grant [U24-NS124027 (NeuroJSON)](https://neurojson.org)
@@ -238,16 +238,17 @@ separated by 0 or multiple permitted white spaces, namely
238238
### Binary JData Storage Grammar
239239

240240
The Binary JData (BJData) format used in this specification is based on
241-
[BJData Specification (Draft 3)](https://neurojson.org/bjdata/draft3),
241+
[BJData Specification (Draft 4)](https://neurojson.org/bjdata/),
242242
which is extended from the widely used [UBJSON Specification (Draft 12)](https://ubjson.org),
243243
with the addition of the following features
244244

245-
1. BJData supports 4 new data type markers: `[u]: uint16`, `[m]: uint32`, `[M]: uint64`, `[h]: float16`
246-
2. BJData uses little-Endian (LE) as the default numeric (integers and floating-point numbers) data byte order
245+
1. BJData supports 5 new data type markers: `[u]: uint16`, `[m]: uint32`, `[M]: uint64`, `[h]: float16` and `[B]: byte`
246+
2. BJData allows extension of custom binary data types via the new Extended data type `[E]`
247+
3. BJData uses little-Endian (LE) as the default numeric (integers and floating-point numbers) data byte order
247248
as oppose to the big-Endinan (BE) byte order used by UBJSON
248-
3. BJData uses the respective IEEE 754 binary form to store +/-Infinity and NaN instead
249+
4. BJData uses the respective IEEE 754 binary form to store +/-Infinity and NaN instead
249250
of converting to [Z]
250-
4. optimized array container header was extended to support N-dimensional packed arrays by
251+
5. optimized array container header was extended to support N-dimensional packed arrays by
251252
attaching a 1-D integer array construct following the `#` (count) marker, for example
252253

253254
```
@@ -262,15 +263,17 @@ all non-negative numbers specifying the dimensions of the N-dimensional array.
262263
`nz/ny/nz/ndim` types must be one of the BJData integer types (`i,U,I,u,l,m,L,M`).
263264
The binary data of the N-dimensional array is then serialized in the **row-major** format
264265
(similar to C, C++, Javascript or Python) order, or, in the **column-major** format
265-
as in MATLAB for FORTRAN if using the following BJData Draft-3 syntax
266+
as in MATLAB for FORTRAN if using the following BJData Draft-3 (or newer) syntax
266267

267268
```
268269
[[] [$] [type] [#] [[] [[] [$] [nx type] [#] [ndim type] [ndim] [nx ny nz ...] []] [nx*ny*nz*...*sizeof(type)]
269270
```
271+
6. optimized container for packed object storage via structure-of-array (SOA) introduced
272+
in Draft-4.
270273

271274
As a special note, all BJData/UBJSON integer and floating-point types must be
272275
stored in the **Little-Endian** format, according to
273-
[BJData Specification (Draft )](https://neurojson.org/bjdata/draft3).
276+
[BJData Specification (Draft-4)](https://neurojson.org/bjdata/).
274277

275278

276279
Data Models

0 commit comments

Comments
 (0)