LMNL cap logo
[there}Where am

LMNL markup dot org

Namespace home for the Layered Markup and Annotation Language

LMNL is a markup technology that is conceptually and practically different from markup technologies such as HTML, XML, lightweight markup (such as used in wikis), or other prevalent approaches. Like them, it is a systematic method of enriching text-based information on a “plain text” foundation, with the advantages of platform independence, neutrality and versatility of application, and a standards basis. In LMNL, however, tagging (markup) does not necessarily impose structure over the text; instead, it is construed as indicating arbitrary regions or ranges of text (sequences of characters) whose semantics may or may not be structural.* Ranges of text may be marked – with names (generic identifiers), labels, properties or annotations – for any reason at all.

LMNL tags can label, trace, outline, gloss and comment. Annotations on tags can themselves be marked up, structured and annotated. Ranges marked up, named and annotated, can overlap freely with other ranges (thus LMNL is proposed as a general solution to XML's notorious overlap problem); or they can be construed as structural divisions (and mapped to XML elements). If XML is an X-ACTO® knife for cutting, splicing and measuring a text into constituent parts, then LMNL is like a drawer full of pens, highlighters, paper and card stock, glue, ribbon, scissors and sticky notes in different colors. The two formats can be used together, or produced from each other; formally, LMNL is a superset of XML.

Prototype LMNL syntax processing code is available to developers working on an XML stack: Luminescent on github. It provides a pipeline of XSLT stylesheets to parse a well-formed LMNL syntax instance and compile it into an XML representation of a LMNL document model, with its text, ranges and annotations, suitable for further processing using XML tools.

LMNL was first proposed in 2002 by Jeni Tennison and Wendell Piez; its processing architecture is informed by XML and XSLT, while the conceptual foundation for text and markup processing on which it based was inspired by the Core Range Algebra of Gavin Thomas Nicol. John Cowan, as a member of the Ad Hoc LMNL Committee, contributed work specifying the LMNL model and syntax. Useful experiments and demonstrations have been conducted by Matt Palmer, Paul Caton, Alex Czmiel, Bert van Elsacker, Jeni Tennison and Wendell Piez. Important intellectual contributions have been made by Claus Huitfeld, Michael Sperberg-McQueen, Steven J DeRose, Patrick Durusau and others.

* It can (and possibly should) be argued that even in XML (in general) and HTML in particular, markup does not always mean structure. So inline markup in HTML, such as span or code (to name two elements whose meanings are arguable and may indeed be ad hoc) may not be introduced for the purpose of providing the text with “structure” (another term whose meaning may be contested). Similarly, the fact that address has a structure in HTML is arguably incidental, not essential, to its proper semantics, which may be occluded as often as it is expressed by the particular form the element takes. Thus, even when structure as such is not the purpose of these elements, that is what they inevitably do and are, since in XML and HTML, elements are (must be) cleanly nested – ergo, in a (single) hierarchy. This constraint has profound consequences, both enabling and limiting, for the design, development and use of these technologies and applications of them.

LMNL may be described as a markup technology in which this constraint on XML is relaxed, along with one other: that information associated with elements as attributes (or in LMNL, as annotations on ranges) must not also be marked up.

Specifications and documentation

The LMNL wiki went down in 2008 with no accessible backup; fortunately its contents were archived by the Wayback Machine of the Internet Archive. See several of the most important specifications, restored and edited, here.

This page originated in May 2012, and was last edited June 17 2012.