Re: New Version Notification for draft-divilly-atom-hierarchy-01

"Nikunj R. Mehta" <nikunj.mehta@oracle.com> Mon, 08 June 2009 23:37 UTC

Return-Path: <owner-atom-syntax@mail.imc.org>
X-Original-To: ietfarch-atompub-archive@core3.amsl.com
Delivered-To: ietfarch-atompub-archive@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id EC86728C0E2 for <ietfarch-atompub-archive@core3.amsl.com>; Mon, 8 Jun 2009 16:37:11 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -5.126
X-Spam-Level:
X-Spam-Status: No, score=-5.126 tagged_above=-999 required=5 tests=[AWL=-0.329, BAYES_00=-2.599, HTML_MESSAGE=0.001, J_CHICKENPOX_26=0.6, J_CHICKENPOX_27=0.6, J_CHICKENPOX_44=0.6, RCVD_IN_DNSWL_MED=-4, UNPARSEABLE_RELAY=0.001]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id nt8vksmLFPLB for <ietfarch-atompub-archive@core3.amsl.com>; Mon, 8 Jun 2009 16:37:09 -0700 (PDT)
Received: from balder-227.proper.com (properopus-pt.tunnel.tserv3.fmt2.ipv6.he.net [IPv6:2001:470:1f04:392::2]) by core3.amsl.com (Postfix) with ESMTP id D893C3A6A88 for <atompub-archive@ietf.org>; Mon, 8 Jun 2009 16:37:07 -0700 (PDT)
Received: from balder-227.proper.com (localhost [127.0.0.1]) by balder-227.proper.com (8.14.2/8.14.2) with ESMTP id n58MoxdJ027527 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Mon, 8 Jun 2009 15:50:59 -0700 (MST) (envelope-from owner-atom-syntax@mail.imc.org)
Received: (from majordom@localhost) by balder-227.proper.com (8.14.2/8.13.5/Submit) id n58MoxkR027526; Mon, 8 Jun 2009 15:50:59 -0700 (MST) (envelope-from owner-atom-syntax@mail.imc.org)
X-Authentication-Warning: balder-227.proper.com: majordom set sender to owner-atom-syntax@mail.imc.org using -f
Received: from rgminet11.oracle.com (rcsinet11.oracle.com [148.87.113.123]) by balder-227.proper.com (8.14.2/8.14.2) with ESMTP id n58Mow5v027519 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=FAIL) for <atom-syntax@imc.org>; Mon, 8 Jun 2009 15:50:58 -0700 (MST) (envelope-from nikunj.mehta@oracle.com)
Received: from rgminet15.oracle.com (rcsinet15.oracle.com [148.87.113.117]) by rgminet11.oracle.com (Switch-3.3.1/Switch-3.3.1) with ESMTP id n58MpnaI018844 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Mon, 8 Jun 2009 22:51:50 GMT
Received: from abhmt006.oracle.com (abhmt006.oracle.com [141.146.116.15]) by rgminet15.oracle.com (Switch-3.3.1/Switch-3.3.1) with ESMTP id n58MopCv015480; Mon, 8 Jun 2009 22:50:58 GMT
Received: from dhcp-4op5-4op6-west-144-25-174-134.usdhcp.oraclecorp.com (/144.25.174.134) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Mon, 08 Jun 2009 15:50:45 -0700
Cc: atom-syntax Syntax <atom-syntax@imc.org>, James M Snell <jasnell@gmail.com>
Message-Id: <3BC8BA86-58FF-4CC8-ADBF-B411927A7A30@oracle.com>
From: "Nikunj R. Mehta" <nikunj.mehta@oracle.com>
To: Al Brown <albertcbrown@us.ibm.com>
In-Reply-To: <OFF6C94627.F2D911AC-ON882575CF.007C33F4-882575CF.007CF665@us.ibm.com>
Content-Type: multipart/alternative; boundary="Apple-Mail-3--93807316"
Mime-Version: 1.0 (Apple Message framework v935.3)
Subject: Re: New Version Notification for draft-divilly-atom-hierarchy-01
Date: Mon, 08 Jun 2009 15:49:24 -0700
References: <20090605170645.A922728C10F@core3.amsl.com> <D29129D3-6D02-417D-AA18-78FCB7CF4E12@oracle.com> <OFD77552CC.EF05D1F7-ON882575CC.006E3712-882575CC.0073EA7D@us.ibm.com> <4A2D5EDC.1020207@gmail.com> <OF0E5CEE35.559023E6-ON882575CF.0077F470-882575CF.0079DF91@us.ibm.com> <0C987BDE-612B-4DB1-9B10-8A6A8F5515CD@oracle.com> <OFF6C94627.F2D911AC-ON882575CF.007C33F4-882575CF.007CF665@us.ibm.com>
X-Mailer: Apple Mail (2.935.3)
X-Source-IP: abhmt006.oracle.com [141.146.116.15]
X-Auth-Type: Internal IP
X-CT-RefId: str=0001.0A090209.4A2D95CE.001E:SCFSTAT5015188,ss=1,fgs=0
Sender: owner-atom-syntax@mail.imc.org
Precedence: bulk
List-Archive: <http://www.imc.org/atom-syntax/mail-archive/>
List-Unsubscribe: <mailto:atom-syntax-request@imc.org?body=unsubscribe>
List-ID: <atom-syntax.imc.org>

