- From: Andy Seaborne <andy@apache.org>
- Date: Wed, 09 Oct 2013 14:46:13 +0100
- To: public-rsp@w3.org
- Message-ID: <52555E25.8080403@apache.org>
On 08/10/13 09:02, Emanuele Della Valle wrote: > Dear Jim and all, > > you find my comments in-line. > > On Oct 7, 2013, at 8:31 PM, James Smith <jgsmith@gmail.com > <mailto:jgsmith@gmail.com>> > wrote: > >> I'm interjecting a few of my opinions interlinearly. >> >> -- Jim >> >> On Mon, Oct 7, 2013 at 2:09 PM, Emanuele Della Valle >> <emanuele.dellavalle@polimi.it >> <mailto:emanuele.dellavalle@polimi.it>> wrote: >> >> Dear Andy, >> >> thank you for this post. I answer in line below. >> >> On Oct 5, 2013, at 6:48 PM, Andy Seaborne <andy@apache.org >> <mailto:andy@apache.org>> >> wrote: >> >> > On the web, and indeed in any system of more than modest size >> and in one management domain, issues of >> > >> > * out of order delivery, including arbitrarily late arrival >> >> I believe that out of order is in scope, but not arbitrarily late >> arrival. We should allow for a maximum delay that guarantees for >> a minimum quality of answers. In many relevant use cases I have >> in mind reactiveness is more important than correctness, because >> either an answer arrive within a given time limit or it has no >> value. If we allow for arbitrarily late arrival, we cannot meet >> the reactivity requirement even if enough information arrived for >> a good enough answer. >> >> >> >> Designing for arbitrarily late arrival should be okay as long as we >> point out the tradeoffs between late arrival and timeliness. By >> "arbitrary," I mean that the recommendation coming out of the CG >> should not have explicit limits, but discuss how limits can be >> implemented, recognized, etc., with the cutoff being left up to the >> stream consumer. > > Ok, then I agree. > >> Timeliness and delivery order are, of course, within the context of >> the standard web protocols since this is a W3C group. I'd consider >> RDF streams over UDP to be out of scope for the W3C (even if RDF >> streams are constructed from data coming in via UDP). > > I would also consider UPD transport out of scope > >> >> >> > * new stream producers coming online, old stream producers ending >> > (discovery, joining, leaving) >> >> this is in scope and I believe it should be discuss under the >> topic RSP services. >> >> > * consumers joining and leaving >> >> same as above >> >> > * streams becoming unavailable >> >> this appears to be a difficult to handle point. What's the >> difference between a silent stream and an unavailable stream? >> However, I'd like to discuss this requirement. >> >> >> >> I'd say that an unavailable stream should return a status of 400 or >> above. A silent stream is one that exists (status < 400), but does >> not have data at the present time. Yes, if a pull stream, or heartbeats if a push stream. A silent stream can be differentiated from an unavailable stream by a heartbeat in the stream. In fact the difference could be very important to some applications e.g. sensors (e.g. smoke detectors!). Or there may be other reason for a control channel and a data channel and then it does not matter whether the heartbeat is one or the other. > mmm, I believe we are in a push architecture. RSP should not *pull* > data from RDF stream sources, but rather the RDF stream source should > *push* data to the RSP. This issue may have been discussed for > WebSockets already, but I'm not familiar with such a technology. Pull vs push: both. There are issues either way and it affects application design. For example, a processor may effectively sampling a high frequency stream (current temperature, consumed on a once-an-hour basis), or a processor may want alerts (event of interest occured). It would be possible to only cover one or the other styles but I think it is important to explicitly decide that and not slip into it implicitly. Implicit decisions cause problems later when communicating the work. >> > * ... then restarting (with or without loss of potential events) >> >> in scope, even if, as for out of order delivery, I would suggest >> to remember how central to RDF stream processing is the >> reactivity requirement. Making sure to deliver an answer, which >> has no longer any value, may be irrelevant. Systems may even >> decide to drop events without processing them. >> >> >> >> I'd suggest we look at some of the other streaming or stream-like >> protocols already in use on the web, such as WebSocket, for ideas on >> how to approach stream interruption and restarting. Or we could build >> on top of WebSocket since we're working within the web platform. > > Thank for this proposal. I will have a look. > >> >> > + delivery guarantees (at least once, exactly once, at most once) >> >> interesting... >> >> >> >> In other words, is deliver idempotent like a GET, PUT, or DELETE, or >> not, like a POST? My vote is for deliver to be idempotent, mirroring >> the behavior of asserting the same triple multiple times. > > > I agree, it will be nice, but I'm not sure it is possible. In our > recent work on the topic (see attached poster paper), we used POST to > stream RDF graphs on a RDF stream. A PUT sounded less natural when we > designed the protocol, but if you have other ideas, I will be happy to > hear them and understand their rationals. > > Bests, > > Emanuele > Andy
Received on Wednesday, 9 October 2013 13:46:45 UTC