Taxonomies are used to describe hierarchies of terms, arranged in order of broader to narrower concepts. Taxonomies are essential in many business applications as they are used to describe almost any kind of controlled vocabularies.

In technical terms taxonomies are implemented using a Tree data structure, where every node in the tree is unique, and any two nodes are connected by exactly one path. This gives trees with the following well-known attributes:

Practically, taxonomies in computer applications may have more than one root node, if the first level of classification can contain many terms. Usually those taxonomies have an invisible or "virtual" root node which is not presented to the user.

Often, taxonomies like the ones described above are referred to as "Strict Taxonomies" in order to differentiate them from the "Poylhierarchical Taxonomies" described below.

Polyhierarchical Taxonomies

A polyhierarchical taxonomy is a tree-like structure that can accommodate multiple taxonomies, i.e. an item can appear in more than one place. Practically, this means that there are more than one routes (paths) for reaching a particular node in the hierarchy. The characteristics that are derived by this functionality are:

In software, Polyhierarchical Taxonomies are implemented as directed graphs where nodes are connected to their children and parents using directed relationships.

Taxonomies in VirtualTreeNavigator

VirtualTreeNavigator can traverse and display any kind of taxonomy. You can generate hierarchical structures from any source of data, from the simplest recursively connected tree, to a more complicated graph which contains data from lots of different sources.

One of the most important attributes of a taxonomy node is its "type", a categorisation or grouping that determines how this product behaves in the taxonomy or what additional data it may contain. In a taxonomy that is made up of information from a variety of sources, the node "type" relates to the source (e.g. a database table)

In VirtualTreeNavigator a node should always have a "type" attribute. In fact the following attributes are mandatory for any node in the hierarchy:

In order to retrieve the children of a node, the following main attributes may be used to select the query that will be used:

The query itself can contain parameters from any attributes of the nodes or its ancestors, i.e. all the information that has been retrieved to reach a node in the hierarchy can be used to retrieve its children.

More information about forming hierarchical taxonomies using VirtualTreeNavigator can be found in the Taxonomy Definition section.