Mengonversi ontologi standar industri ke DTDL untuk Azure Digital Twins

Sebagian besar ontologi didasarkan pada standar web semantik seperti OWL, RDF, dan RDFS.

Untuk menggunakan model dengan Azure Digital Twins, model harus dalam format DTDL. Artikel ini menjelaskan panduan desain umum dalam bentuk pola konversi untuk mengonversi model berbasis RDF ke DTDL sehingga dapat digunakan dengan Azure Digital Twins.

Artikel ini juga berisi sampel kode konverter untuk konverter RDF dan OWL, yang dapat diperluas untuk skema lain dalam industri bangunan.

Meskipun contoh dalam artikel ini berfokus pada bangunan, Anda dapat menerapkan proses serupa ke ontologi standar di berbagai industri untuk mengonversinya ke DTDL juga.

Pola konversi

Ada beberapa pustaka pihak ketiga yang dapat digunakan saat mengonversi model berbasis RDF ke DTDL. Beberapa pustaka ini memungkinkan Anda memuat file model ke dalam grafik. Anda dapat mengulang grafik yang mencari konstruksi RDFS dan OWL tertentu dan mengonversinya ke DTDL.

Tabel berikut adalah contoh bagaimana konstruksi RDFS dan OWL dapat dipetakan ke DTDL.

Konsep RDFS/OWL Konstruksi RDFS/OWL Konsep DTDL Konstruksi DTDL
Kelas owl:Class
Akhiran IRI
rdfs:label
rdfs:comment
Antarmuka @type:Interface
@id
displayName
comment
Subkelas owl:Class
Akhiran IRI
rdfs:label
rdfs:comment
rdfs:subClassOf
Antarmuka @type:Interface
@id
displayName
comment
extends
Properti Jenis Data owl:DatatypeProperty
rdfs:label atau INode
rdfs:label
rdfs:range
Properti Antarmuka @type:Property
name
displayName
schema
Properti Obyek owl:ObjectProperty
rdfs:label atau INode
rdfs:range
rdfs:comment
rdfs:label
Hubungan type:Relationship
name
target (atau dihilangkan jika tidak ada rdfs:range)
comment
displayName

Cuplikan kode C# berikut menunjukkan bagaimana file model RDF dimuat ke dalam grafik dan dikonversi ke DTDL, menggunakan pustaka 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);

        }
    }
}

Sampel konverter

Bagian ini berisi contoh kode konverter untuk konverter RDF dan OWL, yang dapat diperluas untuk skema lain di industri bangunan.

Aplikasi konverter RDF

Ada aplikasi sampel yang tersedia yang mengonversi file model berbasis RDF ke DTDL Versi 2 (v2). DTDL v2 didukung oleh Azure Digital Twins, tetapi Anda juga dapat mengikuti instruksi ini untuk mengonversi model DTDL v2 ke DTDL v3 yang lebih baru.

Aplikasi sampel telah divalidasi untuk skema Bata, dan dapat diperluas untuk skema lain dalam industri bangunan (seperti Ontologi Topologi Bangunan (BOT), Jaringan Sensor Semantik, atau bangunan Kelas Yayasan Industri (IFC)).

Sampel adalah aplikasi baris perintah .NET Core yang disebut RdfToDtdlConverter.

Untuk mengunduh kode ke mesin Anda, pilih tombol Telusuri kode di bawah judul pada halaman sampel, yang akan membawa Anda ke repo GitHub untuk sampel. Pilih tombol Kode dan Unduh ZIP untuk mengunduh sampel sebagai file .zip yang disebut RdfToDtdlConverter-main.zip. Anda kemudian dapat membuka zip file dan menjelajahi kode.

Screenshot of the RdfToDtdlConverter repo on GitHub. The Code button is selected, producing a dialog box where the Download ZIP button is highlighted.

Anda dapat menggunakan sampel ini untuk melihat pola konversi dalam konteks, dan memilikinya sebagai blok penyusun untuk aplikasi Anda sendiri yang melakukan konversi model sesuai dengan kebutuhan spesifik Anda sendiri.

Konverter OWL2DTDL

OWL2DTDL Converter adalah basis kode sampel yang menerjemahkan ontologi OWL ke dalam serangkaian deklarasi antarmuka DTDL, yang dapat digunakan dengan layanan Azure Digital Twins. Ini juga bekerja untuk jaringan ontologi, terbuat dari satu akar ontologi menggunakan kembali ontologi lain melalui deklarasi owl:imports. Konverter ini digunakan untuk menerjemahkan Ontologi Inti Real Estat ke DTDL dan dapat digunakan untuk setiap ontologi berbasis OWL.

Kode sampel ini bukan solusi komprehensif yang mendukung keseluruhan spesifikasi OWL, tetapi dapat memberi Anda ide dan kode awal yang dapat Anda gunakan dalam mengembangkan alur penyerapan ontologi Anda sendiri.

Langkah berikutnya

Lanjutkan pada jalur untuk mengembangkan model berdasarkan ontologi: Jalur pengembangan model lengkap.