I still believe that relative URIs shouldn't exist in Simple Extension
constructs [1]. I think that the lack of rationale for their being 2-3
classes of extension construct is proving to be harmful.


Prior to the introduction of Section 6, Atom pretty much said you can
include any foreign markup anywhere. I thought that this conflicted
with the claim made by the charter that:

> Atom consists of:
>     * A conceptual model of a resource
>     * A concrete syntax for this model

I thought that the model should be separable from the syntax, so that
people can use databases and RDF stores as their back-ends rather than
just XML files. And I thought that it was important that extensions
should be part of that model, rather than only be representable in the
syntax, else extensions would be poor-cousins of the core elements.

Restricting Atom extensions to only being simple string name/value
parameters would ensure that they were represented in the model, but
it would have been too limiting.

So the two classes of Extension construct, Simple and Structured, are
a compromise between constraints and flexibility.

The pros and cons of each class are:

Simple Extension constructs:
----------------------------

  + simple string name/value properties of the feed/entry/person. Easy
    to implement generically end-to-end in servers/clients so that
    extensions can be deployed generically without requiring "boil the
    ocean" acceptance.

  + property semantics as described by section 6.4.1.
    
  + publishing clients could provide an extension editor, where
    metadata fields could be added to the clients form, given a
    namespace URI and element name.

  + extensions don't need to be defined specifically for Atom. RDF
    Vocabularies, RSS extensions, DC, and PRISM already define
    properties that are compatible with Atom Simple Extensions.

  + simple, useful mapping to RDF

  - can't represent language sensitive text. This decision was made
    because very few RSS extensions contain language sensitive text,
    (they tend to contain dates, numbers, tokens, URIs etc - when
    language-sensitive text is required Structured Extensions should
    be used). Also, the barrier for implementations such as custom
    property tables, CRMs, and WebDAV implementations would be high. 

  - can't represent relative URI references, because they are defined
    to be strings only, and generic implementations can't know what is
    or isn't a URI reference.

    
Structured Extension constructs:
--------------------------------

  + Can support (almost) arbitrary XML.

  - no pre-defined semantics.

  + no pre-defined semantics.

  - clumsy generic mapping to RDF (by preserving the XML blob), though
    with extension specific knowledge a better mapping could be used.
  
  + Publishing servers can generically support them by preserving the
    blob of XML.

  - Publishing clients can't easily generically support them, as the UI
    to edit a chunk of arbitrary XML wouldn't be very user-friendly.
  
  - require at least a mandatory attribute or child in order to exist.


Namespaced attributes & atom:link children
------------------------------------------

  - Not part of the Atom model - only representable by the syntax.

  - Not really practical to support generically; require
    "boil the ocean" adoption.
  
  - Really not something I'm keen on as evidenced by this biased
    assessment...  Are they really allowed for things other than
    future versions of Atom?

  + ...OK, they let you add annotations to elements in a way that
    would be difficult to address without an RDF style graph-based
    format.


Does that sound about right?

So, can we agree that relative URIRefs aren't allowed in Simple
Extension constructs and add a clarification, else their
implementation won't satisfy the rationale for their design.

If I'm wrong, and the rationale behind Simple Extensions isn't
important, then can someone explain why there are two classes of
extension?

[1] http://www.imc.org/atom-syntax/mail-archive/msg16598.html

-- 
Dave

Reply via email to