Aracılığıyla paylaş


Azure Digital Twins için sektör standardı ontolojileri DTDL'ye dönüştürme

Çoğu ontoloji, OWL, RDF ve RDFS gibi anlamsal web standartlarını temel alır.

Azure Digital Twins ile model kullanmak için DTDL biçiminde olması gerekir. Bu makalede, RDF tabanlı modelleriN Azure Digital Twins ile kullanılabilmesi için DTDL'ye dönüştürmeye yönelik bir dönüştürme düzeni biçiminde genel tasarım kılavuzu açıklanmaktadır.

Makale ayrıca RDF ve OWL dönüştürücüleri için yapı sektöründeki diğer şemalar için genişletilebilen örnek dönüştürücü kodunu içerir.

Bu makaledeki örnekler yapı odaklı olsa da, bunları DTDL'ye dönüştürmek için farklı sektörlerdeki standart ontolojilere benzer işlemler uygulayabilirsiniz.

Dönüştürme düzeni

RDF tabanlı modeller DTDL'ye dönüştürülürken kullanılabilecek birkaç üçüncü taraf kitaplığı vardır. Bu kitaplıklardan bazıları model dosyanızı bir grafiğe yüklemenize olanak sağlar. Belirli RDFS ve OWL yapılarını arayarak grafikte döngü yapabilir ve bunları DTDL'ye dönüştürebilirsiniz.

Aşağıdaki tabloda RDFS ve OWL yapılarının DTDL ile nasıl eşlenebileceğine ilişkin bir örnek verilmiştir.

RDFS/OWL kavramı RDFS/OWL yapısı DTDL kavramı DTDL yapısı
Sınıflar owl:Class
IRI son eki
rdfs:label
rdfs:comment
Arabirim @type:Interface
@id
displayName
comment
Alt owl:Class
IRI son eki
rdfs:label
rdfs:comment
rdfs:subClassOf
Arabirim @type:Interface
@id
displayName
comment
extends
Veri Türü Özellikleri owl:DatatypeProperty
rdfs:label veya INode
rdfs:label
rdfs:range
Arabirim Özellikleri @type:Property
name
displayName
schema
Nesne Özellikleri owl:ObjectProperty
rdfs:label veya INode
rdfs:range
rdfs:comment
rdfs:label
İlişki type:Relationship
name
target (veya yoksa rdfs:rangeatlanır)
comment
displayName

Aşağıdaki C# kod parçacığı, dotNetRDF kitaplığı kullanılarak rdf model dosyasının bir grafiğe nasıl yüklendiğini ve DTDL'ye nasıl dönüştürüldüğünü gösterir.

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

        }
    }
}

Dönüştürücü örnekleri

Bu bölüm, yapı sektöründeki diğer şemalar için genişletilebilen RDF ve OWL dönüştürücüleri için örnek dönüştürücü kodu içerir.

RDF dönüştürücü uygulaması

RDF tabanlı bir model dosyasını DTDL Sürüm 2'ye (v2) dönüştüren örnek bir uygulama mevcuttur. DTDL v2, Azure Digital Twins tarafından desteklenir, ancak daha sonra bu yönergeleri izleyerek DTDL v2 modellerini daha yeni DTDL v3'e dönüştürebilirsiniz.

Örnek uygulama Brick şeması için doğrulanmıştır ve yapı sektöründeki diğer şemalar (Bina Topolojisi Ontolojisi (BOT), Anlam Algılayıcı Ağı veya binaSmart Industry Foundation Sınıfları (IFC) gibi) için genişletilebilir.

Örnek, RdfToDtdlConverter adlı bir .NET Core komut satırı uygulamasıdır.

Kodu makinenize indirmek için örnek sayfasındaki başlığın altındaki Koda gözat düğmesini seçin. Bu düğme sizi örneğin GitHub deposuna götürür. Örneği RdfToDtdlConverter-main.zip adlı .zip dosyası olarak indirmek için Kod düğmesini ve ZIP İndir'i seçin. Ardından dosyanın sıkıştırmasını açabilir ve kodu keşfedebilirsiniz.

GitHub'da RdfToDtdlConverter deposunun ekran görüntüsü. Kod düğmesi seçilidir ve Zip İndir düğmesinin vurgulandığı bir iletişim kutusu oluşturulur.

Bu örneği kullanarak bağlam içindeki dönüştürme desenlerini görebilir ve kendi özel gereksinimlerinize göre model dönüştürmeleri yapan kendi uygulamalarınız için bir yapı taşı oluşturabilirsiniz.

OWL2DTDL dönüştürücü

OWL2DTDL Dönüştürücüsü, bir OWL ontolojisini Azure Digital Twins hizmetiyle kullanılabilen bir DTDL arabirim bildirimleri kümesine çeviren örnek bir kod tabanıdır. Ayrıca, bildirimler aracılığıyla owl:imports diğer ontolojileri yeniden kullanarak bir kök ontolojiden oluşan ontoloji ağları için de çalışır. Bu dönüştürücü, Real Estate Core Ontology'yi DTDL'ye çevirmek için kullanılmıştır ve herhangi bir OWL tabanlı ontoloji için kullanılabilir.

Bu örnek kod, OWL belirtiminin tamamını destekleyen kapsamlı bir çözüm değildir, ancak size kendi ontoloji alımı işlem hatlarınızı geliştirirken kullanabileceğiniz fikirler ve başlangıç kodu verebilir.

Sonraki adımlar

Ontolojileri temel alan model geliştirme yolunda devam edin: Tam model geliştirme yolu.