summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc8428.txt
diff options
context:
space:
mode:
Diffstat (limited to 'doc/rfc/rfc8428.txt')
-rw-r--r--doc/rfc/rfc8428.txt3027
1 files changed, 3027 insertions, 0 deletions
diff --git a/doc/rfc/rfc8428.txt b/doc/rfc/rfc8428.txt
new file mode 100644
index 0000000..15ca6bd
--- /dev/null
+++ b/doc/rfc/rfc8428.txt
@@ -0,0 +1,3027 @@
+
+
+
+
+
+
+Internet Engineering Task Force (IETF) C. Jennings
+Request for Comments: 8428 Cisco
+Category: Standards Track Z. Shelby
+ISSN: 2070-1721 ARM
+ J. Arkko
+ A. Keranen
+ Ericsson
+ C. Bormann
+ Universitaet Bremen TZI
+ August 2018
+
+
+ Sensor Measurement Lists (SenML)
+
+Abstract
+
+ This specification defines a format for representing simple sensor
+ measurements and device parameters in Sensor Measurement Lists
+ (SenML). Representations are defined in JavaScript Object Notation
+ (JSON), Concise Binary Object Representation (CBOR), Extensible
+ Markup Language (XML), and Efficient XML Interchange (EXI), which
+ share the common SenML data model. A simple sensor, such as a
+ temperature sensor, could use one of these media types in protocols
+ such as HTTP or the Constrained Application Protocol (CoAP) to
+ transport the measurements of the sensor or to be configured.
+
+Status of This Memo
+
+ This is an Internet Standards Track document.
+
+ This document is a product of the Internet Engineering Task Force
+ (IETF). It represents the consensus of the IETF community. It has
+ received public review and has been approved for publication by the
+ Internet Engineering Steering Group (IESG). Further information on
+ Internet Standards is available in Section 2 of RFC 7841.
+
+ Information about the current status of this document, any errata,
+ and how to provide feedback on it may be obtained at
+ https://www.rfc-editor.org/info/rfc8428.
+
+
+
+
+
+
+
+
+
+
+
+
+Jennings, et al. Standards Track [Page 1]
+
+RFC 8428 SenML August 2018
+
+
+Copyright Notice
+
+ Copyright (c) 2018 IETF Trust and the persons identified as the
+ document authors. All rights reserved.
+
+ This document is subject to BCP 78 and the IETF Trust's Legal
+ Provisions Relating to IETF Documents
+ (https://trustee.ietf.org/license-info) in effect on the date of
+ publication of this document. Please review these documents
+ carefully, as they describe your rights and restrictions with respect
+ to this document. Code Components extracted from this document must
+ include Simplified BSD License text as described in Section 4.e of
+ the Trust Legal Provisions and are provided without warranty as
+ described in the Simplified BSD License.
+
+Table of Contents
+
+ 1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 3
+ 2. Requirements and Design Goals . . . . . . . . . . . . . . . . 4
+ 3. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 6
+ 4. SenML Structure and Semantics . . . . . . . . . . . . . . . . 6
+ 4.1. Base Fields . . . . . . . . . . . . . . . . . . . . . . . 7
+ 4.2. Regular Fields . . . . . . . . . . . . . . . . . . . . . 7
+ 4.3. SenML Labels . . . . . . . . . . . . . . . . . . . . . . 8
+ 4.4. Extensibility . . . . . . . . . . . . . . . . . . . . . . 9
+ 4.5. Records and Their Fields . . . . . . . . . . . . . . . . 9
+ 4.5.1. Names . . . . . . . . . . . . . . . . . . . . . . . . 9
+ 4.5.2. Units . . . . . . . . . . . . . . . . . . . . . . . . 10
+ 4.5.3. Time . . . . . . . . . . . . . . . . . . . . . . . . 10
+ 4.5.4. Values . . . . . . . . . . . . . . . . . . . . . . . 11
+ 4.6. Resolved Records . . . . . . . . . . . . . . . . . . . . 12
+ 4.7. Associating Metadata . . . . . . . . . . . . . . . . . . 12
+ 4.8. Sensor Streaming Measurement Lists (SenSML) . . . . . . . 12
+ 4.9. Configuration and Actuation Usage . . . . . . . . . . . . 13
+ 5. JSON Representation (application/senml+json) . . . . . . . . 13
+ 5.1. Examples . . . . . . . . . . . . . . . . . . . . . . . . 14
+ 5.1.1. Single Data Point . . . . . . . . . . . . . . . . . . 14
+ 5.1.2. Multiple Data Points . . . . . . . . . . . . . . . . 14
+ 5.1.3. Multiple Measurements . . . . . . . . . . . . . . . . 15
+ 5.1.4. Resolved Data . . . . . . . . . . . . . . . . . . . . 17
+ 5.1.5. Multiple Data Types . . . . . . . . . . . . . . . . . 17
+ 5.1.6. Collection of Resources . . . . . . . . . . . . . . . 18
+ 5.1.7. Setting an Actuator . . . . . . . . . . . . . . . . . 18
+ 6. CBOR Representation (application/senml+cbor) . . . . . . . . 19
+ 7. XML Representation (application/senml+xml) . . . . . . . . . 21
+ 8. EXI Representation (application/senml-exi) . . . . . . . . . 23
+
+
+
+
+
+Jennings, et al. Standards Track [Page 2]
+
+RFC 8428 SenML August 2018
+
+
+ 9. Fragment Identification Methods . . . . . . . . . . . . . . . 26
+ 9.1. Fragment Identification Examples . . . . . . . . . . . . 26
+ 9.2. Fragment Identification for XML and EXI Formats . . . . . 27
+ 10. Usage Considerations . . . . . . . . . . . . . . . . . . . . 27
+ 11. CDDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
+ 12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 30
+ 12.1. SenML Units Registry . . . . . . . . . . . . . . . . . . 30
+ 12.2. SenML Labels Registry . . . . . . . . . . . . . . . . . 35
+ 12.3. Media Type Registrations . . . . . . . . . . . . . . . . 36
+ 12.3.1. senml+json Media Type Registration . . . . . . . . . 37
+ 12.3.2. sensml+json Media Type Registration . . . . . . . . 38
+ 12.3.3. senml+cbor Media Type Registration . . . . . . . . . 39
+ 12.3.4. sensml+cbor Media Type Registration . . . . . . . . 41
+ 12.3.5. senml+xml Media Type Registration . . . . . . . . . 42
+ 12.3.6. sensml+xml Media Type Registration . . . . . . . . . 43
+ 12.3.7. senml-exi Media Type Registration . . . . . . . . . 44
+ 12.3.8. sensml-exi Media Type Registration . . . . . . . . . 45
+ 12.4. XML Namespace Registration . . . . . . . . . . . . . . . 47
+ 12.5. CoAP Content-Format Registration . . . . . . . . . . . . 47
+ 13. Security Considerations . . . . . . . . . . . . . . . . . . . 47
+ 14. Privacy Considerations . . . . . . . . . . . . . . . . . . . 48
+ 15. References . . . . . . . . . . . . . . . . . . . . . . . . . 49
+ 15.1. Normative References . . . . . . . . . . . . . . . . . . 49
+ 15.2. Informative References . . . . . . . . . . . . . . . . . 51
+ Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . 53
+ Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 54
+
+1. Overview
+
+ Connecting sensors to the Internet is not new, and there have been
+ many protocols designed to facilitate it. This specification defines
+ a format and media types for carrying simple sensor information in
+ protocols such as HTTP [RFC7230] or CoAP [RFC7252]. The SenML format
+ is designed so that processors with very limited capabilities could
+ easily encode a sensor measurement into the media type, while at the
+ same time, a server parsing the data could collect a large number of
+ sensor measurements in a relatively efficient manner. SenML can be
+ used for a variety of data flow models, most notably data feeds
+ pushed from a sensor to a collector, and for the web resource model
+ where the sensor data is requested as a resource representation
+ (e.g., "GET /sensor/temperature").
+
+ There are many types of more complex measurements and measurements
+ that this media type would not be suitable for. SenML strikes a
+ balance between having some information about the sensor carried with
+ the sensor data so that the data is self-describing, but it also
+ tries to make that a fairly minimal set of auxiliary information for
+
+
+
+
+Jennings, et al. Standards Track [Page 3]
+
+RFC 8428 SenML August 2018
+
+
+ efficiency reasons. Other information about the sensor can be
+ discovered by other methods such as using the Constrained RESTful
+ Environments (CoRE) Link Format [RFC6690].
+
+ SenML is defined by a data model for measurements and simple metadata
+ about measurements and devices. The data is structured as a single
+ array that contains a series of SenML Records that can each contain
+ fields such as a unique identifier for the sensor, the time the
+ measurement was made, the unit the measurement is in, and the current
+ value of the sensor. Serializations for this data model are defined
+ for JSON [RFC8259], CBOR [RFC7049], XML [W3C.REC-xml-20081126], and
+ Efficient XML Interchange (EXI) [W3C.REC-exi-20140211].
+
+ For example, the following shows a measurement from a temperature
+ gauge encoded in the JSON syntax.
+
+ [
+ {"n":"urn:dev:ow:10e2073a01080063","u":"Cel","v":23.1}
+ ]
+
+ In the example above, the array has a single SenML Record with a
+ measurement for a sensor named "urn:dev:ow:10e2073a01080063" with a
+ current value of 23.1 degrees Celsius.
+
+2. Requirements and Design Goals
+
+ The design goal is to be able to send simple sensor measurements in
+ small packets from large numbers of constrained devices. Keeping the
+ total size of the payload small makes it easy to also use SenML in
+ constrained networks, e.g., in an IPv6 over Low-Power Wireless
+ Personal Area Network (6LoWPAN) [RFC4944]. It is always difficult to
+ define what small code is, but there is a desire to be able to
+ implement this in roughly 1 KB of flash on an 8-bit microprocessor.
+ Experience with power meters and other large-scale deployments has
+ indicated that the solution needs to support allowing multiple
+ measurements to be batched into a single HTTP or CoAP request. This
+ "batch" upload capability allows the server side to efficiently
+ support a large number of devices. It also conveniently supports
+ batch transfers from proxies and storage devices, even in situations
+ where the sensor itself sends just a single data item at a time. The
+ multiple measurements could be from multiple related sensors or from
+ the same sensor but at different times.
+
+
+
+
+
+
+
+
+
+Jennings, et al. Standards Track [Page 4]
+
+RFC 8428 SenML August 2018
+
+
+ The basic design is an array with a series of measurements. The
+ following example shows two measurements made at different times.
+ The value of a measurement is given by the "v" field, the time of a
+ measurement is in the "t" field, the "n" field has a unique sensor
+ name, and the unit of the measurement is carried in the "u" field.
+
+ [
+ {"n":"urn:dev:ow:10e2073a01080063","u":"Cel","t":1.276020076e+09,
+ "v":23.5},
+ {"n":"urn:dev:ow:10e2073a01080063","u":"Cel","t":1.276020091e+09,
+ "v":23.6}
+ ]
+
+ To keep the messages small, it does not make sense to repeat the "n"
+ field in each SenML Record, so there is a concept of a Base Name,
+ which is simply a string that is prepended to the Name field of all
+ elements in that Record and any Records that follow it. So, a more
+ compact form of the example above is the following.
+
+ [
+ {"bn":"urn:dev:ow:10e2073a01080063","u":"Cel","t":1.276020076e+09,
+ "v":23.5},
+ {"u":"Cel","t":1.276020091e+09,
+ "v":23.6}
+ ]
+
+ In the above example, the Base Name is in the "bn" field, and the "n"
+ fields in each Record are empty strings, so they are omitted.
+
+ Some devices have accurate time while others do not, so SenML
+ supports absolute and relative times. Time is represented in
+ floating point as seconds. Values greater than or equal to 2**28
+ represent an absolute time relative to the Unix epoch. Values less
+ than 2**28 represent time relative to the current time.
+
+ A simple sensor with no absolute wall-clock time might take a
+ measurement every second, batch up 60 of them, and then send the
+ batch to a server. It would include the relative time each
+ measurement was made compared to the time the batch was sent in each
+ SenML Record. If the server has accurate time based on, e.g., the
+ Network Time Protocol (NTP), it may use the time it received the data
+ and the relative offset to replace the times in the SenML with
+ absolute times before saving the SenML information in a document
+ database.
+
+
+
+
+
+
+
+Jennings, et al. Standards Track [Page 5]
+
+RFC 8428 SenML August 2018
+
+
+3. Terminology
+
+ The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
+ "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
+ "OPTIONAL" in this document are to be interpreted as described in
+ BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all
+ capitals, as shown here.
+
+ This document also uses the following terms:
+
+ SenML Record: One measurement or configuration instance in time
+ presented using the SenML data model.
+
+ SenML Pack: One or more SenML Records in an array structure.
+
+ SenML Label: A short name used in SenML Records to denote different
+ SenML fields (e.g., "v" for "value").
+
+ SenML Field: A component of a record that associates a value to a
+ SenML Label for this record.
+
+ SenSML: Sensor Streaming Measurement List (see Section 4.8).
+
+ SenSML Stream: One or more SenML Records to be processed as a
+ stream.
+
+ This document uses the terms "attribute" and "tag" where they occur
+ with the underlying technologies (XML, CBOR [RFC7049], and the CoRE
+ Link Format [RFC6690]); they are not used for SenML concepts, per se.
+ However, note that "attribute" has been widely used in the past as a
+ synonym for the SenML "field".
+
+ All comparisons of text strings are performed byte by byte, which
+ results in the comparisons being case sensitive.
+
+ Where arithmetic is used, this specification uses the familiar
+ notation of the programming language C, except that the operator "**"
+ stands for exponentiation.
+
+4. SenML Structure and Semantics
+
+ Each SenML Pack carries a single array that represents a set of
+ measurements and/or parameters. This array contains a series of
+ SenML Records with several fields described below. There are two
+ kinds of fields: base and regular. Both the base and regular fields
+ can be included in any SenML Record. The base fields apply to the
+ entries in the Record and also to all Records after it up to, but not
+
+
+
+
+Jennings, et al. Standards Track [Page 6]
+
+RFC 8428 SenML August 2018
+
+
+ including, the next Record that has that same base field. All base
+ fields are optional. Regular fields can be included in any SenML
+ Record and apply only to that Record.
+
+4.1. Base Fields
+
+ Base Name: This is a string that is prepended to the names found in
+ the entries.
+
+ Base Time: A base time that is added to the time found in an entry.
+
+ Base Unit: A base unit that is assumed for all entries, unless
+ otherwise indicated. If a record does not contain a Unit value,
+ then the Base Unit is used. Otherwise, the value found in the
+ Unit (if any) is used.
+
+ Base Value: A base value is added to the value found in an entry,
+ similar to Base Time.
+
+ Base Sum: A base sum is added to the sum found in an entry, similar
+ to Base Time.
+
+ Base Version: Version number of the media type format. This field
+ is an optional positive integer and defaults to 10 if not present.
+
+4.2. Regular Fields
+
+ Name: Name of the sensor or parameter. When appended to the Base
+ Name field, this must result in a globally unique identifier for
+ the resource. The name is optional, if the Base Name is present.
+ If the name is missing, the Base Name must uniquely identify the
+ resource. This can be used to represent a large array of
+ measurements from the same sensor without having to repeat its
+ identifier on every measurement.
+
+ Unit: Unit for a measurement value. Optional.
+
+ Value: Value of the entry. Optional if a Sum value is present;
+ otherwise, it's required. Values are represented using basic data
+ types. This specification defines floating-point numbers ("v"
+ field for "Value"), booleans ("vb" for "Boolean Value"), strings
+ ("vs" for "String Value"), and binary data ("vd" for "Data
+ Value"). Exactly one Value field MUST appear unless there is a
+ Sum field, in which case it is allowed to have no Value field.
+
+ Sum: Integrated sum of the values over time. Optional. This field
+ is in the unit specified in the Unit value multiplied by seconds.
+ For historical reasons, it is named "sum" instead of "integral".
+
+
+
+Jennings, et al. Standards Track [Page 7]
+
+RFC 8428 SenML August 2018
+
+
+ Time: Time when the value was recorded. Optional.
+
+ Update Time: Period of time in seconds that represents the maximum
+ time before this sensor will provide an updated reading for a
+ measurement. Optional. This can be used to detect the failure of
+ sensors or the communications path from the sensor.
+
+4.3. SenML Labels
+
+ Table 1 provides an overview of all SenML fields defined by this
+ document with their respective labels and data types.
+
+ +---------------+-------+------------+------------+------------+
+ | Name | Label | CBOR Label | JSON Type | XML Type |
+ +---------------+-------+------------+------------+------------+
+ | Base Name | bn | -2 | String | string |
+ | Base Time | bt | -3 | Number | double |
+ | Base Unit | bu | -4 | String | string |
+ | Base Value | bv | -5 | Number | double |
+ | Base Sum | bs | -6 | Number | double |
+ | Base Version | bver | -1 | Number | int |
+ | Name | n | 0 | String | string |
+ | Unit | u | 1 | String | string |
+ | Value | v | 2 | Number | double |
+ | String Value | vs | 3 | String | string |
+ | Boolean Value | vb | 4 | Boolean | boolean |
+ | Data Value | vd | 8 | String (*) | string (*) |
+ | Sum | s | 5 | Number | double |
+ | Time | t | 6 | Number | double |
+ | Update Time | ut | 7 | Number | double |
+ +---------------+-------+------------+------------+------------+
+
+ Table 1: SenML Labels
+
+ (*) Data Value is a base64-encoded string with the URL-safe alphabet
+ as defined in Section 5 of [RFC4648], with padding omitted. (In
+ CBOR, the octets in the Data Value are encoded using a definite-
+ length byte string, major type 2.)
+
+ For details of the JSON representation, see Section 5; for CBOR, see
+ Section 6; and for XML, see Section 7.
+
+
+
+
+
+
+
+
+
+
+Jennings, et al. Standards Track [Page 8]
+
+RFC 8428 SenML August 2018
+
+
+4.4. Extensibility
+
+ The SenML format can be extended with further custom fields. Both
+ new base and regular fields are allowed. See Section 12.2 for
+ details. Implementations MUST ignore fields they don't recognize
+ unless that field has a label name that ends with the "_" character,
+ in which case an error MUST be generated.
+
+ All SenML Records in a Pack MUST have the same version number. This
+ is typically done by adding a Base Version field to only the first
+ Record in the Pack or by using the default value.
+
+ Systems reading one of the objects MUST check for the Base Version
+ field. If this value is a version number larger than the version
+ that the system understands, the system MUST NOT use this object.
+ This allows the version number to indicate that the object contains
+ structure or semantics that is different from what is defined in the
+ present document beyond just making use of the extension points
+ provided here. New version numbers can only be defined in an RFC
+ that updates this specification or its successors.
+
+4.5. Records and Their Fields
+
+4.5.1. Names
+
+ The Name value is concatenated to the Base Name value to yield the
+ name of the sensor. The resulting concatenated name needs to
+ uniquely identify and differentiate the sensor from all others. The
+ concatenated name MUST consist only of characters out of the set "A"
+ to "Z", "a" to "z", and "0" to "9", as well as "-", ":", ".", "/",
+ and "_"; furthermore, it MUST start with a character out of the set
+ "A" to "Z", "a" to "z", or "0" to "9". This restricted character set
+ was chosen so that concatenated names can be used directly within
+ various URI schemes (including segments of an HTTP path with no
+ special encoding; note that a name that contains "/" characters maps
+ into multiple URI path segments) and can be used directly in many
+ databases and analytic systems. [RFC5952] contains advice on
+ encoding an IPv6 address in a name. See Section 14 for privacy
+ considerations that apply to the use of long-term stable unique
+ identifiers.
+
+ Although it is RECOMMENDED that concatenated names be represented as
+ URIs [RFC3986] or URNs [RFC8141], the restricted character set
+ specified above puts strict limits on the URI schemes and URN
+ namespaces that can be used. As a result, implementers need to take
+ care in choosing the naming scheme for concatenated names, because
+ such names both need to be unique and need to conform to the
+ restricted character set. One approach is to include a bit string
+
+
+
+Jennings, et al. Standards Track [Page 9]
+
+RFC 8428 SenML August 2018
+
+
+ that has guaranteed uniqueness (such as a 1-wire address [AN1796]).
+ Some of the examples within this document use the device URN
+ namespace as specified in [DEVICE-URN]. Universally Unique
+ Identifiers (UUIDs) [RFC4122] are another way to generate a unique
+ name. However, the restricted character set does not allow the use
+ of many URI schemes, such as the "tag" scheme [RFC4151] and the "ni"
+ scheme [RFC6920], in names as such. The use of URIs with characters
+ incompatible with this set and possible mapping rules between the two
+ are outside the scope of the present document.
+
+4.5.2. Units
+
+ If the Record has no Unit, the Base Unit is used as the Unit. Having
+ no Unit and no Base Unit is allowed; any information that may be
+ required about units applicable to the value then needs to be
+ provided by the application context.
+
+4.5.3. Time
+
+ If either the Base Time or Time value is missing, the missing field
+ is considered to have a value of zero. The Base Time and Time values
+ are added together to get a value representing the time of
+ measurement.
+
+ Values less than 268,435,456 (2**28) represent time relative to the
+ current time. That is, a time of zero indicates that the sensor does
+ not know the absolute time and the measurement was made roughly
+ "now". A negative value indicates seconds in the past from roughly
+ "now". Positive values up to 2**28 indicate seconds in the future
+ from "now". An example for employing positive values would be
+ actuation use, when the desired change should happen in the future,
+ but the sender or the receiver does not have accurate time available.
+
+ Values greater than or equal to 2**28 represent an absolute time
+ relative to the Unix epoch (1970-01-01T00:00Z in UTC time), and the
+ time is counted the same way as the Portable Operating System
+ Interface (POSIX) "seconds since the epoch" [TIME_T]. Therefore, the
+ smallest absolute Time value that can be expressed (2**28) is
+ 1978-07-04 21:24:16 UTC.
+
+ Because Time values up to 2**28 are used for representing time
+ relative to "now" and Time and Base Time are added together, care
+ must be taken to ensure that the sum does not inadvertently reach
+ 2**28 (i.e., absolute time) when relative time was intended to be
+ used.
+
+
+
+
+
+
+Jennings, et al. Standards Track [Page 10]
+
+RFC 8428 SenML August 2018
+
+
+ Obviously, SenML Records referenced to "now" are only useful within a
+ specific communication context (e.g., based on information on when
+ the SenML Pack, or a specific Record in a SenSML Stream, was sent) or
+ together with some other context information that can be used for
+ deriving a meaning of "now"; the expectation for any archival use is
+ that they will be processed into UTC-referenced records before that
+ context would cease to be available. This specification deliberately
+ leaves the accuracy of "now" very vague as it is determined by the
+ overall systems that use SenML. In a system where a sensor without
+ wall-clock time sends a SenML Record with a time referenced to "now"
+ over a high-speed RS-485 link to an embedded system with accurate
+ time that resolves "now" based on the time of reception, the
+ resulting time uncertainty could be within 1 ms. At the other
+ extreme, a deployment that sends SenML wind-speed readings over a
+ Low-Earth Orbit (LEO) satellite link from a mountain valley might
+ have resulting reception Time values that are easily a dozen minutes
+ off the actual time of the sensor reading, with the time uncertainty
+ depending on satellite locations and conditions.
+
+4.5.4. Values
+
+ If only one of the Base Sum or Sum value is present, the missing
+ field is considered to have a value of zero. The Base Sum and Sum
+ values are added together to get the sum of measurement. If neither
+ the Base Sum nor the Sum is present, then the measurement does not
+ have a Sum value.
+
+ If the Base Value or Value is not present, the missing field(s) is
+ considered to have a value of zero. The Base Value and Value are
+ added together to get the value of the measurement.
+
+ Representing the statistical characteristics of measurements, such as
+ accuracy, can be very complex. Future specification may add new
+ fields to provide better information about the statistical properties
+ of the measurement.
+
+ In summary, the structure of a SenML Record is laid out to support a
+ single measurement per Record. If multiple data values are measured
+ at the same time (e.g., air pressure and altitude), they are best
+ kept as separate Records linked through their Time value; this is
+ even true when one of the data values is more "meta" than others
+ (e.g., describes a condition that influences other measurements at
+ the same time).
+
+
+
+
+
+
+
+
+Jennings, et al. Standards Track [Page 11]
+
+RFC 8428 SenML August 2018
+
+
+4.6. Resolved Records
+
+ Sometimes it is useful to be able to refer to a defined normalized
+ format for SenML Records. This normalized format tends to get used
+ for big data applications and intermediate forms when converting to
+ other formats. Also, if SenML Records are used outside of a SenML
+ Pack, they need to be resolved first to ensure applicable base values
+ are applied.
+
+ A SenML Record is referred to as "resolved" if it does not contain
+ any base values, i.e., labels starting with the character "b", except
+ for Base Version fields (see below), and has no relative times. To
+ resolve the Records, the applicable base values of the SenML Pack (if
+ any) are applied to the Record. That is, for the base values in the
+ Record or before the Record in the Pack, Name and Base Name are
+ concatenated, the Base Time is added to the time of the Record, the
+ Base Unit is applied to the Record if it did not contain a Unit, etc.
+ In addition, the Records need to be in chronological order in the
+ Pack. An example of this is shown in Section 5.1.4.
+
+ The Base Version field MUST NOT be present in resolved Records if the
+ SenML version defined in this document is used; otherwise, it MUST be
+ present in all the resolved SenML Records.
+
+ A future specification that defines new base fields needs to specify
+ how the field is resolved.
+
+4.7. Associating Metadata
+
+ SenML is designed to carry the minimum dynamic information about
+ measurements and, for efficiency reasons, does not carry significant
+ static metadata about the device, object, or sensors. Instead, it is
+ assumed that this metadata is carried out of band. For web resources
+ using SenML Packs, this metadata can be made available using the CoRE
+ Link Format [RFC6690]. The most obvious use of this link format is
+ to describe that a resource is available in a SenML format in the
+ first place. The relevant media type indicator is included in the
+ Content-Type (ct=) link attribute (which is defined for the link
+ format in Section 7.2.1 of [RFC7252]).
+
+4.8. Sensor Streaming Measurement Lists (SenSML)
+
+ In some usage scenarios of SenML, the implementations store or
+ transmit SenML in a stream-like fashion, where data is collected over
+ time and continuously added to the object. This mode of operation is
+ optional, but systems or protocols using SenML in this fashion MUST
+ specify that they are doing this. SenML defines separate media types
+ to indicate Sensor Streaming Measurement Lists (SenSML) for this
+
+
+
+Jennings, et al. Standards Track [Page 12]
+
+RFC 8428 SenML August 2018
+
+
+ usage (see Section 12.3.2). In this situation, the SenSML Stream can
+ be sent and received in a partial fashion, i.e., a measurement entry
+ can be read as soon as the SenML Record is received and does not have
+ to wait for the full SenSML Stream to be complete.
+
+ If times relative to "now" (see Section 4.5.3) are used in SenML
+ Records of a SenSML Stream, their interpretation of "now" is based on
+ the time when the specific Record is sent in the stream.
+
+4.9. Configuration and Actuation Usage
+
+ SenML can also be used for configuring parameters and controlling
+ actuators. When a SenML Pack is sent (e.g., using an HTTP/CoAP POST
+ or PUT method) and the semantics of the target are such that SenML is
+ interpreted as configuration/actuation, SenML Records are interpreted
+ as a request to change the values of given (sub)resources (given as
+ names) to given values at the given time(s). The semantics of the
+ target resource supporting this usage can be described, e.g., using
+ [RID-CoRE]. Examples of actuation usage are shown in Section 5.1.7.
+
+5. JSON Representation (application/senml+json)
+
+ For the SenML fields shown in Table 2, the SenML Labels are used as
+ the JSON object member names within JSON objects representing the
+ JSON SenML Records.
+
+ +---------------+-------+-----------+
+ | Name | Label | JSON Type |
+ +---------------+-------+-----------+
+ | Base Name | bn | String |
+ | Base Time | bt | Number |
+ | Base Unit | bu | String |
+ | Base Value | bv | Number |
+ | Base Sum | bs | Number |
+ | Base Version | bver | Number |
+ | Name | n | String |
+ | Unit | u | String |
+ | Value | v | Number |
+ | String Value | vs | String |
+ | Boolean Value | vb | Boolean |
+ | Data Value | vd | String |
+ | Sum | s | Number |
+ | Time | t | Number |
+ | Update Time | ut | Number |
+ +---------------+-------+-----------+
+
+ Table 2: JSON SenML Labels
+
+
+
+
+Jennings, et al. Standards Track [Page 13]
+
+RFC 8428 SenML August 2018
+
+
+ The root JSON value consists of an array with one JSON object for
+ each SenML Record. All the fields in the above table MAY occur in
+ the Records with member values of the type specified in the table.
+
+ Only the UTF-8 [RFC3629] form of JSON is allowed. Characters in the
+ String Value are encoded using the escape sequences defined in
+ [RFC8259]. Octets in the Data Value are base64 encoded with the URL-
+ safe alphabet as defined in Section 5 of [RFC4648], with padding
+ omitted.
+
+ Systems receiving measurements MUST be able to process the range of
+ floating-point numbers that are representable as IEEE double-
+ precision, floating-point numbers [IEEE.754]. This allows Time
+ values to have better than microsecond precision over the next 100
+ years. The number of significant digits in any measurement is not
+ relevant, so a reading of 1.1 has exactly the same semantic meaning
+ as 1.10. If the value has an exponent, the "e" MUST be in lower
+ case. In the interest of avoiding unnecessary verbosity and speeding
+ up processing, the mantissa SHOULD be less than 19 characters long,
+ and the exponent SHOULD be less than 5 characters long.
+
+5.1. Examples
+
+5.1.1. Single Data Point
+
+ The following shows a temperature reading taken approximately "now"
+ by a 1-wire sensor device that was assigned the unique 1-wire address
+ of 10e2073a01080063:
+
+ [
+ {"n":"urn:dev:ow:10e2073a01080063","u":"Cel","v":23.1}
+ ]
+
+5.1.2. Multiple Data Points
+
+ The following example shows voltage and current "now", i.e., at an
+ unspecified time.
+
+[
+ {"bn":"urn:dev:ow:10e2073a01080063:","n":"voltage","u":"V","v":120.1},
+ {"n":"current","u":"A","v":1.2}
+]
+
+
+
+
+
+
+
+
+
+Jennings, et al. Standards Track [Page 14]
+
+RFC 8428 SenML August 2018
+
+
+ The next example is similar to the above one, but it shows current at
+ Tue Jun 8 18:01:16.001 UTC 2010 and at each second for the previous 5
+ seconds.
+
+ [
+ {"bn":"urn:dev:ow:10e2073a0108006:","bt":1.276020076001e+09,
+ "bu":"A","bver":5,
+ "n":"voltage","u":"V","v":120.1},
+ {"n":"current","t":-5,"v":1.2},
+ {"n":"current","t":-4,"v":1.3},
+ {"n":"current","t":-3,"v":1.4},
+ {"n":"current","t":-2,"v":1.5},
+ {"n":"current","t":-1,"v":1.6},
+ {"n":"current","v":1.7}
+ ]
+
+ As an example of SenSML, the following stream of measurements may be
+ sent via a long-lived HTTP POST from the producer of the stream to
+ its consumer, and each measurement object may be reported at the time
+ it was measured:
+
+ [
+ {"bn":"urn:dev:ow:10e2073a01080063","bt":1.320067464e+09,
+ "bu":"%RH","v":21.2},
+ {"t":10,"v":21.3},
+ {"t":20,"v":21.4},
+ {"t":30,"v":21.4},
+ {"t":40,"v":21.5},
+ {"t":50,"v":21.5},
+ {"t":60,"v":21.5},
+ {"t":70,"v":21.6},
+ {"t":80,"v":21.7},
+ ...
+
+5.1.3. Multiple Measurements
+
+ The following example shows humidity measurements from a mobile
+ device with a 1-wire address 10e2073a01080063, starting at Mon Oct 31
+ 13:24:24 UTC 2011. The device also provides position data, which is
+ provided in the same measurement or parameter array as separate
+ entries. Note that time is used to correlate data that belongs
+ together, e.g., a measurement and a parameter associated with it.
+ Finally, the device also reports extra data about its battery status
+ at a separate time.
+
+
+
+
+
+
+
+Jennings, et al. Standards Track [Page 15]
+
+RFC 8428 SenML August 2018
+
+
+ [
+ {"bn":"urn:dev:ow:10e2073a01080063","bt":1.320067464e+09,
+ "bu":"%RH","v":20},
+ {"u":"lon","v":24.30621},
+ {"u":"lat","v":60.07965},
+ {"t":60,"v":20.3},
+ {"u":"lon","t":60,"v":24.30622},
+ {"u":"lat","t":60,"v":60.07965},
+ {"t":120,"v":20.7},
+ {"u":"lon","t":120,"v":24.30623},
+ {"u":"lat","t":120,"v":60.07966},
+ {"u":"%EL","t":150,"v":98},
+ {"t":180,"v":21.2},
+ {"u":"lon","t":180,"v":24.30628},
+ {"u":"lat","t":180,"v":60.07967}
+ ]
+
+ The following table shows the size of this example in various forms,
+ as well as the size of each of these forms compressed with gzip.
+
+ +----------+------+-----------------+
+ | Encoding | Size | Compressed Size |
+ +----------+------+-----------------+
+ | JSON | 573 | 206 |
+ | XML | 649 | 235 |
+ | CBOR | 254 | 196 |
+ | EXI | 161 | 184 |
+ +----------+------+-----------------+
+
+ Table 3: Size Comparisons
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Jennings, et al. Standards Track [Page 16]
+
+RFC 8428 SenML August 2018
+
+
+5.1.4. Resolved Data
+
+ The following shows the example from the previous section in resolved
+ format.
+
+ [
+ {"n":"urn:dev:ow:10e2073a01080063","u":"%RH","t":1.320067464e+09,
+ "v":20},
+ {"n":"urn:dev:ow:10e2073a01080063","u":"lon","t":1.320067464e+09,
+ "v":24.30621},
+ {"n":"urn:dev:ow:10e2073a01080063","u":"lat","t":1.320067464e+09,
+ "v":60.07965},
+ {"n":"urn:dev:ow:10e2073a01080063","u":"%RH","t":1.320067524e+09,
+ "v":20.3},
+ {"n":"urn:dev:ow:10e2073a01080063","u":"lon","t":1.320067524e+09,
+ "v":24.30622},
+ {"n":"urn:dev:ow:10e2073a01080063","u":"lat","t":1.320067524e+09,
+ "v":60.07965},
+ {"n":"urn:dev:ow:10e2073a01080063","u":"%RH","t":1.320067584e+09,
+ "v":20.7},
+ {"n":"urn:dev:ow:10e2073a01080063","u":"lon","t":1.320067584e+09,
+ "v":24.30623},
+ {"n":"urn:dev:ow:10e2073a01080063","u":"lat","t":1.320067584e+09,
+ "v":60.07966},
+ {"n":"urn:dev:ow:10e2073a01080063","u":"%EL","t":1.320067614e+09,
+ "v":98},
+ {"n":"urn:dev:ow:10e2073a01080063","u":"%RH","t":1.320067644e+09,
+ "v":21.2},
+ {"n":"urn:dev:ow:10e2073a01080063","u":"lon","t":1.320067644e+09,
+ "v":24.30628},
+ {"n":"urn:dev:ow:10e2073a01080063","u":"lat","t":1.320067644e+09,
+ "v":60.07967}
+ ]
+
+5.1.5. Multiple Data Types
+
+ The following example shows a sensor that returns different data
+ types.
+
+ [
+ {"bn":"urn:dev:ow:10e2073a01080063:","n":"temp","u":"Cel","v":23.1},
+ {"n":"label","vs":"Machine Room"},
+ {"n":"open","vb":false},
+ {"n":"nfc-reader","vd":"aGkgCg"}
+ ]
+
+
+
+
+
+
+Jennings, et al. Standards Track [Page 17]
+
+RFC 8428 SenML August 2018
+
+
+5.1.6. Collection of Resources
+
+ The following example shows the results from a query to one device
+ that aggregates multiple measurements from other devices. The
+ example assumes that a client has fetched information from a device
+ at 2001:db8::2 by performing a GET operation on http://[2001:db8::2]
+ at Mon Oct 31 16:27:09 UTC 2011 and has gotten two separate values as
+ a result: a temperature and humidity measurement as well as the
+ results from another device at http://[2001:db8::1] that also had a
+ temperature and humidity measurement. Note that the last record
+ would use the Base Name from the 3rd record but the Base Time from
+ the first record.
+
+ [
+ {"bn":"2001:db8::2/","bt":1.320078429e+09,
+ "n":"temperature","u":"Cel","v":25.2},
+ {"n":"humidity","u":"%RH","v":30},
+ {"bn":"2001:db8::1/","n":"temperature","u":"Cel","v":12.3},
+ {"n":"humidity","u":"%RH","v":67}
+ ]
+
+5.1.7. Setting an Actuator
+
+ The following example shows the SenML that could be used to set the
+ current set point of a typical residential thermostat that has a
+ temperature set point, a switch to turn on and off the heat, and a
+ switch to turn on the fan override.
+
+ [
+ {"bn":"urn:dev:ow:10e2073a01080063:"},
+ {"n":"temp","u":"Cel","v":23.1},
+ {"n":"heat","u":"/","v":1},
+ {"n":"fan","u":"/","v":0}
+ ]
+
+ In the following example, two different lights are turned on. It is
+ assumed that the lights are on a network that can guarantee delivery
+ of the messages to the two lights within 15 ms (e.g., a network using
+ 802.1BA [IEEE802.1BA] and 802.1AS [IEEE802.1AS] for time
+ synchronization). The controller has set the time of the lights to
+ come on at 20 ms in the future from the current time. This allows
+ both lights to receive the message, wait till that time, then apply
+ the switch command so that both lights come on at the same time.
+
+ [
+ {"bt":1.320078429e+09,"bu":"/","n":"2001:db8::3","v":1},
+ {"n":"2001:db8::4","v":1}
+ ]
+
+
+
+Jennings, et al. Standards Track [Page 18]
+
+RFC 8428 SenML August 2018
+
+
+ The following shows two lights being turned off using a
+ non-deterministic network that has high odds of delivering a message
+ in less than 100 ms and uses NTP for time synchronization. The
+ current time is 1320078429. The user has just turned off a light
+ switch that is turning off two lights. Both lights are immediately
+ dimmed to 50% brightness to give the user instant feedback that
+ something is changing. However, given the network, the lights will
+ probably dim at somewhat different times. Then 100 ms in the future,
+ both lights will go off at the same time. The instant, but not
+ synchronized, dimming gives the user the sensation of quick
+ responses, and the timed-off 100 ms in the future gives the
+ perception of both lights going off at the same time.
+
+ [
+ {"bt":1.320078429e+09,"bu":"/","n":"2001:db8::3","v":0.5},
+ {"n":"2001:db8::4","v":0.5},
+ {"n":"2001:db8::3","t":0.1,"v":0},
+ {"n":"2001:db8::4","t":0.1,"v":0}
+ ]
+
+6. CBOR Representation (application/senml+cbor)
+
+ The CBOR [RFC7049] representation is equivalent to the JSON
+ representation, with the following changes:
+
+ o For JSON Numbers, the CBOR representation can use integers,
+ floating-point numbers, or decimal fractions (CBOR Tag 4);
+ however, a representation SHOULD be chosen such that when the CBOR
+ value is converted to an IEEE double-precision, floating-point
+ value, it has exactly the same value as the original JSON Number
+ converted to that form. For the version number, only an unsigned
+ integer is allowed.
+
+ o Characters in the String Value are encoded using a text string
+ with a definite length (major type 3). Octets in the Data Value
+ are encoded using a byte string with a definite length (major type
+ 2).
+
+ o For compactness, the CBOR representation uses integers for the
+ labels, as defined in Table 4. This table is conclusive, i.e.,
+ there is no intention to define any additional integer map keys;
+ any extensions will use string map keys. This allows translators
+ converting between CBOR and JSON representations to also convert
+ all future labels without needing to update implementations. Base
+ values are given negative CBOR labels, and others are given
+ non-negative labels.
+
+
+
+
+
+Jennings, et al. Standards Track [Page 19]
+
+RFC 8428 SenML August 2018
+
+
+ +---------------+-------+------------+
+ | Name | Label | CBOR Label |
+ +---------------+-------+------------+
+ | Base Version | bver | -1 |
+ | Base Name | bn | -2 |
+ | Base Time | bt | -3 |
+ | Base Unit | bu | -4 |
+ | Base Value | bv | -5 |
+ | Base Sum | bs | -6 |
+ | Name | n | 0 |
+ | Unit | u | 1 |
+ | Value | v | 2 |
+ | String Value | vs | 3 |
+ | Boolean Value | vb | 4 |
+ | Sum | s | 5 |
+ | Time | t | 6 |
+ | Update Time | ut | 7 |
+ | Data Value | vd | 8 |
+ +---------------+-------+------------+
+
+ Table 4: CBOR Representation: Integers for Map Keys
+
+ o For streaming SenSML in CBOR representation, the array containing
+ the records SHOULD be a CBOR array with an indefinite length; for
+ non-streaming SenML, an array with a definite length MUST be used.
+
+ The following example shows a dump of the CBOR example for the same
+ sensor measurement as in Section 5.1.2.
+
+ 0000 87 a7 21 78 1b 75 72 6e 3a 64 65 76 3a 6f 77 3a |..!x.urn:dev:ow:|
+ 0010 31 30 65 32 30 37 33 61 30 31 30 38 30 30 36 3a |10e2073a0108006:|
+ 0020 22 fb 41 d3 03 a1 5b 00 10 62 23 61 41 20 05 00 |".A...[..b#aA ..|
+ 0030 67 76 6f 6c 74 61 67 65 01 61 56 02 fb 40 5e 06 |gvoltage.aV..@^.|
+ 0040 66 66 66 66 66 a3 00 67 63 75 72 72 65 6e 74 06 |fffff..gcurrent.|
+ 0050 24 02 fb 3f f3 33 33 33 33 33 33 a3 00 67 63 75 |$..?.333333..gcu|
+ 0060 72 72 65 6e 74 06 23 02 fb 3f f4 cc cc cc cc cc |rrent.#..?......|
+ 0070 cd a3 00 67 63 75 72 72 65 6e 74 06 22 02 fb 3f |...gcurrent."..?|
+ 0080 f6 66 66 66 66 66 66 a3 00 67 63 75 72 72 65 6e |.ffffff..gcurren|
+ 0090 74 06 21 02 f9 3e 00 a3 00 67 63 75 72 72 65 6e |t.!..>...gcurren|
+ 00a0 74 06 20 02 fb 3f f9 99 99 99 99 99 9a a3 00 67 |t. ..?.........g|
+ 00b0 63 75 72 72 65 6e 74 06 00 02 fb 3f fb 33 33 33 |current....?.333|
+ 00c0 33 33 33 |333|
+ 00c3
+
+
+
+
+
+
+
+
+Jennings, et al. Standards Track [Page 20]
+
+RFC 8428 SenML August 2018
+
+
+ In CBOR diagnostic notation (Section 6 of [RFC7049]), this is:
+
+ [{-2: "urn:dev:ow:10e2073a0108006:",
+ -3: 1276020076.001, -4: "A", -1: 5, 0: "voltage", 1: "V", 2: 120.1},
+ {0: "current", 6: -5, 2: 1.2}, {0: "current", 6: -4, 2: 1.3},
+ {0: "current", 6: -3, 2: 1.4}, {0: "current", 6: -2, 2: 1.5},
+ {0: "current", 6: -1, 2: 1.6}, {0: "current", 6: 0, 2: 1.7}]
+
+7. XML Representation (application/senml+xml)
+
+ A SenML Pack or Stream can also be represented in XML format as
+ defined in this section.
+
+ Only the UTF-8 form of XML is allowed. Octets in the Data Value are
+ base64 encoded with the URL-safe alphabet as defined in Section 5 of
+ [RFC4648], with padding omitted.
+
+ The following shows an XML example for the same sensor measurement as
+ in Section 5.1.2.
+
+ <sensml xmlns="urn:ietf:params:xml:ns:senml">
+ <senml bn="urn:dev:ow:10e2073a0108006:" bt="1.276020076001e+09"
+ bu="A" bver="5" n="voltage" u="V" v="120.1"></senml>
+ <senml n="current" t="-5" v="1.2"></senml>
+ <senml n="current" t="-4" v="1.3"></senml>
+ <senml n="current" t="-3" v="1.4"></senml>
+ <senml n="current" t="-2" v="1.5"></senml>
+ <senml n="current" t="-1" v="1.6"></senml>
+ <senml n="current" v="1.7"></senml>
+ </sensml>
+
+ The SenML Stream is represented as a sensml element that contains a
+ series of senml elements for each SenML Record. The SenML fields are
+ represented as XML attributes. For each field defined in this
+ document, the following table shows the SenML Labels, which are used
+ for the XML attribute name, as well as the according restrictions on
+ the XML attribute values ("type") as used in the XML senml elements.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Jennings, et al. Standards Track [Page 21]
+
+RFC 8428 SenML August 2018
+
+
+ +---------------+-------+----------+
+ | Name | Label | XML Type |
+ +---------------+-------+----------+
+ | Base Name | bn | string |
+ | Base Time | bt | double |
+ | Base Unit | bu | string |
+ | Base Value | bv | double |
+ | Base Sum | bs | double |
+ | Base Version | bver | int |
+ | Name | n | string |
+ | Unit | u | string |
+ | Value | v | double |
+ | String Value | vs | string |
+ | Data Value | vd | string |
+ | Boolean Value | vb | boolean |
+ | Sum | s | double |
+ | Time | t | double |
+ | Update Time | ut | double |
+ +---------------+-------+----------+
+
+ Table 5: XML SenML Labels
+
+ The RelaxNG [RNC] Schema for the XML is:
+
+ default namespace = "urn:ietf:params:xml:ns:senml"
+ namespace rng = "http://relaxng.org/ns/structure/1.0"
+
+ senml = element senml {
+ attribute bn { xsd:string }?,
+ attribute bt { xsd:double }?,
+ attribute bv { xsd:double }?,
+ attribute bs { xsd:double }?,
+ attribute bu { xsd:string }?,
+ attribute bver { xsd:int }?,
+
+ attribute n { xsd:string }?,
+ attribute s { xsd:double }?,
+ attribute t { xsd:double }?,
+ attribute u { xsd:string }?,
+ attribute ut { xsd:double }?,
+
+ attribute v { xsd:double }?,
+ attribute vb { xsd:boolean }?,
+ attribute vs { xsd:string }?,
+ attribute vd { xsd:string }?
+ }
+
+
+
+
+
+Jennings, et al. Standards Track [Page 22]
+
+RFC 8428 SenML August 2018
+
+
+ sensml =
+ element sensml {
+ senml+
+ }
+
+ start = sensml
+
+8. EXI Representation (application/senml-exi)
+
+ For efficient transmission of SenML over, e.g., a constrained
+ network, EXI can be used. This encodes the XML Schema
+ [W3C.REC-xmlschema-1-20041028] structure of SenML into binary tags
+ and values rather than ASCII text. An EXI representation of SenML
+ SHOULD be made using the strict schema mode of EXI. However, this
+ mode does not allow tag extensions to the schema; therefore, any
+ extensions will be lost in the encoding. For uses where extensions
+ need to be preserved in EXI, the non-strict schema mode of EXI MAY be
+ used.
+
+ The EXI header MUST include "EXI Options", as defined in
+ [W3C.REC-exi-20140211], with a schemaId set to the value of "a",
+ indicating the schema provided in this specification. Future
+ revisions to the schema can change the value of the schemaId to allow
+ for backwards compatibility. When the data will be transported over
+ CoAP or HTTP, an EXI Cookie SHOULD NOT be used as it simply makes
+ things larger and is redundant to information provided in the
+ Content-Type header.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Jennings, et al. Standards Track [Page 23]
+
+RFC 8428 SenML August 2018
+
+
+ The following is the XSD Schema to be used for strict schema-guided
+ EXI processing. It is generated from the RelaxNG.
+
+ <?xml version="1.0" encoding="utf-8"?>
+ <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ targetNamespace="urn:ietf:params:xml:ns:senml"
+ xmlns:ns1="urn:ietf:params:xml:ns:senml">
+ <xs:element name="senml">
+ <xs:complexType>
+ <xs:attribute name="bn" type="xs:string" />
+ <xs:attribute name="bt" type="xs:double" />
+ <xs:attribute name="bv" type="xs:double" />
+ <xs:attribute name="bs" type="xs:double" />
+ <xs:attribute name="bu" type="xs:string" />
+ <xs:attribute name="bver" type="xs:int" />
+ <xs:attribute name="n" type="xs:string" />
+ <xs:attribute name="s" type="xs:double" />
+ <xs:attribute name="t" type="xs:double" />
+ <xs:attribute name="u" type="xs:string" />
+ <xs:attribute name="ut" type="xs:double" />
+ <xs:attribute name="v" type="xs:double" />
+ <xs:attribute name="vb" type="xs:boolean" />
+ <xs:attribute name="vs" type="xs:string" />
+ <xs:attribute name="vd" type="xs:string" />
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="sensml">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="ns1:senml" />
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:schema>
+
+ The following shows a hexdump of the EXI produced from encoding the
+ following XML example. Note that this example is the same
+ information as the first example in Section 5.1.2 but in JSON format.
+
+ <sensml xmlns="urn:ietf:params:xml:ns:senml">
+ <senml bn="urn:dev:ow:10e2073a01080063:" n="voltage" u="V"
+ v="120.1"></senml>
+ <senml n="current" u="A" v="1.2"></senml>
+ </sensml>
+
+
+
+
+
+
+Jennings, et al. Standards Track [Page 24]
+
+RFC 8428 SenML August 2018
+
+
+ Which compresses with EXI to the following displayed in hexdump:
+
+ 0000 a0 30 0d 84 80 f3 ab 93 71 d3 23 2b b1 d3 7b b9 |.0......q.#+..{.|
+ 0010 d1 89 83 29 91 81 b9 9b 09 81 89 81 c1 81 81 b1 |...)............|
+ 0020 99 d2 84 bb 37 b6 3a 30 b3 b2 90 1a b1 58 84 c0 |....7.:0.....X..|
+ 0030 33 04 b1 ba b9 39 32 b7 3a 10 1a 09 06 40 38 |3....92.:....@8|
+ 003f
+
+ The above example used the bit-packed form of EXI, but it is also
+ possible to use a byte-packed form of EXI, which can make it easier
+ for a simple sensor to produce valid EXI without really implementing
+ EXI. Consider the example of a temperature sensor that produces a
+ value in tenths of degrees Celsius over a range of 0.0 to 55.0. It
+ would produce an XML SenML file such as:
+
+ <sensml xmlns="urn:ietf:params:xml:ns:senml">
+ <senml n="urn:dev:ow:10e2073a01080063" u="Cel" v="23.1"></senml>
+ </sensml>
+
+ The compressed form, using the byte-alignment option of EXI, for the
+ above XML is the following:
+
+ 0000 a0 00 48 80 6c 20 01 06 1d 75 72 6e 3a 64 65 76 |..H.l ...urn:dev|
+ 0010 3a 6f 77 3a 31 30 65 32 30 37 33 61 30 31 30 38 |:ow:10e2073a0108|
+ 0020 30 30 36 33 02 05 43 65 6c 01 00 e7 01 01 00 03 |0063..Cel.......|
+ 0030 01 |.|
+ 0031
+
+ A small temperature sensor device that only generates this one EXI
+ file does not really need a full EXI implementation. It can simply
+ hard code the output, replacing the 1-wire device ID starting at byte
+ 0x14 and going to byte 0x23 with its device ID and replacing the
+ value "0xe7 0x01" at location 0x2b and 0x2c with the current
+ temperature. The EXI specification [W3C.REC-exi-20140211] contains
+ the full information on how floating-point numbers are represented,
+ but for the purpose of this sensor, the temperature can be converted
+ to an integer in tenths of degrees (231 in this example). EXI stores
+ 7 bits of the integer in each byte with the top bit set to one if
+ there are further bytes. So, the first byte is set to the low 7 bits
+ of the integer temperature in tenths of degrees plus 0x80. In this
+ example, 231 & 0x7F + 0x80 = 0xE7. The second byte is set to the
+ integer temperature in tenths of degrees right-shifted 7 bits. In
+ this example, 231 >> 7 = 0x01.
+
+
+
+
+
+
+
+
+Jennings, et al. Standards Track [Page 25]
+
+RFC 8428 SenML August 2018
+
+
+9. Fragment Identification Methods
+
+ A SenML Pack typically consists of multiple SenML Records, and for
+ some applications, it may be useful to be able to refer to a single
+ Record, or a set of Records, in a Pack with a fragment identifier.
+ The fragment identifier is only interpreted by a client and does not
+ impact retrieval of a representation. The SenML fragment
+ identification is modeled after Comma-Separated Value (CSV) fragment
+ identifiers [RFC7111].
+
+ To select a single SenML Record, the "rec" scheme followed by a
+ single number is used. For the purpose of numbering Records, the
+ first Record is at position 1. A range of records can be selected by
+ giving the first and the last record number separated by a "-"
+ character. Instead of the second number, the "*" character can be
+ used to indicate the last SenML Record in the Pack. A set of Records
+ can also be selected using a comma-separated list of Record positions
+ or ranges.
+
+ (We use the term "selecting a Record" for identifying it as part of
+ the fragment, not in the sense of isolating it from the Pack -- the
+ Record still needs to be interpreted as part of the Pack, e.g., using
+ the base values defined in earlier Records.)
+
+9.1. Fragment Identification Examples
+
+ The 3rd SenML Record from the "coap://example.com/temp" resource can
+ be selected with:
+
+ coap://example.com/temp#rec=3
+
+ Records from 3rd to 6th can be selected with:
+
+ coap://example.com/temp#rec=3-6
+
+ Records from 19th to the last can be selected with:
+
+ coap://example.com/temp#rec=19-*
+
+ The 3rd and 5th Records can be selected with:
+
+ coap://example.com/temp#rec=3,5
+
+ To select the Records from third to fifth, the 10th Record, and all
+ Records from 19th to the last:
+
+ coap://example.com/temp#rec=3-5,10,19-*
+
+
+
+
+Jennings, et al. Standards Track [Page 26]
+
+RFC 8428 SenML August 2018
+
+
+9.2. Fragment Identification for XML and EXI Formats
+
+ In addition to the SenML fragment identifiers described above, with
+ the XML and EXI SenML formats, the syntax defined in the XPointer
+ element() Scheme [XPointerElement] of the XPointer Framework
+ [XPointerFramework] can be used. (This is required by [RFC7303] for
+ media types using the syntax suffix structured with "+xml". For
+ consistency, SenML allows this for the EXI formats as well.)
+
+ Note that fragment identifiers are available to the client side only;
+ they are not provided in transfer protocols such as CoAP or HTTP.
+ Thus, they cannot be used by the server in deciding which media type
+ to send. Where a server has multiple representations available for a
+ resource identified by a URI, it might send a JSON or CBOR
+ representation when the client was directed to use an XML/EXI
+ fragment identifier with it. Clients can prevent running into this
+ problem by explicitly requesting an XML or EXI media type (e.g.,
+ using the CoAP Accept option) when XML-/EXI-only fragment identifier
+ syntax is in use in the URI.
+
+10. Usage Considerations
+
+ The measurements support sending both the current value of a sensor
+ as well as an integrated sum. For many types of measurements, the
+ sum is more useful than the current value. For historical reasons,
+ this field is called "Sum" instead of "integral", which would more
+ accurately describe its function. For example, an electrical meter
+ that measures the energy a given computer uses will typically want to
+ measure the cumulative amount of energy used. This is less prone to
+ error than reporting the power each second and trying to have
+ something on the server side sum together all the power measurements.
+ If the network between the sensor and the meter goes down over some
+ period of time, when it comes back up, the cumulative sum helps
+ reflect what happened while the network was down. A meter like this
+ would typically report a measurement with the unit set to watts, but
+ it would put the sum of energy used in the "s" field of the
+ measurement. It might optionally include the current power in the
+ "v" field.
+
+ While the benefit of using the integrated sum is fairly clear for
+ measurements like power and energy, it is less obvious for something
+ like temperature. Reporting the sum of the temperature makes it easy
+ to compute averages even when the individual temperature values are
+ not reported frequently enough to compute accurate averages.
+ Implementers are encouraged to report the cumulative sum as well as
+ the raw value of a given sensor.
+
+
+
+
+
+Jennings, et al. Standards Track [Page 27]
+
+RFC 8428 SenML August 2018
+
+
+ Applications that use the cumulative Sum values need to understand
+ they are very loosely defined by this specification, and depending on
+ the particular sensor implementation, they may behave in unexpected
+ ways. Applications should be able to deal with the following issues:
+
+ 1. Many sensors will allow the cumulative sums to "wrap" back to
+ zero after the value gets sufficiently large.
+
+ 2. Some sensors will reset the cumulative sum back to zero when the
+ device is reset, loses power, or is replaced with a different
+ sensor.
+
+ 3. Applications cannot make assumptions about when the device
+ started accumulating values into the sum.
+
+ Typically, applications can make some assumptions about specific
+ sensors that will allow them to deal with these problems. A common
+ assumption is that for sensors whose measurement values are non-
+ negative, the sum should never get smaller; if the sum does get
+ smaller, the application will know that one of the situations listed
+ above has happened.
+
+ Despite the name "Sum", the Sum field is not useful for applications
+ that maintain a running count of the number of times an event
+ happened or that keep track of a counter such as the total number of
+ bytes sent on an interface. Data like that can be sent directly in
+ the Value field.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Jennings, et al. Standards Track [Page 28]
+
+RFC 8428 SenML August 2018
+
+
+11. CDDL
+
+ As a convenient reference, the JSON and CBOR representations can be
+ described with the common Concise Data Definition Language (CDDL)
+ specification [CDDL-CBOR] in Figure 1 (informative).
+
+ SenML-Pack = [1* record]
+
+ record = {
+ ? bn => tstr, ; Base Name
+ ? bt => numeric, ; Base Time
+ ? bu => tstr, ; Base Units
+ ? bv => numeric, ; Base Value
+ ? bs => numeric, ; Base Sum
+ ? bver => uint, ; Base Version
+ ? n => tstr, ; Name
+ ? u => tstr, ; Units
+ ? s => numeric, ; Sum
+ ? t => numeric, ; Time
+ ? ut => numeric, ; Update Time
+ ? ( v => numeric // ; Numeric Value
+ vs => tstr // ; String Value
+ vb => bool // ; Boolean Value
+ vd => binary-value ) ; Data Value
+ * key-value-pair
+ }
+
+ ; now define the generic versions
+ key-value-pair = ( label => value )
+
+ label = non-b-label / b-label
+ non-b-label = tstr .regexp "[A-Zac-z0-9][-_:.A-Za-z0-9]*" / uint
+ b-label = tstr .regexp "b[-_:.A-Za-z0-9]+" / nint
+
+ value = tstr / binary-value / numeric / bool
+ numeric = number / decfrac
+
+ Figure 1: Common CDDL Specification for CBOR and JSON SenML
+
+
+
+
+
+
+
+
+
+
+
+
+
+Jennings, et al. Standards Track [Page 29]
+
+RFC 8428 SenML August 2018
+
+
+ For JSON, we use text labels and base64url-encoded binary data
+ (Figure 2).
+
+ bver = "bver" n = "n" s = "s"
+ bn = "bn" u = "u" t = "t"
+ bt = "bt" v = "v" ut = "ut"
+ bu = "bu" vs = "vs" vd = "vd"
+ bv = "bv" vb = "vb"
+ bs = "bs"
+
+ binary-value = tstr ; base64url encoded
+
+ Figure 2: JSON-Specific CDDL Specification for SenML
+
+ For CBOR, we use integer labels and native binary data (Figure 3).
+
+ bver = -1 n = 0 s = 5
+ bn = -2 u = 1 t = 6
+ bt = -3 v = 2 ut = 7
+ bu = -4 vs = 3 vd = 8
+ bv = -5 vb = 4
+ bs = -6
+
+ binary-value = bstr
+
+ Figure 3: CBOR-Specific CDDL Specification for SenML
+
+12. IANA Considerations
+
+ IANA has created a new "Sensor Measurement Lists (SenML)" registry
+ that contains the subregistries defined in Sections 12.1 and 12.2.
+
+12.1. SenML Units Registry
+
+ IANA has created a registry of SenML unit symbols called the "SenML
+ Units" registry. The primary purpose of this registry is to make
+ sure that symbols uniquely map to indicate a type of measurement.
+ Definitions for many of these units can be found in other
+ publications such as [NIST811] and [BIPM]. Units marked with an
+ asterisk are NOT RECOMMENDED to be produced by new implementations
+ but are in active use and SHOULD be implemented by consumers that can
+ use the corresponding SenML units that are closer to the unscaled SI
+ units.
+
+
+
+
+
+
+
+
+Jennings, et al. Standards Track [Page 30]
+
+RFC 8428 SenML August 2018
+
+
+ +----------+------------------------------------+-------+-----------+
+ | Symbol | Description | Type | Reference |
+ +----------+------------------------------------+-------+-----------+
+ | m | meter | float | RFC 8428 |
+ | kg | kilogram | float | RFC 8428 |
+ | g | gram* | float | RFC 8428 |
+ | s | second | float | RFC 8428 |
+ | A | ampere | float | RFC 8428 |
+ | K | kelvin | float | RFC 8428 |
+ | cd | candela | float | RFC 8428 |
+ | mol | mole | float | RFC 8428 |
+ | Hz | hertz | float | RFC 8428 |
+ | rad | radian | float | RFC 8428 |
+ | sr | steradian | float | RFC 8428 |
+ | N | newton | float | RFC 8428 |
+ | Pa | pascal | float | RFC 8428 |
+ | J | joule | float | RFC 8428 |
+ | W | watt | float | RFC 8428 |
+ | C | coulomb | float | RFC 8428 |
+ | V | volt | float | RFC 8428 |
+ | F | farad | float | RFC 8428 |
+ | Ohm | ohm | float | RFC 8428 |
+ | S | siemens | float | RFC 8428 |
+ | Wb | weber | float | RFC 8428 |
+ | T | tesla | float | RFC 8428 |
+ | H | henry | float | RFC 8428 |
+ | Cel | degrees Celsius | float | RFC 8428 |
+ | lm | lumen | float | RFC 8428 |
+ | lx | lux | float | RFC 8428 |
+ | Bq | becquerel | float | RFC 8428 |
+ | Gy | gray | float | RFC 8428 |
+ | Sv | sievert | float | RFC 8428 |
+ | kat | katal | float | RFC 8428 |
+ | m2 | square meter (area) | float | RFC 8428 |
+ | m3 | cubic meter (volume) | float | RFC 8428 |
+ | l | liter (volume)* | float | RFC 8428 |
+ | m/s | meter per second (velocity) | float | RFC 8428 |
+ | m/s2 | meter per square second | float | RFC 8428 |
+ | | (acceleration) | | |
+ | m3/s | cubic meter per second (flow rate) | float | RFC 8428 |
+ | l/s | liter per second (flow rate)* | float | RFC 8428 |
+ | W/m2 | watt per square meter (irradiance) | float | RFC 8428 |
+ | cd/m2 | candela per square meter | float | RFC 8428 |
+ | | (luminance) | | |
+ | bit | bit (information content) | float | RFC 8428 |
+ | bit/s | bit per second (data rate) | float | RFC 8428 |
+ | lat | degrees latitude (Note 1) | float | RFC 8428 |
+ | lon | degrees longitude (Note 1) | float | RFC 8428 |
+
+
+
+Jennings, et al. Standards Track [Page 31]
+
+RFC 8428 SenML August 2018
+
+
+ | pH | pH value (acidity; logarithmic | float | RFC 8428 |
+ | | quantity) | | |
+ | dB | decibel (logarithmic quantity) | float | RFC 8428 |
+ | dBW | decibel relative to 1 W (power | float | RFC 8428 |
+ | | level) | | |
+ | Bspl | bel (sound pressure level; | float | RFC 8428 |
+ | | logarithmic quantity)* | | |
+ | count | 1 (counter value) | float | RFC 8428 |
+ | / | 1 (ratio, e.g., value of a switch; | float | RFC 8428 |
+ | | Note 2) | | |
+ | % | 1 (ratio, e.g., value of a switch; | float | RFC 8428 |
+ | | Note 2)* | | |
+ | %RH | percentage (relative humidity) | float | RFC 8428 |
+ | %EL | percentage (remaining battery | float | RFC 8428 |
+ | | energy level) | | |
+ | EL | seconds (remaining battery energy | float | RFC 8428 |
+ | | level) | | |
+ | 1/s | 1 per second (event rate) | float | RFC 8428 |
+ | 1/min | 1 per minute (event rate, "rpm")* | float | RFC 8428 |
+ | beat/min | 1 per minute (heart rate in beats | float | RFC 8428 |
+ | | per minute)* | | |
+ | beats | 1 (cumulative number of heart | float | RFC 8428 |
+ | | beats)* | | |
+ | S/m | siemens per meter (conductivity) | float | RFC 8428 |
+ +----------+------------------------------------+-------+-----------+
+
+ Table 6: IANA Registry for SenML Units
+
+ o Note 1: Assumed to be in World Geodetic System 1984 (WGS84),
+ unless another reference frame is known for the sensor.
+
+ o Note 2: A value of 0.0 indicates the switch is off, 1.0 indicates
+ on, and 0.5 indicates half on. The preferred name of this unit is
+ "/". For historical reasons, the name "%" is also provided for
+ the same unit, but note that while that name strongly suggests a
+ percentage (0..100), it is NOT a percentage but the absolute
+ ratio!
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Jennings, et al. Standards Track [Page 32]
+
+RFC 8428 SenML August 2018
+
+
+ New entries can be added to the registration by Expert Review as
+ defined in [RFC8126]. Experts should exercise their own good
+ judgment but need to consider the following guidelines:
+
+ 1. There needs to be a real and compelling use for any new unit to
+ be added.
+
+ 2. Each unit should define the semantic information and be chosen
+ carefully. Implementers need to remember that the same word may
+ be used in different real-life contexts. For example, degrees
+ when measuring latitude have no semantic relation to degrees
+ when measuring temperature; thus, two different units are
+ needed.
+
+ 3. These measurements are produced by computers for consumption by
+ computers. The principle is that conversion has to be easily
+ done when both reading and writing the media type. The value of
+ a single canonical representation outweighs the convenience of
+ easy human representations or loss of precision in a conversion.
+
+ 4. Use of System of Units (SI) prefixes such as "k" before the unit
+ is not recommended. Instead, one can represent the value using
+ scientific notation such as 1.2e3. The "kg" unit is an
+ exception to this rule since it is an SI base unit; the "g" unit
+ is provided for legacy compatibility.
+
+ 5. For a given type of measurement, there will only be one unit
+ type defined. So for length, meter is defined, and other
+ lengths such as mile, foot, and light year are not allowed. For
+ most cases, the SI unit is preferred.
+
+ (Note that some amount of judgment will be required here, as
+ even SI itself is not entirely consistent in this respect. For
+ instance, for temperature, [ISO-80000-5] defines a quantity,
+ item 5-1 (thermodynamic temperature), and a corresponding unit
+ of 5-1.a (Kelvin); [ISO-80000-5] goes on to define another
+ quantity, item 5-2 ("Celsius temperature"), and the
+ corresponding unit of 5-2.a (degree Celsius). The latter
+ quantity is defined such that it gives the thermodynamic
+ temperature as a delta from T0 = 275.15 K. ISO 80000-5 is
+ defining both units side by side and not really expressing a
+ preference. This level of recognition of the alternative unit
+ degree Celsius is the reason why Celsius temperatures seem
+ exceptionally acceptable in the SenML units list alongside
+ Kelvin.)
+
+
+
+
+
+
+Jennings, et al. Standards Track [Page 33]
+
+RFC 8428 SenML August 2018
+
+
+ 6. Symbol names that could be easily confused with existing common
+ units or units combined with prefixes should be avoided. For
+ example, selecting a unit name of "mph" to indicate something
+ that had nothing to do with velocity would be a bad choice, as
+ "mph" is commonly used to mean "miles per hour".
+
+ 7. The following should not be used because they are common SI
+ prefixes: Y, Z, E, P, T, G, M, k, h, da, d, c, u, n, p, f, a, z,
+ y, Ki, Mi, Gi, Ti, Pi, Ei, Zi, and Yi.
+
+ 8. The following units should not be used as they are commonly used
+ to represent other measurements: Ky, Gal, dyn, etg, P, St, Mx,
+ G, Oe, Gb, sb, Lmb, mph, Ci, R, RAD, REM, gal, bbl, qt, degF,
+ Cal, BTU, HP, pH, B/s, psi, Torr, atm, at, bar, and kWh.
+
+ 9. The unit names are case sensitive, and the correct case needs to
+ be used; however, symbols that differ only in case should not be
+ allocated.
+
+ 10. A number after a unit typically indicates the previous unit
+ raised to that power, and "/" indicates that the units that
+ follow are the reciprocals. A unit should have only one "/" in
+ the name.
+
+ 11. A good list of common units can be found in the Unified Code for
+ Units of Measure [UCUM].
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Jennings, et al. Standards Track [Page 34]
+
+RFC 8428 SenML August 2018
+
+
+12.2. SenML Labels Registry
+
+ IANA has created a new registry for SenML Labels called the "SenML
+ Labels" registry. The initial contents of the registry are as
+ follows:
+
+ +--------------+-------+----+-----------+----------+----+-----------+
+ | Name | Label | CL | JSON Type | XML Type | EI | Reference |
+ +--------------+-------+----+-----------+----------+----+-----------+
+ | Base Name | bn | -2 | String | string | a | RFC 8428 |
+ | Base Time | bt | -3 | Number | double | a | RFC 8428 |
+ | Base Unit | bu | -4 | String | string | a | RFC 8428 |
+ | Base Value | bv | -5 | Number | double | a | RFC 8428 |
+ | Base Sum | bs | -6 | Number | double | a | RFC 8428 |
+ | Base Version | bver | -1 | Number | int | a | RFC 8428 |
+ | Name | n | 0 | String | string | a | RFC 8428 |
+ | Unit | u | 1 | String | string | a | RFC 8428 |
+ | Value | v | 2 | Number | double | a | RFC 8428 |
+ | String Value | vs | 3 | String | string | a | RFC 8428 |
+ | Boolean | vb | 4 | Boolean | boolean | a | RFC 8428 |
+ | Value | | | | | | |
+ | Data Value | vd | 8 | String | string | a | RFC 8428 |
+ | Sum | s | 5 | Number | double | a | RFC 8428 |
+ | Time | t | 6 | Number | double | a | RFC 8428 |
+ | Update Time | ut | 7 | Number | double | a | RFC 8428 |
+ +--------------+-------+----+-----------+----------+----+-----------+
+
+ Note that CL = CBOR Label and EI = EXI ID.
+
+ Table 7: IANA Registry for SenML Labels
+
+ This is the same table as Table 1, with notes removed and columns
+ added for the information that is all the same for this initial set
+ of registrations, but it will need to be supplied with different
+ values for new registrations.
+
+ All new entries must define the Name, Label, and XML Type, but the
+ CBOR labels SHOULD be left empty as CBOR will use the string encoding
+ for any new labels. The EI column contains the EXI schemaId value of
+ the first schema that includes this label, or it is empty if this
+ label was not intended for use with EXI. The Reference column SHOULD
+ contain information about where to find out more information about
+ this label.
+
+ The JSON, CBOR, and EXI types are derived from the XML type. All XML
+ numeric types such as double, float, integer, and int become a JSON
+ Number. XML boolean and string become a JSON Boolean and String,
+
+
+
+
+Jennings, et al. Standards Track [Page 35]
+
+RFC 8428 SenML August 2018
+
+
+ respectively. CBOR represents numeric values with a CBOR type that
+ does not lose any information from the JSON value. EXI uses the XML
+ types.
+
+ New entries can be added to the registration by Expert Review as
+ defined in [RFC8126]. Experts should exercise their own good
+ judgment but need to consider that shorter labels should have more
+ strict review. New entries should not be made that counteract the
+ advice at the end of Section 4.5.4.
+
+ All new SenML Labels that have "base" semantics (see Section 4.1)
+ MUST start with the character "b". Regular labels MUST NOT start
+ with that character. All new SenML Labels with Value semantics (see
+ Section 4.2) MUST have "Value" in their (long-form) name.
+
+ Extensions that add a label intended for use with XML need to create
+ a new RelaxNG Schema that includes all the labels in the "SenML
+ Labels" registry.
+
+ Extensions that add a label that is intended for use with EXI need to
+ create a new XSD Schema that includes all the labels in the "SenML
+ Labels" registry and then allocate a new EXI schemaId value. Moving
+ to the next letter in the alphabet is the suggested way to create the
+ new value for the EXI schemaId. Any labels with previously blank ID
+ values SHOULD be updated in the "SenML Labels" registry to have their
+ ID set to this new schemaId value.
+
+ Extensions that are mandatory to understand to correctly process the
+ Pack MUST have a label name that ends with the "_" character.
+
+12.3. Media Type Registrations
+
+ The registrations in the subsections below follow the procedures
+ specified in [RFC6838] and [RFC7303]. This document registers media
+ types for each serialization format of SenML (JSON, CBOR, XML, and
+ EXI) and also a corresponding set of media types for streaming use
+ (SenSML; see Section 4.8). Clipboard formats are defined for the
+ JSON and XML forms of SenML but not for streams or non-textual
+ formats.
+
+ The reason there are both SenML and the streaming SenSML formats is
+ that they are not the same data formats, and they require separate
+ negotiation to understand if they are supported and which one is
+ being used. The non-streaming format is required to have some sort
+ of end-of-pack syntax that indicates there will be no more records.
+ Many implementations that receive SenML wait for this end-of-pack
+ marker before processing any of the records. On the other hand, with
+ the streaming formats, it is explicitly not required to wait for this
+
+
+
+Jennings, et al. Standards Track [Page 36]
+
+RFC 8428 SenML August 2018
+
+
+ end-of-pack marker. Many implementations that produce streaming
+ SenSML will never send this end-of-pack marker, so implementations
+ that receive streaming SenSML cannot wait for the end-of-pack marker
+ before they start processing the records. Given that SenML and
+ streaming SenML are different data formats, and considering the
+ requirement for separate negotiation, a media type for each one is
+ needed.
+
+12.3.1. senml+json Media Type Registration
+
+ Type name: application
+
+ Subtype name: senml+json
+
+ Required parameters: none
+
+ Optional parameters: none
+
+ Encoding considerations: Must be encoded as using a subset of the
+ encoding allowed in [RFC8259]. See RFC 8428 for details. This
+ simplifies implementation of a very simple system and does not impose
+ any significant limitations as all this data is meant for machine-to-
+ machine communications and is not meant to be human readable.
+
+ Security considerations: See Section 13 of RFC 8428.
+
+ Interoperability considerations: Applications MUST ignore any JSON
+ key-value pairs that they do not understand unless the key ends with
+ the "_" character, in which case an error MUST be generated. This
+ allows backwards-compatible extensions to this specification. The
+ "bver" field can be used to ensure the receiver supports a minimal
+ level of functionality needed by the creator of the JSON object.
+
+ Published specification: RFC 8428
+
+ Applications that use this media type: The type is used by systems
+ that report, e.g., electrical power usage and environmental
+ information such as temperature and humidity. It can be used for a
+ wide range of sensor reporting systems.
+
+ Fragment identifier considerations: Fragment identification for
+ application/senml+json is supported by using fragment identifiers as
+ specified by RFC 8428.
+
+
+
+
+
+
+
+
+Jennings, et al. Standards Track [Page 37]
+
+RFC 8428 SenML August 2018
+
+
+ Additional information:
+
+ Deprecated alias names for this type: N/A
+
+ Magic number(s): N/A
+
+ File extension(s): senml
+
+ Windows Clipboard Name: "JSON Sensor Measurement List"
+
+ Macintosh file type code(s): none
+
+ Macintosh Universal Type Identifier code: org.ietf.senml-json
+ conforms to public.text
+
+ Person & email address to contact for further information:
+ Cullen Jennings <fluffy@iii.ca>
+
+ Intended usage: COMMON
+
+ Restrictions on usage: None
+
+ Author: Cullen Jennings <fluffy@iii.ca>
+
+ Change controller: IESG
+
+12.3.2. sensml+json Media Type Registration
+
+ Type name: application
+
+ Subtype name: sensml+json
+
+ Required parameters: none
+
+ Optional parameters: none
+
+ Encoding considerations: Must be encoded as using a subset of the
+ encoding allowed in [RFC8259]. See RFC 8428 for details. This
+ simplifies implementation of a very simple system and does not impose
+ any significant limitations as all this data is meant for machine-to-
+ machine communications and is not meant to be human readable.
+
+ Security considerations: See Section 13 of RFC 8428.
+
+ Interoperability considerations: Applications MUST ignore any JSON
+ key-value pairs that they do not understand unless the key ends with
+ the "_" character, in which case an error MUST be generated. This
+
+
+
+
+Jennings, et al. Standards Track [Page 38]
+
+RFC 8428 SenML August 2018
+
+
+ allows backwards-compatible extensions to this specification. The
+ "bver" field can be used to ensure the receiver supports a minimal
+ level of functionality needed by the creator of the JSON object.
+
+ Published specification: RFC 8428
+
+ Applications that use this media type: The type is used by systems
+ that report, e.g., electrical power usage and environmental
+ information such as temperature and humidity. It can be used for a
+ wide range of sensor reporting systems.
+
+ Fragment identifier considerations: Fragment identification for
+ application/sensml+json is supported by using fragment identifiers as
+ specified by RFC 8428.
+
+ Additional information:
+
+ Deprecated alias names for this type: N/A
+
+ Magic number(s): N/A
+
+ File extension(s): sensml
+
+ Macintosh file type code(s): none
+
+ Person & email address to contact for further information:
+ Cullen Jennings <fluffy@iii.ca>
+
+ Intended usage: COMMON
+
+ Restrictions on usage: None
+
+ Author: Cullen Jennings <fluffy@iii.ca>
+
+ Change controller: IESG
+
+12.3.3. senml+cbor Media Type Registration
+
+ Type name: application
+
+ Subtype name: senml+cbor
+
+ Required parameters: none
+
+ Optional parameters: none
+
+ Encoding considerations: Must be encoded as using [RFC7049]. See RFC
+ 8428 for details.
+
+
+
+Jennings, et al. Standards Track [Page 39]
+
+RFC 8428 SenML August 2018
+
+
+ Security considerations: See Section 13 of RFC 8428.
+
+ Interoperability considerations: Applications MUST ignore any key-
+ value pairs that they do not understand unless the key ends with the
+ "_" character, in which case an error MUST be generated. This allows
+ backwards-compatible extensions to this specification. The "bver"
+ field can be used to ensure the receiver supports a minimal level of
+ functionality needed by the creator of the CBOR object.
+
+ Published specification: RFC 8428
+
+ Applications that use this media type: The type is used by systems
+ that report, e.g., electrical power usage and environmental
+ information such as temperature and humidity. It can be used for a
+ wide range of sensor reporting systems.
+
+ Fragment identifier considerations: Fragment identification for
+ application/senml+cbor is supported by using fragment identifiers as
+ specified by RFC 8428.
+
+ Additional information:
+
+ Deprecated alias names for this type: N/A
+
+ Magic number(s): N/A
+
+ File extension(s): senmlc
+
+ Macintosh file type code(s): none
+
+ Macintosh Universal Type Identifier code: org.ietf.senml-cbor
+ conforms to public.data
+
+ Person & email address to contact for further information:
+ Cullen Jennings <fluffy@iii.ca>
+
+ Intended usage: COMMON
+
+ Restrictions on usage: None
+
+ Author: Cullen Jennings <fluffy@iii.ca>
+
+ Change controller: IESG
+
+
+
+
+
+
+
+
+Jennings, et al. Standards Track [Page 40]
+
+RFC 8428 SenML August 2018
+
+
+12.3.4. sensml+cbor Media Type Registration
+
+ Type name: application
+
+ Subtype name: sensml+cbor
+
+ Required parameters: none
+
+ Optional parameters: none
+
+ Encoding considerations: Must be encoded as using [RFC7049]. See RFC
+ 8428 for details.
+
+ Security considerations: See Section 13 of RFC 8428.
+
+ Interoperability considerations: Applications MUST ignore any key-
+ value pairs that they do not understand unless the key ends with the
+ "_" character, in which case an error MUST be generated. This allows
+ backwards-compatible extensions to this specification. The "bver"
+ field can be used to ensure the receiver supports a minimal level of
+ functionality needed by the creator of the CBOR object.
+
+ Published specification: RFC 8428
+
+ Applications that use this media type: The type is used by systems
+ that report, e.g., electrical power usage and environmental
+ information such as temperature and humidity. It can be used for a
+ wide range of sensor reporting systems.
+
+ Fragment identifier considerations: Fragment identification for
+ application/sensml+cbor is supported by using fragment identifiers as
+ specified by RFC 8428.
+
+ Additional information:
+
+ Deprecated alias names for this type: N/A
+
+ Magic number(s): N/A
+
+ File extension(s): sensmlc
+
+ Macintosh file type code(s): none
+
+ Person & email address to contact for further information:
+ Cullen Jennings <fluffy@iii.ca>
+
+ Intended usage: COMMON
+
+
+
+
+Jennings, et al. Standards Track [Page 41]
+
+RFC 8428 SenML August 2018
+
+
+ Restrictions on usage: None
+
+ Author: Cullen Jennings <fluffy@iii.ca>
+
+ Change controller: IESG
+
+12.3.5. senml+xml Media Type Registration
+
+ Type name: application
+
+ Subtype name: senml+xml
+
+ Required parameters: none
+
+ Optional parameters: none
+
+ Encoding considerations: Must be encoded as using
+ [W3C.REC-xml-20081126]. See RFC 8428 for details.
+
+ Security considerations: See Section 13 of RFC 8428.
+
+ Interoperability considerations: Applications MUST ignore any XML
+ tags or attributes that they do not understand unless the attribute
+ name ends with the "_" character, in which case an error MUST be
+ generated. This allows backwards-compatible extensions to this
+ specification. The "bver" attribute in the senml XML tag can be used
+ to ensure the receiver supports a minimal level of functionality
+ needed by the creator of the XML SenML Pack.
+
+ Published specification: RFC 8428
+
+ Applications that use this media type: The type is used by systems
+ that report, e.g., electrical power usage and environmental
+ information such as temperature and humidity. It can be used for a
+ wide range of sensor reporting systems.
+
+ Fragment identifier considerations: Fragment identification for
+ application/senml+xml is supported by using fragment identifiers as
+ specified by RFC 8428.
+
+ Additional information:
+
+ Deprecated alias names for this type: N/A
+
+ Magic number(s): N/A
+
+ File extension(s): senmlx
+
+
+
+
+Jennings, et al. Standards Track [Page 42]
+
+RFC 8428 SenML August 2018
+
+
+ Windows Clipboard Name: "XML Sensor Measurement List"
+
+ Macintosh file type code(s): none
+
+ Macintosh Universal Type Identifier code: org.ietf.senml-xml
+ conforms to public.xml
+
+ Person & email address to contact for further information:
+ Cullen Jennings <fluffy@iii.ca>
+
+ Intended usage: COMMON
+
+ Restrictions on usage: None
+
+ Author: Cullen Jennings <fluffy@iii.ca>
+
+ Change controller: IESG
+
+12.3.6. sensml+xml Media Type Registration
+
+ Type name: application
+
+ Subtype name: sensml+xml
+
+ Required parameters: none
+
+ Optional parameters: none
+
+ Encoding considerations: Must be encoded as using
+ [W3C.REC-xml-20081126]. See RFC 8428 for details.
+
+ Security considerations: See Section 13 of RFC 8428.
+
+ Interoperability considerations: Applications MUST ignore any XML
+ tags or attributes that they do not understand unless the attribute
+ name ends with the "_" character, in which case an error MUST be
+ generated. This allows backwards-compatible extensions to this
+ specification. The "bver" attribute in the senml XML tag can be used
+ to ensure the receiver supports a minimal level of functionality
+ needed by the creator of the XML SenML Pack.
+
+ Published specification: RFC 8428
+
+ Applications that use this media type: The type is used by systems
+ that report, e.g., electrical power usage and environmental
+ information such as temperature and humidity. It can be used for a
+ wide range of sensor reporting systems.
+
+
+
+
+Jennings, et al. Standards Track [Page 43]
+
+RFC 8428 SenML August 2018
+
+
+ Fragment identifier considerations: Fragment identification for
+ application/sensml+xml is supported by using fragment identifiers as
+ specified by RFC 8428.
+
+ Additional information:
+
+ Deprecated alias names for this type: N/A
+
+ Magic number(s): N/A
+
+ File extension(s): sensmlx
+
+ Macintosh file type code(s): none
+
+ Person & email address to contact for further information:
+ Cullen Jennings <fluffy@iii.ca>
+
+ Intended usage: COMMON
+
+ Restrictions on usage: None
+
+ Author: Cullen Jennings <fluffy@iii.ca>
+
+ Change controller: IESG
+
+12.3.7. senml-exi Media Type Registration
+
+ Type name: application
+
+ Subtype name: senml-exi
+
+ Required parameters: none
+
+ Optional parameters: none
+
+ Encoding considerations: Must be encoded as using
+ [W3C.REC-exi-20140211]. See RFC 8428 for details.
+
+ Security considerations: See Section 13 of RFC 8428.
+
+ Interoperability considerations: Applications MUST ignore any XML
+ tags or attributes that they do not understand unless the attribute
+ name ends with the "_" character, in which case an error MUST be
+ generated. This allows backwards-compatible extensions to this
+ specification. The "bver" attribute in the senml XML tag can be used
+ to ensure the receiver supports a minimal level of functionality
+ needed by the creator of the XML SenML Pack. Further information on
+ using schemas to guide the EXI can be found in RFC 8428.
+
+
+
+Jennings, et al. Standards Track [Page 44]
+
+RFC 8428 SenML August 2018
+
+
+ Published specification: RFC 8428
+
+ Applications that use this media type: The type is used by systems
+ that report, e.g., electrical power usage and environmental
+ information such as temperature and humidity. It can be used for a
+ wide range of sensor reporting systems.
+
+ Fragment identifier considerations: Fragment identification for
+ application/senml-exi is supported by using fragment identifiers as
+ specified by RFC 8428.
+
+ Additional information:
+
+ Deprecated alias names for this type: N/A
+
+ Magic number(s): N/A
+
+ File extension(s): senmle
+
+ Macintosh file type code(s): none
+
+ Macintosh Universal Type Identifier code: org.ietf.senml-exi
+ conforms to public.data
+
+ Person & email address to contact for further information:
+ Cullen Jennings <fluffy@iii.ca>
+
+ Intended usage: COMMON
+
+ Restrictions on usage: None
+
+ Author: Cullen Jennings <fluffy@iii.ca>
+
+ Change controller: IESG
+
+12.3.8. sensml-exi Media Type Registration
+
+ Type name: application
+
+ Subtype name: sensml-exi
+
+ Required parameters: none
+
+ Optional parameters: none
+
+ Encoding considerations: Must be encoded as using
+ [W3C.REC-exi-20140211]. See RFC 8428 for details.
+
+
+
+
+Jennings, et al. Standards Track [Page 45]
+
+RFC 8428 SenML August 2018
+
+
+ Security considerations: See Section 13 of RFC 8428.
+
+ Interoperability considerations: Applications MUST ignore any XML
+ tags or attributes that they do not understand unless the attribute
+ name ends with the "_" character, in which case an error MUST be
+ generated. This allows backwards-compatible extensions to this
+ specification. The "bver" attribute in the senml XML tag can be used
+ to ensure the receiver supports a minimal level of functionality
+ needed by the creator of the XML SenML Pack. Further information on
+ using schemas to guide the EXI can be found in RFC 8428.
+
+ Published specification: RFC 8428
+
+ Applications that use this media type: The type is used by systems
+ that report, e.g., electrical power usage and environmental
+ information such as temperature and humidity. It can be used for a
+ wide range of sensor reporting systems.
+
+ Fragment identifier considerations: Fragment identification for
+ application/sensml-exi is supported by using fragment identifiers as
+ specified by RFC 8428.
+
+ Additional information:
+
+ Deprecated alias names for this type: N/A
+
+ Magic number(s): N/A
+
+ File extension(s): sensmle
+
+ Macintosh file type code(s): none
+
+ Person & email address to contact for further information:
+ Cullen Jennings <fluffy@iii.ca>
+
+ Intended usage: COMMON
+
+ Restrictions on usage: None
+
+ Author: Cullen Jennings <fluffy@iii.ca>
+
+ Change controller: IESG
+
+
+
+
+
+
+
+
+
+Jennings, et al. Standards Track [Page 46]
+
+RFC 8428 SenML August 2018
+
+
+12.4. XML Namespace Registration
+
+ This document registers the following XML namespace in the "IETF XML
+ Registry" defined in [RFC3688].
+
+ URI: urn:ietf:params:xml:ns:senml
+
+ Registrant Contact: The IESG.
+
+ XML: N/A, the requested URIs are XML namespaces
+
+12.5. CoAP Content-Format Registration
+
+ IANA has assigned CoAP Content-Format IDs for the SenML media types
+ in the "CoAP Content-Formats" subregistry within the "Constrained
+ RESTful Environments (CoRE) Parameters" registry [RFC7252]. IDs for
+ the JSON, CBOR, and EXI Content-Formats have been assigned in the
+ 0-255 range (Expert Review), and IDs for the XML Content-Formats have
+ been assigned in the 256-9999 range (IETF Review or IESG Approval).
+ The assigned IDs are shown in the table below:
+
+ +-------------------------+----------+-----+-----------+
+ | Media Type | Encoding | ID | Reference |
+ +-------------------------+----------+-----+-----------+
+ | application/senml+json | - | 110 | RFC 8428 |
+ | application/sensml+json | - | 111 | RFC 8428 |
+ | application/senml+cbor | - | 112 | RFC 8428 |
+ | application/sensml+cbor | - | 113 | RFC 8428 |
+ | application/senml-exi | - | 114 | RFC 8428 |
+ | application/sensml-exi | - | 115 | RFC 8428 |
+ | application/senml+xml | - | 310 | RFC 8428 |
+ | application/sensml+xml | - | 311 | RFC 8428 |
+ +-------------------------+----------+-----+-----------+
+
+ Table 8: CoAP Content-Format IDs
+
+13. Security Considerations
+
+ Sensor data presented with SenML can contain a wide array of
+ information that ranges from very public (such as the outside
+ temperature in a given city) to very private (such as patient health
+ information that requires integrity and confidentiality protection).
+ When SenML is used for configuration or actuation, it can be used to
+ change the state of systems and also impact the physical world, e.g.,
+ by turning off a heater or opening a lock. Malicious use of SenML to
+ change system state could have severe consequences, potentially
+ including violation of physical security, property damage, and even
+ loss of life.
+
+
+
+Jennings, et al. Standards Track [Page 47]
+
+RFC 8428 SenML August 2018
+
+
+ SenML formats alone do not provide any security and instead rely on
+ the protocol that carries them to provide security. Applications
+ using SenML need to look at the overall context of how these formats
+ will be used to decide if the security is adequate. In particular,
+ for sensitive sensor data and actuation use, it is important to
+ ensure that proper security mechanisms are used to provide, e.g.,
+ confidentiality, data integrity, and authentication as appropriate
+ for the usage.
+
+ SenML formats defined by this specification do not contain any
+ executable content. However, future extensions could potentially
+ embed application-specific executable content in the data.
+
+ SenML Records are intended to be interpreted in the context of any
+ applicable base values. If Records become separated from the Record
+ that establishes the base values, the data will be useless or, worse,
+ wrong. Care needs to be taken in keeping the integrity of a Pack
+ that contains unresolved SenML Records (see Section 4.6).
+
+ See also Section 14.
+
+14. Privacy Considerations
+
+ Sensor data can range from information with almost no privacy
+ considerations, such as the current temperature in a given city, to
+ highly sensitive medical or location data. This specification
+ provides no security protection for the data but is meant to be used
+ inside another container or transfer protocol such as S/MIME
+ [RFC5751] or HTTP with TLS [RFC2818] that can provide integrity,
+ confidentiality, and authentication information about the source of
+ the data.
+
+ The Name fields need to uniquely identify the sources or destinations
+ of the values in a SenML Pack. However, the use of long-term stable
+ and unique identifiers can be problematic for privacy reasons
+ [RFC6973], depending on the application and the potential of these
+ identifiers to be used in correlation with other information. They
+ should be used with care or avoided, for example, as described for
+ IPv6 addresses in [RFC7721].
+
+
+
+
+
+
+
+
+
+
+
+
+Jennings, et al. Standards Track [Page 48]
+
+RFC 8428 SenML August 2018
+
+
+15. References
+
+15.1. Normative References
+
+ [BIPM] Bureau International des Poids et Mesures, "The
+ International System of Units (SI)", 8th Edition, 2006.
+
+ [IEEE.754] IEEE, "Standard for Binary Floating-Point Arithmetic",
+ IEEE Standard 754.
+
+ [NIST811] Thompson, A. and B. Taylor, "Guide for the Use of the
+ International System of Units (SI)", NIST Special
+ Publication 811, DOI 10.6028/NIST.SP.811e2008, March 2008.
+
+ [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
+ Requirement Levels", BCP 14, RFC 2119,
+ DOI 10.17487/RFC2119, March 1997,
+ <https://www.rfc-editor.org/info/rfc2119>.
+
+ [RFC3629] Yergeau, F., "UTF-8, a transformation format of ISO
+ 10646", STD 63, RFC 3629, DOI 10.17487/RFC3629, November
+ 2003, <https://www.rfc-editor.org/info/rfc3629>.
+
+ [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688,
+ DOI 10.17487/RFC3688, January 2004,
+ <https://www.rfc-editor.org/info/rfc3688>.
+
+ [RFC4648] Josefsson, S., "The Base16, Base32, and Base64 Data
+ Encodings", RFC 4648, DOI 10.17487/RFC4648, October 2006,
+ <https://www.rfc-editor.org/info/rfc4648>.
+
+ [RFC6838] Freed, N., Klensin, J., and T. Hansen, "Media Type
+ Specifications and Registration Procedures", BCP 13,
+ RFC 6838, DOI 10.17487/RFC6838, January 2013,
+ <https://www.rfc-editor.org/info/rfc6838>.
+
+ [RFC7049] Bormann, C. and P. Hoffman, "Concise Binary Object
+ Representation (CBOR)", RFC 7049, DOI 10.17487/RFC7049,
+ October 2013, <https://www.rfc-editor.org/info/rfc7049>.
+
+ [RFC7252] Shelby, Z., Hartke, K., and C. Bormann, "The Constrained
+ Application Protocol (CoAP)", RFC 7252,
+ DOI 10.17487/RFC7252, June 2014,
+ <https://www.rfc-editor.org/info/rfc7252>.
+
+ [RFC7303] Thompson, H. and C. Lilley, "XML Media Types", RFC 7303,
+ DOI 10.17487/RFC7303, July 2014,
+ <https://www.rfc-editor.org/info/rfc7303>.
+
+
+
+Jennings, et al. Standards Track [Page 49]
+
+RFC 8428 SenML August 2018
+
+
+ [RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for
+ Writing an IANA Considerations Section in RFCs", BCP 26,
+ RFC 8126, DOI 10.17487/RFC8126, June 2017,
+ <https://www.rfc-editor.org/info/rfc8126>.
+
+ [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
+ 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
+ May 2017, <https://www.rfc-editor.org/info/rfc8174>.
+
+ [RFC8259] Bray, T., Ed., "The JavaScript Object Notation (JSON) Data
+ Interchange Format", STD 90, RFC 8259,
+ DOI 10.17487/RFC8259, December 2017,
+ <https://www.rfc-editor.org/info/rfc8259>.
+
+ [RNC] ISO/IEC, "Information technology -- Document Schema
+ Definition Language (DSDL) -- Part 2: Regular-grammar-
+ based validation -- RELAX NG", ISO/IEC 19757-2, Annex
+ C: RELAX NG Compact syntax, December 2008.
+
+ [TIME_T] The Open Group Base Specifications, "Open Group Standard -
+ Vol. 1: Base Definitions, Issue 7", Section 4.16, "Seconds
+ Since the Epoch", IEEE Standard 1003.1, 2018,
+ <http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/
+ V1_chap04.html#tag_04_16>.
+
+ [W3C.REC-exi-20140211]
+ Schneider, J., Kamiya, T., Peintner, D., and R. Kyusakov,
+ "Efficient XML Interchange (EXI) Format 1.0 (Second
+ Edition)", W3C Recommendation REC-exi-20140211, February
+ 2014, <http://www.w3.org/TR/2014/REC-exi-20140211>.
+
+ [W3C.REC-xml-20081126]
+ Bray, T., Paoli, J., Sperberg-McQueen, M., Maler, E., and
+ F. Yergeau, "Extensible Markup Language (XML) 1.0 (Fifth
+ Edition)", W3C Recommendation REC-xml-20081126, November
+ 2008, <http://www.w3.org/TR/2008/REC-xml-20081126>.
+
+ [W3C.REC-xmlschema-1-20041028]
+ Thompson, H., Beech, D., Maloney, M., and N. Mendelsohn,
+ "XML Schema Part 1: Structures Second Edition", W3C
+ Recommendation REC-xmlschema-1-20041028, October 2004,
+ <http://www.w3.org/TR/2004/REC-xmlschema-1-20041028>.
+
+ [XPointerElement]
+ Grosso, P., Maler, E., Marsh, J., and N. Walsh, "XPointer
+ element() Scheme", W3C Recommendation REC-xptr-element,
+ March 2003,
+ <https://www.w3.org/TR/2003/REC-xptr-element-20030325/>.
+
+
+
+Jennings, et al. Standards Track [Page 50]
+
+RFC 8428 SenML August 2018
+
+
+ [XPointerFramework]
+ Grosso, P., Maler, E., Marsh, J., and N. Walsh, "XPointer
+ Framework", W3C Recommendation REC-XPointer-Framework,
+ March 2003,
+ <http://www.w3.org/TR/2003/REC-xptr-framework-20030325/>.
+
+15.2. Informative References
+
+ [AN1796] Linke, B., "Overview of 1-Wire Technology and Its Use",
+ Maxim Integrated, Tutorial 1796, June 2008,
+ <http://pdfserv.maximintegrated.com/en/an/AN1796.pdf>.
+
+ [CDDL-CBOR]
+ Birkholz, H., Vigano, C., and C. Bormann, "Concise data
+ definition language (CDDL): a notational convention to
+ express CBOR and JSON data structures", Work in Progress,
+ draft-ietf-cbor-cddl-05, August 2018.
+
+ [DEVICE-URN]
+ Arkko, J., Jennings, C., and Z. Shelby, "Uniform Resource
+ Names for Device Identifiers", Work in Progress,
+ draft-ietf-core-dev-urn-02, July 2018.
+
+ [IEEE802.1AS]
+ IEEE, "IEEE Standard for Local and Metropolitan Area
+ Networks - Timing and Synchronization for Time-Sensitive
+ Applications in Bridged Local Area Networks", IEEE
+ Standard 802.1AS.
+
+ [IEEE802.1BA]
+ IEEE, "IEEE Standard for Local and metropolitan area
+ networks--Audio Video Bridging (AVB) Systems", IEEE
+ Standard 802.1BA.
+
+ [ISO-80000-5]
+ ISO, "Quantities and units - Part 5: Thermodynamics",
+ ISO 80000-5, Edition 1.0, May 2007.
+
+ [RFC2818] Rescorla, E., "HTTP Over TLS", RFC 2818,
+ DOI 10.17487/RFC2818, May 2000,
+ <https://www.rfc-editor.org/info/rfc2818>.
+
+ [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform
+ Resource Identifier (URI): Generic Syntax", STD 66,
+ RFC 3986, DOI 10.17487/RFC3986, January 2005,
+ <https://www.rfc-editor.org/info/rfc3986>.
+
+
+
+
+
+Jennings, et al. Standards Track [Page 51]
+
+RFC 8428 SenML August 2018
+
+
+ [RFC4122] Leach, P., Mealling, M., and R. Salz, "A Universally
+ Unique IDentifier (UUID) URN Namespace", RFC 4122,
+ DOI 10.17487/RFC4122, July 2005,
+ <https://www.rfc-editor.org/info/rfc4122>.
+
+ [RFC4151] Kindberg, T. and S. Hawke, "The 'tag' URI Scheme",
+ RFC 4151, DOI 10.17487/RFC4151, October 2005,
+ <https://www.rfc-editor.org/info/rfc4151>.
+
+ [RFC4944] Montenegro, G., Kushalnagar, N., Hui, J., and D. Culler,
+ "Transmission of IPv6 Packets over IEEE 802.15.4
+ Networks", RFC 4944, DOI 10.17487/RFC4944, September 2007,
+ <https://www.rfc-editor.org/info/rfc4944>.
+
+ [RFC5751] Ramsdell, B. and S. Turner, "Secure/Multipurpose Internet
+ Mail Extensions (S/MIME) Version 3.2 Message
+ Specification", RFC 5751, DOI 10.17487/RFC5751, January
+ 2010, <https://www.rfc-editor.org/info/rfc5751>.
+
+ [RFC5952] Kawamura, S. and M. Kawashima, "A Recommendation for IPv6
+ Address Text Representation", RFC 5952,
+ DOI 10.17487/RFC5952, August 2010,
+ <https://www.rfc-editor.org/info/rfc5952>.
+
+ [RFC6690] Shelby, Z., "Constrained RESTful Environments (CoRE) Link
+ Format", RFC 6690, DOI 10.17487/RFC6690, August 2012,
+ <https://www.rfc-editor.org/info/rfc6690>.
+
+ [RFC6920] Farrell, S., Kutscher, D., Dannewitz, C., Ohlman, B.,
+ Keranen, A., and P. Hallam-Baker, "Naming Things with
+ Hashes", RFC 6920, DOI 10.17487/RFC6920, April 2013,
+ <https://www.rfc-editor.org/info/rfc6920>.
+
+ [RFC6973] Cooper, A., Tschofenig, H., Aboba, B., Peterson, J.,
+ Morris, J., Hansen, M., and R. Smith, "Privacy
+ Considerations for Internet Protocols", RFC 6973,
+ DOI 10.17487/RFC6973, July 2013,
+ <https://www.rfc-editor.org/info/rfc6973>.
+
+ [RFC7111] Hausenblas, M., Wilde, E., and J. Tennison, "URI Fragment
+ Identifiers for the text/csv Media Type", RFC 7111,
+ DOI 10.17487/RFC7111, January 2014,
+ <https://www.rfc-editor.org/info/rfc7111>.
+
+ [RFC7230] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer
+ Protocol (HTTP/1.1): Message Syntax and Routing",
+ RFC 7230, DOI 10.17487/RFC7230, June 2014,
+ <https://www.rfc-editor.org/info/rfc7230>.
+
+
+
+Jennings, et al. Standards Track [Page 52]
+
+RFC 8428 SenML August 2018
+
+
+ [RFC7721] Cooper, A., Gont, F., and D. Thaler, "Security and Privacy
+ Considerations for IPv6 Address Generation Mechanisms",
+ RFC 7721, DOI 10.17487/RFC7721, March 2016,
+ <https://www.rfc-editor.org/info/rfc7721>.
+
+ [RFC8141] Saint-Andre, P. and J. Klensin, "Uniform Resource Names
+ (URNs)", RFC 8141, DOI 10.17487/RFC8141, April 2017,
+ <https://www.rfc-editor.org/info/rfc8141>.
+
+ [RID-CoRE]
+ Shelby, Z., Vial, M., Groves, C., Zhu, J., and B.
+ Silverajan, Ed., "Reusable Interface Definitions for
+ Constrained RESTful Environments", Work in Progress,
+ draft-ietf-core-interfaces-12, June 2018.
+
+ [UCUM] Schadow, G. and C. McDonald, "The Unified Code for Units
+ of Measure", Version 2.1, Regenstrief Institute and
+ the UCUM Organization, November 2017,
+ <http://unitsofmeasure.org/ucum.html>.
+
+Acknowledgements
+
+ We would like to thank Alexander Pelov, Alexey Melnikov, Andrew
+ McClure, Andrew McGregor, Bjoern Hoehrmann, Christian Amsuess,
+ Christian Groves, Daniel Peintner, Jan-Piet Mens, Jim Schaad, Joe
+ Hildebrand, John Klensin, Karl Palsson, Lennart Duhrsen, Lisa
+ Dusseault, Lyndsay Campbell, Martin Thomson, Michael Koster, Peter
+ Saint-Andre, Roni Even, and Stephen Farrell, for their review
+ comments.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Jennings, et al. Standards Track [Page 53]
+
+RFC 8428 SenML August 2018
+
+
+Authors' Addresses
+
+ Cullen Jennings
+ Cisco
+ 400 3rd Avenue SW
+ Calgary, AB T2P 4H2
+ Canada
+
+ Email: fluffy@iii.ca
+
+
+ Zach Shelby
+ ARM
+ 150 Rose Orchard
+ San Jose 95134
+ United States of America
+
+ Phone: +1-408-203-9434
+ Email: zach.shelby@arm.com
+
+
+ Jari Arkko
+ Ericsson
+ Jorvas 02420
+ Finland
+
+ Email: jari.arkko@piuha.net
+
+
+ Ari Keranen
+ Ericsson
+ Jorvas 02420
+ Finland
+
+ Email: ari.keranen@ericsson.com
+
+
+ Carsten Bormann
+ Universitaet Bremen TZI
+ Postfach 330440
+ Bremen D-28359
+ Germany
+
+ Phone: +49-421-218-63921
+ Email: cabo@tzi.org
+
+
+
+
+
+
+Jennings, et al. Standards Track [Page 54]
+