Network Working Group                                           D. Royer
Request for Comments: 4324                               IntelliCal, LLC
Category: Experimental                                         G. Babics
                                                                  Oracle
                                                              S. Mansour
                                                                    eBay
                                                           December 2005
        
Network Working Group                                           D. Royer
Request for Comments: 4324                               IntelliCal, LLC
Category: Experimental                                         G. Babics
                                                                  Oracle
                                                              S. Mansour
                                                                    eBay
                                                           December 2005
        

Calendar Access Protocol (CAP)

日历访问协议(CAP)

Status of This Memo

关于下段备忘

This memo defines an Experimental Protocol for the Internet community. It does not specify an Internet standard of any kind. Discussion and suggestions for improvement are requested. Distribution of this memo is unlimited.

这份备忘录为互联网社区定义了一个实验性协议。它没有规定任何类型的互联网标准。要求进行讨论并提出改进建议。本备忘录的分发不受限制。

Copyright Notice

版权公告

Copyright (C) The Internet Society (2005).

版权所有(C)互联网协会(2005年)。

Abstract

摘要

The Calendar Access Protocol (CAP) described in this memo permits a Calendar User (CU) to utilize a Calendar User Agent (CUA) to access an iCAL-based Calendar Store (CS). At the time of this writing, three vendors are implementing CAP, but it has already been determined that some changes are needed. In order to get implementation experience, the participants felt that a CAP specification is needed to preserve many years of work. Many properties in CAP which have had many years of debate, can be used by other iCalendar protocols.

本备忘录中描述的日历访问协议(CAP)允许日历用户(CU)利用日历用户代理(CUA)访问基于iCAL的日历存储(CS)。在撰写本文时,有三家供应商正在实施CAP,但已经确定需要进行一些更改。为了获得实施经验,参与者认为需要CAP规范来保存多年的工作。CAP中的许多属性经过多年的讨论,可以被其他iCalendar协议使用。

Table of Contents

目录

   1. Introduction ....................................................5
      1.1. Formatting Conventions .....................................5
      1.2. Related Documents ..........................................6
      1.3. Definitions ................................................7
   2. Additions to iCalendar .........................................11
      2.1.  New Value Types (Summary) ................................14
         2.1.1. New Parameters (summary) .............................14
         2.1.2. New or Updated Properties (summary) ..................14
         2.1.3. New Components (summary) .............................17
      2.2.  Relationship of RFC-2446 (ITIP) to CAP ...................18
   3. CAP Design .....................................................20
      3.1. System Model ..............................................20
      3.2. Calendar Store Object Model ...............................20
      3.3. Protocol Model ............................................21
         3.3.1. Use of BEEP, MIME, and iCalendar .....................22
   4. Security Model .................................................23
      4.1. Calendar User and UPNs ....................................23
         4.1.1. UPNs and Certificates ................................24
         4.1.2. Anonymous Users and Authentication ...................25
         4.1.3. User Groups ..........................................25
      4.2. Access Rights .............................................26
         4.2.1. Access Control and NOCONFLICT ........................26
         4.2.2. Predefined VCARs .....................................26
         4.2.3. Decreed VCARs ........................................28
      4.3. CAP Session Identity ......................................28
   5. CAP URL and Calendar Address ...................................29
   6. New Value Types ................................................30
      6.1. Property Value Data Types .................................30
         6.1.1. CAL-QUERY Value Type .................................30
            6.1.1.1. [NOT] CAL-OWNERS() ..............................36
            6.1.1.2. CURRENT-TARGET() ................................37
            6.1.1.3. PARAM() .........................................37
            6.1.1.4. SELF() ..........................................38
            6.1.1.5. STATE() .........................................38
            6.1.1.6. Use of Single Quote .............................38
            6.1.1.7. Comparing DATE and DATE-TIME Values .............39
            6.1.1.8. DTEND and DURATION ..............................40
            6.1.1.9. [NOT] LIKE ......................................40
            6.1.1.10. Empty vs. NULL .................................41
            6.1.1.11. [NOT] IN .......................................41
            6.1.1.12. DATE-TIME and TIME Values in a WHERE Clause ....42
            6.1.1.13. Multiple Contained Components ..................43
            6.1.1.14. Example, Query by UID ..........................43
            6.1.1.15. Query by Date-Time Range .......................43
            6.1.1.16. Query for All Unprocessed Entries ..............44
            6.1.1.17. Query with Subset of Properties by Date/Time ...44
        
   1. Introduction ....................................................5
      1.1. Formatting Conventions .....................................5
      1.2. Related Documents ..........................................6
      1.3. Definitions ................................................7
   2. Additions to iCalendar .........................................11
      2.1.  New Value Types (Summary) ................................14
         2.1.1. New Parameters (summary) .............................14
         2.1.2. New or Updated Properties (summary) ..................14
         2.1.3. New Components (summary) .............................17
      2.2.  Relationship of RFC-2446 (ITIP) to CAP ...................18
   3. CAP Design .....................................................20
      3.1. System Model ..............................................20
      3.2. Calendar Store Object Model ...............................20
      3.3. Protocol Model ............................................21
         3.3.1. Use of BEEP, MIME, and iCalendar .....................22
   4. Security Model .................................................23
      4.1. Calendar User and UPNs ....................................23
         4.1.1. UPNs and Certificates ................................24
         4.1.2. Anonymous Users and Authentication ...................25
         4.1.3. User Groups ..........................................25
      4.2. Access Rights .............................................26
         4.2.1. Access Control and NOCONFLICT ........................26
         4.2.2. Predefined VCARs .....................................26
         4.2.3. Decreed VCARs ........................................28
      4.3. CAP Session Identity ......................................28
   5. CAP URL and Calendar Address ...................................29
   6. New Value Types ................................................30
      6.1. Property Value Data Types .................................30
         6.1.1. CAL-QUERY Value Type .................................30
            6.1.1.1. [NOT] CAL-OWNERS() ..............................36
            6.1.1.2. CURRENT-TARGET() ................................37
            6.1.1.3. PARAM() .........................................37
            6.1.1.4. SELF() ..........................................38
            6.1.1.5. STATE() .........................................38
            6.1.1.6. Use of Single Quote .............................38
            6.1.1.7. Comparing DATE and DATE-TIME Values .............39
            6.1.1.8. DTEND and DURATION ..............................40
            6.1.1.9. [NOT] LIKE ......................................40
            6.1.1.10. Empty vs. NULL .................................41
            6.1.1.11. [NOT] IN .......................................41
            6.1.1.12. DATE-TIME and TIME Values in a WHERE Clause ....42
            6.1.1.13. Multiple Contained Components ..................43
            6.1.1.14. Example, Query by UID ..........................43
            6.1.1.15. Query by Date-Time Range .......................43
            6.1.1.16. Query for All Unprocessed Entries ..............44
            6.1.1.17. Query with Subset of Properties by Date/Time ...44
        
            6.1.1.18. Query with Components and Alarms in A Range ....45
         6.1.2. UPN Value Type .......................................45
         6.1.3. UPN-FILTER Value .....................................46
   7. New Parameters .................................................48
      7.1. ACTION Parameter ..........................................48
      7.2. ENABLE Parameter ..........................................48
      7.3. ID Parameter ..............................................49
      7.4. LATENCY Parameter .........................................50
      7.5. LOCAL Parameter ...........................................50
      7.6. LOCALIZE Parameter ........................................51
      7.7. OPTIONS Parameter .........................................52
   8. New Properties .................................................52
      8.1. ALLOW-CONFLICT Property ...................................52
      8.2. ATT-COUNTER Property ......................................53
      8.3. CALID Property ............................................54
      8.4. CALMASTER Property ........................................54
      8.5. CAP-VERSION Property ......................................55
      8.6. CARID Property ............................................55
      8.7. CAR-LEVEL Property ........................................56
      8.8. COMPONENTS Property .......................................56
      8.9. CSID Property .............................................58
      8.10. DECREED Property .........................................58
      8.11. DEFAULT-CHARSET Property .................................59
      8.12. DEFAULT-LOCALE Property ..................................60
      8.13. DEFAULT-TZID Property ....................................61
      8.14. DEFAULT-VCARS Property ...................................62
      8.15. DENY Property ............................................62
      8.16. EXPAND property ..........................................63
      8.17. GRANT Property ...........................................64
      8.18. ITIP-VERSION Property ....................................64
      8.19. MAX-COMP-SIZE Property ...................................65
      8.20. MAXDATE Property .........................................65
      8.21. MINDATE Property .........................................66
      8.22. MULTIPART Property .......................................66
      8.23. NAME Property ............................................67
      8.24. OWNER Property ...........................................68
      8.25. PERMISSION Property ......................................68
      8.26. QUERY property ...........................................69
      8.27. QUERYID property .........................................70
      8.28. QUERY-LEVEL Property .....................................70
      8.29. RECUR-ACCEPTED Property ..................................71
      8.30. RECUR-LIMIT Property .....................................71
      8.31. RECUR-EXPAND Property ....................................72
      8.32. RESTRICTION Property .....................................72
      8.33. SCOPE Property ...........................................73
      8.34. STORES-EXPANDED Property .................................74
      8.35. TARGET Property ..........................................74
      8.36. TRANSP Property ..........................................75
        
            6.1.1.18. Query with Components and Alarms in A Range ....45
         6.1.2. UPN Value Type .......................................45
         6.1.3. UPN-FILTER Value .....................................46
   7. New Parameters .................................................48
      7.1. ACTION Parameter ..........................................48
      7.2. ENABLE Parameter ..........................................48
      7.3. ID Parameter ..............................................49
      7.4. LATENCY Parameter .........................................50
      7.5. LOCAL Parameter ...........................................50
      7.6. LOCALIZE Parameter ........................................51
      7.7. OPTIONS Parameter .........................................52
   8. New Properties .................................................52
      8.1. ALLOW-CONFLICT Property ...................................52
      8.2. ATT-COUNTER Property ......................................53
      8.3. CALID Property ............................................54
      8.4. CALMASTER Property ........................................54
      8.5. CAP-VERSION Property ......................................55
      8.6. CARID Property ............................................55
      8.7. CAR-LEVEL Property ........................................56
      8.8. COMPONENTS Property .......................................56
      8.9. CSID Property .............................................58
      8.10. DECREED Property .........................................58
      8.11. DEFAULT-CHARSET Property .................................59
      8.12. DEFAULT-LOCALE Property ..................................60
      8.13. DEFAULT-TZID Property ....................................61
      8.14. DEFAULT-VCARS Property ...................................62
      8.15. DENY Property ............................................62
      8.16. EXPAND property ..........................................63
      8.17. GRANT Property ...........................................64
      8.18. ITIP-VERSION Property ....................................64
      8.19. MAX-COMP-SIZE Property ...................................65
      8.20. MAXDATE Property .........................................65
      8.21. MINDATE Property .........................................66
      8.22. MULTIPART Property .......................................66
      8.23. NAME Property ............................................67
      8.24. OWNER Property ...........................................68
      8.25. PERMISSION Property ......................................68
      8.26. QUERY property ...........................................69
      8.27. QUERYID property .........................................70
      8.28. QUERY-LEVEL Property .....................................70
      8.29. RECUR-ACCEPTED Property ..................................71
      8.30. RECUR-LIMIT Property .....................................71
      8.31. RECUR-EXPAND Property ....................................72
      8.32. RESTRICTION Property .....................................72
      8.33. SCOPE Property ...........................................73
      8.34. STORES-EXPANDED Property .................................74
      8.35. TARGET Property ..........................................74
      8.36. TRANSP Property ..........................................75
        
   9. New Components .................................................76
      9.1. VAGENDA Component .........................................76
      9.2. VCALSTORE Component .......................................78
      9.3. VCAR Component ............................................80
      9.4. VRIGHT Component ..........................................82
      9.5. VREPLY Component ..........................................83
      9.6. VQUERY Component ..........................................83
   10. Commands and Responses ........................................85
      10.1. CAP Commands (CMD) .......................................85
      10.2. ABORT Command ............................................88
      10.3. CONTINUE Command .........................................89
      10.4. CREATE Command ...........................................90
      10.5. DELETE Command ...........................................96
      10.6. GENERATE-UID Command .....................................98
      10.7. GET-CAPABILITY Command ..................................100
      10.8. IDENTIFY Command ........................................103
      10.9. MODIFY Command ..........................................105
      10.10. MOVE Command ...........................................110
      10.11. REPLY Response to a Command ............................112
      10.12. SEARCH Command .........................................113
      10.13. SET-LOCALE Command .....................................116
      10.14. TIMEOUT Command ........................................118
      10.15. Response Codes .........................................118
   11. Object Registration ..........................................120
      11.1. Registration of New and Modified Entities ...............120
      11.2. Post the Item Definition ................................120
      11.3. Allow a Comment Period ..................................120
      11.4. Release a New RFC .......................................120
   12. BEEP and CAP .................................................120
      12.1. BEEP Profile Registration ...............................120
      12.2. BEEP Exchange Styles ....................................123
      12.3. BEEP Connection Details .................................123
   13. IANA Considerations ..........................................125
   14. Security Considerations ......................................125
   Appendix A.  Acknowledgements ....................................127
   Appendix B.  References ..........................................127
       Appendix B.1.  Normative References ..........................127
       Appendix B.2.  Informative References ........................128
        
   9. New Components .................................................76
      9.1. VAGENDA Component .........................................76
      9.2. VCALSTORE Component .......................................78
      9.3. VCAR Component ............................................80
      9.4. VRIGHT Component ..........................................82
      9.5. VREPLY Component ..........................................83
      9.6. VQUERY Component ..........................................83
   10. Commands and Responses ........................................85
      10.1. CAP Commands (CMD) .......................................85
      10.2. ABORT Command ............................................88
      10.3. CONTINUE Command .........................................89
      10.4. CREATE Command ...........................................90
      10.5. DELETE Command ...........................................96
      10.6. GENERATE-UID Command .....................................98
      10.7. GET-CAPABILITY Command ..................................100
      10.8. IDENTIFY Command ........................................103
      10.9. MODIFY Command ..........................................105
      10.10. MOVE Command ...........................................110
      10.11. REPLY Response to a Command ............................112
      10.12. SEARCH Command .........................................113
      10.13. SET-LOCALE Command .....................................116
      10.14. TIMEOUT Command ........................................118
      10.15. Response Codes .........................................118
   11. Object Registration ..........................................120
      11.1. Registration of New and Modified Entities ...............120
      11.2. Post the Item Definition ................................120
      11.3. Allow a Comment Period ..................................120
      11.4. Release a New RFC .......................................120
   12. BEEP and CAP .................................................120
      12.1. BEEP Profile Registration ...............................120
      12.2. BEEP Exchange Styles ....................................123
      12.3. BEEP Connection Details .................................123
   13. IANA Considerations ..........................................125
   14. Security Considerations ......................................125
   Appendix A.  Acknowledgements ....................................127
   Appendix B.  References ..........................................127
       Appendix B.1.  Normative References ..........................127
       Appendix B.2.  Informative References ........................128
        
1. Introduction
1. 介绍

This document specifies the Calendar Access Protocol (CAP). CAP permits a Calendar User (CU) to utilize a Calendar User Agent (CUA) to access an iCAL-based Calendar Store (CS) and manage calendar information. In particular, the document specifies how to query, create, modify, and delete iCalendar components (e.g., events, to-dos, or daily journal entries). It further specifies how to search for available busy time information. Synchronization with CUAs is not covered, but it is believed to be possible using CAP.

本文档指定了日历访问协议(CAP)。CAP允许日历用户(CU)利用日历用户代理(CUA)访问基于iCAL的日历存储(CS)并管理日历信息。特别是,该文档指定了如何查询、创建、修改和删除iCalendar组件(例如,事件、待办事项或每日日记账条目)。它进一步指定了如何搜索可用的繁忙时间信息。不包括与CUAs的同步,但相信可以使用CAP。

At the time of this writing, three vendors are implementing CAP. It has already been determined that some changes are needed. In order to get implementation experience, the participants felt that a CAP specification is needed to preserve many years of work. Many properties in CAP can be used by other iCalendar protocols and have had many years of debate.

在撰写本文时,有三家供应商正在实施CAP。已经确定需要进行一些更改。为了获得实施经验,参与者认为需要CAP规范来保存多年的工作。CAP中的许多属性可以被其他iCalendar协议使用,并且已经有多年的争论。

CAP is specified as a BEEP (Block Extensible Exchange Protocol) "profile" [BEEP] [BEEPGUIDE]. Many aspects of the protocol (e.g., authentication and privacy) are provided within BEEP. The protocol data units of CAP leverage the standard iCalendar format iCAL [iCAL] to convey calendar-related information.

CAP被指定为BEEP(块可扩展交换协议)“配置文件”[BEEP][BEEPGUIDE]。BEEP中提供了协议的许多方面(例如,身份验证和隐私)。CAP的协议数据单元利用标准iCalendar格式iCAL[iCAL]传递日历相关信息。

CAP can also be used to store and fetch iCalendar Transport-Independent Interoperability Protocol (iTIP) objects [iTIP]. iTIP objects used are exactly as defined in [iTIP]. When iCalendar objects are transferred between the CUA and a CS, some additional properties and parameters may be added; the CUA is responsible for correctly generating iCalendar objects to non-CAP processes.

CAP还可用于存储和获取iCalendar传输独立互操作性协议(iTIP)对象[iTIP]。使用的iTIP对象与[iTIP]中的定义完全相同。当iCalendar对象在CUA和CS之间传输时,可能会添加一些附加属性和参数;CUA负责为非CAP进程正确生成iCalendar对象。

The definition of new components, properties, parameters, and value types are broken into two parts. The first part summarizes and defines the new objects. The second part provides detail and ABNF for those objects. The ABNF rules for CAP, as for other iCalendar specifications, are order-independent. That is, properties in a component may occur in any order, and parameters in any property may occur in any order.

新组件、特性、参数和值类型的定义分为两部分。第一部分总结并定义了新对象。第二部分提供了这些对象的详细信息和ABNF。与其他iCalendar规范一样,CAP的ABNF规则与订单无关。也就是说,组件中的属性可能以任何顺序出现,而任何属性中的参数可能以任何顺序出现。

1.1. Formatting Conventions
1.1. 格式约定

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

本文件中的关键词“必须”、“不得”、“要求”、“应”、“不应”、“应”、“不应”、“建议”、“可”和“可选”应按照[RFC2119]中所述进行解释。

Calendaring and scheduling roles are referred to in quoted-strings of text with the first character of each word in upper case. For example, "Organizer" refers to a role of a "Calendar User" (CU)

日历和日程安排角色在带引号的文本字符串中引用,每个单词的第一个字符用大写字母表示。例如,“组织者”指的是“日历用户”(CU)的角色

within the protocol defined by [iTIP]. Calendar components defined by [iCAL] are referred to with capitalized, quoted-strings of text. All iCalendar components should start with the letter "V". For example, "VEVENT" refers to the event calendar component, "VTODO" refers to the to-do component, and "VJOURNAL" refers to the daily journal component.

在[iTIP]定义的协议内。[iCAL]定义的日历组件是指带有大写引号的文本字符串。所有iCalendar组件均应以字母“V”开头。例如,“VEVENT”指的是事件日历组件,“VTODO”指的是待办事项组件,“VJOURNAL”指的是每日日志组件。

Scheduling methods defined by [iTIP] are referred to with capitalized, quoted-strings of text. For example, "REPLY" refers to the method for replying to a "REQUEST".

[iTIP]定义的调度方法使用大写、带引号的文本字符串引用。例如,“回复”是指回复“请求”的方法。

CAP commands are referred to by upper-case, quoted-strings of text, followed by the word "command". For example, '"CREATE" command' refers to the command for creating a calendar entry, '"SEARCH" command' refers to the command for reading calendar components. CAP commands are named using the "CMD" property.

CAP命令以大写、带引号的文本字符串表示,后跟单词“command”。例如,“创建”命令是指用于创建日历条目的命令,“搜索”命令是指用于读取日历组件的命令。CAP命令使用“CMD”属性命名。

Properties defined by this memo are referred to with capitalized, quoted-strings of text, followed by the word "property". For example, '"ATTENDEE" property' refers to the iCalendar property used to convey the calendar address that has been invited to a "VEVENT" or "VTODO" component.

本备忘录定义的属性指的是大写、带引号的文本字符串,后跟“属性”一词。例如,“ATTENDEE”属性是指iCalendar属性,用于传递已被邀请到“VEVENT”或“VTODO”组件的日历地址。

Property parameters defined by this memo are referred to with capitalized, quoted-strings of text, followed by the word "parameter". For example, "PARTSTAT" parameter refers to the iCalendar property parameter used to specify the participation status of an attendee. Enumerated values defined by this memo are referred to with capitalized text, either alone or followed by the word "value".

本备忘录定义的属性参数使用大写、带引号的文本字符串表示,后跟“参数”一词。例如,“PARTSTAT”参数是指用于指定与会者参与状态的iCalendar属性参数。本备忘录定义的枚举值用大写文本表示,单独或后跟“值”一词。

Object states defined by this memo are referred to with capitalized, quoted-strings of text, followed by the word "state". For example, '"BOOKED" state' refers to an object in the booked state.

本备忘录定义的对象状态用大写、带引号的文本字符串表示,后跟“状态”一词。例如,“预订”状态是指处于预订状态的对象。

Within a query, the different parts are referred to as a "clause" and its value as "clause value" and the clause name will be in uppercase enclosed in quotes, for example, 'The "SELECT" claus' or 'if the "SELECT" clause value contains ...'.

在查询中,不同的部分被称为“子句”,其值被称为“子句值”,子句名称将以大写形式括在引号中,例如,“SELECT”claus或“if the“SELECT”子句值包含…”。

In tables, the quoted-string text is specified without quotes in order to minimize the table length.

在表格中,为了最小化表格长度,指定带引号的字符串文本时不带引号。

1.2. Related Documents
1.2. 相关文件

Implementers will need to be familiar with several other memos that, along with this one, describe the Internet calendaring and scheduling standards. These documents are as follows.

实施者需要熟悉其他几个备忘录,这些备忘录与本备忘录一起描述了互联网日历和日程安排标准。这些文件如下。

[iCAL] (RFC2445) specifies the objects, data types, properties and property parameters used in the protocols, along with the methods for representing and encoding them.

[iCAL](RFC2445)指定协议中使用的对象、数据类型、属性和属性参数,以及表示和编码它们的方法。

[iTIP] (RFC2446) specifies an interoperability protocol for scheduling between different installations.

[iTIP](RFC2446)指定用于在不同安装之间调度的互操作性协议。

[iMIP] (RFC2447) specifies the Internet email binding for [iTIP].

[iMIP](RFC2447)指定[iTIP]的Internet电子邮件绑定。

[GUIDE] (RFC3283) is a guide to implementers and describes the elements of a calendaring system, how they interact with each other, how they interact with end users, and how the standards and protocols are used.

[指南](RFC3283)是实施者指南,描述了日历系统的要素、它们之间的交互方式、它们与最终用户的交互方式以及标准和协议的使用方式。

This memo does not attempt to repeat the specification of concepts and definitions from these earlier memos. Where possible, references are made to the memo that provides the specification of these concepts and definitions.

本备忘录不试图重复这些早期备忘录中的概念和定义规范。在可能的情况下,可参考提供这些概念和定义规范的备忘录。

1.3 Definitions
1.3 定义

UNPROCESSED, BOOKED, DELETED - A conceptual state of an object in the calendar store. There are three conceptual states: "UNPROCESSED" state, "BOOKED" state, and marked for deletion, which is the "DELETED" state. How the implementation stores the state of any object is not a protocol issue and is not discussed. An object can be said to be booked, unprocessed, or marked for deletion.

未处理、已预订、已删除-日历存储中对象的概念状态。有三种概念状态:“未处理”状态、“已预订”状态和标记为删除的状态,即“已删除”状态。实现如何存储任何对象的状态不是协议问题,也没有讨论。对象可以说是已预订、未处理或标记为删除。

1. An "UNPROCESSED" state scheduling object has been stored in the calendar store but has not been acted on by a CU or CUA. All scheduled entries are [iTIP] objects. No [iTIP] objects in the store are in the "BOOKED" state. To retrieve any [iTIP] object, simply do a query asking for any objects that are stored in the "UNPROCESSED" state.

1. “未处理”状态调度对象已存储在日历存储中,但CU或CUA尚未对其执行操作。所有计划条目都是[iTIP]对象。商店中没有[iTIP]对象处于“已预订”状态。要检索任何[iTIP]对象,只需执行一个查询,询问以“未处理”状态存储的任何对象。

2. A "BOOKED" state entry is stored with the "CREATE" command. It is an object that has been acted on by a CU or CUA and there has been a decision to store an object. To retrieve any booked object, simply do a query asking for any objects that were stored in the "BOOKED" state.

2. “预订”状态条目通过“创建”命令存储。它是由CU或CUA作用的对象,并且已决定存储对象。要检索任何已预订的对象,只需执行查询,询问存储在“已预订”状态的任何对象。

3. A "DELETED" state entry is created by sending a "DELETE" command with the "OPTION" parameter value set to "MARK". To retrieve any deleted object, simply do a query asking for any objects that were stored in the "DELETED" state. By default objects marked for delete are not returned. The CUA must specifically ask for marked-for-deletion objects. You cannot

3. 通过发送“删除”命令,将“选项”参数值设置为“标记”,创建“已删除”状态条目。要检索任何已删除的对象,只需执行查询,询问存储在“已删除”状态的任何对象。默认情况下,不会返回标记为删除的对象。CUA必须特别要求标记删除对象。你不能

ask for components in the "DELETED" state and in other states in the same "VQUERY" component, as there would be no way to distinguish between them in the reply.

询问处于“已删除”状态的组件和处于同一“VQUERY”组件中的其他状态的组件,因为在答复中无法区分它们。

Calendar - A collection of logically related objects or entities each of which may be associated with a calendar date and possibly time of day. These entities can include calendar properties or components. In addition, a calendar might be related to other calendars with the "RELATED-TO" property. A calendar is identified by its unique calendar identifier. The [iCAL] defines the initial calendar properties, calendar components and properties that make up the contents of a calendar.

日历-逻辑上相关的对象或实体的集合,每个对象或实体可能与日历日期和一天中的时间相关联。这些实体可以包括日历属性或组件。此外,日历可能与具有“related-to”属性的其他日历相关。日历由其唯一的日历标识符标识。[iCAL]定义了初始日历属性、日历组件和组成日历内容的属性。

Calendar Access Protocol (CAP) - The Internet protocol that permits a CUA to access and manipulate calendars residing on a Calendar Store. (This memo.)

日历访问协议(CAP)-允许CUA访问和操作驻留在日历存储上的日历的互联网协议。(本备忘录)

Calendar Access Rights (VCAR) - The mechanism for specifying the CAP operations ("PERMISSION") that a particular calendar user ("UPN", defined below) is granted or denied permission to perform on a given calendar object ("SCOPE"). The calendar access rights are specified with a "VCAR" component. (Section 9.3)

日历访问权限(VCAR)-用于指定特定日历用户(“UPN”,定义如下)被授予或被拒绝在给定日历对象(“范围”)上执行CAP操作(“权限”)的机制。日历访问权限由“VCAR”组件指定。(第9.3节)

Calendar Address - Also see Calendar URL, which is the same as a CAP address. The calendar address can also be the value to the "ATTENDEE" and "ORGANIZER" properties, as defined in [iCAL]. Calendar URL - A calendar URL is a URL, defined in this memo, that specifies the address of a CS or Calendar.

日历地址-另请参见日历URL,它与CAP地址相同。日历地址也可以是[iCAL]中定义的“与会者”和“组织者”属性的值。日历URL-日历URL是本备忘录中定义的URL,用于指定CS或日历的地址。

Component - Any object that conforms to the iCalendar object format and that is either defined in an Internet Draft, registered with IANA, or is an experimental object that is prefixed with "x-". Some types of components include calendars, events, to-dos, journals, alarms, and time zones. A component consists of properties and possibly other contained components. For example, an event may contain an alarm component.

组件-符合iCalendar对象格式的任何对象,在互联网草案中定义,在IANA注册,或者是前缀为“x-”的实验对象。某些类型的组件包括日历、事件、待办事项、日志、警报和时区。组件由属性和可能包含的其他组件组成。例如,事件可能包含报警组件。

Container - This is a generic name for VCALSTORE or VAGENDA.

容器-这是VCALSTORE或VAGENDA的通用名称。

Properties - An attribute of a particular component. Some properties are applicable to different types of components. For example, the "DTSTART" property is applicable to the "VEVENT", "VTODO", and "VJOURNAL" components. Other components are applicable only to an individual type of calendar component. For example, the "TZURL" property may only be applicable to the "VTIMEZONE" components.

属性-特定组件的属性。某些属性适用于不同类型的组件。例如,“DTSTART”属性适用于“VEVENT”、“VTODO”和“VJOURNAL”组件。其他组件仅适用于单独类型的日历组件。例如,“TZURL”属性可能仅适用于“VTIMEZONE”组件。

Calendar Identifier (CALID) - A globally unique identifier associated with a calendar. Calendars reside within a CS. See Qualified Calendar Identifier and Relative Calendar Identifier. All CALIDs start with "cap:".

日历标识符(CALID)-与日历关联的全局唯一标识符。日历位于CS中。请参阅限定日历标识符和相对日历标识符。所有calid都以“cap:”开头。

Calendar Policy - A CAP operational restriction on the access or manipulation of a calendar. These may be outside the scope of the CAP protocol. An example of an implementation or site policy is, "events MUST be scheduled in unit intervals of one hour".

日历策略-对日历访问或操作的CAP操作限制。这些可能超出CAP协议的范围。实施或站点策略的一个示例是,“事件必须以一小时的单位间隔安排”。

Calendar Property - An attribute of a calendar ("VAGENDA"). The attribute applies to the calendar, as a whole. For example, the "CALSCALE" property specifies the calendar scale (e.g., the "GREGORIAN" value) for the all entries within the calendar.

日历属性-日历的属性(“VAGENDA”)。该属性作为一个整体应用于日历。例如,“CALSCALE”属性为日历中的所有条目指定日历比例(例如“GREGORIAN”值)。

Calendar Store (CS) - The data and service model definitions for a Calendar Store as defined in this memo. This memo does not specify how the CS is implemented.

日历存储(CS)-本备忘录中定义的日历存储的数据和服务模型定义。本备忘录未规定CS的实施方式。

Calendar Server - An implementation of a Calendar Store (CS) that manages one or more calendars.

日历服务器-日历存储(CS)的实现,用于管理一个或多个日历。

Calendar Store Identifier (CSID) - The globally unique identifier for an individual CS. A CSID consists of the host and port portions of a "Common Internet Scheme Syntax" part of a URL, as defined by [URL]. The CSID excludes any reference to a specific calendar. (Section 8.9)

日历存储标识符(CSID)-单个CS的全局唯一标识符。CSID由URL的“通用Internet方案语法”部分的主机和端口部分组成,如[URL]所定义。CSID不包括对特定日历的任何引用。(第8.9节)

Calendar Store Components - Components maintained in a CS specify a grouping of calendar store-wide information.

日历存储组件-CS中维护的组件指定日历存储范围信息的分组。

Calendar Store Properties - Properties maintained in a Calendar Store represent store-wide information.

日历存储属性-日历存储中维护的属性表示存储范围内的信息。

Calendar User (CU) - An entity (often biological) that uses a calendaring system.

日历用户(CU)-使用日历系统的实体(通常是生物实体)。

Calendar User Agent (CUA) - The client application that a CU utilizes to access and manipulate a calendar.

日历用户代理(CUA)-CU用来访问和操作日历的客户端应用程序。

CAP Session - An open communication channel between a CUA and a CS. If the CAP session is authenticated, the CU is "authenticated" and it is an "authenticated CAP session".

CAP会话-CUA和CS之间的开放通信通道。如果CAP会话已通过身份验证,则CU已“通过身份验证”,并且它是一个“经过身份验证的CAP会话”。

Contained Component / Contained Properties - A component or property that is contained inside of another component. For example, a "VALARM" component may be contained inside a "VEVENT" component,

包含的组件/包含的属性-包含在另一个组件内部的组件或属性。例如,“VALARM”组件可能包含在“VEVENT”组件中,

and a "TRIGGER" property could be a contained property of a "VALARM" component.

“触发器”属性可以是“VALARM”组件的包含属性。

Delegate - A CU (sometimes called the delegatee) who has been assigned participation in a scheduled component (e.g., VEVENT) by one of the attendees in the scheduled component (sometimes called the delegator). An example of a delegate is a team member told to go to a particular meeting in place of another invitee who is unable to attend.

代表-一名CU(有时称为被授权人),该CU已被安排参与计划部分(如VEVENT)的一名与会者(有时称为授权人)。代表的一个例子是,一名团队成员被要求代替另一名无法出席的受邀者参加特定会议。

Designate - A CU who is authorized to act on behalf of another CU. An example of a designate is an assistant.

指定-被授权代表另一个CU行事的CU。助理就是候选者的一个例子。

Experimental - The CUA and CS may implement experimental extensions to the protocol. They might also have experimental components, properties, and parameters. These extensions MUST start with "x-" (or "X-") and should include a vendor prefix (such as "x-myvendor-"). There is no guarantee that these experimental extensions will interoperate with other implementations. There is no guarantee that they will not interact in unpredictable ways with other vendor experimental extensions. There is no guarantee that the same specific experimental extension is not used by multiple vendors in incompatible ways. Implementations should limit sending those extensions to other implementations.

实验性-CUA和CS可以对协议进行实验性扩展。它们还可能具有实验组件、属性和参数。这些扩展必须以“x-”(或“x-”)开头,并应包括供应商前缀(如“x-myvendor-”)。无法保证这些实验性扩展将与其他实现互操作。无法保证它们不会以不可预知的方式与其他供应商的实验性扩展进行交互。无法保证多个供应商不会以不兼容的方式使用相同的特定实验扩展。实现应该限制将这些扩展发送到其他实现。

Object - A generic name for any component, property, parameter, or value type to be used in iCalendar.

对象-iCalendar中要使用的任何组件、属性、参数或值类型的通用名称。

Overlapped Booking - A policy that indicates whether or not components with a "TRANSP" property not set to "TRANSPARENT-NOCONFLICT" or "OPAQUE-NOCONFLICT" value can overlap one another. When the policy is applied to a calendar it indicates whether or not the time span of any component (VEVENT, VTODO, ...) in the calendar can overlap the time span of any other component in the same calendar. When applied to an individual object, it indicates whether or not any other component's time span can overlap that individual component. If the CS does not allow overlapped booking, then the CS is unwilling to allow any overlapped bookings within any calendar or entry in the CS.

重叠预订-一种策略,用于指示“TRANSP”属性未设置为“TRANSPARENT-NOCONFLICT”或“不透明-NOCONFLICT”值的组件是否可以彼此重叠。当策略应用于日历时,它指示日历中任何组件(VEVENT、VTODO等)的时间跨度是否可以与同一日历中任何其他组件的时间跨度重叠。当应用于单个对象时,它指示任何其他组件的时间跨度是否可以与该单个组件重叠。如果CS不允许重叠预订,则CS不愿意在CS中的任何日历或条目中允许任何重叠预订。

Owner - One or more CUs or UGs that are listed in the "OWNER" property in a calendar. There can be more than one owner.

所有者-日历中“所有者”属性中列出的一个或多个CU或UG。可以有多个所有者。

Qualified Calendar Identifier (Qualified CALID) - A CALID in which both the scheme and CSID of the CAP URI are present.

限定日历标识符(Qualified CALID)—其中同时存在CAP URI的scheme和CSID的CALID。

Realm - A collection of calendar user accounts, identified by a string. The name of the Realm is only used in UPNs. In order to

领域-日历用户帐户的集合,由字符串标识。域的名称仅在UPN中使用。为了

avoid namespace conflict, the Realm SHOULD be postfixed with an appropriate DNS domain name (e.g., the foobar Realm could be called foobar.example.com).

为了避免名称空间冲突,应该使用适当的DNS域名对域进行后期修复(例如,foobar域可以称为foobar.example.com)。

Relative Calendar Identifier (Relative CALID) - An identifier for an individual calendar in a calendar store. It MUST be unique within a calendar store. A Relative CALID consists of the "URL path" of the "Common Internet Scheme Syntax" portion of a URL, as defined by [URI] and [URLGUIDE].

相对日历标识符(Relative CALID)—日历存储中单个日历的标识符。它在日历存储中必须是唯一的。相对CALID由URL的“公共Internet方案语法”部分的“URL路径”组成,如[URI]和[URLGUIDE]所定义。

Session Identity - A UPN associated with a CAP session. A session gains an identity after successful authentication. The identity is used in combination with VCAR to determine access to data in the CS.

会话标识-与CAP会话关联的UPN。会话在成功身份验证后获得标识。该标识与VCAR结合使用,以确定对CS中数据的访问。

User Group (UG) - A collection of Calendar Users and/or User Groups. These groups are expanded by the CS and may reside either locally or in an external database or directory. The group membership may be fixed or dynamic over time.

用户组(UG)-日历用户和/或用户组的集合。这些组由CS扩展,可以驻留在本地或外部数据库或目录中。随着时间的推移,组成员资格可能是固定的,也可能是动态的。

Username - A name that denotes a Calendar User within a Realm. This is part of a UPN.

用户名-表示领域内日历用户的名称。这是UPN的一部分。

User Principal Name (UPN) - A unique identifier that denotes a CU or a group of CUs. (Section 6.1.2)

用户主体名称(UPN)-表示CU或CU组的唯一标识符。(第6.1.2节)

2. Additions to iCalendar
2. 对iCalendar的补充

Several new components, properties, parameters, and value types are added in CAP. This section summarizes those new objects.

CAP中添加了几个新组件、特性、参数和值类型。本节总结了这些新对象。

This memo extends the properties that can go into 'calprops' as defined in [iCAL] section 4.6 page 51, to allow [iTIP] objects transmitted between a CAP aware CUA and the CS to contain the "TARGET" and "CMD" properties. This memo also adds to the [iCAL] ABNF to allow IANA and experimental extensions. This memo does not address how a CUA transmits [iTIP] or [iMIP] objects to non-CAP programs. What follows is ABNF, as described in [ABNF].

本备忘录扩展了[iCAL]第4.6节第51页中定义的可进入“calprops”的属性,以允许CAP感知CUA和CS之间传输的[iTIP]对象包含“目标”和“CMD”属性。此备忘录还添加了[iCAL]ABNF,以允许IANA和实验扩展。本备忘录并未说明CUA如何将[iTIP]或[iMIP]对象传输到非CAP程序。以下是ABNF,如[ABNF]所述。

calprops= 2*(

calprops=2*(

                    ; 'prodid' and 'version' are both REQUIRED,
                    ; but MUST NOT occur more than once.
                    ;
                prodid /version /
                    ;
                    ; These are optional, but MUST NOT occur
                    ; more than once.
        
                    ; 'prodid' and 'version' are both REQUIRED,
                    ; but MUST NOT occur more than once.
                    ;
                prodid /version /
                    ;
                    ; These are optional, but MUST NOT occur
                    ; more than once.
        
                    ;
                calscale        /
                method          /
                cmd             /
                    ;
                    ; Target is optional, and may occur more
                    ; than once.
                    ;
                target / other-props )
                    ;
      other-props  = *(x-prop) *(iana-prop) *(other-props)
                    ;
      iana-prop   = ; Any property registered by IANA directly or
                    ; included in an RFC that may be applied to
                    ; the component and within the rules published.
                    ;
      x-prop      = ; As defined in [iCAL].
                    ;
      methodp     = ; As defined in [iCAL].
                    ;
      prodid      = ; As defined in [iCAL].
                    ;
      calscale    = ; As defined in [iCAL].
                    ;
        
                    ;
                calscale        /
                method          /
                cmd             /
                    ;
                    ; Target is optional, and may occur more
                    ; than once.
                    ;
                target / other-props )
                    ;
      other-props  = *(x-prop) *(iana-prop) *(other-props)
                    ;
      iana-prop   = ; Any property registered by IANA directly or
                    ; included in an RFC that may be applied to
                    ; the component and within the rules published.
                    ;
      x-prop      = ; As defined in [iCAL].
                    ;
      methodp     = ; As defined in [iCAL].
                    ;
      prodid      = ; As defined in [iCAL].
                    ;
      calscale    = ; As defined in [iCAL].
                    ;
        

Another change is that the 'component' part of the 'icalbody' ABNF as described in [iCAL] section 4.6 is optional when sending a command, as shown in the following updated ABNF:

另一个变化是[iCAL]第4.6节所述的“icalbody”ABNF的“组件”部分在发送命令时是可选的,如以下更新的ABNF所示:

      icalbody = calprops component
        
      icalbody = calprops component
        
                ; If the "VCALENDAR" component contains the "CMD"
                ; property then the 'component' is optional:
                ;
                / calprops     ; Which MUST include a "CMD" property
                ;
      component = ; As defined in [iCAL].
        
                ; If the "VCALENDAR" component contains the "CMD"
                ; property then the 'component' is optional:
                ;
                / calprops     ; Which MUST include a "CMD" property
                ;
      component = ; As defined in [iCAL].
        

In addition, a problem exists with the control of "VALARM" components and their "TRIGGER" properties. A CU may wish to set its own alarms (local alarms) on components. These local alarms are not to be forwarded to other CUs, CUAs, or CSs. Similarly, the "SEQUENCE" property and the "ENABLE" parameter in local alarms are not to be forwarded to other CUs, CUAs, or CSs. Therefore, for the protocol between a CUA and a CS, the following changes from [iCAL] section 4.6.6 page 67 apply to the CAP protocol:

此外,“VALARM”组件及其“触发器”属性的控制存在问题。CU可能希望在组件上设置自己的报警(本地报警)。这些本地报警不得转发给其他CU、CUA或CSs。类似地,本地报警中的“序列”属性和“启用”参数不得转发给其他CU、CUA或CSs。因此,对于CUA和CS之间的协议,第67页[iCAL]第4.6.6节的以下更改适用于CAP协议:

alarmc = "BEGIN" ":" "VALARM" CRLF

alarmc=“开始”:“VALARM”CRLF

                     alarm-seq
                     other-props
                     (audioprop / dispprop / emailprop / procprop)
                     "END" ":" "VALARM" CRLF
                     ;
       emailprop   = ; As defined in [iCAL]
                     ;
       procprop    = ; As defined in [iCAL]
                     ;
       dispprop    = ; As defined in [iCAL]
                     ;
       audioprop   = ; As defined in [iCAL]
                     ;
       alarm-seq   = "SEQUENCE" alarmseqparams ":" posint0 CRLF
                     ;
       alarmseqparams = other-params [";" local-param] other-params
                     ;
                     ; Where DIGIT is defined in [iCAL]
                     ;
       posint0     = 1*DIGIT
       posint1     = posintfirst 1*DIGIT
                     ;
                     ; A number starting with 1 through 9.
                     ;
       posintfirst = %x31-39
                     ;
       other-params = *(";" xparam) *(";" iana-params)
                                    *(";" other-params)
                     ;
       iana-params = ; Any parameter registered by IANA directly or
                     ; included in an RFC that may be applied to
                     ; the property and within the rules published.
                     ;
       xparam        ; As defined in [iCAL].
                     ;
        
                     alarm-seq
                     other-props
                     (audioprop / dispprop / emailprop / procprop)
                     "END" ":" "VALARM" CRLF
                     ;
       emailprop   = ; As defined in [iCAL]
                     ;
       procprop    = ; As defined in [iCAL]
                     ;
       dispprop    = ; As defined in [iCAL]
                     ;
       audioprop   = ; As defined in [iCAL]
                     ;
       alarm-seq   = "SEQUENCE" alarmseqparams ":" posint0 CRLF
                     ;
       alarmseqparams = other-params [";" local-param] other-params
                     ;
                     ; Where DIGIT is defined in [iCAL]
                     ;
       posint0     = 1*DIGIT
       posint1     = posintfirst 1*DIGIT
                     ;
                     ; A number starting with 1 through 9.
                     ;
       posintfirst = %x31-39
                     ;
       other-params = *(";" xparam) *(";" iana-params)
                                    *(";" other-params)
                     ;
       iana-params = ; Any parameter registered by IANA directly or
                     ; included in an RFC that may be applied to
                     ; the property and within the rules published.
                     ;
       xparam        ; As defined in [iCAL].
                     ;
        

The CUA adds a "SEQUENCE" property to each "VALARM" component as it books the component. This property, along with the "LOCAL" and "ENABLE" parameters, allows the CUA to uniquely identify any VALARM in any component. The CUA should remove those before forwarding to non-CAP-aware CUAs.

CUA在对每个“VALARM”组件进行预订时,会向其添加一个“SEQUENCE”属性。此属性以及“本地”和“启用”参数允许CUA唯一标识任何组件中的任何VALARM。CUA应在转发到非CAP感知CUA之前删除这些内容。

In addition, if a CUA wished to ignore a "TRIGGER" property in a "VALARM" component that was supplied to it by the "Organizer", the CUA needs a common way to tag that trigger as disabled. So the following is a modification to [iCAL] section 4.8.6.3 page 127:

此外,如果CUA希望忽略“组织者”提供给它的“VALARM”组件中的“TRIGGER”属性,CUA需要一种通用方法将该触发器标记为禁用。因此,以下是对[iCAL]第127页第4.8.6.3节的修改:

      trigger    = "TRIGGER" 1*(";" enable-param) (trigrel / trigabs)
        
      trigger    = "TRIGGER" 1*(";" enable-param) (trigrel / trigabs)
        
                   ;
      trigrel    = ; As defined in [iCAL].
                   ;
      trigabs    = ; As defined in [iCAL].
        
                   ;
      trigrel    = ; As defined in [iCAL].
                   ;
      trigabs    = ; As defined in [iCAL].
        

See Section 7.2 and Section 7.5.

见第7.2节和第7.5节。

2.1. New Value Types (Summary)
2.1. 新值类型(摘要)

UPN: The UPN value type is a text value type restricted to only UPN values (see Section 6.1.2).

UPN:UPN值类型是一种仅限于UPN值的文本值类型(见第6.1.2节)。

UPN-FILTER: Like the UPN value type, but also includes filter rules that allow wildcards (see Section 6.1.3).

UPN-FILTER:与UPN值类型类似,但也包括允许通配符的筛选规则(参见第6.1.3节)。

CALQUERY: The "CAL-QUERY" value type is a query syntax that is used by the CUA to specify the rules that apply to a CAP command (see Section 6.1.1).

CALQUERY:“CAL-QUERY”值类型是CUA用于指定应用于CAP命令的规则的查询语法(参见第6.1.1节)。

2.1.1. New Parameters (summary)
2.1.1. 新参数(摘要)

ACTION - The "ACTION" parameter informs the endpoint if it should abort or ask to continue on timeout. (Section 7.1)

ACTION—“ACTION”参数通知端点是否应该中止或请求在超时时继续。(第7.1节)

ENABLE - The "ENABLE" parameter in CAP is used to tag a property in a component as disabled or enabled. (Section 7.2)

启用-CAP中的“启用”参数用于将组件中的属性标记为禁用或启用。(第7.2节)

ID - The "ID" parameter specifies a unique identifier to be used for any outstanding commands.

ID-“ID”参数指定用于任何未完成命令的唯一标识符。

LATENCY - The "LATENCY" parameter supplies the timeout value for command completion to the other endpoint. (Section 7.4)

LATENCY—“LATENCY”参数向另一个端点提供命令完成的超时值。(第7.4节)

LOCAL - The "LOCAL" parameter in CAP is used to tag a property in a component to signify that the component is local or to be distributed. (Section 7.5)

LOCAL—CAP中的“LOCAL”参数用于标记组件中的属性,以表示组件是本地的或要分发的。(第7.5节)

LOCALIZE - The "LOCALIZE" parameter specifies the locale to be used in error and warning messages.

LOCALIZE—“LOCALIZE”参数指定要在错误和警告消息中使用的区域设置。

OPTIONS - The "OPTIONS" parameter passes optional information for the command being sent.

选项-“选项”参数传递所发送命令的可选信息。

2.1.2. New or Updated Properties (summary)
2.1.2. 新的或更新的属性(摘要)

ALLOW-CONFLICT - Some entries in a calendar might not be valid if other entries were allowed to overlap the same time span. (Section 8.1)

允许冲突-如果允许其他条目重叠相同的时间跨度,则日历中的某些条目可能无效。(第8.1节)

ATT-COUNTER - When storing a "METHOD" property with the "COUNTER" method, there needs to be a way to remember the "ATTENDEE" value that sent the COUNTER. (Section 8.2)

ATT-COUNTER—使用“计数器”方法存储“方法”属性时,需要有一种方法来记住发送计数器的“与会者”值。(第8.2节)

CAP-VERSION - The version of CAP that the implementation supports. (Section 8.5)

CAP-VERSION—实现支持的CAP版本。(第8.5节)

CAR-LEVEL - The level of calendar access supported. (Section 8.7)

汽车级-支持的日历访问级别。(第8.7节)

COMPONENTS - The list of components supported. (Section 8.8)

组件-支持的组件列表。(第8.8节)

CSID - The Calendar Store IDentifier (CSID) uniquely identifies a CAP server. (Section 8.9)

CSID—日历存储标识符(CSID)唯一标识CAP服务器。(第8.9节)

CALID - Each calendar within a CS needs to be uniquely identifiable. The "CALID" property identifies a unique calendar within a CS. It can be a full CALID or a relative CALID. (Section 8.3)

CALID-CS中的每个日历都需要唯一标识。“CALID”属性标识CS中的唯一日历。它可以是全刻度或相对刻度。(第8.3节)

CALMASTER - The "CALMASTER" property specifies the contact information for the CS. (Section 8.4)

CALMASTER——“CALMASTER”属性指定CS的联系信息。(第8.4节)

CARID - Access rights can be saved and fetched by unique ID - the "CARID" property. (Section 8.6)

CARID-访问权限可以通过唯一ID“CARID”属性保存和获取。(第8.6节)

CMD - The CAP commands, as well as replies are transmitted using the "CMD" property. (Section 10.1)

CMD-CAP命令以及回复使用“CMD”属性传输。(第10.1节)

DECREED - Some access rights are not changeable by the CUA. When that is the case, the "DECREED" property value in the "VCAR" component will be "TRUE". (Section 8.10)

已颁布法令-CUA不能更改某些访问权限。在这种情况下,“VCAR”组件中的“法令”属性值将为“真”。(第8.10节)

DEFAULT-CHARSET - The list of charsets supported by the CS. The first entry is the default for the CS. (Section 8.11)

DEFAULT-CHARSET—CS支持的字符集列表。第一个条目是CS的默认条目。(第8.11节)

DEFAULT-LOCALE - The list of locales supported by the CS. The first entry in the list is the default locale. (Section 8.12)

DEFAULT-LOCALE—CS支持的区域设置列表。列表中的第一个条目是默认区域设置。(第8.12节)

DEFAULT-TZID - This is the list of known timezones supported. The first entry is the default. (Section 8.13)

DEFAULT-TZID-这是支持的已知时区列表。第一个条目是默认条目。(第8.13节)

DEFAULT-VCARS - A list of the "CARID" properties that will be used to create new calendars. (Section 8.14)

DEFAULT-VCARS-用于创建新日历的“CARID”属性列表。(第8.14节)

DENY - The UPNs listed in the "DENY" property of a "VCAR" component will be denied access, as described in the "VRIGHT" component. (Section 8.15)

拒绝-如“VCAR”组件中所述,“拒绝”属性中列出的UPN将被拒绝访问。(第8.15节)

EXPAND - This property tells the CS if the query reply should expand components into multiple instances. The default is "FALSE" and is ignored for CSs that cannot expand recurrence rules. (Section 8.16)

EXPAND-此属性告诉CS查询应答是否应将组件扩展到多个实例中。默认值为“FALSE”,对于无法扩展重复规则的CSs,将忽略该值。(第8.16节)

GRANT - The UPNs listed in the "GRANT" property of a "VCAR" component will be allowed access as described in the "VRIGHT" component. (Section 8.17)

授权-将允许访问“VCAR”组件的“授权”属性中列出的UPN,如“VRIGHT”组件中所述。(第8.17节)

ITIP-VERSION - The version of [iTIP] supported. (Section 8.18)

ITIP-VERSION—支持的[ITIP]版本。(第8.18节)

MAXDATE - The maximum date supported by the CS. (Section 8.20)

MAXDATE—CS支持的最长日期。(第8.20节)

MAX-COMP-SIZE - The largest component size allowed in the implementation including attachments in octets. (Section 8.19)

MAX-COMP-SIZE—实现中允许的最大组件大小,包括以八位字节为单位的附件。(第8.19节)

MINDATE - The minimum date supported by the CS. (Section 8.21)

MINDATE-CS支持的最短日期。(第8.21节)

MULTIPART - Passed in the capability messages to indicate which MIME multipart types the sender supports. (Section 8.22)

MULTIPART—传入功能消息,以指示发送方支持哪些MIME多部分类型。(第8.22节)

NAME - The "NAME" property is used to add locale-specific descriptions into components. (Section 8.23)

NAME—“NAME”属性用于将特定于区域设置的描述添加到组件中。(第8.23节)

   OWNER -  Each calendar has at least one "OWNER" property.  (xref
      target="OWNER"/>) Related to the "CAL-OWNERS()" query clause.
      (Section 6.1.1.1)
        
   OWNER -  Each calendar has at least one "OWNER" property.  (xref
      target="OWNER"/>) Related to the "CAL-OWNERS()" query clause.
      (Section 6.1.1.1)
        

PERMISSION - This property specifies the permission being granted or denied. Examples are the "SEARCH" and "MODIFY" values. (Section 8.25)

权限-此属性指定授予或拒绝的权限。例如“搜索”和“修改”值。(第8.25节)

QUERY - Used to hold the CAL-QUERY (Section 8.26) for the component.

查询-用于保存组件的CAL查询(第8.26节)。

QUERYID - A unique id for a stored query. (Section 8.27)

QUERYID—存储查询的唯一id。(第8.27节)

QUERY-LEVEL - The level of the query language supported. (Section 8.28)

QUERY-LEVEL—支持的查询语言级别。(第8.28节)

RECUR-ACCEPTED - If the implementation support recurrence rules. (Section 8.29)

重复-已接受-如果实现支持重复规则。(第8.29节)

RECUR-EXPAND - If the implementation support expanding recurrence rules. (Section 8.31)

重复-扩展-如果实现支持扩展重复规则。(第8.31节)

RECUR-LIMIT - Any maximum limit on the number of instances the implementation will expand recurring objects. (Section 8.30)

RECUR-LIMIT—实现将扩展重复对象的实例数的任何最大限制。(第8.30节)

REQUEST-STATUS - The [iCAL] "REQUEST-STATUS" property is extended to include new error numbers.

请求状态-扩展[iCAL]“请求状态”属性以包括新的错误号。

RESTRICTION - In the final check when granting calendar access requests, the CS test the results of a command for the value of the "RESTRICTION" property in the corresponding "VRIGHT" component, to determine if the access meets that restriction. (Section 8.32)

限制-在授予日历访问请求的最终检查中,CS测试相应“VRIGHT”组件中“RESTRICTION”属性值的命令结果,以确定访问是否满足该限制。(第8.32节)

SCOPE - The "SCOPE" property is used in "VRIGHT"s component to select the subset of data that may be acted upon when checking access rights. (Section 8.33)

范围-在“VRIGHT”的组件中使用“SCOPE”属性来选择在检查访问权限时可能要处理的数据子集。(第8.33节)

SEQUENCE - When the "SEQUENCE" property is used in a "VALARM" component, it uniquely identifies the instances of the "VALARM" within that component.

序列-在“VALARM”组件中使用“SEQUENCE”属性时,它唯一标识该组件中“VALARM”的实例。

STORES-EXPANDED - Specifies if the implementation stores recurring objects expanded or not. (Section 8.34)

STORES-EXPANDED—指定实现是否存储已扩展的定期对象。(第8.34节)

TARGET - The new "VCALENDAR" component property "TARGET" (Section 8.35) is used to specify which calendar(s) will be the subject of the CAP command.

目标-新的“VCALENDAR”组件属性“TARGET”(第8.35节)用于指定哪些日历将成为CAP命令的主题。

TRANSP - This is a modification of the [iCAL] "TRANSP" property and it allows more values. The new values are related to conflict control. (Section 8.36)

TRANSP-这是对[iCAL]“TRANSP”属性的修改,它允许更多值。新值与冲突控制相关。(第8.36节)

2.1.3. New Components (summary)
2.1.3. 新组成部分(摘要)

VAGENDA - CAP allows the fetching and storing of the entire contents of a calendar. The "VCALENDAR" component is not sufficient to encapsulate all of the needed data that describes a calendar. The "VAGENDA" component is the encapsulating object for an entire calendar. (Section 9.1)

VAGENDA-CAP允许获取和存储日历的全部内容。“VCALENDAR”组件不足以封装描述日历的所有所需数据。“VAGENDA”组件是整个日历的封装对象。(第9.1节)

VCALSTORE - Each CS contains one or more calendars (VAGENDAs), the "VCALSTORE" component is the encapsulating object that can hold all of the "VAGENDA" components along with any components and properties that are unique to the store level. (Section 9.2)

VCALSTORE-每个CS包含一个或多个日历(VAGENDAs),“VCALSTORE”组件是封装对象,可容纳所有“VAGENDA”组件以及商店级别特有的任何组件和属性。(第9.2节)

VCAR - Calendar Access Rights are specified and encapsulated in the new iCalendar "VCAR" component. The "VCAR" component holds some new properties and at least one "VRIGHT" component. (Section 9.3)

VCAR-日历访问权限已指定并封装在新的iCalendar“VCAR”组件中。“VCAR”组件包含一些新属性和至少一个“VRIGHT”组件。(第9.3节)

VRIGHT - This component encapsulates a set of instructions to the CS to define the rights or restrictions needed. (Section 9.4)

VRIGHT-此组件封装了一组指令,用于向CS定义所需的权限或限制。(第9.4节)

VREPLY - This component encapsulates a set of data that can consist of an arbitrary number of properties and components. Its contents are dependent on the command that was issued. (Section 9.5)

VREPLY-此组件封装了一组数据,这些数据可以由任意数量的属性和组件组成。其内容取决于发出的命令。(第9.5节)

VQUERY - The search operation makes use of a new component, called "VQUERY" and a new value type "CAL-QUERY" (Section 6.1.1). The "VQUERY" component is used to fetch objects from the CS. (Section 9.6)

VQUERY-搜索操作使用一个名为“VQUERY”的新组件和一个新的值类型“CAL-QUERY”(第6.1.1节)。“VQUERY”组件用于从CS获取对象。(第9.6节)

2.2. Relationship of RFC-2446 (ITIP) to CAP
2.2. RFC-2446(ITIP)与CAP的关系

[iTIP] describes scheduling methods that result in indirect manipulation of components. In CAP, the "CREATE" command is used to deposit entities into the store. Other CAP commands, such as "DELETE", "MODIFY", and "MOVE" command values, provide direct manipulation of components. In the CAP calendar store model, scheduling messages are conceptually kept separate from other components by their state.

[iTIP]描述了导致间接操纵组件的调度方法。在CAP中,“创建”命令用于将实体存放到存储中。其他CAP命令(如“删除”、“修改”和“移动”命令值)可直接操纵零部件。在CAP日历存储模型中,调度消息在概念上按其状态与其他组件分开。

All scheduling operations are as defined in [iTIP]. This memo makes no changes to any of the methods or procedures described in [iTIP]. In this memo, referring to the presence of the "METHOD" property in an object is the same as saying an [iTIP] object.

所有调度操作均如[iTIP]中所定义。本备忘录不对[iTIP]中描述的任何方法或程序进行更改。在本备忘录中,提及对象中“METHOD”属性的存在与表示[iTIP]对象相同。

A CUA may create a "BOOKED" state object by depositing an iCalendar object into the store. This is done by depositing an object that does not have a "METHOD" property. The CS then knows to set the state of the object to the "BOOKED" state. If the object has a "METHOD" property, then the object is stored in the "UNPROCESSED" state.

CUA可以通过将iCalendar对象存放到存储中来创建“已预订”状态对象。这是通过存放一个没有“方法”属性的对象来完成的。然后CS知道将对象的状态设置为“已预订”状态。如果对象具有“METHOD”属性,则该对象存储在“UNPROCESSED”状态。

If existing "UNPROCESSED" state objects exist in the CS for the same UID (UID is defined in [iCAL]), then a CUA may wish to consolidate the objects into one "BOOKED" state object. The CUA would fetch the "UNPROCESSED" state objects for that UID and process them in the CUA as described in [iTIP]. Then, if the CUA wished to book the UID, the CUA would issue a "CREATE" command to create the new "BOOKED" state object in the CS, followed by a "DELETE" command to remove any related old [iTIP] objects from the CS. It might also involve the CUA sending some [iMIP] objects or contacting other CSs and performing CAP operations on those CSs.

如果CS中存在相同UID的现有“未处理”状态对象(UID在[iCAL]中定义),则CUA可能希望将这些对象合并为一个“已预订”状态对象。CUA将获取该UID的“未处理”状态对象,并在CUA中处理它们,如[iTIP]中所述。然后,如果CUA希望预订UID,CUA将发出“创建”命令,在CS中创建新的“预订”状态对象,然后发出“删除”命令,从CS中删除任何相关的旧[iTIP]对象。它还可能涉及CUA发送一些[iMIP]对象或联系其他CSs并对这些CSs执行CAP操作。

The CUA could also decide not to book the object. In this case, the "UNPROCESSED" state objects could be removed from the CS, or the CUA could set those objects to the marked-for-delete state. The CUA could also ignore objects for later processing.

CUA也可以决定不预订该物品。在这种情况下,可以从CS中删除“未处理”状态对象,或者CUA可以将这些对象设置为标记为删除状态。CUA还可以忽略对象以供以后处理。

The marked-for-delete state is used to keep the object around so that the CUA can process duplicate requests automatically. If a duplicate [iTIP] object is deposited into the CS and there exists identical marked-for-delete objects, then a CUA acting on behalf of the "OWNER" can silently drop those duplicate entries.

标记为删除状态用于保留对象,以便CUA可以自动处理重复请求。如果将重复的[iTIP]对象存放到CS中,并且存在相同的标记为删除的对象,则代表“所有者”的CUA可以无声地删除这些重复条目。

Another purpose for the marked-for-delete state is so that, when a CU decides they do not wish to have the object show in their calendar, the CUA can book the object by changing the "PARTSTAT" parameter to "DECLINED" in the "ATTENDEE" property that corresponds to their UPN. Then the CUA can perform [iTIP] processing such as sending back a decline, and then mark that object as marked-fo-delete. The CUA might be configurable to automatically drop any updates for that object, knowing the CU has already declined.

标记为删除状态的另一个目的是,当CU决定不希望在其日历中显示该对象时,CUA可以通过将对应于其UPN的“ATTENDEE”属性中的“PARTSTAT”参数更改为“谢绝”来预订该对象。然后CUA可以执行[iTIP]处理,例如发回拒绝,然后将该对象标记为标记为fo delete。CUA可以配置为在知道CU已经拒绝的情况下自动删除该对象的任何更新。

When synchronizing with multiple CUAs, the marked-for-delete state could be used to inform the synchronization process that an object is to be deleted. How synchronization is done is not specified in this memo.

与多个CUA同步时,标记为删除状态可用于通知同步过程要删除对象。此备忘录中未指定如何进行同步。

Several "UNPROCESSED" state entries can be in the CS for the same UID. However, once consolidated, only one object exists in the CS and that is the booked object. The other objects MUST be removed or have their state changed to "DELETED".

对于同一UID,CS中可以有多个“未处理”状态条目。但是,一旦合并,CS中只存在一个对象,即预订对象。必须删除其他对象或将其状态更改为“已删除”。

There MUST NOT be more than one "BOOKED" state object in a calendar for the same "UID". The "ADD" method value may create multiple objects in the "BOOKED" state for the same UID; however, for the purpose of this memo, they are the same object and simply have multiple "VCALENDAR" components.

对于同一个“UID”,日历中不能有多个“已预订”状态对象。“ADD”方法值可以为同一UID创建多个处于“BOOKED”状态的对象;但是,就本备忘录而言,它们是同一个对象,只是有多个“VCALENDAR”组件。

For example, if you were on vacation, you could have received a "REQUEST" method to attend a meeting and several updates to that meeting. Your CUA would have to issue "SEARCH" commands to find them in the CS using CAP, process them, and determine the final state of the object from a possible combination of user input and programmed logic. Then the CUA would instruct the CS to create a new booked object from the consolidated results. Finally, the CUA could do a "DELETE" command to remove the related "UNPROCESSED" state objects. See [iTIP] for details on resolving multiple [iTIP] scheduling entries.

例如,如果您正在度假,您可能会收到参加会议的“请求”方法以及该会议的一些更新。您的CUA必须发出“搜索”命令,以使用CAP在CS中找到它们,处理它们,并根据用户输入和编程逻辑的可能组合确定对象的最终状态。然后CUA将指示CS根据合并结果创建新的记账对象。最后,CUA可以执行“删除”命令来删除相关的“未处理”状态对象。有关解析多个[iTIP]调度条目的详细信息,请参阅[iTIP]。

3. CAP Design
3. 帽设计
3.1. System Model
3.1. 系统模型

The system model describes the high level components of a calendar system and how they interact with each other.

系统模型描述了日历系统的高级组件以及它们之间的交互方式。

CAP is used by a CUA to send commands to, and receive responses from, a CS.

CUA使用CAP向CS发送命令并从CS接收响应。

The CUA prepares a [MIME] encapsulated message, sends it to the CS, and receives a [MIME] encapsulated response. The calendaring-related information within these messages are represented by iCalendar objects. In addition, the "GET-CAPABILITY" command can be sent from the CS to the CUA.

CUA准备[MIME]封装消息,将其发送给CS,并接收[MIME]封装响应。这些消息中的日历相关信息由iCalendar对象表示。此外,可以从CS向CUA发送“GET-CAPABILITY”命令。

There are two distinct protocols in operation to accomplish this exchange. [BEEP] is the transport protocol used to move these encapsulations between a CUA and a CS. CAP's [BEEP] profile defines the application protocol that specifies the content and semantics of the messages sent between the CUA and the CS.

有两种不同的协议在运行以完成此交换。[BEEP]是用于在CUA和CS之间移动这些封装的传输协议。CAP的[BEEP]配置文件定义了应用程序协议,该协议指定CUA和CS之间发送的消息的内容和语义。

3.2. Calendar Store Object Model
3.2. 日历存储对象模型

[iCAL] describes components such as events, todos, alarms, and timezones. CAP requires additional object infrastructure, in particular, detailed definitions of the containers for events and todos (calendars), access control objects, and a query language.

[iCAL]描述事件、TODO、警报和时区等组件。CAP需要额外的对象基础设施,特别是事件和TODO(日历)容器的详细定义、访问控制对象和查询语言。

The conceptual model for a calendar store is shown below. The calendar store (VCALSTORE - Section 9.2) contains "VCAR"s, "VQUERY"s, "VTIMEZONE"s, "VAGENDA"s and calendar store properties.

日历存储的概念模型如下所示。日历存储(VCALSTORE-第9.2节)包含“VCAR”、“VQUERY”、“VTIMEZONE”、“VAGENDA”和日历存储属性。

Calendars (VAGENDAs) contain "VEVENT"s, "VTODO"s, "VJOURNAL"s, "VCAR"s, "VTIMEZONE"s, "VFREEBUSY", "VQUERY"s, and calendar properties.

日历(VAGENDAs)包含“VEVENT”、“VTODO”、“VJOURNAL”、“VCAR”、“VTIMEZONE”、“VFREEBUSY”、“VQUERY”和日历属性。

The component "VCALSTORE" is used to denote the root of the calendar store and contains all of the calendars.

组件“VCALSTORE”用于表示日历存储的根目录,并包含所有日历。

Calendar Store

日历存储

         VCALSTORE
         |
         +-- properties
         +-- VCARs
         +-- VQUERYs
         +-- VTIMEZONEs
         +-- VAGENDA
         |     |
         |     +--properties
         |     +--VEVENTs
         |     |    |
         |     |    +--VALARMs
         |     +--VTODOs
         |     |    |
         |     |    +--VALARMs
         |     +--VJOURNALs
         |     +--VCARs
         |     +--VTIMEZONEs
         |     +--VQUERYs
         |     +--VFREEBUSYs
         |     |
         |     |   ...
         .
         .
         +-- VAGENDA
         .     .
         .     .
         .     .
        
         VCALSTORE
         |
         +-- properties
         +-- VCARs
         +-- VQUERYs
         +-- VTIMEZONEs
         +-- VAGENDA
         |     |
         |     +--properties
         |     +--VEVENTs
         |     |    |
         |     |    +--VALARMs
         |     +--VTODOs
         |     |    |
         |     |    +--VALARMs
         |     +--VJOURNALs
         |     +--VCARs
         |     +--VTIMEZONEs
         |     +--VQUERYs
         |     +--VFREEBUSYs
         |     |
         |     |   ...
         .
         .
         +-- VAGENDA
         .     .
         .     .
         .     .
        

Calendars within a Calendar Store are identified by their unique Relative CALID.

日历存储中的日历由其唯一的相对CALID标识。

3.3. Protocol Model
3.3. 协议模型

CAP uses [BEEP] as the transport and authentication protocol.

CAP使用[BEEP]作为传输和身份验证协议。

The initial charset MUST be UTF-8 for a session in an unknown locale. If the CS supplied the [BEEP] 'localize' attribute in the [BEEP] 'greeting', then the CUA may tell the CS to switch locales for the session by issuing the "SET-LOCALE" CAP command and supplying one of the locales supplied by the [BEEP] 'localize' attribute. If a locale is supplied, the first locale in the [BEEP] 'localize' attribute is the default locale of the CS. The locale is switched only after a successful reply.

对于未知区域设置中的会话,初始字符集必须为UTF-8。如果CS在[BEEP]“问候语”中提供了[BEEP]“localize”属性,那么CUA可以通过发出“SET-LOCALE”CAP命令并提供[BEEP]“localize”属性提供的一个区域设置来通知CS切换会话的区域设置。如果提供了区域设置,[BEEP]“localize”属性中的第一个区域设置是CS的默认区域设置。只有在成功回复后才会切换区域设置。

The "DEFAULT-CHARSET" property of the CS contains the list of charsets supported by the CS with the first value being the default for new calendars. If the CUA wishes to switch to one of those charsets for the session, the CUA issues the "SET-LOCALE" command. The CUA would have to first perform a "GET-CAPABILITY" command on the CS to get the list of charsets supported by the CS. The charset is switched only after a successful reply.

CS的“DEFAULT-CHARSET”属性包含CS支持的字符集列表,第一个值是新日历的默认值。如果CUA希望为会话切换到其中一个字符集,CUA将发出“SET-LOCALE”命令。CUA必须首先在CS上执行“GET-CAPABILITY”命令,以获取CS支持的字符集列表。只有在成功回复后才切换字符集。

The CUA may switch locales and charsets as needed. There is no requirement that a CS support multiple locales or charsets.

CUA可以根据需要切换区域设置和字符集。CS不需要支持多个区域设置或字符集。

3.3.1. Use of BEEP, MIME, and iCalendar
3.3.1. BEEP、MIME和iCalendar的使用

CAP uses the [BEEP] application protocol over TCP. Refer to [BEEP] and [BEEPTCP] for more information. The default port on which the CS listens for connections is user port 1026.

CAP通过TCP使用[BEEP]应用程序协议。有关更多信息,请参阅[BEEP]和[BEEPTCP]。CS侦听连接的默认端口是用户端口1026。

The [BEEP] data exchanged in CAP is a iCalendar MIME content that fully conforms to [iCAL] iCalendar format.

CAP中交换的[BEEP]数据是完全符合[iCAL]iCalendar格式的iCalendar MIME内容。

This example tells the CS to generate and return 10 UIDs to be used by the CUA. Note that throughout this memo, 'C:' refers to what the CUA sends, 'S:' refers to what the CS sends, 'I:' refers to what the initiator sends, and 'L:' refers to what the listener sends. Here initiator and listener are used as defined in [BEEP].

此示例告诉CS生成并返回10个UID供CUA使用。请注意,在整个备忘录中,“C”表示CUA发送的内容,“S”表示CS发送的内容,“I”表示发起方发送的内容,“L”表示侦听器发送的内容。在这里,启动器和侦听器的使用与[BEEP]中的定义相同。

      C: MSG 1 2 . 432 62
      C: Content-Type: text/calendar
      C:
      C: BEGIN:VCALENDAR
      C: VERSION:2.0
      C: PRODID:-//someone's prodid
      C: CMD;ID=unique-per-cua-123;OPTIONS=10:GENERATE-UID
      C: END:VCALENDAR
        
      C: MSG 1 2 . 432 62
      C: Content-Type: text/calendar
      C:
      C: BEGIN:VCALENDAR
      C: VERSION:2.0
      C: PRODID:-//someone's prodid
      C: CMD;ID=unique-per-cua-123;OPTIONS=10:GENERATE-UID
      C: END:VCALENDAR
        

NOTE: The following examples will not include the [BEEP] header and footer information. Only the iCalendar objects that are sent between the CUA and CS will be shown because the [BEEP] payload boundaries are independent of CAP.

注意:以下示例不包括[BEEP]页眉和页脚信息。只有在CUA和CS之间发送的iCalendar对象才会显示,因为[BEEP]有效负载边界与CAP无关。

The commands listed below are used to manipulate or access the data on the calendar store:

下面列出的命令用于操作或访问日历存储上的数据:

ABORT - Sent to halt the processing of some of the commands. (Section 10.2)

中止-发送以停止某些命令的处理。(第10.2节)

CONTINUE - Sent to continue processing a command that has reached its specified timeout time. (Section 10.3)

CONTINUE-发送以继续处理已达到指定超时时间的命令。(第10.3节)

CREATE - Create a new object on the CS. Initiated only by the CUA. (Section 10.4)

创建-在CS上创建新对象。仅由CUA发起。(第10.4节)

SET-LOCALE - Tell the CS to use any named locale and charset supplied. Initiated by the CUA only. (Section 10.13)

SET-LOCALE-告诉CS使用提供的任何命名语言环境和字符集。仅由CUA发起。(第10.13节)

DELETE - Delete objects from the CS. Initiated only by the CUA. Can also be used to mark an object for deletion. (Section 10.5)

删除-从CS中删除对象。仅由CUA发起。也可用于标记要删除的对象。(第10.5节)

GENERATE-UID - Generate one or more unique ids. Initiated only by the CUA. (Section 10.6)

GENERATE-UID-生成一个或多个唯一ID。仅由CUA发起。(第10.6节)

GET-CAPABILITY - Query the capabilities of the other end point of the session. (Section 10.7)

GET-CAPABILITY—查询会话另一个端点的功能。(第10.7节)

IDENTIFY - Set a new identity for the session. Initiated only by the CUA. (Section 10.8)

标识-为会话设置新标识。仅由CUA发起。(第10.8节)

MODIFY - Modify components. Initiated by the CUA only. (Section 10.9)

修改-修改组件。仅由CUA发起。(第10.9节)

MOVE - Move components to another container. Initiated only by the CUA. (Section 10.10)

移动-将组件移动到另一个容器。仅由CUA发起。(第10.10节)

REPLY - When replying to a command, the "CMD" value will be set to "REPLY" so that it will not be confused with a new command. (Section 10.11)

回复-回复命令时,“CMD”值将设置为“REPLY”,以便不会与新命令混淆。(第10.11节)

SEARCH - Search for components. Initiated only by the CUA. (Section 10.12)

搜索-搜索组件。仅由CUA发起。(第10.12节)

TIMEOUT - Sent when a specified amount of time has lapsed and a command has not finished. (Section 10.14)

超时-当指定的时间已过且命令尚未完成时发送。(第10.14节)

4. Security Model
4. 安全模型

BEEP transport performs all session authentication.

BEEP传输执行所有会话身份验证。

4.1. Calendar User and UPNs
4.1. 日历用户和UPN

A CU is an entity that can be authenticated. It is represented in CAP as a UPN, which is a key part of access rights. The UPN representation is independent of the authentication mechanism used during a particular CUA/CS interaction. This is because UPNs are used within VCARs. If the UPN were dependent on the authentication mechanism, a VCAR could not be consistently evaluated. A CU may use one mechanism while using one CUA, but the same CU may use a

CU是可以进行身份验证的实体。它在CAP中表示为UPN,UPN是访问权限的关键部分。UPN表示独立于特定CUA/CS交互期间使用的身份验证机制。这是因为在VCAR中使用UPN。如果UPN依赖于身份验证机制,则无法一致地评估VCAR。CU在使用一个CUA时可以使用一个机构,但同一CU可以使用一个

different authentication mechanism when using a different CUA, or while connecting from a different location.

使用不同CUA或从不同位置连接时使用不同的身份验证机制。

The user may also have multiple UPNs for various purposes.

用户还可以出于各种目的拥有多个UPN。

Note that the immutability of the user's UPN may be achieved by using SASL's authorization identity feature. The transmitted authorization identity may be different than the identity in the client's authentication credentials [SASL, section 3]. This also permits a CU to authenticate using their own credentials, yet request the access privileges of the identity for which they are proxying SASL. Also, the form of authentication identity supplied by a service like TLS may not correspond to the UPNs used to express a server's access rights, requiring a server-specific mapping to be done. The method by which a server determines a UPN, based on the authentication credentials supplied by a client, is implementation-specific. See [BEEP] for authentication details; [BEEP] relies on SASL.

注意,用户的UPN的不变性可以通过使用SASL的授权标识特性来实现。传输的授权标识可能不同于客户端认证凭证中的标识[SASL,第3节]。这还允许CU使用自己的凭据进行身份验证,同时请求其代理SASL的身份的访问权限。此外,由诸如TLS之类的服务提供的身份验证身份的形式可能与用于表示服务器的访问权限的upn不对应,这需要进行特定于服务器的映射。服务器根据客户端提供的身份验证凭据确定UPN的方法是特定于实现的。有关身份验证的详细信息,请参见[BEEP];[BEEP]依赖SASL。

4.1.1. UPNs and Certificates
4.1.1. UPN和证书

When using X.509 certificates for purposes of CAP authentication, the UPN should appear in the certificate. Unfortunately, there is no single correct guideline for which field should contain the UPN.

当使用X.509证书进行CAP身份验证时,UPN应出现在证书中。不幸的是,对于哪个字段应该包含UPN,没有一个正确的指导原则。

Quoted from RFC-2459, section 4.1.2.6 (Subject):

引用RFC-2459第4.1.2.6节(主题):

If subject naming information is present only in the subjectAlt-Name extension (e.g., a key bound only to an email address or URI), then the subject name MUST be an empty sequence and the subjectAltName extension MUST be critical.

如果主题命名信息仅存在于subjectAlt名称扩展中(例如,仅绑定到电子邮件地址或URI的密钥),则主题名称必须是空序列,并且subjectAltName扩展必须是关键的。

Implementations of this specification MAY use these comparison rules to process unfamiliar attribute types (i.e., for name chaining). This allows implementations to process certificates with unfamiliar attributes in the subject name.

本规范的实现可以使用这些比较规则来处理不熟悉的属性类型(例如,名称链接)。这允许实现处理主题名称中具有不熟悉属性的证书。

In addition, legacy implementations exist where an RFC 2822 name [RFC2822] is embedded in the subject distinguished name as an EmailAddress attribute. The attribute value for EmailAddress is of type IA5String to permit inclusion of the character '@', which is not part of the PrintableString character set. EmailAddress attribute values are not case sensitive (e.g., "fanfeedback@redsox.example.com" is the same as "FANFEEDBACK@REDSOX.EXAMPLE.COM").

此外,在传统实现中,RFC 2822名称[RFC2822]作为EmailAddress属性嵌入到主题可分辨名称中。EmailAddress的属性值为IA5String类型,以允许包含字符“@”,该字符不属于PrintableString字符集。EmailAddress属性值不区分大小写(例如“fanfeedback@redsox.example.com“与”FANFEEDBACK@REDSOX.EXAMPLE.COM").

Conforming implementations generating new certificates with electronic mail addresses MUST use the rfc822Name in the subject alternative name field (see sec. 4.2.1.7 of [X509CRL])

生成带有电子邮件地址的新证书的一致性实现必须在“主题备选名称”字段中使用RFC822名称(见[X509CRL]第4.2.1.7节)

to describe such identities. Simultaneous inclusion of the EmailAddress attribute in the subject distinguished name to support legacy implementations is deprecated but permitted.

描述这样的身份。不推荐同时在主题可分辨名称中包含EmailAddress属性以支持旧式实现,但允许这样做。

Since no single method of including the UPN in the certificate will work in all cases, CAP implementations MUST support the ability to configure what the mapping will be by the CS administrator. Implementations MAY support multiple mapping definitions, for example, the UPN may be found in either the subject alternative name field, or the UPN may be embedded in the subject distinguished name as an EmailAddress attribute.

由于在证书中包含UPN的单一方法在所有情况下都不起作用,因此CAP实现必须支持CS管理员配置映射的能力。实现可以支持多个映射定义,例如,UPN可以在subject alternative name字段中找到,或者UPN可以作为EmailAddress属性嵌入subject可分辨名称中。

Note: If a CS or CUA is validating data received via [iMIP], if the "ORGANIZER" or "ATTENDEE" properties said, for example, "ATTENDEE;CN=Joe Random User:MAILTO:juser@example.com", then the email address should be checked against the UPN. This is so the "ATTENDEE" property cannot be changed to something misleading like "ATTENDEE;CN=Joe Rictus User:MAILTO:jrictus@example.com" and have it pass validation. Note that it is the email addresses that miscompare, the CN miscompare is irrelevant.

注意:如果CS或CUA正在验证通过[iMIP]接收的数据,如果“组织者”或“与会者”属性表示,例如,“与会者;CN=Joe Random User:MAILTO:juser@example.com,则应根据UPN检查电子邮件地址。因此,“ATTENDEE”属性不能更改为误导性的内容,如“ATTENDEE;CN=Joe Rictus用户:MAILTO:jrictus@example.com“并让它通过验证。请注意,miscompare与CN miscompare无关的是电子邮件地址。

4.1.2. Anonymous Users and Authentication
4.1.2. 匿名用户和身份验证

Anonymous access is often desirable. For example, an organization may publish calendar information that does not require any access control for viewing or login. Conversely, a user may wish to view unrestricted calendar information without revealing their identity.

匿名访问通常是可取的。例如,组织可以发布不需要任何访问控制即可查看或登录的日历信息。相反,用户可能希望查看不受限制的日历信息,而不透露其身份。

4.1.3. User Groups
4.1.3. 用户组

A User Group is used to represent a collection of CUs or other UGs that can be referenced in VCARs. A UG is represented in CAP as a UPN. The CUA cannot distinguish between a UPN that represents a CU or a UG.

用户组用于表示可在VCAR中引用的CU或其他UG的集合。UG在CAP中表示为UPN。CUA无法区分表示CU或UG的UPN。

UGs are expanded as necessary by the CS. The CS MAY expand a UG (including nested UGs) to obtain a list of unique CUs. Duplicate UPNs are filtered during expansion.

无人值守地面传感器根据需要由CS进行扩展。CS可展开UG(包括嵌套UGs)以获得唯一CU列表。扩展期间会过滤重复的UPN。

How the UG expansion is maintained across commands is implementation-specific. A UG may reference a static list of members, or it may represent a dynamic list. Operations SHOULD recognize changes to UG membership.

如何跨命令维护UG扩展是特定于实现的。UG可以引用静态成员列表,也可以表示动态列表。操作应识别UG成员资格的更改。

CAP does not define commands or methods for managing UGs.

CAP未定义管理UGs的命令或方法。

4.2. Access Rights
4.2. 访问权

Access rights are used to grant or deny access to calendars, components, properties, and parameters in a CS to a CU. CAP defines a new component type called a Calendar Access Right (VCAR). Specifically, a "VCAR" component grants, or denies, UPNs the right to search and write components, properties, and parameters on calendars within a CS.

访问权限用于授予或拒绝CU访问CS中的日历、组件、属性和参数。CAP定义了一种称为日历访问权(VCAR)的新组件类型。具体而言,“VCAR”组件授予或拒绝UPNs在CS中搜索和写入日历上的组件、属性和参数的权利。

The "VCAR" component model does not put any restriction on the sequence in which the object and access rights are created. That is, an object associated with a particular "VCAR" component might be created before or after the actual "VCAR" component is defined. In addition, the "VCAR" and "VEVENT" components might be created in the same iCalendar object and passed together in a single object.

“VCAR”组件模型对对象和访问权限的创建顺序没有任何限制。也就是说,与特定“VCAR”组件关联的对象可能在实际“VCAR”组件定义之前或之后创建。此外,“VCAR”和“VEVENT”组件可能在同一个iCalendar对象中创建,并在单个对象中一起传递。

All rights MUST be denied unless specifically granted.

除非特别授权,否则必须拒绝所有权利。

If two rights specified in "VCAR" components are in conflict, the right that denies access always takes precedence over the right that grants access. Any attempt to create a "VCAR" component that conflicts with a "VCAR" components with a "DECREED" property set to the "TRUE" value must fail.

如果“VCAR”组件中指定的两个权限发生冲突,则拒绝访问的权限始终优先于授予访问权限的权限。任何创建“VCAR”组件的尝试都必须失败,因为该组件与“法令”属性设置为“真”值的“VCAR”组件冲突。

4.2.1. Access Control and NOCONFLICT
4.2.1. 访问控制和无冲突

The "TRANSP" property can take on values -- "TRANSPARENT-NOCONFLICT" and "OPAQUE-NOCONFLICT" -- that prohibit other components from overlapping it. This setting overrides access. The "ALLOW-CONFLICT" CS, Calendar or component setting may also prevent overlap, returning an error code "6.3".

“TRANSP”属性可以采用值--“TRANSPARENT-NOCONFLICT”和“不透明-NOCONFLICT”--禁止其他组件重叠它。此设置覆盖访问权限。“允许冲突”CS、日历或组件设置也可防止重叠,返回错误代码“6.3”。

4.2.2. Predefined VCARs
4.2.2. 预定义VCAR

The predefined calendar access CARIDs that MUST be implemented are:

必须实施的预定义日历访问CARID包括:

CARID:READBUSYTIMEINFO - Specifies the "GRANT" and "DENY" rules that allow UPNs to search "VFREEBUSY" components. An example definition for this VCAR is:

CARID:READBUSYTIMEINFO-指定允许UPN搜索“VFREEBUSY”组件的“授予”和“拒绝”规则。该VCAR的示例定义如下:

            BEGIN:VCAR
            CARID:READBUSYTIMEINFO
            BEGIN:VRIGHT
            GRANT:*
            PERMISSION:SEARCH
            SCOPE:SELECT * FROM VFREEBUSY WHERE STATE() = 'BOOKED'
            END:VRIGHT
            END:VCAR
        
            BEGIN:VCAR
            CARID:READBUSYTIMEINFO
            BEGIN:VRIGHT
            GRANT:*
            PERMISSION:SEARCH
            SCOPE:SELECT * FROM VFREEBUSY WHERE STATE() = 'BOOKED'
            END:VRIGHT
            END:VCAR
        

CARID:REQUESTONLY - Specifies the "GRANT" and "DENY" rules to UPNs other than the owner of the calendar and specifies the ability to write new objects with the "METHOD" property set to the "REQUEST" value. This CARID allows the owner to specify which UPNs are allowed to make scheduling requests. An example definition for this VCAR is:

CARID:REQUESTONLY-指定对日历所有者以外的UPN的“授予”和“拒绝”规则,并指定在“方法”属性设置为“请求”值的情况下写入新对象的能力。此CARID允许所有者指定允许哪些UPN发出调度请求。该VCAR的示例定义如下:

BEGIN:VCAR CARID:REQUESTONLY BEGIN:VRIGHT GRANT:NON CAL-OWNERS() PERMISSION:CREATE RESTRICTION:SELECT VEVENT FROM VAGENDA WHERE METHOD = 'REQUEST' RESTRICTION:SELECT VTODO FROM VAGEND WHERE METHOD = 'REQUEST' RESTRICTION:SELECT VJOURNAL FROM VAGEND WHERE METHOD = 'REQUEST' END:VRIGHT END:VCAR

开始:VCAR CARID:REQUESTONLY开始:VRIGHT GRANT:NON-CAL-OWNERS()权限:创建限制:从VAGENDA中选择VEVENT,其中方法='REQUEST'限制:从VAGEND中选择VTODO,其中方法='REQUEST'限制:从VAGEND中选择VJOURNAL,其中方法='REQUEST'结束:VRIGHT-END:VCAR

CARID:UPDATEPARTSTATUS - Grants authenticated users the right to modify the instances of the "ATTENDEE" property set to one of their calendar addresses in any components for any booked component containing an "ATTENDEE" property. This allows (or denies) a CU the ability to update their own participation status in a calendar where they might not otherwise have "MODIFY" command access. They are not allowed to change the "ATTENDEE" property value. An example definition for this VCAR (only affecting the "VEVENT" components) is:

CARID:UPDATEPARTSTATUS-授予经过身份验证的用户在任何组件中修改“ATTENDEE”属性集的实例的权利,该属性集为任何包含“ATTENDEE”属性的已预订组件的日历地址之一。这允许(或拒绝)CU在日历中更新自己的参与状态,否则他们可能没有“修改”命令访问权限。不允许他们更改“ATTENDEE”属性值。该VCAR(仅影响“VEVENT”组件)的示例定义如下:

            BEGIN:VCAR
            CARID:UPDATEPARTSTATUS
            BEGIN:VRIGHT
            GRANT:*
            PERMISSION:MODIFY
            SCOPE:SELECT ATTENDEE FROM VEVENT
             WHERE ATTENDEE = SELF()
             AND ORGANIZER = CURRENT-TARGET()
             AND STATE() = 'BOOKED'
            RESTRICTION:SELECT * FROM VEVENT
             WHERE ATTENDEE = SELF()
            END:VRIGHT
            END:VCAR
        
            BEGIN:VCAR
            CARID:UPDATEPARTSTATUS
            BEGIN:VRIGHT
            GRANT:*
            PERMISSION:MODIFY
            SCOPE:SELECT ATTENDEE FROM VEVENT
             WHERE ATTENDEE = SELF()
             AND ORGANIZER = CURRENT-TARGET()
             AND STATE() = 'BOOKED'
            RESTRICTION:SELECT * FROM VEVENT
             WHERE ATTENDEE = SELF()
            END:VRIGHT
            END:VCAR
        

CARID:DEFAULTOWNER - Grants to any owner the permission they have for the target. An example definition for this VCAR is:

CARID:DEFAULTOWNER-授予任何所有者对目标的权限。该VCAR的示例定义如下:

            BEGIN:VCAR
            CARID:DEFAULTOWNER
            BEGIN:VRIGHT
            GRANT:CAL-OWNERS()
            PERMISSION:*
            SCOPE:SELECT * FROM VAGENDA
            END:VRIGHT
            END:VCAR
        
            BEGIN:VCAR
            CARID:DEFAULTOWNER
            BEGIN:VRIGHT
            GRANT:CAL-OWNERS()
            PERMISSION:*
            SCOPE:SELECT * FROM VAGENDA
            END:VRIGHT
            END:VCAR
        
4.2.3. Decreed VCARs
4.2.3. 法定录像机

A CS MAY choose to implement and allow persistent immutable VCARs that may be configured by the CS administrator. A reply from the CS may dynamically create "VCAR" components that are decreed depending on the implementation. To the CUA, any "VCAR" component with the "DECREED" property set to "TRUE" cannot be changed by the currently authenticated UPN, and, depending on the implementation and other "VCAR" components, might not be able to be changed by any UPN using CAP (never when the CUA gets a "DECREED:TRUE" VCAR).

CS可以选择实施并允许由CS管理员配置的持久不可变VCAR。CS的回复可能会动态创建“VCAR”组件,这些组件取决于实现。对于CUA,当前已验证的UPN无法更改任何“Decreated”属性设置为“TRUE”的“VCAR”组件,并且,根据实现和其他“VCAR”组件的不同,可能无法由任何使用CAP的UPN更改(当CUA获得“Decreated:TRUE”VCAR时,决不能更改)。

When a user attempts to modify or override a decreed "VCAR" component rules, an error will be returned indicating that the user has insufficient authorization to perform the operation. The reply to the CUA MUST be the same as if a non-decreed VCAR caused the failure.

当用户试图修改或覆盖已颁布的“VCAR”组件规则时,将返回一个错误,表明用户没有足够的权限执行该操作。对CUA的回复必须与导致故障的非法定VCAR相同。

The CAP protocol does not define the semantics used to initially create a decreed VCAR. This administrative task is outside the scope of the CAP protocol.

CAP协议没有定义最初用于创建已颁布VCAR的语义。此管理任务不在CAP协议的范围内。

For example, an implementation or a CS administrator may wish to define a VCAR that will always allow the calendar owners to have full access to their own calendars.

例如,一个实现或CS管理员可能希望定义一个VCAR,该VCAR将始终允许日历所有者完全访问他们自己的日历。

Decreed "VCAR" components MUST be readable by the calendar owner in standard "VCAR" component format.

日历所有者必须能够以标准“VCAR”组件格式读取已颁布的“VCAR”组件。

4.3. CAP Session Identity
4.3. CAP会话标识

A [BEEP] session has an associated set of authentication credentials, from which is derived a UPN. This UPN is the identity of the CAP session, and is used to determine access rights for the session.

[BEEP]会话具有一组关联的身份验证凭据,从中派生UPN。此UPN是CAP会话的标识,用于确定会话的访问权限。

The CUA may change the identity of a CAP session by calling the "IDENTIFY" command. The CS only permits the operation if the session's authentication credentials are good for the requested identity. The method of checking this permission is implementation-dependent, but it may be thought of as a mapping from authentication credentials to UPNs. The "IDENTIFY" command allows a single set of

CUA可通过调用“标识”命令更改CAP会话的标识。CS仅在会话的身份验证凭据适合请求的身份时才允许操作。检查此权限的方法取决于实现,但可以将其视为从身份验证凭据到UPN的映射。“标识”命令允许一组单独的

authentication credentials to choose from multiple identities, and allows multiple sets of authentication credentials to assume the same identity.

从多个身份中选择身份验证凭据,并允许多组身份验证凭据采用相同的身份。

For anonymous access, the identity of the session is "@". A UPN with a null Username and null Realm is anonymous. A UPN with a null Username but non-null Realm (e.g.,"@example.com") may be used to mean any identity from that Realm. This is useful to grant access rights to all users in a given Realm. A UPN with a non-null Username and null Realm (e.g., "bob@") could be a security risk and MUST NOT be used.

对于匿名访问,会话的标识为“@”。具有空用户名和空域的UPN是匿名的。用户名为空但域为非空的UPN(例如“@example.com”)可用于表示来自该域的任何标识。这对于向给定领域中的所有用户授予访问权限非常有用。具有非空用户名和空域(例如,“bob@”)的UPN可能存在安全风险,因此不得使用。

Because the UPN includes Realm information, it may be used to govern calendar store access rights across Realms. However, governing access rights across Realms is only useful if login access is available. This could be done through a trusted server relationship or a temporary account. Note that trusted server relationships are outside the scope of CAP.

因为UPN包含领域信息,所以它可以用来管理跨领域的日历存储访问权限。然而,只有在登录访问可用时,跨领域管理访问权限才有用。这可以通过受信任的服务器关系或临时帐户来完成。请注意,受信任的服务器关系不在CAP的范围内。

The "IDENTIFY" command also provides for a weak group implementation. By allowing multiple sets of authentication credentials belonging to different users to identify as the same UPN, that UPN essentially identifies a group of people, and may be used for group calendar ownership, or the granting of access rights to a group.

“IDENTIFY”命令还提供了弱组实现。通过允许属于不同用户的多组身份验证凭据标识为相同的UPN,该UPN基本上标识了一组人,并且可用于组日历所有权或向组授予访问权限。

5. CAP URL and Calendar Address
5. CAP URL和日历地址

The CAP URL scheme is used to designate both calendar stores and calendars accessible using the CAP protocol.

CAP URL方案用于指定日历存储和可使用CAP协议访问的日历。

The CAP URL scheme conforms to the generic URL syntax defined in RFC 2396 and follows the Guidelines for URL Schemes set forth in RFC 2718.

CAP URL方案符合RFC 2396中定义的通用URL语法,并遵循RFC 2718中规定的URL方案指南。

A CAP URL begins with the protocol prefix "cap" and is defined by the following grammar.

CAP URL以协议前缀“CAP”开头,由以下语法定义。

      capurl   = "cap://" csidpart [ "/" relcalid ]
                      ;
      csidpart = hostport   ; As defined in Section 3.2.2 of RFC 2396
                            ;
      relcalid = *uric      ; As defined in Section 2 of RFC 2396
        
      capurl   = "cap://" csidpart [ "/" relcalid ]
                      ;
      csidpart = hostport   ; As defined in Section 3.2.2 of RFC 2396
                            ;
      relcalid = *uric      ; As defined in Section 2 of RFC 2396
        

A 'relcalid' is an identifier that uniquely identifies a calendar on a particular calendar store. There is no implied structure in a Relative CALID (relcalid). It may refer to the calendar of a user or of a resource such as a conference room. It MUST be unique within the calendar store.

“重新校准”是唯一标识特定日历存储上日历的标识符。相对CALID(relcalid)中没有隐含的结构。它可以指用户或资源(如会议室)的日历。它在日历存储中必须是唯一的。

Here are some examples:

以下是一些例子:

      cap://cal.example.com
      cap://cal.example.com/Company/Holidays
      cap://cal.example.com/abcd1234Usr
        
      cap://cal.example.com
      cap://cal.example.com/Company/Holidays
      cap://cal.example.com/abcd1234Usr
        

A 'relcalid' is permitted and is resolved according to the rules defined in Section 5 of RFC 2396.

允许“重新校准”,并根据RFC 2396第5节中定义的规则进行解决。

Examples of valid relative CAP URLs:

有效的相对CAP URL示例:

opqaueXzz123String UserName/Personal

OPQUEXZ123String用户名/个人

Calendar addresses can be described as qualified or relative CAP URLs.

日历地址可以描述为限定的或相对的CAP URL。

For a user currently authenticated to the CS on cal.example.com, these two example calendar addresses refer to the same calendar:

对于当前通过cal.example.com上CS认证的用户,这两个示例日历地址指的是同一个日历:

      cap://cal.example.com/abcd1234USR
      abcd1234USR
        
      cap://cal.example.com/abcd1234USR
      abcd1234USR
        
6. New Value Types
6. 新的值类型

The following sections contains new components, properties, parameters, and value definitions.

以下部分包含新组件、特性、参数和值定义。

The purpose of these is to extend the iCalendar objects in a compatible way so that existing iCalendar "VERSION" property "2.0" value parsers can still parse the objects without modification.

其目的是以兼容的方式扩展iCalendar对象,以便现有的iCalendar“VERSION”属性“2.0”值解析器仍然可以在不进行修改的情况下解析对象。

6.1. Property Value Data Types
6.1. 属性值数据类型
6.1.1. CAL-QUERY Value Type
6.1.1. CAL查询值类型

Subject: Registration of text/calendar MIME value type CAL-QUERY

主题:文本/日历MIME值类型CAL-QUERY的注册

Value Name: CAL-QUERY

值名称:CAL-QUERY

Value Type Purpose: This value type is used to identify values and contains query statements targeted at locating those values. This is based on [SQL92] and [SQLCOM].

值类型用途:此值类型用于标识值,并包含用于定位这些值的查询语句。这是基于[SQL92]和[SQLCOM]。

1. For the purpose of a query, all components should be handled as tables, and the properties of those components should be handled as columns.

1. 对于查询,所有组件都应作为表处理,这些组件的属性应作为列处理。

2. All VAGENDAs and CSs look like tables for the purpose of a QUERY, and all of their properties look like columns in those tables.

2. 出于查询的目的,所有VAGENDAs和CSs看起来都像表,它们的所有属性都像这些表中的列。

3. You MUST NOT do any cross-component-type joins. That means you can ONLY have one component OR one "VAGENDA" component OR one "VCALSTORE" component in the "FROM" clause.

3. 不得进行任何跨构件类型联接。这意味着在“FROM”子句中只能有一个组件或一个“VAGENDA”组件或一个“VCALSTORE”组件。

4. Everything in the "SELECT" clause and "WHERE" clauses MUST be from the same component type or "VAGENDA" component OR "VCALSTORE" component in the "FROM" clause.

4. “SELECT”子句和“WHERE”子句中的所有内容都必须来自相同的组件类型或“from”子句中的“VAGENDA”组件或“VCALSTORE”组件。

5. When multiple "QUERY" properties are supplied in a single "VQUERY" component, the results returned are the same as the results returned for multiple "VQUERY" components that each have a single "QUERY" property.

5. 当在单个“VQUERY”组件中提供多个“QUERY”属性时,返回的结果与多个“VQUERY”组件(每个组件都有一个“QUERY”属性)返回的结果相同。

6. The '.' is used to separate the table name (component) and column name (property or component) when selecting a property that is contained inside a component that is targeted in the TARGET property.

6. “.”用于在选择包含在目标属性中目标组件内的属性时分隔表名(组件)和列名(属性或组件)。

7. A contained component without a '.' is not the same as "component-name.*". If given as "component-name" (no dot), the encapsulating BEGIN/END statement will be supplied for "component-name".

7. 不带“.”的包含组件与“组件名称。*”不同。如果给定为“组件名称”(无点),则将为“组件名称”提供封装的BEGIN/END语句。

In the following example, '.' is used to separate the "TRIGGER" property from its contained component (VALARM), which is contained in any "VEVENT" component in the selected "TARGET" property value (a relcalid). All "TRIGGER" properties in any "VEVENT" component in relcalid would be returned.

在下面的示例中,'.'用于将“触发器”属性与其包含的组件(VALARM)分离,VALARM包含在所选“目标”属性值(重新校准ID)的任何“VEVENT”组件中。将返回relcalid中任何“VEVENT”组件中的所有“TRIGGER”属性。

TARGET:relcalid QUERY:SELECT VALARM.TRIGGER FROM VEVENT SELECT VALARM FROM VEVENT WHERE UID = "123"

目标:重新校准查询:从VEVENT选择VALARM.TRIGGER从VEVENT选择VALARM,其中UID=“123”

This returns one BEGIN/END "VALARM" component for each "VALARM" component in the matching "VEVENT" component. As there is no '.' (dot) in the VALARM after the SELECT above, it returns:

This returns one BEGIN/END "VALARM" component for each "VALARM" component in the matching "VEVENT" component. As there is no '.' (dot) in the VALARM after the SELECT above, it returns:translate error, please retry

BEGIN:VALARM TRIGGER;RELATED=END:PT5M REPEAT:4 ... END:VALARM BEGIN:VALARM TRIGGER;RELATED=START:PT5M DURATION:PT10M ... END:VALARM ... ...

开始:VALARM触发器;相关=结束:PT5M重复:4。。。结束:VALARM开始:VALARM触发器;相关=开始:PT5M持续时间:PT10M。。。完:瓦勒姆。。。

If the SELECT parameter is provided as "component-name.*", then only the properties and any contained components will be returned. The example:

如果SELECT参数作为“component name.*”提供,则仅返回属性和任何包含的组件。例如:

SELECT VALARM.* FROM VEVENT WHERE UID = "123"

从VEVENT中选择VALARM.*其中UID=“123”

will return all of the properties in each "VALARM" component in the matching "VEVENT" component:

将返回匹配的“VEVENT”组件中每个“VALARM”组件中的所有属性:

TRIGGER;RELATED=END:PT5M REPEAT:4 ... TRIGGER;RELATED=START:PT5M DURATION:PT10M ... ...

触发相关=结束:PT5M重复:4。。。触发相关=开始:PT5M持续时间:PT10M。。。

In the following SELECT clauses:

在以下SELECT子句中:

(a) SELECT <a-property-name> FROM VEVENT

(a) 从VEVENT中选择<a-property-name>

(b) SELECT VALARM FROM VEVENT

(b) 从VEVENT中选择VALARM

(c) SELECT VALARM.* FROM VEVENT

(c) 从VEVENT中选择VALARM.*

(d) SELECT * FROM VEVENT

(d) 从VEVENT中选择*

(e) SELECT * FROM VEVENT WHERE VALARM.TRIGGER < '20020201T000000Z' AND VALARM.TRIGGER > '20020101T000000Z'

(e) 从VEVENT中选择*,其中VALARM.TRIGGER<'20020201T000000Z'和VALARM.TRIGGER>'20020101T000000Z'

Clause (a) elects all instances of <a-property-name> from all "VEVENT" components.

第(a)条从所有“VEVENT”组件中选择<a-property-name>的所有实例。

Clauses (b) and (c) select all "VALARM" components from all "VEVENT" components. (b) would return them in BEGIN/END VALARM tags. (c) would return all of the properties without BEGIN/END VALARM tags.

第(b)和(c)条从所有“VEVENT”组件中选择所有“VALARM”组件。(b) 将以开始/结束VALARM标记返回它们。(c) 将返回所有不带开始/结束VALARM标记的属性。

Clause (d) selects every property and every component that is in any "VEVENT" component, with each "VEVENT" component wrapped in a BEGIN/END VEVENT tags.

第(d)条选择任何“VEVENT”组件中的每个属性和每个组件,每个“VEVENT”组件包装在开始/结束VEVENT标记中。

Clause (e) selects all properties and all contained components in all "VEVENT" components that have a "VALARM" component with a "TRIGGER" property value between the provided dates and times, with each "VEVENT" component wrapped in BEGIN/END VEVENT tags.

第(e)条选择所有“VEVENT”组件中的所有属性和所有包含的组件,这些“VEVENT”组件在提供的日期和时间之间具有“触发器”属性值,每个“VEVENT”组件包装在开始/结束VEVEVENT标记中。

Here are two invalid SELECT clauses:

以下是两个无效的SELECT子句:

(f) SELECT VEVENT.VALARM.TRIGGER FROM VEVENT

(f) 从VEVENT中选择VEVENT.VALARM.TRIGGER

(g) SELECT DTSTART,UID FROM VEVENT WHERE VTODO.SUMMERY = "Fix typo in CAP"

(g) 从VEVENT中选择DTSTART,UID,其中VTODO.summy=“修复CAP中的打字错误”

Clause (f) is invalid because it contains two '.' characters.

子句(f)无效,因为它包含两个“.”字符。

Clause (g) Is invalid because it mixes VEVENT and VTODO properties in the same VQUERY.

子句(g)无效,因为它在同一个VQUERY中混合了VEVENT和VTODO属性。

Formal Definition: The value type is defined by the following notation:

形式定义:值类型由以下符号定义:

cal-query = "SELECT" SP cap-val SP "FROM" SP comp-name SP "WHERE" SP cap-expr

cal query=“从“SP comp name SP”中选择“SP cap val SP”,其中“SP cap expr”

/ "SELECT" SP cap-cols SP "FROM" SP comp-name ; cap-val = cap-cols / param / ( cap-val "," cap-val )

/从“SP组件名称”中选择“SP cap cols SP”;cap val=cap cols/参数/(cap val,cap val)

                  ; NOTE: there is NO space around the "," on
                  ; the next line
     cap-cols   = cap-col / ( cap-cols "," cap-col)
                  / "*"
                  / "*.*" ; only valid when the target is a "VAGENDA"
                  ;
                  ; A 'cap-col' is:
                  ;
                  ; Any property name ('cap-prop') found in the
                  ; component named in the 'comp-name' used in the
        
                  ; NOTE: there is NO space around the "," on
                  ; the next line
     cap-cols   = cap-col / ( cap-cols "," cap-col)
                  / "*"
                  / "*.*" ; only valid when the target is a "VAGENDA"
                  ;
                  ; A 'cap-col' is:
                  ;
                  ; Any property name ('cap-prop') found in the
                  ; component named in the 'comp-name' used in the
        
                  ; "FROM" clause.
                  ;
                  ;   SELECT ORGANIZER FROM VEVENT ...
                  ;
                  ; OR
                  ;
                  ; A component name ('comp-name') of an existing
                  ; component contained inside of the 'comp-name'
                  ; used in the "FROM" clause.
                  ;
                  ;   SELECT VALARM FROM VEVENT ...
                  ;
                  ; OR
                  ;
                  ; A component name ('comp-name') of an existing
                  ; component contained inside of the 'comp-name' used
                  ; in the "FROM" clause followed by a property
                  ; name ('cap-prop') to be selected from that
                  ; component.
                  ; (comp-name "." cap-prop)
        
                  ; "FROM" clause.
                  ;
                  ;   SELECT ORGANIZER FROM VEVENT ...
                  ;
                  ; OR
                  ;
                  ; A component name ('comp-name') of an existing
                  ; component contained inside of the 'comp-name'
                  ; used in the "FROM" clause.
                  ;
                  ;   SELECT VALARM FROM VEVENT ...
                  ;
                  ; OR
                  ;
                  ; A component name ('comp-name') of an existing
                  ; component contained inside of the 'comp-name' used
                  ; in the "FROM" clause followed by a property
                  ; name ('cap-prop') to be selected from that
                  ; component.
                  ; (comp-name "." cap-prop)
        

; SELECT VALARM.TRIGGER FROM VEVENT ...

; 从VEVENT中选择VALARM.TRIGGER。。。

cap-col = comp-name / comp-name "." cap-prop / cap-prop

cap col=comp name/comp name.“cap prop/cap prop”

     comp-name  = "VEVENT"  / "VTODO"     / "VJOURNAL" / "VFREEBUSY"
                / "VALARM"  / "DAYLIGHT"  / "STANDARD" / "VAGENDA"
                / "VCAR"    / "VCALSTORE" / "VQUERY"   / "VTIMEZONE"
                / "VRIGHT"  / x-comp    / iana-comp
        
     comp-name  = "VEVENT"  / "VTODO"     / "VJOURNAL" / "VFREEBUSY"
                / "VALARM"  / "DAYLIGHT"  / "STANDARD" / "VAGENDA"
                / "VCAR"    / "VCALSTORE" / "VQUERY"   / "VTIMEZONE"
                / "VRIGHT"  / x-comp    / iana-comp
        

cap-prop = ; A property that may be in the 'cap-comp' named ; in the "SELECT" clause.

cap prop=;可能在指定的“cap comp”中的财产;在“SELECT”子句中。

cap-expr = "(" cap-expr ")" / cap-term

cap expr=“(“cap expr”)”/cap术语

cap-term = cap-expr SP cap-logical SP cap-expr / cap-factor

cap term=cap expr SP cap逻辑SP cap expr/cap因子

     cap-logical= "AND" / "OR"
        
     cap-logical= "AND" / "OR"
        
     cap-factor = cap-colval SP cap-oper SP col-value
                / cap-colval SP "LIKE" SP col-value
                / cap-colval SP "NOT LIKE" SP col-value
                / cap-colval SP "IS NULL"
                / cap-colval SP "IS NOT NULL"
        
     cap-factor = cap-colval SP cap-oper SP col-value
                / cap-colval SP "LIKE" SP col-value
                / cap-colval SP "NOT LIKE" SP col-value
                / cap-colval SP "IS NULL"
                / cap-colval SP "IS NOT NULL"
        
                / col-value SP "IN" cap-colval
                / col-value SP "NOT IN" cap-colval
                / "STATE()" "=" ( "BOOKED"
                                 / "UNPROCESSED"
                                 / "DELETED"
                                 / iana-state
                                 / x-state )
                  ;
     iana-state = ; Any state registered by IANA directly or
                  ; included in an RFC that may be applied to
                  ; the component and within the rules published.
                  ;
     x-state    = ; Any experimental state that starts with
                  ; "x-" or "X-".
        
                / col-value SP "IN" cap-colval
                / col-value SP "NOT IN" cap-colval
                / "STATE()" "=" ( "BOOKED"
                                 / "UNPROCESSED"
                                 / "DELETED"
                                 / iana-state
                                 / x-state )
                  ;
     iana-state = ; Any state registered by IANA directly or
                  ; included in an RFC that may be applied to
                  ; the component and within the rules published.
                  ;
     x-state    = ; Any experimental state that starts with
                  ; "x-" or "X-".
        
     cap-colval = cap-col /  param
                  ;
     param      = "PARAM(" cap-col "," cap-param ")"
                  ;
     cap-param  = ; Any parameter that may be contained in the cap-col
                  ; in the supplied PARAM() function
        
     cap-colval = cap-col /  param
                  ;
     param      = "PARAM(" cap-col "," cap-param ")"
                  ;
     cap-param  = ; Any parameter that may be contained in the cap-col
                  ; in the supplied PARAM() function
        
     col-value  = col-literal
                / "SELF()"
                / "CAL-OWNERS()"
                / "CAL-OWNERS(" cal-address ")"
                / "CURRENT-TARGET()"
                   ;
     cal-address = ; A CALID as define by CAP
                   ;
     col-literal = "'" literal-data "'"
                   ;
     literal-data = ; Any data that matches the value type of the
                   ; column that is being compared.  That is, you
                   ; cannot compare PRIORITY to "some string" because
                   ; PRIORITY has a value type of integer.  If it is
                   ; not preceded by the LIKE element, any '%' and '_'
                   ; characters in the literal data are not treated as
                   ; wildcard characters and do not have to be
                   ; backslash-escaped.
                   ;
                   ; OR
                   ;
                   ; If the literal-data is preceded by the LIKE
                   ; element it may also contain the '%' and '_'
                   ; wildcard characters.  And, if the literal data
                   ; that is comparing contains any '%' or '_'
                   ; characters, they MUST be backslash-escaped as
        
     col-value  = col-literal
                / "SELF()"
                / "CAL-OWNERS()"
                / "CAL-OWNERS(" cal-address ")"
                / "CURRENT-TARGET()"
                   ;
     cal-address = ; A CALID as define by CAP
                   ;
     col-literal = "'" literal-data "'"
                   ;
     literal-data = ; Any data that matches the value type of the
                   ; column that is being compared.  That is, you
                   ; cannot compare PRIORITY to "some string" because
                   ; PRIORITY has a value type of integer.  If it is
                   ; not preceded by the LIKE element, any '%' and '_'
                   ; characters in the literal data are not treated as
                   ; wildcard characters and do not have to be
                   ; backslash-escaped.
                   ;
                   ; OR
                   ;
                   ; If the literal-data is preceded by the LIKE
                   ; element it may also contain the '%' and '_'
                   ; wildcard characters.  And, if the literal data
                   ; that is comparing contains any '%' or '_'
                   ; characters, they MUST be backslash-escaped as
        
                   ; described in the notes below, in order for them
                   ; not to be treated as wildcard characters.
                   ;
                   ; And, if the literal data contains any characters
                   ; that would have to be backslash-escaped if
                   ; a property or parameter value, then they must
                   ; be backslash-escaped in the literal-data.
                   ; Also, the quote character (') must be backslash
                   ; escaped.  Example:
                   ;
                   ; ... WHERE SUBJECT = 'It\'s time to ski'
                   ;
     cap-oper    = "="
                 / "!="
                 / "<"
                 / ">"
                 / "<="
                 / ">="
                   ;
     SP          = ; A single white space ASCII character
                   ; (value in HEX %x20).
                   ;
     x-comp      = ; As defined in [iCAL] section 4.6.
                   ;
     iana-comp   = ; As defined in [iCAL] section 4.6.
        
                   ; described in the notes below, in order for them
                   ; not to be treated as wildcard characters.
                   ;
                   ; And, if the literal data contains any characters
                   ; that would have to be backslash-escaped if
                   ; a property or parameter value, then they must
                   ; be backslash-escaped in the literal-data.
                   ; Also, the quote character (') must be backslash
                   ; escaped.  Example:
                   ;
                   ; ... WHERE SUBJECT = 'It\'s time to ski'
                   ;
     cap-oper    = "="
                 / "!="
                 / "<"
                 / ">"
                 / "<="
                 / ">="
                   ;
     SP          = ; A single white space ASCII character
                   ; (value in HEX %x20).
                   ;
     x-comp      = ; As defined in [iCAL] section 4.6.
                   ;
     iana-comp   = ; As defined in [iCAL] section 4.6.
        
6.1.1.1. [NOT] CAL-OWNERS()
6.1.1.1. [非]CAL-OWNERS()

This function returns the list of "OWNER" properties for the named calendar when used in the "SELECT" clause.

当在“SELECT”子句中使用时,此函数返回命名日历的“所有者”属性列表。

If called as 'CAL-OWNERS()', it is equivalent to the comma-separated list of all of the owners of the calendar that match the provided "TARGET" property value. If the target is a "VCALSTORE", it returns the "CALMASTER" property.

如果称为“CAL-OWNERS()”,则它相当于与提供的“TARGET”属性值匹配的日历的所有所有者的逗号分隔列表。如果目标是“VCALSTORE”,则返回“CALMASTER”属性。

If called as 'CAL-OWNERS(cal-address)', then it is the equivalent to the comma-separated list of owners for the named calendar id. If 'cal-address' is a CS, it returns the "CALMASTER" property.

如果称为“CAL-OWNERS(CAL address)”,则它相当于命名日历id的以逗号分隔的所有者列表。如果“CAL address”是CS,则它返回“CALMASTER”属性。

If used in the "WHERE" clause, it returns true if the currently authenticated UPN is an owner of the currently selected object matched in the provided "TARGET" property. Used in a CAL-QUERY "WHERE" clause and in the UPN-FILTER.

如果在“WHERE”子句中使用,则如果当前经过身份验证的UPN是在提供的“TARGET”属性中匹配的当前选定对象的所有者,则返回true。在CAL-QUERY“WHERE”子句和UPN-FILTER中使用。

6.1.1.2. CURRENT-TARGET()
6.1.1.2. 当前目标()

This is equivalent to the value of the "TARGET" property in the current command. It is used in a CAL-QUERY "WHERE" clause.

这相当于当前命令中“TARGET”属性的值。它用于CAL-QUERY“WHERE”子句中。

6.1.1.3. PARAM()
6.1.1.3. PARAM()

This is used in a CAL-QUERY. It returns or tests for the value of the named parameter from the named property.

这在CAL查询中使用。它从命名属性返回或测试命名参数的值。

6.1.1.3.1. PARAM() in SELECT
6.1.1.3.1. 选择中的PARAM()

When used in a "SELECT" clause, it returns the entire property and all of that property's parameters; the result is not limited to the supplied parameter. If the property does not contain the named parameter, then the property is not returned. However, it could be returned as a result of another "SELECT" clause value. If multiple properties of the supplied name have the named parameter, all properties with that named parameter are returned. If multiple PARAM() clauses in a single "SELECT" CLAUSE match the same property, then the single matching property is returned only once.

在“SELECT”子句中使用时,它返回整个属性和该属性的所有参数;结果不限于提供的参数。如果该属性不包含命名参数,则不会返回该属性。但是,它可以作为另一个“SELECT”子句值的结果返回。如果所提供名称的多个属性具有命名参数,则返回具有该命名参数的所有属性。如果单个“SELECT”子句中的多个PARAM()子句与同一属性匹配,则仅返回一次单个匹配属性。

Also, note that many parameters have default values defined in [iCAL] that must be treated as existing with their default value in the properties, as defined in [iCAL], even when not explicitly present. For example, if a query were performed with PARAM(ATTENDEE,ROLE) then ALL "ATTENDEE" properties would match because, even when they do not explicitly contain the "ROLE" parameter, it has a default value and therefore must match.

此外,请注意,许多参数都有[iCAL]中定义的默认值,这些默认值必须与[iCAL]中定义的属性中的默认值一起视为存在,即使这些默认值没有显式存在。例如,如果使用PARAM(ATTENDEE,ROLE)执行查询,则所有“ATTENDEE”属性都将匹配,因为即使它们不显式包含“ROLE”参数,它也有一个默认值,因此必须匹配。

Therefore, when PARAM() is used in a "SELECT" clause, it is more accurate to say that it means return the property, if it contains the named parameter explicitly in the property or simply because the parameter has a default for that property.

因此,在“SELECT”子句中使用PARAM()时,如果它在属性中显式包含命名参数,或者仅仅因为该参数具有该属性的默认值,则更准确地说它意味着返回属性。

6.1.1.3.2. PARAM() in WHERE
6.1.1.3.2. 参数()在何处

When PARAM() is used in the "WHERE" clause, a match is true when the parameter value matches the compare clause (according to the supplied WHERE values). If multiple named properties contain the named parameter, then each parameter value is compared in turn to the condition; if any match, the results would be true for that condition the same as if only one had existed. Each matching property or component is returned only once.

在“WHERE”子句中使用PARAM()时,如果参数值与compare子句匹配(根据提供的WHERE值),则匹配为true。如果多个命名属性包含命名参数,则依次将每个参数值与条件进行比较;如果有任何匹配,则该条件下的结果将为真,就像只有一个匹配一样。每个匹配的属性或组件只返回一次。

Because a parameter may be multi-valued, the comparison might need to be done with an "IN" or "NOT IN" comparator.

由于参数可能是多值的,因此可能需要使用“IN”或“NOT IN”比较器进行比较。

Given the following query:

给出以下查询:

      ATTENDEE;PARTSTAT=ACCEPTED:cap://host.com/joe
        
      ATTENDEE;PARTSTAT=ACCEPTED:cap://host.com/joe
        

SELECT VEVENT FROM VAGENDA WHERE PARAM(ATTENDEE,PARTSTAT) = 'ACCEPTED'

从VAGENDA中选择VEVENT,其中参数(与会者,PARTSTAT)=“已接受”

Thus, all "VEVENT" components that contain one or more "ATTENDEE" properties that have a "PARTSTAT" parameter with a "ACCEPTED" value would be returned. Also, each uniquely matching VEVENT would be returned only once, no matter how many "ATTENDEE" properties had matching roles, in each unique "VEVENT" component.

因此,将返回包含一个或多个“ATTENDEE”属性的所有“VEVENT”组件,这些属性具有带有“ACCEPTED”值的“PARTSTAT”参数。此外,在每个唯一的“VEVENT”组件中,无论有多少“ATTENDEE”属性具有匹配的角色,每个唯一匹配的VEVENT都只返回一次。

Also note that many parameters have default values defined in [iCAL]. Therefore, if the following query were performed on the "ATTENDEE" property in the above example:

还要注意,许多参数都有[iCAL]中定义的默认值。因此,如果在上述示例中对“ATTENDEE”属性执行以下查询:

SELECT VEVENT FROM VAGENDA WHERE PARAM(ATTENDEE,ROLE) = 'REQ-PARTICIPANT'

从VAGENDA中选择VEVENT,其中参数(与会者、角色)=“REQ-PARTIMENT”

It would return the "ATTENDEE" property shown above because the default value for the "ROLE" parameter is "REQ-PARTICIPANT".

它将返回上面显示的“ATTENDEE”属性,因为“ROLE”参数的默认值是“REQ-PARTICIPANT”。

6.1.1.4. SELF()
6.1.1.4. SELF()

Used in a CAL-QUERY "WHERE" clause. Returns the UPN of the currently authenticated UPN or their current UPN as a result of an IDENTIFY command.

用于CAL-QUERY“WHERE”子句。返回当前经过身份验证的UPN的UPN或其当前UPN的UPN,作为标识命令的结果。

6.1.1.5. STATE()
6.1.1.5. 国家()

Returns one of three values, "BOOKED", "UNPROCESSED", or "DELETED" depending on the state of the object. "DELETED" is a component in the marked-for-delete state. Components that have been removed from the store are never returned.

根据对象的状态返回三个值中的一个,“已预订”、“未处理”或“已删除”。“已删除”是处于标记为删除状态的组件。从存储区中移除的组件永远不会返回。

If not specified in a query then both "BOOKED" and "UNPROCESSED" data is returned. Each unique "METHOD" property must be in a separate MIME object, per the [iCAL] section 3.2 restriction.

如果查询中未指定,则返回“已预订”和“未处理”数据。根据[iCAL]第3.2节的限制,每个唯一的“方法”属性必须位于单独的MIME对象中。

6.1.1.6. Use of Single Quote
6.1.1.6. 单引号的使用

All literal values are surrounded by single quotes ('), not double quotes ("), and not without any quotes. If the value contains quotes or any other ESCAPED-CHAR, they MUST be backslash-escaped as described in section 4.3.11 "Text" of [iCAL]. Any "LIKE" clause wildcard characters that are part of any literal data that is preceded by a "LIKE" clause or "NOT LIKE" clause and is not intended

所有文字值均由单引号(')、而非双引号(“)包围,且不包含任何引号。如果该值包含引号或任何其他转义字符,则必须按照[iCAL]第4.3.11节“Text”中的说明对其进行反斜杠转义。任何“LIKE”子句通配符都是前面带有“LIKE”的文字数据的一部分“条款”或“不相似”条款,且并非有意

to mean wildcard search MUST be escaped as described in note (7) below.

这意味着必须按照下面注释(7)中的说明转义通配符搜索。

6.1.1.7. Comparing DATE and DATE-TIME Values
6.1.1.7. 比较日期和日期时间值

When comparing "DATE-TIME" values to "DATE" values and when comparing "DATE" values to "DATE-TIME" values, the result will be true if the "DATE" value is on the same day as the "DATE-TIME" value. They are compared in UTC no matter what time zone the data may have been stored in.

将“日期-时间”值与“日期”值进行比较以及将“日期”值与“日期-时间”值进行比较时,如果“日期”值与“日期-时间”值在同一天,则结果为真。无论数据存储在哪个时区,都会以UTC进行比较。

Local time event, as described in section 4.2.19 of [iCAL], must be considered to be in the CUA default timezone that was supplied by the CUA in the "CAPABILITY" exchange.

如[iCAL]第4.2.19节所述,本地时间事件必须被视为位于CUA在“能力”交换中提供的CUA默认时区内。

VALUE-1 VALUE-2 Compare Results

值-1值-2比较结果

20020304 20020304T123456 TRUE (in UTC-3) (in UTC-3)

20020304 20020304T123456正确(UTC-3)(UTC-3)

20020304 20020304T003456 FALSE (in UTC) (in UTC-4)

20020304 20020304T003456假(UTC)(UTC-4)

20020304T003456Z 20020205T003456 FALSE (in UTC-0) (in UTC-7)

20020304T003456Z 20020205T003456假(UTC-0)(UTC-7)

When "DATE" values and "DATE-TIME" values are compared with the "LIKE" clause, the comparison will be done as if the value is a [iCAL] DATE or DATE-TIME string value.

当“DATE”值和“DATE-TIME”值与“LIKE”子句进行比较时,比较将如同该值是[iCAL]日期或日期-时间字符串值一样进行。

LIKE '2002%' will match anything in the year 2002.

比如“2002%”将与2002年的任何情况相匹配。

LIKE '200201%' will match anything in January 2002.

比如“200201%”将匹配2002年1月的任何数据。

LIKE '%T000000' will match anything at midnight.

例如“%T000000”将匹配午夜的任何内容。

      LIKE '____01__T%' will match anything for any year or
                    time that is in January.
                    (Four '_', '01', two '_' 'T%').
        
      LIKE '____01__T%' will match anything for any year or
                    time that is in January.
                    (Four '_', '01', two '_' 'T%').
        

Using a "LIKE" clause value of "%00%", would return any value that contained two consecutive zeros.

使用“LIKE”子句值“%00%”,将返回包含两个连续零的任何值。

All comparisons will be done in UTC.

所有比较都将以UTC进行。

6.1.1.8. DTEND and DURATION
6.1.1.8. 数据结束和持续时间

The "DTEND" property value is not included in the time occupied by the component. That is, a "DTEND" property value of 20030614T12000 includes all of the time up to, but not including, noon on that day.

“DTEND”属性值不包括在组件占用的时间中。也就是说,20030614T12000的“DTEND”财产价值包括截至(但不包括)当天中午的所有时间。

The "DURATION" property value end time is also not inclusive. So an object with a "DTSTART" property value of 20030514T110000 and a "DURATION" property value of "1H" does not include noon on that day.

“DURATION”属性值end time也不包括在内。因此,“DTSTART”属性值为20030514T110000,“DURATION”属性值为“1H”的对象不包括当天的中午。

When a "QUERY" property value contains a "DTEND" value, then the CS MUST also evaluate any existing "DURATION" property value and determine if it has an effective end time that matches the "QUERY" property supplied "DTEND" value or any range of values supplied by the "QUERY" property.

当“查询”属性值包含“DTEND”值时,CS还必须评估任何现有的“持续时间”属性值,并确定其有效结束时间是否与“查询”属性提供的“DTEND”值或“查询”属性提供的任何值范围相匹配。

When a "QUERY" property contains a "DURATION" value, then the CS MUST also evaluate any existing "DTEND" property values and determine if they have an effective duration that matches the value, or any range of values, supplied by the "QUERY" property.

当“查询”属性包含“持续时间”值时,CS还必须评估任何现有的“DTEND”属性值,并确定它们是否具有与“查询”属性提供的值或任何值范围相匹配的有效持续时间。

6.1.1.9. [NOT] LIKE
6.1.1.9. [不]像

The pattern matching characters are the '%' that matches zero or more characters, and '_' that matches exactly one character (where character does not always mean octet).

模式匹配字符是匹配零个或多个字符的“%”,以及恰好匹配一个字符的“\”(其中字符并不总是表示八位字节)。

"LIKE" clause pattern matches always cover the entire string. To match a pattern anywhere within a string, the pattern must start and end with a percent sign.

“LIKE”子句模式匹配始终覆盖整个字符串。要在字符串中的任何位置匹配模式,模式必须以百分号开始和结束。

To match a '%' or '_' in the data and not have it interpreted as a wildcard character, they MUST be backslash-escaped. Thus, to search for a '%' or '_' in the string:

要匹配数据中的“%”或“\”,并且不将其解释为通配符,必须对其进行反斜杠转义。因此,要在字符串中搜索“%”或“\”:

LIKE '%\%%' Matches any string with a '%' in it. LIKE '%\_%' Matches any string with a '_' in it.

与“\%%”类似,它匹配任何包含“%”的字符串。与“\\\%”类似,它匹配任何包含“\\\”的字符串。

Strings compared using the "LIKE" clause MUST be performed using case insensitive comparisoison assumes 'a' = 'A').

使用“LIKE”子句比较的字符串必须使用不区分大小写的comparison假设'a'='a')执行。

If the "LIKE" clause is preceded by 'NOT' then there is a match when the string compare fails.

如果“LIKE”子句前面有“NOT”,则字符串比较失败时存在匹配项。

Some property values (such as the 'recur' value type), contain commas and are not multi-valued. The CS must understand the objects being compared and understand how to determine how any multi-valued or multi-instances properties or parameter values are separated, quoted,

某些属性值(例如“recur”值类型)包含逗号,并且不是多值的。CS必须了解所比较的对象,并了解如何确定任何多值或多实例属性或参数值的分隔、引用方式,

and backslash-escaped. THE CS must perform the comparisons as if each value existed by itself and was not quoted or backslash-escaped, when comparing using the LIKE element.

反斜杠漏掉了。当使用LIKE元素进行比较时,CS必须执行比较,就好像每个值本身存在一样,并且没有被引用或反斜杠转义。

See related examples in Section 6.1.1.11.

参见第6.1.1.11节中的相关示例。

6.1.1.10. Empty vs. NULL
6.1.1.10. 空与空

When used in a CAL-QUERY value, "NULL" means that the property or parameter is not present in the object. Paramaters that are not provided and have a default value in the property are considered to exist with their default value and will not be "NULL".

在CAL查询值中使用时,“NULL”表示对象中不存在属性或参数。未提供且在属性中具有默认值的参数被视为与其默认值一起存在,且不会为“NULL”。

If the property exists but has no value, then "NULL" MUST NOT match.

如果属性存在但没有值,则“NULL”不能匹配。

If the parameter exists but has no value, then "NULL" MUST NOT match.

如果参数存在但没有值,则“NULL”不能匹配。

If the parameter not present and has a default value, then "NULL" MUST NOT match.

如果参数不存在且具有默认值,则“NULL”必须不匹配。

If the property (or parameter) exists but has no value, then it matches the empty string '' (quote quote).

如果属性(或参数)存在但没有值,则它与空字符串“”匹配(引号)。

6.1.1.11. [NOT] IN
6.1.1.11. [不]在

This is similar to the "LIKE" clause, except it does value matching and not string comparison matches.

这类似于“LIKE”子句,只是它进行值匹配,而不是字符串比较匹配。

Some iCalendar objects can be multi-instance and multi-valued. The "IN" clause will return a match if the literal value supplied as part of the "IN" clause is contained in the value of any instance of the named property or parameter, or is in any of the multiple values in the named property or parameter. Unlike the "LIKE" clause, the '%' and '_' matching characters are not used with the "IN" clause and have no special meaning.

某些iCalendar对象可以是多实例和多值对象。如果作为“IN”子句的一部分提供的文字值包含在命名属性或参数的任何实例的值中,或者包含在命名属性或参数的多个值中,则“IN”子句将返回匹配项。与“LIKE”子句不同,匹配字符“%”和“u”不与“IN”子句一起使用,没有特殊含义。

             BEGIN:A-COMPONENT
      (a)      property:value1,value2        One property, two values.
      (b)      property:"value1,value2"      One property, one value.
      (c)      property:parameter=1,2:x      One parameter, two values.
      (d)      property:parameter="1,2",3:y  One parameter, one value.
      (e)      property:parameter=",":z      One parameter, one value.
      (f)      property:x,y,z                One property, three values
             END:A-COMPONENT
        
             BEGIN:A-COMPONENT
      (a)      property:value1,value2        One property, two values.
      (b)      property:"value1,value2"      One property, one value.
      (c)      property:parameter=1,2:x      One parameter, two values.
      (d)      property:parameter="1,2",3:y  One parameter, one value.
      (e)      property:parameter=",":z      One parameter, one value.
      (f)      property:x,y,z                One property, three values
             END:A-COMPONENT
        

In this example:

在本例中:

'value1' IN property would match (a) only. 'value1,value2' IN property would match (b) only. 'value%' IN property would NOT match any. ',' IN property would NOT match any. '%,%' IN property would NOT match any. 'x' IN property would match (f) and (c). '2' IN parameter would match (c) only. '1,2' IN parameter would match (d) only. ',' IN parameter would match (e) only. '%,%' IN parameter would NOT match any.

属性中的“value1”将仅与(a)匹配属性中的“值1,值2”仅与(b)匹配属性中的值%'与任何值都不匹配。“,”IN属性将不匹配任何''%1!'、%'IN属性与任何属性都不匹配。”属性中的x'将匹配(f)和(c)。'参数中的2'仅与(c)匹配。'参数中的1,2'将仅与(d)匹配。“,”IN参数将仅与(e)匹配。“%,%”IN参数将不匹配任何。

property LIKE 'value1%' would match (a) and (b). property LIKE 'value%' would match (a) and (b). property LIKE 'x' would match (f) and (c). parameter LIKE '1%' would match (c) and (d). parameter LIKE '%2%' would match (c) and (d). parameter LIKE ',' would match (e) only.

类似“value1%”的属性将匹配(a)和(b)。像“value%”这样的属性将匹配(a)和(b)。类似于“x”的属性将匹配(f)和(c)。像“1%”这样的参数将匹配(c)和(d)。像“%2%”这样的参数将匹配(c)和(d)。类似“,”的参数将仅匹配(e)。

Some property values (such as the "RECUR" value type), contain commas and are not multi-valued. The CS must understand the objects being compared and understand how to determine how any multi-valued or multi-instance properties or parameter values are separated, quoted, and backslash-escaped and perform the comparisons as if each value existed by itself and not quoted or backslash-escaped when comparing using the IN element.

某些属性值(例如“RECUR”值类型)包含逗号,并且不是多值的。CS必须了解要比较的对象,并了解如何确定任何多值或多实例属性或参数值是如何被分隔、引用和反斜杠转义的,并在使用IN元素进行比较时,将每个值视为自身存在且未引用或反斜杠转义的值来执行比较。

If the "IN" clause is preceded by 'NOT', then there is a match when the value does not exist in the property or parameter value.

如果“IN”子句前面有“NOT”,则当属性或参数值中不存在该值时,存在匹配项。

6.1.1.12. DATE-TIME and TIME Values in a WHERE Clause
6.1.1.12. WHERE子句中的日期时间和时间值

All "DATE-TIME" and "TIME" literal values supplied in a "WHERE" clause MUST be terminated with 'Z'. That means that the CUA MUST supply the values in UTC.

“WHERE”子句中提供的所有“DATE-TIME”和“TIME”文字值必须以“Z”结尾。这意味着CUA必须提供UTC值。

Valid:

有效期:

WHERE alarm.TRIGGER < '20020201T000000Z' AND alarm.TRIGGER > '20020101T000000Z'

其中alarm.TRIGGER<'20020201T000000Z'和alarm.TRIGGER>'20020101T000000Z'

Not valid; it is a syntax error and the CS MUST reject the QUERY:

无效;这是一个语法错误,CS必须拒绝查询:

WHERE alarm.TRIGGER < '20020201T000000' AND alarm.TRIGGER > '20020101T000000'

其中alarm.TRIGGER<'20020201T000000'和alarm.TRIGGER>'20020101T000000'

6.1.1.13. Multiple Contained Components
6.1.1.13. 多个包含的组件

If a query references a component and a component or property contained in the component, any clauses referring to the contained component or property must be evaluated on all of the contained components or properties. If any of the contained components or properties match the query, and the conditions on the containing component are also true, the component matches the query.

如果查询引用组件以及组件中包含的组件或属性,则必须对所有包含的组件或属性求值任何引用包含的组件或属性的子句。如果包含的任何组件或属性与查询匹配,并且包含组件的条件也为true,则该组件与查询匹配。

For example, in the query below, if a BOOKED VEVENT contains multiple VALARMs, and the VALARM.TRIGGER clause is true for any of the VALARMs in the VEVENT, then the UID, SUMMARY, and DESCRIPTION of this VEVENT would be included in the QUERY results.

例如,在下面的查询中,如果预订的VEVENT包含多个VALARM,并且VEVENT中的任何VALARM的VALARM.TRIGGER子句为true,则该VEVENT的UID、摘要和描述将包含在查询结果中。

      BEGIN:VQUERY
      EXPAND:TRUE
      QUERY:SELECT UID,SUMMARY,DESCRIPTION FROM VEVENT
      WHERE VALARM.TRIGGER >= '20000101T030405Z'
      AND VALARM.TRIGGER <= '20001231T235959Z'
      AND STATE() = 'BOOKED'
      END:VQUERY
        
      BEGIN:VQUERY
      EXPAND:TRUE
      QUERY:SELECT UID,SUMMARY,DESCRIPTION FROM VEVENT
      WHERE VALARM.TRIGGER >= '20000101T030405Z'
      AND VALARM.TRIGGER <= '20001231T235959Z'
      AND STATE() = 'BOOKED'
      END:VQUERY
        
6.1.1.14. Example, Query by UID
6.1.1.14. 例如,按UID进行查询

The following example would match the entire content of a "VEVENT" or "VTODO" component with the "UID" property equal to "uid123" , and it would not expand any multiple instances of the component. If the CUA does not know if "uid123" was a "VEVENT", "VTODO", "VJOURNAL", or any other component, then all components that the CUA supports MUST be supplied in a QUERY property. This example assumes the CUA is only interested in "VTODO" and "VEVENT" components.

下面的示例将“VEVENT”或“VTODO”组件的整个内容与“UID”属性等于“uid123”匹配,并且不会扩展该组件的任何多个实例。如果CUA不知道“uid123”是否是“VEVENT”、“VTODO”、“VJOURAL”或任何其他组件,则CUA支持的所有组件都必须在查询属性中提供。本例假设CUA只对“VTODO”和“VEVENT”组件感兴趣。

If the results were empty it could also mean that "uid123" was a property in a component other than a VTODO or VEVENT.

如果结果为空,也可能意味着“uid123”是VTODO或VEVENT以外的组件中的属性。

      BEGIN:VQUERY
      QUERY:SELECT * FROM VTODO WHERE UID = 'uid123'
      QUERY:SELECT * FROM VEVENT WHERE UID = 'uid123'
      END:VQUERY
        
      BEGIN:VQUERY
      QUERY:SELECT * FROM VTODO WHERE UID = 'uid123'
      QUERY:SELECT * FROM VEVENT WHERE UID = 'uid123'
      END:VQUERY
        
6.1.1.15. Query by Date-Time Range
6.1.1.15. 按日期时间范围查询

This query selects the entire content of every booked "VEVENT" component that has an instance greater than or equal to July 1, 2000 00:00:00 UTC and less than or equal to July 30, 2000 23:59:59 UTC. This includes single instance "VEVENT" components that do not explicitly contain any recurrence properties or "RECURRENCE-ID" properties. This works only for CSs that have the "RECUR-

此查询选择每个预订的“VEVENT”组件的全部内容,该组件的实例大于或等于2000年7月1日00:00:00 UTC,小于或等于2000年7月30日23:59:59 UTC。这包括不显式包含任何重复属性或“recurrence-ID”属性的单实例“VEVENT”组件。这只适用于具有“重现”功能的CSs-

EXPAND" property value set to "TRUE" in the "GET-CAPABILITY" exchange.

在“GET-CAPABILITY”交换中将“EXPAND”属性值设置为“TRUE”。

      BEGIN:VQUERY
      EXPAND:TRUE
      QUERY:SELECT * FROM VEVENT
      WHERE RECURRENCE-ID >= '20000701T000000Z'
      AND RECURRENCE-ID <= '20000730T235959Z'
      AND STATE() = 'BOOKED'
      END:VQUERY
        
      BEGIN:VQUERY
      EXPAND:TRUE
      QUERY:SELECT * FROM VEVENT
      WHERE RECURRENCE-ID >= '20000701T000000Z'
      AND RECURRENCE-ID <= '20000730T235959Z'
      AND STATE() = 'BOOKED'
      END:VQUERY
        
6.1.1.16. Query for All Unprocessed Entries
6.1.1.16. 查询所有未处理的条目

The following example selects the entire contents of all non-booked "VTODO" and "VEVENT" components in the "UNPROCESSED" state. The default for the "EXPAND" property is "FALSE", so the recurrence rules will not be expanded.

以下示例选择处于“未处理”状态的所有未预订“VTODO”和“VEVENT”组件的全部内容。“EXPAND”属性的默认值为“FALSE”,因此不会展开重复规则。

      BEGIN:VQUERY
      QUERYID:Fetch VEVENT and VTODO iTIP components
      QUERY:SELECT * FROM VEVENT WHERE STATE() = 'UNPROCESSED'
      QUERY:SELECT * FROM VTODO WHERE STATE() = 'UNPROCESSED'
      END:VQUERY
        
      BEGIN:VQUERY
      QUERYID:Fetch VEVENT and VTODO iTIP components
      QUERY:SELECT * FROM VEVENT WHERE STATE() = 'UNPROCESSED'
      QUERY:SELECT * FROM VTODO WHERE STATE() = 'UNPROCESSED'
      END:VQUERY
        

The following example fetches all "VEVENT" and "VTODO" components in the "BOOKED" state.

以下示例获取处于“预订”状态的所有“VEVENT”和“VTODO”组件。

      BEGIN:VQUERY
      QUERYID:Fetch All Booked VEVENT and VTODO components
      QUERY:SELECT * FROM VEVENT WHERE STATE() = 'BOOKED'
      QUERY:SELECT * FROM VTODO WHERE STATE() = 'BOOKED'
      END:VQUERY
        
      BEGIN:VQUERY
      QUERYID:Fetch All Booked VEVENT and VTODO components
      QUERY:SELECT * FROM VEVENT WHERE STATE() = 'BOOKED'
      QUERY:SELECT * FROM VTODO WHERE STATE() = 'BOOKED'
      END:VQUERY
        

The following fetches the "UID" property for all "VEVENT" and "VTODO" components that have been marked for delete.

下面获取所有已标记为删除的“VEVENT”和“VTODO”组件的“UID”属性。

      BEGIN:VQUERY
      QUERYID:Fetch UIDs of marked-for-delete VEVENTs and VTODOs
      QUERY:SELECT UID FROM VEVENT WHERE STATE() = 'DELETED'
      QUERY:SELECT UID FROM VTODO WHERE STATE() = 'DELETED'
      END:VQUERY
        
      BEGIN:VQUERY
      QUERYID:Fetch UIDs of marked-for-delete VEVENTs and VTODOs
      QUERY:SELECT UID FROM VEVENT WHERE STATE() = 'DELETED'
      QUERY:SELECT UID FROM VTODO WHERE STATE() = 'DELETED'
      END:VQUERY
        
6.1.1.17. Query with Subset of Properties by Date/Time
6.1.1.17. 按日期/时间查询属性子集

In this example, only the named properties will be selected, and all booked and non-booked components have a "DTSTART" value from February 1st to February 10th 2000 (in UTC) will also be selected.

在本例中,将仅选择命名的属性,并且还将选择从2000年2月1日到2月10日(UTC)的所有已预订和未预订组件的“DTSTART”值。

      BEGIN:VQUERY
      QUERY:SELECT UID,DTSTART,DESCRIPTION,SUMMARY FROM VEVENT
      WHERE DTSTART >= '20000201T000000Z'
      AND DTSTART <= '20000210T235959Z'
      END:VQUERY
        
      BEGIN:VQUERY
      QUERY:SELECT UID,DTSTART,DESCRIPTION,SUMMARY FROM VEVENT
      WHERE DTSTART >= '20000201T000000Z'
      AND DTSTART <= '20000210T235959Z'
      END:VQUERY
        
6.1.1.18. Query with Components and Alarms in A Range
6.1.1.18. 查询范围内的组件和报警

This example fetches all booked "VEVENT" components with an alarm that triggers within the specified time range. In this case only the "UID", "SUMMARY", and "DESCRIPTION" properties will be selected for all booked "VEVENTS" components that have an alarm between the two date-times supplied.

此示例获取所有预订的“VEVENT”组件,并在指定的时间范围内触发警报。在这种情况下,只有“UID”、“SUMMARY”和“DESCRIPTION”属性将为所有预订的“VEVENTS”组件选择,这些组件在提供的两个日期时间之间有报警。

      BEGIN:VQUERY
      EXPAND:TRUE
      QUERY:SELECT UID,SUMMARY,DESCRIPTION FROM VEVENT
      WHERE VALARM.TRIGGER >= '20000101T030405Z'
      AND VALARM.TRIGGER <= '20001231T235959Z'
      AND STATE() = 'BOOKED'
      END:VQUERY
        
      BEGIN:VQUERY
      EXPAND:TRUE
      QUERY:SELECT UID,SUMMARY,DESCRIPTION FROM VEVENT
      WHERE VALARM.TRIGGER >= '20000101T030405Z'
      AND VALARM.TRIGGER <= '20001231T235959Z'
      AND STATE() = 'BOOKED'
      END:VQUERY
        
6.1.2. UPN Value Type
6.1.2. UPN值类型

Value Name: UPN

值名称:UPN

Purpose: This value type is used to identify values that contain user principal name of a CU or a group of CUs.

用途:此值类型用于标识包含CU或CU组的用户主体名称的值。

Formal Definition: The value type is defined by the following notation:

形式定义:值类型由以下符号定义:

                   ;
         upn        = "@"
                 / [ dot-atom-text ] "@" dot-atom-text
                   ;
                   ; dot-atom-text is defined in RFC 2822 [RFC2822]
                   ;
                   ;
         dot-atom-text = ; As defined in [iCAL].
        
                   ;
         upn        = "@"
                 / [ dot-atom-text ] "@" dot-atom-text
                   ;
                   ; dot-atom-text is defined in RFC 2822 [RFC2822]
                   ;
                   ;
         dot-atom-text = ; As defined in [iCAL].
        

Description: This data type is an identifier that denotes a CU or a group of CU. A UPN is an RFC 2822-compliant email address [RFC2822], with exceptions listed below, and in most cases it is deliverable to the CU. In some cases it is identical to the CU's well known email address. A CU's UPN MUST never be an e-mail address that is deliverable to a different person. And there is no requirement that a person's UPN MUST be their e-mail address.

描述:此数据类型是表示一个CU或一组CU的标识符。UPN是一个符合RFC 2822的电子邮件地址[RFC2822],以下列出了例外情况,在大多数情况下,它可交付给CU。在某些情况下,它与CU众所周知的电子邮件地址相同。CU的UPN不得是可交付给其他人的电子邮件地址。而且不要求一个人的UPN必须是他的电子邮件地址。

A UPN is formatted as a user name followed by "@", followed by a Realm in the form of a valid and unique DNS domain name. The user name MUST be unique within the Realm. In its simplest form it looks like "user@example.com".

UPN格式为用户名,后跟“@”,后跟有效且唯一的DNS域名形式的域。用户名在域中必须是唯一的。以最简单的形式,它看起来像“user@example.com".

In certain cases a UPN will not be RFC 2822-compliant. When anonymous authentication is used, or anonymous authorization is being defined, the special UPN "@" will be used. When authentication MUST be used, but unique identity MUST be obscured, a UPN of the form @DNS-domain-name may be used. For example, "@example.com".

在某些情况下,UPN将不符合RFC 2822。使用匿名身份验证或定义匿名授权时,将使用特殊的UPN“@”。当必须使用身份验证,但必须隐藏唯一标识时,可以使用@DNS域名形式的UPN。例如,“@example.com”。

Example:

例子:

The following is a UPN for a CU:

以下是CU的UPN:

jdoe@example.com

jdoe@example.com

The following is an example of a UPN that could be for a group of CU:

以下是一组铜的UPN示例:

staff@example.com

staff@example.com

The following is a UPN for an anonymous CU that belongs to a specific realm. When used as a UPN-FILTER, it applies to all UPNs in a specific realm:

以下是属于特定领域的匿名CU的UPN。当用作UPN筛选器时,它适用于特定领域中的所有UPN:

@example.com

@example.com

The following is a UPN for an anonymous CU:

以下是匿名CU的UPN:

@

@

6.1.3. UPN-FILTER Value
6.1.3. UPN滤波器值

Value Name: UPN-FILTER

值名称:UPN-FILTER

Purpose: This value type is used to identify values that contain a user principal name filter.

用途:此值类型用于标识包含用户主体名称筛选器的值。

Formal Definition: The value type is defined by the following notation:

形式定义:值类型由以下符号定义:

                      ;
                      ; NOTE: "CAL-OWNERS(cal-address)"
                      ;       and "NOT CAL-OWNERS(cal-address)"
                      ;       are both NOT allowed below.
                      ;
        
                      ;
                      ; NOTE: "CAL-OWNERS(cal-address)"
                      ;       and "NOT CAL-OWNERS(cal-address)"
                      ;       are both NOT allowed below.
                      ;
        
         upn-filter    = "CAL-OWNERS()" /
                         "NOT CAL-OWNERS()" /
                         "*" /
                   [ "*" / dot-atom-text ] "@" ( "*" / dot-atom-text )
                      ;
                      ; dot-atom-text is defined in RFC 2822
        
         upn-filter    = "CAL-OWNERS()" /
                         "NOT CAL-OWNERS()" /
                         "*" /
                   [ "*" / dot-atom-text ] "@" ( "*" / dot-atom-text )
                      ;
                      ; dot-atom-text is defined in RFC 2822
        

Description: The value is used to match user principal names (UPNs). For "CAL-OWNERS()" and "NOT CAL-OWNERS()", see Section 8.24.

描述:该值用于匹配用户主体名称(UPN)。有关“CAL-OWNERS()”和“非CAL-OWNERS()”,请参见第8.24节。

* Matches all UPNs.

* 匹配所有UPN。

@ Matches the UPN of anonymous CUs belonging to the null realm

@匹配属于空域的匿名CU的UPN

@* Matches the UPN of anonymous CUs belonging to any non-null realm

@*匹配属于任何非空域的匿名CU的UPN

@realm Matches the UPN of anonymous CUs belonging to the specified realm.

@领域匹配属于指定领域的匿名CU的UPN。

*@* Matches the UPN of non-anonymous CUs belonging to any non-null realm

*@*匹配属于任何非空域的非匿名CU的UPN

*@realm Matches the UPN of non-anonymous CUs belonging to the specified realm

*@领域匹配属于指定领域的非匿名CU的UPN

user@realm Matches the UPN of the specified CU belonging to the specified realm

user@realm匹配属于指定领域的指定CU的UPN

user@* Not allowed.

用户@*不允许。

user@ Not allowed.

不允许用户@。

Example: The following are examples of this value type:

示例:以下是此值类型的示例:

      DENY:NON CAL-OWNERS()
      DENY:@hackers.example.com
      DENY:*@hackers.example.com
      GRANT:sam@example.com
        
      DENY:NON CAL-OWNERS()
      DENY:@hackers.example.com
      DENY:*@hackers.example.com
      GRANT:sam@example.com
        
7. New Parameters
7. 新参数
7.1. ACTION Parameter
7.1. 动作参数

Parameter Name: ACTION

参数名称:ACTION

Purpose: This parameter indicates the action to be taken when a timeout occurs.

用途:此参数表示发生超时时要采取的操作。

Value Type: TEXT

值类型:文本

Conformance: This property can be specified in the "CMD" property.

一致性:可以在“CMD”属性中指定此属性。

When present in a "CMD" property, the "ACTION" parameter specifies the action to be taken when the command timeout expires.

当出现在“CMD”属性中时,“ACTION”参数指定命令超时时要采取的操作。

Formal Definition: The parameter is defined by the following notation:

形式定义:参数由以下符号定义:

         action-param     = ";" "ACTION" "=" ( "ASK" / "ABORT" )
                             ; If 'action-param' is supplied then
                             ; 'latency-param' MUST be supplied.
        
         action-param     = ";" "ACTION" "=" ( "ASK" / "ABORT" )
                             ; If 'action-param' is supplied then
                             ; 'latency-param' MUST be supplied.
        

Example:

例子:

         CMD;LATENCY=10;ACTION=ASK:CREATE
        
         CMD;LATENCY=10;ACTION=ASK:CREATE
        
7.2. ENABLE Parameter
7.2. 启用参数

Parameter Name: ENABLE

参数名称:启用

Purpose: This parameter indicates whether or not the property should be ignored. For example, it can indicate that a "TRIGGER" property in a "VALARM" component should be ignored.

用途:此参数指示是否应忽略该属性。例如,它可以指示应忽略“VALARM”组件中的“TRIGGER”属性。

Value Type: BOOLEAN

值类型:布尔值

Conformance: This property can be specified in the "TRIGGER" properties.

一致性:可以在“触发器”属性中指定此属性。

Description: When a non owner sends an [iTIP] "REQUEST" to a calendar that object might contain a "VALARM" component. The owner may wish to have local control over their own CUA and when or how alarms are triggered.

描述:当非所有者向日历发送[iTIP]“请求”时,该对象可能包含“VALARM”组件。业主可能希望对自己的CUA以及何时或如何触发报警进行本地控制。

A CUA may add the "ENABLE" parameter to any "TRIGGER" property before booking the component. If the "ENABLE" parameter is set to "FALSE", then the alarm will be ignored by the CUA. If set to

CUA可以在预订组件之前将“ENABLE”参数添加到任何“TRIGGER”属性。如果“启用”参数设置为“假”,则CUA将忽略报警。如果设置为

"TRUE", or if the "ENABLE" property is not in the "TRIGGER" property, the alarm is enabled. This parameter may not be known by pre-CAP implementations, but this should not be an issue as it conforms to an 'ianaparam' [iCAL].

“TRUE”,或者如果“ENABLE”属性不在“TRIGGER”属性中,则报警被启用。CAP之前的实现可能不知道此参数,但这不应该是一个问题,因为它符合“ianaparam”[iCAL]。

Formal Definition: The property is defined by the following notation:

形式定义:属性由以下符号定义:

enable-param = "ENABLE" "=" boolean ; boolean = ; As defined in [iCAL].

enable param=“enable”“=”布尔值;布尔=;如[iCAL]中所定义。

Example: The following is an example of this property for a "VAGENDA" component:

示例:“VAGENDA”组件的此属性示例如下:

         TRIGGER;ENABLE=FALSE;RELATED=END:PT5M
        
         TRIGGER;ENABLE=FALSE;RELATED=END:PT5M
        
7.3. ID Parameter
7.3. ID参数

Parameter Name: ID

参数名称:ID

Purpose: When used in a "CMD" component, it provides a unique identifier.

用途:在“CMD”组件中使用时,它提供唯一标识符。

Value Type: TEXT

值类型:文本

Conformance: This parameter can be specified in the "CMD" property.

一致性:可以在“CMD”属性中指定此参数。

Description: If more than one command is sent, then the "ID" parameter is used to uniquely identify the command.

描述:如果发送了多个命令,“ID”参数用于唯一标识该命令。

A CUA may add the "ID" parameter to any "CMD" property before sending the command. There must not be more than one outstanding command tagged with the same "ID" parameter value.

CUA可以在发送命令之前将“ID”参数添加到任何“CMD”属性中。不能有多个使用相同“ID”参数值标记的未完成命令。

Formal Definition: The property is defined by the following notation:

形式定义:属性由以下符号定义:

         id-param         = ";" "ID" "=" unique-id
                          ; The text value supplied is a unique value
                          ; shared between the CUA and CS to uniquely
                          ; identify the instance of command in the
                          ; the current CUA session.  The value has
                          ; no meaning to other CUAs or other sessions.
                          ;
         unique-id        = ; text
                          ;
         text             = ; As defined in [iCAL].
        
         id-param         = ";" "ID" "=" unique-id
                          ; The text value supplied is a unique value
                          ; shared between the CUA and CS to uniquely
                          ; identify the instance of command in the
                          ; the current CUA session.  The value has
                          ; no meaning to other CUAs or other sessions.
                          ;
         unique-id        = ; text
                          ;
         text             = ; As defined in [iCAL].
        

Example: The following is an example of this parameter component:

示例:以下是此参数组件的示例:

         CMD;UD=some-unique-value:CREATE
        
         CMD;UD=some-unique-value:CREATE
        
7.4. LATENCY Parameter
7.4. 延迟参数

Parameter Name: LATENCY

参数名称:延迟

Purpose: This parameter indicates time in seconds for when a timeout occurs.

用途:此参数表示超时发生的时间(秒)。

Value Type: TEXT

值类型:文本

Conformance: This property can be specified in the "CMD" property.

一致性:可以在“CMD”属性中指定此属性。

When present in a "CMD" property, the "LATENCY" parameter specifies the time in seconds when the command timeout expires.

当出现在“CMD”属性中时,“LATENCY”参数指定命令超时过期的时间(以秒为单位)。

Formal Definition: The parameter is defined by the following notation:

形式定义:参数由以下符号定义:

         latency-param    = ";" "LATENCY" "=" latency-sec
                          ; The value supplied in the time in seconds.
                          ; If 'latency-param' is supplied then
                          ; 'action-param' MUST be supplied.
                          ;
         latency-sec      = posint1
        
         latency-param    = ";" "LATENCY" "=" latency-sec
                          ; The value supplied in the time in seconds.
                          ; If 'latency-param' is supplied then
                          ; 'action-param' MUST be supplied.
                          ;
         latency-sec      = posint1
        

; Default is zero (0) meaning no timeout.

; 默认值为零(0),表示没有超时。

Example: The following is an example of this parameter:

示例:以下是此参数的示例:

         CMD;LATENCY=10;ACTION=ASK:CREATE
        
         CMD;LATENCY=10;ACTION=ASK:CREATE
        
7.5. LOCAL Parameter
7.5. 局部参数

Parameter Name: LOCAL

参数名称:本地

Purpose: Indicates if the named component should be exported to any non-organizer calendar.

用途:指示是否应将命名组件导出到任何非组织者日历。

Value Type: BOOLEAN

值类型:布尔值

Conformance: This parameter can be specified in the "SEQUENCE" properties in a "VALARM" component.

一致性:该参数可以在“VALARM”组件的“SEQUENCE”属性中指定。

Description: When a non-owner sends an [iTIP] "REQUEST" to a calendar that object might contain a "VALARM" component. The owner may wish to have local control over their own CUA and when or how alarms are triggered.

描述:当非所有者向日历发送[iTIP]“请求”时,该对象可能包含“VALARM”组件。业主可能希望对自己的CUA以及何时或如何触发报警进行本地控制。

A CUA may add the "LOCAL" parameter to the "SEQUENCE" property before booking the component. If the "LOCAL" parameter is set to "TRUE", then the alarm MUST NOT be forwarded to any other calendar. If set to "FALSE", or if the "LOCAL" parameter is not in the "SEQUENCE" property, the alarm is global.

CUA可以在预订组件之前将“本地”参数添加到“序列”属性。如果“LOCAL”(本地)参数设置为“TRUE”,则报警不得转发到任何其他日历。如果设置为“FALSE”,或者“LOCAL”参数不在“SEQUENCE”属性中,则报警为全局报警。

Formal Definition: The property is defined by the following notation:

形式定义:属性由以下符号定义:

local-param = "LOCAL" "=" boolean

local param=“local”“=”布尔值

Example: The following is an example of this parameter:

示例:以下是此参数的示例:

         SEQUENCE;LOCAL=TRUE:4
        
         SEQUENCE;LOCAL=TRUE:4
        
7.6. LOCALIZE Parameter
7.6. 局部参数

Parameter Name: LOCALIZE

参数名称:本地化

Purpose: If provided, specifies the desired language for error and warning messages.

目的:如果提供,指定错误和警告消息所需的语言。

Value Type: TEXT

值类型:文本

Conformance: This parameter can be specified in the "CMD" properties.

一致性:此参数可以在“CMD”属性中指定。

When the "LOCALIZE" parameter is supplied, its value MUST be one of the values listed in the initial [BEEP] greeting 'localize' attribute.

提供“LOCALIZE”参数时,其值必须是初始[BEEP]问候语“LOCALIZE”属性中列出的值之一。

A CUA may add the "LOCALIZE" parameter to the "CMD" property to specify the language of any error or warning messages.

CUA可以在“CMD”属性中添加“LOCALIZE”参数,以指定任何错误或警告消息的语言。

Formal Definition: The property is defined by the following notation:

形式定义:属性由以下符号定义:

         localize-param   = ";" "LOCALIZE" "=" beep-localize
                          ;
         beep-localize    = text ; As defined in [BEEP]
                          ; The value supplied MUST be one value from
                          ; the initial [BEEP] greeting 'localize'
                          ; attribute, specifying the locale to use
                          ; for error messages during
                          ; this instance of the command.
        
         localize-param   = ";" "LOCALIZE" "=" beep-localize
                          ;
         beep-localize    = text ; As defined in [BEEP]
                          ; The value supplied MUST be one value from
                          ; the initial [BEEP] greeting 'localize'
                          ; attribute, specifying the locale to use
                          ; for error messages during
                          ; this instance of the command.
        

Example: The following is an example of this parameter:

示例:以下是此参数的示例:

         CMD;LOCALIZE=fr_CA:CREATE
        
         CMD;LOCALIZE=fr_CA:CREATE
        
7.7. OPTIONS Parameter
7.7. 选项参数

Parameter Name: OPTIONS

参数名称:选项

Purpose: If provided the "OPTIONS" parameter specifies some "CMD" property-specific options.

用途:如果提供了“选项”,则“选项”参数指定了一些“CMD”属性特定的选项。

Value Type: TEXT

值类型:文本

Conformance: This parameter can be specified in the "CMD" properties.

一致性:此参数可以在“CMD”属性中指定。

A CUA adds the "OPTIONS" parameter to the "CMD" property when the command needs extra values.

当命令需要额外值时,CUA会将“OPTIONS”参数添加到“CMD”属性中。

Formal Definition: The property is defined by the following notation:

形式定义:属性由以下符号定义:

         option-param     = ";" "OPTIONS" "=" cmd-specific
                            ;
         cmd-specific     = ; The value supplied is dependent on the
                            ; CMD value.  See the specific CMDs for the
                            ; correct values to use for each CMD.
        
         option-param     = ";" "OPTIONS" "=" cmd-specific
                            ;
         cmd-specific     = ; The value supplied is dependent on the
                            ; CMD value.  See the specific CMDs for the
                            ; correct values to use for each CMD.
        

Example: The following is an example of this parameter:

示例:以下是此参数的示例:

         CMD;OPTIONS=10:GENERATE-UID
        
         CMD;OPTIONS=10:GENERATE-UID
        
8. New Properties
8. 新特性
8.1. ALLOW-CONFLICT Property
8.1. 允许冲突属性

Property Name: ALLOW-CONFLICT

属性名称:允许冲突

Purpose: This property indicates whether or not the calendar and CS supports component conflicts. That is, whether or not any of the components in the calendar can overlap.

用途:此属性指示日历和CS是否支持组件冲突。也就是说,日历中的任何组件是否可以重叠。

Value Type: BOOLEAN

值类型:布尔值

Property Parameters: Non-standard property parameters can be specified on this property.

属性参数:可以在此属性上指定非标准属性参数。

Conformance: This property can be specified in "VAGENDA" and "VCALSTORE" component.

一致性:可以在“VAGENDA”和“VCALSTORE”组件中指定此属性。

Description: This property is used to indicate whether components may conflict, that is, whether their expanded instances may share the same time or overlap the same time periods. If it has a value of

描述:此属性用于指示组件是否可能冲突,也就是说,它们的扩展实例可能共享相同的时间段,还是重叠相同的时间段。如果它的值为

"TRUE", then conflicts are allowed. If "FALSE", the no two components may conflict.

“TRUE”,则允许冲突。如果为“FALSE”,则无两个组件可能冲突。

If "FALSE" in the "VCALSTORE" component, then all "VAGENDA" component "ALLOW-CONFLICT" property values MUST be "FALSE" in the CS.

如果“VCALSTORE”组件中的“FALSE”,则CS中的所有“VAGENDA”组件“ALLOW-CONFLICT”属性值必须为“FALSE”。

Formal Definition: The property is defined by the following notation:

形式定义:属性由以下符号定义:

allow-conflict = "ALLOW-CONFLICT" other-params ":" boolean CRLF

allow conflict=“allow-conflict”其他参数:“布尔型CRLF”

Example: The following is an example of this property for a "VAGENDA" component:

示例:“VAGENDA”组件的此属性示例如下:

ALLOW-CONFLICT:FALSE

允许冲突:FALSE

8.2. ATT-COUNTER Property
8.2. ATT计数器属性

Property Name: ATT-COUNTER

属性名称:ATT-COUNTER

Property Parameters: Non-standard property parameters can be specified on this property.

属性参数:可以在此属性上指定非标准属性参数。

Conformance: This property MUST be specified in an iCalendar object that specifies a counter proposal to a group-scheduled calendar entity. When storing a "METHOD" property with the "COUNTER" method, there needs to be a way to remember who sent the COUNTER. The ATT-COUNTER property MUST be added to all "COUNTER" [iTIP] components by the CUA before storing in a CS.

一致性:必须在iCalendar对象中指定此属性,该对象指定对组计划日历实体的反建议。使用“COUNTER”方法存储“METHOD”属性时,需要有一种方法来记住是谁发送了计数器。在存储到CS中之前,CUA必须将ATT-COUNTER属性添加到所有“计数器”[iTIP]组件中。

Description: This property is used to identify the CAL-ADDRESS of the entity that sent the "COUNTER" [iTIP] object.

描述:此属性用于标识发送“计数器”[iTIP]对象的实体的CAL地址。

Formal Definition: The property is defined by the following notation:

形式定义:属性由以下符号定义:

attcounter = "ATT-COUNTER" other-params ":" cal-address CRLF

attcounter=“ATT-COUNTER”其他参数:“cal地址CRLF”

Examples:

示例:

            ATT-COUNTER:cap:example.com/Doug
            ATT-COUNTER:mailto:Doug@Example.com
        
            ATT-COUNTER:cap:example.com/Doug
            ATT-COUNTER:mailto:Doug@Example.com
        
8.3. CALID Property
8.3. CALID属性

Property Name: CALID

属性名称:CALID

Property Parameters: Non-standard property parameters can be specified on this property.

属性参数:可以在此属性上指定非标准属性参数。

Conformance: This property can be specified in the "VAGENDA" component.

一致性:可以在“VAGENDA”组件中指定此属性。

Description: This property is used to specify a fully-qualified CALID.

描述:此属性用于指定完全限定的CALID。

Formal Definition: The property is defined by the following notation:

形式定义:属性由以下符号定义:

calid = "CALID" other-params ":" relcalid CRLF

calid=“calid”其他参数:“relcalid CRLF”

Example:

例子:

         CALID:cap://cal.example.com/sdfifgty4321
        
         CALID:cap://cal.example.com/sdfifgty4321
        
8.4. CALMASTER Property
8.4. 卡尔马斯特酒店

Property Name: CALMASTER

物业名称:卡尔马斯特

Purpose: The property specifies an e-mail address of a person responsible for the calendar store.

用途:属性指定负责日历存储的人员的电子邮件地址。

Value Type: URI

值类型:URI

Property Parameters: Non-standard property parameters can be specified on this property.

属性参数:可以在此属性上指定非标准属性参数。

Conformance: The property can be specified in a "VCALSTORE" component.

一致性:可以在“VCALSTORE”组件中指定该属性。

Description: The parameter value SHOULD be a MAILTO URI as defined in [URL]. It MUST be a contact URI such as a MAILTO URI and not a home page or file URI that describes how to contact the calmasters.

描述:参数值应为[URL]中定义的MAILTO URI。它必须是一个联系人URI,如MAILTO URI,而不是描述如何联系calmasters的主页或文件URI。

Formal Definition: The property is defined by the following notation:

形式定义:属性由以下符号定义:

calmaster = "CALMASTER" other-params ":" uri CRLF ; uri = ; IANA registered uri as defined in [iCAL].

calmaster=“calmaster”其他参数:“uri CRLF;uri=;IANA注册的uri如[iCAL]中所定义。

Example: The following is an example of this property:

示例:以下是此属性的示例:

         CALMASTER:mailto:administrator@example.com
        
         CALMASTER:mailto:administrator@example.com
        
8.5. CAP-VERSION Property
8.5. CAP-VERSION属性

Property Name: CAP-VERSION

属性名称:CAP-VERSION

Purpose: This property specifies the version of CAP supported.

用途:此属性指定支持的CAP版本。

Value Type: TEXT

值类型:文本

Property Parameters: Non-standard property parameters can be specified on this property.

属性参数:可以在此属性上指定非标准属性参数。

Conformance: This property is specified in the "VREPLY" component that is sent in response to a "GET-CAPABILITY" command.

一致性:此属性在响应“GET-CAPABILITY”命令而发送的“VREPLY”组件中指定。

Description: This specifies the version of CAP that the endpoint supports. The list is a comma-separated list of supported RFC numbers. The list MUST contain at least 4324.

描述:指定端点支持的CAP版本。该列表是受支持的RFC编号的逗号分隔列表。列表必须至少包含4324个。

Formal Definition: The property is defined by the following notation:

形式定义:属性由以下符号定义:

cap-version = "CAP-VERSION" other-params ":" text CRLF

cap version=“cap-version”其他参数:“文本CRLF”

Example: The following are examples of this property:

示例:以下是此属性的示例:

CAP-VERSION:4324

CAP版本:4324

8.6. CARID Property
8.6. 加勒比财产

Property Name: CARID

物业名称:CARID

Purpose: This property specifies the identifier for an access right component.

用途:此属性指定访问权限组件的标识符。

Value Type: TEXT

值类型:文本

Property Parameters: Non-standard property parameters can be specified on this property.

属性参数:可以在此属性上指定非标准属性参数。

Conformance: This property MUST be specified once in a "VCAR" component.

一致性:此属性必须在“VCAR”组件中指定一次。

Description: This property is used in the "VCAR" component to specify an identifier. A "CARID" property value is unique per container.

描述:此属性在“VCAR”组件中用于指定标识符。每个容器的“CARID”属性值是唯一的。

Formal Definition: The property is defined by the following notation:

形式定义:属性由以下符号定义:

carid = "CARID" other-params ":" text CRLF

carid=“carid”其他参数:“文本CRLF”

Example: The following are examples of this property:

示例:以下是此属性的示例:

CARID:xyzzy-007 CARID:User Rights

CARID:xyzzy-007 CARID:用户权限

8.7. CAR-LEVEL Property
8.7. 汽车级物业

Property Name: CAR-LEVEL

物业名称:CAR-LEVEL

Purpose: The property specifies the level of VCAR supported.

用途:该属性指定支持的VCAR级别。

Value Type: TEXT

值类型:文本

Property Parameters: Non-standard property parameters can be specified on this property.

属性参数:可以在此属性上指定非标准属性参数。

Conformance: The property can be specified in a "VREPLY" component that is sent in response to a "GET-CAPABILITY" command.

一致性:属性可以在响应“GET-CAPABILITY”命令而发送的“VREPLY”组件中指定。

Description: The value is one from a list of "CAR-NONE", "CAR-MIN", or "CAR-FULL-1". If "CAR-FULL-1" is supplied, then "CAR-MIN" is also available. A "CAR-MIN" implementation only supported the "DEFAULT-VCARS" property values listed in the "VCALSTORE" component, and a "CAR-MIN" implementation does not support the creation or modification of "VCAR" components from the CUA.

描述:该值来自“无车”、“最小车数”或“满车1”列表。如果提供了“CAR-FULL-1”,则“CAR-MIN”也可用。“CAR-MIN”实现仅支持“VCALSTORE”组件中列出的“DEFAULT-VCARS”属性值,“CAR-MIN”实现不支持从CUA创建或修改“VCAR”组件。

Formal Definition: The property is defined by the following notation:

形式定义:属性由以下符号定义:

car-level = "CAR-LEVEL" ":" other-params ":" car-level-values

轿厢级别=“轿厢级别”“:“其他参数”:“轿厢级别值”

         car-level-values = ( "CAR-NONE" / "CAR-MIN" / "CAR-FULL-1"
                              / other-levels )
        
         car-level-values = ( "CAR-NONE" / "CAR-MIN" / "CAR-FULL-1"
                              / other-levels )
        

other-levels = ; Any name published in an RFC for a ; "CAR-LEVEL" property value.

其他级别=;在RFC中发布的任何名称;“汽车级”属性值。

Example: The following is an example of this property:

示例:以下是此属性的示例:

CAR-LEVEL:CAR-FULL-1

轿厢级别:轿厢满1

8.8. COMPONENTS Property
8.8. 组件属性

Property Name: COMPONENTS

属性名称:组件

Purpose: The property specifies a the list of components supported by the endpoint.

用途:该属性指定端点支持的组件列表。

Value Type: TEXT

值类型:文本

Property Parameters: Non-standard property parameters can be specified on this property.

属性参数:可以在此属性上指定非标准属性参数。

Conformance: The property can be specified in a "VREPLY" component in response to a "GET-CAPABILITY" command.

一致性:属性可以在“VREPLY”组件中指定,以响应“GET-CAPABILITY”命令。

Description: A comma-separated list of components that are supported by the endpoint. A component that is not in the list sent from the endpoint is not supported by that endpoint. Sending an unsupported component results in unpredictable results. This includes any components inside of other components (VALARM for example). The recommended list is "VCALSTORE,VCALENDAR,VREPLY,VAGENDA, VEVENT,VALARM,VTIMEZONE,VJOURNAL,VTODO,VALARM, DAYLIGHT,STANDARD,VCAR,VRIGHT,VQUERY".

描述:端点支持的组件的逗号分隔列表。不在从终结点发送的列表中的组件不受该终结点的支持。发送不受支持的组件会导致不可预测的结果。这包括其他组件(例如VALARM)内部的任何组件。建议的列表为“VCALSTORE、VCALENDAR、VREPLY、VAGENDA、VEVENT、VALARM、VTIMEZONE、VJOURNAL、VTODO、VALARM、DAYLIGHT、STANDARD、VCAR、VRIGHT、VQUERY”。

Formal Definition: The property is defined by the following notation:

形式定义:属性由以下符号定义:

      components     = "COMPONENTS" other-params ":" comp-list CRLF
                     ;
                     ; All of these MUST be supplied only once.
                     ;
      comp-list-req  = "VCALSTORE" "," "VCALENDAR" "," "VTIMEZONE" ","
                       "VREPLY"    "," "VAGENDA"   "," "STANDARD"  ","
                       "DAYLIGHT"
                     ; At least one MUST be supplied. The same value
                     ; MUST NOT occur more than once.
                     ;
      comp-list-min  = ( "," "VEVENT")
                     / ( "," "VTODO")
                     / ( "," "VJOURNAL" )
                     ; The same value MUST NOT occur
                     ; more than once.  If "VCAR" is supplied then
                     ; "VRIGHT" must be supplied.
                     ;
      comp-list-opt  = ( "," "VFREEBUSY" ) / ( "," "VALARM" )
                       / ( "," "VCAR" )    / ( "," "VRIGHT" )
                       / ( "," "VQUERY")   / ( "," x-comp )
                       / ( "," iana-comp )
                     ;
      comp-list      = comp-list-req 1*3comp-list-min *(comp-list-opt)
        
      components     = "COMPONENTS" other-params ":" comp-list CRLF
                     ;
                     ; All of these MUST be supplied only once.
                     ;
      comp-list-req  = "VCALSTORE" "," "VCALENDAR" "," "VTIMEZONE" ","
                       "VREPLY"    "," "VAGENDA"   "," "STANDARD"  ","
                       "DAYLIGHT"
                     ; At least one MUST be supplied. The same value
                     ; MUST NOT occur more than once.
                     ;
      comp-list-min  = ( "," "VEVENT")
                     / ( "," "VTODO")
                     / ( "," "VJOURNAL" )
                     ; The same value MUST NOT occur
                     ; more than once.  If "VCAR" is supplied then
                     ; "VRIGHT" must be supplied.
                     ;
      comp-list-opt  = ( "," "VFREEBUSY" ) / ( "," "VALARM" )
                       / ( "," "VCAR" )    / ( "," "VRIGHT" )
                       / ( "," "VQUERY")   / ( "," x-comp )
                       / ( "," iana-comp )
                     ;
      comp-list      = comp-list-req 1*3comp-list-min *(comp-list-opt)
        

Example: The following is an example of this property:

示例:以下是此属性的示例:

COMPONENTS:VCALSTORE,VCALENDAR,VREPLY,VAGENDA, VEVENT,VALARM,VTIMEZONE,VJOURNAL,VTODO, DAYLIGHT,STANDARD,VFREEBUSY,VCAR,VRIGHT,VQUERY

组件:VCALSTORE、VCALENDAR、VREPLY、VAGENDA、VEVENT、VALARM、VTIMEZONE、VJOURNAL、VTODO、DAYLIGHT、STANDARD、VFREEBUSY、VCAR、VRIGHT、VQUERY

8.9. CSID Property
8.9. CSID属性

Property Name: CSID

物业名称:CSID

Purpose: The property specifies a globally unique identifier for the calendar store.

用途:该属性指定日历存储的全局唯一标识符。

Value Type: URI

值类型:URI

Property Parameters: Non-standard property parameters can be specified on this property.

属性参数:可以在此属性上指定非标准属性参数。

Conformance: The property can be specified in a "VCALSTORE" component.

一致性:可以在“VCALSTORE”组件中指定该属性。

Description: The identifier MUST be globally unique. Each CS needs its own unique identifier. The "CSID" property is the official unique identifier for the CS. If the BEEP 'serverName' attribute was supplied in the BEEP 'start' message, then the CSID will be mapped to the virtual host name supplied, and the host name part of the CSID MUST be the same as the 'serverName' value. This allows one CS implementation to service multiple virtual hosts. CS's are not required to support virtual hosting. If a CS does not support virtual hosting, then it must ignore the BEEP 'serverName' attribute.

描述:标识符必须是全局唯一的。每个CS都需要自己的唯一标识符。“CSID”属性是CS的官方唯一标识符。如果在蜂鸣“开始”消息中提供了蜂鸣“serverName”属性,则CSID将映射到提供的虚拟主机名,并且CSID的主机名部分必须与“serverName”值相同。这允许一个CS实现为多个虚拟主机提供服务。CS不需要支持虚拟主机。如果CS不支持虚拟主机,则必须忽略“服务器名”属性。

Formal Definition: The property is defined by the following notation:

形式定义:属性由以下符号定义:

csid = "CSID" other-params ":" capurl CRLF

csid=“csid”其他参数:“capurl CRLF”

Example: The following is an example of this property:

示例:以下是此属性的示例:

         CSID:cap://calendar.example.com
        
         CSID:cap://calendar.example.com
        
8.10. DECREED Property
8.10. 法定财产

Property Name: DECREED

物业名称:已颁布法令

Purpose: This property specifies if an access right calendar component is decreed or not.

用途:此属性指定访问权限日历组件是否已颁布法令。

Value Type: BOOLEAN

值类型:布尔值

Property Parameters: Non-standard property parameters can be specified on this property.

属性参数:可以在此属性上指定非标准属性参数。

Conformance: This property MAY be specified once in a "VCAR" component.

一致性:此属性可在“VCAR”组件中指定一次。

Description: This property is used in the "VCAR" component to specify whether the component is decreed or not. If the "DECREED" property value is "TRUE" then the CUA will be unable to change the contents of the "VCAR" component and any attempt will fail with an error.

描述:此属性用于“VCAR”组件中,以指定该组件是否已颁布法令。如果“法令”属性值为“真”,则CUA将无法更改“VCAR”组件的内容,任何尝试都将失败并出现错误。

Formal Definition: The property is defined by the following notation:

形式定义:属性由以下符号定义:

decreed = "DECREED" other-params ":" boolean CRLF

decreated=“decreated”其他参数:“布尔CRLF”

Example: The following is an example of this property:

示例:以下是此属性的示例:

DECREED:TRUE

判决:正确

8.11. DEFAULT-CHARSET Property
8.11. 默认字符集属性

Property Name: DEFAULT-CHARSET

属性名称:DEFAULT-CHARSET

Purpose: This property indicates the default charset.

用途:此属性表示默认字符集。

Value Type: TEXT

值类型:文本

Property Parameters: Non-standard property parameters can be specified on this property.

属性参数:可以在此属性上指定非标准属性参数。

Conformance: This property can be specified in "VAGENDA" and "VCALSTORE" calendar component.

一致性:可以在“VAGENDA”和“VCALSTORE”日历组件中指定此属性。

Description: In a "VAGENDA" component this property is used to indicate the charset of calendar. If not specified, the default is the first value in the "VCALSTORE" components "DEFAULT-CHARSET" property value list. The value MUST be an IANA registered character set as defined in [CHARREG].

描述:在“VAGENDA”组件中,此属性用于指示日历的字符集。如果未指定,默认值是“VCALSTORE”组件“default-CHARSET”属性值列表中的第一个值。该值必须是[CHARREG]中定义的IANA注册字符集。

In a "VCALSTORE" component it is a comma-separated list of charsets supported by the CS. The first entry is the default entry for all newly created "VAGENDA" components. The "UTF-8" value MUST be in the "VCALSTORE" component "DEFAULT-CHARSET" property list. All compliant

在“VCALSTORE”组件中,它是由CS支持的字符集的逗号分隔列表。第一个条目是所有新创建的“VAGENDA”组件的默认条目。“UTF-8”值必须在“VCALSTORE”组件“DEFAULT-CHARSET”属性列表中。全合规

CAP implementations (CS and CUA) MUST support at least the "UTF-8" charset.

CAP实现(CS和CUA)必须至少支持“UTF-8”字符集。

If a charset name contains a comma (,), that comma must be backslash-escaped in the value.

如果字符集名称包含逗号(,),则该逗号必须在值中反斜杠转义。

Formal Definition: The property is defined by the following notation:

形式定义:属性由以下符号定义:

default-charset = "DEFAULT-CHARSET" other-params ":" text *( "," text) CRLF

default charset=“default-charset”其他参数“:“text*(”,“text”)CRLF

Example: The following is an example of this property for a "VAGENDA" component:

示例:“VAGENDA”组件的此属性示例如下:

DEFAULT-CHARSET:Shift_JIS,UTF-8

默认字符集:Shift_JIS,UTF-8

8.12. DEFAULT-LOCALE Property
8.12. 默认语言环境属性

Property Name: DEFAULT-LOCALE

属性名称:默认语言环境

Purpose: This property specifies the default language for text values.

用途:此属性指定文本值的默认语言。

Value Type: TEXT

值类型:文本

Property Parameters: Non-standard property parameters can be specified on this property.

属性参数:可以在此属性上指定非标准属性参数。

Conformance: This property can be specified in "VAGENDA" and "VCALSTORE" components.

一致性:可以在“VAGENDA”和“VCALSTORE”组件中指定此属性。

Description: In a "VAGENDA" component, the "DEFAULT-LOCALE" property is used to indicate the locale of the calendar. The full locale SHOULD be used. The default and minimum locale is POSIX (aka the 'C' locale).

描述:在“VAGENDA”组件中,“DEFAULT-LOCALE”属性用于指示日历的区域设置。应使用完整的区域设置。默认和最小区域设置是POSIX(也称为“C”区域设置)。

In a "VCALSTORE" component, it is a comma-separated list of locales supported by the CS. The first value in the list is the default for all newly created VAGENDAs. "POSIX" MUST be in the list.

在“VCALSTORE”组件中,它是由CS支持的以逗号分隔的区域设置列表。列表中的第一个值是所有新创建的VAGENDAs的默认值。“POSIX”必须在列表中。

Formal Definition: The property is defined by the following notation:

形式定义:属性由以下符号定义:

         default-locale     = "DEFAULT-LOCALE" other-params ":" language
                               *( "," language) CRLF
                    ;
         language = ; Text identifying a locale, as defined in [CHARPOL]
        
         default-locale     = "DEFAULT-LOCALE" other-params ":" language
                               *( "," language) CRLF
                    ;
         language = ; Text identifying a locale, as defined in [CHARPOL]
        

Example: The following is an example of this property:

示例:以下是此属性的示例:

DEFAULT-LOCALE:en-US.iso-8859-1,POSIX

默认语言环境:en US.iso-8859-1,POSIX

8.13. DEFAULT-TZID Property
8.13. DEFAULT-TZID属性

Property Name: DEFAULT-TZID

属性名称:DEFAULT-TZID

Purpose: This property specifies the text value that specifies the time zones.

用途:此属性指定用于指定时区的文本值。

Value Type: TEXT

值类型:文本

Property Parameters: Non-standard property parameters can be specified on this property.

属性参数:可以在此属性上指定非标准属性参数。

Conformance: This property may be specified once in a "VAGENDA" and "VCALSTORE" components.

一致性:此属性可以在“VAGENDA”和“VCALSTORE”组件中指定一次。

Description: A multi-valued property that lists the known time zones. The first is the default. Here "TZID" property values are the same as the "TZID" property defined in [iCAL].

描述:列出已知时区的多值属性。第一个是默认值。此处的“TZID”属性值与[iCAL]中定义的“TZID”属性相同。

If used in a "VCALSTORE" component, it is a comma-separated list of TZIDs known to the CS. The entry is used as the default TZID list for all newly created calendars. The list MUST contain at least "UTC". A "VCALSTORE" components MUST contain one "VTIMEZONE" component for each value in the "DEFAULT-TZID" property value.

如果在“VCALSTORE”组件中使用,则它是CS已知的以逗号分隔的TZID列表。该条目用作所有新创建日历的默认TZID列表。列表必须至少包含“UTC”。对于“DEFAULT-TZID”属性值中的每个值,“VCALSTORE”组件必须包含一个“VTIMEZONE”组件。

If used in a "VAGENDA" component, it is a comma-separated list of "TZID" property values naming the time zones known to the calendar. The first time zone in the list is the default and is used as the localtime for objects that contain a date or date-time value without a time zone. All "VAGENDA" components MUST have one "VTIMEZONE" component contained for each value in the "DEFAULT-TZID" property value.

如果在“VAGENDA”组件中使用,它是一个逗号分隔的“TZID”属性值列表,用于命名日历已知的时区。列表中的第一个时区是默认时区,并用作包含日期或日期时间值但没有时区的对象的localtime。对于“DEFAULT-TZID”属性值中的每个值,所有“VAGENDA”组件都必须包含一个“VTIMEZONE”组件。

If a "TZID" property value contains a comma (,), the comma must be backslash-escaped.

如果“TZID”属性值包含逗号(,),则必须对逗号进行反斜杠转义。

Formal Definition: This property is defined by the following notation:

形式定义:此属性由以下符号定义:

default-tzid = "DEFAULT-TZID" other-params ":" [tzidprefix] text *("," [tzidprefix] text) CRLF ; txidprefix = ; As defined in [iCAL].

default tzid=“default-tzid”其他参数“[tzidprefix]文本*(”,“[tzidprefix]文本)CRLF;txid前缀=;如[iCAL]中所定义。

Example: The following is an example of this property:

示例:以下是此属性的示例:

DEFAULT-TZID:US/Mountain,UTC

默认-TZID:US/山地,UTC

8.14. DEFAULT-VCARS Property
8.14. DEFAULT-VCARS属性

Property Name: DEFAULT-VCARS

属性名称:DEFAULT-VCARS

Purpose: This property is used to specify the "CARID" property ids of the default "VCAR" components for newly created "VAGENDA" components.

用途:此属性用于为新创建的“VAGENDA”组件指定默认“VCAR”组件的“CARID”属性ID。

Value Type: TEXT

值类型:文本

Property Parameters: Non-standard property parameters can be specified on this property.

属性参数:可以在此属性上指定非标准属性参数。

Conformance: This property MUST be specified in "VCALSTORE" calendar component and MUST at least specify the following values: "READBUSYTIMEINFO", "REQUESTONLY", "UPDATEPARTSTATUS", and "DEFAULTOWNER".

一致性:此属性必须在“VCALSTORE”日历组件中指定,并且必须至少指定以下值:“READBUSYTIMEINFO”、“REQUESTONLY”、“UPDATEPARTSTATUS”和“DEFAULTOWNER”。

Description: This property is used in the "VCALSTORE" component to specify the "CARID" value of the "VCAR" components that MUST be copied into now "VAGENDA" components at creation time by the CS. All "DEFAULT-VCAR" values must have "VCARS" components stored in the "VCALSTORE".

描述:此属性在“VCALSTORE”组件中用于指定“VCAR”组件的“CARID”值,CS必须在创建时将这些组件复制到现在的“VAGENDA”组件中。所有“默认-VCAR”值必须在“VCALSTORE”中存储“VCAR”组件。

Formal Definition: The property is defined by the following notation:

形式定义:属性由以下符号定义:

defautl-vcars = "DEFAULT-VCARS" other-params ":" text *( "," text ) CRLF

defautl vcars=“DEFAULT-vcars”其他参数:“text*(,“text”)CRLF

Example: The following is an example of this property:

示例:以下是此属性的示例:

DEFAULT-VCARS:READBUSYTIMEINFO,REQUESTONLY, UPDATEPARTSTATUS,DEFAULTOWNER

DEFAULT-VCARS:READBUSYTIMEINFO、REQUESTONLY、UPDATEPARTSTATUS、DEFAULTOWNER

8.15. DENY Property
8.15. 拒绝财产

Property Name: DENY

属性名称:拒绝

Purpose: This property identifies the UPN(s) being denied access in the "VRIGHT" component.

用途:此属性标识在“VRIGHT”组件中被拒绝访问的UPN。

Value Type: UPN-FILTER

值类型:UPN-FILTER

Property Parameters: Non-standard property parameters can be specified on this property.

属性参数:可以在此属性上指定非标准属性参数。

Conformance: This property can be specified in "VRIGHT" components.

一致性:此属性可以在“VRIGHT”组件中指定。

Description: This property is used in the "VRIGHT" component to define the CU or UG being denied access.

描述:此属性在“VRIGHT”组件中用于定义被拒绝访问的CU或UG。

Formal Definition: The property is defined by the following notation:

形式定义:属性由以下符号定义:

deny = "DENY" other-params ":" upn-filter CRLF

deny=“deny”其他参数:“upn过滤器CRLF”

Example: The following are examples of this property:

示例:以下是此属性的示例:

DENY:*

否认:*

DENY:bob@example.com

否认:bob@example.com

8.16. EXPAND property
8.16. 扩展属性

Property Name: EXPAND

属性名称:展开

Purpose: This property is used to notify the CS whether to expand any component with recurrence rules into multiple instances, in a query reply.

用途:此属性用于通知CS是否在查询应答中将任何具有重复规则的组件扩展为多个实例。

Value Type: BOOLEAN

值类型:布尔值

Property Parameters: Non-standard property parameters can be specified on this property.

属性参数:可以在此属性上指定非标准属性参数。

Conformance: This property can be specified in "VQUERY" components.

一致性:可以在“VQUERY”组件中指定此属性。

Description: If a CUA wishes to see all of the instances of a recurring component, the CUA sets EXPAND=TRUE in the "VQUERY" component. If not specified, the default is "FALSE". Note that if the CS has its "RECUR-EXPAND" CS property value set to "FALSE", then the "EXPAND" property will be ignored and the result will be as if the "EXPAND" value was set to "FALSE". The results will be bounded by any date range or other limits in the query.

描述:如果CUA希望看到周期性组件的所有实例,CUA将在“VQUERY”组件中设置EXPAND=TRUE。如果未指定,则默认值为“FALSE”。请注意,如果CS的“RECUR-EXPAND”CS属性值设置为“FALSE”,则“EXPAND”属性将被忽略,结果将如同“EXPAND”值设置为“FALSE”。结果将受到查询中任何日期范围或其他限制的限制。

Formal Definition: The property is defined by the following notation:

形式定义:属性由以下符号定义:

         expand     = "EXPAND" other-params ":" ("TRUE" / "FALSE") CRLF
        
         expand     = "EXPAND" other-params ":" ("TRUE" / "FALSE") CRLF
        

Example: The following are examples of this property:

示例:以下是此属性的示例:

EXPAND:FALSE EXPAND:TRUE

展开:FALSE展开:TRUE

8.17. GRANT Property
8.17. 授予财产

Property Name: GRANT

物业名称:格兰特

Purpose: This property identifies the UPN(s) being granted access in the "VRIGHT" component.

用途:此属性标识在“VRIGHT”组件中被授予访问权限的UPN。

Value Type: UPN-FILTER

值类型:UPN-FILTER

Property Parameters: Non-standard property parameters can be specified on this property.

属性参数:可以在此属性上指定非标准属性参数。

Conformance: This property can be specified in "VRIGHT" calendar components.

一致性:此属性可以在“VRIGHT”日历组件中指定。

Description: This property is used in the "VRIGHT" component to specify the CU or UG being granted access.

描述:此属性在“VRIGHT”组件中用于指定被授予访问权限的CU或UG。

Formal Definition: The property is defined by the following notation:

形式定义:属性由以下符号定义:

grant = "GRANT" other-params ":" upn-filter CRLF

grant=“grant”其他参数:“upn过滤器CRLF”

Example: The following are examples of this property:

示例:以下是此属性的示例:

GRANT:*

授予:*

GRANT:bob@example.com

授予:bob@example.com

8.18. ITIP-VERSION Property
8.18. ITIP版本属性

Property Name: ITIP-VERSION

属性名称:ITIP-VERSION

Purpose: This property specifies the version of ITIP supported.

用途:此属性指定支持的ITIP版本。

Value Type: TEXT

值类型:文本

Property Parameters: Non-standard property parameters can be specified on this property.

属性参数:可以在此属性上指定非标准属性参数。

Conformance: This property is specified in the "VREPLY" component that is sent in response to a "GET-CAPABILITY" command.

一致性:此属性在响应“GET-CAPABILITY”命令而发送的“VREPLY”组件中指定。

Description: This specifies the version of ITIP that the endpoint supports. The list is a comma-separated list of supported RFC numbers. The list MUST contain at least 2446, which is [iTIP]

描述:指定端点支持的ITIP版本。该列表是受支持的RFC编号的逗号分隔列表。该列表必须至少包含2446,即[iTIP]

Formal Definition: The property is defined by the following notation:

形式定义:属性由以下符号定义:

itip-version = "ITIP-VERSION" other-params ":" text CRLF

itip version=“itip-version”其他参数:“文本CRLF”

Example: The following are examples of this property:

示例:以下是此属性的示例:

ITIP-VERSION:2446

ITIP-VERSION:2446

8.19. MAX-COMP-SIZE Property
8.19. MAX-COMP-SIZE属性

Property Name: MAX-COMP-SIZE

属性名称:MAX-COMP-SIZE

Purpose: This property specifies the largest size of any object accepted.

用途:此属性指定接受的任何对象的最大大小。

Value Type: TEXT

值类型:文本

Property Parameters: Non-standard property parameters can be specified on this property.

属性参数:可以在此属性上指定非标准属性参数。

Conformance: This property is specified in the "VREPLY" component that is sent in response to a "GET-CAPABILITY" command.

一致性:此属性在响应“GET-CAPABILITY”命令而发送的“VREPLY”组件中指定。

Description: A positive integer value that specifies the size of the largest iCalendar object that can be accepted in octets. Objects larger than this will be rejected. A value of zero (0) means no limit. This is also the maximum value of any [BEEP] payload that will be accepted or sent.

描述:一个正整数值,指定可接受的最大iCalendar对象的大小(以八位字节为单位)。大于此值的对象将被拒绝。零(0)表示没有限制。这也是将被接受或发送的任何[BEEP]有效负载的最大值。

Formal Definition: The property is defined by the following notation:

形式定义:属性由以下符号定义:

max-comp-size = "MAX-COMP-SIZE" other-params ":" posint0 CRLF

max comp size=“max-comp-size”其他参数:“posint0 CRLF

Example: The following are examples of this property:

示例:以下是此属性的示例:

MAX-COMP-SIZE:1024

最大复合尺寸:1024

8.20. MAXDATE Property
8.20. MAXDATE属性

Property Name: MAXDATE

属性名称:MAXDATE

Purpose: This property specifies the date/time in the future, beyond which the CS or CUA cannot represent.

用途:此属性指定未来的日期/时间,超过该日期/时间,CS或CUA将无法表示。

Value Type: DATE-TIME

值类型:日期时间

Property Parameters: Non-standard property parameters can be specified on this property.

属性参数:可以在此属性上指定非标准属性参数。

Conformance: The property can be specified in the "VCALSTORE" component.

一致性:可以在“VCALSTORE”组件中指定属性。

Description: The date and time MUST be a UTC value and end with 'Z'.

说明:日期和时间必须是UTC值,并以“Z”结尾。

Formal Definition: The property is defined by the following notation:

形式定义:属性由以下符号定义:

maxdate = "MAXDATE" other-params ":" date-time CRLF

maxdate=“maxdate”其他参数:“日期时间CRLF”

Example: The following is an example of this property:

示例:以下是此属性的示例:

MAXDATE:20990101T000000Z

最大日期:20990101T000000Z

8.21. MINDATE Property
8.21. MINDATE属性

Property Name: MINDATE

物业名称:MINDATE

Purpose: This property specifies the date/time in the past, prior to which the server cannot represent.

用途:此属性指定服务器无法表示的过去日期/时间。

Value Type: DATE-TIME

值类型:日期时间

Property Parameters: Non-standard property parameters can be specified on this property.

属性参数:可以在此属性上指定非标准属性参数。

Conformance: The property can be specified in the "VCALSTORE" component.

一致性:可以在“VCALSTORE”组件中指定属性。

Description: The date and time MUST be a UTC value and end with 'Z'.

说明:日期和时间必须是UTC值,并以“Z”结尾。

Formal Definition: The property is defined by the following notation:

形式定义:属性由以下符号定义:

mindate = "MINDATE" other-params ":" date-time CRLF

mindate=“mindate”其他参数:“日期时间CRLF”

date-time = ; As defined in [iCAL].

日期时间=;如[iCAL]中所定义。

Example: The following is an example of this property:

示例:以下是此属性的示例:

MINDATE:19710101T000000Z

MINDATE:19710101T000000Z

8.22. MULTIPART Property
8.22. 多部分属性

Property Name: MULTIPART

属性名称:多部分

Purpose: This property provides a comma-separated list of supported MIME multipart types supported by the sender.

用途:此属性提供发件人支持的受支持MIME多部分类型的逗号分隔列表。

Value Type: TEXT

值类型:文本

Property Parameters: Non-standard property parameters can be specified on this property.

属性参数:可以在此属性上指定非标准属性参数。

Conformance: This property is specified in the "VREPLY" component that is sent in response to a "GET-CAPABILITY" command.

一致性:此属性在响应“GET-CAPABILITY”命令而发送的“VREPLY”组件中指定。

Description: This property is used in the in the "GET-CAPABILITY" command reply to indicate the MIME multipart types supported. A CS and CUA SHOULD support all registered MIME multipart types.

描述:此属性在“GET-CAPABILITY”命令答复中用于指示支持的MIME多部分类型。CS和CUA应该支持所有注册的MIME多部分类型。

Formal Definition: The property is defined by the following notation:

形式定义:属性由以下符号定义:

         multipart = "MULTIPART" other-params ":" text *( "," text) CRLF
        
         multipart = "MULTIPART" other-params ":" text *( "," text) CRLF
        

Example: The following is an example of this property:

示例:以下是此属性的示例:

MULTIPART:related,alternate,mixed

多部分:相关、交替、混合

8.23. NAME Property
8.23. 名称属性

Property Name: NAME

属性名称:名称

Purpose: This property provides a localizable display name for a component.

用途:此属性为组件提供可本地化的显示名称。

Value Type: TEXT

值类型:文本

Property Parameters: Non-standard property parameters can be specified on this property.

属性参数:可以在此属性上指定非标准属性参数。

Conformance: This property can be specified in a component.

一致性:可以在组件中指定此属性。

Description: This property is used in the component to specify a localizable display name. If more than one "NAME" properties are in a component, then they MUST have unique "LANG" parameters. If the "LANG" parameter is not supplied, then it defaults to the "VAGENDA" component's "DEFAULT-LOCALE" first value. If the component is a "VAGENDA", then the default value is the "VAGENDA"s component's "DEFAULT-LOCALE" first value. A "VCALSTORE" component's "DEFAULT-LOCALE" first value is the default if the component is stored at the "VCALSTORE" level.

描述:此属性在组件中用于指定可本地化的显示名称。如果一个组件中有多个“名称”属性,则它们必须具有唯一的“LANG”参数。如果未提供“LANG”参数,则默认为“VAGENDA”组件的“DEFAULT-LOCALE”第一个值。如果组件是“VAGENDA”,则默认值是“VAGENDA”组件的“default-LOCALE”第一个值。如果组件存储在“VCALSTORE”级别,“VCALSTORE”组件的“DEFAULT-LOCALE”第一个值是默认值。

Formal Definition: The property is defined by the following notation:

形式定义:属性由以下符号定义:

         name          = "NAME" nameparam ":" text CRLF
                         ;
         nameparam     = other-params [ ";" languageparam ] other-params
                         ;
         languageparam = ; As defined in [iCAL].
        
         name          = "NAME" nameparam ":" text CRLF
                         ;
         nameparam     = other-params [ ";" languageparam ] other-params
                         ;
         languageparam = ; As defined in [iCAL].
        

Example: The following is an example of this property:

示例:以下是此属性的示例:

NAME:Restrict Guests From Creating VALARMs On VEVENTs

名称:限制来宾在VEVENTs上创建VALARMs

8.24. OWNER Property
8.24. 所有者财产

Property Name: OWNER

物业名称:业主

Purpose: The property specifies an owner of the component.

用途:属性指定组件的所有者。

Value Type: UPN

值类型:UPN

Property Parameters: Non-standard, alternate text representation and language property parameters can be specified on this property.

属性参数:可以在此属性上指定非标准、备用文本表示和语言属性参数。

Conformance: The property MUST be specified in a "VAGENDA" component.

一致性:属性必须在“VAGENDA”组件中指定。

Description: A multi-instanced property indicating the calendar owner.

描述:指示日历所有者的多实例属性。

Formal Definition: The property is defined by the following notation:

形式定义:属性由以下符号定义:

owner = "OWNER" other-params ":" upn CRLF

owner=“owner”其他参数:“upn CRLF”

Example: The following is an example of this property:

示例:以下是此属性的示例:

         OWNER:jsmith@example.com
         OWNER:jdough@example.com
        
         OWNER:jsmith@example.com
         OWNER:jdough@example.com
        
8.25. PERMISSION Property
8.25. 权限属性

Property Name: PERMISSION

属性名称:权限

Purpose: This property defines a permission that is granted or denied in a "VRIGHT" component.

用途:此属性定义在“VRIGHT”组件中授予或拒绝的权限。

Value Type: TEXT

值类型:文本

Property Parameters: Non-standard property parameters can be specified on this property.

属性参数:可以在此属性上指定非标准属性参数。

Conformance: This property can be specified in "VRIGHT" components.

一致性:此属性可以在“VRIGHT”组件中指定。

Description: This property is used in the "VRIGHT" component to define a permission that is granted or denied.

描述:此属性在“VRIGHT”组件中用于定义授予或拒绝的权限。

Formal Definition: The property is defined by the following notation:

形式定义:属性由以下符号定义:

         permission  = "PERMISSION" other-params ":" permvalue CRLF
                       ;
         permvalue = ( "SEARCH" / "CREATE" / "DELETE"
                     / "MODIFY" / "MOVE" / all
                     / iana-cmd / x-cmd )
                       ;
         all         = "*"
                       ;
         iana-cmd    = ; Any command registered by IANA directly or
                       ; included in an RFC that may be applied as
                       ; a command.
                       ;
         x-cmd       = ; Any experimental command that starts with
                       ; "x-" or "X-".
        
         permission  = "PERMISSION" other-params ":" permvalue CRLF
                       ;
         permvalue = ( "SEARCH" / "CREATE" / "DELETE"
                     / "MODIFY" / "MOVE" / all
                     / iana-cmd / x-cmd )
                       ;
         all         = "*"
                       ;
         iana-cmd    = ; Any command registered by IANA directly or
                       ; included in an RFC that may be applied as
                       ; a command.
                       ;
         x-cmd       = ; Any experimental command that starts with
                       ; "x-" or "X-".
        

Example: The following is an example of this property:

示例:以下是此属性的示例:

PERMISSION:SEARCH

权限:搜索

8.26. QUERY property
8.26. 查询属性

Property Name: QUERY

属性名称:查询

Purpose: Specifies the query for the component.

目的:指定组件的查询。

Value Type: CAL-QUERY

值类型:CAL-QUERY

Property Parameters: Non-standard property parameters can be specified on this property.

属性参数:可以在此属性上指定非标准属性参数。

Conformance: This property can be specified in "VQUERY" components.

一致性:可以在“VQUERY”组件中指定此属性。

Description: A "QUERY" is used to specify the "CAL-QUERY" (Section 6.1.1 for the query.

说明:“查询”用于指定“CAL-QUERY”(第6.1.1节用于查询)。

Formal Definition: The property is defined by the following notation:

形式定义:属性由以下符号定义:

query = "QUERY" other-params ":" cal-query CRLF

query=“query”其他参数:“cal查询CRLF”

Example: The following is an example of this property:

示例:以下是此属性的示例:

QUERY:SELECT * FROM VEVENT

查询:从VEVENT中选择*

8.27. QUERYID property
8.27. QUERYID属性

Property Name: QUERYID

属性名称:QUERYID

Purpose: Specifies a unique ID for a query in the targeted container.

目的:指定目标容器中查询的唯一ID。

Value Type: TEXT

值类型:文本

Property Parameters: Non-standard property parameters are specified on this property.

属性参数:在此属性上指定了非标准属性参数。

Conformance: This property can be specified in "VQUERY" components.

一致性:可以在“VQUERY”组件中指定此属性。

Description: A "QUERYID" property is used to specify the unique id for a query. A "QUERYID" property value is unique per container.

描述:“QUERYID”属性用于指定查询的唯一id。每个容器的“QUERYID”属性值是唯一的。

Formal Definition: The property is defined by the following notation:

形式定义:属性由以下符号定义:

queryid = "QUERYID" other-params ":" text CRLF

queryid=“queryid”其他参数:“文本CRLF”

Example: The following are examples of this property:

示例:以下是此属性的示例:

QUERYID:Any Text String QUERYID:fetchUnProcessed

QUERYID:任何文本字符串QUERYID:获取未处理

8.28. QUERY-LEVEL Property
8.28. 查询级属性

Property Name: QUERY-LEVEL

属性名称:查询级别

Purpose: This property specifies the level of query supported.

用途:此属性指定支持的查询级别。

Value Type: TEXT

值类型:文本

Property Parameters: Non-standard property parameters can be specified on this property.

属性参数:可以在此属性上指定非标准属性参数。

Conformance: The property can be specified in the "VREPLY" component in response to a "GET-CAPABILITY" command.

一致性:属性可以在“VREPLY”组件中指定,以响应“GET-CAPABILITY”命令。

Description: Indicates level of query support. CAL-QL-NONE is for CS's that allow ITIP methods only to be deposited and nothing else.

描述:表示查询支持的级别。CAL-QL-NONE适用于只允许存放ITIP方法而不允许存放其他方法的CS。

Formal Definition: The property is defined by the following notation:

形式定义:属性由以下符号定义:

         query-level = "QUERY-LEVEL" other-params
                         ":" ( "CAL-QL-1" / "CAL-QL-NONE") CRLF
        
         query-level = "QUERY-LEVEL" other-params
                         ":" ( "CAL-QL-1" / "CAL-QL-NONE") CRLF
        

Example: The following is an example of this property:

示例:以下是此属性的示例:

QUERY-LEVEL:CAL-QL-1

查询级别:CAL-QL-1

8.29. RECUR-ACCEPTED Property
8.29. 可重复接受的财产

Property Name: RECUR-ACCEPTED

属性名称:RECUR-ACCEPTED

Purpose: This property specifies if the endpoint supports recurring instances.

目的:此属性指定端点是否支持重复实例。

Value Type: BOOLEAN

值类型:布尔值

Property Parameters: Non-standard property parameters can be specified on this property.

属性参数:可以在此属性上指定非标准属性参数。

Conformance: The property can be specified in the "VREPLY" component in response to a "GET-CAPABILITY" command.

一致性:属性可以在“VREPLY”组件中指定,以响应“GET-CAPABILITY”命令。

Description: Indicates if recurrence rules are supported. If "FALSE" then the endpoint cannot process any kind of recurring rules.

描述:指示是否支持重复规则。如果为“FALSE”,则端点无法处理任何类型的重复规则。

Formal Definition: The property is defined by the following notation:

形式定义:属性由以下符号定义:

recur-accepted = "RECUR-ACCEPTED" other-params ":" boolean CRLF

recur accepted=“recur-accepted”其他参数:“布尔CRLF”

Example: The following is an example of this property:

示例:以下是此属性的示例:

RECUR-ACCEPTED:TRUE RECUR-ACCEPTED:FALSE

重复-接受:真重复-接受:假

8.30. RECUR-LIMIT Property
8.30. 递归极限性质

Property Name: RECUR-LIMIT

属性名称:RECUR-LIMIT

Purpose: This property specifies the maximum number of instances the endpoint will expand instances at query or storage time.

用途:此属性指定端点在查询或存储时扩展实例的最大实例数。

Value Type: INTEGER

值类型:整数

Property Parameters: Non-standard property parameters can be specified on this property.

属性参数:可以在此属性上指定非标准属性参数。

Conformance: The property can be specified in the "VREPLY" component in response to a "GET-CAPABILITY" command.

一致性:属性可以在“VREPLY”组件中指定,以响应“GET-CAPABILITY”命令。

Description: For implementations that have the "STORES-EXPANDED" value set to "TRUE", this value specifies the maximum number of

描述:对于“STORES-EXPANDED”值设置为“TRUE”的实现,此值指定最大的

instances that will be stored and fetched. For all implementations, this is the maximum number of instances that will be returned when the "EXPAND" parameter is specified as "TRUE" and the results contain an infinite or large number of recurring instances.

将存储和获取的实例。对于所有实现,这是当“EXPAND”参数指定为“TRUE”且结果包含无限或大量重复出现的实例时将返回的最大实例数。

Formal Definition: The property is defined by the following notation:

形式定义:属性由以下符号定义:

recur-limit = "RECUR-LIMIT" other-params ":" posint1 CRLF

recur limit=“recur-limit”其他参数:“posint1 CRLF

Example: The following is an example of this property:

示例:以下是此属性的示例:

RECUR-LIMIT:1000

重现限:1000

8.31. RECUR-EXPAND Property
8.31. 循环扩张性

Property Name: RECUR-EXPAND

属性名称:RECUR-EXPAND

Purpose: This property specifies if the endpoint can expand recurrences into multiple objects.

目的:此属性指定端点是否可以将重复展开为多个对象。

Value Type: BOOLEAN

值类型:布尔值

Property Parameters: Non-standard property parameters can be specified on this property.

属性参数:可以在此属性上指定非标准属性参数。

Conformance: The property can be specified in the "VREPLY" component in response to a "GET-CAPABILITY" command.

一致性:属性可以在“VREPLY”组件中指定,以响应“GET-CAPABILITY”命令。

Description: If "TRUE", then the endpoint can expand an object into multiple instances as defined by its recurrence rules when the "EXPAND" property is supplied. If "FALSE", then the endpoint ignores the "EXPAND" property.

描述:如果为“TRUE”,则当提供“expand”属性时,端点可以将对象扩展为其重复规则定义的多个实例。如果为“FALSE”,则端点将忽略“EXPAND”属性。

Formal Definition: The property is defined by the following notation:

形式定义:属性由以下符号定义:

recur-expand = "RECUR-EXPAND" other-params ":" boolean CRLF

recur expand=“recur-expand”其他参数“:“布尔CRLF

Example: The following is an example of this property:

示例:以下是此属性的示例:

RECUR-EXPAND:TRUE RECUR-EXPAND:FALSE

重复-扩展:真重复-扩展:假

8.32. RESTRICTION Property
8.32. 限制性

Property Name: RESTRICTION

属性名称:限制

Purpose: This property defines restrictions on the result value of new or existing components.

用途:此属性定义对新组件或现有组件的结果值的限制。

Value Type: CAL-QUERY

值类型:CAL-QUERY

Property Parameters: Non-standard property parameters can be specified on this property.

属性参数:可以在此属性上指定非标准属性参数。

Conformance: This property can be specified in "VRIGHT" components, but only when the "PERMISSION" property is set to "CREATE", "MODIFY", or "*" property value.

一致性:此属性可以在“VRIGHT”组件中指定,但仅当“PERMISSION”属性设置为“CREATE”、“MODIFY”或“*”属性值时。

Description: This property is used in the "VRIGHT" component to define restrictions on the components that can be written (i.e., by using the "CREATE" or "MOVE" commands) as well as on the values that may take existent calendar store properties, calendar properties, components, and properties (i.e., by using the "MODIFY" command). Accepted values MUST match any specified "RESTRICTION" property values.

描述:此属性用于“VRIGHT”组件中,以定义对可写入的组件(即通过使用“创建”或“移动”命令)以及可能采用现有日历存储属性、日历属性、组件和属性(即通过使用“修改”命令)的值的限制。接受的值必须与任何指定的“限制”属性值匹配。

Formal Definition: The property is defined by the following notation:

形式定义:属性由以下符号定义:

restriction = "RESTRICTION" other-params ":" cal-query CRLF

restriction=“restriction”其他参数:“cal查询CRLF”

Example: The following are examples of this property:

示例:以下是此属性的示例:

         RESTRICTION:SELECT * FROM VCALENDAR WHERE METHOD = 'REQUEST'
        
         RESTRICTION:SELECT * FROM VCALENDAR WHERE METHOD = 'REQUEST'
        

RESTRICTION:SELECT * FROM VEVENT WHERE SELF() IN ORGANIZER

限制:从组织者中的VEVENT WHERE SELF()中选择*

RESTRICTION:SELECT * FROM VEVENT WHERE 'BUSINESS' IN CATEGORIES

限制:从VEVENT中选择*,其中类别中的“业务”

8.33. SCOPE Property
8.33. 范围属性

Property Name: SCOPE

属性名称:范围

Purpose: This property identifies the objects in the CS to which the access rights apply.

用途:此属性标识CS中应用访问权限的对象。

Value Type: CAL-QUERY

值类型:CAL-QUERY

Property Parameters: Non-standard property parameters can be specified on this property.

属性参数:可以在此属性上指定非标准属性参数。

Conformance: This property can be specified in "VRIGHT" components.

一致性:此属性可以在“VRIGHT”组件中指定。

Description: This property is used in the "VRIGHT" component to define the set of objects, subject to the access right being defined.

描述:此属性在“VRIGHT”组件中用于定义对象集,但需定义访问权限。

Formal Definition: The property is defined by the following notation:

形式定义:属性由以下符号定义:

scope = "SCOPE" other-params ":" cal-query CRLF

scope=“scope”其他参数:“cal查询CRLF”

Example: The following is an example of this property:

示例:以下是此属性的示例:

SCOPE:SELECT DTSTART,DTEND FROM VEVENT WHERE CLASS = 'PUBLIC'

作用域:从VEVENT中选择DTSTART、DTEND,其中类='PUBLIC'

8.34. STORES-EXPANDED Property
8.34. 存储扩展属性

Property Name: STORES-EXPANDED

属性名称:STORES-EXPANDED

Purpose: This property specifies if the sending endpoint expands recurrence rules prior to storing them into the CS.

目的:此属性指定发送端点是否在将重复规则存储到CS之前展开这些规则。

Value Type: BOOLEAN

值类型:布尔值

Property Parameters: Non-standard property parameters can be specified on this property.

属性参数:可以在此属性上指定非标准属性参数。

Conformance: This property can be specified in a "VREPLY" component in response to a "GET-CAPABILITY" command.

一致性:此属性可以在“VREPLY”组件中指定,以响应“GET-CAPABILITY”命令。

Description: If the value is "TRUE", then the endpoint expands recurrence rules and stores the results into the CS. If this is "TRUE", then the "RECUR-LIMIT" property is significant because an infinitely-recurring appointment will store no more than "RECUR-LIMIT" property values into the CS and all other instances will be lost.

描述:如果值为“TRUE”,则端点展开重复规则并将结果存储到CS中。如果这是“TRUE”,则“RECUR-LIMIT”属性很重要,因为无限重复约会将在CS中存储不超过“RECUR-LIMIT”属性值,并且所有其他实例都将丢失。

Formal Definition: The property is specified by the following notation:

形式定义:属性由以下符号指定:

stores-expanded = "STORES-EXPANDED" other-params ":" boolean CRLF

stores expanded=“stores-expanded”其他参数“:“布尔CRLF”

The following is an example of this property:

以下是此属性的示例:

STORES-EXPANDED:TRUE STORES-EXPANDED:FALSE

STORES-EXPANDED:TRUE STORES-EXPANDED:FALSE

8.35. TARGET Property
8.35. 目标属性

Property Name: TARGET

属性名称:目标

Purpose: This property defines the container that the issued command will act upon. Its value is a capurl, as defined in Section 5.

用途:此属性定义发出的命令将对其执行操作的容器。其值是第5节中定义的capurl。

Value Type: URI

值类型:URI

Property Parameters: Non-standard property parameters can be specified on this property.

属性参数:可以在此属性上指定非标准属性参数。

Conformance: This property can be specified in a command component.

一致性:可以在命令组件中指定此属性。

Description: This property value is used to specify the container that the command will effect. When used in a command, the command will be performed on the container that has a capurl matching the value.

描述:此属性值用于指定命令将影响的容器。在命令中使用时,该命令将在具有与该值匹配的capurl的容器上执行。

Formal Definition: The property is specified by the following notation:

形式定义:属性由以下符号指定:

         target   = "TARGET" other-params ":" ( capurl / relcalid ) CRLF
        
         target   = "TARGET" other-params ":" ( capurl / relcalid ) CRLF
        

Example: The following is an example of this property:

示例:以下是此属性的示例:

         TARGET:cap://mycal.example.com
         TARGET:SomeRelCalid
        
         TARGET:cap://mycal.example.com
         TARGET:SomeRelCalid
        
8.36. TRANSP Property
8.36. 运输财产

Property Name: TRANSP

物业名称:TRANSP

Purpose: This property defines whether a component is transparent or not to busy-time searches. This is a modification to [iCAL] "TRANSP" property, in that it adds some values.

用途:此属性定义组件对繁忙时间搜索是否透明。这是对[iCAL]“TRANSP”属性的修改,因为它添加了一些值。

Value Type: TEXT

值类型:文本

Property Parameters: Non-standard property parameters can be specified on this property.

属性参数:可以在此属性上指定非标准属性参数。

Conformance: This property can be specified in a component.

一致性:可以在组件中指定此属性。

Description: Time Transparency is the characteristic of an object that determines whether it appears to consume time on a calendar. Objects that consume actual time for the individual or resource associated with the calendar SHOULD be recorded as "OPAQUE", allowing them to be detected by free-busy time searches. Other objects, which do not take up the individual's (or resource's) time SHOULD be recorded as "TRANSPARENT", making them invisible to free/busy time searches.

描述:时间透明度是一个对象的特征,它决定它是否在日历上消耗时间。为与日历关联的个人或资源消耗实际时间的对象应记录为“不透明”,以便空闲-忙碌时间搜索能够检测到它们。其他不占用个人(或资源)时间的对象应记录为“透明”,使其对忙/闲时间搜索不可见。

Formal Definition: The property is specified by the following notation:

形式定义:属性由以下符号指定:

transp = "TRANSP" other-params ":" transvalue CRLF ; transvalue = "OPAQUE" ;Blocks or opaque on busy time searches.

transp=“transp”其他参数:“transvalue CRLF;transvalue=“不透明”;在繁忙时间搜索时阻塞或不透明。

/ "TRANSPARENT" ; Transparent on busy time searches.

/“透明”;在繁忙时间搜索时透明。

                   / "TRANSPARENT-NOCONFLICT"
                           ; Transparent on busy time searches,
                           ; and no other OPAQUE or OPAQUE-
                           ; NOCONFLICT objects can overlap it.
                           ;
                   / "OPAQUE-NOCONFLICT"
                           ; Opaque on busy time searches, and
                           ; no other OPAQUE or OPAQUE-NOCONFLICT
                           ; objects can overlap it.
                           ;
                           ; Default value is OPAQUE
        
                   / "TRANSPARENT-NOCONFLICT"
                           ; Transparent on busy time searches,
                           ; and no other OPAQUE or OPAQUE-
                           ; NOCONFLICT objects can overlap it.
                           ;
                   / "OPAQUE-NOCONFLICT"
                           ; Opaque on busy time searches, and
                           ; no other OPAQUE or OPAQUE-NOCONFLICT
                           ; objects can overlap it.
                           ;
                           ; Default value is OPAQUE
        

The following is an example of this property for an object that is opaque or blocks on free/busy time searches, and no other object can overlap it:

以下是不透明对象或在忙/闲搜索时阻塞的对象的此属性示例,其他对象不能重叠它:

TRANSP:OPAQUE-NOCONFLICT

传输:不透明-无冲突

9. New Components
9. 新组件
9.1. VAGENDA Component
9.1. 迷走神经成分

Component Name: VAGENDA

组件名称:VAGENDA

Purpose: Provide a grouping of properties that defines an agenda.

目的:提供一组定义议程的属性。

Formal Definition: There are two formats of the "VAGENDA" component. (1) When it is being created, and (2) how it exists in the "VCALSTORE" component.

形式定义:“VAGENDA”组件有两种格式。(1) 何时创建,以及(2)它在“VCALSTORE”组件中的存在方式。

A "VAGENDA" component in a "VCALSTORE" component is defined by the following notes and ABNF notation:

“VCALSTORE”组件中的“VAGENDA”组件由以下注释和ABNF符号定义:

CALSCALE - The value MUST be from the "VCALSTORE" "CALSCALE" property list. The default is the first entry in the VCALSTORE CALSCALE list.

CALSCALE-该值必须来自“VCALSTORE”“CALSCALE”属性列表。默认值是VCALSTORE CALSCALE列表中的第一个条目。

CREATED - The timestamp of the calendar's create date. This

CREATED—日历创建日期的时间戳。这

is a READ ONLY property in a "VAGENDA".

是“VAGENDA”中的只读属性。

LAST-MODIFIED - The timestamp of any change to the "VAGENDA" properties or when any component was last created, modified, or deleted.

LAST-MODIFIED—对“VAGENDA”属性的任何更改的时间戳,或上次创建、修改或删除任何组件的时间戳。

agenda = "BEGIN" ":" "VAGENDA" CRLF agendaprop *(icalobject) ; as defined in [iCAL] "END" ":" "VAGENDA" CRLF

agenda=“BEGIN”:“VAGENDA”CRLF agendaprop*(icalobject);如[iCAL]中定义的“结束”:“VAGENDA”CRLF

      agendaprop  = *(
                    ; The following MUST occur exactly once.
                    ;
                      allow-conflict / relcalid / calscale / created
                    / default-charset / default-locale
                    / default-tzid / last-mod
                    ;
                    ; The following MUST occur at least once.
                    ; and the value MUST NOT be empty.
                    ;
                    / owner
                    ;
                    ; The following are optional,
                    ; and MAY occur more than once.
                    ;
                    / name / related-to / other-props / x-comp
                  )
        
      agendaprop  = *(
                    ; The following MUST occur exactly once.
                    ;
                      allow-conflict / relcalid / calscale / created
                    / default-charset / default-locale
                    / default-tzid / last-mod
                    ;
                    ; The following MUST occur at least once.
                    ; and the value MUST NOT be empty.
                    ;
                    / owner
                    ;
                    ; The following are optional,
                    ; and MAY occur more than once.
                    ;
                    / name / related-to / other-props / x-comp
                  )
        
      icalobject = ; As defined in [iCAL].
                   ;
      created    = ; As defined in [iCAL].
                   ;
      related-to = ; As defined in [iCAL].
        
      icalobject = ; As defined in [iCAL].
                   ;
      created    = ; As defined in [iCAL].
                   ;
      related-to = ; As defined in [iCAL].
        

When creating a VAGENDA, use the following notation:

创建VAGENDA时,请使用以下符号:

agendac = "BEGIN" ":" "VAGENDA" CRLF agendacprop *(icalobject) ; as defined in [iCAL]. "END" ":" "VAGENDA" CRLF

agendac=“BEGIN”“:“VAGENDA”CRLF agendacprop*(icalobject);如[iCAL]中所定义。“结束”:“VAGENDA”CRLF

      agendacprop  = *(
                     ; The following MUST occur exactly once.
                     ;
                       allow-conflict / relcalid / calscale
                     / default-charset / default-locale
                     / default-tzid
        
      agendacprop  = *(
                     ; The following MUST occur exactly once.
                     ;
                       allow-conflict / relcalid / calscale
                     / default-charset / default-locale
                     / default-tzid
        
                     ;
                     ; The following MUST occur at least once.
                     ; and the value MUST NOT be empty.
                     ;
                     / owner
                     ;
                     ; The following are optional,
                     ; and MAY occur more than once.
                     ;
                     / name / related-to / other-props / x-comp
                    )
        
                     ;
                     ; The following MUST occur at least once.
                     ; and the value MUST NOT be empty.
                     ;
                     / owner
                     ;
                     ; The following are optional,
                     ; and MAY occur more than once.
                     ;
                     / name / related-to / other-props / x-comp
                    )
        

To fetch all of the properties from the targeted "VAGENDA" component but do not fetch any components, use:

要从目标“VAGENDA”组件获取所有属性,但不获取任何组件,请使用:

SELECT * FROM VAGENDA

从VAGENDA中选择*

To fetch all of the properties from the targeted VAGENDA and all of the contained components, use the special '*.*' value:

要从目标VAGENDA和包含的所有组件获取所有属性,请使用特殊的“***”值:

SELECT *.* FROM VAGENDA

从VAGENDA中选择**

9.2. VCALSTORE Component
9.2. VCALSTORE组件

Component Name: VCALSTORE

组件名称:VCALSTORE

Purpose: Provide a grouping of properties that defines a calendar store.

目的:提供定义日历存储的属性分组。

Formal Definition: A "VCALSTORE" component is defined by the following table and ABNF notation. The creation of a "VCALSTORE" component is an administrative task and not part of the CAP protocol.

形式定义:“VCALSTORE”组件由下表和ABNF符号定义。创建“VCALSTORE”组件是一项管理任务,而不是CAP协议的一部分。

The following are notes to some of the properties in the "VCALSTORE" component.

以下是“VCALSTORE”组件中某些属性的注释。

CALSCALE - A comma-separated list of CALSCALEs supported by this CS. All "VAGENDA" component calendar CALSCALE properties MUST be from this list. This list MUST contain at least "GREGORIAN". The default for newly created "VAGENDA" components is the first entry.

CALSCALE-此CS支持的以逗号分隔的CALSCALE列表。所有“VAGENDA”组件日历CALSCALE属性必须来自此列表。此列表必须至少包含“公历”。新创建的“VAGENDA”组件的默认值是第一个条目。

RELATED-TO - This is a multiple-instance property. There MUST be a "RELATED-TO" property for each of the "VAGENDA" components contained in the "VCALSTORE" component, each with the "RELTYPE" parameter value set to "CHILD". Other "RELATED-TO" properties may be included.

关联-这是一个多实例属性。“VCALSTORE”组件中包含的每个“VAGENDA”组件都必须有一个“RELATED-TO”属性,每个组件的“RELTYPE”参数值都设置为“CHILD”。可能包括其他“相关”财产。

CREATED - The timestamp of the CS creation time. This is a READ ONLY property.

CREATED—CS创建时间的时间戳。这是一个只读属性。

CSID - The CSID of this calendar store. This MUST NOT be empty. How this property is set in the VCALSTORE is an administrative or implementation-specific issue and is not covered in CAP. This is a READ ONLY property. A suggested value is the fully-qualified host name or a fully-qualified virtual host name supported by the system.

CSID-此日历存储的CSID。这不能是空的。如何在VCALSTORE中设置此属性是一个特定于管理或实现的问题,CAP中未涉及。这是一个只读属性。建议的值是系统支持的完全限定主机名或完全限定虚拟主机名。

LAST-MODIFIED - The timestamp when the Properties of the "VCALSTORE" component were last updated or calendars were created or deleted. This is a READ ONLY PROPERTY.

LAST-MODIFIED—上次更新“VCALSTORE”组件属性或创建或删除日历时的时间戳。这是一个只读属性。

      calstorec     = "BEGIN" ":" "VCALSTORE" CRLF
                   calstoreprop
                   *(vagendac)
                   "END" ":" "VCALSTORE" CRLF
                        ;
      calstoreprop  = *(
                        ; the following MUST occur exactly once
                        ;
                          allow-conflict / calscale / calmaster
                        / created / csid / default-charset
                        / default-locale / default-vcars
                        / default-tzid / last-mod / maxdate / mindate
                        ;
                        ; the following are optional,
                        ; and MAY occur more than once
                        ;
                        / name / related-to / other-props / x-comp
                       )
                     ;
        
      calstorec     = "BEGIN" ":" "VCALSTORE" CRLF
                   calstoreprop
                   *(vagendac)
                   "END" ":" "VCALSTORE" CRLF
                        ;
      calstoreprop  = *(
                        ; the following MUST occur exactly once
                        ;
                          allow-conflict / calscale / calmaster
                        / created / csid / default-charset
                        / default-locale / default-vcars
                        / default-tzid / last-mod / maxdate / mindate
                        ;
                        ; the following are optional,
                        ; and MAY occur more than once
                        ;
                        / name / related-to / other-props / x-comp
                       )
                     ;
        

vagendac = ; As defined in [iCAL]. ; last-mod = ; As defined in [iCAL].

vagendac=;如[iCAL]中所定义;最后模=;如[iCAL]中所定义。

To fetch all of the properties from the targeted VCALSTORE and not fetch the calendars that it contains, use:

要从目标VCALSTORE获取所有属性,而不是获取其中包含的日历,请使用:

SELECT * FROM VCALSTORE

从VCALSTORE中选择*

To fetch all of the properties from the targeted "VCALSTORE" component and all of the contained calendars and all of those calendars' contained properties and components, use the special '*.*' value:

要从目标“VCALSTORE”组件和所有包含的日历以及所有这些日历包含的属性和组件中获取所有属性,请使用特殊的“***”值:

SELECT *.* FROM VCALSTORE

从VCALSTORE中选择*

9.3. VCAR Component
9.3. VCAR组件

Component Name: VCAR

组件名称:VCAR

Purpose: Provide a grouping of calendar access rights.

目的:提供一组日历访问权限。

Formal Definition: A "VCAR" component is defined by the following notation:

形式定义:“VCAR”组件由以下符号定义:

         carc    =  "BEGIN" ":" "VCAR" CRLF
                    carprop 1*rightc
                    "END" ":" "VCAR" CRLF
                 ;
         carprop = 1*(
                 ;
                 ; 'carid' is REQUIRED,
                 ; but MUST NOT occur more than once
                 ;
                  carid /
                 ;
                 ; the following are OPTIONAL,
                 ; and MAY occur more than once
                 ;
          name / decreed / other-props
         )
        
         carc    =  "BEGIN" ":" "VCAR" CRLF
                    carprop 1*rightc
                    "END" ":" "VCAR" CRLF
                 ;
         carprop = 1*(
                 ;
                 ; 'carid' is REQUIRED,
                 ; but MUST NOT occur more than once
                 ;
                  carid /
                 ;
                 ; the following are OPTIONAL,
                 ; and MAY occur more than once
                 ;
          name / decreed / other-props
         )
        

Description: A "VCAR" component is a grouping of properties, and "VRIGHT" components, that represents access rights granted or denied to UPNs.

描述:“VCAR”组件是一组属性和“VRIGHT”组件,表示授予或拒绝UPN的访问权限。

The "CARID" property specifies the local identifier for the "VCAR" component. The "NAME" property specifies a localizable display name.

“CARID”属性指定“VCAR”组件的本地标识符。“NAME”属性指定可本地化的显示名称。

Example: In the following example, the UPN "foo@example.com" is given search access to the "DTSTART" and "DTEND" VEVENT properties. No other access is specified:

示例:在下面的示例中,UPN“foo@example.com已授予对“DTSTART”和“DTEND”VEVENT属性的搜索权限。未指定其他访问权限:

BEGIN:VCAR CARID:View Start and End Times NAME:View Start and End Times BEGIN:VRIGHT GRANT:foo@example.com PERMISSION:SEARCH SCOPE:SELECT DTSTART,DTEND FROM VEVENT END:VRIGHT END:VCAR

开始:VCAR CARID:查看开始和结束时间名称:查看开始和结束时间开始:VRIGHT GRANT:foo@example.com权限:搜索范围:从VEVENT中选择DTSTART、DTEND END END:V右端:VCAR

In this example, all UPNs are given search access to "DTSTART" and "DTEND" properties of VEVENT components. "All CUs and UGs" are specified by the UPN value "*". Note that this enumerated UPN value is not in quotes:

在本例中,所有UPN都有权搜索VEVENT组件的“DTSTART”和“DTEND”属性。“所有CU和UGs”由UPN值“*”指定。请注意,此枚举UPN值不在引号中:

BEGIN:VCAR CARID:ViewStartEnd2 NAME:View Start and End Times 2 BEGIN:VRIGHT GRANT:* PERMISSION:SEARCH SCOPE:SELECT DTSTART,DTEND FROM VEVENT END:VRIGHT END:VCAR

开始:VCAR CARID:ViewStartEnd2名称:查看开始和结束时间2开始:授权:*权限:搜索范围:从VEVENT End选择DTSTART、DTEND结束:VRRIGHT End:VCAR

In these examples, full calendar access rights are given to the CAL-OWNERS(), and a hypothetical administrator is given access rights to specify calendar access rights. If no other rights are specified, only these two UPNs can specify calendar access rights:

在这些示例中,CAL-OWNERS()拥有完整的日历访问权限,而假定的管理员拥有指定日历访问权限的访问权限。如果未指定其他权限,则只有这两个UPN可以指定日历访问权限:

         BEGIN:VCAR
         CARID:some-id-3
         NAME:Only OWNER or ADMIN Settable VCARs
         BEGIN:VRIGHT
         GRANT:CAL-OWNERS()
         PERMISSION:*
         SCOPE:SELECT * FROM VAGENDA
         END:VRIGHT
         BEGIN:VRIGHT
         GRANT:cal-admin@example.com
         PERMISSION:*
         SCOPE:SELECT * FROM VCAR
         RESTRICTION:SELECT * FROM VCAR
         END:VRIGHT
         END:VCAR
        
         BEGIN:VCAR
         CARID:some-id-3
         NAME:Only OWNER or ADMIN Settable VCARs
         BEGIN:VRIGHT
         GRANT:CAL-OWNERS()
         PERMISSION:*
         SCOPE:SELECT * FROM VAGENDA
         END:VRIGHT
         BEGIN:VRIGHT
         GRANT:cal-admin@example.com
         PERMISSION:*
         SCOPE:SELECT * FROM VCAR
         RESTRICTION:SELECT * FROM VCAR
         END:VRIGHT
         END:VCAR
        

In this example, rights to write, search, modify or delete calendar access are denied to all UPNs. This example would

在此示例中,所有UPN都被拒绝具有写入、搜索、修改或删除日历访问的权限。这个例子会

disable providing different access rights to the calendar store or calendar. This calendar access right should be specified with great care, as it removes the ability to change calendar access; even for the owner or administrator. It could be used by small devices that do not support changing any VCAR:

禁用为日历存储或日历提供不同的访问权限。此日历访问权限的指定应非常小心,因为它会删除更改日历访问权限的功能;即使是所有者或管理员。它可用于不支持更换任何VCAR的小型设备:

         BEGIN:VCAR
         CARID:VeryRestrictiveVCAR-2
         NAME:No CAR At All
         BEGIN:VRIGHT
         DENY:*
         PERMISSION:*
         SCOPE:SELECT * FROM VCAR
         END:VRIGHT
         END:VCAR
        
         BEGIN:VCAR
         CARID:VeryRestrictiveVCAR-2
         NAME:No CAR At All
         BEGIN:VRIGHT
         DENY:*
         PERMISSION:*
         SCOPE:SELECT * FROM VCAR
         END:VRIGHT
         END:VCAR
        
9.4. VRIGHT Component
9.4. VRIGHT组件

Component Name: "VRIGHT"

组件名称:“VRIGHT”

Purpose: Provide a grouping of properties that describe an access right (granted or denied).

目的:提供一组描述访问权限(授予或拒绝)的属性。

Formal Definition: A "VRIGHT" component is defined by the following notation:

形式定义:“VRIGHT”组件由以下符号定义:

         rightc    = "BEGIN" ":" "VRIGHT" CRLF
                     rightprop
                     "END" ":" "VRIGHT" CRLF
                   ;
         rightprop = 2*(
                   ;
                   ; either 'grant' or 'deny' MUST
                   ; occur at least once
                   ; and MAY occur more than once
                   ;
                    grant / deny /
                   ;
                   ; 'permission' MUST occur at least once
                   ; and MAY occur more than once
                   ;
                    permission /
                   ;
                   ; the following are optional,
                   ; and MAY occur more than once
                   ;
                    scope / restriction / other-props
                )
        
         rightc    = "BEGIN" ":" "VRIGHT" CRLF
                     rightprop
                     "END" ":" "VRIGHT" CRLF
                   ;
         rightprop = 2*(
                   ;
                   ; either 'grant' or 'deny' MUST
                   ; occur at least once
                   ; and MAY occur more than once
                   ;
                    grant / deny /
                   ;
                   ; 'permission' MUST occur at least once
                   ; and MAY occur more than once
                   ;
                    permission /
                   ;
                   ; the following are optional,
                   ; and MAY occur more than once
                   ;
                    scope / restriction / other-props
                )
        

Description: A "VRIGHT" component is a grouping of calendar access right properties.

说明:“VRIGHT”组件是日历访问权限属性的分组。

The "GRANT" property specifies the UPN that is being granted access. The "DENY" property specifies the UPN that is being denied access. The "PERMISSION" property specifies the actual permission being set. The "SCOPE" property identifies the calendar store properties, calendar properties, components, or properties to which the access right applies. The "RESTRICTION" property specifies restrictions on commands and results. If the command does not match the restrictions, or if the results of the command do not match the restrictions, then it is an access violation.

“GRANT”属性指定被授予访问权限的UPN。“DENY”属性指定被拒绝访问的UPN。“权限”属性指定要设置的实际权限。“范围”属性标识日历存储属性、日历属性、组件或应用访问权限的属性。“RESTRICTION”属性指定对命令和结果的限制。如果该命令与限制不匹配,或者该命令的结果与限制不匹配,则属于访问冲突。

9.5. VREPLY Component
9.5. VREPLY组件

Component Name: "VREPLY"

组件名称:“VREPLY”

Purpose: Provide a grouping of arbitrary properties and components that are the data set result from an issued command.

目的:提供任意属性和组件的分组,这些属性和组件是由发出的命令生成的数据集。

Formal Definition: A "VREPLY" component is defined by the following notation:

形式定义:“VREPLY”组件由以下符号定义:

replyc = "BEGIN" ":" "VREPLY" CRLF any-prop-or-comp "END" ":" "VREPLY" CRLF ; any-prop-or-comp = ; Zero or more iana or experimental ; properties and components, in any order.

replyc=“BEGIN”“:“VREPLY”CRLF任何道具或组件“END”“:“VREPLY”CRLF;任何道具或组件=;零个或多个iana或实验性;属性和组件,按任意顺序排列。

Description: Provide a grouping of arbitrary properties and components that are the data set result from an issued command.

描述:提供任意属性和组件的分组,这些属性和组件是由发出的命令生成的数据集。

A query can return a predictable set of arbitrary properties and components. This component is used by query and other commands to return data that does not fit into any other component. It may contain any valid property or component, even if they are not registered.

查询可以返回一组可预测的任意属性和组件。查询和其他命令使用此组件返回不适合任何其他组件的数据。它可能包含任何有效的属性或组件,即使它们未注册。

9.6. VQUERY Component
9.6. VQUERY组件

Component Name: VQUERY

组件名称:VQUERY

Purpose: A component describes a set of objects to be acted upon.

目的:组件描述一组要操作的对象。

Formal Definition: A "VQUERY" component is defined by the following notation:

形式定义:“VQUERY”组件由以下符号定义:

      queryc    =  "BEGIN" ":" "VQUERY" CRLF
                   queryprop
                   "END" ":" "VCAR" CRLF
                ;
      queryprop = 1*(
                ;
                ; 'queryid' is OPTIONAL but MUST NOT occur
                ; more than once. If the "TARGET" property
                ; is supplied then the "QUERYID" property
                ; MUST be supplied.
                ;
                 queryid / target
                ;
                ; 'expand' is OPTIONAL but MUST NOT occur
                ; more than once.
                ;
                 expand
                ;
                ; the following are OPTIONAL, and MAY occur
                ; more than once
                ;
                / name / other-props
                ;
                ; the following MUST occur at least once if
                ; queryid is not supplied.
                ;
                / query
              )
        
      queryc    =  "BEGIN" ":" "VQUERY" CRLF
                   queryprop
                   "END" ":" "VCAR" CRLF
                ;
      queryprop = 1*(
                ;
                ; 'queryid' is OPTIONAL but MUST NOT occur
                ; more than once. If the "TARGET" property
                ; is supplied then the "QUERYID" property
                ; MUST be supplied.
                ;
                 queryid / target
                ;
                ; 'expand' is OPTIONAL but MUST NOT occur
                ; more than once.
                ;
                 expand
                ;
                ; the following are OPTIONAL, and MAY occur
                ; more than once
                ;
                / name / other-props
                ;
                ; the following MUST occur at least once if
                ; queryid is not supplied.
                ;
                / query
              )
        

Description: A "VQUERY" contains properties that describe which properties and components the CS is requested to act upon.

描述:“VQUERY”包含描述请求CS对哪些属性和组件进行操作的属性。

The "QUERYID" property specifies the local identifier for a "VQUERY" component.

“QUERYID”属性指定“VQUERY”组件的本地标识符。

For a search, if the "TARGET" property is supplied in a "VQUERY" component, then the CS is to search for the query in the CALID supplied by the "TARGET" property value.

对于搜索,如果“VQUERY”组件中提供了“TARGET”属性,则CS将在“TARGET”属性值提供的CALID中搜索查询。

For a create, the "TARGET" property MUST NOT be supplied because the destination container is already supplied in the "TARGET" property of the "VCALENDAR" component.

对于创建,不能提供“TARGET”属性,因为目标容器已在“VCALENDAR”组件的“TARGET”属性中提供。

Examples: see Section 6.1.1.

示例:见第6.1.1节。

10. Commands and Responses
10. 命令和响应

CAP commands and responses are described in this section.

本节介绍CAP命令和响应。

10.1. CAP Commands (CMD)
10.1. CAP命令(CMD)

All commands are sent using the CMD property.

所有命令都使用CMD属性发送。

Property Name: CMD

属性名称:CMD

Purpose: This property defines the command to be sent.

用途:此属性定义要发送的命令。

Value Type: TEXT

值类型:文本

Property Parameters: Non-standard, id, localize, latency, action or options.

属性参数:非标准、id、本地化、延迟、操作或选项。

Conformance: This property is the method used to specify the commands to a CS; it can exist in any object sent to the CS.

一致性:此属性是用于指定CS命令的方法;它可以存在于发送到CS的任何对象中。

Description: All of the commands to the CS are supplied in this property. The "OPTIONS" parameter is overloaded and its meaning is dependent on the CMD value supplied.

说明:此属性中提供了CS的所有命令。“OPTIONS”参数重载,其含义取决于提供的CMD值。

Formal Definition: The property is defined by the following notation:

形式定义:属性由以下符号定义:

         cmd              = "CMD" (
                            abort-cmd
                          / continue-cmd
                          / create-cmd
                          / delete-cmd
                          / generate-uid-cmd
                          / get-capability-cmd
                          / identify-cmd
                          / modify-cmd
                          / move-cmd
                          / reply-cmd
                          / search-cmd
                          / set-locale-cmd
                          / iana-cmd
                          / x-cmd
                           ) CRLF
                         ;
         option-value    = "OPTION" "=" paramtext
                         ;
         paramtext       ; As defined in [iCAL].
        
         cmd              = "CMD" (
                            abort-cmd
                          / continue-cmd
                          / create-cmd
                          / delete-cmd
                          / generate-uid-cmd
                          / get-capability-cmd
                          / identify-cmd
                          / modify-cmd
                          / move-cmd
                          / reply-cmd
                          / search-cmd
                          / set-locale-cmd
                          / iana-cmd
                          / x-cmd
                           ) CRLF
                         ;
         option-value    = "OPTION" "=" paramtext
                         ;
         paramtext       ; As defined in [iCAL].
        

Calendaring commands allow a CUA to directly manipulate a calendar.

日历命令允许CUA直接操作日历。

Calendar access rights can be granted or denied for any commands.

可以为任何命令授予或拒绝日历访问权限。

10.1.1. Bounded Latency
10.1.1. 有界延迟

A CAP command can have an associated maximum latency time by specifying the "LATENCY" parameter. If the command is unable to be completed in the specified amount of time (as specified by the "LATENCY" parameter value with an "ACTION" parameter set to the "ASK" value), then a "TIMEOUT" command MUST be sent on the same channel". The reply MUST be a an "ABORT" or a "CONTINUE" command. If the CUA initiated the original command, then the CS would issue the "TIMEOUT" command and the CUA would then have to issue an "ABORT" or "CONTINUE" command. If the CS initiated the original command then the CUA would have to issue the "TIMEOUT" and the CS would send the "ABORT" or "CONTINUE".

通过指定“latency”参数,CAP命令可以具有相关的最大延迟时间。如果命令无法在指定的时间内完成(由“延迟”参数值指定,且“操作”参数设置为“ASK”值),则必须在同一通道上发送“超时”命令。回复必须为“中止”或“继续”“命令。如果CUA启动了原始命令,则CS将发出“超时”命令,CUA将不得不发出“中止”或“继续”命令。如果CS启动了原始命令,则CUA必须发出“超时”,CS将发送“中止”或“继续”。

Upon receiving an "ABORT" command, the command must then be terminated. Only the "ABORT", "TIMEOUT", "REPLY, and "CONTINUE" commands cannot be aborted. The "ABORT", "TIMEOUT", and "REPLY" commands MUST NOT have latency set.

收到“中止”命令后,必须终止该命令。只有“中止”、“超时”、“回复”和“继续”命令不能中止。“中止”、“超时”和“回复”命令不得设置延迟。

Upon receiving a "CONTINUE" command the work continues as if it had not been delayed or stopped. Note that a new latency time MAY be included in a "CONTINUE" command indicating to continue the original command until the "LATENCY" parameter value expires or the results of the original command can be returned.

收到“继续”命令后,工作继续进行,就好像它没有被延迟或停止一样。请注意,“继续”命令中可能包含新的延迟时间,指示继续原始命令,直到“延迟”参数值过期或可以返回原始命令的结果。

Both the "LATENCY" parameter and the "ACTION" parameter MUST be supplied to any "CMD" property, or nether can be added to the "CMD" property. The "LATENCY" parameter MUST be set to the maximum latency time in seconds. The "ACTION" parameter accepts the following values: "ASK" and "ABORT" parameters.

必须向任何“CMD”属性提供“LATENCY”参数和“ACTION”参数,否则可以将nether添加到“CMD”属性。“延迟”参数必须设置为以秒为单位的最大延迟时间。“ACTION”参数接受以下值:“ASK”和“ABORT”参数。

If the maximum latency time is exceeded and the "ACTION" parameter is set to the "ASK" value, then "TIMEOUT" command MUST be sent. Otherwise, if the "ACTION" parameter is set to the "ABORT" value, then the command MUST be terminated and return a REQUEST-STATUS code of 2.0.3 for the original command.

如果超过最大延迟时间且“ACTION”参数设置为“ASK”值,则必须发送“TIMEOUT”命令。否则,如果“ACTION”参数设置为“ABORT”值,则必须终止该命令,并为原始命令返回2.0.3的请求状态代码。

If a CS can both start sending the reply to a command and guarantee that all of the results can be sent from a command (short of something like network or power failure) prior to the "LATENCY" timeout value, then the "LATENCY" time has not expired.

如果CS可以在“延迟”超时值之前开始向命令发送回复,并保证所有结果都可以从命令发送(不包括网络或电源故障),则“延迟”时间尚未过期。

Example:

例子:

In this example the initiator asks for the listeners capabilities.

在本例中,启动器请求侦听器功能。

      I: Content-Type: text/calendar
      I:
      I: BEGIN:VCALENDAR
      I: VERSION:2.0
      I: PRODID:The CUA's PRODID
      I: CMD;ID=xyz12346;LATENCY=3;ACTION=ask:GET-CAPABILITY
      I: END:VCALENDAR
        
      I: Content-Type: text/calendar
      I:
      I: BEGIN:VCALENDAR
      I: VERSION:2.0
      I: PRODID:The CUA's PRODID
      I: CMD;ID=xyz12346;LATENCY=3;ACTION=ask:GET-CAPABILITY
      I: END:VCALENDAR
        

# After 3 seconds

#3秒后

      L: Content-Type: text/calendar
      L:
      L: BEGIN:VCALENDAR
      L: PRODID:-//someone's prodid
      L: VERSION:2.0
      L: CMD;ID=xyz12346:TIMEOUT
      L: END:VCALENDAR
        
      L: Content-Type: text/calendar
      L:
      L: BEGIN:VCALENDAR
      L: PRODID:-//someone's prodid
      L: VERSION:2.0
      L: CMD;ID=xyz12346:TIMEOUT
      L: END:VCALENDAR
        

In order to continue and give the CS more time, the CUA would issue a "CONTINUE" command:

为了继续并给CS更多时间,CUA将发出“继续”命令:

      I: Content-Type: text/calendar
      I:
      I: BEGIN:VCALENDAR
      I: VERSION:2.0
      I: PRODID:-//someone's prodid
      I: CMD;ID=xyz12346;LATENCY=3;ACTION=ask:CONTINUE
      I: END:VCALENDAR
        
      I: Content-Type: text/calendar
      I:
      I: BEGIN:VCALENDAR
      I: VERSION:2.0
      I: PRODID:-//someone's prodid
      I: CMD;ID=xyz12346;LATENCY=3;ACTION=ask:CONTINUE
      I: END:VCALENDAR
        
      L: Content-Type: text/calendar
      L:
      L: BEGIN:VCALENDAR
      L: VERSION:2.0
      L: PRODID:-//someone's prodid
      L: CMD;ID=xyz12346:REPLY
      L: BEGIN:VREPLY
      L: REQUEST-STATUS:2.0.3;Continued for 3 more seconds
      L: END:VREPLY
      L: END:VCALENDAR
        
      L: Content-Type: text/calendar
      L:
      L: BEGIN:VCALENDAR
      L: VERSION:2.0
      L: PRODID:-//someone's prodid
      L: CMD;ID=xyz12346:REPLY
      L: BEGIN:VREPLY
      L: REQUEST-STATUS:2.0.3;Continued for 3 more seconds
      L: END:VREPLY
      L: END:VCALENDAR
        

Here the "2.0.3" status is returned because it is not an error, it is a progress status sent in reply to the "CONTINUE" command.

此处返回“2.0.3”状态,因为它不是错误,而是响应“继续”命令而发送的进度状态。

To abort the command and not wait any further, issue an "ABORT" command:

要中止命令且不再等待,请发出“中止”命令:

      I: Content-Type: text/calendar
      I:
      I: BEGIN:VCALENDAR
      I: VERSION:2.0
      I: PRODID:-//someone's prodid
      I: CMD;ID=xyz12346:ABORT
      I: END:VCALENDAR
        
      I: Content-Type: text/calendar
      I:
      I: BEGIN:VCALENDAR
      I: VERSION:2.0
      I: PRODID:-//someone's prodid
      I: CMD;ID=xyz12346:ABORT
      I: END:VCALENDAR
        

# Which would result in a 2.0.3 reply.

#这将导致2.0.3的答复。

      L: Content-Type: text/calendar
      L:
      L: BEGIN:VCALENDAR
      L: VERSION:2.0
      L: PRODID:-//someone's prodid
      L: CMD;ID=xyz12346:REPLY
      L: BEGIN:VREPLY
      L: REQUEST-STATUS:2.0.3;Aborted As Requested.
      L: END:VREPLY
      L: END:VCALENDAR
        
      L: Content-Type: text/calendar
      L:
      L: BEGIN:VCALENDAR
      L: VERSION:2.0
      L: PRODID:-//someone's prodid
      L: CMD;ID=xyz12346:REPLY
      L: BEGIN:VREPLY
      L: REQUEST-STATUS:2.0.3;Aborted As Requested.
      L: END:VREPLY
      L: END:VCALENDAR
        

If the "ACTION" value had been set to "ABORT", then the listner would send a "7.0" error on timeout in the reply to the command that initiated the command that timed out.

如果“ACTION”值已设置为“ABORT”,则listner将在回复启动超时命令的命令时发送超时错误“7.0”。

10.2. ABORT Command
10.2. 中止命令

CMD: ABORT

指令:中止

Purpose: The "ABORT" command is sent to request that the named or the only in-process command be aborted. Latency MUST not be supplied with the "ABORT" command.

目的:“中止”命令用于请求中止指定的或唯一的进程内命令。“中止”命令不得提供延迟。

Formal Definition: An "ABORT" command is defined by the following notation:

正式定义:“中止”命令由以下符号定义:

         abort-cmd    = abortparam ":" "ABORT"
                      ;
         abortparam   = *(
                      ;
                      ; the following are optional,
                      ; but MUST NOT occur more than once
                      ;
                        id-param
                      / localize-param
                      ;
                      ; the following is optional,
                      ; and MAY occur more than once
                      ;
                      / other-params
                      )
        
         abort-cmd    = abortparam ":" "ABORT"
                      ;
         abortparam   = *(
                      ;
                      ; the following are optional,
                      ; but MUST NOT occur more than once
                      ;
                        id-param
                      / localize-param
                      ;
                      ; the following is optional,
                      ; and MAY occur more than once
                      ;
                      / other-params
                      )
        

The REPLY of any "ABORT" command is:

任何“中止”命令的回复为:

abort-reply = "BEGIN" ":" "VCALENDAR" CRLF calprops abort-vreply "END" ":" "VCALENDAR" CRLF ; abort-vreply = "BEGIN" ":" "VREPLY" CRLF rstatus other-props "END" ":" "VREPLY" CRLF

abort reply=“BEGIN”“:”“VCALENDAR”CRLF calprops中止vreply“END”“:”“VCALENDAR”CRLF;中止vreply=“开始”:“vreply”CRLF rstatus其他道具“结束”:“vreply”CRLF

10.3. CONTINUE Command
10.3. 继续命令

CMD: CONTINUE

CMD:继续吗

Purpose: The "CONTINUE" command is only sent after a "TIMEOUT" command has been received to inform the other end of the session to resume working on a command.

目的:“继续”命令仅在收到“超时”命令后发送,以通知会话的另一端继续处理命令。

Formal Definition: A "CONTINUE" command is defined by the following notation:

形式定义:“CONTINUE”命令由以下符号定义:

         continue-cmd   = continueparam ":" "CONTINUE"
                      ;
         continueparam  = *(
                      ;
                      ; the following are optional,
                      ; but MUST NOT occur more than once
                      ;
                           id-param
                         / localize-param
        
         continue-cmd   = continueparam ":" "CONTINUE"
                      ;
         continueparam  = *(
                      ;
                      ; the following are optional,
                      ; but MUST NOT occur more than once
                      ;
                           id-param
                         / localize-param
        
                         / latency-param
                      ;
                      ; the following MUST occur exactly once and only
                      ; when the latency-param has been supplied and
                      ; MUST NOT be supplied if the latency-param is
                      ; not supplied.
                      ;
                         / action-param
                      ;
                      ; the following are optional,
                      ; and MAY occur more than once
                      ;
                         / other-params
                         )
        
                         / latency-param
                      ;
                      ; the following MUST occur exactly once and only
                      ; when the latency-param has been supplied and
                      ; MUST NOT be supplied if the latency-param is
                      ; not supplied.
                      ;
                         / action-param
                      ;
                      ; the following are optional,
                      ; and MAY occur more than once
                      ;
                         / other-params
                         )
        

The REPLY of any "CONTINUE" command is:

任何“继续”命令的回复为:

continue-reply = "BEGIN" ":" "VCALENDAR" CRLF calprops continue-vreply "END" ":" "VCALENDAR" CRLF ; continue-vreply = "BEGIN" ":" "VREPLY" CRLF rstatus other-props "END" ":" "VREPLY" CRLF

continue reply=“BEGIN”“:”“VCALENDAR”CRLF calprops继续vreply“END”“:”“VCALENDAR”CRLF;继续vreply=“BEGIN”“:“vreply”CRLF rstatus其他道具“END”“:“vreply”CRLF

10.4. CREATE Command
10.4. 创建命令

CMD: CREATE

CMD:创建

Purpose: The "CREATE" command is used to create one or more iCalendar objects in the store in the "BOOKED" or "UNPROCESSED" state.

用途:“创建”命令用于在存储中创建一个或多个处于“已预订”或“未处理”状态的iCalendar对象。

A CUA MAY send a "CREATE" command to a CS. The "CREATE" command MUST be implemented by all CSs.

CUA可向CS发送“创建”命令。“CREATE”命令必须由所有CSs实现。

The CS MUST NOT send a "CREATE" command to any CUA.

CS不得向任何CUA发送“创建”命令。

Formal Definition: A "CREATE" command is defined by the following notation and the hierarchy restrictions, as defined in Section 3.2:

形式定义:“创建”命令由以下符号和层次结构限制定义,如第3.2节所定义:

         create-cmd     = createparam ":" "CREATE"
                      ;
         createparam    = *(
                      ;
        
         create-cmd     = createparam ":" "CREATE"
                      ;
         createparam    = *(
                      ;
        
                      ; the following are optional,
                      ; but MUST NOT occur more than once
                      ;
                          id-param
                        / localize-param
                        / latency-param
                      ;
                      ; the following MUST occur exactly once and only
                      ; when the latency-param has been supplied and
                      ; MUST NOT be supplied if the latency-param is
                      ; not supplied.
                      ;
                        / action-param
                      ;
                      ; the following is optional,
                      ; and MAY occur more than once
                      ;
                        / other-params
                       )
        
                      ; the following are optional,
                      ; but MUST NOT occur more than once
                      ;
                          id-param
                        / localize-param
                        / latency-param
                      ;
                      ; the following MUST occur exactly once and only
                      ; when the latency-param has been supplied and
                      ; MUST NOT be supplied if the latency-param is
                      ; not supplied.
                      ;
                        / action-param
                      ;
                      ; the following is optional,
                      ; and MAY occur more than once
                      ;
                        / other-params
                       )
        

Response:

答复:

One iCalendar object per TARGET property MUST be returned.

每个目标属性必须返回一个iCalendar对象。

The REPLY of any "CREATE" command is limited to the restriction tables defined in [iTIP] for iTIP objects, in addition to this ABNF:

任何“创建”命令的回复仅限于[iTIP]中为iTIP对象定义的限制表,除此之外:

create-reply = "BEGIN" ":" "VCALENDAR" CRLF creply-props 1*(create-vreply) "END" ":" "VCALENDAR" CRLF

create reply=“BEGIN”“:”“VCALENDAR”CRLF CRPLY props 1*(create vreply)“END”“:”“VCALENDAR”CRLF

                     ;
      create-vreply  = "BEGIN" ":" "VREPLY" CRLF
                       created-id
                       rstatus
                       other-props
                       "END" ":" "VREPLY" CRLF
                     ;
                     ; Where the id is appropriate for the
                     ; type of object created:
                     ;
                     ; VAGENDA = relcalid
                     ; VALARM = sequence
                     ; VCAR = carid
                     ; VEVENT, VFREEBUSY, VJOURNAL, VTODO = uid
                     ; VQUERY = queryid
                     ; VTIMEZONE = tzid
                     ; x-comp = x-id
                     ;
      created-id    = ( relcalid / carid / uid / queryid /
                        tzid / sequence / x-id)
                      ;
      tzid          = ; As defined in [iCAL].
                      ;
      sequence      = ; As defined in [iCAL].
                      ;
      uid           = ; As defined in [iCAL].
                      ;
      x-id          = ; An ID for an x-component.
                      ;
      creply-props  = 4*(
                      ; These are REQUIRED and MUST NOT occur
                      ; more than once.
                      ;
                       prodid /version / target / reply-cmd
                      ;
                      ; These are optional, and may occur more
                      ; than once.
                      ;
                       other-props )
        
                     ;
      create-vreply  = "BEGIN" ":" "VREPLY" CRLF
                       created-id
                       rstatus
                       other-props
                       "END" ":" "VREPLY" CRLF
                     ;
                     ; Where the id is appropriate for the
                     ; type of object created:
                     ;
                     ; VAGENDA = relcalid
                     ; VALARM = sequence
                     ; VCAR = carid
                     ; VEVENT, VFREEBUSY, VJOURNAL, VTODO = uid
                     ; VQUERY = queryid
                     ; VTIMEZONE = tzid
                     ; x-comp = x-id
                     ;
      created-id    = ( relcalid / carid / uid / queryid /
                        tzid / sequence / x-id)
                      ;
      tzid          = ; As defined in [iCAL].
                      ;
      sequence      = ; As defined in [iCAL].
                      ;
      uid           = ; As defined in [iCAL].
                      ;
      x-id          = ; An ID for an x-component.
                      ;
      creply-props  = 4*(
                      ; These are REQUIRED and MUST NOT occur
                      ; more than once.
                      ;
                       prodid /version / target / reply-cmd
                      ;
                      ; These are optional, and may occur more
                      ; than once.
                      ;
                       other-props )
        

For a "CREATE" command, the "TARGET" property specifies the containers where the components will be created.

对于“CREATE”命令,“TARGET”属性指定将在其中创建组件的容器。

If the iCalendar object being created does not have a "METHOD" property, then its state is "BOOKED" and it is not an [iTIP] scheduling object. Use the "DELETE" command to set the state of an object to the "DELETED" state (tagged for deletion). A CUA cannot use the "CREATE" command to create an object in the "DELETED" state.

如果正在创建的iCalendar对象没有“METHOD”属性,则其状态为“BOOKED”,并且不是[iTIP]调度对象。使用“删除”命令将对象的状态设置为“已删除”状态(标记为删除)。CUA不能使用“创建”命令创建处于“已删除”状态的对象。

If the intention is to book an [iTIP] object, then the "METHOD" property MUST NOT be supplied. Otherwise, any [iTIP] object MUST have a valid [iTIP] "METHOD" property value and it is a scheduling request being deposited into the CS with its state set to "UNPROCESSED".

如果打算预订[iTIP]对象,则不得提供“方法”属性。否则,任何[iTIP]对象必须具有有效的[iTIP]“METHOD”属性值,并且它是一个正在存放到CS中的调度请求,其状态设置为“未处理”。

Format Definition: ABNF for a "CREATE" object is:

格式定义:“创建”对象的ABNF为:

      create-object = "BEGIN" ":" "VCALENDAR" CRLF
                ; If 'calprops' contain the "METHOD" property
                ; then this 'create-object' component MUST
                ; conform to [iTIP] restrictions.
                ;
                ; calprops MUST include 'create-cmd'
                ;
                      calprops
                      other-props
                      1*(create-comp)
                      "END" ":" "VCALENDAR" CRLF
        
      create-object = "BEGIN" ":" "VCALENDAR" CRLF
                ; If 'calprops' contain the "METHOD" property
                ; then this 'create-object' component MUST
                ; conform to [iTIP] restrictions.
                ;
                ; calprops MUST include 'create-cmd'
                ;
                      calprops
                      other-props
                      1*(create-comp)
                      "END" ":" "VCALENDAR" CRLF
        
                ; NOTE: The 'VCALSTORE' component is not included in
                ; 'create-comp' as it is out of scope for CAP to create
                ; a new CS.
                ;
       create-comp =  agendac / carc / queryc
                     / timezonec / freebusyc
                     / eventc / todoc / journalc
                     / iana-comp / x-comp
                     ;
      freebusyc    = ; As defined in [iCAL].
                     ;
      eventc       = ; As defined in [iCAL].
                     ;
      journalc     = ; As defined in [iCAL].
                     ;
      timezonec    = ; As defined in [iCAL].
                     ;
      todoc        = ; As defined in [iCAL].
        
                ; NOTE: The 'VCALSTORE' component is not included in
                ; 'create-comp' as it is out of scope for CAP to create
                ; a new CS.
                ;
       create-comp =  agendac / carc / queryc
                     / timezonec / freebusyc
                     / eventc / todoc / journalc
                     / iana-comp / x-comp
                     ;
      freebusyc    = ; As defined in [iCAL].
                     ;
      eventc       = ; As defined in [iCAL].
                     ;
      journalc     = ; As defined in [iCAL].
                     ;
      timezonec    = ; As defined in [iCAL].
                     ;
      todoc        = ; As defined in [iCAL].
        

In the following example, two new top level "VAGENDA" components are created. Note that the "CSID" value of the server is

在以下示例中,将创建两个新的顶级“VAGENDA”组件。请注意,服务器的“CSID”值为

cal.example.com, which is where the new "VAGENDA" components are going to be created.

cal.example.com,这是创建新“VAGENDA”组件的地方。

      C: Content-Type: text/calendar
      C:
      C: BEGIN:VCALENDAR
      C: PRODID:-//someone's prodid
      C: VERSION:2.0
      C: CMD;ID=creation01:CREATE
      C: TARGET:cal.example.com
      C: BEGIN:VAGENDA                 <- data for 1st new calendar
      C: CALID:relcalz1
      C: NAME;LANGUAGE=en_US:Bill's Soccer Team
      C: OWNER:bill
      C: CALMASTER:mailto:bill@example.com
      C: TZID:US/Pacific
      C: END:VAGENDA
      C: BEGIN:VAGENDA                 <- data for 2nd new calendar
      C: CALID:relcalz2
      C: NAME;LANGUAGE=EN-us:Mary's personal calendar
      C: OWNER:mary
      C: CALMASTER:mailto:mary@example.com
      C: TZID:US/Pacific
      C: END:VAGENDA
      C: END:VCALENDAR
        
      C: Content-Type: text/calendar
      C:
      C: BEGIN:VCALENDAR
      C: PRODID:-//someone's prodid
      C: VERSION:2.0
      C: CMD;ID=creation01:CREATE
      C: TARGET:cal.example.com
      C: BEGIN:VAGENDA                 <- data for 1st new calendar
      C: CALID:relcalz1
      C: NAME;LANGUAGE=en_US:Bill's Soccer Team
      C: OWNER:bill
      C: CALMASTER:mailto:bill@example.com
      C: TZID:US/Pacific
      C: END:VAGENDA
      C: BEGIN:VAGENDA                 <- data for 2nd new calendar
      C: CALID:relcalz2
      C: NAME;LANGUAGE=EN-us:Mary's personal calendar
      C: OWNER:mary
      C: CALMASTER:mailto:mary@example.com
      C: TZID:US/Pacific
      C: END:VAGENDA
      C: END:VCALENDAR
        
      S: Content-Type: text/calendar
      S:
      S: BEGIN:VCALENDAR
      S: VERSION:2.0
      S: PRODID:-//someone's prodid
      S: CMD;ID=creation01:REPLY
      S: TARGET:cal.example.com
      S: BEGIN:VREPLY                <- Reply for 1st calendar create
      S: CALID:relcalz1
      S: REQUEST-STATUS:2.0
      S: END:REPLY
      S: BEGIN:VREPLY                <- Reply for 2nd calendar create
      S: CALID:relcalz2
      S: REQUEST-STATUS:2.0
      S: END:VREPLY
      S: END:VCALENDAR
        
      S: Content-Type: text/calendar
      S:
      S: BEGIN:VCALENDAR
      S: VERSION:2.0
      S: PRODID:-//someone's prodid
      S: CMD;ID=creation01:REPLY
      S: TARGET:cal.example.com
      S: BEGIN:VREPLY                <- Reply for 1st calendar create
      S: CALID:relcalz1
      S: REQUEST-STATUS:2.0
      S: END:REPLY
      S: BEGIN:VREPLY                <- Reply for 2nd calendar create
      S: CALID:relcalz2
      S: REQUEST-STATUS:2.0
      S: END:VREPLY
      S: END:VCALENDAR
        

To create a new component in multiple containers, simply name all of the containers in the "TARGET" in the create command. A new "VEVENT" component is created in two TARGET components. In this example, the "VEVENT" component is one new [iTIP] "REQUEST" to be

要在多个容器中创建新组件,只需在create命令的“TARGET”中命名所有容器。在两个目标组件中创建一个新的“VEVENT”组件。在本例中,“VEVENT”组件是一个新的[iTIP]“请求”

stored in two calendars. The results would be iCalendar objects that conform to the [iTIP] replies as defined in [iTIP].

存储在两个日历中。结果将是符合[iTIP]中定义的[iTIP]回复的iCalendar对象。

This example shows two [iTIP] "VEVENT" components being created in each of the two supplied "TARGET" properties. As it contains the "METHOD" property, they will be stored in the "UNPROCESSED" state:

此示例显示在提供的两个“目标”属性中创建的两个[iTIP]“VEVENT”组件。由于它包含“METHOD”属性,它们将以“UNPROCESSED”状态存储:

      C: Content-Type: text/calendar
      C:
      C: BEGIN:VCALENDAR
      C: VERSION:2.0
      C: PRODID:-//someone's prodid
      C: CMD;ID=creation02:CREATE
      C: METHOD:REQUEST
      C: TARGET:relcalz1
      C: TARGET:relcalz2
      C: BEGIN:VEVENT
      C: DTSTART:20030307T180000Z
      C: UID:FirstInThisExample-1
      C: DTEND:20030307T190000Z
      C: SUMMARY:Important Meeting
      C: END:VEVENT
      C: BEGIN:VEVENT
      C: DTSTART:20040307T180000Z
      C: UID:SecondInThisExample-2
      C: DTEND:20040307T190000Z
      C: SUMMARY:Important Meeting
      C: END:VEVENT
      C: END:VCALENDAR
        
      C: Content-Type: text/calendar
      C:
      C: BEGIN:VCALENDAR
      C: VERSION:2.0
      C: PRODID:-//someone's prodid
      C: CMD;ID=creation02:CREATE
      C: METHOD:REQUEST
      C: TARGET:relcalz1
      C: TARGET:relcalz2
      C: BEGIN:VEVENT
      C: DTSTART:20030307T180000Z
      C: UID:FirstInThisExample-1
      C: DTEND:20030307T190000Z
      C: SUMMARY:Important Meeting
      C: END:VEVENT
      C: BEGIN:VEVENT
      C: DTSTART:20040307T180000Z
      C: UID:SecondInThisExample-2
      C: DTEND:20040307T190000Z
      C: SUMMARY:Important Meeting
      C: END:VEVENT
      C: END:VCALENDAR
        

The CS sends the "VREPLY" commands in separate MIME objects, one per supplied "TARGET" property value.

CS在单独的MIME对象中发送“VREPLY”命令,每个提供的“TARGET”属性值一个。

      S: Content-Type: text/calendar
      S:
      S: BEGIN:VCALENDAR
      S: VERSION:2.0
      S: PRODID:-//someone's prodid
      S: CMD;ID=creation02:REPLY
      S: TARGET:relcalz1  <- 1st TARGET listed.
      S: BEGIN:REPLY      <- Reply for 1st VEVENT create in 1st TARGET.
      S: UID:FirstInThisExample-1
      S: REQUEST-STATUS:2.0
      S: END:VREPLY
      S: BEGIN:REPLY        <- Reply for 2nd VEVENT crate in 1st TARGET.
      S: UID:SecondInThisExample-2
      S: REQUEST-STATUS:2.0
      S: END:VREPLY
        
      S: Content-Type: text/calendar
      S:
      S: BEGIN:VCALENDAR
      S: VERSION:2.0
      S: PRODID:-//someone's prodid
      S: CMD;ID=creation02:REPLY
      S: TARGET:relcalz1  <- 1st TARGET listed.
      S: BEGIN:REPLY      <- Reply for 1st VEVENT create in 1st TARGET.
      S: UID:FirstInThisExample-1
      S: REQUEST-STATUS:2.0
      S: END:VREPLY
      S: BEGIN:REPLY        <- Reply for 2nd VEVENT crate in 1st TARGET.
      S: UID:SecondInThisExample-2
      S: REQUEST-STATUS:2.0
      S: END:VREPLY
        

S: END:VCALENDAR

完:VCALENDAR

And the second reply for the 2nd TARGET:

第二个目标的第二个答复:

      S: Content-Type: text/calendar
      S:
      S: BEGIN:VCALENDAR
      S: VERSION:2.0
      S: PRODID:-//someone's prodid
      S: CMD;ID=creation02:REPLY
      S: TARGET:relcalz2  <- 2nd TARGET listed
      S: BEGIN:REPLY      <- Reply for 1st VEVENT create in 2nd TARGET.
      S: UID:FirstInThisExample-1
      S: REQUEST-STATUS:2.0
      S: END:VREPLY
      S: BEGIN:REPLY      <- Reply for 2nd VEVENT crate in 2nd TARGET.
      S: UID:SecondInThisExample-2
      S: REQUEST-STATUS:2.0
      S: END:VREPLY
      S: END:VCALENDAR
        
      S: Content-Type: text/calendar
      S:
      S: BEGIN:VCALENDAR
      S: VERSION:2.0
      S: PRODID:-//someone's prodid
      S: CMD;ID=creation02:REPLY
      S: TARGET:relcalz2  <- 2nd TARGET listed
      S: BEGIN:REPLY      <- Reply for 1st VEVENT create in 2nd TARGET.
      S: UID:FirstInThisExample-1
      S: REQUEST-STATUS:2.0
      S: END:VREPLY
      S: BEGIN:REPLY      <- Reply for 2nd VEVENT crate in 2nd TARGET.
      S: UID:SecondInThisExample-2
      S: REQUEST-STATUS:2.0
      S: END:VREPLY
      S: END:VCALENDAR
        
10.5. DELETE Command
10.5. 删除命令

CMD: DELETE

CMD:删除

Purpose: The "DELETE" command physically removes the QUERY result from the store or marks it for deletion.

用途:“删除”命令从存储中实际删除查询结果或将其标记为删除。

A CUA MAY send a "DELETE" command to a CS. The "DELETE" command MUST be implemented by all CSs.

CUA可向CS发送“删除”命令。“DELETE”命令必须由所有CSs实现。

The CS MUST NOT send a "DELETE" command to any CUA.

CS不得向任何CUA发送“删除”命令。

Formal Definition: A "DELETE" command is defined by the following notation:

正式定义:“删除”命令由以下符号定义:

         delete-cmd   = deleteparam ":" "DELETE"
                  ;
         deleteparam  = *(
                  ;
                  ; the following are optional,
                  ; but MUST NOT occur more than once
                  ;
                       id-param
                      / localize-param
                      / latency-param
                      / option-param "MARK"
                  ;
        
         delete-cmd   = deleteparam ":" "DELETE"
                  ;
         deleteparam  = *(
                  ;
                  ; the following are optional,
                  ; but MUST NOT occur more than once
                  ;
                       id-param
                      / localize-param
                      / latency-param
                      / option-param "MARK"
                  ;
        
                  ; The following MUST occur exactly once and
                  ; only when the latency-param has been supplied.
                  ; It MUST NOT be supplied if the latency-param
                  ; is not supplied.
                  ;
                      / action-param
                  ;
                  ; the following is optional,
                  ; and MAY occur more than once
                  ;
                      / other-params
                     )
        
                  ; The following MUST occur exactly once and
                  ; only when the latency-param has been supplied.
                  ; It MUST NOT be supplied if the latency-param
                  ; is not supplied.
                  ;
                      / action-param
                  ;
                  ; the following is optional,
                  ; and MAY occur more than once
                  ;
                      / other-params
                     )
        

The "DELETE" command is used to delete calendars or components. The included "VQUERY" component(s) specifies the container(s) to delete.

“删除”命令用于删除日历或组件。包含的“VQUERY”组件指定要删除的容器。

To mark a component for delete without physically removing it, include the "OPTIONS" parameter with its value set to the "MARK" value in order to alter its state to "DELETED".

要在不实际删除的情况下将组件标记为删除,请包括“选项”参数,并将其值设置为“标记”值,以便将其状态更改为“已删除”。

When components are deleted, only the top-most component "REQUEST-STATUS" properties are returned. No "REQUEST-STATUS" properties are returned for components inside of the selected components. There MUST be one "VREPLY" component returned for each object that is deleted or marked for delete. Note that if no "VREPLY" components are returned, then nothing matched and nothing was deleted.

删除组件时,仅返回最顶层的组件“请求状态”属性。对于所选组件内部的组件,不会返回“请求状态”属性。对于删除或标记为删除的每个对象,必须返回一个“VREPLY”组件。请注意,如果没有返回“VREPLY”组件,则没有匹配的内容,也没有删除任何内容。

Restriction Table for the "REPLY" command for any "DELETE" command.

任何“删除”命令的“回复”命令限制表。

         delete-reply   = "BEGIN" ":" "VCALENDAR" CRLF
                          calprops   ; MUST include 'reply-cmd'
                          *(delete-vreply)
                          "END" ":" "VCALENDAR" CRLF
                        ;
         delete-vreply  = "BEGIN" ":" "VREPLY" CRLF
                          deleted-id
                          rstatus
                          "END" ":" "VREPLY" CRLF
                        ;
                        ; Where the id is appropriate for the
                        ; type of object deleted:
                        ;
                        ; VAGENDA = relcalid
                        ; VCAR = carid
                        ; VEVENT, VFREEBUSY, VJOURNAL, VTODO = uid
        
         delete-reply   = "BEGIN" ":" "VCALENDAR" CRLF
                          calprops   ; MUST include 'reply-cmd'
                          *(delete-vreply)
                          "END" ":" "VCALENDAR" CRLF
                        ;
         delete-vreply  = "BEGIN" ":" "VREPLY" CRLF
                          deleted-id
                          rstatus
                          "END" ":" "VREPLY" CRLF
                        ;
                        ; Where the id is appropriate for the
                        ; type of object deleted:
                        ;
                        ; VAGENDA = relcalid
                        ; VCAR = carid
                        ; VEVENT, VFREEBUSY, VJOURNAL, VTODO = uid
        
                        ; VQUERY = queryid
                        ; ALARM = sequence
                        ; VTIMEZONE = tzid
                        ; x-comp = x-id
                        ; An instance = uid recurid
                        ;
         deleted-id    = ( relcalid / carid / uid / uid recurid
                        / queryid / tzid / sequence / x-id )
        
                        ; VQUERY = queryid
                        ; ALARM = sequence
                        ; VTIMEZONE = tzid
                        ; x-comp = x-id
                        ; An instance = uid recurid
                        ;
         deleted-id    = ( relcalid / carid / uid / uid recurid
                        / queryid / tzid / sequence / x-id )
        

Example: to delete a "VEVENT" component with "UID" value of "abcd12345" from the calendar "relcalid-22" from the current CS:

示例:要从当前CS的日历“relcalid-22”中删除“UID”值为“abcd12345”的“VEVENT”组件,请执行以下操作:

         C: Content-Type: text/calendar
         C:
         C: BEGIN:VCALENDAR
         C: TARGET:relcalid-22
         C: CMD;ID:"random but unique per CUA":DELETE
         C: BEGIN:VQUERY
         C: QUERY:SELECT VEVENT FROM VAGENDA WHERE UID = 'abcd12345'
         C: END:VQUERY
         C: END:VCALENDAR
        
         C: Content-Type: text/calendar
         C:
         C: BEGIN:VCALENDAR
         C: TARGET:relcalid-22
         C: CMD;ID:"random but unique per CUA":DELETE
         C: BEGIN:VQUERY
         C: QUERY:SELECT VEVENT FROM VAGENDA WHERE UID = 'abcd12345'
         C: END:VQUERY
         C: END:VCALENDAR
        
         S: BEGIN:VCALENDAR
         S: TARGET:relcalid-22
         S: CMD;ID:"random but unique per CUA":REPLY
         S: BEGIN:VREPLY
         S: UID:abcd12345
        
         S: BEGIN:VCALENDAR
         S: TARGET:relcalid-22
         S: CMD;ID:"random but unique per CUA":REPLY
         S: BEGIN:VREPLY
         S: UID:abcd12345
        
         S: REQUEST-STATUS:3.0
         S: END:VREPLY
         S: END:VCALENDAR
        
         S: REQUEST-STATUS:3.0
         S: END:VREPLY
         S: END:VCALENDAR
        

One or more iCalendar objects will be returned that contain "REQUEST-STATUS" properties for the deleted components. More than one component could have been deleted. Any booked component and any number of unprocessed [iTIP] scheduling components that matched the QUERY value in the above example will be returned. Each unique "METHOD" property value that was deleted from the store MUST be in a separate iCalendar object. This is because only one "METHOD" property is allowed in a single "VCALENDAR" BEGIN/END block.

将返回一个或多个iCalendar对象,其中包含已删除组件的“请求状态”属性。可能删除了多个组件。将返回与上述示例中的查询值匹配的任何预订组件和任何数量的未处理[iTIP]调度组件。从存储中删除的每个唯一“方法”属性值必须位于单独的iCalendar对象中。这是因为在单个“VCALENDAR”开始/结束块中只允许一个“METHOD”属性。

10.6. GENERATE-UID Command
10.6. 生成-UID命令

CMD: GENERATE-UID

CMD:GENERATE-UID

Purpose: The "GENERATE-UID" command returns one or more unique identifiers that MUST be globally unique.

用途:“GENERATE-UID”命令返回一个或多个必须全局唯一的唯一标识符。

The "GENERATE-UID" command MAY be sent to any CS. The "GENERATE-UID" command MUST be implemented by all CSs.

“GENERATE-UID”命令可以发送到任何CS。“GENERATE-UID”命令必须由所有CSs实现。

The "GENERATE-UID" command MUST NOT be sent to a CUA.

“GENERATE-UID”命令不得发送到CUA。

Formal Definition: A "GENERATE-UID" command is defined by the following notation:

形式定义:“GENERATE-UID”命令由以下符号定义:

         generate-uid-cmd   = genuidparam ":" "GENERATE-UID"
                        ;
         genuidparam        = *(
                        ;
                        ; The following are optional,
                        ; but MUST NOT occur more than once.
                            ;
                              id-param
                            / localize-param
                            / latency-param
                        ;
                        ; The following MUST occur exactly once and
                        ; only when the latency-param has been supplied.
                        ; It MUST NOT be supplied if the latency-param
                        ; is not supplied.
                        ;
                            / action-param
                        ;
                        ; The following is optional,
                        ; and MAY occur more than once.
                        ;
                            / other-params
                        ;
                        ; The following MUST be supplied exactly once.
                        ; The value specifies the number of UIDs to
                        ; be returned.
                        ;
                            / option-param posint1
                          )
        
         generate-uid-cmd   = genuidparam ":" "GENERATE-UID"
                        ;
         genuidparam        = *(
                        ;
                        ; The following are optional,
                        ; but MUST NOT occur more than once.
                            ;
                              id-param
                            / localize-param
                            / latency-param
                        ;
                        ; The following MUST occur exactly once and
                        ; only when the latency-param has been supplied.
                        ; It MUST NOT be supplied if the latency-param
                        ; is not supplied.
                        ;
                            / action-param
                        ;
                        ; The following is optional,
                        ; and MAY occur more than once.
                        ;
                            / other-params
                        ;
                        ; The following MUST be supplied exactly once.
                        ; The value specifies the number of UIDs to
                        ; be returned.
                        ;
                            / option-param posint1
                          )
        

Response:

答复:

gen-reply = "BEGIN" ":" "VCALENDAR" CRLF calprops ; Which MUST include 'reply-cmd' 1*(gen-vreply) "END" ":" "VCALENDAR" CRLF

gen reply=“BEGIN”“:“VCALENDAR”CRLF calprops;其中必须包括“reply cmd”1*(gen vreply)“END”“:“VCALENDAR”CRLF

gen-vreply = "BEGIN" ":" "VREPLY" CRLF 1*(uid) rstatus

gen vreply=“BEGIN”“:“vreply”CRLF 1*(uid)rstatus

"END" ":" "VREPLY" CRLF {%%%IS THIS RIGHT%%%?]

“END”“:“VREPLY”CRLF{%%%这对吗%%?]

Example:

例子:

         C: BEGIN:VCALENDAR
         C: VERSION:2.0
         C: PRODID:-//someone's prodid
         C: CMD;ID=unique-per-cua-124;OPTIONS=5:GENERATE-UID
         C: END:VCALENDAR
        
         C: BEGIN:VCALENDAR
         C: VERSION:2.0
         C: PRODID:-//someone's prodid
         C: CMD;ID=unique-per-cua-124;OPTIONS=5:GENERATE-UID
         C: END:VCALENDAR
        
         S: Content-Type: text/calendar
         S:
         S: BEGIN:VCALENDAR
         S: VERSION:2.0
         S: PRODID:-//someone's prodid
         S: CMD;ID=unique-per-cua-124:REPLY
         S: BEGIN:VREPLY
         S: UID:20011121T120000Z-12340@cal.example.com
         S: UID:20011121T120000Z-12341@cal.example.com
         S: UID:20011121T120000Z-12342@cal.example.com
         S: UID:20011121T120000Z-12343@cal.example.com
         S: UID:20011121T120000Z-12344@cal.example.com
         S: REQUEST-STATUS:2.0
         S: END:VREPLY
         S: END:VCALENDAR
        
         S: Content-Type: text/calendar
         S:
         S: BEGIN:VCALENDAR
         S: VERSION:2.0
         S: PRODID:-//someone's prodid
         S: CMD;ID=unique-per-cua-124:REPLY
         S: BEGIN:VREPLY
         S: UID:20011121T120000Z-12340@cal.example.com
         S: UID:20011121T120000Z-12341@cal.example.com
         S: UID:20011121T120000Z-12342@cal.example.com
         S: UID:20011121T120000Z-12343@cal.example.com
         S: UID:20011121T120000Z-12344@cal.example.com
         S: REQUEST-STATUS:2.0
         S: END:VREPLY
         S: END:VCALENDAR
        
10.7. GET-CAPABILITY Command
10.7. 获取能力命令

CMD: GET-CAPABILITY

CMD:GET-CAPABILITY

Purpose: The "GET-CAPABILITY" command returns the capabilities of the other end point of the session.

目的:“GET-CAPABILITY”命令返回会话另一个端点的功能。

A CUA MUST send a "GET-CAPABILITY" command to a CS after the initial connection. A CS MUST send a "GET-CAPABILITY" command to a CUA after the initial connection. The "GET-CAPABILITY" command and reply MUST be implemented by all CSs and CUAs.

CUA必须在初始连接后向CS发送“GET-CAPABILITY”命令。CS必须在初始连接后向CUA发送“GET-CAPABILITY”命令。“GET-CAPABILITY”命令和应答必须由所有CSs和CUA实现。

Formal Definition: A "GET-CAPABILITY" command is defined by the following notation:

形式定义:“GET-CAPABILITY”命令由以下符号定义:

get-capability-cmd = capabilityparam ":" "GET-CAPABILITY"

get-capability cmd=capabilityparam:“get-capability”

         capabilityparam     = *(
        
         capabilityparam     = *(
        

; the following are optional, ; but MUST NOT occur more than once

; 以下是可选的;但不得超过一次

                       ;
                             id-param / localize-param / latency-param
                       ;
                       ; the following MUST occur exactly once and only
                       ; when the latency-param has been supplied and
                       ; MUST NOT be supplied if the latency-param is
                       ; not supplied.
                       ;
                            / action-param
                       ;
                       ; the following is optional,
                       ; and MAY occur more than once
                       ;
                            / other-params
                            )
        
                       ;
                             id-param / localize-param / latency-param
                       ;
                       ; the following MUST occur exactly once and only
                       ; when the latency-param has been supplied and
                       ; MUST NOT be supplied if the latency-param is
                       ; not supplied.
                       ;
                            / action-param
                       ;
                       ; the following is optional,
                       ; and MAY occur more than once
                       ;
                            / other-params
                            )
        

Response:

答复:

The "GET-CAPABILITY" command returns information about the implementation at the other end of the session. The values returned may differ depending on current user identify and the security level of the connection.

“GET-CAPABILITY”命令返回会话另一端的实现信息。根据当前用户标识和连接的安全级别,返回的值可能会有所不同。

Client implementations SHOULD NOT require any capability element beyond those defined in this specification or future RFC publications. They MAY ignore any nonstandard, experimental capability elements. The "GET-CAPABILITY" reply may return different results, depending on the UPN and if the UPN is authenticated.

客户机实现不应要求任何超出本规范或未来RFC出版物中定义的能力元素。他们可能会忽略任何非标准的实验能力要素。“GET-CAPABILITY”回复可能返回不同的结果,具体取决于UPN以及UPN是否经过身份验证。

When sending a reply to a "GET-CAPABILITY" command, all of these MUST be supplied. The following properties are returned in response to a "GET-CAPABILITY" command:

在向“GET-CAPABILITY”命令发送回复时,必须提供所有这些信息。响应“GET-CAPABILITY”命令将返回以下属性:

cap-vreply = "BEGIN" ":" "VCALENDAR" CRLF ; The following properties may be in any order. ; rodid version reply-cmd other-props

cap vreply=“BEGIN”“:“VCALENDAR”CRLF;以下属性可以是任意顺序;rodid版本回复cmd其他道具

"BEGIN" ":" "VREPLY" CRLF ; The following properties may be in any order. ; cap-version car-level components

“BEGIN”“:“VREPLY”CRLF;以下属性可以是任意顺序;盖型汽车水平部件

stores-expanded maxdate mindate itip-version max-comp-size multipart query-level recur-accepted recur-expand recur-limit other-props "END" ":" "VREPLY" CRLF "END" ":" "VCALENDAR" CRLF

存储扩展的maxdate mindate itip版本最大组件大小多部分查询级别重复接受重复扩展重复限制其他道具“END”:“VREPLY”CRLF“END”:“VCALENDAR”CRLF

Example:

例子:

         I: Content-Type: text/calendar
         I:
         I: BEGIN:VCALENDAR
         I: VERSION:2.0
         I: PRODID:-//someone's prodid
         I: CMD;ID=unique-per-cua-125:GET-CAPABILITY
         I: END:VCALENDAR
        
         I: Content-Type: text/calendar
         I:
         I: BEGIN:VCALENDAR
         I: VERSION:2.0
         I: PRODID:-//someone's prodid
         I: CMD;ID=unique-per-cua-125:GET-CAPABILITY
         I: END:VCALENDAR
        
         L: Content-Type: text/calendar
         L:
         L: BEGIN:VCALENDAR
         L: VERSION:2.0
         L: PRODID:-//someone's prodid
         L: CMD;ID=unique-per-cua-125:REPLY
         L: BEGIN:VREPLY
         L: CAP-VERSION:1.0
         L: PRODID:The CS prodid
         L: QUERY-LEVEL:CAL-QL-1
         L: CAR-LEVEL:CAR-FULL-1
         L: MAXDATE:99991231T235959Z
         L: MINDATE:00000101T000000Z
         L: MAX-COMPONENT-SIZE:0
         L: COMPONENTS:VCALENDAR,VTODO,VJOURNAL,VEVENT,VCAR,
         L: VALARM,VFREEBUSY,VTIMEZONE,STANDARD,DAYLIGHT,VREPLY
         L: ITIP-VERSION:2446
         L: RECUR-ACCEPTED:TRUE
        
         L: Content-Type: text/calendar
         L:
         L: BEGIN:VCALENDAR
         L: VERSION:2.0
         L: PRODID:-//someone's prodid
         L: CMD;ID=unique-per-cua-125:REPLY
         L: BEGIN:VREPLY
         L: CAP-VERSION:1.0
         L: PRODID:The CS prodid
         L: QUERY-LEVEL:CAL-QL-1
         L: CAR-LEVEL:CAR-FULL-1
         L: MAXDATE:99991231T235959Z
         L: MINDATE:00000101T000000Z
         L: MAX-COMPONENT-SIZE:0
         L: COMPONENTS:VCALENDAR,VTODO,VJOURNAL,VEVENT,VCAR,
         L: VALARM,VFREEBUSY,VTIMEZONE,STANDARD,DAYLIGHT,VREPLY
         L: ITIP-VERSION:2446
         L: RECUR-ACCEPTED:TRUE
        
         L: RECUR-EXPAND:TRUE
         L: RECUR-LIMIT:0
         L: STORES-EXPANDED:FALSE
         L: X-INET-PRIVATE-COMMANDS:1.0
         L: END:VREPLY
         L: END:VCALENDAR
        
         L: RECUR-EXPAND:TRUE
         L: RECUR-LIMIT:0
         L: STORES-EXPANDED:FALSE
         L: X-INET-PRIVATE-COMMANDS:1.0
         L: END:VREPLY
         L: END:VCALENDAR
        
10.8. IDENTIFY Command
10.8. 识别命令

CMD: IDENTIFY

CMD:识别

Purpose: The "IDENTIFY" command allows the CUA to set a new identity to be used for calendar access.

用途:“标识”命令允许CUA设置用于日历访问的新标识。

A CUA MAY send an "IDENTIFY" command to a CS. The "IDENTIFY" command MUST be implemented by all CSs. A CS implementation MAY reject all "IDENTIFY" commands.

CUA可向CS发送“识别”命令。“标识”命令必须由所有CSs实现。CS实现可能拒绝所有“标识”命令。

The CS MUST NOT send an "IDENTIFY" command to any CUA.

CS不得向任何CUA发送“识别”命令。

Formal Definition: An "IDENTIFY" command is defined by the following notation:

正式定义:“标识”命令由以下符号定义:

         identify-cmd    = identifyparam ":" "IDENTIFY"
                       ;
         identifyparam   = *(
                       ;
                       ; the following are optional,
                       ; but MUST NOT occur more than once
                       ;
                           id-param
                         / localize-param
                         / latency-param
                       ;
                       ; the following MUST occur exactly once and only
                       ; when the latency-param has been supplied and
                       ; MUST NOT be supplied if the latency-param is
                       ; not supplied.
                       ;
                         / action-param
                       ;
                       ; the following is optional,
                       ; and MAY occur more than once
                       ;
                         / other-params
                       ;
                       ; The value is the UPN of the requested
                       ; identity.  If option is not supplied it is
        
         identify-cmd    = identifyparam ":" "IDENTIFY"
                       ;
         identifyparam   = *(
                       ;
                       ; the following are optional,
                       ; but MUST NOT occur more than once
                       ;
                           id-param
                         / localize-param
                         / latency-param
                       ;
                       ; the following MUST occur exactly once and only
                       ; when the latency-param has been supplied and
                       ; MUST NOT be supplied if the latency-param is
                       ; not supplied.
                       ;
                         / action-param
                       ;
                       ; the following is optional,
                       ; and MAY occur more than once
                       ;
                         / other-params
                       ;
                       ; The value is the UPN of the requested
                       ; identity.  If option is not supplied it is
        
                       ; a request to return to the original
                       ; authenticated identity.
                       ;
                         / option-param upn
                         )
        
                       ; a request to return to the original
                       ; authenticated identity.
                       ;
                         / option-param upn
                         )
        

Response:

答复:

A "REQUEST-STATUS" property wrapped in a "VREPLY" component with only one of the following request-status codes:

包装在“VREPLY”组件中的“REQUEST-STATUS”属性,仅包含以下请求状态代码之一:

2.0 Successful.

2.0 成功的

6.4 Identity not permitted. VCAR restriction.

6.4 身份是不允许的。VCAR限制。

The CS determines, through an internal mechanism, if the credentials supplied at authentication permit the operation as the selected identity. If they do, the session assumes the new identity; otherwise, a security error is returned.

CS通过内部机制确定身份验证时提供的凭据是否允许该操作作为所选标识。如果有,会话将采用新标识;否则,将返回一个安全错误。

Example:

例子:

         C: Content-Type: text/calendar
         C:
         C: BEGIN:VCALENDAR
         C: VERSION:2.0
         C: PRODID:-//someone's prodid
         C: CMD;ID=unique-per-cua-999;OPTIONS=newUserId:IDENTIFY
         C: END:VCALENDAR
        
         C: Content-Type: text/calendar
         C:
         C: BEGIN:VCALENDAR
         C: VERSION:2.0
         C: PRODID:-//someone's prodid
         C: CMD;ID=unique-per-cua-999;OPTIONS=newUserId:IDENTIFY
         C: END:VCALENDAR
        
         S: Content-Type: text/calendar
         S:
         S: BEGIN:VCALENDAR
         S: VERSION:2.0
         S: PRODID:-//someone's prodid
         S: BEGIN:VREPLY
         S: REQUEST-STATUS:2.0;Request Approved
         S: END:VREPLY
         S: END:VCALENDAR
        
         S: Content-Type: text/calendar
         S:
         S: BEGIN:VCALENDAR
         S: VERSION:2.0
         S: PRODID:-//someone's prodid
         S: BEGIN:VREPLY
         S: REQUEST-STATUS:2.0;Request Approved
         S: END:VREPLY
         S: END:VCALENDAR
        

Or if denied:

或如果拒绝:

         S: Content-Type: text/calendar
         S:
         S: BEGIN:VCALENDAR
         S: PRODID:-//someone's prodid
         S: VERSION:2.0
         S: BEGIN:VREPLY
         S: REQUEST-STATUS:6.4;Request Denied
         S: END:VREPLY
         S: END:VCALENDAR
        
         S: Content-Type: text/calendar
         S:
         S: BEGIN:VCALENDAR
         S: PRODID:-//someone's prodid
         S: VERSION:2.0
         S: BEGIN:VREPLY
         S: REQUEST-STATUS:6.4;Request Denied
         S: END:VREPLY
         S: END:VCALENDAR
        

For the CUA to return to its original authenticated identity, the OPTIONS parameter is omitted:

为使CUA返回其原始身份验证,将省略OPTIONS参数:

      C: Content-Type: text/calendar
      C:
      C: BEGIN:VCALENDAR
      C: VERSION:2.0
      C: PRODID:-//someone's prodid
      C: CMD;ID=unique-per-cua-995:IDENTIFY
      C: END:VCALENDAR
        
      C: Content-Type: text/calendar
      C:
      C: BEGIN:VCALENDAR
      C: VERSION:2.0
      C: PRODID:-//someone's prodid
      C: CMD;ID=unique-per-cua-995:IDENTIFY
      C: END:VCALENDAR
        

The CS may accept (2.0) or deny (6.4) the request to return to the original identity.

CS可接受(2.0)或拒绝(6.4)返回原始身份的请求。

If a CS considers the "IDENTIFY" command an attempt to violate security, the CS MAY terminate the [BEEP] session without any further notice to the CUA after sending the "REQUEST-STATUS" 6.4 reply.

如果CS认为“识别”命令试图违反安全性,则CS可在发送“请求状态”6.4回复后终止[BEEP]会话,无需向CUA发出任何进一步通知。

10.9. MODIFY Command
10.9. 修改命令

CMD: MODIFY

CMD:修改

Purpose: The "MODIFY" command is used to modify existing components.

用途:“修改”命令用于修改现有组件。

A CUA MAY send a "MODIFY" command to a CS. The "MODIFY" command MUST be implemented by all CSs.

CUA可向CS发送“修改”命令。“修改”命令必须由所有CSs实现。

The CS MUST NOT send a "MODIFY" command to any CUA.

CS不得向任何CUA发送“修改”命令。

Formal Definition: A "MODIFY" command is defined by the following notation:

形式定义:“修改”命令由以下符号定义:

         modify-cmd    = modifyparam ":" "MODIFY"
                       ;
         modifyparam   = *(
                       ;
                       ; the following are optional,
                       ; but MUST NOT occur more than once
        
         modify-cmd    = modifyparam ":" "MODIFY"
                       ;
         modifyparam   = *(
                       ;
                       ; the following are optional,
                       ; but MUST NOT occur more than once
        
                       ;
                         id-param
                       / localize-param
                       / latency-param
                       ;
                       ; the following MUST occur exactly once and only
                       ; when the latency-param has been supplied and
                       ; MUST NOT be supplied if the latency-param is
                       ; not supplied.
                       ;
                       / action-param
                       ;
                       ; the following is optional,
                       ; and MAY occur more than once
                       ;
                       / other-params
                       )
        
                       ;
                         id-param
                       / localize-param
                       / latency-param
                       ;
                       ; the following MUST occur exactly once and only
                       ; when the latency-param has been supplied and
                       ; MUST NOT be supplied if the latency-param is
                       ; not supplied.
                       ;
                       / action-param
                       ;
                       ; the following is optional,
                       ; and MAY occur more than once
                       ;
                       / other-params
                       )
        

The "MODIFY" command is used to modify existing components. The TARGET property specifies the calendars that contain the components that are going to be modified.

“修改”命令用于修改现有组件。目标属性指定包含要修改的组件的日历。

The format of the request is three components inside of "VCALENDAR" component:

请求的格式是“VCALENDAR”组件中的三个组件:

BEGIN:VCALENDAR BEGIN:VQUERY END:VQUERY BEGIN:XXX END:XXX BEGIN:XXX END:XXX END:VCALENDAR

开始:VCALENDAR开始:VQUERY结束:VQUERY开始:XXX结束:XXX开始:XXX结束:XXX结束:VCALENDAR

The "VQUERY" component selects the components that are to be modified.

“VQUERY”组件选择要修改的组件。

The "XXX" above is a named component type (VEVENT, VTODO, ...). Both the old and new components MUST be of the same type.

上面的“XXX”是一种命名组件类型(VEVENT、VTODO等)。新旧组件必须为同一类型。

The old-values is a component and the contents of that component are going to change and may contain information that helps uniquely identify the original component (SEQUENCE in the example below). If the CS cannot find a component that matches the QUERY and does not have at least all of the OLD-VALUES, then a 6.1 error is returned.

旧值是一个组件,该组件的内容将发生更改,并且可能包含有助于唯一标识原始组件的信息(以下示例中的顺序)。如果CS找不到与查询匹配的组件,并且至少没有所有旧值,则返回6.1错误。

The new-values is a component of the same type as old-values and new-values contains the new data for each selected component. Any data that is in old-values and not in new-values is deleted from the selected component. Any values in new-values that was not in old-values is added to the component.

新值是与旧值类型相同的组件,新值包含每个选定组件的新数据。将从选定零部件中删除旧值而非新值中的所有数据。新值中不在旧值中的任何值都将添加到组件中。

In this example, the "VEVENT" component with a "UID" property value of 'unique-58' has the "LOCATION" property and "LAST-MODIFIED" properties changed, the "VALARM" component with the "SEQUENCE" property with a value of "3" has its "TRIGGER" property disabled, the "X-LOCAL" property is removed from the "VEVENT" component, and a "COMMENT" property is added.

在本例中,“UID”属性值为“unique-58”的“VEVENT”组件的“LOCATION”属性和“LAST-MODIFIED”属性已更改,“SEQUENCE”属性值为“3”的“VALARM”组件的“TRIGGER”属性已禁用,“X-LOCAL”属性已从“VEVENT”组件中删除,并显示“COMMENT”属性被添加。

Because "SEQUENCE" property is used to locate the "VALARM" component in this example, both the old-values and the new-values contain the "SEQUENCE" property with a value of "3". If the "SEQUENCE" property were to be left out of new-values, it would have been deleted.

因为在本例中“SEQUENCE”属性用于定位“VALARM”组件,所以旧值和新值都包含值为“3”的“SEQUENCE”属性。如果将“SEQUENCE”属性从新值中删除,则该属性将被删除。

Example:

例子:

         C: Content-Type: text/calendar
         C:
         C: BEGIN:VCALENDAR
         C: VERSION:2.0
         C: PRODID:-//someone's prodid
         C: TARGET:my-cal
         C: CMD:ID=unique-mod:MODIFY
         C: BEGIN:VQUERY                   <- Query to select data set.
         C: QUERY:SELECT * FROM VEVENT WHERE UID = 'unique-58'
         C: END:VQUERY
         C: BEGIN:VEVENT                   <- Start of old data.
         C: LOCATION:building 3
         C: LAST-MODIFIED:20020101T123456Z
         C: X-LOCAL:some private stuff
         C: BEGIN:VALARM
         C: SEQUENCE:3
         C: TRIGGER;RELATED=END:PT5M
         C: END:VALARM
         C: END:VEVENT                     <- End of old data.
         C: BEGIN:VEVENT                   <- Start of new data.
         C: LOCATION:building 4
         C: LAST-MODIFIED:20020202T010203Z
         C: COMMENT:Ignore global trigger.
         C: BEGIN:VALARM
         C: SEQUENCE:3
         C: TRIGGER;ENABLE=FALSE:RELATED=END:PT5M
         C: END:VALARM
        
         C: Content-Type: text/calendar
         C:
         C: BEGIN:VCALENDAR
         C: VERSION:2.0
         C: PRODID:-//someone's prodid
         C: TARGET:my-cal
         C: CMD:ID=unique-mod:MODIFY
         C: BEGIN:VQUERY                   <- Query to select data set.
         C: QUERY:SELECT * FROM VEVENT WHERE UID = 'unique-58'
         C: END:VQUERY
         C: BEGIN:VEVENT                   <- Start of old data.
         C: LOCATION:building 3
         C: LAST-MODIFIED:20020101T123456Z
         C: X-LOCAL:some private stuff
         C: BEGIN:VALARM
         C: SEQUENCE:3
         C: TRIGGER;RELATED=END:PT5M
         C: END:VALARM
         C: END:VEVENT                     <- End of old data.
         C: BEGIN:VEVENT                   <- Start of new data.
         C: LOCATION:building 4
         C: LAST-MODIFIED:20020202T010203Z
         C: COMMENT:Ignore global trigger.
         C: BEGIN:VALARM
         C: SEQUENCE:3
         C: TRIGGER;ENABLE=FALSE:RELATED=END:PT5M
         C: END:VALARM
        
         C: END:VEVENT                     <- End of new data.
         C: END:VCALENDAR
        
         C: END:VEVENT                     <- End of new data.
         C: END:VCALENDAR
        

The "X-LOCAL" property was not supplied in the new-values, so it was deleted. The "LOCATION" property value was altered, as was the "LAST-MODIFIED" value. The "VALARM" component with a "SEQUENCE" property value of "3" had its "TRIGGER" property disabled, and the "SEQUENCE" property value did not change so it was not effected. The "COMMENT" property was added.

新值中未提供“X-LOCAL”属性,因此将其删除。“LOCATION”属性值和“LAST-MODIFIED”属性值都已更改。“SEQUENCE”属性值为“3”的“VALARM”组件的“TRIGGER”属性已禁用,“SEQUENCE”属性值未更改,因此不受影响。添加了“COMMENT”属性。

When it comes to inline ATTACHMENTs, the CUA only needs to uniquely identify the contents of the ATTACHMENT value in the old-values in order to delete them. When the CS compares the attachment data, it is compared in its binary form. The ATTACHMENT value supplied by the CUA MUST be valid encoded information.

对于内联附件,CUA只需在旧值中唯一标识附件值的内容即可删除它们。CS比较附件数据时,将以二进制形式进行比较。CUA提供的附件值必须是有效的编码信息。

For example, to delete the same huge inline attachment from every VEVENT in 'my-cal' that has an "ATTACH" property value with the

例如,要从“my cal”中具有“ATTACH”属性值且

old-values:

旧价值观:

      BEGIN:VCALENDAR
      VERSION:2.0
      PRODID:-//someone's prodid
      TARGET:my-cal
      CMD:MODIFY
      BEGIN:VQUERY
      QUERY:SELECT ATTACH FROM VEVENT
      END:VQUERY
      BEGIN:VEVENT
      ATTACH;FMTTYPE=image/basic;ENCODING=BASE64;VALUE=BINARY:
       MIICajCCAdOgAwIBAgICbeUwDQYJKoZIhvcNAQEEBQAwdzELMAkGA1U
       EBhMCVVMxLDAqBgNVBAoTI05ldHNjYXBlIENvbW11bmljYXRpb25zIE
       ...< remainder of attachment data NOT supplied >....
      END:VEVENT
      BEGIN:VEVENT
      END:VEVENT
      END:VCALENDAR
        
      BEGIN:VCALENDAR
      VERSION:2.0
      PRODID:-//someone's prodid
      TARGET:my-cal
      CMD:MODIFY
      BEGIN:VQUERY
      QUERY:SELECT ATTACH FROM VEVENT
      END:VQUERY
      BEGIN:VEVENT
      ATTACH;FMTTYPE=image/basic;ENCODING=BASE64;VALUE=BINARY:
       MIICajCCAdOgAwIBAgICbeUwDQYJKoZIhvcNAQEEBQAwdzELMAkGA1U
       EBhMCVVMxLDAqBgNVBAoTI05ldHNjYXBlIENvbW11bmljYXRpb25zIE
       ...< remainder of attachment data NOT supplied >....
      END:VEVENT
      BEGIN:VEVENT
      END:VEVENT
      END:VCALENDAR
        

Here the new-values is empty, so everything in the old-values is deleted.

在这里,新值为空,因此旧值中的所有内容都将被删除。

Furthermore, the following additional restrictions apply:

此外,以下附加限制适用:

1. One cannot change the "UID" property of a component.

1. 不能更改组件的“UID”属性。

2. If a contained component is changed inside of a selected component, and that contained component has multiple instances, then old-values MUST contain information that uniquely identifies the instance or instances that are changing. It is valid to change more than one. All contained components that match old-values will be modified. In the first modify example above, if "SEQUENCE" properties were to be deleted from both the old-values and new-values, then all "TRIGGER" properties that matched the old-values in all "VALARM" components in the selected "VEVENT" components would be disabled.

2. 如果所包含的组件在选定组件内部发生更改,并且所包含的组件具有多个实例,则旧值必须包含唯一标识正在更改的一个或多个实例的信息。可以更改多个。将修改所有包含的与旧值匹配的组件。在上面的第一个修改示例中,如果要从旧值和新值中删除“序列”属性,则将禁用与所选“VEVENT”组件中所有“VALARM”组件中的旧值匹配的所有“触发器”属性。

3. The result of the modify MUST be a valid iCalendar object.

3. 修改的结果必须是有效的iCalendar对象。

Response:

答复:

A "VCALENDAR" component is returned with one ore more "REQUEST-STATUS" property values.

“VCALENDAR”组件返回一个或多个“REQUEST-STATUS”属性值。

If any error occurred:

如果发生任何错误:

No component will be changed at all. That is, it will appear just as it was prior to the modify and the CAP server SHOULD return a "REQUEST-STATUS" property for each error that occurred. There MUST be at least one error reported.

根本不会更改任何组件。也就是说,它将与修改之前一样出现,并且CAP服务器应该为发生的每个错误返回一个“REQUEST-STATUS”属性。必须至少报告一个错误。

If multiple components are selected, then what uniquely identified the component MUST be returned (UID, QUERYID, ...) if the component contains a unique identifier. If it does not, sufficient information to uniquely identify the modified components MUST be returned in the reply.

如果选择了多个组件,则如果组件包含唯一标识符,则必须返回唯一标识的组件(UID、QUERYID等)。如果没有,则必须在回复中返回足够的信息来唯一标识修改的组件。

      S: Content-Type: text/calendar
      S:
      S: BEGIN:VCALENDAR
      S: TARGET:relcalid
      S: CMD;ID=delete#1:REPLY
      S: BEGIN:VREPLY
      S: BEGIN:VEVENT
      S: UID:123
      S: REQUEST-STATUS:2.0
      S: END:VEVENT
      S: END:VREPLY
      S: END:VCALENDAR
        
      S: Content-Type: text/calendar
      S:
      S: BEGIN:VCALENDAR
      S: TARGET:relcalid
      S: CMD;ID=delete#1:REPLY
      S: BEGIN:VREPLY
      S: BEGIN:VEVENT
      S: UID:123
      S: REQUEST-STATUS:2.0
      S: END:VEVENT
      S: END:VREPLY
      S: END:VCALENDAR
        
10.10. MOVE Command
10.10. 移动命令

CMD: MOVE

指令:移动

Purpose: The "MOVE" command is used to move components within the CS.

用途:“移动”命令用于移动CS内的组件。

A CUA MAY send a "MOVE" command to a CS. The "MOVE" command MUST be implemented by all CSs.

CUA可向CS发送“移动”命令。“MOVE”命令必须由所有CSs实现。

The CS MUST NOT send a "MOVE" command to any CUA.

CS不得向任何CUA发送“移动”命令。

Formal Definition: A "MOVE" command is defined by the following notation:

形式定义:“移动”命令由以下符号定义:

         move-cmd    = moveparam ":" "MOVE"
                     ;
         moveparam   = *(
                     ;
                     ; the following are optional,
                     ; but MUST NOT occur more than once
                     ;
                       id-param
                     / localize-param
                     / latency-param
                     ;
                     ; the following MUST occur exactly once and only
                     ; when the latency-param has been supplied and
                     ; MUST NOT be supplied if the latency-param is
                     ; not supplied.
                     ;
                     / action-param
                     ;
                     ; the following is optional,
                     ; and MAY occur more than once
                     ;
                     / other-params
                     ;
                     )
        
         move-cmd    = moveparam ":" "MOVE"
                     ;
         moveparam   = *(
                     ;
                     ; the following are optional,
                     ; but MUST NOT occur more than once
                     ;
                       id-param
                     / localize-param
                     / latency-param
                     ;
                     ; the following MUST occur exactly once and only
                     ; when the latency-param has been supplied and
                     ; MUST NOT be supplied if the latency-param is
                     ; not supplied.
                     ;
                     / action-param
                     ;
                     ; the following is optional,
                     ; and MAY occur more than once
                     ;
                     / other-params
                     ;
                     )
        

Response:

答复:

The REQUEST-STATUS in a VCALENDAR object.

VCALENDAR对象中的请求状态。

The content of each "result" is subject to the result restriction table defined below.

每个“结果”的内容受以下定义的结果限制表的约束。

The access control on the "VAGENDA" component, after it has been moved to its new location in the calstore, MUST be at least as

“VAGENDA”组件移动到calstore中的新位置后,其访问控制必须至少为

secure as it was prior to the move. If the CS is not able to ensure the same level of security, a permission-denied "REQUEST-STATUS" property value MUST be returned, and the "MOVE" command MUST NOT be performed.

安全,因为它是在移动之前。如果CS无法确保相同级别的安全性,则必须返回权限被拒绝的“REQUEST-STATUS”属性值,并且不得执行“MOVE”命令。

The "TARGET" property value specifies the new location, and the "VQUERY" component specifies the old location.

“TARGET”属性值指定新位置,“VQUERY”组件指定旧位置。

Restriction Table for the "REPLY" command of any "MOVE" command.

任何“移动”命令的“回复”命令的限制表。

move-reply = "BEGIN" ":" "VCALENDAR" CRLF calprops 1*(move-vreply) "END" ":" "VCALENDAR" CRLF

move reply=“BEGIN”“:”“VCALENDAR”CRLF calprops 1*(move vreply)“END”“:”“VCALENDAR”CRLF

move-vreply = "BEGIN" ":" "VREPLY" CRLF move-id rstatus "END" ":" "VREPLY" CRLF

move vreply=“BEGIN”“:“vreply”CRLF移动id rstatus“END”“:“vreply”CRLF

                       ; Where the id is appropriate for the
                       ; type of object moved:
                       ;
                       ; VAGENDA = relcalid
                       ; VCAR = carid
                       ; VEVENT, VFREEBUSY, VJOURNAL, VTODO = uid
                       ; VQUERY = queryid
                       ; ALARM = sequence
                       ; An instance = uid recurid
                       ; x-comp = x-id
                       ;
         move-id    =  ( relcalid / carid / uid / uid recurid
                        / queryid / tzid / sequence / x-id)
        
                       ; Where the id is appropriate for the
                       ; type of object moved:
                       ;
                       ; VAGENDA = relcalid
                       ; VCAR = carid
                       ; VEVENT, VFREEBUSY, VJOURNAL, VTODO = uid
                       ; VQUERY = queryid
                       ; ALARM = sequence
                       ; An instance = uid recurid
                       ; x-comp = x-id
                       ;
         move-id    =  ( relcalid / carid / uid / uid recurid
                        / queryid / tzid / sequence / x-id)
        

Example: moving the VAGENDA Nellis to Area-51

示例:将VAGENDA Nellis移至51区

         C: Content-Type: text/calendar
         C:
         C: BEGIN:VCALENDAR
         C: VERSION:2.0
         C: PRODID:-//someone's prodid
         C: CMD:MOVE
         C: TARGET:Area-51
         C: BEGIN:VQUERY
         C: QUERY: SELECT *.* FROM VAGENDA WHERE CALID='Nellis'
         C: END:VQUERY
         C: END:VCALENDAR
        
         C: Content-Type: text/calendar
         C:
         C: BEGIN:VCALENDAR
         C: VERSION:2.0
         C: PRODID:-//someone's prodid
         C: CMD:MOVE
         C: TARGET:Area-51
         C: BEGIN:VQUERY
         C: QUERY: SELECT *.* FROM VAGENDA WHERE CALID='Nellis'
         C: END:VQUERY
         C: END:VCALENDAR
        
         S: Content-Type: text/calendar
         S:
         S: BEGIN:VCALENDAR
         S: VERSION:2.0
         S: PRODID:-//someone's prodid
         S: TARGET:Area-51
         S: BEGIN:VREPLY
         S: CALID:Nellis
         S: REQUEST-STATUS: 2.0
         S: END:VREPLY
         S: END:VCALENDAR
        
         S: Content-Type: text/calendar
         S:
         S: BEGIN:VCALENDAR
         S: VERSION:2.0
         S: PRODID:-//someone's prodid
         S: TARGET:Area-51
         S: BEGIN:VREPLY
         S: CALID:Nellis
         S: REQUEST-STATUS: 2.0
         S: END:VREPLY
         S: END:VCALENDAR
        
10.11. REPLY Response to a Command
10.11. 回复命令

CMD: REPLY

CMD:答复

Purpose: The "REPLY" value to the "CMD" property is used to return the results of all other commands to the CUA.

用途:“CMD”属性的“REPLY”值用于将所有其他命令的结果返回给CUA。

A CUA MUST send a "REPLY" command to a CS for any command a CS MAY send to the CUA. The "REPLY" command MUST be implemented by all CUAs that support getting the "GET-CAPABILITY" command.

对于CS可能发送给CUA的任何命令,CUA必须向CS发送“回复”命令。所有支持获取“GET-CAPABILITY”命令的CUA都必须实现“REPLY”命令。

A CS MUST send a "REPLY" command to a CUA for any command a CUA MAY send to the CS. The "REPLY" command MUST be implemented by all CSs.

对于CUA可能发送给CS的任何命令,CS必须向CUA发送“回复”命令。“REPLY”命令必须由所有CSs实现。

Formal Definition: A "REPLY" command is defined by the following notation:

正式定义:“回复”命令由以下符号定义:

         reply-cmd    = replyparam ":" "REPLY"
                        ;
         replyparam    = *(
                        ;
                        ; The 'id' parameter value MUST be exactly the
                        ; same as the value sent in the original
                        ; CMD property.  If the original CMD did
                        ; not have an 'id' parameter, then the 'id'
                        ; MUST NOT be supplied in the REPLY.
                        ;
                    id-param
                        ;
                        ; the following is optional,
                        ; and MAY occur more than once
                        ;
                     / other-params
                        )
        
         reply-cmd    = replyparam ":" "REPLY"
                        ;
         replyparam    = *(
                        ;
                        ; The 'id' parameter value MUST be exactly the
                        ; same as the value sent in the original
                        ; CMD property.  If the original CMD did
                        ; not have an 'id' parameter, then the 'id'
                        ; MUST NOT be supplied in the REPLY.
                        ;
                    id-param
                        ;
                        ; the following is optional,
                        ; and MAY occur more than once
                        ;
                     / other-params
                        )
        
10.12. SEARCH Command
10.12. 搜索命令

CMD: SEARCH

CMD:搜索

Purpose: The "SEARCH" command is used to return selected components to the CUA.

用途:“搜索”命令用于将所选组件返回CUA。

A CUA MAY send a "SEARCH" command to a CS. The "SEARCH" command MUST be implemented by all CSs.

CUA可向CS发送“搜索”命令。“SEARCH”命令必须由所有CSs实现。

The CS MUST NOT send a "SEARCH" command to any CUA.

CS不得向任何CUA发送“搜索”命令。

Formal Definition: A "SEARCH" command is defined by the following notation:

形式定义:“搜索”命令由以下符号定义:

          search-cmd   = searchparam ":" "SEARCH"
                       ;
         searchparam   = *(
                       ;
                       ; the following are optional,
                       ; but MUST NOT occur more than once
                       ;
                         id-param
                       / localize-param
                       / latency-param
                       ;
                       ; the following MUST occur exactly once and only
                       ; when the latency-param has been supplied and
                       ; MUST NOT be supplied if the latency-param is
                       ; not supplied.
                       ;
                       / action-param
                       ;
                       ; the following is optional,
                       ; and MAY occur more than once
                       ;
                       / other-params
                       )
        
          search-cmd   = searchparam ":" "SEARCH"
                       ;
         searchparam   = *(
                       ;
                       ; the following are optional,
                       ; but MUST NOT occur more than once
                       ;
                         id-param
                       / localize-param
                       / latency-param
                       ;
                       ; the following MUST occur exactly once and only
                       ; when the latency-param has been supplied and
                       ; MUST NOT be supplied if the latency-param is
                       ; not supplied.
                       ;
                       / action-param
                       ;
                       ; the following is optional,
                       ; and MAY occur more than once
                       ;
                       / other-params
                       )
        

The format of the request is the search command (search-cmd) followed by one or more (query) "VQUERY" components

请求的格式是search命令(search cmd),后跟一个或多个(query)“VQUERY”组件

Response:

答复:

The data in each result set contains one or more iCalendar components composed of all the selected results enclosed in a single "VREPLY" component per "QUERY".

每个结果集中的数据包含一个或多个iCalendar组件,这些组件由每个“查询”包含在单个“VREPLY”组件中的所有选定结果组成。

Only "REQUEST-STATUS" property and the properties mentioned in the "SELECT" clause of the QUERY are included in the components. Each "VCALENDAR" component is tagged with the "TARGET" property.

组件中只包括“REQUEST-STATUS”属性和查询的“SELECT”子句中提到的属性。每个“VCALENDAR”组件都标记有“TARGET”属性。

Searching for objects

搜索对象

In the example below, objects on March 10,1999 between 080000Z and 190000Z are read. In this case only four properties for each object are returned. Two calendars are specified. Only booked (vs. scheduled) entries are to be returned (this example only selected VEVENT objects are to be returned):

在下面的示例中,将读取1999年3月10日08000Z和190000Z之间的对象。在这种情况下,每个对象只返回四个属性。指定了两个日历。仅返回预定(与计划)条目(本例仅返回选定的VEVENT对象):

         C: Content-Type: text/calendar
         C:
         C: BEGIN:VCALENDAR
         C: VERSION:2.0
         C: PRODID:-//someone's prodid
         C: CMD:SEARCH
         C: TARGET:relcal2
         C: TARGET:relcal3
         C: BEGIN:VQUERY
         C: QUERY:SELECT DTSTART,DTEND,SUMMARY,UID
         C:  FROM VEVENT
         C:  WHERE DTEND >= '19990310T080000Z'
         C:  AND DTSTART <= '19990310T190000Z'
         C:  AND STATE() = 'BOOKED'
         C: END:VQUERY
         C: END:VCALENDAR
        
         C: Content-Type: text/calendar
         C:
         C: BEGIN:VCALENDAR
         C: VERSION:2.0
         C: PRODID:-//someone's prodid
         C: CMD:SEARCH
         C: TARGET:relcal2
         C: TARGET:relcal3
         C: BEGIN:VQUERY
         C: QUERY:SELECT DTSTART,DTEND,SUMMARY,UID
         C:  FROM VEVENT
         C:  WHERE DTEND >= '19990310T080000Z'
         C:  AND DTSTART <= '19990310T190000Z'
         C:  AND STATE() = 'BOOKED'
         C: END:VQUERY
         C: END:VCALENDAR
        

The return values are subject to VCAR filtering. That is, if the request contains properties to which the UPN does not have access, those properties will not appear in the return values. If the UPN has access to at least one property of the component, but has been denied access to all properties called out in the request, the response will contain a single "REQUEST-STATUS" property indicating the error.

返回值要经过VCAR过滤。也就是说,如果请求包含UPN无权访问的属性,那么这些属性将不会出现在返回值中。如果UPN可以访问组件的至少一个属性,但被拒绝访问请求中调用的所有属性,则响应将包含一个指示错误的“request-STATUS”属性。

Here the request was successful, however one of the "VEVENT" components contents were not accessible (4.1).

此处请求成功,但其中一个“VEVENT”组件内容无法访问(4.1)。

         S: Content-Type: text/calendar
         S:
         S: BEGIN:VCALENDAR
         S: TARGET:relcalid
         S: CMD:REPLY
         S: VERSION:2.0
         S: PRODID:-//someone's prodid
         S: BEGIN:VREPLY
         S: BEGIN:VEVENT
         S: REQUEST-STATUS:4.1
         S: END:VEVENT
         S: BEGIN:VEVENT
         S: REQUEST-STATUS:2.0
         S: UID:123
         S: DTEND:19990310T080000Z
         S: DSTART:19990310T190000Z
         S: SUMMARY: Big meeting
         S: END:VEVENT
        
         S: Content-Type: text/calendar
         S:
         S: BEGIN:VCALENDAR
         S: TARGET:relcalid
         S: CMD:REPLY
         S: VERSION:2.0
         S: PRODID:-//someone's prodid
         S: BEGIN:VREPLY
         S: BEGIN:VEVENT
         S: REQUEST-STATUS:4.1
         S: END:VEVENT
         S: BEGIN:VEVENT
         S: REQUEST-STATUS:2.0
         S: UID:123
         S: DTEND:19990310T080000Z
         S: DSTART:19990310T190000Z
         S: SUMMARY: Big meeting
         S: END:VEVENT
        
         S: END:VREPLY
         S: END:VCALENDAR
        
         S: END:VREPLY
         S: END:VCALENDAR
        

If the UPN has no access to any components at all, the response will simply be an empty data set. The response will look the same if the particular components do not exist.

如果UPN根本无法访问任何组件,那么响应将只是一个空数据集。如果特定组件不存在,则响应看起来是相同的。

         S: Content-Type: text/calendar
         S:
         S: BEGIN:VCALENDAR
         S: VERSION:2.0
         S: PRODID:-//someone's prodid
         S: CMD:REPLY
         S: TARGET:ralcalid
         S: BEGIN:VREPLY
         S: REQUEST-STATUS:2.0
         S: END:VREPLY
         S: END:VCALENDAR
        
         S: Content-Type: text/calendar
         S:
         S: BEGIN:VCALENDAR
         S: VERSION:2.0
         S: PRODID:-//someone's prodid
         S: CMD:REPLY
         S: TARGET:ralcalid
         S: BEGIN:VREPLY
         S: REQUEST-STATUS:2.0
         S: END:VREPLY
         S: END:VCALENDAR
        

If there are multiple targets, each iCalendar reply is contained within its own iCalendar object.

如果有多个目标,则每个iCalendar回复都包含在其自己的iCalendar对象中。

10.12.1. Searching for VFREEBUSY
10.12.1. 正在搜索VFREEBUSY

If a CS sets the "RECUR-EXPAND" property to "TRUE" and contains the "VFREEBUSY" component in the "COMPONENTS" value in a reply to the "GET-CAPABILITY" command, then it is the CS's responsibility (and not the CUA's responsibility) to provide the correct "VFREEBUSY" information for a calendar.

如果CS将“RECUR-EXPAND”属性设置为“TRUE”,并在对“GET-CAPABILITY”命令的回复中的“COMPONENTS”值中包含“VFREEBUSY”组件,则CS有责任(而不是CUA的责任)为日历提供正确的“VFREEBUSY”信息。

If a CUA issues a "CREATE" "VFREEBUSY", such a CS MUST return success and not store the "VFREEBUSY" component as the results would never be used.

如果CUA发出“CREATE”“VFREEBUSY”,这样的CS必须返回success,而不是存储“VFREEBUSY”组件,因为结果永远不会被使用。

Such a CS MUST dynamically create the results of a search for "VFREEBUSY" components at search time when searching for STATE() = 'BOOKED' items.

当搜索STATE()=“BOOKED”项时,此类CS必须在搜索时动态创建“VFREEBUSY”组件的搜索结果。

If a CUA searches for "VFREEBUSY" components with STATE() = 'UNPROCESSED', such a CS MUST return a "VREPLY" with no components.

如果CUA搜索状态为“未处理”的“VFREEBUSY”组件,则此类CS必须返回一个没有组件的“VREPLY”。

If a CUA searches for "VFREEBUSY" components without specifying the STATE, such a CS MUST return the same result as if STATE()='BOOKED' had been specified.

如果CUA在未指定状态的情况下搜索“VFREEBUSY”组件,则此类CS必须返回与指定STATE()=“BOOKED”相同的结果。

For CSs that set the "CAPABILITY" "RECUR-EXPAND" property to "FALSE" and have the "VFREEBUSY" component in the "COMPONENTS" value in the "CAPABILITY" reply, a CUA MAY store the "VFREEBUSY" information on the CS. These CSs then MUST return a "VFREEBUSY" component calculated from the stored components. If no "VFREEBUSY" information is available for the "TARGET" calendar, then a "VFREEBUSY" with no blocked out time will be returned with a success code. A CUA sets the "VFREEBUSY" time on a/those calendars by creating a "VFREEBUSY" component without a "METHOD" creating a "BOOKED" entry.

对于将“CAPABILITY”“RECUR-EXPAND”属性设置为“FALSE”并在“CAPABILITY”回复中的“COMPONENTS”值中包含“VFREEBUSY”组件的CSs,CUA可以在CS上存储“VFREEBUSY”信息。然后,这些CSs必须返回从存储的组件计算出的“VFREEBUSY”组件。如果“目标”日历没有可用的“VFREEBUSY”信息,则将返回一个没有阻塞时间的“VFREEBUSY”,并返回一个成功代码。CUA通过创建“VFREEBUSY”组件而不使用“方法”创建“BOOKED”条目来设置日历上的“VFREEBUSY”时间。

If a CS does not set the "VFREEBUSY" value in the "COMPONENTS" "CAPABILITY" value, the CS does not support the "VFREEBUSY" component and all creation and searching for a "VFREEBUSY" component MUST fail. Examples of calendars that may be in this category are public event calendars that will never require scheduling with other UPNs.

如果CS未在“组件”“功能”值中设置“VFREEBUSY”值,则CS不支持“VFREEBUSY”组件,所有创建和搜索“VFREEBUSY”组件的操作都必须失败。此类日历的示例包括公共事件日历,这些日历永远不需要与其他UPN一起安排日程。

10.13. SET-LOCALE Command
10.13. SET-LOCALE命令

CMD: SET-LOCALE

CMD:SET-LOCALE

Purpose: The "SET-LOCALE" command is used to select the locale that will be used in error codes that are used in the "REQUEST-STATUS" property.

用途:“SET-LOCALE”命令用于选择将在“REQUEST-STATUS”属性中使用的错误代码中使用的区域设置。

A CUA MAY send a "SET-LOCALE" command to a CS. The SET-LOCALE command MUST be implemented by all CSs.

CUA可以向CS发送“设置语言环境”命令。SET-LOCALE命令必须由所有CSs实现。

The CS MUST NOT send a "SET-LOCALE" command to any CUA.

CS不得向任何CUA发送“设置语言环境”命令。

Formal Definition: A "SET-LOCALE" command is defined by the following notation:

正式定义:“SET-LOCALE”命令由以下符号定义:

setlocale-cmd = setlocaleparam ":" "SET-LOCALE"

setlocale cmd=setlocaleparam:“SET-LOCALE”

                        ;
         setlocaleparam   = *(
                        ;
                        ; the following are optional,
                        ; but MUST NOT occur more than once
                        ;
                            id-param
                          / localize-param
                          / latency-param
                          / setlocale-option
                        ;
                        ; the following MUST occur exactly once and only
                        ; only when the latency-param has been supplied.
                        ; It MUST NOT be supplied if the latency-param
                        ; is not supplied.
                        ;
                          / action-param
                        ;
                        ; the following is optional,
                        ; and MAY occur more than once
                        ;
                          / other-params )
        
                        ;
         setlocaleparam   = *(
                        ;
                        ; the following are optional,
                        ; but MUST NOT occur more than once
                        ;
                            id-param
                          / localize-param
                          / latency-param
                          / setlocale-option
                        ;
                        ; the following MUST occur exactly once and only
                        ; only when the latency-param has been supplied.
                        ; It MUST NOT be supplied if the latency-param
                        ; is not supplied.
                        ;
                          / action-param
                        ;
                        ; the following is optional,
                        ; and MAY occur more than once
                        ;
                          / other-params )
        
         setlocale-option   = option-param newlocale
                          ;
         newlocale     =  ; Any locale supplied in the initial [BEEP]
                          ; "greeting" "localize" parameter and
                          ; and any charset supported by the CS
                          ; and listed in the DEFAULT-CHARSET property
                          ; of the VCALSTORE
        
         setlocale-option   = option-param newlocale
                          ;
         newlocale     =  ; Any locale supplied in the initial [BEEP]
                          ; "greeting" "localize" parameter and
                          ; and any charset supported by the CS
                          ; and listed in the DEFAULT-CHARSET property
                          ; of the VCALSTORE
        

Examples:

示例:

         CMD:OPTIONS=en_US.UTF-8:SET-LOCALE
         CMD:OPTIONS=th_TH.ISO8859-11:SET-LOCALE
         CMD:OPTIONS=es_MX.ISO8859-1:SET-LOCALE
        
         CMD:OPTIONS=en_US.UTF-8:SET-LOCALE
         CMD:OPTIONS=th_TH.ISO8859-11:SET-LOCALE
         CMD:OPTIONS=es_MX.ISO8859-1:SET-LOCALE
        

Restriction Table for the "REPLY" command of any "SET-LOCALE" command.

任何“SET-LOCALE”命令的“REPLY”命令的限制表。

setlocale-reply = "BEGIN" ":" "VCALENDAR" CRLF calprops 1*(setlocale-vreply) "END" ":" "VCALENDAR" CRLF

setlocale reply=“BEGIN”“:”“VCALENDAR”CRLF calprops 1*(setlocale vreply)“END”“:”“VCALENDAR”CRLF

setlocale-vreply = "BEGIN" ":" "VREPLY" CRLF rstatus "END" ":" "VREPLY" CRLF

setlocale vreply=“BEGIN”“:“vreply”CRLF rstatus“END”“:“vreply”CRLF

10.14. TIMEOUT Command
10.14. 超时命令

CMD: TIMEOUT

CMD:超时

Purpose: The "TIMEOUT" command is only sent after a command has been sent with a latency value set. When received, it means the command could not be completed in the time allowed.

用途:“超时”命令仅在设置了延迟值的命令发送后发送。收到时,表示无法在允许的时间内完成命令。

Formal Definition: A "TIMEOUT" command is defined by the following notation:

正式定义:“超时”命令由以下符号定义:

timeout-cmd = timeoutparam ":" "TIMEOUT"

timeout cmd=timeoutparam:“超时”

         timeoutparam   = *(
                         ; the following are optional,
                         ; but MUST NOT occur more than once
                           id-param
                         / localize-param
                         / other-params
                         )
        
         timeoutparam   = *(
                         ; the following are optional,
                         ; but MUST NOT occur more than once
                           id-param
                         / localize-param
                         / other-params
                         )
        
10.15. Response Codes
10.15. 响应代码

Numeric response codes are returned using the "REQUEST-STATUS" property.

使用“REQUEST-STATUS”属性返回数字响应代码。

The format of these codes is described in [iCAL] and extended in [iTIP] and [iMIP]. The following describes new codes added to this set and how existing codes apply to CAP.

这些代码的格式在[iCAL]中进行了描述,并在[iTIP]和[iMIP]中进行了扩展。以下介绍添加到此集合的新代码以及现有代码如何应用于CAP。

At the application layer, response codes are returned as the value of a "REQUEST-STATUS" property. The value type of this property is modified from that defined in [iCAL], in order to make the accompanying "REQUEST-STATUS" property text optional.

在应用层,响应代码作为“REQUEST-STATUS”属性的值返回。此属性的值类型将从[iCAL]中定义的值类型进行修改,以使附带的“REQUEST-STATUS”属性文本可选。

      Code              Description
      --------------------------------------------------------------
      2.0               Success.  The parameters vary with the
                        operation and are specified.
        
      Code              Description
      --------------------------------------------------------------
      2.0               Success.  The parameters vary with the
                        operation and are specified.
        

2.0.3 In response to the client issuing an "abort" reply, this reply code indicates that any command currently underway was successfully aborted.

2.0.3 作为对客户端发出“中止”回复的响应,此回复代码表示当前正在执行的任何命令都已成功中止。

3.1.4 Capability not supported.

3.1.4 不支持此功能。

4.1 Calendar store access denied.

4.1 日历存储访问被拒绝。

6.1 Container not found.

6.1 未找到容器。

6.2 Attempt to create or modify an object that would overlap another object in either of the following two circumstances:

6.2 尝试创建或修改在以下两种情况下会与另一个对象重叠的对象:

(a) One of the objects has a TRANSP property set to OPAQUE-NOCONFLICT or TRANSPARENT-NOCONFLICT.

(a) 其中一个对象的TRANSP属性设置为不透明-NOCONFLICT或透明-NOCONFLICT。

(b) The calendar's ALLOW-CONFLICT property is set to FALSE.

(b) 日历的ALLOW-CONFLICT属性设置为FALSE。

6.3 Bad args.

6.3 糟糕的args。

6.4 Permission denied - VCAR restriction. A VCAR exists and the CS will not perform the operation.

6.4 权限被拒绝-VCAR限制。存在VCAR,CS将不执行该操作。

7.0 A timeout has occurred. The server was unable to complete the operation in the requested time.

7.0 发生超时。服务器无法在请求的时间内完成操作。

8.0 A failure has occurred in the CS that prevents the operation from succeeding.

8.0 CS中发生故障,导致操作无法成功。

8.1 A query was performed and the query is too complex for the CS. The operation was not performed.

8.1 已执行查询,该查询对于CS来说太复杂。没有进行手术。

8.2 Used to signal that an iCalendar object has exceeded the server's size limit

8.2 用于表示iCalendar对象已超出服务器的大小限制

8.3 A DATETIME value was too far in the future to be represented on this Calendar.

8.3 DATETIME值在未来太远,无法在此日历上表示。

8.4 A DATETIME value was too far in the past to be represented on this Calendar.

8.4 DATETIME值在过去太远,无法在此日历上表示。

8.5 An attempt was made to create a new object, but the unique UID specified is already in use.

8.5 试图创建新对象,但指定的唯一UID已在使用中。

9.0 An unrecognized command was received. Or an unsupported command was received.

9.0 接收到无法识别的命令。或收到不受支持的命令。

      10.4              The operation has not been performed
                        because it would cause the resources
                        (memory, disk, CPU, etc) to exceed the
                        allocated quota.
        --------------------------------------------------------------
        
      10.4              The operation has not been performed
                        because it would cause the resources
                        (memory, disk, CPU, etc) to exceed the
                        allocated quota.
        --------------------------------------------------------------
        
11. Object Registration
11. 对象注册

This section provides the process for registration of new or modified properties, parameters, commands, or other modifications, additions, or deletions to objects.

本节提供了注册对象的新特性或修改特性、参数、命令或其他修改、添加或删除的过程。

11.1. Registration of New and Modified Entities
11.1. 新实体和修改实体的登记

New objects are registered by the publication of an IETF Request for Comment (RFC). Changes to objects are registered by the publication of a revision to the RFC in a new RFC.

通过发布IETF评论请求(RFC)注册新对象。通过在新的RFC中发布对RFC的修订来注册对对象的更改。

11.2. Post the Item Definition
11.2. 发布项目定义

The object description MUST be posted to the new object discussion list: ietf-calendar@imc.org.

对象描述必须发布到新对象讨论列表:ietf-calendar@imc.org.

11.3. Allow a Comment Period
11.3. 允许评论期

Discussion on a new object MUST be allowed to take place on the list for a minimum of two weeks. Consensus MUST be reached on the object before proceeding to the next step.

必须允许在列表上对新对象进行至少两周的讨论。在进行下一步之前,必须就目标达成共识。

11.4. Release a New RFC
11.4. 发布新的RFC

The new object will be submitted for publication like any other Internet Draft requesting RFC status.

新对象将像任何其他请求RFC状态的Internet草稿一样提交以供发布。

12. BEEP and CAP
12. 嘟嘟声和盖帽声
12.1. BEEP Profile Registration
12.1. 蜂鸣音配置文件注册

BEEP replies will be one-to-one (1:1 MSG/RPY) if possible, and one-to-many (1:many MSG/ANS) when the "TARGET" property value changes. No more than one "TARGET" property value is allowed per reply.

如果可能,蜂鸣音回复将是一对一(1:1 MSG/RPY),当“TARGET”属性值更改时,将是一对多(1:many MSG/ANS)。每个回复不允许超过一个“目标”属性值。

Profile Identification: specify a [URI] that authoritatively identifies this profile.

配置文件标识:指定授权标识此配置文件的[URI]。

   http://iana.org/beep/cap/1.0
        
   http://iana.org/beep/cap/1.0
        

Message Exchanged during Channel Creation:

通道创建期间交换的消息:

CUAs SHOULD supply the BEEP "localize" attributes in the BEEP "greeting" messages.

CUAs应在蜂鸣“问候”消息中提供蜂鸣“本地化”属性。

CSs SHOULD supply the BEEP "localize" attributes in the BEEP "greeting" messages.

CSs应该在蜂鸣“问候”消息中提供蜂鸣“本地化”属性。

CUAs SHOULD supply the BEEP "serverName" attribute at channel creation time to the CS, so that, if the CS is performing virtual hosting, the CS can determine the intended virtual host. CSs that do not support virtual hosting may ignore the BEEP "serverName" attribute.

CUAs应在频道创建时向CS提供蜂鸣“serverName”属性,这样,如果CS正在执行虚拟主机,CS可以确定预期的虚拟主机。不支持虚拟主机的CSs可能会忽略“serverName”属性。

Messages starting one-to-one exchanges:

开始一对一交换的消息:

The initial message, after authentication in each direction, MUST be a single "text/calendar" object containing a CAP "CAPABILITY" CMD. It must not be part of a MIME multipart message.

在每个方向进行身份验证后,初始消息必须是单个“文本/日历”对象,其中包含CAP“CAPABILITY”CMD。它不能是MIME多部分消息的一部分。

After the initial message, a BEEP "MSG" may contain one or more MIME objects (at least one of which MUST be "text/calendar"), and each "text/calendar" MIME object MUST contain a CAP "CMD" property.

在初始消息之后,蜂鸣声“MSG”可能包含一个或多个MIME对象(其中至少一个必须是“text/calendar”),并且每个“text/calendar”MIME对象必须包含CAP“CMD”属性。

Multiple iCalendar objects may be sent in a single BEEP message either by representing them as separate MIME text/calendar parts contained within a MIME multipart/mixed part or by simple concatenation within a single text/calendar MIME object.

通过将多个iCalendar对象表示为MIME多部分/混合部分中包含的单独MIME文本/日历部分,或通过单个文本/日历MIME对象中的简单连接,可以在一条蜂鸣消息中发送多个iCalendar对象。

In either case, all iCalendar objects that are transmitted together must have the same TARGET property.

在任何一种情况下,一起传输的所有iCalendar对象都必须具有相同的目标属性。

The sending of multipart MIME entities over BEEP is not permitted for CAP unless the other endpoint has indicated its ability to accept them via the appropriate CAPABILITY.

CAP不允许通过BEEP发送多部分MIME实体,除非另一个端点已通过适当的功能表明其能够接受这些实体。

Messages in positive replies:

正面回复中的信息:

After the initial message, a BEEP "RPY" may contain one or more MIME objects (at least one of which MUST be "text/calendar"), and each "text/calendar" MIME object MUST contain a CAP "CMD" property. All "text/calendar" MIME objects in a single BEEP "RPY" messages MUST have the same "TARGET" property value.

在初始消息之后,嘟嘟声“RPY”可能包含一个或多个MIME对象(其中至少一个必须是“text/calendar”),并且每个“text/calendar”MIME对象必须包含CAP“CMD”属性。一次“RPY”蜂鸣音消息中的所有“文本/日历”MIME对象必须具有相同的“目标”属性值。

Multiple iCalendar objects may be sent in a single BEEP message by either representing them as separate MIME text/calendar parts contained within a MIME multipart/mixed part or by simple concatenation within a single text/calendar MIME object.

通过将多个iCalendar对象表示为MIME多部分/混合部分中包含的单独MIME文本/日历部分,或通过单个文本/日历MIME对象中的简单连接,可以在一条蜂鸣消息中发送多个iCalendar对象。

In either case, all iCalendar objects transmitted together must have the same TARGET property.

在任何一种情况下,一起传输的所有iCalendar对象都必须具有相同的目标属性。

Sending multipart MIME entities over BEEP is not permitted for CAP unless the other endpoint has indicated its ability to accept them via the appropriate CAPABILITY.

CAP不允许通过BEEP发送多部分MIME实体,除非另一个端点已通过适当的功能表明其能够接受这些实体。

Messages in negative replies:

否定回复中的消息:

Will contain any valid "text/calendar" MIME object that contains CAP "REQUEST-STATUS" property and a CAP "CMD" property with a property value of "REPLY". And where the CS has determined the requested operation to be a fatal error. And when the CS has performed NO operation that effected the contents of any part of the CS or any calendar controlled by the CS.

将包含任何有效的“文本/日历”MIME对象,该对象包含CAP“REQUEST-STATUS”属性和属性值为“REPLY”的CAP“CMD”属性。CS已确定请求的操作为致命错误。以及CS未执行任何影响CS任何部分内容或CS控制的任何日历的操作。

Messages in one-to-many exchanges:

一对多交换中的消息:

After the initial message then a BEEP "MSG" may contain one or more MIME objects at least one of which MUST be "text/calendar" and each "text/calendar" MIME object MUST contain a CAP "CMD" property.

在初始消息之后,嘟嘟声“MSG”可能包含一个或多个MIME对象,其中至少一个必须是“text/calendar”,并且每个“text/calendar”MIME对象必须包含CAP“CMD”属性。

The BEEP "MSG" messages can only contain MIME "multipart" MIME objects if the other endpoint has received a CAP "CAPABILITY" indicating the other endpoint supports multipart MIME objects. This does not prevent the endpoint from sending multiple [iCAL] 'icalobject' objects in a single BEEP "MSG" so long as all of them have the same "TARGET" property value.

如果另一个端点接收到表示另一个端点支持多部分MIME对象的CAP“CAPABILITY”,则蜂鸣“MSG”消息只能包含MIME“multipart”MIME对象。这不会阻止端点在一次蜂鸣“MSG”中发送多个[iCAL]“icalobject”对象,只要它们都具有相同的“TARGET”属性值。

Multiple iCalendar objects may be sent in a single BEEP message by either representing them as separate MIME text/calendar parts contained within a MIME multipart/mixed part or by simple concatenation within a single text/calendar MIME object.

通过将多个iCalendar对象表示为MIME多部分/混合部分中包含的单独MIME文本/日历部分,或通过单个文本/日历MIME对象中的简单连接,可以在一条蜂鸣消息中发送多个iCalendar对象。

In either case, all iCalendar objects transmitted together must have the same TARGET property.

在任何一种情况下,一起传输的所有iCalendar对象都必须具有相同的目标属性。

The sending of multipart MIME entities over BEEP is not permitted for CAP unless the other endpoint has indicated its ability to accept them via the appropriate CAPABILITY.

CAP不允许通过BEEP发送多部分MIME实体,除非另一个端点已通过适当的功能表明其能够接受这些实体。

Message Syntax:

消息语法:

They are CAP "text/calendar" MIME objects as specified in this memo.

它们是本备忘录中指定的CAP“文本/日历”MIME对象。

Message Semantics:

消息语义:

As defined in this memo.

如本备忘录所定义。

12.2. BEEP Exchange Styles
12.2. 蜂鸣音交换样式

[BEEP] defines three styles of message exchange:

[BEEP]定义了三种类型的消息交换:

MSG/ANS,ANS,...,NUL - For one to many exchanges.

MSG/ANS,ANS,…,NUL-用于一对多交换。

MSG/RPY - For one to one exchanges.

MSG/RPY-用于一对一交换。

MSG/ERR - For requests the cannot be processed due to an error.

MSG/ERR-对于由于错误而无法处理的请求。

A CAP request targeted at more than one container MAY use a one- to-many exchange with a distinct answer associated with each target. A CAP request targeted at a single container MAY use a one-to-one exchange or a one-to-many exchange. "MSG/ERR" MAY only be used when an error condition prevents the execution of the request on all the targeted calendars.

针对多个容器的CAP请求可以使用一对多的交换,并与每个目标关联一个不同的答案。针对单个容器的CAP请求可以使用一对一交换或一对多交换。“MSG/ERR”只能在错误条件阻止在所有目标日历上执行请求时使用。

12.3. BEEP Connection Details
12.3. 蜂鸣连接详细信息

All CAP communications must be done securely, so the initial greeting includes the TLS profile.

所有CAP通信必须安全完成,因此初始问候语包括TLS配置文件。

      L: <wait for incoming connection>
        
      L: <wait for incoming connection>
        
      I: <open connection>
        
      I: <open connection>
        
      L: RPY 0 0 . 0 110
      L: Content-Type: application/beep+xml
      L:
      L: <greeting>
      L:    <profile uri='http://iana.org/beep/TLS' />
      L: </greeting>
      L: END
        
      L: RPY 0 0 . 0 110
      L: Content-Type: application/beep+xml
      L:
      L: <greeting>
      L:    <profile uri='http://iana.org/beep/TLS' />
      L: </greeting>
      L: END
        
      I: RPY 0 0 . 0 52
      I: Content-Type: application/beep+xml
      I:
      I: <greeting/>
      I: END
        
      I: RPY 0 0 . 0 52
      I: Content-Type: application/beep+xml
      I:
      I: <greeting/>
      I: END
        

At this point, the connection is secure. The TLS profile 'resets' the connection, so it resends the greetings, advertises the CAP profiles that are supported, and replies with the profile selected (only one profile exists at this time):

此时,连接是安全的。TLS配置文件“重置”连接,因此它会重新发送问候语,播发支持的CAP配置文件,并使用选定的配置文件进行回复(此时仅存在一个配置文件):

      L: <wait for incoming connection>
        
      L: <wait for incoming connection>
        
      I: <open connection>
        
      I: <open connection>
        
      L: RPY 0 0 . 0 110
      L: Content-Type: application/beep+xml
      L:
      L: <greeting>
      L:    <profile uri='http://iana.org/beep/cap/1.0'/>
      L: </greeting>
      L: END
        
      L: RPY 0 0 . 0 110
      L: Content-Type: application/beep+xml
      L:
      L: <greeting>
      L:    <profile uri='http://iana.org/beep/cap/1.0'/>
      L: </greeting>
      L: END
        
      I: RPY 0 0 . 0 110
      I: Content-Type: application/beep+xml
      I:
      I: <greeting>
      I:    <profile uri='http://iana.org/beep/cap/1.0'/>
      I: </greeting>
      I: END
        
      I: RPY 0 0 . 0 110
      I: Content-Type: application/beep+xml
      I:
      I: <greeting>
      I:    <profile uri='http://iana.org/beep/cap/1.0'/>
      I: </greeting>
      I: END
        

Each channel must be authenticated before work can start, but starting a channel involves authentication. Any SASL profile may be included, for example:

在开始工作之前,必须对每个通道进行身份验证,但启动通道涉及身份验证。可以包括任何SASL配置文件,例如:

      <profile uri='http://iana.org/beep/SASL/OTP'/>
      <profile uri='http://iana.org/beep/SASL/DIGEST-MD5'/>
      <profile uri='http://iana.org/beep/SASL/ANONYMOUS'/>
        
      <profile uri='http://iana.org/beep/SASL/OTP'/>
      <profile uri='http://iana.org/beep/SASL/DIGEST-MD5'/>
      <profile uri='http://iana.org/beep/SASL/ANONYMOUS'/>
        

Example of anonymous channel:

匿名通道示例:

      C: <start number='1'>
      C:    <profile uri='http://iana.org/beep/SASL/ANONYMOUS'/>
      C: </start>
        
      C: <start number='1'>
      C:    <profile uri='http://iana.org/beep/SASL/ANONYMOUS'/>
      C: </start>
        
      S: RPY 0 1 . 221 87
      S: Content-Type: application/beep+xml
      S:
      S: <profile uri='http://iana.org/beep/SASL/ANONYMOUS'/>
      S: END
        
      S: RPY 0 1 . 221 87
      S: Content-Type: application/beep+xml
      S:
      S: <profile uri='http://iana.org/beep/SASL/ANONYMOUS'/>
      S: END
        

Example of DIGEST-MD5 channel:

DIGEST-MD5频道示例:

      C: <start number='1'>
      C:    <profile uri='http://iana.org/beep/SASL/DIGEST-MD5'/>
      C: </start>
        
      C: <start number='1'>
      C:    <profile uri='http://iana.org/beep/SASL/DIGEST-MD5'/>
      C: </start>
        
      S: RPY 0 1 . 221 87
      S: Content-Type: application/beep+xml
        
      S: RPY 0 1 . 221 87
      S: Content-Type: application/beep+xml
        
      S:
      S: <profile uri='http://iana.org/beep/SASL/DIGEST-MD5'/>
      S: END
        
      S:
      S: <profile uri='http://iana.org/beep/SASL/DIGEST-MD5'/>
      S: END
        

Piggybacking the "CAPABILITY" command.

借助“能力”命令。

The "CAPABILITY" reply may be included during channel start (see RFC3080, section 2.3.1.2), as BEEP allows the start command to include the initial data transfer. This reduces the number of round trips to initiate a CAP session.

由于BEEP允许启动命令包括初始数据传输,因此在通道启动期间可能会包括“能力”回复(参见RFC3080,第2.3.1.2节)。这减少了启动CAP会话的往返次数。

13. IANA Considerations
13. IANA考虑

This memo defines IANA-registered extensions to the attributes defined by iCalendar, as defined in [iCAL], and [iTIP].

本备忘录定义了iCalendar定义的属性的IANA注册扩展,如[iCAL]和[iTIP]中所定义。

IANA registration proposals for iCalendar and [iTIP] are to be mailed to the registration agent for the "text/calendar" [MIME] content-type, <MAILTO: ietf-calendar@imc.org> using the format defined in section 7 of [iCAL].

iCalendar和[iTIP]的IANA注册建议将邮寄给“文本/日历”[MIME]内容类型的注册代理,<MAILTO:ietf-calendar@imc.org>使用[iCAL]第7节中定义的格式。

The the IANA has registered the profile specified in Section 12.1, and has selected an IANA-specific URI: http://iana.org/beep/cap/1.0.

IANA已注册了第12.1节中规定的配置文件,并选择了IANA特定的URI:http://iana.org/beep/cap/1.0.

14. Security Considerations
14. 安全考虑

Access rights should be granted cautiously. Without careful planning, it is possible to open up access to a greater degree than desired.

应谨慎授予访问权。如果没有周密的规划,就有可能在比预期更大的程度上开放通道。

The "IDENTIFY" command should be carefully implemented. If it is done incorrectly, UPNs may gain access as other, unintended, UPNs. The "IDENTIFY" command may not chain; that is, the identity is always validated against the original UPN and not the new UPN.

应仔细执行“识别”命令。如果操作不正确,UPN可能会像其他非预期UPN一样获得访问权限。“识别”命令可能不起作用;也就是说,身份总是根据原始UPN而不是新的UPN进行验证。

Since CAP is a profile of [BEEP], consult [BEEP]'s Section 9 for a discussion of BEEP-specific security issues.

由于CAP是[BEEP]的一个配置文件,请参阅[BEEP]的第9节,以讨论BEEP特定的安全问题。

There are risks of allowing anonymous UPNs to deposit REQUEST and REFRESH objects (calendar spam and denial-of-service, for example). Implementations should consider methods to restrict anonymous requests to within acceptable usages.

存在允许匿名UPN存放请求和刷新对象(例如日历垃圾邮件和拒绝服务)的风险。实现应该考虑将匿名请求限制在可接受的用法内的方法。

CS implementations might consider automatically creating VCARs that allow CAP ATTENDEEs in booked objects to deposit REFRESH and REPLY objects for those UIDs if they otherwise do not have access rather then opening up world access. And they may also consider allowing COUNTER objects for those ATTENDEEs.

CS实现可能考虑自动创建VCAS,允许在已预订对象中的CAP参与者为那些UID提供刷新和回复对象,如果它们不具有访问权限,而不打开世界访问。他们也可以考虑为那些与会者提供反面物品。

When an object is booked by a CUA ,the CS reply may wish to include warning messages to the CUA for ATTENDEEs that have CAP urls that do not have local UPNs as those ATTENDEES may be unable to REPLY or REFRESH. Some CSs may wish this to be an error.

当CUA预订了某个对象时,CS回复可能希望向CUA发送警告消息,提醒那些具有CAP URL但没有本地UPN的与会者,因为这些与会者可能无法回复或刷新。一些CSs可能希望这是一个错误。

Although service provisioning is a policy matter, at a minimum, all implementations must provide the following tuning profiles:

尽管服务供应是一个策略问题,但至少所有实现都必须提供以下调优配置文件:

o for authentication: http://iana.org/beep/SASL/DIGEST-MD5

o 对于身份验证:http://iana.org/beep/SASL/DIGEST-MD5

o for confidentiality: http://iana.org/beep/TLS (using the TLS_RSA_WITH_3DES_EDE_CBC_SHA cipher)

o 为了保密:http://iana.org/beep/TLS (使用TLS_RSA_和_3DES_EDE_CBC_SHA密码)

o for both: http://iana.org/beep/TLS (using the TLS_RSA_WITH_3DES_EDE_CBC_SHA cipher supporting client-side certificates)

o 对于这两种情况:http://iana.org/beep/TLS (使用TLS_RSA_和支持客户端证书的_3DES_EDE_CBC_SHA密码)

Appendix A. Acknowledgements
附录A.确认书

The following individuals were major contributors to the drafting and discussion of this memo, and they are greatly appreciated:

以下个人是本备忘录起草和讨论的主要贡献者,非常感谢:

Alan Davies, Andrea Campi, Andre Courtemanche, Andrew Davison, Anil Srivastava, ArentJan Banck, Arnaud Quillaud, Benjamin Sonntag, Bernard Desruisseaux, Bertrand Guiheneuf, Bob Mahoney, Bob Morgan, Bruce Kahn, Chris Dudding, Chris Olds, Christopher Apple, Cortlandt Winters, Craig Johnson, Cyrus Daboo, Damon Chaplin, Dan Hickman, Dan Kohn, Dan Winship, Darryl Champagne, David C. Thewlis, David Nicol, David Nusbaum, David West, Derik Stenerson, Eric R. Plamondon, Frank Dawson, Frank Nitsch, Gary Frederick, Gary McGath, Gilles Fortin, Graham Gilmore, Greg Barnes, Greg FitzPatrick, Harald Alvestrand, Harrie Hazewinkel, Helge Hess, Jagan Garimella, Jay Parker, Jim Ray, Jim Smith, Joerg Reichelt, John Berthels, John Smith, John Stracke, Jonathan Lennox, JP Rosevear, Karen Chu, Katie Capps Parlante, Kees Cook, Ken Crawford, Ki Wong, Lars Eggert, Lata Kannan, Lawrence Greenfield, Libby Miller, Lisa Dusseault, Lyndon Nerenberg, Mark Davidson, Mark Paterson, Mark Smith, Mark Swanson, Mark Tearle, Marshall Rose, Martijn van Beers, Martin Jackson, Matthias Laabs, Max Froumentin, Micah Gorrell, Michael Fair, Mike Higginbottom, Mike Hixson, Murata Makoto, Natalia Syracuse, Nathaniel Borenstein, Ned Freed, Olivier Gutknecht, Patrice Lapierre, Patrice Scattolin, Paul Hoffman, Paul Sharpe, Payod Deshpande, Pekka Pessi, Peter Thompson, Preston Stephenson, Prometeo Sandino Roman Corral, Ralph Patterson, Robert Lusardi, Robert Ransdell, Rob Siemborski, Satyanarayana Vempati, Satya Vempati, Scott Hollenbeck, Seamus Garvey, Shannon Clark, Shriram Vishwanathan, Steve Coya, Steve Mansour, Steve Miller, Steve Vinter, Stuart Guthrie, Suchet Singh Khalsa, Ted Hardie, Tim Hare, Timo Sirainen, Vicky Oliver, Paul Hill, and Yael Shaham-Gafni.

艾伦·戴维斯、安德里亚·坎皮、安德烈·柯特曼奇、安德鲁·戴维森、阿尼尔·斯利瓦斯塔瓦、阿伦特扬·班克、阿诺·奎劳德、本杰明·桑塔格、伯纳德·德斯鲁索、伯特兰·吉赫内夫、鲍勃·马奥尼、鲍勃·摩根、布鲁斯·卡恩、克里斯·杜丁、克里斯·奥尔兹、克里斯托弗·苹果、科特兰特·温特斯、克雷格·约翰逊、赛勒斯·达布、达蒙·卓别林、丹·希克曼、丹·科恩、,Dan Winship,Darryl香槟,David C.Thewlis,David Nicol,David Nusbaum,David West,Derik Stenerson,Eric R.Plamondon,Frank Dawson,Frank Nitsch,Gary Frederick,Gary McGath,Gilles Fortin,Graham Gilmore,Greg Barnes,Greg FitzPatrick,Harald Alvestrand,Harrie Hazewinkel,Helge Hess,Jagan Garimella,Jay Parker,Jim Ray,Jim Smith,乔尔格·雷切尔、约翰·伯瑟尔斯、约翰·史密斯、约翰·斯特拉克、乔纳森·伦诺克斯、JP·罗斯维尔、朱家伦、凯蒂·卡普斯·帕兰特、基斯·库克、肯·克劳福德、基·王、拉尔斯·艾格特、拉塔·坎南、劳伦斯·格林菲尔德、利比·米勒、丽莎·杜肖特、林登·内伦伯格、马克·戴维森、马克·帕特森、马克·史密斯、马克·斯旺森、马克·蒂尔、马歇尔·罗斯、,马蒂金·范比尔斯、马丁·杰克逊、马蒂亚斯·拉伯斯、马克斯·弗罗门汀、米卡·戈雷尔、迈克尔·费尔、迈克·希金巴顿、迈克·希克森、穆拉塔·马科托、纳塔莉亚·雪拉库塞、纳撒尼尔·博伦斯坦、内德·弗里德、奥利维尔·古特内克、帕特里斯·拉皮尔、帕特里斯·斯卡托林、保罗·霍夫曼、保罗·夏普、佩卡·佩西、彼得·汤普森、普雷斯顿·斯蒂芬森、,Prometeo Sandino Roman Corral、Ralph Patterson、Robert Lusardi、Robert Randell、Rob Siemborski、Satyanarayana Vempati、Satya Vempati、Scott Hollenbeck、Seamus Garvey、Shannon Clark、Shriram Vishwanathan、Steve Coya、Steve Mansour、Steve Miller、Steve Vinter、Stuart Guthrie、Suchet Singh Khalsa、Ted Hardie、Tim Hare、Timo Sirainen、Vicky Oliver、,保罗·希尔和亚尔·沙哈姆·加夫尼。

Appendix B. References
附录B.参考文献

Appendix B.1. Normative References

附录B.1。规范性引用文件

[ABNF] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax Specifications: ABNF", RFC 4234, October 2005.

[ABNF]Crocker,D.,Ed.和P.Overell,“语法规范的扩充BNF:ABNF”,RFC 42342005年10月。

[BEEP] Rose, M., "The Blocks Extensible Exchange Protocol Core", RFC 3080, March 2001.

[BEEP]Rose,M.,“块可扩展交换协议核心”,RFC 30802001年3月。

[BEEPTCP] Rose, M., "Mapping the BEEP Core onto TCP", RFC 3081, March 2001.

[BEEPTCP]Rose,M.,“将BEEP核心映射到TCP”,RFC 3081,2001年3月。

[BEEPGUIDE] Rose, M., "BEEP, The Definitive Guide", ISBN 0-596- 00244-0, O'Reilly & Associates, Inc.

[BEEPGUIDE]Rose,M.,“BEEP,最终指南”,ISBN 0-596-00244-0,O'Reilly&Associates,Inc。

[GUIDE] Mahoney, B., Babics, G., and A. Taler, "Guide to Internet Calendaring", RFC 3283, June 2002.

[指南]Mahoney,B.,Babics,G.,和A.Taler,“互联网日历指南”,RFC 3283,2002年6月。

[iCAL] Dawson, F. and D. Stenerson, "Internet Calendaring and Scheduling Core Object Specification (iCalendar)", RFC 2445, November 1998.

[iCAL]Dawson,F.和D.Stenerson,“互联网日历和调度核心对象规范(iCalendar)”,RFC 24451998年11月。

[iTIP] Silverberg, S., Mansour, S., Dawson, F., and R. Hopson, "iCalendar Transport-Independent Interoperability Protocol (iTIP) Scheduling Events, BusyTime, To-dos and Journal Entries", RFC 2446, November 1998.

[iTIP]Silverberg,S.,Mansour,S.,Dawson,F.,和R.Hopson,“iCalendar传输独立互操作性协议(iTIP)调度事件,繁忙时间,待办事项和日志条目”,RFC 24461998年11月。

[iMIP] Dawson, F., Mansour, S., and S. Silverberg, "iCalendar Message-Based Interoperability Protocol (iMIP)", RFC 2447, November 1998.

[iMIP]Dawson,F.,Mansour,S.和S.Silverberg,“iCalendar基于消息的互操作性协议(iMIP)”,RFC 2447,1998年11月。

[MIME] Freed, N. and N. Borenstein, "Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies", RFC 2045, November 1996.

[MIME]Freed,N.和N.Borenstein,“多用途Internet邮件扩展(MIME)第一部分:Internet邮件正文格式”,RFC 20451996年11月。

[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", RFC 2119, BCP 14, March 1997.

[RFC2119]Bradner,S.,“RFC中用于表示需求水平的关键词”,RFC 2119,BCP 14,1997年3月。

Appendix B.2. Informative References

附录B.2。资料性引用

[CHARREG] Freed, N. and J. Postel, "IANA Charset Registration Procedures", RFC 2278, January 1998.

[CHARREG]Freed,N.和J.Postel,“IANA字符集注册程序”,RFC 22781998年1月。

[CHARPOL] Alvestrand, H., "IETF Policy on Character Sets and Languages", RFC 2277, January 1998.

[CHARPOL]Alvestrand,H.,“IETF字符集和语言政策”,RFC 22771998年1月。

[RFC2822] Resnick, P., Ed., "Internet Message Format", RFC 2822, April 2001.

[RFC2822]Resnick,P.,Ed.,“互联网信息格式”,RFC 2822,2001年4月。

[SASL] Myers, J., "Simple Authentication and Security Layer (SASL)", RFC 2222, October 1997.

[SASL]迈尔斯,J.,“简单认证和安全层(SASL)”,RFC22221997年10月。

[SQL92] "Database Language SQL", ANSI/ISO/IEC 9075: 1992, aka ANSI X3.135-1992, aka FIPS PUB 127-2

[SQL92]“数据库语言SQL”,ANSI/ISO/IEC 9075:1992,又名ANSI X3.135-1992,又名FIPS PUB 127-2

   [SQLCOM]    ANSI/ISO/IEC 9075:1992/TC-1-1995, Technical corrigendum 1
               to ISO/IEC 9075: 1992, also adopted as Amendment 1 to
               ANSI X3.135.1992
        
   [SQLCOM]    ANSI/ISO/IEC 9075:1992/TC-1-1995, Technical corrigendum 1
               to ISO/IEC 9075: 1992, also adopted as Amendment 1 to
               ANSI X3.135.1992
        

[URLGUIDE] Masinter, L., Alvestrand, H., Zigmond, D., and R. Petke, "Guidelines for new URL Schemes", RFC 2718, November 1999.

[URLGUIDE]Masinter,L.,Alvestrand,H.,Zigmond,D.,和R.Petke,“新URL方案指南”,RFC 2718,1999年11月。

[URI] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform Resource Identifiers (URI): Generic Syntax", RFC 3986, January 2005.

[URI]Berners Lee,T.,Fielding,R.,和L.Masinter,“统一资源标识符(URI):通用语法”,RFC 3986,2005年1月。

[URL] Berners-Lee, T, Masinter, L., and M. McCahil, "Uniform Resource Locators (URL)", RFC 1738, December 1994.

[URL]Berners Lee,T,Masinter,L.和M.McCahil,“统一资源定位器(URL)”,RFC 17381994年12月。

[X509CRL] Housley, R., Polk, W., Ford, W., and D. Solo, "Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile", RFC 3280, April 2002.

[X509CRL]Housley,R.,Polk,W.,Ford,W.,和D.Solo,“Internet X.509公钥基础设施证书和证书撤销列表(CRL)配置文件”,RFC 32802002年4月。

Authors' Addresses

作者地址

Doug Royer IntelliCal, LLC 267 Kentlands Blvd. #3041 Gaithersburg, MD 20878 US

Doug Royer IntelliCal有限责任公司肯特兰大道267号#3041美国马里兰州盖瑟斯堡20878

   Phone: +1-866-594-8574
   Fax:   +1-866-594-8574
   EMail: Doug@IntelliCal.com
   URI:   http://Royer.com
        
   Phone: +1-866-594-8574
   Fax:   +1-866-594-8574
   EMail: Doug@IntelliCal.com
   URI:   http://Royer.com
        

George Babics Oracle 600 Blvd. de Maisonneuve West Suite 1900 Montreal, Quebec H3A 3J2 CA

乔治·巴比奇甲骨文600大道。de Maisonneuve West套房1900魁北克省蒙特利尔H3A 3J2

   Phone: +1-514-905-8694
   EMail: george.babics@oracle.com
        
   Phone: +1-514-905-8694
   EMail: george.babics@oracle.com
        

Steve Mansour eBay 2145 Hamilton Avenue San Jose, CA 95125 USA

Steve Mansour易趣美国加利福尼亚州圣何塞汉密尔顿大道2145号,邮编95125

   Phone: +1-408-376-8817
   EMail: smansour@ebay.com
        
   Phone: +1-408-376-8817
   EMail: smansour@ebay.com
        

Full Copyright Statement

完整版权声明

Copyright (C) The Internet Society (2005).

版权所有(C)互联网协会(2005年)。

This document is subject to the rights, licenses and restrictions contained in BCP 78, and except as set forth therein, the authors retain all their rights.

本文件受BCP 78中包含的权利、许可和限制的约束,除其中规定外,作者保留其所有权利。

This document and the information contained herein are provided on an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

本文件及其包含的信息是按“原样”提供的,贡献者、他/她所代表或赞助的组织(如有)、互联网协会和互联网工程任务组不承担任何明示或暗示的担保,包括但不限于任何保证,即使用本文中的信息不会侵犯任何权利,或对适销性或特定用途适用性的任何默示保证。

Intellectual Property

知识产权

The IETF takes no position regarding the validity or scope of any Intellectual Property Rights or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; nor does it represent that it has made any independent effort to identify any such rights. Information on the procedures with respect to rights in RFC documents can be found in BCP 78 and BCP 79.

IETF对可能声称与本文件所述技术的实施或使用有关的任何知识产权或其他权利的有效性或范围,或此类权利下的任何许可可能或可能不可用的程度,不采取任何立场;它也不表示它已作出任何独立努力来确定任何此类权利。有关RFC文件中权利的程序信息,请参见BCP 78和BCP 79。

Copies of IPR disclosures made to the IETF Secretariat and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of this specification can be obtained from the IETF on-line IPR repository at http://www.ietf.org/ipr.

向IETF秘书处披露的知识产权副本和任何许可证保证,或本规范实施者或用户试图获得使用此类专有权利的一般许可证或许可的结果,可从IETF在线知识产权存储库获取,网址为http://www.ietf.org/ipr.

The IETF invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights that may cover technology that may be required to implement this standard. Please address the information to the IETF at ietf-ipr@ietf.org.

IETF邀请任何相关方提请其注意任何版权、专利或专利申请,或其他可能涵盖实施本标准所需技术的专有权利。请将信息发送至IETF的IETF-ipr@ietf.org.

Acknowledgement

确认

Funding for the RFC Editor function is currently provided by the Internet Society.

RFC编辑功能的资金目前由互联网协会提供。