Re: composition and aggregation

On 29 Jan 2013, at 16:09, "Wilde, Erik" <Erik.Wilde@emc.com> wrote:

> hello henry.
> 
> On 2013-01-29 15:48 , "Henry Story" <henry.story@bblfish.net> wrote:
>> You are saying that you need two relation
>> ldp:contains a rdf:Property;
>>  rdfs:domain ldp:Container;
>>  rdfs:comment """
>> deleting this relation requires deletion of the resource that is the
>> object 
>> of this relation.
>> """
>> ldp:link a rdf:Property;
>>  rdfs:comment """
>> a relation to another resource, that like a symbolic link on a unix
>> file system 
>> does not entail the deletion of the object of the relation if removed. "
>> 
>> Mind you that ldp:link is so general you may wonder why not just use the
>> top level
>> property of rdf. Is there anything special about this link property at
>> all?
> 
> do i really need two relations?

When I do an HTTP GET on your Container I need to be able to distinguish
which things are contained in the container and which things are linked 
from it. So assuming your http://my.example/wilde/ container returns
G1 = {
      <> a ldp:Container;
         rdfs:member <friends>, </joe> . 
}

Then how would an agent know which of <member> or </joe> was
a contained element, and which one was linked?

This is what the above relations propose to do. One can the 
have your server return the following which implies the above
graph

G2 = { 
     <> a ldp:Container;
        ldp:contains <friends>; 
        ldp:link </joe> .
}

Now a client can tell which of those resources if deleted from 
<http://my.example/wilde/> would in fact be removed. The answer
is <friends> would be removed. Also you know that if you send
a DELETE to <friends> it will be removed from the ldp:Container.


Notice how G2 logically implies G1, ie: any triple that is 
incompatible with G1 is incompatible with G2 . We can 
write this ( see http://www.w3.org/2000/10/swap/doc/CwmBuiltins.html )

  G2 log:implies G1 .


> i think (but maybe i am thinking something
> wrong here) i need just one relation ldp:Content,

( note in rdf by convention we have Classes start 
with uppercase letters, and relations start with lower
case ones.  ) 

So you mean

ldp:content a rdf:Property .

> and it simply associates content. there must be exactly one such triple in what i POST.
> depending on the document i POST, i may choose to include the triples that are
> associated with that content, or not.

So perhaps you POST 

P1 = {
   <> ldp:content <http://bblfish.net/> .
}

to  <http://my.example/wilde/> then a new GET on 
that resource will return

G3 = { 
    <> a ldp:Container;
        ldp:contains <friends>; 
        ldp:link </joe>, <http://my.example/wilde/> .
}

( assuming you have agreed with me that we need a to distinguish
 contained members and just symbolic links )

> if i include the triples, then i am
> "embedding", if i don't, then i am "linking". the server doesn't look or
> care (what it does do, of course, is to validate that there must be
> exactly one ldp:Content in the RDF i am POSTing).


Ok so for an embedding example now:

Perhaps you post (forgetting namespaces for the moment )

P2 = {
<> ldp:content [ a animal:Cat;
                 foaf:name "kittykitty" 
                 foaf:depiction <img/kity.jpeg> ]  .
}

So now because there is additional information on the blank node that represents an animal,
Your idea is that a new GET on <http://my.example/wilde/> will return

G3 = { 
    <> a ldp:Container;
        ldp:contains <friends>, <kitty>; 
        ldp:link </joe>, <http://my.example/wilde/> .
}

Where a GET on <http://my.example/wilde/kitty> will return perhaps

K1 = {
  [] foaf:name "kittykitty";
     foaf:depiction <img/kitty.jpeg> .
}


> when a client GETs the
> RDF, content is either embedded in the resource, or it's not, and the
> rules of the ldp:Content link then say that a client can try to GET the
> actual content from the linked URI.

I am not sure if I have got the jist of what you are aiming at. But 
even here you see it will be useful to distinguish linked elements
that when deleted will no longer appear in the  container 
<http://my.example/wilde/> from elements that are just linked. 

Anyway, is this what you are getting at or am I misunderstanding what you
are thinking of? 


> 
> cheers,
> 
> dret.
> 

Social Web Architect
http://bblfish.net/

Received on Tuesday, 29 January 2013 16:29:33 UTC