Re: An LDP example with and without membershipSubject predicate

Hi Nandana:
Can a bug be related to more than one product?
If yes, we need Model2.  If not, we need Model1
All the best, Ashok
On 5/21/2013 12:30 PM, Nandana Mihindukulasooriya wrote:
> Hi all,
>
> Roger and I were discussing some examples to include in the primer and came up with two slightly different models; one having the membershipSubject predicate and one without. We thought sharing both examples as it might contribute the discussion about membershipSubject that Henry brought up in the last conf call.
>
> Both examples involve a Bug Tracker which deals with Bugs of different Products. From these examples (and NetWorth example), on the one hand it seems membershipSubject is useful in scenarios where one resource comprises of two or more containers (collections / value sets). On the other hand, it seems it is possible to model the simple scenarios without membershipSubject predicate. This aligns with the explanation given in the spec after example 3.
>
> Model 1 (Model1.jpg)
> Bug Tracker tracks Products.
> Products has Bugs.
>
> Model 2 (Model2.jpg)
> Bug Tracker tracks Products and manages Bugs.
> Bugs are related to Products.
>
> If we model this with LDP,
>
> ----------------------- Model 1 --------------------------------------
>
> <http://example.org/app/BugTracker> a ldp:Container, bt:BugTracker ;
>         ldp:membershipPredicate bt:tracksProduct ;
> bt:tracksProduct <http://example.org/app/BugTracker/ProductA> .
> ------
> <http://example.org/app/BugTracker/ProductA> a ldp:Container, bt:Product;
> ldp:membershipPredicate bt:hasBug ;
> bt:hasBug <http://example.org/app/BugTracker/ProductA/Bug1> .
> ------
>  <http://example.org/app/BugTracker/ProductA/Bug1> a bt:Bug;
>       dcterms:title "Product A crashes when shutting down.";
>       dcterms:creator <http://example.org/users/johndoe>;
>       dcterms:created "2013-05-05T10:00"^^xsd:dateTime
>       bt:isInState "New" .
>
> ----------------------- Model 2 -------------------------------------
>
> <http://example.org/app/BugTracker> a bt:BugTracker;
> tracksProduct
>            <http://example.org/app/BugTracker/products/ProductA> ,
>            <http://example.org/app/BugTracker/products/ProductB> ;
>         hasBug <http://example.org/app/BugTracker/bugs/1> .
> ------
> <http://example.org/app/BugTracker/products/> a ldp:Container;
> ldp:membershipSubject <http://example.org/app/BugTracker>;
>          ldp:membershipPredicate bt:tracksProduct .
> ------
> <http://example.org/app/BugTracker/bugs/> a ldp:Container;
> ldp:membershipSubject <http://example.org/app/BugTracker>;
>          ldp:membershipPredicate bt:hasBug .
> ------
> <http://example.org/app/BugTracker/products/ProductA> a bt:Product .
> ------
> <http://example.org/app/BugTracker/ProductA/Bug1> a bt:Bug;
>       dcterms:title "Product A and B doesn't interoperate ";
>       dcterms:created "2013-05-05T10:00"^^xsd:dateTime;
>       dcterms:creator <http://example.org/users/johndoe>;
>       bt:relatedProduct <http://example.org/app/BugTracker/products/ProductA>;
>       bt:relatedProduct <http://example.org/app/BugTracker/products/ProductB>;
>       bt:isInState "New" .
> ------------------------------------------------------------------------
>
> Best Regards,
> Nandana
>

Received on Tuesday, 21 May 2013 16:59:24 UTC