数据查询接口规范

BioEngine生物数据库统一搜索实现规范

生物信息科学数据类型多样,对于数据共享平台而言,既提供了针对数据特色的数据检索方式,也提供了统一检索方式。由于NCBI Entrez的广泛影响力,考虑到用户的接受程度,数据共享平台提供了与NCBI Entrez类似的检索语法,即“keyword1[qualifer1] AND|OR|NOT keyword2[qualifer2] …”,其中keyword是用户输入的希望检索的词语,qualifer是用户在数据库提供的一组可检索字段中选择的特定检索字段,AND|OR|NOT是数据库允许的逻辑操作(与、或、非)。 数据共享平台设计了通用的生物信息数据搜索引擎BioEngine。用户或者程序向数据共享平台递交遵循Entrez语法的查询请求,BioEngine解析查询请求,转换为标准的关系型数据库SQL语句,并且执行实际的数据库查询操作,返回查询结果给用户或者程序。 通过BioEngine系统,各类基础数据资源能够重用该系统,从而节省开发成本。而且由于基础数据资源采用了BioEngine系统,从而大大的降低了异构数据整合的复杂度,为数据共享平台提供的风格一致的数据统一检索方式。

统一用户查询接口的定义

BioEngine提供了与NCBI Entrez类似的统一的检索语法,即“keyword1[qualifer1] AND|OR|NOT keyword2[qualifer2] …”,其中keyword是用户输入的希望检索的词语,qualifer是用户在数据库提供的一组可检索字段中选择的特定检索字段,AND|OR|NOT是数据库允许的逻辑操作(与、或、非)。

BioEngine首先对传入的检索式进行解析,将检索式分成三部分:(1)检索式中的关键词;(2)多关键词联合检索时,各关键词之间的布尔关系;(3)每个关键词的检索域。 BioEngine定义检索域为一个或多个数据库表中字段的集合,每个检索域由一个唯一的限定词标识,它指定关键词在数据库中的检索范围。例如,在检索核酸数据库时,如果用户需要根据文献编号为关键词进行检索,就可以指定输入关键词的检索域为[UID],该检索域包括数据表TB NUC REFERENCE中的两个字段,PMID和MEDLINE,分别记录文献在国际医学生物学文献数据库Pubmed和Medline中的编号。如果用户不在检索时输入限定词,则BioEngine默认限定词为[DEFAULT],[DEFAULT]检索域为数据库开发及需求分析人员通过分析数据库用户的搜索习惯及通常用法,制定的多个字段的集合。一个检索域包含的多个字段,其数据类型可能不尽相同。

接着,BioEngine会按照布尔关系及检索域关系将解析好的检索式重新分组生成新的检索对象。例如,如果用户需要在核酸序列数据库中检索物种(qualifier:[ORGN])为小鼠的序列,要求序列长度(qualifier:[SLEN])为1200或1500,并且序列描述(qualifier:[DESC])含有关键词“LIVER’’。则用户输入BioEngine的检索式如下:“1200[SLEN]OR 1500[SLEN]AND LIVER[DESC]AND MOUSE[ORGN]”。BioEngine将其解析并分组,生成两组新的检索对象{{1500[SLEN] AND LIVER[DESC] AND MOUSE[ORGN]},{1200[SLEN] AND LIVER[DESC] AND MOUSE[ORGN])}。

数据库统一搜索接口定义

BioEngine是综合的生物数据库跨库检索平台,其对于数据库的检索是通过统一的接口实现的,该接口通过XML进行定义,这样就具有良好的可扩展性,通过统一规范的接口定义,可以不断的将新的数据库库增加到统一的检索平台中,下面是该接口定义XML文件的XML Schema:bioEngine_schema.xml

每个配置文件主要包括三部分内容:

(1)tables部分,包括子数据库中主表和其他在检索该子数据库时可能用到的数据表的信息。coreTable指定该数据库检索时的主表,以下每个table描述一张与该数据库有关系的数据表,包括这些表与主表的连接条件,表中所有支持检索的字段,这些字段的数据类型等信息。 coreTable标签中定义了主表的名字。type标签定义了字段的数据类型,这个类型应该与数据库的字段类型保持一致。searchable和displayable与下面的检索域和返回显示的字段displayUnits相对应。operaters标签中定义了检索字段的查询类型,它可以是等值查询”EQ”,也可以是模糊查询“CONTAINS"等。

(2)queryUnits部分,包括该子数据库中定义的检索域和每个检索域包含的字段名。flag指定检索域,queryDefs描述该检索域包含的字段。检索域可能包含mandatory标签,该属性是指检索时可能添加的一些附加的条件,比如检索物种的学名为“Homo sapiens"的记录,则除了要指明TB_TAX_NAMES.NAME_TXT=‘Homo sapiens’的检索条件外,还要指定另外的条件TB_TAX_NAMES.NAME_CLASS=’scientific name’。这里的TB_TAX_NAMES.NAME_CLASS=’scientific name’即作为强制条件在mandatory标签中添加。而布尔类型的special属性若为真,则说明该检索域为特殊检索域,BioEngine会生成相应的特殊检索域语句。pureNumQuery属性若为真,则该字段值可能为数值类型,生成SQL语句时就不会考虑其他类型的情况。

(3)displayUnits部分,包括检索结果应该返回的字段名。

具体的核酸数据库的示例:示例文件