W3C home > Mailing lists > Public > public-ldp-wg@w3.org > December 2013

Re: About the ldp:xyz relationship

From: Arnaud Le Hors <lehors@us.ibm.com>
Date: Thu, 5 Dec 2013 08:11:27 -0800
To: Henry Story <henry.story@bblfish.net>
Cc: "Linked Data Platform (LDP) Working Group" <public-ldp-wg@w3.org>
Message-ID: <OF4309C37C.1EB40DE7-ON88257C38.0055691F-88257C38.0058F1A0@us.ibm.com>
Henry Story <henry.story@bblfish.net> wrote on 12/05/2013 03:02:30 AM:

> I did not understand the following statement:
> 
> [[
> It is tempting to think that ldp:xyz should simply be ldp:member but
> that would lead to a contradiction in the case of an 
> IndirectContainer where this relationship links to an information 
> resource which is not the member.
> ]]
> 
> So in order to support that claim one needs to have definitions. 

Well, I'd argue that having formal definitions isn't strictly necessary, 
my wiki page gives you all the sparql queries you need to understand what 
these really are, but I agree formal definitions can help... if they are 
correct. :-)

> Below are the
> ones I found, but I don't understand what the contradiction is meant
> to be. Can 
> you make that clearer?
> 
> ~~~~~~~~~~~~~~~~~~~8<~~~~~~~~~~~~~~~~~~8<~~~~~
> ldp:member a rdf:Property;
>   skos:editorialNote "this relation could also be called ldp:manages."
>   rdfs:subPropertyOf rdfs:member;
>   rdf:domain ldp:Container;
>   rdf:range ldp:Resource; //<- this is intended to refer to the set 
> of LDPRs and LDP Binaries. Find a name for it.
>   w3c:voted <http://www.w3.org/2013/meeting/ldp/2013-11-25#ISSUE__2d_84>
>   rdfs:comment """
>     An ldp:member of a ldp:Container is a Resource which is created 
> when a POST succeeds 
>     on it (creating also the membership triples in the LDPC) or 
> which when DELETED 
>    removes the membership triples as specified by the "Linked Data 
> Platform 1.0" spec.""" .

The above definition works for a SimpleContainer because in that case the 
resource that is created via POST is also the resource that gets added as 
a member. It doesn't work in the case of an IndirectContainer where the 
latter is not true. To work for IndirectContainer the range would need to 
be rdfs:Resource. Look at the FOAF example:

@base <http://example.org/arnaud>
@prefix ldp: <http://www.w3.org/ns/ldp#>.
@prefix foaf: <http://xmlns.com/foaf/0.1/> .

<> a ldp:IndirectContainer;
  ldp:containerResource <#me>;
  ldp:containsRelation foaf:knows;
  ldp:insertedContentRelation foaf:primaryTopic ;
  ldp:memberResource <http://example.org/steves> ;    # link to the 
information resource
  ldp:memberResource <http://example.org/timbl> .    # link to the 
information resource

<#me> a foaf:Person;
  foaf:knows <http://example.org/steves#me>;          # link to the member 
resource
  foaf:knows <http://example.org/timbl#me>.          # link to the member 
resource

<http://example.org/steves#me> is not an LDPR, right? <
http://example.org/steves> is.
If we were to replace ldp:memberResource by ldp:member we would wrongly 
imply that <http://example.org/steves> is the member when it is not. <
http://example.org/steves#me> is the member.

Of course, you're might tell me that this is why calling <
http://example.org/steves#me> the member is wrong but that's what adding 
insertedContentRelation, then called MembershipObject, was all about. 
Allowing one to have a container of real things (e.g., zaza the cat) 
rather than merely of documents/information resources that can be created 
via POST.

If anything this tells me that it's a bad idea to use ldp:member the way 
we do with SimpleContainer because it's going to be misleading people into 
believing that a member is necessarily an ldp:Resource when it's not. 
rdfs:member would be better suited.

> 
> 
> ldp:memberResource owl:sameAs ldp:created;
>    rdf:domain ldp:Container;
>    rdf:range ldp:Resource //<- this is intended to refer to the set 
> of LDPRs and LDP Binaries
>    rdfs:comment """
>      relates the resources created by a container
>    """.

We don't have ldp:memberResource and ldp:created. ldp:memberResource is 
ldp:created renamed. The rest is fine.

> 
> ldp:xyz a rdf:Property;
>   rdf:domain ldp:Container;
>   rdf:range ldp:Resource; //<- this is intended to refer to the set 
> of LDPRs and LDP Binaries. Find a name for it. 
>   rdfs:comment """
>     ldp:xyz relates an LDPC to the resources that it manages [link 
> to the spec for Managed Resource] 
>   """.
> ~~~~~~~~~~~~~~~~~~~8<~~~~~~~~~~~~~~~~~~8<~~~~~

Yep. Which is why I said ldp:xyz matches ldp:membeResource.

> 
> 
> 
> > --
> > Arnaud  Le Hors - Software Standards Architect - IBM Software Group
> 
> Social Web Architect
> http://bblfish.net/
> 
> 

--
Arnaud  Le Hors - Software Standards Architect - IBM Software Group
Received on Thursday, 5 December 2013 16:12:07 UTC

This archive was generated by hypermail 2.3.1 : Tuesday, 6 January 2015 21:11:54 UTC