Azure / opendigitaltwins-dtdl

Digital Twins Definition Language
Creative Commons Attribution 4.0 International
466 stars 160 forks source link

Unit in complex types #81

Open reginbald opened 4 years ago

reginbald commented 4 years ago

In DTDL v1 every level in a DCM could have a displayUnit property. In DTDL v2 this property is removed. Display units in v2 are derived from the unit property. The unit property can only be present when a semantic type is defined. A semantic type is only valid on telemetry or a property that has a numeric schema (integer, long, float, double). This means that it’s not possible to define a unit for fields of an object. So if you want to have units as part of the definition you cannot use complex types in a DCM (object, map, array).

Is this true?

briancr-ms commented 4 years ago

Yes, this is correct. In DTDL v2 semantic types are only supported at the telemetry or property level. We are exploring expanding the use of semantic types in future revisions of DTDL.

Can you provide some examples of where you would want to use units within a complex type?

reginbald commented 4 years ago

Thanks for the quick reply :)

Let's say we have a component that represents a heat camera. When a product has been scanned and is detected to be too hot it will send out an alarm/telemetry with the picture, max temperature and min temperature of the product.

{
  "@type": "Telemetry",
  "name": "overheating",
   "schema": {
        "@type": "Object",
        "fields": [
            {
                "name": "image",
                "schema": "string"
            },
            {
                "name": "minTemp",
                "schema": "double"
            },
            {
                "name": "maxTemp",
                "schema": "double"
            }
        ]
    }
},

or

Let's say we have a machine that may have two or more sensors for temperature readings in a room. We'd like to describe it using an array with temperature values and sensor ids.

{
    "@type": "Telemetry",
    "name": "roomTemp",
    "schema": {
        "@type": "Array",
        "elementSchema": {
          "@type": "Object",
          "fields": [
              {
                  "name": "id",
                  "schema": "string"
              },
              {
                  "name": "temperature",
                  "schema": "double"
              }
          ]
      }
    }
}
briancr-ms commented 4 years ago

These are great examples--thanks for adding these. We're not quite ready to have the next set of design discussions on this topic, but I want to leave this issue open so that we can come back to it because I think it will be important to address sooner rather than later.

rido-min commented 1 year ago

Hi @reginbald

We have published the DTDL v3 preview. This version supports units in Fields as described here https://github.com/Azure/opendigitaltwins-dtdl/blob/master/DTDL/Docs/en-US/DTDL.quantitativeTypes.v1.md#semantic-types-and-units

If this satisfies your requirements, can you close this issue?

maurert commented 1 year ago

Hi @reginbald

We have published the DTDL v3 preview. This version supports units in Fields as described here https://github.com/Azure/opendigitaltwins-dtdl/blob/master/DTDL/Docs/en-US/DTDL.quantitativeTypes.v1.md#semantic-types-and-units

If this satisfies your requirements, can you close this issue?

The above link gives a 404

rido-min commented 1 year ago

apologies, we've been refactoring the folder structure.

This link should work: https://github.com/Azure/opendigitaltwins-dtdl/blob/master/DTDL/v3/DTDL.quantitativeTypes.v1.md#semantic-types-and-units

rido-min commented 1 year ago

Hi @reginbald

Wondering if this update to DTDL satisfies your requirements. If so, can you close this issue?