Model attributes are defined by declaring the Type and the Name of each attribute. For example: <Integer name="currentTemp"/>. Integer is a system-defined type. This definition declares an entity of the Type (pattern) Integer with the name of "currentTemp" as an attribute of the Model.
All attributes must be declared from existing types, which can be system-defined types or user-defined types.
Model attributes can be of three categories:
1. Atom. An attribute defined by a type which contains only one slot implicitly named “value”. (Atomic types are also called primitive types and are pre-defined by the system. For example, Number is an atomic type. All atomic types inherits from the type "Atom".) TQLEngine currently does not support user-defined atomic types.
2. Composite. An attribute defined by a type which is a container (contains more than one slot). A container type can be defined by the user using type definition language (<Def/>)
3. Ad-hoc composite. An attribute which is a container defined only at the time of model definition, that is, no such type is pre-defined. Therefore, the structure of ad-hoc composite cannot be reused by other models, but only exist in the particular model itself. All Ad-hoc composite must be declared with the type "Data".
4. Cherry-picked. Cherry-picked attributes are declared using the type "Attribute". For details see CherryPicking.
System maintained tags for model attributes
TQLEngine automatically maintains tags as part of every attribute that makes up the model definition. System tags can be read (using FIND) with
Format="all" modifier with the <Find> Query.
System Tag Name | Description |
---|---|
Value | The value of the attribute is stored in "Value". This is often specified by the user at the time of create query (instantiation) |
Known | Applicable to ThingModel/AppModel - this is the value that is only set by the output of Actions. Known CANNOT be set using CRUD operations (Create / Update) via TQL Queries. The system also maintains a "Known" for DataModel attributes, for consistency purposes, but it will always be the same as Value. |
Version | The version number of the attribute. This number is automatically incremented each time the value changes. |
Timestamp | Unix epoch time at the time (in millisecond) of the attribute creation. For example: Timestamp value1457663102004 is same as Fri, 11 Mar 2016 02:25:02 GMT |
Datetime | Formatted data time value of the attribute creation. For example:2016-03-10 18:25:02.004 |
QName | Fully qualified name of the attribute. <NamSpace>.<Domain>.<ModelName>.<AttributeName>. For example SimpleModel.MyModels.VendorInfo.vendorName given that VendorInfo is defined within Namespace - SimpleModel, with Domain as MyModels and DataModel Name as VendorInfo |
FName | Given name of the attribute name. |