((META (EMPTY-STRING title "Supported Metadata Keys") (WORD role "manual") (TAG-SET tags ("#manual" "#meta" "#reference" "#zettel" "#zettelstore")) (WORD syntax "zmk") (ZID-SET back ("00001006000000" "00001007040324" "00001007701000" "00001012051400" "00001012053200" "00001012054200" "00001012931000" "00001017000000")) (ZID-SET backward ("00001004020000" "00001005090000" "00001006000000" "00001006020100" "00001006020400" "00001006030000" "00001007031140" "00001007040324" "00001007701000" "00001008000000" "00001010070200" "00001012051400" "00001012053200" "00001012054200" "00001012931000" "00001017000000")) (NUMBER box-number "1") (STRING copyright "(c) 2020-present by Detlef Stern ") (TIMESTAMP created "20210126175322") (ZID-SET forward ("00000000000090" "00001004010000" "00001004011200" "00001004011400" "00001004020000" "00001004051400" "00001005090000" "00001006010000" "00001006020100" "00001006020400" "00001006030000" "00001006050000" "00001007031140" "00001007040000" "00001007040310" "00001007700000" "00001008000000" "00001010040100" "00001010040200" "00001010070200" "00001010070300" "00001014000000")) (WORD lang "en") (EMPTY-STRING license "EUPL-1.2-or-later") (TIMESTAMP modified "20241118175033") (TIMESTAMP published "20241118175033") (WORD visibility "public")) (BLOCK (PARA (TEXT "Although you are free to define your own metadata, by using any key (according to the ") (LINK-ZETTEL () "00001006010000" (TEXT "syntax")) (TEXT "), some keys have a special meaning that is enforced by Zettelstore.") (SOFT) (TEXT "See the ") (LINK-ZETTEL () "00000000000090" (TEXT "computed list of supported metadata keys")) (TEXT " for details.")) (PARA (TEXT "Most keys conform to a ") (LINK-ZETTEL () "00001006030000" (TEXT "type")) (TEXT ".")) (DESCRIPTION ((MARK "author" "author" "author" (LITERAL-INPUT () "author"))) (BLOCK (BLOCK (PARA (TEXT "A string value describing the author of a zettel.") (SOFT) (TEXT "If given, it will be shown in the ") (LINK-ZETTEL () "00001014000000" (TEXT "web user interface")) (TEXT " for the zettel.")))) ((MARK "back" "back" "back" (LITERAL-INPUT () "back"))) (BLOCK (BLOCK (PARA (TEXT "Is a property that contains the identifier of all zettel that reference the zettel of this metadata, that are not referenced by this zettel.") (SOFT) (TEXT "Basically, it is the value of ") (LINK-SELF () "#backward" (LITERAL-INPUT () "backward")) (TEXT ", but without any zettel identifier that is contained in ") (LINK-SELF () "#forward" (LITERAL-INPUT () "forward")) (TEXT ".")))) ((MARK "backward" "backward" "backward" (LITERAL-INPUT () "backward"))) (BLOCK (BLOCK (PARA (TEXT "Is a property that contains the identifier of all zettel that reference the zettel of this metadata.") (SOFT) (TEXT "References within invertible values are not included here, e.g. ") (LINK-SELF () "#precursor" (LITERAL-INPUT () "precursor")) (TEXT ".")))) ((MARK "box-number" "box-number" "box-number" (LITERAL-INPUT () "box-number"))) (BLOCK (BLOCK (PARA (TEXT "Is a computed value and contains the number of the box where the zettel was found.") (SOFT) (TEXT "For all but the ") (LINK-ZETTEL () "00001005090000" (TEXT "predefined zettel")) (TEXT ", this number is equal to the number ") (FORMAT-EMPH () (TEXT "X")) (TEXT " specified in startup configuration key ") (LINK-ZETTEL () "00001004010000#box-uri-x" (LITERAL-INPUT () "box-uri-__X__")) (TEXT ".")))) ((MARK "copyright" "copyright" "copyright" (LITERAL-INPUT () "copyright"))) (BLOCK (BLOCK (PARA (TEXT "Defines a copyright string that will be encoded.") (SOFT) (TEXT "If not given, the value ") (LITERAL-INPUT () "default-copyright") (TEXT " from the ") (LINK-ZETTEL () "00001004020000#default-copyright" (TEXT "configuration zettel")) (TEXT " will be used.")))) ((MARK "created" "created" "created" (LITERAL-INPUT () "created"))) (BLOCK (BLOCK (PARA (TEXT "Date and time when a zettel was created through Zettelstore.") (SOFT) (TEXT "If you create a zettel with an editor software outside Zettelstore, you should set it manually to an appropriate value.")) (PARA (TEXT "This is a computed value.") (SOFT) (TEXT "There is no need to set it via Zettelstore.") (SOFT) (SOFT) (TEXT "If it is not stored within a zettel, it will be computed based on the value of the ") (LINK-ZETTEL () "00001006050000" (TEXT "Zettel Identifier")) (TEXT ": if it contains a value >= 19700101000000, it will be coerced to da date/time; otherwise the version time of the running software will be used.")) (PARA (TEXT "Please note that the value von ") (LITERAL-INPUT () "created") (TEXT " will be different (in most cases) to the value of ") (LINK-SELF () "#id" (LITERAL-INPUT () "id")) (TEXT " / the zettel identifier, because it is exact up to the second.") (SOFT) (TEXT "When calculating a zettel identifier, Zettelstore tries to set the second value to zero, if possible.")))) ((MARK "created-missing" "created-missing" "created-missing" (LITERAL-INPUT () "created-missing"))) (BLOCK (BLOCK (PARA (TEXT "If set to ") (FORMAT-QUOTE () (TEXT "true")) (TEXT ", the value of ") (LINK-SELF () "#created" (LITERAL-INPUT () "created")) (TEXT " was not stored within a zettel.") (SOFT) (TEXT "To allow the migration of ") (LINK-ZETTEL () "00001006050000" (TEXT "zettel identifier")) (TEXT " to a new scheme, you should update the value of ") (LITERAL-INPUT () "created") (TEXT " to a reasonable value.") (SOFT) (TEXT "Otherwise you might lose that information in future releases.")) (PARA (TEXT "This key will be removed when the migration to a new zettel identifier format has been completed.")))) ((MARK "credential" "credential" "credential" (LITERAL-INPUT () "credential"))) (BLOCK (BLOCK (PARA (TEXT "Contains the hashed password, as it was emitted by ") (LINK-ZETTEL () "00001004051400" (LITERAL-CODE () "zettelstore password")) (TEXT ".") (SOFT) (TEXT "It is internally created by hashing the password, the ") (LINK-ZETTEL () "00001006050000" (TEXT "zettel identifier")) (TEXT ", and the value of the ") (LITERAL-INPUT () "ident") (TEXT " key.")) (PARA (TEXT "It is only used for zettel with a ") (LITERAL-INPUT () "role") (TEXT " value of ") (FORMAT-QUOTE () (TEXT "user")) (TEXT ".")))) ((MARK "dead" "dead" "dead" (LITERAL-INPUT () "dead"))) (BLOCK (BLOCK (PARA (TEXT "Property that contains all references that does ") (FORMAT-EMPH () (TEXT "not")) (TEXT " identify a zettel.")))) ((MARK "expire" "expire" "expire" (LITERAL-INPUT () "expire"))) (BLOCK (BLOCK (PARA (TEXT "A user-entered time stamp that document the point in time when the zettel should expire.") (SOFT) (TEXT "When a zettel is expires, Zettelstore does nothing.") (SOFT) (TEXT "It is up to you to define required actions.") (SOFT) (LITERAL-INPUT () "expire") (TEXT " is just a documentation.") (SOFT) (TEXT "You could define a query and execute it regularly, for example ") (LINK-QUERY () "expire? ORDER expire" (TEXT "expire? ORDER expire")) (TEXT ".") (SOFT) (TEXT "Alternatively, a Zettelstore client software could define some actions when it detects expired zettel.")))) ((MARK "folge" "folge" "folge" (LITERAL-INPUT () "folge"))) (BLOCK (BLOCK (PARA (TEXT "Is a property that contains identifier of all zettel that reference this zettel through the ") (LINK-SELF () "#precursor" (LITERAL-INPUT () "precursor")) (TEXT " value.")))) ((MARK "folge-role" "folge-role" "folge-role" (LITERAL-INPUT () "folge-role"))) (BLOCK (BLOCK (PARA (TEXT "Specifies a suggested ") (LINK-SELF () "#role" (LITERAL-INPUT () "role")) (TEXT " the zettel should use in the future, if zettel currently has a preliminary role.")))) ((MARK "forward" "forward" "forward" (LITERAL-INPUT () "forward"))) (BLOCK (BLOCK (PARA (TEXT "Property that contains all references that identify another zettel within the content of the zettel.")))) ((MARK "id" "id" "id" (LITERAL-INPUT () "id"))) (BLOCK (BLOCK (PARA (TEXT "Contains the ") (LINK-ZETTEL () "00001006050000" (TEXT "zettel identifier")) (TEXT ", as given by the Zettelstore.") (SOFT) (TEXT "It cannot be set manually, because it is a computed value.")))) ((MARK "lang" "lang" "lang" (LITERAL-INPUT () "lang"))) (BLOCK (BLOCK (PARA (TEXT "Language for the zettel.") (SOFT) (TEXT "Mostly used for HTML rendering of the zettel.")) (PARA (TEXT "If not given, the value ") (LITERAL-INPUT () "lang") (TEXT " from the zettel of the ") (LINK-ZETTEL () "00001010040200" (TEXT "current user")) (TEXT " will be used.") (SOFT) (TEXT "If that value is also not available, it is read from the ") (LINK-ZETTEL () "00001004020000#lang" (TEXT "configuration zettel")) (TEXT " will be used.") (SOFT) (TEXT "Use values according to the language definition of ") (LINK-EXTERNAL () "https://tools.ietf.org/html/rfc5646" (TEXT "RFC-5646")) (TEXT ".")))) ((MARK "license" "license" "license" (LITERAL-INPUT () "license"))) (BLOCK (BLOCK (PARA (TEXT "Defines a license string that will be rendered.") (SOFT) (TEXT "If not given, the value ") (LITERAL-INPUT () "default-license") (TEXT " from the ") (LINK-ZETTEL () "00001004020000#default-license" (TEXT "configuration zettel")) (TEXT " will be used.")))) ((MARK "modified" "modified" "modified" (LITERAL-INPUT () "modified"))) (BLOCK (BLOCK (PARA (TEXT "Date and time when a zettel was modified through Zettelstore.") (SOFT) (TEXT "If you edit a zettel with an editor software outside Zettelstore, you should set it manually to an appropriate value.")) (PARA (TEXT "This is a computed value.") (SOFT) (TEXT "There is no need to set it via Zettelstore.")))) ((MARK "precursor" "precursor" "precursor" (LITERAL-INPUT () "precursor"))) (BLOCK (BLOCK (PARA (TEXT "References zettel for which this zettel is a ") (FORMAT-QUOTE () (TEXT "Folgezettel")) (TEXT " / follow-up zettel.") (SOFT) (TEXT "Basically the inverse of key ") (LINK-SELF () "#folge" (LITERAL-INPUT () "folge")) (TEXT ".")))) ((MARK "predecessor" "predecessor" "predecessor" (LITERAL-INPUT () "predecessor"))) (BLOCK (BLOCK (PARA (TEXT "References the zettel that contains a previous version of the content.") (SOFT) (TEXT "In contrast to ") (LINK-SELF () "#precurso" (LITERAL-INPUT () "precursor")) (TEXT " / ") (LINK-SELF () "#folge" (LITERAL-INPUT () "folge")) (TEXT ", this is a reference because of technical reasons, not because of content-related reasons.") (SOFT) (TEXT "Basically the inverse of key ") (LINK-SELF () "#successors" (LITERAL-INPUT () "successors")) (TEXT ".")))) ((MARK "prequel" "prequel" "prequel" (LITERAL-INPUT () "prequel"))) (BLOCK (BLOCK (PARA (TEXT "Specifies a zettel that is conceptually a prequel zettel.") (SOFT) (TEXT "This is a zettel that occured somehow before the current zettel.")))) ((MARK "published" "published" "published" (LITERAL-INPUT () "published"))) (BLOCK (BLOCK (PARA (TEXT "This property contains the timestamp of the mast modification / creation of the zettel.") (SOFT) (TEXT "If ") (LINK-SELF () "#modified" (LITERAL-INPUT () "modified")) (TEXT " is set with a valid timestamp, it contains the its value.") (SOFT) (TEXT "Otherwise, if ") (LINK-SELF () "#created" (LITERAL-INPUT () "created")) (TEXT " is set with a valid timestamp, it contains the its value.") (SOFT) (TEXT "Otherwise, if the zettel identifier contains a valid timestamp, the identifier is used.") (SOFT) (TEXT "In all other cases, this property is not set.")) (PARA (TEXT "It can be used for ") (LINK-ZETTEL () "00001007700000" (TEXT "sorting")) (TEXT " zettel based on their publication date.")) (PARA (TEXT "It is a computed value.") (SOFT) (TEXT "There is no need to set it via Zettelstore.")))) ((MARK "query" "query" "query" (LITERAL-INPUT () "query"))) (BLOCK (BLOCK (PARA (TEXT "Stores the ") (LINK-ZETTEL () "00001007031140" (TEXT "query")) (TEXT " that was used to create the zettel.") (SOFT) (TEXT "This is for future reference.")))) ((MARK "read-only" "read-only" "read-only" (LITERAL-INPUT () "read-only"))) (BLOCK (BLOCK (PARA (TEXT "Marks a zettel as read-only.") (SOFT) (TEXT "The interpretation of ") (LINK-ZETTEL () "00001006020400" (TEXT "supported values")) (TEXT " for this key depends, whether authentication is ") (LINK-ZETTEL () "00001010040100" (TEXT "enabled")) (TEXT " or not.")))) ((MARK "role" "role" "role" (LITERAL-INPUT () "role"))) (BLOCK (BLOCK (PARA (TEXT "Defines the role of the zettel.") (SOFT) (TEXT "Can be used for selecting zettel.") (SOFT) (TEXT "See ") (LINK-ZETTEL () "00001006020100" (TEXT "supported zettel roles")) (TEXT ".") (SOFT) (TEXT "If not given, it is ignored.")))) ((MARK "sequel" "sequel" "sequel" (LITERAL-INPUT () "sequel"))) (BLOCK (BLOCK (PARA (TEXT "Is a property that contains identifier of all zettel that reference this zettel through the ") (LINK-SELF () "#prequel" (LITERAL-INPUT () "prequel")) (TEXT " value.")))) ((MARK "successors" "successors" "successors" (LITERAL-INPUT () "successors"))) (BLOCK (BLOCK (PARA (TEXT "Is a property that contains identifier of all zettel that reference this zettel through the ") (LINK-SELF () "#predecessor" (LITERAL-INPUT () "predecessor")) (TEXT " value.") (SOFT) (TEXT "Therefore, it references all zettel that contain a new version of the content and/or metadata.") (SOFT) (TEXT "In contrast to ") (LINK-SELF () "#folge" (LITERAL-INPUT () "folge")) (TEXT ", these are references because of technical reasons, not because of content-related reasons.") (SOFT) (TEXT "In most cases, zettel referencing the current zettel should be updated to reference a successor zettel.") (SOFT) (TEXT "The ") (LINK-ZETTEL () "00001007040310" (TEXT "query reference")) (TEXT " ") (LINK-QUERY () "backward? successors?" (TEXT "backward? successors?")) (TEXT " lists all such zettel.")))) ((MARK "summary" "summary" "summary" (LITERAL-INPUT () "summary"))) (BLOCK (BLOCK (PARA (TEXT "Summarizes the content of the zettel.") (SOFT) (TEXT "You may use all ") (LINK-ZETTEL () "00001007040000" (TEXT "inline-structued elements")) (TEXT " of Zettelmarkup.")))) ((MARK "syntax" "syntax" "syntax" (LITERAL-INPUT () "syntax"))) (BLOCK (BLOCK (PARA (TEXT "Specifies the syntax that should be used for interpreting the zettel.") (SOFT) (TEXT "The zettel about ") (LINK-ZETTEL () "00001008000000" (TEXT "other markup languages")) (TEXT " defines supported values.") (SOFT) (TEXT "If it is not given, it defaults to ") (LITERAL-INPUT () "plain") (TEXT ".")))) ((MARK "tags" "tags" "tags" (LITERAL-INPUT () "tags"))) (BLOCK (BLOCK (PARA (TEXT "Contains a space separated list of tags to describe the zettel further.") (SOFT) (TEXT "Each Tag must begin with the number sign character (") (FORMAT-QUOTE () (LITERAL-INPUT () "#")) (TEXT ", U+0023).")))) ((MARK "title" "title" "title" (LITERAL-INPUT () "title"))) (BLOCK (BLOCK (PARA (TEXT "Specifies the title of the zettel.") (SOFT) (TEXT "If not given, the value of ") (LINK-SELF () "#id" (LITERAL-INPUT () "id")) (TEXT " will be used.")))) ((MARK "url" "url" "url" (LITERAL-INPUT () "url"))) (BLOCK (BLOCK (PARA (TEXT "Defines an URL / URI for this zettel that possibly references external material.") (SOFT) (TEXT "One use case is to specify the document that the current zettel comments on.") (SOFT) (TEXT "The URL will be rendered special in the ") (LINK-ZETTEL () "00001014000000" (TEXT "web user interface")) (TEXT " if you use the default template.")))) ((MARK "useless-files" "useless-files" "useless-files" (LITERAL-INPUT () "useless-files"))) (BLOCK (BLOCK (PARA (TEXT "Contains the file names that are rejected to serve the content of a zettel.") (SOFT) (TEXT "Is used for ") (LINK-ZETTEL () "00001004011400" (TEXT "directory boxes")) (TEXT " and ") (LINK-ZETTEL () "00001004011200#file" (TEXT "file boxes")) (TEXT ".") (SOFT) (TEXT "If a zettel is deleted, these files will also be deleted.")))) ((MARK "user-id" "user-id" "user-id" (LITERAL-INPUT () "user-id"))) (BLOCK (BLOCK (PARA (TEXT "Provides some unique user identification for an ") (LINK-ZETTEL () "00001010040200" (TEXT "user zettel")) (TEXT ".") (SOFT) (TEXT "It is used as a user name for authentication.")) (PARA (TEXT "It is only used for zettel with a ") (LITERAL-INPUT () "role") (TEXT " value of ") (FORMAT-QUOTE () (TEXT "user")) (TEXT ".")))) ((MARK "user-role" "user-role" "user-role" (LITERAL-INPUT () "user-role"))) (BLOCK (BLOCK (PARA (TEXT "Defines the basic privileges of an authenticated user, e.g. reading / changing zettel.") (SOFT) (TEXT "Is only valid in a user zettel.")) (PARA (TEXT "See ") (LINK-ZETTEL () "00001010070300" (TEXT "User roles")) (TEXT " for more details.")))) ((MARK "visibility" "visibility" "visibility" (LITERAL-INPUT () "visibility"))) (BLOCK (BLOCK (PARA (TEXT "When you work with authentication, you can give every zettel a value to decide, who can see the zettel.") (SOFT) (TEXT "Its default value can be set with ") (LINK-ZETTEL () "00001004020000#default-visibility" (LITERAL-INPUT () "default-visibility")) (TEXT " of the configuration zettel.")) (PARA (TEXT "See ") (LINK-ZETTEL () "00001010070200" (TEXT "visibility rules for zettel")) (TEXT " for more details.")))))))