Compartilhar via


Extensão de ontologias

Este artigo usa a ontologia RealEstateCore baseada em DTDL para prédios inteligentes como base para exemplos de extensão de ontologias com novas propriedades DTDL. No entanto, as técnicas descritas aqui são gerais e podem ser aplicadas a qualquer parte de uma ontologia baseado em DTDL com qualquer funcionalidade de DTDL compatível com os Gêmeos Digitais do Azure (propriedade, relação e componente).

As ontologias padrão do setor da Microsoft, como a ontologia RealEstateCore baseada em DTDL, são uma ótima forma de começar a criar sua solução de IoT. A ontologias do setor fornecem um conjunto avançado de interfaces base projetadas para seu domínio e para trabalhar prontamente nos serviços de Internet das Coisas do Azure, como os Gêmeos Digitais do Azure.

No entanto, é possível que sua solução possa ter necessidades específicas que não são cobertas pela ontologia do setor. Por exemplo, talvez você queira vincular seus gêmeos digital a modelos 3D armazenados em um sistema separado. Nesse caso, você pode estender uma dessas ontologias para adicionar suas próprias funcionalidades enquanto mantém todos os benefícios da ontologia original.

Hierarquia de espaço RealEstateCore

Em uma ontologia baseada em DTDL da RealEstateCore, a hierarquia de espaço é usada para definir vários tipos de espaço: salas, edifícios, zonas, e assim por diante. A hierarquia se estende de cada um desses modelos para definir vários tipos de salas, edifícios e zonas.

Uma parte da hierarquia é semelhante ao diagrama abaixo.

Diagrama mostrando parte da hierarquia de espaço RealEstateCore. Ele mostra os elementos de Space, Room, ConferenceRoom e Office.

Para obter mais informações sobre a ontologia RealEstateCore, confira Ontologia RealEstateCore com base na linguagem de definição de gêmeos digitais para prédios inteligentes no GitHub.

Como estender a hierarquia de espaço RealEstateCore

Às vezes, sua solução tem necessidades específicas que não são cobertas pela ontologia do setor. Nesse caso, estender a hierarquia permite que você continue a usar a ontologia do setor ao personalizá-lo para suas necessidades.

Neste artigo, discutiremos dois casos diferentes em que é útil estender a hierarquia da ontologia:

  • Adicionar novas interfaces para conceitos que não estão na ontologia do setor.
  • Adicionando Propriedades, Relacionamentos ou Componentes extras a interfaces existentes.

Adicionar novas interfaces para novos conceitos

Nesse caso, você deseja adicionar interfaces para conceitos necessários para sua solução, que não estão presentes na ontologia do setor. Por exemplo, se a sua solução tiver outros tipos de salas que não estão representados na ontologia RealEstateCore baseada em DTDL, você poderá adicioná-los estendendo diretamente das interfaces RealEstateCore.

O exemplo a seguir apresenta uma solução que precisa representar "salas de foco", que não estão presentes na ontologia RealEstateCore. Uma sala de foco é um pequeno espaço projetado para que as pessoas se concentrem em uma tarefa por algumas horas por vez.

Para estender a ontologia do setor com esse novo conceito, crie uma interface que se estenda das interfaces na ontologia do setor.

Depois de adicionar a interface de sala de foco, a hierarquia estendida mostra o novo tipo de sala.

Diagrama mostrando parte da hierarquia de espaço RealEstateCore, incluindo uma nova adição da sala de foco.

Adicionar outras funcionalidades a interfaces existentes

Nesse caso, você deseja adicionar mais Propriedades, Relacionamentos ou Componentes às interfaces que estão na ontologia do setor.

Nesta seção, você verá dois exemplos:

  • Se você estiver criando uma solução que exibe desenhos 3D de espaços que você já tem em um sistema existente, talvez queira associar cada gêmeo digital ao seu desenho 3D (por ID) para que, quando a solução exibir informações sobre o espaço, ela também possa recuperar o desenho 3D do sistema existente.
  • Se a sua solução precisar acompanhar o status online/offline de salas de conferência, talvez você queira acompanhar o status da sala de conferência para uso em exibições ou consultas.

Os dois exemplos podem ser implementados com novas propriedades: uma propriedade drawingId que associa o desenho 3D ao gêmeo digital e uma propriedade online que indica se a sala da conferência está online ou não.

