<?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: Are GET and PUT symmetrical? (Linked Data, CONNEG)</title>
	<atom:link href="http://webr3.org/blog/semantic-web/are-get-and-put-symmetrical-linked-data-conneg/feed/" rel="self" type="application/rss+xml" />
	<link>http://webr3.org/blog/semantic-web/are-get-and-put-symmetrical-linked-data-conneg/</link>
	<description>brain&#039;s on fire!</description>
	<lastBuildDate>Fri, 22 Apr 2011 00:44:37 +0100</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: John S. Erickson, Ph.D.</title>
		<link>http://webr3.org/blog/semantic-web/are-get-and-put-symmetrical-linked-data-conneg/comment-page-1/#comment-248</link>
		<dc:creator>John S. Erickson, Ph.D.</dc:creator>
		<pubDate>Wed, 03 Mar 2010 20:29:43 +0000</pubDate>
		<guid isPermaLink="false">http://webr3.org/blog/?p=235#comment-248</guid>
		<description>Let the &quot;shredding&quot; begin! ;) 

Seriously, it&#039;s great for you to stand up and make assertions like these; it&#039;s helpful to everyone! 

RE Statement 1: I think you are saying that we should not rely upon, and cannot count on, &quot;things&quot; making assertions about themselves. The bit I might challenge you on is the relationship of various &lt;i&gt;representations&lt;/i&gt; to the &quot;thing&quot; and to their &quot;siblings.&quot; 

Let me explain: I believe that it is legitimate to have a HTTP URI for a thing, and for their not to be any representations of that &quot;resource&quot; itself. I further believe it is legitimate to have multiple HTTP URI-named resources &quot;related&quot; to that thing; these can be widely varied in nature, from &lt;code&gt;text/html&lt;/code&gt; &lt;code&gt;text/pdf&lt;/code&gt; to &lt;code&gt;application/rdf+xml&lt;/code&gt; to &lt;code&gt;foo/barumph&lt;/code&gt; and the only requirement should be that they are all &quot;plausibly&quot; related. By &quot;plausibly,&quot; I simply mean that there exists some predicate; it could be &lt;code&gt;foo:anythingButRelated&lt;/code&gt;. 

I think this gets to your Statement 2: conneg should be used for whatever conneg can be used for. But &lt;i&gt;yes,&lt;/i&gt; it is expected and SHOULD be the case that any representation of RDF returned (a) should refer to the same thing and (b) should be logically consistent, or &quot;the same RDF&quot; as you say. Similarly, one would expect text/html and text/pdf representations to be consistent. But it is important to note that these are semantics imposed by a particular application space and not by the HTTP 1.1 specification; providers are free to do what they want, as long as they don&#039;t break the protocol. They might soon lose adopters, however...

The caveat in the paragraph above is that HTTP is stateless. One way to interpret this is, technically it is not an error if I PUT an update for a URI, immediately GET it (same content-type) and have it be different. Also, technically, it is not an error for

Finally, I respectfully disagree with what you&#039;ve said about APP; I do think it applies here. I think APP is a great example of a symmetrical application of GET and PUT for given a specific content-type. No, APP doesn&#039;t say anything specifically about conneg, but that is implied by the explicit inclusion of content-types in the request headers. But I might be stretching it a bit, suggesting (beyond APP) that simply because I can GET from (e.g.) a set of &lt;code&gt;alternative&lt;/code&gt; types, that I should expect to PUT the same variety.

