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 baseada em DTDL com qualquer recurso DTDL compatível com Gêmeos Digitais do Azure (Propriedade, Relacionamento, Componente).
As ontologias padrão do setor da Microsoft, como a ontologia RealEstateCore baseada em DTDL, são uma ótima maneira de começar a criar sua solução de IoT. As ontologias do setor fornecem um conjunto avançado de interfaces básicas projetadas para seu domínio e projetadas para funcionar imediatamente nos serviços de IoT 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 capacidades, mantendo 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.
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.
Adicionar outras funcionalidades a interfaces existentes
Nesse caso, você deseja adicionar mais propriedades, relacionamentos ou componentes a 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.
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.
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.
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.
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. Nesse caso, você deve considerar 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 baseados em ontologias: Caminho completo de desenvolvimento de modelos.