- From: David Janes <davidjanes@davidjanes.com>
- Date: Tue, 2 Jun 2015 14:32:22 -0400
- To: Dave Raggett <dsr@w3.org>
- Cc: public-web-of-things@w3.org
- Message-ID: <CACp1KyNzNzu6VGnUjsSD6+yfZ5yiym0ExK8k83YAUx4g=UHUFw@mail.gmail.com>
I think I understand, pretty well, what your model does. I just don't see how putting all these disparate concepts into one pile makes things simpler or easier for implementers or for people trying to understand how things work. - Things have an actual state. Things have a control state. I can sit and watch things in front of me demonstrate that these are different: I'll take a video if you want! - Things have metadata, which includes its name, its reachability, its facets (definable by the user), perhaps an ACL, perhaps manufacturer data and so forth. - Things have a model, which is a description of how it works, and what the values in it's state mean. The model is basically static after definition. Your model - from the slideshow - looks like this 1. HTTP GET to retrieve a thing's description 2. HTTP GET to retrieve all properties of a thing 3. HTTP PUT to update all properties of a thing 4. HTTP PATCH to apply changes to some properties 5. HTTP POST to invoke actions on a thing 6. HTTP POST is also used to notify events So specifically 1. A Things Description - lets say this is the JSON-LD - isn't the same as its Metadata, it's actual state (istate), or control state (ostate) 2. Is this the same URL as #1? If so, you're already basically doing bands as I describe it. Otherwise you're returning tons of redundant data - the JSON-LD Model, the Metadata, and so forth, &c &c. And if it's just the URL, you _still_ need to differentiate between all these different types of data 3. why do you need to update the Model of a Thing, assuming that's what you mean by properties. 4. same 5. so doing POST to a Thing changes one set of data (making an operation), and doing PUT changes a different set of data 6. same D. On Tue, Jun 2, 2015 at 1:10 PM, Dave Raggett <dsr@w3.org> wrote: > > On 2 Jun 2015, at 16:26, David Janes <davidjanes@davidjanes.com> wrote: > > This is really one my favorite insights into how Things and APIs work > together. I gave two presentations on Global IoT Day in Vienna about this > > > http://www.slideshare.net/dpjanes/2015-04-global-io-t-day-wien-interoperability-with-stanardless-iot > > http://www.slideshare.net/dpjanes/what-a-thing-api-should-look-like-global-iot-day > > So building on the previous message, we have the same definitions for > controlling a thing as reading values of a Thing. How do we differentiate > between these various aspects? Add into the picture that we also have to > deal with _metadata_ and we have to deal with the _model_ (in JSON-LD), how > does this fit? > > So here's the key insight: a "Thing" is _not_ JSON dictionary that we > manipulate. Instead a Thing, identified by some Thing ID, is a jumping off > point to a cloud of related but independent JSON dictionaries. These are > (at least): > > - istate - the Input State: the actual state of thing > - ostate - the Output State: the state we want the thing to become > - meta - the Thing's metadata > - model - the Thing's JSON-LD Model > > The entire IoT / Web of Things can - and _should_ - be seen as just > reading an manipulating these four JSON dictionaries! The back end is just > shuffling the data around to the proper point to be actioned! > > > This sounds over complicated. What is wrong with a single model of the > thing and relying on the server platform to do its best to propagate > property changes in both directions? > > In my NodeJS server, the server creates a proxy object from its model. The > object is set up with setters and getters for its properties. For the > WebSocket protocol binding, a PUT message updates all of the properties > whilst a PATCH message updates a subset. The model consists of {metadata, > events, properties, actions}. The script writer doesn’t have to deal with > the protocol as this is handled by the server. > > In principle, the metadata can change e.g. when a sensor is moved from one > location to another. This shows the need for propagating changes to > metadata using same framework as for thing properties. I think it would be > appropriate to also associate events with metadata changes. > > You could describe actions in terms of pre and post conditions and then > use a reasoning engine to figure out what sequence of actions on what > things are needed to address some goal. > > Or perhaps I am missing your point? > > — > Dave Raggett <dsr@w3.org> > > > >
Received on Tuesday, 2 June 2015 18:33:10 UTC