[要約] RFC 7529は、iCalendarの仕様において非グレゴリオ暦の繰り返し規則をサポートするためのものです。その目的は、異なる暦法を使用するイベントのスケジューリングを可能にすることです。

Internet Engineering Task Force (IETF)                          C. Daboo
Request for Comments: 7529                                    Apple Inc.
Updates: 5545, 6321, 7265                                    G. Yakushev
Category: Standards Track                                    Google Inc.
ISSN: 2070-1721                                                 May 2015
        

Non-Gregorian Recurrence Rules in the Internet Calendaring and Scheduling Core Object Specification (iCalendar)

Internet Calendaring and Scheduling Core Object Specification(iCalendar)の非グレゴリオ回帰ルール

Abstract

概要

This document defines extensions to the Internet Calendaring and Scheduling Core Object Specification (iCalendar) (RFC 5545) to support use of non-Gregorian recurrence rules. It also defines how Calendaring Extensions to WebDAV (CalDAV) (RFC 4791) servers and clients can be extended to support these new recurrence rules.

このドキュメントでは、グレゴリオ暦以外の繰り返しルールの使用をサポートするために、インターネットカレンダーおよびスケジュールコアオブジェクト仕様(iCalendar)(RFC 5545)の拡張機能を定義します。また、WebDAV(CalDAV)(RFC 4791)サーバーおよびクライアントへのカレンダー拡張機能を拡張して、これらの新しい繰り返しルールをサポートする方法も定義します。

Status of This Memo

本文書の状態

This is an Internet Standards Track document.

これはInternet Standards Trackドキュメントです。

This document is a product of the Internet Engineering Task Force (IETF). It represents the consensus of the IETF community. It has received public review and has been approved for publication by the Internet Engineering Steering Group (IESG). Further information on Internet Standards is available in Section 2 of RFC 5741.

このドキュメントは、IETF(Internet Engineering Task Force)の製品です。これは、IETFコミュニティのコンセンサスを表しています。公開レビューを受け、インターネットエンジニアリングステアリンググループ(IESG)による公開が承認されました。インターネット標準の詳細については、RFC 5741のセクション2をご覧ください。

Information about the current status of this document, any errata, and how to provide feedback on it may be obtained at http://www.rfc-editor.org/info/rfc7529.

このドキュメントの現在のステータス、エラータ、およびフィードバックの提供方法に関する情報は、http://www.rfc-editor.org/info/rfc7529で入手できます。

Copyright Notice

著作権表示

Copyright (c) 2015 IETF Trust and the persons identified as the document authors. All rights reserved.

Copyright(c)2015 IETF Trustおよびドキュメントの作成者として識別された人物。全著作権所有。

This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.

この文書は、BCP 78およびこの文書の発行日に有効なIETF文書に関するIETFトラストの法的規定(http://trustee.ietf.org/license-info)の対象となります。これらのドキュメントは、このドキュメントに関するあなたの権利と制限を説明しているため、注意深く確認してください。このドキュメントから抽出されたコードコンポーネントには、Trust Legal Provisionsのセクション4.eに記載されているSimplified BSD Licenseのテキストが含まれている必要があり、Simplified BSD Licenseに記載されているように保証なしで提供されます。

Table of Contents

目次

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   2
   2.  Conventions Used in This Document . . . . . . . . . . . . . .   3
   3.  Overview  . . . . . . . . . . . . . . . . . . . . . . . . . .   4
   4.  Extended RRULE Property . . . . . . . . . . . . . . . . . . .   6
     4.1.  Skipping Invalid Dates  . . . . . . . . . . . . . . . . .   6
     4.2.  Handling Leap Months  . . . . . . . . . . . . . . . . . .   9
     4.3.  Examples  . . . . . . . . . . . . . . . . . . . . . . . .  10
   5.  Registering Calendar Systems  . . . . . . . . . . . . . . . .  13
   6.  Compatibility . . . . . . . . . . . . . . . . . . . . . . . .  13
   7.  Use with iTIP . . . . . . . . . . . . . . . . . . . . . . . .  14
   8.  Use with xCal . . . . . . . . . . . . . . . . . . . . . . . .  15
   9.  Use with jCal . . . . . . . . . . . . . . . . . . . . . . . .  15
   10. Use with CalDAV . . . . . . . . . . . . . . . . . . . . . . .  16
     10.1.  CALDAV:supported-rscale-set Property . . . . . . . . . .  17
   11. Security Considerations . . . . . . . . . . . . . . . . . . .  18
   12. References  . . . . . . . . . . . . . . . . . . . . . . . . .  18
     12.1.  Normative References . . . . . . . . . . . . . . . . . .  18
     12.2.  Informative References . . . . . . . . . . . . . . . . .  19
   Appendix A.  xCal RELAX NG Schema Update  . . . . . . . . . . . .  20
   Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . .  21
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  21
        
1. Introduction
1. はじめに

The iCalendar [RFC5545] data format is in widespread use to represent calendar data. iCalendar represents dates and times using the Gregorian calendar system only. It does provide a way to use non-Gregorian calendar systems via a "CALSCALE" property, but this has never been used. However, there is a need to support at least non-Gregorian recurrence patterns to cover anniversaries, and many local, religious, or civil holidays based on non-Gregorian dates.

iCalendar [RFC5545]データ形式は、カレンダーデータを表すために広く使用されています。 iCalendarは、グレゴリオ暦システムのみを使用して日付と時刻を表します。 「CALSCALE」プロパティを介して非グレゴリオ暦システムを使用する方法を提供しますが、これは使用されていません。ただし、記念日、および非グレゴリオ暦の日付に基づく多くの地方、宗教、または市民の休日をカバーするために、少なくとも非グレゴリオ暦の再発パターンをサポートする必要があります。

There are several disadvantages to using the existing "CALSCALE" property in iCalendar for implementing non-Gregorian calendars:

非グレゴリオ暦を実装するためにiCalendarの既存の「CALSCALE」プロパティを使用することには、いくつかの欠点があります。

1. The "CALSCALE" property exists in the top-level "VCALENDAR" objects and thus applies to all components within that object. In today's multi-cultural society, that restricts the ability to mix events from different calendar systems within the same iCalendar object, e.g., it would prevent having both the Gregorian New Year and Chinese New Year in the same iCalendar object.

1. 「CALSCALE」プロパティはトップレベルの「VCALENDAR」オブジェクトに存在するため、そのオブジェクト内のすべてのコンポーネントに適用されます。今日の多文化社会では、同じiCalendarオブジェクト内で異なるカレンダーシステムからのイベントを混合する機能が制限されます。たとえば、同じiCalendarオブジェクトにグレゴリオ暦の正月と中国の旧正月の両方を含めることができなくなります。

2. Time zone and daylight saving time rules are typically published using Gregorian calendar dates and rules (e.g., "the 3rd Sunday in March") and are thus converted to iCalendar "VTIMEZONE" components using Gregorian dates and recurrence rules. This results in the problem whereby one component (the "VTIMEZONE") is fixed to the Gregorian calendar system, and another (a "VEVENT") wants to use a different non-Gregorian calendar scale; thus, the single top-level "CALSCALE" property is again inadequate.

2.タイムゾーンと夏時間のルールは、通常、グレゴリオ暦の日付とルール(たとえば、「3月の第3日曜日」)を使用して公開されるため、グレゴリオ暦の日付と繰り返しルールを使用してiCalendar "VTIMEZONE"コンポーネントに変換されます。この結果、1つのコンポーネント(「VTIMEZONE」)がグレゴリオ暦システムに固定され、別のコンポーネント(「VEVENT」)が異なる非グレゴリオ暦カレンダースケールを使用したいという問題が発生します。したがって、単一の最上位の「CALSCALE」プロパティは、やはり不適切です。

This specification solves these issues by allowing the "CALSCALE" to remain set to Gregorian but redefining the "RRULE" recurrence rule property to accept new items, including one that allows non-Gregorian calendar systems to be used. With this, all the "DATE", "DATE-TIME", and "PERIOD" values in the iCalendar object would remain specified using the Gregorian calendar system, but repeating patterns in other calendar systems could be defined. It is then up to calendar user agents and servers to map between Gregorian and non-Gregorian calendar systems in order to expand out recurrence instances. The non-Gregorian recurrence rules can be used in any iCalendar component that allows the "RRULE" property to be specified, including "VTIMEZONE" components (to allow for possible future use of non-Gregorian rules in published daylight saving time data).

この仕様では、 "CALSCALE"をグレゴリオ暦に設定したままにすることでこれらの問題を解決しますが、 "RRULE"繰り返しルールプロパティを再定義して、非グレゴリオ暦システムの使用を許可するものを含む新しいアイテムを受け入れます。これにより、iCalendarオブジェクトのすべての「DATE」、「DATE-TIME」、および「PERIOD」の値は、グレゴリオ暦システムを使用して指定されたままになりますが、他のカレンダーシステムの繰り返しパターンを定義できます。その後、繰り返しインスタンスを展開するために、グレゴリオ暦と非グレゴリオ暦のシステムをマッピングするのは、カレンダーユーザーエージェントとサーバー次第です。非グレゴリオ繰り返しルールは、「VTIMEZONE」コンポーネントを含む「RRULE」プロパティを指定できる任意のiCalendarコンポーネントで使用できます(公開された夏時間データで非グレゴリオ規則を将来使用できるようにするため)。

This specification does not itself define calendar systems; rather, it utilizes the calendar system registry defined by the Unicode Consortium in their Common Locale Data Repository (CLDR) project [UNICODE.CLDR], as implemented in the Unicode (International Components for Unicode (ICU)) Library [UNICODE.ICU].

この仕様自体はカレンダーシステムを定義していません。むしろ、Unicode(International Components for Unicode(ICU))ライブラリ[UNICODE.ICU]で実装されているように、UnicodeコンソーシアムのCommon Locale Data Repository(CLDR)プロジェクト[UNICODE.CLDR]で定義されたカレンダーシステムレジストリを利用します。

This specification makes the following updates:

この仕様により、次の更新が行われます。

It updates iCalendar [RFC5545], the XML format for iCalendar (xCal) [RFC6321], and the JSON format for iCalendar (jCal) [RFC7265], to extend the "RRULE" property definition.

「RRULE」プロパティ定義を拡張するために、iCalendar [RFC5545]、iCalendar(xCal)[RFC6321]のXML形式、およびiCalendar(jCal)[RFC7265]のJSON形式を更新します。

It clarifies use of the iCalendar Transport-Independent Interoperability Protocol (iTIP) [RFC5546] to specify how the extended "RRULE" property should be handled in iTIP messages.

これは、iCalendarトランスポート独立相互運用プロトコル(iTIP)[RFC5546]の使用を明確にし、iTIPメッセージで拡張 "RRULE"プロパティを処理する方法を指定します。

It extends CalDAV [RFC4791] to specify how the extended "RRULE" property can be supported by CalDAV servers and clients.

CalDAV [RFC4791]を拡張して、拡張 "RRULE"プロパティをCalDAVサーバーとクライアントでサポートする方法を指定します。

2. Conventions Used in This Document
2. このドキュメントで使用される規則

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119].

