1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289
|
-- ILI : Interlingual Index
CREATE TABLE ilis (
rowid INTEGER PRIMARY KEY,
id TEXT NOT NULL,
status_rowid INTEGER NOT NULL REFERENCES ili_statuses (rowid),
definition TEXT,
metadata META,
UNIQUE (id)
);
CREATE INDEX ili_id_index ON ilis (id);
CREATE TABLE proposed_ilis (
rowid INTEGER PRIMARY KEY,
synset_rowid INTEGER REFERENCES synsets (rowid) ON DELETE CASCADE,
definition TEXT,
metadata META,
UNIQUE (synset_rowid)
);
CREATE INDEX proposed_ili_synset_rowid_index ON proposed_ilis (synset_rowid);
-- Wordnet lexicons
CREATE TABLE lexicons (
rowid INTEGER PRIMARY KEY, -- unique database-internal id
specifier TEXT NOT NULL, -- lexicon specifer -> id:version
id TEXT NOT NULL, -- user-facing id
label TEXT NOT NULL,
language TEXT NOT NULL, -- bcp-47 language tag
email TEXT NOT NULL,
license TEXT NOT NULL,
version TEXT NOT NULL,
url TEXT,
citation TEXT,
logo TEXT,
metadata META,
modified BOOLEAN CHECK( modified IN (0, 1) ) DEFAULT 0 NOT NULL,
UNIQUE (id, version),
UNIQUE (specifier)
);
CREATE INDEX lexicon_specifier_index ON lexicons (specifier);
CREATE TABLE lexicon_dependencies (
dependent_rowid INTEGER NOT NULL REFERENCES lexicons (rowid) ON DELETE CASCADE,
provider_id TEXT NOT NULL,
provider_version TEXT NOT NULL,
provider_url TEXT,
provider_rowid INTEGER REFERENCES lexicons (rowid) ON DELETE SET NULL
);
CREATE INDEX lexicon_dependent_index ON lexicon_dependencies(dependent_rowid);
CREATE TABLE lexicon_extensions (
extension_rowid INTEGER NOT NULL REFERENCES lexicons (rowid) ON DELETE CASCADE,
base_id TEXT NOT NULL,
base_version TEXT NOT NULL,
base_url TEXT,
base_rowid INTEGER REFERENCES lexicons (rowid),
UNIQUE (extension_rowid, base_rowid)
);
CREATE INDEX lexicon_extension_index ON lexicon_extensions(extension_rowid);
-- Lexical Entries
CREATE TABLE entry_index (
entry_rowid INTEGER NOT NULL REFERENCES entries (rowid) ON DELETE CASCADE,
lemma TEXT NOT NULL,
UNIQUE (entry_rowid)
);
CREATE INDEX entry_index_entry_index ON entry_index(entry_rowid);
CREATE INDEX entry_index_lemma_index ON entry_index(lemma);
/* The 'lemma' entity of a lexical entry is just a form, but it should
be the only form with rank = 0. After that, rank can be used to
indicate preference for a form. */
CREATE TABLE entries (
rowid INTEGER PRIMARY KEY,
id TEXT NOT NULL,
lexicon_rowid INTEGER NOT NULL REFERENCES lexicons (rowid) ON DELETE CASCADE,
pos TEXT NOT NULL,
metadata META,
UNIQUE (id, lexicon_rowid)
);
CREATE INDEX entry_id_index ON entries (id);
CREATE TABLE forms (
rowid INTEGER PRIMARY KEY,
id TEXT,
lexicon_rowid INTEGER NOT NULL REFERENCES lexicons(rowid) ON DELETE CASCADE,
entry_rowid INTEGER NOT NULL REFERENCES entries(rowid) ON DELETE CASCADE,
form TEXT NOT NULL,
normalized_form TEXT,
script TEXT,
rank INTEGER DEFAULT 1, -- rank 0 is the preferred lemma
UNIQUE (entry_rowid, form, script)
);
CREATE INDEX form_entry_index ON forms (entry_rowid);
CREATE INDEX form_index ON forms (form);
CREATE INDEX form_norm_index ON forms (normalized_form);
CREATE TABLE pronunciations (
form_rowid INTEGER NOT NULL REFERENCES forms (rowid) ON DELETE CASCADE,
lexicon_rowid INTEGER NOT NULL REFERENCES lexicons(rowid) ON DELETE CASCADE,
value TEXT,
variety TEXT,
notation TEXT,
phonemic BOOLEAN CHECK( phonemic IN (0, 1) ) DEFAULT 1 NOT NULL,
audio TEXT
);
CREATE INDEX pronunciation_form_index ON pronunciations (form_rowid);
CREATE TABLE tags (
form_rowid INTEGER NOT NULL REFERENCES forms (rowid) ON DELETE CASCADE,
lexicon_rowid INTEGER NOT NULL REFERENCES lexicons(rowid) ON DELETE CASCADE,
tag TEXT,
category TEXT
);
CREATE INDEX tag_form_index ON tags (form_rowid);
-- Synsets
CREATE TABLE synsets (
rowid INTEGER PRIMARY KEY,
id TEXT NOT NULL,
lexicon_rowid INTEGER NOT NULL REFERENCES lexicons (rowid) ON DELETE CASCADE,
ili_rowid INTEGER REFERENCES ilis (rowid),
pos TEXT,
lexfile_rowid INTEGER REFERENCES lexfiles (rowid),
metadata META
);
CREATE INDEX synset_id_index ON synsets (id);
CREATE INDEX synset_ili_rowid_index ON synsets (ili_rowid);
CREATE TABLE unlexicalized_synsets (
synset_rowid INTEGER NOT NULL REFERENCES synsets (rowid) ON DELETE CASCADE
);
CREATE INDEX unlexicalized_synsets_index ON unlexicalized_synsets (synset_rowid);
CREATE TABLE synset_relations (
rowid INTEGER PRIMARY KEY,
lexicon_rowid INTEGER NOT NULL REFERENCES lexicons (rowid) ON DELETE CASCADE,
source_rowid INTEGER NOT NULL REFERENCES synsets(rowid) ON DELETE CASCADE,
target_rowid INTEGER NOT NULL REFERENCES synsets(rowid) ON DELETE CASCADE,
type_rowid INTEGER NOT NULL REFERENCES relation_types(rowid),
metadata META
);
CREATE INDEX synset_relation_source_index ON synset_relations (source_rowid);
CREATE INDEX synset_relation_target_index ON synset_relations (target_rowid);
CREATE TABLE definitions (
rowid INTEGER PRIMARY KEY,
lexicon_rowid INTEGER NOT NULL REFERENCES lexicons(rowid) ON DELETE CASCADE,
synset_rowid INTEGER NOT NULL REFERENCES synsets(rowid) ON DELETE CASCADE,
definition TEXT,
language TEXT, -- bcp-47 language tag
sense_rowid INTEGER REFERENCES senses(rowid) ON DELETE SET NULL,
metadata META
);
CREATE INDEX definition_rowid_index ON definitions (synset_rowid);
CREATE INDEX definition_sense_index ON definitions (sense_rowid);
CREATE TABLE synset_examples (
rowid INTEGER PRIMARY KEY,
lexicon_rowid INTEGER NOT NULL REFERENCES lexicons(rowid) ON DELETE CASCADE,
synset_rowid INTEGER NOT NULL REFERENCES synsets(rowid) ON DELETE CASCADE,
example TEXT,
language TEXT, -- bcp-47 language tag
metadata META
);
CREATE INDEX synset_example_rowid_index ON synset_examples(synset_rowid);
-- Senses
CREATE TABLE senses (
rowid INTEGER PRIMARY KEY,
id TEXT NOT NULL,
lexicon_rowid INTEGER NOT NULL REFERENCES lexicons(rowid) ON DELETE CASCADE,
entry_rowid INTEGER NOT NULL REFERENCES entries(rowid) ON DELETE CASCADE,
entry_rank INTEGER DEFAULT 1,
synset_rowid INTEGER NOT NULL REFERENCES synsets(rowid) ON DELETE CASCADE,
synset_rank INTEGER DEFAULT 1,
metadata META
);
CREATE INDEX sense_id_index ON senses(id);
CREATE INDEX sense_entry_rowid_index ON senses (entry_rowid);
CREATE INDEX sense_synset_rowid_index ON senses (synset_rowid);
CREATE TABLE unlexicalized_senses (
sense_rowid INTEGER NOT NULL REFERENCES senses (rowid) ON DELETE CASCADE
);
CREATE INDEX unlexicalized_senses_index ON unlexicalized_senses (sense_rowid);
CREATE TABLE sense_relations (
rowid INTEGER PRIMARY KEY,
lexicon_rowid INTEGER NOT NULL REFERENCES lexicons (rowid) ON DELETE CASCADE,
source_rowid INTEGER NOT NULL REFERENCES senses(rowid) ON DELETE CASCADE,
target_rowid INTEGER NOT NULL REFERENCES senses(rowid) ON DELETE CASCADE,
type_rowid INTEGER NOT NULL REFERENCES relation_types(rowid),
metadata META
);
CREATE INDEX sense_relation_source_index ON sense_relations (source_rowid);
CREATE INDEX sense_relation_target_index ON sense_relations (target_rowid);
CREATE TABLE sense_synset_relations (
rowid INTEGER PRIMARY KEY,
lexicon_rowid INTEGER NOT NULL REFERENCES lexicons (rowid) ON DELETE CASCADE,
source_rowid INTEGER NOT NULL REFERENCES senses(rowid) ON DELETE CASCADE,
target_rowid INTEGER NOT NULL REFERENCES synsets(rowid) ON DELETE CASCADE,
type_rowid INTEGER NOT NULL REFERENCES relation_types(rowid),
metadata META
);
CREATE INDEX sense_synset_relation_source_index ON sense_synset_relations (source_rowid);
CREATE INDEX sense_synset_relation_target_index ON sense_synset_relations (target_rowid);
CREATE TABLE adjpositions (
sense_rowid INTEGER NOT NULL REFERENCES senses(rowid) ON DELETE CASCADE,
adjposition TEXT NOT NULL
);
CREATE INDEX adjposition_sense_index ON adjpositions (sense_rowid);
CREATE TABLE sense_examples (
rowid INTEGER PRIMARY KEY,
lexicon_rowid INTEGER NOT NULL REFERENCES lexicons(rowid) ON DELETE CASCADE,
sense_rowid INTEGER NOT NULL REFERENCES senses(rowid) ON DELETE CASCADE,
example TEXT,
language TEXT, -- bcp-47 language tag
metadata META
);
CREATE INDEX sense_example_index ON sense_examples (sense_rowid);
CREATE TABLE counts (
rowid INTEGER PRIMARY KEY,
lexicon_rowid INTEGER NOT NULL REFERENCES lexicons(rowid) ON DELETE CASCADE,
sense_rowid INTEGER NOT NULL REFERENCES senses(rowid) ON DELETE CASCADE,
count INTEGER NOT NULL,
metadata META
);
CREATE INDEX count_index ON counts(sense_rowid);
-- Syntactic Behaviours
CREATE TABLE syntactic_behaviours (
rowid INTEGER PRIMARY KEY,
id TEXT,
lexicon_rowid INTEGER NOT NULL REFERENCES lexicons (rowid) ON DELETE CASCADE,
frame TEXT NOT NULL,
UNIQUE (lexicon_rowid, id),
UNIQUE (lexicon_rowid, frame)
);
CREATE INDEX syntactic_behaviour_id_index ON syntactic_behaviours (id);
CREATE TABLE syntactic_behaviour_senses (
syntactic_behaviour_rowid INTEGER NOT NULL REFERENCES syntactic_behaviours (rowid) ON DELETE CASCADE,
sense_rowid INTEGER NOT NULL REFERENCES senses (rowid) ON DELETE CASCADE
);
CREATE INDEX syntactic_behaviour_sense_sb_index
ON syntactic_behaviour_senses (syntactic_behaviour_rowid);
CREATE INDEX syntactic_behaviour_sense_sense_index
ON syntactic_behaviour_senses (sense_rowid);
-- Lookup Tables
CREATE TABLE relation_types (
rowid INTEGER PRIMARY KEY,
type TEXT NOT NULL,
UNIQUE (type)
);
CREATE INDEX relation_type_index ON relation_types (type);
CREATE TABLE ili_statuses (
rowid INTEGER PRIMARY KEY,
status TEXT NOT NULL,
UNIQUE (status)
);
CREATE INDEX ili_status_index ON ili_statuses (status);
CREATE TABLE lexfiles (
rowid INTEGER PRIMARY KEY,
name TEXT NOT NULL,
UNIQUE (name)
);
CREATE INDEX lexfile_index ON lexfiles (name);
|