Megosztás a következőn keresztül:


Iparági szabványnak megfelelő onlogikák átalakítása DTDL-vé az Azure Digital Twinshez

A legtöbb ontológiák szemantikai webes szabványokon alapulnak, például OWL, RDF és RDFS.

Ha egy modellt az Azure Digital Twins használatával szeretne használni, annak DTDL formátumban kell lennie. Ez a cikk általános tervezési útmutatást nyújt az RDF-alapú modellek DTDL-vé alakításához szükséges konverziós minta formájában, hogy azok az Azure Digital Twinsben is használhatók legyenek.

A cikk RDF- és OWL-konverterekhez is tartalmaz mintakonverter-kódot , amely az építőipar más sémáira is kiterjeszthető.

Bár a cikkben szereplő példák épületközpontúak, hasonló folyamatokat alkalmazhat a különböző iparágakban található szabványos ontologiákra, hogy ezeket is DTDL-vé alakítsa.

Konverziós minta

Az RDF-alapú modellek DTDL-vé való konvertálásához számos külső kódtár használható. Ezen kódtárak némelyike lehetővé teszi a modellfájl gráfba való betöltését. A gráfon végighaladva megkeresheti az RDFS- és OWL-szerkezeteket, és átalakíthatja őket DTDL-vé.

Az alábbi táblázat egy példa az RDFS- és OWL-szerkezetek DTDL-re való leképezésére.

RDFS/OWL-koncepció RDFS/OWL-szerkezet DTDL-koncepció DTDL-szerkezet
Osztályok owl:Class
IRI-utótag
rdfs:label
rdfs:comment
Interfész @type:Interface
@id
displayName
comment
Alosztályok owl:Class
IRI-utótag
rdfs:label
rdfs:comment
rdfs:subClassOf
Interfész @type:Interface
@id
displayName
comment
extends
Adattípus tulajdonságai owl:DatatypeProperty
rdfs:label vagy INode
rdfs:label
rdfs:range
Felület tulajdonságai @type:Property
name
displayName
schema
Objektum tulajdonságai owl:ObjectProperty
rdfs:label vagy INode
rdfs:range
rdfs:comment
rdfs:label
Kapcsolat type:Relationship
name
target (vagy kihagyva, ha nem rdfs:range)
comment
displayName

Az alábbi C#-kódrészlet bemutatja, hogyan töltődik be egy RDF-modellfájl egy gráfba, és hogyan konvertálódik DTDL-vé a dotNetRDF-kódtár használatával.

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);

        }
    }
}

Konverterminták

Ez a szakasz RDF- és OWL-konverterek mintakonverter-kódját tartalmazza, amely az építőipar más sémáira is kiterjeszthető.

RDF-konverteralkalmazás

Elérhető egy mintaalkalmazás, amely egy RDF-alapú modellfájlt konvertál dTDL 2-es (v2-es) verzióra. A DTDL v2-t az Azure Digital Twins támogatja, de a DTDL v2-modellek újabb DTDL v3-ra való konvertálásához is követheti ezeket az utasításokat .

A mintaalkalmazás érvényesítve lett a Brick-sémához , és kiterjeszthető az építőipar egyéb sémáira is (például a Building Topology Ontology (BOT), a Szemantikus érzékelő hálózata vagy a BuildingSmart Industry Foundation Classes (IFC)).

A minta egy RdfToDtdlConverter nevű .NET Core parancssori alkalmazás.

Ha le szeretné tölteni a kódot a gépére, válassza a kód tallózása gombot a mintalap címe alatt, amely a minta GitHub-adattárába viszi. A minta .zip RdfToDtdlConverter-main.zip nevű fájlként való letöltéséhez kattintson a Kód gombra, és töltse le a ZIP-t. Ezután kibonthatja a fájlt, és felfedezheti a kódot.

Képernyőkép a GitHub RdfToDtdlConverter adattáráról. A Kód gomb ki van jelölve, és egy párbeszédpanelt hoz létre, amelyen a ZIP letöltése gomb ki van emelve.

Ezzel a mintával megtekintheti az átalakítási mintákat a kontextusban, és építőelemként használhatja saját alkalmazásai számára a modellkonverziókat a saját igényeinek megfelelően.

OWL2DTDL konverter

A OWL2DTDL Konverter egy mintakódbázis, amely egy OWL-ontológiát DTDL-interfészdeklarációk készletére fordít le, amelyek az Azure Digital Twins szolgáltatással használhatók. Az ontológiai hálózatok esetében is működik, amelyek egy gyökér ontológiából készülnek, és deklarációkon keresztül owl:imports újrahasználják a többi ontológiát. Ez a konverter a Real Estate Core Ontology DTDL-re való fordítására szolgál, és bármilyen OWL-alapú ontológiához használható.

Ez a mintakód nem egy átfogó megoldás, amely támogatja az OWL-specifikáció teljes egészét, de ötleteket és kezdő kódot adhat, amelyeket saját ontológiai betöltési folyamatok fejlesztéséhez használhat.

Következő lépések

Folytassa a modellek fejlesztésének útját az ontológiák alapján: Teljes modellfejlesztési út.