キーワード「MUST」、「MUST NOT」、「REQUIRED」、「SHALL」、「SHALL NOT」、「SHOULD」、「SHOULD NOT」、「RECOMMENDED」、「NOT RECOMMENDED」、「MAY」、「OPTIONALこの文書の "は、[RFC2119]で説明されているように解釈されます。

The notation used in this memo is the ABNF notation of [RFC5234] as used by iCalendar [RFC5545]. Any syntax elements shown below that are not explicitly defined in this specification come from iCalendar [RFC5545], iTIP [RFC5546], and CalDAV [RFC4791].

このメモで使用されている表記は、iCalendar [RFC5545]で使用されている[RFC5234]のABNF表記です。この仕様で明示的に定義されていない以下に示す構文要素は、iCalendar [RFC5545]、iTIP [RFC5546]、およびCalDAV [RFC4791]に由来します。

When XML element types in the namespaces "DAV:" and "urn:ietf:params:xml:ns:caldav" are referenced in this document outside of the context of an XML fragment, the string "DAV:" and "CALDAV:" will be prefixed to the element type names, respectively.

名前空間「DAV:」および「urn:ietf:params:xml:ns:caldav」のXML要素タイプが、XMLフラグメントのコンテキスト外でこのドキュメントで参照されている場合、文字列「DAV:」および「CALDAV:」それぞれ要素タイプ名の前に付けられます。

When a Gregorian calendar date is shown in text, it will use the format "YYYYMMDD", where "YYYY" is the 4-digit year, "MM" the 2-digit month, and "DD" the 2-digit day (this is the same format used in iCalendar [RFC5545]). The Chinese calendar will be used as an example of a non-Gregorian calendar for illustrative purposes. When a Chinese calendar date is shown in text, it will use the format "{C}YYYYMM[L]DD" -- i.e., the same format as Gregorian but with a "{C}" prefix, and an optional "L" character after the month element to indicate a leap month. Similarly, {E} and {H} are used in other examples as prefixes for Ethiopic (Amete Mihret) and Hebrew dates, respectively. The "{}" prefix is used for purely illustrative purposes and never appears in actual dates used in iCalendar or related specifications. Note that the Chinese calendar years shown in the examples are based on the Unicode (ICU) [UNICODE.ICU] library's Chinese calendar epoch. While there are several different Chinese calendar epochs in common use, the choice of one over another does not impact the actual calculation of the Gregorian equivalent dates, provided conversion is always done using the same epoch.

