朝日奈アンテナ meta data format version 2.2 (HINA/2.2) Document revision 0.5 2000/09/23 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 Optional-Header CRLF Optional-header = 1*( User-Agent ; 5.2 User-Agent | Content-Type ; 5.4 Content-Type | Date ) ; 5.5 Date 4.3 Entity-block Header-block以降のBlock。ドキュメントのmeta dataを持つ。 Entity-block = 1*( URL ; 5.3 URL | Content-Type ; 5.4 Content-Type | Date ; 5.5 Date | Title ; 5.6 Title | Author-Name ; 5.7 Author-Name | Expires ; 5.8 Expires | Expire ; 5.9 Expire | Last-Modified ; 5.10 Last-Modified | Last-Modified-Detected ; 5.11 Last-Modified-Detected | Server ; 5.12 Server | Authorized ; 5.13 Authorized | Authorized-url ; 5.14 Authorized-url | Method ; 5.15 Method | Keyword ; 5.16 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は必須である。 URL = "URL" SEPARATOR rfc2396-url CRLF rfc2396-url = field-valueの大文字小文字区別: RFC 2396に準拠 5.4 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.5 Date そのblockを出力した時刻 Date = "Date" SEPARATOR rfc2616-date CRLF rfc2616-date = [TBD] field-valueの大文字小文字区別: RFC2616に準拠 5.6 Title ドキュメントのタイトル Title = "Title" SEPARATOR TOKEN CRLF 5.7 Author-Name ドキュメントの著者名 Author-Name = "Author-Name" SEPARATOR TOKEN CRLF 5.8 Expires そのblockの情報の有効期限 Expires = "Expires" SEPARATOR rfc2616-date CRLF rfc2616-date = [TBD] 5.9 Expire そのblockの情報の有効期限。Expiresと同一の情報を記載する。 Expire は下位互換性のために記述される。[TBD] Expire = "Expire" SEPARATOR rfc2616-date CRLF rfc2616-date = [TBD] 5.10 Last-Modified そのblockが示すドキュメントの更新時刻 Last-Modified = "Last-Modified" SEPARATOR rfc2616-date CRLF rfc2616-date = [TBD] field-valueの大文字小文字区別: RFC2616に準拠 5.11 Last-Modified-Detected そのblockのmeta dataの情報取得 [TBD] Last-Modified-Detected = "Last-Modified-Detected" SEPARATOR rfc2616-date CRLF rfc2616-date = [TBD] field-valueの大文字小文字区別: RFC2616に準拠 5.12 Server そのblockが示すドキュメントのmeta dataを取得に使用されたサーバ名 Server = "Server" SEPARATOR TOKEN CRLF field-valueの大文字小文字区別: あり 5.13 Authorized そのblockが示すドキュメントのmeta dataを取得したエージェント名 Authorized = "Authorized" SEPARATOR TOKEN CRLF [TBD: TOKEN or WORD?] field-valueの大文字小文字区別: あり 5.14 Authorized-url 「5.13 Authorized」で示されるエージェントを識別するURL Authorized-url = "Authorized-url" SEPARATOR rfc2396-url CRLF rfc2396-url = field-valueの大文字小文字区別: RFC2396に準拠 [TBD:agentだけ動かしてURLで参照できない場合は?] 5.15 Method TBD (例) Method: REMOTE/GET/200 5.16 Keyword そのblockが示すドキュメントの概要を示す任意の単語(複数可)。 Keyword = "Keyword" DELIMITER 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. meta dataの正当性の保証 meta dataの情報正当性は、 ・「5.13 Authorized」 ・「5.14 Authorized-url」 によって示されるエージェントが保証する物とする。 複数のエージェントから取得した、同一「5.3 URL」のmeta dataを混合して 利用・出力してはならない。 他のエージェントより取得したmeta dataは必ずblock単位に出力しなくてはいけない。 また、その内容を改変してはならない。 ただし、「5.15 Method」は例外とする。 9. meta dataの伝播 9.1 伝播されたmeta dataの保証 hina-diにおけるmeta dataの伝播は、 1) 他のエージェントが出力したhina-diの取得 2) 取得したhina-diをhina-diに再出力 によって行われることを想定している。 伝播されたmeta dataは、エージェントによって「7. meta dataの正当性の保証」がなされて いるものと期待する。 9.2 伝播の対象 伝播するfieldはEntity-block内のfieldのみである。 9.3 伝播の未保証 「6. Experimental-field」「7. Undefiend-field」の伝播は保証されない。 (例) [エージェントA] | (出力) ↓ [hina-di A] ---(取得)-->[エージェントB] | (出力) ↓ [hina-di B] ---(取得)-->[エージェントC] ・エージェントA: 未定義fieldを出力する ・エージェントB: 未定義fieldを出力しない 上記のような伝播の場合、[hina-di B]には、[hina-di A]に含まれていた 「6. Experimental-field」「7. Undefiend-field」は[hina-di B]には含まれない。