On Jun 8, 2009, at 3:44 PM, Al Brown wrote:

> Nikunj wrote:
> >	Al Brown wrote:
>
> b. add a new attribute to link that specifies if they are inlined
> (down) <link rel="down" href="http://www.example.com/foo/down" />
> (down-tree) <link rel="down" ah:inlined="true" href="http://www.example.com/foo/down/inlined 
> " />
> This adds complexity if there are cardinality constraints on link  
> relations such as alternate and clients not aware of I-D may think  
> they are the same.
> >IMHO, ah:inlined does nothing because the presence of ae:inline  
> makes it plenty clear. If you were trying to say that there is a  
> certain level of depth in the tree, may >be an attribute would help,  
> but even then you don't know what things the server may have elided  
> from every entry. So, bottom line is, there is not much value to an  
> >attribute to describe the thing that is in-lined. You are best off  
> using what you have received as an approximation and then get the  
> exact representation if you care so >much in a separate network  
> call. Of course, out-of-band communication or specialized mark-up  
> may provide enough information for you to avoid such round-trips.
> Maybe I did not explain clearly enough - this is a protocol/ 
> hypermedia issue. How does the client say (follow the right link  
> relation) I want an inlined representation of this resource  
> specified by a link relation? E.g.,
>
The question is clearly phrased this time and I understand the  
intention. However, as I said in the previous message, modulo hreflang  
and type,

