rfc7111v1.txt | rfc7111.txt | |||
---|---|---|---|---|
Independent Submission M. Hausenblas | Independent Submission M. Hausenblas | |||
Request for Comments: 7111 DERI, NUI Galway | Request for Comments: 7111 MapR Technologies | |||
Updates: 4180 E. Wilde | Updates: 4180 E. Wilde | |||
Category: Informational EMC Corporation | Category: Informational UC Berkeley | |||
ISSN: 2070-1721 J. Tennison | ISSN: 2070-1721 J. Tennison | |||
Open Data Institute | Open Data Institute | |||
January 2014 | January 2014 | |||
URI Fragment Identifiers for the text/csv Media Type | URI Fragment Identifiers for the text/csv Media Type | |||
Abstract | Abstract | |||
This memo defines URI fragment identifiers for text/csv MIME | This memo defines URI fragment identifiers for text/csv MIME | |||
entities. These fragment identifiers make it possible to refer to | entities. These fragment identifiers make it possible to refer to | |||
parts of a text/csv MIME entity identified by row, column, or cell. | parts of a text/csv MIME entity identified by row, column, or cell. | |||
Fragment identification can use single items or ranges. | Fragment identification can use single items or ranges. | |||
IESG Note | ||||
The change to the text/csv media type registration requires IESG | ||||
approval, as the IESG is the change controller for that registration. | ||||
The IESG has, after consultation with the IETF community, approved | ||||
the change, which is specified in Section 5 of this document. | ||||
Status of This Memo | Status of This Memo | |||
This document is not an Internet Standards Track specification; it is | This document is not an Internet Standards Track specification; it is | |||
published for informational purposes. | published for informational purposes. | |||
This is a contribution to the RFC Series, independently of any other | This is a contribution to the RFC Series, independently of any other | |||
RFC stream. The RFC Editor has chosen to publish this document at | RFC stream. The RFC Editor has chosen to publish this document at | |||
its discretion and makes no statement about its value for | its discretion and makes no statement about its value for | |||
implementation or deployment. Documents approved for publication by | implementation or deployment. Documents approved for publication by | |||
the RFC Editor are not a candidate for any level of Internet | the RFC Editor are not a candidate for any level of Internet | |||
Standard; see Section 2 of RFC 5741. | Standard; see Section 2 of RFC 5741. | |||
Information about the current status of this document, any errata, | Information about the current status of this document, any errata, | |||
and how to provide feedback on it may be obtained at | and how to provide feedback on it may be obtained at | |||
http://www.rfc-editor.org/info/rfc7111. | http://www.rfc-editor.org/info/rfc7111. | |||
IESG Note | ||||
The change to the text/csv media type registration requires IESG | ||||
approval, as the IESG is the change controller for that registration. | ||||
The IESG has, after consultation with the IETF community, approved | ||||
the change, which is specified in Section 5 of this document. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2014 IETF Trust and the persons identified as the | Copyright (c) 2014 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
to this document. | to this document. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
1.1. What is text/csv? . . . . . . . . . . . . . . . . . . . . 3 | 1.1. What is text/csv? . . . . . . . . . . . . . . . . . . . . 3 | |||
1.2. Why text/csv Fragment Identifiers? . . . . . . . . . . . 3 | 1.2. Why text/csv Fragment Identifiers? . . . . . . . . . . . 3 | |||
1.2.1. Motivation . . . . . . . . . . . . . . . . . . . . . 3 | 1.2.1. Motivation . . . . . . . . . . . . . . . . . . . . . 3 | |||
1.2.2. Use Cases . . . . . . . . . . . . . . . . . . . . . . 4 | 1.2.2. Use Cases . . . . . . . . . . . . . . . . . . . . . . 4 | |||
1.3. Incremental Deployment . . . . . . . . . . . . . . . . . 4 | 1.3. Incremental Deployment . . . . . . . . . . . . . . . . . 4 | |||
1.4. Notation Used in this Memo . . . . . . . . . . . . . . . 4 | 1.4. Notation Used in this Memo . . . . . . . . . . . . . . . 4 | |||
2. Fragment Identification Methods . . . . . . . . . . . . . . . 4 | 2. Fragment Identification Methods . . . . . . . . . . . . . . . 5 | |||
2.1. Row-Based Selection . . . . . . . . . . . . . . . . . . . 5 | 2.1. Row-Based Selection . . . . . . . . . . . . . . . . . . . 5 | |||
2.2. Column-Based Selection . . . . . . . . . . . . . . . . . 5 | 2.2. Column-Based Selection . . . . . . . . . . . . . . . . . 6 | |||
2.3. Cell-Based Selection . . . . . . . . . . . . . . . . . . 6 | 2.3. Cell-Based Selection . . . . . . . . . . . . . . . . . . 6 | |||
2.4. Multi-Selections . . . . . . . . . . . . . . . . . . . . 7 | 2.4. Multi-Selections . . . . . . . . . . . . . . . . . . . . 7 | |||
3. Fragment Identification Syntax . . . . . . . . . . . . . . . 7 | 3. Fragment Identification Syntax . . . . . . . . . . . . . . . 7 | |||
4. Fragment Identifier Processing . . . . . . . . . . . . . . . 7 | 4. Fragment Identifier Processing . . . . . . . . . . . . . . . 8 | |||
4.1. Syntax Errors in Fragment Identifiers . . . . . . . . . . 7 | 4.1. Syntax Errors in Fragment Identifiers . . . . . . . . . . 8 | |||
4.2. Semantics of Fragment Identifiers . . . . . . . . . . . . 8 | 4.2. Semantics of Fragment Identifiers . . . . . . . . . . . . 8 | |||
5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8 | 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9 | |||
5.1. The text/csv media type . . . . . . . . . . . . . . . . . 9 | 5.1. The text/csv media type . . . . . . . . . . . . . . . . . 9 | |||
6. Security Considerations . . . . . . . . . . . . . . . . . . . 11 | 6. Security Considerations . . . . . . . . . . . . . . . . . . . 11 | |||
7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 11 | 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 11 | |||
8. References . . . . . . . . . . . . . . . . . . . . . . . . . 11 | 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 11 | |||
8.1. Normative References . . . . . . . . . . . . . . . . . . 11 | 8.1. Normative References . . . . . . . . . . . . . . . . . . 11 | |||
8.2. Informative References . . . . . . . . . . . . . . . . . 12 | 8.2. Informative References . . . . . . . . . . . . . . . . . 12 | |||
1. Introduction | 1. Introduction | |||
This memo updates the text/csv media type defined in RFC 4180 | This memo updates the text/csv media type defined in RFC 4180 | |||
skipping to change at page 3, line 36 | skipping to change at page 4, line 5 | |||
regardless of the URI scheme used in the URI reference. Therefore, | regardless of the URI scheme used in the URI reference. Therefore, | |||
the format and interpretation of fragment identifiers is dependent on | the format and interpretation of fragment identifiers is dependent on | |||
the media type of the retrieval result. | the media type of the retrieval result. | |||
1.2.1. Motivation | 1.2.1. Motivation | |||
Similar to the motivation in RFC 5147 [RFC5147], which defines | Similar to the motivation in RFC 5147 [RFC5147], which defines | |||
fragment identifiers for plain text files, referring to specific | fragment identifiers for plain text files, referring to specific | |||
parts of a resource can be very useful because it enables users and | parts of a resource can be very useful because it enables users and | |||
applications to create more specific references. Users can create | applications to create more specific references. Users can create | |||
references to the part they really are interested in or want to talk | references to a particular point of interest within a resource, | |||
about, rather than always pointing to a complete resource. Even | rather than referring to the complete resource. Even though it is | |||
though it is suggested that fragment identification methods are | suggested that fragment identification methods are specified in a | |||
specified in a media type's registration (see [RFC6838]), many media | media type's registration (see [RFC6838]), many media types do not | |||
types do not have fragment identification methods associated with | have fragment identification methods associated with them. | |||
them. | ||||
Fragment identifiers are only useful if supported by the client, | Fragment identifiers are only useful if supported by the client, | |||
because they are only interpreted by the client. Therefore, a new | because they are only interpreted by the client. Therefore, a new | |||
fragment identification method will require some time to be adopted | fragment identification method will require some time to be adopted | |||
by clients, and older clients will not support it. However, because | by clients, and older clients will not support it. However, because | |||
the URI still works even if the fragment identifier is not supported | the URI still works even if the fragment identifier is not supported | |||
(the resource is retrieved, but the fragment identifier is not | (the resource is retrieved, but the fragment identifier is not | |||
interpreted), rapid adoption is not highly critical to ensure the | interpreted), rapid adoption is not highly critical to ensure the | |||
success of a new fragment identification method. | success of a new fragment identification method. | |||
skipping to change at page 8, line 21 | skipping to change at page 8, line 34 | |||
fragment identifiers to easily identify ranges that extend to the | fragment identifiers to easily identify ranges that extend to the | |||
last row or column. | last row or column. | |||
If single selections refer to non-existing rows or columns (i.e., | If single selections refer to non-existing rows or columns (i.e., | |||
beyond the size of the CSV), they MUST be ignored. | beyond the size of the CSV), they MUST be ignored. | |||
If ranges extend beyond the size of the CSV (by extending to rows or | If ranges extend beyond the size of the CSV (by extending to rows or | |||
columns beyond the size of the CSV), they MUST be interpreted to only | columns beyond the size of the CSV), they MUST be interpreted to only | |||
extend to the actual size of the CSV. | extend to the actual size of the CSV. | |||
If selections of ranges of rows or columns or selections of cell | If selections of ranges of rows, ranges of columns, or ranges of | |||
ranges are specified in a way so that they select "inversely" (i.e., | cells are specified in a way so that they select "inversely" (i.e., | |||
"#row=10-5" or "#cell=10,10-5,5"), they MUST be ignored. | "#row=10-5" or "#cell=10,10-5,5"), they MUST be ignored. | |||
Each specification of an identified region is processed | Each specification of an identified region is processed | |||
independently, and ignored specifications (because of reasons listed | independently, and ignored specifications (because of reasons listed | |||
in the previous paragraphs) do not cause the whole fragment | in the previous paragraphs) do not cause the whole fragment | |||
identifier to fail, they just mean that this single specification is | identifier to fail, they just mean that this single specification is | |||
ignored. For the example file, the fragment identifier | ignored. For the example file, the fragment identifier | |||
"#row=1-2;5-4;13-16" does identify the first two rows: the second | "#row=1-2;5-4;13-16" does identify the first two rows: the second | |||
specification is an "inverse" specification and thus is ignored, and | specification is an "inverse" specification and thus is ignored, and | |||
the third specification targets rows beyond the actual size of the | the third specification targets rows beyond the actual size of the | |||
skipping to change at page 9, line 21 | skipping to change at page 9, line 33 | |||
considerations for fragment identifiers. | considerations for fragment identifiers. | |||
Type name: text | Type name: text | |||
Subtype name: csv | Subtype name: csv | |||
Required parameters: none | Required parameters: none | |||
Optional parameters: charset, header | Optional parameters: charset, header | |||
The "charset" parameter specifies the charset employed by the | The "charset" parameter specifies the charset employed by the CSV | |||
CSV content. In accordance with RFC 6657 [RFC6657], the | content. In accordance with RFC 6657 [RFC6657], the charset | |||
charset parameter SHOULD be used, and if it is not present, | parameter SHOULD be used, and if it is not present, UTF-8 SHOULD | |||
UTF-8 SHOULD be assumed as the default (this implies that | be assumed as the default (this implies that US-ASCII CSV will | |||
US-ASCII CSV will work, even when not specifying the "charset" | work, even when not specifying the "charset" parameter). Any | |||
parameter). Any charset defined by IANA for the "text" tree | charset defined by IANA for the "text" tree may be used in | |||
may be used in conjunction with the "charset" parameter. | conjunction with the "charset" parameter. | |||
The "header" parameter indicates the presence or absence of the | The "header" parameter indicates the presence or absence of the | |||
header line. Valid values are "present" or "absent". | header line. Valid values are "present" or "absent". | |||
Implementors choosing not to use this parameter must make their | Implementors choosing not to use this parameter must make their | |||
own decisions as to whether the header line is present or | own decisions as to whether the header line is present or absent. | |||
absent. | ||||
Encoding considerations: CSV MIME entities consist of binary data | Encoding considerations: CSV MIME entities consist of binary data | |||
[RFC6838]. As per Section 4.1.1. of RFC 2046 [RFC2046], this | [RFC6838]. As per Section 4.1.1. of RFC 2046 [RFC2046], this | |||
media type uses CRLF to denote line breaks. However, implementers | media type uses CRLF to denote line breaks. However, implementers | |||
should be aware that some implementations may use other values. | should be aware that some implementations may use other values. | |||
Security considerations: | Security considerations: | |||
Text/csv consists of nothing but passive text data that should | Text/csv consists of nothing but passive text data that should not | |||
not pose any direct risks. However, it is possible that | pose any direct risks. However, it is possible that malicious | |||
malicious data may be included in order to exploit buffer | data may be included in order to exploit buffer overruns or other | |||
overruns or other bugs in the program processing the text/csv | bugs in the program processing the text/csv data. | |||
data. | ||||
The text/csv format provides no confidentiality or integrity | The text/csv format provides no confidentiality or integrity | |||
protection, so if such protections are needed, they must be | protection, so if such protections are needed, they must be | |||
supplied externally. | supplied externally. | |||
The fact that software implementing fragment identifiers for | The fact that software implementing fragment identifiers for CSV | |||
CSV and software not implementing them differs in behavior, and | and software not implementing them differs in behavior, and the | |||
the fact that different software may show documents or | fact that different software may show documents or fragments to | |||
fragments to users in different ways, can lead to | users in different ways, can lead to misunderstandings on the part | |||
misunderstandings on the part of users. Such misunderstandings | of users. Such misunderstandings might be exploited in a way | |||
might be exploited in a way similar to spoofing or phishing. | similar to spoofing or phishing. | |||
Implementers and users of fragment identifiers for CSV text | Implementers and users of fragment identifiers for CSV text should | |||
should also be aware of the security considerations in RFC 3986 | also be aware of the security considerations in RFC 3986 [RFC3986] | |||
[RFC3986] and RFC 3987 [RFC3987]. | and RFC 3987 [RFC3987]. | |||
Interoperability considerations: Due to lack of a single | Interoperability considerations: Due to lack of a single | |||
specification, there are considerable differences among | specification, there are considerable differences among | |||
implementations. Implementers should "be conservative in what you | implementations. Implementers should "be conservative in what you | |||
do, be liberal in what you accept from others" (RFC 793 [RFC0793]) | do, be liberal in what you accept from others" (RFC 793 [RFC0793]) | |||
when processing CSV files. An attempt at a common definition can | when processing CSV files. An attempt at a common definition can | |||
be found in Section 2. Implementations deciding not to use the | be found in Section 2. Implementations deciding not to use the | |||
optional "header" parameter must make their own decision as to | optional "header" parameter must make their own decision as to | |||
whether the header is absent or present. | whether the header is absent or present. | |||
skipping to change at page 12, line 28 | skipping to change at page 13, line 8 | |||
[RFC5147] Wilde, E. and M. Duerst, "URI Fragment Identifiers for the | [RFC5147] Wilde, E. and M. Duerst, "URI Fragment Identifiers for the | |||
text/plain Media Type", RFC 5147, April 2008. | text/plain Media Type", RFC 5147, April 2008. | |||
[RFC6838] Freed, N., Klensin, J., and T. Hansen, "Media Type | [RFC6838] Freed, N., Klensin, J., and T. Hansen, "Media Type | |||
Specifications and Registration Procedures", BCP 13, RFC | Specifications and Registration Procedures", BCP 13, RFC | |||
6838, January 2013. | 6838, January 2013. | |||
Authors' Addresses | Authors' Addresses | |||
Michael Hausenblas | Michael Hausenblas | |||
DERI, NUI Galway | MapR Technologies | |||
IDA Business Park | 32 Bushypark Lawn | |||
Galway | Galway | |||
Ireland | Ireland | |||
Phone: +353-91-495730 | Phone: +353-86-0215164 | |||
EMail: michael.hausenblas@deri.org | EMail: mhausenblas@maprtech.com | |||
URI: http://sw-app.org/about.html | URI: http://mhausenblas.info | |||
Erik Wilde | Erik Wilde | |||
EMC Corporation | UC Berkeley | |||
6801 Koll Center Parkway | ||||
Pleasanton, CA 94566 | ||||
U.S.A. | ||||
Phone: +1-925-6006244 | EMail: dret@berkeley.edu | |||
EMail: erik.wilde@emc.com | ||||
URI: http://dret.net/netdret/ | URI: http://dret.net/netdret/ | |||
Jeni Tennison | Jeni Tennison | |||
Open Data Institute | Open Data Institute | |||
65 Clifton Street | 65 Clifton Street | |||
London EC2A 4JE | London EC2A 4JE | |||
U.K. | U.K. | |||
Phone: +44-797-4420482 | Phone: +44-797-4420482 | |||
EMail: jeni@jenitennison.com | EMail: jeni@jenitennison.com | |||
URI: http://www.jenitennison.com/blog/ | URI: http://www.jenitennison.com/blog/ | |||
End of changes. 22 change blocks. | ||||
63 lines changed or deleted | 57 lines changed or added | |||
This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |