Condividi tramite


Estensione delle ontologie

Questo articolo usa l'ontologia RealEstateCore basata su DTDL per edifici intelligenti come base per esempi di estensione delle onlogi con nuove proprietà DTDL. Le tecniche descritte di seguito sono tuttavia generali e possono essere applicate a qualsiasi parte di un'ontologia basata su DTDL con qualsiasi funzionalità DTDL compatibile con Gemelli digitali di Azure (Proprietà, Relazione, Componente).

Le onlogi standard del settore Microsoft, ad esempio l'ontologia RealEstateCore basata su DTDL, sono un ottimo modo per iniziare a creare la soluzione IoT. Le onlogi del settore offrono un set completo di interfacce di base progettate per il dominio e progettate per lavorare all'esterno dei servizi IoT di Azure come Gemelli digitali di Azure.

Tuttavia, è possibile che la soluzione abbia esigenze specifiche che non sono coperte dall'ontologia del settore. Ad esempio, è possibile collegare i gemelli digitali ai modelli 3D archiviati in un sistema separato. In questo caso, è possibile estendere uno di questi onlogi per aggiungere funzionalità personalizzate mantenendo al tempo stesso tutti i vantaggi dell'ontologia originale.

Gerarchia di spazi RealEstateCore

Nell'ontologia RealEstateCore basata su DTDL, la gerarchia spazio viene usata per definire vari tipi di spazi: Stanze, Edifici, Zona e così via. La gerarchia si estende da ognuno di questi modelli per definire vari tipi di camere, edifici e zone.

Una parte della gerarchia è simile al diagramma seguente.

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

Per altre informazioni sull'ontologia RealEstateCore, vedere Ontologia RealEstateCore basata sul linguaggio di definizione di Gemelli digitali per edifici intelligenti su GitHub.

Estensione della gerarchia di spazi RealEstateCore

A volte la soluzione ha esigenze specifiche che non sono coperte dall'ontologia del settore. In questo caso, l'estensione della gerarchia consente di continuare a usare l'ontologia del settore durante la personalizzazione per le proprie esigenze.

In questo articolo vengono illustrati due casi diversi in cui l'estensione della gerarchia dell'ontologia è utile:

  • Aggiunta di nuove interfacce per i concetti non nell'ontologia del settore.
  • Aggiunta di proprietà, relazioni o componenti aggiuntivi alle interfacce esistenti.

Aggiungere nuove interfacce per i nuovi concetti

In questo caso, si vogliono aggiungere interfacce per i concetti necessari per la soluzione che non sono presenti nell'ontologia del settore. Ad esempio, se la soluzione include altri tipi di sale che non sono rappresentate nell'ontologia RealEstateCore basata su DTDL, è possibile aggiungerle estendendole direttamente dalle interfacce RealEstateCore.

L'esempio seguente presenta una soluzione che deve rappresentare "sale messa a fuoco", che non sono presenti nell'ontologia RealEstateCore. Una sala messa a fuoco è un piccolo spazio progettato per le persone per concentrarsi su un compito per un paio di ore alla volta.

Per estendere l'ontologia del settore con questo nuovo concetto, creare una nuova interfaccia che si estende dalle interfacce nell'ontologia del settore.

Dopo aver aggiunto l'interfaccia della sala messa a fuoco, la gerarchia estesa mostra il nuovo tipo di stanza.

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

Aggiungere funzionalità aggiuntive alle interfacce esistenti

In questo caso, si vogliono aggiungere altre proprietà, relazioni o componenti alle interfacce presenti nell'ontologia del settore.

