In this paper, we describe the design and implementation of the SOP Object Version System which is built upon an object database system, called SOP (SNU ODBMS Platform). SOP is fully compliant with ODMG-93, a standard for object databases proposed by the Object Database Management Group (ODMG). To support object versioning in an ODMG C++ OML (Object Manipulation Language) environment, the SOP Object Version System provides a set of APIs (Application Programming Interfaces) as a class library. One important design goal of the SOP Object Version System was to achieve full compliance with ODMG-93 standard. That is, in designing the class library, we tried to utilize the ODMG-93 C++ OML interface as much as possible, while preserving its semantics as defined in ODMG-93. Our object version model follows the basic functionalities of mainstream object version models. Although this approach burdens programmers with the management of the application-specific version policy, it helps users to apply the SOP Object Version System to diverse application areas. Strictly speaking, the version concept discussed in this paper is about user-level versions. System-level version concepts, such as for concurrency control [1] and long duration transaction [2] is beyond the scope of this paper. This paper deals with the design and implementation of version facilities of the SOP Object Version System, which extends the SOP (SNU ODBMS Platform) system [19], which was developed from scratch at Seoul National University and is fully compliant with ODMG-93, the de facto object database standard proposed by the Object Data Management Group (ODMG) [20].In the early 1990s, ODBMS vendors recognized that the lack of a standard for object databases was a major limitation to their products' wide acceptance in the market. They learned that much of the relational database's success was attributable to its standard, SQL. Hence, they organized the ODMG in the summer of 1991 so as to make an object database standard allowing source code portability and interoperability between different ODBMS products. Since the publication of release 1.0, in the late 1993, the ODMG made several enhancements to the standard, release 1.1, 1.2 and 2.0 (as of 1997). The main components of the standards include (1) Object Model, the common data model to be supported by ODBMSs, (2) Object Definition Language (ODL), the specification languages for ODBMSs, (3) Object Query Language (OQL), a declarative language for querying and updating database objects, and (4) Object Manipulation Languages (OMLs), the bindings of ODBMSs to the popular object oriented languages C++, Smalltalk and Java (new in release 2.0 [22]). We assume in this paper that readers are familiar with the ODMG-93 standard, especially ODMG C++ OML and the C++ programming language [23].The SOP system supports ODL, OQL and C++ ODL/OML binding of the ODMG-93 standard (currently based on release 1.2 [20]). SOP consists of several main modules, including an object storage system Soprano [24,25], a cost-based query p...