Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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:ClassSufiks IRI rdfs:labelrdfs:comment |
Interfejs | @type:Interface@iddisplayNamecomment |
| Podklasy | owl:ClassSufiks IRI rdfs:labelrdfs:commentrdfs:subClassOf |
Interfejs | @type:Interface@iddisplayNamecommentextends |
| Właściwości typu danych | owl:DatatypePropertyrdfs:label lub INoderdfs:labelrdfs:range |
Właściwości interfejsu | @type:PropertynamedisplayNameschema |
| Właściwości obiektu | owl:ObjectPropertyrdfs:label lub INoderdfs:rangerdfs:commentrdfs:label |
Relacja | type:Relationshipnametarget (lub pominięty, jeśli nie rdfs:range)commentdisplayName |
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 następnie możesz wykonać te instrukcje , 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 (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.