From 65fd4ce746c4fc22ae78d29e09d010e0707c17ed Mon Sep 17 00:00:00 2001 From: ankraft <an.kraft@googlemail.com> Date: Fri, 26 Apr 2019 15:52:34 +0200 Subject: [PATCH] Added new extend definition. Adapted test cases --- SDT/schema4.0/etc/domain.rnc | 41 ++++++++-------- SDT/schema4.0/src/domain.rng | 56 +++++++++++++++------- SDT/schema4.0/src/domain.xsd | 44 ++++++++++------- SDT/schema4.0/test/EchonetLiteExamples.xml | 8 ++-- SDT/schema4.0/test/dal-eg.xml | 2 +- SDT/schema4.0/test/datatypes-test.xml | 2 +- SDT/schema4.0/test/deviceClass-test.xml | 2 +- SDT/schema4.0/test/example2.SDT.xml | 10 ++-- SDT/schema4.0/test/example3.SDT.xml | 12 ++--- SDT/schema4.0/test/extends-test.xml | 10 ++-- SDT/schema4.0/test/mseeb.xml | 6 +-- SDT/schema4.0/test/semanticURI-test.xml | 2 +- 12 files changed, 115 insertions(+), 80 deletions(-) diff --git a/SDT/schema4.0/etc/domain.rnc b/SDT/schema4.0/etc/domain.rnc index f4f495c..9240b45 100644 --- a/SDT/schema4.0/etc/domain.rnc +++ b/SDT/schema4.0/etc/domain.rnc @@ -53,7 +53,7 @@ DataTypeDef = attribute unitOfMeasure { text }?, attribute semanticURI { xsd:anyURI }?, DocDef, - (ExtendsDef | (StructType | ArrayType | SimpleType | EnumType)), + (ExtendDef | (StructType | ArrayType | SimpleType | EnumType)), ConstraintsDef? } StructType = element Struct { DataTypeDef+ } @@ -116,8 +116,7 @@ ModuleClasses = attribute optional { xsd:boolean }?, attribute semanticURI { xsd:anyURI }?, DocDef, - ExtendsDef, - # TODO: singular + ExtendDef, PropertiesDef?, Actions?, Data?, @@ -168,21 +167,25 @@ Events = Data? }+ } -ExtendsDef = - # TODO: singular - element extends { - # TODO: Uppercase , singular +ExtendDef = + element Extend { attribute domain { xsd:Name }, - attribute class { text }, - element excludes { - # TODO: Uppercase + "...s" -> Excludes - element exclude { - attribute name { text }, - attribute type { - text - # TODO: add ExcludeTypes - - } - }+ - }? + 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" + | "product" + | "property" + | "device" + | "subdevice" diff --git a/SDT/schema4.0/src/domain.rng b/SDT/schema4.0/src/domain.rng index 4f121e9..f3746c3 100644 --- a/SDT/schema4.0/src/domain.rng +++ b/SDT/schema4.0/src/domain.rng @@ -150,7 +150,7 @@ </optional> <ref name="DocDef"/> <choice> - <ref name="ExtendsDef" /> + <ref name="ExtendDef" /> <choice> <ref name="StructType" /> <ref name="ArrayType" /> @@ -330,7 +330,7 @@ </attribute> </optional> <ref name="DocDef"/> - <ref name="ExtendsDef" /> <!-- TODO: singular --> + <ref name="ExtendDef" /> <optional> <ref name="PropertiesDef"/> </optional> @@ -471,30 +471,52 @@ </define> - <define name="ExtendsDef"> <!-- TODO: singular --> + <define name="ExtendDef"> <optional> - <element name="extends"> <!-- TODO: Uppercase , singular--> + <element name="Extend"> <attribute name="domain"> <data type="Name"/> </attribute> - <attribute name="class"/> + <attribute name="entity"> + <data type="Name"/> + </attribute> <optional> - <element name="excludes"> <!-- TODO: Uppercase + "...s" -> Excludes--> - <oneOrMore> - <element name="exclude"> - <attribute name="name"> - <text/> - </attribute> - <attribute name="type"> - <text/> <!-- TODO: add ExcludeTypes --> - </attribute> - </element> - </oneOrMore> - </element> + <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> </optional> </define> + + <define name="ExtendType"> + <choice> + <value>action</value> + <value>datapoint</value> + <value>event</value> + <value>moduleclass</value> + <value>product</value> + <value>property</value> + <value>device</value> + <value>subdevice</value> + </choice> + </define> + </grammar> diff --git a/SDT/schema4.0/src/domain.xsd b/SDT/schema4.0/src/domain.xsd index 64c8448..6513965 100644 --- a/SDT/schema4.0/src/domain.xsd +++ b/SDT/schema4.0/src/domain.xsd @@ -117,7 +117,7 @@ <xs:extension base="DocDef"> <xs:sequence> <xs:choice> - <xs:group ref="ExtendsDef"/> + <xs:group ref="ExtendDef"/> <xs:choice> <xs:element ref="Struct"/> <xs:element ref="Array"/> @@ -262,7 +262,7 @@ <xs:complexContent> <xs:extension base="DocDef"> <xs:sequence> - <xs:group ref="ExtendsDef"/> + <xs:group ref="ExtendDef"/> <xs:element minOccurs="0" ref="Properties"/> <xs:element minOccurs="0" ref="Actions"/> <xs:element minOccurs="0" ref="Data"/> @@ -363,31 +363,43 @@ </xs:complexContent> </xs:complexType> </xs:element> - <xs:group name="ExtendsDef"> + <xs:group name="ExtendDef"> <xs:sequence> - <xs:element minOccurs="0" ref="extends"/> + <xs:element minOccurs="0" ref="Extend"/> </xs:sequence> </xs:group> - <xs:element name="extends"> + <xs:element name="Extend"> <xs:complexType> - <xs:sequence> - <xs:element minOccurs="0" ref="excludes"/> - </xs:sequence> + <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="class" use="required"/> + <xs:attribute name="entity" use="required" type="xs:Name"/> </xs:complexType> </xs:element> - <xs:element name="excludes"> + <xs:element name="Exclude"> <xs:complexType> - <xs:sequence> - <xs:element maxOccurs="unbounded" ref="exclude"/> - </xs:sequence> + <xs:attribute name="name" use="required" type="xs:Name"/> + <xs:attribute name="type" use="required" type="ExtendType"/> </xs:complexType> </xs:element> - <xs:element name="exclude"> + <xs:element name="Include"> <xs:complexType> - <xs:attribute name="name" use="required"/> - <xs:attribute name="type" use="required"/> + <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="product"/> + <xs:enumeration value="property"/> + <xs:enumeration value="device"/> + <xs:enumeration value="subdevice"/> + </xs:restriction> + </xs:simpleType> </xs:schema> diff --git a/SDT/schema4.0/test/EchonetLiteExamples.xml b/SDT/schema4.0/test/EchonetLiteExamples.xml index 2cdc034..738a17a 100644 --- a/SDT/schema4.0/test/EchonetLiteExamples.xml +++ b/SDT/schema4.0/test/EchonetLiteExamples.xml @@ -83,15 +83,15 @@ <!-- Inheriting ModuleClasses from the global generic ModuleClasses --> <ModuleClass name="installationLocation"> - <extends domain="example.based.on.echonetLite" class="installationLocation"/> + <Extend domain="example.based.on.echonetLite" entity="installationLocation"/> </ModuleClass> <ModuleClass name="measuredInstantaneousPowerConsumption"> - <extends domain="example.based.on.echonetLite" class="measuredInstantaneousPowerConsumption"/> + <Extend domain="example.based.on.echonetLite" entity="measuredInstantaneousPowerConsumption"/> </ModuleClass> <ModuleClass name="temperatureSensorDataPoints"> - <extends domain="example.based.on.echonetLite" class="temperatureSensorDataPoints"/> + <Extend domain="example.based.on.echonetLite" entity="temperatureSensorDataPoints"/> </ModuleClass> @@ -99,7 +99,7 @@ the change of name. --> <ModuleClass name="washingMachineOperationStatus"> - <extends domain="example.based.on.echonetLite" class="operationStatus"/> + <Extend domain="example.based.on.echonetLite" entity="operationStatus"/> <!-- This Module extends the global one with an event. --> diff --git a/SDT/schema4.0/test/dal-eg.xml b/SDT/schema4.0/test/dal-eg.xml index f839729..5361e67 100644 --- a/SDT/schema4.0/test/dal-eg.xml +++ b/SDT/schema4.0/test/dal-eg.xml @@ -48,7 +48,7 @@ </Events> </ModuleClass> <ModuleClass name="power"> - <extends class="BooleanState" domain="hgi.dal.core"/> + <Extend entity="BooleanState" domain="hgi.dal.core"/> </ModuleClass> </ModuleClasses> </DeviceClass> diff --git a/SDT/schema4.0/test/datatypes-test.xml b/SDT/schema4.0/test/datatypes-test.xml index 340c31a..a4ff353 100644 --- a/SDT/schema4.0/test/datatypes-test.xml +++ b/SDT/schema4.0/test/datatypes-test.xml @@ -20,7 +20,7 @@ <Data> <DataPoint name="TestDataPoint" writable="true"> <DataType> - <extends domain="datatypes-test" class="temperatureType" /> + <Extend domain="datatypes-test" entity="temperatureType" /> </DataType> </DataPoint> </Data> diff --git a/SDT/schema4.0/test/deviceClass-test.xml b/SDT/schema4.0/test/deviceClass-test.xml index 0ce9beb..3720e2a 100644 --- a/SDT/schema4.0/test/deviceClass-test.xml +++ b/SDT/schema4.0/test/deviceClass-test.xml @@ -13,7 +13,7 @@ </Properties> <ModuleClasses> <ModuleClass name="aModuleClass"> - <extends domain="hgi.dal.core" class="BooleanState"></extends> + <Extend domain="hgi.dal.core" entity="BooleanState" /> </ModuleClass> </ModuleClasses> </DeviceClass> diff --git a/SDT/schema4.0/test/example2.SDT.xml b/SDT/schema4.0/test/example2.SDT.xml index 1475640..ef4aacb 100644 --- a/SDT/schema4.0/test/example2.SDT.xml +++ b/SDT/schema4.0/test/example2.SDT.xml @@ -12,19 +12,19 @@ <DeviceClass id="airConditioner"> <ModuleClasses> <ModuleClass name="operationStatus"> - <extends domain="example1.SDT" class="operationStatus"/> + <Extend domain="example1.SDT" entity="operationStatus"/> </ModuleClass> <ModuleClass name="installationLocation"> - <extends domain="example1.SDT" class="installationLocation"/> + <Extend domain="example1.SDT" entity="installationLocation"/> </ModuleClass> <ModuleClass name="measuredCumulativePowerConsumption"> - <extends domain="example1.SDT" class="measuredCumulativePowerConsumption"/> + <Extend domain="example1.SDT" entity="measuredCumulativePowerConsumption"/> </ModuleClass> <ModuleClass name="measuredCumulativePowerConsumption"> - <extends domain="example1.SDT" class="measuredCumulativePowerConsumption"/> + <Extend domain="example1.SDT" entity="measuredCumulativePowerConsumption"/> </ModuleClass> <ModuleClass name="onTimerSetting"> - <extends domain="example1.SDT" class="onTimerSetting"/> + <Extend domain="example1.SDT" entity="onTimerSetting"/> </ModuleClass> </ModuleClasses> </DeviceClass> diff --git a/SDT/schema4.0/test/example3.SDT.xml b/SDT/schema4.0/test/example3.SDT.xml index ef3f1a2..9cbb1c2 100644 --- a/SDT/schema4.0/test/example3.SDT.xml +++ b/SDT/schema4.0/test/example3.SDT.xml @@ -12,22 +12,22 @@ <DeviceClass id="waschingMachine"> <ModuleClasses> <ModuleClass name="operationStatus"> - <extends domain="example1.SDT" class="operationStatus"/> + <Extend domain="example1.SDT" entity="operationStatus"/> </ModuleClass> <ModuleClass name="installationLocation"> - <extends domain="example1.SDT" class="installationLocation"/> + <Extend domain="example1.SDT" entity="installationLocation"/> </ModuleClass> <ModuleClass name="measuredCumulativePowerConsumption"> - <extends domain="example1.SDT" class="measuredCumulativePowerConsumption"/> + <Extend domain="example1.SDT" entity="measuredCumulativePowerConsumption"/> </ModuleClass> <ModuleClass name="measuredCumulativePowerConsumption"> - <extends domain="example1.SDT" class="measuredCumulativePowerConsumption"/> + <Extend domain="example1.SDT" entity="measuredCumulativePowerConsumption"/> </ModuleClass> <ModuleClass name="onTimerSetting"> - <extends domain="example1.SDT" class="onTimerSetting"/> + <Extend domain="example1.SDT" entity="onTimerSetting"/> </ModuleClass> <ModuleClass name="statusDoor"> - <extends domain="example1.SDT" class="statusDoor"/> + <Extend domain="example1.SDT" entity="statusDoor"/> </ModuleClass> </ModuleClasses> </DeviceClass> diff --git a/SDT/schema4.0/test/extends-test.xml b/SDT/schema4.0/test/extends-test.xml index 2b28b70..db11236 100644 --- a/SDT/schema4.0/test/extends-test.xml +++ b/SDT/schema4.0/test/extends-test.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="iso-8859-1"?> <!-- Test the extends element --> -<Domain id="extends-test" xmlns="http://homegatewayinitiative.org/xml/dal/4.0" xmlns:xi="http://www.w3.org/2001/XInclude"> +<Domain id="extend-test" xmlns="http://homegatewayinitiative.org/xml/dal/4.0" xmlns:xi="http://www.w3.org/2001/XInclude"> <ModuleClasses> <ModuleClass name="TestExtendsParent"> <Data> @@ -18,11 +18,9 @@ </Data> </ModuleClass> <ModuleClass name="TestExtendsChild"> - <extends domain="extends-test" class="TestExtendsParent"> - <excludes> - <exclude name="TestExtendsDataPoint2" type="datapoint" /> - </excludes> - </extends> + <Extend domain="extend-test" entity="TestExtendsParent"> + <Exclude name="TestExtendsDataPoint2" type="datapoint" /> + </Extend> <Data> <DataPoint name="TestExtendsDataPoint3" writable="true"> <DataType> diff --git a/SDT/schema4.0/test/mseeb.xml b/SDT/schema4.0/test/mseeb.xml index 34500f3..b7b9438 100644 --- a/SDT/schema4.0/test/mseeb.xml +++ b/SDT/schema4.0/test/mseeb.xml @@ -159,7 +159,7 @@ 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". </Doc> - <extends domain="hgi.dal.core" class="BooleanState"/> + <Extend domain="hgi.dal.core" entity="BooleanState"/> <Properties> <Property name="version" value="1.0.0"> <Doc>Version for this ModuleClass</Doc> @@ -265,7 +265,7 @@ </Properties> <ModuleClasses> <ModuleClass name="power"> - <extends domain="hgi.dal.core" class="BooleanState"/> + <Extend domain="hgi.dal.core" entity="BooleanState"/> </ModuleClass> </ModuleClasses> </SubDevice> @@ -292,7 +292,7 @@ </Properties> <ModuleClasses> <ModuleClass name="power"> - <extends domain="hgi.dal.core" class="BooleanState"/> + <Extend domain="hgi.dal.core" entity="BooleanState"/> </ModuleClass> </ModuleClasses> </SubDevice> diff --git a/SDT/schema4.0/test/semanticURI-test.xml b/SDT/schema4.0/test/semanticURI-test.xml index 1d6d310..0b3259c 100644 --- a/SDT/schema4.0/test/semanticURI-test.xml +++ b/SDT/schema4.0/test/semanticURI-test.xml @@ -20,7 +20,7 @@ <Data> <DataPoint name="TestDataPoint" writable="true" semanticURI="http://example.com/TestDataPoint.rdf"> <DataType> - <extends domain="datatypes-test" class="temperatureType" /> + <Extend domain="datatypes-test" entity="temperatureType" /> </DataType> </DataPoint> </Data> -- GitLab