Creazione di un modello Digital Twin

Crea un modello digital twin per l'Internet of Things (IoT).

Un modello di gemello digitale definisce la semantica di un gemello digitale e si basa sulle specifiche DTDL v3. Un modello di gemello digitale utilizza un Digital Twin Model Identifier (DTMI) come identificativo univoco.

Ad esempio: dtmi:com:oracle:iot:connectable;1

Un'istanza gemella digitale richiede un modello gemello digitale e un adattatore gemello digitale per ricevere i dati dei dispositivi strutturati. Per esempi specifici, vedere Scenari.

Nota

Digital Twins Definition Language (DTDL) v3 è supportato su GitHub dal Digital Twin Consortium. È importante notare che le estensioni MQTT e le proprietà scrivibili non sono supportate.

Se è inclusa una proprietà writable, è necessario impostarla su false.

  • Utilizzare il comando oci iot digital-twin-model create e i parametri necessari per creare un modello gemello digitale in un dominio IoT specifico. Fornire le specifiche come contenuto JSON direttamente nella riga di comando o come file a cui viene fatto riferimento nella riga di comando:

    Questo esempio mostra come fornire le specifiche JSON direttamente nella riga di comando:

    oci iot digital-twin-model create --iot-domain-id <iot-domain-OCID> --spec '{"@context": ["dtmi:dtdl:context;3", "dtmi:dtdl:extension:historization;1", "dtmi:dtdl:extension:quantitativeTypes;1", "dtmi:com:oracle:dtdl:extension:validation;1"], "@id": "dtmi:com:oracle:iot:sample:hvac:UgNaNWHbzK;1", "@type": "Interface", "contents": [{"@type": ["Telemetry", "Temperature"], "name": "temperature", "schema": "integer", "unit": "degreeFahrenheit"}, {"@type": ["Telemetry", "Historized", "Validated"], "name": "humidity", "schema": "integer", "minimum": 0, "maximum": 100}, {"@type": ["Property", "Historized"], "name": "location", "schema": "point", "writable": true}, {"@type": ["Property", "Validated"], "name": "serialNumber", "schema": "string", "pattern": "^([0-9]){2}([0-9]){5}([0-9]){6}$"}]}'

    Questo esempio mostra come creare un file dtdl-specifications.json contenente le specifiche e fare riferimento al file nel comando. Per ulteriori informazioni sui file di riferimento, vedere Uso di un file JSON per l'input complesso:

    oci iot digital-twin-model create --iot-domain-id <iot-domain-OCID> --spec file://dtdl-specifications.json
    File dtdl-specifications.json di esempio basato sulla specifica DTDL v3 che contiene un Digital Twin Model Identifier (DTMI) come identificativo univoco.
    {
      "@context": [
        "dtmi:dtdl:context;3",
        "dtmi:dtdl:extension:historization;1",
        "dtmi:dtdl:extension:quantitativeTypes;1",
        "dtmi:com:oracle:dtdl:extension:validation;1"
      ],
      "@id": "dtmi:com:oracle:iot:sample:hvac:UgNaNWHbzK;1",
      "@type": "Interface",
      "contents": [
        {
          "@type": [
            "Telemetry",
            "Temperature"
          ],
          "name": "temperature",
          "schema": "integer",
          "unit": "degreeFahrenheit"
        },
        {
          "@type": [
            "Telemetry",
            "Historized",
            "Validated"
          ],
          "name": "humidity",
          "schema": "integer",
          "minimum": 0,
          "maximum": 100
        },
        {
          "@type": [
            "Property",
            "Historized"
          ],
          "name": "location",
          "schema": "point",
          "writable": false
        },
        {
          "@type": [
            "Property",
            "Validated"
          ],
          "name": "serialNumber",
          "schema": "string",
          "pattern": "^([0-9]){2}([0-9]){5}([0-9]){6}$"
        }
      ]
    }

    Questa risposta di esempio mostra che il modello digital twin è stato creato per il dominio IoT, con un URI DTMI: dtmi:com:oracle:iot:sample:hvac:unique-id;1:

    {
      "data": {
        "defined-tags": {
          "Oracle-Tags": {
            "CreatedBy": "default/user",
            "CreatedOn": "2025-08-05T17:43:00.438Z"
          }
        },
        "description": null,
        "display-name": "HVAC",
        "freeform-tags": {},
        "id": "<iot-digital-twin-model-OCID>",
        "iot-domain-id": "<iot-domain-OCID>",
        "lifecycle-state": "ACTIVE",
        "spec-uri": "dtmi:com:oracle:iot:sample:hvac:unique-id;1",
        "system-tags": {},
        "time-created": "2025-08-05T17:43:00.508000+00:00",
        "time-updated": "2025-08-05T17:43:00.508000+00:00"
      },
      "etag": "<unique-id>"
    }

    Per un elenco completo dei parametri e dei valori per i comandi CLI, vedere Riferimento per i comandi CLI

  • Eseguire l'operazione CreateDigitalTwinModel per creare un modello di gemello digitale nel dominio IoT specifico.

    Richiesta di esempio:

    POST /20250531/digitalTwinModels
    content-type: application/json+ld
    {
        "@context": ["dtmi:dtdl:context;3"],
        "@id": "dtmi:com:oracle:labauto:SmartSpecimenVault;1",
        "@type": "Interface",
        "extends": "dtmi:com:oracle:iot:connectable;1",
        "displayName": "HVAC",
        "contents": [
            {"@type": "Telemetry", "name": "temperature", "schema": "integer"},
            {"@type": "Telemetry", "name": "humidity", "schema": "integer", "minimum":0, "maximum": 100},
            {"@type": "Property", "name": "desiredTemperature", "schema": "integer", "writable": true},
            {"@type": "Property", "name": "serialNumber", "schema": "string"} 
        ]
    }

    Risposta di esempio:

    header:
    content-type: application/json
    Body:
    {
        "id": "<digital-twin-model-OCID>"
        "displayName": "<your-HVAC-display-name>",
        "description": "<digital-twin-model-for-HVAC>"
        "lifecycleState": "ACTIVE",
        "freeformTags": {},
        "definedTags": {
           "Oracle-Tags": {
             "CreatedBy": "default/user@oracle.com",
             "CreatedOn": "2024-07-22T10:24:53.446Z"
           }
        },
        "specUri": "dtmi:com:oracle:labauto:SmartSpecimenVault;1"
        "timeCreated": "2025-01-13T10:24:53Z",
        "timeUpdated": "2025-01-14T17:15:21Z"
    }