320 lines
14 KiB
Plaintext
320 lines
14 KiB
Plaintext
朝日奈アンテナ meta data format version 2.2 (HINA/2.2)
|
||
|
||
Document revision 0.6
|
||
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 = <any 8-bit sequence of data>
|
||
CHAR = <any US-ASCII character (octets 0 - 127)>
|
||
UPALPHA = <any US-ASCII uppercase letter "A".."Z">
|
||
LOALPHA = <any US-ASCII lowercase letter "A".."Z">
|
||
ALPHA = UPALPHA | LOALPHA
|
||
DIGIT = <any US-ASCII digit "0".."9">
|
||
WORD = <1*(ALPHA|DIGIT) but excluding ":" and "-">
|
||
|
||
CTL = <any US-ASCII control character (octets 0 - 31) and DEL (127)>
|
||
CR = <US-ASCII CR, carriage return (13)>
|
||
LF = <US-ASCII LF, linefeed (10)>
|
||
SP = <US-ASCII SP, space (32)>
|
||
HT = <US-ASCII HT, horizontal-tab (9)>
|
||
<"> = <US-ASCII double-quote mark (34)>
|
||
|
||
CRLF = CR LF
|
||
|
||
TEXT = <any OCTET except CTLs, but including HT>
|
||
TOKEN = <any TEXT, but don't start with SP or HT>
|
||
|
||
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.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 = <URI described on "5.1.2 Request-URI" in RFC 2396>
|
||
|
||
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 = <Content-Type described in RFC1521>
|
||
|
||
field-valueの大文字小文字区別: RFC1521に準拠
|
||
|
||
5.5 Date
|
||
|
||
そのblockを出力した時刻
|
||
|
||
Date = "Date" SEPARATOR rfc2616-date CRLF
|
||
rfc2616-date = <Date described on "3.3 Date/Time Formats" in RFC2616,
|
||
but rfc1123-date is recommended.> [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 = <Date described on "3.3 Date/Time Formats" in RFC2616,
|
||
but rfc1123-date is recommended.> [TBD]
|
||
|
||
5.9 Expire
|
||
|
||
そのblockの情報の有効期限。Expiresと同一の情報を記載する。
|
||
Expire は下位互換性のために記述される。[TBD]
|
||
|
||
Expire = "Expire" SEPARATOR rfc2616-date CRLF
|
||
rfc2616-date = <Date described on "3.3 Date/Time Formats" in RFC2616,
|
||
but rfc1123-date is recommended.> [TBD]
|
||
|
||
5.10 Last-Modified
|
||
|
||
そのblockが示すドキュメントの更新時刻
|
||
|
||
Last-Modified = "Last-Modified" SEPARATOR rfc2616-date CRLF
|
||
rfc2616-date = <Date described on "3.3 Date/Time Formats" in RFC2616,
|
||
but rfc1123-date is recommended.> [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 = <Date described on "3.3 Date/Time Formats" in RFC2616,
|
||
but rfc1123-date is recommended.> [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 = <URI described on "5.1.2 Request-URI" in RFC 2396>
|
||
|
||
field-valueの大文字小文字区別: RFC2396に準拠
|
||
|
||
[TBD:agentだけ動かしてURLで参照できない場合は?]
|
||
|
||
5.15 Method
|
||
|
||
TBD
|
||
|
||
(例) Method: REMOTE/GET/200
|
||
|
||
5.16 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. 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の伝播
|
||
|
||
hina-diに含まれるmeta dataは伝播させることができる。
|
||
エージェントは、「8. meta dataの正当性の保証」をする限り、
|
||
他のエージェントが出力した meta dataを 自らが出力するhina-diに
|
||
含めることができる。
|
||
この時Entity-blockのMethod fieldは、「5.15 Method」に準じ処理されなくては
|
||
ならない。
|
||
|
||
9.1 伝播の対象
|
||
|
||
伝播が許されるblockは、Entity-blockのみである。
|
||
他のエージェントが出力したhina-diのHeader-blockを伝播させてはならない。
|
||
|
||
9.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は含まれない。
|
||
|