在 Azure 数字孪生解决方案中,环境中的实体是由 数字孪生体digital twins)表示的。

数字孪生体是你自定义的模型(models)之一的实例。 

可以通过 关系(relationships) 将其连接到其他数字孪生体以形成 孪生图(twin graph)。

 

 

 

 

使用vs code 创建两个模型:

第一个模型文件时是一个温湿度计:

{
  "@context": "dtmi:dtdl:context;2",
  "@id": "dtmi:com:example:myfirstmodel;1",
  "@type": "Interface",
  "displayName": "myfirstmodel",
  "contents": [
    {
      "@type": "Telemetry",
      "name": "temperature",
      "schema": "double"
    },
    {
      "@type": "Property",
      "name": "humidity",
      "schema": "double"
    },
    {
      "@type": "Property",
      "name": "deviceStatus",
      "schema": "string"
    }
    
  ]
}

 

第二个模型文件是房间:

{
  "@context": "dtmi:dtdl:context;2",
  "@id": "dtmi:com:example:room;1",
  "@type": "Interface",
  "displayName": "room",
  "contents": [
    
    {
      "@type": "Property",
      "name": "deviceCount",
      "schema": "integer"
    },
    {
      "@type":"Relationship",
      "name": "devices",
      "target":"dtmi:com:example:myfirstmodel;1"
    }
    
    
  ]
}

 

房间和温湿度计之间的关系是1对多的,即一个房间里可以有多个温湿度计。

在room的dtdl中通过 @type =“Relationship”表示 两个孪生体之间的关系,target 为 温湿度计的 id。

 

在ADT Explorer中上传两个模版,并生成一个 room实体,两个温湿度计实体:

 

按住shift,同时选中room和 一个温湿度计,为 room和温湿度计创建关系:

source 选择房间,target 选择 温湿度计,relationship选择 devices,该值是在dtdl的json文件中设定的。

同样的方式设置 room和另一个温湿度计的关系:

 

点击某个温湿度计,可以看到 property 的值会在右侧显示,但是 telemetry的值并不会在右侧显示,这是DTDL规定的。

 

也可以在右侧直接修改类行为 property的值:

 

创建如下的数字孪生图:

 

执行查询:

select * from digitaltwins where IS_OF_MODEL ('dtmi:com:example:myfirstmodel;1')

查询结果只有三个 温湿度计,关于IS_OF_MODEL的作用,参考:

https://docs.microsoft.com/zh-cn/azure/digital-twins/how-to-query-graph?WT.mc_id=AZ-MVP-5003757