Konwertowanie standardowych nalogów branżowych na język DTDL dla usługi Azure Digital Twins
Większość dzienników jest oparta na semantycznych standardach sieci Web, takich jak OWL, RDF i RDFS.
Aby używać modelu z usługą Azure Digital Twins, musi być w formacie DTDL. W tym artykule opisano ogólne wskazówki dotyczące projektowania w postaci wzorca konwersji na konwertowanie modeli opartych na usłudze RDF na język DTDL, aby można było ich używać z usługą Azure Digital Twins.
Artykuł zawiera również przykładowy kod konwertera dla konwerterów RDF i OWL, które można rozszerzyć dla innych schematów w branży budowlanej.
Mimo że przykłady w tym artykule koncentrują się na tworzeniu, można zastosować podobne procesy do standardowych nalogów w różnych branżach, aby przekonwertować je również na DTDL.
Wzorzec konwersji
Istnieje kilka bibliotek innych firm, których można używać podczas konwertowania modeli opartych na usłudze RDF na język DTDL. Niektóre z tych bibliotek umożliwiają załadowanie pliku modelu do grafu. Możesz wykonać pętlę na grafie, wyszukując konkretne konstrukcje RDFS i OWL, i przekonwertować je na dtDL.
Poniższa tabela zawiera przykład sposobu mapowania konstrukcji RDFS i OWL na język DTDL.
Koncepcja RDFS/OWL | Konstrukcja RDFS/OWL | Koncepcja języka DTDL | Konstrukcja DTDL |
---|---|---|---|
Klasy | owl:Class Sufiks IRI rdfs:label rdfs:comment |
Interfejs | @type:Interface @id displayName comment |
Podklasy | owl:Class Sufiks IRI rdfs:label rdfs:comment rdfs:subClassOf |
Interfejs | @type:Interface @id displayName comment extends |
Właściwości typu danych | owl:DatatypeProperty rdfs:label lub INode rdfs:label rdfs:range |
Właściwości interfejsu | @type:Property name displayName schema |
Właściwości obiektu | owl:ObjectProperty rdfs:label lub INode rdfs:range rdfs:comment rdfs:label |
Relacja | type:Relationship name target (lub pominięty, jeśli nie rdfs:range )comment displayName |
Poniższy fragment kodu w języku C# pokazuje, jak plik modelu RDF jest ładowany do grafu i konwertowany na język DTDL przy użyciu biblioteki 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);
}
}
}
Przykłady konwerterów
Ta sekcja zawiera przykładowy kod konwertera dla konwerterów RDF i OWL, które można rozszerzyć dla innych schematów w branży budowlanej.
Aplikacja konwertera RDF
Dostępna jest przykładowa aplikacja, która konwertuje plik modelu oparty na funkcji RDF na wersję 2 (wersja 2). Język DTDL w wersji 2 jest obsługiwany przez usługę Azure Digital Twins, ale możesz również postępować zgodnie z tymi instrukcjami , aby przekonwertować modele DTDL v2 na nowszy kod DTDL w wersji 3.
Przykładowa aplikacja została zweryfikowana dla schematu Brick i może zostać rozszerzona dla innych schematów w branży budowlanej (np . Building Topology Ontology Ontology (BOT), Semantic Sensor Network lub buildingSmart Industry Foundation Classes (IFC)).
Przykład to aplikacja wiersza polecenia platformy .NET Core o nazwie RdfToDtdlConverter.
Aby pobrać kod na maszynę, wybierz przycisk Przeglądaj kod poniżej tytułu na przykładowej stronie, co spowoduje przejście do repozytorium GitHub dla przykładu. Wybierz przycisk Kod i pobierz plik ZIP, aby pobrać przykład jako plik .zip o nazwie RdfToDtdlConverter-main.zip. Następnie możesz rozpakuć plik i eksplorować kod.
Możesz użyć tego przykładu, aby zobaczyć wzorce konwersji w kontekście i mieć jako blok konstrukcyjny dla własnych aplikacji wykonujących konwersje modeli zgodnie z własnymi potrzebami.
Konwerter OWL2DTDL
Konwerter OWL2DTDL to przykładowa baza kodu, która tłumaczy ontologię OWL na zestaw deklaracji interfejsu DTDL, który może być używany z usługą Azure Digital Twins. Działa również w przypadku sieci ontologii wykonanych z jednej głównej ontologii, która ponownie korzysta z innych nalogów za pomocą owl:imports
deklaracji. Ten konwerter został użyty do tłumaczenia ontologii Core Nieruchomości na DTDL i może służyć do dowolnej ontologii opartej na protokole OWL.
Ten przykładowy kod nie jest kompleksowym rozwiązaniem, które obsługuje całą specyfikację OWL, ale może dać ci pomysły i kod początkowy, którego można użyć podczas tworzenia własnych potoków pozyskiwania ontologii.
Następne kroki
Kontynuuj pracę na ścieżce tworzenia modeli na podstawie dzienników: pełna ścieżka programowania modelu.