オントロジの拡張

この記事では、新しい DTDL プロパティを使用してオントロジを拡張する例の基礎として、スマート ビルディング用の DTDL ベースの RealEstateCore オントロジを使用します。 ただし、ここで説明する手法は一般的であり、Azure Digital Twins と互換性のある DTDL 機能 (プロパティ、リレーションシップ、コンポーネント) を使用して DTDL ベースのオントロジの任意の部分に適用できます。

DTDL ベースの RealEstateCore オントロジなど、Microsoft の業界標準のオントロジは、IoT ソリューションの構築を開始するための優れた方法です。 業界のオントロジは、お客様の作業用に設計されメインAzure Digital Twins などの Azure IoT サービスですぐに使用できるように設計された豊富な基本インターフェイスのセットを提供します。

ただし、お客様のソリューションには、業界オントロジではカバーしきれない特定のニーズがある場合があります。 たとえば、デジタル ツインを別のシステムに格納されている 3D モデルにリンクしたい場合があります。 この場合、これらのオントロジの 1 つを拡張して、元のオントロジのすべての利点を維持しながら、独自の機能を追加できます。

RealEstateCore の Space 階層

DTDL ベースの RealEstateCore オントロジでは、Space 階層を使用して、さまざまな種類 (部屋、建物、区域など) のスペースが定義されています。 さまざまな種類の Room、Building、Zone を定義するために、これらの各モデルから階層が拡張されます。

下の図は、階層の一部を示しています。

Diagram showing part of the RealEstateCore space hierarchy. It shows elements for Space, Room, ConferenceRoom, and Office.

RealEstateCore オントロジーの詳細については、「Digital Twins Definition Language-based RealEstateCore ontology for smart buildings ontology for smart buildings on GitHub」を参照してください。

RealEstateCore の Space 階層の拡張

お客様のソリューションには、業界オントロジではカバーしきれない特定のニーズがある場合があります。 この場合、階層を拡張することで、業界オントロジをニーズに合わせてカスタマイズしながら、引き続き使用できます。

この記事では、オントロジの階層を拡張することが有用な 2 種類のケースについて説明します。

  • 業界オントロジにない概念のための新しいインターフェイスを追加する。
  • 既存のインターフェイスに追加のプロパティ、リレーションシップ、またはコンポーネントを追加します。

新しい概念のための新しいインターフェイスを追加する

この場合、業界のオントロジに存在しないソリューションに必要な概念のインターフェイスを追加する必要があります。 たとえば、DTDL ベースの RealEstateCore オントロジでは表されていない他の種類の部屋が自分のソリューションにある場合は、RealEstateCore インターフェイスから直接拡張することで、それらを追加できます。

下の例は、RealEstateCore オントロジには存在しない "フォーカス ルーム" を表す必要があるソリューションを示しています。 フォーカス ルームは、一度に数時間、ユーザーが作業に専念できるように設計された小さなスペースです。

この新しい概念を使用して業界オントロジを拡張するには、業界オントロジのインターフェイスから拡張した新しいインターフェイスを作成します。

フォーカス ルーム インターフェイスを追加した後、拡張された階層には、新しい部屋の種類が示されます。

Diagram showing part of the RealEstateCore space hierarchy, including a new addition of Focus Room.

既存のインターフェイスに機能をさらに追加する

この場合は、業界のオントロジ内のインターフェイスにプロパティ、リレーションシップ、またはコンポーネントを追加します。

このセクションでは、2 つの例について説明します。

  • 既存のシステムに既にあるスペースの 3D 描画を表示するソリューションを構築する場合に、各デジタル ツインをその 3D 描画に (ID によって) 関連付けて、ソリューションでスペースに関する情報を表示するときに、その既存のシステムから 3D 描画も取得できるようにしたい場合があります。
  • 自分のソリューションで会議室 (ConferenceRoom) のオンラインとオフラインの状態を追跡する必要がある場合に、表示またはクエリで使用するために会議室の状態を追跡したい場合があります。

どちらの例も、新しいプロパティ (3D 描画をデジタル ツインに関連付ける drawingId プロパティと、会議室がオンラインかどうかを示す online プロパティ) を使用して実装できます。

通常、業界オントロジを直接変更することは避けられます。これは、将来的に、それに対する更新を自分のソリューションに組み込むことができるようにするためです (これにより、自分の追加要素が上書きされます)。 代わりに、DTDL ベースの RealEstateCore オントロジから拡張した独自のインターフェイス階層で、このような種類の追加を行うことができます。 作成する各インターフェイスでは、複数のインターフェイス継承を使用して、その親の RealEstateCore インターフェイスを拡張し、拡張したインターフェイス階層からその親のインターフェイスを拡張します。 この方法を使用すると、業界オントロジと自分の追加要素を組み合わせて使用できます。

業界オントロジを拡張するには、その業界オントロジのインターフェイスから拡張した独自のインターフェイスを作成し、その拡張したインターフェイスに新しい機能を追加します。 拡張するインターフェイスごとに、新しいインターフェイスを作成します。 拡張したインターフェイスは DTDL で記述されます (このドキュメントで後述する「拡張したインターフェイスの DTDL」を参照してください)。

