Převod standardních ontologií na DTDL pro Azure Digital Twins
Většina ontologií je založena na sémantických webových standardech, jako jsou OWL, RDF a RDFS.
Pokud chcete použít model se službou Azure Digital Twins, musí být ve formátu DTDL. Tento článek popisuje obecné pokyny k návrhu ve formě modelu převodu pro převod modelů založených na RDF na DTDL, aby je bylo možné použít se službou Azure Digital Twins.
Článek obsahuje také vzorový kód převaděče pro převaděče RDF a OWL, které lze rozšířit pro další schémata v stavebním průmyslu.
I když jsou příklady v tomto článku zaměřené na sestavení, můžete podobné procesy použít i u standardních ontologií v různých odvětvích, abyste je také převedli na DTDL.
Vzor převodu
Při převodu modelů založených na RDF na DTDL je možné použít několik knihoven třetích stran. Některé z těchto knihoven umožňují načíst soubor modelu do grafu. Pomocí grafu můžete procházet konkrétní konstrukce RDFS a OWL a převést je na DTDL.
Následující tabulka je příkladem toho, jak lze namapovat konstrukty RDFS a OWL na DTDL.
Koncept RDFS/OWL | Konstrukce RDFS/OWL | Koncept DTDL | Konstruktor DTDL |
---|---|---|---|
Třídy | owl:Class Přípona IRI rdfs:label rdfs:comment |
Rozhraní | @type:Interface @id displayName comment |
Podtříd | owl:Class Přípona IRI rdfs:label rdfs:comment rdfs:subClassOf |
Rozhraní | @type:Interface @id displayName comment extends |
Vlastnosti datového typu | owl:DatatypeProperty rdfs:label nebo INode rdfs:label rdfs:range |
Vlastnosti rozhraní | @type:Property name displayName schema |
Vlastnosti objektu | owl:ObjectProperty rdfs:label nebo INode rdfs:range rdfs:comment rdfs:label |
Vztah | type:Relationship name target (nebo vynecháno, pokud ne rdfs:range )comment displayName |
Následující fragment kódu jazyka C# ukazuje, jak se soubor modelu RDF načte do grafu a převede se na DTDL pomocí knihovny 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);
}
}
}
Ukázky převaděčů
Tato část obsahuje vzorový kód převaděče pro převaděče RDF a OWL, které lze rozšířit pro další schémata v stavebním průmyslu.
Aplikace převaděče RDF
K dispozici je ukázková aplikace, která převádí soubor modelu založený na RDF na DTDL verze 2 (v2). Azure Digital Twins podporuje DTDL v2, ale podle těchto pokynů můžete převést modely DTDL v2 na novější DTDL v3.
Ukázková aplikace byla ověřena pro schéma Brick a lze ji rozšířit pro další schémata v odvětví budov (například Building Topology Ontology (BOT), Semantic Sensor Network nebo buildingSmart Industry Foundation Classes (IFC)).
Ukázka je aplikace příkazového řádku .NET Core s názvem RdfToDtdlConverter.
Pokud chcete kód stáhnout do počítače, vyberte tlačítko Procházet kód pod nadpisem na ukázkové stránce, které vás převezmou do úložiště GitHub pro ukázku. Vyberte tlačítko Kód a stáhněte soubor ZIP a stáhněte si ukázku jako soubor .zip s názvem RdfToDtdlConverter-main.zip. Pak můžete soubor rozbalit a prozkoumat kód.
Pomocí této ukázky můžete zobrazit vzory převodu v kontextu a mít jako stavební blok pro vlastní aplikace, které provádějí převody modelů podle vašich vlastních potřeb.
Převaděč OWL2DTDL
Převaděč OWL2DTDL je základ vzorového kódu, který přeloží ontologii OWL na sadu deklarací rozhraní DTDL, které lze použít se službou Azure Digital Twins. Funguje také pro sítě ontologie, tvořené jednou kořenovou ontologií, která prostřednictvím deklarací znovu používá jiné ontologie owl:imports
. Tento převaděč se použil k překladu ontologie Jádra nemovitostí do DTDL a lze jej použít pro libovolnou ontologii založenou na OWL.
Tento ukázkový kód není komplexním řešením, které podporuje celou specifikaci OWL, ale může vám poskytnout nápady a počáteční kód, který můžete použít při vývoji vlastních kanálů pro příjem dat ontologie.
Další kroky
Pokračujte na cestě pro vývoj modelů založených na ontologiích: Úplná cesta vývoje modelu.