- From: Arnaud Le Hors <lehors@us.ibm.com>
- Date: Thu, 7 Nov 2013 20:52:22 -0800
- To: Alexandre Bertails <bertails@w3.org>
- Cc: Linked Data Platform WG <public-ldp-wg@w3.org>
- Message-ID: <OFA81777BB.EA2DA2EB-ON88257C1D.001A202E-88257C1D.001AC4CC@us.ibm.com>
Yes, I expected you to say that actually. :-)
One possible solution would be to make ldp:created mandatory when
ldp:insertContentRelation is anything other than ldp:MemberSubject.
--
Arnaud Le Hors - Software Standards Architect - IBM Software Group
Alexandre Bertails <bertails@w3.org> wrote on 11/07/2013 05:33:44 PM:
> From: Alexandre Bertails <bertails@w3.org>
> To: Arnaud Le Hors/Cupertino/IBM@IBMUS,
> Cc: Linked Data Platform WG <public-ldp-wg@w3.org>
> Date: 11/07/2013 05:33 PM
> Subject: Re: How to find the members of an LDPC?
>
> On 11/07/2013 02:21 PM, Arnaud Le Hors wrote:
> > Hi Alexandre,
> >
> > As Henry pointed out we have ldp:created. See
> > http://dvcs.w3.org/hg/ldpwg/raw-file/default/ldp.html#ldpc-5_4_14
> > Doesn't that address your problem?
>
> Yes it does, but the fact it is optional is an issue, especially when
> ldp:containsRelation is required. How does a client know that there is
> no member?
>
> Alexandre.
>
> >
> > In your example after the POST you would have:
> >
> > $ GET http://example.com/shopping/cart/
> > [[
> > </shopping/cart/> a ldp:Container;
> > ldp:containerResource <#>;
> > ldp:containsRelation order:contains;
> > ldp:insertedContentRelation foaf:primaryTopic;
> > ldp:created <the_url_of_the_resource_that_was_created>.
> >
> > <#> order:contains <urn:isbn:0470396792>.
> > ]]
> >
> > $ GET <the_url_of_the_resource_that_was_created>
> > [[
> > <> foaf:primaryTopic <urn:isbn:0470396792> .
> > ]]
> >
> > Best regards.
> > --
> > Arnaud Le Hors - Software Standards Architect - IBM Software Group
> >
> >
> >
> >
> > From: Alexandre Bertails <bertails@w3.org>
> > To: Steve Speicher <sspeiche@gmail.com>,
> > Cc: Linked Data Platform WG <public-ldp-wg@w3.org>
> > Date: 11/07/2013 08:47 AM
> > Subject: Re: How to find the members of an LDPC?
> >
------------------------------------------------------------------------
> >
> >
> >
> > On 11/06/2013 09:01 AM, Steve Speicher wrote:
> > > Hi,
> > >
> > >
> > > On Tue, Nov 5, 2013 at 7:49 PM, Alexandre Bertails <bertails@w3.org
> > > <mailto:bertails@w3.org>> wrote:
> > >
> > > Hi guys,
> > >
> > > I understand ldp:containerResource, ldp:containsRelation and
> > > ldp:insertedContentRelation as a _set of instructions_ for the
> > LDPC to
> > > manage some domain-based relations, but I don't see a way to
find the
> > > LDPRs created by the LDPC.
> > >
> > > Please consider the following example:
> > >
> > > $ GET http://example.com/shopping/__cart/
> > > <http://example.com/shopping/cart/>
> > >
> > > [[
> > > </shopping/cart/> a ldp:Container;
> > > ldp:containerResource <#>;
> > > ldp:containsRelation order:contains;
> > > ldp:insertedContentRelation foaf:primaryTopic.
> > > ]]
> > >
> > > $ POST http://example.com/shopping/__cart/
> > > <http://example.com/shopping/cart/>
> > >
> > > [[
> > > <> foaf:primaryTopic <urn:isbn:0470396792> .
> > > ]]
> > >
> > > $ GET http://example.com/shopping/__cart/
> > > <http://example.com/shopping/cart/>
> > >
> > > [[
> > > </shopping/cart/> a ldp:Container;
> > > ldp:containerResource <#>;
> > > ldp:containsRelation order:contains;
> > > ldp:insertedContentRelation foaf:primaryTopic.
> > >
> > > <#> order:contains <urn:isbn:0470396792>
> > > ]]
> > >
> > > Question: from the last GET, what is the LDPR for
> > <urn:isbn:0470396792>?
> > >
> > >
> > > If the ldp:member relation does not exist, how would a client
deduce
> > > the members that were created
> > >
> > > ?
> > >
> > >
> > > One would assume that the POST would return a 201-Created status
message
> > > and Location header of the URL for the new resource created. The
server
> > > may produce another triple to link the created resource (LDPR), not
sure
> > > what it might be:
> > > <> ex:describes <#>.
> >
> > For any Web API I have played with, listing (or querying) a
> > container/collection to retrieve the members it created was a basic
> > feature.
> >
> > Adding an ldp:member predicate which makes explicit the membership
> > relation between an LDPC and its LDPRs. But the ldp:containerResource
> > + ldp:containsRelation + ldp:insertedContentRelation thing (can we
> > have a name for _what_ this is?) is something different. I'm not
> > saying this is useless, but it addresses a different problem and it's
> > hard to justify why all application developers would have to deal with
> > that while simple interactions are not there.
> >
> > >
> > > What really matters as client is to know what interactions are
> > > possible. If an interaction model were to be defined, I would
expect
> > > to see something like that:
> > >
> > > 1. HTTP HEAD on </foo/> tells client "I am an LDPC" as it
returns a
> > > header
> > > Link: <http://www.w3.org/ns/ldp#__Container
> > > <http://www.w3.org/ns/ldp#Container>>; rel="type"
> > >
> > > 2. from a GET on </foo/>, a client finds/deduces the LDPRs
managed by
> > > </foo/> eg. with triples like { </foo/> ldp:member
</foo/bar> }
> > >
> > > 3. HTTP HEAD on </foo/bar> tells client "I am an LDPR" as it
returns
> > > a header
> > > Link: <http://www.w3.org/ns/ldp#__Resource
> > > <http://www.w3.org/ns/ldp#Resource>>; rel="type"
> > >
> > > 4. HTTP DELETE on </foo/bar> MUST remove the LDPR and remove
> > > { </foo/> ldp:member </foo/bar> } from the LDPC
> > >
> > > This is the interaction model defined by LDP ... with the exception
of
> > > ldp:member this isn't defined but think you are saying
> > > ldp:containsRelation. I can't tell if you are saying there is
something
> > > missing or you are just describing roughly how it works.
> >
> > We already know that the interaction is not hypermedia driven as we
> > agreed not to define a new media-type for LDP. Instead we have a Link
> > header for Resource. But I still need to look at the payload to know
> > about what interaction is possible with the resource. That means that
> > 1. and 3. don't really work like in my example.
> >
> > ldp:containsRelation is just an instruction targeting the LDPC to
> > manage some domain-related triples. So 2. just doesn't hold at all.
> >
> > Finally, 4. is really odd as I have no way (in the general case) to
> > know that an LDPC manages an LDPR or not.
> >
> > So yes, there are apparently several people believing that there are
> > basic missing things, and some incidental complexity which is hard to
> > justify.
> >
> > Alexandre.
> >
> > >
> > > - Steve
> > >
> > > Alexandre.
> > >
> > >
> >
> >
> >
>
Received on Friday, 8 November 2013 04:53:53 UTC