binding rules and container hierarchy

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