...
 
Commits (2)
/.Introduction.md.html
/.SDT_Components.md.html
/.SDT_JSON.md.html
......@@ -154,11 +154,11 @@ An example for a compound device is a connected power-strip where each of the s
In real life of device manufacturing, there is an important concept of *Product* under a certain *DeviceClass*. For example, oneM2M may specify a generic *DeviceClass* called 'deviceSmartBracelt' with many fancy features (*ModuleClasses*). Based on the same *DeviceClass*, company A may design a *Product* called 'X-Fit' with only the *ModuleClass* of 'stepCounter' and the instantiated *Property* value of 'Manufacturer = Company A', while company B may design a *Product* called 'Y-Wristband' with the *ModuleClasses* of 'stepCounter' and 'heartRateMonitor' and the instantiated *Property* value of 'Manufacturer = Company B'. Those two *Products* are different but follow the same *DeviceClass*.
On the other hand, a *Product* is **NOT** yet a real device instance of that ¡®DeviceClass¡¯. It may not have an instantiated *Properties* like device-id, date-of-manufacturing, and the firmware/software-version, etc. It can be ¡®ordered¡¯ by the customers, but not necessarily instantiated or manufactured.
On the other hand, a *Product* is **NOT** yet a real device instance of that *DeviceClass*. It may not have an instantiated *Properties* like device-id, date-of-manufacturing, and the firmware/software-version, etc. It can be ordered by the customers, but not necessarily instantiated or manufactured.
In short, a *Product* is a concrete device model with deterministic Device Properties and ModuleClasses (no optionality). It's deemed as an specialized implementation of a *DeviceClass* but not yet an device instance. Examples are the shopping items in an online digital store that can be ordered (but not necessarily manufactured) by a customer.
A *Product* can be defined by inheriting from an existing *DeviceClass* (e.g. removing unimplemented optional *Properties* and *ModuleClasses*), extending from an existing *DeviceClass* (adding new *Properties* and *ModuleClasses*), or from scratch (without basing on any *DeviceClass*).
A *Product* can be defined by implementing the functionalities of an existing *DeviceClass* (while removing unimplemented optional *Properties* and *ModuleClasses*), extending from an existing *DeviceClass* (adding new *Properties* and *ModuleClasses*), or from scratch (without basing on any *DeviceClass*).
#### Attributes
- **id** : The identifier for that *Product*. The identifier must be unique at least in the scope of the domain, but the final scope is also influenced by implementing technologies. Required.
......@@ -171,22 +171,27 @@ All elements of *DeviceClass* can be reused in *Product*, but the *optional* att
- **[ModuleClasses](#ModuleClass)** : A list of *Module* components that are local to the *Product*. Optional.
- **[SubDevices](#SubDevice)** : A list of *SubDevice* components. Optional.
- **Extends** : Reference to a *DeviceClass* which is extended with this *Product*. Optional.
- **[DeviceClass](#DeviceClass)** : Reference to a *DeviceClass* which is implemented by this *Product*. Optional.
The element has the following attributes:
- **domain** : Identifier / Reference of the [Domain](#Domain) of the extended *DeviceClass*. Required for this element.
- **domain** : Identifier / Reference of the [Domain](#Domain) of the implemented *DeviceClass*. Optional if in the same domain.
- **class** : Name of the *DeviceClass* in the [Domain](#Domain) that is extended. Required for this element.
The element has the following child elements:
- **ImplementedModuleClasses** : A list of names of the implemented optional [ModuleClasses](#ModuleClass) in the [DeviceClass](#DeviceClass) that is extended. Optional. If not present, only mandatory [ModuleClasses](#ModuleClass) are implemented. If present, both the listed optional [ModuleClasses](#ModuleClass) and the mandatory [ModuleClass](#ModuleClass) are implemented.
- **ImplementedProperties** : A list of name-value pairs of the implemented optional device [Properties](#Property) in the [DeviceClass](#DeviceClass) that is extended. Optional. If not present, only mandatory [Properties](#Property) are implemented. If present, both the listed optional [Properties](#Property) and the mandatory [Properties](#Property) are implemented, and the values of those [Properties](#Property) are initiated as provided. In the case that the value of the [Properties](#Property) should not be initiated, the value can be omitted.
- **Extends** : Reference to a parent *Product* from which this *Product* is extended. Optional.
The element has the following attributes:
- **domain** : Identifier / Reference of the [Domain](#Domain) of the extended *Product*. Optional if in the same domain.
- **class** : *id* of the *Product* in the [Domain](#Domain) that is extended. Required for this element.
**Note**: New extended *Properties* and *ModuleClasses* **should** have different names from those in the inherited *DeviceClass*. In case the names conflict, the newly defined *Properties* and *ModuleClasses* shall override the inherited ones.
*Editor's Note: the description of the optionality of the datapoints, properties, actions, events in the inherited ModuleClass is FFS*
**Editor's Note**: the description of the optionality of the datapoints, properties, actions, events in the inherited ModuleClass is FFS.
#### XML Example
```
<Product id="myMseebProduct">
<Extends domain="org.exampleDomain" class="MSEEB.root">
<DeviceClass domain="org.exampleDomain" class="MSEEB.root">
<ImplementedPropertyies>
<Property name="name" value="product-abc"/>
<Property name="vendor" value="xyz"/>
......@@ -196,7 +201,7 @@ The element has the following child elements:
<MoudleClass name="rootPowerOnOff"/>
<MoudleClass name="power" />
</ImplementedModuleClasses>
</Extends>
</DeviceClass>
<Properties name="someNewProperty" value="someValue">
<Doc>...</Doc>
<SimpleType type="string" />
......@@ -220,7 +225,7 @@ The element has the following child elements:
{
"Product": {
"id": "myMseebProduct",
"Extends": {
"DeviceClass": {
"domain": "org.exampleDomain",
"class": "MSEEB.root",
"ImplementedProperties": [{
......@@ -310,7 +315,7 @@ Typical *ModuleClasses* might be equivalent to "power ON/OFF", "Open/Close", "Pa
#### Elements
- **[Doc](#Documentation)** : Documentation for the *Module* or *ModuleClass*. Optional.
- **extends** : Reference to a another *ModuleClass* or *Module* which is extended with this *ModuleClass*. Optional.
- **Extends** : Reference to a another *ModuleClass* or *Module* which is extended with this *ModuleClass*. Optional.
The element has the following attributes:
- **domain** : Identifier / Reference of the [Domain](#Domain) of the extended *ModuleClass*. Required for this element.
- **class** : Name of the *ModuleClass* in the [Domain](#Domain) that is extended. Required for this element.
......
This diff is collapsed.