{"id":146,"date":"2003-07-29T04:37:00","date_gmt":"2003-07-29T08:37:00","guid":{"rendered":"http:\/\/www.markbaker.ca\/wp\/?p=167"},"modified":"2003-07-29T04:37:00","modified_gmt":"2003-07-29T08:37:00","slug":"my-name-is-mark","status":"publish","type":"post","link":"http:\/\/www.markbaker.ca\/blog\/2003\/07\/my-name-is-mark\/","title":{"rendered":"My name is Mark"},"content":{"rendered":"<p>If you&#8217;re following the <a href=\"http:\/\/lists.w3.org\/Archives\/Public\/www-tag\/2003Jul\/\">TAG discussion<\/a>\nregarding the <a href=\"http:\/\/www.w3.org\/2001\/tag\/ilist#httpRange-14\">httpRange-14 issue<\/a>,\nyou&#8217;re probably aware of the two (at least I think and <em>hope<\/em> it&#8217;s\njust two) positions about this; either http URIs without a fragment identifier\ncan identify anything, or they can identify &#8220;documents&#8221;, aka &#8220;information\nresources&#8221;, aka &#8220;cyc:ConceptualWork&#8221;s.  I&#8217;m unapologetically in the &#8220;anything&#8221;\ncamp.<\/p>\n\n<p>As this debate has flared up every few months in some forum for the past\nseveral years, I thought a bit about some of the implications of my position,\nand whether there was anything there that hadn&#8217;t yet been said.  I came up\nwith a couple.<\/p>\n\n<p>First, in general, who&#8217;s to say that any string can&#8217;t identify any\nthing?  My name is &#8220;Mark&#8221;, and that name identifies me; not globally uniquely\nof course, but I don&#8217;t think anybody would claim that it wasn&#8217;t an\nidentifier.  So as an identifier, it would be really nice to be able to\nask a HTTP proxy for a representation of me using that identifier, e.g.<\/p>\n\n<pre>\nGET Mark HTTP\/1.0\nAccept: image\/jpeg, text\/html\n<\/pre>\n\n<p>The only reason that isn&#8217;t possible, of course, is that HTTP accepts\nURIs on the request line, not arbitrary words.  This is because URIs have more\nstructure than your typical word such that a machine can extract out all\nthe information it needs in order to retrieve a representation via late\nbinding.<\/p>\n\n<p>So assuming we all agree that &#8220;Mark&#8221; is an identifier for me, then we\nshould all expect that the request above would return a representation of\nme.  Why then, should our model of how this works be any different if I use\n&#8220;http:\/\/www.markbaker.ca&#8221; as the identifier for me in that request?  My\nname is not &#8220;Mark#him&#8221;.<\/p>\n\n<p>Second, it appears to me that adding a layer of indirection in the\nform of having a URI-with-no-frag identify &#8220;ConceptualWork about &lt;subject&gt;&#8221;\nrather than just having it identify the subject, removes the ability for\nstate changes to be made.  Consider my canonical &#8220;Web\nservices are broken&#8221; example of a lightbulb; we have a URI that identifies\nthe lightbulb, GET returns a representation of it to us, we toggle the\n&#8220;on\/off&#8221; part of that representation, and then PUT it back to that same\nURI.  In that example, there exists a perfectly reasonable expectation on\nthe part of the client that PUT would change the state of the lightbulb\n(assuming the history of representations returned via GET was consistent\nwith the URI identifying the bulb).  Adopting the &#8220;http URIs identify\ncyc:ConceptualWorks&#8221; position would appear to force PUT to mean &#8220;write a\nnew version of the ConceptualWork&#8221;, with no way to model actually changing\nthe state of the lightbulb.  Not good!<\/p>\n\n<p>Note that this example was sort of similar to\n<a href=\"http:\/\/lists.w3.org\/Archives\/Public\/www-tag\/2003Jan\/0364.html\">Roy&#8217;s\nPOST\/robot example<\/a>, but using PUT instead of POST.  I find PUT superior\nto POST for examples like this, because it&#8217;s easier for most people to\nunderstand what PUT does.  But the principle is the same.<\/p>\n\n<p>So to sum up, if it walks like a duck, and quacks like a duck, it&#8217;s\nprobably not a ConceptualWork about a duck.<\/p>","protected":false},"excerpt":{"rendered":"If you&#8217;re following the TAG discussion regarding the httpRange-14 issue, you&#8217;re probably aware of the two (at least I think and hope it&#8217;s just two) positions about this; either http URIs without a fragment identifier can identify anything, or they can identify &#8220;documents&#8221;, aka &#8220;information resources&#8221;, aka &#8220;cyc:ConceptualWork&#8221;s. I&#8217;m unapologetically in the &#8220;anything&#8221; camp. As [&hellip;]","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-146","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/posts\/146","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/comments?post=146"}],"version-history":[{"count":0,"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/posts\/146\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/media?parent=146"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/categories?post=146"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/tags?post=146"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}