maybeSQL is the bastard child of SQL and noSQL.
A maybeSQL database is a map from string table names to tables.
A maybeSQL table is a collection of entries, as well as a set of named common properties that all entries may or may not have and a set of constraints on those properties that all entries must obey.
A maybeSQL entry is a set of key-value pairs, where values may be of a variety of data types. Values may also be tables of their own, although implementations of maybeSQL are not required to support relational constraints on these value-tables.
A property of an entry is its name and data type.
A constraint is any restriction on the existence or value of an element with a specific property. Especially notable constraints are those on data type, nullability, uniqueness or relation to other entries.
maybeSQL databases can be accessed one or both of two ways. Firstly through SQL; queries on databases can be done as traditional SQL queries, properties which do not exist for an entry are evaluated as having a null value. Second databases can be accessed as objects (compared to JSON objects here); A database can be interpreted as an object, a table as a collection, an entry as an object.
maybeSQL databases support ACID transactions.