- From: Maxim Kolchin <kolchinmax@gmail.com>
- Date: Wed, 2 Dec 2015 22:11:04 +0300
- To: elf Pavlik <perpetual-tripper@wwelves.org>
- Cc: public-ldpnext@w3.org, public-hydra@w3.org
> Do you consider to make exactly the same data available as hydra collection using http(s):// *and* real time stream using ws(s):// ? Yes, I plan to provide a way to get recorded observations. But I can't navigate the recorded observations with indexes, instead I'll need to use date and time range. Also I want to *somehow* use templated links (hydra:TemplatedLink) or filters (hydra:filter or hydra:Filter which are not in the vocabulary yet, as I know), to allow the user to request observations from a particular date and time range. Is this Updates-Via header standardised already? Have you consider a representation of this link/concept with a JSON-LD/RDF vocabulary, instead of an HTTP header? The pub/sub protocol is also a new thing, right? Did you consider existing websocket-based pub/sub protocols, e.g. WAMP [0]? > BTW If you only want to read, have you consider Server-Sent Events? No, I don't. But now, I see that the main reason to use websocket instead of SSE could be the support of non-browser clients. [0]: http://wamp-proto.org/ Cheers, Maxim On Wed, Dec 2, 2015 at 8:05 PM, elf Pavlik <perpetual-tripper@wwelves.org> wrote: > (cc += ldpnext since I will refer to SoLiD below) > > On 11/30/2015 09:36 AM, Maxim Kolchin wrote: >> Hi Markus, >> >>> On 27 Nov 2015 at 21:18, Maxim Kolchin wrote: >>>> I'm working on an API for IoT middleware, the API is going to be based >>>> on Hydra. >>> >>> Exciting! Is there already some documentation or a demo available somewhere? >> >> I'm still in the beginning, so it's not ready yet to be published :) >> >>>> In this API I want to provide a link to a websocket stream >>>> which publishes latest observations of a device. How such a link should >>>> be represented? Are there relevant approaches outside of Hydra >>>> vocabulary? >>>> >>>> Currently, I just extend hydra:Link, i.e.: >>>> >>>> { >>>> "@context": { >>>> "vocab": "http://example.com/#", >>>> "hydra": "http://www.w3.org/ns/hydra/core#", >>>> }, >>>> "@id": "vocab:observations", >>>> "@type": "hydra:Link", >>>> "rdfs:range": "hydra:Resource" >>>> } >>>> >>>> Probably "rdfs:range": "hydra:Resource" isn't appropriate statement, >>>> since a websocket stream is not a resource, but a kind of "continuous >>>> collection". >>> >>> I would argue it is a resource, it is just being accessed through a different protocol (Websocket vs. traditional HTTP) >>> >>> >>>> Then continuous collection could be just a subclass of >>>> hydra:Collection with subscribe/publish operations and subscribe >>>> operation could return ssn:Observation (from [0]), i.e.: >>>> >>>> { >>>> "@context": { >>>> "vocab": "http://example.com/#", >>>> "hydra": "http://www.w3.org/ns/hydra/core#", >>>> { >>>> "@id": "vocab:ContinuousCollection", >>>> "@type": "hydra:Class", >>>> "rdfs:subClassOf": "hydra:Collection", >>>> "hydra:supportedOperation": [ >>>> "@type": "hydra:Operation", >>>> "hydra:method": "WEBSOCKET_SUBSCRIBE", >>>> "hydra:returns": "ssn:Observation" >>>> ] >>>> } >>>> }, >>>> "@id": "vocab:observations", >>>> "@type": "hydra:Link", >>>> "rdfs:range": "vocab:ContinuousCollection" >>>> } >>>> >>>> What do you think about that, Hydranians? >>> >>> Why would you want to subclass hydra:Collection? I think this demands a different representation. I don't think that a collection and a stream >have too much in common. Hydra is currently quite HTTP focused but people raised similar points in the past already. Till we get to work on >that, I would propose to That you just subclass hydra:Resource. I personally would call such a class something like WebsocketSource (if you >want to be able to distinguish between sources and sinks), WebsocketStream, or also WebsocketResource instead of ContinuousCollection. >> >> I just wanted to show two options which I'm considering. I was >> considering Collection as an option, because both collection and >> stream are set of members. Although they probably should be disjoint >> classes, because collection should (or may) be navigateable (with the >> first and last links and others) and stream is definitely not. >> >> I'll represent it as a subclass of hydra:Resource. > > Hi Maxim, > > Do you consider to make exactly the same data available as hydra > collection using http(s):// *and* real time stream using ws(s):// ? > > How can client access observations recorded before it connects to web > socket? If the connection gets interrupted, how does the client get > observations made in a time when it disconnected? > > In SoLiD draft (heavily based on LDP), I see proposal for *Updates-Via* > HTTP header: https://github.com/solid/solid-spec#subscribing > > BTW If you only want to read, have you consider Server-Sent Events? > http://www.w3.org/TR/eventsource/ > > Cheers!
Received on Wednesday, 2 December 2015 19:12:17 UTC