Converter ontologias padrão do setor em DTDL para Gêmeos Digitais do Azure
A maioria das ontologias são baseadas em padrões semânticos da web, como OWL, RDF e RDFS.
Para usar um modelo com o Azure Digital Twins, ele deve estar no formato DTDL. Este artigo descreve orientações gerais de design na forma de um padrão de conversão para converter modelos baseados em RDF em DTDL para que possam ser usados com os Gêmeos Digitais do Azure.
O artigo também contém código de conversor de exemplo para conversores RDF e OWL, que pode ser estendido para outros esquemas na indústria da construção.
Embora os exemplos neste artigo sejam focados na construção, você pode aplicar processos semelhantes a ontologias padrão em diferentes setores para convertê-las em DTDL também.
Padrão de conversão
Existem várias bibliotecas de terceiros que podem ser usadas ao converter modelos baseados em RDF para DTDL. Algumas dessas bibliotecas permitem que você carregue seu arquivo de modelo em um gráfico. Você pode percorrer o gráfico procurando construções RDFS e OWL específicas e convertê-las em DTDL.
A tabela a seguir é um exemplo de como as construções RDFS e OWL podem ser mapeadas para DTDL.
Conceito RDFS/OWL | Construção RDFS/OWL | Conceito DTDL | Construção DTDL |
---|---|---|---|
Classes | owl:Class Sufixo IRI rdfs:label rdfs:comment |
Interface | @type:Interface @id displayName comment |
Subclasses | owl:Class Sufixo IRI rdfs:label rdfs:comment rdfs:subClassOf |
Interface | @type:Interface @id displayName comment extends |
Propriedades de tipo de dados | owl:DatatypeProperty rdfs:label ou INode rdfs:label rdfs:range |
Propriedades da interface | @type:Property name displayName schema |
Propriedades do objeto | owl:ObjectProperty rdfs:label ou INode rdfs:range rdfs:comment rdfs:label |
Relação | type:Relationship name target (ou omitido, se não rdfs:range )comment displayName |
O trecho de código C# a seguir mostra como um arquivo de modelo RDF é carregado em um gráfico e convertido em DTDL, usando a biblioteca dotNetRDF .
using VDS.RDF.Ontology;
using VDS.RDF.Parsing;
using System;
using System.Collections.Generic;
using Newtonsoft.Json;
namespace DigitalTwins_Samples
{
public class DigitalTwinsConvertRDFSample
{
public void Run()
{
Console.WriteLine("Reading file...");
FileLoader.Load(_ontologyGraph, rdfFile.FullName);
// Start looping through for each owl:Class
foreach (OntologyClass owlClass in _ontologyGraph.OwlClasses)
{
// Generate a DTMI for the owl:Class
string Id = GenerateDTMI(owlClass);
if (!String.IsNullOrEmpty(Id))
{
Console.WriteLine($"{owlClass.ToString()} -> {Id}");
// Create Interface
var dtdlInterface = new DtdlInterface
{
Id = Id,
Type = "Interface",
DisplayName = GetInterfaceDisplayName(owlClass),
Comment = GetInterfaceComment(owlClass),
Contents = new List<DtdlContents>(),
};
// An OWL graph can have parent/child classes.
// So to understand if an OWL class is a base class or a child class,
// look for a superclass on any given OWL class.
// If found, convert these to parent + child Interfaces using DTDL extends.
IEnumerable<OntologyClass> foundSuperClasses = owlClass.DirectSuperClasses;
//...
}
// Add interface to the list of interfaces
_interfaceList.Add(dtdlInterface);
}
// Serialize to JSON
var json = JsonConvert.SerializeObject(_interfaceList);
}
}
}
Amostras do conversor
Esta seção contém código de conversor de exemplo para conversores RDF e OWL, que pode ser estendido para outros esquemas na indústria da construção.
Aplicação conversora RDF
Há um aplicativo de exemplo disponível que converte um arquivo de modelo baseado em RDF para DTDL Versão 2 (v2). A DTDL v2 é suportada pelos Gêmeos Digitais do Azure, mas você também pode seguir estas instruções para converter modelos DTDL v2 para a DTDL v3 mais recente.
O aplicativo de exemplo foi validado para o esquema Brick e pode ser estendido para outros esquemas no setor de construção (como Building Topology Ontology (BOT), Semantic Sensor Network ou buildingSmart Industry Foundation Classes (IFC)).
O exemplo é um aplicativo de linha de comando .NET Core chamado RdfToDtdlConverter.
Para baixar o código para sua máquina, selecione o botão Procurar código abaixo do título na página de exemplo, que o levará ao repositório GitHub para o exemplo. Selecione o botão Código e Baixar ZIP para baixar o exemplo como um arquivo .zip chamado RdfToDtdlConverter-main.zip. Você pode então descompactar o arquivo e explorar o código.
Você pode usar este exemplo para ver os padrões de conversão no contexto e ter como um bloco de construção para seus próprios aplicativos fazendo conversões de modelo de acordo com suas próprias necessidades específicas.
OWL2DTDL conversor
O conversor de OWL2DTDL é uma base de código de exemplo que traduz uma ontologia OWL em um conjunto de declarações de interface DTDL, que podem ser usadas com o serviço Gêmeos Digitais do Azure. Também funciona para redes de ontologia, feitas de uma ontologia raiz reutilizando outras ontologias através owl:imports
de declarações. Este conversor foi usado para traduzir o Real Estate Core Ontology para DTDL e pode ser usado para qualquer ontologia baseada em OWL.
Este código de exemplo não é uma solução abrangente que suporta a totalidade da especificação OWL, mas pode fornecer ideias e código inicial que você pode usar no desenvolvimento de seus próprios pipelines de ingestão de ontologia.
Próximos passos
Continue no caminho para o desenvolvimento de modelos baseados em ontologias: Caminho completo de desenvolvimento de modelos.