- From: Roger Menday <roger.menday@uk.fujitsu.com>
- Date: Sun, 15 Dec 2013 08:04:12 +0000
- To: Henry Story <henry.story@bblfish.net>
- CC: Linked Data Platform WG <public-ldp-wg@w3.org>
- Message-ID: <97ECBBB3-0999-4873-98C1-3D936ACE140D@uk.fujitsu.com>
... but, I don't want to introduce new concepts ('assetDocCollection', 'bugcollection') to my domain model. Put it another way, do you want all to re-factor all existing documents which use your https://code.google.com/p/baetle/ vocabulary in order to support RESTful writing ? Roger On 14 Dec 2013, at 15:14, Henry Story wrote: > I just want to consider the possibility that all DirectContainers > can be reduced without information loss to ldp:SimpleContainers. > A few examples will help. > > There are three secitons to this > > 1. reduction of bug reports > 2. reduction of liabilities > 3. issues. > > > 1. bug reports on a product > =========================== > > 1.1 collection of bug reports > ----------------------------- > > Consider the well known case of bug reports on a product. > Using ldp:DirectContainer one could model it like this > using inferencing from "membership triples" to ldp:contains > relation. > > [[1.1.1] GET /products/swfwo/bugs/ > > <> a bt:BugReportCollection, ldp:DirectContainer; > ldp:containerResource <>; > ldp:containsRelation bt:containsBugReport; > bt:containsBugReport <1>; > ....; > bt:containsBugReport <300000> . > ]] > > This requires the relation from the product > to the bug report collection: > > [[1.1.2] GET /products/swfwo > <#v2> a Book; > dc:title "Semantic Web For the Working Ontologist"; > bt:bugCollection <swfo/bugs/>; > c:price "37"^^c:dollars ; > ]] > > It has the advantage of requiring 1 relation, and the > bugs are left in the container, without needing > to duplicate them. > > > 1.2 direct relation from product to bug reports > ----------------------------------------------- > > A DirectContainer would also make it possible to materialise > relations between the product and the bug reports > directly in the following way > > [[1.2.1] GET /products/swfwo/bugs/ > <> a bt:BugReportCollection, ldp:DirectContainer; > ldp:containerResource <../swfwo#v2>; > ldp:containsRelation bt:hasBugReport . > > <../swfo#v2> > bt:hasBugReport <1>; > ....; > bt:hasBugReport <300000> . > ]] > > But then the </products/swfwo> resource needs to > either specify all the relations to each bug report, > or to point to the bug report collection so that > a client can know how to add resources. So we have > > [[1.2.2] GET /products/swfwo > <#v2> a Book; > dc:title "Semantic Web For the Working Ontologist"; > bt:hasBugReport <swfo/bugs/1>, ... ,<swfo/bugs/30000>; #a lot!! > c:price "37"^^c:dollars. > > <swfo/bugs/> ldp:containerResource <#v2> . > ]] > > So here we end up with two resources duplicating all > the bugs, and we also need the extra relation such > as > { <swfo/bugs/> ldp:containerResource <#v2> . } > so that a client can know where to post new bugs. > ( the client allready has all the bugs ). > > > 1.3 Simplification > ------------------ > > The answer in [1.1] has an advantage of relating the product to the > collection in a manner similar to how it is done in programming > languages where one has a relation from an object to a collection > of some sort. [1.2] creates a direct relation between the product and the > reports, but it comes at a cost of duplication. It is no longer so clear > where triples have to live either. > > It turns out that we can simplify the example in [1.1] to a SimpleContainer > like this: > > [[1.3.1] GET /products/swfwo/bugs/ > > <> a bt:BugReportCollection, ldp:SimpleContainer; > ldp:contains <1>; > ....; > ldp:contains <300000> . > ]] > > This requires the relation from the product to the bug report collection > as in [1.1.2] > > [[1.3.2] GET /products/swfwo > <#v2> a Book; > dc:title "Semantic Web For the Working Ontologist"; > bt:bugCollection <swfo/bugs/>; > c:price "37"^^c:dollars. > ]] > > It turns out there is no need for the predicate > bt:containsBugReport between the collection and its > members, just as there is no need for a different collection > type in any programming languages. > > 2. network example > ================== > > The networth example from the spec is not much more complicated. > It is a bit like the example in [1.2] with relations directly > from the NetWorth to the assets or the liabilities. > > Since the Network example mixes up documents and things let me > adapt it a little bit: > > [[2.1] > @prefix ldp: <http://www.w3.org/ns/ldp#>. > @prefix o: <http://example.org/ontology/>. > <> > a o:NetWorthDocument; > o:netWorthOf <http://example.org/users/JohnZSmith>; > o:assetdoc > <assetContainer/a1>, > <assetContainer/a2>; > o:liabilitydoc > <liabilityContainer/l1>, > <liabilityContainer/l2>, > <liabilityContainer/l3>. > ]] > > > so instead of this one could just simplify this as above > to > > [[2.2] > @prefix ldp: <http://www.w3.org/ns/ldp#>. > @prefix o: <http://example.org/ontology/>. > <> > a o:NetWorthDocument; > o:netWorthOf <http://example.org/users/JohnZSmith>; > o:assetDocCollection <assetContainer/>; > o:liabilityDocCollection <liabilityContainer/> . > ]] > > Now of course the <assetContainer/> and <liabilityContainer/> can > be written out simply as ldp:SimpleContainer-s. The advantage > is that the information is not duplicated between the networthdocument > and the liabilityDocument, and it is clear where the information needs > to be placed. > > > 3. Problems > =========== > > It seems clear that one can reduce ldp:DirectContainer s to ldp:SimpleContainers like > this. But it does mean that the objects of the relations are always documents, or LDPGs. > If one wanted to move out of the document space then one would need the ldp:IndirectContainers, > and these cannot be so reduced. > > > > > Social Web Architect > http://bblfish.net/ > >
Attachments
- application/pkcs7-signature attachment: smime.p7s
Received on Sunday, 15 December 2013 08:04:44 UTC