Note
このドキュメントは2026-02-27 03:29にPLaMo Translation Modelを使用して自動翻訳されました。
FEP-a070: JSON消費者向けの順序付きプロパティ仕様
概要
規範的なAS2コンテキストにおいて[GitHubで報告された問題]において、attachmentとtagはデフォルトでは無秩序な配列として扱われるものの、「fediverse」系ソフトウェアの中にはこれらを暗黙的に順序付きとみなす実装が存在することが指摘されました。JSON-LDでは@listを使用することでこの曖昧さを解消できますが、プレーンなJSON消費者向けには別個の簡潔表記用語を定義する必要があります。本FEPでは、このようなプレーンJSON消費者向けに、無秩序配列と順序付き配列を明確に区別することを目的としています。
itemsとorderedItemsに関する既存仕様との比較
(本節は規範的ではない解説です)
[AS2-vocab]ではコレクションやOrderedCollectionに含まれる項目を表現するためのitemsという用語が定義されています。一方、[ActivityPub]においてはOrderedCollection型が必ず逆時系列順で構成されることが義務付けられています。余談ですが、itemsを持つコレクションにおいて、その要素が順序付きか無秩序かを任意に設定することは有効な実装方法です。
規範的な[AS2-context]ではこの問題に対し、itemsとorderedItemsという二つの異なる用語を定義することで対応しています。これらの用語はいずれもグラフ上のノードを表すことを示すために同じ@id(https://www.w3.org/ns/activitystreams#items)と@type(@id)を共有していますが、orderedItemsにはさらに順序付き配列を示す@containerとして@listが明示的に定義されており、デフォルトの無秩序集合@setを上書きしています。
[AS2-vocab]内のitemsに関する使用例ではorderedItemsが実際に用いられていますが、これは独立した用語としては定義されていません。この慣行に従い、既存の「無秩序」プロパティに対して同様に「順序付き」対応語を定義することが可能です。
制作者が明示的に順序付けを行いたい可能性のあるプロパティの検討
(本節は規範的ではない考察です)
attachment
: オブジェクトに添付されるファイルの配列順序には明確な要件はありませんが、多くの場合においてこれらのファイルを特定の順序で配置することが期待されます。例えば、あるユーザーが三連画を表現するために3枚の画像を順番に添付したい場合などが考えられます。attachment配列の順序が変更されると、作成者の意図した表現が変わってしまう可能性があります。
tag : タグは一般に自由形式で、特定の順序で解析されることを想定していませんが、場合によってはタグを順序付けたいユースケースも存在します。例えばTumblrでは、ユーザーが自身のタグ表示順を設定する機能があり、これらのタグを使って会話文脈に明示的に現れない一連のコメントや思考を表現することがあります。
name
: 一つの対象物は複数の名称を持つことができ、その中には他の名称よりも優先されるものが含まれる場合があります。本FEP執筆時点では、nameプロパティを配列として定義することは既存実装を混乱させる可能性が高いですが、いくつかのユースケースにおいては有用な機能となり得るものです。
oneOf/anyOf : 質問が選択肢付き投票を表す場合、オプションの順序は投票内容を理解する上で重要な要素となる可能性があります。例えば、「選択肢2」「選択肢3」「選択肢1」の中から最も多くの票を獲得するものを予測させるような自己言及型の投票などが該当します。
本FEPで定義する用語
関連コンテキストにおいて、以下の用語を以下のように定義します:
orderedAttachment
URI
: https://www.w3.org/ns/activitystreams#attachment
注釈 : https://www.w3.org/TR/activitystreams-vocabulary/#dfn-attachment
JSON-LD定義:
{
"@context": {
"orderedAttachment": {
"@id": "https://www.w3.org/ns/activitystreams#attachment",
"@type": "@id",
"@container": "@list"
}
}
}
orderedTag
用語
: orderedTag
URI
: https://www.w3.org/ns/activitystreams#tag
注釈 : https://www.w3.org/TR/activitystreams-vocabulary/#dfn-tag
JSON-LD定義:
{
"@context": {
"orderedTag": {
"@id": "https://www.w3.org/ns/activitystreams#tag",
"@type": "@id",
"@container": "@list"
}
}
}
参考文献
- [ActivityPub] Christine Lemmer Webber, Jessica Tallon, ActivityPub, 2018
- [AS2-context] W3C, activitystreams.jsonld
- [AS2-vocab] James M Snell, Evan Prodromou, Activity Vocabulary, 2017
- [GitHub問題報告] trwnh, orderedAttachment(およびorderedTag?), 2023
著作権について
CC0 1.0 Universal (CC0 1.0) パブリックドメイン献呈
法律で許容される範囲内において、本Fediverse Enhancement Proposalの著者らは当該著作物に関するすべての著作権および関連する権利を放棄しています。