<!ELEMENT contexts (definitions,context+)>

<!ELEMENT context (atomic|composite)>
  <!ATTLIST context name CDATA #REQUIRED>
  <!ATTLIST context type CDATA #REQUIRED>

<!-- Atomic context definition -->

<!ELEMENT atomic (sensor|location|power)>
  <!ATTLIST atomic type CDATA #REQUIRED>
 
<!ELEMENT sensor EMPTY>
  <!ATTLIST sensor type CDATA #REQUIRED>
  <!ATTLIST sensor comparevalue CDATA #REQUIRED>
  <!ATTLIST sensor comparison CDATA #REQUIRED>
  <!ATTLIST sensor unit CDATA #REQUIRED>
  <!ATTLIST sensor accuracy CDATA #IMPLIED>
  <!ATTLIST sensor valuetype CDATA #REQUIRED>

<!ELEMENT location (symbol|coordinate)>
  <!ATTLIST location type CDATA #REQUIRED>

<!ELEMENT symbol (city)>
  <!ATTLIST symbol room_rms CDATA #IMPLIED>
  <!ATTLIST symbol x CDATA #IMPLIED>
  <!ATTLIST symbol y CDATA #IMPLIED>
  <!ATTLIST symbol z CDATA #IMPLIED>
<!ELEMENT city (area?)>
  <!ATTLIST city value CDATA #REQUIRED>
<!ELEMENT area (building?)>
  <!ATTLIST area value CDATA #REQUIRED>
<!ELEMENT building (level?)>
  <!ATTLIST building value CDATA #REQUIRED>
<!ELEMENT level (room?)>
  <!ATTLIST level value CDATA #REQUIRED>
<!ELEMENT room EMPTY>
  <!ATTLIST room value CDATA #REQUIRED>

<!ELEMENT coordinate EMPTY>
  <!ATTLIST coordinate longitude CDATA #REQUIRED>
  <!ATTLIST coordinate latitude CDATA #REQUIRED>
  <!ATTLIST coordinate elevation CDATA #REQUIRED>
  <!ATTLIST coordinate position_rms CDATA #IMPLIED>
  <!ATTLIST coordinate heading CDATA #IMPLIED>
  <!ATTLIST coordinate speed CDATA #IMPLIED>

<!ELEMENT power EMPTY>
  <!ATTLIST power type CDATA #REQUIRED>
  <!ATTLIST power comparevalue CDATA #REQUIRED>
  <!ATTLIST power comparison CDATA #REQUIRED>
  <!ATTLIST power unit CDATA #REQUIRED>
  <!ATTLIST power accuracy CDATA #IMPLIED>
  <!ATTLIST power valuetype CDATA #REQUIRED>

<!-- Composite contexts definition -->

<!ELEMENT composite (logic)>
  <!ATTLIST composite type CDATA #REQUIRED>

<!ELEMENT logic ((contextref|context|logic),(contextref|context|logic)+)>
  <!ATTLIST logic logicrelation CDATA #REQUIRED>

<!ELEMENT contextref EMPTY>
  <!ATTLIST contextref name CDATA #REQUIRED>

<!-- Definitions -->

<!ELEMENT definitions (comparison+,logicrelation+,valuetype+)>

<!ELEMENT comparison EMPTY>
  <!ATTLIST comparison operator CDATA #REQUIRED>

<!ELEMENT logicrelation EMPTY>
  <!ATTLIST logicrelation operator CDATA #REQUIRED>

<!ELEMENT valuetype EMPTY>
  <!ATTLIST valuetype name CDATA #REQUIRED>
