- From: Henry Story <henry.story@bblfish.net>
- Date: Wed, 27 Feb 2013 12:47:59 +0100
- To: Raúl García Castro <rgarcia@fi.upm.es>
- Cc: public-ldp-wg@w3.org
- Message-Id: <54FFA269-7B90-4660-AF1C-D14C7B284539@bblfish.net>
On 27 Feb 2013, at 10:09, Raúl García Castro <rgarcia@fi.upm.es> wrote: > El 26/02/13 10:37, Henry Story escribió: >> Hi all, >> >> following on the discussions on irc at yesterday's teleconf, I propose what I call >> an intuitive requirement on LDP - which I believe we all have stated we accept. Having >> described it I propose naming LDPCs that follow this intuitive requirement, and I then >> explain why this would be very helpful to clients. Finally I defend this proposal >> against certain types of criticims that usually surface when such a proposal is made. >> ( I would also like to state that the argument I put forward below helped me change >> my mind on this since TPAC ) >> >> 1. The Requirement >> ------------------ >> >> It seems accepted by the group as a requirement on the LDP specification, though it would be good to make it explicit, that LDP must allow implementations to follow what I would like to call the intuitive requirement, nameley that: >> >> a. all the path components of URLs naming LDPCs end in a "/" >> b. all paths compontents to Non LDPCs [1] are named with URIs not ending in a "/" >> c. all resources created by an LDPC with URI U following the above constraints have a URL which is the concatenation of U with a string whose regep is [^/]+/? Ie a string with non slash characters, optionally ending with a slash >> >> Intuitively I am trying to capture the following: >> - http://my.example/xxx/ is a container >> - POSTing a non LDPC to it will create a resource with a name such as >> http://my.example/xxx/yoyo >> - POSTing an LDPC to it will create a resource with a name such as >> http://my.example/xxx/yoyo/ >> >> This is not to say that representations of LDPCs should not contain the statement >> <> a ldpc:Container . This is still very important. >> >> >> 2. Naming such a container >> -------------------------- >> >> I would like to argue next that it is advantageous for clients to know when they are confronted with an LDPC with such a property. To do this one could define in an intuitive ldp ontology, (whose prefix I will call ldpi) the following definition: >> >> ldpi:Container owl:subClassOf ldp:Container; >> rdfs:comment """ >> an ldpi:Container MUST have a URL by which the resoure can be interacted with that ends in a '/'. Call this url U . >> Creation of a non ldpi:Container inside such a container will result in a resource whose canonical URL is U concatenated with a non zero length string not containing a '/'. >> Creation of an ldpi:Container inside such a container will result in a resource whose URL is U concatenated with a non zero length string not containing a '/' followed by a '/' >> """ . >> >> 2.1 Better relative URI support >> ------------------------------- >> >> The advantages to a client of knowing that it is dealing with an ldpi:Container is that it will know how relative URLs will behave, when POSTing content to it. So for example it will be possible to POST content such as >> >> <> a foaf:PersonalProfileDocument; >> foaf:primaryTopic <#i> . >> >> <#i> foaf:name "Tim"; >> foaf:depiction <img/happyMe.jpg>; >> foaf:knows <../george/card#me> . >> >> Without the knowledge that one is dealing with an ldpi:Container it would not be possible to post such content, since the URL of the resource created by such a container, and which will be used to resolve relative URLs of documents POSTed to it, could be a url with a different directory hierarchy. To illustrate this imagine we had a server that contained the following resources >> >> http://unintuitive.example/people/tim/ >> http://unintuitive.example/people/tim/img/happyMe.jpg >> http://unintuitive.example/people/george/card >> >> and the above Turtle were posted to >> >> http://unintuitive.example/people/tim/ >> >> but the resulting resource were to be >> >> http://unintutive.example/people/xoxo/hehe/card >> >> then none of the URIs in the POSTed turtle would resolve to >> the intended resources. >> >> On the other hand, if http://unintuitive.example/people/tim/ >> were to be an ldpi:Container then posting such a document would >> always mean the intended links would resolve correctly. >> >> 2.2 Generally more intuitive >> ---------------------------- >> >> Generally this would also just align with people's intuitions >> in such a way as to make the concept of an ldpi:Container extreemly >> easy to teach: it would tie in nicely with relative urls and directory >> structures that developers are very familiar with >> >> There may be other useful consequences, which I have not thought of right >> now. >> >> >> 3. Responses to expected criticism >> ---------------------------------- >> >> URIs MUST be opaque >> ------------------- >> >> It is usually argued that this is bad because URIs must be opaque. >> >> But clearly that cannot be the case or else the above turtle would be >> illegal and the URI specification would be mistaken since it goes into >> great detail on this subject, as for example in >> http://tools.ietf.org/html/rfc3986#section-5.2.4 >> >> The importance of the opaqueness of URIs comes from semantics: one should >> not deduce the meaning of a URI from its form. But here we are not >> deducing semantics from the URI: the ldpi:Container needs to state that it >> is an ldpi:Container for the above proposal to work. There is nothing that >> disallows a resource to make claims about how interactions with it will >> create new URIs. Indeed that is how HTML forms work. >> >> I think this makes the point well enough. >> >> I think it would be worth opening an issue on this. >> >> Henry >> >> [1] ie the mysterious ldpx >> http://www.w3.org/2012/ldp/wiki/images/b/b5/LDP-RCX.pdf >> >> Social Web Architect >> http://bblfish.net/ >> > > Hi Henry, > > I'm in favor of documenting the intuitive approach in a separate document, and of even having a separate ontology that extends the ldp one. > > (I would prefer that the name of the intuitive container is not "Container". Only a difference of an 'i' in the namespace can cause confusion and mistakes.) > > However, I think that the intuitive approach should be clearly documented including potential caveats such as the following. > > The "requirement" disables the possibility of converting a resource into a container (I don't have a concrete use case but the specification currently does not limit this). Yes, the same URI would not be both. But is this really a huge problem? There are probably a lot of ways of dealing with this. 1. A redirect. For example where http://intuitive.example/people/george redirects to http://intuitive.example/people/george/ 2. A link http://intuitive.example/people/george to the new container <george/> 3. weakening of the restriction on ldpi:Container I am not sure where this leads to, but at least for the use case of POSTing graphs with relative URIs one could create a slightly less intuitive LDPC subclass call it ldpi2:Container ldpi2:Container owl:subClassOf ldp:Container; rdfs:comment """ POSTing content to an ldpi2:Container whose URL is cu MUST create a resource with a name matching the regexpression [^/]+, and whose URL is constructed as follows: - if cu ends with the '/' character then the result cu + name - if cu does not end with '/' then the result is cu + '/' + name """ . Now this means though that POSTing the graph POST /people/george HTTP/1.1 Slug: card Content-Type: text/turtle <> a foaf:PersonalProfileDocument; :containedIn <.> . onto the ldpi2:Container <http://i2.example/people/george> would create the resource <http://i2.example/people/george/card> but the <.> in the content then refers to <http://i2.example/people/george/> So it seems to me that this shows that Turtle and the URI definition have already made some choices for us, namely that a container does end in a '/' , and that at best the above show that </people/george> and </people/george/> should be identical . > Once we have aggregate and composite containers, things are not so intuitive because finding a URI that ends with '/' could refer to an aggregate or to a composite container (which have different behaviour). yes, but I think this could just as well lead one to the opposite conclusion, namely that the aggregation model presented recently is not intuitive. > Furthermore, when using the URI of an aggregate container when building the resource URI (http://my.example/xxx/yoyo), if the aggregate container is deleted and later someone tries to access the container URI (http://my.example/xxx/) it will fail. I don't understand your point here. > > Kind regards, > > -- > > Dr. Raúl García Castro > http://delicias.dia.fi.upm.es/~rgarcia/ > > Ontology Engineering Group > Departamento de Inteligencia Artificial > Universidad Politécnica de Madrid > Campus de Montegancedo, s/n - Boadilla del Monte - 28660 Madrid > Phone: +34 91 336 36 70 - Fax: +34 91 352 48 19 Social Web Architect http://bblfish.net/
Attachments
- application/pkcs7-signature attachment: smime.p7s
Received on Wednesday, 27 February 2013 11:48:35 UTC