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.

Snímek obrazovky s úložištěm RdfToDtdlConverter na GitHubu Je vybráno tlačítko Kód, které vytvoří dialogové okno se zvýrazněným tlačítkem Stáhnout ZIP.

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.