Internet Engineering Task Force (IETF) R. Stepanek
Request for Comments: 10050 Fastmail
Category: Standards Track M. Loffredo
ISSN: 2070-1721 IIT-CNR
September 2026
This document defines the "JSContact Profiles" registry, an IANA registry for named subsets of JSContact elements. The document aims to facilitate using JSContact in the context of contact data exchange protocols or other use cases in which supporting all JSContact semantics might be inappropriate.
この文書は、JSContact 要素の名前付きサブセットの IANA レジストリである「JSContact Profiles」レジストリを定義します。このドキュメントは、連絡先データ交換プロトコルのコンテキストや、すべての JSContact セマンティクスをサポートすることが不適切な可能性があるその他のユースケースのコンテキストで JSContact を使用しやすくすることを目的としています。
This is an Internet Standards Track document.
これはインターネット標準化トラックの文書です。
This document is a product of the Internet Engineering Task Force (IETF). It represents the consensus of the IETF community. It has received public review and has been approved for publication by the Internet Engineering Steering Group (IESG). Further information on Internet Standards is available in Section 2 of RFC 7841.
このドキュメントは Internet Engineering Task Force (IETF) の成果物です。これは IETF コミュニティのコンセンサスを表しています。この文書は公開レビューを受け、Internet Engineering Steering Group (IESG) によって公開が承認されています。インターネット標準の詳細については、RFC 7841 のセクション 2 を参照してください。
Information about the current status of this document, any errata, and how to provide feedback on it may be obtained at https://www.rfc-editor.org/info/rfc10050.
この文書の現在のステータス、正誤表、およびそれに対するフィードバックの提供方法に関する情報は、https://www.rfc-editor.org/info/rfc10050 で入手できます。
Copyright (c) 2026 IETF Trust and the persons identified as the document authors. All rights reserved.
Copyright (c) 2026 IETF Trust および文書の著者として特定された人物。無断転載を禁じます。
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Revised BSD License.
この文書は、BCP 78 およびこの文書の発行日に有効な IETF 文書に関する IETF トラストの法的規定 (https://trustee.ietf.org/license-info) の対象となります。これらの文書には、この文書に関するお客様の権利と制限が記載されているため、注意深くお読みください。このドキュメントから抽出されたコード コンポーネントには、トラスト法的規定のセクション 4.e に記載されている改訂 BSD ライセンス テキストが含まれている必要があり、改訂 BSD ライセンスに記載されているように保証なしで提供されます。
1. Introduction 2. Notational Conventions 3. JSContact Profiles 3.1. Profile Name 3.2. Profile Version 3.3. Profile Properties 3.4. Supported Properties 4. IANA Considerations 5. Security Considerations 6. References 6.1. Normative References 6.2. Informative References Appendix A. Example Profile A.1. Profile Properties Example A.2. Card Object Example A.3. IANA Registry Example A.4. Supported Properties Example Authors' Addresses
The JSContact [RFC9553] contact card data model and format are designed for use in address book applications and directory services. Intended as an alternative to the prevalent vCard [RFC6350] data format, JSContact covers vCard core semantics and extensions, and it provides a rich model for personal names, postal addresses, and localization. All JSContact elements are relevant for some contact card use cases, and similar to vCard, implementations are expected to support these elements when exchanging contact card information using protocols such as CardDAV [RFC6352] and the JSON Meta Application Protocol (JMAP) for Contacts [RFC9610].
JSContact [RFC9553] 連絡先カードのデータ モデルと形式は、アドレス帳アプリケーションとディレクトリ サービスで使用するために設計されています。JSContact は、普及している vCard [RFC6350] データ形式の代替として意図されており、vCard のコア セマンティクスと拡張機能をカバーし、個人名、住所、およびローカリゼーションのための豊富なモデルを提供します。すべての JSContact 要素は一部の連絡先カードのユースケースに関連しており、vCard と同様に、CardDAV [RFC6352] や連絡先用の JSON Meta Application Protocol (JMAP) [RFC9610] などのプロトコルを使用して連絡先カード情報を交換する際、実装はこれらの要素をサポートすることが期待されます。
In contrast, other protocols and document specifications might require exchanging _some_ contact card information, but not all of what JSContact provides. Section 1.7.4 of [RFC9553] outlines how JSContact implementations may ignore unknown JSContact elements, but this only applies to future extensions of [RFC9553]; they are still expected to implement all elements of the core specification. Also, the extensibility of JSContact and the requirement to preserve arbitrary contact elements might not be adequate for some protocols.
To make use of JSContact under these circumstances, this document defines a new IANA registry for JSContact that allows registration of named subsets of JSContact elements. These subsets are referred to as "JSContact profiles" and are meant to bring the following benefits:
このような状況で JSContact を利用するために、この文書では JSContact 要素の名前付きサブセットの登録を可能にする JSContact 用の新しい IANA レジストリを定義します。これらのサブセットは「JSContact プロファイル」と呼ばれ、次の利点をもたらすことを目的としています。
* Protocol designers might be encouraged to use JSContact rather than coming up with their own contacts format. This facilitates cross-protocol data exchange and migration.
* プロトコル設計者は、独自の連絡先形式を考え出すのではなく、JSContact を使用することをお勧めします。これにより、クロスプロトコルのデータ交換と移行が容易になります。
* Different protocols use the same IANA registry to express which JSContact elements they support. This facilitates understanding their commonalities and reusing existing profiles.
* 異なるプロトコルは、同じ IANA レジストリを使用して、サポートする JSContact 要素を表現します。これにより、それらの共通点を理解し、既存のプロファイルを再利用することが容易になります。
* A central registry provides implementors of JSContact libraries with a consistent format documenting which profile supports what elements rather than having to look up that information from possibly distinctly organized Internet-Drafts.
* 中央レジストリは、JSContact ライブラリの実装者に、どのプロファイルがどの要素をサポートするかを文書化する一貫した形式を提供します。明確に編成されたインターネット ドラフトから情報を検索する必要はありません。
This document is organized as follows. Section 3 defines JSContact profiles; Section 4 discusses the new "JSContact Profiles" registry created by IANA; and Appendix A illustrates JSContact profiles using an example.
この文書は次のように構成されています。セクション 3 では JSContact プロファイルを定義します。セクション 4 では、IANA によって作成された新しい「JSContact Profiles」レジストリについて説明します。付録 A では、例を使用して JSContact プロファイルを説明します。
A JSContact profile is a named and versioned set of JSContact elements, such as properties, types, and values. The JSContact elements MUST be registered in the IANA "JSContact" registry group [IANA.jscontact]. A profile MAY define additional restrictions for these elements as outlined in Section 3.3, but a profile MUST NOT loosen restrictions. This document creates an IANA registry for JSContact profiles (see Section 4).
JSContact プロファイルは、プロパティ、タイプ、値などの、名前とバージョンが付けられた JSContact 要素のセットです。JSContact 要素は、IANA "JSContact" レジストリ グループ [IANA.jscontact] に登録されなければなりません (MUST)。セクション 3.3 で概説されているように、プロファイルはこれらの要素に対して追加の制限を定義してもよい (MAY) が、制限を緩めてはなりません (MUST NOT)。この文書は、JSContact プロファイル用の IANA レジストリを作成します (セクション 4 を参照)。
A JSContact object complies with a profile if all its properties are in the set of properties defined by that profile and the property values comply with the profile restrictions for that property. A JSContact object MAY comply with multiple profiles. Accordingly, this document does not specify any means for JSContact data to communicate which profiles it complies with, e.g., it does not define a "profile" property for the Card object.
JSContact オブジェクトは、そのすべてのプロパティがそのプロファイルによって定義されたプロパティのセットに含まれており、プロパティ値がそのプロパティのプロファイル制限に準拠している場合、プロファイルに準拠しています。JSContact オブジェクトは複数のプロファイルに準拠してもよい (MAY)。したがって、このドキュメントでは、JSContact データがどのプロファイルに準拠しているかを通信するための手段は指定されていません。たとえば、Card オブジェクトの「プロファイル」プロパティは定義されていません。
All properties and values of a JSContact object that complies with a profile MUST also be valid (Section 1.7 of [RFC9553]). Handling JSContact data that is valid but that does not comply with the expected profile is protocol-specific. This document deliberately does not define such non-compliant data as invalid. Profile designers decide on their own strategies for handling non-compliant data, one of which may be to reject it as invalid. JSContact data that complies with a profile may still not be valid in the context of that protocol; the protocol specification MAY define additional restrictions that a profile cannot express.
プロファイルに準拠する JSContact オブジェクトのすべてのプロパティと値も有効でなければなりません (MUST) ([RFC9553] のセクション 1.7)。有効ではあるが、予期されるプロファイルに準拠していない JSContact データの処理はプロトコル固有です。この文書では、このような非準拠データを無効であるとは意図的に定義していません。プロファイル設計者は、準拠していないデータを処理するための独自の戦略を決定します。その戦略の 1 つは、データを無効として拒否することです。プロファイルに準拠する JSContact データは、そのプロトコルのコンテキストではまだ有効ではない可能性があります。プロトコル仕様は、プロファイルでは表現できない追加の制限を定義してもよい(MAY)。
Section 3.1 defines how to name a JSContact profile; Section 3.2 defines how to version it; Section 3.3 defines how to specify the properties supported by that profile; and Section 3.4 describes how to determine the supported properties.
セクション 3.1 では、JSContact プロファイルに名前を付ける方法を定義します。セクション 3.2 ではバージョン管理方法を定義しています。セクション 3.3 では、そのプロファイルでサポートされるプロパティを指定する方法を定義します。セクション 3.4 では、サポートされるプロパティを決定する方法について説明します。
A JSContact profile has a unique name. The name MUST only contain ASCII lowercase alphabetic and numeric characters, optionally separated by hyphens. It MUST start with an alphabetic character, and it MUST be of at least 1 character and at most 255 characters in size. Formally, it MUST be a valid "profile-name" defined in Figure 1.
JSContact プロファイルには一意の名前が付いています。名前には、ASCII の小文字の英数字のみを含める必要があり、必要に応じてハイフンで区切ることもできます。英字で始まらなければならず、サイズは少なくとも 1 文字、最大 255 文字である必要があります。正式には、図 1 で定義された有効な「プロファイル名」でなければなりません。
profile-name = lalpha *( ["-"] lalpha / DIGIT )
; at most 255 characters in size
lalpha = %x61-7A ; a-z
Figure 1: ABNF Rule for JSContact Profile Name
図 1: JSContact プロファイル名の ABNF ルール
A JSContact profile has a current version, and each profile is versioned independently. The version MUST be a positive integer, and it MUST increase whenever the profile properties (see Section 3.3) change. The initial version value is 1.
JSContact プロファイルには最新バージョンがあり、各プロファイルは個別にバージョン管理されます。バージョンは正の整数でなければならず (MUST)、プロファイルのプロパティ (セクション 3.3 を参照) が変更されるたびに増加しなければなりません (MUST)。初期バージョン値は 1 です。
A profile defines a list of property entries that together determine the set of properties supported by that profile, as described in Section 3.4. The list MUST NOT be empty.
プロファイルは、セクション 3.4 で説明されているように、そのプロファイルでサポートされるプロパティのセットを決定するプロパティ エントリのリストを定義します。リストは空であってはなりません (MUST NOT)。
Each property entry consists of the following elements:
各プロパティ エントリは次の要素で構成されます。
Property Name:
プロパティ名:
This is the name of the JSContact property that this entry refers to. This MUST be a property name registered in the "JSContact Properties" registry. A property name MAY occur multiple times in the property entry list if the profile-specific restrictions for that property cannot be expressed with a single entry, but such multiple entries MUST NOT result in conflicting restrictions for the same property. This field MUST NOT be empty.
これは、このエントリが参照する JSContact プロパティの名前です。これは、「JSContact Properties」レジストリに登録されているプロパティ名でなければなりません (MUST)。プロパティのプロファイル固有の制限を 1 つのエントリで表現できない場合、プロパティ エントリ リスト内でプロパティ名が複数回出現してもよい (MAY)。ただし、そのような複数のエントリが同じプロパティに対して競合する制限を生じさせてはなりません (MUST NOT)。このフィールドは空であってはなりません (MUST NOT)。
Property Context:
プロパティコンテキスト:
This is a comma-separated list of JSContact object types that support this property in this profile. Each of these types MUST also be listed in the Property Contexts for this property in the "JSContact Properties" registry, but a profile MAY only support the property in a subset of these contexts. This field MUST NOT be empty.
これは、このプロファイルでこのプロパティをサポートする JSContact オブジェクト タイプのカンマ区切りのリストです。これらの各タイプは、「JSContact Properties」レジストリ内のこのプロパティのプロパティ コンテキストにもリストされなければなりません(MUST)が、プロファイルはこれらのコンテキストのサブセット内のプロパティのみをサポートしてもよい(MAY)。このフィールドは空であってはなりません (MUST NOT)。
Restricted Attributes:
制限された属性:
This restricts the attributes of the property. This specification only defines how to restrict the attributes such that a property becomes mandatory in the listed Property Contexts, despite the property originally being defined to be optional in the same contexts. The verbatim value "mandatory" (without quotes) indicates that it is mandatory in this profile; the absence of any value indicates that this profile does not restrict the property attributes of the original definition.
これにより、プロパティの属性が制限されます。この仕様は、プロパティが同じコンテキスト内で元々オプションであるように定義されていたにもかかわらず、リストされたプロパティ コンテキスト内でプロパティが必須になるように属性を制限する方法のみを定義します。逐語的な値「mandatory」(引用符なし) は、このプロファイルでは必須であることを示します。値が存在しない場合は、このプロファイルが元の定義のプロパティ属性を制限しないことを示します。
Restricted Property Type:
制限されたプロパティの種類:
This restricts the property value type in the listed Property Contexts. It allows a profile to restrict the allowed types to the original type definition such that future changes to JSContact do not extend the allowed types of the property for this profile, and it allows a profile to restrict the allowed types to a subset of the original type definition. The absence of any value indicates that this profile does not restrict the property value type of the original definition or any future extensions of the value type.
これにより、リストされたプロパティ コンテキスト内のプロパティ値のタイプが制限されます。これにより、プロファイルは、JSContact への今後の変更によってこのプロファイルのプロパティの許可された型が拡張されないように、許可される型を元の型定義に制限することができ、プロファイルは許可される型を元の型定義のサブセットに制限することができます。値が存在しないことは、このプロファイルが元の定義のプロパティ値タイプまたは値タイプの将来の拡張を制限しないことを示します。
If set, the restricted value type MUST exactly match the original definition at the time when the profile is defined, or the original value type MUST contain some type signature in the form "A|B" and the restricted value type MUST resemble the original except that some of the original "A|B" forms now only allow a subset of the original choices. Restricted property types MUST NOT redefine the "defaultType" attribute (Section 1.3.3 of [RFC9553]); the rules about when to set the "@type" property (Section 1.3.4 of [RFC9553]) of the original type definition still apply.
設定されている場合、制限された値のタイプは、プロファイルが定義された時点での元の定義と正確に一致しなければなりません (MUST)。または、元の値のタイプには「A|B」形式の型署名が含まれていなければならず (MUST)、制限された値のタイプは、元の「A|B」形式の一部が元の選択肢のサブセットのみを許可することを除いて、元のものに似ていなければなりません(MUST)。制限されたプロパティ タイプは、「defaultType」属性 ([RFC9553] のセクション 1.3.3) を再定義してはなりません (MUST NOT)。元の型定義の "@type" プロパティ ([RFC9553] のセクション 1.3.4) を設定するタイミングに関する規則は引き続き適用されます。
As an example of restricting the type definition to prevent future type extensions in the profile, one might restrict the type definition of the "addresses" property of the Card object to "Id[Address]", which matches the original definition as of this writing.
プロファイルで将来の型拡張を防ぐために型定義を制限する例として、Card オブジェクトの "addresses" プロパティの型定義を、この記事の執筆時点での元の定義と一致する "Id[Address]" に制限することができます。
As an example of restricting the type to a subset of the original value, one might want to restrict the "date" property of the Anniversary object to only allow partial dates as values. To do so, the original value type "PartialDate|Timestamp" can be restricted to "PartialDate". Note that the original value type need not be exactly in form "A|B". For example, the type signature "Id[A|B|C]" could be restricted to any of "Id[A|B]", "Id[A|C]", "Id[B|C]", "Id[A]", "Id[B]", "Id[C]", and the type signature "(A|B)[]" could be restricted to one of "A[]" or "B[]".
型を元の値のサブセットに制限する例として、Anniversary オブジェクトの「date」プロパティを制限して、部分的な日付のみを値として許可することができます。これを行うには、元の値の種類「PartialDate|Timestamp」を「PartialDate」に制限できます。元の値の型が正確に「A|B」の形式である必要はないことに注意してください。たとえば、型シグネチャ「Id[A|B|C]」は「Id[A|B]」、「Id[A|C]」、「Id[B|C]」、「Id[A]」、「Id[B]」、「Id[C]」のいずれかに制限でき、型シグネチャ「(A|B)[]」は「A[]」または「B[]」のいずれかに制限できます。
Restricted Enum Values:
制限された列挙値:
This restricts the enumerated values defined for this property to a subset of those values. The values MUST be listed in the "JSContact Enum Values" registry for this property and context. Allowed values are separated by a comma; the absence of any value indicates that all enumerated values are allowed. A profile MAY exclude the default enumerated value of a property, in which case all instances of the object MUST have this property set to one of the allowed values.
これにより、このプロパティに定義された列挙値がそれらの値のサブセットに制限されます。値は、このプロパティとコンテキストの「JSContact Enum Values」レジストリにリストされていなければなりません (MUST)。許可される値はカンマで区切られます。値が存在しない場合は、すべての列挙値が許可されることを示します。プロファイルは、プロパティのデフォルトの列挙値を除外してもよく (MAY)、その場合、オブジェクトのすべてのインスタンスは、このプロパティを許可された値の 1 つに設定しなければなりません (MUST)。
Restricted PatchObject:
制限されたパッチオブジェクト:
This restricts the PatchObject value of this property such that each JSON Pointer key in the PatchObject MUST consist of exactly one JSON Pointer reference token (Section 3 of [RFC6901]). For example, with this restriction, the "localizations" property of the Card object can only patch properties of the Card object by replacing their values entirely. The verbatim value "yes" (without quotes) indicates that this profile restricts PatchObject keys to a single token; the absence of any value indicates that it does not restrict them. This MUST NOT be set to "yes" if the property value type is not a PatchObject.
これにより、このプロパティの PatchObject 値が制限され、PatchObject 内の各 JSON Pointer キーが 1 つだけの JSON Pointer 参照トークンで構成されなければなりません (MUST) ([RFC6901] のセクション 3)。たとえば、この制限により、Card オブジェクトの「localizations」プロパティは、値を完全に置き換えることによってのみ Card オブジェクトのプロパティにパッチを適用できます。逐語的な値「yes」(引用符なし) は、このプロファイルが PatchObject キーを単一のトークンに制限することを示します。値が存在しない場合は、制限がないことを示します。プロパティ値のタイプが PatchObject でない場合、これを「yes」に設定してはなりません (MUST NOT)。
All profiles MUST support "@type" and "version"; therefore, profiles MUST NOT include entries for these properties.
すべてのプロファイルは「@type」と「version」をサポートしなければなりません (MUST)。したがって、プロファイルにはこれらのプロパティのエントリを含めてはなりません (MUST NOT)。
The supported properties of a JSContact profile are determined by the profile's property entries and the contents of the IANA "JSContact Properties" registry, which are referred to here as "IANA-registered properties" for short. The "version" property of the Card object and the "@type" property of any object type are always supported.
JSContact プロファイルでサポートされるプロパティは、プロファイルのプロパティ エントリと IANA「JSContact Properties」レジストリの内容によって決まります。ここでは、これらを略して「IANA 登録プロパティ」と呼びます。Card オブジェクトの「version」プロパティと任意のオブジェクト タイプの「@type」プロパティは常にサポートされます。
A Card object complies with the profile if all its properties are part of the supported properties and all property values are valid according to the restrictions defined in the applicable property entries. A PatchObject MUST NOT patch properties that are not supported in that profile.
Card オブジェクトは、そのすべてのプロパティがサポートされているプロパティの一部であり、すべてのプロパティ値が該当するプロパティ エントリで定義された制限に従って有効である場合、プロファイルに準拠します。PatchObject は、そのプロファイルでサポートされていないプロパティにパッチを適用してはなりません (MUST NOT)。
The following describes the steps to determine the supported properties:
以下に、サポートされているプロパティを決定する手順を説明します。
1. Initialize the set with all properties of the Card object for which a property entry contains "Card" in the Property Context of the profile. If no such entry exists, then initialize the set with all IANA-registered properties of the Card object.
1. プロファイルのプロパティ コンテキストのプロパティ エントリに「Card」が含まれる Card オブジェクトのすべてのプロパティを使用してセットを初期化します。そのようなエントリが存在しない場合は、Card オブジェクトのすべての IANA 登録プロパティを使用してセットを初期化します。
2. For every property in the set having either an object type as the value type or a list, map, or union of object types, add all properties for which a property entry contains those object types in the Property Context of the profile. If no such property entry exists, then add all IANA-registered properties for the object types.
2. 値の型としてオブジェクト タイプ、またはオブジェクト タイプのリスト、マップ、または共用体を持つセット内のすべてのプロパティについて、プロパティ エントリにそれらのオブジェクト タイプが含まれるすべてのプロパティをプロファイルのプロパティ コンテキストに追加します。そのようなプロパティ エントリが存在しない場合は、オブジェクト タイプの IANA 登録プロパティをすべて追加します。
3. Repeat the previous step until all object types that are value types of properties in the set have been considered.
3. セット内のプロパティの値タイプであるすべてのオブジェクト タイプが考慮されるまで、前の手順を繰り返します。
Appendix A.4 describes how to determine the supported properties of the example profile in Appendix A.
付録 A.4 では、付録 A のサンプル プロファイルでサポートされているプロパティを確認する方法について説明します。
IANA has created the "JSContact Profiles" registry within the "JSContact" registry group. The purpose of this new registry is to register profiles for JSContact data. The registry policy to add an entry to this registry is "Specification Required" [RFC8126]; this applies to defining a new profile name or version. The registry policy to update an existing profile is "Expert Review"; this applies to updating the references of an entry. The change controller is the IETF.
IANA は、「JSContact」レジストリ グループ内に「JSContact Profiles」レジストリを作成しました。この新しいレジストリの目的は、JSContact データのプロファイルを登録することです。このレジストリにエントリを追加するためのレジストリ ポリシーは、「指定が必要」[RFC8126] です。これは、新しいプロファイル名またはバージョンの定義に適用されます。既存のプロファイルを更新するレジストリ ポリシーは「エキスパート レビュー」です。これは、エントリの参照の更新に当てはまります。変更管理者は IETF です。
An entry in this registry consists of the following, all of which MUST be set:
このレジストリのエントリは以下で構成されており、すべて設定しなければなりません (MUST)。
Name:
名前:
This is the name of the profile. This field is immutable after creation. The name MUST be unique among all registered profiles and MUST comply with the definitions in Section 3.1.
これはプロファイルの名前です。このフィールドは作成後は不変です。名前はすべての登録されたプロファイルの中で一意でなければならず (MUST)、セクション 3.1 の定義に準拠しなければなりません (MUST)。
Version:
バージョン:
This is the version number of the profile. This field is immutable after creation. It MUST comply with the definitions in Section 3.2.
これはプロファイルのバージョン番号です。このフィールドは作成後は不変です。セクション 3.2 の定義に準拠しなければなりません (MUST)。
Reference:
参照:
This refers to the specification of the protocol or use case for which this profile applies. The reference MUST include the section number or section name that defines or updates the property entries for this profile, as defined in Section 3.3.
これは、このプロファイルが適用されるプロトコルまたはユースケースの仕様を指します。参照には、セクション 3.3 で定義されているように、このプロファイルのプロパティ エントリを定義または更新するセクション番号またはセクション名が含まれなければなりません (MUST)。
Designated experts assert that all proposed assignments are valid according to the definitions in this document. For example, they check that:
指定された専門家は、提案されたすべての割り当てがこの文書の定義に従って有効であると主張します。たとえば、次のことをチェックします。
* the profile name is unique,
* プロファイル名は一意です。
* the entries in the profile entries are syntactically valid,
* プロファイルエントリ内のエントリは構文的に有効であり、
* only known property names are referred to,
* 既知のプロパティ名のみが参照されます。
* type restrictions do not incorrectly alter the type of a property, and
* 型制限によってプロパティの型が誤って変更されることはなく、
* the version number increases.
* バージョン番号が増加します。
On the other hand, designated experts do not decide the contents of the profile as long as the assignments are valid.
一方、指定された専門家は、割り当てが有効である限り、プロファイルの内容を決定しません。
The decision whether to register a new profile name or register a new version for an existing profile depends on the scope of the proposed profile. A new profile name is recommended if the profile is introduced in the context of an application or protocol for which no JSContact profile is already registered or if the proposed profile properties or restrictions substantially differ from existing profiles for that context. A new version is recommended if the profile context does not change and multiple implementations of the current profile will also support the new version. The profile version of the new entry for an already-registered profile by that name has to be higher than the last registered version for that profile. Existing registry entries are preserved.
新しいプロファイル名を登録するか、既存のプロファイルの新しいバージョンを登録するかは、提案されたプロファイルの範囲によって決まります。JSContact プロファイルがまだ登録されていないアプリケーションまたはプロトコルのコンテキストでプロファイルが導入される場合、または提案されたプロファイルのプロパティまたは制限がそのコンテキストの既存のプロファイルと大幅に異なる場合は、新しいプロファイル名を使用することをお勧めします。プロファイルのコンテキストが変更されず、現在のプロファイルの複数の実装も新しいバージョンをサポートする場合は、新しいバージョンが推奨されます。その名前ですでに登録されているプロファイルの新しいエントリのプロファイル バージョンは、そのプロファイルに最後に登録されたバージョンよりも高い必要があります。既存のレジストリ エントリは保持されます。
This document does not define any initial contents for the "JSContact Profiles" registry.
この文書では、「JSContact Profiles」レジストリの初期内容は定義されていません。
This document does not provide any new security considerations. The security considerations in Section 4 of [RFC9553] apply.
この文書では、セキュリティに関する新たな考慮事項は提供しません。[RFC9553] のセクション 4 のセキュリティに関する考慮事項が適用されます。
[IANA.jscontact]
IANA, "JSContact",
<https://www.iana.org/assignments/jscontact>.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997, <https://www.rfc-editor.org/info/rfc2119>.
[RFC5234] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax Specifications: ABNF", STD 68, RFC 5234, DOI 10.17487/RFC5234, January 2008, <https://www.rfc-editor.org/info/rfc5234>.
[RFC6901] Bryan, P., Ed., Zyp, K., and M. Nottingham, Ed., "JavaScript Object Notation (JSON) Pointer", RFC 6901, DOI 10.17487/RFC6901, April 2013, <https://www.rfc-editor.org/info/rfc6901>.
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, May 2017, <https://www.rfc-editor.org/info/rfc8174>.
[RFC9553] Stepanek, R. and M. Loffredo, "JSContact: A JSON Representation of Contact Data", RFC 9553, DOI 10.17487/RFC9553, May 2024, <https://www.rfc-editor.org/info/rfc9553>.
[RFC6350] Perreault, S., "vCard Format Specification", RFC 6350, DOI 10.17487/RFC6350, August 2011, <https://www.rfc-editor.org/info/rfc6350>.
[RFC6352] Daboo, C., "CardDAV: vCard Extensions to Web Distributed Authoring and Versioning (WebDAV)", RFC 6352, DOI 10.17487/RFC6352, August 2011, <https://www.rfc-editor.org/info/rfc6352>.
[RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for Writing an IANA Considerations Section in RFCs", BCP 26, RFC 8126, DOI 10.17487/RFC8126, June 2017, <https://www.rfc-editor.org/info/rfc8126>.
[RFC9610] Jenkins, N., Ed., "JSON Meta Application Protocol (JMAP) for Contacts", RFC 9610, DOI 10.17487/RFC9610, December 2024, <https://www.rfc-editor.org/info/rfc9610>.
This section provides an example of a JSContact profile and illustrates how a JSContact Card complies with that profile.
このセクションでは、JSContact プロファイルの例を示し、JSContact カードがそのプロファイルにどのように準拠するかを示します。
The properties of the example profile are defined in Appendix A.1. The profile describes contact cards that can only contain:
サンプルプロファイルのプロパティは、付録 A.1 で定義されています。プロファイルには、以下のみを含めることができる連絡先カードについて説明します。
* Contact cards for individuals and organizations, but no other kinds such as groups or devices.
* 個人および組織用の連絡先カードですが、グループやデバイスなどの他の種類の連絡先カードはありません。
* Full postal address lines, but no address components or any other property of the Address object type. The value type of the "addresses" property is pinned to its original definition, so that future JSContact extensions of that type do not become part of the profile.
* 完全な郵便住所行ですが、住所コンポーネントや Address オブジェクト タイプのその他のプロパティは含まれません。「addresses」プロパティの値の型は元の定義に固定されているため、その型の将来の JSContact 拡張機能はプロファイルの一部になりません。
* Full names and name components, but no other properties of the Name object type.
* フルネームと名前コンポーネントは含まれますが、Name オブジェクト タイプの他のプロパティは含まれません。
* Email addresses, where all properties of the EmailAddress object are supported.
* 電子メール アドレス。EmailAddress オブジェクトのすべてのプロパティがサポートされます。
* Anniversaries for birthdays, and only having "date" property values of type PartialDate, not Timestamp.
* 誕生日の記念日。Timestamp ではなく、PartialDate 型の「日付」プロパティ値のみを持ちます。
* Localizations, with the restriction that the PatchObject must only patch properties of the Card object.
* ローカリゼーション。PatchObject は Card オブジェクトのプロパティのみにパッチを適用する必要があるという制限があります。
An example of JSContact data that complies with this profile is shown in Appendix A.2. An example of its fictive IANA registration is shown in Appendix A.3. This profile is just for illustration; it is not registered with IANA. Appendix A.4 describes how to determine the supported properties for that profile.
このプロファイルに準拠する JSContact データの例を付録 A.2 に示します。架空の IANA 登録の例を付録 A.3 に示します。このプロファイルは説明のみを目的としています。IANA には登録されていません。付録 A.4 では、そのプロファイルでサポートされているプロパティを確認する方法について説明します。
The following entries define properties of that profile. Entry elements with empty values are omitted:
次のエントリは、そのプロファイルのプロパティを定義します。値が空のエントリ要素は省略されます。
Property Name:
プロパティ名:
addresses
住所
Property Context:
プロパティコンテキスト:
Card
カード
Restricted Property Type:
制限されたプロパティの種類:
Id[Address]
ID[住所]
Property Name:
プロパティ名:
anniversaries
記念日
Property Context:
プロパティコンテキスト:
Card
カード
Property Name:
プロパティ名:
emails
電子メール
Property Context:
プロパティコンテキスト:
Card
カード
Property Name:
プロパティ名:
kind
親切
Property Context:
プロパティコンテキスト:
Card
カード
Restricted Enum Values:
制限された列挙値:
individual,org
個人、組織
Property Name:
プロパティ名:
localizations
ローカリゼーション
Property Context:
プロパティコンテキスト:
Card
カード
Restricted PatchObject:
制限されたパッチオブジェクト:
yes
はい
Property Name:
プロパティ名:
name
名前
Property Context:
プロパティコンテキスト:
Card
カード
Property Name:
プロパティ名:
full
満杯
Property Context:
プロパティコンテキスト:
Address
住所
Restricted Attributes:
制限された属性:
mandatory
必須
Property Name:
プロパティ名:
date
日付
Property Context:
プロパティコンテキスト:
Anniversary
周年
Restricted Property Type:
制限されたプロパティの種類:
PartialDate
部分的な日付
Property Name:
プロパティ名:
kind
親切
Property Context:
プロパティコンテキスト:
Anniversary
周年
Restricted Enum Values:
制限された列挙値:
birth
誕生
Property Name:
プロパティ名:
components
コンポーネント
Property Context:
プロパティコンテキスト:
Name
名前
Property Name:
プロパティ名:
full
満杯
Property Context:
プロパティコンテキスト:
Name
名前
Property Name:
プロパティ名:
kind
親切
Property Context:
プロパティコンテキスト:
NameComponent
名前コンポーネント
Property Name:
プロパティ名:
value
価値
Property Context:
プロパティコンテキスト:
NameComponent
名前コンポーネント
The following Card object complies with the example profile:
次の Card オブジェクトはサンプル プロファイルに準拠しています。
{
"@type": "Card",
"version": "1.0",
"name": {
"components": [
{ "kind": "given", "value": "Hayao" },
{ "kind": "surname", "value": "Miyazaki" }
]
},
"addresses": {
"a1": {
"full": "71 Cherry Court, Somewhere, 123SO, UK"
}
},
"emails": {
"e1": {
"address": "hayao@example.com"
}
},
"anniversaries": {
"a1": {
"kind": "birth",
"date": {
"month": 3,
"day": 4
}
}
},
"localizations": {
"jp": {
"name": {
"components": [
{ "kind": "surname", "value": "宮崎" },
{ "kind": "given", "value": "駿" }
]
}
}
}
}
Note that:
ご了承ください:
* The Address, Card, Name, and NameComponent object values only contain properties for which a property entry exists in the profile.
* Address、Card、Name、および NameComponent オブジェクトの値には、プロファイルにプロパティ エントリが存在するプロパティのみが含まれます。
* The EmailAddress object contains the "address" property. This is allowed because the profile contains a property entry for the "emails" property of the Card object, but it does not define entries for the EmailAddress object properties. Consequently, all properties of the EmailAddress object can be set.
* EmailAddress オブジェクトには、「address」プロパティが含まれています。これが許可されるのは、プロファイルには Card オブジェクトの "emails" プロパティのプロパティ エントリが含まれていますが、EmailAddress オブジェクトのプロパティのエントリは定義されていないためです。その結果、EmailAddress オブジェクトのすべてのプロパティを設定できます。
* The "full" property of the Address object is set. It is the only property allowed to be set in that profile for Address, and the "full" property is mandatory for this profile.
* Address オブジェクトの「full」プロパティが設定されます。これは、そのプロファイル内で設定できるアドレスの唯一のプロパティであり、このプロファイルでは「完全」プロパティが必須です。
* The "kind" property of the NameComponent object is set to "surname" and "given". Since the profile does not restrict the enumerated values of this property, all valid NameComponent "kind" property values are supported.
* NameComponent オブジェクトの "kind" プロパティは、"surname" と "given" に設定されます。プロファイルはこのプロパティの列挙値を制限しないため、すべての有効な NameComponent の「kind」プロパティ値がサポートされます。
* The "kind" property of the Card object is not set. The profile restricts the enumerated values of this property to "individual" and "org". Since "individual" is the default value for this property, there is no need to set it.
* Card オブジェクトの "kind" プロパティが設定されていません。プロファイルは、このプロパティの列挙値を「individual」と「org」に制限します。このプロパティのデフォルト値は「個人」であるため、設定する必要はありません。
* The "date" property of the Anniversary object is restricted to be of type PartialDate in this profile. Because PartialDate is the default type for this property, there is no need to the set the "@type" property of the PartialDate object.
* Anniversary オブジェクトの「date」プロパティは、このプロファイルでは PartialDate 型に制限されています。PartialDate はこのプロパティのデフォルトの型であるため、PartialDate オブジェクトの "@type" プロパティを設定する必要はありません。
The following would be registered at IANA if this were a real profile:
これが実際のプロファイルであれば、次のものが IANA に登録されます。
Name:
名前:
jscontact-simple-example
jscontact-simple-example
Version:
バージョン:
1
1
Reference:
参照:
This document, Appendix A.1
この文書、付録 A.1
See Section 4 for the definition of each registry item.
各レジストリ項目の定義については、セクション 4 を参照してください。
The following illustrates how to determine the supported properties of the example profile in this appendix, according to the steps defined in Section 3.4:
以下は、セクション 3.4 で定義されている手順に従って、この付録のサンプル プロファイルでサポートされているプロパティを確認する方法を示しています。
1. We initialize the set of supported properties with all profile properties for which the Property Context includes the Card object. The set now includes the following properties:
1. プロパティ コンテキストに Card オブジェクトが含まれるすべてのプロファイル プロパティを使用して、サポートされているプロパティのセットを初期化します。セットには次のプロパティが含まれています。
* Card.addresses
* カードアドレス
* Card.anniversaries
* カード記念日
* Card.emails
* カードメール
* Card.kind
* カードの種類
* Card.localizations
* カードのローカリゼーション
* Card.name
* Card.name
2. Next, we determine which of the properties in the current set have an object type as the value type. These are the Card.addresses, Card.anniversaries, Card.emails, and Card.name properties, so we need to inspect the object types Address, Anniversary, EmailAddress, and Name. The "addresses" entry restricts the value type of that property to "Id[Address]", which matches its original definition, but any future type extension would still require us only to inspect the Address type.
2. 次に、現在のセット内のどのプロパティが値の型としてオブジェクト型を持つかを決定します。これらは Card.addresses、Card.anniversaries、Card.emails、および Card.name プロパティであるため、オブジェクト タイプ Address、Anniversary、EmailAddress、および Name を検査する必要があります。「addresses」エントリは、そのプロパティの値の型を元の定義と一致する「Id[Address]」に制限しますが、今後の型拡張では、Address 型を検査することだけが必要になります。
3. For the Address object type, the profile has an entry for the "full" property, which contains the Address object in the Property Context, so we add that and only that to the set of supported properties. It now contains:
3. Address オブジェクト タイプの場合、プロファイルには「完全な」プロパティのエントリがあり、プロパティ コンテキストに Address オブジェクトが含まれているため、サポートされているプロパティのセットにそれのみを追加します。現在の内容は次のとおりです。
* Address.full
* 住所.完全
* Card.addresses
* カードアドレス
* Card.emails
* カードメール
* Card.kind
* カードの種類
* Card.localizations
* カードのローカリゼーション
* Card.name
* Card.name
The value type of the Address.full property is not an object type, so we need not consider a new object type to inspect. The remaining object types to inspect are the Anniversary, EmailAddress, and Name objects.
Address.full プロパティの値の型はオブジェクト型ではないため、検査する新しいオブジェクト型を考慮する必要はありません。検査する残りのオブジェクト タイプは、Anniversary、EmailAddress、および Name オブジェクトです。
4. For the Anniversary object type, the profile explicitly lists the "kind" and "date" properties, so we add them to the set of supported properties. It now contains:
4. Anniversary オブジェクト タイプの場合、プロファイルには「kind」プロパティと「date」プロパティが明示的にリストされているため、これらをサポートされるプロパティのセットに追加します。現在の内容は次のとおりです。
* Address.full
* 住所.完全
* Anniversary.date
* Anniversary.date
* Anniversary.kind
* 記念日の種類
* Card.addresses
* カードアドレス
* Card.emails
* カードメール
* Card.kind
* カードの種類
* Card.localizations
* カードのローカリゼーション
* Card.name
* Card.name
The newly added Anniversary.date property has object value type PartialDate, so we add that to the list of object types to inspect. The entry restricts the type of that property to only be of that type, so we do not add the object value type Timestamp. The remaining object types to inspect are the EmailAddress, Name, and PartialDate objects.
新しく追加された Anniversary.date プロパティにはオブジェクト値タイプ PartialDate があるため、それを検査するオブジェクト タイプのリストに追加します。このエントリは、そのプロパティの型をその型のみに制限するため、オブジェクト値の型である Timestamp は追加しません。検査する残りのオブジェクト タイプは、EmailAddress、Name、および PartialDate オブジェクトです。
5. For the PartialDate object type, the profile does not contain any entry where the Property Context contains the PartialDate object. Instead, we add properties from the "JSContact Properties" registry where the Property Context includes the PartialDate object. The set of supported properties now contains:
5. PartialDate オブジェクト タイプの場合、プロパティ コンテキストに PartialDate オブジェクトが含まれるエントリはプロファイルに含まれません。代わりに、プロパティ コンテキストに PartialDate オブジェクトが含まれる「JSContact Properties」レジストリからプロパティを追加します。現在サポートされているプロパティのセットには次のものが含まれています。
* Address.full
* 住所.完全
* Anniversary.date
* Anniversary.date
* Anniversary.kind
* 記念日の種類
* Card.addresses
* カードアドレス
* Card.emails
* カードメール
* Card.kind
* カードの種類
* Card.localizations
* カードのローカリゼーション
* Card.name
* Card.name
* PartialDate.calendarScale
* PartialDate.calendarScale
* PartialDate.day
* PartialDate.day
* PartialDate.month
* PartialDate.month
* PartialDate.year
* PartialDate.year
None of the newly added properties have object value types. The remaining object types to inspect are the EmailAddress and Name objects.
新しく追加されたプロパティにはオブジェクト値タイプはありません。検査する残りのオブジェクト タイプは、EmailAddress オブジェクトと Name オブジェクトです。
6. For the EmailAddress object type, the profile does not contain any entry where the Property Context contains the EmailAddress object. Instead, we add properties from the "JSContact Properties" registry where the Property Context includes the EmailAddress object. The set of supported properties now contains:
6. EmailAddress オブジェクト タイプの場合、プロパティ コンテキストに EmailAddress オブジェクトが含まれるエントリはプロファイルに含まれません。代わりに、プロパティ コンテキストに EmailAddress オブジェクトが含まれる「JSContact Properties」レジストリからプロパティを追加します。現在サポートされているプロパティのセットには次のものが含まれています。
* Address.full
* 住所.完全
* Anniversary.date
* Anniversary.date
* Anniversary.kind
* 記念日の種類
* Card.addresses
* カードアドレス
* Card.emails
* カードメール
* Card.kind
* カードの種類
* Card.localizations
* カードのローカリゼーション
* Card.name
* Card.name
* EmailAddress.address
* メールアドレス.アドレス
* EmailAddress.contexts
* 電子メールアドレス.コンテキスト
* EmailAddress.label
* 電子メールアドレス.ラベル
* EmailAddress.pref
* 電子メールアドレス.pref
* PartialDate.calendarScale
* PartialDate.calendarScale
* PartialDate.day
* PartialDate.day
* PartialDate.month
* PartialDate.month
* PartialDate.year
* PartialDate.year
None of the newly added properties have object value types. The remaining object type to inspect is the Name object.
新しく追加されたプロパティにはオブジェクト値タイプはありません。検査する残りのオブジェクト タイプは、Name オブジェクトです。
7. For the Name object type, the profile explicitly lists the "components" and "full" properties, so we add them to the set of supported properties. It now contains:
7. Name オブジェクト タイプの場合、プロファイルには「components」プロパティと「full」プロパティが明示的にリストされているため、サポートされているプロパティのセットにそれらを追加します。現在の内容は次のとおりです。
* Address.full
* 住所.完全
* Anniversary.date
* Anniversary.date
* Anniversary.kind
* 記念日の種類
* Card.addresses
* カードアドレス
* Card.emails
* カードメール
* Card.kind
* カードの種類
* Card.localizations
* カードのローカリゼーション
* Card.name
* Card.name
* EmailAddress.address
* メールアドレス.アドレス
* EmailAddress.contexts
* 電子メールアドレス.コンテキスト
* EmailAddress.label
* 電子メールアドレス.ラベル
* EmailAddress.pref
* 電子メールアドレス.pref
* Name.full
* 名前.フル
* Name.components
* 名前.コンポーネント
* PartialDate.calendarScale
* PartialDate.calendarScale
* PartialDate.day
* PartialDate.day
* PartialDate.month
* PartialDate.month
* PartialDate.year
* PartialDate.year
The newly added Name.components property has object value type NameComponent, so we add that to the list of object types to inspect.
新しく追加された Name.components プロパティにはオブジェクト値タイプ NameComponent があるため、それを検査するオブジェクト タイプのリストに追加します。
8. For the NameComponent object type, the profile does not explicitly list any property. Instead, we add properties of the "JSContact Properties" registry where the Property Context includes the NameComponent object. The set of supported properties now contains:
8. NameComponent オブジェクト タイプの場合、プロファイルにはプロパティが明示的にリストされません。代わりに、プロパティ コンテキストに NameComponent オブジェクトが含まれる「JSContact Properties」レジストリのプロパティを追加します。現在サポートされているプロパティのセットには次のものが含まれています。
* Address.full
* 住所.完全
* Anniversary.date
* Anniversary.date
* Anniversary.kind
* 記念日の種類
* Card.addresses
* カードアドレス
* Card.emails
* カードメール
* Card.kind
* カードの種類
* Card.localizations
* カードのローカリゼーション
* Card.name
* Card.name
* EmailAddress.address
* メールアドレス.アドレス
* EmailAddress.contexts
* 電子メールアドレス.コンテキスト
* EmailAddress.label
* 電子メールアドレス.ラベル
* EmailAddress.pref
* 電子メールアドレス.pref
* NameComponent.kind
* 名前コンポーネント.種類
* NameComponent.phonetic
* 名前コンポーネント.phonetic
* NameComponent.value
* 名前コンポーネント.値
* PartialDate.calendarScale
* PartialDate.calendarScale
* PartialDate.day
* PartialDate.day
* PartialDate.month
* PartialDate.month
* PartialDate.year
* PartialDate.year
None of the newly added properties have object value types, and there are no remaining object types to inspect. This determines the set of supported properties by that profile, in addition to the "Card.version" and "@type" property that are always supported.
新しく追加されたプロパティにはオブジェクト値タイプが含まれておらず、検査するオブジェクト タイプも残りません。これにより、常にサポートされる "Card.version" プロパティと "@type" プロパティに加えて、そのプロファイルによってサポートされるプロパティのセットが決まります。
Robert Stepanek
Fastmail
PO Box 234
Collins St. West
Melbourne VIC 8007
Australia
Email: rsto@fastmailteam.com
Mario Loffredo
IIT-CNR
Via Moruzzi, 1
56124 Pisa
Italy
Email: mario.loffredo@iit.cnr.it