Teilen über


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, der für andere Schemas in der Gebäudeindustrie erweitert werden kann.

RDF-Konverteranwendung

Es ist eine Beispielanwendung verfügbar, die eine RDF-basierte Modelldatei in DTDL Version 2 (v2) konvertiert. DTDL v2 wird von Azure Digital Twins unterstützt, Aber Sie können diese Anweisungen auch befolgen, um DTDL v2-Modelle in den neueren DTDL v3 zu konvertieren.

Die Beispielanwendung wurde für das Brick-Schema validiert und kann für andere Schemas in der Gebäudeindustrie 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.

Screenshot of the RdfToDtdlConverter repo on GitHub. The Code button is selected, producing a dialog box where the Download ZIP button is highlighted.

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

Der OWL2DTDL Converter ist eine Beispielcodebasis, die eine OWL-Ontologie in eine Reihe von DTDL-Schnittstellendeklarationen übersetzt, die mit dem Azure Digital Twins-Dienst verwendet werden können. 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 Code starten, den Sie bei der Entwicklung Ihrer eigenen Ontologie-Aufnahmepipelines verwenden können.

Nächste Schritte

Fahren Sie mit dem Weg zur Entwicklung von Modellen auf Der Grundlage von Ontologien fort: Vollständiger Modellentwicklungspfad.