RFC 2656

Registration Procedures for SOIF Template Types

πŸ“… published August 1999, from ietf

RFC 2656: Registration Procedures for SOIF Template Types πŸŽ€

okay so this is RFC 2656, and its title is "Registration Procedures for SOIF Template Types" πŸ’– It came out of the Network Working Group, written by T. Hardie (Ted Hardie) at Equinix, dated August 1999. It's in the Experimental category πŸ§ͺ and its title block doesn't list any Obsoletes or Updates entries, so it doesn't replace or change any other RFC πŸ™ˆ

Status of this Memo ✨

the vibe here is that this memo defines an Experimental Protocol for the Internet community πŸ§ͺ It does not specify an Internet standard of any kind. Discussion and suggestions for improvement are requested, so bestie, go share your thoughts πŸ’¬ Distribution of this memo is unlimited 🌈

Copyright (C) The Internet Society (1999). All Rights Reserved.

Abstract ✨

okay so the Summary Object Interchange Format [Ref. 1] was first defined by the Harvest Project [Ref 2.] in January 1994 πŸ“ SOIF came from mixing two things: the Internet Anonymous FTP Archives IETF Working Group (IAFA) templates [Ref 3.] and the BibTeX bibliography format [Ref 4.] πŸ“š The combo was originally praised for giving a convenient, intuitive way to delimit objects within a stream and to set apart the URL for easy object access or invocation, all while still staying compatible with IAFA templates πŸ’…

SOIF uses named template types to say which attributes can show up in a particular summary object 🧚 Inside one app, private agreements about template types have been fine. But once SOIF objects start moving between applications, the need for standard, well-specified, and easily identifiable template types gets intense 😭 This matters most for query referral, where you need to know what an attribute means and which data types its values are allowed to have. For a discussion of this in the context of the Common Indexing Protocol, see [Ref. 1].

The registration procedure in this document is specific to SOIF template types. The IETF is still working on a more generic schema registration facility [Ref. 5]. It isn't clear yet whether that work will cover registering things like SOIF template types πŸ€” If it does, registration of SOIF template types may move to that method and registry. If that happens, appropriate pointers will be created in cooperation with the Registrar so that no registrations get lost 🫢

1. Registrar πŸ‘‘

The initial registrar of SOIF template types will be the Internet Assigned Numbers Authority (IANA) πŸŽ€

2. Defining Template Types πŸ¦‹

okay so every SOIF object is made of 3 fundamental components: a template type IDENTIFIER, a URL, and zero or more ATTRIBUTE-VALUE pairs πŸ“ See [Ref 1.] for the formal grammar of SOIF and how these components relate to each other. As part of registration, registrants MUST propose a template type IDENTIFIER, list the ATTRIBUTEs the template may contain, identify whether each ATTRIBUTE is REQUIRED or OPTIONAL, and specify the data type and encoding for the VALUEs of each ATTRIBUTE πŸ“

2.1. The template type IDENTIFIER 🏷️

the IDENTIFIER for a template type is assigned at registration, based on a proposal from the registrant. It's still totally at the sole discretion of the registrars to assign specific IDENTIFIERS πŸ‘‘ They'll normally go with what registrants propose, but they MAY change a proposed IDENTIFIER to avoid a clash with other existing or proposed template types.

applications using SOIF need to be able to tell whether a referenced template type has been registered, because of the pre-installed base of servers using privately agreed template types πŸ–₯️ So every template type IDENTIFIER registered with the IANA MUST begin with the ASCII string IANA-. For example, an IANA-registered template type based on the GILS specification might be registered as IANA-GILS πŸ’– If other registrars show up over time, they MUST establish similar strings and use them to compose the template type IDENTIFIERs they assign.

2.2. The URL πŸ”—

the URL attached to a summary object is decided by the application that generates the object. Applications MUST generate valid URLs according to the rules of [Ref 6.], but there's no restriction on what kinds of URLs can go with a particular template type ✨ The template type tells you what kind of information the summary object holds, not how the original resource being summarized was accessed. So this aspect of SOIF summary objects isn't subject to registration, and that's a whole mood πŸ™Œ

2.3. ATTRIBUTES 🧩

when an ATTRIBUTE in a proposed template type exactly matches an ATTRIBUTE already defined in a registered template type, the proposed ATTRIBUTE SHOULD be defined by reference to the existing, registered one 🫢 This lets query referral meshes map queries across ATTRIBUTEs from different template types, and it's an easy way to extend or restrict an existing template type to fit an application's needs. In those cases, the ATTRIBUTE in the new template type has the same name, description, and allowed values as the ATTRIBUTE in the existing one 🌸

When there's no existing ATTRIBUTE to reference, registrants MUST specify each ATTRIBUTE's name, description, and allowed values πŸ“

2.3.1. ATTRIBUTE names πŸŽ€

so SOIF handles multiple VALUEs for the same ATTRIBUTE with a naming trick: you add a hyphen and a positive integer to the base ATTRIBUTE name to make a unique ATTRIBUTE IDENTIFIER πŸ¦‹ For example, Publisher-1, Publisher-2, and Publisher-3 can be used to attach three VALUEs to the ATTRIBUTE named Publisher. To keep this convention working smoothly, ATTRIBUTE names may not end with a hyphen followed by an integer. Otherwise, ATTRIBUTE names are only restricted by the grammar defined in [Ref. 1] πŸ’…

