|| Checking for direct PDF access through Ovid
We describe how to express constraints in a functional (semantic) data model, which has a working implementation in an object database. We trace the development of such constraints from being integrity checks embedded in procedural code to being something declarative and self-contained, combining data access and computation, that can be moved around into other contexts in intelligent distributed systems. We see this as paralleling and extending the original vision of functions as values in functional programming systems. It is greatly helped by using a referentially transparent functional formalisation. We illustrate these ideas by showing how constraints can move around within database systems (Colan & Angelic Daplex), being transformed for various uses, or even moved out into other systems and fused into a specification for a configuration problem. We look forward to future directions involving Agents.