In questa sezione verranno visualizzati due esempi:

  • Se stai creando una soluzione che visualizza disegni 3D di spazi già presenti in un sistema esistente, potresti voler associare ogni gemello digitale al disegno 3D (in base all'ID) in modo che quando la soluzione visualizzi informazioni sullo spazio, può anche recuperare il disegno 3D dal sistema esistente.
  • Se la soluzione deve tenere traccia dello stato online/offline delle sale riunioni, è consigliabile tenere traccia dello stato della sala riunioni da usare in visualizzazione o query.

Entrambi gli esempi possono essere implementati con nuove proprietà: una drawingId proprietà che associa il disegno 3D al gemello digitale e una online proprietà che indica se la sala riunioni è online o meno.

In genere, non si vuole modificare direttamente l'ontologia del settore perché si vuole essere in grado di incorporare gli aggiornamenti nella soluzione in futuro (che sovrascrive le aggiunte). Questi tipi di addizioni possono invece essere creati nella gerarchia di interfaccia personalizzata che si estende dall'ontologia RealEstateCore basata su DTDL. Ogni interfaccia creata usa più ereditarietà dell'interfaccia per estendere l'interfaccia RealEstateCore padre e la relativa interfaccia padre dalla gerarchia dell'interfaccia estesa. Questo approccio consente di usare l'ontologia del settore e le aggiunte insieme.

Per estendere l'ontologia del settore, creare interfacce personalizzate che si estendono dalle interfacce nell'ontologia del settore e aggiungere le nuove funzionalità alle interfacce estese. Per ogni interfaccia da estendere, creare una nuova interfaccia. Le interfacce estese sono scritte in DTDL (vedere DTDL per le interfacce estese più avanti in questo documento).

Dopo aver esteso la parte della gerarchia illustrata in precedenza, la gerarchia estesa è simile al diagramma seguente. Qui l'interfaccia Space estesa aggiunge la drawingId proprietà che conterrà un ID che associa il gemello digitale al disegno 3D. Inoltre, l'interfaccia ConferenceRoom aggiunge una online proprietà che conterrà lo stato online della sala riunioni. Tramite l'ereditarietà, l'interfaccia ConferenceRoom contiene tutte le funzionalità dell'interfaccia RealEstateCore ConferenceRoom e tutte le funzionalità dell'interfaccia Space estesa.

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

Non è necessario estendere tutte le interfacce dell'ontologia del settore, ma solo quelle in cui è necessario aggiungere nuove funzionalità. Ad esempio, se è necessario aggiungere una nuova funzionalità, ad esempio una arterial proprietà all'interfaccia Di corridoio, è possibile estendere tale interfaccia senza estendere altre interfacce che si estendono anche da Room.

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

Relazioni con interfacce estese

Le interfacce estese possono essere usate anche come destinazione per le relazioni, anche se la relazione è originariamente modellata per definire come destinazione un'interfaccia di base. Ad esempio, nell'ontologia RealEstateCore basata su DTDL, l'interfaccia Apartment contiene una relazione denominata include che ha come destinazione un'interfaccia Room (illustrata nel diagramma seguente). In questo modo è possibile creare un grafico di stanze per creare l'appartamento.

In base alla parte della gerarchia room della sezione precedente, un gemello digitale apartment può includere gemelli di tipo camera e Corridoio è un'estensione di Camera (in modo che un appartamento possa includere corridoi). Ciò significa anche che un appartamento può includere un corridoio esteso con la arterial proprietà, perché un corridoio esteso conta come un corridoio come si fa riferimento nelle relazioni originali.

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

Uso della gerarchia di spazi estesi

Quando si creano gemelli digitali usando la gerarchia spaziale estesa, il modello di ogni gemello digitale sarà uno dalla gerarchia spaziale estesa (non l'ontologia del settore originale) e includerà tutte le funzionalità dell'ontologia del settore e le interfacce estese tramite l'ereditarietà dell'interfaccia.

Il modello di ogni gemello digitale sarà un'interfaccia della gerarchia estesa, illustrata nel diagramma seguente.

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

Quando si esegue una query per i gemelli digitali usando l'ID IS_OF_MODEL modello (operatore), è necessario usare gli ID modello della gerarchia estesa. Ad esempio: SELECT * FROM DIGITALTWINS WHERE IS_OF_MODEL('dtmi:com:example:Office;1').

Contribuire alla ontologia originale

In alcuni casi, si estenderà l'ontologia del settore in modo che sia ampiamente utile per la maggior parte degli utenti dell'ontologia. In questo caso, è consigliabile contribuire le estensioni all'ontologia originale. Ogni ontologia ha un processo diverso per contribuire, quindi controllare il repository GitHub dell'ontologia per informazioni dettagliate sui contributi.

DTDL per le nuove interfacce

Il DTDL per le nuove interfacce che si estendono direttamente dall'ontologia del settore avrebbe un aspetto simile al seguente.

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

DTDL per interfacce estese

Il DTDL per le interfacce estese, limitato alla parte descritta in precedenza, avrebbe un aspetto simile al seguente.

[
  {
    "@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" 
  }
]

Passaggi successivi

Continuare con il percorso per lo sviluppo di modelli in base alle onlogi: percorso di sviluppo completo del modello.