Add translated Hina specification

This commit is contained in:
~lucidiot 2021-03-27 18:20:48 +01:00
parent 2594b8fe3f
commit 8c44bca678
23 changed files with 3658 additions and 0 deletions

4
assets/hina/README.md Normal file
View File

@ -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.

Binary file not shown.

BIN
assets/hina/fw_logo1.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
assets/hina/normal.css Normal file

Binary file not shown.

135
content/hina/index.md Normal file
View File

@ -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/

425
content/hina/specs/0.10.md Normal file
View File

@ -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 = <any 8-bit sequence of data>
CHAR = <any US-ASCII character (octets 0 - 127)>
UPALPHA = <any US-ASCII uppercase letter "A".."Z">
LOALPHA = <any US-ASCII lowercase letter "a".."z">
ALPHA = UPALPHA | LOALPHA
DIGIT = <any US-ASCII digit "0".."9">
WORD = 1*(ALPHA|DIGIT)
CTL = <any US-ASCII control character (octets 0 - 31) and DEL (127)>
CR = <US-ASCII CR, carriage return (13)>
LF = <US-ASCII LF, linefeed (10)>
SP = <US-ASCII SP, space (32)>
HT = <US-ASCII HT, horizontal-tab (9)>
<"> = <US-ASCII double-quote mark (34)>
CRLF = CR LF
TEXT = <any OCTET except CTLs, but including HT>
TOKEN = <any TEXT, but don't start with SP or HT>
SEPARATOR = ":" 1*(SP|HT)
DELIMITER = "," *(SP|HT)
SLASH = "/" *(SP|HT)
```
## 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 = <URI described in section 5.1.2 "Request-URI" in RFC 2396>
```
### 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 = <URI described in section 5.1.2 "Request-URI" in RFC 2396>
```
> 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 = <Content-Type as described in RFC 1521>
```
### 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 = <rfc1123-date described in section 3.3 "Date/Time Formats" in RFC 2616>
```
### 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 = <URI described on "???????" in RFC 2396>
```
#### 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

425
content/hina/specs/0.11.md Normal file
View File

@ -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 = <any 8-bit sequence of data>
CHAR = <any US-ASCII character (octets 0 - 127)>
UPALPHA = <any US-ASCII uppercase letter "A".."Z">
LOALPHA = <any US-ASCII lowercase letter "a".."z">
ALPHA = UPALPHA | LOALPHA
DIGIT = <any US-ASCII digit "0".."9">
WORD = 1*(ALPHA|DIGIT)
CTL = <any US-ASCII control character (octets 0 - 31) and DEL (127)>
CR = <US-ASCII CR, carriage return (13)>
LF = <US-ASCII LF, linefeed (10)>
SP = <US-ASCII SP, space (32)>
HT = <US-ASCII HT, horizontal-tab (9)>
<"> = <US-ASCII double-quote mark (34)>
CRLF = CR LF
TEXT = <any OCTET except CTLs, but including HT>
TOKEN = <any TEXT, but don't start with SP or HT>
SEPARATOR = ":" 1*(SP|HT)
DELIMITER = "," *(SP|HT)
SLASH = "/" *(SP|HT)
```
## 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 = <URI described in section 5.1.2 "Request-URI" in RFC 2396>
```
### 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 = <URI described in section 5.1.2 "Request-URI" in RFC 2396>
```
> 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 = <Content-Type as described in RFC 1521>
```
### 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 = <rfc1123-date described in section 3.3 "Date/Time Formats" in RFC 2616>
```
### 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 = <URI described on "???????" in RFC 2396>
```
#### 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

447
content/hina/specs/0.12.md Normal file
View File

@ -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 = <any 8-bit sequence of data>
CHAR = <any US-ASCII character (octets 0 - 127)>
UPALPHA = <any US-ASCII uppercase letter "A".."Z">
LOALPHA = <any US-ASCII lowercase letter "a".."z">
ALPHA = UPALPHA | LOALPHA
DIGIT = <any US-ASCII digit "0".."9">
WORD = 1*(ALPHA|DIGIT)
CTL = <any US-ASCII control character (octets 0 - 31) and DEL (127)>
CR = <US-ASCII CR, carriage return (13)>
LF = <US-ASCII LF, linefeed (10)>
SP = <US-ASCII SP, space (32)>
HT = <US-ASCII HT, horizontal-tab (9)>
<"> = <US-ASCII double-quote mark (34)>
CRLF = CR LF
TEXT = <any OCTET except CTLs, but including HT>
TOKEN = <any TEXT, but don't start with SP or HT>
SEPARATOR = ":" 1*(SP|HT)
DELIMITER = "," *(SP|HT)
SLASH = "/" *(SP|HT)
```
## 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 = <URI described in section 5.1.2 "Request-URI" in RFC 2396>
```
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 = <URI described in section 5.1.2 "Request-URI" in RFC 2396>
```
> 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 = <Content-Type as described in RFC 1521>
```
### 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 = <rfc1123-date described in section 3.3 "Date/Time Formats" in RFC 2616>
```
### 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 = <URI described on "???????" in RFC 2396>
```
#### 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

