[[http://markorodriguez.files.wordpress.com/2011/01/graph-example1.png|width=150px|align=left|float]]

A "graph database":http://en.wikipedia.org/wiki/Graph_database represents a collection of vertices (nodes, dots) connected to each other by edges (arcs, lines). Some graph database vendors provide data schema functionality. In such databases, vertices and edges are typed and there are notions of data restrictions--e.g. subclassing, data validation, rules of inference, etc. Other graph database are "schema-free" in that there is no notion of a type system--only vertices, edges, and their adjacencies. When modeling worldly objects (people, places, things) and their relationships to each other, schema-based graph databases are handy. When modeling graphical data structures such as arbitrary topologies, a schema is somewhat less important. In general, as the complexity of the the domain model increases, the need for a schema system increases.

The purpose of Frames it to provide a data schema layer to "Blueprints":http://blueprints.tinkerpop.com enabled graph databases. With Blueprints, there are simply vertices, edges, and key/value properties. Frames is used to represent (or _frame_) aspects of the underlying graph in terms of domain objects and their relationships to one another. As such, the developer can work in terms of real-world objects instead of vertices and edges.