import json import os from consts.consts import LANGUAGE_EN, LANGUAGE_CN from utils.logging import logging script_dir = os.path.dirname(os.path.realpath(__file__)) def get_domain_info(db_name: str) -> dict: """ Get build-in domain knowledge. Parameters: db_name: The name of db, eg: lengjing """ if not db_name: logging.info("Get build-in domain knowledge failed, db name is empty") return {} path = os.path.join(script_dir, "{}.json".format(db_name+"_v2")) domain_infos = {} try: with open(path) as f: domain_infos = json.load(f) except FileNotFoundError: logging.info("Get build-in domain knowledge failed, the build-in domian knowledge is not existed, db_name = %s, path = %s", db_name, path) return domain_infos def get_domain_term_description(db_name: str, language=LANGUAGE_EN, is_format_result=True): domain_infos = get_domain_info(db_name) key_value = "term_description" if language == LANGUAGE_CN: key_value = "term_description_cn" terms_dic = domain_infos.get(key_value, {}) logging.info("Get build-in term description. db_name = %s, terms_dic = %s", db_name, json.dumps(terms_dic, ensure_ascii=False)) if not is_format_result or len(terms_dic) == 0: return terms_dic domain_list = ["%(key)s: %(value)s"%{"key": key, "value": value} for key, value in terms_dic.items()] return """%s"""%("\n".join(domain_list)) def get_domain_column_description(db_name: str, language=LANGUAGE_EN, is_format_result=True): domain_infos = get_domain_info(db_name) key_value = "column_description" if language == LANGUAGE_CN: key_value = "column_description_cn" terms_dic = domain_infos.get(key_value, {}) logging.info("Get build-in term description. db_name = %s, terms_dic = %s", db_name, json.dumps(terms_dic, ensure_ascii=False)) if len(terms_dic) == 0: return "" if not is_format_result: return terms_dic domain_list = ["%(key)s: %(value)s"%{"key": key, "value": value} for key, value in terms_dic.items()] return """%s"""%("\n".join(domain_list)) def get_domain_db_summary(db_name: str, language=LANGUAGE_EN) -> str: domain_infos = get_domain_info(db_name) key_value = "db_summary" if language == LANGUAGE_CN: key_value = "db_summary_cn" return domain_infos.get(key_value, "") def get_domain_entity(db_name: str, language=LANGUAGE_EN): domain_infos = get_domain_info(db_name) return domain_infos.get("core_entity", {})