<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Resource Identity and Cool URIs</title>
	<atom:link href="http://www.subbu.org/blog/2008/12/resource-identity-and-cool-uris/feed" rel="self" type="application/rss+xml" />
	<link>http://www.subbu.org/blog/2008/12/resource-identity-and-cool-uris</link>
	<description></description>
	<lastBuildDate>Wed, 08 Feb 2012 05:16:45 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>By: DamnHandy &#187; URL vs. URI: URLs as Queries and URIs as Identities</title>
		<link>http://www.subbu.org/blog/2008/12/resource-identity-and-cool-uris/comment-page-1#comment-190670</link>
		<dc:creator>DamnHandy &#187; URL vs. URI: URLs as Queries and URIs as Identities</dc:creator>
		<pubDate>Wed, 28 Dec 2011 16:09:53 +0000</pubDate>
		<guid isPermaLink="false">http://www.subbu.org/?p=756#comment-190670</guid>
		<description>[...] Allamaraju had an interesting post a while back about Resource Identity and Cool URIs. Subbu asserts that there is a distintion between the identity of a resource and its location and [...]</description>
		<content:encoded><![CDATA[<p>[...] Allamaraju had an interesting post a while back about Resource Identity and Cool URIs. Subbu asserts that there is a distintion between the identity of a resource and its location and [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: link and self - brettdargan.com</title>
		<link>http://www.subbu.org/blog/2008/12/resource-identity-and-cool-uris/comment-page-1#comment-17187</link>
		<dc:creator>link and self - brettdargan.com</dc:creator>
		<pubDate>Wed, 21 Jan 2009 23:26:44 +0000</pubDate>
		<guid isPermaLink="false">http://www.subbu.org/?p=756#comment-17187</guid>
		<description>[...] Subbu and &lt;Stefan Tilkov have been discussing URI Equivalence, linking to self and Resource Identities, so here is my view. [...]</description>
		<content:encoded><![CDATA[<p>[...] Subbu and &lt;Stefan Tilkov have been discussing URI Equivalence, linking to self and Resource Identities, so here is my view. [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: URIs vs. Identifiers - Take Two at subbu.org</title>
		<link>http://www.subbu.org/blog/2008/12/resource-identity-and-cool-uris/comment-page-1#comment-16881</link>
		<dc:creator>URIs vs. Identifiers - Take Two at subbu.org</dc:creator>
		<pubDate>Sun, 18 Jan 2009 03:09:08 +0000</pubDate>
		<guid isPermaLink="false">http://www.subbu.org/?p=756#comment-16881</guid>
		<description>[...] response my Resource Identity and Cool URIs, Stefan Tilkov wrote an interesting post with some counter [...]</description>
		<content:encoded><![CDATA[<p>[...] response my Resource Identity and Cool URIs, Stefan Tilkov wrote an interesting post with some counter [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: subbu</title>
		<link>http://www.subbu.org/blog/2008/12/resource-identity-and-cool-uris/comment-page-1#comment-15532</link>
		<dc:creator>subbu</dc:creator>
		<pubDate>Fri, 02 Jan 2009 21:03:40 +0000</pubDate>
		<guid isPermaLink="false">http://www.subbu.org/?p=756#comment-15532</guid>
		<description>@Little Fyr: 

On the first point, those apps should come up with a naming scheme for identifiers to avoid collisions. I am suggesting using raw DB IDs, but you could mint URNs based on those raw IDs. 

The idea of using a link in place of ID is fine. However, borrowing from Atom, you can accomplish the same with an id element/property.

In any case, the key point of this post was to show that URIs used to access a representation of a resource can not always be used to determine resource identity. How an app chooses to include identity data in representations is an implementation choice.</description>
		<content:encoded><![CDATA[<p>@Little Fyr: </p>
<p>On the first point, those apps should come up with a naming scheme for identifiers to avoid collisions. I am suggesting using raw DB IDs, but you could mint URNs based on those raw IDs. </p>
<p>The idea of using a link in place of ID is fine. However, borrowing from Atom, you can accomplish the same with an id element/property.</p>
<p>In any case, the key point of this post was to show that URIs used to access a representation of a resource can not always be used to determine resource identity. How an app chooses to include identity data in representations is an implementation choice.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Little Fyr</title>
		<link>http://www.subbu.org/blog/2008/12/resource-identity-and-cool-uris/comment-page-1#comment-15504</link>
		<dc:creator>Little Fyr</dc:creator>
		<pubDate>Fri, 02 Jan 2009 08:45:59 +0000</pubDate>
		<guid isPermaLink="false">http://www.subbu.org/?p=756#comment-15504</guid>
		<description>Subbu, i think you&#039;re demonstrably wrong here. 

You and I are both exposing REST APIs for Blogs. We have blog, post and comment resources. And we are both using the same standard media types for our representations. We know nothing about each other, nor about who is using our APIs. 

Jim has an aggregation application that is capable of consuming resources from both of us. When he requests a resource from both of us, its going to come from different domains, but they&#039;re going to have the same media type and because databases issue IDs sequentially, our two resources have the same database ID. So now we have a legitimate collision that is only going to be resolved if Jim segregates those IDs by originating domain in which case origin Domain + DataBase ID which seems to me to be very much like a URI. 

Or lets take the case where we have two distinct resources (maintained in different database tables) that share a common media type. Lets use the idea of a banking API and we have accounts, but we also have wire transfers, and bill payments. For what ever reason, there is an agreement that the end points of a transfer resource (that is the originating and destination accounts) must conform be able to respond with a common media type. Now my accounts, bill payment vendors and SWIFT Account descriptions all have the same media type but are independent of each other and can conceivably have colliding database IDs. 

Or how do you reconcile the case when you have multiple representations of the same entity?

I would submit that dealing with the first example (I hope the most common), makes it impossible to deal with the second or the example you allude to in you comment where multiple domains have something to say about the same entity. 

Identity is an issue that is certainly not new; &lt;a href=&quot;topicmaps.org&quot; rel=&quot;nofollow&quot;&gt;Topic Maps&lt;/a&gt; have been dealing with this issue for a long time. One of the things they do is use a Published Subject Indicator (which is an URI) so that if two map are merged and there exists one or more topics with a common PSI, the refer to the same subject. 

We can do the same thing here:

&lt;code&gt;
GET /myapp/person/abc?include=addressbook  
Host: www.example.org  
  
200 OK  
Content-Type: ...  
  
&lt;person&gt;  
  &lt;link href=&quot;http://www.example.org/person/abc?include=addressBook&quot; rel=&quot;self&quot;/&gt;  
  &lt;link href=&quot;urn:org:exmaple:person:subbu&quot; rel=&quot;PublishedResourceIndicator&quot;/&gt;  
  &lt;first-name&gt;Subbu&lt;/first-name&gt;  
  &lt;last-name&gt;Allamaraju&lt;/last-name&gt;  
  &lt;addresses&gt;  
    &lt;address&gt;  
      ...  
    &lt;/address&gt;  
    ...  
  &lt;/addresses&gt;  
&lt;person&gt;
&lt;/code&gt;

Here I&#039;ve coined the term Published Resource Indicator (which should be shortened to PRI) such that we can say that any two representations with identical PRIs (following normal URI interpretation) refer to the same resource, regardless of the origin of resource and its media type. Because some representations (say an image) lack hyperlink semantics, you would want to add a header to HTTP to contain the PRI. 

I think this nicely resolves the issue. But there is one added benefit. If one were to use a network resolvable URI, then the question becomes, what do your get if you resolve that URI. Instead of getting a representation of the resource, I would send a human readable description (if appropriate), a list of media types known to represent the resource and a list of URIs known to return canonical representations of the resource. 

So the bottle neck isn&#039;t with the use of a URI, but rather of the meaning of &quot;self&quot;.</description>
		<content:encoded><![CDATA[<p>Subbu, i think you&#8217;re demonstrably wrong here. </p>
<p>You and I are both exposing REST APIs for Blogs. We have blog, post and comment resources. And we are both using the same standard media types for our representations. We know nothing about each other, nor about who is using our APIs. </p>
<p>Jim has an aggregation application that is capable of consuming resources from both of us. When he requests a resource from both of us, its going to come from different domains, but they&#8217;re going to have the same media type and because databases issue IDs sequentially, our two resources have the same database ID. So now we have a legitimate collision that is only going to be resolved if Jim segregates those IDs by originating domain in which case origin Domain + DataBase ID which seems to me to be very much like a URI. </p>
<p>Or lets take the case where we have two distinct resources (maintained in different database tables) that share a common media type. Lets use the idea of a banking API and we have accounts, but we also have wire transfers, and bill payments. For what ever reason, there is an agreement that the end points of a transfer resource (that is the originating and destination accounts) must conform be able to respond with a common media type. Now my accounts, bill payment vendors and SWIFT Account descriptions all have the same media type but are independent of each other and can conceivably have colliding database IDs. </p>
<p>Or how do you reconcile the case when you have multiple representations of the same entity?</p>
<p>I would submit that dealing with the first example (I hope the most common), makes it impossible to deal with the second or the example you allude to in you comment where multiple domains have something to say about the same entity. </p>
<p>Identity is an issue that is certainly not new; <a href="topicmaps.org" rel="nofollow">Topic Maps</a> have been dealing with this issue for a long time. One of the things they do is use a Published Subject Indicator (which is an URI) so that if two map are merged and there exists one or more topics with a common PSI, the refer to the same subject. </p>
<p>We can do the same thing here:</p>
<p><code><br />
GET /myapp/person/abc?include=addressbook<br />
Host: <a href="http://www.example.org" rel="nofollow">http://www.example.org</a>  </p>
<p>200 OK<br />
Content-Type: ...  </p>
<p>&lt;person&gt;<br />
  &lt;link href=&quot;<a href="http://www.example.org/person/abc?include=addressBook&#038;quot" rel="nofollow">http://www.example.org/person/abc?include=addressBook&#038;quot</a>; rel=&quot;self&quot;/&gt;<br />
  &lt;link href=&quot;urn:org:exmaple:person:subbu&quot; rel=&quot;PublishedResourceIndicator&quot;/&gt;<br />
  &lt;first-name&gt;Subbu&lt;/first-name&gt;<br />
  &lt;last-name&gt;Allamaraju&lt;/last-name&gt;<br />
  &lt;addresses&gt;<br />
    &lt;address&gt;<br />
      ...<br />
    &lt;/address&gt;<br />
    ...<br />
  &lt;/addresses&gt;<br />
&lt;person&gt;<br />
</code></p>
<p>Here I&#8217;ve coined the term Published Resource Indicator (which should be shortened to PRI) such that we can say that any two representations with identical PRIs (following normal URI interpretation) refer to the same resource, regardless of the origin of resource and its media type. Because some representations (say an image) lack hyperlink semantics, you would want to add a header to HTTP to contain the PRI. </p>
<p>I think this nicely resolves the issue. But there is one added benefit. If one were to use a network resolvable URI, then the question becomes, what do your get if you resolve that URI. Instead of getting a representation of the resource, I would send a human readable description (if appropriate), a list of media types known to represent the resource and a list of URIs known to return canonical representations of the resource. </p>
<p>So the bottle neck isn&#8217;t with the use of a URI, but rather of the meaning of &#8220;self&#8221;.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: subbu</title>
		<link>http://www.subbu.org/blog/2008/12/resource-identity-and-cool-uris/comment-page-1#comment-14817</link>
		<dc:creator>subbu</dc:creator>
		<pubDate>Wed, 24 Dec 2008 22:43:35 +0000</pubDate>
		<guid isPermaLink="false">http://www.subbu.org/?p=756#comment-14817</guid>
		<description>@Alex: Sorry - My spam blocker blocked this comment, and I just approved.

Regarding URN examples, please see http://en.wikipedia.org/wiki/Uniform_Resource_Name. URNs are URIs too, but do not imply any resource location. The best example is the URN for ISBN numbers.</description>
		<content:encoded><![CDATA[<p>@Alex: Sorry &#8211; My spam blocker blocked this comment, and I just approved.</p>
<p>Regarding URN examples, please see <a href="http://en.wikipedia.org/wiki/Uniform_Resource_Name" rel="nofollow">http://en.wikipedia.org/wiki/Uniform_Resource_Name</a>. URNs are URIs too, but do not imply any resource location. The best example is the URN for ISBN numbers.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Alex Black</title>
		<link>http://www.subbu.org/blog/2008/12/resource-identity-and-cool-uris/comment-page-1#comment-14816</link>
		<dc:creator>Alex Black</dc:creator>
		<pubDate>Wed, 24 Dec 2008 22:42:13 +0000</pubDate>
		<guid isPermaLink="false">http://www.subbu.org/?p=756#comment-14816</guid>
		<description>I apologise for that question comment there :) I thought I submitted a comment yesterday but I must have made mistake somehow.

Subbu, great blog btw!

Can you talk a bit more about URNs and give some examples?  Personally solution #2 above appeals to me, but I don&#039;t know much about URNs and would love to learn more.

Thanks,

- Alex</description>
		<content:encoded><![CDATA[<p>I apologise for that question comment there :) I thought I submitted a comment yesterday but I must have made mistake somehow.</p>
<p>Subbu, great blog btw!</p>
<p>Can you talk a bit more about URNs and give some examples?  Personally solution #2 above appeals to me, but I don&#8217;t know much about URNs and would love to learn more.</p>
<p>Thanks,</p>
<p>- Alex</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Alex Black</title>
		<link>http://www.subbu.org/blog/2008/12/resource-identity-and-cool-uris/comment-page-1#comment-14815</link>
		<dc:creator>Alex Black</dc:creator>
		<pubDate>Wed, 24 Dec 2008 22:37:10 +0000</pubDate>
		<guid isPermaLink="false">http://www.subbu.org/?p=756#comment-14815</guid>
		<description>Hi Subbu, did my previous comment get through? I don&#039;t see it on your blog yet.

Thanks,

- Alex</description>
		<content:encoded><![CDATA[<p>Hi Subbu, did my previous comment get through? I don&#8217;t see it on your blog yet.</p>
<p>Thanks,</p>
<p>- Alex</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: subbu</title>
		<link>http://www.subbu.org/blog/2008/12/resource-identity-and-cool-uris/comment-page-1#comment-14789</link>
		<dc:creator>subbu</dc:creator>
		<pubDate>Wed, 24 Dec 2008 16:19:02 +0000</pubDate>
		<guid isPermaLink="false">http://www.subbu.org/?p=756#comment-14789</guid>
		<description>It is much simpler than that. Usually, most entities are stored in some backend DB, i.e., have some identity, which we generally encode into into URIs. I am suggesting to return the same as an identifier in representations. So, yes, it will be unique across all media types.

When there are multiple domains dealing with the same set of entities, depending how they interact, they may need to use a common scheme for identifiers. This is already a common practice in a number of application domains.</description>
		<content:encoded><![CDATA[<p>It is much simpler than that. Usually, most entities are stored in some backend DB, i.e., have some identity, which we generally encode into into URIs. I am suggesting to return the same as an identifier in representations. So, yes, it will be unique across all media types.</p>
<p>When there are multiple domains dealing with the same set of entities, depending how they interact, they may need to use a common scheme for identifiers. This is already a common practice in a number of application domains.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Little Fyr</title>
		<link>http://www.subbu.org/blog/2008/12/resource-identity-and-cool-uris/comment-page-1#comment-14754</link>
		<dc:creator>Little Fyr</dc:creator>
		<pubDate>Wed, 24 Dec 2008 07:18:08 +0000</pubDate>
		<guid isPermaLink="false">http://www.subbu.org/?p=756#comment-14754</guid>
		<description>This makes great sense, except that I wonder whether it works in practice. Obviously, the IDs need to be sufficiently unique (for some value of sufficiently). It is probably enough to have an ID unique among a single media type. That is, unless you have a compelling reason for the same &quot;thing&quot; to be returned using different media types. You would have no way to connect them and you would loose any opportunity at polymorphism. This probably a very edge case

More compelling to me is the case where you have multiple domains all using the same type. You have no reason to expect that the numbering scheme in each domain will be in compatible with the others. At that point you&#039;re down to tying it to source domain, and media type and you&#039;re probably just better off (unless you can guarantee that you&#039;ll always have control over how your api is used).</description>
		<content:encoded><![CDATA[<p>This makes great sense, except that I wonder whether it works in practice. Obviously, the IDs need to be sufficiently unique (for some value of sufficiently). It is probably enough to have an ID unique among a single media type. That is, unless you have a compelling reason for the same &#8220;thing&#8221; to be returned using different media types. You would have no way to connect them and you would loose any opportunity at polymorphism. This probably a very edge case</p>
<p>More compelling to me is the case where you have multiple domains all using the same type. You have no reason to expect that the numbering scheme in each domain will be in compatible with the others. At that point you&#8217;re down to tying it to source domain, and media type and you&#8217;re probably just better off (unless you can guarantee that you&#8217;ll always have control over how your api is used).</p>
]]></content:encoded>
	</item>
</channel>
</rss>

