-
Notifications
You must be signed in to change notification settings - Fork 0
Description
The Thing Model Catalog
The goal of this proposal is to motivate the development of a Thing Model Catalog. The catalog shall enable the collection of Thing Models for fixed function devices, provided and curated by the community. This will enable users of the catalog to share the low-value efforts in interfacing with devices that lack self-description in a standardized way.
Consumption
We target the use case of searching for Thing Models for devices to be onboarded to arbitrary WoT consumers. We identified three simple workflows:
-
Manual Browsing: A system integrator searches the catalog manually and finds a matching Thing Models. The Thing Model is downloaded manually, Thing Descriptions are generated from the TM and supplied to a WoT consumer. The WoT consumer is now able to establish communication to the devices.
-
WoT Consumer Integration: A WoT consumer that offers integration with the catalog interface offers browsing, searching and filtering with a custom user interface. Via this user interface, the user selects a Thing Model from the query results, specifies replacement parameters to convert the Thing Model to Thing Descriptions and onboards devices to the WoT consumer.
-
Bundling with a Consumer: A connectivity solution provides the Thing Model Catalog as an integrated part of its offering, i.e. will publish a curated copy of the catalog with the solution.
-
Programmatic Consumption: A connectivity solution offers autodiscovery of devices and searches the catalog for matching Thing Models to be loaded for instantiation.
Contribution
To enable the contribution of Thing Models, the catalog needs to define a contribution interface. This interface needs to enable the following traits:
-
Provenance: A catalog shall make the ownership and authority of contributions apparent. A catalog shall provide hosting infrastructure, but the hoster shall not be responsible for all contributions. These need to be owned and managed by contributors.
-
Quality Gate: The interface shall act as a quality gate to enforce a minimum standard for contributed Thing Models, as there can be different levels of quality. The catalog shall communicate this quality level to consumers.
-
Metadata: The catalog shall support other data in addition to the Thing Models, such as author information, rating, handbook, product image etc.
-
Context Extensions: The catalog shall allow custom extensions to Thing Models, which are not checked for validity in a first release.
-
Fast Feedback Loop: A contributor shall be able to execute the same tests locally, which are required for a contribution to pass to be accepted by a remote catalog.
How
This section lists requirements that need to be addressed in an implementation without proposing a technical solution.
Storage Schema
The storage schema, e.g. directory structure and file name convention in case of a file system needs to allow for human browsability as well as programmatic processing.
The storage schema might allow for a contributor designed hierarchical layout for his/her contributions.
The storage schema must allow grouping of related files, e.g. handbook, image, metadata file.
Identification
A user must be able to uniquely identify a Thing Model. As the Thing Description standard does not enforce a specific ID schema, the catalog must generate unique IDs for Thing Models.
Quality Stages
We currently see the following quality stages:
| Stage Name | Description |
|---|---|
| Syntactic Validation | TM validates against official JSON Schema |
| Semantic Validation | JSON-LD shape is validated |
| Runtime Validation | TM was used to interact with a device and device responses validate against data schema in TM |
| Human Validation | Values returned from device correspond to expected values, e.g. strings are decoded correctly |
| Connectivity Solution Compatibility | List of runtimes, with which the TM was tested |
| Rating | Means of expressing perceived quality by users |
Allow for Duplicates
A catalog must accept multiple Thing Models for the same device, as multiple users might author them independently. A consumer can decide which one to trust and can get a hint by the quality stages passed by the different Thing Models.
Access Restrictions
Contributions shall be owned by one user, who will have the exclusive right to change a Thing Model. The catalog shall enable proposed changes by other users to be accepted by the owning user.
Offline / Online Usage
It must be possible to use a snapshot of an online catalog in an offline scenario
Cross Catalog Search
It must be possible to search across multiple catalogs to enable the concurrent use of a private and a public catalogs.
Needs Discussion
- Support Thing Model Compilation for composed or inheriting Thing Models
- Instance creation from Thing Models to Thing Descriptions
cc => @hadjian @andrisciu