Delen via


Ontologieën uitbreiden

In dit artikel wordt gebruikgemaakt van de op DTDL gebaseerde RealEstateCore ontologie voor slimme gebouwen als basis voor voorbeelden van het uitbreiden van ontologieën met nieuwe DTDL-eigenschappen. De technieken die hier worden beschreven, zijn echter algemeen en kunnen worden toegepast op elk deel van een ontologie op basis van DTDL met elke DTDL-functionaliteit die compatibel is met Azure Digital Twins (eigenschap, relatie, onderdeel).

De industriestandaard ontologieën van Microsoft, zoals de op DTDL gebaseerde Ontologie van RealEstateCore, zijn een uitstekende manier om uw IoT-oplossing te bouwen. Industrie ontologieën bieden een uitgebreide set basisinterfaces die zijn ontworpen voor uw domein en ontworpen om te werken in Azure IoT-services zoals Azure Digital Twins.

Het is echter mogelijk dat uw oplossing specifieke behoeften heeft die niet onder de ontologie van de branche vallen. U kunt uw digitale dubbels bijvoorbeeld koppelen aan 3D-modellen die zijn opgeslagen in een afzonderlijk systeem. In dit geval kunt u een van deze ontologieën uitbreiden om uw eigen mogelijkheden toe te voegen, terwijl alle voordelen van de oorspronkelijke ontologie behouden blijven.

RealEstateCore-ruimtehiërarchie

In de ontologie van RealEstateCore op basis van DTDL wordt de ruimtehiërarchie gebruikt om verschillende soorten ruimten te definiëren: Ruimten, Gebouwen, Zone, enzovoort. De hiërarchie strekt zich uit van elk van deze modellen om verschillende soorten ruimten, gebouwen en zones te definiëren.

Een gedeelte van de hiërarchie ziet eruit als in het onderstaande diagram.

Diagram showing part of the RealEstateCore space hierarchy. It shows elements for Space, Room, ConferenceRoom, and Office.

Zie Digital Twins Definition Language-gebaseerde RealEstateCore ontology for smart buildings on GitHub voor meer informatie over de RealEstateCore ontology.

De Ruimtehiërarchie van RealEstateCore uitbreiden

Soms heeft uw oplossing specifieke behoeften die niet worden gedekt door de ontologie van de branche. In dit geval kunt u met het uitbreiden van de hiërarchie de ontologie van de branche blijven gebruiken terwijl u deze aan uw behoeften kunt aanpassen.

In dit artikel bespreken we twee verschillende gevallen waarbij het uitbreiden van de ontologiehiërarchie nuttig is:

  • Nieuwe interfaces toevoegen voor concepten die zich niet in de branche ontologie bevinden.
  • Extra eigenschappen, relaties of onderdelen toevoegen aan bestaande interfaces.

Nieuwe interfaces toevoegen voor nieuwe concepten

In dit geval wilt u interfaces toevoegen voor concepten die nodig zijn voor uw oplossing die niet aanwezig zijn in de ontologie van de branche. Als uw oplossing bijvoorbeeld andere typen ruimten heeft die niet worden weergegeven in de ontologie van RealEstateCore op basis van DTDL, kunt u deze toevoegen door deze rechtstreeks vanuit de RealEstateCore-interfaces uit te breiden.

In het onderstaande voorbeeld ziet u een oplossing die 'focusruimten' moet vertegenwoordigen, die niet aanwezig zijn in de RealEstateCore ontology. Een focusruimte is een kleine ruimte die is ontworpen voor mensen om zich gedurende een paar uur tegelijk op een taak te richten.

Als u de ontologie van de branche wilt uitbreiden met dit nieuwe concept, maakt u een nieuwe interface die zich uitbreidt van de interfaces in de ontologie in de branche.

Nadat u de interface voor de focusruimte hebt toegevoegd, wordt in de uitgebreide hiërarchie het nieuwe ruimtetype weergegeven.

Diagram showing part of the RealEstateCore space hierarchy, including a new addition of Focus Room.

Extra mogelijkheden toevoegen aan bestaande interfaces

