diff --git a/assets/hina/README.md b/assets/hina/README.md new file mode 100644 index 0000000..0f8fa41 --- /dev/null +++ b/assets/hina/README.md @@ -0,0 +1,4 @@ +This is a local copy of the pages archived by the Wayback Machine for the +Hina-Di documentation. The only change that has been applied is a conversion +to Unicode, as the Wayback Machine pages have a lot of decoding errors with a +modern browser's default encoding settings. diff --git a/assets/hina/archive-index.html b/assets/hina/archive-index.html new file mode 100644 index 0000000..1424682 Binary files /dev/null and b/assets/hina/archive-index.html differ diff --git a/assets/hina/fw_logo1.gif b/assets/hina/fw_logo1.gif new file mode 100644 index 0000000..6552e24 Binary files /dev/null and b/assets/hina/fw_logo1.gif differ diff --git a/assets/hina/hina2_2-rev0_10.txt b/assets/hina/hina2_2-rev0_10.txt new file mode 100644 index 0000000..a30cec8 Binary files /dev/null and b/assets/hina/hina2_2-rev0_10.txt differ diff --git a/assets/hina/hina2_2-rev0_11.txt b/assets/hina/hina2_2-rev0_11.txt new file mode 100644 index 0000000..7ea5a29 Binary files /dev/null and b/assets/hina/hina2_2-rev0_11.txt differ diff --git a/assets/hina/hina2_2-rev0_12.txt b/assets/hina/hina2_2-rev0_12.txt new file mode 100644 index 0000000..c0abcbc Binary files /dev/null and b/assets/hina/hina2_2-rev0_12.txt differ diff --git a/assets/hina/hina2_2-rev0_13.html b/assets/hina/hina2_2-rev0_13.html new file mode 100644 index 0000000..401da02 Binary files /dev/null and b/assets/hina/hina2_2-rev0_13.html differ diff --git a/assets/hina/hina2_2-rev0_5-20000923.txt b/assets/hina/hina2_2-rev0_5-20000923.txt new file mode 100644 index 0000000..cff4f57 Binary files /dev/null and b/assets/hina/hina2_2-rev0_5-20000923.txt differ diff --git a/assets/hina/hina2_2-rev0_6.txt b/assets/hina/hina2_2-rev0_6.txt new file mode 100644 index 0000000..a5822fb Binary files /dev/null and b/assets/hina/hina2_2-rev0_6.txt differ diff --git a/assets/hina/hina2_2-rev0_7.txt b/assets/hina/hina2_2-rev0_7.txt new file mode 100644 index 0000000..7e3fbbf Binary files /dev/null and b/assets/hina/hina2_2-rev0_7.txt differ diff --git a/assets/hina/hina2_2-rev0_8.txt b/assets/hina/hina2_2-rev0_8.txt new file mode 100644 index 0000000..5dc491f Binary files /dev/null and b/assets/hina/hina2_2-rev0_8.txt differ diff --git a/assets/hina/hina2_2-rev0_9.txt b/assets/hina/hina2_2-rev0_9.txt new file mode 100644 index 0000000..7e73ef8 Binary files /dev/null and b/assets/hina/hina2_2-rev0_9.txt differ diff --git a/assets/hina/normal.css b/assets/hina/normal.css new file mode 100644 index 0000000..1b3e6ba Binary files /dev/null and b/assets/hina/normal.css differ diff --git a/content/hina/index.md b/content/hina/index.md new file mode 100644 index 0000000..529c1a8 --- /dev/null +++ b/content/hina/index.md @@ -0,0 +1,135 @@ +--- +title: Hina-Di +toc: true +--- + +Hina-Di was a syndication format; one of the Japanese equivalents of RSS. +You can browse a [local copy][archive] of its documentation site. + +> TODO: Document version 1.x + +## Version 2.2 + +### Revision 0.5 + +* Published on 2000-09-23 +* [Original on the Wayback Machine](https://web.archive.org/web/20120220061701if_/http://kohgushi.fastwave.gr.jp/hina-doc/hina2_2-rev0_5-20000923.txt) +* [Local copy](./hina2_2-rev0_5-20000923.txt) +* [English translation](./specs/0.5.html) + +### Revision 0.6 + +* Published on 2000-09-24 +* [Original on the Wayback Machine](https://web.archive.org/web/20120220061608if_/http://kohgushi.fastwave.gr.jp/hina-doc/hina2_2-rev0_6.txt) +* [Local copy](./hina2_2-rev0_6.txt) +* [English translation](./specs/0.6.html) + +Includes small fixes on the BNF grammar, and two new statements: + +* Metadata propagation is explicitly forbidden if the `Authorized` or + `Authorized-url` fields are not specified. +* Propagation of the `Method` field should be done using the process + defined in the Method section, but the Method section remains "TBD", + so there is no actual process. + +### Revision 0.7 + +* Published on 2000-09-24 +* [Original on the Wayback Machine](https://web.archive.org/web/20120220061612if_/http://kohgushi.fastwave.gr.jp/hina-doc/hina2_2-rev0_7.txt) +* [Local copy](./hina2_2-rev0_7.txt) +* [English translation](./specs/0.7.html) + +Adds the `HINA-Version` entity block field, recommends making the `URL` the +first field of an entity block, and adds text encoding considerations. + +### Revision 0.8 + +* Published on 2000-09-30 +* [Original on the Wayback Machine](https://web.archive.org/web/20120220061653if_/http://kohgushi.fastwave.gr.jp/hina-doc/hina2_2-rev0_8.txt) +* [Local copy](./hina2_2-rev0_8.txt) +* [English translation](./specs/0.8.html) + +Includes some BNF fixes and more explicit phrasing, as well as some breaking +changes: + +* The `URL` field becomes the `Virtual` field when it is the only field of an + entity block; the URL then points to a file that holds the entity block, not + to the document itself. This is similar in concept to `rdf:resource`. +* The `Author-Name` field is now case-sensitive. + +### Revision 0.9 + +* Published on 2000-10-05 +* [Original on the Wayback Machine](https://web.archive.org/web/20120220061649if_/http://kohgushi.fastwave.gr.jp/hina-doc/hina2_2-rev0_9.txt) +* [Local copy](./hina2_2-rev0_9.txt) +* [English translation](./specs/0.9.html) + +The `Virtual` name now is truly called Virtual, and not `URL`, which reduces +the confusion. Note that the original version had a type in its BNF grammar, +causing the field to actually be named `Virutal`. + +### Revision 0.10 + +* Published on 2001-02-22 +* [Original on the Wayback Machine](https://web.archive.org/web/20120220061604if_/http://kohgushi.fastwave.gr.jp/hina-doc/hina2_2-rev0_10.txt) +* [Local copy](./hina2_2-rev0_10.txt) +* [English translation](./specs/0.10.html) + +BNF grammar fixes again, as well as some breaking changes and a new feature for +images: + +* Dates are now required to use 4-digit years via RFC 1123, instead of the two + digits permitted by RFC 2616. +* The `Image-Width` and `Image-Height` fields add more optional metadata for + entity blocks describing images. +* Fields are now required to be unique per block; a block with duplicate fields + must be ignored. + +### Revision 0.11 + +* Published on 2001-05-09 +* [Original on the Wayback Machine](https://web.archive.org/web/20120220061618if_/http://kohgushi.fastwave.gr.jp/hina-doc/hina2_2-rev0_11.txt) +* [Local copy](./hina2_2-rev0_11.txt) +* [English translation](./specs/0.11.html) + +HINA 2.2 is retrograded to 2.2 beta. + +### Revision 0.12 + +* Published on 2001-11-07 +* [Original on the Wayback Machine](https://web.archive.org/web/20120220061641if_/http://kohgushi.fastwave.gr.jp/hina-doc/hina2_2-rev0_12.txt) +* [Local copy](./hina2_2-rev0_12.txt) +* [English translation](./specs/0.12.html) + +Another BNF grammar fix; this also defines the use of the URL as a unique +identifier for entity blocks, and explicitly encourages using experimental +fields over undefined fields for data that might not be directly obtained from +the document's metadata. + +### Revision 0.13 + +* Published on 2002-07-19 +* [Original on the Wayback Machine](https://web.archive.org/web/20100527100833/http://kohgushi.fastwave.gr.jp/hina-doc/hina2_2-rev0_13.html) +* [Local copy](./hina2_2-rev0_13.html) +* [English translation](./specs/0.13.html) + +The specification has been converted from a text file to a webpage, and some +BNF grammars have been made more explicit. An appendix was added, which gives +some additional information on the origins of Hina-Di. + +Field names are no longer case-sensitive, and field values are explicitly made +case-insensitive by default. + +## Known implementations + +* [Asahina-Antenna][asahina], the project for which Hina-Di was created, + obviously implements Hina-Di. +* [RSS Panel X][panelx] is a Greasemonkey script that supports, among other + formats, Hina-Di. +* [Kazehakase][kaze] was a GTK+ web browser that used WebKit and Gecko and had + support for RSS, LIRS and Hina-Di. + +[archive]: ./archive-index.html +[asahina]: https://web.archive.org/web/20100623024844/http://masshy.fastwave.gr.jp/hina/release/ +[panelx]: http://xent.com/~bsittler/rsspanel.html +[kaze]: https://web.archive.org/web/20160304235817/http://kazehakase.osdn.jp/ diff --git a/content/hina/specs/0.10.md b/content/hina/specs/0.10.md new file mode 100644 index 0000000..2fa271c --- /dev/null +++ b/content/hina/specs/0.10.md @@ -0,0 +1,425 @@ +--- +title: Asahina Antenna Metadata Format (HINA) 2.2, rev. 0.10 +date: February 2, 2001 +toc: true +--- + +> This document is an unofficial English translation of the original Japanese +> specification made by someone who has no knowledge of Japanese. Implement at +> your own risk. + +## Overview + +This document describes Hina-Di, the metadata format used by [Asahina +Antenna][antenna]. In this document, "metadata" is defined as data on a webpage +such as its last update time or its author. Asahina Antenna acts as a feed +reader for Hina-Di. + +## Conventions used in this document + +This document uses the Backus-Naur notation ([RFC 822][rfc822]) to formally +specify the format. + +The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", +"SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this +document are to be interpreted as described in BCP 14 ([RFC 2119][rfc2119], +[RFC 8174][rfc8174]) when, and only when, they appear in all capitals, as shown +here. + +## Data Types + +The basic data types that constitute Hina-Di are listed below. The US-ASCII +character set is defined by ANSI X3.4-1986. + +``` +OCTET = +CHAR = +UPALPHA = +LOALPHA = +ALPHA = UPALPHA | LOALPHA +DIGIT = +WORD = 1*(ALPHA|DIGIT) + +CTL = +CR = +LF = +SP = +HT = +<"> = + +CRLF = CR LF + +TEXT = +TOKEN = + +SEPARATOR = ":" 1*(SP|HT) +DELIMITER = "," *(SP|HT) +SLASH = "/" *(SP|HT) +``` + +## Structure + +A Hina-Di file consists of a series of blocks that summarize the metadata on a +website: a header block, followed by one or more entity blocks. + +``` +hina-di = header-block + 1*( entity-block ) +``` + +### Block + +A block is a set of metadata for a document. Each metadata is represented as a +single header, in a manner similar to [RFC 822][rfc822], with a field name and a +field value. + +Field names in a block MUST be unique. A block with duplicate field names MUST +be discarded. + +Field names are case-sensitive. Field values may be case-sensitive, +depending on the field. + +``` +line-format = field-name SEPARATOR field-value CRLF +field-name = WORD *( "-" WORD) +field-value = TOKEN +``` + +### Header block + +Exactly one header block MUST appear in a Hina-Di file, and it MUST be the +first block. It holds metadata about the Hina-Di file itself. + +``` +header-block = HINA + Hinadi-Header + CRLF +Hinadi-Header = 1*( User-Agent + | Content-Type + | Date ) +``` + +### Entity block + +One or more entity blocks MUST be present after the header block. Each entity +block defines metadata about a specific document. + +``` +Entity-block = URL ( HINA-Version + | Virtual + | Content-Type + | Date + | Title + | Author-Name + | Expires + | Expire + | Last-Modified + | Last-Modified-Detected + | Server + | Authorized + | Authorized-url + | Method + | Keyword + | Image-Width + | Image-Height + | Experimental-field + | Undefined-field + CRLF ) +``` + +## Fields + +This section defines the various fields that may be found in blocks. +All fields are OPTIONAL and case-insensitive unless otherwise specified. + +### HINA + +Indicates that this is a Hina-Di file, and includes its version. +This field is REQUIRED as the first field of Hina-Di files. + +``` +HINA = "HINA" "/" hinadi-version CRLF +hinadi-version = "2.2" +``` + +### User-Agent + +Name of the user agent that created this Hina-Di file. +This field is REQUIRED in header blocks. +The value of this field is case-sensitive. + +``` +User-Agent = "User-Agent" SEPARATOR TOKEN CRLF +``` + +### URL + +URL of the document, compliant with [RFC 2396][rfc2396]. +This field is REQUIRED in entity blocks. +Making this field the first field of an entity block is RECOMMENDED. +The value of this field is case-sensitive to the extent defined by RFC 2396. + +``` +URL = "URL" SEPARATOR rfc2396-url CRLF +rfc2396-url = +``` + +### HINA-Version + +Specifies that the integrity of the entity block was guaranteed according to +the specification of a specific Hina-Di version. +If this field is missing from an entity block, it means the block might be +incomplete. + +``` +HINA-Version = "HINA-Version" SEPARATOR version +version = "HINA" "/" 1*( DIGIT ) "." 1*( DIGIT ) +``` + +### Virtual + +URL of another Hina-Di file that holds the entity block, compliant with +[RFC 2396][rfc2396]. + +If there are fields in the entity block other than `Virtual`, then it takes the +same meaning as the regular `URL` field. + +The value of this field is case-sensitive to the extent defined by RFC 2396. + +``` +Virtual = "Virtual" SEPARATOR rfc2396-url CRLF +rfc2396-url = +``` + +> Note that the original version of the document defines the `Virtual` feed +> as `Vitural`. + +### Content-Type + +MIME type of the Hina-Di file or the document, as described in +[RFC 1521][rfc1521]. +The value of this field is case-sensitive to the extent defined by RFC 1521. + +``` +Content-Type = "Content-Type" SEPARATOR rfc1521-type +rfc1521-type = +``` + +### Date + +The date and time when the block or the Hina-Di file was generated. +The dates MUST comply with [RFC 1123][rfc1123], better described in section 3.3 +of [RFC 2616][rfc2616]. +The value of this field is case-sensitive. + +``` +Date = "Date" SEPARATOR rfc1123-date CRLF +rfc1123-date = +``` + +### Title + +The title of the document. + +``` +Title = "Title" SEPARATOR TOKEN CRLF +``` + +### Author-Name + +Name of the author of the document. +The value of this field is case-sensitive. + +``` +Author-Name = "Author-Name" SEPARATOR TOKEN CRLF +``` + +### Expires + +Expiration date for the block. The dates MUST comply with [RFC 1123][rfc1123], +better described in section 3.3 of [RFC 2616][rfc2616]. +The value of this field is case-sensitive to the extent defined by RFC 2616. + +``` +Expires = "Expires" SEPARATOR rfc1123-date CRLF +``` + +### Expire + +Alias for the `Expires` field, included for backwards compatibility. + +``` +Expire = "Expire" SEPARATOR rfc1123-date CRLF +``` + +### Last-Modified + +Date and time when the document was last updated. The dates MUST comply with +[RFC 1123][rfc1123], better described in section 3.3 of [RFC 2616][rfc2616]. +The value of this field is case-sensitive to the extent defined by RFC 2616. + +``` +Last-Modified = "Last-Modified" SEPARATOR rfc1123-date CRLF +``` + +### Last-Modified-Detected + +Date and time representing when the user agent retrieved the document's +metadata. The dates MUST comply with [RFC 1123][rfc1123], better described +in section 3.3 of [RFC 2616][rfc2616]. +The value of this field is case-sensitive to the extent defined by RFC 2616. + +``` +Last-Modified-Detected = "Last-Modified-Detected" SEPARATOR rfc1123-date CRLF +``` + +### Server + +User agent string of the server used to retrieve the metadata of the document +described by this entity block. + +``` +Server = "Server" SEPARATOR TOKEN CRLF +``` + +### Authorized + +The user agent that retrieved the metadata of the document described by this +entity block. + +``` +Authorized = "Authorized" SEPARATOR TOKEN CRLF WORD +``` + +### Authorized-url + +URL of a page describing the user agent referred to in the `Authorized` field, +compliant with [RFC 2396][rfc2396]. +The value of this field is case-sensitive to the extent defined by RFC 2396. + +``` +Authorized-url = "Authorized-url" SEPARATOR rfc2396-url CRLF +``` + +### Method + +Describes the chain of propagation that this entity block went through. + +``` +Method = "Method" SEPARATOR method-type *(SLASH method-type) (SLASH result-code) +method-type = "GET" | "HEAD" | "FILE" | "REMOTE" +result-code = +``` + +#### Method types + +GET +: Metadata retrieved using a HTTP GET request. +HEAD +: Metadata retrieved using a HTTP HEAD request. +FILE +: Metadata retrieved from a local file's timestamp. +REMOTE +: Metadata retrieved from an entity block generated by another agent. + +#### Example + +``` +Method: REMOTE/REMOTE/GET/200 +``` + +1. A first user agent retrieved the metadata on the document using a HTTP GET + and got a 200 response code (`GET/200`). +2. A second user agent retrieved the first user agent's Hina-Di file, then + propagated it to its own file (`REMOTE`). +3. A third user agent retrieved the second user agent's Hina-Di file, then + propogated it to its own file (`REMOTE`). + +### Keyword + +Words that can be used to give an overview of the document described by this +entity block; tags, categories, etc. The value of this field is case-sensitive. + +``` +Keyword = "Keyword" SEPARATOR keywords CRLF +keywords = TOKEN *(SEPARATOR TOKEN) +``` + +### Image-Width + +Width of an image described by an entity block, in pixels. + +This field MUST NOT be used for entity blocks that do not describe images. + +``` +Image-Width = "Image-Width" SEPARATOR width CRLF +width = DIGIT +``` + +### Image-Height + +Height of an image described by an entity block, in pixels. + +This field MUST NOT be used for entity blocks that do not describe images. + +``` +Image-Height = "Image-Height" SEPARATOR width CRLF +height = DIGIT +``` + +### Experimental fields + +Implementations MAY define custom fields with an X- prefix to provide +additional metadata not covered in this specification. Implementations MUST NOT +assume that all clients will use each of those fields. Clients that do not +support any experimental field SHOULD ignore them. + +``` +Experimental-field = x-field-name SEPARATOR TOKEN +x-field-name = "X-" WORD *("-" WORD) +``` + +### Undefined fields + +Any field that is not defined in this specification. Implementations that +encounter such fields and do not support them SHOULD ignore them. + +``` +Undefined-field = undef-field-name SEPARATOR TOKEN CRLF +undef-field-name = WORD *("-" WORD) +``` + +## Encoding + +The character encoding of the Hina-Di file SHOULD be specified as a parameter +of the `Content-Type` field of the header block. If it is not specified, +it defaults to `EUC-JP`. + +## Propagation + +In Hina-Di, metadata propagation consists in acquiring metadata from other +agents, then sharing it as it is in the user agent's own Hina-Di file. +This can be used for aggregation services or a peer-to-peer network. + +The `Authorized` and `Authorized-url` fields allow indicating the user agent +from which the metadata originally came from to help ensure its legitimacy. +Propagating MUST only be performed if both fields are defined and if the user +agent is trusted. + +When propagating, all fields of an entity block defined in this specification, +with the exception of experimental and undefined fields or of fields with empty +values, MUST be reproduced without modification. +Propagating experimental or undefined fields is not guaranteed. +A header block, or any field that is part of it, MUST NOT be propagated. + +The `Method` field MUST be processed according to the process described in the +Method section. + +[antenna]: http://masshy.fastwave.gr.jp/hina/release/ +[rfc822]: https://tools.ietf.org/html/rfc822 +[rfc1123]: https://tools.ietf.org/html/rfc1123 +[rfc1521]: https://tools.ietf.org/html/rfc1521 +[rfc2119]: https://tools.ietf.org/html/rfc2119 +[rfc2396]: https://tools.ietf.org/html/rfc2396 +[rfc2616]: https://tools.ietf.org/html/rfc2616 +[rfc8174]: https://tools.ietf.org/html/rfc8174 diff --git a/content/hina/specs/0.11.md b/content/hina/specs/0.11.md new file mode 100644 index 0000000..9edd90c --- /dev/null +++ b/content/hina/specs/0.11.md @@ -0,0 +1,425 @@ +--- +title: Asahina Antenna Metadata Format (HINA) 2.2, rev. 0.11 +date: May 9, 2001 +toc: true +--- + +> This document is an unofficial English translation of the original Japanese +> specification made by someone who has no knowledge of Japanese. Implement at +> your own risk. + +## Overview + +This document describes Hina-Di, the metadata format used by [Asahina +Antenna][antenna]. In this document, "metadata" is defined as data on a webpage +such as its last update time or its author. Asahina Antenna acts as a feed +reader for Hina-Di. + +## Conventions used in this document + +This document uses the Backus-Naur notation ([RFC 822][rfc822]) to formally +specify the format. + +The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", +"SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this +document are to be interpreted as described in BCP 14 ([RFC 2119][rfc2119], +[RFC 8174][rfc8174]) when, and only when, they appear in all capitals, as shown +here. + +## Data Types + +The basic data types that constitute Hina-Di are listed below. The US-ASCII +character set is defined by ANSI X3.4-1986. + +``` +OCTET = +CHAR = +UPALPHA = +LOALPHA = +ALPHA = UPALPHA | LOALPHA +DIGIT = +WORD = 1*(ALPHA|DIGIT) + +CTL = +CR = +LF = +SP = +HT = +<"> = + +CRLF = CR LF + +TEXT = +TOKEN = + +SEPARATOR = ":" 1*(SP|HT) +DELIMITER = "," *(SP|HT) +SLASH = "/" *(SP|HT) +``` + +## Structure + +A Hina-Di file consists of a series of blocks that summarize the metadata on a +website: a header block, followed by one or more entity blocks. + +``` +hina-di = header-block + 1*( entity-block ) +``` + +### Block + +A block is a set of metadata for a document. Each metadata is represented as a +single header, in a manner similar to [RFC 822][rfc822], with a field name and a +field value. + +Field names in a block MUST be unique. A block with duplicate field names MUST +be discarded. + +Field names are case-sensitive. Field values may be case-sensitive, +depending on the field. + +``` +line-format = field-name SEPARATOR field-value CRLF +field-name = WORD *( "-" WORD) +field-value = TOKEN +``` + +### Header block + +Exactly one header block MUST appear in a Hina-Di file, and it MUST be the +first block. It holds metadata about the Hina-Di file itself. + +``` +header-block = HINA + Hinadi-Header + CRLF +Hinadi-Header = 1*( User-Agent + | Content-Type + | Date ) +``` + +### Entity block + +One or more entity blocks MUST be present after the header block. Each entity +block defines metadata about a specific document. + +``` +Entity-block = URL ( HINA-Version + | Virtual + | Content-Type + | Date + | Title + | Author-Name + | Expires + | Expire + | Last-Modified + | Last-Modified-Detected + | Server + | Authorized + | Authorized-url + | Method + | Keyword + | Image-Width + | Image-Height + | Experimental-field + | Undefined-field + CRLF ) +``` + +## Fields + +This section defines the various fields that may be found in blocks. +All fields are OPTIONAL and case-insensitive unless otherwise specified. + +### HINA + +Indicates that this is a Hina-Di file, and includes its version. +This field is REQUIRED as the first field of Hina-Di files. + +``` +HINA = "HINA" "/" hinadi-version CRLF +hinadi-version = "2.2beta" +``` + +### User-Agent + +Name of the user agent that created this Hina-Di file. +This field is REQUIRED in header blocks. +The value of this field is case-sensitive. + +``` +User-Agent = "User-Agent" SEPARATOR TOKEN CRLF +``` + +### URL + +URL of the document, compliant with [RFC 2396][rfc2396]. +This field is REQUIRED in entity blocks. +Making this field the first field of an entity block is RECOMMENDED. +The value of this field is case-sensitive to the extent defined by RFC 2396. + +``` +URL = "URL" SEPARATOR rfc2396-url CRLF +rfc2396-url = +``` + +### HINA-Version + +Specifies that the integrity of the entity block was guaranteed according to +the specification of a specific Hina-Di version. +If this field is missing from an entity block, it means the block might be +incomplete. + +``` +HINA-Version = "HINA-Version" SEPARATOR version +version = "HINA" "/" 1*( DIGIT ) "." 1*( DIGIT ) +``` + +### Virtual + +URL of another Hina-Di file that holds the entity block, compliant with +[RFC 2396][rfc2396]. + +If there are fields in the entity block other than `Virtual`, then it takes the +same meaning as the regular `URL` field. + +The value of this field is case-sensitive to the extent defined by RFC 2396. + +``` +Virtual = "Virtual" SEPARATOR rfc2396-url CRLF +rfc2396-url = +``` + +> Note that the original version of the document defines the `Virtual` feed +> as `Vitural`. + +### Content-Type + +MIME type of the Hina-Di file or the document, as described in +[RFC 1521][rfc1521]. +The value of this field is case-sensitive to the extent defined by RFC 1521. + +``` +Content-Type = "Content-Type" SEPARATOR rfc1521-type +rfc1521-type = +``` + +### Date + +The date and time when the block or the Hina-Di file was generated. +The dates MUST comply with [RFC 1123][rfc1123], better described in section 3.3 +of [RFC 2616][rfc2616]. +The value of this field is case-sensitive. + +``` +Date = "Date" SEPARATOR rfc1123-date CRLF +rfc1123-date = +``` + +### Title + +The title of the document. + +``` +Title = "Title" SEPARATOR TOKEN CRLF +``` + +### Author-Name + +Name of the author of the document. +The value of this field is case-sensitive. + +``` +Author-Name = "Author-Name" SEPARATOR TOKEN CRLF +``` + +### Expires + +Expiration date for the block. The dates MUST comply with [RFC 1123][rfc1123], +better described in section 3.3 of [RFC 2616][rfc2616]. +The value of this field is case-sensitive to the extent defined by RFC 2616. + +``` +Expires = "Expires" SEPARATOR rfc1123-date CRLF +``` + +### Expire + +Alias for the `Expires` field, included for backwards compatibility. + +``` +Expire = "Expire" SEPARATOR rfc1123-date CRLF +``` + +### Last-Modified + +Date and time when the document was last updated. The dates MUST comply with +[RFC 1123][rfc1123], better described in section 3.3 of [RFC 2616][rfc2616]. +The value of this field is case-sensitive to the extent defined by RFC 2616. + +``` +Last-Modified = "Last-Modified" SEPARATOR rfc1123-date CRLF +``` + +### Last-Modified-Detected + +Date and time representing when the user agent retrieved the document's +metadata. The dates MUST comply with [RFC 1123][rfc1123], better described +in section 3.3 of [RFC 2616][rfc2616]. +The value of this field is case-sensitive to the extent defined by RFC 2616. + +``` +Last-Modified-Detected = "Last-Modified-Detected" SEPARATOR rfc1123-date CRLF +``` + +### Server + +User agent string of the server used to retrieve the metadata of the document +described by this entity block. + +``` +Server = "Server" SEPARATOR TOKEN CRLF +``` + +### Authorized + +The user agent that retrieved the metadata of the document described by this +entity block. + +``` +Authorized = "Authorized" SEPARATOR TOKEN CRLF WORD +``` + +### Authorized-url + +URL of a page describing the user agent referred to in the `Authorized` field, +compliant with [RFC 2396][rfc2396]. +The value of this field is case-sensitive to the extent defined by RFC 2396. + +``` +Authorized-url = "Authorized-url" SEPARATOR rfc2396-url CRLF +``` + +### Method + +Describes the chain of propagation that this entity block went through. + +``` +Method = "Method" SEPARATOR method-type *(SLASH method-type) (SLASH result-code) +method-type = "GET" | "HEAD" | "FILE" | "REMOTE" +result-code = +``` + +#### Method types + +GET +: Metadata retrieved using a HTTP GET request. +HEAD +: Metadata retrieved using a HTTP HEAD request. +FILE +: Metadata retrieved from a local file's timestamp. +REMOTE +: Metadata retrieved from an entity block generated by another agent. + +#### Example + +``` +Method: REMOTE/REMOTE/GET/200 +``` + +1. A first user agent retrieved the metadata on the document using a HTTP GET + and got a 200 response code (`GET/200`). +2. A second user agent retrieved the first user agent's Hina-Di file, then + propagated it to its own file (`REMOTE`). +3. A third user agent retrieved the second user agent's Hina-Di file, then + propogated it to its own file (`REMOTE`). + +### Keyword + +Words that can be used to give an overview of the document described by this +entity block; tags, categories, etc. The value of this field is case-sensitive. + +``` +Keyword = "Keyword" SEPARATOR keywords CRLF +keywords = TOKEN *(SEPARATOR TOKEN) +``` + +### Image-Width + +Width of an image described by an entity block, in pixels. + +This field MUST NOT be used for entity blocks that do not describe images. + +``` +Image-Width = "Image-Width" SEPARATOR width CRLF +width = DIGIT +``` + +### Image-Height + +Height of an image described by an entity block, in pixels. + +This field MUST NOT be used for entity blocks that do not describe images. + +``` +Image-Height = "Image-Height" SEPARATOR width CRLF +height = DIGIT +``` + +### Experimental fields + +Implementations MAY define custom fields with an X- prefix to provide +additional metadata not covered in this specification. Implementations MUST NOT +assume that all clients will use each of those fields. Clients that do not +support any experimental field SHOULD ignore them. + +``` +Experimental-field = x-field-name SEPARATOR TOKEN +x-field-name = "X-" WORD *("-" WORD) +``` + +### Undefined fields + +Any field that is not defined in this specification. Implementations that +encounter such fields and do not support them SHOULD ignore them. + +``` +Undefined-field = undef-field-name SEPARATOR TOKEN CRLF +undef-field-name = WORD *("-" WORD) +``` + +## Encoding + +The character encoding of the Hina-Di file SHOULD be specified as a parameter +of the `Content-Type` field of the header block. If it is not specified, +it defaults to `EUC-JP`. + +## Propagation + +In Hina-Di, metadata propagation consists in acquiring metadata from other +agents, then sharing it as it is in the user agent's own Hina-Di file. +This can be used for aggregation services or a peer-to-peer network. + +The `Authorized` and `Authorized-url` fields allow indicating the user agent +from which the metadata originally came from to help ensure its legitimacy. +Propagating MUST only be performed if both fields are defined and if the user +agent is trusted. + +When propagating, all fields of an entity block defined in this specification, +with the exception of experimental and undefined fields or of fields with empty +values, MUST be reproduced without modification. +Propagating experimental or undefined fields is not guaranteed. +A header block, or any field that is part of it, MUST NOT be propagated. + +The `Method` field MUST be processed according to the process described in the +Method section. + +[antenna]: http://masshy.fastwave.gr.jp/hina/release/ +[rfc822]: https://tools.ietf.org/html/rfc822 +[rfc1123]: https://tools.ietf.org/html/rfc1123 +[rfc1521]: https://tools.ietf.org/html/rfc1521 +[rfc2119]: https://tools.ietf.org/html/rfc2119 +[rfc2396]: https://tools.ietf.org/html/rfc2396 +[rfc2616]: https://tools.ietf.org/html/rfc2616 +[rfc8174]: https://tools.ietf.org/html/rfc8174 diff --git a/content/hina/specs/0.12.md b/content/hina/specs/0.12.md new file mode 100644 index 0000000..30713d4 --- /dev/null +++ b/content/hina/specs/0.12.md @@ -0,0 +1,447 @@ +--- +title: Asahina Antenna Metadata Format (HINA) 2.2, rev. 0.12 +date: November 7, 2001 +toc: true +--- + +> This document is an unofficial English translation of the original Japanese +> specification made by someone who has no knowledge of Japanese. Implement at +> your own risk. + +## Overview + +This document describes Hina-Di, the metadata format used by [Asahina +Antenna][antenna]. In this document, "metadata" is defined as data on a webpage +such as its last update time or its author. Asahina Antenna acts as a feed +reader for Hina-Di. + +## Conventions used in this document + +This document uses the Backus-Naur notation ([RFC 822][rfc822]) to formally +specify the format. + +The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", +"SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this +document are to be interpreted as described in BCP 14 ([RFC 2119][rfc2119], +[RFC 8174][rfc8174]) when, and only when, they appear in all capitals, as shown +here. + +## Data Types + +The basic data types that constitute Hina-Di are listed below. The US-ASCII +character set is defined by ANSI X3.4-1986. + +``` +OCTET = +CHAR = +UPALPHA = +LOALPHA = +ALPHA = UPALPHA | LOALPHA +DIGIT = +WORD = 1*(ALPHA|DIGIT) + +CTL = +CR = +LF = +SP = +HT = +<"> = + +CRLF = CR LF + +TEXT = +TOKEN = + +SEPARATOR = ":" 1*(SP|HT) +DELIMITER = "," *(SP|HT) +SLASH = "/" *(SP|HT) +``` + +## Structure + +A Hina-Di file consists of a series of blocks that summarize the metadata on a +website: a header block, followed by one or more entity blocks. + +``` +hina-di = header-block + 1*( entity-block ) +``` + +### Block + +A block is a set of metadata for a document. Each metadata is represented as a +single header, in a manner similar to [RFC 822][rfc822], with a field name and a +field value. + +Field names in a block MUST be unique. A block with duplicate field names MUST +be discarded. + +Field names are case-sensitive. Field values may be case-sensitive, +depending on the field. + +``` +line-format = field-name SEPARATOR field-value CRLF +field-name = WORD *( "-" WORD) +field-value = TOKEN +``` + +### Header block + +Exactly one header block MUST appear in a Hina-Di file, and it MUST be the +first block. It holds metadata about the Hina-Di file itself. + +``` +header-block = HINA + Hinadi-Header + CRLF +Hinadi-Header = 1*( User-Agent + | Content-Type + | Date ) +``` + +### Entity block + +One or more entity blocks MUST be present after the header block. Each entity +block defines metadata about a specific document. + +``` +Entity-block = URL ( HINA-Version + | Virtual + | Content-Type + | Date + | Title + | Author-Name + | Expires + | Expire + | Last-Modified + | Last-Modified-Detected + | Server + | Authorized + | Authorized-url + | Method + | Keyword + | Image-Width + | Image-Height + | Experimental-field + | Undefined-field ) + CRLF +``` + +## Fields + +This section defines the various fields that may be found in blocks. +All fields are OPTIONAL and case-insensitive unless otherwise specified. + +### HINA + +Indicates that this is a Hina-Di file, and includes its version. +This field is REQUIRED as the first field of Hina-Di files. + +``` +HINA = "HINA" "/" hinadi-version CRLF +hinadi-version = "2.2beta" +``` + +### User-Agent + +Name of the user agent that created this Hina-Di file. +This field is REQUIRED in header blocks. +The value of this field is case-sensitive. + +``` +User-Agent = "User-Agent" SEPARATOR TOKEN CRLF +``` + +### URL + +URL of the document, compliant with [RFC 2396][rfc2396]. + +This field is REQUIRED in entity blocks. +Making this field the first field of an entity block is RECOMMENDED. + +The scheme and domain portions of the URL are not case-sensitive. +If the other portions of the URL are not case-insensitive, they SHOULD be +written using lowercase characters. + +``` +URL = "URL" SEPARATOR rfc2396-url CRLF +rfc2396-url = +``` + +Implementations can use this field as a unique key that distinguishes the +entity block from other blocks. To ensure proper uniqueness of this field, +the following conditions MUST be respected by the providing Hina-Di user +agents or their administrators: + +* If the URL can end in a slash (`/`), then it SHOULD end in a slash. + Prefer `http://www.hoge.jp/foo/` over `http://www.hoge.jp/foo` +* If the URL includes a file name, but the file name can be omitted, + then it SHOULD be omitted. + Prefer `http://www.hoge.jp/foo/` over `http://www.hoge.jp/foo/index.html` + +### HINA-Version + +Specifies that the integrity of the entity block was guaranteed according to +the specification of a specific Hina-Di version. +If this field is missing from an entity block, it means the block might be +incomplete. + +``` +HINA-Version = "HINA-Version" SEPARATOR version +version = "HINA" "/" 1*( DIGIT ) "." 1*( DIGIT ) +``` + +### Virtual + +URL of another Hina-Di file that holds the entity block, compliant with +[RFC 2396][rfc2396]. + +If there are fields in the entity block other than `Virtual`, then it takes the +same meaning as the regular `URL` field. + +The case-sensitivity and URL uniqueness conditions defined for the `URL` field +MUST be followed for this field. + +``` +Virtual = "Virtual" SEPARATOR rfc2396-url CRLF +rfc2396-url = +``` + +> Note that the original version of the document defines the `Virtual` feed +> as `Vitural`. + +### Content-Type + +MIME type of the Hina-Di file or the document, as described in +[RFC 1521][rfc1521]. +The value of this field is case-sensitive to the extent defined by RFC 1521. + +``` +Content-Type = "Content-Type" SEPARATOR rfc1521-type +rfc1521-type = +``` + +### Date + +The date and time when the block or the Hina-Di file was generated. +The dates MUST comply with [RFC 1123][rfc1123], better described in section 3.3 +of [RFC 2616][rfc2616]. +The value of this field is case-sensitive. + +``` +Date = "Date" SEPARATOR rfc1123-date CRLF +rfc1123-date = +``` + +### Title + +The title of the document. + +``` +Title = "Title" SEPARATOR TOKEN CRLF +``` + +### Author-Name + +Name of the author of the document. +The value of this field is case-sensitive. + +``` +Author-Name = "Author-Name" SEPARATOR TOKEN CRLF +``` + +### Expires + +Expiration date for the block. The dates MUST comply with [RFC 1123][rfc1123], +better described in section 3.3 of [RFC 2616][rfc2616]. +The value of this field is case-sensitive to the extent defined by RFC 2616. + +``` +Expires = "Expires" SEPARATOR rfc1123-date CRLF +``` + +### Expire + +Alias for the `Expires` field, included for backwards compatibility. + +``` +Expire = "Expire" SEPARATOR rfc1123-date CRLF +``` + +### Last-Modified + +Date and time when the document was last updated. The dates MUST comply with +[RFC 1123][rfc1123], better described in section 3.3 of [RFC 2616][rfc2616]. +The value of this field is case-sensitive to the extent defined by RFC 2616. + +``` +Last-Modified = "Last-Modified" SEPARATOR rfc1123-date CRLF +``` + +### Last-Modified-Detected + +Date and time representing when the user agent retrieved the document's +metadata. The dates MUST comply with [RFC 1123][rfc1123], better described +in section 3.3 of [RFC 2616][rfc2616]. +The value of this field is case-sensitive to the extent defined by RFC 2616. + +``` +Last-Modified-Detected = "Last-Modified-Detected" SEPARATOR rfc1123-date CRLF +``` + +### Server + +User agent string of the server used to retrieve the metadata of the document +described by this entity block. + +``` +Server = "Server" SEPARATOR TOKEN CRLF +``` + +### Authorized + +The user agent that retrieved the metadata of the document described by this +entity block. + +``` +Authorized = "Authorized" SEPARATOR TOKEN CRLF WORD +``` + +### Authorized-url + +URL of a page describing the user agent referred to in the `Authorized` field, +compliant with [RFC 2396][rfc2396]. + +The case-sensitivity and URL uniqueness conditions defined for the `URL` field +MUST be followed for this field. + +``` +Authorized-url = "Authorized-url" SEPARATOR rfc2396-url CRLF +``` + +### Method + +Describes the chain of propagation that this entity block went through. + +``` +Method = "Method" SEPARATOR method-type *(SLASH method-type) (SLASH result-code) +method-type = "GET" | "HEAD" | "FILE" | "REMOTE" +result-code = +``` + +#### Method types + +GET +: Metadata retrieved using a HTTP GET request. +HEAD +: Metadata retrieved using a HTTP HEAD request. +FILE +: Metadata retrieved from a local file's timestamp. +REMOTE +: Metadata retrieved from an entity block generated by another agent. + +#### Example + +``` +Method: REMOTE/REMOTE/GET/200 +``` + +1. A first user agent retrieved the metadata on the document using a HTTP GET + and got a 200 response code (`GET/200`). +2. A second user agent retrieved the first user agent's Hina-Di file, then + propagated it to its own file (`REMOTE`). +3. A third user agent retrieved the second user agent's Hina-Di file, then + propogated it to its own file (`REMOTE`). + +### Keyword + +Words that can be used to give an overview of the document described by this +entity block; tags, categories, etc. The value of this field is case-sensitive. + +``` +Keyword = "Keyword" SEPARATOR keywords CRLF +keywords = TOKEN *(SEPARATOR TOKEN) +``` + +### Image-Width + +Width of an image described by an entity block, in pixels. + +This field MUST NOT be used for entity blocks that do not describe images. + +``` +Image-Width = "Image-Width" SEPARATOR width CRLF +width = DIGIT +``` + +### Image-Height + +Height of an image described by an entity block, in pixels. + +This field MUST NOT be used for entity blocks that do not describe images. + +``` +Image-Height = "Image-Height" SEPARATOR width CRLF +height = DIGIT +``` + +### Experimental fields + +Implementations MAY define custom fields with an X- prefix to provide +additional metadata not covered in this specification. Implementations MUST NOT +assume that all clients will use each of those fields. Clients that do not +support any experimental field SHOULD ignore them. + +Experimental fields MAY include data that is not directly related to metadata +that the document has, and SHOULD be used shall a field for that purpose be +created by an implementor. + +``` +Experimental-field = x-field-name SEPARATOR TOKEN +x-field-name = "X-" WORD *("-" WORD) +``` + +### Undefined fields + +Any field that is not defined in this specification. Implementations that +encounter such fields and do not support them SHOULD ignore them. + +``` +Undefined-field = undef-field-name SEPARATOR TOKEN CRLF +undef-field-name = WORD *("-" WORD) +``` + +## Encoding + +The character encoding of the Hina-Di file SHOULD be specified as a parameter +of the `Content-Type` field of the header block. If it is not specified, +it defaults to `EUC-JP`. + +## Propagation + +In Hina-Di, metadata propagation consists in acquiring metadata from other +agents, then sharing it as it is in the user agent's own Hina-Di file. +This can be used for aggregation services or a peer-to-peer network. + +The `Authorized` and `Authorized-url` fields allow indicating the user agent +from which the metadata originally came from to help ensure its legitimacy. +Propagating MUST only be performed if both fields are defined and if the user +agent is trusted. + +When propagating, all fields of an entity block defined in this specification, +with the exception of experimental and undefined fields or of fields with empty +values, MUST be reproduced without modification. +Propagating experimental or undefined fields is not guaranteed. +A header block, or any field that is part of it, MUST NOT be propagated. + +The `Method` field MUST be processed according to the process described in the +Method section. + +[antenna]: http://masshy.fastwave.gr.jp/hina/release/ +[rfc822]: https://tools.ietf.org/html/rfc822 +[rfc1123]: https://tools.ietf.org/html/rfc1123 +[rfc1521]: https://tools.ietf.org/html/rfc1521 +[rfc2119]: https://tools.ietf.org/html/rfc2119 +[rfc2396]: https://tools.ietf.org/html/rfc2396 +[rfc2616]: https://tools.ietf.org/html/rfc2616 +[rfc8174]: https://tools.ietf.org/html/rfc8174 diff --git a/content/hina/specs/0.13.md b/content/hina/specs/0.13.md new file mode 100644 index 0000000..c3e6ccf --- /dev/null +++ b/content/hina/specs/0.13.md @@ -0,0 +1,491 @@ +--- +title: Asahina Antenna Metadata Format (HINA) 2.2, rev. 0.13 +date: July 19, 2002 +toc: true +--- + +> This document is an unofficial English translation of the original Japanese +> specification made by someone who has no knowledge of Japanese. Implement at +> your own risk. + +## Overview + +This document describes Hina-Di, the metadata format used by [Asahina +Antenna][antenna]. In this document, "metadata" is defined as data on a webpage +such as its last update time or its author. Asahina Antenna acts as a feed +reader for Hina-Di. + +## Conventions used in this document + +This document uses the Backus-Naur notation ([RFC 822][rfc822]) to formally +specify the format. + +The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", +"SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this +document are to be interpreted as described in BCP 14 ([RFC 2119][rfc2119], +[RFC 8174][rfc8174]) when, and only when, they appear in all capitals, as shown +here. + +## Data Types + +The basic data types that constitute Hina-Di are listed below. The US-ASCII +character set is defined by ANSI X3.4-1986. + +``` +OCTET = +CHAR = +UPALPHA = +LOALPHA = +ALPHA = UPALPHA | LOALPHA +DIGIT = +WORD = 1*(ALPHA|DIGIT) + +CTL = +CR = +LF = +SP = +HT = +<"> = + +CRLF = CR LF + +TEXT = +TOKEN = + +SEPARATOR = ":" 1*(SP|HT) +DELIMITER = "," *(SP|HT) +SLASH = "/" *(SP|HT) +``` + +## Structure + +A Hina-Di file consists of a series of blocks that summarize the metadata on a +website: a header block, followed by one or more entity blocks. + +``` +hina-di = header-block + 1*( entity-block ) +``` + +### Block + +A block is a set of metadata for a document. Each metadata is represented as a +single header, in a manner similar to [RFC 822][rfc822], with a field name and a +field value. + +Field names in a block MUST be unique. A block with duplicate field names MUST +be discarded. + +Field names are case-insensitive. Unless explicitly stated for a particular +field, a field's value is case-insensitive. + +``` +line-format = field-name SEPARATOR field-value CRLF +field-name = WORD *( "-" WORD) +field-value = TOKEN +``` + +### Header block + +Exactly one header block MUST appear in a Hina-Di file, and it MUST be the +first block. It holds metadata about the Hina-Di file itself. + +``` +header-block = HINA + Hinadi-Header + CRLF +Hinadi-Header = 1*( User-Agent + | Content-Type + | Date ) +``` + +### Entity block + +One or more entity blocks MUST be present after the header block. Each entity +block defines metadata about a specific document. + +``` +Entity-block = URL ( HINA-Version + | Virtual + | Content-Type + | Date + | Title + | Author-Name + | Expires + | Expire + | Last-Modified + | Last-Modified-Detected + | Server + | Authorized + | Authorized-url + | Method + | Keyword + | Image-Width + | Image-Height + | Experimental-field + | Undefined-field ) + CRLF +``` + +## Fields + +This section defines the various fields that may be found in blocks. +All fields are OPTIONAL and case-insensitive unless otherwise specified. + +### HINA + +Indicates that this is a Hina-Di file, and includes its version. +This field is REQUIRED as the first field of Hina-Di files. + +``` +HINA = "HINA" "/" hinadi-version CRLF +hinadi-version = "2.2beta" +``` + +### User-Agent + +Name of the user agent that created this Hina-Di file. +This field is REQUIRED in header blocks. +The value of this field is case-sensitive. + +``` +User-Agent = "User-Agent" SEPARATOR TOKEN CRLF +``` + +### URL + +URL of the document, compliant with [RFC 2396][rfc2396]. + +This field is REQUIRED in entity blocks. +Making this field the first field of an entity block is RECOMMENDED. + +The scheme and domain portions of the URL are not case-sensitive. +If the other portions of the URL are not case-insensitive, they SHOULD be +written using lowercase characters. + +``` +URL = "URL" SEPARATOR rfc2396-url CRLF +rfc2396-url = +``` + +Implementations can use this field as a unique key that distinguishes the +entity block from other blocks. To ensure proper uniqueness of this field, +the following conditions MUST be respected by the providing Hina-Di user +agents or their administrators: + +* If the URL can end in a slash (`/`), then it SHOULD end in a slash. + Prefer `http://www.hoge.jp/foo/` over `http://www.hoge.jp/foo` +* If the URL includes a file name, but the file name can be omitted, + then it SHOULD be omitted. + Prefer `http://www.hoge.jp/foo/` over `http://www.hoge.jp/foo/index.html` + +### HINA-Version + +Specifies that the integrity of the entity block was guaranteed according to +the specification of a specific Hina-Di version. +If this field is missing from an entity block, it means the block might be +incomplete. + +``` +HINA-Version = "HINA-Version" SEPARATOR version +version = "HINA" "/" 1*( DIGIT ) "." 1*( DIGIT ) +``` + +### Virtual + +URL of another Hina-Di file that holds the entity block, compliant with +[RFC 2396][rfc2396]. + +If there are fields in the entity block other than `Virtual`, then it takes the +same meaning as the regular `URL` field. + +The case-sensitivity and URL uniqueness conditions defined for the `URL` field +MUST be followed for this field. + +``` +Virtual = "Virtual" SEPARATOR rfc2396-url CRLF +rfc2396-url = +``` + +> Note that the original version of the document defines the `Virtual` feed +> as `Vitural`. + +### Content-Type + +MIME type of the Hina-Di file or the document, as described in +[RFC 1521][rfc1521]. +The value of this field is case-sensitive to the extent defined by RFC 1521. + +``` +Content-Type = "Content-Type" SEPARATOR rfc1521-type CRLF +rfc1521-type = "Content-Type" ":" type "/" subtype *(";"parameter) +type = "application" + | "audio" + | "image" + | "message" + | "multipart" + | "text" + | "video" + | extension-token +extension-token = x-token / iana-token +iana-token = +x-token = +subtype = TOKEN +parameter = attribute "=" value +attribute = TOKEN ; case-insensitive + +value = token / quoted-string + +token = 1* + +tspecials = "(" / ")" / "<" / ">" / "@" + / "," / ";" / ":" / "¥" / <"> + / "/" / "[" / "]" / "?" / "=" + ; Must be in quoted-string to use within parameter values +``` + +### Date + +The date and time when the block or the Hina-Di file was generated. +The dates MUST comply with [RFC 1123][rfc1123]. +The value of this field is case-sensitive. + +``` +Date = "Date" SEPARATOR rfc1123-date CRLF +rfc1123-date = wkday "," SP day-month-year SP time SP "GMT" +wkday = "Mon" | "Tue" | "Wed" | "Thu" | "Fri" | "Sat" | "Sun" +day-month-year = 2*DIGIT SP month SP 4*DIGIT ; day month year (e.g. 02 Jun 1982) +time = 2*DIGIT ":" 2*DIGIT ":" 2*DIGIT ; 00:00:00 - 23:59:59 +month = "Jan" | "Feb" | "Mar" | "Apr" + | "May" | "Jun" | "Jul" | "Aug" + | "Sep" | "Oct" | "Nov" | "Dec" +``` + +### Title + +The title of the document. + +``` +Title = "Title" SEPARATOR TOKEN CRLF +``` + +### Author-Name + +Name of the author of the document. +The value of this field is case-sensitive. + +``` +Author-Name = "Author-Name" SEPARATOR TOKEN CRLF +``` + +### Expires + +Expiration date for the block. The dates MUST comply with [RFC 1123][rfc1123]. +The value of this field is case-sensitive to the extent defined by RFC 1123. + +``` +Expires = "Expires" SEPARATOR rfc1123-date CRLF +``` + +### Expire + +Alias for the `Expires` field, included for backwards compatibility. + +``` +Expire = "Expire" SEPARATOR rfc1123-date CRLF +``` + +### Last-Modified + +Date and time when the document was last updated. The dates MUST comply with +[RFC 1123][rfc1123]. +The value of this field is case-sensitive to the extent defined by RFC 1123. + +``` +Last-Modified = "Last-Modified" SEPARATOR rfc1123-date CRLF +``` + +### Last-Modified-Detected + +Date and time representing when the user agent retrieved the document's +metadata. The dates MUST comply with [RFC 1123][rfc1123]. +The value of this field is case-sensitive to the extent defined by RFC 1123. + +``` +Last-Modified-Detected = "Last-Modified-Detected" SEPARATOR rfc1123-date CRLF +``` + +### Server + +User agent string of the server used to retrieve the metadata of the document +described by this entity block. + +``` +Server = "Server" SEPARATOR TOKEN CRLF +``` + +### Authorized + +The user agent that retrieved the metadata of the document described by this +entity block. + +``` +Authorized = "Authorized" SEPARATOR TOKEN CRLF WORD +``` + +### Authorized-url + +URL of a page describing the user agent referred to in the `Authorized` field, +compliant with [RFC 2396][rfc2396]. + +The case-sensitivity and URL uniqueness conditions defined for the `URL` field +MUST be followed for this field. + +``` +Authorized-url = "Authorized-url" SEPARATOR rfc2396-url CRLF +``` + +### Method + +Describes the chain of propagation that this entity block went through. + +``` +Method = "Method" SEPARATOR method-type *(SLASH method-type) (SLASH result-code) +method-type = "GET" | "HEAD" | "FILE" | "REMOTE" +result-code = +``` + +#### Method types + +GET +: Metadata retrieved using a HTTP GET request. +HEAD +: Metadata retrieved using a HTTP HEAD request. +FILE +: Metadata retrieved from a local file's timestamp. +REMOTE +: Metadata retrieved from an entity block generated by another agent. + +#### Example + +``` +Method: REMOTE/REMOTE/GET/200 +``` + +1. A first user agent retrieved the metadata on the document using a HTTP GET + and got a 200 response code (`GET/200`). +2. A second user agent retrieved the first user agent's Hina-Di file, then + propagated it to its own file (`REMOTE`). +3. A third user agent retrieved the second user agent's Hina-Di file, then + propogated it to its own file (`REMOTE`). + +### Keyword + +Words that can be used to give an overview of the document described by this +entity block; tags, categories, etc. The value of this field is case-sensitive. + +``` +Keyword = "Keyword" SEPARATOR keywords CRLF +keywords = TOKEN *(SEPARATOR TOKEN) +``` + +### Image-Width + +Width of an image described by an entity block, in pixels. + +This field MUST NOT be used for entity blocks that do not describe images. + +``` +Image-Width = "Image-Width" SEPARATOR width CRLF +width = DIGIT +``` + +### Image-Height + +Height of an image described by an entity block, in pixels. + +This field MUST NOT be used for entity blocks that do not describe images. + +``` +Image-Height = "Image-Height" SEPARATOR width CRLF +height = DIGIT +``` + +### Experimental fields + +Implementations MAY define custom fields with an X- prefix to provide +additional metadata not covered in this specification. Implementations MUST NOT +assume that all clients will use each of those fields. Clients that do not +support any experimental field SHOULD ignore them. + +Experimental fields MAY include data that is not directly related to metadata +that the document has, and SHOULD be used shall a field for that purpose be +created by an implementor. + +``` +Experimental-field = x-field-name SEPARATOR TOKEN +x-field-name = "X-" WORD *("-" WORD) +``` + +### Undefined fields + +Any field that is not defined in this specification. Implementations that +encounter such fields and do not support them SHOULD ignore them. + +``` +Undefined-field = undef-field-name SEPARATOR TOKEN CRLF +undef-field-name = WORD *("-" WORD) +``` + +## Encoding + +The character encoding of the Hina-Di file SHOULD be specified as a parameter +of the `Content-Type` field of the header block. If it is not specified, +it defaults to `EUC-JP`. + +## Propagation + +In Hina-Di, metadata propagation consists in acquiring metadata from other +agents, then sharing it as it is in the user agent's own Hina-Di file. +This can be used for aggregation services or a peer-to-peer network. + +The `Authorized` and `Authorized-url` fields allow indicating the user agent +from which the metadata originally came from to help ensure its legitimacy. +Propagating MUST only be performed if both fields are defined and if the user +agent is trusted. + +When propagating, all fields of an entity block defined in this specification, +with the exception of experimental and undefined fields or of fields with empty +values, MUST be reproduced without modification. +Propagating experimental or undefined fields is not guaranteed. +A header block, or any field that is part of it, MUST NOT be propagated. + +The `Method` field MUST be processed according to the process described in the +Method section. + +## Appendix: Related terms + +Asahina-Antenna +: Metadata acquisition agent based on Hina-Di. +metadata +: Information about the content, such as the author, title and update time. +hina-di +: Metadata transfer format used by Asahina-Antenna 2.x. +hina.txt +: Metadata transfer format used by Asahina-Antenna 1.x, +: made obsolete by hina-di. +DI +: Document Information. Metadata transfer format used by [DIXS][dixs]. +: Hina-Di has been influenced by DI. + +[antenna]: http://masshy.fastwave.gr.jp/hina/release/ +[dixs]: https://web.archive.org/web/20040726230104/http://docinfo.jin.gr.jp/ +[rfc822]: https://tools.ietf.org/html/rfc822 +[rfc1123]: https://tools.ietf.org/html/rfc1123 +[rfc1521]: https://tools.ietf.org/html/rfc1521 +[rfc2119]: https://tools.ietf.org/html/rfc2119 +[rfc2396]: https://tools.ietf.org/html/rfc2396 +[rfc8174]: https://tools.ietf.org/html/rfc8174 diff --git a/content/hina/specs/0.5.md b/content/hina/specs/0.5.md new file mode 100644 index 0000000..7e70946 --- /dev/null +++ b/content/hina/specs/0.5.md @@ -0,0 +1,322 @@ +--- +title: Asahina Antenna Metadata Format (HINA) 2.2, rev. 0.5 +date: September 23, 2000 +toc: true +--- + +> This document is an unofficial English translation of the original Japanese +> specification made by someone who has no knowledge of Japanese. Implement at +> your own risk. + +## Overview + +This document describes Hina-Di, the metadata format used by [Asahina +Antenna][antenna]. In this document, "metadata" is defined as data on a webpage +such as its last update time or its author. Asahina Antenna acts as a feed +reader for Hina-Di. + +## Conventions used in this document + +This document uses the Backus-Naur notation ([RFC 822][rfc822]) to formally +specify the format. + +The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", +"SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this +document are to be interpreted as described in BCP 14 ([RFC 2119][rfc2119], +[RFC 8174][rfc8174]) when, and only when, they appear in all capitals, as shown +here. + +## Data Types + +The basic data types that constitute Hina-Di are listed below. The US-ASCII +character set is defined by 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) +``` + +## Structure + +A Hina-Di file consists of a series of blocks that summarize the metadata on a +website: a header block, followed by one or more entity blocks. + +``` +hina-di = header-block + 1*( entity-block ) +``` + +### Block + +A block is a set of metadata for a document. Each metadata is represented as a +single header, in a manner similar to [RFC 822][rfc822], with a field name and a +field value. Field names are case-sensitive. Field values may be +case-sensitive, depending on the field. + +``` +line-format = field-name SEPARATOR field-value CRLF +field-name = WORD *( "-" WORD) +field-value = TOKEN +``` + +### Header block + +Exactly one header block MUST appear in a Hina-Di file, and it MUST be the +first block. It holds metadata about the Hina-Di file itself. + +``` +header-block = HINA + Optional-Header + CRLF +Optional-Header = 1*( User-Agent + | Content-Type + | Date ) +``` + +### Entity block + +One or more entity blocks MUST be present after the header block. Each entity +block defines metadata about a specific document. + +``` +Entity-block = 1*( URL + | Content-Type + | Date + | Title + | Author-Name + | Expires + | Expire + | Last-Modified + | Last-Modified-Detected + | Server + | Authorized + | Authorized-url + | Method + | Keyword + | Experimental-field + | Undefined-field + CRLF ) +``` + +## Fields + +This section defines the various fields that may be found in blocks. +All fields are OPTIONAL and case-insensitive unless otherwise specified. + +### HINA + +Indicates that this is a Hina-Di file, and includes its version. +This field is REQUIRED as the first field of Hina-Di files. + +``` +HINA = "HINA" "/" hinadi-version CRLF +hinadi-version = "2.2" +``` + +### User-Agent + +Name of the user agent that created this Hina-Di file. +This field is REQUIRED in header blocks. +The value of this field is case-sensitive. + +``` +User-Agent = "User-Agent" SEPARATOR TOKEN CRLF +``` + +### URL + +URL of the document, compliant with [RFC 2396][rfc2396]. +This field is REQUIRED in entity blocks. +The value of this field is case-sensitive to the extent defined by RFC 2396. + +``` +URL = "URL" SEPARATOR rfc2396-url CRLF +rfc2396-url = +``` + +### Content-Type + +MIME type of the Hina-Di file or the document, as described in +[RFC 1521][rfc1521]. +The value of this field is case-sensitive to the extent defined by RFC 1521. + +``` +Content-Type = "Content-Type" SEPARATOR rfc1521-type +rfc1521-type = +``` + +### Date + +The date and time when the block was generated. The dates MUST comply with +section 3.3 of [RFC 2616][rfc2616], but [RFC 1123][rfc1123] compliance is +RECOMMENDED. +The value of this field is case-sensitive to the extent defined by RFC 2616. + +``` +Date = "Date" SEPARATOR rfc2616-date CRLF +rfc2616-date = +``` + +### Title + +The title of the document. + +``` +Title = "Title" SEPARATOR TOKEN CRLF +``` + +### Author-Name + +Name of the author of the document. + +``` +Author-Name = "Author-Name" SEPARATOR TOKEN CRLF +``` + +### Expires + +Expiration date for the block. The dates MUST comply with section 3.3 of +[RFC 2616][rfc2616], but [RFC 1123][rfc1123] compliance is RECOMMENDED. +The value of this field is case-sensitive to the extent defined by RFC 2616. + +``` +Expires = "Expires" SEPARATOR rfc2616-date CRLF +``` + +### Expire + +Alias for the `Expires` field, included for backwards compatibility. + +``` +Expire = "Expire" SEPARATOR rfc2616-date CRLF +``` + +### Last-Modified + +Date and time when the document was last updated. The dates MUST comply with +section 3.3 of [RFC 2616][rfc2616], but [RFC 1123][rfc1123] compliance is +RECOMMENDED. +The value of this field is case-sensitive to the extent defined by RFC 2616. + +``` +Last-Modified = "Last-Modified" SEPARATOR rfc2616-date CRLF +``` + +### Last-Modified-Detected + +Date and time representing when the user agent retrieved the document's +metadata. The dates MUST comply with section 3.3 of [RFC 2616][rfc2616], but +[RFC 1123][rfc1123] compliance is RECOMMENDED. +The value of this field is case-sensitive to the extent defined by RFC 2616. + +``` +Last-Modified-Detected = "Last-Modified-Detected" SEPARATOR rfc2616-date CRLF +``` + +### Server + +User agent string of the server used to retrieve the metadata of the document +described by this entity block. + +``` +Server = "Server" SEPARATOR TOKEN CRLF +``` + +### Authorized + +The user agent that retrieved the metadata of the document described by this +entity block. + +``` +Authorized = "Authorized" SEPARATOR TOKEN CRLF +``` + +### Authorized-url + +URL of a page describing the user agent referred to in the `Authorized` field, +compliant with [RFC 2396][rfc2396]. +The value of this field is case-sensitive to the extent defined by RFC 2396. + +``` +Authorized-url = "Authorized-url" SEPARATOR rfc2396-url CRLF +``` + +### Method + +To be determined. Example: `Method: REMOTE/GET/200` + +### Keyword + +Words that can be used to give an overview of the document described by this +entity block; tags, categories, etc. The value of this field is case-sensitive. + +``` +Keyword = "Keyword" SEPARATOR keywords CRLF +keywords = TOKEN *(DELIMITER TOKEN) +``` + +### Experimental fields + +Implementations MAY define custom fields with an X- prefix to provide +additional metadata not covered in this specification. Implementations MUST NOT +assume that all clients will use each of those fields. Clients that do not +support any experimental field SHOULD ignore them. + +``` +Experimental-field = x-field-name SEPARATOR TOKEN +x-field-name = "X-" WORD *("-" WORD) +``` + +### Undefined fields + +Any field that is not defined in this specification. Implementations that +encounter such fields and do not support them SHOULD ignore them. + +``` +Undefined-field = undef-field-name SEPARATOR TOKEN CRLF +undef-field-name = WORD *("-" WORD) +``` + +## Propagation + +In Hina-Di, metadata propagation consists in acquiring metadata from other +agents, then sharing it as it is in the user agent's own Hina-Di file. This can +be used for aggregation services or a peer-to-peer network. + +The `Authorized` and `Authorized-url` fields allow indicating the user agent +from which the metadata originally came from to help ensure its legitimacy. + +When propagating, all fields of an entity block defined in this specification, +with the exception of experimental and undefined fields, MUST be reproduced +without modification. Propagating experimental or undefined fields is not +guaranteed. A header block MUST NOT be propagated. + +[antenna]: http://masshy.fastwave.gr.jp/hina/release/ +[rfc822]: https://tools.ietf.org/html/rfc822 +[rfc1123]: https://tools.ietf.org/html/rfc1123 +[rfc1521]: https://tools.ietf.org/html/rfc1521 +[rfc2119]: https://tools.ietf.org/html/rfc2119 +[rfc2396]: https://tools.ietf.org/html/rfc2396 +[rfc2616]: https://tools.ietf.org/html/rfc2616 +[rfc8174]: https://tools.ietf.org/html/rfc8174 diff --git a/content/hina/specs/0.6.md b/content/hina/specs/0.6.md new file mode 100644 index 0000000..a32bab2 --- /dev/null +++ b/content/hina/specs/0.6.md @@ -0,0 +1,327 @@ +--- +title: Asahina Antenna Metadata Format (HINA) 2.2, rev. 0.6 +date: September 24, 2000 +toc: true +--- + +> This document is an unofficial English translation of the original Japanese +> specification made by someone who has no knowledge of Japanese. Implement at +> your own risk. + +## Overview + +This document describes Hina-Di, the metadata format used by [Asahina +Antenna][antenna]. In this document, "metadata" is defined as data on a webpage +such as its last update time or its author. Asahina Antenna acts as a feed +reader for Hina-Di. + +## Conventions used in this document + +This document uses the Backus-Naur notation ([RFC 822][rfc822]) to formally +specify the format. + +The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", +"SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this +document are to be interpreted as described in BCP 14 ([RFC 2119][rfc2119], +[RFC 8174][rfc8174]) when, and only when, they appear in all capitals, as shown +here. + +## Data Types + +The basic data types that constitute Hina-Di are listed below. The US-ASCII +character set is defined by 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) +``` + +## Structure + +A Hina-Di file consists of a series of blocks that summarize the metadata on a +website: a header block, followed by one or more entity blocks. + +``` +hina-di = header-block + 1*( entity-block ) +``` + +### Block + +A block is a set of metadata for a document. Each metadata is represented as a +single header, in a manner similar to [RFC 822][rfc822], with a field name and a +field value. Field names are case-sensitive. Field values may be +case-sensitive, depending on the field. + +``` +line-format = field-name SEPARATOR field-value CRLF +field-name = WORD *( "-" WORD) +field-value = TOKEN +``` + +### Header block + +Exactly one header block MUST appear in a Hina-Di file, and it MUST be the +first block. It holds metadata about the Hina-Di file itself. + +``` +header-block = HINA + Hinadi-Header + CRLF +Hinadi-Header = 1*( User-Agent + | Content-Type + | Date ) +``` + +### Entity block + +One or more entity blocks MUST be present after the header block. Each entity +block defines metadata about a specific document. + +``` +Entity-block = 1*( URL + | Content-Type + | Date + | Title + | Author-Name + | Expires + | Expire + | Last-Modified + | Last-Modified-Detected + | Server + | Authorized + | Authorized-url + | Method + | Keyword + | Experimental-field + | Undefined-field + CRLF ) +``` + +## Fields + +This section defines the various fields that may be found in blocks. +All fields are OPTIONAL and case-insensitive unless otherwise specified. + +### HINA + +Indicates that this is a Hina-Di file, and includes its version. +This field is REQUIRED as the first field of Hina-Di files. + +``` +HINA = "HINA" "/" hinadi-version CRLF +hinadi-version = "2.2" +``` + +### User-Agent + +Name of the user agent that created this Hina-Di file. +This field is REQUIRED in header blocks. +The value of this field is case-sensitive. + +``` +User-Agent = "User-Agent" SEPARATOR TOKEN CRLF +``` + +### URL + +URL of the document, compliant with [RFC 2396][rfc2396]. +This field is REQUIRED in entity blocks. +The value of this field is case-sensitive to the extent defined by RFC 2396. + +``` +URL = "URL" SEPARATOR rfc2396-url CRLF +rfc2396-url = +``` + +### Content-Type + +MIME type of the Hina-Di file or the document, as described in +[RFC 1521][rfc1521]. +The value of this field is case-sensitive to the extent defined by RFC 1521. + +``` +Content-Type = "Content-Type" SEPARATOR rfc1521-type +rfc1521-type = +``` + +### Date + +The date and time when the block was generated. The dates MUST comply with +section 3.3 of [RFC 2616][rfc2616], but [RFC 1123][rfc1123] compliance is +RECOMMENDED. +The value of this field is case-sensitive to the extent defined by RFC 2616. + +``` +Date = "Date" SEPARATOR rfc2616-date CRLF +rfc2616-date = +``` + +### Title + +The title of the document. + +``` +Title = "Title" SEPARATOR TOKEN CRLF +``` + +### Author-Name + +Name of the author of the document. + +``` +Author-Name = "Author-Name" SEPARATOR TOKEN CRLF +``` + +### Expires + +Expiration date for the block. The dates MUST comply with section 3.3 of +[RFC 2616][rfc2616], but [RFC 1123][rfc1123] compliance is RECOMMENDED. +The value of this field is case-sensitive to the extent defined by RFC 2616. + +``` +Expires = "Expires" SEPARATOR rfc2616-date CRLF +``` + +### Expire + +Alias for the `Expires` field, included for backwards compatibility. + +``` +Expire = "Expire" SEPARATOR rfc2616-date CRLF +``` + +### Last-Modified + +Date and time when the document was last updated. The dates MUST comply with +section 3.3 of [RFC 2616][rfc2616], but [RFC 1123][rfc1123] compliance is +RECOMMENDED. +The value of this field is case-sensitive to the extent defined by RFC 2616. + +``` +Last-Modified = "Last-Modified" SEPARATOR rfc2616-date CRLF +``` + +### Last-Modified-Detected + +Date and time representing when the user agent retrieved the document's +metadata. The dates MUST comply with section 3.3 of [RFC 2616][rfc2616], but +[RFC 1123][rfc1123] compliance is RECOMMENDED. +The value of this field is case-sensitive to the extent defined by RFC 2616. + +``` +Last-Modified-Detected = "Last-Modified-Detected" SEPARATOR rfc2616-date CRLF +``` + +### Server + +User agent string of the server used to retrieve the metadata of the document +described by this entity block. + +``` +Server = "Server" SEPARATOR TOKEN CRLF +``` + +### Authorized + +The user agent that retrieved the metadata of the document described by this +entity block. + +``` +Authorized = "Authorized" SEPARATOR TOKEN CRLF +``` + +### Authorized-url + +URL of a page describing the user agent referred to in the `Authorized` field, +compliant with [RFC 2396][rfc2396]. +The value of this field is case-sensitive to the extent defined by RFC 2396. + +``` +Authorized-url = "Authorized-url" SEPARATOR rfc2396-url CRLF +``` + +### Method + +To be determined. Example: `Method: REMOTE/GET/200` + +### Keyword + +Words that can be used to give an overview of the document described by this +entity block; tags, categories, etc. The value of this field is case-sensitive. + +``` +Keyword = "Keyword" SEPARATOR keywords CRLF +keywords = TOKEN *(SEPARATOR TOKEN) +``` + +### Experimental fields + +Implementations MAY define custom fields with an X- prefix to provide +additional metadata not covered in this specification. Implementations MUST NOT +assume that all clients will use each of those fields. Clients that do not +support any experimental field SHOULD ignore them. + +``` +Experimental-field = x-field-name SEPARATOR TOKEN +x-field-name = "X-" WORD *("-" WORD) +``` + +### Undefined fields + +Any field that is not defined in this specification. Implementations that +encounter such fields and do not support them SHOULD ignore them. + +``` +Undefined-field = undef-field-name SEPARATOR TOKEN CRLF +undef-field-name = WORD *("-" WORD) +``` + +## Propagation + +In Hina-Di, metadata propagation consists in acquiring metadata from other +agents, then sharing it as it is in the user agent's own Hina-Di file. This can +be used for aggregation services or a peer-to-peer network. + +The `Authorized` and `Authorized-url` fields allow indicating the user agent +from which the metadata originally came from to help ensure its legitimacy. +Propagating MUST only be performed if both fields are defined and if the user +agent is trusted. + +When propagating, all fields of an entity block defined in this specification, +with the exception of experimental and undefined fields, MUST be reproduced +without modification. Propagating experimental or undefined fields is not +guaranteed. A header block MUST NOT be propagated. + +The `Method` field MUST be processed according to the process described in the +Method section. + +[antenna]: http://masshy.fastwave.gr.jp/hina/release/ +[rfc822]: https://tools.ietf.org/html/rfc822 +[rfc1123]: https://tools.ietf.org/html/rfc1123 +[rfc1521]: https://tools.ietf.org/html/rfc1521 +[rfc2119]: https://tools.ietf.org/html/rfc2119 +[rfc2396]: https://tools.ietf.org/html/rfc2396 +[rfc2616]: https://tools.ietf.org/html/rfc2616 +[rfc8174]: https://tools.ietf.org/html/rfc8174 diff --git a/content/hina/specs/0.7.md b/content/hina/specs/0.7.md new file mode 100644 index 0000000..fdd3f5d --- /dev/null +++ b/content/hina/specs/0.7.md @@ -0,0 +1,347 @@ +--- +title: Asahina Antenna Metadata Format (HINA) 2.2, rev. 0.7 +date: September 24, 2000 +toc: true +--- + +> This document is an unofficial English translation of the original Japanese +> specification made by someone who has no knowledge of Japanese. Implement at +> your own risk. + +## Overview + +This document describes Hina-Di, the metadata format used by [Asahina +Antenna][antenna]. In this document, "metadata" is defined as data on a webpage +such as its last update time or its author. Asahina Antenna acts as a feed +reader for Hina-Di. + +## Conventions used in this document + +This document uses the Backus-Naur notation ([RFC 822][rfc822]) to formally +specify the format. + +The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", +"SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this +document are to be interpreted as described in BCP 14 ([RFC 2119][rfc2119], +[RFC 8174][rfc8174]) when, and only when, they appear in all capitals, as shown +here. + +## Data Types + +The basic data types that constitute Hina-Di are listed below. The US-ASCII +character set is defined by 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) +``` + +## Structure + +A Hina-Di file consists of a series of blocks that summarize the metadata on a +website: a header block, followed by one or more entity blocks. + +``` +hina-di = header-block + 1*( entity-block ) +``` + +### Block + +A block is a set of metadata for a document. Each metadata is represented as a +single header, in a manner similar to [RFC 822][rfc822], with a field name and a +field value. Field names are case-sensitive. Field values may be +case-sensitive, depending on the field. + +``` +line-format = field-name SEPARATOR field-value CRLF +field-name = WORD *( "-" WORD) +field-value = TOKEN +``` + +### Header block + +Exactly one header block MUST appear in a Hina-Di file, and it MUST be the +first block. It holds metadata about the Hina-Di file itself. + +``` +header-block = HINA + Hinadi-Header + CRLF +Hinadi-Header = 1*( User-Agent + | Content-Type + | Date ) +``` + +### Entity block + +One or more entity blocks MUST be present after the header block. Each entity +block defines metadata about a specific document. + +``` +Entity-block = 1*( URL + | HINA-Version + | Content-Type + | Date + | Title + | Author-Name + | Expires + | Expire + | Last-Modified + | Last-Modified-Detected + | Server + | Authorized + | Authorized-url + | Method + | Keyword + | Experimental-field + | Undefined-field + CRLF ) +``` + +## Fields + +This section defines the various fields that may be found in blocks. +All fields are OPTIONAL and case-insensitive unless otherwise specified. + +### HINA + +Indicates that this is a Hina-Di file, and includes its version. +This field is REQUIRED as the first field of Hina-Di files. + +``` +HINA = "HINA" "/" hinadi-version CRLF +hinadi-version = "2.2" +``` + +### User-Agent + +Name of the user agent that created this Hina-Di file. +This field is REQUIRED in header blocks. +The value of this field is case-sensitive. + +``` +User-Agent = "User-Agent" SEPARATOR TOKEN CRLF +``` + +### URL + +URL of the document, compliant with [RFC 2396][rfc2396]. +This field is REQUIRED in entity blocks. +Making this field the first field of an entity block is RECOMMENDED. +The value of this field is case-sensitive to the extent defined by RFC 2396. + +``` +URL = "URL" SEPARATOR rfc2396-url CRLF +rfc2396-url = +``` + +### HINA-Version + +Specifies that the integrity of the entity block was guaranteed according to +the specification of a specific Hina-Di version. +If this field is missing from an entity block, it means the block might be +incomplete. + +``` +HINA-Version = "HINA-Version" SEPARATOR version +version = "HINA" "/" 1*( DIGIT ) "." 1*( DIGIT ) +``` + +### Content-Type + +MIME type of the Hina-Di file or the document, as described in +[RFC 1521][rfc1521]. +The value of this field is case-sensitive to the extent defined by RFC 1521. + +``` +Content-Type = "Content-Type" SEPARATOR rfc1521-type +rfc1521-type = +``` + +### Date + +The date and time when the block was generated. The dates MUST comply with +section 3.3 of [RFC 2616][rfc2616], but [RFC 1123][rfc1123] compliance is +RECOMMENDED. +The value of this field is case-sensitive to the extent defined by RFC 2616. + +``` +Date = "Date" SEPARATOR rfc2616-date CRLF +rfc2616-date = +``` + +### Title + +The title of the document. + +``` +Title = "Title" SEPARATOR TOKEN CRLF +``` + +### Author-Name + +Name of the author of the document. + +``` +Author-Name = "Author-Name" SEPARATOR TOKEN CRLF +``` + +### Expires + +Expiration date for the block. The dates MUST comply with section 3.3 of +[RFC 2616][rfc2616], but [RFC 1123][rfc1123] compliance is RECOMMENDED. +The value of this field is case-sensitive to the extent defined by RFC 2616. + +``` +Expires = "Expires" SEPARATOR rfc2616-date CRLF +``` + +### Expire + +Alias for the `Expires` field, included for backwards compatibility. + +``` +Expire = "Expire" SEPARATOR rfc2616-date CRLF +``` + +### Last-Modified + +Date and time when the document was last updated. The dates MUST comply with +section 3.3 of [RFC 2616][rfc2616], but [RFC 1123][rfc1123] compliance is +RECOMMENDED. +The value of this field is case-sensitive to the extent defined by RFC 2616. + +``` +Last-Modified = "Last-Modified" SEPARATOR rfc2616-date CRLF +``` + +### Last-Modified-Detected + +Date and time representing when the user agent retrieved the document's +metadata. The dates MUST comply with section 3.3 of [RFC 2616][rfc2616], but +[RFC 1123][rfc1123] compliance is RECOMMENDED. +The value of this field is case-sensitive to the extent defined by RFC 2616. + +``` +Last-Modified-Detected = "Last-Modified-Detected" SEPARATOR rfc2616-date CRLF +``` + +### Server + +User agent string of the server used to retrieve the metadata of the document +described by this entity block. + +``` +Server = "Server" SEPARATOR TOKEN CRLF +``` + +### Authorized + +The user agent that retrieved the metadata of the document described by this +entity block. + +``` +Authorized = "Authorized" SEPARATOR TOKEN CRLF +``` + +### Authorized-url + +URL of a page describing the user agent referred to in the `Authorized` field, +compliant with [RFC 2396][rfc2396]. +The value of this field is case-sensitive to the extent defined by RFC 2396. + +``` +Authorized-url = "Authorized-url" SEPARATOR rfc2396-url CRLF +``` + +### Method + +To be determined. Example: `Method: REMOTE/GET/200` + +### Keyword + +Words that can be used to give an overview of the document described by this +entity block; tags, categories, etc. The value of this field is case-sensitive. + +``` +Keyword = "Keyword" SEPARATOR keywords CRLF +keywords = TOKEN *(SEPARATOR TOKEN) +``` + +### Experimental fields + +Implementations MAY define custom fields with an X- prefix to provide +additional metadata not covered in this specification. Implementations MUST NOT +assume that all clients will use each of those fields. Clients that do not +support any experimental field SHOULD ignore them. + +``` +Experimental-field = x-field-name SEPARATOR TOKEN +x-field-name = "X-" WORD *("-" WORD) +``` + +### Undefined fields + +Any field that is not defined in this specification. Implementations that +encounter such fields and do not support them SHOULD ignore them. + +``` +Undefined-field = undef-field-name SEPARATOR TOKEN CRLF +undef-field-name = WORD *("-" WORD) +``` + +## Encoding + +The character encoding of the Hina-Di file SHOULD be specified as a parameter +of the `Content-Type` field of the header block. If it is not specified, +it defaults to `EUC-JP`. + +## Propagation + +In Hina-Di, metadata propagation consists in acquiring metadata from other +agents, then sharing it as it is in the user agent's own Hina-Di file. +This can be used for aggregation services or a peer-to-peer network. + +The `Authorized` and `Authorized-url` fields allow indicating the user agent +from which the metadata originally came from to help ensure its legitimacy. +Propagating MUST only be performed if both fields are defined and if the user +agent is trusted. + +When propagating, all fields of an entity block defined in this specification, +with the exception of experimental and undefined fields, MUST be reproduced +without modification. Propagating experimental or undefined fields is not +guaranteed. A header block MUST NOT be propagated. + +The `Method` field MUST be processed according to the process described in the +Method section. + +[antenna]: http://masshy.fastwave.gr.jp/hina/release/ +[rfc822]: https://tools.ietf.org/html/rfc822 +[rfc1123]: https://tools.ietf.org/html/rfc1123 +[rfc1521]: https://tools.ietf.org/html/rfc1521 +[rfc2119]: https://tools.ietf.org/html/rfc2119 +[rfc2396]: https://tools.ietf.org/html/rfc2396 +[rfc2616]: https://tools.ietf.org/html/rfc2616 +[rfc8174]: https://tools.ietf.org/html/rfc8174 diff --git a/content/hina/specs/0.8.md b/content/hina/specs/0.8.md new file mode 100644 index 0000000..86840ba --- /dev/null +++ b/content/hina/specs/0.8.md @@ -0,0 +1,367 @@ +--- +title: Asahina Antenna Metadata Format (HINA) 2.2, rev. 0.8 +date: September 30, 2000 +toc: true +--- + +> This document is an unofficial English translation of the original Japanese +> specification made by someone who has no knowledge of Japanese. Implement at +> your own risk. + +## Overview + +This document describes Hina-Di, the metadata format used by [Asahina +Antenna][antenna]. In this document, "metadata" is defined as data on a webpage +such as its last update time or its author. Asahina Antenna acts as a feed +reader for Hina-Di. + +## Conventions used in this document + +This document uses the Backus-Naur notation ([RFC 822][rfc822]) to formally +specify the format. + +The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", +"SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this +document are to be interpreted as described in BCP 14 ([RFC 2119][rfc2119], +[RFC 8174][rfc8174]) when, and only when, they appear in all capitals, as shown +here. + +## Data Types + +The basic data types that constitute Hina-Di are listed below. The US-ASCII +character set is defined by ANSI X3.4-1986. + +``` +OCTET = +CHAR = +UPALPHA = +LOALPHA = +ALPHA = UPALPHA | LOALPHA +DIGIT = +WORD = 1*(ALPHA|DIGIT) + +CTL = +CR = +LF = +SP = +HT = +<"> = + +CRLF = CR LF + +TEXT = +TOKEN = + +SEPARATOR = ":" 1*(SP|HT) +DELIMITER = "," *(SP|HT) +``` + +## Structure + +A Hina-Di file consists of a series of blocks that summarize the metadata on a +website: a header block, followed by one or more entity blocks. + +``` +hina-di = header-block + 1*( entity-block ) +``` + +### Block + +A block is a set of metadata for a document. Each metadata is represented as a +single header, in a manner similar to [RFC 822][rfc822], with a field name and a +field value. Field names are case-sensitive. Field values may be +case-sensitive, depending on the field. + +``` +line-format = field-name SEPARATOR field-value CRLF +field-name = WORD *( "-" WORD) +field-value = TOKEN +``` + +### Header block + +Exactly one header block MUST appear in a Hina-Di file, and it MUST be the +first block. It holds metadata about the Hina-Di file itself. + +``` +header-block = HINA + Hinadi-Header + CRLF +Hinadi-Header = 1*( User-Agent + | Content-Type + | Date ) +``` + +### Entity block + +One or more entity blocks MUST be present after the header block. Each entity +block defines metadata about a specific document. + +``` +Entity-block = 1*( URL + | HINA-Version + | Virtual + | Content-Type + | Date + | Title + | Author-Name + | Expires + | Expire + | Last-Modified + | Last-Modified-Detected + | Server + | Authorized + | Authorized-url + | Method + | Keyword + | Experimental-field + | Undefined-field + CRLF ) +``` + +## Fields + +This section defines the various fields that may be found in blocks. +All fields are OPTIONAL and case-insensitive unless otherwise specified. + +### HINA + +Indicates that this is a Hina-Di file, and includes its version. +This field is REQUIRED as the first field of Hina-Di files. + +``` +HINA = "HINA" "/" hinadi-version CRLF +hinadi-version = "2.2" +``` + +### User-Agent + +Name of the user agent that created this Hina-Di file. +This field is REQUIRED in header blocks. +The value of this field is case-sensitive. + +``` +User-Agent = "User-Agent" SEPARATOR TOKEN CRLF +``` + +### URL + +URL of the document, compliant with [RFC 2396][rfc2396]. +This field is REQUIRED in entity blocks. +Making this field the first field of an entity block is RECOMMENDED. +The value of this field is case-sensitive to the extent defined by RFC 2396. + +``` +URL = "URL" SEPARATOR rfc2396-url CRLF +rfc2396-url = +``` + +### HINA-Version + +Specifies that the integrity of the entity block was guaranteed according to +the specification of a specific Hina-Di version. +If this field is missing from an entity block, it means the block might be +incomplete. + +``` +HINA-Version = "HINA-Version" SEPARATOR version +version = "HINA" "/" 1*( DIGIT ) "." 1*( DIGIT ) +``` + +### Virtual + +URL of another Hina-Di file that holds the entity block, compliant with +[RFC 2396][rfc2396]. + +If there are fields in the entity block other than `Virtual`, then it takes the +same meaning as the regular `URL` field. + +The value of this field is case-sensitive to the extent defined by RFC 2396. + +Both `Virtual` and `URL` MUST NOT be defined simultaneously. + +``` +Virtual = "URL" SEPARATOR rfc2396-url CRLF +rfc2396-url = +``` + +### Content-Type + +MIME type of the Hina-Di file or the document, as described in +[RFC 1521][rfc1521]. +The value of this field is case-sensitive to the extent defined by RFC 1521. + +``` +Content-Type = "Content-Type" SEPARATOR rfc1521-type +rfc1521-type = +``` + +### Date + +The date and time when the block or the Hina-Di file was generated. +The dates MUST comply with section 3.3 of [RFC 2616][rfc2616], but +[RFC 1123][rfc1123] compliance is RECOMMENDED. +The value of this field is case-sensitive to the extent defined by RFC 2616. + +``` +Date = "Date" SEPARATOR rfc2616-date CRLF +rfc2616-date = +``` + +### Title + +The title of the document. + +``` +Title = "Title" SEPARATOR TOKEN CRLF +``` + +### Author-Name + +Name of the author of the document. +The value of this field is case-sensitive. + +``` +Author-Name = "Author-Name" SEPARATOR TOKEN CRLF +``` + +### Expires + +Expiration date for the block. The dates MUST comply with section 3.3 of +[RFC 2616][rfc2616], but [RFC 1123][rfc1123] compliance is RECOMMENDED. +The value of this field is case-sensitive to the extent defined by RFC 2616. + +``` +Expires = "Expires" SEPARATOR rfc2616-date CRLF +``` + +### Expire + +Alias for the `Expires` field, included for backwards compatibility. + +``` +Expire = "Expire" SEPARATOR rfc2616-date CRLF +``` + +### Last-Modified + +Date and time when the document was last updated. The dates MUST comply with +section 3.3 of [RFC 2616][rfc2616], but [RFC 1123][rfc1123] compliance is +RECOMMENDED. +The value of this field is case-sensitive to the extent defined by RFC 2616. + +``` +Last-Modified = "Last-Modified" SEPARATOR rfc2616-date CRLF +``` + +### Last-Modified-Detected + +Date and time representing when the user agent retrieved the document's +metadata. The dates MUST comply with section 3.3 of [RFC 2616][rfc2616], but +[RFC 1123][rfc1123] compliance is RECOMMENDED. +The value of this field is case-sensitive to the extent defined by RFC 2616. + +``` +Last-Modified-Detected = "Last-Modified-Detected" SEPARATOR rfc2616-date CRLF +``` + +### Server + +User agent string of the server used to retrieve the metadata of the document +described by this entity block. + +``` +Server = "Server" SEPARATOR TOKEN CRLF +``` + +### Authorized + +The user agent that retrieved the metadata of the document described by this +entity block. + +``` +Authorized = "Authorized" SEPARATOR TOKEN CRLF +``` + +### Authorized-url + +URL of a page describing the user agent referred to in the `Authorized` field, +compliant with [RFC 2396][rfc2396]. +The value of this field is case-sensitive to the extent defined by RFC 2396. + +``` +Authorized-url = "Authorized-url" SEPARATOR rfc2396-url CRLF +``` + +### Method + +To be determined. Example: `Method: REMOTE/GET/200` + +### Keyword + +Words that can be used to give an overview of the document described by this +entity block; tags, categories, etc. The value of this field is case-sensitive. + +``` +Keyword = "Keyword" SEPARATOR keywords CRLF +keywords = TOKEN *(SEPARATOR TOKEN) +``` + +### Experimental fields + +Implementations MAY define custom fields with an X- prefix to provide +additional metadata not covered in this specification. Implementations MUST NOT +assume that all clients will use each of those fields. Clients that do not +support any experimental field SHOULD ignore them. + +``` +Experimental-field = x-field-name SEPARATOR TOKEN +x-field-name = "X-" WORD *("-" WORD) +``` + +### Undefined fields + +Any field that is not defined in this specification. Implementations that +encounter such fields and do not support them SHOULD ignore them. + +``` +Undefined-field = undef-field-name SEPARATOR TOKEN CRLF +undef-field-name = WORD *("-" WORD) +``` + +## Encoding + +The character encoding of the Hina-Di file SHOULD be specified as a parameter +of the `Content-Type` field of the header block. If it is not specified, +it defaults to `EUC-JP`. + +## Propagation + +In Hina-Di, metadata propagation consists in acquiring metadata from other +agents, then sharing it as it is in the user agent's own Hina-Di file. +This can be used for aggregation services or a peer-to-peer network. + +The `Authorized` and `Authorized-url` fields allow indicating the user agent +from which the metadata originally came from to help ensure its legitimacy. +Propagating MUST only be performed if both fields are defined and if the user +agent is trusted. + +When propagating, all fields of an entity block defined in this specification, +with the exception of experimental and undefined fields or of fields with empty +values, MUST be reproduced without modification. +Propagating experimental or undefined fields is not guaranteed. +A header block, or any field that is part of it, MUST NOT be propagated. + +The `Method` field MUST be processed according to the process described in the +Method section. + +[antenna]: http://masshy.fastwave.gr.jp/hina/release/ +[rfc822]: https://tools.ietf.org/html/rfc822 +[rfc1123]: https://tools.ietf.org/html/rfc1123 +[rfc1521]: https://tools.ietf.org/html/rfc1521 +[rfc2119]: https://tools.ietf.org/html/rfc2119 +[rfc2396]: https://tools.ietf.org/html/rfc2396 +[rfc2616]: https://tools.ietf.org/html/rfc2616 +[rfc8174]: https://tools.ietf.org/html/rfc8174 diff --git a/content/hina/specs/0.9.md b/content/hina/specs/0.9.md new file mode 100644 index 0000000..f50fe7b --- /dev/null +++ b/content/hina/specs/0.9.md @@ -0,0 +1,368 @@ +--- +title: Asahina Antenna Metadata Format (HINA) 2.2, rev. 0.9 +date: October 5, 2000 +toc: true +--- + +> This document is an unofficial English translation of the original Japanese +> specification made by someone who has no knowledge of Japanese. Implement at +> your own risk. + +## Overview + +This document describes Hina-Di, the metadata format used by [Asahina +Antenna][antenna]. In this document, "metadata" is defined as data on a webpage +such as its last update time or its author. Asahina Antenna acts as a feed +reader for Hina-Di. + +## Conventions used in this document + +This document uses the Backus-Naur notation ([RFC 822][rfc822]) to formally +specify the format. + +The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", +"SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this +document are to be interpreted as described in BCP 14 ([RFC 2119][rfc2119], +[RFC 8174][rfc8174]) when, and only when, they appear in all capitals, as shown +here. + +## Data Types + +The basic data types that constitute Hina-Di are listed below. The US-ASCII +character set is defined by ANSI X3.4-1986. + +``` +OCTET = +CHAR = +UPALPHA = +LOALPHA = +ALPHA = UPALPHA | LOALPHA +DIGIT = +WORD = 1*(ALPHA|DIGIT) + +CTL = +CR = +LF = +SP = +HT = +<"> = + +CRLF = CR LF + +TEXT = +TOKEN = + +SEPARATOR = ":" 1*(SP|HT) +DELIMITER = "," *(SP|HT) +``` + +## Structure + +A Hina-Di file consists of a series of blocks that summarize the metadata on a +website: a header block, followed by one or more entity blocks. + +``` +hina-di = header-block + 1*( entity-block ) +``` + +### Block + +A block is a set of metadata for a document. Each metadata is represented as a +single header, in a manner similar to [RFC 822][rfc822], with a field name and a +field value. Field names are case-sensitive. Field values may be +case-sensitive, depending on the field. + +``` +line-format = field-name SEPARATOR field-value CRLF +field-name = WORD *( "-" WORD) +field-value = TOKEN +``` + +### Header block + +Exactly one header block MUST appear in a Hina-Di file, and it MUST be the +first block. It holds metadata about the Hina-Di file itself. + +``` +header-block = HINA + Hinadi-Header + CRLF +Hinadi-Header = 1*( User-Agent + | Content-Type + | Date ) +``` + +### Entity block + +One or more entity blocks MUST be present after the header block. Each entity +block defines metadata about a specific document. + +``` +Entity-block = 1*( URL + | HINA-Version + | Virtual + | Content-Type + | Date + | Title + | Author-Name + | Expires + | Expire + | Last-Modified + | Last-Modified-Detected + | Server + | Authorized + | Authorized-url + | Method + | Keyword + | Experimental-field + | Undefined-field + CRLF ) +``` + +## Fields + +This section defines the various fields that may be found in blocks. +All fields are OPTIONAL and case-insensitive unless otherwise specified. + +### HINA + +Indicates that this is a Hina-Di file, and includes its version. +This field is REQUIRED as the first field of Hina-Di files. + +``` +HINA = "HINA" "/" hinadi-version CRLF +hinadi-version = "2.2" +``` + +### User-Agent + +Name of the user agent that created this Hina-Di file. +This field is REQUIRED in header blocks. +The value of this field is case-sensitive. + +``` +User-Agent = "User-Agent" SEPARATOR TOKEN CRLF +``` + +### URL + +URL of the document, compliant with [RFC 2396][rfc2396]. +This field is REQUIRED in entity blocks. +Making this field the first field of an entity block is RECOMMENDED. +The value of this field is case-sensitive to the extent defined by RFC 2396. + +``` +URL = "URL" SEPARATOR rfc2396-url CRLF +rfc2396-url = +``` + +### HINA-Version + +Specifies that the integrity of the entity block was guaranteed according to +the specification of a specific Hina-Di version. +If this field is missing from an entity block, it means the block might be +incomplete. + +``` +HINA-Version = "HINA-Version" SEPARATOR version +version = "HINA" "/" 1*( DIGIT ) "." 1*( DIGIT ) +``` + +### Virtual + +URL of another Hina-Di file that holds the entity block, compliant with +[RFC 2396][rfc2396]. + +If there are fields in the entity block other than `Virtual`, then it takes the +same meaning as the regular `URL` field. + +The value of this field is case-sensitive to the extent defined by RFC 2396. + +``` +Virtual = "Virtual" SEPARATOR rfc2396-url CRLF +rfc2396-url = +``` + +> Note that the original version of the document defines the `Virtual` feed +> as `Vitural`. + +### Content-Type + +MIME type of the Hina-Di file or the document, as described in +[RFC 1521][rfc1521]. +The value of this field is case-sensitive to the extent defined by RFC 1521. + +``` +Content-Type = "Content-Type" SEPARATOR rfc1521-type +rfc1521-type = +``` + +### Date + +The date and time when the block or the Hina-Di file was generated. +The dates MUST comply with section 3.3 of [RFC 2616][rfc2616], but +[RFC 1123][rfc1123] compliance is RECOMMENDED. +The value of this field is case-sensitive to the extent defined by RFC 2616. + +``` +Date = "Date" SEPARATOR rfc2616-date CRLF +rfc2616-date = +``` + +### Title + +The title of the document. + +``` +Title = "Title" SEPARATOR TOKEN CRLF +``` + +### Author-Name + +Name of the author of the document. +The value of this field is case-sensitive. + +``` +Author-Name = "Author-Name" SEPARATOR TOKEN CRLF +``` + +### Expires + +Expiration date for the block. The dates MUST comply with section 3.3 of +[RFC 2616][rfc2616], but [RFC 1123][rfc1123] compliance is RECOMMENDED. +The value of this field is case-sensitive to the extent defined by RFC 2616. + +``` +Expires = "Expires" SEPARATOR rfc2616-date CRLF +``` + +### Expire + +Alias for the `Expires` field, included for backwards compatibility. + +``` +Expire = "Expire" SEPARATOR rfc2616-date CRLF +``` + +### Last-Modified + +Date and time when the document was last updated. The dates MUST comply with +section 3.3 of [RFC 2616][rfc2616], but [RFC 1123][rfc1123] compliance is +RECOMMENDED. +The value of this field is case-sensitive to the extent defined by RFC 2616. + +``` +Last-Modified = "Last-Modified" SEPARATOR rfc2616-date CRLF +``` + +### Last-Modified-Detected + +Date and time representing when the user agent retrieved the document's +metadata. The dates MUST comply with section 3.3 of [RFC 2616][rfc2616], but +[RFC 1123][rfc1123] compliance is RECOMMENDED. +The value of this field is case-sensitive to the extent defined by RFC 2616. + +``` +Last-Modified-Detected = "Last-Modified-Detected" SEPARATOR rfc2616-date CRLF +``` + +### Server + +User agent string of the server used to retrieve the metadata of the document +described by this entity block. + +``` +Server = "Server" SEPARATOR TOKEN CRLF +``` + +### Authorized + +The user agent that retrieved the metadata of the document described by this +entity block. + +``` +Authorized = "Authorized" SEPARATOR TOKEN CRLF +``` + +### Authorized-url + +URL of a page describing the user agent referred to in the `Authorized` field, +compliant with [RFC 2396][rfc2396]. +The value of this field is case-sensitive to the extent defined by RFC 2396. + +``` +Authorized-url = "Authorized-url" SEPARATOR rfc2396-url CRLF +``` + +### Method + +To be determined. Example: `Method: REMOTE/GET/200` + +### Keyword + +Words that can be used to give an overview of the document described by this +entity block; tags, categories, etc. The value of this field is case-sensitive. + +``` +Keyword = "Keyword" SEPARATOR keywords CRLF +keywords = TOKEN *(SEPARATOR TOKEN) +``` + +### Experimental fields + +Implementations MAY define custom fields with an X- prefix to provide +additional metadata not covered in this specification. Implementations MUST NOT +assume that all clients will use each of those fields. Clients that do not +support any experimental field SHOULD ignore them. + +``` +Experimental-field = x-field-name SEPARATOR TOKEN +x-field-name = "X-" WORD *("-" WORD) +``` + +### Undefined fields + +Any field that is not defined in this specification. Implementations that +encounter such fields and do not support them SHOULD ignore them. + +``` +Undefined-field = undef-field-name SEPARATOR TOKEN CRLF +undef-field-name = WORD *("-" WORD) +``` + +## Encoding + +The character encoding of the Hina-Di file SHOULD be specified as a parameter +of the `Content-Type` field of the header block. If it is not specified, +it defaults to `EUC-JP`. + +## Propagation + +In Hina-Di, metadata propagation consists in acquiring metadata from other +agents, then sharing it as it is in the user agent's own Hina-Di file. +This can be used for aggregation services or a peer-to-peer network. + +The `Authorized` and `Authorized-url` fields allow indicating the user agent +from which the metadata originally came from to help ensure its legitimacy. +Propagating MUST only be performed if both fields are defined and if the user +agent is trusted. + +When propagating, all fields of an entity block defined in this specification, +with the exception of experimental and undefined fields or of fields with empty +values, MUST be reproduced without modification. +Propagating experimental or undefined fields is not guaranteed. +A header block, or any field that is part of it, MUST NOT be propagated. + +The `Method` field MUST be processed according to the process described in the +Method section. + +[antenna]: http://masshy.fastwave.gr.jp/hina/release/ +[rfc822]: https://tools.ietf.org/html/rfc822 +[rfc1123]: https://tools.ietf.org/html/rfc1123 +[rfc1521]: https://tools.ietf.org/html/rfc1521 +[rfc2119]: https://tools.ietf.org/html/rfc2119 +[rfc2396]: https://tools.ietf.org/html/rfc2396 +[rfc2616]: https://tools.ietf.org/html/rfc2616 +[rfc8174]: https://tools.ietf.org/html/rfc8174