Normalmente, você não quer mudar a ontologia do setor diretamente porque gostaria de incorporar atualizações a ela na sua solução no futuro (o que substituiria suas adições). Em vez disso, esses tipos de adições podem ser feitos na própria hierarquia de interface que se estende da ontologia RealEstateCore baseada em DTDL. Cada interface que você cria usa várias heranças de interface para estender a interface pai RealEstateCore e a interface pai da sua hierarquia de interface estendida. Essa abordagem permite que você use a ontologia do setor e suas adições.

Para estender a ontologia do setor, crie as próprias interfaces que se estendem das interfaces da ontologia do setor e adicione as novas funcionalidades às suas interfaces estendidas. Para cada interface que você deseja estender, crie uma interface. As interfaces estendidas são escritas em DTDL (confira DTDL para interfaces estendidas mais adiante neste documento).

Depois de estender a parte da hierarquia mostrada acima, a hierarquia estendida será semelhante ao diagrama abaixo. Aqui, a interface de espaço estendida adiciona a propriedade drawingId que conterá uma ID que associa o gêmeo digital ao desenho 3D. Além disso, a interface ConferenceRoom adiciona uma propriedade online que conterá o status online da sala de conferência. Por meio da herança, a interface ConferenceRoom contém todas as funcionalidades da interface RealEstateCore ConferenceRoom, bem como todas as funcionalidades da interface de espaço estendida.

Diagrama mostrando a hierarquia de espaço RealEstateCore estendida, com novas adições, conforme descrito.

Você não precisa estender todas as interfaces na ontologia do setor, apenas aquelas em que você precisa adicionar novos recursos. Por exemplo, se você precisar adicionar um novo recurso, como uma propriedade arterial à interface do corredor, você poderá estender essa interface sem estender outras interfaces que também se estendem da sala.

Diagrama mostrando uma hierarquia de espaço RealEstateCore estendida, contendo uma interface de Corredor estendida com uma propriedade arterial.

Relações com interfaces estendidas

Interfaces estendidas também podem ser usadas como o destino para relações, mesmo que a relação seja modelada originalmente para se destinar a uma interface base. Por exemplo, no ontologia RealEstateCore baseado em DTDL, a interface Apartamento contém uma relação chamada includes que tem como alvo uma interface Room (mostrada no diagrama abaixo). Isso permite que você crie um grafo de salas para criar o apartamento.

Com base na parte da hierarquia Room da seção anterior, um Apartamento gêmeo digital pode incluir gêmeos de tipo Room e o corredor é uma extensão da sala (para que um apartamento possa incluir corredores). Isso também significa que um Apartamento pode incluir um corredor estendido com a propriedade arterial, porque um corredor estendido conta como um corredor como referenciado nas relações originais.

Diagrama mostrando uma hierarquia de espaço RealEstateCore estendida, com uma interface de Corredor estendida e relações com ela.

Como usar a hierarquia de espaço estendida

Ao criar gêmeos digital usando a hierarquia de espaço estendida, cada modelo de gêmeo digital será um da hierarquia de espaço estendida (não a ontologia do setor original) e incluirá todas as funcionalidades da ontologia do setor e as interfaces estendidas, apesar da herança de interface.

Cada modelo de gêmeo digital será uma interface da hierarquia estendida, mostrada no diagrama a seguir.

Diagrama mostrando a hierarquia de espaço RealEstateCore estendida, incluindo o Space, Room, ConferenceRoom, Office e FocusRoom de modelos conectados.

Ao consultar gêmeos digital usando a ID do modelo (o operador IS_OF_MODEL), as IDs de modelo da hierarquia estendida devem ser usadas. Por exemplo, SELECT * FROM DIGITALTWINS WHERE IS_OF_MODEL('dtmi:com:example:Office;1').

Como contribuir de volta para a ontologia original

Em alguns casos, você estenderá a ontologia do setor de uma forma amplamente útil para a maioria dos usuários da ontologia. Quando isso acontecer, considere contribuir com suas extensões de volta para a ontologia original. Cada ontologia tem um processo diferente de contribuição; portanto, verifique o repositório GitHub da ontologia para obter detalhes de contribuição.

DTDL para novas interfaces

A DTDL para novas interfaces que se estendem diretamente da ontologia do setor ficaria assim.

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

DTDL para interfaces estendidas

A DTDL para as interfaces estendidas, limitada à parte discutida acima, ficaria assim.

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

Próximas etapas

Continue no caminho para o desenvolvimento de modelos com base em ontologias: Caminho de desenvolvimento de modelo completo.