# IMS VDEX

IMS Vocabulary Definition Exchange (IMS VDEX) 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.
* Interfaces providing pre-defined choices – providing radio buttons and drop-down menus for interfaces such as metadata editors or a repository browse tool, based on the vocabulary allowed in the metadata profile used
* Distributing vocabularies among many users – achieved by simple XML file sharing, or possibly a searchable repository or registry of vocabularies
* XML stylesheets used to select and generate different views – selecting an overview of an entire vocabulary as an HTML or PDF file, for example; providing scope notes for catalogues; or storing a glossary of terms which are called upon by hyperlinks within a document
* Validation of metadata instances – validated against an application profile, by comparison of the vocabulary terms used in certain metadata elements with those of the machine readable version of the vocabularies specified by the application profile.
* Controlled terms for other IMS specifications and IEEE LOM – both may contain elements where controlled terms should be used. These elements are often specified as being of a vocabulary data type, and a definition of the permitted terms and their usage may be expressed using VDEX.

## 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:
* Faceted schemes – faceted vocabularies are possible with the definition of appropriate relationships
* Multi-lingual thesauri – metadata could be used within a relationship to achieve multilingual thesauri
* Polyhierarchical taxonomies – can be expressed using the source/target value pairs in the relationship.
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.

## Implementations

* ALOHA Metadata Tagging Tool — Java-based software project that can read IMS VDEX files.
* IVIMEDS 1G v1.0 Archived 2006-06-22 at the Wayback Machine – from The International Virtual Medical School – includes VDEX instances in curriculum maps. Partners can create their own maps in VDEX format and use these to help students search the repository.
* Skills Profiling Web Service — project implemented and demonstrated use of a skills profiling web service using open standards in a medical context. IMS VDEX files were used in the representation of the SPWS hierarchy skills framework.
* Scottish Doctors — project used VDEX as a format for expressing curricular outcome systems.
* VDEX XSLT scripts — developed by The Higher Education Academy Centre for Philosophical and Religious Studies to convert VDEX to XHTML and PostgreSQL .
* VDEX Implementation Project — carried out by the Institute for Computer-Based Learning at Heriot–Watt University, with a primary objective of creating a tool for editing vocabularies in VDEX format. The project, which ended in January 2004, was based on the Public Draft (not the current Final Specification).
* VDEX Java Binding — implementation neutral Java interface for VDEX, as well as providing a default implementation of that interface, and XML marshalling functionality.
* imsvdex Python egg — API for VDEX XML-files. It is free software written in Python.
* ATVocabularyManager — addon for Plone CMS uses VDEX as a possible format to define vocabularies.
* collective.vdexvocabulary — implements IMS VDEX as standard Zope vocabulary which can also be used in Plone CMS, written in Python.
* vdexcsv — offers a commandline converter from CSV to VDEX. It is written in Python.