  We apply distributed language embedding methods from Natural Language
Processing to assign a vector to each database entity associated token (for
example, a token may be a word occurring in a table row, or the name of a
column). These vectors, of typical dimension 200, capture the meaning of tokens
based on the contexts in which the tokens appear together. To form vectors, we
apply a learning method to a token sequence derived from the database. We
describe various techniques for extracting token sequences from a database. The
techniques differ in complexity, in the token sequences they output and in the
database information used (e.g., foreign keys). The vectors can be used to
algebraically quantify semantic relationships between the tokens such as
similarities and analogies. Vectors enable a dual view of the data: relational
and (meaningful rather than purely syntactical) text. We introduce and explore
a new class of queries called cognitive intelligence (CI) queries that extract
information from the database based, in part, on the relationships encoded by
vectors. We have implemented a prototype system on top of Spark to exhibit the
power of CI queries. Here, CI queries are realized via SQL UDFs. This power
goes far beyond text extensions to relational systems due to the information
encoded in vectors. We also consider various extensions to the basic scheme,
including using a collection of views derived from the database to focus on a
domain of interest, utilizing vectors and/or text from external sources,
maintaining vectors as the database evolves and exploring a database without
utilizing its schema. For the latter, we consider minimal extensions to SQL to
vastly improve query expressiveness.
