From: Oren Ben-K. <or...@ri...> - 2002-02-10 20:42:07
|
Follows. Clark gets his prefix-free domain names, Brian can still write !perl;whatever and !int.i32 still works! Magic. If both of you vote "aye" I'll patch it into the spec. After that I'd *really* like to announce a freeze for a set period of time and push it to outsiders for comments while we are working on implementation (as much as we can spare our time). A few months sounds right. Have fun, Oren Ben-Kiki --- YAML:1.0 location: http://www.yaml.org/yacs/019 abstract: Simplified yaml: scheme owner: oren status: !yac/status state: new date: 2002-02-10 proposal: ] The character for separating a type URI to a prefix and suffix will be '^' instead of the current '|'. The character for separating the type and the format will be '|' instead of the current '`'. The yaml: scheme will be changed to yaml:<domain>;<specific> where <domain> is any reverse DNS domain name and <specific> is a domain specific identifier for each type. Types defined under the org.yaml.<language> domain will be language specific types sanctioned by org.yaml. For example, yaml:org.yaml.perl;<perl-specific> Language neutral types will appear directly under org.yaml. For example: yaml:org.yaml;int Other domains may be used by their owners for whatever purpose they Shorthands will be handled as follows: A method !scheme:... is preserved as is. Marker: A ':' appears. If there's a ';' the ':' is before it. A method !tld.domain;type is prefixed with 'yaml:'. Marker: ';' appears. Before it there is no ':', instead there are multiple words separated by '.'. A method !language;type is prefixed with 'yaml:org.yaml.'. Marker: ';' appears. Before it there is no ':', instead there is a single word. A !type is prefixed with 'yaml:org.yaml;'. Marker: No ':' and no ';'. Note that this means a language name must always be a single word, without any '.' characters. Otherwise a leading ':' would have been required for domain names or a leading '.' would have been required for languages. The restriction of languages to a single word name should not be a problem in practice. While something like !yaml:org.yaml.lisp.common;... and !yaml:org.yaml.lisp.scheme;... may make some sort of sense, this case can be handled by using '-', !yaml:org.yaml.lisp-common;... and !yaml:org.yaml.lisp-scheme;... It is doubtful this would be required in practice. Language specific types for the following languages will be defined: The domain org.yaml.<language> will always include all built-in types of each language which aren't covered by the set of language-independent types. This issue is very much TBD; for the near future YAML will strive to make use of a small set of "language independent" types. In addition, the org.yaml.<language> domain will include all types which are globally unique for that language. For languages such as Java and C# this means all type names based on reverse DNS strings. For languages such as Perl, which has a central authority (CPAN) for managing the global namespace, this means all the types sanctioned by the central authority. All other types must be specified under some domain owned by the author of the type. The author is free to use yaml:his.domain;type-name, or any domain willing to "host" his type. In addition, a type author may use any other URI scheme to identify his types. This final category includes almost all C/C++/Visual Basic types, every Perl class name not sanctioned by CPAN, and any Java/C# type name which isn't "standard" and isn't based on a domain name. Other details of how to encode various languages type names as URIs are still TBD. Brian is working on a Perl mapping and I will (eventually) get to defining one for Java. Note that the URI character set is restricted, so the URI name will have to be different from the native name for the type in many cases. For example, '[' and ']' are not valid URI characters, and hence all array types in C/C++/Java would have to be written using an alternative syntax. rationale: ] The change in separators is due to aesthetic reasons. ^ is deemed "less ugly" than `, and more suitable to be a "prefix" marker. The | is the prettiest of the bunch, and doesn't carry "prefix" connotations, so it was chosen for formats. This scheme has the following advantages over the current one. It is no longer necessary to prefix domain names in shortcuts, without introducting ambiguities with type names (the ambiguity is moved to languages, which are a much more managable set). There is no need for an invented name for the 'any' language. Generic type names belong to the 'org.yaml' domain, while language dependent names belong to the 'org.yaml.<language>' domain. There is no ambiguity because the domain and the type are separated by a ';' instead of a '.'. It should be easier to register this scheme as a URI scheme, because there is no longer a need to specify some mechanism for defining top-level languages and the semantics of types within them. Instead, each domain owner is responsible for defining the semantics of types within his domain. examples: # An http based type (using XML namespaces). - | !http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd;p # All possible ways to specify the integer type. - | !yaml:org.yaml;int !org.yaml;int !int # All possible ways to specify a Perl type. - | !yaml:org.yaml.perl;type !org.yaml.perl;type !perl;type # All possible ways to specify an application specific type. - | !yaml:com.clarkevans.timesheet;meeting !com.clarkevans.timesheet;meeting # Specifying a format. - | !int|hex # Using a prefix. - | --- !http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd;^html - !^body - !^p ] This is an HTML paragraph. dialog: [] votes: # The current votes by the YAML core team members. - !yac.vote who: oren what: aye when: 2002-02-10 references: - http://www.yaml.org/yacs/017 replaces: - http://www.yaml.org/yacs/003 - http://www.yaml.org/yacs/005 replaced by: [] |
From: Clark C . E. <cc...@cl...> - 2002-02-10 21:31:33
|
| The character for separating a type URI to a prefix and suffix | will be '^' instead of the current '|'. | The character for separating the type and the format will be | '|' instead of the current '`'. So far so good! Note that ^ and | are both "unwise" and thus are not really part of the URI. | The yaml: scheme will be changed to yaml:<domain>;<specific> where | <domain> is any reverse DNS domain name and <specific> is a domain | specific identifier for each type. Ok, but unlike the pipe "|" the colon, the semi-colon ";" is is valid URIs and thus can only be given specific meaning within our yaml: scheme. That said, I think that the specific indicator is probably very much like a fragment identifier. So why don't we use "#" instead of ";", as it's meaning will be much more clear. Also, we should allow for fragments in our URIs then (this is needed for XML compatibility anway). So, we allow... absoluteURI ( '#' fragment )? | A method !scheme:... is preserved as is. | Marker: A ':' appears. If there's a ';' the ':' is before it. | | A method !tld.domain;type is prefixed with 'yaml:'. | Marker: ';' appears. Before it there is no ':', instead there | are multiple words separated by '.'. | | A method !language;type is prefixed with 'yaml:org.yaml.'. | Marker: ';' appears. Before it there is no ':', instead there | is a single word. | | A !type is prefixed with 'yaml:org.yaml;'. | Marker: No ':' and no ';'. Ok. | Note that this means a language name must always be a single word, | without any '.' characters. Right. | examples: | # An http based type (using XML namespaces). | - | | !http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd;p change-to: - | !http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd#p This is the content. So. I vote YES with the # fragment identifier instead of ; Best, Clark -- Clark C. Evans Axista, Inc. http://www.axista.com 800.926.5525 XCOLLA Collaborative Project Management Software |
From: Brian I. <in...@tt...> - 2002-02-10 21:56:19
|
On 10/02/02 20:43 -0000, Oren Ben-Kiki wrote: > Follows. Clark gets his prefix-free domain names, Brian can still write > !perl;whatever and !int.i32 still works! Magic. > > If both of you vote "aye" I'll patch it into the spec. After that I'd > *really* like to announce a freeze for a set period of time and push it to > outsiders for comments while we are working on implementation (as much as we > can spare our time). A few months sounds right. AYE! I thought the spec *was* frozen until I saw it :) Anyway, this is exactly what I want for transfers. Thanks guys. Good job! Cheers, Brian > > Have fun, > > Oren Ben-Kiki > > --- YAML:1.0 > location: http://www.yaml.org/yacs/019 > abstract: Simplified yaml: scheme > owner: oren > status: !yac/status > state: new > date: 2002-02-10 > proposal: ] > The character for separating a type URI to a prefix and suffix > will be '^' instead of the current '|'. > > The character for separating the type and the format will be > '|' instead of the current '`'. > > The yaml: scheme will be changed to yaml:<domain>;<specific> where > <domain> is any reverse DNS domain name and <specific> is a domain > specific identifier for each type. > > Types defined under the org.yaml.<language> domain will be language > specific types sanctioned by org.yaml. For example, > > yaml:org.yaml.perl;<perl-specific> > > Language neutral types will appear directly under org.yaml. For example: > > yaml:org.yaml;int > > Other domains may be used by their owners for whatever purpose they > > Shorthands will be handled as follows: > > A method !scheme:... is preserved as is. > Marker: A ':' appears. If there's a ';' the ':' is before it. > > A method !tld.domain;type is prefixed with 'yaml:'. > Marker: ';' appears. Before it there is no ':', instead there > are multiple words separated by '.'. > > A method !language;type is prefixed with 'yaml:org.yaml.'. > Marker: ';' appears. Before it there is no ':', instead there > is a single word. > > A !type is prefixed with 'yaml:org.yaml;'. > Marker: No ':' and no ';'. > > Note that this means a language name must always be a single word, > without any '.' characters. Otherwise a leading ':' would have > been required for domain names or a leading '.' would have been > required for languages. The restriction of languages to a single > word name should not be a problem in practice. While something like > !yaml:org.yaml.lisp.common;... and !yaml:org.yaml.lisp.scheme;... > may make some sort of sense, this case can be handled by using '-', > !yaml:org.yaml.lisp-common;... and !yaml:org.yaml.lisp-scheme;... > It is doubtful this would be required in practice. > > Language specific types for the following languages will be defined: > > The domain org.yaml.<language> will always include all built-in > types of each language which aren't covered by the set of > language-independent types. This issue is very much TBD; for > the near future YAML will strive to make use of a small set of > "language independent" types. > > In addition, the org.yaml.<language> domain will include all > types which are globally unique for that language. For languages > such as Java and C# this means all type names based on reverse > DNS strings. For languages such as Perl, which has a central > authority (CPAN) for managing the global namespace, this means all > the types sanctioned by the central authority. > > All other types must be specified under some domain owned by > the author of the type. The author is free to use > yaml:his.domain;type-name, or any domain willing to "host" > his type. In addition, a type author may use any other URI > scheme to identify his types. > > This final category includes almost all C/C++/Visual Basic types, > every Perl class name not sanctioned by CPAN, and any Java/C# type > name which isn't "standard" and isn't based on a domain name. > > Other details of how to encode various languages type names as > URIs are still TBD. Brian is working on a Perl mapping and I > will (eventually) get to defining one for Java. Note that the > URI character set is restricted, so the URI name will have > to be different from the native name for the type in many > cases. For example, '[' and ']' are not valid URI characters, > and hence all array types in C/C++/Java would have to be > written using an alternative syntax. > > rationale: ] > The change in separators is due to aesthetic reasons. ^ is > deemed "less ugly" than `, and more suitable to be a "prefix" > marker. The | is the prettiest of the bunch, and doesn't > carry "prefix" connotations, so it was chosen for formats. > > This scheme has the following advantages over the current one. > > It is no longer necessary to prefix domain names in shortcuts, > without introducting ambiguities with type names (the ambiguity > is moved to languages, which are a much more managable set). > > There is no need for an invented name for the 'any' language. > Generic type names belong to the 'org.yaml' domain, while > language dependent names belong to the 'org.yaml.<language>' > domain. There is no ambiguity because the domain and the type > are separated by a ';' instead of a '.'. > > It should be easier to register this scheme as a URI scheme, > because there is no longer a need to specify some mechanism > for defining top-level languages and the semantics of types > within them. Instead, each domain owner is responsible for > defining the semantics of types within his domain. > > examples: > # An http based type (using XML namespaces). > - | > !http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd;p > > # All possible ways to specify the integer type. > - | > !yaml:org.yaml;int > !org.yaml;int > !int > > # All possible ways to specify a Perl type. > - | > !yaml:org.yaml.perl;type > !org.yaml.perl;type > !perl;type > > # All possible ways to specify an application specific type. > - | > !yaml:com.clarkevans.timesheet;meeting > !com.clarkevans.timesheet;meeting > > # Specifying a format. > - | > !int|hex > > # Using a prefix. > - | > --- !http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd;^html > - !^body > - !^p ] > This is an HTML paragraph. > > dialog: [] > votes: > # The current votes by the YAML core team members. > - !yac.vote > who: oren > what: aye > when: 2002-02-10 > references: > - http://www.yaml.org/yacs/017 > replaces: > - http://www.yaml.org/yacs/003 > - http://www.yaml.org/yacs/005 > replaced by: [] > > _______________________________________________ > Yaml-core mailing list > Yam...@li... > https://lists.sourceforge.net/lists/listinfo/yaml-core |
From: Clark C . E. <cc...@cl...> - 2002-02-10 22:12:45
|
On Sun, Feb 10, 2002 at 01:56:12PM -0800, Brian Ingerson wrote: | On 10/02/02 20:43 -0000, Oren Ben-Kiki wrote: | > Follows. Clark gets his prefix-free domain names, Brian can | > still write !perl;whatever and !int.i32 still works! Magic. | | AYE! Brian... would you mind using # instead of ; !perl#whatever This makes things more consistent with HTML fragments, in particular, ; doesn't work with most URIs since it is reserved. Thus, if people started to use ; for the separator, they would be inclined to write (as oren did): http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd;p Which, if I read the URI RFC, is not valid since ; is allowed but has specific reserved meaning. Best, Clark |
From: Brian I. <in...@tt...> - 2002-02-10 22:21:56
|
On 10/02/02 17:31 -0500, Clark C . Evans wrote: > On Sun, Feb 10, 2002 at 01:56:12PM -0800, Brian Ingerson wrote: > | On 10/02/02 20:43 -0000, Oren Ben-Kiki wrote: > | > Follows. Clark gets his prefix-free domain names, Brian can > | > still write !perl;whatever and !int.i32 still works! Magic. > | > | AYE! > > Brian... would you mind using # instead of ; > > !perl#whatever It looks good in the long form, but pretty bad in shorthands. I'd like to hear Oren's comments. In the meantime I'll finish my implementation but wait for a decision before releasing it. The overall form was the important thing for me. Cheers, Brian |
From: Clark C . E. <cc...@cl...> - 2002-02-10 22:36:57
|
On Sun, Feb 10, 2002 at 02:21:50PM -0800, Brian Ingerson wrote: | > | > !perl#whatever | | It looks good in the long form, but pretty bad in shorthands. I'd like to | hear Oren's comments. In the meantime I'll finish my implementation but wait | for a decision before releasing it. The overall form was the important thing | for me. We don't have to implement this. I was just taken back by Oren's use of ; at the end of an http URI, which I believe is illegal according to the URI RFC. We can just say that ; is specific to the "yaml" scheme, and then update Oren's example using the "http" scheme to use fragment indicator (#) instead of the parameter indicator (;), which is reserved within a pathsegment. Thus, if # is too ugly... no problem. Not a big deal, as long as we don't start usign ; in regular non-yaml URI schemes. Best, Clark |
From: Brian I. <in...@tt...> - 2002-02-10 23:15:18
|
On 10/02/02 17:56 -0500, Clark C . Evans wrote: > On Sun, Feb 10, 2002 at 02:21:50PM -0800, Brian Ingerson wrote: > | > > | > !perl#whatever > | > | It looks good in the long form, but pretty bad in shorthands. I'd like to > | hear Oren's comments. In the meantime I'll finish my implementation but wait > | for a decision before releasing it. The overall form was the important thing > | for me. > > We don't have to implement this. I was just taken back by > Oren's use of ; at the end of an http URI, which I believe > is illegal according to the URI RFC. > > We can just say that ; is specific to the "yaml" scheme, > and then update Oren's example using the "http" scheme > to use fragment indicator (#) instead of the parameter > indicator (;), which is reserved within a pathsegment. Oh. OK. Cool. To tell the truth, I still don't get why you would use an http URI in YAML. Can someone explain? Cheers, Brian |
From: Brian I. <in...@tt...> - 2002-02-11 02:53:30
|
On 10/02/02 19:10 -0500, Clark C . Evans wrote: > | To tell the truth, I still don't get why you would use an http URI in YAML. > | Can someone explain? > > We'd like to automagically convert XML documents into YAML. XML uses > arbitrary URIs for their namespaces... this is one of the reasons > why we are using URIs. I like reverse DNS better... but there is a > point where we need to be practical. Truth be told, now that we are separating domain from type using ';' instead of '.', there is no real reason to use reverse dns for domains. yaml:yaml.org;int yaml:perl.yaml.org;hash:Foo yaml:timesheet.clarkevans.com;meeting Someone asked me yesterday why we used reverse dns, and I couldn;t give a good defense. Just a thought. Cheers, Brian |
From: Brian I. <in...@tt...> - 2002-02-11 04:53:10
|
On 10/02/02 23:01 -0500, Clark C . Evans wrote: > On Sun, Feb 10, 2002 at 06:53:21PM -0800, Brian Ingerson wrote: > | Truth be told, now that we are separating domain from type using ';' instead > | of '.', there is no real reason to use reverse dns for domains. > | > | yaml:yaml.org;int > | yaml:perl.yaml.org;hash:Foo > | yaml:timesheet.clarkevans.com;meeting > > Right. This approach is better anyway since it puts > the most signficant part first. Hmm. Maybe this isn't good because of the way it might affect the '^' marker. You couldn't do: !^timesheet;meeting Oren? > > Best, > > Clark > > -- > Clark C. Evans Axista, Inc. > http://www.axista.com 800.926.5525 > XCOLLA Collaborative Project Management Software |