In an ideal world every program is written as succinctly and declaratively as possible. If such a programming utopia exists, then an application must be a collection of cooperating programs, each written in a domain specific language (DSL). The Cooperating Languages framework provides a basis for such a cooperation. A model of the program is given as a set of relations, which forms the basis of a communication between these programs. Datalog, as a declarative language that operates over relations, is used to define this communication, i.e. what data between which programs is passed around.