wiki/html_assets/hina/hina2_2-rev0_12.txt

427 lines
19 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.12
2001/11/07
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はコンテンツそれ自身が持つ情報を保持する。
ただし「6. Experimental-field」はその限りではない。
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.2beta"
5.2 User-Agent
hina-diを出力したagent名。このfieldは必須である。
User-Agent = "User-Agent" SEPARATOR TOKEN CRLF
field-valueの大文字小文字区別: あり
5.3 URL
コンテンツを明示するURL。他のコンテンツ情報との区別はこのfieldで行う。
このfieldは必須である。このfieldは、Blockの先頭に置くものとする。
このfieldは
・"http://"及びドメイン部は大文字小文字区別なし
・ドメイン部以降は区別あり
とする。ドメイン部以降も大文字小文字の区別が無いURLの場合、すべて小文字で
表記するものとする。
URL = "URL" SEPARATOR rfc2396-url CRLF
rfc2396-url = <URI described on "5.1.2 Request-URI" in RFC 2396>
field-valueの大文字小文字区別: RFC 2396に準拠
URL fieldの一意性を保証するため、URL fieldは以下の条件を満たすURLでなくてはならない。
この条件を満たすことは、hina-di提供エージェント(及びその管理者)によって保証される。
1. URL最後が"/"で終えることができる場合、この"/"を省略してはならない
2. URLがファイル名で終わりかつそのファイルが省略できる場合、このファイル名を
省略しなくてはならない。
例: 次の3つのURLが同一のコンテンツを示す場合、URL fieldにはaを設定しなくてはならない。
a. http://www.hoge.jp/foo/
b. http://www.hoge.jp/foo
c. http://www.hoge.jp/foo/index.html
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として
使用していることを意味する。
URL表記上の条件は「5.3 URL」に準じる。
この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
URL表記上の条件は「5.3 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。情報伝播は保証されない。
コンテンツ自身が持つ情報以外の情報をEntity-blockに記述する場合、
このfieldを使用すること。
例) 「5.9 Author-Name」とは異なる著者の呼称、エージェント独自提供情報など
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は含まれない。