Q: What is Versavant an implementation of an example of?

A: A TMA Disclosure Discipline.

Different disclosure disciplines offer different advantages and
disadvantages.  Some of the advantages of the Versavant disclosure
discipline are:

* The disclosure consists of a set of formal, executable code
  fragments (Python functions).  To make a TMA work is perforce to
  prepare its disclosure, and to prepare the disclosure is to make it
  work.  The disclosure is always exactly accurate.
  
* Topic maps governed by the same TMA merge completely automatically.

* Topic maps governed by independently-created TMAs can be made to
  merge simply by creating an additional "bridging TMA".  Moreover,
  because each TMA's disclosure is formal, comprehensive, and 100%
  accurate, the work of creating a bridging TMA is significantly
  facilitated.

* Since Versavant topic maps can fully disclose the TMAs that govern
  them, in executable form, any Versavant topic map can be an example
  of "smart content" -- content in which "the theory of the content is
  embedded in the content".  Its "smartness" is that it facilitates or
  entirely automates subject-centric merging with other,
  similarly-smart content.  The degree of facilitation is significant
  even if the other content is governed by one or more
  completely-independent ontologies.

* The merging and conferral logic of each independent TMA will always
  be fully honored by Versavant, even in multi-TMA topic maps.  

* TMA disclosures are modules.  Any number of topic maps can be
  governed by the same TMA, in combination with any number of other
  TMAs, which may be the same or different.  There is a one-to-one
  correspondence between TMA configuration files and TMA disclosures.
  (The syntax of Versavant TMA configuration files is very simple and
  highly constrained by Versavant.)

  - It is possible, but not necessary, to put all the code fragments
    that constitute a TMA disclosure in a single Python file, or to
    distribute them among many files in any number of directories.  

  - It is possible, but not necessary, to put an entire TMA disclosure
    in a single directory.

  - TMA disclosures can be members of families of disclosures that all
    share some of the same logic.  In this case, the configuration
    files of such TMAs can refer to shared code fragments.

  - The same code fragment can perform multiple functions in the same
    TMA and/or in different TMAs.  When a TMA configuration file
    registers a code fragment, it can register at the same time a
    completely arbitrary string of arguments to be passed to it; such
    an argument string can be used to specialize the behavior of the
    code.

* An interchangeable topic map prepared using Versavant can incorporate
  or not incorporate:

  - Full disclosures of the TMAs.

  - Partial disclosures of the TMAs.

  - Executable-only disclosures of the TMAs (no source code, but the
    functionality, and therefore much of the "smartness", is
    incorporated).

  - Auditing information about which property values were conferred
    and which were originally populated, and other audit trail
    information.

Some of the disadvantages of the Versavant disclosure discipline are:

* At least in the current (Python-based) implementation of Versavant,
  the code fragments must be in Python, or be encapsulated for use in
  a Python environment.

* The Versavant advantage that merging and conferral are standardized
  services provided to all TMAs can also be regarded as a
  disadvantage, because in a multi-TMA topic map, no TMA's logic can be made
  to supersede the logic of any other.  (If it is necessary to
  override any part of the logic of any TMA, the only alternative is
  to use a different TMA -- one that will do whatever is desired.)

* There are some minor constraints on naming, within any given
  Versavant session (a session can have several topic maps open
  simultaneously):

  - Every topic map, original population task, value type, property
    class, and conferral rule must be endowed with a unique name
    within the namespace of each such kind of thing (topic map,
    original population task, etc.)

  - No topic map, original population task, value type, property
    class, or conferral rule can have a name that:

    . consists of decimal digits and begins with two zeroes (these
      names are reserved for use as proxy OIDs).  (Regular expression
      '00[0-9]+'.)

    . matches the regular expression 'Zz [0-9]+ zZ' (these names are
      reserved for use as the OIDs of processing operation (auditing)
      objects)

  - No user-defined application can be named "VersavantSystem"