Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Definitions for Virtual Thing, Shadow, and Digital Twins #709

Closed
mmccool opened this issue Feb 15, 2022 · 9 comments
Closed

Definitions for Virtual Thing, Shadow, and Digital Twins #709

mmccool opened this issue Feb 15, 2022 · 9 comments
Assignees

Comments

@mmccool
Copy link
Contributor

mmccool commented Feb 15, 2022

Proposed definition for Virtual Thing: A kind of Service that represents another Thing.

Examples are Digital Twins and Shadows.

  • Shadows keep a copy of state of other Things.
  • Digital Twins may do that too (keep a copy of state of other Things) but may also have the ability to predict future states or behaviour, and may also maintain a history of past state (suggest a list of additional functionalities for Twins that if an entity has at least one can be called a Twin).

Note: the use of Virtual Thing for a "composite of other Things" should be deprecated and we should introduce a new term for that, perhaps "Composite Thing"

@mmccool
Copy link
Contributor Author

mmccool commented Feb 15, 2022

Two additional thoughts:

  • Proxies are another example of a Virtual Thing. Proxies are Services that re-expose the same network interface as another Thing, but with modified access details (URLs, security schemes, etc). But the general idea of a Proxy is that you can interact with it "just like" the target Thing conceptually.
  • Regarding "Composite Things", I can imagine Composite Things that are ALSO Virtual Things. I think a "Composite Thing" is an entity that has a Thing Description and describes the relationship between a set of Things. If there is also a related Service that has a network interface that allows interactions with that set (for example, a Composite Thing might represent the set of all the lights in a room, and ALSO there might be a Service that allows all the lights to be turned on and off at once, AND we put these affordances as well as the links describing the relationships in the same TD...), the Composite Thing is also a Virtual Thing. But I think the definition of the Composite Thing should be specifically about "An entity representing a set of relationships between Things", i.e. the concept of a collection, without implying there is a Service or Device with a network interface related to that collection (there may not be).

Propose we discuss whether these two definitions belong in this PR/issue or a new one. For now I'll just do the ones in the description.

@relu91
Copy link
Member

relu91 commented Feb 15, 2022

We used to refer to Virtual Thing when differentiating between Things that were actually physical devices (e.g. a thermostat installed in your home) and Things that were just software services (i.e., a presence sensor service that actually combines information from one or more Things to infer if someone is at home). Not sure if the new definition capture this dimension.

I think that terminology was introduced to cope with the fact that at some point the term Thing was only for physical devices. if we formally accept this Virtual Thing term I suggest mentioning that previously it was referring to a slightly different concept to avoid misunderstandings.

@mmccool
Copy link
Contributor Author

mmccool commented Feb 15, 2022

@relu91 to avoid confusion with other interpretations of Virtual Thing, I am proposing the specific term "Service" to represent a Thing that is associated with a software entity instead of a physical device. An example would be a TDD. The fact is we already use "service" a lot for this.

A Virtual Thing is then a special case of a Service that "represents another Thing", examples being Shadows and Twins (and maybe Proxies).

We have also used "Virtual Thing" to represent a conceptual collection that may not have a network interface, or a representation of another entity like a location. I think these are valid cases of "Things" but (to avoid confusion and to make the term Virtual Thing more precise) would like to exclude the use of "Virtual Thing" for these unless there is an associated Service. We can invent new names for these kinds of Thing (e.g. Composite Thing, Location Thing) as needed.

Also, everything with "Thing" in the name is a Thing. I think a Venn diagram would be useful...

@mmccool
Copy link
Contributor Author

mmccool commented Feb 15, 2022

Also, my intention with these definitions is to capture the idea that not all Services are Virtual Things. A Directory does not "represent" something else, it provides its own function (storing and looking up data, which happen to be TDs). Other kinds of non-representational Services might include analytics engines, time series databases, key-value stores, etc.

@mmccool
Copy link
Contributor Author

mmccool commented Feb 15, 2022

Regarding if we change the term we should explain the change: right. Let me at least make sure the change log explains it...

@mmccool
Copy link
Contributor Author

mmccool commented Feb 15, 2022

Also, I think we have already moved away from "Things are physical devices", e.g. we talk in Discovery about a Directory being a Thing, that is how the ontology is set up, etc. In my PR I plan to define Services and Virtual Things as subclasses of Thing, and Virtual Things as a subclass of Services.

I guess we could also define "Physical Things" as Things directly associated with (allowing direct access to the affordances of) a specific physical device. That would be a logical counterpart to "Virtual Thing"; then we would have "Virtual Thing is to a Service as a Physical Thing is to a Device". But I'm not going to include that in my current PR so we don't get into arguments about whether a Location (a Thing without a network interface) is a Physical Thing (my definition of Device is that it has a network interface).

@relu91
Copy link
Member

relu91 commented Feb 15, 2022

Also, I think we have already moved away from "Things are physical devices", e.g. we talk in Discovery about a Directory being a Thing, that is how the ontology is set up, etc.

Totally fine with that! I actually encouraged this transition.

Probably what got me off-guard was the "represent another Thing" part. However, I would be fine with:

In my PR I plan to define Services and Virtual Things as subclasses of Thing, and Virtual Things as a subclass of Services

However, I'm afraid that the ideal solution (to properly describe a complex setup) is to discuss this point:

guess we could also define "Physical Things" as Things directly associated with (allowing direct access to the affordances of) a specific physical device. That would be a logical counterpart to "Virtual Thing"; then we would have "Virtual Thing is to a Service as a Physical Thing is to a Device".

Location (a Thing without a network interface) is a Physical Thing (my definition of Device is that it has a network interface)

Well, I think there's no ambiguity here if we follow the definitions: a Location is a Virtual Thing. But I got your point that outsiders might find that surprising.

@k-toumura
Copy link
Contributor

I think a Venn diagram would be useful...

I posted a diagram of Thing-related terminology in #708 (comment) .
Please feel free to use this diagram to discussion.

@mmccool
Copy link
Contributor Author

mmccool commented Feb 16, 2022

OK, I created PR #711 that includes definitions for these terms and the ones in Issue #708. Review away.

@mlagally mlagally closed this as completed Mar 3, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants