digraph { rankdir = BT subgraph cluster_msyn { MetaSig } subgraph cluster_syn { Sig } subgraph cluster_msem { MetaClass Amb[label="Amb/Def"] MetaTarg Amb -> MetaClass[label="class-of"] Amb -> MetaTarg[label="habitat-of"] MetaClass -> MetaTarg[label="U", style=dashed] } Sig -> MetaSig[label="meta-signature-of"] MetaSig -> Amb[label="selected-model-of"] MetaSig -> MetaClass[label="extension-of"] MetaSig -> MetaTarg[label="selected-target-of"] subgraph cluster_sem { Targ Def Inst Class Class -> Targ[label=U, style=dashed] Inst -> Class[label="class-of"] Inst -> Targ[label="habitat-of"] Def -> Class[label="class-of"] } Targ -> Amb[label="object-of"] Sig -> Class[label="extension-of"] Sig -> Inst[label="model-of"] Sig -> Targ[label="selected-target-of"] Sig -> Def[label="selected-model-of"] MetaAmb[label="", shape=none] MetaTarg -> MetaAmb[label="object-of"] }