IMS VDEX
IMS VDEX, which stands for IMS Vocabulary Definition Exchange, in data management, is a mark-up language – or grammar – for controlled vocabularies developed by IMS Global as an open specification, with the Final Specification being approved in February 2004. IMS VDEX allows the exchange and expression of simple machine-readable lists of human language terms, along with information that may assist a human in understanding the meaning of the various terms, i.e. a flat list of values, a hierarchical tree of values, a thesaurus, a taxonomy, a glossary or a dictionary. Structural a vocabulary has an identifier, title  and a list of terms. Each term has a unique key, titles and (optional) descriptions. A term may have nested terms, thus a hierarchical structure can be created. It is possible to define relationships between terms and add custom metadata to terms. IMS VDEX support multilinguality. All values supposed to be read by a human, i.e. titles, can be defined in one or more languages. Purposes. VDEX was designed to supplement other IMS specifications and the IEEE LOM standard by giving additional semantic control to tool developers. IMS VDEX could be used for the following purposes. It is used in  practice for other purposes as well. Technical details. The VDEX Information Model is represented in the diagram. A VDEX file describing a vocabulary comprises a number of information elements, most of which are relatively simple, such as a string representation of the default (human) language or a URI identifying the value domain (or vocabulary). Some of the elements are ‘containers’ – such as a "term" – that contain additional elements. Elements may be required or optional, and in some cases, repeatable. Within a term, for example, a "description" and "caption" may be defined. Multiple language definitions can be used inside a description , by using a "langstring" element, where the description is paired with the language to be used. Additional elements within a term include "media descriptors", which are one or more media files to supplement a term’s description; and "metadata", which is used to describe the vocabulary further. The "relationship" container defines a relationship between terms by identifying the two terms and the specifying type or relationship, such as a term being broader or narrower than another. The term used to specify the type of relationship may conform to the ISO standards for thesauri. "Vocabulary identifiers" are unique, persistent URIs, whereas  term or relationship identifiers are locally unique strings. VDEX also allows for a "default language" and "vocabulary name" to be given, and for whether the ordering of terms within the vocabulary is significant ("order significance") to be specified. A "profile type" is specified to describe the type of vocabulary being expressed; different features of the VDEX model are permitted depending on the profile type, providing a common grammar for several classes of vocabulary. For example, it is possible, in some profile types, for terms to be contained within one another and be nested, which is suited to the expression of  hierarchical vocabularies. Five profile types exist: "lax", "thesaurus", "hierarchicalTokenTerms", ‘glossaryOrDictionary’ and "flatTokenTerms". The lax profile is the least restrictive and offers the full VDEX model, whereas the flatTokenTerms profile is the most restrictive and lightweight. VDEX also offers some scope for complex vocabularies, assuming the existence of a well-defined application profile (for exchange interoperability). Some examples are: Identifiers in VDEX data should be persistent, unique, resolvable, transportable and URI-compliant. Specifically, vocabulary identifiers should be unique URIs, whereas term and relationship identifiers should be locally unique strings.