====== Hekate Markup Language ====== The //Hekate Markup Language (HML)// is provided for the machine readable XML serialization of the HeKatE rule base described in a human-readable [[HMR]] format. The rules are formalized with the use of the [[hekate:ALSVFD]] logic and [[hekate:XTT2]] rules prototyped with the [[hekate:ARDplus]] method. There are the following subsets of the HeKatE Markup Language defined: * ''attml'' -- Attribute Markup Language for describing rule [[hekate:attributes]] * ''ardml'' -- Attribute Relationship Markup Language for the [[hekate:ARDplus]] prototype * ''xttml'' -- XTT2 Rule Markup Language for the [[hekate:XTT2]] structured rule representation The sublanguages can be used according to the following scenarios: - ''attml'' -- only attribute definition, the minimalistic case - ''attml'' + ''ardml'' -- attributes and ARD dependencies - ''attml'' + ''ardml'' + ''xttml'' -- attributes, dependencies and XTT2 rules - ''attml'' + ''xttml'' -- attributes and rules, (without the ARD prototype) A HML application using all sublanguages is as follows: ... ... ... ... ... ... The current version is referred to as //HML2// (the first one is [[HML1]], see below). ===== HeKatE markup history===== The markup for the various knowledge representations now present in HeKatE has been evolving. * 2004 - first markup for XTT in GJN PhD -> XTTML0 * 2007 - first markup for ARD+ in VARDA * 2007 - second version of markup for XTT in early versions of HQEd -> XTTML * 2007 - third version of markup for XTT in HQEd M5_* -> XTTML2 * 2008 - first version markup proposal for HeKatE, ARD+, XTT+ -> [[HML1]]: ATTML1, ARDML1, XTTML3 (proposal for XTT+, partially supported by design tools) * 2009 - second version of HML, ARD+ XTT2 -> HML2: ATTML2, ARDML2, XTTML4 (supported by HQEd M6_* from 05.2009) ===== HML syntax ===== HeKatE markup language DTD: (for HML2). For syntax test purposes there is an example XML file:{{:hekate:hml-test-hekate_case_thermostat.xml|}} A minimalistic file is: {{:hekate:hml-test-min.xml}} //(Note: the above files are versioned in the HaDEs CVS repo in the [[HatHoR]] module.)// Important elements are indexed with an attribute ''id''. ''id'' value has to be unique (enforced by DTD) and should start with (depending on particular element): * types: ''id="tpe_..."'' * attributes: ''id="att_..."'' * properties: ''id="prp_..."'' * type groups: ''id="tgr_..."'' * attribute groups: ''id="agr_..."'' * dependencies: ''id="dep_..."'' * ARD history (TPH): ''id="hst_..."'' //All id numbers start with 1// An additional attribute (''id'') is introduced to guarantee that types, attributes, properties and groups can be uniquely referenced. It can be forced, using DTD, that an attribute has a unique value within an XML document, it becomes a unique identifier. Similarly, it can be forced that an attribute references an element by its unique identifier. Making attribute names unique identifiers prevents naming a group, or type, with the same name as the attribute, since unique identifiers are unique within entire document regardless of the element they regard to. It is possible to validate a HML file using a validator i.e. ''xmlstarlet'': xmlstarlet val -e -d hml.dtd hml-test.xml ===== ATTML ===== For information on attributes [[hekate:attributes|see here]]. represents a temperature represents an integer number input temperature from sensor number 1 input temperature from sensor number 1, aux reading, including historic data temperatures from sensors Both in the case of //types// and //attributes// groups can be specified. Example: types day, hour, month can form a type group //date//. The same could apply to specific attributes. In the example above there is set of attributes describing sensor readings formed out of values of temp and corresponding temp-aux. Attributes in groups and types are //ordered//. ===== ARDML ===== For ARD see [[hekate:ardplus]] and [[hekate:bib:hekate_bibliography#gjn2008flairs-ardformal]] [[hekate:bib:hekate_bibliography#gjn2008flairs-ardprolog]] ... ... ... ==== Defining ARD+ Properties ==== Basic syntax: ... ... ... * Properties are defined in ''...'' section. This section must contain all properties which are being used in an ARD diagram. * Single property is defined by '''' tag * Single property contains any number of attributes. A list of attributes is defined by '''' ==== Defining TPH Diagram ==== Basic syntax: ... * TPH diagram is definied in ''...'' section. TPH diagram contains relationships called transformations. * A transformation is defined with the '''' tags and it describes the development between a source (''src'') and destination (''dst'') properties. ==== Defining Dependencies ==== Basic syntax: ... ... * ARD dependencies begin with the '''' tag. The tag does not have attributes. Each dependence is defined with a a pair of properties: an ''independent'' and a ''dependent'' one. ===== XTTML ===== For information on the XTT itself [[hekate:xtt2|see here]].
An XTT diagram (''xtt'' element) consists of some number of XTT tables (the ''table'' element). The above example can be read as: xtt_1: rule_1: if att_0 in <1,5>u{8} then att_1 = att_0 + 1 and att_1 = 5 + sin(att_0) ==== Schema ==== Element ''schem'' describes precondition and conclusion attributes that are allowed to be used in a particular XTT table. The schema is generated by the ARD->XTT transition algorithm directly from ARD. ==== Rule ==== A rule (''rule'') consists of a condition (''condition'') part and a decision part (''decision''). The condition is composed of the [[hekate:ALSVFD]] formulas, that specify certain''relation''s between attribute values and given set of values. The decision part is decomposed into two parts: * state ''trans''istion that can specify new state (attribute values), and * external ''action'' to be executed; it is assumed it does //not// infulences the state in any way. Each rule can explicitly transef the inference to a next table (possibly also a rule). ===== State specification ===== Number of named system states can also be specified. A single state is a vector of attribute values. ===== HML implementation and support ===== HML is used to serialize the knowledge in the HeKatE project in a machne redable format. It is used to interchange knowledge between the tools forming the [[HaDEs]] framework. HML syntax has been designed to: * correspond to the logical system formulation with [[hekate:XTT2]] based on the [[hekate:ALSVfd]] logics, and * match the syntax of //HMR// (the HeKatE Meta Representation) as supported by //[[hekate:HeART]]// - the HeKatE runTime environment.