Taxonomies
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:
- a node has only one "parent" and can have zero or more "children"
- a root node is the only node without a parent
- there is a direct and distinct route to and from the root from every node in the tree
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:
- a node can have more than one "parent"
- there are multiple paths from the route to each node
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:
- id, a unique identifier of the node between itself and its siblings
- type, the node type
- name, the node's name used in the UI to display the text next to the node icon
- level, a derived attribute of the position of the node in the hierarchy (0 = root node)
In order to retrieve the children of a node, the following main attributes may be used to select the query that will be used:
- level
- type
- id
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.