491
content/hina/specs/0.13.md Normal file
View File

@ -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 = <any 8-bit sequence of data>
CHAR = <any US-ASCII character (octets 0 - 127)>
UPALPHA = <any US-ASCII uppercase letter "A".."Z">
LOALPHA = <any US-ASCII lowercase letter "a".."z">
ALPHA = UPALPHA | LOALPHA
DIGIT = <any US-ASCII digit "0".."9">
WORD = 1*(ALPHA|DIGIT)
CTL = <any US-ASCII control character (octets 0 - 31) and DEL (127)>
CR = <US-ASCII CR, carriage return (13)>
LF = <US-ASCII LF, linefeed (10)>
SP = <US-ASCII SP, space (32)>
HT = <US-ASCII HT, horizontal-tab (9)>
<"> = <US-ASCII double-quote mark (34)>
CRLF = CR LF
TEXT = <any OCTET except CTLs, but including HT>
TOKEN = <any TEXT, but don't start with SP or HT>
SEPARATOR = ":" 1*(SP|HT)
DELIMITER = "," *(SP|HT)
SLASH = "/" *(SP|HT)
```
## 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 = <URI described in section 5.1.2 "Request-URI" in RFC 2396>
```
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 = <URI described in section 5.1.2 "Request-URI" in RFC 2396>
```
> 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 = <a publicly-defined extension token,
registered with IANA, as specified in
appendix E of RFC1521>
x-token = <The two characters "X-" or "x-" followed, with
no intervening white space, by any token>
subtype = TOKEN
parameter = attribute "=" value
attribute = TOKEN ; case-insensitive
value = token / quoted-string
token = 1*<any (ASCII) CHAR except SPACE, CTLs or tspecials>
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 = <URI described on "???????" in RFC 2396>
```
#### 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

322
content/hina/specs/0.5.md Normal file
View File

@ -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 = <any 8-bit sequence of data>
CHAR = <any US-ASCII character (octets 0 - 127)>
UPALPHA = <any US-ASCII uppercase letter "A".."Z">
LOALPHA = <any US-ASCII lowercase letter "A".."Z">
ALPHA = UPALPHA | LOALPHA
DIGIT = <any US-ASCII digit "0".."9">
WORD = <1*(ALPHA|DIGIT) but excluding ":" and "-">
CTL = <any US-ASCII control character (octets 0 - 31) and DEL (127)>
CR = <US-ASCII CR, carriage return (13)>
LF = <US-ASCII LF, linefeed (10)>
SP = <US-ASCII SP, space (32)>
HT = <US-ASCII HT, horizontal-tab (9)>
<"> = <US-ASCII double-quote mark (34)>
CRLF = CR LF
TEXT = <any OCTET except CTLs, but including HT>
TOKEN = <any TEXT, but don't start with SP or HT>
SEPARATOR = ":" 1*( SP | HT )
DELIMITER = "," *(SP|HT)
```
## 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 = <URI described in section 5.1.2 "Request-URI" in RFC 2396>
```
### 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 = <Content-Type as described in RFC 1521>
```
### 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 = <Date described in section 3.3 "Date/Time Formats" in RFC 2616,
but RFC 1123 is recommended>
```
### 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

327
content/hina/specs/0.6.md Normal file
View File

@ -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 = <any 8-bit sequence of data>
CHAR = <any US-ASCII character (octets 0 - 127)>
UPALPHA = <any US-ASCII uppercase letter "A".."Z">
LOALPHA = <any US-ASCII lowercase letter "A".."Z">
ALPHA = UPALPHA | LOALPHA
DIGIT = <any US-ASCII digit "0".."9">
WORD = <1*(ALPHA|DIGIT) but excluding ":" and "-">
CTL = <any US-ASCII control character (octets 0 - 31) and DEL (127)>
CR = <US-ASCII CR, carriage return (13)>
LF = <US-ASCII LF, linefeed (10)>
SP = <US-ASCII SP, space (32)>
HT = <US-ASCII HT, horizontal-tab (9)>
<"> = <US-ASCII double-quote mark (34)>
CRLF = CR LF
TEXT = <any OCTET except CTLs, but including HT>
TOKEN = <any TEXT, but don't start with SP or HT>
SEPARATOR = ":" 1*( SP | HT )
DELIMITER = "," *(SP|HT)
```
## 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 = <URI described in section 5.1.2 "Request-URI" in RFC 2396>
```
### 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 = <Content-Type as described in RFC 1521>
```
### 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 = <Date described in section 3.3 "Date/Time Formats" in RFC 2616,
but RFC 1123 is recommended>
```
### 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

