There are two camps on the subject of query languages. One camp tries to embed SQL in C++, so that the same types of queries are available as are used in traditional RDBs. The other camp tries to stay in C++. For example, one approach is not to query a whole database, but to query a container. A query on the container is a binary expression; the query returns the subset of the elements in the container that are true for the expression.
As the OODB market matures, clients expect that these products will support the same set of multi-user features that RDBs support. This includes transactional control, journaling, security, protection etc. OODBs are beginning to penetrate the transactional processing market (banks and insurance companies), and this will require them to support thousands of simultaneous users and to store terabytes of data.