Hekate Markup Language - Mark 1 (2008)

Note: this version is NOT supported by the HaDEs toolset!

The is the first release of Hekate Markup Language known as HML1.

The Hekate Markup Language (HML) is based on the attributive language, xtt development and ard development concepts. There are the folowing subsets of the Hekate Markup Language defined:

  • attml – Attribute Markup Language
  • ardml – Attribute Relationship Markup Language
  • xttml – Rule Markup Language (not ready for deployment yet).

The languages can be used according to the following scenarios:

  1. attml – just attributes, nothing more
  2. attml + ardml – attributes and dependencies
  3. attml + ardml + xttml – attributes, dependencies and rulesin XML :!:
  4. attml + xttml – attribute and rules, ARD process is skipped

The big picture of a single HML application is as follows:

<hml>
  <!-- attml starts here -->
  <type_set>
    ...
  </type_set>
 
  <attribute_set>
    ...
  </attribute_set>
  <!-- attml ends here -->
 
  <!-- ardml starts here -->
  <property_set>
    ...
  </property_set>
 
  <tph>
    ...
  </tph>
 
  <ard>
    ...
  </ard>
  <!-- ardml ends here -->
 
  <!-- xttml starts here -->
  <xtt...TBD>
    ... TBD
  </xtt...TBD>
  <!-- xttml ends here -->
</hml>

DTD

Hekate markup language DTD: hml1.dtd. For sytax test purposes there is example XML file: hml1-test.xml (its semantics does not make any sense though, for syntax testing only).

Important elements are indexed wit 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_…”
  • groups: id=“grp_…”
  • dependencies: id=“tra_…”
  • transformations: id=“dep_…”

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.

You can validate any HML file using a validator i.e. xmlstarlet:

xmlstarlet val -d hml1.dtd hml1-test.xml

ATTML

For information on attributes see here, as well as the gjn2008ruleapps FIXME.

  <type_set>
    <type id="tpe_0" name="Temperature" base="numeric" length="5" scale="0">
      <desc>represents a temperature</desc>
      <domain type="ordered">
        <range from="1" to="5"/>
	<value>7</value>
        <range from="20" to="22"/>
	<value>26</value>
	<value>27</value>
      </domain>
    </type>
  </type_set>
 
  <attribute_set>
    <att id="att_0" type="tpe_0" name="temp" abbrev="t1" value="single" class="ro">
      <desc>input temperature from sensor number 1</desc>
    </att>
    <att id="att_1" type="tpe_0" name="temp-aux" abbrev="t1a" value="multiple" class="ro">
      <desc>input temperature from sensor number 1, aux reading, including historic data</desc>
    </att>
 
    <group id="grp_0" name="sensors" abbrev="sns">
      <desc>temperatures from sensors</desc>
      <attref ref="att_0"/>
      <attref ref="att_1"/>
    </group>
  </attribute_set>

A group can always store multiple tuples (formed from the attributes within the group); it's non-atomic. Atomic groups do not make any sense. In the example above there is an ordered set of tuples which are formed out of values of temp and corresponding temp-aux. The group concept is similar to the relation concept in the relational Model. Attributes in a group are ordered. — Igor Wojnicki 2008/02/14 21:51

att tag, class attribute values: ro,rw,wo,state, legacy values input,output,middle

question: where to put #digitis, #decimal point digits for numeric values?
answer: length=#of digits, scale=#of digits after the decimal point

ARDML

For ARD see ardplus FIXME and gjn2008flairs-ardformal gjn2008flairs-ardprolog

