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.
Digital Twin structure
An IOTICS Digital Twin is made of 4 parts: Basic Structure, Metadata, Feeds and Inputs.
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
- 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
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
- Comment: a long human-friendly description of the Payload to share;
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;
- Comment: a long human-friendly description of the Payload to share;
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
- It is used to define the structure of properties, feeds and inputs of other Digital Twins.
- You can distinguish Models 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/app#Model - Have a look at our Create Twin Models page for a step-by-step guide.
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
Value | Function | Example |
---|---|---|
Lang Literal | Describes a string with a given language | Key = http://www.w3.org/2000/01/rdf-schema#label LANG_LITERAL_VALUE = Temperature Sensor LANG = en |
Literal | Describes 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 Literal | Describes a string without a language | Key = http://www.w3.org/2000/01/rdf-schema#label STRING_LITERAL_VALUE = Bob |
URI | Describes a URI | Key = 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.
Function | Description | More details |
---|---|---|
Create | Create the Digital Twin’s Basic Structure | Create Twins |
Update | Update a Digital Twin’s metadata component | Update Twins |
Upsert | Create and Update a Digital Twin with Metadata, feeds and inputs | Upsert Twins |
Search | Search for yours and others' Digital Twins | Search & Describe Twins |
Describe | Describe a Digital Twin | Search & Describe Twins |
List | List all Digital Twins you are authorised to find | Search & Describe Twins |
Share and Follow Data | Share Data via Feeds and follow another Digital Twin's feed | Share Data & Follow Feeds |
Send and Receive Input Messages | Send Input Messages from a Twin and receive Input messages from Twin's Input | Send & Receive Input Messages |
Delete | Delete a Digital Twin | Delete Twins |
Updated 6 months ago