Declarative data dependencies