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:range atlanı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.
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.