Atom does not provide any means of advertising URIs for retrieving  
representation variants. This could be a source of your  
dissatisfaction but it applies equally well regardless of hierarchy or  
in-lining.
> Client (C) navigates to this atom entry (A) somehow. A wants to  
> advertise to the client that A has references to two to  
> representations for resource B.  One version of B is flat (ala a  
> feed). One version of B is the same flat feed with its link  
> relations inlined (ala tree).
>
> How can resource A provide the client C with information there are  
> two choices available for B (flat vs tree)?
>
Perhaps James Snell's template idea may be worth considering. I don't  
know yet.
> -Al
>
>
> Al Brown
> Emerging Standards and Industry Frameworks
> CMIS: https://w3.tap.ibm.com/w3ki07/display/ECMCMIS/Home
> Industry Frameworks: https://w3.tap.ibm.com/w3ki07/display/ECMIF/Home
>
> Office 714 327 3453
> Mobile 714 263 6441
> Email albertcbrown@us.ibm.com
> CONFIDENTIAL NOTICE: The contents of this message, including any  
> attachments, are confidential and are intended solely for the use of  
> the person or entity to whom the message was addressed. If you are  
> not the intended recipient of this message, please be advised that  
> any dissemination, distribution, or use of the contents of this  
> message is strictly prohibited. If you received this message in  
> error, please notify the sender. Please also permanently delete all  
> copies of the original message and any attached documentation.
>
> <graycol.gif>"Nikunj R. Mehta" ---06/08/2009 03:33:06 PM---As I see  
> it, whether there is a @rel=down-tree or not, you would have to  
> communicate certain information out-of-band, e.g., dep
>
> <ecblank.gif>
> From:	<ecblank.gif>
> "Nikunj R. Mehta" <nikunj.mehta@oracle.com>
> <ecblank.gif>
> To:	<ecblank.gif>
> Al Brown/Costa Mesa/IBM@IBMUS
> <ecblank.gif>
> Cc:	<ecblank.gif>
> James M Snell <jasnell@gmail.com>, atom-syntax Syntax <atom-syntax@imc.org 
> >
> <ecblank.gif>
> Date:	<ecblank.gif>
> 06/08/2009 03:33 PM
> <ecblank.gif>
> Subject:	<ecblank.gif>
> Re: New Version Notification for draft-divilly-atom-hierarchy-01
>
>
>
> As I see it, whether there is a @rel=down-tree or not, you would  
> have to communicate certain information out-of-band, e.g., depth of  
> the tree or the level of completeness in every in-lined entry.
>
> Atom does not provide any means of advertising URIs for retrieving  
> representation variants. This could be a source of your  
> dissatisfaction but it applies equally well regardless of hierarchy  
> or in-lining.
>
> On Jun 8, 2009, at 3:11 PM, Al Brown wrote:
> James wrote:
> >Hmmm.... I know we've discussed this, but after thinking about it  
> more
> >and looking through the examples, I'm becoming increasingly less
> >convinced that we need a distinction between "down" and "down-tree".
> >One should simply assume that "down" could point to a child entry or
> >child feed and that those children could potentially also be parents.
> >Yes, that possibly increases the processing compexity but I think it
> >simplifies the model overall.
>
> We've discussed this today on the phone.  For me this is a  
> difference of protocol/hypermedia vs. syntax.  For syntax, "down"  
> and "up" are sufficient.  A flat model can modeled with feed and a  
> tree can be modeled using generic inlining in a feed or entry.
>
> A client requests an atom document - entry or feed.  How does the  
> server advertise to the client, via what is in the atom document,  
> here are two links to representations (flat vs. tree) of a resource,  
> e.g. the folder's children:  one link returns a flat list (no  
> inlining) and one link returns a tree (inlined).
> It is no different from seeing an HTML vs. a PDF representation of  
> the same blog entry. One gives you a lot of context such as  
> comments, related posts, advertisements and the like, and the other  
> may be limited. This problem, AFAICT, exists regardless of CMIS or  
> hierarchy.
> Both are the same document just with or without inlining of linked  
> resources of a particular link relation.
> For all practical purposes, they are different documents, i.e.,  
> different representations of a single resource.
> Since the resources are crossing the wire, the first resource (e.g.,  
> folder) needs to convey how access a hierarchical resource (e.g.,  
> items in a folder) in either a flat mode (feed) or tree (feed with  
> inlined resources).
>
> The options I see are:
> a. append -tree to link relations that may inline (e.g., down-tree,  
> up-tree). Not so nice, but works.
> It may not be specific enough anyway to say this is a tree link  
> because it says nothing about depth
> b. add a new attribute to link that specifies if they are inlined
> (down) <link rel="down" href="http://www.example.com/foo/down" />
> (down-tree) <link rel="down" ah:inlined="true" href="http://www.example.com/foo/down/inlined 
> " />
> This adds complexity if there are cardinality constraints on link  
> relations such as alternate and clients not aware of I-D may think  
> they are the same.
> IMHO, ah:inlined does nothing because the presence of ae:inline  
> makes it plenty clear. If you were trying to say that there is a  
> certain level of depth in the tree, may be an attribute would help,  
> but even then you don't know what things the server may have elided  
> from every entry. So, bottom line is, there is not much value to an  
> attribute to describe the thing that is in-lined. You are best off  
> using what you have received as an approximation and then get the  
> exact representation if you care so much in a separate network call.  
> Of course, out-of-band communication or specialized mark-up may  
> provide enough information for you to avoid such round-trips.
> c. leverage link templates rather than link relations
> I am not aware of "link templates". If you are referring to draft- 
> gregorio-uri-templates, then too there is no notion of templates  
> baked in to the link element yet.
> d. use out of band communication - append a uri argument such as  
> includeLinkRel=down to the URI of the resource; could also be HTTP  
> header. Not very RESTful but works.
>
> If the model is not sufficient to convey to the client here's a flat  
> mode vs. here's a tree mode, CMIS will have to find another  
> alternative as it is currently required by the CMIS domain model.
>
> I see the options for CMIS as:
> 1. Leverage the model specified by the I-D if exists (best)
> 2. Move down-tree to CMIS namespace. This does not solve the  
> protocol/hypermedia problem for anybody else.
> 3. Specify in the CMIS specification an URI argument to enable  
> inlining of 'down'.
>
> -Al
>
> Al Brown
> Emerging Standards and Industry Frameworks
> CMIS: https://w3.tap.ibm.com/w3ki07/display/ECMCMIS/Home
> Industry Frameworks: https://w3.tap.ibm.com/w3ki07/display/ECMIF/Home
>
> Office 714 327 3453
> Mobile 714 263 6441
> Email albertcbrown@us.ibm.com
> CONFIDENTIAL NOTICE: The contents of this message, including any  
> attachments, are confidential and are intended solely for the use of  
> the person or entity to whom the message was addressed. If you are  
> not the intended recipient of this message, please be advised that  
> any dissemination, distribution, or use of the contents of this  
> message is strictly prohibited. If you received this message in  
> error, please notify the sender. Please also permanently delete all  
> copies of the original message and any attached documentation.
>
> <graycol.gif>James M Snell ---06/08/2009 11:55:37 AM---Comments  
> below...
> <ecblank.gif>
> From:	<ecblank.gif>
> James M Snell <jasnell@gmail.com>
> <ecblank.gif>
> To:	<ecblank.gif>
> Al Brown/Costa Mesa/IBM@IBMUS
> <ecblank.gif>
> Cc:	<ecblank.gif>
> "Nikunj R. Mehta" <nikunj.mehta@oracle.com>, Atom-Syntax Syntax <atom-syntax@imc.org 
> >, owner-atom-syntax@mail.imc.org
> <ecblank.gif>
> Date:	<ecblank.gif>
> 06/08/2009 11:55 AM
> <ecblank.gif>
> Subject:	<ecblank.gif>
> Re: Fwd: New Version Notification for draft-divilly-atom-hierarchy-01
>
>
>
> Comments below...
>
> Al Brown wrote:
> >
> > The 01 draft is a much better. I am concerned the generic mechanism
> > using inlining links is sub-optimal for displaying a hierarchy that
> > this I-D helps navigate via the new link relations.
> >
> in-lining arbitrarily complex hierarchies is always going to be
> problematic and suboptimal... which is why I was so adamant about not
> baking hierarchy into Atom and Atompub in the first place when we were
> working on all this stuff initially.  Despite the added verbosity that
> this approach adds, however, I think it's likely the most acceptable
> approach.
>
> > First example: there are two down relations: down and down-tree.  
> It is
> > important to have both of those link relations on the [standalone]
> > atom entry that represents a folder so the client can chose a flat
> > (feed) or tree (expanded feed) representation. If the client chooses
> > the tree representation, then on the atom feed returned the server
> > will inline using the link relation down. down-tree is not expanded
> > with content inline. E.g.,
> >
> > <atom:entry>
> > ...
> > <!-- children level 1 -->
> > <atom:link rel="down" type="application/atom+xml;type=feed"
> > href="/finance/feeds/default/portfolios/1/positions">
> > <ae:inline>
> > <atom:feed>
> > <!-- /a -->
> > <atom:entry>
> > ...
> > <!-- children level 2 for /a -->
> > <atom:link rel="down"
> > href="/finance/feeds/default/portfolios/1/positions"/>
> > ...
> > <ae:inline>
> > <atom:feed>
> > <!-- entry /a/1 -->
> > <atom:entry>
> > ...
> > <atom:link rel="down"
> > href="/finance/feeds/default/portfolios/1/positions/down">
> > <!-- repeats -->
> > </atom:link>
> > <atom:link rel="down-tree"
> > href="/finance/feeds-tree/default/portfolios/1/positions/down" />
> >
> > ...
> > </atom:entry>
> > </atom:feed>
> > </ae:inline>
> > <atom:entry>...</atom:entry>
> > <atom:entry>...</atom:entry>
> > </atom:feed>
> > </ae:inline>
> > </atom:link>
> > <atom:link rel="down-tree" type="application/atom+xml;type=feed"
> > href="/finance/feeds-tree/default/portfolios/1/positions" />
> >
> > ...
> > </atom:entry>
> >
> > The contents of the down link relation will be what should be  
> included
> > in the down-tree due to recursion through the atom entries. Having a
> > separate extension element, side-steps this issue of expression.
> >
> Hmmm.... I know we've discussed this, but after thinking about it more
> and looking through the examples, I'm becoming increasingly less
> convinced that we need a distinction between "down" and "down-tree".
> One should simply assume that "down" could point to a child entry or
> child feed and that those children could potentially also be parents.
> Yes, that possibly increases the processing compexity but I think it
> simplifies the model overall.
>
> > Second example: verbosity
> > This proposal now has:
> > <atom:entry>
> > ...
> > <atom:link rel="down" type="application/atom+xml;type=feed"
> > href="/finance/feeds/default/portfolios/1/positions">
> > <ae:inline>
> > <atom:feed>
> > <atom:link rel="self"
> > href="/finance/feeds/default/portfolios/1/positions"/>
> > ...
> > <atom:entry>...</atom:entry>
> > <atom:entry>...</atom:entry>
> > <atom:entry>...</atom:entry>
> > </atom:feed>
> > </ae:inline>
> > </atom:link>
> > ...
> > </atom:entry>
> >
> > instead of a simpler mechanism:
> > <atom:entry>
> > ...
> > <ah:include rel="down">
> > <atom:entry>...</atom:entry>
> > <atom:entry>...</atom:entry>
> > <atom:entry>...</atom:entry>
> > </ah:include>
> > ...
> > </atom:entry>
> >
> > The I-D introduces a concept of hierarchy through
> > up/up-tree/down-tree/down relations yet a all-purpose mechanism for
> > inclusion. Most (all?) of the information on the feed element is
> > duplicated on the enclosing entry (id, uri, etc). Can't we do better
> > for this specific scenario the I-D is addressing?
> >
> I think we can address this by eliminating the restriction that "down"
> and "up" must always point to Atom feed documents and by changing the
> cardinality rules for those links. That restriction, I think, is
> arbitrary and unnecessary
>
> It would allow us to do something like....
>
> <atom:entry>
> ...
> <atom:link rel="down" type="application/atom+xml;type=entry"  
> href="child1">
> <ae:inline>
> <atom:entry>...</atom:entry>
> </ae:inline>
> </atom:link>
> <atom:link rel="down" type="application/atom+xml;type=entry"  
> href="child2">
> <ae:inline>
> <atom:entry>...</atom:entry>
> </ae:inline>
> </atom:link>
> ...
> <atom:link rel="down" type="application/atom+xml;type=entry"  
> href="childN">
> <ae:inline>
> <atom:entry>...</atom:entry>
> </ae:inline>
> </atom:link>
> ...
> </atom:entry>
>
> Unlike any of the other methods discussed, this approach would allow
> clients that don't understand the hierarchy model to still understand
> that there is some kind of link relationship with each of the  
> individual
> child resources and eliminates the need to include the extraneous
> atom:feed metadata.
>
> Note that this is the same basic approach taken by my comment thread
> extension (in-reply-to).
>
> - James
>
>
>