diff --git a/SDT/schema4.0/docs/Introduction.md b/SDT/schema4.0/docs/Introduction.md index 194ec39d21235074ae05e1275f465200f062bc5b..7cc260eeea2e59c669eb99b702ceb92139809a2e 100644 --- a/SDT/schema4.0/docs/Introduction.md +++ b/SDT/schema4.0/docs/Introduction.md @@ -46,6 +46,7 @@ This section provides an overview about the SDT 4.0 definitions and element hier |Domain | Unique name, or "wrapper" which acts like a namespace, set by the organization creating the SDT, allowing reference to a package of definitions for the contained ModuleClasses and device definitions. Can be referenced when extending ModuleClasses. It has two possible uses: to select the scope of a technology domain, or to set the scope of a use case domain (like Home, SmartGrid, etc) | | Device | Physical, addressable, identifiable appliance/sensor/actuator. | | Sub-Device | A device (usually one of several) which may be embedded in a Device and/or is addressed via another Device. | +| Product| 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 (e.g. a smart watch) in an online digital store that can be ordered (but not necessarily manufactured) by a customer. | | ModuleClass | Specification of a single service with one or more service methods, the involved abstracted data model and related events. The expectation is that each separate service which may be used in many kinds of Devices (like PowerON/OFF, Open/Close, ...) will be described by a ModuleClass which can be re-used in many Device definitions. | diff --git a/SDT/schema4.0/docs/SDT_Components.md b/SDT/schema4.0/docs/SDT_Components.md index 1c85cfc3468e17003061ded3da430b52afc4e271..8c1f6bca722606c89ee6f9c223c77cb6cf68bd4d 100644 --- a/SDT/schema4.0/docs/SDT_Components.md +++ b/SDT/schema4.0/docs/SDT_Components.md @@ -2,6 +2,7 @@ [Domain](#Domain) [Device](#Device) | [SubDevice](#SubDevice) +[Product](#Product) [Property](#Property) [ModuleClass](#ModuleClass) [Action](#Action) @@ -75,6 +76,7 @@ It can also be used to collect all specified [ModuleClasses](#ModuleClasses) --- <a name="Device"/></a> + ### Device  @@ -115,6 +117,7 @@ An example for a compound device is a connected power-strip where each of the s --- <a name="SubDevice"/></a> + ### SubDevice *SubDevices* are optional components of a [Device](#Device). They represent physical sub-devices and services inside another device (the *Device*). @@ -143,8 +146,119 @@ An example for a compound device is a connected power-strip where each of the s </SubDevice> --- +<a name="Product"/></a> + +### Product + + + +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. + +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 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. +#### Elements +All elements of *DeviceClass* can be reused in *Product*, but the *optional* attribute of those elements is not applicable (ignored if present). + +- **[Doc](#Documentation)** : Documentation for the *Product*. Optional. +- **[Properties](#Property)** : Further meta-data (or properties) about the *Product*. Optional. +- **[ModuleClasses](#ModuleClass)** : A list of *Module* components that are local to the *Product*. Optional. +- **[SubDevices](#SubDevice)** : A list of *SubDevice* components. 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 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* **shall** have different names from those in the implemented *DeviceClass* if they're defined in the same *Domain*. + +**Editor's Note**: the description of the optionality of the datapoints, properties, actions, events in the implemented ModuleClass is FFS. + +#### XML Example +``` +<Product id="myMseebProduct"> + <DeviceClass domain="org.exampleDomain" class="MSEEB.root"> + <ImplementedPropertyies> + <Property name="name" value="product-abc"/> + <Property name="vendor" value="xyz"/> + <Property name="SerialNumber"/> + </ImplementedProperties> + <ImplementedModuleClasses> + <MoudleClass name="rootPowerOnOff"/> + <MoudleClass name="power" /> + </ImplementedModuleClasses> + </DeviceClass> + <Properties name="someNewProperty" value="someValue"> + <Doc>...</Doc> + <SimpleType type="string" /> + </Properties> + <ModuleClasses name="someNewModuleClass"> + <Actions> + <!-- List of Actions goes here--> + </Actions> + <Events> + <!-- List of Events goes here--> + </Events> + <DataPoints> + <!-- List of DataPoints goes here--> + </DataPoints> + </ModuleClasses> +</Product> +``` + +#### JSON Example +``` +{ + "Product": { + "id": "myMseebProduct", + "DeviceClass": { + "domain": "org.exampleDomain", + "class": "MSEEB.root", + "ImplementedProperties": [{ + "name": "name", + "value": "product-abc" + }, + { + "name": "Vendor", + "value": "xyz" + }, + { + "name": "SerialNumber" + }], + "ImplementedModuleClasses": ["rootPowerOnOff","power"] + }, + "Properties": [{ + "name": "someNewProperty", + "value": "someValue", + "Doc": "...", + "DataType": "..." + }], + "ModuleClasses": [{ + "name": "someNewModuleClass", + "Actions": [], + "DataPoints": [], + "Events": [] + }] + } +} +``` +--- <a name="Property"/></a> + ### Property : Element of a *Device* or *ModuleClass*  @@ -173,7 +287,8 @@ Since the *Properties* are highly varied, depending on industry segment, no atte --- <a name="ModuleClass"/></a> -### ModuleClass + +### Module and ModuleClass  @@ -197,7 +312,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. @@ -224,6 +339,7 @@ The element has the following attributes: --- <a name="DataPoint"/></a> + ### DataPoint : Element of *ModuleClass* and *Event*  @@ -268,6 +384,7 @@ In EBNF: --- <a name="Action"/></a> + ### Action : Element of *ModuleClass*  @@ -286,6 +403,7 @@ Note that systems which rely on RESTful operations need to carry out such comple - **Args** : Zero or more occurances of [argument](#Arg) definitions for an *Action*. Optional. <a name="ActionExample"/></a> + #### Example The following are two examples for actions implementing a getter and a setter for boolean values. @@ -308,6 +426,7 @@ The following are two examples for actions implementing a getter and a setter fo --- <a name="Event"/></a> + ### Event : Element of *ModuleClass*  @@ -338,6 +457,7 @@ The following are two examples for actions implementing a getter and a setter fo --- <a name="Arg"/></a> + ### Arg : Element of *Action*  @@ -359,6 +479,7 @@ See [example above](#ActionExample). --- <a name="Data_Types"/></a> + ### DataType The data type can be simple integers or string text, or rather complex, as shown below: @@ -385,6 +506,7 @@ The *DataType* element is a "container" for the various aspects of a type. --- <a name="Constraint"/></a> + ### Constraint : Element of DataType  @@ -410,6 +532,7 @@ The *TypeChoice* construct is required for syntactic reasons in the UML diagram --- <a name="SimpleType"/></a> + ### SimpleType : Element of *TypeChoice*  @@ -437,6 +560,7 @@ If not stated otherwise datatypes should comply to the equivalent datatypes defi --- <a name="StructType"/></a> + ### StructType : Element of *TypeChoice*  @@ -450,6 +574,7 @@ The *StructType* element can be used to represent an ordered list of diverse Dat --- <a name="ArrayType"/></a> + ### ArrayType : Element of *TypeChoice*  @@ -462,6 +587,7 @@ The *ArrayType* element is provided for defining lists of data; the definition i --- <a name="Documentation"/></a> + ### Doc : Element for all Documentation  diff --git a/SDT/schema4.0/docs/SDT_UML.uxf b/SDT/schema4.0/docs/SDT_UML.uxf index 8b3bbd81f80f57359b4faf427b12edd6100229a5..012b2880f4c80dafd32cb236065f775234820d63 100644 --- a/SDT/schema4.0/docs/SDT_UML.uxf +++ b/SDT/schema4.0/docs/SDT_UML.uxf @@ -1,711 +1,763 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<diagram program="umlet" version="13.3"> - <help_text/> - <zoom_level>7</zoom_level> - <element> - <id>UMLNote</id> - <coordinates> - <x>21</x> - <y>427</y> - <w>217</w> - <h>182</h> - </coordinates> - <panel_attributes>bg=#FAF8C8 -fontsize=12 -/@ optional elementAttribute/ -/@ optional elementAttribute = default value/ -*@ mandatoryElementAttribute* -- mandatory element : Subclass (exact one) -/- optionalElement : SubClass (zero or one)/ -/* optionalElement : SubClass (zero or many)/ - -"Depends" Relation -and Cardinality - -Subclassing - -Cardinalities: -0,1 : zero or one -1 : exact one -0..* : zero or many -1..* : at least one or many -</panel_attributes> - <additional_attributes/> - </element> - <element> - <id>Relation</id> - <coordinates> - <x>105</x> - <y>497</y> - <w>77</w> - <h>28</h> - </coordinates> - <panel_attributes>lt=<. -fontsize=10 -m1=0..* -</panel_attributes> - <additional_attributes>90.0;20.0;10.0;20.0</additional_attributes> - </element> - <element> - <id>Relation</id> - <coordinates> - <x>105</x> - <y>525</y> - <w>77</w> - <h>21</h> - </coordinates> - <panel_attributes>lt=<<- -fontsize=10</panel_attributes> - <additional_attributes>90.0;10.0;10.0;10.0</additional_attributes> - </element> - <element> - <id>UMLClass</id> - <coordinates> - <x>651</x> - <y>770</y> - <w>105</w> - <h>154</h> - </coordinates> - <panel_attributes><<enumeration>> -BasicType --- -boolean -byte -integer -float -string -enum -date -time -datetime -blob -uri</panel_attributes> - <additional_attributes/> - </element> - <element> - <id>Relation</id> - <coordinates> - <x>357</x> - <y>833</y> - <w>98</w> - <h>56</h> - </coordinates> - <panel_attributes>lt=<<. -m1= 0,1 -</panel_attributes> - <additional_attributes>120.0;50.0;60.0;50.0;60.0;10.0;10.0;10.0</additional_attributes> - </element> - <element> - <id>Relation</id> - <coordinates> - <x>357</x> - <y>777</y> - <w>98</w> - <h>56</h> - </coordinates> - <panel_attributes>lt=<<. -m1= 0,1 -</panel_attributes> - <additional_attributes>120.0;10.0;40.0;10.0;40.0;60.0;10.0;60.0</additional_attributes> - </element> - <element> - <id>UMLClass</id> - <coordinates> - <x>21</x> - <y>777</y> - <w>133</w> - <h>84</h> - </coordinates> - <panel_attributes>DataType --- -/@ name : text/ -/@ unitOfMeasure : text/ -/- Doc : Doc/ -- TypeChoice -/* Constraints : Constraint/ -fg=blue</panel_attributes> - <additional_attributes/> - </element> - <element> - <id>Relation</id> - <coordinates> - <x>126</x> - <y>735</y> - <w>490</w> - <h>91</h> - </coordinates> - <panel_attributes>lt=<<. -m2=1..* -</panel_attributes> - <additional_attributes>10.0;60.0;10.0;20.0;680.0;20.0;680.0;100.0;640.0;100.0</additional_attributes> - </element> - <element> - <id>Relation</id> - <coordinates> - <x>126</x> - <y>735</y> - <w>490</w> - <h>133</h> - </coordinates> - <panel_attributes>lt=<<. -m2=1 -</panel_attributes> - <additional_attributes>10.0;60.0;10.0;20.0;680.0;20.0;680.0;160.0;640.0;160.0</additional_attributes> - </element> - <element> - <id>UMLClass</id> - <coordinates> - <x>441</x> - <y>861</y> - <w>133</w> - <h>35</h> - </coordinates> - <panel_attributes>SimpleType --- -*@ type : BasicType* -fg=blue</panel_attributes> - <additional_attributes/> - </element> - <element> - <id>Relation</id> - <coordinates> - <x>567</x> - <y>875</y> - <w>98</w> - <h>35</h> - </coordinates> - <panel_attributes>lt=<<- -m1= 1 -</panel_attributes> - <additional_attributes>120.0;20.0;10.0;20.0</additional_attributes> - </element> - <element> - <id>UMLClass</id> - <coordinates> - <x>441</x> - <y>917</y> - <w>133</w> - <h>70</h> - </coordinates> - <panel_attributes>Constraint --- -*@ name : text* -/@ type : BasicType/ -/@ value : text/ -/- Doc : Doc/ -fg=blue</panel_attributes> - <additional_attributes/> - </element> - <element> - <id>Relation</id> - <coordinates> - <x>147</x> - <y>847</y> - <w>308</w> - <h>98</h> - </coordinates> - <panel_attributes>lt=<. -m1=0..* -</panel_attributes> - <additional_attributes>420.0;110.0;340.0;110.0;340.0;10.0;10.0;10.0</additional_attributes> - </element> - <element> - <id>Relation</id> - <coordinates> - <x>567</x> - <y>917</y> - <w>147</w> - <h>56</h> - </coordinates> - <panel_attributes>lt=<<- -m1=1 -</panel_attributes> - <additional_attributes>190.0;10.0;190.0;60.0;10.0;60.0</additional_attributes> - </element> - <element> - <id>UMLClass</id> - <coordinates> - <x>441</x> - <y>777</y> - <w>133</w> - <h>35</h> - </coordinates> - <panel_attributes>StructType --- -- DataType : DataType -fg=blue</panel_attributes> - <additional_attributes/> - </element> - <element> - <id>UMLClass</id> - <coordinates> - <x>441</x> - <y>819</y> - <w>133</w> - <h>35</h> - </coordinates> - <panel_attributes>ArrayType --- -- DataType : DataType -fg=blue</panel_attributes> - <additional_attributes/> - </element> - <element> - <id>Relation</id> - <coordinates> - <x>357</x> - <y>812</y> - <w>98</w> - <h>35</h> - </coordinates> - <panel_attributes>lt=<<. -m1= 0,1 - -</panel_attributes> - <additional_attributes>120.0;20.0;10.0;20.0</additional_attributes> - </element> - <element> - <id>UMLClass</id> - <coordinates> - <x>21</x> - <y>672</y> - <w>735</w> - <h>28</h> - </coordinates> - <panel_attributes>halign=center -SDT 3.0 - DataType -fontsize=24 -bg=gray -lw=0.1</panel_attributes> - <additional_attributes/> - </element> - <element> - <id>UMLClass</id> - <coordinates> - <x>21</x> - <y>7</y> - <w>840</w> - <h>28</h> - </coordinates> - <panel_attributes>SDT 3.0 - Basic Elements -halign=center -fontsize=24 -bg=gray -lw=0.1</panel_attributes> - <additional_attributes/> - </element> - <element> - <id>UMLClass</id> - <coordinates> - <x>259</x> - <y>126</y> - <w>154</w> - <h>133</h> - </coordinates> - <panel_attributes>ModuleClass --- -*@ name : text* -/@ optional : boolean = false/ -/- Doc : Doc/ -/- extends/ -/ @domain : IDRF/ -/ @class : text / -/* Properties : Property/ -/* Actions : Action/ -/* Data : DataPoint/ -/* Events : Event/ -fg=blue -</panel_attributes> - <additional_attributes/> - </element> - <element> - <id>UMLClass</id> - <coordinates> - <x>497</x> - <y>126</y> - <w>154</w> - <h>77</h> - </coordinates> - <panel_attributes>Action --- -*@ name : text* -/@ optional : boolean = false/ -/- Doc : Doc/ -/- DataType : DataType/ -/* Args : Arg/ -fg=blue</panel_attributes> - <additional_attributes/> - </element> - <element> - <id>UMLClass</id> - <coordinates> - <x>742</x> - <y>189</y> - <w>119</w> - <h>56</h> - </coordinates> - <panel_attributes>Arg --- -*@ name ; text* -/- Doc : Doc/ -- DataType : DataType -fg=blue</panel_attributes> - <additional_attributes/> - </element> - <element> - <id>Relation</id> - <coordinates> - <x>644</x> - <y>189</y> - <w>112</w> - <h>28</h> - </coordinates> - <panel_attributes>lt=<. -m1= 0..*</panel_attributes> - <additional_attributes>140.0;10.0;10.0;10.0</additional_attributes> - </element> - <element> - <id>UMLClass</id> - <coordinates> - <x>21</x> - <y>126</y> - <w>154</w> - <h>77</h> - </coordinates> - <panel_attributes>Domain --- -*@ id : ID* -/- Doc : Doc/ -/* imports/ -/* Modules : ModuleClass/ -/* Devices : Device/ -fg=blue</panel_attributes> - <additional_attributes/> - </element> - <element> - <id>Relation</id> - <coordinates> - <x>168</x> - <y>126</y> - <w>105</w> - <h>63</h> - </coordinates> - <panel_attributes>lt=<. -m1= 0..*</panel_attributes> - <additional_attributes>130.0;10.0;50.0;10.0;50.0;70.0;10.0;70.0</additional_attributes> - </element> - <element> - <id>UMLClass</id> - <coordinates> - <x>21</x> - <y>308</y> - <w>154</w> - <h>70</h> - </coordinates> - <panel_attributes>SubDevice --- -*@ id : Name* -/- Doc : Doc/ -/* Properties : Property/ -/* Modules : Module/ -fg=blue</panel_attributes> - <additional_attributes/> - </element> - <element> - <id>Relation</id> - <coordinates> - <x>168</x> - <y>182</y> - <w>49</w> - <h>63</h> - </coordinates> - <panel_attributes>lt=<. -m1=0..* -</panel_attributes> - <additional_attributes>10.0;60.0;50.0;60.0;50.0;10.0;10.0;10.0</additional_attributes> - </element> - <element> - <id>Relation</id> - <coordinates> - <x>168</x> - <y>315</y> - <w>105</w> - <h>49</h> - </coordinates> - <panel_attributes>lt=<. -m1= 0..*</panel_attributes> - <additional_attributes>130.0;10.0;60.0;10.0;60.0;50.0;10.0;50.0</additional_attributes> - </element> - <element> - <id>UMLClass</id> - <coordinates> - <x>742</x> - <y>357</y> - <w>119</w> - <h>35</h> - </coordinates> - <panel_attributes>Doc --- -fg=blue</panel_attributes> - <additional_attributes/> - </element> - <element> - <id>Relation</id> - <coordinates> - <x>406</x> - <y>126</y> - <w>105</w> - <h>42</h> - </coordinates> - <panel_attributes>lt=<. -m1= 0..* -</panel_attributes> - <additional_attributes>130.0;10.0;50.0;10.0;50.0;40.0;10.0;40.0</additional_attributes> - </element> - <element> - <id>Relation</id> - <coordinates> - <x>686</x> - <y>350</y> - <w>70</w> - <h>35</h> - </coordinates> - <panel_attributes>lt=<. -m1=0,1 -</panel_attributes> - <additional_attributes>80.0;20.0;10.0;20.0</additional_attributes> - </element> - <element> - <id>Relation</id> - <coordinates> - <x>406</x> - <y>161</y> - <w>105</w> - <h>84</h> - </coordinates> - <panel_attributes>lt=<. -m1= 0..* -</panel_attributes> - <additional_attributes>130.0;90.0;50.0;90.0;50.0;10.0;10.0;10.0</additional_attributes> - </element> - <element> - <id>UMLClass</id> - <coordinates> - <x>497</x> - <y>217</y> - <w>154</w> - <h>98</h> - </coordinates> - <panel_attributes>DataPoint --- -*@ name : text* -/@ optional : boolean = false/ -/@ writable : boolean = true/ -/@ readable : boolean = true/ -/@ eventable : boolean = false/ -/- Doc : Doc/ -- DataType : DataType - -fg=blue -</panel_attributes> - <additional_attributes/> - </element> - <element> - <id>UMLClass</id> - <coordinates> - <x>497</x> - <y>329</y> - <w>154</w> - <h>63</h> - </coordinates> - <panel_attributes>Event --- -*@ name : text* -/@ optional : boolean = false/ -/- Doc : Doc/ -/* Data : DataPoint/ - -fg=blue</panel_attributes> - <additional_attributes/> - </element> - <element> - <id>Relation</id> - <coordinates> - <x>406</x> - <y>231</y> - <w>105</w> - <h>126</h> - </coordinates> - <panel_attributes>lt=<. -m1= 0..* -</panel_attributes> - <additional_attributes>130.0;150.0;80.0;150.0;80.0;10.0;10.0;10.0</additional_attributes> - </element> - <element> - <id>UMLClass</id> - <coordinates> - <x>259</x> - <y>280</y> - <w>154</w> - <h>21</h> - </coordinates> - <panel_attributes>Module -fg=blue</panel_attributes> - <additional_attributes/> - </element> - <element> - <id>Relation</id> - <coordinates> - <x>168</x> - <y>280</y> - <w>105</w> - <h>98</h> - </coordinates> - <panel_attributes>lt=<. - -</panel_attributes> - <additional_attributes>130.0;10.0;80.0;10.0;80.0;120.0;10.0;120.0</additional_attributes> - </element> - <element> - <id>Relation</id> - <coordinates> - <x>322</x> - <y>252</y> - <w>21</w> - <h>42</h> - </coordinates> - <panel_attributes>lt=<<- -</panel_attributes> - <additional_attributes>10.0;10.0;10.0;40.0</additional_attributes> - </element> - <element> - <id>UMLClass</id> - <coordinates> - <x>21</x> - <y>217</y> - <w>154</w> - <h>77</h> - </coordinates> - <panel_attributes>Device --- -*@ id : Name* -/- Doc : Doc/ -/* Properties : Property/ -/* Modules : Module/ -/* SubDevices : SubDevice/ -fg=blue</panel_attributes> - <additional_attributes/> - </element> - <element> - <id>Relation</id> - <coordinates> - <x>168</x> - <y>280</y> - <w>49</w> - <h>56</h> - </coordinates> - <panel_attributes>lt=<. -m1=0..* -</panel_attributes> - <additional_attributes>10.0;50.0;40.0;50.0;40.0;10.0;10.0;10.0</additional_attributes> - </element> - <element> - <id>Relation</id> - <coordinates> - <x>168</x> - <y>252</y> - <w>105</w> - <h>56</h> - </coordinates> - <panel_attributes>lt=<. -m1= 0..* -</panel_attributes> - <additional_attributes>130.0;50.0;80.0;50.0;80.0;10.0;10.0;10.0</additional_attributes> - </element> - <element> - <id>Relation</id> - <coordinates> - <x>168</x> - <y>266</y> - <w>105</w> - <h>70</h> - </coordinates> - <panel_attributes>lt=<.</panel_attributes> - <additional_attributes>130.0;80.0;60.0;80.0;60.0;10.0;10.0;10.0</additional_attributes> - </element> - <element> - <id>UMLClass</id> - <coordinates> - <x>259</x> - <y>315</y> - <w>154</w> - <h>77</h> - </coordinates> - <panel_attributes>Property --- -*@ name : text* -/@ optional : boolean = false/ -/@ value : text/ -/- Doc : Doc/ -- DataType : SimpleType -fg=blue -transparency=80</panel_attributes> - <additional_attributes/> - </element> - <element> - <id>Relation</id> - <coordinates> - <x>644</x> - <y>217</y> - <w>56</w> - <h>147</h> - </coordinates> - <panel_attributes>lt=<. -m1=0..* -</panel_attributes> - <additional_attributes>10.0;10.0;60.0;10.0;60.0;190.0;10.0;190.0</additional_attributes> - </element> - <element> - <id>Relation</id> - <coordinates> - <x>406</x> - <y>245</y> - <w>49</w> - <h>98</h> - </coordinates> - <panel_attributes>lt=<. -m1=0..*</panel_attributes> - <additional_attributes>10.0;110.0;50.0;110.0;50.0;10.0;10.0;10.0</additional_attributes> - </element> - <element> - <id>UMLClass</id> - <coordinates> - <x>231</x> - <y>777</y> - <w>133</w> - <h>70</h> - </coordinates> - <panel_attributes><<enumeration>> -TypeChoice --- -SimpleType : SimpleType -Struct : StructType -Array : ArrayType - -</panel_attributes> - <additional_attributes/> - </element> - <element> - <id>Relation</id> - <coordinates> - <x>147</x> - <y>784</y> - <w>98</w> - <h>63</h> - </coordinates> - <panel_attributes>lt=<<- -m1= 1 -</panel_attributes> - <additional_attributes>120.0;10.0;80.0;10.0;80.0;70.0;10.0;70.0</additional_attributes> - </element> -</diagram> +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<diagram program="umlet" version="14.2"> + <help_text/> + <zoom_level>8</zoom_level> + <element> + <id>UMLNote</id> + <coordinates> + <x>1016</x> + <y>520</y> + <w>248</w> + <h>208</h> + </coordinates> + <panel_attributes>bg=#FAF8C8 +fontsize=12 +/@ optional elementAttribute/ +/@ optional elementAttribute = default value/ +*@ mandatoryElementAttribute* +- mandatory element : Subclass (exact one) +/- optionalElement : SubClass (zero or one)/ +/* optionalElement : SubClass (zero or many)/ + +"Depends" Relation +and Cardinality + +Subclassing + +Cardinalities: +0,1 : zero or one +1 : exact one +0..* : zero or many +1..* : at least one or many +</panel_attributes> + <additional_attributes/> + </element> + <element> + <id>Relation</id> + <coordinates> + <x>1120</x> + <y>600</y> + <w>88</w> + <h>32</h> + </coordinates> + <panel_attributes>lt=<. +fontsize=10 +m1=0..* +</panel_attributes> + <additional_attributes>90.0;20.0;10.0;20.0</additional_attributes> + </element> + <element> + <id>Relation</id> + <coordinates> + <x>1120</x> + <y>632</y> + <w>88</w> + <h>24</h> + </coordinates> + <panel_attributes>lt=<<- +fontsize=10</panel_attributes> + <additional_attributes>90.0;10.0;10.0;10.0</additional_attributes> + </element> + <element> + <id>UMLClass</id> + <coordinates> + <x>1200</x> + <y>888</y> + <w>120</w> + <h>176</h> + </coordinates> + <panel_attributes><<enumeration>> +BasicType +-- +boolean +byte +integer +float +string +enum +date +time +datetime +blob +uri</panel_attributes> + <additional_attributes/> + </element> + <element> + <id>Relation</id> + <coordinates> + <x>864</x> + <y>960</y> + <w>112</w> + <h>64</h> + </coordinates> + <panel_attributes>lt=<<. +m1= 0,1 +</panel_attributes> + <additional_attributes>120.0;50.0;60.0;50.0;60.0;10.0;10.0;10.0</additional_attributes> + </element> + <element> + <id>Relation</id> + <coordinates> + <x>864</x> + <y>896</y> + <w>112</w> + <h>64</h> + </coordinates> + <panel_attributes>lt=<<. +m1= 0,1 +</panel_attributes> + <additional_attributes>120.0;10.0;40.0;10.0;40.0;60.0;10.0;60.0</additional_attributes> + </element> + <element> + <id>UMLClass</id> + <coordinates> + <x>480</x> + <y>896</y> + <w>152</w> + <h>96</h> + </coordinates> + <panel_attributes>DataType +-- +/@ name : text/ +/@ unitOfMeasure : text/ +/- Doc : Doc/ +- TypeChoice +/* Constraints : Constraint/ +fg=blue</panel_attributes> + <additional_attributes/> + </element> + <element> + <id>Relation</id> + <coordinates> + <x>600</x> + <y>848</y> + <w>560</w> + <h>104</h> + </coordinates> + <panel_attributes>lt=<<. +m2=1..* +</panel_attributes> + <additional_attributes>10.0;60.0;10.0;20.0;680.0;20.0;680.0;100.0;640.0;100.0</additional_attributes> + </element> + <element> + <id>Relation</id> + <coordinates> + <x>600</x> + <y>848</y> + <w>560</w> + <h>152</h> + </coordinates> + <panel_attributes>lt=<<. +m2=1 +</panel_attributes> + <additional_attributes>10.0;60.0;10.0;20.0;680.0;20.0;680.0;160.0;640.0;160.0</additional_attributes> + </element> + <element> + <id>UMLClass</id> + <coordinates> + <x>960</x> + <y>992</y> + <w>152</w> + <h>40</h> + </coordinates> + <panel_attributes>SimpleType +-- +*@ type : BasicType* +fg=blue</panel_attributes> + <additional_attributes/> + </element> + <element> + <id>Relation</id> + <coordinates> + <x>1104</x> + <y>1008</y> + <w>112</w> + <h>40</h> + </coordinates> + <panel_attributes>lt=<<- +m1= 1 +</panel_attributes> + <additional_attributes>120.0;20.0;10.0;20.0</additional_attributes> + </element> + <element> + <id>UMLClass</id> + <coordinates> + <x>960</x> + <y>1056</y> + <w>152</w> + <h>80</h> + </coordinates> + <panel_attributes>Constraint +-- +*@ name : text* +/@ type : BasicType/ +/@ value : text/ +/- Doc : Doc/ +fg=blue</panel_attributes> + <additional_attributes/> + </element> + <element> + <id>Relation</id> + <coordinates> + <x>624</x> + <y>976</y> + <w>352</w> + <h>112</h> + </coordinates> + <panel_attributes>lt=<. +m1=0..* +</panel_attributes> + <additional_attributes>420.0;110.0;340.0;110.0;340.0;10.0;10.0;10.0</additional_attributes> + </element> + <element> + <id>Relation</id> + <coordinates> + <x>1104</x> + <y>1056</y> + <w>168</w> + <h>64</h> + </coordinates> + <panel_attributes>lt=<<- +m1=1 +</panel_attributes> + <additional_attributes>190.0;10.0;190.0;60.0;10.0;60.0</additional_attributes> + </element> + <element> + <id>UMLClass</id> + <coordinates> + <x>960</x> + <y>896</y> + <w>152</w> + <h>40</h> + </coordinates> + <panel_attributes>StructType +-- +- DataType : DataType +fg=blue</panel_attributes> + <additional_attributes/> + </element> + <element> + <id>UMLClass</id> + <coordinates> + <x>960</x> + <y>944</y> + <w>152</w> + <h>40</h> + </coordinates> + <panel_attributes>ArrayType +-- +- DataType : DataType +fg=blue</panel_attributes> + <additional_attributes/> + </element> + <element> + <id>Relation</id> + <coordinates> + <x>864</x> + <y>936</y> + <w>112</w> + <h>40</h> + </coordinates> + <panel_attributes>lt=<<. +m1= 0,1 + +</panel_attributes> + <additional_attributes>120.0;20.0;10.0;20.0</additional_attributes> + </element> + <element> + <id>UMLClass</id> + <coordinates> + <x>480</x> + <y>776</y> + <w>840</w> + <h>32</h> + </coordinates> + <panel_attributes>halign=center +SDT 4.0 - DataType +fontsize=24 +bg=gray +lw=0.1</panel_attributes> + <additional_attributes/> + </element> + <element> + <id>UMLClass</id> + <coordinates> + <x>480</x> + <y>16</y> + <w>960</w> + <h>32</h> + </coordinates> + <panel_attributes>SDT 4.0 - Basic Elements +halign=center +fontsize=24 +bg=gray +lw=0.1</panel_attributes> + <additional_attributes/> + </element> + <element> + <id>UMLClass</id> + <coordinates> + <x>752</x> + <y>152</y> + <w>176</w> + <h>152</h> + </coordinates> + <panel_attributes>ModuleClass +-- +*@ name : text* +/@ optional : boolean = false/ +/- Doc : Doc/ +/- extends/ +/ @domain : IDRF/ +/ @class : text / +/* Properties : Property/ +/* Actions : Action/ +/* Data : DataPoint/ +/* Events : Event/ +fg=blue +</panel_attributes> + <additional_attributes/> + </element> + <element> + <id>UMLClass</id> + <coordinates> + <x>1024</x> + <y>152</y> + <w>176</w> + <h>88</h> + </coordinates> + <panel_attributes>Action +-- +*@ name : text* +/@ optional : boolean = false/ +/- Doc : Doc/ +/- DataType : DataType/ +/* Args : Arg/ +fg=blue</panel_attributes> + <additional_attributes/> + </element> + <element> + <id>UMLClass</id> + <coordinates> + <x>1304</x> + <y>224</y> + <w>136</w> + <h>64</h> + </coordinates> + <panel_attributes>Arg +-- +*@ name ; text* +/- Doc : Doc/ +- DataType : DataType +fg=blue</panel_attributes> + <additional_attributes/> + </element> + <element> + <id>Relation</id> + <coordinates> + <x>1192</x> + <y>224</y> + <w>128</w> + <h>32</h> + </coordinates> + <panel_attributes>lt=<. +m1= 0..*</panel_attributes> + <additional_attributes>140.0;10.0;10.0;10.0</additional_attributes> + </element> + <element> + <id>UMLClass</id> + <coordinates> + <x>480</x> + <y>152</y> + <w>176</w> + <h>88</h> + </coordinates> + <panel_attributes>Domain +-- +*@ id : ID* +/- Doc : Doc/ +/* imports/ +/* ModuleClasses : ModuleClass/ +/* Devices : Device/ +fg=blue</panel_attributes> + <additional_attributes/> + </element> + <element> + <id>Relation</id> + <coordinates> + <x>648</x> + <y>152</y> + <w>120</w> + <h>72</h> + </coordinates> + <panel_attributes>lt=<. +m1= 0..*</panel_attributes> + <additional_attributes>130.0;10.0;50.0;10.0;50.0;70.0;10.0;70.0</additional_attributes> + </element> + <element> + <id>UMLClass</id> + <coordinates> + <x>480</x> + <y>360</y> + <w>176</w> + <h>80</h> + </coordinates> + <panel_attributes>SubDevice +-- +*@ id : Name* +/- Doc : Doc/ +/* Properties : Property/ +/* ModuleClasses : ModuleClass/ +fg=blue</panel_attributes> + <additional_attributes/> + </element> + <element> + <id>Relation</id> + <coordinates> + <x>648</x> + <y>216</y> + <w>56</w> + <h>72</h> + </coordinates> + <panel_attributes>lt=<. +m1=0..* +</panel_attributes> + <additional_attributes>10.0;60.0;50.0;60.0;50.0;10.0;10.0;10.0</additional_attributes> + </element> + <element> + <id>Relation</id> + <coordinates> + <x>648</x> + <y>368</y> + <w>120</w> + <h>56</h> + </coordinates> + <panel_attributes>lt=<. +m1= 0..*</panel_attributes> + <additional_attributes>130.0;10.0;60.0;10.0;60.0;50.0;10.0;50.0</additional_attributes> + </element> + <element> + <id>UMLClass</id> + <coordinates> + <x>1304</x> + <y>416</y> + <w>136</w> + <h>40</h> + </coordinates> + <panel_attributes>Doc +-- +fg=blue</panel_attributes> + <additional_attributes/> + </element> + <element> + <id>Relation</id> + <coordinates> + <x>920</x> + <y>152</y> + <w>120</w> + <h>48</h> + </coordinates> + <panel_attributes>lt=<. +m1= 0..* +</panel_attributes> + <additional_attributes>130.0;10.0;50.0;10.0;50.0;40.0;10.0;40.0</additional_attributes> + </element> + <element> + <id>Relation</id> + <coordinates> + <x>1240</x> + <y>408</y> + <w>80</w> + <h>40</h> + </coordinates> + <panel_attributes>lt=<. +m1=0,1 +</panel_attributes> + <additional_attributes>80.0;20.0;10.0;20.0</additional_attributes> + </element> + <element> + <id>Relation</id> + <coordinates> + <x>920</x> + <y>192</y> + <w>120</w> + <h>96</h> + </coordinates> + <panel_attributes>lt=<. +m1= 0..* +</panel_attributes> + <additional_attributes>130.0;90.0;50.0;90.0;50.0;10.0;10.0;10.0</additional_attributes> + </element> + <element> + <id>UMLClass</id> + <coordinates> + <x>1024</x> + <y>256</y> + <w>176</w> + <h>112</h> + </coordinates> + <panel_attributes>DataPoint +-- +*@ name : text* +/@ optional : boolean = false/ +/@ writable : boolean = true/ +/@ readable : boolean = true/ +/@ eventable : boolean = false/ +/- Doc : Doc/ +- DataType : DataType + +fg=blue +</panel_attributes> + <additional_attributes/> + </element> + <element> + <id>UMLClass</id> + <coordinates> + <x>1024</x> + <y>384</y> + <w>176</w> + <h>72</h> + </coordinates> + <panel_attributes>Event +-- +*@ name : text* +/@ optional : boolean = false/ +/- Doc : Doc/ +/* Data : DataPoint/ + +fg=blue</panel_attributes> + <additional_attributes/> + </element> + <element> + <id>Relation</id> + <coordinates> + <x>920</x> + <y>272</y> + <w>120</w> + <h>144</h> + </coordinates> + <panel_attributes>lt=<. +m1= 0..* +</panel_attributes> + <additional_attributes>130.0;150.0;80.0;150.0;80.0;10.0;10.0;10.0</additional_attributes> + </element> + <element> + <id>Relation</id> + <coordinates> + <x>648</x> + <y>272</y> + <w>120</w> + <h>168</h> + </coordinates> + <panel_attributes>lt=<. + +</panel_attributes> + <additional_attributes>130.0;10.0;80.0;10.0;80.0;190.0;10.0;190.0</additional_attributes> + </element> + <element> + <id>UMLClass</id> + <coordinates> + <x>480</x> + <y>256</y> + <w>176</w> + <h>88</h> + </coordinates> + <panel_attributes>DeviceClass +-- +*@ id : Name* +/- Doc : Doc/ +/* Properties : Property/ +/* ModuleClasses : ModuleClass/ +/* SubDevices : SubDevice/ +fg=blue</panel_attributes> + <additional_attributes/> + </element> + <element> + <id>Relation</id> + <coordinates> + <x>648</x> + <y>328</y> + <w>48</w> + <h>64</h> + </coordinates> + <panel_attributes>lt=<. +m1=0..* +</panel_attributes> + <additional_attributes>10.0;50.0;40.0;50.0;40.0;10.0;10.0;10.0</additional_attributes> + </element> + <element> + <id>Relation</id> + <coordinates> + <x>648</x> + <y>272</y> + <w>120</w> + <h>48</h> + </coordinates> + <panel_attributes>lt=<. +m1= 0..* +</panel_attributes> + <additional_attributes>130.0;10.0;80.0;10.0;80.0;40.0;10.0;40.0</additional_attributes> + </element> + <element> + <id>Relation</id> + <coordinates> + <x>648</x> + <y>312</y> + <w>120</w> + <h>80</h> + </coordinates> + <panel_attributes>lt=<.</panel_attributes> + <additional_attributes>130.0;80.0;60.0;80.0;60.0;10.0;10.0;10.0</additional_attributes> + </element> + <element> + <id>UMLClass</id> + <coordinates> + <x>752</x> + <y>368</y> + <w>176</w> + <h>88</h> + </coordinates> + <panel_attributes>Property +-- +*@ name : text* +/@ optional : boolean = false/ +/@ value : text/ +/- Doc : Doc/ +- DataType : SimpleType +fg=blue +transparency=80</panel_attributes> + <additional_attributes/> + </element> + <element> + <id>Relation</id> + <coordinates> + <x>1192</x> + <y>256</y> + <w>64</w> + <h>168</h> + </coordinates> + <panel_attributes>lt=<. +m1=0..* +</panel_attributes> + <additional_attributes>10.0;10.0;60.0;10.0;60.0;190.0;10.0;190.0</additional_attributes> + </element> + <element> + <id>Relation</id> + <coordinates> + <x>920</x> + <y>288</y> + <w>56</w> + <h>112</h> + </coordinates> + <panel_attributes>lt=<. +m1=0..*</panel_attributes> + <additional_attributes>10.0;110.0;50.0;110.0;50.0;10.0;10.0;10.0</additional_attributes> + </element> + <element> + <id>UMLClass</id> + <coordinates> + <x>720</x> + <y>896</y> + <w>152</w> + <h>80</h> + </coordinates> + <panel_attributes><<enumeration>> +TypeChoice +-- +SimpleType : SimpleType +Struct : StructType +Array : ArrayType + +</panel_attributes> + <additional_attributes/> + </element> + <element> + <id>Relation</id> + <coordinates> + <x>624</x> + <y>904</y> + <w>112</w> + <h>72</h> + </coordinates> + <panel_attributes>lt=<<- +m1= 1 +</panel_attributes> + <additional_attributes>120.0;10.0;80.0;10.0;80.0;70.0;10.0;70.0</additional_attributes> + </element> + <element> + <id>UMLClass</id> + <coordinates> + <x>184</x> + <y>256</y> + <w>240</w> + <h>200</h> + </coordinates> + <panel_attributes>Product +-- +*@ id : Name* +/- Doc : Doc/ +/* Properties : Property/ +/* ModuleClasses : ModuleClass/ +/* SubDevices : SubDevice/ +/- DeviceClass/ +/ @domain : IDRF/ +/ @class : id / +/ -ImplementedProperties : Property / +/ -ImplementedModuleClasses : ModuleClass / +/- Extends/ +/ @domain : IDRF/ +/ @class : id / +fg=blue</panel_attributes> + <additional_attributes/> + </element> + <element> + <id>Relation</id> + <coordinates> + <x>416</x> + <y>248</y> + <w>80</w> + <h>40</h> + </coordinates> + <panel_attributes>lt=<. +m1=0..1 +</panel_attributes> + <additional_attributes>80.0;20.0;10.0;20.0</additional_attributes> + </element> + <element> + <id>Relation</id> + <coordinates> + <x>336</x> + <y>120</y> + <w>432</w> + <h>152</h> + </coordinates> + <panel_attributes>lt=<. +m1= 0..*</panel_attributes> + <additional_attributes>520.0;50.0;440.0;50.0;440.0;10.0;10.0;10.0;10.0;170.0</additional_attributes> + </element> + <element> + <id>Relation</id> + <coordinates> + <x>336</x> + <y>432</y> + <w>432</w> + <h>72</h> + </coordinates> + <panel_attributes>lt=<. +m1= 0..*</panel_attributes> + <additional_attributes>520.0;10.0;430.0;10.0;430.0;70.0;10.0;70.0;10.0;30.0</additional_attributes> + </element> + <element> + <id>Relation</id> + <coordinates> + <x>416</x> + <y>352</y> + <w>80</w> + <h>40</h> + </coordinates> + <panel_attributes>lt=<. +m1=0..* +</panel_attributes> + <additional_attributes>80.0;20.0;10.0;20.0</additional_attributes> + </element> +</diagram> diff --git a/SDT/schema4.0/docs/images/Product.png b/SDT/schema4.0/docs/images/Product.png new file mode 100644 index 0000000000000000000000000000000000000000..2b870b7189ba3f9aafb804a24d9dbdfc44b93fd9 Binary files /dev/null and b/SDT/schema4.0/docs/images/Product.png differ diff --git a/SDT/schema4.0/docs/images/SDT_UML_Basic_Elements.png b/SDT/schema4.0/docs/images/SDT_UML_Basic_Elements.png index 98121276a51889da2c842e80ddfd50a1a807ae0a..327fbfd6f215a4549c089b707a4b24d9986fb0b5 100644 Binary files a/SDT/schema4.0/docs/images/SDT_UML_Basic_Elements.png and b/SDT/schema4.0/docs/images/SDT_UML_Basic_Elements.png differ diff --git a/SDT/schema4.0/docs/images/SDT_simplified.png b/SDT/schema4.0/docs/images/SDT_simplified.png index 041738b3536a9d7454aaf2a024f0c76a8c33a22e..aebda03d0aed3007d010fa2117b2a51254999707 100644 Binary files a/SDT/schema4.0/docs/images/SDT_simplified.png and b/SDT/schema4.0/docs/images/SDT_simplified.png differ