def insert_new_language(bcp, iso, name, u): """ This function is used to add a new language to the system. Only the bcp47 code and the language name are required. """ if (bcp and name and u \ and (not fetch_key_bcp_lang_code(bcp))): try: bcp = bcp.strip() if bcp else bcp iso = iso.strip() if iso else iso name = name.strip() if name else name lastid = write_omw("""INSERT INTO lang (bcp47, iso639, u) VALUES (?,?,?) """, [bcp, iso, u]) write_omw("""INSERT INTO lang_name (lang_id, in_lang_id, name, u) VALUES (?,?,?,?) """, [lastid, 1, name, u]) return True except: return False else: return False
def rate_ili_id(ili_id, rate, u): """ This function is used to give a +1 or -1 rating to ili ids. It only updates these values when necessary, overwritting the previous rating if it was different. Returns True on update and None if no changes were necessary. """ ili_id = int(ili_id) rating = fetch_rate_id([ili_id], u) if ili_id in rating: if rating[ili_id][0][0] == rate: return None else: write_omw("""UPDATE ili_rating SET rating = ? WHERE ili_id = ? AND u = ? """, [rate, ili_id, u]) return True else: write_omw("""INSERT INTO ili_rating (ili_id, rating, u) VALUES (?,?,?) """, [ili_id, rate, u]) return True
def insert_new_project(code, u): " Adds a new project to the system " try: proj_code = code.strip() if code else code write_omw("""INSERT INTO proj (code, u) VALUES (?,?) """, [proj_code, u]) return True except: return False
def comment_ili_id(ili_id, comment, u): """ This function is used to post a comment to ili ids. """ ili_id = int(ili_id) comment = comment.strip() if comment else comment write_omw("""INSERT INTO ili_com (ili_id, com, u) VALUES (?,?,?) """, [ili_id, comment, u]) return True
def insert_omw_sm(s_id, smt_id, sml_id, u): """ smt_id = sense-meta-tag_id (db restricted to the ones stored in smt) sml_id = labels (not restricted, but meanings available in sml) """ return write_omw("""INSERT INTO sm (s_id, smt_id, sml_id, u) VALUES (?,?,?,?)""", [s_id, smt_id, sml_id, u])
def insert_omw_f_src(f_id, src_id, conf, u): return write_omw("""INSERT INTO f_src (f_id, src_id, conf, u) VALUES (?,?,?,?)""", [f_id, src_id, conf, u])
def insert_omw_f(lang_id, pos_id, form, u): return write_omw("""INSERT INTO f (lang_id, pos_id, lemma, u) VALUES (?,?,?,?)""", [lang_id, pos_id, form, u])
def insert_omw_ssslink_src(ssslink_id, src_id, conf, lang_id, u): return write_omw("""INSERT INTO ssslink_src (ssslink_id, src_id, conf, lang_id, u) VALUES (?,?,?,?,?)""", [ssslink_id, src_id, conf, lang_id, u])
def insert_omw_ssslink(s_id, srel_id, ss_id, u): return write_omw("""INSERT INTO ssslink (s_id, srel_id, ss_id, u) VALUES (?,?,?,?)""", [s_id, srel_id, ss_id, u])
def insert_into_ili(kind, definition, status, src, key, u): return write_omw("""INSERT INTO ili (kind_id, def, status_id, origin_src_id, src_key, u) VALUES (?,?,?,?,?,?)""", [kind, definition, status, src, key, u])
def insert_omw_sm_src(sm_id, src_id, conf, u): return write_omw("""INSERT INTO sm_src (sm_id, src_id, conf, u) VALUES (?,?,?,?)""", [sm_id, src_id, conf, u])
def insert_omw_s(ss_id, w_id, u): return write_omw("""INSERT INTO s (ss_id, w_id, u) VALUES (?,?,?)""", [ss_id, w_id, u])
def insert_omw_ss(ili_id, pos_id, u): return write_omw("""INSERT INTO ss (ili_id, pos_id, u) VALUES (?,?,?)""", [ili_id, pos_id, u])
def insert_src(proj_id, version, u): return write_omw("""INSERT INTO src (proj_id, version, u) VALUES (?,?,?)""", [proj_id, version, u])
def insert_omw_w(canon, u): return write_omw("""INSERT INTO w (canon, u) VALUES (?,?)""", [canon, u])
def insert_omw_wf_link(w_id, f_id, src_id, conf, u): return write_omw("""INSERT INTO wf_link (w_id, f_id, src_id, conf, u) VALUES (?,?,?,?,?)""", [w_id, f_id, src_id, conf, u])
def insert_omw_ss_src(ss_id, src_id, src_key, conf, u): return write_omw("""INSERT INTO ss_src (ss_id, src_id, src_key, conf, u) VALUES (?,?,?,?,?)""", [ss_id, src_id, src_key, conf, u])
def insert_omw_def(ss_id, lang_id, d, u): return write_omw("""INSERT INTO def (ss_id, lang_id, def, u) VALUES (?,?,?,?)""", [ss_id, lang_id, d, u])
def insert_omw_ssexe(ss_id, lang_id, e, u): return write_omw("""INSERT INTO ssexe (ss_id, lang_id, ssexe, u) VALUES (?,?,?,?)""", [ss_id, lang_id, e, u])
def updateLabels(): """This functions is to be run after a new wordnet is uploaded so that concept labels for that language are created and visible as concept names. """ sfreq=dd(int) f = query_omw("""SELECT id FROM smt WHERE tag='freq'""") if f: for r in query_omw("""SELECT s_id, sml_id FROM sm WHERE smt_id=?""", str(f[0]['id'])): sfreq[r['s_id']]=r['sml_id'] senses =dd(lambda: dd(list)) #senses[ss_id][lang_id]=[(ls_id, lemma, freq), ...] forms = dd(lambda: dd(int)) #forms[lang][word] = freq langs=set() eng_id=1 ### we know this :-) for r in query_omw("""SELECT s_id, ss_id, lemma, lang_id FROM (SELECT w_id, canon, ss_id, s_id FROM (SELECT id as s_id, ss_id, w_id FROM s) JOIN w ON w_id = w.id ) JOIN f ON canon = f.id"""): senses[r['ss_id']][r['lang_id']].append((r['s_id'], r['lemma'], sfreq[r['s_id']])) forms[r['lang_id']][r['lemma']] += 1 langs.add(r['lang_id']) for ss in senses: for l in senses[ss]: senses[ss][l].sort(key=lambda x: (-x[2], ### sense freq (freq is good) forms[l][x[1]], ### uniqueness (freq is bad) len(x[1]), ### length (short is good) x[1])) ### lemma (so it is the same) # make the labels label = dd(lambda: dd(str)) lgs=sorted(langs) values=list() for ss in senses: for l in lgs: if senses[ss][l]: label[ss][l]=senses[ss][l][0][1] else: for lx in lgs: ### start with eng and go through till you find one if senses[ss][lx]: label[ss][l]=senses[ss][lx][0][1] break else: label[ss][l]="?????" values.append((ss, l, label[ss][l])) # write the labels (delete old ones first) write_omw("""DELETE FROM label""") blk_write_omw("""INSERT INTO label(ss_id, lang_id, label, u) VALUES (?,?,?,"omw")""", values) return True
def insert_src_meta(src_id, attr, val, u): return write_omw("""INSERT INTO src_meta (src_id, attr, val, u) VALUES (?,?,?,?)""", [src_id, attr, val, u])