To collect data from a certain application field one first has to specify the structure of the records to be collected. This requires to create one or several data tables via their meta tables.
As described above, a meta table consists of a set of tag descriptions, i.e., sd-files that can be created with any text editor and inserted at the right place via the symbolicdata Insert action. Each such meta sd-file contains the description of the attributes of a tag of the table to be defined.
Several such tag definitions ( ChangeLog, Comment, Date, PERSON, Version) are predefined, i.e., inherited from a ``master table'' (which is an abstract class in object-oriented terminology). In particular, all records have a PERSON tag defined which is to be used as a reference to the table PERSON that collects information (affiliations, email addresses, etc.) of persons who contributed to SYMBOLICDATA. This guarantees a fair authorship management of different contributions along the GNU Public License conditions which applies to SYMBOLICDATA as a whole.
Furthermore, depending on the domain of the application, tag and/or table specific Perl functions might have to be implemented and specified in the meta sd-records which realize semantical operations like validation, generation, and comparison of tag values.
After the new table is specified, records of this table may be inserted into the data base. Each record has to be supplied as sd-file that either can be created by a text editor from a template or converted with appropriate Perl tools, possibly using the SYMBOLICDATA programming environment, from other formats.
New sd-records should be inserted into the data base using
symbolicdata Insert [options] sd-file(s)This action first validates the given record, secondly, checks for uniqueness of the new record, and, thirdly, inserts the record as sd-file at the right place.
Validation first checks for correct flat XML syntax and presence and plausible values of all mandatory tags. Then, level by level, tag values are checked syntactically and, if a tag `validate' and/or `generate' function is defined in the corresponding meta sd-file, the tag value may also be semantically validated, or even generated.
After validation, the record is checked for uniqueness w.r.t. the existing records of the same table in the data base. This is either accomplished by a (semantical) `compare' function defined in the table's meta sd-file or by the standard compare function that compares tag values by string comparisons modulo whitespaces. Note that a semantical comparison of two records may require certain elaborations since the same example may, e.g., occur with different variable names or in different representations.
In general, the evaluation of semantical aspects of records requires to cooperate with software capable of symbolic manipulations. For reasons of familiarity, personal preference, and suitability, we use, at the moment, only SINGULAR [6] for such purposes. However, if it becomes necessary or convenient, other CAS could supplement or replace SINGULAR as the underlying Computer Algebra engine.