RDBの行をベクトル化し、逐次的投入にも対応した仕組み。
以下の論文で提案。
対象データベースの定義
D | データベース |
\sigma | データベーススキーマ(定義全体) |
R,S | 個々のリレーション名 |
R(A_1 \dots A_k) | リレーションスキーマの集合 |
A_i | \sigma の要素名 (attribute name) |
\mathbf{A},\mathbf{B},\mathbf{C} | 要素名の集合 |
\mathbf{B}=B_1 \dots B_\ell |
R.A | \sigma の要素(attribute) |
\mathrm{dom}(R.A) | R.A の値域(domain) |
\mathrm{key}(R) | R のキー |
\mathrm{key}(R) \subseteq R(A_1 \dots A_k) |
空集合であることが可能 |
- 外部キー制約
- R[\mathbf{B}] \subseteq S[\mathbf{C}]
\mathrm{key}(S) = S[\mathbf{C}]
f=R(a_1 \dots a_k) | 行(事実の集合) |
a_i \in \mathrm{dom}(R.A_i) |
空値 (null value) の場合、 \bot |
f[A_i] | a_i の値 |
f[\mathbf{B}] | f[\mathbf{B}]=f[B_1],\dots,f[B_\ell] |
問題定義
- 静的DB埋め込み (Static database embedding)
- スキーマ \sigma を持つデータベース D に対し、
埋め込み関数 \gamma:D \to \mathbb{R}^k を作る。
ただし、ハイパーパラメータ k>0
- 動的DB埋め込み (Dynamic database embedding)
- \gamma を新たな事実 f \notin D に拡張する。
\gamma^\prime:D \cup \{f\} \to \mathbb{R}^k
ただし、元の値は変更しない。
つまり、 f^\prime \in D に対し \gamma^\prime(f^\prime)=\gamma(f^\prime)