- From: <henry.story@bblfish.net>
- Date: Fri, 7 Mar 2014 00:48:56 +0100
- To: Linked Data Platform WG <public-ldp-wg@w3.org>
Hi all,
As an academic exercise I tried to explore what one could call the
unified container model. This shows how one can reduce all the containers
we have to one simple relation: the ldp:bindingRule.
The bindingRule relates a container to a rule. There are three predefined
rules: ldp:ContainerRule, which specifies how an ldp:contains relation is
created on POST, the ldp:IndirectContainerRule and the ldp:DirectContainerRule .
In English here are some of the definitions:
• A Container is any object that has 1 binding rule of ldp:ContainerRule .
• An IndirectContainer is an object that only has at most 2 rules of which 1 binding rule is of type IndirectBindingRule.
• An DirectContainer is an object that only has at most 2 rules of which 1 binding rule is of type DirectBindingRule.
• A BasicContainer is now just a ldp:Container with only 1 binding rule: the ldp:ContainerRule
The advantages of this are:
(1) one unified view over all containers
(2) more complex containers can be build with more complex rules if needed
( it was never clear to me why we thought only 1 binding consequence was interesting )
(3) easy to explain the difference between BasicContainers and the others: the basic container is basic because
it only has 1 rule
Once defined we get the right hierarchy of Rules and Containers.
$ sh pellet.sh classify --input-format Turtle -l jena https://raw.github.com/bblfish/ldp/1bd8df4da79996ec8e8f6430503871723ea2fa2c/ldp.binding.ttl
Classifying 13 elements
Classifying: 100% complete in 00:00
Classifying finished in 00:00
owl:Thing
rdf:Property
ldp:HTTPActionRule
ldp:IndirectBindingRule
ldp:DirectBindingRule
ldp:ContainerRule
ldp:Resource
ldp:Source
ldp:Container
ldp:DirectContainer
ldp:IndirectContainer
ldp:BasicContainer
You can view the latest of the ontology here:
https://github.com/bblfish/ldp/blob/master/ldp.binding.ttl
Of course my formalisation may be wrong or misguided. It could certainly be improved.
But it helps a lot to be able to reason about what we are doing with the existing rdf tools.
NOTE: this does NOT mean that our clients MUST become OWL reasoners. This is just a good
way to be clear about what we are speaking about in the spec!
Ah so here is our netWorth example using the binding rules
</netWorth/> a ldp:DirectContainer;
dcterms:title "The assets of JohnZSmith";
ldp:bindingRule [ a ldp:DirectBindingRule;
ldp:membershipResource </netWorth/nw1/>;
ldp:hasMemberRelation o:asset;
];
ldp:contains </netWorth/a1>, </netWorth/a2> .
It is also possible to imagine later more advanced binding rule languages.
Henry
Social Web Architect
http://bblfish.net/
Social Web Architect
http://bblfish.net/
Received on Thursday, 6 March 2014 23:50:02 UTC