Digital Twins

An IOTICS Digital Twin is a virtual representation of a real entity. A real entity can be a physical asset, a sensor or device, a person, a concept, a data source or consumer, or anything else that you'd like it to represent.

📘

We often use Twin as an abbreviation for Digital Twin

On a technical level, Digital Twins Metadata consists of semantically described properties of the object it represents and semantically described payload of the data they want to share.

The separation of Metadata and Data is a core concept of IOTICS and makes Digital Twins machine-readable and machine-actionable.

Digital Twins are not mere simulations of the real world. They can be as well used to simulate behaviour but that’s not their only purpose. They allow the creation of a data-centric environment where cooperating becomes easy and safe through the total control of Metadata and Data sharing.

In a simulation (on the left) the actual entity is reproduced with the sole purpose of representing it and possibly running scenarios that have no implications in the real world. In contrast, IOTICS Digital Twins and their real entities (on the right) affect each other.

2468

A simulation Twin vs an IOTICS Digital Twin.

Digital Twin structure

An IOTICS Digital Twin is made of 4 parts: Basic Structure, Metadata, Feeds and Inputs.

1868

📘

Dotted lines throughout this document represent optional components.


Basic Structure

It’s the fundamental component of every Twin. It represents the Twin skeleton and is composed of

  • Twin ID
    A string that uniquely identifies the Twin in the Network is derived from a pair of cryptographic keys. It always starts with did:iotics:iot followed by 33 alphanumeric characters.
    This identifier conforms to the W3C DID specification.

  • Host ID
    A string that uniquely identifies the Host in the Network that the Twin belongs to.
    It corresponds to the Host Twin ID and follows the same structure as the Twin ID.

  • Updated At
    Indicates the date and time when the Twin was last updated.

🚧

Without the Basic Structure, the other Twin components cannot be created.

Metadata

The Metadata semantically describes a Digital Twin, which includes its location along with a list of properties. Within the Twin Basic structure, the Metadata is composed of

  • Location
    It’s divided into Latitude and Longitude expressed in decimal degrees.
    For example, London’s location is Latitude: 51.5, Longitude: -0.1
1437
  • List of Properties
    Each property is composed of a Key and a Value which have to be semantically described.
    To specify the Label of a Twin you can use the following Key-Value pair, for example:
    Key=http://www.w3.org/2000/01/rdf-schema#label
    Value=Temperature Sensor
1434

Feeds

Feeds allow the Digital Twin to share data using the one-to-many approach.
The Feed components are:

  • Feed ID
    A string that uniquely identifies the Feed in a Twin

  • Metadata

    • Store Last: Whether or not to store the last shared value, with a True/False variable.
    • Optional list of Properties, which follow the same structure as the Twin Properties.
  • List of Values

    • Comment: a long human-friendly description of the Payload to share;
      Ex: Temperature in degrees Celsius
    • Datatype: the datatype of the data to share (integer/float/string/decimal/boolean);
      Ex: Integer
      The data types are conformant to the XML schema primitive data types available here.
    • Label: a short human-friendly description of the Payload to share;
      Ex: Reading
    • Unit: a semantic description of the Payload to share;
      Ex: http://qudt.org/vocab/unit/DEG_C
1543

Inputs

Inputs allow the Digital Twin to share data using the point-to-point approach.

  • Input ID
    A string that uniquely identifies the Input in a Twin

  • Metadata

    • Optional list of Properties, which follow the same structure as the Twin Properties.
  • List of Values

    • Comment: a long human-friendly description of the Payload to share;
      Ex: Whether to turn a light ON/OFF
    • Datatype: the datatype of the data to share (integer/float/string/decimal/boolean);
      Ex: Boolean
      The data types are conformant to the XML schema primitive data types available here.
    • Label: a short human-friendly description of the Payload to share;
      Ex: Switch
    • Unit: a semantic description of the Payload to share;
1543

Digital Twin types

IOTICS distinguishes them between three different types:

  • Host Twin
  • Twin Model
  • Twin from Model

1. Host Twin: the virtual representation of the IOTICSpace (Host)

  • Each IOTICSpace only has only one Host Twin, which is automatically created with the creation of the Host.
  • It serves to control access permissions for the IOTICSpace as a whole.
  • A Host Twin has the same structure as a Digital Twin and can be managed and manipulated in the same way. However, its access is restricted as only admins can update it.
  • You can distinguish Host Twins from Digital Twins by their Key-Value pair.
    Key=http://www.w3.org/1999/02/22-rdf-syntax-ns#type
    Value=http://data.iotics.com/public#HostTwin

