Abstract. In previous work, we have introduced a model-theoretic semantics for compositional units, i.e. reusable units that can be used for compositional program development. Such units contain open (logic) programs and our modeltheoretic semantics characterizes their correctness and the correctness of their composition. However, for real-world software development, compositional units should be inter-operable, i.e. they should accept programs in different languages. To cater for this, our model-theoretic semantics needs to be used in conjunction with suitable semantics for behaviours and interfaces. In this paper we describe one possible approach based on constructive specifications.