registrants will probably want ATTRIBUTE names that are short, mnemonic, and intuitively tied to the characteristic the ATTRIBUTE describes 🧠 Those are great goals, but remember that the application interface doesn't have to show the raw ATTRIBUTE name to the end user πŸ™ˆ In fact, if the end user's language doesn't use the ASCII character set, the interface MUST map the ATTRIBUTE name to an appropriate local representation 🌍 Since ATTRIBUTE definitions are provided as part of registration, registrants SHOULD avoid cramming information that belongs in the description into the ATTRIBUTE name. Main character energy is keeping the name clean and the description detailed πŸ‘‘

2.3.2. ATTRIBUTE descriptions πŸ“–

ATTRIBUTE descriptions for ATTRIBUTEs registered with the IANA MUST be in English, though mappings to other languages MAY be proposed as part of the description 🌈 Descriptions SHOULD propose clear criteria for deciding whether an object has a particular ATTRIBUTE βœ… They SHOULD also include at least two examples of how each attribute relates to an object being summarized, using, where possible, objects that are broadly available to a wide variety of audiences πŸ“

if several ATTRIBUTEs inside a template type inter-relate, each description MAY reference the others. Care MUST be taken, though, that the resulting descriptions are not circular πŸ”„ And where fully realized specifications of the ATTRIBUTEs already exist in other contexts, the salient text from those descriptions SHOULD be quoted and appropriate references cited πŸ“š

2.3.3. Required and Optional Attributes βœ…

each ATTRIBUTE registered for a template type MUST be marked either REQUIRED or OPTIONAL. Here's the tea: marking an ATTRIBUTE REQUIRED does not mean it can't have a null value. It only means the ATTRIBUTE MUST appear in all templates of that registered template type 🫢

2.4. VALUES πŸ’œ

for each ATTRIBUTE, the registrant MUST specify the data format and, if appropriate, the language, character set, and encoding 🌸 Where possible, the registrant SHOULD include references to a precise, openly available specification of the format. The registrant MUST also specify the appropriate matching semantics for the ATTRIBUTE if those aren't strictly implied by the data format and encoding. And the registrant MUST also note whether null values are permitted πŸ’–

part 2 is next, bestie! πŸŽ€ that's where versioning, security, the references, and the author's address live, and the security section is not one to skip 😭πŸ”₯

Appendix A. An Example Registration Form πŸŽ€

okay so this is the fill-in-the-blanks registration form, and it's giving very "sign here, bestie" πŸ“ you can literally just copy it and fill in your own stuff. The numbers and letters stay exactly like they are so you can match up each blank.

   1. Registrant's Name ________________________________________

   2. Registrant's Organization ________________________________

   3. Registrant's email address _______________________________

   4. Registrant's postal address ______________________________
                                  ______________________________
                                  ______________________________
                                  ______________________________

   5. Registrant's telephone number ____________________________

   6. Proposed Template Type IDENTIFIER: IANA-__________________

   7. If this Template Type relates to an existing Template Type
   list the Template Type(s) and the relationship:

   Template Type ___________________ Relationship ______________

   8. For each ATTRIBUTE in this Template type, provide the
   following information:

   a) NAME _____________________________________________________

   b) Reference Template Type __________________________________

   If there is no registered Template Type which has already
   specified this attribute, provide the following information:

   c) ATTRIBUTE Description ____________________________________
                            ____________________________________
                            ____________________________________
                            ____________________________________
                            ____________________________________
                            ____________________________________
                            ____________________________________
                            ____________________________________
                            ____________________________________
                            ____________________________________
                            ____________________________________
                            ____________________________________
                            ____________________________________
                            ____________________________________

   d) Required [] or Optional []?

   e) Data Type and ecoding for this VALUE _____________________
                                           _____________________
                                           _____________________

   f) If a specific language and character set are expected, list
   them here ___________________________________________________

   g) Is a null value permitted? Yes [] No []

okay copyright time, and this part is really important so read it properly 🫢

Copyright (C) The Internet Society (1999). All Rights Reserved.

So here's the deal. This document and translations of it can be copied and shared with other people. You can also write derivative works that comment on or explain it, or help people actually implement it, and you can prepare, copy, publish and distribute those in whole or in part with no restrictions at all. The one catch is that the copyright notice and this paragraph have to stay on every copy and every derivative work. πŸ”₯

What you can't do is change this document itself in any way. You can't strip out the copyright notice or the references to the Internet Society or other Internet organizations. The exceptions are when you need it for developing Internet standards (then you follow the copyright procedures in the Internet Standards process), or when you need to translate it into languages other than English.

The limited permissions above are perpetual, and the Internet Society and its successors or assigns won't revoke them. Forever and ever 🌈

This document and the information in it are provided "AS IS", 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. πŸ’€

⚠️ the disclaimer above is in all caps for a reason, bestie. no implied warranties, no promises. read it as written.

Acknowledgement ✨

okay last but not least, a big thank you 🧚 Funding for the RFC Editor function is currently provided by the Internet Society. πŸ’œ

πŸ“¦ where this page comes from