I&#039;m not sure about your point regarding PUTs to undefined URIs; as the spec says, GETs and PUTs (and DELETES) can only be requested for defined URIs, whereas POSTs are about creating resources. Perhaps I&#039;m missing your point there.</description>
		<content:encoded><![CDATA[<p>Let the "shredding" begin! ;) </p>
<p>Seriously, it's great for you to stand up and make assertions like these; it's helpful to everyone! </p>
<p>RE Statement 1: I think you are saying that we should not rely upon, and cannot count on, "things" making assertions about themselves. The bit I might challenge you on is the relationship of various <i>representations</i> to the "thing" and to their "siblings." </p>
<p>Let me explain: I believe that it is legitimate to have a HTTP URI for a thing, and for their not to be any representations of that "resource" itself. I further believe it is legitimate to have multiple HTTP URI-named resources "related" to that thing; these can be widely varied in nature, from <code>text/html</code> <code>text/pdf</code> to <code>application/rdf+xml</code> to <code>foo/barumph</code> and the only requirement should be that they are all "plausibly" related. By "plausibly," I simply mean that there exists some predicate; it could be <code>foo:anythingButRelated</code>. </p>
<p>I think this gets to your Statement 2: conneg should be used for whatever conneg can be used for. But <i>yes,</i> it is expected and SHOULD be the case that any representation of RDF returned (a) should refer to the same thing and (b) should be logically consistent, or "the same RDF" as you say. Similarly, one would expect text/html and text/pdf representations to be consistent. But it is important to note that these are semantics imposed by a particular application space and not by the HTTP 1.1 specification; providers are free to do what they want, as long as they don't break the protocol. They might soon lose adopters, however...</p>
<p>The caveat in the paragraph above is that HTTP is stateless. One way to interpret this is, technically it is not an error if I PUT an update for a URI, immediately GET it (same content-type) and have it be different. Also, technically, it is not an error for</p>
<p>Finally, I respectfully disagree with what you've said about APP; I do think it applies here. I think APP is a great example of a symmetrical application of GET and PUT for given a specific content-type. No, APP doesn't say anything specifically about conneg, but that is implied by the explicit inclusion of content-types in the request headers. But I might be stretching it a bit, suggesting (beyond APP) that simply because I can GET from (e.g.) a set of <code>alternative</code> types, that I should expect to PUT the same variety.</p>
<p>I'm not sure about your point regarding PUTs to undefined URIs; as the spec says, GETs and PUTs (and DELETES) can only be requested for defined URIs, whereas POSTs are about creating resources. Perhaps I'm missing your point there.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mike Amundsen</title>
		<link>http://webr3.org/blog/semantic-web/are-get-and-put-symmetrical-linked-data-conneg/comment-page-1/#comment-247</link>
		<dc:creator>Mike Amundsen</dc:creator>
		<pubDate>Wed, 03 Mar 2010 19:22:50 +0000</pubDate>
		<guid isPermaLink="false">http://webr3.org/blog/?p=235#comment-247</guid>
		<description>Nathan: 
&quot;...content negotiation (on the accept header) should only be used to accept the same RDF serialized as different mime/types.&quot;

This makes sense when the representation formats are very similar, but may not make sense for widely varying representation formats. For example, when negotiating for a graph image representation  (image/png) of the same resource delivered via a text-based representation format (application/atom+xml) it is likely that not all the same data elements will be returned, but the same _meaning_ will be conveyed.

It&#039;s a subtle difference, but one that relieves developers from trying to figure out ways to send _all_ the same data in _all_ possible formats and, conversely, dismissing some representation formats as inappropriate if _all_ the data cannot be represented.</description>
		<content:encoded><![CDATA[<p>Nathan:<br />
"...content negotiation (on the accept header) should only be used to accept the same RDF serialized as different mime/types."</p>
<p>This makes sense when the representation formats are very similar, but may not make sense for widely varying representation formats. For example, when negotiating for a graph image representation  (image/png) of the same resource delivered via a text-based representation format (application/atom+xml) it is likely that not all the same data elements will be returned, but the same _meaning_ will be conveyed.</p>
<p>It's a subtle difference, but one that relieves developers from trying to figure out ways to send _all_ the same data in _all_ possible formats and, conversely, dismissing some representation formats as inappropriate if _all_ the data cannot be represented.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: nathan</title>
		<link>http://webr3.org/blog/semantic-web/are-get-and-put-symmetrical-linked-data-conneg/comment-page-1/#comment-246</link>
		<dc:creator>nathan</dc:creator>
		<pubDate>Wed, 03 Mar 2010 18:04:23 +0000</pubDate>
		<guid isPermaLink="false">http://webr3.org/blog/?p=235#comment-246</guid>
		<description>Thanks for your comments,

Mike: fully agree and yes &quot;there is nothing in the HTTP protocol that addresses this&quot; for a good reason I feel. Also noted that a URI is just a URI, any assuming what is at the end of the URI (should you look it up / request it) is frankly wrong.

Larry: fully agree, the semantic web shouldn&#039;t tie itself to HTTP. As far as I&#039;m concerned all that matters is that we have triples in the form of ( identifier , identifier , identifier ) where each identifier can be looked up in some manner for more information about the thing it identifies.

John:
As for APP, it&#039;s fantastic and a great example of the way things should be done, but it doesn&#039;t really touch on what we&#039;re discussing above as far as I can see. To create resources you POST to the URI of a Collection and (on success) get back a URI for the Member that was created, from this point on you PUT/DELETE to the URI of a Member, it doesn&#039;t say anything (afaik?) about sending a PUT to an undefined URI. Nor does it say anything about content negotiation (on the Accept header). And just to re-afirm what I personally think, this is the way things should be done, the Atom Publishing Protocol is clear on how you handle publishing Atom, everything else is out of scope.

Everyone:
Basically I want to defer this back to all of you, my peers, I&#039;ve only got 10 years behind me and not all at this level of discussion.. so here are two statements which I&#039;d like you to respond to in some way, even if its just a &quot;wrong&quot; or &quot;sounds good&quot;

Statement One: the link between an RDF description and the thing it&#039;s descibing should always be a one way link, from RDF to thing. For Linked Data to work this must *always* be true, it&#039;s no good an HTML document linking to it&#039;s description if &quot;London&quot; or &quot;Bobs Car&quot; or even a GIF image can&#039;t.

Statement Two: With regards HTTP Linked Data, content negotiation (on the accept header) should only be used to accept the same RDF serialized as different mime/types.

Please do rip those statements to shreds; I&#039;m very keen to have clarity on these matters.

note: all of these posts are just me learning and thinking out loud so I can get some feedback from the community as to where I&#039;m going wrong, thus, thanks for the feedback :) it&#039;s very appreciated.</description>
		<content:encoded><![CDATA[<p>Thanks for your comments,</p>
<p>Mike: fully agree and yes "there is nothing in the HTTP protocol that addresses this" for a good reason I feel. Also noted that a URI is just a URI, any assuming what is at the end of the URI (should you look it up / request it) is frankly wrong.</p>
<p>Larry: fully agree, the semantic web shouldn't tie itself to HTTP. As far as I'm concerned all that matters is that we have triples in the form of ( identifier , identifier , identifier ) where each identifier can be looked up in some manner for more information about the thing it identifies.</p>
<p>John:<br />
As for APP, it's fantastic and a great example of the way things should be done, but it doesn't really touch on what we're discussing above as far as I can see. To create resources you POST to the URI of a Collection and (on success) get back a URI for the Member that was created, from this point on you PUT/DELETE to the URI of a Member, it doesn't say anything (afaik?) about sending a PUT to an undefined URI. Nor does it say anything about content negotiation (on the Accept header). And just to re-afirm what I personally think, this is the way things should be done, the Atom Publishing Protocol is clear on how you handle publishing Atom, everything else is out of scope.</p>
<p>Everyone:<br />
Basically I want to defer this back to all of you, my peers, I've only got 10 years behind me and not all at this level of discussion.. so here are two statements which I'd like you to respond to in some way, even if its just a "wrong" or "sounds good"</p>
<p>Statement One: the link between an RDF description and the thing it's descibing should always be a one way link, from RDF to thing. For Linked Data to work this must *always* be true, it's no good an HTML document linking to it's description if "London" or "Bobs Car" or even a GIF image can't.</p>
<p>Statement Two: With regards HTTP Linked Data, content negotiation (on the accept header) should only be used to accept the same RDF serialized as different mime/types.</p>
<p>Please do rip those statements to shreds; I'm very keen to have clarity on these matters.</p>
<p>note: all of these posts are just me learning and thinking out loud so I can get some feedback from the community as to where I'm going wrong, thus, thanks for the feedback :) it's very appreciated.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mike Amundsen</title>
		<link>http://webr3.org/blog/semantic-web/are-get-and-put-symmetrical-linked-data-conneg/comment-page-1/#comment-245</link>
		<dc:creator>Mike Amundsen</dc:creator>
		<pubDate>Wed, 03 Mar 2010 16:14:04 +0000</pubDate>
		<guid isPermaLink="false">http://webr3.org/blog/?p=235#comment-245</guid>
		<description>Nathan:

To the HTTP app-protocol, the URI identifies a &quot;Resource.&quot; In your post here you categorize these resources into three types (hypermedia/files, services, things). 

Seems that what you are really saying is that some resources are WRITE-able (your file type), others are not (service, thing). While that may be true, there is nothing in the HTTP protocol that addresses this and, to my knowledge nothing in common markup formats (XHTML, XML, HTML, RDF, etc.) that make that distinction, either.</description>
		<content:encoded><![CDATA[<p>Nathan:</p>
<p>To the HTTP app-protocol, the URI identifies a "Resource." In your post here you categorize these resources into three types (hypermedia/files, services, things). </p>
<p>Seems that what you are really saying is that some resources are WRITE-able (your file type), others are not (service, thing). While that may be true, there is nothing in the HTTP protocol that addresses this and, to my knowledge nothing in common markup formats (XHTML, XML, HTML, RDF, etc.) that make that distinction, either.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Larry Masinter</title>
		<link>http://webr3.org/blog/semantic-web/are-get-and-put-symmetrical-linked-data-conneg/comment-page-1/#comment-244</link>
		<dc:creator>Larry Masinter</dc:creator>
		<pubDate>Wed, 03 Mar 2010 15:08:33 +0000</pubDate>
		<guid isPermaLink="false">http://webr3.org/blog/?p=235#comment-244</guid>
		<description>http://tools.ietf.org/html/draft-ietf-httpbis-p2-semantics-08#section-7.6

proposed update to 2616 in httpbis committee.

Personally, I think that using content negotiation as a way of getting both a document and its metadata is a bad idea, as it ties down the abstract notion of associating access to a resource and access to &quot;information about the resource&quot; too tightly to the HTTP protocol.

I wish the &quot;Semantic Web&quot; wouldn&#039;t tie itself to HTTP; e.g., peer-to-Peer distribution doesn&#039;t have content negotiation. 

Larry</description>
		<content:encoded><![CDATA[<p><a href="http://tools.ietf.org/html/draft-ietf-httpbis-p2-semantics-08#section-7.6" rel="nofollow">http://tools.ietf.org/html/draft-ietf-httpbis-p2-semantics-08#section-7.6</a></p>
<p>proposed update to 2616 in httpbis committee.</p>
<p>Personally, I think that using content negotiation as a way of getting both a document and its metadata is a bad idea, as it ties down the abstract notion of associating access to a resource and access to "information about the resource" too tightly to the HTTP protocol.</p>
<p>I wish the "Semantic Web" wouldn't tie itself to HTTP; e.g., peer-to-Peer distribution doesn't have content negotiation. </p>
<p>Larry</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: John S. Erickson, Ph.D.</title>
		<link>http://webr3.org/blog/semantic-web/are-get-and-put-symmetrical-linked-data-conneg/comment-page-1/#comment-243</link>
		<dc:creator>John S. Erickson, Ph.D.</dc:creator>
		<pubDate>Wed, 03 Mar 2010 14:54:54 +0000</pubDate>
		<guid isPermaLink="false">http://webr3.org/blog/?p=235#comment-243</guid>
		<description>Thanks for taking a stab at my question, Nathan! I dope-slapped myself after asking the question as I remembered that the &lt;a href=&quot;http://tools.ietf.org/html/rfc5023&quot; rel=&quot;nofollow&quot;&gt;Atom Publishing Protocol&lt;/a&gt; (APP) clarifies both the PUT and POST issues. 

See RDF 5023, esp. &lt;a href=&quot;http://tools.ietf.org/html/rfc5023#page-9&quot; rel=&quot;nofollow&quot;&gt;Section 5: Protocol Operations&lt;/a&gt; and &lt;a href=&quot;http://tools.ietf.org/html/rfc5023#page-20&quot; rel=&quot;nofollow&quot;&gt;Section 9: Creating and Editing Resources.&lt;/a&gt; In the second case, a full example of a POST is given, showing the proper specification of the content-type. 

Curious if, and how, the clarification that APP provides might impact your thinking?</description>
		<content:encoded><![CDATA[<p>Thanks for taking a stab at my question, Nathan! I dope-slapped myself after asking the question as I remembered that the <a href="http://tools.ietf.org/html/rfc5023" rel="nofollow">Atom Publishing Protocol</a> (APP) clarifies both the PUT and POST issues. </p>
<p>See RDF 5023, esp. <a href="http://tools.ietf.org/html/rfc5023#page-9" rel="nofollow">Section 5: Protocol Operations</a> and <a href="http://tools.ietf.org/html/rfc5023#page-20" rel="nofollow">Section 9: Creating and Editing Resources.</a> In the second case, a full example of a POST is given, showing the proper specification of the content-type. </p>
<p>Curious if, and how, the clarification that APP provides might impact your thinking?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: nathan</title>
		<link>http://webr3.org/blog/semantic-web/are-get-and-put-symmetrical-linked-data-conneg/comment-page-1/#comment-242</link>
		<dc:creator>nathan</dc:creator>
		<pubDate>Wed, 03 Mar 2010 09:36:48 +0000</pubDate>
		<guid isPermaLink="false">http://webr3.org/blog/?p=235#comment-242</guid>
		<description>Mike:

I&#039;ve completely used the wrong term here (&lt;em&gt;Stored Hypermedia&lt;/em&gt;) in my naivety haven&#039;t I?! The second I read your doc on &lt;a href=&quot;http://amundsen.com/hypermedia/&quot; rel=&quot;nofollow&quot;&gt;Hypermedia Types&lt;/a&gt; I realised.

What I&#039;m trying to refer to by Hypermedia in this case is just a &quot;file&quot;, but the term Document implies different things to readers, obviously stored hypermedia is grossly wrong, can you suggest a better (&lt;em&gt;correct and unambiguous&lt;/em&gt;) term for it??

Thanks :)</description>
		<content:encoded><![CDATA[<p>Mike:</p>
<p>I've completely used the wrong term here (<em>Stored Hypermedia</em>) in my naivety haven't I?! The second I read your doc on <a href="http://amundsen.com/hypermedia/" rel="nofollow">Hypermedia Types</a> I realised.</p>
<p>What I'm trying to refer to by Hypermedia in this case is just a "file", but the term Document implies different things to readers, obviously stored hypermedia is grossly wrong, can you suggest a better (<em>correct and unambiguous</em>) term for it??</p>
<p>Thanks :)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mike Amundsen</title>
		<link>http://webr3.org/blog/semantic-web/are-get-and-put-symmetrical-linked-data-conneg/comment-page-1/#comment-240</link>
		<dc:creator>Mike Amundsen</dc:creator>
		<pubDate>Wed, 03 Mar 2010 01:35:11 +0000</pubDate>
		<guid isPermaLink="false">http://webr3.org/blog/?p=235#comment-240</guid>
		<description>Nathan:

HTTP allows clients to share data representations. These can be data from a server or data from a client. Clients can request data representations (GET) and can send data representations (POST, PUT). They can also make requests for servers to DELETE something. 

The representation format for read operations (GET) and write operations (POST, PUT) need not (often are not) symmetrical. Representations sent by clients need not contain hypermedia links to be PUT-able. 

You are correct in identifying that the semantics of POST indicate a &quot;subordinate&quot; aspect where PUT does not. This is an important aspect and has nothing to do with representation formats.</description>
		<content:encoded><![CDATA[<p>Nathan:</p>
<p>HTTP allows clients to share data representations. These can be data from a server or data from a client. Clients can request data representations (GET) and can send data representations (POST, PUT). They can also make requests for servers to DELETE something. </p>
<p>The representation format for read operations (GET) and write operations (POST, PUT) need not (often are not) symmetrical. Representations sent by clients need not contain hypermedia links to be PUT-able. </p>
<p>You are correct in identifying that the semantics of POST indicate a "subordinate" aspect where PUT does not. This is an important aspect and has nothing to do with representation formats.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

