generated at
NSID
NameSpaced IDs (NSIDs)
NameSpaced IDs (NSIDs) は、メソッド、レコード タイプ、およびその他のセマンティック情報を識別するために ATP 全体で使用されます。

NSID は逆ドメイン名記法を使用し、最終セグメントの前のセグメントが有効なドメイン名にマップされなければならないという制約が追加されます。 たとえば、example.com の所有者は com.example.foo の ID を使用できますが、foo.example.com も管理しない限り、com.example.foo.bar は使用できません。 これらのルールは、スキーマがグローバルに一意であること、(登録済みドメインへの)明確な権限マッピングがあること、およびリクエストによって解決できる可能性があることを保証するためのものです。

NSIDの例:
code
com.example.status io.social.getFeed net.users.bob.ping

文法
ABNF
alpha = "a" / "b" / "c" / "d" / "e" / "f" / "g" / "h" / "i" / "j" / "k" / "l" / "m" / "n" / "o" / "p" / "q" / "r" / "s" / "t" / "u" / "v" / "w" / "x" / "y" / "z" / "A" / "B" / "C" / "D" / "E" / "F" / "G" / "H" / "I" / "J" / "K" / "L" / "M" / "N" / "O" / "P" / "Q" / "R" / "S" / "T" / "U" / "V" / "W" / "X" / "Y" / "Z" number = "1" / "2" / "3" / "4" / "5" / "6" / "7" / "8" / "9" / "0" delim = "." segment = alpha *( alpha / number / "-" ) authority = segment *( delim segment ) name = segment nsid = authority delim name nsid-ns = authority delim "*"

nsid-ns (a "namespace") を特定の状況で使用して、 com.example.* などの名前空間(namespace)の下にあるすべてのnameを指定できます。

Authorityモデル

すべての NSID は、最終セグメントの前のセグメントとして識別される単一のauthority(権限)を主張し、その後反転されます。
example
com.example.thing ^^^^^^^^^^^--------> example.com
authorityは、その中のすべての名前の名前空間を制御しますが、authority間には階層や関係はありません。 つまり、ドメイン example.com sub.example.com に対して何の権限も持たないため、 com.example.* com.example.sub.* から完全に独立していると見なされます。

構文解析 Parsing

NSIDは"authority"と"name"で構成されます。NSIDをauthorityとnameに分解した例:
NSID
NSIDAuthorityName
`com.example.status``example.com``status`
`io.social.getFeed``social.io``getFeed`
`net.users.bob.ping``bob.users.net``ping`

ドメインは、以下のアルゴリズムで抽出することができます:

getNSIDAuthority.js
function getNSIDAuthority (nsid) { // nsid を segment に分割する const parts = nsid.split('.') // 最後の segment を削除する parts.pop() // segments を逆順に並べ替える parts.reverse() // segments を再結合する return parts.join('.') }

名前は、以下のアルゴリズムで抽出することができます:

getNSIDName.js
function getNSIDName (nsid) { // nsid を segment に分割する const parts = nsid.split('.') // 最後の segment を返す return parts.pop() }