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 a 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 UNKNOWN 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 may result in an error. Unknown = (UNKNOWN Object … ). The list may only contain the symbol UNKNOWN, or, in addition, an unlimited amount of other objects. **xyz:NOT-FOUND** Any symbol with the pattern **xyz:NOT-FOUND**, where xyz is any string, signals an internal error. *SPLICE-NODES* A list with *SPLICE-NODES* as its first element may occur during internal processing. It signals that some processing routine intends to return more than one object instead of just one BlockElement or one InlineElement. The elements of such a list should be spliced into the parent list. NIL (or ()) Analogous to a splice node, which signal that more than one values is about to be returned, a NIL value (denoted as ()) signals that no object should be returned. Therefore, a BlockElement or an InlineElement may be NIL.