Industriestandaard ontologieën converteren naar DTDL voor Azure Digital Twins
De meeste ontologieën zijn gebaseerd op semantische webstandaarden zoals OWL, RDF en RDFS.
Als u een model wilt gebruiken met Azure Digital Twins, moet dit de DTDL-indeling hebben. In dit artikel worden algemene ontwerprichtlijnen beschreven in de vorm van een conversiepatroon voor het converteren van RDF-modellen naar DTDL, zodat ze kunnen worden gebruikt met Azure Digital Twins.
Het artikel bevat ook voorbeeldconversiecode voor RDF- en OWL-conversieprogramma's, die kunnen worden uitgebreid voor andere schema's in de bouwindustrie.
Hoewel de voorbeelden in dit artikel gericht zijn op het bouwen, kunt u vergelijkbare processen toepassen op standaard ontologieën in verschillende branches om ze ook te converteren naar DTDL.
Conversiepatroon
Er zijn verschillende bibliotheken van derden die kunnen worden gebruikt bij het converteren van RDF-modellen naar DTDL. Met sommige van deze bibliotheken kunt u uw modelbestand in een grafiek laden. U kunt de grafiek doorlopen die zoekt naar specifieke RDFS- en OWL-constructies en deze converteren naar DTDL.
De volgende tabel is een voorbeeld van hoe RDFS- en OWL-constructies kunnen worden toegewezen aan DTDL.
RDFS/UIL concept | RDFS/OWL-constructie | DTDL-concept | DTDL-constructie |
---|---|---|---|
Klassen | owl:Class Achtervoegsel IRI rdfs:label rdfs:comment |
Interface | @type:Interface @id displayName comment |
Subklassen | owl:Class Achtervoegsel IRI rdfs:label rdfs:comment rdfs:subClassOf |
Interface | @type:Interface @id displayName comment extends |
Eigenschappen van gegevenstype | owl:DatatypeProperty rdfs:label of INode rdfs:label rdfs:range |
Interface-eigenschappen | @type:Property name displayName schema |
Objecteigenschappen | owl:ObjectProperty rdfs:label of INode rdfs:range rdfs:comment rdfs:label |
Relatie | type:Relationship name target (of weggelaten indien nee rdfs:range )comment displayName |
In het volgende C#-codefragment ziet u hoe een RDF-modelbestand wordt geladen in een grafiek en wordt geconverteerd naar DTDL met behulp van de dotNetRDF-bibliotheek .
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);
}
}
}
Voorbeelden van conversieprogramma's
Deze sectie bevat voorbeeldconversiecode voor RDF- en OWL-conversieprogramma's, die kunnen worden uitgebreid voor andere schema's in de bouwindustrie.
RDF-conversietoepassing
Er is een voorbeeldtoepassing beschikbaar waarmee een RDF-modelbestand wordt geconverteerd naar DTDL versie 2 (v2). DTDL v2 wordt ondersteund door Azure Digital Twins, maar u kunt deze instructies ook volgen om DTDL v2-modellen te converteren naar de nieuwere DTDL v3.
De voorbeeldtoepassing is gevalideerd voor het Brick-schema en kan worden uitgebreid voor andere schema's in de bouwindustrie (zoals Building Topology Ontology (BOT), Semantic Sensor Network of buildingSmart Industry Foundation Classes (IFC)).
Het voorbeeld is een .NET Core-opdrachtregeltoepassing met de naam RdfToDtdlConverter.
Als u de code naar uw computer wilt downloaden, selecteert u de knop Code bladeren onder de titel op de voorbeeldpagina. Hiermee gaat u naar de GitHub-opslagplaats voor het voorbeeld. Selecteer de knop Code en DOWNLOAD ZIP om het voorbeeld te downloaden als een .zip-bestand met de naam RdfToDtdlConverter-main.zip. Vervolgens kunt u het bestand uitpakken en de code verkennen.
U kunt dit voorbeeld gebruiken om de conversiepatronen in context te bekijken en als bouwsteen te hebben voor uw eigen toepassingen die modelconversies uitvoeren op basis van uw eigen specifieke behoeften.
conversieprogramma voor OWL2DTDL
Het OWL2DTDL Converter is een voorbeeldcodebasis die een OWL-ontologie vertaalt in een set DTDL-interfacedeclaraties, die kunnen worden gebruikt met de Azure Digital Twins-service. Het werkt ook voor ontologienetwerken, gemaakt van één hoofd ontologie die andere ontologieën hergebruikt via owl:imports
declaraties. Dit conversieprogramma werd gebruikt om de Real Estate Core Ontology te vertalen naar DTDL en kan worden gebruikt voor elke OP UIL gebaseerde ontologie.
Deze voorbeeldcode is geen uitgebreide oplossing die ondersteuning biedt voor de gehele UIL-specificatie, maar het kan u ideeën en begincode geven die u kunt gebruiken bij het ontwikkelen van uw eigen ontologieopnamepijplijnen.
Volgende stappen
Ga door met het pad voor het ontwikkelen van modellen op basis van ontologieën: Volledig pad voor modelontwikkeling.