Line
1<?xml version="1.0" encoding="UTF-8"?>
2 <?rfc toc="yes" ?>
3 <?rfc tocdepth="4" ?>
4 <?rfc private="" ?>
5 <!-- <?rfc editing="yes" ?> -->
6<rfc xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
7 xsi:noNamespaceSchemaLocation="http://src.llup.org/vendor/IETF/RFC/2629/rfc2629.xsd"
8 category="exp" ipr="full3978" docName="draft-ietf-llup-format-00">
9 <front>
10 <title abbrev="LLUP Decentralized Messaging Protocol">LLUP Decentralized Messaging Protocol</title>
11 <author initials="R." fullname="Russ Miles" role="editor" surname="Miles">
12 <organization/>
13 <address>
14 <email>russellmiles@mac.com</email>
15 <uri>http://www.russmiles.com</uri>
16 </address>
17 </author>
18 <author initials="S." fullname="Sylvain Hellegouarch" role="editor" surname="Hellegouarch">
19 <organization/>
20 <address>
21 <email>sh@defuze.org</email>
22 <uri>http://www.defuze.org</uri>
23 </address>
24 </author>
25 <author initials="M.D." fullname="M. David Peterson" surname="Peterson">
26 <organization/>
27 <address>
28 <email>m.david@xmlhacker.com</email>
29 <uri>http://xmlhacker.com</uri>
30 </address>
31 </author>
32 <author initials="D." fullname="Don Demsak" surname="Demsak">
33 <organization/>
34 <address>
35 <email>don@donxml.com</email>
36 <uri>http://www.donxml.com</uri>
37 </address>
38 </author>
39 <author initials="K." fullname="Kurt Cagle" role="editor" surname="Cagle">
40 <organization/>
41 <address>
42 <email>kurt.cagle@gmail.com</email>
43 <uri>http://www.understandingxml.com</uri>
44 </address>
45 </author>
46 <author initials="U." fullname="Uche Ogbuji" surname="Ogbuji">
47 <organization/>
48 <address>
49 <email>uche.ogbuji@fourthought.com</email>
50 <uri>http://www.ogbuji.net</uri>
51 </address>
52 </author>
53 <author initials="P." fullname="Peter Saint-Andre" surname="Saint-Andre">
54 <organization/>
55 <address>
56 <email>stpeter@jabber.org</email>
57 <uri>http://www.jabber.org/people/stpeter.shtml</uri>
58 </address>
59 </author>
60 <author initials="J." fullname="Jason Kolb" surname="Kolb">
61 <organization/>
62 <address>
63 <email>jason.kolb@gmail.com</email>
64 <uri>http://www.jasonkolb.com</uri>
65 </address>
66 </author>
67 <author initials="R." fullname="Ralph Meijer " surname="Meijer">
68 <organization/>
69 <address>
70 <email>llup@ralphm.ik.nu</email>
71 <uri>http://ralphm.net/</uri>
72 </address>
73 </author>
74 <author initials="D." fullname="Dan Zambonini" surname="Zambonini">
75 <organization/>
76 <address>
77 <email>dan.zambonini@boxuk.com</email>
78 <uri>http://www.boxuk.com/</uri>
79 </address>
80 </author>
81 <date month="July" year="2006"/>
82 <keyword>LLUP</keyword>
83 <keyword>Blip</keyword>
84 <keyword>Decentralized</keyword>
85 <keyword>Messaging</keyword>
86 <abstract>
87 <t>This memo presents a protocol for decentralized messaging communication</t>
88 </abstract>
89 </front>
90 <middle>
91 <section title="Introduction" anchor="introduction">
92 <t>The World Wide Web has grown exponentially for the last decade to become today a
93 mandatory token in many fields. One of the greatest strength of the World Wild Web
94 is its capacitiy to let anyone having his word. One issue carried with that freedom
95 is that it has quickly become hard to look for relevant topic as well as to keep
96 track of resources.</t>
97 <t>One way to solve that problem is for the end user to make the effort to filter, sort
98 and organise using tools at hand such as browser bookmarks or email client filters.
99 However this has partly failed as well because the majority of people now using the
100 World Wide Web is not computer's litterate but takes the freedom concept behind the
101 Internet so strongly that they do not want to be forced to make effort to use it.
102 This explains the success of search engines. Searching a resource is made in a given
103 context from the user point of view, once found a resource is only interesting to
104 the user in that particular context. The user could organise and bookmark that
105 resource but what if the context does not occur for a long time? We believe that the
106 user would have to go through the process of searching a resource in the given
107 context all over again. In fact, he could well forget he had already bookmarked a
108 resource. To sum up users tend to think that the system is there to help them
109 retrieving what they look for with little effort. </t>
110 <t>As a side point of searching information, the user might want to be updated when a
111 resource he was interested in has been updated without having to come back to the
112 resource from time to time. That problem has already been taken into account with
113 blogs through the use of syndication feeds but we feel we can go further by making
114 the system simpler. LLUP aims to improve the user's experience of the World Wide Web
115 with little intrusion in his habits. Basically the user should only need to state
116 that he wants to hook onto a resource by letting the underlying system do the work
117 of tracking that resource and in return being pinged when that resource has changed.
118 One of the LLUP principle is to reduce bandwith pollution as well. For instance
119 currently the syndication feed system send the complete feed each time an entry has
120 been modified. LLUP instead would only ping regarding the entry which has changed.</t>
121 <section title="Namespace and Version" anchor="namespace">
122 <t>The XML namespace URI for the XML data format described in this specification is:</t>
123 <t>http://www.x2x2x.org/llup</t>
124 </section>
125 <section title="Notational Conventions">
126 <t>This specification uses the namespace prefix "llup:" for the Namespace URI
127 identified in the <xref target="namespace">section</xref> above. Note that the
128 choice of namespace prefix is arbitrary and not semantically significant.</t>
129 <t>LLUP is specified using terms from the XML Infoset <xref
130 target="W3C.REC-xml-infoset-20040204">W3C.REC-xml-infoset-20040204</xref>.
131 However, this specification uses a shorthand for two common terms; the phrase
132 "Information Item" is omitted when naming Element Information Items and
133 Attribute Information Items. Therefore, when this specification uses the term
134 "element," it is referring to an Element Information Item in Infoset terms.
135 Likewise, when it uses the term "attribute," it is referring to an Attribute
136 Information Item.</t>
137 <t>Some sections of this specification are illustrated with fragments of a
138 non-normative RELAX NG Compact schema [RELAX-NG]. However, the text of this
139 specification provides the definition of conformance. A complete schema appears
140 in Appendix</t>
141 <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD",
142 "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be
143 interpreted as described in BCP 14, <xref target="refs.RFC2119">RFC2119</xref>,
144 as scoped to those conformance targets.</t>
145 </section>
146 </section>
147 <section title="Architecture">
148 <t> In order to meet the full set of concerns identified in the problem statement and
149 purpose of LLUP (see the previous section of this specification), the architecture
150 of LLUP needs to be specified at a generic level such that it is not tied to one
151 particular implementation technology. As such, the high-level architecture of LLUP
152 can be broken into a distinct set of services. Services provide an ideal means of
153 concentrating on the functional capabilities of LLUP without having to specify
154 particular implementation protocols or technologies; the focus is on the breakdown
155 of concerns rather than how those concerns are actually brought to life in a given
156 target domain. Each service that makes up part of the high-level LLUP architecture
157 needs to be described in terms of it's functions, the messages that it supports and
158 how it then interacts with the other services in order to play it's part in the
159 overall architecture. </t>
160 <section title="Generic services">
161 <t> Three key characteristics are essential to the way that the LLUP generic
162 services are described. The service definitions presented here should provide a
163 framework by which the services can: <list style="symbols">
164 <t>Be accurately implemented by a given system such that it can claim to be
165 implementing LLUP.</t>
166 <t>Support a myriad of possible presentation techniques and features that
167 can then be applied to take advantage of LLUP from a user and system
168 configuration perspective. </t>
169 </list></t>
170 <t>The aim is that the following services definitions can be used by any system that
171 sees a value in adopting LLUP, without unduly constraining the implementation of
172 the protocol and hence its applicability to a target domain. LLUP contains three
173 distinct services: <list style="symbols">
174 <t>The Publication Service: A means of creating new BLIPs.</t>
175 <t>The Subscription Service: A means of subscribing to specific types of
176 BLIPs.</t>
177 <t>The BlogXast Service: A means of routing BLIPS intelligently in order to
178 create a form of information transmission topology.</t>
179 </list></t>
180 <section title="BLIP">
181 <t>At the heart of any deployment of the LLUP services is the concept of a BLIP.
182 A BLIP is analogous to an entry in a traditional ATOM new feed. A BLIP
183 contains enough information to enable the LLUP services to understand and
184 intelligently route the BLIP to those endpoints that are interested in the
185 information that the BLIP contains. A BLIP can be used to either wrap the
186 actual content to which it is referring, or a simple reference to more
187 complex content that can be retrieved by the receiving end point as and when
188 they deem it appropriate. The LLUP architecture's whole purpose is to
189 support the creation, routing and reception of BLIPS. </t>
190 <section title="Publication service">
191 <t>The LLUP publication service's core purpose is to provide a means of
192 creating new LLUP-complicant messages (or BLIPS) in order to inform a
193 LLUP enabled system that there is either new content available or to
194 simply intelligently broadcast a notification. A BLIP may reference a
195 set resource or simply encapsulate a notification, for the purposes of
196 the publication service either type of BLIP will be accepted. A
197 publication service may implement BLIP acceptance policies or even user
198 accounts, this is entirely up to the service implementation. </t>
199 </section>
200 <section title="Subscription service">
201 <t>The LLUP subscription service's core purpose is to provide a means for
202 systems to express an interest in receiving certain types of BLIP. With
203 existing news feeds, the entire feed needs to be retrieved to decide
204 what has changed. Contrasting with this type of approach, a subscription
205 service only the BLIPs that are of interest will be received and only
206 when new information has been made available.</t>
207 </section>
208 <section title="Blogxast service">
209 <t>The LLUP blogxast service is the most critical part of the LLUP
210 architecture. At its most simplest, a blogXast service can accept BLIP's
211 and the intelligently transmit those BLIPs on depending on BLIP content
212 and the internal service configuration.</t>
213 <t>A blogXast service can be thought of as being a combination of a
214 publication service and a subscription service. It is a subscription
215 service as it will only forward BLIPSs to further end points according
216 to subscription information about those end points. It has the
217 characteristics of a publication service because it can accept new BLIPs
218 that are transmitted to it.</t>
219 <t>The power of a blogXast service is in the fact that it offers a form of
220 intelligent router for BLIPs. In a simple configuration, as shown in
221 Figure 1 below, a BlogXast service can be chained in-between a
222 subscription and publication service. [TBD] need to place a figure here
223 to show a simple blogxast service sitting in-between a publication and
224 subscriptions service. Although this is the simplest configuration this
225 does not really demonstrate the real power of the blogxast service.
226 Remembering that a blogxast service can filter the blips it receives (as
227 a form of publication service) and route them onto end points that have
228 expressed an interest on a particular type of BLIP (using the
229 subscription characteristics), because of the way that bloXast looks
230 like a combination of these service it can itself be chained together to
231 form an intelligent network topology; intelligent because it routes
232 messages based on content and allows full control over the lifecycle of
233 BLIPs, removing the problems of broadcasting: redundant transmissions
234 (messages can be recognised and if already received then not
235 re-transmitted) and transmission of irrelevant content (messages are
236 targeted to only those end points that have expressed an interest so
237 that services don't receive messages when they are not required or
238 interesting).</t>
239 </section>
240 </section>
241 </section>
242 </section>
243 <section title="LLUP Elements Definition">
244 <t>This section explains the different elements available to the LLUP messaging
245 protocol.</t>
246 <section title="Common elements">
247 <section title="The &quot;llup:sender&quot; element">
248 <t>(description here)</t>
249 <figure anchor="llup_sender" title="The llup:sender element">
250 <artwork><![CDATA[
251 llupSender =
252 element llup:sender {
253 attribute credentia-id { text },
254 attribute email { text },
255 text
256 }
257 ]]>
258 </artwork>
259 </figure>
260 </section>
261 <section title="The &quot;llup:recipients&quot; element">
262 <t>(description here)</t>
263 <figure anchor="llup_recipients" title="The llup:recipients element">
264 <artwork><![CDATA[
265 llupRecipients =
266 element llup:recipients {
267 llupRecipient+
268 }
269 ]]>
270 </artwork>
271 </figure>
272 <t>The following child elements are defined by this specification:</t>
273 <t>
274 <list style="symbols">
275 <t>llup:recipients element MUST contain one or more llup:recipient
276 element(s)</t>
277 </list>
278 </t>
279 </section>
280 <section title="The &quot;llup:recipient&quot; element">
281 <t>(description here)</t>
282 <figure anchor="llup_recipient" title="The llup:recipient element">
283 <artwork><![CDATA[
284 llupRecipient =
285 element llup:recipient {
286 text
287 }
288 ]]>
289 </artwork>
290 </figure>
291 </section>
292 <section title="The &quot;llup:time-span&quot; element">
293 <t>(description here)</t>
294 <figure anchor="llup_time_span" title="The llup:time-span element">
295 <artwork><![CDATA[
296 llupTimeSpan =
297 element llup:time-span {
298 attribute start { xsd:dateTime },
299 attribute expires { xsd:dateTime }
300 }
301 ]]>
302 </artwork>
303 </figure>
304 </section>
305 <section title="The &quot;llup:keywords&quot; element">
306 <t>(description here)</t>
307 <figure anchor="llup_keywords" title="The llup:keywords element">
308 <artwork><![CDATA[
309 llupKeywords =
310 element llup:keywords {
311 llupKeyword+
312 }
313 ]]>
314 </artwork>
315 </figure>
316 <t>The following child elements are defined by this specification:</t>
317 <t>
318 <list style="symbols">
319 <t>llup:keywords element MUST contain one or more llup:keyword
320 element(s)</t>
321 </list>
322 </t>
323 </section>
324 <section title="The &quot;llup:keyword&quot; element">
325 <t>(description here)</t>
326 <figure anchor="llup_keyword" title="The llup:keyword element">
327 <artwork><![CDATA[
328 llupKeyword =
329 element llup:keyword {
330 text
331 }
332 ]]>
333 </artwork>
334 </figure>
335 </section>
336 <section title="The &quot;llup:home&quot; element">
337 <t>(description here)</t>
338 <figure anchor="llup_home" title="The llup:home element">
339 <artwork><![CDATA[
340 llupHome =
341 element llup:home {
342 text
343 }
344 ]]>
345 </artwork>
346 </figure>
347 </section>
348 <section title="The &quot;llup:admin&quot; element">
349 <t>(description here)</t>
350 <figure anchor="llup_admin" title="The llup:admin element">
351 <artwork><![CDATA[
352 llupAdmin =
353 element llup:admin {
354 text
355 }
356 ]]>
357 </artwork>
358 </figure>
359 </section>
360 <section title="The &quot;llup:link&quot; element">
361 <t>(description here)</t>
362 <figure anchor="llup_link" title="The llup:link element">
363 <artwork><![CDATA[
364 llupLink =
365 element llup:link {
366 text
367 }
368 ]]>
369 </artwork>
370 </figure>
371 </section>
372 <section title="The &quot;llup:subject&quot; element">
373 <t>(description here)</t>
374 <figure anchor="llup_subject" title="The llup:subject element">
375 <artwork><![CDATA[
376 llupSubject =
377 element llup:subject {
378 text
379 }
380 ]]>
381 </artwork>
382 </figure>
383 </section>
384 <section title="The &quot;llup:history&quot; element">
385 <t>(description here)</t>
386 <figure anchor="llup_history" title="The llup:history element">
387 <artwork><![CDATA[
388 llupHistory =
389 element llup:history {
390 attribute created { xsd:dateTime },
391 attribute last-update { xsd:dateTime }
392 }
393 ]]>
394 </artwork>
395 </figure>
396 </section>
397 <section title="The &quot;llup:standingblip&quot; element">
398 <t>(description here)</t>
399 <figure anchor="llup_standingblip" title="The llup:standingblip element">
400 <artwork><![CDATA[
401 llupStandingBlip =
402 element llup:standingblip {
403 llupSender,
404 llupHome
405 }
406 ]]>
407 </artwork>
408 </figure>
409 <t>The following child elements are defined by this specification:</t>
410 <t>
411 <list style="symbols">
412 <t>llup:standingblip element MUST contain one llup:sender element</t>
413 <t>llup:standingblip element MUST contain one llup:home element</t>
414 </list>
415 </t>
416 </section>
417 <section title="The &quot;llup:blipconsumer&quot; element">
418 <t>(description here)</t>
419 <figure anchor="llup_blipconsumer" title="The llup:blipconsumer element">
420 <artwork><![CDATA[
421 llupBlipConsumer =
422 element llup:blipconsumer {
423 llupSender,
424 llupHome
425 }
426 ]]>
427 </artwork>
428 </figure>
429 <t>The following child elements are defined by this specification:</t>
430 <t>
431 <list style="symbols">
432 <t>llup:blipconsumer element MUST contain one llup:sender element</t>
433 <t>llup:blipconsumer element MUST contain one llup:home element</t>
434 </list>
435 </t>
436 </section>
437 <section title="The &quot;llup:receiveblipendpoint&quot; element">
438 <t>(description here)</t>
439 <figure anchor="llup_receiveblipendpoint"
440 title="The llup:receiveblipendpoint element">
441 <artwork><![CDATA[
442 llupReceiveBlipEndPoint =
443 element llup:receiveblipendpoint {
444 text
445 }
446 ]]>
447 </artwork>
448 </figure>
449 </section>
450 <section title="The &quot;llup:addblipconsumerendpoint&quot; element">
451 <t>(description here)</t>
452 <figure anchor="llup_addblipconsumerendpoint"
453 title="The llup:addblipconsumerendpoint element">
454 <artwork><![CDATA[
455 llupAddBlipConsumerEndPoint =
456 element llup:addblipconsumerendpoint {
457 text
458 }
459 ]]>
460 </artwork>
461 </figure>
462 </section>
463 <section title="The &quot;llup:publicationservice&quot; element">
464 <t>(description here)</t>
465 <figure anchor="llup_publicationservice"
466 title="The llup:publicationservice element">
467 <artwork><![CDATA[
468 llupPublicationService =
469 element llup:publicationservice {
470 text
471 }
472 ]]>
473 </artwork>
474 </figure>
475 </section>
476 </section>
477 <section title="Subscription Elements">
478 <section title="The &quot;llup:subscribe&quot; element">
479 <t>(description here)</t>
480 <figure anchor="llup_subscribe" title="The llup:subscribe element">
481 <artwork><![CDATA[
482 llupSubscribe =
483 element
484 llup:subscribe {
485 llupSender,
486 llupRecipients,
487 llupTimeSpan
488 }
489 ]]>
490 </artwork>
491 </figure>
492 <t>The following child elements are defined by this specification:</t>
493 <t>
494 <list style="symbols">
495 <t>llup:subscribe element MUST contain one llup:sender element</t>
496 <t>llup:subscribe element MUST contain one llup:recipients element</t>
497 <t>llup:subscribe element MUST contain one llup:timespan element</t>
498 </list>
499 </t>
500 </section>
501 <section title="The &quot;llup:subscription&quot; element">
502 <t>(description here)</t>
503 <figure anchor="llup_subscription" title="The llup:subscription element">
504 <artwork><![CDATA[
505 llupSubscription =
506 element
507 llup:subscription {
508 llupSender,
509 llupHome
510 }
511 ]]>
512 </artwork>
513 </figure>
514 <t>The following child elements are defined by this specification:</t>
515 <t>
516 <list style="symbols">
517 <t>llup:subscription element MUST contain a llup:sender element</t>
518 <t>llup:subscription element MUST contain a llup:home element</t>
519 </list>
520 </t>
521 </section>
522 <section title="The &quot;llup:cancelsubscription&quot; element">
523 <t>(description here)</t>
524 <figure anchor="llup_cancelsubscription"
525 title="The llup:cancelsubscription element">
526 <artwork><![CDATA[
527 llupCancelSubscription =
528 element
529 llup:cancelsubscription {
530 llupSender,
531 llupHome
532 }
533 ]]>
534 </artwork>
535 </figure>
536 <t>The following child elements are defined by this specification:</t>
537 <t>
538 <list style="symbols">
539 <t>llup:cancelsubscription element MUST contain a llup:sender element</t>
540 <t>llup:cancelsubscription element MUST contain a llup:home element</t>
541 </list>
542 </t>
543 </section>
544 <section title="The &quot;llup:subscriptioncancelled&quot; element">
545 <t>(description here)</t>
546 <figure anchor="llup_subscriptioncancelled"
547 title="The llup:subscriptioncancelled element">
548 <artwork><![CDATA[
549 llupSubscriptionCancelled =
550 element
551 llup:subscriptioncancelled {
552 llupSender,
553 llupAdmin
554 }
555 ]]>
556 </artwork>
557 </figure>
558 <t>The following child elements are defined by this specification:</t>
559 <t>
560 <list style="symbols">
561 <t>llup:cancelsubscription element MUST contain a llup:sender element</t>
562 <t>llup:cancelsubscription element MUST contain a llup:admin element</t>
563 </list>
564 </t>
565 </section>
566 </section>
567 <section title="Publication elements">
568 <section title="The &quot;llup:addpublicationservice&quot; element">
569 <t>(description here)</t>
570 <figure anchor="llup_addpublicationservice"
571 title="The llup:addpublicationservice element">
572 <artwork><![CDATA[
573 llupAddPublicationService =
574 element llup:addpublicationservice {
575 attribute origin { text },
576 attribute id { text },
577 llupSender,
578 llupTimeSpan,
579 llupAddBlipConsumerEndPoint
580 }
581 ]]>
582 </artwork>
583 </figure>
584 <t>The following child elements are defined by this specification:</t>
585 <t>
586 <list style="symbols">
587 <t>llup:addpublicationservice element MUST contain a llup:sender element</t>
588 <t>llup:addpublicationservice element MUST contain a llup:timespan
589 element</t>
590 <t>llup:addpublicationservice element MUST contain a
591 llup:addblipconsumerendpoint element</t>
592 </list>
593 </t>
594 </section>
595 <section title="The &quot;llup:publicationserviceadded&quot; element">
596 <t>(description here)</t>
597 <figure anchor="llup_publicationserviceadded"
598 title="The llup:publicationserviceadded element">
599 <artwork><![CDATA[
600 llupPublicationServiceAdded =
601 element llup:addpublicationservice {
602 llupSender,
603 llupPublicationService
604 }
605 ]]>
606 </artwork>
607 </figure>
608 <t>The following child elements are defined by this specification:</t>
609 <t>
610 <list style="symbols">
611 <t>llup:publicationserviceadded element MUST contain a llup:sender
612 element</t>
613 <t>llup:publicationserviceadded element MUST contain a
614 llup:publicationservice element</t>
615 </list>
616 </t>
617 </section>
618 <section title="The &quot;llup:removepublicationservice&quot; element">
619 <t>(description here)</t>
620 <figure anchor="llup_removepublicationservice"
621 title="The llup:removepublicationservice element">
622 <artwork><![CDATA[
623 llupRemovePublicationService =
624 element llup:removepublicationservice {
625 attribute id { text },
626 llupSender,
627 llupPublicationService
628 }
629 ]]>
630 </artwork>
631 </figure>
632 <t>The following child elements are defined by this specification:</t>
633 <t>
634 <list style="symbols">
635 <t>llup:removepublicationservice element MUST contain a llup:sender
636 element</t>
637 <t>llup:removepublicationservice element MUST contain a
638 llup:publicationservice element</t>
639 </list>
640 </t>
641 </section>
642 <section title="The &quot;llup:publicationserviceremoved&quot; element">
643 <t>(description here)</t>
644 <figure anchor="llup_publicationserviceremoved"
645 title="The llup:publicationserviceremoved element">
646 <artwork><![CDATA[
647 llupRemovePublicationService =
648 element llup:removepublicationservice {
649 llupSender,
650 llupAdlin
651 }
652 ]]>
653 </artwork>
654 </figure>
655 <t>The following child elements are defined by this specification:</t>
656 <t>
657 <list style="symbols">
658 <t>llup:publicationserviceremoved element MUST contain a llup:sender
659 element</t>
660 <t>llup:publicationserviceremoved element MUST contain a
661 llup:publicationservice element</t>
662 </list>
663 </t>
664 </section>
665 </section>
666 <section title="BLIP elements">
667 <section title="The &quot;llup:createblip&quot; element">
668 <t>(description here)</t>
669 <figure anchor="llup_createblip" title="The llup:createblip element">
670 <artwork><![CDATA[
671 llupCreateBlip =
672 element llup:createblip {
673 attribute origin { text },
674 attribute id { text },
675 llupSender,
676 llupRecipients,
677 llupLink,
678 llupSubject,
679 llupTimeSpan,
680 llupKeywords
681 }
682 ]]>
683 </artwork>
684 </figure>
685 <t>The following child elements are defined by this specification:</t>
686 <t>
687 <list style="symbols">
688 <t>llup:createblip element MUST contain a llup:sender element</t>
689 <t>llup:createblip element MUST contain a llup:recipients element</t>
690 <t>llup:createblip element MUST contain a llup:link element</t>
691 <t>llup:createblip element MUST contain a llup:subject element</t>
692 <t>llup:createblip element MUST contain one llup:timespan element</t>
693 <t>llup:createblip element SHOULD contain one llup:keywords element</t>
694 </list>
695 </t>
696 </section>
697 <section title="Standing BLIP elements">
698 <section title="The &quot;llup:createstandingblip&quot; element">
699 <t>(description here)</t>
700 <figure anchor="llup_createstandingblip"
701 title="The llup:createstandingblip element">
702 <artwork><![CDATA[
703 llupCreateBlip =
704 element llup:createstandingblip {
705 attribute origin { text },
706 attribute id { text },
707 llupSender,
708 llupRecipients,
709 llupLink,
710 llupSubject,
711 llupTimeSpan,
712 llupKeywords
713 }
714 ]]>
715 </artwork>
716 </figure>
717 <t>The following child elements are defined by this specification:</t>
718 <t>
719 <list style="symbols">
720 <t>llup:createstandingblip element MUST contain a llup:sender
721 element</t>
722 <t>llup:createstandingblip element MUST contain a llup:recipients
723 element</t>
724 <t>llup:createstandingblip element MUST contain a llup:link element</t>
725 <t>llup:createstandingblip element MUST contain a llup:subject
726 element</t>
727 <t>llup:createstandingblip element MUST contain one llup:timespan
728 element</t>
729 <t>llup:createstandingblip element SHOULD contain one llup:keywords
730 element</t>
731 </list>
732 </t>
733 </section>
734 <section title="The &quot;llup:cancelstandingblip&quot; element">
735 <t>(description here)</t>
736 <figure anchor="llup_cancelstandingblip"
737 title="The llup:cancelstandingblip element">
738 <artwork><![CDATA[
739 llupCancelStandingBlip =
740 element llup:cancelstandingblip {
741 attribute origin { text },
742 attribute id { text },
743 llupSender,
744 llupStandingBlip
745 }
746 ]]>
747 </artwork>
748 </figure>
749 <t>The following child elements are defined by this specification:</t>
750 <t>
751 <list style="symbols">
752 <t>llup:cancelstandingblip element MUST contain a llup:sender
753 element</t>
754 <t>llup:cancelstandingblip element MUST contain a llup:standingblip
755 element</t>
756 </list>
757 </t>
758 </section>
759 <section title="The &quot;llup:standingblipcancelled&quot; element">
760 <t>(description here)</t>
761 <figure anchor="llup_standingblipcancelled"
762 title="The llup:standingblipcancelled element">
763 <artwork><![CDATA[
764 llupStandingBlipCancelled =
765 element
766 llup:standingblipcancelled {
767 llupSender,
768 llupAdmin
769 }
770 ]]>
771 </artwork>
772 </figure>
773 <t>The following child elements are defined by this specification:</t>
774 <t>
775 <list style="symbols">
776 <t>llup:standingblipcancelled element MUST contain a llup:sender
777 element</t>
778 <t>llup:standingblipcancelled element MUST contain a llup:admin
779 element</t>
780 </list>
781 </t>
782 </section>
783 </section>
784 <section title="BLIP Consumer elements">
785 <section title="The &quot;llup:addblipconsumer&quot; element">
786 <t>(description here)</t>
787 <figure anchor="llup_addblipconsumer"
788 title="The llup:addblipconsumer element">
789 <artwork><![CDATA[
790 llupAddBlipConsumer =
791 element
792 llup:addblipconsumer {
793 llupSender,
794 llupTimeSpan,
795 llupReceiveBlipEndPoint
796 }
797 ]]>
798 </artwork>
799 </figure>
800 <t>The following child elements are defined by this specification:</t>
801 <t>
802 <list style="symbols">
803 <t>llup:addblipconsumer element MUST contain a llup:sender element</t>
804 <t>llup:addblipconsumer element MUST contain a llup:timespan element</t>
805 <t>llup:addblipconsumer element MUST contain a
806 llup:receiveblipendpoint element</t>
807 </list>
808 </t>
809 </section>
810 <section title="The &quot;llup:blipconsumeradded&quot; element">
811 <t>(description here)</t>
812 <figure anchor="llup_blipconsumeradded"
813 title="The llup:blipconsumeradded element">
814 <artwork><![CDATA[
815 llupBlipConsumerAdded =
816 element
817 llup:addblipconsumer {
818 llupSender,
819 llupBlipConsumer
820 }
821 ]]>
822 </artwork>
823 </figure>
824 <t>The following child elements are defined by this specification:</t>
825 <t>
826 <list style="symbols">
827 <t>llup:addblipconsumer element MUST contain a llup:sender element</t>
828 <t>llup:addblipconsumer element MUST contain a llup:blipconsumer
829 element</t>
830 </list>
831 </t>
832 </section>
833 <section title="The &quot;llup:removeblipconsumer&quot; element">
834 <t>(description here)</t>
835 <figure anchor="llup_removeblipconsumer"
836 title="The llup:removeblipconsumer element">
837 <artwork><![CDATA[
838 llupRemoveBlipConsumer =
839 element llup:removeblipconsumer {
840 attribute id { text },
841 llupSender,
842 llupBlipConsumer
843 }
844 ]]>
845 </artwork>
846 </figure>
847 <t>The following child elements are defined by this specification:</t>
848 <t>
849 <list style="symbols">
850 <t>llup:removeblipconsumer element MUST contain a llup:sender
851 element</t>
852 <t>llup:removeblipconsumer element MUST contain a llup:blipconsumer
853 element</t>
854 </list>
855 </t>
856 </section>
857 <section title="The &quot;llup:blipconsumerremoved&quot; element">
858 <t>(description here)</t>
859 <figure anchor="llup_blipconsumerremoved"
860 title="The llup:blipconsumerremoved element">
861 <artwork><![CDATA[
862 llupRemoveBlipConsumer =
863 element llup:blipconsumerremoved {
864 llupSender,
865 llupAdmin
866 }
867 ]]>
868 </artwork>
869 </figure>
870 <t>The following child elements are defined by this specification:</t>
871 <t>
872 <list style="symbols">
873 <t>llup:blipconsumerremoved element MUST contain a llup:sender
874 element</t>
875 <t>llup:blipconsumerremoved element MUST contain a llup:admin
876 element</t>
877 </list>
878 </t>
879 </section>
880 </section>
881 </section>
882 </section>
883 </middle>
884 <back>
885 <references title="Normative References">
886 <reference anchor="refs.RFC2119">
887 <front>
888 <title abbrev="Key words for use in RFCs">Key words for use in RFCs to Indicate
889 Requirement Levels</title>
890 <author initials="S." surname="Bradner" fullname="Scott Bradner">
891 <organization> Harvard University </organization>
892 </author>
893 <date month="March" year="1997"/>
894 </front>
895 <seriesInfo name="RFC" value="2119"/>
896 <seriesInfo name="BCP" value="14"/>
897 </reference>
898 <reference anchor="W3C.REC-xml-infoset-20040204"
899 target="http://www.w3.org/TR/2004/REC-xml-infoset-20040204/">
900 <front>
901 <title>XML Information Set (Second Edition)</title>
902 <author fullname="John Cowan" surname="Cowan" initials="J.">
903 <organization/>
904 </author>
905 <author fullname="Richard Tobin" surname="Tobin" initials="R.">
906 <organization/>
907 </author>
908 <date month="February" year="2004"/>
909 </front>
910 </reference>
911 </references>
912 <!--<references title="Informative References">
913
914 <reference anchor="RELAX-NG" target="http://www.oasis-open.org/committees/relax-ng/compact-20021121.html">
915 <front>
916 <title>RELAX NG Compact Syntax</title>
917 <author fullname="James Clark" surname="Clark" initials="J.">
918 <organization/>
919 </author>
920 <date month="November" year="2002"/>
921 </front>
922 </reference>
923
924 </references> -->
925 <section title="RELAX NG Compact Schema">
926 <t>This appendix is informative.</t>
927 <t>The schema below validates the XML document format defined by this specification.
928 Updates to this specification could add markup in the LLUP namespace in a manner
929 that is invalid according to the schema below.</t>
930 <figure anchor="llup_relaxng_compact_schema" title="The LLUP RelaxNG compact schema">
931 <artwork><![CDATA[
932 namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
933 namespace llup = "http://www.x2x2x.org/projects/llup"
934
935 start =
936 llupSubscribe
937 | llupSubscription
938 | llupCancelSubscription
939 | llupSubscriptionCancelled
940 | llupFilter
941 | llupMessage
942 | llupReceived
943 | llupCreateBlip
944 | llupCreateStandingBlip
945 | llupCancelStandingBlip
946 | llupCancelStandingBlip
947 | llupStandingBlipCancelled
948 | llupAddBlipConsumer
949 | llupRemoveBlipConsumer
950 | llupBlipConsumerRemoved
951 | llupAddPublicationService
952 | llupPublicationServiceAdded
953 | llupRemovePublicationService
954 | llupPublicationServiceRemoved
955 | llupBlipConsumerAdded
956 # llup elements
957 llupSubscribe = element llup:subscribe { llupSender, llupRecipients, llupTimeSpan }
958 llupSubscription = element llup:subscription { llupSender, llupHome }
959 llupCancelSubscription = element llup:cancelsubscription { llupSender, llupHome }
960 llupSubscriptionCancelled = element llup:subscriptioncancelled { llupSender, llupAdmin }
961 llupFilter = element llup:filter { llupSender, llupTimeSpan, llupKeywords }
962 llupMessage =
963 element llup:message {
964 attribute origin { text },
965 attribute id { text },
966 llupSender,
967 llupHistory,
968 llupRecipients,
969 llupTimeSpan,
970 llupLink,
971 llupSubject,
972 llupKeywords
973 }
974 llupReceived = element llup:received { llupSender, llupHome }
975 llupCreateBlip =
976 element llup:createblip {
977 attribute origin { text },
978 attribute id { text },
979 llupSender,
980 llupRecipients,
981 llupLink,
982 llupSubject,
983 llupTimeSpan,
984 llupKeywords
985 }
986 llupCreateStandingBlip =
987 element llup:createstandingblip {
988 attribute origin { text },
989 attribute id { text },
990 llupSender,
991 llupRecipients,
992 llupLink,
993 llupSubject,
994 llupTimeSpan,
995 llupKeywords
996 }
997 llupCancelStandingBlip =
998 element llupcancelstandingblip {
999 attribute origin { text },
1000 attribute id { text },
1001 llupSender,
1002 llupStandingBlip
1003 }
1004 llupStandingBlipCancelled = element llup:standingblipcancelled { llupSender, llupAdmin }
1005 llupAddBlipConsumer = element addblipconsumer { llupSender, llupTimeSpan, llupReceiveBlipEndPoint }
1006 llupRemoveBlipConsumer =
1007 element llup:removeblipconsumer {
1008 attribute id { text },
1009 llupSender,
1010 llupBlipConsumer
1011 }
1012 llupBlipConsumerRemoved = element llup:blipconsumerremoved { llupSender, llupAdmin }
1013 llupAddPublicationService =
1014 element llup:addpublicationservice {
1015 attribute origin { text },
1016 attribute id { text },
1017 llupSender,
1018 llupTimeSpan,
1019 llupAddBlipConsumerEndPoint
1020 }
1021 llupPublicationServiceAdded =
1022 element llup:publicationserviceadded { llupSender, llupPublicationService }
1023 llupRemovePublicationService =
1024 element llup:removepublicationservice {
1025 attribute id { text },
1026 llupSender,
1027 llupPublicationService
1028 }
1029 llupPublicationServiceRemoved = element llup:publicationserviceremoved { llupSender, llupAdmin }
1030 llupBlipConsumerAdded = element llup:blipconsumeradded { llupSender, llupBlipConsumer }
1031 #
1032 llupSender =
1033 element llup:sender {
1034 attribute credentia-id { text },
1035 attribute email { text },
1036 text
1037 }
1038 llupRecipients = element llup:recipients { llupRecipient+ }
1039 llupRecipient = element llup:recipient { text }
1040 llupTimeSpan =
1041 element llup:time-span {
1042 attribute start { xsd:dateTime },
1043 attribute expires { xsd:dateTime }
1044 }
1045 llupKeywords = element llup:keywords { llupKeyword* }
1046 llupKeyword = element llup:keyword { text }
1047 llupHome = element llup:home { text }
1048 llupAdmin = element llup:admin { text }
1049 llupLink = element llup:link { text }
1050 llupSubject = element llup:subject { text }
1051 llupHistory =
1052 element llup:history {
1053 attribute created { xsd:dateTime },
1054 attribute last-update { xsd:dateTime }
1055 }
1056 llupStandingBlip = element llup:standingblip { llupSender, llupHome }
1057 llupReceiveBlipEndPoint = element llup:receiveblipendpoint { text }
1058 llupBlipConsumer = element llup:blipconsumer { llupSender, llupHome }
1059 llupAddBlipConsumerEndPoint = element llup:addblipconsumerendpoint { text }
1060 llupPublicationService = element llup:publicationservice { llupSender, llupHome }
1061
1062 ]]>
1063 </artwork>
1064 </figure>
1065 </section>
1066 <section title="Change Log">
1067 <t>This section should be removed before final publication.</t>
1068 <t>-00:</t>
1069 <t>
1070 <list style="symbols">
1071 <t>First draft</t>
1072 </list>
1073 </t>
1074 </section>
1075 </back>
1076</rfc>