Преобразование стандартных отраслевых онтологий в DTDL для Azure Digital Twins
Большинство онтологий основано на семантических веб-стандартах, таких как OWL, RDF и RDFS.
Чтобы использовать модель с Azure Digital Twins, она должна быть в формате DTDL. В этой статье описываются общие рекомендации по проектированию в виде шаблона преобразования для преобразования моделей на основе RDF в DTDL, чтобы их можно было использовать с Azure Digital Twins.
В статье также содержится пример кода преобразователя для преобразователей RDF и OWL, который можно расширить для других схем в отрасли построения.
Хотя примеры, приведенные в этой статье, ориентированы на построение, вы можете применять аналогичные процессы к стандартным онтологиям в разных отраслях, чтобы преобразовать их в DTDL, а также.
Шаблон преобразования
Существует несколько сторонних библиотек, которые можно использовать при преобразовании моделей на основе RDF в DTDL. Некоторые из этих библиотек позволяют загрузить файл модели в граф. Вы можете пройти в цикле по графу для поиска конкретных конструкций RDFS и OWL, а затем преобразовать их в DTDL.
В следующей таблице показано, как можно сопоставить конструкции RDFS и OWL с DTDL.
Концепция RDFS/OWL | Конструкция RDFS/OWL | Концепция DTDL | Конструкция DTDL |
---|---|---|---|
Классы | owl:Class Суффикс IRI rdfs:label rdfs:comment |
Интерфейс | @type:Interface @id displayName comment |
Подклассы | owl:Class Суффикс IRI rdfs:label rdfs:comment rdfs:subClassOf |
Интерфейс | @type:Interface @id displayName comment extends |
Свойства DataType | owl:DatatypeProperty rdfs:label или INode rdfs:label rdfs:range |
Свойства интерфейса | @type:Property name displayName schema |
Свойства объекта | owl:ObjectProperty rdfs:label или INode rdfs:range rdfs:comment rdfs:label |
Отношение | type:Relationship name target (или пропущено, если нет rdfs:range )comment displayName |
В следующем фрагменте кода C# показано, как файл модели RDF загружается в граф и преобразуется в DTDL с помощью библиотеки 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);
}
}
}
Примеры преобразователей
В этом разделе содержится пример кода преобразователя для преобразователей RDF и OWL, которые можно расширить для других схем в отрасли строительства.
Приложение преобразователя RDF
Существует пример приложения, который преобразует файл модели на основе RDF в DTDL версии 2 (v2). DTDL версии 2 поддерживается Azure Digital Twins, но вы также можете следовать этим инструкциям , чтобы преобразовать модели DTDL версии 2 в более новую версию DTDL версии 3.
Пример приложения был проверен для схемы "Кирпич" и может быть расширен для других схем в отрасли строительства (например, сборки топологии ontology (BOT),семантической сети датчика или сборки классов отраслевых фундаментов (IFC)).
Пример — это приложение командной строки .NET Core с именем RdfToDtdlConverter.
Чтобы скачать код на свой компьютер, нажмите кнопку Browse code (Просмотреть код) под заголовком на странице примера для перехода в репозиторий GitHub. Нажмите кнопку Code (Код), а затем Download ZIP (Скачать ZIP-файл), чтобы скачать пример как ZIP-файл с именем RdfToDtdlConverter-main.zip. Затем можно распаковать файл и изучить код.
Этот пример можно использовать для просмотра шаблонов преобразования в контексте и как стандартный блок для построения собственных приложений по преобразованиям моделей в соответствии с вашими конкретными потребностями.
Преобразователь OWL2DTDL
Конвертер OWL2DTDL — это пример базы кода, которая преобразует ontology OWL в набор объявлений интерфейса DTDL, которые можно использовать со службой Azure Digital Twins. Он также работает для сетей онтологии, на основе одной корневой онтологии с повторным использованием других онтологий по объявлениям owl:imports
. Этот преобразователь использовался для преобразования Онтологии ядра недвижимости в DTDL и может использоваться для любых онтологий на основе OWL.
Этот пример кода не является комплексным решением, которое поддерживает все спецификации OWL, но оно может дать вам идеи и начальный код, который можно использовать в разработке собственных конвейеров приема ontology.
Следующие шаги
Продолжайте путь разработки моделей на основе онтологий: полный путь разработки модели.