TeLiTab stands for "Text List Table" and is the generic fractal (see [fractal]) data model for Quaestor. It is used as standard format for exchange and storage of data.
The format can also used as I/O format between Quaestor and satellite applications.
The general structures is:
Text |
List |
Table |
It is a fractal model because every parameter in the list or table of the dataset can contain a TeLiTab itself:
Text | |
List | |
Text | |
List | |
Table | |
Table | |
Text | |
List | |
Table |
Syntax
The syntax for the TeLiTab is as followed:
Normal TeLiTab,
TableNo%>0: "Text$" "..." "Text$" @DOCUMENT_ParName_CaseNumber Document$ @END_DOCUMENT_ParName_CaseNumber @END_DOCUMENTS ListNo% "ParName" ParVal ... ... "ParName" ParVal TableNo% "ParName" ... "ParName" "1" ParVal ... ParVal ... ... ... ... "nr.cases" ParVal ... ParVal |
Transposed TeLiTab,
TableNo%<0: "Text$" "..." "Text$" @DOCUMENT_ParName_CaseNumber Document$ @END_DOCUMENT_ParName_CaseNumber @END_DOCUMENTS "ParName" ParVal ... ... "ParName" ParVal TableNo% "1" ... "nr.cases" "ParName" ParVal ... ParVal ... ... ... ... "ParName" ParVal ... ParVal |
Arguments
Text$ |
@DOCUMENT_ParName_CaseNumber |
ParName |
CaseNumber |
@DOCUMENT_B_1 |
B |
@END_DOCUMENT_ParName_CaseNumber |
ParName |
CaseNumber |
@END_DOCUMENT_B_1 |
B |
The DOCUMENT block should always close with a
@END_DOCUMENTS |
The parameter containing a document
Document$ |
@DOCUMENT_ParName_CaseNumber Document$ |
@END_DOCUMENT_ParNam_CaseNumber |
"\DOCUMENT" |
ListNo% |
ParName |
ParVal |
TableNo% |
ParName |
ParName |
items, they cannot have the same name!);
nr.cases |
ParVal |
Each nested telitab starts with
{ |
} |
ListNo% "ParName" { "Text$" "..." "Text$" @DOCUMENT_ParName_CaseNumber Document$ @END_DOCUMENT_ParName_CaseNumber @END_DOCUMENTS ListNo% "ParName" ParVal ... ... "ParName" ParVal TableNo% "ParName" ... "ParName" "1" ParVal ... ParVal ... ... ... ... "nr.cases" ParVal ... ParVal } |
If TeLiTab or OBJECT values have to be included in the table,
TableNo% |
{ |
} |
"ParName" { "Text$" "..." "Text$" @DOCUMENT_ParName_CaseNumber Document$ @END_DOCUMENT_ParName_CaseNumber @END_DOCUMENTS ListNo% "ParName" ParVal ... ... "ParName" ParVal TableNo% "ParName" ... "ParName" "1" ParVal ... ParVal ... ... ... ... "nr.cases" ParVal ... ParVal } { ... } { "Text$" "..." "Text$" @DOCUMENT_ParName_CaseNumber Document$ @END_DOCUMENT_ParName_CaseNumber @END_DOCUMENTS ListNo% "ParName" ParVal ... ... "ParName" ParVal TableNo% "ParName" ... "ParName" "1" ParVal ... ParVal ... ... ... ... "nr.cases" ParVal ... ParVal } |
Remarks
Parameters can have documents as values, in that case ParVal for this parameter should be replaced with
"\DOCUMENT" |
Examples
Assume a dataset for a ship, containing Length (Lpp), Beam (B) and Resistance data, being a table with Speed (V) and Resistance (R). Based on this discription you can make a TeLiTab:
2 "Lpp" 100 "B" 20 2 "R" "V" "1" 1000 10 "2" 1200 11 "3" 1300 12 "4" 1400 13 "5" 1500 14 "6" 1600 15 |
You could consider to define a seperate object or TeLiTab "Resistance" that containt the resistance data. In that case the Resistance data is connected to a seperate parameter denominated "Resistance" which contains a TeLiTab with Speed (V) and Resistance (R). Based on this discription you can expect a two TeLiTabs:
The resulting TeLiTab looks as followed:
3 "Lpp" 100 "B" 20 "Resistance" { 0 2 "R" "V" "1" 1000 10 "2" 1200 11 "3" 1300 12 "4" 1400 13 "5" 1500 14 "6" 1600 15 } |
Finally you could assume that this information is part of the "Ship" object. In that case on the highest level their is one list parameter "Ship", containing the previous TeLiTab structure as value:
1 "Ship" { 3 "Lpp" 100 "B" 20 "Resistance" { 0 2 "R" "V" "1" 1000 10 "2" 1200 11 "3" 1300 12 "4" 1400 13 "5" 1500 14 "6" 1600 15 } } |
All information between double quotes are parameters/objects.
Parameters and objects should always be between double quotes. String information has to be between double quotes when the string containts spaces. "Ships" and "Resistance" are objects in the dataset (they contain a Telitab set). The secondary Telitab (for object "Resistance") is the content of the List item "Ship" of the primary Telitab.
For syntax specific questions, see also QuaestorSyntax