Re: Practical issues arising from the "null relative URIs"-hack

On Fri, Mar 28, 2014 at 12:04 AM, Kingsley Idehen <kidehen@openlinksw.com>wrote:

>  On 3/27/14 4:42 PM, Reto Gmür wrote:
>
>
>>
>>  If you consider RFC5995 ( Using POST to Add Members to WebDAV )
>> http://tools.ietf.org/html/rfc5995
>> you need only consider that it does not say anything about relative URIs
>> to understand
>> that because it says nothing it does exactly what we are proposing. If
>> you were to use
>> a RFC5995 compliant server to POST some Turtle with relative URIs in it,
>> then you'd
>> get exactly the LDP intended result. A turtle document that was posted
>> with a <> URI would refer
>> to the document created.
>>
> Granted. The same happens if you send an email with text/turtle
> content-type. Still, a bit far fetched to see this use as the intended
> design or even as to see  an established design pattern in that, imho.
>
>
> This is an established design pattern, that's poorly understood. Relative
> URIs are really a major route to taking a lot of confusion and tedium out
> of Linked Data exploitation.
>

I doubt about the this being established (given that it violates RFC3986).
But maybe you're right and relative URIs would be elegant and powerful. But
then they should be in the RDF data model rather than having LDP breaking
the abstraction. (I'm a bit afraid relative URIs in RDF might also add more
confusion by people expecting the URIs so be relative to the position of
the resource in the graph).

What is need to create the body of a POST request using RDF toolkits with
the current design:

  var i = new NamedResource("
http://some.temporary.uri/that/must/not/be/used/elsewere/in/representation")
  graph.addTriple(i, RDFS.descrition, "This is the resource that will be
created")
  ..add more triples
  var turtleToPost = graph.serializeAsTurtleWithBaseUri("
http://some.temporary.uri/that/must/not/be/used/elsewere/in/representation")


In my opinion, using this throwaway URI and hoping it doesn't escape from
the context of our code is a dirty hack.

If the RDF would support relative URIs things would be straight forward:

  var i = new NamedResource("") //Currently illegal and not supported by
most toolkits!!!
  graph.addTriple(i, RDFS.descrition, "This is the resource that will be
created")
  ..add more triples
  var turtleToPost = graph.serializeAsTurtle()

Of course if RDF would support relative URIs we could use any serialization
and also the problem I initially illustrated would be gone.

The current question is not about using relative URIs or not but if the
spec should be defined in terms of RDF or in terms of some particular
serializations. The latter prevents RDF tools from being used, at least
from being used  in a straight forward way.

Cheers,
Reto

Received on Friday, 28 March 2014 12:02:34 UTC