In dit geval wilt u meer eigenschappen, relaties of onderdelen toevoegen aan interfaces die zich in de ontologie van de branche bevinden.

In deze sectie ziet u twee voorbeelden:

  • Als u een oplossing bouwt die 3D-tekeningen weergeeft van ruimten die u al in een bestaand systeem hebt, kunt u elke digitale dubbel koppelen aan de 3D-tekening (op id), zodat wanneer in de oplossing informatie over de ruimte wordt weergegeven, ook de 3D-tekening van het bestaande systeem kan worden opgehaald.
  • Als uw oplossing de online-/offlinestatus van vergaderruimten moet bijhouden, kunt u de status van de vergaderruimte bijhouden voor gebruik in weergave of query's.

Beide voorbeelden kunnen worden geïmplementeerd met nieuwe eigenschappen: een drawingId eigenschap die de 3D-tekening koppelt aan de digitale dubbel en een online eigenschap die aangeeft of de vergaderruimte online is of niet.

Normaal gesproken wilt u de brancheonologie niet rechtstreeks wijzigen omdat u deze in de toekomst in uw oplossing wilt kunnen opnemen (waardoor uw toevoegingen worden overschreven). In plaats daarvan kunnen deze soorten toevoegingen worden gemaakt in uw eigen interfacehiërarchie die zich uitbreidt van de ontologie van RealEstateCore op basis van DTDL. Elke interface die u maakt, maakt gebruik van meerdere interfaceovernames om de bovenliggende RealEstateCore-interface en de bovenliggende interface uit te breiden vanuit uw uitgebreide interfacehiërarchie. Met deze aanpak kunt u gebruik maken van de ontologie van de branche en uw toevoegingen.

Als u de ontologie van de branche wilt uitbreiden, maakt u uw eigen interfaces die zich uitbreiden van de interfaces in de ontologie van de branche en voegt u de nieuwe mogelijkheden toe aan uw uitgebreide interfaces. Maak een nieuwe interface voor elke interface die u wilt uitbreiden. De uitgebreide interfaces zijn geschreven in DTDL (zie DTDL voor uitgebreide interfaces verderop in dit document).

Nadat het gedeelte van de bovenstaande hiërarchie is uitgebreid, ziet de uitgebreide hiërarchie er als volgt uit. Hier voegt de uitgebreide ruimte-interface de drawingId eigenschap toe die een id bevat die de digitale dubbel koppelt aan de 3D-tekening. Daarnaast voegt de interface ConferenceRoom een online eigenschap toe die de onlinestatus van de vergaderruimte bevat. Door overname bevat de ConferenceRoom-interface alle mogelijkheden van de RealEstateCore ConferenceRoom-interface en alle mogelijkheden van de uitgebreide Ruimte-interface.

Diagram showing the extended RealEstateCore space hierarchy, with more new additions as described.

U hoeft niet elke interface in de branche ontologie uit te breiden, alleen de interface waar u nieuwe mogelijkheden moet toevoegen. Als u bijvoorbeeld een nieuwe mogelijkheid wilt toevoegen, zoals een arterial eigenschap aan de ganginterface, kunt u die interface uitbreiden zonder dat u andere interfaces uitbreidt die ook van Ruimte worden uitgebreid.

Diagram showing an extended RealEstateCore space hierarchy, containing an extended Hallway interface with an arterial property.

Relaties met uitgebreide interfaces

Uitgebreide interfaces kunnen ook worden gebruikt als doel voor relaties, zelfs als de relatie oorspronkelijk is gemodelleerd om een basisinterface te richten. In de ontologie van RealEstateCore op basis van DTDL bevat de interface Appartement bijvoorbeeld een relatie met de naam die gericht is op een ruimteinterface (weergegeven in het onderstaande diagram). Hiermee kunt u een grafiek maken van kamers om het appartement samen te stellen.

Op basis van het gedeelte van de kamerhiërarchie uit de vorige sectie kan een digitale dubbel appartement een tweeling van het type Kamer bevatten en De gang is een uitbreiding van Kamer (zodat een appartement gangen kan bevatten). Dit betekent ook dat een appartement een uitgebreide gang met het arterial pand kan bevatten, omdat een uitgebreide gang telt als een gang als waarnaar wordt verwezen in de oorspronkelijke relaties.

