朝日奈アンテナ meta data format version 2.2 (HINA/2.2) Document revision 0.7 2000/09/24 1. 概要 本文書は、更新時刻取得エージェント「朝日奈アンテナ」(http://masshy.fastwave.gr.jp/hina/release/) におけるmeta data formatである "hina-di" について記述したものである。 2. hina-diとは この文書では、あるweb上のコンテンツの情報(更新時刻・著者など)を"meta data"と呼称する。 hina-diは朝日奈アンテナにおけるmeta data記述formatである。朝日奈アンテナはhina-diを基本として、 他サイトの朝日奈アンテナ及び更新時刻取得エージェントと情報共有・交換を行う。 3. データ構造 3.1 BNF 本文書において、hina-diの全仕様はBNF(Backus-Naur Form)[RFC822]によって記述される。 3.2 データタイプ hina-diを構成するデータタイプを以下に挙げる。US-ASCIIのcharacter setはANSI X3.4-1986とする。 OCTET = CHAR = UPALPHA = LOALPHA = ALPHA = UPALPHA | LOALPHA DIGIT = WORD = <1*(ALPHA|DIGIT) but excluding ":" and "-"> CTL = CR = LF = SP = HT = <"> = CRLF = CR LF TEXT = TOKEN = SEPARATOR = ":" 1*( SP | HT ) DELIMITER = "," *(SP|HT) 4. hina-diの構成 hina-diは あるコンテンツの情報「メタデータ(meta data)」をまとめたBlockからなる。 hina-di = Header-block ; 4.2 Header-block 1*( Entity-block ) ; 4.3 Entity-block 4.1 Block あるコンテンツについて記述されたmeta dataのまとまり。 Blockには「4.2 Header-block」と「4.3 Entity-block」の2つがある。 Blockは行指向フォーマット(Line-format)で記述される。 ただし「5.1 HINA」を除く。 Line-format = field-name SEPARATOR field-value CRLF field-name = WORD *( "-" WORD) field-value = TOKEN field-nameは大文字・小文字の区別なし、field-valueのそれはfield-nameに依存。 4.2 Header-block hina-diの先頭にあるBlock。hina-di自身の情報を持つ。 Header-block = HINA ; 5.1 HINA Hinadi-Header CRLF Hinadi-header = 1*( User-Agent ; 5.2 User-Agent | Content-Type ; 5.5 Content-Type | Date ) ; 5.6 Date 4.3 Entity-block Header-block以降のBlock。コンテンツのmeta dataを持つ。 Entity-block = 1*( URL ; 5.3 URL | HINA-Version ; 5.4 HINA-Version | Content-Type ; 5.5 Content-Type | Date ; 5.6 Date | Title ; 5.7 Title | Author-Name ; 5.8 Author-Name | Expires ; 5.9 Expires | Expire ; 5.10 Expire | Last-Modified ; 5.11 Last-Modified | Last-Modified-Detected ; 5.12 Last-Modified-Detected | Server ; 5.13 Server | Authorized ; 5.14 Authorized | Authorized-url ; 5.15 Authorized-url | Method ; 5.16 Method | Keyword ; 5.17 Keyword | Experimental-field ; 6. Experimental-field | Undefined-field ; 7. Undefined-field CRLF 5. 定義field 5.1 HINA 自身がhina-diである事と、そのversionを示す。 HINA = "HINA" "/" hinadi-version CRLF hinadi-version = "2.2" 5.2 User-Agent hina-diを出力したagent名。このfieldは必須である。 User-Agent = "User-Agent" SEPARATOR TOKEN CRLF field-valueの大文字小文字区別: あり 5.3 URL コンテンツを明示するURL。このfieldは必須である。 このfieldは、Blockの先頭に置かれる事が推奨される。 URL = "URL" SEPARATOR rfc2396-url CRLF rfc2396-url = field-valueの大文字小文字区別: RFC 2396に準拠 5.4 HINA-Version そのEntity-blockが、「9. meta dataの完全性」も含め完全準拠しているhina-diのバージョン。 一部準拠の場合はこのfieldを明示してはならない。 HINA-Version = "HINA-Version" SEPARATOR version version = "HINA" "/" 1*( DIGIT ) "." 1*( DIGIT ) このfieldは、versionで示されるhina-diで定義されるmeta dataの完全性が 保証されている事を意味する。 このfieldが存在しない場合、そのEntity-blockのmeta dataが不完全であり、 一部が欠落している可能性がある事を意味する。 5.5 Content-Type hina-diもしくはコンテンツのContent-type。 ( Header-block内: hina-di自体のContent-Type Entity-block内: コンテンツのContent-Type ) Content-Type = "Content-Type" SEPARATOR rfc1521-type CRLF rfc1521-type = field-valueの大文字小文字区別: RFC1521に準拠 5.6 Date そのblockを出力した時刻 Date = "Date" SEPARATOR rfc2616-date CRLF rfc2616-date = [TBD] field-valueの大文字小文字区別: RFC2616に準拠 5.7 Title コンテンツのタイトル Title = "Title" SEPARATOR TOKEN CRLF 5.8 Author-Name コンテンツの著者名 Author-Name = "Author-Name" SEPARATOR TOKEN CRLF 5.9 Expires そのblockの情報の有効期限 Expires = "Expires" SEPARATOR rfc2616-date CRLF rfc2616-date = [TBD] 5.10 Expire そのblockの情報の有効期限。Expiresと同一の情報を記載する。 Expire は下位互換性のために記述される。[TBD] Expire = "Expire" SEPARATOR rfc2616-date CRLF rfc2616-date = [TBD] 5.11 Last-Modified そのblockが示すコンテンツの更新時刻 Last-Modified = "Last-Modified" SEPARATOR rfc2616-date CRLF rfc2616-date = [TBD] field-valueの大文字小文字区別: RFC2616に準拠 5.12 Last-Modified-Detected そのblockのmeta dataの情報取得 [TBD] Last-Modified-Detected = "Last-Modified-Detected" SEPARATOR rfc2616-date CRLF rfc2616-date = [TBD] field-valueの大文字小文字区別: RFC2616に準拠 5.13 Server そのblockが示すコンテンツのmeta dataを取得に使用されたサーバ名 Server = "Server" SEPARATOR TOKEN CRLF field-valueの大文字小文字区別: あり 5.14 Authorized そのblockが示すコンテンツのmeta dataを取得したエージェント名 Authorized = "Authorized" SEPARATOR TOKEN CRLF [TBD: TOKEN or WORD?] field-valueの大文字小文字区別: あり 5.15 Authorized-url 「5.13 Authorized」で示されるエージェントを識別するURL Authorized-url = "Authorized-url" SEPARATOR rfc2396-url CRLF rfc2396-url = field-valueの大文字小文字区別: RFC2396に準拠 5.16 Method TBD (例) Method: REMOTE/GET/200 5.17 Keyword そのblockが示すコンテンツの概要を示す任意の単語(複数可)。 Keyword = "Keyword" SEPARATOR keywords CRLF keywords = word *(DELIMITER word) word = TOKEN field-valueの大文字小文字区別: あり 6. Experimental-field 実験的field。情報伝播は保証されない。 Experimental-field = x-field-name SEPARATOR value x-field-name = "X-" WORD *( "-" WORD) value = TOKEN 7. Undefined-field 「5. 定義field」「6. Experimental-field」以外のすべてのfield。 情報伝播は保証されない。 undefined-field = undef-field-name SEPARATOR value CRLF undef-field-name = WORD *( "-" WORD) value = TOKEN 8. Character Encoding hina-diのCharacter Encodingは、Header-block内「5.5 Content-Type」で 指定されるものとする。未指定の場合は EUC-JP とする。 9. meta dataの完全性 あるコンテンツにおける取得可能な全てのmeta dataは、Entity-blockに 出力されなくてはならない。 10. meta dataの正当性 meta dataの情報正当性は、 ・「5.14 Authorized」 ・「5.15 Authorized-url」 によって示されるエージェントが保証する物とする。 複数のエージェントから取得した、同一「5.3 URL」のmeta dataを混合して 利用・出力してはならない。 他のエージェントより取得したmeta dataは必ずblock単位に出力しなくてはいけない。 また、その内容を改変してはならない。 ただし、「5.16 Method」は例外とする。 11. meta dataの伝播 hina-diに含まれるmeta dataは伝播させることができる。 エージェントは、「9. meta dataの正当性」をする限り、 他のエージェントが出力した meta dataを 自らが出力するhina-diに 含めることができる。 この時Entity-blockのMethod fieldは、「5.16 Method」に準じ処理されなくては ならない。 11.1 伝播の対象 伝播が許されるblockは、Entity-blockのみである。 他のエージェントが出力したhina-diのHeader-blockを伝播させてはならない。 11.2 伝播の未保証 「6. Experimental-field」「7. Undefined-field」の伝播は保証されない。 (例) [エージェントA] | (出力) ↓ [hina-di A] ---(取得)-->[エージェントB] | (出力) ↓ [hina-di B] ---(取得)-->[エージェントC] ・エージェントA: Experimental-field、Undefined-fieldを伝播する ・エージェントB: 伝播しない 上記のような伝播の場合、[hina-di B]には、[hina-di A]に含まれていた Experimental-field、Undefined-fieldは含まれない。