<hml>
  <type_set>
    ...
  </type_set>
 
  <attribute_set>
    <att name="Thermostat" id="att_0"...>
      ...
    </att>
    <att name="Time" ...>
      ... 
    </att>
  </attribute_set>
 
  <property_set>
    <property id="prp_1">
      <attref ref="att_0"/>
    </property>
    <property id="prp_2">
      <attref ref="att_0"/>
      <attref ref="att_1"/>
    </property>
    <property id="prp_3">
      <attref ref="att_0"/>
    </property>
    <property id="prp_4">
      <attref ref="att_1"/>
    </property>
    <property id="prp_5">
      <attref ref="att_0"/>
    </property>
  </property_set>
 
  <tph>
    <trans id="tra_01" src="prp_1" dst="prp_2"/>
    <trans id="tra_02" src="prp_2" dst="prp_3"/>
    <trans id="tra_03" src="prp_2" dst="prp_4"/>
    <trans id="tra_04" src="prp_4" dst="prp_5"/>
  </tph>
 
  <ard>
    <dep id="dep_01" independent="prp_1" dependent="prp_2"/>
    <dep id="dep_01" independent="prp_2" dependent="prp_3"/>
    <dep id="dep_01" independent="prp_3" dependent="prp_4"/>
    <dep id="dep_01" independent="prp_2" dependent="prp_4"/>
  </ard>
 
  ...
  ...
</hml>

Defining Properties

Basic syntax:

<property_set>
          <property id="prp_1">
               <attref ref="att_0"/>
               ...
               <attref ref="att_ad003"/>
          </property>
		...
		<property id="prp_2">
               <attref ref="att_44"/>
               ...
               <attref ref="att_2"/>
          </property>
</property_set>
  • Properties are defined in <property_set>…</property_set> section. This section must contain all properties which are being used in an ARD diagram.
  • Single property is defined by <property> tag
  • Single property contains any number of attributes. A list of attributes is defined by <attref>

Defining TPH Diagram

Basic syntax:

     <tph>
          <trans src="prp_1" dst="prp_2"/>
          <trans src="prp_2" dst="prp_3"/>
          <trans src="prp_2" dst="prp_4"/>
		...
          <trans src="prp_n" dst="prp_m"/>
     </tph>
  • TPH diagram is definied in <tph>…</tph> section. TPH diagram contains relationships called transformations.
  • A transformation is defined with the <trans> tag and it describes a transformation between a source (src) and destination (dst) properties.

Defining Dependencies

Basic syntax:

<ard>
     <dep independent="prp_1" dependent="prp_2"/>
     <dep independent="prp_2" dependent="prp_3"/>
     ...
     <dep independent="prp_x" dependent="prp_y"/>
     ...
     <dep independent="prp_x" dependent="prp_z"/>
</ard>
  • Dependencies begin with the <ard> 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 see here, for the XTTML the rule syntax part is especially important.

The following is just a proposal, subject to verification/discussion etc. There is no visual data regarding spatial distribution of XTT tables in XTTML.

  <xtt>
    <xtt_table id="xtt_1">
      <schema>
	<independent>
	    <attref ref="att_0"/>	  
	</independent>
	<dependent>
	    <attref ref="att_1"/>
	</dependent>
      </schema>
      <rule id="rul_1">
	<condition>
	  <logop name="in">
	    <attref ref="att_0"/>
	    <domain>
	      <range from="1" to="5"/>
	      <value>8</value>
	    </domain>
	  </logop>
	</condition>
	<decision>
	  <modop name="assign">
	    <attref ref="att_1"/>
	    <evalop name="add">
	      <attref ref="att_0"/>
	      <domain>
		<value>1</value>
	      </domain>
	    </evalop>
	  </modop>
	  <modop name="assign">
	    <attref ref="att_1"/>
	    <evalop name="add">
	      <domain>
		<value>5</value>
	      </domain>
	      <evalop name="sin">
		<attref ref="att_0"/>
	      </evalop>
	    </evalop>
	  </modop>
	</decision>
	<link xtt="xtt_1"/>
      </rule>
 
    </xtt_table>
 
  </xtt>

An XTT diagram (xtt element) consists of some number of XTT tables (xtt_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 schema describes dependent and independent attributes that are allowed to be used in a particular XTT table. There are dependent (dependent) and independent (independent) attributes. 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 part uses logical operators (logop) which evaluate as true or false.

The decision part applies a modification operator (modpop) in order to change the attribute value. The value can be given explicitly (as numeric, or symbol) or it can calculated as a result of an evaluative operator evalop.

Each rule can explicitly select the next table to be investigated if fired.

Implementation

hekate/hml1.txt · Last modified: 2019/06/27 15:49 (external edit)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0