Skip to content
Snippets Groups Projects
Commit 24da6924 authored by ankraft's avatar ankraft
Browse files

Merge branch 'RDM-2019-0003-SDT_4_0_–_Proposed_Changes_to_XSD' into...

Merge branch 'RDM-2019-0003-SDT_4_0_–_Proposed_Changes_to_XSD' into WI-0081-Smart_Device_Template_4_0

# Conflicts:
#	SDT/schema4.0/docs/SDT_UML.uxf
parents f14d95e8 4d34f5bd
No related branches found
No related tags found
No related merge requests found
Showing
with 1045 additions and 471 deletions
......@@ -92,7 +92,7 @@
<schemavalidate warn="true">
<fileset dir="${basedir}/test" includes="*.xml"/>
<attribute name="http://apache.org/xml/features/xinclude" value="true"/>
<schema namespace="http://homegatewayinitiative.org/xml/dal/3.0"
<schema namespace="http://www.onem2m.org/xml/sdt/4.0"
file="${path.src}/domain.xsd" />
<schema namespace="http://www.w3.org/2001/XInclude"
file="${basedir}/etc/XInclude.xsd" />
......
namespace local = ""
default namespace xsl = "http://homegatewayinitiative.org/xml/dal/3.0"
default namespace xsl = "http://www.onem2m.org/xml/sdt/4.0"
namespace xi = "http://www.w3.org/2001/XInclude"
version = "1.0"
......
......@@ -11,45 +11,33 @@ start = Domain
Domain =
element Domain {
attribute xml:base { xsd:anyURI }?,
attribute id { xsd:ID },
attribute id { xsd:Name },
attribute semanticURI { xsd:anyURI }?,
DocDef,
element Imports { Domain+ }?,
element Modules {
element ModuleClass { ModuleDef }+
}?,
element Devices {
element Device {
attribute id { xsd:Name },
DocDef,
PropertiesDef?,
Modules?,
element SubDevices {
element SubDevice {
attribute id { xsd:Name },
DocDef,
PropertiesDef?,
Modules?
}+
}?
}+
}?
element DataTypes { DataTypeDef+ }?,
ModuleClassesDef?,
DeviceClassesDef?,
ProductClassesDef?
}
PropertiesDef =
element Properties {
element Property {
attribute name { text },
attribute name { xsd:Name },
attribute optional { xsd:boolean }?,
attribute value { text }?,
attribute semanticURI { xsd:anyURI }?,
DocDef,
SimpleType
}+
}
DataTypeDef =
element DataType {
attribute name { text }?,
attribute name { xsd:Name }?,
attribute unitOfMeasure { text }?,
attribute semanticURI { xsd:anyURI }?,
DocDef,
(StructType | ArrayType | SimpleType),
(ExtendDef? | (StructType | ArrayType | SimpleType | EnumType)),
ConstraintsDef?
}
StructType = element Struct { DataTypeDef+ }
......@@ -58,6 +46,7 @@ SimpleType =
element SimpleType {
attribute type { BasicType }
}
EnumType = element Enum { EnumValueDef+ }
BasicType =
"integer"
| "boolean"
......@@ -65,18 +54,27 @@ BasicType =
| "byte"
| "float"
| "array"
| "enum"
| "date"
| "time"
| "datetime"
| "blob"
| "uri"
| "void"
EnumValueDef =
element EnumValue {
attribute name { xsd:Name },
attribute value { text },
attribute type { BasicType }?,
attribute semanticURI { xsd:anyURI }?,
DocDef
}
ConstraintsDef =
element Constraints {
element Constraint {
attribute name { text },
attribute name { xsd:Name },
attribute type { BasicType }?,
attribute value { text }?,
attribute semanticURI { xsd:anyURI }?,
DocDef
}+
}
......@@ -95,27 +93,60 @@ DocDef =
element caption { text }
})*
}?
ModuleDef =
attribute name { text },
attribute optional { xsd:boolean }?,
element extends {
attribute domain { xsd:IDREF },
attribute class { text }
}?,
DocDef,
PropertiesDef?,
Actions?,
Data?,
Events?
Modules =
element Modules {
element Module { ModuleDef }+
DeviceClassesDef =
element DeviceClasses {
element DeviceClass {
attribute id { xsd:Name },
attribute semanticURI { xsd:anyURI }?,
DocDef,
PropertiesDef?,
ModuleClassesDef?,
SubDevicesRef?
}+
}
SubDevicesRef =
element SubDevices {
element SubDevice {
attribute id { xsd:Name },
attribute semanticURI { xsd:anyURI }?,
DocDef,
PropertiesDef?,
ModuleClassesDef?
}+
}
ModuleClassesDef =
element ModuleClasses {
element ModuleClass {
attribute name { xsd:Name },
attribute optional { xsd:boolean }?,
attribute semanticURI { xsd:anyURI }?,
DocDef,
ExtendDef?,
PropertiesDef?,
Actions?,
Data?,
Events?
}+
}
ProductClassesDef =
element ProductClasses {
element ProductClass {
attribute id { xsd:Name },
attribute semanticURI { xsd:anyURI }?,
DocDef,
ExtendDef?,
PropertiesDef?,
ModuleClassesDef?,
SubDevicesRef?,
element DeviceClass { ExtendDef }?
}+
}
Actions =
element Actions {
element Action {
attribute name { text },
attribute name { xsd:Name },
attribute optional { xsd:boolean }?,
attribute semanticURI { xsd:anyURI }?,
DocDef,
DataTypeDef?,
ArgDef?
......@@ -124,7 +155,10 @@ Actions =
ArgDef =
element Args {
element Arg {
attribute name { text },
attribute name { xsd:Name },
attribute optional { xsd:boolean }?,
attribute default { text }?,
attribute semanticURI { xsd:anyURI }?,
DocDef,
DataTypeDef
}+
......@@ -132,11 +166,13 @@ ArgDef =
Data =
element Data {
element DataPoint {
attribute name { text },
attribute name { xsd:Name },
attribute optional { xsd:boolean }?,
attribute writable { xsd:boolean }?,
attribute readable { xsd:boolean }?,
attribute eventable { xsd:boolean }?,
attribute default { text }?,
attribute semanticURI { xsd:anyURI }?,
DocDef,
DataTypeDef
}+
......@@ -144,9 +180,31 @@ Data =
Events =
element Events {
element Event {
attribute name { text },
attribute name { xsd:Name },
attribute optional { xsd:boolean }?,
attribute semanticURI { xsd:anyURI }?,
DocDef,
Data?
}+
}
ExtendDef =
element Extend {
attribute domain { xsd:Name },
attribute entity { xsd:Name },
(element Exclude {
attribute name { xsd:Name },
attribute type { ExtendType }
}
| element Include {
attribute name { xsd:Name },
attribute type { ExtendType }
})?
}
ExtendType =
"action"
| "datapoint"
| "event"
| "moduleclass"
| "property"
| "device"
| "subdevice"
targetNamespace="http://homegatewayinitiative.org/xml/dal/3.0"
xmlns="http://homegatewayinitiative.org/xml/dal/3.0"
targetNamespace="http://www.onem2m.org/xml/sdt/4.0"
xmlns="http://www.onem2m.org/xml/sdt/4.0"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
<locatingRules xmlns="http://thaiopensource.com/ns/locating-rules/1.0">
<namespace ns="http://homegatewayinitiative.org/xml/dal/2.0" typeId="DAL"/>
<namespace ns="http://www.onem2m.org/xml/sdt/4.0" typeId="DAL"/>
<namespace ns="http://www.w3.org/2001/XInclude" typeId="XINC"/>
<typeId id="DAL" uri="dal.rnc"/>
......
......@@ -112,18 +112,21 @@
This property indicates whether the door/cover is open or closed.
Washing machine setting
This property indicates the current stage of the washing cycle.
......@@ -139,6 +142,7 @@
Reservation ON/OFF
......
<?xml version="1.0" encoding="ISO-8859-1"?>
BooleanState is the preferred module for modelling a
functionality corresponding to an underlying binary state. This
module should be used to abstract away from the actual datatype
and values in question. Note that the module does not define whether
the execution mode is blocking or non-blocking.
Obtain the current associated state.
BooleanState is the preferred module for modelling a
functionality corresponding to an underlying binary state. This
module should be used to abstract away from the actual datatype
and values in question. Note that the module does not define whether
the execution mode is blocking or non-blocking.
Obtain the current associated state.
Set the associated state to the specified value.
The desired value of the associated state.
Set the associated state to the specified value.
The desired value of the associated state.
<?xml version="1.0" encoding="ISO-8859-1"?>
PowerSwitch
Telekom Innovation Laboratories
This device is intended as a demonstration of how to use the
abstract modules defined in the HGI Core domain. The
vendor has provided a proprietry module with two operations
on and off. This is clearly a candidate for the
module class BooleanState.
The proprietry interface for turning the switch on and off.
Actions for setting the state to on or off
and for querying the state.
Turn the switch on.
Turn the switch off.
Query the state of the switch. Returns the string "on"
or "off".
An event that indicates the new state of the switch.
This device is intended as a demonstration of how to use the abstract modules defined in the HGI Core domain. The vendor has provided a proprietry module with two operations on and off. This is clearly a candidate for the module class BooleanState.
Original value: PowerSwitch
Original value: Telekom Innovation Laboratories
The proprietry interface for turning the switch on and off. Actions for setting the state to on or offand for querying the state.
Turn the switch on.
Turn the switch off.
Query the state of the switch. Returns the string "on" or "off".
An event that indicates the new state of the switch.
......@@ -16,6 +16,9 @@
Obtain the current associated state.
......@@ -23,7 +26,12 @@
The desired value of the associated state.
The desired value of the associated state.
......@@ -32,6 +40,9 @@
......@@ -47,14 +58,29 @@
Multi Socket Electrical-Extension-Block
HGI
1.0
http://www.homegatewayinitative.org
1234.5
This device is intended as a demonstration of how to define a Root Device with multiple sub-devices.
This device is intended as a demonstration of how to define a Root Device with multiple sub-devices.
Original value: Multi Socket Electrical-Extension-Block
Original value: HGI
Original value: 1.0
Original value: http://www.homegatewayinitative.org
Original value: 1234.5
......@@ -62,23 +88,84 @@
The proprietry interface for turning all switches of the extension block on and off.
The action "BooleanState:get" returns "true" when any of the sub-devices is in the state "on", otherwise it returns "false".
Version for this ModuleClass
Get the power consumption.
This is an example simple data type with a minimum-value constraint.
The value must be equal or greater 0.0
Steps are 0.1
This datapoint represents the firmware version of the extension block.
This datapoint is an array of strings with the names of the contained devices.
......@@ -93,11 +180,15 @@
PowerSwitch 1
HGI
This sub device is intended as a demonstration of how to use the abstract modules defined in the HGI Core domain.
This sub device is intended as a demonstration of how to use the abstract modules defined in the HGI Core domain.
......@@ -110,11 +201,21 @@
PowerSwitch 2
HGI
This sub device is intended as a demonstration of how to use the abstract modules defined in the HGI Core domain.
This sub device is intended as a demonstration of how to use the abstract modules defined in the HGI Core domain.
......
......@@ -26,8 +26,13 @@
</attribute>
</optional>
<attribute name="id">
<data type="ID"/>
<data type="Name"/>
</attribute>
<optional>
<attribute name="semanticURI">
<data type="anyURI"/>
</attribute>
</optional>
<ref name="DocDef"/>
<optional>
<element name="Imports">
......@@ -37,49 +42,20 @@
</element>
</optional>
<optional>
<element name="Modules">
<element name="DataTypes">
<oneOrMore>
<element name="ModuleClass">
<ref name="ModuleDef"/>
</element>
<ref name="DataTypeDef"/>
</oneOrMore>
</element>
</optional>
<optional>
<element name="Devices">
<oneOrMore>
<element name="Device">
<attribute name="id">
<data type="Name"/>
</attribute>
<ref name="DocDef"/>
<optional>
<ref name="PropertiesDef"/>
</optional>
<optional>
<ref name="Modules"/>
</optional>
<optional>
<element name="SubDevices">
<oneOrMore>
<element name="SubDevice">
<attribute name="id">
<data type="Name"/>
</attribute>
<ref name="DocDef"/>
<optional>
<ref name="PropertiesDef"/>
</optional>
<optional>
<ref name="Modules"/>
</optional>
</element>
</oneOrMore>
</element>
</optional>
</element>
</oneOrMore>
</element>
<ref name="ModuleClassesDef"/>
</optional>
<optional>
<ref name="DeviceClassesDef" />
</optional>
<optional>
<ref name="ProductClassesDef" />
</optional>
</element>
</define>
......@@ -90,7 +66,7 @@
<oneOrMore>
<element name="Property">
<attribute name="name">
<text/>
<data type="Name"/>
</attribute>
<optional>
<attribute name="optional">
......@@ -102,6 +78,11 @@
<text/>
</attribute>
</optional>
<optional>
<attribute name="semanticURI">
<data type="anyURI"/>
</attribute>
</optional>
<ref name="DocDef"/>
<ref name="SimpleType" />
</element>
......@@ -114,7 +95,7 @@
<element name="DataType">
<optional>
<attribute name="name">
<text/>
<data type="Name"/>
</attribute>
</optional>
<optional>
......@@ -122,11 +103,22 @@
<text/>
</attribute>
</optional>
<optional>
<attribute name="semanticURI">
<data type="anyURI"/>
</attribute>
</optional>
<ref name="DocDef"/>
<choice>
<ref name="StructType" />
<ref name="ArrayType" />
<ref name="SimpleType" />
<optional>
<ref name="ExtendDef" />
</optional>
<choice>
<ref name="StructType" />
<ref name="ArrayType" />
<ref name="SimpleType" />
<ref name="EnumType" />
</choice>
</choice>
<optional>
<ref name="ConstraintsDef"/>
......@@ -158,6 +150,15 @@
</attribute>
</element>
</define>
<define name="EnumType">
<element name="Enum">
<oneOrMore>
<ref name="EnumValueDef" />
</oneOrMore>
</element>
</define>
<define name="BasicType">
......@@ -168,22 +169,45 @@
<value>byte</value>
<value>float</value>
<value>array</value>
<value>enum</value>
<value>date</value>
<value>time</value>
<value>datetime</value>
<value>blob</value>
<value>uri</value>
<value>void</value>
</choice>
</define>
<define name="EnumValueDef">
<element name="EnumValue">
<attribute name="name">
<data type="Name"/>
</attribute>
<attribute name="value">
<text/>
</attribute>
<optional>
<attribute name="type">
<ref name="BasicType"/>
</attribute>
</optional>
<optional>
<attribute name="semanticURI">
<data type="anyURI"/>
</attribute>
</optional>
<ref name="DocDef"/>
</element>
</define>
<define name="ConstraintsDef">
<element name="Constraints">
<oneOrMore>
<element name="Constraint">
<attribute name="name">
<text/>
<data type="Name"/>
</attribute>
<optional>
<attribute name="type">
......@@ -195,12 +219,18 @@
<text/>
</attribute>
</optional>
<optional>
<attribute name="semanticURI">
<data type="anyURI"/>
</attribute>
</optional>
<ref name="DocDef"/>
</element>
</oneOrMore>
</element>
</define>
<define name="DocText">
<zeroOrMore>
<choice>
......@@ -244,44 +274,128 @@
</define>
<define name="ModuleDef">
<attribute name="name">
<text/>
</attribute>
<optional>
<attribute name="optional">
<data type="boolean"/>
</attribute>
</optional>
<optional>
<element name="extends">
<attribute name="domain">
<data type="IDREF"/>
</attribute>
<attribute name="class"/>
</element>
</optional>
<ref name="DocDef"/>
<optional>
<ref name="PropertiesDef"/>
</optional>
<optional>
<ref name="Actions"/>
</optional>
<optional>
<ref name="Data"/>
</optional>
<optional>
<ref name="Events"/>
</optional>
<define name="DeviceClassesDef">
<element name="DeviceClasses">
<oneOrMore>
<element name="DeviceClass">
<attribute name="id">
<data type="Name"/>
</attribute>
<optional>
<attribute name="semanticURI">
<data type="anyURI"/>
</attribute>
</optional>
<ref name="DocDef"/>
<optional>
<ref name="PropertiesDef"/>
</optional>
<optional>
<ref name="ModuleClassesDef"/>
</optional>
<optional>
<ref name="SubDevicesRef" />
</optional>
</element>
</oneOrMore>
</element>
</define>
<define name="Modules">
<element name="Modules">
<define name="SubDevicesRef">
<element name="SubDevices">
<oneOrMore>
<element name="Module">
<ref name="ModuleDef"/>
<element name="SubDevice">
<attribute name="id">
<data type="Name"/>
</attribute>
<optional>
<attribute name="semanticURI">
<data type="anyURI"/>
</attribute>
</optional>
<ref name="DocDef"/>
<optional>
<ref name="PropertiesDef"/>
</optional>
<optional>
<ref name="ModuleClassesDef"/>
</optional>
</element>
</oneOrMore>
</element>
</define>
<define name="ModuleClassesDef">
<element name="ModuleClasses">
<oneOrMore>
<element name="ModuleClass">
<attribute name="name">
<data type="Name"/>
</attribute>
<optional>
<attribute name="optional">
<data type="boolean"/>
</attribute>
</optional>
<optional>
<attribute name="semanticURI">
<data type="anyURI"/>
</attribute>
</optional>
<ref name="DocDef"/>
<optional>
<ref name="ExtendDef" />
</optional>
<optional>
<ref name="PropertiesDef"/>
</optional>
<optional>
<ref name="Actions"/>
</optional>
<optional>
<ref name="Data"/>
</optional>
<optional>
<ref name="Events"/>
</optional>
</element>
</oneOrMore>
</element>
</define>
<define name="ProductClassesDef">
<element name="ProductClasses">
<oneOrMore>
<element name="ProductClass">
<attribute name="id">
<data type="Name"/>
</attribute>
<optional>
<attribute name="semanticURI">
<data type="anyURI"/>
</attribute>
</optional>
<ref name="DocDef"/>
<optional>
<ref name="ExtendDef" />
</optional>
<optional>
<ref name="PropertiesDef"/>
</optional>
<optional>
<ref name="ModuleClassesDef"/>
</optional>
<optional>
<ref name="SubDevicesRef" />
</optional>
<optional>
<element name="DeviceClass">
<ref name="ExtendDef" />
</element>
</optional>
</element>
</oneOrMore>
</element>
......@@ -293,13 +407,18 @@
<oneOrMore>
<element name="Action">
<attribute name="name">
<text/>
<data type="Name"/>
</attribute>
<optional>
<attribute name="optional">
<data type="boolean"/>
</attribute>
</optional>
<optional>
<attribute name="semanticURI">
<data type="anyURI"/>
</attribute>
</optional>
<ref name="DocDef"/>
<optional>
<ref name="DataTypeDef"/>
......@@ -317,7 +436,24 @@
<element name="Args">
<oneOrMore>
<element name="Arg">
<attribute name="name"/>
<attribute name="name">
<data type="Name"/>
</attribute>
<optional>
<attribute name="optional">
<data type="boolean"/>
</attribute>
</optional>
<optional>
<attribute name="default">
<text />
</attribute>
</optional>
<optional>
<attribute name="semanticURI">
<data type="anyURI"/>
</attribute>
</optional>
<ref name="DocDef"/>
<ref name="DataTypeDef"/>
</element>
......@@ -331,7 +467,7 @@
<oneOrMore>
<element name="DataPoint">
<attribute name="name">
<text/>
<data type="Name"/>
</attribute>
<optional>
<attribute name="optional">
......@@ -353,6 +489,16 @@
<data type="boolean"/>
</attribute>
</optional>
<optional>
<attribute name="default">
<text />
</attribute>
</optional>
<optional>
<attribute name="semanticURI">
<data type="anyURI"/>
</attribute>
</optional>
<ref name="DocDef"/>
<ref name="DataTypeDef"/>
</element>
......@@ -366,13 +512,18 @@
<oneOrMore>
<element name="Event">
<attribute name="name">
<text/>
<data type="Name"/>
</attribute>
<optional>
<attribute name="optional">
<data type="boolean"/>
</attribute>
</optional>
<optional>
<attribute name="semanticURI">
<data type="anyURI"/>
</attribute>
</optional>
<ref name="DocDef"/>
<optional>
<ref name="Data" />
......@@ -382,5 +533,50 @@
</element>
</define>
<define name="ExtendDef">
<element name="Extend">
<attribute name="domain">
<data type="Name"/>
</attribute>
<attribute name="entity">
<data type="Name"/>
</attribute>
<optional>
<choice>
<element name="Exclude">
<attribute name="name">
<data type="Name"/>
</attribute>
<attribute name="type">
<ref name="ExtendType" />
</attribute>
</element>
<element name="Include">
<attribute name="name">
<data type="Name"/>
</attribute>
<attribute name="type">
<ref name="ExtendType" />
</attribute>
</element>
</choice>
</optional>
</element>
</define>
<define name="ExtendType">
<choice>
<value>action</value>
<value>datapoint</value>
<value>event</value>
<value>moduleclass</value>
<value>property</value>
<value>device</value>
<value>subdevice</value>
</choice>
</define>
</grammar>
......@@ -9,28 +9,28 @@
- See the license text at [https://opensource.org/licenses/BSD-3-Clause for
- full details.
-->
<xs:schema targetNamespace="http://homegatewayinitiative.org/xml/dal/3.0"
xmlns="http://homegatewayinitiative.org/xml/dal/3.0"
<xs:schema targetNamespace="http://www.onem2m.org/xml/sdt/4.0"
xmlns="http://www.onem2m.org/xml/sdt/4.0"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/03/xml.xsd"/>
<xs:element name="Domain">
<xs:complexType>
<xs:sequence>
<xs:group ref="DocDef"/>
<xs:element minOccurs="0" ref="Imports"/>
<xs:element minOccurs="0" name="Modules">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="ModuleClass"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" ref="Devices"/>
</xs:sequence>
<xs:attribute ref="xml:base"/>
<xs:attribute name="id" use="required" type="xs:ID"/>
<xs:complexContent>
<xs:extension base="DocDef">
<xs:sequence>
<xs:element minOccurs="0" ref="Imports"/>
<xs:element minOccurs="0" ref="DataTypes"/>
<xs:element minOccurs="0" ref="ModuleClasses"/>
<xs:element minOccurs="0" ref="DeviceClasses"/>
<xs:element minOccurs="0" ref="ProductClasses"/>
</xs:sequence>
<xs:attribute ref="xml:base"/>
<xs:attribute name="id" use="required" type="xs:Name"/>
<xs:attribute name="semanticURI" type="xs:anyURI"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="Imports">
......@@ -40,40 +40,11 @@
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="ModuleClass" type="ModuleDef"/>
<xs:element name="Devices">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="Device"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Device">
<xs:complexType>
<xs:sequence>
<xs:group ref="DocDef"/>
<xs:element minOccurs="0" ref="Properties"/>
<xs:element minOccurs="0" ref="Modules"/>
<xs:element minOccurs="0" ref="SubDevices"/>
</xs:sequence>
<xs:attribute name="id" use="required" type="xs:Name"/>
</xs:complexType>
</xs:element>
<xs:element name="SubDevices">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="SubDevice"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="SubDevice">
<xs:element name="DataTypes">
<xs:complexType>
<xs:sequence>
<xs:group ref="DocDef"/>
<xs:element minOccurs="0" ref="Properties"/>
<xs:element minOccurs="0" ref="Modules"/>
<xs:element maxOccurs="unbounded" ref="DataType"/>
</xs:sequence>
<xs:attribute name="id" use="required" type="xs:Name"/>
</xs:complexType>
</xs:element>
<xs:element name="Properties">
......@@ -85,28 +56,40 @@
</xs:element>
<xs:element name="Property">
<xs:complexType>
<xs:sequence>
<xs:group ref="DocDef"/>
<xs:element ref="SimpleType"/>
</xs:sequence>
<xs:attribute name="name" use="required"/>
<xs:attribute name="optional" type="xs:boolean"/>
<xs:attribute name="value"/>
<xs:complexContent>
<xs:extension base="DocDef">
<xs:sequence>
<xs:element ref="SimpleType"/>
</xs:sequence>
<xs:attribute name="name" use="required" type="xs:Name"/>
<xs:attribute name="optional" type="xs:boolean"/>
<xs:attribute name="value"/>
<xs:attribute name="semanticURI" type="xs:anyURI"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="DataType">
<xs:complexType>
<xs:sequence>
<xs:group ref="DocDef"/>
<xs:choice>
<xs:element ref="Struct"/>
<xs:element ref="Array"/>
<xs:element ref="SimpleType"/>
</xs:choice>
<xs:element minOccurs="0" ref="Constraints"/>
</xs:sequence>
<xs:attribute name="name"/>
<xs:attribute name="unitOfMeasure"/>
<xs:complexContent>
<xs:extension base="DocDef">
<xs:sequence>
<xs:choice>
<xs:element minOccurs="0" ref="Extend"/>
<xs:choice>
<xs:element ref="Struct"/>
<xs:element ref="Array"/>
<xs:element ref="SimpleType"/>
<xs:element ref="Enum"/>
</xs:choice>
</xs:choice>
<xs:element minOccurs="0" ref="Constraints"/>
</xs:sequence>
<xs:attribute name="name" type="xs:Name"/>
<xs:attribute name="unitOfMeasure"/>
<xs:attribute name="semanticURI" type="xs:anyURI"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="Struct">
......@@ -128,6 +111,13 @@
<xs:attribute name="type" use="required" type="BasicType"/>
</xs:complexType>
</xs:element>
<xs:element name="Enum">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="EnumValue"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:simpleType name="BasicType">
<xs:restriction base="xs:token">
<xs:enumeration value="integer"/>
......@@ -136,14 +126,26 @@
<xs:enumeration value="byte"/>
<xs:enumeration value="float"/>
<xs:enumeration value="array"/>
<xs:enumeration value="enum"/>
<xs:enumeration value="date"/>
<xs:enumeration value="time"/>
<xs:enumeration value="datetime"/>
<xs:enumeration value="blob"/>
<xs:enumeration value="uri"/>
<xs:enumeration value="void"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="EnumValue">
<xs:complexType>
<xs:complexContent>
<xs:extension base="DocDef">
<xs:attribute name="name" use="required" type="xs:Name"/>
<xs:attribute name="value" use="required"/>
<xs:attribute name="type" type="BasicType"/>
<xs:attribute name="semanticURI" type="xs:anyURI"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="Constraints">
<xs:complexType>
<xs:sequence>
......@@ -153,10 +155,14 @@
</xs:element>
<xs:element name="Constraint">
<xs:complexType>
<xs:group ref="DocDef"/>
<xs:attribute name="name" use="required"/>
<xs:attribute name="type" type="BasicType"/>
<xs:attribute name="value"/>
<xs:complexContent>
<xs:extension base="DocDef">
<xs:attribute name="name" use="required" type="xs:Name"/>
<xs:attribute name="type" type="BasicType"/>
<xs:attribute name="value"/>
<xs:attribute name="semanticURI" type="xs:anyURI"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:group name="DocText">
......@@ -172,11 +178,11 @@
<xs:element name="b" type="xs:string"/>
<xs:element name="tt" type="xs:string"/>
<!-- <Doc> element is always optional -->
<xs:group name="DocDef">
<xs:complexType name="DocDef">
<xs:sequence>
<xs:element minOccurs="0" ref="Doc"/>
</xs:sequence>
</xs:group>
</xs:complexType>
<xs:element name="Doc">
<xs:complexType mixed="true">
<xs:choice>
......@@ -202,32 +208,103 @@
</xs:complexType>
</xs:element>
<xs:element name="caption" type="xs:string"/>
<xs:complexType name="ModuleDef">
<xs:sequence>
<xs:element minOccurs="0" ref="extends"/>
<xs:group ref="DocDef"/>
<xs:element minOccurs="0" ref="Properties"/>
<xs:element minOccurs="0" ref="Actions"/>
<xs:element minOccurs="0" ref="Data"/>
<xs:element minOccurs="0" ref="Events"/>
</xs:sequence>
<xs:attribute name="name" use="required"/>
<xs:attribute name="optional" type="xs:boolean"/>
</xs:complexType>
<xs:element name="extends">
<xs:element name="DeviceClasses">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="DeviceClass">
<xs:complexType>
<xs:complexContent>
<xs:extension base="DocDef">
<xs:sequence>
<xs:element minOccurs="0" ref="Properties"/>
<xs:element minOccurs="0" ref="ModuleClasses"/>
<xs:element minOccurs="0" ref="SubDevices"/>
</xs:sequence>
<xs:attribute name="id" use="required" type="xs:Name"/>
<xs:attribute name="semanticURI" type="xs:anyURI"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="SubDevices">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="SubDevice"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="SubDevice">
<xs:complexType>
<xs:attribute name="domain" use="required" type="xs:IDREF"/>
<xs:attribute name="class" use="required"/>
<xs:complexContent>
<xs:extension base="DocDef">
<xs:sequence>
<xs:element minOccurs="0" ref="Properties"/>
<xs:element minOccurs="0" ref="ModuleClasses"/>
</xs:sequence>
<xs:attribute name="id" use="required" type="xs:Name"/>
<xs:attribute name="semanticURI" type="xs:anyURI"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="Modules">
<xs:element name="ModuleClasses">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="Module"/>
<xs:element maxOccurs="unbounded" ref="ModuleClass"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Module" type="ModuleDef"/>
<xs:element name="ModuleClass">
<xs:complexType>
<xs:complexContent>
<xs:extension base="DocDef">
<xs:sequence>
<xs:element minOccurs="0" ref="Extend"/>
<xs:element minOccurs="0" ref="Properties"/>
<xs:element minOccurs="0" ref="Actions"/>
<xs:element minOccurs="0" ref="Data"/>
<xs:element minOccurs="0" ref="Events"/>
</xs:sequence>
<xs:attribute name="name" use="required" type="xs:Name"/>
<xs:attribute name="optional" type="xs:boolean"/>
<xs:attribute name="semanticURI" type="xs:anyURI"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="ProductClasses">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="ProductClass"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="ProductClass">
<xs:complexType>
<xs:complexContent>
<xs:extension base="DocDef">
<xs:sequence>
<xs:element minOccurs="0" ref="Extend"/>
<xs:element minOccurs="0" ref="Properties"/>
<xs:element minOccurs="0" ref="ModuleClasses"/>
<xs:element minOccurs="0" ref="SubDevices"/>
<xs:element minOccurs="0" name="DeviceClass">
<xs:complexType>
<xs:sequence>
<xs:element ref="Extend"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="id" use="required" type="xs:Name"/>
<xs:attribute name="semanticURI" type="xs:anyURI"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="Actions">
<xs:complexType>
<xs:sequence>
......@@ -237,13 +314,17 @@
</xs:element>
<xs:element name="Action">
<xs:complexType>
<xs:sequence>
<xs:group ref="DocDef"/>
<xs:element minOccurs="0" ref="DataType"/>
<xs:element minOccurs="0" ref="Args"/>
</xs:sequence>
<xs:attribute name="name" use="required"/>
<xs:attribute name="optional" type="xs:boolean"/>
<xs:complexContent>
<xs:extension base="DocDef">
<xs:sequence>
<xs:element minOccurs="0" ref="DataType"/>
<xs:element minOccurs="0" ref="Args"/>
</xs:sequence>
<xs:attribute name="name" use="required" type="xs:Name"/>
<xs:attribute name="optional" type="xs:boolean"/>
<xs:attribute name="semanticURI" type="xs:anyURI"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="Args">
......@@ -255,11 +336,17 @@
</xs:element>
<xs:element name="Arg">
<xs:complexType>
<xs:sequence>
<xs:group ref="DocDef"/>
<xs:element ref="DataType"/>
</xs:sequence>
<xs:attribute name="name" use="required"/>
<xs:complexContent>
<xs:extension base="DocDef">
<xs:sequence>
<xs:element ref="DataType"/>
</xs:sequence>
<xs:attribute name="name" use="required" type="xs:Name"/>
<xs:attribute name="optional" type="xs:boolean"/>
<xs:attribute name="default"/>
<xs:attribute name="semanticURI" type="xs:anyURI"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="Data">
......@@ -271,15 +358,20 @@
</xs:element>
<xs:element name="DataPoint">
<xs:complexType>
<xs:sequence>
<xs:group ref="DocDef"/>
<xs:element ref="DataType"/>
</xs:sequence>
<xs:attribute name="name" use="required"/>
<xs:attribute name="optional" type="xs:boolean"/>
<xs:attribute name="writable" type="xs:boolean"/>
<xs:attribute name="readable" type="xs:boolean"/>
<xs:attribute name="eventable" type="xs:boolean"/>
<xs:complexContent>
<xs:extension base="DocDef">
<xs:sequence>
<xs:element ref="DataType"/>
</xs:sequence>
<xs:attribute name="name" use="required" type="xs:Name"/>
<xs:attribute name="optional" type="xs:boolean"/>
<xs:attribute name="writable" type="xs:boolean"/>
<xs:attribute name="readable" type="xs:boolean"/>
<xs:attribute name="eventable" type="xs:boolean"/>
<xs:attribute name="default"/>
<xs:attribute name="semanticURI" type="xs:anyURI"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="Events">
......@@ -291,12 +383,49 @@
</xs:element>
<xs:element name="Event">
<xs:complexType>
<xs:sequence>
<xs:group ref="DocDef"/>
<xs:element minOccurs="0" ref="Data"/>
</xs:sequence>
<xs:attribute name="name" use="required"/>
<xs:attribute name="optional" type="xs:boolean"/>
<xs:complexContent>
<xs:extension base="DocDef">
<xs:sequence>
<xs:element minOccurs="0" ref="Data"/>
</xs:sequence>
<xs:attribute name="name" use="required" type="xs:Name"/>
<xs:attribute name="optional" type="xs:boolean"/>
<xs:attribute name="semanticURI" type="xs:anyURI"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="Extend">
<xs:complexType>
<xs:choice minOccurs="0">
<xs:element ref="Exclude"/>
<xs:element ref="Include"/>
</xs:choice>
<xs:attribute name="domain" use="required" type="xs:Name"/>
<xs:attribute name="entity" use="required" type="xs:Name"/>
</xs:complexType>
</xs:element>
<xs:element name="Exclude">
<xs:complexType>
<xs:attribute name="name" use="required" type="xs:Name"/>
<xs:attribute name="type" use="required" type="ExtendType"/>
</xs:complexType>
</xs:element>
<xs:element name="Include">
<xs:complexType>
<xs:attribute name="name" use="required" type="xs:Name"/>
<xs:attribute name="type" use="required" type="ExtendType"/>
</xs:complexType>
</xs:element>
<xs:simpleType name="ExtendType">
<xs:restriction base="xs:token">
<xs:enumeration value="action"/>
<xs:enumeration value="datapoint"/>
<xs:enumeration value="event"/>
<xs:enumeration value="moduleclass"/>
<xs:enumeration value="property"/>
<xs:enumeration value="device"/>
<xs:enumeration value="subdevice"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
......@@ -8,7 +8,7 @@
document ... -->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:dal="http://homegatewayinitiative.org/xml/dal/2.0"
xmlns:dal="http://www.onem2m.org/xml/sdt/4.0"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:redirect="http://xml.apache.org/xalan/redirect"
......
......@@ -3,13 +3,13 @@
<!-- Example SDT definition taken from EchonetLite https://github.com/ECHONET-Consortium -->
<Domain xmlns="http://homegatewayinitiative.org/xml/dal/3.0"
<Domain xmlns="http://www.onem2m.org/xml/sdt/4.0"
xmlns:xi="http://www.w3.org/2001/XInclude"
id="example.based.on.echonetLite">
<!-- Various examples for module classes -->
<Modules>
<ModuleClasses>
<ModuleClass name="operationStatus">
<Data>
<DataPoint name="operationStatus" readable="true" writable="true">
......@@ -62,13 +62,13 @@
</DataPoint>
</Data>
</ModuleClass>
</Modules>
</ModuleClasses>
<!-- Very simple example for a washing machine definition -->
<Devices>
<Device id="SimpleWaschingMachine">
<DeviceClasses>
<DeviceClass id="SimpleWaschingMachine">
<Properties>
<Property name="Name" value="washing machine">
<SimpleType type="string" />
......@@ -78,28 +78,28 @@
</Property>
</Properties>
<Modules>
<ModuleClasses>
<!-- Inheriting ModuleClasses from the global generic ModuleClasses -->
<Module name="installationLocation">
<extends domain="example.based.on.echonetLite" class="installationLocation"/>
</Module>
<ModuleClass name="installationLocation">
<Extend domain="example.based.on.echonetLite" entity="installationLocation"/>
</ModuleClass>
<Module name="measuredInstantaneousPowerConsumption">
<extends domain="example.based.on.echonetLite" class="measuredInstantaneousPowerConsumption"/>
</Module>
<ModuleClass name="measuredInstantaneousPowerConsumption">
<Extend domain="example.based.on.echonetLite" entity="measuredInstantaneousPowerConsumption"/>
</ModuleClass>
<Module name="temperatureSensorDataPoints">
<extends domain="example.based.on.echonetLite" class="temperatureSensorDataPoints"/>
</Module>
<ModuleClass name="temperatureSensorDataPoints">
<Extend domain="example.based.on.echonetLite" entity="temperatureSensorDataPoints"/>
</ModuleClass>
<!-- The following Module inherits and extends a global generic ModuleClass with an event. Therefore, it is renamed to express
the change of name. -->
<Module name="washingMachineOperationStatus">
<extends domain="example.based.on.echonetLite" class="operationStatus"/>
<ModuleClass name="washingMachineOperationStatus">
<Extend domain="example.based.on.echonetLite" entity="operationStatus"/>
<!-- This Module extends the global one with an event. -->
......@@ -109,29 +109,32 @@
</Event>
</Events>
</Module>
</ModuleClass>
<!-- Data points local to the washing machine device -->
<Module name="washingMachineDataPoints">
<ModuleClass name="washingMachineDataPoints">
<Data>
<DataPoint name="door/CoverOpen/CloseStatus" readable="true" writable="false">
<DataPoint name="door_CoverOpen_CloseStatus" readable="true" writable="false">
<Doc>This property indicates whether the door/cover is open or closed.</Doc>
<DataType>
<SimpleType type="enum" />
<!-- <SimpleType type="enum" /> -->
<SimpleType type="string" />
</DataType>
</DataPoint>
<DataPoint name="washingMachineSetting" readable="true" writable="true">
<Doc>Washing machine setting</Doc>
<DataType>
<SimpleType type="enum" />
<!-- <SimpleType type="enum" /> -->
<SimpleType type="string" />
</DataType>
</DataPoint>
<DataPoint name="currentStageOfWashingCycle" readable="true" writable="false">
<Doc>This property indicates the current stage of the washing cycle.</Doc>
<DataType>
<SimpleType type="enum" />
<!-- <SimpleType type="enum" /> -->
<SimpleType type="string" />
</DataType>
</DataPoint>
<DataPoint name="timeRemainingToCompleteWashingCycle" readable="true" writable="false">
......@@ -149,7 +152,8 @@
<DataPoint name="onTimerReservationSetting" readable="true" writable="true">
<Doc>Reservation ON/OFF</Doc>
<DataType>
<SimpleType type="enum" />
<!-- <SimpleType type="enum" /> -->
<SimpleType type="boolean" />
</DataType>
</DataPoint>
<DataPoint name="onTimerSetting" readable="true" writable="true">
......@@ -166,8 +170,8 @@
</DataPoint>
</Data>
</Module>
</Modules>
</Device>
</Devices>
</ModuleClass>
</ModuleClasses>
</DeviceClass>
</DeviceClasses>
</Domain>
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Test the data types references -->
<Domain id="action-test" xmlns="http://www.onem2m.org/xml/sdt/4.0" xmlns:xi="http://www.w3.org/2001/XInclude">
<ModuleClasses>
<ModuleClass name="TestActions">
<Actions>
<Action name="testActionOptional" optional="true">
</Action>
</Actions>
</ModuleClass>
</ModuleClasses>
</Domain>
\ No newline at end of file
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Test the data types references -->
<Domain id="arg-test" xmlns="http://www.onem2m.org/xml/sdt/4.0" xmlns:xi="http://www.w3.org/2001/XInclude">
<ModuleClasses>
<ModuleClass name="TestArg">
<Actions>
<Action name="testActionOptional">
<Args>
<Arg name="argMandatory">
<DataType>
<SimpleType type="boolean" />
</DataType>
</Arg>
<Arg name="argOptional" optional="true">
<DataType>
<SimpleType type="boolean" />
</DataType>
</Arg>
</Args>
</Action>
<Action name="testActionDefault">
<Args>
<Arg name="arg1" default="true">
<DataType>
<SimpleType type="boolean" />
</DataType>
</Arg>
<Arg name="arg2" default="foo">
<DataType>
<SimpleType type="string" />
</DataType>
</Arg>
</Args>
</Action>
</Actions>
</ModuleClass>
</ModuleClasses>
</Domain>
\ No newline at end of file
<?xml version="1.0" encoding="iso-8859-1"?>
<Domain xmlns="http://homegatewayinitiative.org/xml/dal/3.0"
id="hgi.dal.core">
<Domain xmlns="http://www.onem2m.org/xml/sdt/4.0"
id="dal.core">
<Modules>
<ModuleClasses>
<ModuleClass name="BooleanState">
<Doc>
<tt>BooleanState</tt> is the preferred module for modelling a
......@@ -32,6 +32,6 @@
</Action>
</Actions>
</ModuleClass>
</Modules>
</ModuleClasses>
</Domain>
<?xml version="1.0" encoding="iso-8859-1"?>
<Domain xmlns:xi="http://www.w3.org/2001/XInclude"
xmlns="http://homegatewayinitiative.org/xml/dal/3.0"
id="com.telekom">
<Imports>
<xi:include href="./dal-core.xml" parse="xml" />
</Imports>
<Devices>
<Device id="switch.power">
<Doc>
This device is intended as a demonstration of how to use the
abstract modules defined in the <em>HGI Core</em> domain. The
vendor has provided a proprietry module with two operations
<tt>on</tt> and <tt>off</tt>. This is clearly a candidate for the
module class <tt>BooleanState</tt>.
</Doc>
<Properties>
<Property name="Name">
<Doc>Original value: PowerSwitch</Doc>
<SimpleType type="string" />
</Property>
<!-- The Vendor field should probably be part of the domain -->
<Property name="Vendor">
<Doc>Original value: Telekom Innovation Laboratories</Doc>
<SimpleType type="string" />
</Property>
</Properties>
<Modules>
<Module name="proprietaryPower">
<Doc>
The proprietry interface for turning the switch on and off.
Actions for setting the state to <tt>on</tt> or <tt>off</tt>
and for querying the state.
</Doc>
<Actions>
<Action name="on">
<Doc>
Turn the switch on.
</Doc>
</Action>
<Action name="off">
<Doc>
Turn the switch off.
</Doc>
</Action>
<Action name="state">
<Doc>Query the state of the switch. Returns the string "<tt>on</tt>" or "<tt>off</tt>".</Doc>
<DataType>
<SimpleType type="string" />
</DataType>
</Action>
</Actions>
<Events>
<Event name="switchEvent">
<Doc>An event that indicates the new state of the switch.
</Doc>
<Data>
<DataPoint name="state" writable="false">
<DataType>
<SimpleType type="boolean" />
</DataType>
</DataPoint>
</Data>
</Event>
</Events>
</Module>
<Module name="power">
<extends domain="hgi.dal.core" class="BooleanState"/>
</Module>
</Modules>
</Device>
</Devices>
</Domain>
<Domain id="com.telekom" xmlns="http://www.onem2m.org/xml/sdt/4.0" xmlns:xi="http://www.w3.org/2001/XInclude">
<Imports>
<xi:include href="./dal-core.xml" parse="xml"/>
</Imports>
<DeviceClasses>
<DeviceClass id="switch.power">
<Doc>This device is intended as a demonstration of how to use the abstract modules defined in the <em>HGI Core</em> domain. The vendor has provided a proprietry module with two operations <tt>on</tt> and <tt>off</tt>. This is clearly a candidate for the module class <tt>BooleanState</tt>.</Doc>
<Properties>
<Property name="Name">
<Doc>Original value: PowerSwitch</Doc>
<SimpleType type="string"/>
</Property>
<!-- The Vendor field should probably be part of the domain -->
<Property name="Vendor">
<Doc>Original value: Telekom Innovation Laboratories</Doc>
<SimpleType type="string"/>
</Property>
</Properties>
<ModuleClasses>
<ModuleClass name="proprietaryPower">
<Doc>The proprietry interface for turning the switch on and off. Actions for setting the state to <tt>on</tt> or <tt>off</tt>and for querying the state.</Doc>
<Actions>
<Action name="on">
<Doc>Turn the switch on.</Doc>
</Action>
<Action name="off">
<Doc>Turn the switch off.</Doc>
</Action>
<Action name="state">
<Doc>Query the state of the switch. Returns the string &quot;<tt>on</tt>&quot; or &quot;<tt>off</tt>&quot;.</Doc>
<DataType>
<SimpleType type="string"/>
</DataType>
</Action>
</Actions>
<Events>
<Event name="switchEvent">
<Doc>An event that indicates the new state of the switch.</Doc>
<Data>
<DataPoint name="state" writable="false">
<DataType>
<SimpleType type="boolean"/>
</DataType>
</DataPoint>
</Data>
</Event>
</Events>
</ModuleClass>
<ModuleClass name="power">
<Extend entity="BooleanState" domain="hgi.dal.core"/>
</ModuleClass>
</ModuleClasses>
</DeviceClass>
</DeviceClasses>
</Domain>
\ No newline at end of file
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Test the EnumType -->
<Domain id="datapoint-test" xmlns="http://www.onem2m.org/xml/sdt/4.0" xmlns:xi="http://www.w3.org/2001/XInclude">
<ModuleClasses>
<ModuleClass name="TestDataPoint">
<Data>
<DataPoint name="TestDataPoint" optional="true" default="foo">
<DataType>
<SimpleType type="string" />
</DataType>
</DataPoint>
</Data>
</ModuleClass>
</ModuleClasses>
</Domain>
\ No newline at end of file
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Test the data types references -->
<Domain id="datatypes-test" xmlns="http://www.onem2m.org/xml/sdt/4.0" xmlns:xi="http://www.w3.org/2001/XInclude">
<DataTypes>
<DataType name="temperatureType" unitOfMeasure="C">
<SimpleType type="float"/>
</DataType>
<DataType name="anEnumType">
<Enum>
<EnumValue name="red" type="integer" value="1"/>
<EnumValue name="green" value="2"/>
<EnumValue name="blue" value="3"/>
</Enum>
</DataType>
</DataTypes>
<ModuleClasses>
<ModuleClass name="TestDataTypes">
<Data>
<DataPoint name="TestDataPoint" writable="true">
<DataType>
<Extend domain="datatypes-test" entity="temperatureType" />
</DataType>
</DataPoint>
</Data>
</ModuleClass>
</ModuleClasses>
</Domain>
\ No newline at end of file
<?xml version="1.0" encoding="iso-8859-1"?>
<Domain xmlns="http://www.onem2m.org/xml/sdt/4.0" xmlns:xi="http://www.w3.org/2001/XInclude" id="deviceClass.test" >
<Imports>
<xi:include href="./dal-core.xml" parse="xml"/>
</Imports>
<DeviceClasses>
<DeviceClass id="Test">
<Doc>This is a test device.</Doc>
<Properties>
<Property name="aProperty">
<SimpleType type="string"></SimpleType>
</Property>
</Properties>
<ModuleClasses>
<ModuleClass name="aModuleClass">
<Extend domain="hgi.dal.core" entity="BooleanState" />
</ModuleClass>
</ModuleClasses>
</DeviceClass>
</DeviceClasses>
</Domain>
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment