管理 Azure Digital Twins 模型

本文說明如何在 Azure Digital Twins 實例中管理 模型 。 管理作業包括上傳、驗證、擷取和刪除模型。

必要條件

若要使用本文中的 Azure Digital Twins,您需要 Azure Digital Twins 實例和使用它所需的許可權。 如果您已設定 Azure Digital Twins 實例,您可以使用該實例並跳至下一節。 否則,請遵循設定實例和驗證中的指示。 這些指示包含可協助您確認已順利完成每個步驟的資訊。

設定實例之後,請記下實例的主機名。 您可以在 Azure 入口網站 中找到主機名。

開發人員介面

本文強調如何使用 .NET (C#) SDK 完成不同的管理作業。 您也可以使用 Azure Digital Twins API 和 SDK 中所述的其他語言 SDK 來製作這些相同的管理話叫。

可用來完成這些作業的其他開發人員介面包括:

視覺效果

Azure Digital Twins Explorer 是一種可視化工具,可用來探索 Azure Digital Twins 圖表中的數據。 您可以使用總管來檢視、查詢和編輯模型、對應項和關聯性。

若要閱讀 Azure Digital Twins Explorer 工具,請參閱 Azure Digital Twins Explorer。 如需如何使用其功能的詳細步驟,請參閱 使用 Azure Digital Twins Explorer

以下是視覺效果的外觀:

Screenshot of Azure Digital Twins Explorer showing a sample model graph.

建立模型

您可以從頭開始建立自己的模型,或使用適用於您產業的現有待辦專案。

撰寫模型

Azure Digital Twins 的模型是以 DTDL 撰寫,並儲存為 JSON 檔案。 Visual Studio Code提供 DTDL 延伸模組,其提供語法驗證和其他功能,讓您更輕鬆地撰寫 DTDL 檔。

請考慮醫院想要以數位方式代表其房間的範例。 每個房間都包含一個智慧肥皂分配器,用於監視手洗,以及感測器來監視通過房間的流量。

解決方案的第一個步驟是建立模型來代表醫院的各個層面。 此案例中的病患室可能描述如下:

{
    "@id": "dtmi:com:contoso:PatientRoom;1",
    "@type": "Interface",
    "@context": "dtmi:dtdl:context;3",
    "displayName": "Patient Room",
    "contents": [
      {
        "@type": "Property",
        "name": "visitorCount",
        "schema": "double"
      },
      {
        "@type": "Property",
        "name": "handWashCount",
        "schema": "double"
      },
      {
        "@type": "Property",
        "name": "handWashPercentage",
        "schema": "double"
      },
      {
        "@type": "Relationship",
        "name": "hasDevices"
      }
    ]
  }

注意

這是 JSON 檔案的範例本文,其中已定義並儲存模型,以作為客戶端專案的一部分上傳。 另一方面,REST API 呼叫會採用上述模型定義的數位列(對應至 IEnumerable<string> .NET SDK 中的 )。 因此,若要直接在 REST API 中使用此模型,請以括弧括住它。

此模型會定義病患室的名稱和唯一標識符,以及代表訪客計數和手洗狀態的屬性。 這些計數器將從運動感測器和智慧肥皂分配器更新,並將一起使用來計算 handwash percentage 屬性。 此模型也會定義關聯 hasDevices性,其將用來根據此會議室模型將任何 數字 對應項連接到實際裝置。

注意

Azure Digital Twins 目前不支援某些 DTDL 功能,包括writable屬性和關聯性的屬性,以及minMultiplicitymaxMultiplicity關聯性的屬性。 如需詳細資訊,請參閱 服務特定的 DTDL 附注

遵循此方法,您可以定義醫院病房、區域或醫院本身的模型。

如果您的目標是建置描述產業領域的完整模型集,請考慮是否有現有的產業內部學可供您用來讓模型撰寫更容易。 下一節將更詳細地說明產業的內文。

使用現有的業界標準待辦專案

內部學是一組模型,可全面描述特定領域,例如製造、建築結構、IoT 系統、智慧城市、能源電網、Web 內容等等。

如果您的解決方案適用於使用任何類型的模型標準的特定產業,請考慮從為業界設計的預先存在的模型集開始,而不是從頭開始設計模型。 Microsoft 已與領域專家合作,根據業界標準建立 DTDL 模型,以協助將重塑降到最低,並鼓勵跨產業解決方案的一致性和簡單性。 您可以在什麼是本體學?中深入了解這些待辦專案,包括如何使用它們,以及現在有哪些待辦專案可供使用?

驗證語法

建立模型之後,建議您先脫機驗證模型,再將其上傳至 Azure Digital Twins 實例。

為了協助您驗證模型,NuGet: DTDLParser 上會提供 .NET 用戶端 DTDL 剖析連結庫。 您可以直接在 C# 程式代碼中使用剖析器連結庫。 您也可以檢視 GitHubDTDLParserResolveSample 中剖析器範例的使用。

上傳模型

建立模型之後,您可以將模型上傳至 Azure Digital Twins 實例。

當您準備好上傳模型時,您可以針對 .NET SDK 使用下列代碼段:

// 'client' is an instance of DigitalTwinsClient
// Read model file into string (not part of SDK)
// fileName is the name of the JSON model file
string dtdl = File.ReadAllText(fileName);
await client.CreateModelsAsync(new[] { dtdl });

上傳時,模型檔案會由服務驗證。

您通常需要將多個模型上傳至服務。 有數種方式可讓您一次在單一交易中上傳許多模型。 為了協助您挑選策略,請考慮您繼續執行本節其餘部分時所設定的模型大小。

上傳小型模型集

針對較小的模型集,您可以使用個別 API 呼叫一次上傳多個模型。 您可以檢查目前限制,以瞭解 Azure Digital Twins 限制中單一 API 呼叫中可以上傳多少個模型。

如果您使用 SDK,您可以使用如下所示的方法上傳多個模型檔案 CreateModels

var dtdlFiles = Directory.EnumerateFiles(sourceDirectory, "*.json");

var dtdlModels = new List<string>();
foreach (string fileName in dtdlFiles)
{
    // Read model file into string (not part of SDK)
    string dtdl = File.ReadAllText(fileName);
    dtdlModels.Add(dtdl);
}
await client.CreateModelsAsync(dtdlModels);

如果您使用 REST APIAzure CLI,您可以將多個模型定義放在要一起上傳的單一 JSON 檔案中,以上傳多個模型。 在此情況下,模型應該放在 檔案內的 JSON 陣列中,如下列範例所示:

[
    {
      "@id": "dtmi:com:contoso:Planet;1",
      "@type": "Interface",
      "@context": "dtmi:dtdl:context;3"
    },
    {
      "@id": "dtmi:com:contoso:Moon;1",
      "@type": "Interface",
      "@context": "dtmi:dtdl:context;3"
    }
]

使用匯入作業 API 上傳大型模型集

針對大型模型集,您可以使用 匯入作業 API ,在單一 API 呼叫中一次上傳許多模型。 API 可以同時接受 實例中模型數目的 Azure Digital Twins 限制,並視需要自動重新排序模型以解析它們之間的相依性。 此方法需要使用 Azure Blob 儲存體,以及 Azure Digital Twins 實例中模型和大量作業的寫入許可權

提示

匯入作業 API 也允許在相同的呼叫中匯入對應項和關聯性,以一次建立圖形的所有部分。 如需此程式的詳細資訊,請參閱 使用匯入作業 API 大量上傳模型、對應項和關聯性。

若要大量匯入模型,您必須將模型結構(以及大容量導入作業中包含的任何其他資源)作為 NDJSON 檔案。 區 Models 段緊接在 區段之後 Header ,使其成為檔案中的第一個圖形數據區段。 您可以在匯入作業 API 簡介檢視範例匯入檔案和範例專案,以建立這些檔案。

接下來,檔案必須上傳至 Azure Blob 儲存體 中的附加 Blob。 如需如何建立 Azure 記憶體容器的指示,請參閱 建立容器。 然後,使用您慣用的 upload 方法上傳檔案(有些選項是 AzCopy 命令Azure CLIAzure 入口網站)。

將 NDJSON 檔案上傳至容器之後,請在 Blob 容器內取得其 URL 。 您稍後會在大容量導入 API 呼叫主體中使用此值。

以下螢幕快照顯示 Azure 入口網站 中 Blob 檔案的 URL 值:

Screenshot of the Azure portal showing the URL of a file in a storage container.

然後,檔案可以在匯入作業 API 呼叫中使用。 您將提供輸入檔的 Blob 記憶體 URL,以及新的 Blob 記憶體 URL,以指出您想要在服務建立輸出記錄檔時儲存的位置。

擷取

您可以列出並擷取儲存在 Azure Digital Twins 實例上的模型。

您的選項包括:

  • 擷取單一模型
  • 擷取所有模型
  • 擷取模型的元數據和相依性

以下是一些範例呼叫:

// 'client' is a valid DigitalTwinsClient object

// Get a single model, metadata and data
Response<DigitalTwinsModelData> md1 = await client.GetModelAsync("<model-Id>");
DigitalTwinsModelData model1 = md1.Value;

// Get a list of the metadata of all available models; print their IDs
AsyncPageable<DigitalTwinsModelData> md2 = client.GetModelsAsync();
await foreach (DigitalTwinsModelData md in md2)
{
    Console.WriteLine($"Type ID: {md.Id}");
}

// Get models and metadata for a model ID, including all dependencies (models that it inherits from, components it references)
AsyncPageable<DigitalTwinsModelData> md3 = client.GetModelsAsync(new GetModelsOptions { IncludeModelDefinition = true });

SDK 會呼叫 以擷取模型的所有傳回 DigitalTwinsModelData 物件。 DigitalTwinsModelData 包含 Azure Digital Twins 實例中所儲存模型的相關元數據,例如模型的名稱、DTMI 和建立日期。 對象 DigitalTwinsModelData 也選擇性地包含模型本身。 這表示,視參數而定,您可以使用擷取只擷取元數據的呼叫(這在您想要顯示可用工具 UI 清單的案例中很有用),或整個模型。

呼叫 RetrieveModelWithDependencies 不僅會傳回所要求的模型,也會傳回要求模型相依的所有模型。

模型不一定只傳回他們上傳的文件表單。 Azure Digital Twins 只保證傳回窗體在語意上是相等的。

更新模型

本節說明更新模型的考慮和策略。

更新之前:請在整個解決方案的內容中思考

在更新模型之前,建議您全面思考整個解決方案,以及您即將進行的模型變更的影響。 Azure Digital Twins 解決方案中的模型通常相互連線,因此請務必注意更新一個模型需要更新數個其他模型的情況串連變更。 更新模型會影響使用模型的對應項,也可能會影響輸入和處理程式碼、用戶端應用程式和自動化報表。

以下是協助您順利管理模型轉換的一些建議:

  • 請考慮在適當時將模型及其關聯性保持在最新狀態,而不要將模型視為個別的實體,而是考慮將整個模型設定。
  • 將模型視為原始程式碼,並在原始檔控制中管理它們。 將相同的嚴謹和注意力套用至您套用至解決方案中其他程序代碼的模型和模型變更。

當您準備好繼續更新模型的程式時,本節的其餘部分將說明可用來實作更新的策略。

更新模型的策略

將模型上傳至您的 Azure Digital Twins 實例之後,模型介面是不可變的,這表示沒有傳統的模型「編輯」。 Azure Digital Twins 也不允許在實例中已有相符的模型時重新載入相同的確切模型。

相反地,如果您想要變更模型,例如更新 displayNamedescription,或新增和移除屬性,則必須取代原始模型。

取代模型時,有兩種策略可供選擇:

  • 策略 1:上傳新的模型版本:上傳模型,使用新的版本號碼,並更新對應項以使用該新模型。 新的和舊的模型版本都會存在於您的實例中,直到您刪除一個模型為止。
    • 當您只想要更新使用模型的一些對應項,或想要確保對應項與模型轉換保持一致且可透過模型轉換寫入時,請使用此策略。
  • 策略 2:刪除舊模型並重新載入:刪除原始模型,並在其位置上傳具有相同名稱和標識碼 (DTMI 值) 的新模型。 將舊模型完全取代為新的模型。
    • 當您想要一次更新使用此模型的所有對應項時,除了回應模型的所有程式代碼之外,請使用此策略。 如果您的模型更新包含模型更新的重大變更,當從舊模型轉換到新模型時,對應項在將模型從舊模型轉換到新模型時,對應項將會不一致,這表示在上傳新模型且對應項一致之前,它們將無法接受任何更新。

注意

在開發之外,不建議對模型進行重大變更。

請繼續進行下一節,以深入瞭解每個策略選項。

策略 1:上傳新的模型版本

此選項牽涉到建立新版本的模型,並將它上傳至您的實例。

此作業不會覆寫舊版的模型,因此在您移除模型之前,模型有多個版本會並存於實例中。 由於新的模型版本和舊的模型版本共存,對應項可以使用新版本的模型或舊版本,這表示上傳新版本的模型不會自動影響現有的對應項。 現有的對應項會維持為舊模型版本的實例,您可以藉由修補這些對應項,將這些對應項更新為新的模型版本。

若要使用此策略,請遵循下列步驟。

1.建立和上傳新的模型版本

若要建立新版的現有模型,請從原始模型的 DTDL 開始。 更新、新增或移除您想要變更的欄位。

接下來,藉由更新 id 模型的字段,將此模型標示為較新版本的模型。 模型標識符的最後一個區段,在 之後 ;,代表模型編號。 若要指出此模型現在是更新版本,請將值結尾的數位 id 遞增為大於目前版本號碼的任何數位。

例如,如果先前的模型識別碼看起來像這樣:

"@id": "dtmi:com:contoso:PatientRoom;1",

此模型第 2 版看起來可能像這樣:

"@id": "dtmi:com:contoso:PatientRoom;2",

然後, 將新版本的模型上傳 至您的實例。

因此,您的執行個體中將會提供此版本的模型,做為數位對應項之用。 它不會覆寫舊版的模型,因此多個版本的模型現在會並存於您的實例中。

2.視需要更新圖形元素

接下來,更新 實例中的對應項和關聯性,以使用新的模型版本,而不是舊版本。

您可以使用下列指示來 更新對應項更新關聯性。 更新對應項模型的修補作業看起來會像這樣:

[
  {
    "op": "replace",
    "path": "/$metadata/$model",
    "value": "dtmi:example:foo;1"
  }
]

重要

更新對應項時,請使用相同的修補程式來更新模型標識碼(至新的模型版本),以及對應項上必須變更的任何字段,使其符合新的模型。

您可能也需要更新參考此模型之實例中的關聯性和其他模型,使其參考新的模型版本。 您必須執行另一個模型更新作業以達到此目的,因此請回到本節的開頭,並針對需要更新的任何模型重複此程式。

3. (選擇性) 解除委任或刪除舊模型版本

如果您不再使用舊模型版本,您可以 解除委任 較舊的模型。 此動作可讓模型保留在 實例中,但無法用來建立新的數字對應項。

如果您不想再在 實例中刪除舊模型,也可以 完全刪除 它。

上述連結的區段包含解除委任和刪除模型的範例程式代碼和考慮。

策略 2:刪除舊模型並重新載入

您可以完全刪除模型,並將編輯的模型重新載入實例,而不是遞增模型版本。

Azure Digital Twins 不記得曾經上傳過舊模型,因此此動作會像是上傳全新的模型。 使用模型的對應項一旦可供使用,就會自動切換至新的定義。 根據新定義與舊定義有何不同,這些對應項可能會有符合已刪除定義的屬性和關聯性,且與新定義無效,因此您可能需要修補它們,以確保它們仍然有效。

若要使用此策略,請遵循下列步驟。

1.刪除舊模型

由於 Azure Digital Twins 不允許兩個識別碼相同的模型,請從從實例中刪除原始模型開始。

注意

如果您有其他相依於此模型的模型(透過繼承或元件),您必須先移除這些參考,才能刪除模型。 您可以先更新這些相依模型,以暫時移除參考,或刪除相依模型,並在稍後的步驟中重新載入它們。

使用下列指示來 刪除原始模型。 此動作會讓您的對應項暫時使用該模型「被遺棄」,因為它們現在使用已不存在的模型。 當您重新載入更新的模型時,將會在下一個步驟中修復此狀態。

2.建立和上傳新模型

從原始模型的 DTDL 開始。 更新、新增或移除您想要變更的欄位。

然後, 將模型 上傳至 實例,就好像這是第一次上傳的新模型一樣。

3.視需要更新圖形元素

既然您的新模型已上傳來取代舊的模型,圖形中的對應項就會在實例中的快取過期並重設後,自動開始使用新的模型定義。 視圖形大小而定,此程式可能需要 10-15 分鐘或更長的時間。 之後,應該可以存取模型上的新增和變更屬性,而且無法再存取移除的屬性。

注意

如果您先前移除其他相依模型以刪除原始模型,請在快取重設之後立即重新載入它們。 如果您更新相依模型以暫時移除原始模型的參考,您可以再次更新它們以放回參考。

接下來,更新 實例中的對應項和關聯性,使其屬性符合新模型所定義的屬性。 在完成此步驟之前,仍可讀取不符合其模型的對應項,但無法寫入。 如需沒有有效模型之對應項狀態的詳細資訊,請參閱 沒有模型的對應項

有兩種方式可以更新新模型的對應項和關聯性,以便再次寫入:

  • 視需要修補對應項和關聯性,使其符合新的模型。 您可以使用下列指示來 更新對應項更新關聯性
    • 如果您已新增屬性:更新對應項和關聯性以取得新值並非必要,因為遺漏新值的對應項仍將是有效的對應項。 不過,您可以修補它們,但想要為新屬性新增值。
    • 如果您已移除屬性:需要修補對應項,才能移除現在與新模型無效的屬性。
    • 如果您已更新屬性:修補對應項必須更新已變更屬性的值,以使用新的模型有效。
  • 刪除使用模型的對應項和關聯性,然後重新建立它們。 您可以使用下列指示來刪除對應項並重新建立對應項,以及刪除關聯性並重新建立關聯性
    • 如果您要對模型進行許多變更,而且很難更新現有的對應項來比對它,您可能想要執行這項作業。 不過,如果您有許多相互關聯性相互關聯的對應項,則娛樂可能會很複雜。

移除模型

模型可以透過下列兩種方式之一從服務中移除:

  • 解除委任:一旦解除委任模型,您將無法再使用模型建立新的數位對應項。 已使用此模型的現有數位對應項不會受到影響,因此您仍然可以利用如屬性變更以及新增或刪除關聯性的方式更新現有數位對應項。
  • 刪除:這項作業將會從解決方案中完全移除模型。 使用此模型的任何對應項都不再與任何有效的模型相關聯,因此這些對應項會被視為完全沒有模型。 您仍然可以讀取這些對應項,但在重新指派給不同的模型之前,您無法對這些對應項進行任何更新。

這些作業是個別的功能,而且不會彼此影響,不過它們可能會一起使用來逐漸移除模型。

注意

如果您想要一次刪除 實例中的所有 模型、對應項和關聯性,請使用 刪除作業 API

解除委任

若要解除委任模型,您可以從 SDK 使用 DecommissionModel 方法:

// 'client' is a valid DigitalTwinsClient
await client.DecommissionModelAsync(dtmiOfPlanetInterface);
// Write some code that deletes or transitions digital twins
//...

您也可以使用 REST API 呼叫 DigitalTwinModels Update 來解除委任模型。 屬性 decommissioned 是唯一可以取代為此 API 呼叫的屬性。 JSON 修補程式檔看起來會像這樣:

[
  {
    "op": "replace",
    "path": "/decommissioned",
    "value": true
  }
]

模型解除委任狀態包含在模型擷取 API 所傳回的記錄中 ModelData

刪除

您可以一次刪除執行個體中的所有模型,也可以個別執行。

如需如何同時刪除所有模型的範例,請參閱 GitHub 中 Azure Digital Twins 存放庫的端對端範例。 CommandLoop.cs 檔案包含具有CommandDeleteAllModels程式碼的函式,可刪除 實例中的所有模型。

若要刪除個別模型,請遵循本節其餘部分的指示和考慮。

刪除之前:刪除需求

一般而言,模型可以隨時刪除。

例外狀況是其他模型相依的模型,無論是關聯性 extends 還是元件。 例如,如果 ConferenceRoom 模型是 Room 模型的延伸,而且有 ACUnit 模型做為元件,則您無法刪除 Room 或 ACUnit,直到 ConferenceRoom 移除這些各自的參考為止。

您可以藉由更新相依模型來移除相依性,或完全刪除相依模型來執行此動作。

刪除期間:刪除程序

即使模型符合需求可立即刪除,您可能想要先完成幾個步驟,以避免留下的對應項造成非預期的結果。 以下是一些可以協助您管理程序的步驟:

  1. 首先,解除委任模型
  2. 等候幾分鐘,以確定服務已處理在解除委任前傳送的任何最後一分鐘對應項建立要求
  3. 依模型查詢對應項,以查看目前已解除委任模型的所有對應項
  4. 如果您不再需要這些對應項,請刪除對應項,或視需要將這些對應項修補為新模型。 您也可以選擇不理會這些對應項,在此情況下,一旦模型遭到刪除,這些對應項會變成沒有模型的對應項。 若要了解此狀態的含意,請參閱下一節。
  5. 再等候幾分鐘,確定變更已分流通過
  6. 刪除模型

若要刪除模型,您可以使用 DeleteModel SDK呼叫:

// 'client' is a valid DigitalTwinsClient
await client.DeleteModelAsync(IDToDelete);

您也可以使用 DigitalTwinModels Delete REST API 呼叫來刪除 模型。

刪除之後:沒有模型的對應項

一旦刪除模型,先前使用該模型的任何數位對應項現在都會被視為沒有模型。 沒有任何查詢可提供您此狀態中所有對應項的清單,不過您仍然可以由已刪除的模型查詢對應項,以瞭解哪些對應項受到影響。

若您使用沒有模型的對應項,可執行和不可執行的動作概觀如下。

您可以執行的動作:

  • 查詢對應項
  • 讀取屬性
  • 讀取連出關聯性
  • 新增和刪除連入關聯性(如同在 中,其他對應項仍可形成此對應項的關聯性)
    • 關聯 target 性定義中的 仍然可以反映已刪除模型的 DTMI。 此處也可以使用無定義目標的關聯性。
  • 刪除關聯
  • 刪除對應項

您不可以執行的動作:

  • 編輯連出關聯性(如 中所示,此對應項與其他對應項之間的關聯性)
  • 編輯屬性

刪除之後:重新上傳模型

刪除模型之後,您可以決定稍後上傳新模型,新模型的識別碼與您已刪除的模型相同。 以下是這種案例會發生的情況。

  • 從解決方案存放區的觀點來看,這項作業與上傳全新的模型相同。 服務不會記住先前上傳的舊模型。
  • 如果圖表中有任何參考已刪除模型的剩餘對應項,它們就不會再被遺棄;這個模型標識碼會以新的定義再次有效。 不過,如果模型的新定義與已刪除的模型定義不同,這些對應項可能會有屬性和關聯性符合已刪除的定義,因而對新定義而言是無效的。

Azure Digital Twins 不會防止此狀態,因此請小心修補對應項,以確保它們透過模型定義參數保持有效。

將 v2 模型轉換為 v3

Azure Digital Twins 支援 DTDL 第 2 版和 3 版(分別在文件中縮短為 v2 和 v3)。 V3 是根據其擴充功能的建議選擇。 本節說明如何將現有的 DTDL v2 模型更新為 DTDL v3。

  1. 更新內容。 將模型識別為 v2 或 v3 的主要功能是 @context 介面上的欄位。 若要將模型從 v2 轉換為 v3,請將 dtmi:dtdl:context;2 內容值變更為 dtmi:dtdl:context;3。 對於許多模型,這是唯一必要的變更。
    1. v2 中的值: "@context": "dtmi:dtdl:context;2"
    2. v3 中的值: "@context": "dtmi:dtdl:context;3"
  2. 如有需要,請更新語意類型。 在 DTDL v2 中, 原生支援語意類型 。 在 DTDL v3 中,它們隨附於 QuantitativeTypes 功能延伸模組中。 因此,如果您的 v2 模型使用語意類型,則必須在將模型轉換成 v3 時新增功能延伸模組。 若要這樣做,請先將 @context 介面上的欄位從單一值變更為值陣列,然後新增 值 dtmi:dtdl:extension:quantitativeTypes;1
    1. v2 中的值: "@context": "dtmi:dtdl:context;2"
    2. v3 中的值: "@context": ["dtmi:dtdl:context;3", "dtmi:dtdl:extension:quantitativeTypes;1"]
  3. 如有需要,請考慮大小限制。 V2 和 v3 的大小限制不同,因此如果您的介面非常大,您可能會想要檢閱 DTDL v2 與 v3 之間的差異限制

這些變更之後,先前的 DTDL v2 模型已轉換成 DTDL v3 模型。

您可能也想要考慮 DTDL v3 的新功能,例如數位類型屬性、版本放寬和其他功能延伸,以查看其中是否有任何一項是有益的新增功能。 如需 DTDL v2 與 v3 之間差異的完整清單,請參閱 DTDL v3 語言描述中的第 2 版變更。

下一步

瞭解如何根據您的模型建立和管理數字對應項: