Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die meisten Ontologien basieren auf semantischen Webstandards wie OWL, RDF und RDFS.
Um ein Modell mit Azure Digital Twins zu verwenden, muss man es in das DTDL-Format konvertieren. Dieser Artikel beschreibt allgemeine Designanleitungen in Form eines Umwandlungsmusters zur Umwandlung von RDF-basierten Modellen in DTDL, sodass Sie sie mit Azure Digital Twins verwenden 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:ClassIRI-Suffix rdfs:labelrdfs:comment |
Schnittstelle | @type:Interface@iddisplayNamecomment |
| Unterklassen | owl:ClassIRI-Suffix rdfs:labelrdfs:commentrdfs:subClassOf |
Schnittstelle | @type:Interface@iddisplayNamecommentextends |
| Datentypeigenschaften | owl:DatatypePropertyrdfs:label oder INoderdfs:labelrdfs:range |
Schnittstelleneigenschaften | @type:PropertynamedisplayNameschema |
| Objekteigenschaften | owl:ObjectPropertyrdfs:label oder INoderdfs:rangerdfs:commentrdfs:label |
Beziehung | type:Relationshipnametarget (oder weggelassen, falls kein rdfs:range vorhanden ist)commentdisplayName |
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);
}
}
}
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.