-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathcc-51003.xml
1308 lines (1261 loc) · 74 KB
/
cc-51003.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<?xml version="1.0" encoding="UTF-8"?>
<csd-standard xmlns="https://www.metanorma.org/ns/csd">
<bibdata type="standard">
<title language="en" format="text/plain">Calendaring and scheduling — Support for Series in iCalendar</title>
<docidentifier type="csd">CC/CD 51003:2018</docidentifier>
<docnumber>51003</docnumber>
<date type="published">
<on>2018-11-30</on>
</date>
<contributor>
<role type="author"/>
<organization>
<name>CalConnect</name>
</organization>
</contributor>
<contributor>
<role type="author"/>
<person>
<name>
<completename>Michael Douglass</completename>
</name>
</person>
</contributor>
<contributor>
<role type="publisher"/>
<organization>
<name>CalConnect</name>
</organization>
</contributor>
<edition>1</edition>
<version>
<revision-date>2018-11-30</revision-date>
</version>
<language>en</language>
<script>Latn</script>
<status>
<stage>committee-draft</stage>
</status>
<copyright>
<from>2018</from>
<owner>
<organization>
<name>CalConnect</name>
</organization>
</owner>
</copyright>
<ext>
<doctype>standard</doctype>
<editorialgroup>
<technical-committee>CALENDAR</technical-committee>
</editorialgroup>
</ext>
</bibdata>
<boilerplate>
<copyright-statement>
<clause>
<p id="_51738650-d18c-46b2-a063-ad0628c5cc55">© 2018 The Calendaring and Scheduling Consortium, Inc. </p>
</clause>
</copyright-statement>
<license-statement>
<clause>
<title>Warning for Drafts</title>
<p id="_bf6db75e-c41f-4528-87d2-f48dfb083c5b">This document is not a CalConnect Standard. It is distributed for review and
comment, and is subject to change without notice and may not be referred to as
a Standard. Recipients of this draft are invited to submit, with their
comments, notification of any relevant patent rights of which they are aware
and to provide supporting documentation.
</p>
</clause>
</license-statement>
<legal-statement>
<clause>
<p id="_97ac0333-3a90-44bc-adf3-e33894fbb44d">All rights reserved. Unless otherwise specified, no part of this
publication may be reproduced or utilized otherwise in any form or by any
means, electronic or mechanical, including photocopying, or posting on the
internet or an intranet, without prior written permission. Permission can
be requested from the address below. </p>
</clause>
</legal-statement>
<feedback-statement>
<clause>
<p id="boilerplate-name">The Calendaring and Scheduling Consortium, Inc.</p>
<p id="boilerplate-address">4390 Chaffin Lane<br/>
McKinleyville<br/>
California 95519<br/>
United States of America<br/>
<br/>
<link target="mailto:[email protected]">[email protected]</link><br/>
<link target="www.calconnect.org">www.calconnect.org</link>
</p>
</clause>
</feedback-statement>
</boilerplate>
<preface><foreword id="_f9724417-74ba-4b7b-bab3-0199650a2990" obligation="informative"><title>Foreword</title>
<p id="_7d6fc6b4-e3bc-4aef-b38a-dc1a3e1b0ba9">The Calendaring and Scheduling Consortium (“CalConnect”) is a global
non-profit organization with the aim to facilitate interoperability of
collaborative technologies and tools through open standards.</p>
<p id="_2977b89b-3bcd-40b5-bd13-21efb94aed3d">CalConnect works closely with international and regional partners,
of which the full list is available on our website
(<link target="https://www.calconnect.org/about/liaisons-and-relationships"/>).</p>
<p id="_89df92cd-0d24-442b-9404-1f42595304e2">The procedures used to develop this document and those intended for its
further maintenance are described in the CalConnect Directives.</p>
<p id="_fce62ce0-3ca4-41fd-b3ab-eb1d8466b446">In particular the different approval criteria needed for the different
types of CalConnect documents should be noted. This document was drafted in
accordance with the editorial rules of the CalConnect Directives.</p>
<p id="_5a479d91-c8ff-42c6-a704-54b3cada1938">Attention is drawn to the possibility that some of the elements of this
document may be the subject of patent rights. CalConnect shall not be
held responsible for identifying any or all such patent rights. Details
of any patent rights identified during the development of the document
will be provided in the Introduction.</p>
<p id="_17a119d0-a698-4f28-bb87-0caf812ed53a">Any trade name used in this document is information given for the
convenience of users and does not constitute an endorsement.</p>
<p id="_244ee79e-ab30-4572-88fc-c579232945e4">This document was prepared by Technical Committee
<em>CALENDAR</em>.</p></foreword><introduction id="introduction" obligation="informative"><title>Introduction</title><p id="_e80f7afa-7f90-4f63-a3d4-67a25d2c9e07">Since iCalendar was first defined there has been only one way to
express a repeating set of events — the recurrence. This defined a
master event, a set of rules for computing the instances and a way of
overriding certain instances.</p>
<p id="_4f5f2bf8-631f-49e5-bba9-a9f45f148de8">This approach works well enough in certain situations but has many
problems which need to be addressed.</p>
<p id="_abc91deb-cfea-4334-91b7-287402ea89d0">This specification introduces a new approach to repeating patterns of
entities which avoids some of the problems.</p></introduction><acknowledgements id="acknowledgements" obligation="informative"><title>Acknowledgements</title><p id="_cd00cdd7-ef7f-4f38-b176-85240cda4b8d">The author would like to thank the members of the Calendaring and
Scheduling Consortium technical committees and the following
individuals for contributing their ideas, support and comments:</p>
<p id="_627b3b4b-b174-49d4-8741-25b39d817a0d">The author would also like to thank the Calendaring and Scheduling
Consortium for advice with this specification.</p></acknowledgements></preface><sections>
<clause id="scope" obligation="normative">
<title>Scope</title>
<p id="_5759bb77-b835-4cc9-94c8-547b2fd88ae8">This document updates <eref type="inline" bibitemid="RFC5545" citeas="RFC 5545"/> by defining a new repeating set
of events known as a series. This differs from recurrences in that
each instance is a separate entity with a parent relationship to a
specified template entity.</p>
</clause>
<terms id="terms" obligation="normative">
<title>Terms and definitions</title><p id="_94e597dc-42bf-4fde-9bfd-af8c3c29e621">No terms and definitions are listed in this document.</p>
</terms>
<clause id="_overrides_and_icalendar_recurrences" obligation="normative"><title>Overrides and iCalendar recurrences</title><p id="_4cf1f39d-7b39-4b59-8182-a0cd91f7005f">The recurrence rules specify how instances are to be computed. These
rules provide a set of keys — the RECURRENCE-ID — and an instance can
be created with the calculated start date/time and a copy of the
duration (or calculated end date/time).</p>
<p id="_cc100197-c26b-4e38-8534-de32893c910e">The specification allows for overrides. These are handled by
supplying a complete replacement for the instance with a RECURRENCE-
ID property matching that of the instance being overridden. This may
change any of the properties (except the UID) — including start, end
or duration.</p>
<p id="_be220022-8536-46cc-985f-4be393c101f8">If a long lived recurrence is heavily overridden it becomes very
cumbersome. The master plus overrides is considered a single
resource in most circumstances (iTip allows the delivery of a single
instance in certain situations).</p>
<p id="_a6711cdc-b1f9-40be-8e9a-7159d6e5584b">Simple meetings can become heavily modified recurrences through adding
the weeks agenda to the description, changing of attendees etc.</p>
<p id="_7515a095-f58b-438e-b387-402fd947d22f">There are approaches being considered to mitigate some of these
issues which mostly involve only storing changes but recurrences are
still awkward to deal with.</p>
<clause id="_changing_the_master_start_or_the_recurrence_rules" obligation="normative"><title>Changing the master start or the recurrence rules</title><p id="_0825a1af-d685-4b07-99a6-d882f202a6bd">This can lead to some very difficult problems to resolve. In the
case of a heavily modified meeting it may be difficult to impossible
to determine which override applies to the newly modified event.</p>
<p id="_bf206214-0ba4-488d-b9eb-dac86e3922d1">For example, a weekly book-reading is moved from Monday to Friday.
There are weeks of scheduled events in the future. Do we move them
all forward to the next instance or skip one and move them back? If
it becomes bi-weekly rather than weekly do we drop every other or
just space them out more?</p>
<p id="_0ce5e01c-c572-42a3-9ba0-d8b54b7091aa">To be sure — some of these problems are not totally resolved by a
series approach but they become more tractable.</p></clause>
<clause id="_splitting_recurrences" obligation="normative"><title>Splitting recurrences</title><p id="_bad45e74-fc5f-4852-9abb-f7d7addb4136">The <eref type="inline" bibitemid="RFC5545" citeas="RFC 5545"/> THISANDFUTURE range is poorly supported. Splitting is
what a number of implementations use to avoid changing overrides in
the past.</p>
<p id="_124d7c56-e078-47a6-b46d-661cdc3f20f1">The recurring event is split into 2, one being the truncated original
the other being a new recurring event starting at the time of the
THISANDFUTURE override.</p>
<p id="_2a7aca0b-be6a-4cf2-8ff4-7a29db22de93">There is left the problem of relating the two, this can be
accomplished by use of the RELATED-TO property but that is not
standardized.</p></clause></clause>
<clause id="series" obligation="normative"><title>Series</title><p id="_e8996600-3ad4-4db4-8159-cbe87dd950eb">A series is a, generally regularly, repeating sets of events or tasks
each instance of which is usually, but not always, different in some
respect. Examples may be a library running an after-school reading
program which usually, takes place at the same time each week but
always differs in the book or author being studied.</p>
<p id="_8fd03099-dccf-4f43-bf27-975108abc0ad">In recurrences an instances is a calculated ‘virtual’ object, unless
overridden. It has the same UID as the master and a RECURRENCE-ID
which is always one of the calculated set.</p>
<p id="_065cbd7d-168f-43d7-9b4c-0bfd93e7bc8b">In a series, a specified number of instances are created ahead of
time each with their own unique UID. They are all related to the
master using a SERIES-MASTER relation type defined in this
specification. Each instance acts as an individual component as far
as retrieval and searching is concerned.</p>
<p id="_0f159672-e671-42ae-82d3-2363a55e5930">Each instance and master is identified as a member of the full series
by the SERIES-UID property. The value of this property is the same
in all members of the series even when splits have occurred.</p>
<p id="_3384590a-3828-4ffc-bc7f-2283f57b0de2">As instances are created a LAST-SERIES-ID property is added or
updated in the master to indicate which instance was last created.
When there are SXDATE properties this property value may represent an
instance which cannot be created. It merely represents the latest
calculated date.</p>
<p id="_2a2b3128-361a-42c3-ae30-47f2e84560d7">This property allows generated instances to be deleted without the
addition of SXDATE properties to the master. The SXDATE only
indicates future instances which MUST NOT be created.</p>
<p id="_00c8cccd-0216-4bbc-b38d-3a0c3748183a">As time goes on more instances are created either by the server or by
a client when it inspects the current state of the series. The
number of instances may be based on time or a count.</p>
<p id="_8a7e71a4-a097-4d82-8973-6a9c91da16da">For example, an organization may allow rooms to be booked only 4
weeks ahead. Thus a series may be set up which has that 4 week set
of events in the future. Each will have the room as an attendee
ensuring that at least the room is booked at the regular time.</p>
<clause id="_modifying_series_patterns_and_splitting" obligation="normative"><title>Modifying series patterns and splitting</title><p id="_c177b4ba-bd8c-42cb-b575-2b4b9fa7a5ab">If it becomes necessary to modify the series rules or the master
start then the series is always split at the point of the
modification.</p>
<p id="_d97f7802-c13d-40e1-8103-397af9cea0da">When a series is split the previous master is modifed to truncate the
current series at the last generated instance and a parameter
SPLIT=YES is added to the series rule to indicate that this master is
now split.</p>
<p id="_e9700aca-c14f-401d-991d-110c32298009">The split may result in a number of instances related to the old
series but overlapping the new. It is up to the implementation to
decide what should be done with these but this usually requires a
degree of interaction with a human (or very intelligent robot). The
application may offer to copy them into the corresponding new
instances — if these can be easily determined, offer to delete all of
them or let the user manually copy information and delete.</p>
<p id="_6fdf9b21-985e-4d6d-a890-02cc6670ae88">The new series master is related to the old master by the new series
master having a RELATED-TO property with RELTYPE=SERIES-MASTER
pointing at the previous master. In that way a backwards chain of
series masters may be created</p></clause>
<clause id="_the_series_master" obligation="normative"><title>The series master</title><p id="_d2460179-18c6-40fe-b545-56672c730b61">A series master is identified in much the same way as a recurrence
master. It will contain an SRULE and 0 or more SDATE properties or 1
or more SDATE properties. Additionally it may contain 0 or more
SXDATE properties to exclude instances.</p>
<p id="_eef6af3b-a3d7-4646-a054-3a69c0c59f66">As noted above, if the series was split it may contain a RELATED-TO
property with RELTYPE=SERIES-MASTER and a value of the previous
series master.</p>
<p id="_05690aa7-8302-49ca-aedd-e73fe5260e8f">The master will also contain a LAST-SERIES-ID if any instances have
been calculated and perhaps generated.</p>
<p id="_40594181-1251-4e9b-9f76-2acbdfb26aef">It is important to note that the series master is the first member of
the series. Thus the first instance always occurs AFTER the series
master.</p></clause>
<clause id="_the_series_instances" obligation="normative"><title>The series instances</title><p id="_6cf756df-086d-40e7-85be-4832b49fa806">A series instance is identified by having a SERIES-ID property which
is calculated in the same manner as a RECURRENCE-ID. It MUST also
contain a RELATED-TO property with RELTYPE=SERIES-MASTER and a value
being the UID of the series master.</p>
<p id="_218549b1-abb0-4e1f-8841-501ee629d31c">As noted above, if the series was split it may contain a RELATED-TO
property with RELTYPE=SERIES-MASTER and a value being the UID of the
previous series master.</p></clause></clause>
<clause id="redefined_relation_type_value" obligation="normative"><title>Redefined Relation Type Value</title><p id="_6b8cdfe9-e17b-4d07-8c04-d916293806ed">Relationship parameter type values are defined in
<eref type="inline" bibitemid="RFC5545" citeas="RFC 5545"><localityStack><locality type="section"><referenceFrom>3.2.15</referenceFrom></locality></localityStack></eref>. This specification augments that parameter to include the
new relationship values SERIES-MASTER.</p>
<dl id="_fb976caf-4285-4af3-8c09-68ecff36cb3e">
<dt>Format Definition</dt>
<dd/>
</dl>
<p id="_c3a631a8-3a82-4e1a-94fe-36c6f916f35a">This property parameter is respecified as follows:</p>
<sourcecode lang="bnf" id="_558fd31e-e726-4a08-9bb4-4fd1429fd08a">reltypeparam = "RELTYPE" "="
("PARENT" ; Parent relationship - Default
/ "CHILD" ; Child relationship
/ "SIBLING" ; Sibling relationship
/ "DEPENDS-ON" ; refers to previous task
/ "REFID" ; Relationship based on REFID
/ "STRUCTURED-CATEGORY"
; Relationship based on STRUCTURED-CATEGORY
/ "FINISHTOSTART" ; Temporal relationship
/ "FINISHTOFINISH" ; Temporal relationship
/ "STARTTOFINISH" ; Temporal relationship
/ "STARTTOSTART" ; Temporal relationship
/ "SERIES-MASTER" ; link to the master component
/ iana-token ; Some other IANA-registered
; iCalendar relationship type
/ x-name) ; A non-standard, experimental
; relationship type</sourcecode>
<dl id="_05f1154b-4406-45bf-8587-36764527f7b0">
<dt>Description</dt>
<dd/>
</dl>
<p id="_1b7944fa-48f6-4b40-8a76-814a3625791f">This parameter can be specified on a property that
references another related calendar component. The parameter may
specify the hierarchical relationship type of the calendar
component referenced by the property when the value is PARENT,
CHILD or SIBLING. If this parameter is not specified on an
allowable property, the default relationship type is PARENT.
Applications MUST treat x-name and iana-token values they don’t
recognize the same way as they would the PARENT value.</p>
<p id="_d97547ec-72db-4e93-9cf6-a57c6a5bef5b">This parameter defines the temporal relationship when the value is
one of the project management standard relationships
FINISHTOSTART, FINISHTOFINISH, STARTTOFINISH or STARTTOSTART.
This property will be present in the predecessor entity and will
refer to the successor entity. The GAP parameter specifies the
lead or lag time between the predecessor and the successor. In
the description of each temporal relationship below we refer toTask-A which contains and controls the relationship and Task-B the
target of the relationship.</p>
<dl id="_c94ea540-2d80-4fa9-bef4-3bbb3d999e36">
<dt>RELTYPE=PARENT</dt>
<dd>
<p id="_ac9e3fa3-6e75-4751-a06b-b1b880e837f5">See <eref type="inline" bibitemid="RFC5545" citeas="RFC 5545"><localityStack><locality type="section"><referenceFrom>3.2.15</referenceFrom></locality></localityStack></eref>.</p>
</dd>
<dt>RELTYPE=CHILD</dt>
<dd>
<p id="_601c7509-e8d8-4da3-a736-7c146ffe3565">See <eref type="inline" bibitemid="RFC5545" citeas="RFC 5545"><localityStack><locality type="section"><referenceFrom>3.2.15</referenceFrom></locality></localityStack></eref>.</p>
</dd>
<dt>RELTYPE=SIBLING</dt>
<dd>
<p id="_26e2d097-a649-42af-a497-feb4bd630713">See <eref type="inline" bibitemid="RFC5545" citeas="RFC 5545"><localityStack><locality type="section"><referenceFrom>3.2.15</referenceFrom></locality></localityStack></eref>.</p>
</dd>
<dt>RELTYPE=DEPENDS-ON</dt>
<dd>
<p id="_438421af-89d6-40ae-8dec-71c424159b14">Indicates that the current calendar component
depends on the referenced calendar component in some manner. For
example a task may be blocked waiting on the other, referenced,
task.</p>
</dd>
<dt>RELTYPE=REFID</dt>
<dd>
<p id="_d7432077-8e9b-40c6-983d-e51f1fe7c777">Establishes a reference from the current component to
components with a REFID property which matches the value given in
the associated RELATED-TO property.</p>
</dd>
<dt>RELTYPE=SERIES-MASTER</dt>
<dd>
<p id="_7ec9e0da-a6ca-41fc-85b7-16428741aa01">Indicates that the current calendar component
is based on the referenced calendar component. The value is a UID.</p>
</dd>
<dt>RELTYPE=STRUCTURED-CATEGORY</dt>
<dd>
<p id="_56de83be-6ef7-46f5-a0fd-1a70fba780a9">Establishes a reference from the
current component to components with a STRUCTURED-CATEGORY
property which matches the value given in the associated RELATED-
TO property.</p>
</dd>
<dt>RELTYPE=FINISHTOSTART</dt>
<dd/>
</dl>
<p id="_24cf478d-d257-487b-bce6-4a87ffe9e263">Task-B cannot start until Task-A finishes.
For example, when sanding is complete, painting can begin.</p>
<figure id="finishtostart">
<name>Finish to start relationship</name>
<pre id="_f45e36a7-2261-49d3-a804-6ee3c5588f1f"> ============
| Task-A |--+
============ |
|
V
============
| Task-B |
============</pre>
</figure>
<dl id="_b3699051-8f1e-4e0a-8597-27632f235971">
<dt>RELTYPE=FINISHTOFINISH</dt>
<dd/>
</dl>
<p id="_e59d2871-9624-4e9e-83df-4941abeb0e2b">Task-B cannot finish before Task-A is
finished, that is the end of Task-A defines the end of Task-B.
For example, we start the potatoes, then the meat then the peas
but they should all be cooked at the same time.</p>
<figure id="finishtofinish">
<name>Finish to finish relationship</name>
<pre id="_1368475a-91d1-475e-a35b-f1261ce8a0e5"> ============
| Task-A |--+
============ |
|
============ |
| Task-B |<-+
============</pre>
</figure>
<dl id="_f7b65d0f-ada6-439d-bc90-e8ad716fc2c8">
<dt>RELTYPE=STARTTOFINISH</dt>
<dd/>
</dl>
<p id="_d781567c-355a-473a-9221-a1b39c791f01">The start of Task-A (which occurs after Task-B) controls the
finish of Task-B. For example, ticket sales
(Task-B) end when the game starts (Task-A).</p>
<figure id="starttofinish">
<name>Start to finish relationship</name>
<pre id="_447366fe-3508-4bac-bdc2-a3bfa604cd54"> ============
+--| Task-A |
| ============
|
============ |
| Task-B |<-+
============</pre>
</figure>
<dl id="_851bda5f-93e4-42df-9597-e054f9d2974d">
<dt>RELTYPE=STARTTOSTART</dt>
<dd/>
</dl>
<p id="_4b070962-d860-4636-98da-eb09f42b43ae">The start of Task-A triggers the start of
Task-B, that is Task-B can start anytime after Task-A starts.</p>
<figure id="starttostart">
<name>Start to start relationship</name>
<pre id="_6c3f22f4-53c6-472f-98ba-b1dcf1c4f985"> ============
+--| Task-A |
| ============
|
| ============
+->| Task-B |
============</pre>
</figure></clause>
<clause id="_new_property_parameters" obligation="normative"><title>New Property Parameters</title><clause id="param-split" obligation="normative"><title>Split</title><dl id="_d05685f0-9804-4100-af96-b9ca57f0ef98">
<dt>Parameter name</dt>
<dd>
<p id="_7acde256-ce16-42a4-b737-57132b04018a">SPLIT</p>
</dd>
<dt>Purpose</dt>
<dd>
<p id="_b336083b-4d22-458b-933a-85d3e2018692">To indicate a series has been split.</p>
</dd>
<dt>Format Definition</dt>
<dd/>
</dl>
<p id="_657400c5-5b0b-4e38-a963-61388c9a329f">This parameter is defined by the following notation:</p>
<sourcecode id="_d783bea4-96b0-4840-92ae-330f20eef209">splitparam = "SPLIT" "="
("YES" ; The series is split
/ "NO" ; The series is not split (default)
/ x-name ; Experimental reference type
/ iana-token) ; Other IANA registered type</sourcecode>
<dl id="_52703d6e-2886-4c2a-a6e5-ab423ec62256">
<dt>Description</dt>
<dd>
<p id="_004b4906-45ca-47de-a05b-7c42639dccd8">This parameter MAY be specified on the SRULE property
to indicate that the series has been split with SPLIT=YES. Once
split is is probably inappropriate to modify the series further.</p>
</dd>
</dl></clause>
<clause id="param-lookahead-count" obligation="normative"><title>Lookahead count</title><dl id="_7d525018-c4c2-42de-bffa-f026c859b62d">
<dt>Parameter name</dt>
<dd>
<p id="_6bdcf1e0-5532-4264-9013-a1eb573f1c36">LOOKAHEAD-COUNT</p>
</dd>
<dt>Purpose</dt>
<dd>
<p id="_b22e9724-5820-4a50-8d52-6a8b97bb801e">To specify the number of series instances that should be
generated in advance.</p>
</dd>
<dt>Format Definition</dt>
<dd/>
</dl>
<p id="_1e66aee4-f27c-4f3b-af01-4749e5ee9ff2">This parameter is defined by the following notation:</p>
<sourcecode id="_ae40e5b2-d2ef-43e5-9942-0108680be2d7">lookahead-countparam = "LOOKAHEAD-COUNT" "=" 1*DIGIT</sourcecode>
<dl id="_b5457d3d-5b33-4a74-9760-fe03200f8e1c">
<dt>Description</dt>
<dd/>
</dl>
<p id="_51aba419-9d22-41f9-ba7a-bce30dfaf0e0">This parameter MAY be specified on the SRULE property
to indicate how many series instances should be generated in
advance.</p>
<p id="_8aa9c6fb-310e-4e82-a2dc-2620198ed51f">An implementation is free to apply its own limts but MUST NOT
generate more than those defined by this parameter and/or the
LOOKAHEAD-PERIOD parameter.</p>
<p id="_050c985c-e6e3-4145-b9ec-bceda4818da9">If both the LOOKAHEAD-PERIOD and LOOKAHEAD-COUNT arameters are
supplied the result should be limited by both.</p>
<p id="_b6a19f6b-0c8f-4e81-850d-6b673bd64476">For example, if the LOOKAHEAD-PERIOD parameter would cause 8
instances to be generated but LOOKAHEAD-COUNT specifies 4 then
only 4 instances will be generated.</p></clause>
<clause id="param-lookahead-period" obligation="normative"><title>Lookahead period</title><dl id="_06e759cf-88c9-4700-a136-eb886501ef13">
<dt>Parameter name</dt>
<dd>
<p id="_78efc1f1-517c-459a-8c19-a1a18ae0a434">LOOKAHEAD-PERIOD</p>
</dd>
<dt>Purpose</dt>
<dd>
<p id="_2a7f7c56-ef3b-4310-b7c1-426db4af7ac1">To specify a maximum period for which series instances
should be generated in advance.</p>
</dd>
<dt>Format Definition</dt>
<dd/>
</dl>
<p id="_2f7150cf-71b2-4b8f-9eb7-ab8253952e8c">This parameter is defined by the following notation:</p>
<sourcecode id="_56453c88-398b-4468-957e-08cf46178ce0">lookahead-periodparam = "LOOKAHEAD-PERIOD" "="
DQUOTE dur-value DQUOTE</sourcecode>
<dl id="_17177094-618b-4aa3-9492-f3e0c77fc590">
<dt>Description</dt>
<dd/>
</dl>
<p id="_20da11fe-f3a9-4f9c-a34e-03212147d0cb">This parameter MAY be specified on the SRULE property
to indicate how far in advance series instances should be
generated.</p>
<p id="_7f882f38-0fb7-423c-8b39-bc7fd652f275">An implementation is free to apply its own limts but MUST NOT
generate more than those defined by this parameter and/or the
LOOKAHEAD-COUNT parameter.</p>
<p id="_ee4fbbe2-703c-407c-9678-f3b5eace981b">If both the LOOKAHEAD-PERIOD and LOOKAHEAD-COUNT arameters are
supplied the result should be limited by both.</p>
<p id="_3cf66625-5872-432c-ac08-5794f7a66068">For example, if the LOOKAHEAD-PERIOD parameter would cause 8
instances to be generated but LOOKAHEAD-COUNT specifies 4 then
only 4 instances will be generated.</p>
<p id="_1df016e1-e5d6-4986-8189-1da450fd3778">The value is a quoted duration.</p></clause></clause>
<clause id="new_properties" obligation="normative"><title>New Properties</title><clause id="_general" obligation="normative"><title>General</title><p id="_441b2191-73c7-4794-a371-3f5d39bb70c2">The SERIES-ID, LAST-SERIES-ID, SDATE and SXDATE properties are
identical in form and in the parameters they take.</p>
<p id="_ceda729f-b266-45a9-80aa-adbd39db0b04">All must conform in form to the DTSTART property of the master
component. Only the SDATE may specify a time which is not part of
the calculated series.</p>
<p id="_87330687-dab4-44f1-b22c-3bd90ae71f9d">The SRULE property value is identical in form to the RRULE property
defined in <eref type="inline" bibitemid="RFC5545" citeas="RFC 5545"/>. The LOOKAHEAD-COUNT and LOOKAHEAD-PERIOD
parameters indicate how many instances should be generated in
advance.</p></clause>
<clause id="generating-series-members" obligation="normative"><title>Generating Series members</title><p id="_43208a48-f74d-4671-882b-64fcef53cf34">An agent, either the server or a client, will periodically extend the
set of instances. The number of such generated instances is limited
by:</p>
<dl id="_ce57b4fe-d5de-4e5f-b8d3-068e0b3e953c">
<dt>Elements of the rule</dt>
<dd>
<p id="_e72edce5-7f2f-49a2-891f-824158b3aee6">The UNTIL or COUNT parts of the rule define
when the series terminates. Thus a COUNT=100 specifies a maximum
of 100 series members.</p>
</dd>
<dt>Lookahead count</dt>
<dd>
<p id="_7e5e640f-5759-4a02-b4ea-74018a582a73">This specifies how many series members can exist
from the current date/time. Thus a LOOKAHEAD-COUNT=4 means a
maximum of 4 generated instances.</p>
</dd>
<dt>Lookahead period</dt>
<dd>
<p id="_452ab6c6-2a89-4a8b-bcf4-e24b9276a62b">This specifies how far into the future series
members can be generated. Thus a LOOKAHEAD-PERIOD=”PT2M” means a
maximum period of 2 months.</p>
</dd>
<dt>System limits</dt>
<dd>
<p id="_6fa248f2-5bcf-4154-896c-afbc11223fb2">This client or server SHOULD also apply limits to
prevent a series from generating an overlarge set of members.</p>
</dd>
</dl>
<p id="_603c08a7-e127-42c0-8389-e315e3f340fe">The starting point for the calculation is the DTSTART of the master
component or the LAST-SERIES-ID if it exists in the master. In both
cases the instance represented by that date is NOT generated as part
of the instance set and the actual instance may have been excluded by
an SXDATE property but the starting date is still valid.</p>
<p id="_1fb3e800-8b12-44af-88c6-6561905dee7a">The starting date/time property defines the first instance in the
next batch of series members. Note that the starting property value
MUST match the pattern of the series rule, if specified. For
example, if the rule specifies every Wednesday the starting date MUST
be a Wednesday.</p>
<p id="_bcfe08ed-c3ea-4e9e-a4bf-8c970a14dadc">The end date/time of the set will be provided by the UNTIL part of
the rule, the LOOKAHEAD-PERIOD or by a system maxima.</p>
<p id="_ad539d60-e6d8-4d93-b1b7-65b58fe55337">A set of date/time values can be generated within those contraints.
As each date/time value is generated it can be ignored if it is one
of the SXDATE values.</p>
<p id="_316ce525-045a-4cb1-a6a7-9231c2dac0d7">Generation of values can terminate when the size of the result
exceeds that given by the COUNT rule element, the LOOKAHEAD-COUNT
value or any system limit.</p>
<p id="_ed691aef-2d13-4327-bf58-d353eec95723">Any SDATE values that fall within the current range and are not in
the set of SXDATE values can be added and the result truncated again
to match the size limits.</p>
<p id="_b796218e-6378-433e-a607-a9b8d56fa028">Finally, any date/time values that have already been generated and
are present as SERIES-ID values should be removed from the set. What
remains is the new set of members to extend the current series.</p>
<p id="_fdf80b42-7aa3-4c11-a435-6307a978667e">The last of those values becomes the new value for the LAST-SERIES-ID
property in the series master.</p>
<p id="_b8d83e0b-568b-48c7-8a15-20ec3fb51f78">As noted above the “SXDATE” property can be used to exclude the value
specified in the master. This leads to a complication as the master
needs to be preserved as a container for the values which define the
series. This is flagged by adding a DELETED-MASTER element to the
SERIES-STATUS property.</p></clause>
<clause id="prop-series-uid" obligation="normative"><title>Series UID</title><dl id="_72eaa46d-57e2-48f4-9c60-46b410628f3a">
<dt>Property name</dt>
<dd>
<p id="_ac383bb7-acc6-4cd8-827f-19e137c4fd5b">SERIES-UID</p>
</dd>
<dt>Purpose</dt>
<dd>
<p id="_46046843-6294-4db6-848e-9fb1cde4e42c">This property defines the persistent, globally unique
identifier for the full series.</p>
</dd>
<dt>Value Type</dt>
<dd>
<p id="_6a651479-2639-4a7f-9eae-ee858359e643">TEXT</p>
</dd>
<dt>Property Parameters</dt>
<dd>
<p id="_b93a02c7-3bf1-4501-a06c-8ad6da858411">IANA and non-standard property parameters can
be specified on this property.</p>
</dd>
<dt>Conformance</dt>
<dd>
<p id="_d0c88085-2e63-4056-8f51-002b4a75d352">This property MUST be specified in any “VEVENT”,
“VTODO”, and “VJOURNAL” calendar components acting as a series
master or series instance.</p>
</dd>
<dt>Description</dt>
<dd>
<p id="_742c7f31-f794-4ec4-9477-984ccb487354">The SERIES-UID MUST be globally unique. This value
SHOULD be generated by following the recommendations in
<eref type="inline" bibitemid="RFC7986" citeas="RFC 7986"><localityStack><locality type="section"><referenceFrom>5.3</referenceFrom></locality></localityStack></eref>.</p>
<dl id="_2c09b3a1-1046-4506-a318-b7f005b4a600">
<dt>Format Definition</dt>
<dd/>
</dl>
</dd>
</dl>
<p id="_883c6655-956b-4296-bea2-019e27451f2a">This property is defined by the following notation:</p>
<sourcecode id="_c4df7ddf-d52b-4800-a527-56ee53ce1623">seruid = "SERIES-UID" seruidparam ":" text CRLF
seruidparam = *(";" other-param)</sourcecode>
<example id="_b60be628-3bb1-485c-b34a-afa58e4f3ecd"><p id="_7b8e8c0b-ea31-4d09-8a21-9b62deb00fd2">The following is an example of this property:</p>
<sourcecode id="_31b92779-d93f-4609-b8bf-40f98e81e9ed">SERIES-UID:123e4567-e89b-12d3-a456-426655440000</sourcecode>
</example></clause>
<clause id="prop-series-exception-date" obligation="normative"><title>Series-exception-date</title><dl id="_28747f61-7341-4fc0-bdc5-b7d84778909c">
<dt>Property name</dt>
<dd>
<p id="_3617679f-65ee-48b2-a831-a3429ffa9923">SXDATE</p>
</dd>
<dt>Purpose</dt>
<dd>
<p id="_613eb60f-3a72-41c3-acdf-dd3cc756910f">This property defines the list of DATE-TIME exceptions for
series of events, to-dos or journal entries.</p>
</dd>
<dt>Value Type</dt>
<dd>
<p id="_bcdb9a7d-3133-43e8-b4fd-c8fe7a88c6b6">The default value type for this property is DATE-TIME.
The value type can be set to DATE.</p>
</dd>
<dt>Property Parameters</dt>
<dd>
<p id="_4e9e41a6-2a0a-4deb-9fe7-44c6d2093ef9">IANA, non-standard, value data type, and time
zone identifier property parameters can be specified on this
property.</p>
</dd>
<dt>Conformance</dt>
<dd>
<p id="_2bc3cf11-6fd2-4c9c-ad32-0a48161e4299">This property can be specified in “VEVENT”, “VTODO”,
and “VJOURNAL” calendar components acting as the series master.</p>
</dd>
<dt>Description</dt>
<dd>
<p id="_4a0e3996-5354-41c8-a473-8f20a4399f36">The exception dates, if specified, are used when
computing the instances of the series. They specify date/time
values which are to be removed from the set of possible series
instances.</p>
</dd>
<dt>Format Definition</dt>
<dd/>
</dl>
<p id="_34932efe-ad11-440e-93f0-bd42e8a0f963">This property is defined by the following notation:</p>
<sourcecode id="_d8b684a6-b6bb-44bc-a302-32aa1ae42d9f">sxdate = "SXDATE" sxdtparam ":" sxdtval *("," sxdtval) CRLF
sxdtparam = *(
;
; The following are OPTIONAL,
; but MUST NOT occur more than once.
;
(";" "VALUE" "=" ("DATE-TIME" / "DATE")) /
;
(";" tzidparam) /
;
; The following is OPTIONAL,
; and MAY occur more than once.
;
(";" other-param)
;
)
sxdtval = date-time / date
;Value MUST match value type</sourcecode>
<example id="_2b9080ca-80f8-4ca2-9359-041114235336"><p id="_5842f70c-e4d2-432c-9cbf-304bad3db695">The following is an example of this property:</p>
<sourcecode id="_c3c6ca95-7afd-4081-be74-2dbc458df85e">SXDATE:19960402T010000Z,19960403T010000Z,19960404T010000Z</sourcecode>
</example></clause>
<clause id="prop-series-date" obligation="normative"><title>Series-date</title><dl id="_6dc95b0b-e5fe-439c-b6cd-e04a10199962">
<dt>Property name</dt>
<dd>
<p id="_db6d94d9-1d59-4d8e-8c02-66ab3b1be082">SDATE</p>
</dd>
<dt>Purpose</dt>
<dd>
<p id="_c427b664-cf48-472f-8759-9d63ed2ba2d8">This property defines the list of DATE-TIME values for
series of events, to-dos or journal entries.</p>
</dd>
<dt>Value Type</dt>
<dd>
<p id="_945c9f5e-7cf3-4f0a-967c-7b18a5bc0c0a">The default value type for this property is DATE-TIME.
The value type can be set to DATE.</p>
</dd>
<dt>Property Parameters</dt>
<dd>
<p id="_57d43d60-dd27-4984-b966-614d9ff2e278">IANA, non-standard, value data type, and time
zone identifier property parameters can be specified on this
property.</p>
</dd>
<dt>Conformance</dt>
<dd>
<p id="_04431bc7-50b4-4b6d-b88d-8eb13b4ae09b">This property can be specified in “VEVENT”, “VTODO”,
and “VJOURNAL” calendar components acting as the series master.</p>
</dd>
<dt>Description</dt>
<dd>
<p id="_4c2834b6-7a4c-4dfd-b3f8-1f949074b6e7">This property can appear along with the “SRULE”
property to define a extra series occurrences. When they both
appear in a series master component, the instances are defined by
the union of occurrences defined by both the “SDATE” and “SRULE”.</p>
</dd>
<dt>Format Definition</dt>
<dd/>
</dl>
<p id="_8fc2faf8-c0d1-4e76-8133-d1f6491ca470">This property is defined by the following notation:</p>
<sourcecode id="_5aea42a2-cb75-4962-88db-7f044e77684c"> sdate = "SDATE" sdtparam ":" sdtval *("," sdtval) CRLF
sdtparam = *(
;
; The following are OPTIONAL,
; but MUST NOT occur more than once.
;
(";" "VALUE" "=" ("DATE-TIME" / "DATE" / "PERIOD")) /
(";" tzidparam) /
;
; The following is OPTIONAL,
; and MAY occur more than once.
;
(";" other-param)
;
)
sdtval = date-time / date
;Value MUST match value type</sourcecode>
<example id="_a5e20be9-9c66-4a74-9fa3-ec7421f053cc"><p id="_ecb31bad-2f00-4ccf-b558-c2fca717a450">The following are examples of this property:</p>
<sourcecode id="_2070e144-83bc-4dad-8ce3-d08eab08df39">SDATE:19970714T123000Z
SDATE;TZID=America/New_York:19970714T083000
SDATE;VALUE=PERIOD:19960403T020000Z/19960403T040000Z,
19960404T010000Z/PT3H
SDATE;VALUE=DATE:19970101,19970120,19970217,19970421
19970526,19970704,19970901,19971014,19971128,19971129,19971225</sourcecode>
</example></clause>
<clause id="prop-series-id" obligation="normative"><title>Series-id</title><dl id="_57ea87dd-1586-42fb-a671-e3ebef25df1b">
<dt>Property name</dt>
<dd>
<p id="_9bb0016e-d873-4418-aae2-8842ce610b18">SERIES-ID</p>
</dd>
<dt>Purpose</dt>
<dd>
<p id="_059761b6-e026-4072-b34d-8f40bbe62554">This property is used in conjunction with the “UID” and
“SEQUENCE” properties to identify a specific instance of a
“VEVENT”, “VTODO”, or “VJOURNAL” calendar component in a series.
The property value is the original value of the “DTSTART” property
of the series instance before any changes occur.</p>
</dd>
<dt>Value type</dt>
<dd>
<p id="_f194c3ea-21c9-498f-b21b-ca9788821090">The default value type is DATE-TIME. The value type can
be set to a DATE value type. This property MUST have the same
value type as the “DTSTART” property contained within the series
component. Furthermore, this property MUST be specified as a date
with local time if and only if the “DTSTART” property contained
within the series component is specified as a date with local
time.</p>
</dd>
<dt>Property Parameters</dt>
<dd>
<p id="_157769b8-8167-4eb0-b576-73129f82e188">IANA, non-standard, value data type and time
zone identifier parameters can be specified on this property.</p>
</dd>
<dt>Conformance</dt>
<dd>
<p id="_d89d9460-c264-497d-b6c3-6505a9410ac0">This property can be specified zero or more times in
any iCalendar component.</p>
</dd>
<dt>Description</dt>
<dd/>
</dl>
<p id="_6ae710dc-8b51-47d5-adee-a781b510cd04">The SERIES-ID is the originally calculated value of the
DTSTART property based on the master identified by the RELATED-TO
property with a RELTYPE=SERIES-MASTER parameter.</p>
<figure id="_2950974b-1114-4491-a46a-5f6ab73d41ee">
<pre id="_9dd2d70f-4ed2-41e7-ad7a-23b26c52b9e3">The full series of components can only be retrieved by searching
for all components with a matching RELATED-TO property.</pre>
</figure>
<figure id="_6ce7af96-7159-4cf3-bba0-7d3b8d81521f">
<pre id="_5ef812df-5966-4554-9a14-f64e41eabfe5">If the value of the "DTSTART" property is a DATE type value, then
the value MUST be the calendar date for the series instance.</pre>
</figure>
<figure id="_dc469279-c4a7-4a30-afef-3866751d6324">
<pre id="_8f4c4aa6-95fd-404f-880a-737f9f1dc090">The DATE-TIME value is set to the time when the original series
instance would occur; meaning that if the intent is to change a
Friday meeting to Thursday, the DATE-TIME is still set to the
original Friday meeting.</pre>
</figure>
<figure id="_2071523d-36bc-45fd-94c6-21b7e146c770">
<pre id="_cf7998f3-4933-44c7-b40f-0ac238887f2c">The "SERIES-ID" property is used in conjunction with the "UID" and
"SEQUENCE" properties to identify a particular instance of an
event, to-do, or journal in the series. For a given pair of "UID"
and "SEQUENCE" property values, the "SERIES-ID" value for a series
instance is fixed.</pre>
</figure>
<dl id="_2063a53e-9ef9-44f7-a914-11846b65ab52">
<dt>Format Definition</dt>
<dd/>
</dl>
<p id="_96dbae9d-462c-4ae0-b737-1351e99ff939">This property is defined by the following notation:</p>
<sourcecode id="_971be382-1c10-43e8-b847-41aabfd788e4">serid = "SERIES-ID" sidparam ":" sidval CRLF
sidparam = *(
;
; The following are OPTIONAL,
; but MUST NOT occur more than once.
;
(";" "VALUE" "=" ("DATE-TIME" / "DATE")) /
(";" tzidparam) /
;
; The following is OPTIONAL,
; and MAY occur more than once.
;
(";" other-param)
;
)
sidval = date-time / date
;Value MUST match value type</sourcecode>
<example id="_bcf35e2d-c31c-4c58-907a-0577aba42658"><p id="_f6599f52-985e-46da-b721-12912c90543f">The following are examples of this property:</p>
<sourcecode id="_04745ab9-faaf-4f27-a0fc-4e838e43c436">SERIES-ID;VALUE=DATE:19960401
SERIES-ID;TZID=America/New_York:20170120T120000</sourcecode>
</example></clause>
<clause id="prop-last-series-id" obligation="normative"><title>Last series ID</title><dl id="_799d9c64-f9a1-4c55-a0b7-e705df29efe7">
<dt>Property name</dt>
<dd>
<p id="_9ec54f16-7625-4b57-afd8-4a42c660c73a">LAST-SERIES-ID</p>
</dd>
<dt>Purpose</dt>
<dd/>
</dl>
<p id="_486b5892-48e4-4de2-bd29-28cc9425cb13">To specify the last calculated instance of the series.
When new instances are created they MUST have a SERIES-ID after
the value of this property.</p>
<p id="_7bcad08f-3bb5-4e43-a72f-1a1e1b649e8c">In all respects this property is identical to SERIES-ID and is in
fact a copy of the SERIES-ID which would be present in the last
created instance (assuming it is not suppressed by an SXDATE).</p>
<dl id="_e3114f93-7b9f-4b93-a006-7ed2c54b5a5a">
<dt>Value type</dt>
<dd>
<p id="_efe933c4-9d94-4760-a070-51eff204b93f">DATE or DATE_TIME (the default). This has the same
requirements as SERIES-ID.</p>
</dd>
<dt>Property Parameters</dt>
<dd>
<p id="_83920e95-e2b8-4cec-aaa6-967a01853466">IANA, non-standard, value data type and time
zone identifier parameters can be specified on this property.</p>
</dd>
<dt>Conformance</dt>
<dd>
<p id="_7e67f93e-c6fc-4f1d-88d9-65ef4ba51526">This property MAY be specified in any iCalendar
component.</p>
</dd>
<dt>Description</dt>
<dd>
<p id="_5df5c3e3-8687-47ec-8b0f-96a4e9f725a1">When used in a component the value of this property
points to additional information related to the component. For
example, it may reference the originating web server.</p>
</dd>
<dt>Format Definition</dt>
<dd/>
</dl>
<p id="_97370958-939f-420f-9004-2b832867f291">This property is defined by the following notation:</p>
<sourcecode id="_3f5e3576-a85f-4dda-960c-b462843b9c76">last-series-i = "LAST-SERIES-ID" lastseriesidparam /
(
";" "VALUE" "=" "TEXT"
":" text
)
(
";" "VALUE" "=" "REFERENCE"
":" text
)
(
";" "VALUE" "=" "URI"
":" uri
)
CRLF
lastseriesidparam = *(
; the following is MANDATORY
; and MAY occur more than once
(";" relparam) /
; the following are MANDATORY
; but MUST NOT occur more than once
(";" fmttypeparam) /
(";" labelparam) /
; labelparam is defined in ...
; the following is OPTIONAL
; and MAY occur more than once
(";" xparam)
)</sourcecode>
<example id="_1bbc1ccc-ce27-4545-a972-008a2790d2da"><p id="_9c3e4047-78cc-4354-8686-f0acea8d73e2">The following is an example of this property. It points to a server
acting as the source for the calendar object.</p>
<sourcecode id="_ca310983-eb61-4f84-a50a-d757db3e8d1c">LINK;REL=SOURCE;LABEL=The Egg:http://example.com/events</sourcecode>
</example></clause>
<clause id="prop-series-rule" obligation="normative"><title>Series Rule</title><dl id="_f38b6121-2b72-4ed7-ae7f-df2c37c272ae">
<dt>Property name</dt>
<dd>
<p id="_685c6f70-5ebc-4986-8d3e-df6b5cd690bf">RRULE</p>
</dd>
<dt>Purpose</dt>
<dd>
<p id="_39bc7237-b64f-45fe-ab0b-866ba662fa5d">This property defines a rule or repeating pattern for a
series of events, to-dos or journal entries.</p>
</dd>
<dt>Value Type</dt>
<dd>
<p id="_e0e8d9d4-25b0-4dbe-b91a-e5b4265e11cf">RECUR</p>
</dd>
<dt>Property Parameters</dt>
<dd>
<p id="_75e31b5c-3508-4f4c-9c12-06950760e687">IANA, non-standard, look-ahead count or date
property parameters can be specified on this property.</p>
</dd>
<dt>Conformance</dt>
<dd>
<p id="_c6371973-205f-4169-a4d2-fb2e4ea78e55">This property can be specified in any “VEVENT”,
“VTODO”, and “VJOURNAL” calendar component, but it SHOULD NOT be
specified more than once.</p>
</dd>
<dt>Description</dt>
<dd/>
</dl>
<p id="_f9385c44-5e51-4257-b55a-56b32760c70c">The series rule, if specified, is used in computing the
instances to be generated for the series. These are generated by
considering the master “DTSTART” property along with the “SRULE”,
“SDATE”, and “SXDATE” properties contained within the series
master. The “DTSTART” property defines the first instance in the
recurrence set which is represented by that master event.</p>
<p id="_3c6f35f9-d195-46c6-83b7-81dc671099d2">Unlike the RRULE the “DTSTART” property MUST be synchronized with
the series rule, if specified. For example, if the DTSTARTS
species a date on Wednesday but the SRULE specifies every Tuesday
then a server or client MUSt reject the component.</p>
<p id="_6a3e7e23-5053-4792-964b-a5d6e654bc60">The final series is represented by gathering all of the start
DATE-TIME values generated by any of the specified “SRULE” and
“SDATE” properties, and then excluding any start DATE-TIME values
specified by “SXDATE” properties. This implies that start DATE-
TIME values specified by “SXDATE” properties take precedence over
those specified by inclusion properties (i.e., “SDATE” and
“SRULE”). Where duplicate instances are generated by the “SRULE”
and “SDATE” properties, only one instance is considered.
Duplicate instances are ignored.</p>
<p id="_e1eb1b79-db7d-4260-9889-1a5e2f835cb9">The “DTSTART” property specified within the master iCalendar
object defines the first instance of the recurrence. In most
cases, a “DTSTART” property of DATE-TIME value type used with a
series rule, should be specified as a date with local time and
time zone reference to make sure all the recurrence instances
start at the same local time regardless of time zone changes.</p>
<p id="_923662e2-7a53-4bda-88ff-42fff9d56197">If the duration of the series component is specified with the
“DTEND” or “DUE” property, then the same exact duration will apply
to all the members of the generated series. Else, if the duration
of the series master component is specified with the “DURATION”
property, then the same nominal duration will apply to all the
members of the generated series and the exact duration of each
instance will depend on its specific start time. For example,
series instances of a nominal duration of one day will have an
exact duration of more or less than 24 hours on a day where a time
zone shift occurs. The duration of a specific instance may be
modified in an exception component or simply by using an “SDATE”
property of PERIOD value type.</p>
<dl id="_e76cd807-c417-4fa4-b6dc-25f1cf7c9af4">
<dt>Format Definition</dt>
<dd/>
</dl>
<p id="_5b978ab0-b17b-48be-9ea2-b407fa2eddb6">This property is defined by the following notation:</p>
<sourcecode id="_ba063fbe-13f6-49f2-a7aa-16d7f1ff5351">srule = "SRULE" srulparam ":" recur CRLF
sruleparam = *(
; the following are OPTIONAL
; but MUST NOT occur more than once
(";" lookahead-countparam) /
(";" lookahead-periodparam) /
; the following is OPTIONAL
; and MAY occur more than once
(";" xparam)
)</sourcecode>
<example id="_6dec9e44-d09b-423b-876d-6361f8ceccc7">
<review id="_b7993b3f-e36f-4a51-a5c0-c4dee762dcb7" reviewer="(Unknown)" date="2020-06-16T00:00:00Z">
<p id="_5dcdb2cb-d9a4-43e2-850f-e65855124afd"/>
</review>
</example></clause></clause>
<clause id="redefined_property_related_to" obligation="normative">
<title>Redefined RELATED-TO Property</title>
<clause id="related-to" obligation="normative"><title>RELATED-TO</title><dl id="_522ee51e-8886-4c64-9909-6db838f87821">
<dt>Property name</dt>
<dd>
<p id="_a35c327e-488c-4a48-8411-38f39802657f">RELATED-TO</p>
</dd>