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"