Zettelmarkup: Query Transclusion

A query transclusion is specified by the following sequence, starting at the first position in a line: {{{query:query-expression}}}. The line must literally start with the sequence {{{query:. Everything after this prefix is interpreted as a query expression.

When evaluated, the query expression is evaluated, often resulting in a list of links to zettel, matching the query expression. The result replaces the query transclusion element.

For example, to include the list of all zettel with the tags “#search”, ordered by title specify the following query transclude element:

{{{query:tags:#search ORDER title}}}

This will result in:

For example, this allows to create a dynamic list of zettel inside a zettel, maybe to provide some introductory text followed by a list of child zettel.

The query will deliver only those zettel, which the current user is allowed to read.

In the above example, the action list is empty. This leads to the described list of zettel.

The following actions are supported, parameter and aggregate actions:

N (or any word that starts with “N” (parameter)

The resulting list will be a numbered list.

MINn (parameter)

Emit only those values with at least n aggregated values. n must be a positive integer, MIN must be given in upper-case letters.

MAXn (parameter)

Emit only those values with at most n aggregated values. n must be a positive integer, MAX must be given in upper-case letters.

TITLE (parameter)

All words following TITLE are joined together to form a title. It is used for the ATOM and RSS action.

ATOM (aggregate)

Transform the zettel list into an Atom 1.0-conformant document / feed. The document is embedded into the referencing zettel.

RSS (aggregate)

Transform the zettel list into a RSS 2.0-conformant document / feed. The document is embedded into the referencing zettel.

KEYS (aggregate)

Emit a list of all metadata keys, together with the number of zettel having the key.

REDIRECT, REINDEX (aggregate)

Will be ignored. These actions may have been copied from an existing API query call (or from a WebUI query), but are here superfluous (and possibly harmful).

Any metadata key of type Word or of type TagSet (aggregates)

Emit an aggregate of the given metadata key. The key can be given in any letter case1.

To allow some kind of backward compatibility, an action written in uppercase letters that leads to an empty result list, will be ignored. In this case the list of selected zettel is returned.

Example:

{{{query:tags:#search | tags}}}

This is a tag cloud of all tags that are used together with the tag #search:

  1. Except if the key name collides with one of the above names. In this case use at least one lower case letter. ↩︎