33==================================
44 Zarr core protocol (version 3.0)
55==================================
6- ---------------------------------
7- Editor's draft 18 September 2020
8- ---------------------------------
6+ -----------------------------
7+ Editor's draft 16 October 2020
8+ -----------------------------
99
1010Specification URI:
1111 https://purl.org/zarr/spec/protocol/core/3.0
@@ -16,7 +16,7 @@ Issue tracking:
1616Suggest an edit for this spec:
1717 `GitHub editor <https://github.com/zarr-developers/zarr-specs/blob/core-protocol-v3.0-dev/docs/protocol/core/v3.0.rst >`_
1818
19- Copyright 2019, 2020 `Zarr core development
19+ Copyright 2019-Present `Zarr core development
2020team <https://github.com/orgs/zarr-developers/teams/core-devs> `_ (@@TODO
2121list institutions?). This work is licensed under a `Creative Commons
2222Attribution 3.0 Unported
@@ -319,12 +319,16 @@ node names:
319319
320320* must be at most 255 characters long
321321
322- Note that node names are used to form storage keys, and that some
323- storage systems will perform a case-insensitive comparison of storage
324- keys during retrieval. Therefore, within a hierarchy, all nodes within
325- a set of sibling nodes must have a name that is unique under
326- case-insensitive comparison. E.g., the names "foo" and "FOO" are not
327- allowed for sibling nodes.
322+ Node names are case sensitive, e.g., the names "foo" and "FOO" are **not **
323+ identical.
324+
325+ .. note:
326+ The Zarr core development team recognises that restricting the set
327+ of allowed characters creates an impediment and bias against users
328+ of different languages. We are actively discussing whether the full
329+ Unicode character set could be allowed and what technical issues
330+ this would entail. If you have experience or views please comment on
331+ `issue #56 <https://github.com/zarr-developers/zarr-specs/issues/56>`_.
328332
329333
330334 Data types
@@ -1055,7 +1059,8 @@ string containing only characters in the ranges ``a-z``, ``A-Z``,
10551059``0-9 ``, or in the set ``/.-_ ``, and a `value ` is any sequence of
10561060bytes. It is assumed that the store holds (`key `, `value `) pairs, with
10571061only one such pair for any given `key `. I.e., a store is a mapping
1058- from keys to values.
1062+ from keys to values. It is also assumed that keys are case sensitive,
1063+ i.e., the keys "foo" and "FOO" are different.
10591064
10601065A store can make the following assumption on the structures of the keys it will receive:
10611066
@@ -1194,6 +1199,11 @@ which do not contain the character "/" after the given prefix.
11941199 ``/ ``, ``.json ``, ``.array ``, ``.group ``, they will otherwise be chunks
11951200 data.
11961201
1202+ Note that because keys are case sensitive, it is assumed that the operations
1203+ ``set("foo", a) `` and ``set("FOO", b) `` will result in two separate (key, value)
1204+ pairs being stored. Subsequently ``get("foo") `` will return *a * and ``get("FOO") ``
1205+ will return *b *.
1206+
11971207
11981208Store implementations
11991209---------------------
0 commit comments