# WoT-Discovery
How to find a Thing?
---
## Steps back: What is a Thing
- A self-describing connected object
- A connected object described by a third party
> A [Thing Description](https://www.w3.org/TR/wot-thing-description/) let you know how to control a device even if you do not have previous knowledge of it.
---
## WoT Discover
It covers 3 different concerns
| Concerns | |
|-|-|
| **Discovery** | Finding the devices in the network |
| **Management** | Actively add/remove/configure devices |
| **Query** | Find specific known devices according to some search directives |
---
## Discovery
All the processes that let you know what devices are present in the network
- You could actively search for devices (e.g. mDNS queries)
- The device could actively register itself or be registered (e.g. BT pairing)
---
## Management
The purpose of the Discovery is to populate a Directory, the directory itself exposes itself as a Thing and has its own [description and metadata](https://www.w3.org/TR/wot-discovery/#directory-thing-description)
---
## Things Descriptions in the Directory
The directory serves `TD`s augmented with few additional fields.

---
## The Directory Thing Description
| Actions | |
| -------- | -------- |
| createTD | Add a new `TD` in the directory |
| updateTD | Replace an existing `TD` |
| updatePartialTD | Update parts of an existing `TD` |
| deleteTD | Removes a `TD` |
---
## The Directory Thing Description
| Properties | |
| -------- | -------- |
| retrieveTD | Get the `TD` matching a known `id` |
| retrieveTDs | Get all the existing `TD` |
| searchJSONPath | Search for `TD`s, JSONPath query |
| searchXPath | Search for `TD`s, XPath query |
| searchSPARQL | Search for `TD`s, SPARQL query |
---
## The Directory Thing Description
| Events ||
|-|-|
| registration | Notify for changes in the Directory |
---
## Discussion
- Many discovery methods
- mDNS
- CoRE & DID
- Direct-link pairing
- The currently Management API is minimal
- Add/Update/Delete
- The search API is partially redundant
- JSONPath vs XPath
- Semantic search via SPARQL
- Events
- Quite rich
---
## Implementations
| Name | APIs |
|---|---|
| [LinkSmart Thing Directory][1] | Registration, Notification, Search (JSONPath, XPath) |
| [WoT Hive][2] | Registration, Notification, Search (JSONPath, SPARQL) |
| [Thingweb](https://github.com/eclipse/thingweb.node-wot) | Registration, Notification, Search (???) |
[1]: https://github.com/linksmart/thing-directory
[2]: https://github.com/oeg-upm/wot-hive
---
{"metaMigratedAt":"2023-06-16T22:10:52.237Z","metaMigratedFrom":"YAML","title":"WoT-Discovery, Dev meeting","breaks":true,"contributors":"[{\"id\":\"eb4a4496-41ef-46e3-8970-f8220f409921\",\"add\":2988,\"del\":230}]"}