Konvertieren von Branchenstandardontologien in DTDL für Azure Digital Twins
Die meisten Ontologien basieren auf semantischen Webstandards wie OWL, RDF und RDFS.
Damit ein Modell mit Azure Digital Twins verwendet werden kann, muss es im DTDL-Format vorliegen. Dieser Artikel bietet eine allgemeine Anleitung für den Entwurf in Form eines Konvertierungsmusters. Mit diesem Muster können RDF-basierte Modelle in DTDL umgewandelt werden, damit sie mit Azure Digital Twins verwendet werden können.
Er enthält außerdem einen Beispielkonvertercode für RDF- und OWL-Konverter, die für andere Schemas in der Baubranche erweitert werden können.
Obwohl sich die Beispiele in diesem Artikel auf Gebäude konzentrieren, können Sie ähnliche Prozesse auf Standardontologien in verschiedenen Branchen anwenden, um sie ebenfalls in DTDL zu konvertieren.
Konvertierungsmuster
Zur Konvertierung von RDF-basierten Modellen in DTDL können mehrere Bibliotheken von Drittanbietern verwendet werden. Mit einigen dieser Bibliotheken können Sie die Modelldatei in ein Diagramm laden. Sie können das Diagramm durchlaufen, um nach spezifischen RDFS- und OWL-Konstrukten zu suchen und diese in DTDL umzuwandeln.
In der folgenden Tabelle sind Beispiele dafür aufgeführt, wie RDFS- und OWL-Konstrukte in DTDL zugeordnet werden können.
RDFS/OWL-Konzept | RDFS/OWL-Konstrukt | DTDL-Konzept | DTDL-Konstrukt |
---|---|---|---|
Klassen | owl:Class IRI-Suffix rdfs:label rdfs:comment |
Schnittstelle | @type:Interface @id displayName comment |
Unterklassen | owl:Class IRI-Suffix rdfs:label rdfs:comment rdfs:subClassOf |
Schnittstelle | @type:Interface @id displayName comment extends |
Datentypeigenschaften | owl:DatatypeProperty rdfs:label oder INode rdfs:label rdfs:range |
Schnittstelleneigenschaften | @type:Property name displayName schema |
Objekteigenschaften | owl:ObjectProperty rdfs:label oder INode rdfs:range rdfs:comment rdfs:label |
Beziehung | type:Relationship name target (oder weggelassen, wenn ohne rdfs:range )comment displayName |
Im folgenden C#-Codeausschnitt wird eine RDF-Modelldatei unter Verwendung der dotNetRDF-Bibliothek in ein Diagramm geladen und in DTDL konvertiert.
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);
}
}
}
Konverterbeispiele
Dieser Abschnitt enthält Beispielkonvertercode für RDF- und OWL-Konverter, die für andere Schemas in der Baubranche erweitert werden können.
RDF-Konverteranwendung
Es steht eine Beispielanwendung zur Verfügung, mit der eine RDF-basierte Modelldatei in DTDL-Version 2 (V2) konvertiert werden kann. DTDL V2 wird von Azure Digital Twins unterstützt, aber Sie können auch diesen Anweisungen folgen, um DTDL V2-Modelle in die neuere DTDL V3 zu konvertieren.
Die Beispielanwendung wurde für das Brick-Schema überprüft und kann für andere Schemas in der Baubranche erweitert werden (z. B. Building Topology Ontology (BOT), Semantic Sensor Network oder buildingSmart Industry Foundation Classes (IFC)).
Das Beispiel ist eine .NET Core-Befehlszeilenanwendung namens RdfToDtdlConverter.
Um den Code auf Ihren Computer herunterzuladen, wählen Sie auf der Beispielseite unterhalb des Titels die Schaltfläche Code durchsuchen aus. Sie gelangen zum GitHub-Repository für das Beispiel. Klicken Sie auf die Schaltfläche Code und dann auf ZIP herunterladen, um das Beispiel als ZIP-Datei namens RdfToDtdlConverter-main.zip herunterzuladen. Anschließend können Sie die Datei entzippen und den Code untersuchen.
Sie können sich mit dieser Beispielanwendung die Konvertierungsmuster im Kontext ansehen und als Baustein für Ihre eigenen Anwendungen verwenden. Außerdem können Sie entsprechend Ihren spezifischen Anforderungen Modellkonvertierungen durchführen.
OWL2DTDL-Konverter
Beim OWL2DTDL-Konverter handelt es sich um eine Beispielcodebasis, die eine OWL-Ontologie in mehrere DTDL-Schnittstellendeklarationen übersetzt. Diese können mit Azure Digital Twins verwendet werden. Der Konverter kann auch für Ontologienetzwerke verwendet werden, die aus einer Stammontologie bestehen, für die andere Ontologien über owl:imports
-Deklarationen wiederverwendet werden. Dieser Konverter wurde verwendet, um die RealEstateCore-Ontologie in DTDL zu übersetzen. Er kann für jede OWL-basierte Ontologie wiederverwendet werden.
Dieser Beispielcode ist keine umfassende Lösung, die die gesamte OWL-Spezifikation unterstützt, aber sie kann Ihnen Ideen geben und als Ausgangspunkt für Code dienen, den Sie bei der Entwicklung Ihrer eigenen Ontologie-Erfassungspipelines verwenden können.
Nächste Schritte
Fahren Sie mit dem Pfad für das Entwickeln von Modellen basierend auf Ontologien fort: Entwicklungspfad für ein vollständiges Modell.