<?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 &#8211; Take Two</title>
	<atom:link href="http://www.subbu.org/blog/2009/01/uris-vs-identifiers-take-two/feed" rel="self" type="application/rss+xml" />
	<link>http://www.subbu.org/blog/2009/01/uris-vs-identifiers-take-two</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: Canonical URIs at subbu.org</title>
		<link>http://www.subbu.org/blog/2009/01/uris-vs-identifiers-take-two/comment-page-1#comment-19606</link>
		<dc:creator>Canonical URIs at subbu.org</dc:creator>
		<pubDate>Sun, 15 Feb 2009 01:20:41 +0000</pubDate>
		<guid isPermaLink="false">http://www.subbu.org/?p=796#comment-19606</guid>
		<description>[...] I was arguing about a month ago, things can be accessed from multiple URIs, and without analyzing [...]</description>
		<content:encoded><![CDATA[<p>[...] I was arguing about a month ago, things can be accessed from multiple URIs, and without analyzing [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: link and self - brettdargan.com</title>
		<link>http://www.subbu.org/blog/2009/01/uris-vs-identifiers-take-two/comment-page-1#comment-18260</link>
		<dc:creator>link and self - brettdargan.com</dc:creator>
		<pubDate>Wed, 04 Feb 2009 02:36:16 +0000</pubDate>
		<guid isPermaLink="false">http://www.subbu.org/?p=796#comment-18260</guid>
		<description>[...] http://www.subbu.org/blog/2009/01/uris-vs-identifiers-take-two [...]</description>
		<content:encoded><![CDATA[<p>[...] <a href="http://www.subbu.org/blog/2009/01/uris-vs-identifiers-take-two" rel="nofollow">http://www.subbu.org/blog/2009/01/uris-vs-identifiers-take-two</a> [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: subbu</title>
		<link>http://www.subbu.org/blog/2009/01/uris-vs-identifiers-take-two/comment-page-1#comment-17895</link>
		<dc:creator>subbu</dc:creator>
		<pubDate>Fri, 30 Jan 2009 15:34:21 +0000</pubDate>
		<guid isPermaLink="false">http://www.subbu.org/?p=796#comment-17895</guid>
		<description>IMO, there is a bit of confusion about entities used in DB and other backend systems, and how they manifest into resources. The URI as an identity mechanism applies to resources. In cases when there is a strict and straight-forward mapping between URIs and entities, URIs are sufficient for identity, and I think that is the case Stefan may be referring to. But, I do think that there are a large number of cases where the mapping is not one-to-one, and hence those cases do require identifiers. Atom has recognized this years ago. I bet this will become a norm as we gain more experience.</description>
		<content:encoded><![CDATA[<p>IMO, there is a bit of confusion about entities used in DB and other backend systems, and how they manifest into resources. The URI as an identity mechanism applies to resources. In cases when there is a strict and straight-forward mapping between URIs and entities, URIs are sufficient for identity, and I think that is the case Stefan may be referring to. But, I do think that there are a large number of cases where the mapping is not one-to-one, and hence those cases do require identifiers. Atom has recognized this years ago. I bet this will become a norm as we gain more experience.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jean-Jacques Dubray</title>
		<link>http://www.subbu.org/blog/2009/01/uris-vs-identifiers-take-two/comment-page-1#comment-17278</link>
		<dc:creator>Jean-Jacques Dubray</dc:creator>
		<pubDate>Fri, 23 Jan 2009 05:05:34 +0000</pubDate>
		<guid isPermaLink="false">http://www.subbu.org/?p=796#comment-17278</guid>
		<description>Subbu:

REST is an &quot;instance-only&quot; technology with world-wide scope, there are no notion of &quot;classes&quot;, they are only imaginary. 

In this content, you would think that someone could spend just a few minutes to define an &quot;id&quot; rel (different from self). Who could think that Identity is not critical to the future of REST in the Enterprise? I don&#039;t know how many times I would have to repeat that Roy designed REST for the Web (with zero enterprise requirements) and who could believe that serendipitously Roy&#039;s REST would match perfectly to every and all Enterprise requirements?

Is it really that much more work to define a precise identity mechanism? 

JJ-</description>
		<content:encoded><![CDATA[<p>Subbu:</p>
<p>REST is an &#8220;instance-only&#8221; technology with world-wide scope, there are no notion of &#8220;classes&#8221;, they are only imaginary. </p>
<p>In this content, you would think that someone could spend just a few minutes to define an &#8220;id&#8221; rel (different from self). Who could think that Identity is not critical to the future of REST in the Enterprise? I don&#8217;t know how many times I would have to repeat that Roy designed REST for the Web (with zero enterprise requirements) and who could believe that serendipitously Roy&#8217;s REST would match perfectly to every and all Enterprise requirements?</p>
<p>Is it really that much more work to define a precise identity mechanism? </p>
<p>JJ-</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Adam</title>
		<link>http://www.subbu.org/blog/2009/01/uris-vs-identifiers-take-two/comment-page-1#comment-17030</link>
		<dc:creator>Adam</dc:creator>
		<pubDate>Mon, 19 Jan 2009 16:48:45 +0000</pubDate>
		<guid isPermaLink="false">http://www.subbu.org/?p=796#comment-17030</guid>
		<description>The issue of identity is one that has plagued mankind for a LOT longer than our current fascination with it. In 2003, William Kent gave a keynote at the Extreme Markup Languages conference called &lt;a href=&quot;http://www.idealliance.org/papers/extreme/proceedings/html/2003/Kent01/EML2003Kent01.html&quot; rel=&quot;nofollow&quot;&gt;The Unsolvable Identity Problem&lt;/a&gt;. For those of you who aren&#039;t aware, William Kent is one of those scary smart folk you like to meet once or twice in your life. His database-jitsu is mighty. 

I first came across the issue in the context of &lt;a href=&quot;http://www.ontopia.net/topicmaps/materials/tao.html&quot; rel=&quot;nofollow&quot;&gt;Topic Maps&lt;/a&gt;. Where is it very common to have multiple maps, each with topics that refer to the same subject. Topic Maps are designed to be merged together so you need a way to say that these two topics which come from different sources refer to the same thing. Topic maps share much of the same issues, since a &quot;topic&quot; is to &quot;subject&quot; what a &quot;representation&quot; is to a &quot;resource&quot;.

In topic maps this is done with a Published Subject Indicator; PSIs are simply URIs. Any two topics with the same PSIs refer to the same thing. This has great value, for instance if I maintain a map of topics about Italian Opera and you maintain a topic Map of the CIA World Fact Book (believe it or not these two exist and form the canonical examples for explaining topic maps). In my opera may I have a topic for Milan which is both the birth place of Verde, the setting for several of his plays and the place where Verde wrote some of them. The world fact book has information on the population and industry of Milan. If I combine these two maps, I now have a lot of information about Milan, which Susan could combine with here &quot;tourist places in europe&quot; topic map to help her create a &quot;Opera Lovers Tour of Italy&quot; or something. 

I&#039;ve digressed. The point is that Public Subject Indicators may or may not be network retrievable (vis isbn:978-0140283334 which would be a URI for a specific edition of the Lord of the Flies). Any network retrievable resource is treated as a static, human parsable resource; its only purpose is to uniquely identify something. 

In an article I wrote on &lt;a href=&quot;http://starkravingcoder.blogspot.com/2009/01/where-are-rest-frameworks.html&quot; rel=&quot;nofollow&quot;&gt;RESTful frameworks&lt;/a&gt; I argue that you should not use a REST api for your human intended front end. This is exactly one of the reasons. If you are sending content only to other systems, then you don&#039;t need to have multiple URIs for the same resource; all the logic is left up to the client. 

In fact, your examples, I think, are not very good examples &lt;strong&gt;for reusable APIs&lt;/strong&gt;. This example is, I think, the clearest example of bad choices. 

&lt;code&gt;
GET /myapp/people?like=subbu  
Host: www.example.org  
  
200 OK  
Content-Type: ...  
  
  
    
    
      
    Subbu  
    Allamaraju  
    
    
      
    Subbu  
    Somebody  
    

&lt;/code&gt;


My issue is with the self links for each of the people. How do you, as the application author, know that the the client wants the mini view? That is a very presumptuous, IMHO, unless you control both the client and your application. Since the reason we publish APIs is that we don&#039;t &lt;em&gt;want&lt;/em&gt; to control the clients, I would consider this to be a code smell. Further, the example is missing the even more important link that tells the client where to get a complete representation of of the resource.

I agree that you need someway to identify a resource independently of the URI by which you retrieved it. I do however think that needs to be a URI, and that it &lt;strong&gt;should&lt;/strong&gt; be a URL. If you request this URL, you should NOT get a representation of the resource but rather its meta data. Specifically, I would send URIs for all known representations, their media types and definitions (schemas) etc. Maybe even a simple human readable description.

I would also argue that a more &quot;correct&quot; version of the above representation might be:

&lt;code&gt;
GET /myapp/people?like=subbu  
Host: www.example.org  
  
200 OK  
Content-Type: ...  
  
  
    
    
    
    
  &lt;!-- I&#039;m not sure I entirely like member as a rel value but you get the idea --&gt;

&lt;/code&gt;

This is the problem with using &quot;ideal&quot; and easy examples, you miss all the details you discover from a pathological one. 

I&#039;ve talked enough.</description>
		<content:encoded><![CDATA[<p>The issue of identity is one that has plagued mankind for a LOT longer than our current fascination with it. In 2003, William Kent gave a keynote at the Extreme Markup Languages conference called <a href="http://www.idealliance.org/papers/extreme/proceedings/html/2003/Kent01/EML2003Kent01.html" rel="nofollow">The Unsolvable Identity Problem</a>. For those of you who aren&#8217;t aware, William Kent is one of those scary smart folk you like to meet once or twice in your life. His database-jitsu is mighty. </p>
<p>I first came across the issue in the context of <a href="http://www.ontopia.net/topicmaps/materials/tao.html" rel="nofollow">Topic Maps</a>. Where is it very common to have multiple maps, each with topics that refer to the same subject. Topic Maps are designed to be merged together so you need a way to say that these two topics which come from different sources refer to the same thing. Topic maps share much of the same issues, since a &#8220;topic&#8221; is to &#8220;subject&#8221; what a &#8220;representation&#8221; is to a &#8220;resource&#8221;.</p>
<p>In topic maps this is done with a Published Subject Indicator; PSIs are simply URIs. Any two topics with the same PSIs refer to the same thing. This has great value, for instance if I maintain a map of topics about Italian Opera and you maintain a topic Map of the CIA World Fact Book (believe it or not these two exist and form the canonical examples for explaining topic maps). In my opera may I have a topic for Milan which is both the birth place of Verde, the setting for several of his plays and the place where Verde wrote some of them. The world fact book has information on the population and industry of Milan. If I combine these two maps, I now have a lot of information about Milan, which Susan could combine with here &#8220;tourist places in europe&#8221; topic map to help her create a &#8220;Opera Lovers Tour of Italy&#8221; or something. </p>
<p>I&#8217;ve digressed. The point is that Public Subject Indicators may or may not be network retrievable (vis isbn:978-0140283334 which would be a URI for a specific edition of the Lord of the Flies). Any network retrievable resource is treated as a static, human parsable resource; its only purpose is to uniquely identify something. </p>
<p>In an article I wrote on <a href="http://starkravingcoder.blogspot.com/2009/01/where-are-rest-frameworks.html" rel="nofollow">RESTful frameworks</a> I argue that you should not use a REST api for your human intended front end. This is exactly one of the reasons. If you are sending content only to other systems, then you don&#8217;t need to have multiple URIs for the same resource; all the logic is left up to the client. </p>
<p>In fact, your examples, I think, are not very good examples <strong>for reusable APIs</strong>. This example is, I think, the clearest example of bad choices. </p>
<p><code><br />
GET /myapp/people?like=subbu<br />
Host: <a href="http://www.example.org" rel="nofollow">http://www.example.org</a>  </p>
<p>200 OK<br />
Content-Type: ...  </p>
<p>    Subbu<br />
    Allamaraju  </p>
<p>    Subbu<br />
    Somebody  </p>
<p></code></p>
<p>My issue is with the self links for each of the people. How do you, as the application author, know that the the client wants the mini view? That is a very presumptuous, IMHO, unless you control both the client and your application. Since the reason we publish APIs is that we don&#8217;t <em>want</em> to control the clients, I would consider this to be a code smell. Further, the example is missing the even more important link that tells the client where to get a complete representation of of the resource.</p>
<p>I agree that you need someway to identify a resource independently of the URI by which you retrieved it. I do however think that needs to be a URI, and that it <strong>should</strong> be a URL. If you request this URL, you should NOT get a representation of the resource but rather its meta data. Specifically, I would send URIs for all known representations, their media types and definitions (schemas) etc. Maybe even a simple human readable description.</p>
<p>I would also argue that a more &#8220;correct&#8221; version of the above representation might be:</p>
<p><code><br />
GET /myapp/people?like=subbu<br />
Host: <a href="http://www.example.org" rel="nofollow">http://www.example.org</a>  </p>
<p>200 OK<br />
Content-Type: ...  </p>
<p>  <!-- I'm not sure I entirely like member as a rel value but you get the idea --></p>
<p></code></p>
<p>This is the problem with using &#8220;ideal&#8221; and easy examples, you miss all the details you discover from a pathological one. </p>
<p>I&#8217;ve talked enough.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