上に示した階層の一部を拡張すると、拡張した階層は下の図のようになります。 ここでは、拡張した Space インターフェイスは、デジタル ツインを 3D 描画に関連付ける ID を格納する drawingId プロパティを追加します。 さらに、ConferenceRoom インターフェイスは、会議室のオンライン状態を格納する online プロパティを追加します。 継承によって、ConferenceRoom インターフェイスには、RealEstateCore ConferenceRoom インターフェイスのすべての機能だけでなく、拡張された Space インターフェイスのすべての機能も含まれます。

Diagram showing the extended RealEstateCore space hierarchy, with more new additions as described.

業界オントロジのすべてのインターフェイスを拡張する必要があるのは、新しい機能を追加する必要があるインターフェイスのみです。 たとえば、arterial プロパティなどの新しい機能を Hallway インターフェイスに追加する必要がある場合は、Room から拡張される他のインターフェイスを拡張することなく、そのインターフェイスを拡張できます。

Diagram showing an extended RealEstateCore space hierarchy, containing an extended Hallway interface with an arterial property.

拡張したインターフェイスへのリレーションシップ

リレーションシップが元々ベース インターフェイスをターゲットにするようにモデル化されている場合でも、拡張インターフェイスをリレーションシップのターゲットとして使用することもできます。 たとえば、DTDL ベースの RealEstateCore オントロジでは、Apartment インターフェイスには、Room インターフェイスを対象とする include という名前の関係が含まれています (下の図を参照)。 これにより、アパートを構成する部屋のグラフを作成できます。

前のセクションの Room 階層の部分に基づいて、Apartment のデジタル ツインには Room タイプのツインを含めることができます。Hallway は Room の拡張です (したがって、Apartment には Hallway を含めることができます)。 これは、拡張された Hallway が元の関係で参照されている Hallway としてカウントされるため、Apartment に arterial プロパティを持つ拡張された Hallway を含めることができることも意味します。

Diagram showing an extended RealEstateCore space hierarchy, with an extended Hallway interface and relationships to it.

拡張した Space 階層を使用する

拡張した Space 階層を使用してデジタル ツインを作成すると、各デジタル ツインのモデルは、(元の業界オントロジではなく) 拡張した Space 階層からのものになり、インターフェイス継承を通じて、業界オントロジと拡張したインターフェイスのすべての機能が組み込まれます。

各デジタル ツインのモデルは、下の図に示すように、拡張した階層のインターフェイスになります。

Diagram showing the extended RealEstateCore space hierarchy, including the connected models Space, Room, ConferenceRoom, Office, and FocusRoom.

モデル ID (IS_OF_MODEL 演算子) を使用してデジタル ツインのクエリを実行する場合は、拡張した階層のモデル ID を使用する必要があります。 たとえば、SELECT * FROM DIGITALTWINS WHERE IS_OF_MODEL('dtmi:com:example:Office;1') のようにします。

元のオントロジに寄与する

場合によっては、業界オントロジを、そのオントロジの大部分のユーザーに広く役立つ方法で拡張することがあります。 この場合、元のオントロジにその拡張を寄与することを検討してください。 オントロジごとに寄与のプロセスは異なるため、寄与の詳細については、オントロジの GitHub リポジトリを確認してください。

新しいインターフェイスのための DTDL

業界オントロジから直接拡張した新しいインターフェイスのための DTDL は、このようになります。

{
  "@id": "dtmi:com:example:FocusRoom;1", 
  "@type": "interface", 
  "extends": "dtmi:digitaltwins:rec_3_3:building:Office;1", 
  "@context": "dtmi:dtdl:context;2" 
} 

拡張したインターフェイスの DTDL

拡張したインターフェイスの DTDL (上で説明した部分のみ) は、このようになります。

[
  {
    "@id": "dtmi:com:example:Space;1",
    "@type": "Interface",
    "extends": "dtmi:digitaltwins:rec_3_3:core:Space;1",
    "contents": [
      {
        "@type": "Property",
        "name": "drawingid",
        "schema": "string"
      }
    ],
    "@context": "dtmi:dtdl:context;2"
  },
  {
    "@id": "dtmi:com:example:Room;1",
    "@type": "Interface",
    "extends": [
      "dtmi:digitaltwins:rec_3_3:core:Room;1",
      "dtmi:com:example:Space;1"
    ],
    "@context": "dtmi:dtdl:context;2"
  },
  {
    "@id": "dtmi:com:example:ConferenceRoom;1",
    "@type": "Interface",
    "extends": [
      "dtmi:digitaltwins:rec_3_3:building:ConferenceRoom;1",
      "dtmi:com:example:Room;1"
    ],
    "contents": [
      {
        "@type": "Property",
        "name": "online",
        "schema": "boolean"
      }
    ],
    "@context": "dtmi:dtdl:context;2"
  },
  {
    "@id": "dtmi:com:example:Office;1",
    "@type": "Interface",
    "extends": [
      "dtmi:digitaltwins:rec_3_3:building:Office;1", 
      "dtmi:com:example:Room;1" 
    ],
    "@context": "dtmi:dtdl:context;2" 
  }, 
  {
    "@id": "dtmi:com:example:FocusRoom;1", 
    "@type": "Interface", 
    "extends": "dtmi:com:example:Office;1", 
    "@context": "dtmi:dtdl:context;2" 
  }
]

次のステップ

オントロジに基づいてモデルを開発するためのパスを続行する: 完全なモデル開発パス