I think the document you pointed me at would benefit from a short explanation of the Web of Things setting out the problem it addresses, i.e. simplifying application development and improving interoperability across platforms, with the solution as metadata that describes the interaction model exposed to applications, security and communications details for interoperability across platforms, and semantic models and constraints for search, validation and composition of services.
Nest Weave’s primitives (properties, commands and events) sound like they are directly equivalent to the web of things properties, actions and events, which is reassuring to hear. In principle, we could extend the schema.org data types to cover what is needed for the interaction model for “things”. This means the set of types that can be assigned to properties, passed to or returned from actions, or passed with events.
In the web of things Interest Group we looked at the existing schema.org data types e.g. for numbers. The rough consensus of the group was to use number with annotations rather than to have separate type names for th vast range of possible numeric types, e.g. unsigned 16 bit numbers. The annotations can be used by platforms and protocol bindings for efficient encodings for data transfer. In principle, schema.org could cite related W3C Recommendations and vice versa.
I see value in allowing things and streams as first class types. Passing a thing in the response to an action essentially means passing a reference that the platform can use to construct the software object that applications can use to interact with that thing. A stream is essentially a time sequence of updates to one or more properties, and can be used for sensor streams or for streaming updates to actuators.
There is a continuum between data model constraints and semantic constraints. The former include min and max values for numbers, cardinality constraints and constraints that relate multiple properties. These require some way to express paths to properties or sub-properties. Semantic constraints describe what a thing or property etc. means. An example is where a property is considered to be a temperature reading if it has a numeric value, and it belongs to one of a recognised set of temperature scales. Semantic models allow you to check that services can be composed successfully. That may involve generating some glue code to transform data types or physical encodings, but the key is to ensure that the meaning is common to the parties involved.
Note that modularity will be important. This will allow for much greater re-use, e.g. where a given “thing” combines multiple “traits”.
I’ve attached a presentation I made to the W3C web of things Interest Group at their recent face to face in Beijing. It argues the need for a study on comparing models developed by different organisations for smart home appliances. This will allow us to check how well the web of things approach fits existing appliances, and also point the way for work on convergence on a core set of models where appropriate.
Note that the W3C WoT IG was against enabling the proposed Web of Things WG to work on domain specific models. The WoT WG is rather intended to work on a core cross domain vocabulary for thing descriptions plus the associated application facing APIs. As fundamental building blocks, these require extensive input and review by stakeholders. I am very much hoping that Google will actively participate in this work.
I see the need for small groups of industry experts to collaborate on incubating domain specific models. We also need an easy way for people to search for existing models and to connect to the communities that use them. W3C could provide the framework for the incubation work, but there is a role for something like schema.org for the discovery and related services which needs a level of system support that W3C would be stretched to provide.
The range of existing IoT alliances and standards development organisations is a challenge. Some companies may feel very defensive about the work they’ve done in a particular group, and be uncertain or hostile to what they see as competitive work being done elsewhere. We thus need to put effort into building up a share understanding across organisations about the value of a common approach and the need for convergence on web standards.
I have another point on bridging the chasm between web developers and other communities when it comes to the underlying basis for metadata. Your document touches upon this when it talks about graph representations such as RDF. We need standards for short names for vocabulary terms that appeal to web developers, but also to link these names to RDF to be part of a broader framework. It is inevitable that weakly coupled communities on opposite sides of the planet will find it hard work in lock step on vocabularies. We can’t ignore this challenge if we are to produce web scale ecosystems of services.