A URN Namespace for Public Identifiers

urn:publicid (URL)

[7] URN名前空間 urn:publicid:* は、 SGML などで使われる公開識別子URL として表現するためのものでした。 RFC 3151 で定義されていました。

[9] 元々ほとんど使われていませんでしたが、 SGMLXML の衰退により、 公開識別子自体も使われなくなりました。

仕様書

処理

[10] RFC 3151 には特に書いてありませんが、実装する時には、 公開識別子に使えない文字が入力に含まれていた時の扱いに注意しないといけないでしょう。 実装の種類によって、

... を決めて、それを実装しておくのが良いでしょう。

[11] それとは逆に、解釈する (URI から公開識別子に変換する) 側の実装にも誤り対処が必要です。

... の対処を考える必要があります。 (普段は (b) は無視して素通ししてもいいかもしれません。 (a) は致命的誤りとするか、削除する必要があるでしょう。)

評価

[14] 結局あまり使われなかったのは、 SGMLXML が衰退したのもありますけど、 そもそも需要がなかったのでしょうね。

[15] 公開識別子が求められる場面では、そのままオリジナルの公開識別子を使えばよく、 わざわざ URL に変換しても何も得することがない。

[16] URL が求められる場面では、一般的な URL を使えばよく、 わざわざ公開識別子を変換して使うメリットが何もない。 どころか、変換してわかりにくくなるデメリットがある。

[17] URL だけが求められる場面で公開識別子を統一的に扱いたく、 公開識別子専用の別の仕組みを導入するのが躊躇されるとき、 本手法によって変換した URL を扱えば便利。 でもそんな場面はなかった。 元から公開識別子が想定される場面 (たとえばカタログの記述) なら、公開識別子のまま書ける方が便利に決まっているので、 わざわざ URL だけに限定する理由はない。 元から URL だけを使っていて後から公開識別子が必要になる理由も何もなかった。

関連

[12] XML型録URLの解決外部識別子の解決の処理では、 本項の URL公開識別子に変換されて処理されることになっていました。

歴史

[8] RFC になる前の I-Ddraft-urn-publicid でした。

A URN Namespace for Public Identifiers 公開識別子用 URN 名前空間

  • Network Working Group
  • Request for Comments: 3151
  • Category: Informational
  • N. Walsh
  • Sun Microsystems, Inc.
  • J. Cowan
  • Reuters Health Information
  • P. Grosso
  • Arbortext, Inc.
  • August 2001

Status of this Memo

This memo provides information for the Internet community. It does not specify an Internet standard of any kind. Distribution of this memo is unlimited.

Copyright Notice

Copyright (C) The Internet Society (2001). All Rights Reserved.

Abstract

This document describes a URN (Uniform Resource Name) namespace that is designed to allow Public Identifiers to be expressed in URI (Uniform Resource Identifiers) syntax.

この文書は、公開識別子を URI (Uniform Resource Identifiers) 構文で表現するための URN (Uniform Resource Name) 名前空間を説明します。

1. Introduction

XML [1] external entities have two identifiers: a system identifier and a public identifier. The system identifier is a URI, by definition, but the public identifier is simply a string.

XML 外部実体は、システム識別子公開識別子の2つの識別子を持ちます。 システム識別子は URI として定義されており、 一方公開識別子は単なる文字列です。

訳注: XML 仕様書の訂正で、現在ではシステム識別子は URI そのものではなく「URI 参照に変換されるもの」 とされています。詳しくは XML//URI を参照。

Historically, the system identifier of an external entity has been a local, or system-specific identifier while the public identifier has been a more global, persistent name.

歴史的には、外部実体のシステム識別子はlocal或いはシステム規定の識別子で、他方公開識別子はよりglobalで永続的な名前です。

Unfortunately, public identifiers do not fit neatly into the existing web architecture because they are not legal URIs. Many new specifications (XSLT, XML Schema, etc.) have the implicit or explicit requirement that all external identifiers be URIs.

不幸にも、公開識別子は妥当な URI でないために既存のwebarchitectureにあまり適応しません。 多くの新しい仕様書 (XSLT, XMLSchema など) が陽に陰に、全ての外部識別子が URI であることを求めています。

The purpose of this namespace is to allow public identifiers to be encoded in URNs in a reliable, comparable way.

この名前空間の目的は、公開識別子を信頼可能で比較可能な方法で URN を符号化することを可能とすることです。

This document describes a scheme for representing public identifiers as URNs by introducing a public identifier namespace, "publicid".

この文書は、公開識別子名前空間 pubid を導入することで公開識別子を URN として表現する枠組みを説明します。

This namespace specification is for a formal namespace.

