Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
La plupart des ontologies sont basées sur des standards du web sémantique tels que OWL, RDF et RDFS.
Pour utiliser un modèle avec Azure Digital Twins, vous devez le convertir en format DTDL. Cet article décrit des conseils généraux de conception sous la forme d’un modèle de conversion pour convertir des modèles basés sur RDF en DTDL afin que vous puissiez les utiliser avec Azure Digital Twins.
Bien que les exemples de cet article soient axés sur la construction, vous pouvez également appliquer des processus similaires aux ontologies standard dans différentes industries pour les convertir en DTDL.
Modèle de conversion
Il existe plusieurs bibliothèques tierces qui peuvent être utilisées lors de la conversion de modèles RDF en DTDL. Certaines de ces bibliothèques vous permettent de charger votre fichier de modèle dans un graphique. Vous pouvez parcourir le graphique en recherchant des constructions RDFS et OWL spécifiques, et les convertir en DTDL.
Le tableau suivant est un exemple de la façon dont les constructions RDFS et OWL peuvent être mappées à DTDL.
| Concept RDFS/OWL | Construction RDFS/OWL | Concept DTDL | élément DTDL |
|---|---|---|---|
| Cours | owl:ClassSuffixe d’IRI rdfs:labelrdfs:comment |
Interface | @type:Interface@iddisplayNamecomment |
| Sous-classes | owl:ClassSuffixe d’IRI rdfs:labelrdfs:commentrdfs:subClassOf |
Interface | @type:Interface@iddisplayNamecommentextends |
| Propriétés du type de données | owl:DatatypePropertyrdfs:label ou INoderdfs:labelrdfs:range |
Propriétés de l’interface | @type:PropertynamedisplayNameschema |
| Object Properties (Propriétés de l’objet) | owl:ObjectPropertyrdfs:label ou INoderdfs:rangerdfs:commentrdfs:label |
Relation | type:Relationshipnametarget (ou omis s’il n’y a pas de rdfs:range)commentdisplayName |
L’extrait de code C# suivant montre comment un fichier de modèle RDF est chargé dans un graphique et converti en DTDL à l’aide de la bibliothèque 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);
}
}
}
Étapes suivantes
Passez au développement de modèles basés sur des ontologies : Chemin de développement de modèle complet.