I want to thank you all, esp Keith Moore, Ted Hardie, and Michael Mealling
for humoring my previous thread. Its clear to me that although I'm defining
a URN like thingy, it can't be anwhere as strict as RFC 2141 for two reasons,
first the syntax is too restrictive and most importantly each programming
language has it's own mechanism for defining data types, and sometimes these
definitions arn't perfect or up-to-par with the requirements set forth in
RFC 2141. Thus, it seems that another scheme is what is needed for YAML,
and rather than trying to find a generic name and buy-in, I figure it would
be better to try and register "yaml" scheme. So, if you would kindly comment
on this very rough draft, I'd be delighted.
Best,
Clark
-------------- CUT HERE --------------------------
Network Working Group C. Evans
Internet-Draft YAML.ORG
Expires: January 27, 2003 July 26, 2002
YAML URI scheme
draft-evans-yaml-uri
Status of this Memo
This document is an Internet-Draft and is in full conformance with
all provisions of Section 10 of RFC2026.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that
other groups may also distribute working documents as
Internet-Drafts.
Internet-Drafts are draft documents valid for a maximum of six
months and may be updated, replaced, or obsoleted by other documents
at any time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt.
The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html.
This Internet-Draft will expire on July 26, 2002
Copyright Notice
Copyright (C) The Internet Society (2002). All Rights Reserved.
Abstract
This draft describes a URI scheme for persistent, transcribable
labeling of programming language meta information such as a data
type, interface or class. It is envisioned that such a URI would
be used in-conjunction with a data serialization mechanism such
such as YAML so that type information for a particular data object
within a particular programming language environment can be
serialized along with its content.
Evans Expires January 27, 2003 [Page 1]
Internet-Draft YAML URI scheme July 2002
Table of Contents
1. Introduction and Background . . . . . . . . . . . . . . . . . . 3
2. URI Syntatic Components . . . . . . . . . . . . . . . . . . . . 3
3. Character Encoding . . . . . . . . . . . . . . . . . . . . . . . 3
4. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
5. BNF Definition . . . . . . . . . . . . . . . . . . . . . . . . . 4
6. Environment Semantics . . . . . . . . . . . . . . . . . . . . . 4
7. Data Type Semantics . . . . . . . . . . . . . . . . . . . . . . 4
References . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 5
Full Copyright Statement . . . . . . . . . . . . . . . . . . . . 6
Evans Expires January 27, 2003 [Page 2]
Internet-Draft YAML URI scheme July 2002
1. Introduction and Background
A core challenge of system integration is moving data objects
between systems with either the same or different processing
environments. An emerging trend is to use a textual serialization
mechanism, such as XML [1] or YAML [2] for this purpose. When
communicating this information beween systems, a unique identifier
for domain, class or similar data typing information is needed.
Currently, there is not a standardized way to accomplish this
desire and thus interoperability between systems suffers.
This memo is known to be incomplete and perhaps lack some of the
background research required to properly define a new URL scheme.
Especially the BNF should not be regarded as cast in stone.
2. URI Syntatic Components
A YAML URI records a composite identification of two components:
a processing environment / programming language and a class,
protocol, or data type subject to said environment.
A YAML URI is a specialization of an absolute opaque URI as
defined by RFC 2396 [3]. The general form is written as follows:
yaml:<environment>,<data-type>
Where the environment is unreserved or escaped and the
data-type matches opaque_part.
3. Character Encoding
Since many programming languages now allow unicode for their
data-type characters, escaping is considered to use Unicode's
UTF-8 encoding [4].
4. Examples
This example illustrates a Java(tm) language class name:
yaml:java,com.clarkevans.Timesheet.Task
A Perl language blessed scalar and perl type glob:
yaml:perl,$Foo::Bar yaml:perl,:glob
A language independent (DNS) based type and a private type:
yaml:*,clarkevans.com/timesheet
yaml:-,private+use
Evans Expires January 27, 2003 [Page 3]
Internet-Draft YAML URI scheme July 2002
5. BNF Definition
Strings are case sensitive and free insertion of
linear-white-space is not permitted.
yamluri = "yaml:" environment "," datatype
environment = 1*( unreserved | escaped) ; See RFC 2396 for
; component definitions
datatype = opaque_part ; Also see RFC 2396
wildtype = host ?abs_path ; Also see RFC 2996
6. Environment Semantics
The environment represents a programming language or processing
environment. Usual examples of these would be languages such
as python, perl, rebol. Although unreserved characters are
allowed, lower case is preferred. Two special environments are
defined here, *, for language independent data types, and - for
private use data types which are local to a specific environment.
7. Data Type Semantics
The allowed format and semantics of each data type is dependent
the particular environment and is beyond the scope of this text.
The data type for the * environment should follow wildtype, where
the host is lower case and no unnecessary escaping is performed.
References
[1] Bray, T., et.all "Extensible Markup Language",
http://www.w3.org/TR/2000/REC-xml-20001006
[2] Evans, C., Ben-Kiki, O., Ingerson, B. "YAML Ain't Markup
Language", http://yaml.org/spec/10jul2002.html
[3] Berners-Lee, T., Fielding, R. and L. Masinter, "Uniform
Resource Identifiers (URI): Generic Syntax", RFC 2396, August
1998.
[4] Unicode 3.2 http://www.unicode.org/unicode/reports/tr28/
Evans Expires January 27, 2003 [Page 4]
Internet-Draft YAML URI scheme July 2002
Author's Address
Clark C. Evans
630 G ST SE
Washington, DC 20003
USA
Phone: +1 202.544.7775
EMail: cce(_at_)clarkevans(_dot_)com
Evans Expires January 27, 2003 [Page 5]
Internet-Draft YAML URI scheme July 2002
Full Copyright Statement
Copyright (C) The Internet Society (2000). All Rights Reserved.
This document and translations of it may be copied and furnished to
others, and derivative works that comment on or otherwise explain it
or assist in its implementation may be prepared, copied, published
and distributed, in whole or in part, without restriction of any
kind, provided that the above copyright notice and this paragraph
are included on all such copies and derivative works. However, this
document itself may not be modified in any way, such as by removing
the copyright notice or references to the Internet Society or other
Internet organizations, except as needed for the purpose of
developing Internet standards in which case the procedures for
copyrights defined in the Internet Standards process must be
followed, or as required to translate it into languages other than
English.
The limited permissions granted above are perpetual and will not be
revoked by the Internet Society or its successors or assigns.
This document and the information contained herein is provided on an
"AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Acknowledgement
Funding for the RFC editor function is currently provided by the
Internet Society.
Evans Expires January 27, 2003 [Page 6]