The Shore Data Language (SDL) is a language for specifying the types of persistent objects. Although the design of SDL is heavily influenced by C++, it is intended to be independent of any particular target language. Definitions written in SDL are compiled by the SDL compiler (see the manual page sdl(sdl)) into objects stored in the database. These objects are then used to generate data declarations appropriate to a particular language, called a language binding. (Currently, only a C++ language binding exists).
SDL is derived from and inspired by the object-definition language ODL being developed by the Object Database Management Group (ODMG) as a proposed standard for object-oriented databases. At the time of this writing, the ODMG standard was not suitable for our purposes. That standard actually defines two languages. ODL per se is a variant of the Interface Description Language (IDL) defined by the Object Management Group (OMG) in connection with the Common Request Object Broker (CORBA) standardization effort. IDL is essentially a specification language for remote procedure call (RPC) interfaces. As such, it assumes complete encapsulation of objects. For example, it provides no way to specify the public and private parts of an object, since it is assumed that the private parts need not be mentioned in the specification. Thus an IDL (or ODL) specification does not have enough information to determine the layout of the data in an object, or even its total size. As such, it is inadequate for an "object-shipping" implementation in which cached copies of objects are directly manipulated by application programs. Moreover, the ODL specification is currently incomplete. While there is a (nearly) LALR grammar describing the syntax, many of the constructs have no semantics specified.
The ODMG specification also describes a specification language called "ODL-C++". No syntax for this language is given. Rather, it is described informally in terms of modifications of the type-specification fragment of C++; some features are prohibited and a few extensions are outlined. This language does not meet Shore's needs for a language-independent type specification language that would support access and manipulation of a single database by application programs written in a variety of languages.
The Shore project continues to monitor the progress of the ODMG standardization effort and hopes to reconcile SDL with ODL at some time in the future.
The current document is intended to be a reference manual rather than a tutorial introduction to SDL. See the document Getting Started with Shore for a detailed example that illustrates most of the features of SDL. The manual page intro(sdl) and other manual pages cited there describe the C++ language binding for Shore in detail.
Features that are not supported in the current release of SDL are indicated this way.