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"