wiki/html_assets/hina/hina2_2-rev0_10.txt

402 lines
18 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

朝日奈アンテナ meta data format version 2.2 (HINA/2.2)
Document revision 0.10
2001/02/22
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)
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)
SLASH = "/" *(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.6 Content-Type
| Date ) ; 5.7 Date
4.3 Entity-block
Header-block以降のBlock。コンテンツのmeta dataを持つ。
Entity-block = URL ; 5.3 URL
( HINA-Version ; 5.4 HINA-Version
| Virtual ; 5.5 Virtual
| Content-Type ; 5.6 Content-Type
| Date ; 5.7 Date
| Title ; 5.8 Title
| Author-Name ; 5.9 Author-Name
| Expires ; 5.10 Expires
| Expire ; 5.11 Expire
| Last-Modified ; 5.12 Last-Modified
| Last-Modified-Detected ; 5.13 Last-Modified-Detected
| Server ; 5.14 Server
| Authorized ; 5.15 Authorized
| Authorized-url ; 5.16 Authorized-url
| Method ; 5.17 Method
| Keyword ; 5.18 Keyword
| Image-Width ; 5.19 Image-Width
| Image-Height ; 5.19 Image-Height
| 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 = <URI described on "5.1.2 Request-URI" in RFC 2396>
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 Virtual
そのEntity-blockのmeta dataの取得先URL。
このfieldで指定されたURLのmeta dataを「5.3 URL」のmeta dataとして
使用していることを意味する。
このfieldが無い場合、meta dataの取得先は「5.3 URL」であることを意味する。
Virtual = "Vitural" SEPARATOR rfc2396-url CRLF
rfc2396-url = <URI described on "5.1.2 Request-URI" in RFC 2396>
field-valueの大文字小文字区別: RFC 2396に準拠
5.6 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.7 Date
hina-diもしくはそのblockを出力した時刻
Date = "Date" SEPARATOR rfc1123-date CRLF
rfc1123-date = <rfc1123-date described on "3.3 Date/Time Formats" in RFC2616>
field-valueの大文字小文字区別: なし
5.8 Title
コンテンツのタイトル
Title = "Title" SEPARATOR TOKEN CRLF
field-valueの大文字小文字区別: あり
5.9 Author-Name
コンテンツの著者名
Author-Name = "Author-Name" SEPARATOR TOKEN CRLF
field-valueの大文字小文字区別: あり
5.10 Expires
そのblockの情報の有効期限
Expires = "Expires" SEPARATOR rfc1123-date CRLF
rfc1123-date = <rfc1123-date described on "3.3 Date/Time Formats" in RFC2616>
field-valueの大文字小文字区別: RFC2616に準拠
5.11 Expire
そのblockの情報の有効期限。Expiresと同一の情報を記載する。
Expire は下位互換性のために記述される。
Expire = "Expire" SEPARATOR rfc1123-date CRLF
rfc1123-date = <rfc1123-date described on "3.3 Date/Time Formats" in RFC2616>
field-valueの大文字小文字区別: RFC2616に準拠
5.12 Last-Modified
そのblockが示すコンテンツの更新時刻
Last-Modified = "Last-Modified" SEPARATOR rfc1123-date CRLF
rfc1123-date = <rfc1123-date described on "3.3 Date/Time Formats" in RFC2616>
field-valueの大文字小文字区別: RFC2616に準拠
5.13 Last-Modified-Detected
そのblockのmeta dataの情報取得
Last-Modified-Detected = "Last-Modified-Detected" SEPARATOR rfc1123-date CRLF
rfc1123-date = <rfc1123-date described on "3.3 Date/Time Formats" in RFC2616>
field-valueの大文字小文字区別: RFC2616に準拠
5.14 Server
そのblockが示すコンテンツのmeta dataを取得に使用されたサーバ名
Server = "Server" SEPARATOR TOKEN CRLF
field-valueの大文字小文字区別: あり
5.15 Authorized
そのblockが示すコンテンツのmeta dataを取得したエージェント名
Authorized = "Authorized" SEPARATOR TOKEN CRLF WORD
field-valueの大文字小文字区別: あり
5.16 Authorized-url
「5.14 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に準拠
5.17 Method
そのblockの取得経緯
Method = "Method" SEPARATOR method-type *(SLASH method-type) (SLASH result-code)
method-type = "GET" | "HEAD" | "FILE" | "REMOTE"
result-code = <URI described on "???????" in RFC 2396>
GET HTTPのGETリクエストで取得
HEAD HTTPのHEADリクエストで取得
FILE ファイルのタイムスタンプから取得
REMOTE 他のエージェントが出力したEntity-blockから取得
method-typeは左側に追記されることで情報伝播を記録される。
(例) Method: REMOTE/REMOTE/GET/200
GET/200 エージェントAがGETリクエストで取得した情報を元に生成したhina-di(A)に
含まれるEntity-blockを、
REMOTE エージェントBが取得してhina-di(B)に出力し、
REMOTE そのEntity-blockをこのエージェントが取得した。
5.18 Keyword
そのblockが示すコンテンツの概要を示す任意の単語(複数可)。
Keyword = "Keyword" SEPARATOR keywords CRLF
keywords = word *(DELIMITER word)
word = TOKEN
field-valueの大文字小文字区別: あり
5.19 Image-Width
そのblockが示すコンテンツが画像データの場合、その画像幅(pixel数)
Image-Width = "Image-Width" SEPARATOR width CRLF
width = DIGIT
5.20 Image-Height
そのblockが示すコンテンツが画像データの場合、その画像高(pixel数)
Image-Width = "Image-Height" SEPARATOR width CRLF
width = DIGIT
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.6 Content-Type」で
指定されるものとする。未指定の場合は EUC-JP とする。
9. meta dataの完全性
あるコンテンツにおける取得可能な全てのmeta dataは、Entity-blockに
出力されなくてはならない。
情報取得を行わなかったfieldは、Entity-blockに存在してはならない。
10. 重複feild
1つのEntity-block内に同一fieldが複数存在してはならない。同一fieldが
複数存在するEntity-blockは破棄されなくてはならない。
10. meta dataの正当性
meta dataの情報正当性は、
・「5.15 Authorized」
・「5.16 Authorized-url」
によって示されるエージェントが保証する物とする。
複数のエージェントから取得した、同一「5.3 URL」のmeta dataを混合して
利用・出力してはならない。
他のエージェントより取得したmeta dataは必ずblock単位に出力しなくてはいけない。
また、その内容を改変してはならない。
ただし、「5.17 Method」は例外とする。
12. meta dataの伝播
hina-diに含まれるmeta dataは伝播させることができる。
エージェントは、「11. meta dataの正当性」を保持する限り、
他のエージェントが出力した meta dataを 自らが出力するhina-diに
含めることができる。
この時Entity-blockのMethod fieldは、「5.17 Method」に準じ処理されなくては
ならない。
12.1 伝播の対象
伝播が許されるblockは、Entity-blockのみである。
他のエージェントが出力したhina-diのHeader-blockの全てまたは一部を
伝播させてはならない。
12.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は含まれない。