Encoding of Sz manual api manual reference zettelstore zmk 00001012920516 00001012931400 00001012931600 1 (c) 2020-present by Detlef Stern 20230403153903 00001006020000 00001007030000 00001007040000 00001007050000 00001012920516 00001012930000 00001012931200 00001012931400 00001012931600 00001012931800 en EUPL-1.2-or-later 20240123120319 20240123120319 public Zettel in a Sz encoding are represented as a symbolic expression. To process these symbolic expressions, you need to know, how a specific part of a zettel is represented by a symbolic expression. Basically, each part of a zettel is represented as a list, often a nested list. The first element of that list is always an unique symbol, which denotes that part. The meaning / semantic of all other elements depend on that symbol. Zettel A full zettel is represented by a list of two elements. The first elements represents the metadata, the second element represents the zettel content. Zettel = ( Metadata Content ). Metadata Metadata is represented by a list, where the first element is the symbol META. Following elements represent each metadatum Metadatum is used as the singular form of metadata. of a zettel in standard order. Standard order is: Title, Role, Tags, Syntax, all other keys in alphabetic order. Metadata = (META Metadatum … ). Content Zettel content is represented by a block. Content = Block. Block A block is represented by a list with the symbol BLOCK as the first element. All following elements represent a nested block-structured element. Block = (BLOCK BlockElement … ). Inline Both block-structured elements and some metadata values may contain inline-structured elements. Similar, inline-structured elements are represented as follows: Inline = (INLINE InlineElement … ). Attribute Attributes may be specified for both block- and inline- structured elements. Attributes are represented by the following schema. Attribute = ( [ AttributeKeyValue … ] ')'. Either, there are no attributes. These are specified by the empty list (). Or there are attributes. In this case, the first element of the list must be the symbol quote: (quote ( A1 A2 … An )). Other A list with UNKNOWN as its first element signals an internal error during transforming a zettel into the Sz encoding. It may be ignored, or it may produce an error. Unknown = (UNKNOWN Object … ). The list may only contain the symbol UNKNOWN, or additionally an unlimited amount of other objects. Similar, any symbol with the pattern **xyz:NOT-FOUND**, where xyz is any string, signals an internal error.