Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
De meeste ontologieën zijn gebaseerd op semantische webstandaarden zoals OWL, RDF en RDFS.
Om een model met Azure Digital Twins te gebruiken, moet je het converteren naar DTDL-formaat. Dit artikel beschrijft algemene ontwerprichtlijnen in de vorm van een conversiepatroon voor het omzetten van RDF-gebaseerde modellen naar DTDL, zodat je ze kunt gebruiken met Azure Digital Twins.
Hoewel de voorbeelden in dit artikel gericht zijn op het bouwen, kunt u vergelijkbare processen toepassen op standaard ontologieën in verschillende branches om ze ook te converteren naar DTDL.
Omzettingspatroon
Er zijn verschillende bibliotheken van derden die kunnen worden gebruikt bij het converteren van RDF-modellen naar DTDL. Met sommige van deze bibliotheken kunt u uw modelbestand in een grafiek laden. U kunt de grafiek doorlopen die zoekt naar specifieke RDFS- en OWL-constructies en deze converteren naar DTDL.
De volgende tabel is een voorbeeld van hoe RDFS- en OWL-constructies kunnen worden toegewezen aan DTDL.
| RDFS/OWL-concept | RDFS/OWL-constructie | DTDL-concept | DTDL-constructie |
|---|---|---|---|
| Klassen | owl:ClassIRI-achtervoegsel rdfs:labelrdfs:comment |
gebruikersinterface | @type:Interface@iddisplayNamecomment |
| Subklassen | owl:ClassIRI-achtervoegsel rdfs:labelrdfs:commentrdfs:subClassOf |
gebruikersinterface | @type:Interface@iddisplayNamecommentextends |
| Eigenschappen van gegevenstype | owl:DatatypePropertyrdfs:label of INoderdfs:labelrdfs:range |
Interface-eigenschappen | @type:PropertynamedisplayNameschema |
| Objecteigenschappen | owl:ObjectPropertyrdfs:label of INoderdfs:rangerdfs:commentrdfs:label |
Relatie | type:Relationshipnametarget (of weggelaten indien nee rdfs:range)commentdisplayName |
In het volgende C#-codefragment ziet u hoe een RDF-modelbestand wordt geladen in een grafiek en wordt geconverteerd naar DTDL met behulp van de dotNetRDF-bibliotheek .
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);
}
}
}
Volgende stappen
Ga door met het pad voor het ontwikkelen van modellen op basis van ontologieën: Volledig pad voor modelontwikkeling.