Compounds let you represent structured records in Liquid syntax while still storing everything in graph form.
select cid, user_name, domain
from liquid.query($$
DefCompound("Email", "user", "0", "liquid/string").
DefCompound("Email", "domain", "0", "liquid/string").
Edge("Email", "liquid/mutable", "false").
Email@(user="root", domain="example.com").
Email@(cid=cid, user=user_name, domain=domain)?
$$) as t(cid text, user_name text, domain text);
cidThe compound identity is a canonical Liquid literal built from the type and roles.
cid= is optional when assertingcid= is useful when querying or joining compounds with edgesselect cid, label
from liquid.query($$
DefCompound("Task", "label", "0", "liquid/string").
Edge("Task", "liquid/mutable", "false").
Task@(label="write_docs").
Edge("workflow:docs", "has_task", "Task@(label='write_docs')").
Task@(cid=cid, label=label)?
$$) as t(cid text, label text);
Compounds are a good fit for:
Compounds are still graph data: