--- /dev/null
+L0 = <http://www.simantics.org/Layer0-1.1>
+
+DATA = <http://www.simantics.org/Datatypes-1.1>
+
+DATA.BTree <T L0.Entity
+ >-- DATA.BTree.root --> DATA.BTreeNode <R L0.IsComposedOf : L0.FunctionalRelation
+ >-- DATA.BTree.t --> L0.Integer <R L0.HasProperty : L0.FunctionalRelation
+ >-- DATA.BTree.HasOwnerRelation <R L0.DependsOn
+ >-- DATA.BTree.HasNodeType <R L0.DependsOn
+ >-- DATA.BTree.mod --> L0.Long <R L0.HasProperty : L0.FunctionalRelation
+
+DATA.BTreeNode <T L0.Entity
+ >-- DATA.BTreeNode.content --> DATA.BTreeNode.Content <R L0.HasProperty : L0.FunctionalRelation
+ >-- DATA.BTreeNode.Owns <R L0.IsComposedOf
+ L0.InverseOf DATA.BTreeNode.IsOwnedBy
+
+DATA.BTreeNode.Content <T L0.Literal
+ @L0.assert L0.HasDataType ${
+ leaf : Boolean,
+ size : Integer,
+ keys : Optional(Variant)[],
+ values : Optional(Long(unit="resource"))[],
+ children : Optional(Long(unit="resource"))[]
+ }
+