347
content/hina/specs/0.7.md Normal file
View File

@ -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 = <any 8-bit sequence of data>
CHAR = <any US-ASCII character (octets 0 - 127)>
UPALPHA = <any US-ASCII uppercase letter "A".."Z">
LOALPHA = <any US-ASCII lowercase letter "A".."Z">
ALPHA = UPALPHA | LOALPHA
DIGIT = <any US-ASCII digit "0".."9">
WORD = <1*(ALPHA|DIGIT) but excluding ":" and "-">
CTL = <any US-ASCII control character (octets 0 - 31) and DEL (127)>
CR = <US-ASCII CR, carriage return (13)>
LF = <US-ASCII LF, linefeed (10)>
SP = <US-ASCII SP, space (32)>
HT = <US-ASCII HT, horizontal-tab (9)>
<"> = <US-ASCII double-quote mark (34)>
CRLF = CR LF
TEXT = <any OCTET except CTLs, but including HT>
TOKEN = <any TEXT, but don't start with SP or HT>
SEPARATOR = ":" 1*( SP | HT )
DELIMITER = "," *(SP|HT)
```
## 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 = <URI described in section 5.1.2 "Request-URI" in RFC 2396>
```
### 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 = <Content-Type as described in RFC 1521>
```
### 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 = <Date described in section 3.3 "Date/Time Formats" in RFC 2616,
but RFC 1123 is recommended>
```
### 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

367
content/hina/specs/0.8.md Normal file
View File

@ -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 = <any 8-bit sequence of data>
CHAR = <any US-ASCII character (octets 0 - 127)>
UPALPHA = <any US-ASCII uppercase letter "A".."Z">
LOALPHA = <any US-ASCII lowercase letter "a".."z">
ALPHA = UPALPHA | LOALPHA
DIGIT = <any US-ASCII digit "0".."9">
WORD = 1*(ALPHA|DIGIT)
CTL = <any US-ASCII control character (octets 0 - 31) and DEL (127)>
CR = <US-ASCII CR, carriage return (13)>
LF = <US-ASCII LF, linefeed (10)>
SP = <US-ASCII SP, space (32)>
HT = <US-ASCII HT, horizontal-tab (9)>
<"> = <US-ASCII double-quote mark (34)>
CRLF = CR LF
TEXT = <any OCTET except CTLs, but including HT>
TOKEN = <any TEXT, but don't start with SP or HT>
SEPARATOR = ":" 1*(SP|HT)
DELIMITER = "," *(SP|HT)
```
## 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 = <URI described in section 5.1.2 "Request-URI" in RFC 2396>
```
### 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 = <URI described in section 5.1.2 "Request-URI" in RFC 2396>
```
### 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 = <Content-Type as described in RFC 1521>
```
### 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 = <Date described in section 3.3 "Date/Time Formats" in RFC 2616,
but RFC 1123 is recommended>
```
### 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

368
content/hina/specs/0.9.md Normal file
View File

@ -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 = <any 8-bit sequence of data>
CHAR = <any US-ASCII character (octets 0 - 127)>
UPALPHA = <any US-ASCII uppercase letter "A".."Z">
LOALPHA = <any US-ASCII lowercase letter "a".."z">
ALPHA = UPALPHA | LOALPHA
DIGIT = <any US-ASCII digit "0".."9">
WORD = 1*(ALPHA|DIGIT)
CTL = <any US-ASCII control character (octets 0 - 31) and DEL (127)>
CR = <US-ASCII CR, carriage return (13)>
LF = <US-ASCII LF, linefeed (10)>
SP = <US-ASCII SP, space (32)>
HT = <US-ASCII HT, horizontal-tab (9)>
<"> = <US-ASCII double-quote mark (34)>
CRLF = CR LF
TEXT = <any OCTET except CTLs, but including HT>
TOKEN = <any TEXT, but don't start with SP or HT>
SEPARATOR = ":" 1*(SP|HT)
DELIMITER = "," *(SP|HT)
```
## 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 = <URI described in section 5.1.2 "Request-URI" in RFC 2396>
```
### 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 = <URI described in section 5.1.2 "Request-URI" in RFC 2396>
```
> 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 = <Content-Type as described in RFC 1521>
```
### 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 = <Date described in section 3.3 "Date/Time Formats" in RFC 2616,
but RFC 1123 is recommended>
```
### 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