Skip to content

Latest commit

 

History

History
67 lines (44 loc) · 2.86 KB

find_and_bind.adoc

File metadata and controls

67 lines (44 loc) · 2.86 KB

Find and Bind

Warning
This is work in progress and not yet fully supported by IOTICSpace.

Find and bind is the basic data access pattern that a Follower Twin implements to discover one or more twins of interest.

The pattern can be implemented as

foreach twin in search_by(properties, location):
    description = describe(twin_did)
    if description is of_interest:
        foreach feed in twin:
            if feed of_interest:
                follow(twin_did, feed)

In essence, the "find and bind" leverages the semantically enriched metadata of the twins to retrieve twins' descriptions.

Twins' feeds can then be followed provided that the interaction between the follower and the twin of the feed can be "brokered".

Data and metadata

A twin’s metadata is a collection of information about the asset a twin represents.

Metadata: find

  • can be queried to determine whether a twin is interesting/useful or not,

  • cab be linked to other metadata to provide semantic relationships between twins,

Metadata is stored in IOTICS and forms, as a whole, a knowledge graph that can be queried or explored. Ultimately, IOTICS provides the (decentralised) register that can be queried to find the desired assets. Metadata is open and accessible to everybody. When a twin limits access to its metadata is because it wants to restrict who can find it.

Data: bind

Binding to a twin is about getting the asset data. Data - unlike metadata - represents internal status of the asset and it’s protected by the "secure and brokered interactions". Access to data follows two access paradigm: push and pull:

  • a push mechanism models events or changes in some of the asset’s internal status data,

  • a pull mechanism models a basic retrieval mechanism of (one or more) attributes of the asset internal status.

A twin’s push mechanism is implemented by feeds. A twin’s pull mechanism is WIP.

Implementation details

The algorithm expressed above is very generic. A solid and robust find and bind implementation must take into account the following concerns:

  • twins can change: once a twin’s been found, it can be described by DID. Because the DID is globally resolvable, subsequent describe requests will work until the twin is deleted

  • subscriptions are ephemeral: a subscription to a feed can drop for a variety of reasons. The same follow request can be re-issued. Reasons for subscriptions to drop may include

    • the twin has moved host

    • the twin permissions have changed and the twin is no longer accessible

    • any network glitch stopping the connection to the local host (transient or not)