Diagram showing an extended RealEstateCore space hierarchy, with an extended Hallway interface and relationships to it.

De uitgebreide ruimtehiërarchie gebruiken

Wanneer u digitale dubbels maakt met behulp van de uitgebreide ruimtehiërarchie, is het model van elke digitale dubbel één van de uitgebreide ruimtehiërarchie (niet de oorspronkelijke brancheonologie) en bevat alle mogelijkheden van de ontologie van de branche en de uitgebreide interfaces via interfaceovername.

Het model van elke digitale dubbel is een interface uit de uitgebreide hiërarchie, die in het onderstaande diagram wordt weergegeven.

Diagram showing the extended RealEstateCore space hierarchy, including the connected models Space, Room, ConferenceRoom, Office, and FocusRoom.

Bij het uitvoeren van query's op digitale dubbels met behulp van de model-id (de IS_OF_MODEL operator), moeten de model-id's uit de uitgebreide hiërarchie worden gebruikt. Bijvoorbeeld: SELECT * FROM DIGITALTWINS WHERE IS_OF_MODEL('dtmi:com:example:Office;1').

Bijdragen aan de oorspronkelijke ontologie

In sommige gevallen breidt u de ontologie van de branche uit op een manier die algemeen nuttig is voor de meeste gebruikers van de ontologie. In dit geval moet u overwegen om uw extensies weer bij te dragen aan de oorspronkelijke ontologie. Elke ontologie heeft een ander proces voor bijdragen, dus controleer de GitHub-opslagplaats van de ontologie op details van de bijdrage.

DTDL voor nieuwe interfaces

De DTDL voor nieuwe interfaces die rechtstreeks vanuit de ontologie van de branche worden uitgebreid, ziet er als volgt uit.

{
  "@id": "dtmi:com:example:FocusRoom;1", 
  "@type": "interface", 
  "extends": "dtmi:digitaltwins:rec_3_3:building:Office;1", 
  "@context": "dtmi:dtdl:context;2" 
} 

DTDL voor uitgebreide interfaces

De DTDL voor de uitgebreide interfaces, beperkt tot het hierboven besproken gedeelte, zou er als volgt uitzien.

[
  {
    "@id": "dtmi:com:example:Space;1",
    "@type": "Interface",
    "extends": "dtmi:digitaltwins:rec_3_3:core:Space;1",
    "contents": [
      {
        "@type": "Property",
        "name": "drawingid",
        "schema": "string"
      }
    ],
    "@context": "dtmi:dtdl:context;2"
  },
  {
    "@id": "dtmi:com:example:Room;1",
    "@type": "Interface",
    "extends": [
      "dtmi:digitaltwins:rec_3_3:core:Room;1",
      "dtmi:com:example:Space;1"
    ],
    "@context": "dtmi:dtdl:context;2"
  },
  {
    "@id": "dtmi:com:example:ConferenceRoom;1",
    "@type": "Interface",
    "extends": [
      "dtmi:digitaltwins:rec_3_3:building:ConferenceRoom;1",
      "dtmi:com:example:Room;1"
    ],
    "contents": [
      {
        "@type": "Property",
        "name": "online",
        "schema": "boolean"
      }
    ],
    "@context": "dtmi:dtdl:context;2"
  },
  {
    "@id": "dtmi:com:example:Office;1",
    "@type": "Interface",
    "extends": [
      "dtmi:digitaltwins:rec_3_3:building:Office;1", 
      "dtmi:com:example:Room;1" 
    ],
    "@context": "dtmi:dtdl:context;2" 
  }, 
  {
    "@id": "dtmi:com:example:FocusRoom;1", 
    "@type": "Interface", 
    "extends": "dtmi:com:example:Office;1", 
    "@context": "dtmi:dtdl:context;2" 
  }
]

Volgende stappen

Ga door met het pad voor het ontwikkelen van modellen op basis van ontologieën: Volledig pad voor modelontwikkeling.