この名前空間仕様は公式名前空間のものです。

1.1 Public Identifiers 公開識別子

Any string which consists only of the public identifier characters (defined by Production 13 of Extensible Markup Language (XML) 1.0 Second Edition [1]) is a legal public identifier.

公開識別子文字 (Extensible Markup Language (XML) 1.0 Second Editionの生成規則 13 で定義。) のみで構成される任意の文字列が、 合法な公開識別子です。

In addition to the character set restriction, public identifiers must be normalized by changing all strings of whitespace (the characters #x20, #x9, #xD, and #xA) to single space characters (#x20), and removing all leading and trailing whitespace.

文字集合の制限に加え、公開識別子は空白 (文字 #x20, #x9, #xD, #xA) 列をすべて単一の間隔文字 (#x20) に変えて、最初と最後の空白を全て削除することで初期化しなければなりません。

In keeping with this specification's goal of allowing public identifiers to be encoded in a reliable, comparable way, this specification mandates that public identifiers be normalized before encoding them into URNs. Throughout this specification, we assume that normalization has already been performed.

公開識別子を信頼可能で比較可能な方法で符号化することを可能にするというこの仕様書の目標を達成するために、 この仕様書は公開識別子を URN に符号化する前に初期化することを強制します。 この仕様書においては、正規化が既に施されたものと仮定します。

1.2 Formal Public Identifiers 公的公開識別子

SGML [2] defines a restricted subset of public identifier called a "Formal Public Identifier" (FPI).

SGML は公開識別子の制限部分集合として「公式公開識別子」 (FPI) を定義しています。

FPIs are strings composed from the same range of characters as public identifiers, but with an explicit internal structure. The structure of Formal Public Identifiers is normatively described in SGML [2]; we review it here for convenience.

FPI は公開識別子と同じ範囲の文字で構成される文字列ですが、 陽に内部構造を持っています。公式公開識別子の構造は SGML で規定されています。ここでは便宜を図ってそれを示します。

Most Formal Public Identifiers consist of the following fields, in this order: an owner identifier, a public text class, a public text description, a public text language or public text designating sequence, and an optional public text display version.

ほとんどの公式公開識別子は次の欄をこの順で含みます: 所有者識別子, 公開文種別, 公開文記述, 公開文言語, 公開文指示シーケンス, 任意選択で公開分表示版

Owner identifiers may begin with "-//" or "+//"; otherwise "//" is used to delimit fields in the FPI (with the exception of the public text class which is delimited from the public text description by a space).

所有者識別子は -// 又は +// で始まるかもしれません。 それ以外では // は FPI の欄を区切るのに使います。 (例外として、公開文種別と公開文記述は間隔で区切ります。)

In other words, most FPIs look like this:

言い換えれば、ほとんどの FPI は次のような感じです。

owner//class description//language//version

所有者//種別 記述//言語//版

and most owners begin with "+//" or "-//", although they are not required to. Here are some example FPIs:

そしてほとんどの所有者は +// 又は -// で始まります。もっともこれは必須ではありません。 (訳注: この両者のいずれも不要であるのは ISO の規格だけです。) 次に幾つかの FPI の例を示します。

This document describes an algorithm for encoding public identifiers into URNs that explicitly allows the structured nature of formal public identifiers to be preserved. However, an algorithm for correctly identifying a Formal Public Identifier and determining the various fields within it is out of scope for this document and not necessary for the implementation of this URN namespace.

この文書は公開識別子を符号化して URN にするに当たって公式公開識別子の構造化された性質が保存されることを陽に認める算法を説明します。 しかし、適切に公的公開識別子を識別してその中の種々の欄を決定する算法はこの文書の適用範囲外であって、 URN 名前空間の実装には必要ではありません。

2. Specification Template 仕様雛形

   Namespace ID:
      "publicid" requested.
   Registration Information:
      Registration Version Number: 1
      Registration Date: 2001-05-08
   Declared registrant of the namespace:
      Norman Walsh
      Sun Microsystems, Inc.
      One Network Drive MS UBURO2-201
      Burlington, MA
      01803-0902
      Norman.Walsh@East.Sun.COM
   Declaration of structure:

The Namespace Specific String (NSS) for URNs in the "publicid" namespace has the following structure:

URN の publicid 名前空間 の名前空間規定文字列 (NSS) は次の構造を持ちます。

         urn:publicid:{transcribed-public-identifier}

Where:

{transcribed-public-identifier} is the text of the public identifier transcribed according to the following rules:

ここで、

{transcribed-public-identifier} は次の規則で公開識別子を書き直した文です。

               -  A space in the public identifier is transcribed as
                  "+".  Whitespace normalization must be performed
                  before constructing a URN in the "publicid" namespace,
                  therefore adjacent "+" characters never occur in URNs
                  in this namespace.
               -  The sequence of characters "//" is transcribed as ":".
               -  The sequence of characters "::" is transcribed as ";".
               -  A literal "+" character is transcribed as "%2B".
               -  A literal ":" character (except in "::") is
                  transcribed as "%3A".
               -  A literal "/" character (except in "//") is
                  transcribed as "%2F".
               -  A literal ";" character is transcribed as "%3B".
               -  A literal "'" character is transcribed as "%27".
               -  A literal "?" character is transcribed as "%3F".
               -  A literal "#" character is transcribed as "%23".
               -  A literal "%" character is transcribed as "%25".
  1. 公開識別子中の間隔を + に書き直す。 publicid 名前空間の URN への変換前に正規化が行われているはずなので、 この名前空間では + が隣接することはない。
  2. 文字列 //: に書き直す。
  3. 文字列 ::; に書き直す。
  4. literal + 文字は %2B に書き換える。
  5. literal : 文字 (:: を除く。) は %3A に書き換える。
  6. literal / 文字 (// を除く。) は %2F に書き換える。
  7. literal ; 文字は %3B に書き換える。
  8. literal ' 文字は %27 に書き換える。
  9. literal ? 文字は %3F に書き換える。
  10. literal # 文字は %23 に書き換える。
  11. literal % 文字は %25 に書き換える。

The special rules for "//" and "::" are designed to preserve the structured nature of formal public identifiers without requiring the translator to have special knowledge of FPI syntax.

// 及び :: の特別な規則は、公式公開識別子の構造化された性質を、 翻訳者に FPI 構文についての特別な知識を要求すること無しに保持するために設計されました。

The rules for "+", ":", "/", and ";" are required to preserve literal occurrences of these characters in the 'publicid' URN namespace.

+, :, /, ; の規則は publicid URN 名前空間内でこれらの文字のliteralな出現を防ぐために必要です。

The remaining characters, " " (space), "'", "?", "#", and "%", are the only other legal characters in public identifiers that cannot be literally transcribed into a URN by the rules of RFC 2141 [4] and RFC 2396 [5].

残りの文字、 (間隔), ', ?, #, %RFC2141 及び RFC2396 の規則により URN 中でliteralに記述することができないものの公開識別子中では合法なほかの文字です。

   Relevant ancillary documentation:
      Extensible Markup Language (XML) Version 1.0 Second Edition [1]
      Standard Generalized Markup Language (SGML) [2]
      Registration procedures for public text owner identifiers [3]
   Identifier uniqueness considerations:

The identifier uniqueness considerations for URNs in the "publicid" namespace are the same as the identifier uniqueness considerations for public identifiers. Formal Public Identifiers with registered owner identifiers are required to be unique. For unregistered owner identifiers and informal public identifiers, they may or may not be unique. No enforcement policy can be asserted.

publicid 名前空間の URI の識別子唯一性についての考察は、 公開識別子の識別子唯一性についての考察と同じです。 固有性の保証のためには登録所有者識別子を使った公式公開識別子が必要です。 未登録所有者識別子及び非公式公開識別子については、 唯一であるかもしれないしないかもしれません。 特に強制する方針はありません。

訳注: この RFC では、 ISO所有者識別子インターネット・ドメイン名所有者識別子登録所有者識別子にまとめて扱っているようです。

   Identifier persistence considerations:

The persistence of URNs in the "publicid" namespace is the same as the persistence of the corresponding public identifier.

publicid 名前空間の URI の永続性は、 対応する公開識別子の永続性と同じです。

The "publicid" namespace is available for a wide range of uses; it cannot be subjected to a uniform persistence policy. As a general rule, formal public identifiers with registered owner identifiers are more likely to be persistent than informal public identifiers or formal public identifiers with unregistered owner identifiers.

publicid 名前空間は広範囲の使用に利用できます。 これはuniform永続性方針の対象とすることが出来ません。 一般的規則の通り、登録所有者識別子による公式公開識別子は非公式公開識別子や未登録所有者識別子による公式公開識別子より永続的でしょう。

One exception to this rule is the "IDN" scheme for producing a registered owner identifier from a domain name. That scheme contains at least all the weaknesses associated with the persistence of domain names.

この規則の一つの例外は、ドメイン名から生成される登録所有者識別子の枠組み IDN です。 この枠組みは、少なくてもドメイン名の永続性に関する全ての弱さを含み持ちます。

It is important to note that a properly registered owner identifier can apply any policy desired to the portion of the "publicid" URN namespace identified by that owner identifier.

適当な登録所有者識別子は、その所有者識別子で識別される publicid URN 名前空間の部分に望まれるどんな方針も適用できることに注意するのは重要です。

   Process of identifier assignment:
      Identifiers in the "publicid" namespace are assigned by applying
      the conversions described above to a public identifier.  In order
      to provide a URN in this namespace for a resource that does not
      have a public identifier, one must be created (according to the
      rules for creating public identifiers).
      There is no requirement that a resource have only one public
      identifier.
   Process of identifier resolution:
      Identifiers in the "publicid" namespace may be resolved by the
      same policies and procedures as public identifiers.  Public
      identifiers can be resolved in many different ways.  Many existing
      systems provide facilities for resolving them by way of OASIS
      TR9401 [6] Catalog files.  Other systems resolve them by mapping
      each component to a local pathname component.  And some systems
      simply "know about" a fixed set of public identifiers.  In
      addition, URNs in the 'publicid' namespace may be resolvable by
      other mechanisms unique to URIs (such as caches).
   Rules for Lexical Equivalence:
      Whitespace normalization is performed before constructing a URN in
      the "publicid" namespace, so URNs are lexically equivalent if and
      only if they are lexically identical.
   Conformance with URN Syntax:
      No special considerations.  URNs in this namespace conform to both
      RFC 2141 and RFC 2396.
   Validation mechanism:
      None specified.
   Scope:
      Global

3. Examples

The following examples are not guaranteed to be real. They are listed for pedagogical reasons only.

次の例は実在することを保証しません。 これらは説明のために挙げただけです。

      "ISO/IEC 10179:1996//DTD DSSSL Architecture//EN" becomes
      "urn:publicid:ISO%2FIEC+10179%3A1996:DTD+DSSSL+Architecture:EN"
      "ISO 8879:1986//ENTITIES Added Latin 1//EN" becomes
      "urn:publicid:ISO+8879%3A1986:ENTITIES+Added+Latin+1:EN"
      "-//OASIS//DTD DocBook XML V4.1.2//EN" becomes
      "urn:publicid:-:OASIS:DTD+DocBook+XML+V4.1.2:EN"
      "+//IDN example.org//DTD XML Bookmarks 1.0//EN//XML" becomes
      "urn:publicid:%2B:IDN+example.org:DTD+XML+Bookmarks+1.0:EN:XML"
      "-//ArborText::prod//DTD Help Document::19970708//EN" becomes
      "urn:publicid:-:ArborText;prod:DTD+Help+Document;19970708:EN"
      "foo" becomes
      "urn:publicid:foo"
      "3+3=6" becomes
      "urn:publicid:3%2B3=6"
      "-//Acme, Inc.//DTD Book Version 1.0" becomes
      "urn:publicid:-:Acme,+Inc.:DTD+Book+Version+1.0"

4. Security Considerations

      There are no additional security considerations other than those
      normally associated with the use and resolution of URNs in
      general.

References

   [1]   W3C, XML WG, "Extensible Markup Language (XML) 1.0 Second
         Edition", February 1998, http://www.w3.org/TR/REC-xml.
   [2]   JTC 1, SC 34, "ISO 8879:1986 Information processing -- Text and
         office systems -- Standard Generalized Markup Language (SGML)",
         1986.
   [3]   JTC 1, SC 34, "ISO/IEC 9070:1991 Information technology -- SGML
         support facilities -- Registration procedures for public text
         owner identifiers", 1991.
   [4]   Moats, R., "URN Syntax", RFC 2141, May 1997.
   [5]   Berners-Lee, T., Fielding, R. and L. Masinter, "Uniform
         Resource Identifiers (URI): Generic Syntax", RFC 2396, August
         1998.
   [6]   Grosso, P., "Entity Management: OASIS Technical Resolution
         9401:1997 (Amendment 2 to TR 9401)", Sep 1997,
         http://www.oasis-open.org/html/tr9401.html.

Authors' Addresses

   Norman Walsh
   Sun Microsystems, Inc.
   One Network Drive MS UBURO2-201
   Burlington, MA  01803-0902
   US
   EMail: Norman.Walsh@East.Sun.COM
   John Cowan
   Reuters Health Information
   45 West 36th St, 12th Floor
   New York, NY  10018
   US
   EMail: jcowan@reutershealth.com
   Paul Grosso
   Arbortext, Inc.
   1000 Victors Way
   Ann Arbor, MI  48108-2744
   US
   EMail: pgrosso@arbortext.com

Acknowledgement

Funding for the RFC Editor function is currently provided by the Internet Society.