2. Twin Model: the template or structure of one or more Digital Twins of the same type

3. Twin from Model: the virtual representation or an "instance" of a real asset, person or concept

  • A Twin based on the structure defined by a specific Twin Model.
  • Compared to Twin Models, Twins from Model can share/follow/send/receive data via feeds and/or Inputs.

Enable powerful search with semantically described Digital Twins

Semantics is concerned with providing unambiguous meaning to entities in any ecosystem so that interoperability can be achieved for humans and machines.

An Ontology defines all of the elements - concepts and words - involved in the ecosystem and organizes them by their relationship to each other.
The benefits of building an ontology are:

  • Everyone agrees on a common set of terms used to describe relevant ecosystem things
  • Parties can exchange data with each other in an automated fashion without the need for expensive and time-consuming point-to-point integrations.

IOTICS believes that semantically described data is the only way to truly, flexibly and consistently interoperate data across domains and companies, for both humans and machines.

How Semantics is used in IOTICS

The Metadata component of Twins, Feeds and Inputs needs to be defined in terms of Properties according to one or more Ontologies and based on the following triple:

  • Subject: it is implicitly the component ID (either Twin, Feed or Input)
  • Predicate: the KEY of a Property’s Key-Value pair. The Key is a unique string expressed as a URI that links to an ontology.
  • Object: the VALUE of a Property’s Key-Value pair. The Value could be a simple string, number, boolean or a URI providing a link to another thing (for example a page on the web, another ontology resource or the identifier of a twin).

For example, if the Twin with ID did:iotics:iot239uhfjgfoexrugojeh839ofj8eurpkhg represents a hatchback car modelled with the ontologies https://schema.org/ and https://edmcouncil.org/, you could define these triples to semantically define the Twin:
Subject: did:iotics:iot239uhfjgfoexrugojeh839ofj8eurpkhg
Predicate: http://www.w3.org/1999/02/22-rdf-syntax-ns#type
Object https://schema.org/Car

Subject: did:iotics:iot239uhfjgfoexrugojeh839ofj8eurpkhg
Predicate: https://schema.org/bodyType
Object: https://spec.edmcouncil.org/auto/ontology/VC/VehicleCore/BodyStyleHatchback


ValueFunctionExample
Lang LiteralDescribes a string with a given languageKey = http://www.w3.org/2000/01/rdf-schema#label
LANG_LITERAL_VALUE = Temperature Sensor
LANG = en
LiteralDescribes a string with a specific datatype (i.e.: integer, decimal, dateTime, etc.)Key = http://data.iotics.com/app#updatedAt
LITERAL_VALUE = 25/08/2022 17:52:13
DATATYPE = http://www.w3.org/2001/XMLSchema#dateTime
String LiteralDescribes a string without a languageKey = http://www.w3.org/2000/01/rdf-schema#label
STRING_LITERAL_VALUE = Bob
URIDescribes a URIKey = http://www.w3.org/1999/02/22-rdf-syntax-ns#type
URI_VALUE = http://data.iotics.com/app#Model

Digital Twin access permissions

As the owner of an IOTICSpace, you're in control of all your Twins, therefore you own all the Metadata stored and the Data streaming through the Twins. IOTICS allows your Twins to selectively share their Metadata and Data with Twins which belong to other IOTICSpaces.

For more information about access permissions, including examples of how to update them, go to Selective Data Sharing.

API functions for Digital Twins

The below table summarises all functions for you to find, access, interoperate and reuse your and other parties' Digital Twins. For more detailed information on each of the functions please go to the specific page or the API Reference directly.

FunctionDescriptionMore details
CreateCreate the Digital Twin’s Basic StructureCreate Twins
UpdateUpdate a Digital Twin’s metadata componentUpdate Twins
UpsertCreate and Update a Digital Twin with Metadata, feeds and inputsUpsert Twins
SearchSearch for yours and others' Digital TwinsSearch & Describe Twins
DescribeDescribe a Digital TwinSearch & Describe Twins
ListList all Digital Twins you are authorised to findSearch & Describe Twins
Share and Follow DataShare Data via Feeds and follow another Digital Twin's feedShare Data & Follow Feeds
Send and Receive Input MessagesSend Input Messages from a Twin and receive Input messages from Twin's InputSend & Receive Input Messages
DeleteDelete a Digital TwinDelete Twins