グレゴリオ暦の日付がテキストで表示される場合、「YYYYMMDD」という形式が使用されます。「YYYY」は4桁の年、「MM」は2桁の月、「DD」は2桁の日(これはiCalendar [RFC5545]で使用されているものと同じ形式です。中国のカレンダーは、例証目的で非グレゴリオ暦の例として使用されます。中国のカレンダーの日付がテキストで表示される場合、「{C} YYYYMM [L] DD」という形式が使用されます。つまり、グレゴリオ暦と同じ形式ですが、「{C}」の接頭辞とオプションの「L」が付きます。うるう月を示す月要素の後の文字。同様に、{E}と{H}は、他の例では、それぞれエチオピア(アメテミフレ)日付とヘブライ日付の接頭辞として使用されます。 「{}」接頭辞は、単に説明のために使用され、iCalendarまたは関連する仕様で使用される実際の日付には表示されません。例に示されている中国の暦年は、Unicode(ICU)[UNICODE.ICU]ライブラリの中国の暦エポックに基づいていることに注意してください。一般的に使用されているいくつかの異なる中国暦のエポックがありますが、変換を常に同じエポックを使用して実行する場合、グレゴリオ暦の同等の日付の実際の計算には、どちらを選択しても影響はありません。

3. Overview
3. 概観

In the Gregorian calendar system, each year is composed of a fixed number of months (12), with each month having a fixed number of days (between 30 and 31), except for the second month (February), which contains either 28 or 29 days (the latter in a leap year). Weeks are composed of 7 days, with day names Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, and Sunday. Years can have either 365 or 366 days (the latter in a leap year). The number of whole weeks in a year is 52 (though the [ISO.8601.2004] week numbering scheme used by iCalendar [RFC5545] can have a numeric count up to 53).

グレゴリオ暦システムでは、各年は固定数の月(​​12)で構成され、各月には固定日数(30から31の間)がありますが、2番目の月(2月)は28または29日(うるう年の後半)。週は7日で構成され、曜日の名前は月曜日、火曜日、水曜日、木曜日、金曜日、土曜日、日曜日です。年には、365日または366日のいずれかを指定できます(うるう年では後者)。 1年の全体の週数は52です(ただし、[iCalendar [RFC5545]で使用される[ISO.8601.2004]週の番号付けスキームでは、53までの数値を使用できます)。

In iCalendar, the "RECUR" value type defines various fields used to express a recurrence pattern, and those fields are given limits based on those of the Gregorian calendar system. Since other calendar systems can have different limits and other behaviors that need to be accounted for, the maximum values for the elements in the "RECUR" value are not covered by this specification.

iCalendarでは、「RECUR」値タイプは、繰り返しパターンを表すために使用されるさまざまなフィールドを定義し、これらのフィールドには、グレゴリオ暦システムのフィールドに基づいて制限が与えられます。他のカレンダーシステムでは、さまざまな制限や他の動作を考慮する必要があるため、「RECUR」値の要素の最大値は、この仕様ではカバーされていません。

To generate a set of recurring instances in a non-Gregorian calendar system, the following principles are used:

非グレゴリオ暦システムで一連の繰り返しインスタンスを生成するには、次の原則が使用されます。

1. iCalendar data continues to use the "GREGORIAN" calendar system, so all "DATE", "DATE-TIME", and "PERIOD" values continue to use the Gregorian format and limits.

1. iCalendarデータは引き続き「GREGORIAN」カレンダーシステムを使用するため、すべての「DATE」、「DATE-TIME」、および「PERIOD」値は引き続きグレゴリオ形式と制限を使用します。

2. The "RRULE" property is extended to include an "RSCALE" element in its value that specifies the calendar system to use for the recurrence pattern. The existing elements of the "RRULE" value type are used, but modified to support different upper limits, based on the "RSCALE" value, as well as a modification to month numbers to allow a leap month to be specified. Existing requirements for the use of "RRULE" all still apply (e.g., the "RRULE" has to match the "DTSTART" value of the master instance). Other recurrence properties such as "RECURRENCE-ID", "RDATE", and "EXDATE" continue to use the Gregorian date format as "CALSCALE" is unchanged.

2. "RRULE"プロパティが拡張され、反復パターンに使用するカレンダーシステムを指定する値に "RSCALE"要素が含まれるようになりました。 「RRULE」値タイプの既存の要素が使用されますが、「RSCALE」値に基づいて異なる上限をサポートするように変更され、うるう月を指定できるように月番号を変更します。 「RRULE」の使用に関する既存の要件はすべて適用されます(たとえば、「RRULE」はマスターインスタンスの「DTSTART」値と一致する必要があります)。 「RECURRENCE-ID」、「RDATE」、「EXDATE」などの他の繰り返しプロパティでは、「CALSCALE」が変更されていないため、グレゴリオ日付形式が引き続き使用されます。

When generating instances, the following procedure might be used:

インスタンスを生成するときは、次の手順を使用できます。

1. Convert the "DTSTART" property value of the master recurring component into the date and time components for the calendar system specified by the "RSCALE" element in the "RRULE" value. This provides the "seed" value for generating subsequent recurrence instances.

1. マスター定期コンポーネントの「DTSTART」プロパティ値を、「RRULE」値の「RSCALE」要素で指定されたカレンダーシステムの日付および時刻コンポーネントに変換します。これにより、後続の繰り返しインスタンスを生成するための「シード」値が提供されます。

2. Iteratively generate instances using the "RRULE" value applied to the year, month, and day components of the date in the new calendar system.

2. 新しいカレンダーシステムの日付の年、月、日のコンポーネントに適用される「RRULE」値を使用して、インスタンスを繰り返し生成します。

3. For each generated instance, convert the dates and times back from the non-Gregorian form into Gregorian and use those values for other properties such as "RECURRENCE-ID".

3. 生成されたインスタンスごとに、日付と時刻をグレゴリオ暦以外の形式からグレゴリオ暦に変換し、それらの値を「RECURRENCE-ID」などの他のプロパティに使用します。

Consider the following example for an event representing the Chinese New Year:

旧正月を表すイベントの次の例を考えてみます。

   DTSTART;VALUE=DATE:20130210
   RRULE:RSCALE=CHINESE;FREQ=YEARLY
   SUMMARY:Chinese New Year
        

To generate instances, first the "DTSTART" value "20130210" is converted into the Chinese calendar system giving "{C}46500101". Next, the year component is incremented by one to give "{C}46510101", and that is then converted back into Gregorian as "20140131". Additional instances are generated by iteratively increasing the year component in the Chinese date and converting back to Gregorian.

インスタンスを生成するには、最初に「DTSTART」値「20130210」を中国のカレンダーシステムに変換し、「{C} 46500101」を取得します。次に、年の構成要素が1だけインクリメントされて「{C} 46510101」が得られ、それが「20140131」としてグレゴリオ暦に変換されます。追加のインスタンスは、中国の日付の年コンポーネントを繰り返し増加させ、グレゴリオ暦に変換することによって生成されます。

4. Extended RRULE Property
4. 拡張RRULEプロパティ

This specification extends the existing "RRULE" iCalendar property value to include a new "RSCALE" element that can be used to indicate the calendar system used for generating the recurrence pattern.

この仕様は、既存の "RRULE" iCalendarプロパティ値を拡張して、繰り返しパターンの生成に使用されるカレンダーシステムを示すために使用できる新しい "RSCALE"要素を含めます。

When "RSCALE" is present, the other changes to "RRULE" are:

「RSCALE」が存在する場合、「RRULE」に対するその他の変更は次のとおりです。

1. Elements that include numeric values (e.g., "BYYEARDAY") have numeric ranges defined by the "RSCALE" value (i.e., in some calendar systems there might be more than 366 days in a year).

1. 数値を含む要素(「BYYEARDAY」など)には、「RSCALE」値によって定義された数値範囲があります(つまり、一部のカレンダーシステムでは、1年間に366日を超える場合があります)。

2. Month numbers can include an "L" suffix to indicate that the specified month is a leap month in the corresponding calendar system (see Section 4.2).

2. 月番号には、指定された月が対応するカレンダーシステムのうるう月であることを示す "L"サフィックスを含めることができます(セクション4.2を参照)。

3. A "SKIP" element is added to define how "missing" instances are handled (see Section 4.1).

3. 「欠落」インスタンスの処理方法を定義するために「SKIP」要素が追加されています(セクション4.1を参照)。

The syntax for the "RECUR" value is modified in the following fashion:

「RECUR」値の構文は、次のように変更されます。

   ; recur-rule-part is extended from RFC 5545
   recur-rule-part =/   ("RSCALE" "=" rscale)
                      / ("SKIP" "=" skip)
        
   rscale          = (iana-token  ; A CLDR-registered calendar system
                                  ; name.
                    / x-name)     ; A non-standard, experimental
                                  ; calendar system name.
                                  ; Names are case insensitive,
                                  ; but uppercase values are preferred.
        
   skip            = ("OMIT" / "BACKWARD" / "FORWARD")
                    ; Optional, with default value "OMIT", and
                    ; MUST NOT be present unless "RSCALE" is present.
        
   monthnum        = 1*2DIGIT  ["L"]
                    ; Existing element modified to include a leap
                    ; month indicator suffix.
        
4.1. Skipping Invalid Dates
4.1. 無効な日付をスキップする

In every calendar system, only certain combinations of day-of-month and month values are valid for a given year, e.g., in the Gregorian calendar system, January 31st is valid but February 31st is not. Similarly, February 29th is valid in a leap year but invalid in a non-leap year. Other calendar systems can also include leap months (see Section 4.2), which vary from year to year. This poses a problem for recurring events where the frequency of recurrence might give rise to an invalid date. For example, a recurring event that starts on January 31st and is set to repeat monthly will generate invalid dates for months with fewer than 31 days. The iCalendar [RFC5545] specification requires recurrence rule generators to ignore any invalid dates generated when iterating the rule. However, that behavior might be surprising to a calendar user born on a leap day and whose birthday event only appears on their calendar every four years. There are common conventions used by humans to determine what to do in such cases, but those conventions can differ from calendar system to calendar system, as well as within the same calendar system, depending on the nature of the event. Typically, humans will expect the "missing" events to be moved to an earlier or later (valid) date.

すべてのカレンダーシステムでは、特定の年に有効な日と月の値の特定の組み合わせのみが有効です。たとえば、グレゴリオ暦システムでは、1月31日は有効ですが、2月31日は無効です。同様に、2月29日はうるう年では有効ですが、うるう年以外では無効です。その他のカレンダーシステムには、年によって異なるうるう月(4.2項を参照)を含めることもできます。これは、繰り返しの頻度によって無効な日付が発生する可能性がある繰り返しイベントに問題を引き起こします。たとえば、1月31日に始まり、毎月繰り返すように設定されている定期的なイベントは、31日未満の月には無効な日付を生成します。 iCalendar [RFC5545]仕様では、ルールの反復時に生成された無効な日付を無視する繰り返しルールジェネレーターが必要です。ただし、うるう日に生まれ、その誕生日イベントがカレンダーに4年ごとにしか表示されないカレンダーユーザーにとって、この動作は意外なものかもしれません。このような場合に何をするかを決定するために人間が使用する一般的な規則がありますが、それらの規則は、イベントの性質に応じて、同じカレンダーシステム内だけでなく、カレンダーシステムごとに異なる場合があります。通常、人間は「欠落した」イベントがより早いまたはより遅い(有効な)日付に移動することを期待します。

This specification introduces a new "RRULE" element, "SKIP", for use only when the "RSCALE" element is present. The "SKIP" element allows the calendar user agent to specify new options for handling invalid dates.

この仕様では、「RSCALE」要素が存在する場合にのみ使用する新しい「RRULE」要素「SKIP」が導入されています。 「SKIP」要素を使用すると、カレンダーのユーザーエージェントは無効な日付を処理するための新しいオプションを指定できます。

"SKIP=OMIT": this is the default option and corresponds to the existing iCalendar behavior of simply ignoring the invalid date.

"SKIP = OMIT":これはデフォルトのオプションであり、無効な日付を単に無視するという既存のiCalendarの動作に対応しています。

"SKIP=BACKWARD": when this option is set, a date with an invalid month is changed to the previous (valid) month. A date with an invalid day-of-month is changed to the previous (valid) day-of-month.

"SKIP = BACKWARD":このオプションを設定すると、無効な月のある日付が前の(有効な)月に変更されます。無効な月の日付は、前の(有効な)日に変更されます。

"SKIP=FORWARD": when this option is set, a date with an invalid month is changed to the next (valid) month. A date with an invalid day-of-month is changed to the next (valid) day-of-month.

"SKIP = FORWARD":このオプションを設定すると、無効な月のある日付が次の(有効な)月に変更されます。無効な月の日付は、次の(有効な)日に変更されます。

Note that for both "BACKWARD" and "FORWARD", if the month is changed and results in an invalid day-of-month, then the skip behavior will be reapplied as per the day-of-month rules, according to the processing order defined below.

「BACKWARD」と「FORWARD」の両方で、月が変更されて無効な月になった場合、処理順序に従って、スキップの動作が月の規則に従って再適用されることに注意してください。以下で定義します。

The month and day-of-month skip behavior is only applied at specific points during the processing of an "RRULE" as determined by the order in which any "BYxxx" elements are processed. The order is as follows (based on the "RRULE" element processing order defined in Section 3.3.10 of [RFC5545]):

月と日のスキップ動作は、「BYxxx」要素が処理される順序によって決定される「RRULE」の処理中の特定の時点でのみ適用されます。順序は次のとおりです([RFC5545]のセクション3.3.10で定義されている「RRULE」要素の処理順序に基づく)。

o BYMONTH

o 月ごと

o SKIP (for invalid month only) o BYWEEKNO

o SKIP(無効な月のみ)o BYWEEKNO

o BYYEARDAY

o BYYEARDAY

o BYMONTHDAY

o BYMONTHDAY

o SKIP (for invalid day)

o SKIP(無効な日)

o BYDAY

o 日ごとに

o BYHOUR

o ベーア

o BYMINUTE

o ビーム

o BYSECOND

o BYSECOND

o BYSETPOS

o BYSETPOS

o COUNT

o カウント

o UNTIL

o まで

It is often possible to avoid having to deal with invalid dates by determining the real intent of a human user, e.g., a human creating a monthly recurring event that starts on January 31st likely intends the event to occur on the last day of every month, in which case that could be encoded into an "RRULE" by using the "BYMONTHDAY=-1" element.

多くの場合、人間のユーザーの実際の意図を判断することにより、無効な日付に対処する必要がないようにすることができます。たとえば、1月31日に始まる毎月の定期的なイベントを作成する人間は、イベントが毎月の最終日に発生することを意図しています。その場合、「BYMONTHDAY = -1」要素を使用して「RRULE」にエンコードできます。

Only a few types of recurrence patterns are likely to need the use of "SKIP". The following is a list of some situations where it might be needed:

「スキップ」の使用が必要になる可能性が高いのは、ごく一部のタイプの反復パターンのみです。以下は、必要になる可能性のあるいくつかの状況のリストです。

1. The start date of the recurrence is a leap day in the specified calendar system.

1. 繰り返しの開始日は、指定されたカレンダーシステムのうるう日です。

2. The start date of the recurrence is in a leap month in the specified calendar system.

2. 繰り返しの開始日は、指定されたカレンダーシステムのうるう月です。

3. The start date of the recurrence has a day-of-month value greater than the smallest day-of-month value for any month in any year in the specified calendar system.

3. 繰り返しの開始日は、指定されたカレンダーシステムの任意の年の任意の月の最小の日付値より大きい日付値を持っています。

4. A "BYMONTHDAY" element in an "RRULE" has a day-of-month value greater than the smallest day-of-month value for any month in any year in the specified calendar system.

4. "RRULE"の "BYMONTHDAY"要素の日付の値が、指定されたカレンダーシステムの任意の年の任意の月の最小の日付の値よりも大きくなっています。

5. A "BYMONTH" element in an "RRULE" has a value corresponding to a leap month in the specified calendar system.

5. 「RRULE」の「BYMONTH」要素には、指定されたカレンダーシステムのうるう月に対応する値があります。

6. A combination of a "BYMONTHDAY" element and a "BYMONTH" element in an "RRULE" has a value corresponding to a leap day in the specified calendar system.

6. 「BYMONTHDAY」要素と「RRULE」の「BYMONTH」要素の組み合わせには、指定されたカレンダーシステムのうるう日に対応する値があります。

7. A "BYYEARDAY" element in an "RRULE" has an absolute value greater than the smallest number of days in any year in the specified calendar system.

7. 「RRULE」内の「BYYEARDAY」要素の絶対値が、指定されたカレンダーシステムの任意の年の最小日数よりも大きい。

8. A "BYWEEKNO" element in an "RRULE" has an absolute value greater than the smallest number of weeks in any year in the specified calendar system.

8. 「RRULE」の「BYWEEKNO」要素の絶対値が、指定されたカレンダーシステムでの任意の年の最小週数よりも大きい。

Examples of using "SKIP" for some common use cases appear in Section 4.3.

一般的な使用例で「スキップ」を使用する例は、セクション4.3に記載されています。

4.2. Handling Leap Months
4.2. うるう月の扱い

Leap months can occur in different calendar systems. For such calendar systems, the following rules are applied for "identifying" months:

うるう月は、異なるカレンダーシステムで発生する可能性があります。このようなカレンダーシステムでは、次のルールが「識別」月に適用されます。

1. Numeric values 1 through N are used to identify regular, non-leap, months (where N is the number of months in a regular, non-leap, year).

1. 1からNまでの数値は、通常のうるうのない月を識別するために使用されます(Nは通常のうるうのない年の月数)。

2. The suffix "L" is added to the regular month number to indicate a leap month that follows the regular month, e.g., "5L" is a leap month that follows the 5th regular month in the year.

2. 正規の月番号に接尾辞「L」が追加されて、正規の月に続くうるう月を示します。たとえば、「5L」は、その年の5番目の正規の月に続くうるう月です。

Care has to be taken when mapping the month identifiers used here with those of any underlying calendar system library being used. In particular, the Hebrew calendar system used by Unicode (ICU) [UNICODE.ICU] uses a month number scheme of 1 through 13, with month 6 being the leap month, and in non-leap years, month 6 is skipped. Thus, ICU months 1 through 5 map to iCalendar months 1 through 5, ICU month 6 maps to iCalendar month "5L", and ICU months 7 through 13 map to iCalendar months 6 through 12.

ここで使用される月の識別子を、使用されている基になるカレンダーシステムライブラリの識別子とマッピングする場合は注意が必要です。特に、ユニコード(ICU)[UNICODE.ICU]で使用されるヘブライ語のカレンダーシステムは、1〜13の月番号スキームを使用します。月6はうるう月で、うるう年でない場合、月6はスキップされます。したがって、ICUの1〜5か月はiCalendarの1〜5か月にマップされ、ICUの6か月はiCalendarの月「5L」にマップされ、ICUの7〜13か月はiCalendarの6〜12か月にマップされます。

4.3. Examples
4.3. 例
4.3.1. Chinese New Year
4.3.1. 旧正月

Consider the following set of iCalendar properties (from the example above):

以下のiCalendarプロパティのセット(上記の例から)を検討してください。

   DTSTART;VALUE=DATE:20130210
   RRULE:RSCALE=CHINESE;FREQ=YEARLY
   SUMMARY:Chinese New Year
        

These define a recurring event for the Chinese New Year, with the first instance being the one in Gregorian year 2013.

これらは、中国の旧正月の定期的なイベントを定義し、最初のインスタンスはグレゴリオ暦2013年のものです。

The Chinese date corresponding to the first instance is "{C}46500101". The table below shows the initial instance and the next four, each of which is determined by adding the appropriate amount to the year component of the Chinese date. Also shown is the conversion back to the Gregorian date:

最初のインスタンスに対応する中国の日付は "{C} 46500101"です。次の表は、最初のインスタンスと次の4つのインスタンスを示しています。各インスタンスは、中国の日付の年コンポーネントに適切な量を追加することによって決定されます。また、グレゴリオ暦の日付への変換も示されています。

                +--------------+--------------------------+
                | Chinese Date | Gregorian Date           |
                +--------------+--------------------------+
                | {C}46500101  | 20130210 - DTSTART value |
                | {C}46510101  | 20140131                 |
                | {C}46520101  | 20150219                 |
                | {C}46530101  | 20160208                 |
                | {C}46540101  | 20170128                 |
                +--------------+--------------------------+
        
4.3.2. Ethiopic 13th Month
4.3.2. エチオピア13か月

Consider the following set of iCalendar properties:

以下のiCalendarプロパティのセットを検討してください。

   DTSTART;VALUE=DATE:20130906
   RRULE:RSCALE=ETHIOPIC;FREQ=MONTHLY;BYMONTH=13
   SUMMARY:First day of 13th month
        

These define a recurring event for the first day of the 13th month, with the first instance being the one in Gregorian year 2013. While there are a number of alternative ways of writing the "RRULE" above to achieve the same pattern of recurring dates, the one above was chosen to illustrate a "BYMONTH" value exceeding the limit of 12, previously described in iCalendar (Section 3.3.10 of [RFC5545]).

これらは、13か月の最初の日の定期的なイベントを定義します。最初のインスタンスはグレゴリオ暦2013年のものです。上記の「RRULE」を書いて同じ定期的な日付のパターンを実現する方法はいくつかありますが、上記の1つは、以前にiCalendarで説明されている12の制限を超える「BYMONTH」値を示すために選択されました([RFC5545]のセクション3.3.10)。

The Ethiopic date corresponding to the first instance is "{E}20051301". The table below shows the initial instance and the next four, each of which is determined by adding the appropriate amount to the year component of the Ethiopic date. Also shown is the conversion back to the Gregorian date:

最初のインスタンスに対応するエチオピアの日付は "{E} 20051301"です。次の表は、最初のインスタンスと次の4つのインスタンスを示しています。各インスタンスは、エチオピアの日付の年コンポーネントに適切な量を追加することによって決定されます。また、グレゴリオ暦の日付への変換も示されています。

               +---------------+--------------------------+
               | Ethiopic Date | Gregorian Date           |
               +---------------+--------------------------+
               | {E}20051301   | 20130906 - DTSTART value |
               | {E}20061301   | 20140906                 |
               | {E}20071301   | 20150906                 |
               | {E}20081301   | 20160906                 |
               | {E}20091301   | 20170906                 |
               +---------------+--------------------------+
        

Note that in this example, the value of the "BYMONTH" component in the "RRULE" matches the Ethiopic month value and not the Gregorian month.

この例では、「RRULE」の「BYMONTH」コンポーネントの値は、エチオピアの月の値と一致し、グレゴリオの月とは一致しないことに注意してください。

4.3.3. Hebrew Anniversary Starting in a Leap Month
4.3.3. うるう月から始まるヘブライ語の記念日

Consider the following set of iCalendar properties:

以下のiCalendarプロパティのセットを検討してください。

   DTSTART;VALUE=DATE:20140208
   RRULE:RSCALE=HEBREW;FREQ=YEARLY;BYMONTH=5L;BYMONTHDAY=8;SKIP=FORWARD
   SUMMARY:Anniversary
        

These define a recurring event for the 8th day of the Hebrew month of Adar I (the leap month identified by "5L"), with the first instance being the one in Gregorian year 2014.

これらは、Adar Iのヘブライ語の月の8日( "5L"で識別されるうるう月)の繰り返しイベントを定義し、最初のインスタンスはグレゴリオ暦2014年のものです。

The Hebrew date corresponding to the first instance is "{H}577405L08", which is a leap month in year 5774. The table below shows the initial instance and the next four, each of which is determined by adding the appropriate amount to the year component of the Hebrew date, taking into account that only year 5776 is a leap year. Thus, in other years the Hebrew month component is adjusted forward to month 6. Also shown is the conversion back to the Gregorian date:

最初のインスタンスに対応するヘブライ日付は "{H} 577405L08"であり、これは5774年のうるう月です。次の表は、最初のインスタンスと次の4つを示しています。各インスタンスは、適切な量を年に追加して決定されます5776年だけがうるう年であることを考慮して、ヘブライ日付の構成要素したがって、他の年では、ヘブライ語の月の構成要素は月6に前に調整されます。また、グレゴリオ暦の日付への変換も示されています。

                +--------------+--------------------------+
                | Hebrew Date  | Gregorian Date           |
                +--------------+--------------------------+
                | {H}577405L08 | 20140208 - DTSTART value |
                | {H}57750608  | 20150227                 |
                | {H}577605L08 | 20160217                 |
                | {H}57770608  | 20170306                 |
                | {H}57780608  | 20180223                 |
                +--------------+--------------------------+
        
4.3.4. Gregorian Leap Day with SKIP
4.3.4. SKIPによるグレゴリオ暦のうるう日

Consider the following set of iCalendar properties:

以下のiCalendarプロパティのセットを検討してください。

   DTSTART;VALUE=DATE:20120229
   RRULE:FREQ=YEARLY
   SUMMARY:Anniversary
        

These define a recurring event for the 29th of February, 2012, in the standard iCalendar calendar scale -- Gregorian. The standard iCalendar behavior is that non-existent dates in a recurrence set are ignored. Thus, the properties above would only generate instances in leap years (2016, 2020, etc.), which is likely not what users expect. The new "RSCALE" option defined by this specification provides the "SKIP" element, which can be used to "fill in" the missing instances in an appropriate fashion. The set of iCalendar properties below does that:

これらは、標準のiCalendarカレンダースケール(グレゴリオ暦)で、2012年2月29日の定期的なイベントを定義します。標準のiCalendarの動作では、繰り返しセットに存在しない日付は無視されます。したがって、上記のプロパティはうるう年(2016、2020など)でのみインスタンスを生成し、ユーザーが期待するものではない可能性があります。この仕様で定義された新しい「RSCALE」オプションは、欠落したインスタンスを適切に「埋める」ために使用できる「SKIP」要素を提供します。以下のiCalendarプロパティのセットはそれを行います:

   DTSTART;VALUE=DATE:20120229
   RRULE:RSCALE=GREGORIAN;FREQ=YEARLY;SKIP=FORWARD
   SUMMARY:Anniversary
        

With these properties, the "missing" instances in non-leap years now appear on the 1st of March in those years:

これらのプロパティにより、うるう年以外の「欠落した」インスタンスは、それらの年の3月1日に表示されるようになりました。

      +-------------------------------+----------------------------+
      | Instances (with SKIP=FORWARD) | Instances (without RSCALE) |
      +-------------------------------+----------------------------+
      | 20120229                      | 20120229 - DTSTART value   |
      | 20130301                      |                            |
      | 20140301                      |                            |
      | 20150301                      |                            |
      | 20160229                      | 20160229                   |
      | 20170301                      |                            |
      +-------------------------------+----------------------------+
        
5. Registering Calendar Systems
5. カレンダーシステムの登録

This specification uses the Unicode Consortium's registry of calendar systems [UNICODE.CLDR] to define valid values for the "RSCALE" element of an "RRULE". Note that the underscore character "_" is never used in CLDR-based calendar system names. New values can be added to this registry following Unicode Consortium rules. It is expected that many implementations of non-Gregorian calendars will use software libraries provided by Unicode (ICU) [UNICODE.ICU], and hence it makes sense to reuse their registry rather than creating a new one. "RSCALE" values are case insensitive, but uppercase is preferred.

この仕様では、Unicodeコンソーシアムのカレンダーシステムのレジストリ[UNICODE.CLDR]を使用して、「RRULE」の「RSCALE」要素に有効な値を定義しています。下線文字「_」は、CLDRベースのカレンダーシステム名では使用されないことに注意してください。 Unicodeコンソーシアムの規則に従って、このレジストリに新しい値を追加できます。非グレゴリオ暦の多くの実装では、Unicode(ICU)[UNICODE.ICU]によって提供されるソフトウェアライブラリを使用することが予想されるため、新しいレジストリを作成するのではなく、レジストリを再利用する方が理にかなっています。 「RSCALE」の値では大文字と小文字が区別されませんが、大文字が推奨されます。

CLDR supports the use of "alias" values as alternative names for specific calendar systems. These alias values can be used as "RSCALE" values and are treated the same as the equivalent CLDR calendar system they are an alias for.

CLDRは、特定のカレンダーシステムの代替名として「エイリアス」値の使用をサポートしています。これらのエイリアス値は「RSCALE」値として使用でき、エイリアスである同等のCLDRカレンダーシステムと同じように扱われます。

When using the CLDR data, calendar agents SHOULD take into account the "deprecated" value and use the alternative "preferred" calendar system. In particular, the "islamicc" calendar system is considered deprecated in favor of the "islamic-civil" calendar system.

CLDRデータを使用する場合、カレンダーエージェントは「非推奨」の値を考慮し、代替の「推奨」カレンダーシステムを使用する必要があります(SHOULD)。特に、「islamicc」カレンダーシステムは「islamic-civil」カレンダーシステムを支持して非推奨と見なされます。

6. Compatibility
6. 互換性

For calendar user agents that do not support the "RSCALE" element, or do not support the calendar system specified by the "RSCALE" element value, the following behaviors are possible when processing iCalendar data:

「RSCALE」要素をサポートしない、または「RSCALE」要素の値で指定されたカレンダーシステムをサポートしないカレンダーユーザーエージェントの場合、iCalendarデータを処理するときに次の動作が可能です。

1. The calendar user agent can reject the entire iCalendar object within which at least one iCalendar component uses the unrecognized "RSCALE" element or element value.

1. カレンダーユーザーエージェントは、iCalendarオブジェクト全体を拒否できます。このオブジェクト内では、少なくとも1つのiCalendarコンポーネントが、認識されない「RSCALE」要素または要素値を使用します。

2. The calendar user agent can reject just the iCalendar components containing an unrecognized "RSCALE" element or element value. Note that any overridden components associated with those rejected components MUST also be rejected (i.e., any other components with the same "UID" property value as the one with the unrecognized "RSCALE" element or element value).

2. カレンダーユーザーエージェントは、認識されない「RSCALE」要素または要素値を含むiCalendarコンポーネントのみを拒否できます。これらの拒否されたコンポーネントに関連付けられているオーバーライドされたコンポーネントも拒否されなければならないことに注意してください(つまり、認識されない「RSCALE」要素または要素値を持つコンポーネントと同じ「UID」プロパティ値を持つ他のコンポーネント)。

3. The calendar user agent can fall back to a non-recurring behavior for the iCalendar component containing the unrecognized "RSCALE" element or element value (effectively ignoring the "RRULE" property). However, any overridden components SHOULD be rejected as they would represent "orphaned" instances that would seem to be out of place.

3. カレンダユーザーエージェントは、認識されない「RSCALE」要素または要素値(「RRULE」プロパティを事実上無視)を含むiCalendarコンポーネントの非繰り返し動作にフォールバックできます。ただし、オーバーライドされたコンポーネントは、不適切なように見える「孤立した」インスタンスを表すため、拒否する必要があります。

In general, the best choice for a calendar user agent would be option (2) above, as it would be the least disruptive choice. Note that when processing iTIP [RFC5546] messages, the manner of the rejection is covered as discussed in the next section.

一般的に、カレンダーユーザーエージェントの最善の選択は、混乱が最も少ない選択であるため、上記のオプション(2)です。 iTIP [RFC5546]メッセージを処理する場合、次のセクションで説明するように、拒否の方法がカバーされることに注意してください。

7. Use with iTIP
7. iTIPで使用

iTIP [RFC5546] defines how iCalendar data can be sent between calendar user agents to schedule calendar components between calendar users. It is often not possible to know the capabilities of a calendar user agent to which an iTIP message is being sent, but iTIP defines fallback behavior in such cases.

iTIP [RFC5546]は、カレンダーユーザーエージェント間でiCalendarデータを送信して、カレンダーユーザー間でカレンダーコンポーネントをスケジュールする方法を定義します。多くの場合、iTIPメッセージの送信先のカレンダーユーザーエージェントの機能を知ることはできませんが、iTIPはそのような場合のフォールバック動作を定義します。

For calendar user agents that do not support the "RSCALE" element, the following can occur when iTIP messages containing an "RSCALE" element are received:

「RSCALE」要素をサポートしないカレンダーユーザーエージェントの場合、「RSCALE」要素を含むiTIPメッセージを受信すると、次のことが発生する可能性があります。

The receiving calendar user agent can reject the entire iTIP message and return an iTIP reply with a "REQUEST-STATUS" property set to the "3.1" status code (as per Section 3.6.14 of [RFC5546]).

受信カレンダーのユーザーエージェントは、iTIPメッセージ全体を拒否し、「REQUEST-STATUS」プロパティを「3.1」ステータスコードに設定してiTIP応答を返すことができます([RFC5546]のセクション3.6.14に従って)。

The receiving calendar user agent can fall back to a non-recurring behavior for the calendar component (effectively ignoring the "RRULE" property) and return an iTIP reply with a "REQUEST-STATUS" property set to the "2.3", "2.5", "2.8", or "2.10" status codes (as per Sections 3.6.4, 3.6.6, 3.6.9, or 3.6.11, respectively, of [RFC5546]).

受信カレンダーユーザーエージェントは、カレンダーコンポーネントの非定期的な動作(「RRULE」プロパティを事実上無視)にフォールバックし、「REQUEST-STATUS」プロパティが「2.3」、「2.5」に設定されたiTIP応答を返すことができます。 、「2.8」、または「2.10」ステータスコード([RFC5546]のセクション3.6.4、3.6.6、3.6.9、3.6.11にそれぞれ対応)。

For calendar user agents that support the "RSCALE" element but do not support the calendar system specified by the "RSCALE" element value, the following can occur:

「RSCALE」要素をサポートするが、「RSCALE」要素の値で指定されたカレンダーシステムをサポートしないカレンダーユーザーエージェントの場合、次のことが発生する可能性があります。

The iTIP message SHOULD be rejected, returning a "REQUEST-STATUS" property set to the "3.1" status code (as per Section 3.6.14 of [RFC5546]).

iTIPメッセージは拒否する必要があり(SHOULD)、「REQUEST-STATUS」プロパティを「3.1」ステータスコードに設定して返します([RFC5546]のセクション3.6.14に従って)。

If the iTIP message is accepted and the calendar component treated as non-recurring, an iTIP reply with a "REQUEST-STATUS" property set to the "2.8" or "2.10" status codes (as per Sections 3.6.9 or 3.6.11, respectively, of [RFC5546]) SHOULD be returned.

iTIPメッセージが受け入れられ、カレンダーコンポーネントが非繰り返しとして扱われる場合、「REQUEST-STATUS」プロパティが「2.8」または「2.10」ステータスコードに設定されたiTIP応答(セクション3.6.9または3.6.11に従って) 、[RFC5546]のそれぞれ)を返す必要があります。

As noted in Section 6, the best choice is to reject the entire iTIP message.

セクション6で述べたように、最良の選択はiTIPメッセージ全体を拒否することです。

8. Use with xCal
8. xCalで使用

xCal [RFC6321] defines how iCalendar data is represented in XML. This specification extends the <recur> XML element in Section 3.6.10 of [RFC6321] in the following manner:

xCal [RFC6321]は、iCalendarデータがXMLでどのように表現されるかを定義します。この仕様は、[RFC6321]のセクション3.6.10の<recur> XML要素を次のように拡張します。

1. A new <rscale> XML element is defined as a child element of <recur>. The content of this element MUST be a string whose value is the "RSCALE" element value of the "RRULE", with case preserved.

1. 新しい<rscale> XML要素は、<recur>の子要素として定義されます。この要素のコンテンツは、値が「RRULE」の「RSCALE」要素の値である文字列である必要があります。大文字と小文字は保持されます。

2. A new <skip> XML element is defined as a child element of <recur>. The content of this element MUST be a string whose value is the "SKIP" element value of the "RRULE", with case preserved.

2. 新しい<skip> XML要素は、<recur>の子要素として定義されます。この要素のコンテンツは、値が「RRULE」の「SKIP」要素の値である文字列である必要があります。大文字と小文字は区別されます。

3. The <bymonth> XML element is redefined to support either numeric or string values as its content (as per Section 4.2).

3. <bymonth> XML要素は、コンテンツとして数値または文字列値をサポートするように再定義されています(セクション4.2に従います)。

Extensions to the RELAX NG schema in Appendix A of [RFC6321] are defined in Appendix A of this document.

[RFC6321]の付録AにあるRELAX NGスキーマの拡張は、このドキュメントの付録Aで定義されています。

Example: the iCalendar "RRULE" property:

例:iCalendar "RRULE"プロパティ:

   RRULE:RSCALE=GREGORIAN;FREQ=YEARLY;SKIP=FORWARD
        

would be represented in XML as:

XMLでは次のように表されます。

   <rrule>
     <recur>
       <rscale>GREGORIAN</rscale>
       <freq>YEARLY</freq>
       <skip>FORWARD</skip>
     </recur>
   </rrule>
        
9. Use with jCal
9. jCalで使用する

jCal [RFC7265] defines how iCalendar data is represented in JSON. This specification extends the "recur" JSON object defined in Section 3.6.10 of [RFC7265] in the following manner:

jCal [RFC7265]は、iCalendarデータがJSONでどのように表現されるかを定義します。この仕様は、[RFC7265]のセクション3.6.10で定義された「recur」JSONオブジェクトを次のように拡張します。

1. A new "rscale" child member is defined. This MUST be a string whose value is the "RSCALE" element value of the "RRULE", with case preserved.

1. 新しい「rscale」子メンバーが定義されています。これは、値が「RRULE」の「RSCALE」要素の値である文字列である必要があり、大文字と小文字が保持されます。

2. A new "skip" child member is defined. This MUST be a string whose value is the "SKIP" element value of the "RRULE", with case preserved.

2. 新しい「スキップ」子メンバーが定義されています。これは、値が「RRULE」の「SKIP」要素の値である文字列である必要があり、大文字と小文字が保持されます。

3. The "bymonth" child member is redefined to support either numeric or string values. If the "BYMONTH" element value is an integer, then a numeric JSON value MUST be used. If the "BYMONTH" element value is an integer with the "L" suffix (as per Section 4.2), then a JSON string value MUST be used.

3. 「bymonth」子メンバーは、数値または文字列値をサポートするように再定義されています。 「BYMONTH」要素の値が整数の場合、数値のJSON値を使用する必要があります。 「BYMONTH」要素の値が「L」接尾辞付きの整数の場合(セクション4.2のように)、JSON文字列値を使用する必要があります。

Example: the iCalendar "RRULE" property:

例:iCalendar "RRULE"プロパティ:

   RRULE:RSCALE=GREGORIAN;FREQ=YEARLY;SKIP=FORWARD
        

would be represented in JSON as:

JSONでは次のように表されます。

   [
     "rrule",
     {},
     "recur",
     {
       "rscale": "GREGORIAN",
       "freq": "YEARLY",
       "skip": "FORWARD"
     }
   ]
        
10. Use with CalDAV
10. CalDAVで使用

The CalDAV [RFC4791] calendar access protocol allows clients and servers to exchange iCalendar data. In addition, CalDAV clients are able to query calendar data stored on the server, including time-based queries. Since an "RSCALE" element value determines the time ranges for recurring instances in a calendar component, CalDAV servers need to support it to interoperate with clients also using the "RSCALE" element.

CalDAV [RFC4791]カレンダーアクセスプロトコルにより、クライアントとサーバーはiCalendarデータを交換できます。さらに、CalDAVクライアントは、時間ベースのクエリを含め、サーバーに保存されているカレンダーデータをクエリできます。 「RSCALE」要素の値は、カレンダーコンポーネントの繰り返しインスタンスの時間範囲を決定するため、CalDAVサーバーは、「RSCALE」要素を使用してクライアントと相互運用するために、それをサポートする必要があります。

A CalDAV server advertises a CALDAV:supported-rscale-set Web Distributed Authoring and Versioning (WebDAV) property on calendar home or calendar collections if it supports use of the "RSCALE" element as described in this specification. The server can advertise a specific set of supported calendar systems by including one or more CALDAV:supported-rscale XML elements within the CALDAV:supported-rscale-set XML element. If no CALDAV:supported-rscale XML elements are included in the WebDAV property, then clients can try any calendar system value but need to be prepared for a failure when attempting to store the calendar data.

CalDAVサーバーは、この仕様で説明されている「RSCALE」要素の使用をサポートしている場合、カレンダーホームまたはカレンダーコレクションのCALDAV:supported-rscale-set Web分散オーサリングおよびバージョン管理(WebDAV)プロパティを通知します。サーバーは、CALDAV:supported-rscale-set XML要素内に1つ以上のCALDAV:supported-rscale XML要素を含めることにより、サポートされている特定のカレンダーシステムセットをアドバタイズできます。 CALDAV:supported-rscale XML要素がWebDAVプロパティに含まれていない場合、クライアントは任意のカレンダーシステム値を試すことができますが、カレンダーデータを保存しようとするときに障害に備える必要があります。

Clients MUST NOT attempt to store iCalendar data containing "RSCALE" elements if the CALDAV:supported-rscale-set WebDAV property is not advertised by the server.

CALDAV:supported-rscale-set WebDAVプロパティがサーバーによって通知されていない場合、クライアントは、「RSCALE」要素を含むiCalendarデータの保存を試みてはなりません。

The server SHOULD return an HTTP 403 response with a DAV:error element containing a CALDAV:supported-rscale XML element, if a client attempts to store iCalendar data with an "RSCALE" element value not supported by the server.

クライアントがサーバーでサポートされていない「RSCALE」要素の値を持つiCalendarデータを保存しようとすると、サーバーはCALDAV:supported-rscale XML要素を含むDAV:error要素を含むHTTP 403応答を返す必要があります。

It is possible for an "RSCALE" value to be present in calendar data on the server being accessed by a client that does not support an "RSCALE" element or its specified value. It is expected that existing clients, unaware of "RSCALE", will fail gracefully by ignoring the calendar component, while still processing other calendar data on the server (as per option (2) in Section 6).

「RSCALE」要素または指定された値をサポートしないクライアントがアクセスしているサーバー上のカレンダーデータに「RSCALE」値が存在する可能性があります。 「RSCALE」を認識しない既存のクライアントは、サーバー上の他のカレンダーデータを処理しながら(第6節のオプション(2)のとおり)、カレンダーコンポーネントを無視することで正常に失敗することが予想されます。

10.1. CALDAV:supported-rscale-set Property
10.1. CALDAV:supported-rscale-setプロパティ

Name: supported-rscale-set

名前:supported-rscale-set

   Namespace:  urn:ietf:params:xml:ns:caldav
        

Purpose: Enumerates the set of supported iCalendar "RSCALE" element values supported by the server.

目的:サーバーでサポートされているサポートされているiCalendar "RSCALE"要素の値のセットを列挙します。

Protected: This property MUST be protected and SHOULD NOT be returned by a PROPFIND allprop request (as defined in Section 14.2 of [RFC4918]).

保護:このプロパティは保護する必要があり、PROPFIND allpropリクエスト([RFC4918]のセクション14.2で定義されているとおり)によって返されるべきではありません(SHOULD NOT)。

Description: See above.

説明:上記を参照してください。

Definition:

定義:

   <!ELEMENT supported-rscale-set (supported-rscale*)>
   <!ELEMENT supported-rscale (#PCDATA)>
   <!-- PCDATA value: string - case insensitive but
        uppercase preferred -->
        

Example:

例:

   <C:supported-rscale-set
        xmlns:C="urn:ietf:params:xml:ns:caldav">
     <C:supported-rscale>GREGORIAN</C:supported-rscale>
     <C:supported-rscale>CHINESE</C:supported-rscale>
     <C:supported-rscale>ISLAMIC-CIVIL</C:supported-rscale>
     <C:supported-rscale>HEBREW</C:supported-rscale>
     <C:supported-rscale>ETHIOPIC</C:supported-rscale>
   </C:supported-rscale-set>
        
11. Security Considerations
11. セキュリティに関する考慮事項

This specification does not introduce any additional security concerns beyond those described in [RFC5545], [RFC5546], and [RFC4791].

この仕様は、[RFC5545]、[RFC5546]、および[RFC4791]で説明されているものを超える追加のセキュリティ問題を導入していません。

12. References
12. 参考文献
12.1. Normative References
12.1. 引用文献

[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997, <http://www.rfc-editor.org/info/rfc2119>.

[RFC2119] Bradner、S。、「要件レベルを示すためにRFCで使用するキーワード」、BCP 14、RFC 2119、1997年3月、<http://www.rfc-editor.org/info/rfc2119>。

[RFC4791] Daboo, C., Desruisseaux, B., and L. Dusseault, "Calendaring Extensions to WebDAV (CalDAV)", RFC 4791, March 2007, <http://www.rfc-editor.org/info/rfc4791>.

[RFC4791] Daboo、C.、Desruisseaux、B。、およびL. Dusseault、「Calendaring Extensions to WebDAV(CalDAV)」、RFC 4791、2007年3月、<http://www.rfc-editor.org/info/rfc4791 >。

[RFC4918] Dusseault, L., Ed., "HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV)", RFC 4918, June 2007, <http://www.rfc-editor.org/info/rfc4918>.

[RFC4918] Dusseault、L.、Ed。、「Web Distributed Authoring and Versioning(WebDAV)のHTTP拡張機能」、RFC 4918、2007年6月、<http://www.rfc-editor.org/info/rfc4918>。

[RFC5234] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax Specifications: ABNF", STD 68, RFC 5234, January 2008, <http://www.rfc-editor.org/info/rfc5234>.

[RFC5234]クロッカー、D。、エド。およびP. Overell、「構文仕様の拡張BNF:ABNF」、STD 68、RFC 5234、2008年1月、<http://www.rfc-editor.org/info/rfc5234>。

[RFC5545] Desruisseaux, B., Ed., "Internet Calendaring and Scheduling Core Object Specification (iCalendar)", RFC 5545, September 2009, <http://www.rfc-editor.org/info/rfc5545>.

[RFC5545] Desruisseaux、B。、編、「インターネットカレンダーおよびスケジューリングコアオブジェクト仕様(iCalendar)」、RFC 5545、2009年9月、<http://www.rfc-editor.org/info/rfc5545>。

[RFC5546] Daboo, C., Ed., "iCalendar Transport-Independent Interoperability Protocol (iTIP)", RFC 5546, December 2009, <http://www.rfc-editor.org/info/rfc5546>.

[RFC5546] Daboo、C。、編、「ICalendar Transport-Independent Interoperability Protocol(iTIP)」、RFC 5546、2009年12月、<http://www.rfc-editor.org/info/rfc5546>。

[RFC6321] Daboo, C., Douglass, M., and S. Lees, "xCal: The XML Format for iCalendar", RFC 6321, August 2011, <http://www.rfc-editor.org/info/rfc6321>.

[RFC6321] Daboo、C.、Douglass、M。、およびS. Lees、「xCal:The XML Format for iCalendar」、RFC 6321、2011年8月、<http://www.rfc-editor.org/info/rfc6321 >。

[RFC7265] Kewisch, P., Daboo, C., and M. Douglass, "jCal: The JSON Format for iCalendar", RFC 7265, May 2014, <http://www.rfc-editor.org/info/rfc7265>.

[RFC7265] Kewisch、P.、Daboo、C。、およびM. Douglass、「jCal:The JSON Format for iCalendar」、RFC 7265、2014年5月、<http://www.rfc-editor.org/info/rfc7265 >。

[UNICODE.CLDR] The Unicode Consortium, "CLDR calendar.xml Data", Unicode Consortium CLDR, <http://www.unicode.org/repos/cldr/tags/latest/common/ bcp47/calendar.xml>.

[UNICODE.CLDR] Unicodeコンソーシアム、 "CLDR calendar.xml Data"、Unicode Consortium CLDR、<http://www.unicode.org/repos/cldr/tags/latest/common/ bcp47 / calendar.xml>。

12.2. Informative References
12.2. 参考引用

[ISO.8601.2004] International Organization for Standardization, "Data elements and interchange formats - Information interchange - Representation of dates and times", ISO Standard 8601, December 2004.

[ISO.8601.2004]国際標準化機構、「データ要素と交換フォーマット-情報交換-日付と時刻の表現」、ISO標準8601、2004年12月。

[UNICODE.ICU] "International Components for Unicode", April 2014, <http://site.icu-project.org>.

[UNICODE.ICU]「International Components for Unicode」、2014年4月、<http://site.icu-project.org>。

Appendix A. xCal RELAX NG Schema Update
付録A. xCal RELAX NGスキーマの更新

The following changes are made to the RELAX NG schema defined in Appendix A of [RFC6321].

[RFC6321]の付録Aで定義されているRELAX NGスキーマに次の変更が加えられています。

# 3.3.10 RECUR # This extension adds type-rscale and type-skip, # and modifies type-bymonth

#3.3.10 RECUR#この拡張機能は、type-rscaleとtype-skipを追加し、#type-bymonthを変更します

   value-recur = element recur {
       type-rscale?,
       type-freq,
       (type-until | type-count)?,
       element interval {
           xsd:positiveInteger
       }?,
       type-bysecond*,
       type-byminute*,
       type-byhour*,
       type-byday*,
       type-bymonthday*,
       type-byyearday*,
       type-byweekno*,
       type-bymonth*,
       type-bysetpos*,
       element wkst { type-weekday }?,
       type-skip?
   }
        
   type-rscale = element rscale {
       xsd:string
   }
        
   type-bymonth = element bymonth {
       xsd:positiveInteger |
       xsd:string
   }
        
   type-skip = element skip {
       "OMIT" |
       "BACKWARD" |
       "FORWARD"
   }
        

Acknowledgments

謝辞

Thanks to the following for feedback: Mark Davis, Mike Douglass, Donald Eastlake, Peter Edberg, Marten Gajda, Philipp Kewisch, Barry Leiba, Jonathan Lennox, Ken Murchison, Arnaud Quillaud, Dave Thewlis, and Umaoka Yoshito.

フィードバックの次のおかげで:マークデイビス、マイクダグラス、ドナルドイーストレイク、ピーターエドバーグ、マルテンガジダ、フィリップケウィッシュ、バリーレイバ、ジョナサンレノックス、ケンマーチソン、アルノーキロー、デイブシューリス、ウマオカヨシト。

This specification originated from work at the Calendaring and Scheduling Consortium, which has helped with the development and testing of implementations.

この仕様は、実装の開発とテストに役立ったCalendaring and Scheduling Consortiumでの作業に基づいています。

Authors' Addresses

著者のアドレス

Cyrus Daboo Apple Inc. 1 Infinite Loop Cupertino, CA 95014 United States

Cyrus Daboo Apple Inc. 1 Infinite Loop Cupertino、CA 95014 United States

   EMail: cyrus@daboo.name
   URI:   http://www.apple.com/
        

Gregory Yakushev Google Inc. Brandschenkestrasse 100 8002 Zurich Switzerland

Gregory Yakushev Google Inc. Brandschenkestrasse 100 8002 Zurich Switzerland

   EMail: gyakushev@yahoo.com
   URI:   http://www.google.com/