专利名称::结构化自然语言查询和知识系统的利记博彩app
技术领域:
:本发明涉及面向对象和对象相关的数据库领域,特别涉及结构化自然语言数据库查询和知识系统。
背景技术:
:相关数据库己广泛应用了许多年。相关数据库把数据编排在包含字段的表中,包含相同字段的两张表互相相关,与"平面文件"法(它把所有数据存在单个文件中)相比,表的相关法更具可塑性。大多数相关数据库系统遵循结构化查询语言(SQL)标准。商业售主生产SQL为基础的数据库系统,例如,Oracle,Sybase,Informix,Progress和MicrosoftAccess。这些系统使用SQL形式査询语言。下面是形式查询的例子,用于显示工资超过IO万美元的雇员的名字和薪金Foreachemployeewhereemployee.salary>100000:Displayemployee.nameemployee,salary.EndOr:Selectname,salaryFromemployeeWhereemployee.salary>100000在上述査询中,"employee"是表的名称,"name"和"Salary"是"employee"表的字段,"Whereemployee.Salary>100000"是条件,也是P艮定,"Displayemployee.nameemployee.salary"禾口"Selectname,salary"是指令。限定是条件或由逻辑连接符连接的一组条件,如"与","或","与非"或"或非"。面向对象的数据库把数据编排成对象,对象可以有属性,它也是对象。对象的递归特性使操作容易。对象能从别的对象继承特征,使更容易根据已有的对象创建新的对象。对象能与一组流程(方法)相联系,来操作其数据。己经作了把相关数据库与面向对象的数据库联合起来以产生对象相关数据库的努力,例如,美国国家标准研究所(ANSI)SQL—99扩展了一般的SQL查询语言,使表和字段可作为对象来操作。典型的ANSISQL一99査询表示为SslsctargumentsFromtypevar,typevarWhereconditionandcondition…andcondition条件是带有用于变量的方法的变元的方法"Select"指令的变元可以是变量、变量的属性或带有其用于变量的变元的方法。用附加的方法,SQL一99的范围比常规SQL的范围更宽。然而,ANSISQL—99仍然有许多限制,如在下面的详细说明,ANSISQL—99只允许"rang"(范围)型变量,不允许"set"(集合),"bag"(元包)或时间变量。变量的范围由其类型(通常是相关表或对象类)确定,且不能是任意的对象集。此外,SQL—99下的条件不允许由方法产生的值,不论是作为其返回值或作为其参数用于其它条件中。还有,不返回逻辑"真"或"假"值的方法不允许成为条件。因此,需要引入更通用和更强有力的对象相关查询语言。常规的相关代数也有重要的限制,在相关代数下,表达式简单地是一种相关,如平面文件或记录集,它的字段是简单值,如整数,浮点数和文本串。此外,"select"(选择)操作的条件限于-1.两个简单值之间比较,例如等于,大于,小于,大于或等于,小于或等于,不等于;2.原语值与电子査询产生的原语值集之间的比较,例如"是成员,""大于所有成员,""大于任何成员,"等等。3.电子查询产生的两组原语值之间比较,例如,"是超集"或"是子集";禾口4.对原语值集的测试,例如"是空集"。此外,方法典型地不允许是相关代数下的表达式。因此,需要引入更通用和更强有力的对象相关代数。常规的数据库使用数据完整性约束和事件触发器,来强化对数据库的规则。但是,这些规则的范围受一般数据库所用查询语言的范围所限制。因而需要知识系统来提供更有力和更可塑的规定规则的方法。最后,在常规相关或对象相关数据库中,缺少偏程技术的用户决不可能编排复杂的数据库查询,必须依赖程序员写的程序来搜索和显示数据。因此用户的选项常常非常有限。因而希望能允许这种用户写自然语言型指令来实时操作相关、面向对象或对象相关数据库。
发明内容为了概括本发明的目的,在这里描述了本发明的某些方面、优点和新颖特征。应了解,无需所有这些方面、优点和特包含在任一特殊的实施例中。本发明提供一种结构化自然语言数据库查询系统,系统包括指令定义模块,允许程序员或用户定义一组由用户在以后选择的定制的指令和对定义的指令定义相应的形式查询文本;条件定义模块,允许程序员或用户定义一组由用户在以后选择的定制的条件和对定义的条件定义相应的形式査询文本;结构化自然语言编排模块,用于提示用户用定义的指令和条件编排结构化自然语言查询;翻译模块,用于把编排的结构化自然语言查询翻译成形式查询文本;査询处理模块,用于在基本数据库上处理翻译的形式査询文本,以从基本数据库返回数据结果,其中,基本数据库是对像收集或相关数据库,并进一步包括对象模式定义模块,允许程序员或用户定义包括非简单对象的对象类,并把定义的对象类与基本相关数据库中的表或一组表相关联。本发明的一个方面涉及计算机实现的编排结构化自然语言数据库査询的方法。用户被提示从一组定义的指令中选择指令,并指定一个或多个用于该指令的变元。被选的指令和变元联合起来形成动词短语。用户也被提示从一组定义的条件中选择零个、一个或更多条件,并对每一选定的条件指定零个、一个或更多变元。每一选定的条件和其指定的参数组合成形容词短语。动词短语和选定的形容词短语组合到结构化自然语言数据库查询中。结构化自然语言查询自动翻译到由形式査询处理模块执行的形式查询文本,分析结构化自然语言査询以识别动词短语和零个、一个或多个形容词短语。在找到相应于通过的动词短语确定的指令査询文本和找到相应于每一通过的形容词短语确定的限定查询文本之后,把找到的查询文本组合到要由查询处理模块处理的被翻译的形式查询文本中。本发明的另一方面涉及由计算机实现的为数据库创建对象相关查询的方法。第一个变量可定义作范围变量,第二个变量可定义作集变量。指令和限定也被定义。定义的指令、限定和变量组合起来,形成对象相关查询。变量也可定义作时间变量或元包变量。本发明的另一方面涉及基于代数表达式,由计算机实现的对象相关查询。查询是依据一个或多个表达式建立的,表达式是对象集。这样,作为输出对象集返回的一般方法是表达式。根据限定从对象集中选择子集的选择操作器也是表达式。因为一般方法的变元可以是对象集,一般方法可被嵌套来产生另一种表达式。本发明的另一方面涉及由计算机实现的,表示成经改进的对象相关査询语言或对象相关代数的处理査询方法,用于相关、对象相关或面向对象的数据库系统。本发明的另一方面涉及由计算机实现的,分组结构化自然语言查询,结构化自然语言规则或査询和规则两者成为宏指令的方法,它同时可用作对别的查询或规则的指令或条件。附图和有关的说明用来说明本发明的实施例,并不限制本发明的范围。图1是结构化自然语言系统的一个例子。图2是定义指令的方法的一个例子。图3是定义条件的方法的一个例子。图4是编排结构化自然语言查询的方法的一个例子。图5是用户界面屏幕的例子,它提示用户或编程员定义对象变量。图6A是用户界面屏幕的例子,它提示用户选择指令。图6B是用户界面屏幕的另一例子,它提示用户选择指令。图7是提示用户选择指令变元和选择指定结果的屏幕例子。图8A是提示用户选择条件的屏幕的例子。图8B是提示用户选择条件的另一屏幕的例子。图9是提示用户对选择的条件指定参数的屏幕例子。图IO是显示编排的査询的屏幕例子。图11是提示用户打印结构化自然语言句子的屏幕例子。图12是显示在结构化自然语言中的规则的屏幕例子。具体实施例方式下列各节描述结构化自然语言查询和知识系统、改进的对象相关査询语言,和对象相关代数,它示出了各种发明的特征。如将认识到的,这些特征中的数多特征可在给定的系统中实现而无需其它系统。例如,结构化自然语言查询系统可连同一般数据平台一起实现,不需要用改进的对象相关査询语言或用对象相关代数来实现。此外,各种发明特征可用不同于这里描述的方法来实现。这样,下列说明只用来说明而不是限制本发明的范围。A.结构化自然语言査询和知识系统图1是结构化自然语言查询和知识系统100的一个实施例。结构化自然语言査询系统100允许没有编程能力的用户以优先实时操作创建结构化自然语言查询来操作数据库。系统100也允许用户把相关数据库变换成面向对象的数据库。结构化自然语言查询可包括动词作为指令和零个、一个或多个形容词短语作为限定。可变的定义短语也可包括在结构化自然语言查询内。词"査询"在这里被广泛定义为不仅包括指令,它选择或显示数据,也包括创建、更新或删除数据的指令。系统100的一个实施例以Java编程。系统100也可用C,0++或其它的语言,操作平台或应用软件包编程。如图1所示,系统100包括动词短语定义模块110和形容词短语定义模块120。动词短语定义模块110允许编程员定义相应于形式査询文本的动词短语,形容词短语定义模块120允许编程员定义相应于形式査询文本的形容词短语。形式查询文本可以是方法、功能、子程序,过程,SQL查询文本,或上述的组合。系统100也包括结构化自然语言编排模块130,它允许用户用定义的动词短语和形容词短语编排结构化自然语言查询。系统100进一步包括翻译模块140,以把结构化自然语言查询变成形式查询文件,和形式査询处理模块150,它处理变换的形式查询文本为从基本数据库160返回査询结果,后者可以是商业数据库系统。系统100也包括可选的对象模式定义模块101。模块101允许用户或程序员定义对象类,包括属性号和对对象类的每一属性类型。如果用于系统100的基本数据库160是相关数据库,对象模式定义模块101允许用户或程序员把对象类与相关数据库中的表联系起来,这样,允许用户或程序员依照对象定义相关数据库表之间的相互关系。例如,程序员或用户可定义类"polygon(多边形)"与相关数据库中的表"POLYGON"相联系。表"POLYGON"包括"VERTICES"歹U,类"polygon"从文本串型的"ID"属性和"顶点集"型的"vertices"属性定义。另一类"vertex"与相关数据库中的表"VERTEX"相联系。类"顶点"以文本串型的"名称"属性,数字型的"X座标"属性,和数字型的"Y座标属性"定义。对象模型定义模块101储存相互关系,它表示"POLYGON"表中"垂直"列的每一单元是"VERTEX"表中行的名称。一组"VERTEX"元组和"POLYGON"元组可作为分层的结构化"多边形"对象类一起处理。于是程序员或用户可定义与"多边形"对象类相关的动词短语和形容词短语。如果在这些表之间没有结构的相互关系,那么,每一表作为独立的对象类处理,以每一相关元组作为没有分层结构的"平面"对象。在任何事件中,用户仍然可以在结构化自然语言中定义动词短语和形容词短语。如果用于系统100的基本数据库是对象相关或面向对象的数据库,那么对象模型定义可简单地从下面的数据库导入。关于结构化自然语言查询,一个例句是Createagroupfromrangelwhosenameis"cc,,(查询Al)Whoarediagnosedtohavedisease"mildAD"andwhorespondtomedication"aericept,,。在上面的査询例中,"Createagroupfromrangelwhosenameis'cc,"是查询的动词短语,"Whoarediagnosedtohavedisease'mildAD,"是查询的形容词短语,"whorespondtomedication'aericept'"是查询的另一形容词短语。在动词短语内,"createagroup"是指令,"fromrange1"是指令的变元,"whosenameis'cc'"是指令操作的结果名。在每一形容词短语内,"Whoarediagnosedtohavedisease"禾口"whorespondtomedication"是条件,"mildAD"禾B"aericept"是条件的参数。查询和知识系统100也可包括结构化自然语言规则编排模块131,规则翻译模块141,和形式规则处理模块151。模块131,141和151联系规则在下面说明。在图1中,每一模块101—151优先用由一个或多个通用计算机执行的软件来实现。一些或全部模块可在规定应用的硬件内,整体或部分交替实现。我们将了解到,这些模块并不需要在同一计算机上运转或驻留。例如,模块101—141可集成在用户端的部件中,它在用户计算机上运转,而形式处理模块150和151可在远地服务器上运转,它提供网络为基础的对数据库的访问。此外,翻译模块140和141可作为服务器端的部件实现,它翻译在网络上从用户收到的自然语言査询和规则。系统100的模块可以以相同的或不同的计算语言,操作平台或应用软件包来实现。图2是计算机实现的定义动词短语的方法的一个例子。在方块210,系统100提示程序员定义指令名称。指令名称是文本串,如"创建组","联合两个组","从两个组中寻找类似的起源","表示组的单元","储存",等等。指令优先以自然语言短语的外形定义,这样容易为没有编程技术的用户所理解。在块220,提示程序员对指令定义变元数目,例如,"创建组"指令典型地有1个参数,"从两个组中寻找相似的起源"指令典型地有2个变元。程序员也可对每一变元定义选择范围,例如,对于病人名的一个变元可以是任何用户输入的文本串,对指定保险人名字的另一变元必须是预先确定的数值表中的值。在方块230,提示程序员定义每一指令变元的数据类型。数据类型可以是原语数据型,如整数,浮点数,日期或文本串,或其它由用户或程序员确定的数据类型。新的数据类型可以定义作给定数据类型的对象集。例如,给定定义的数据类型"顶点",新数据类"顶点集"可这样定义,使"顶点集"数据类型的每一对象是顶点集。从方块230,优先于方块240处理,那里提示程序员创建相应于定义的动词短语的形式查询文本。词"形式查询文本"被广泛地应用于本发明中,以包括查询语言格式的文本,计算机码的集合名(例如方法),功能,过程或子程序,或宏指令名。例如对于条件"(一种基因)类似于(另一种基因)",方法,功能,过程或子程序可以是"VarO.similar(Varl)","VarO"和"Varl"分别代表条件的两个参数。作为另一个例子,对于指令"从两个组中寻找类似的基因"。方法,功能,过程或子程序可以是"find—similar—genes(argumentl,argument2),""argumentl"和"argument2"分别代表指令的两个变元。计算机码的集合存储在程序库(未示出)。如下面所述,宏指令是对查询组、规则组、或一个或多个查询组和一个或多个规则的逻辑单元。示于图2的处理过程可以别的次序来实现,例如,在一个实施例中,程序员首先被提示对要定义的动词短语创建形式查询文本,系统100分析该形式查询文本,并确定对动词短语的变元数和对每一变元的数据类型,然后程序员被提示来定义对动词短语的指令名。图3是计算机实现的定义条件的方法的一个例子。在方块310,系统IOO提示程序员定义条件名,条件名的例子包括"谁要看病"和"谁负责药物"。然后,过程推进到方块320,那里,程序员被提示定义对该条件的参数数目。在方块330,提示程序员定义对每一参数的数据类型,例如文本,整数等等。程序员还被提示定义参数是否是输入参数或输出参数。在方块340,提示程序员创建相应于所定义条件的形式查询文本,例如在查询语言中打印文本,指定宏指令名,或指定计算机码集合名,例如方法名,功能名,过程或子程序名。计算机码集合存入系统程序库中。例如,对于条件"谁要看病",形式查询文本的例子可以是"<argumentl>.diagnosed(<parameter)"或"<argumentl>.diagnosed二<parameter>"。在这一例中,"<argumentl>"代表有关动词短语的指令变元,"<parameter〉"代表要由用户输入的条件参数值。图3的方法可以以别的次序来实现,例如,在一个实施例中,首先提示程序员创建对要定义的条件的形式查询文本,然后系统100分列形式查询文本并确定对该条件的参数数和每一参数的数据类型,然后提示程序员定义条件名。动词短语和形容词短语可定义为对应复杂査询,例如,条件"谁要看所有的病"可定义作包括一组参数,它列出疾病表。用这一条件査询是寻找要看疾病表中各种病的病人。另一条件"谁至少要看一种病"可定义作包括一组参数,它列出疾病表,用这一条件查询是寻找要看疾病表中至少一种病的病人。在另一安排中,只定义条件"谁要看病",并包括只允许一种病名的参数。如果用户要找到有两种病A和B的病人,用户要把两种这样的形容词短语"谁要看A病"和"谁要看B病"联合起来。应注意到,动词短语和形容词短语在一定范围内可互相交换定义和使用,例如附加指定的动词短语"找要看病的病人"可以作为附加的一般动词短语"找病人"和形容词短语"谁要看病"的组合来达到同样目的。如果查询须常由用户来实行,那么优先定义作为动词短语査询,并不需要附加的形容词短语。定义专门的和一般的动词短语两者也是可行的,且允许用户既可使用专门的动词短语,也可使用结合形容词短语的动词短语。在一实施例中,结构化自然语言査询可以以问题的形式创建,例如,"哪些病人要看'mildAD,病和谁负责治疗、ericept,?,"。它等效于查询"显示要看'mildAD,病的病人和谁负责治疗'aericept,"。在以问题形式查询中,"哪些病人"或"哪些病人是"作为动词短语。结构化自然语言查询可以包括变量定义短语。例如,如下面B节中所描述的,如果B节中改进的对象相关査询语言与系统100结合使用,变量定义短语可以是"rangeof<Variable>ispolygon:abc"。它意味着〈Variable〉的值从名为"abc"的对象集合中获得,集合的元素限制于类型"polygon"。可变定义短语可包括一个或多个可变定义。虽然非程序员用户也可定义动词短语和条件,但词"程序员"与图2和图3联系使用,因为创建相应于动词短语或条件的形式査询文本可能并不需要某些编程技术。图4表示编排结构化自然语言査询计算机实现方法的一个例子,在优选例中,查询用B节中描述的改进的对象相关查询语言编排。在方块410,该方法确定变量是否由用户定义。如果要定义变量,则该方法进入方块420,那里,该方法提示用户指定变量定义短语。应理解,变量定义短语,指令和条件无需以任何特殊的次序指定,换句话说,变量定义短语无需在指定指令之前指定,指令无需在指定条件之前指定。图5是屏幕例,它提示用户或程序员指定变量定义短语。如图5所示,在根据下面B节中描述的改进的对象相关查询语言的实施例中,用户或程序员被提示在"对象名"部分510创建对象名。用户或程序员也在"类型"部分520被提示识别创建的对象的变量类型,这些创建的对象是从类型表,如"range","temp","set"和"bag"中选择。用户或程序员被进一步提示识别从"对象表"部分530选择的对象而创建的对象的数据类型,以继承被选对象的数据类型,或从原语数据型的"原语表"部分540选择。用户或编程员被提示在"数据源单元"部分550中指定用于创建的对象的数据源单元。数据源单元是同一类型的对象集。在另一实施例中,使用C节的对象相关代数,方块410—430没有了,用户不被提示定义变量,变量是由程序员预先定义的,用户直接进到方块440。为了说明两种选项,图6A和8A作为屏幕例示出,它并不显示变量的定义,而图6B和8B作为显示变量定义的屏幕例示出。变量定义短语也能根据所选的指令和条件自动产生。在下面B节所述的两个对象类"多边形"和"顶点"中,条件"包含"要求两个多边形作为输入,且如果第一个多边形包含第二个多边形,则返回真值。系统IOO储存规范,它表示"包含"条件要求二个多边形类的输入参数。当条件"包含"由用户选择时,系统100产生变量定义短语,以定义两个作为多边形类范围变量的输入参数。在另一例子中,条件"相交"要求多边形类的两个输入参数和作为两个输入多边形的相交多边形的输出参数。当用户选择"相交"条件时,系统100自动产生变量定义短语,以定义两个输入参数和输出参数。两个输入参数优先定义作范围变量,输出参数优先定义成临时变量。如果输出参数用作另一条件的输入参数,那么,其它条件的输入参数并不需要再定义。在方块440,提示用户从定义的指令表中选择指令。在一个实施例中,提示用户从定义的指令表中选择,它可用于变量定义短语中定义的对象。例如,如果变量定义短语定义变量"多边形",那么用户可从用于"多边形"变量的指令中选择,例如"放大","縮小","旋转","测量面积",等等。图6A和图6B是用户界面屏幕的例子,它提示用户从指令表610选择指令。与图6A相比,图6B包括附加的部分620,它显示定义的变量。定义的变量也显示在句子部分630中。返回参看图4,从方块440,过程推进至方块450,那里提示用户为选择的指令选择一个或多个变元。在方块460,在优先使用C节的对象相关代数的一个例中,用户被提示有选择地指定所选指令的结果名。指令、变元和选择结果名形成动词短语,图7是屏幕例,它提示用户选择指令变元和选择的名字结果。依据对指令定义的变元的数目和类型,可提示用户识别一个或多个变元。如图7所示,在根据C节中所述的对象相关代数的一个实施例中,对指令"创建组",用户被提示从部分710选择数据类型,从部分720选择数据源单元,和在部分730中选择性地命名指令的结果。再回到图4,如果用户要想选择条件,那么过程从方块470推迸到方块480,那里提示用户从定义的条件表中选择条件。在一个实施例中,用户被提示从可用于变量定义短语中定义的对象所定义的条件表中选择,例如,对于变量"多边形",像"包含","相交"和"是方形"这些条件都可用于"多边形"变量。图8A是屏幕例,它提示用户从条件表中选择。定义的动词短语显示在部分810,且作为句子部分830中的结构化自然语言句子的一部分。用户从部分820中的条件表选择条件。图8B是提示用户从条件表中选择的另一屏幕例,与图8A相比,图8B包括附加的部分840,它显示定义的变量。该定义的变量定义短语和动词短语,作为句子部分830中的一部分显示。再回到图4,在方块490,提示用户指定所选条件的参数。在一个实施例中,允许多个条件共享同样的条件名,但有不同的参数数目。图9是提示用户指定所选条件参数数的屏幕例。如图9所示,对于条件"谁被诊断有",用户可在部分910键入疾病名,或从部分920的疾病表中选择。被选的条件和参数形成形容词短语。在一个实施例中,编排模块130自动地在指令变元指定的值、命名结果和条件参数旁加引号。如果该条件有一个或多个输出参数,则用户也可通过定义初始条件的输出参数作为附加条件的输入参数来指定附加的条件。于是,附加条件根据初始条件产生的输出来评估条件。再回到图4,在方块495,提示用户指出是否有更多的条件输入。如果有更多的条件输入,那么过程回到方块480,否则过程进入端块498。如果过程回到方块480来指定另一个形容词短语,那么用户也被提示指定连接器,如"与","或"或"与非",来连接两个形容词短语。如上所述,图5—9是一个实施例的屏幕例,它提示用户从定义的指令和条件表中选择。用户选择图6A和6B中的指令,对图7中的该指令选择变元,选择在图8A或图8B中的条件,对图9中的该条件指定参数。在另一实施例中,用户或程序员也定义图5中的变量。指定的动词短语和形容词短语形成编排的结构化自然语言査询。图IO是屏幕例,它表示在部分1040中编排的结构化自然语言查询句子,包括部分1020中的动词短语和部分1030中的形容词短语。在图10中,査询以强制性句子的优先形式出现。查询也可包括变量定义短语,如示于部分1010和1040的短语"范围1的范围是情况情况"。也可给用户直接键入结构化自然语言査询于系统100中的选择,如图11的句子部分1110所示。有经验的用户可优先这种选择。用户也可使用直接键入和屏幕选择的联合,例如键入他们熟悉的条件或指令并从菜单选择其它条件或指令。然后,编排的査询被送到翻译模块140翻译。翻译模块140分列编排的查询,以识别动词短语,形容词短语和选择的变量定义短语。在优先例中,翻译模块140寻找指示定义的动词短语和形容词短语的关键词。例如,在一个实施例中,所有条件都以词"谁"和"谁的"开头,翻译模块140搜索词"谁"和"谁的",并识别任何表有该开头的这种形容词短语词。但是,如果词"谁"和"谁的"封闭在编排好查询的问号内,那么就要考虑代替这种条件的开头,用参数,命名结果或参数值来代表。翻译模块140也搜索逻辑连接器"与","或","或非"和"与非"。逻辑连接器指示一个形容词短语结束和另一个形容词短语开始。借助于搜索条件标号和逻辑连接器,模块140就能识别形容词短语,与查询的其它内容分开,且与别的形容词短语分开。翻译模块140所定义条件的关键词以识别条件,例如,翻译模块140搜索如"看病"或"负责"这样的关键词,作为识别条件"谁看病"或"谁负责诊断"。翻译模块140也搜索所定义的指令的关键词以识别指令,例如,模块140搜索如"创建组"或"把单元加入组中"的关键词,以识别相应的指令。模块140也可搜索关键词"从",以标记指令参数,和关键词"谁的名字是",以标记命名的结果。如果指令和条件不由用户键入,但从定义的指令和条件表选择,那么分析过程可简化。因为系统IOO把定义的指令和条件与其相应的形式查询文本相联系,相应的形式查询文本可在用户选择指令或条件的同时储存。所存的相应形式査询文本(或它们的识别符)由翻译模块140组合,以形成转换的形式查询文本。另一方面,如果用户用键入代替从表选择输入结构化自然语言查询,那么,分析过程首先识别动词短语和形容词短语,然后组合其相应的形式査询文本。在优先例中,翻译模块140检测在査询中的错误,并自动纠正错误或提议对错误纠正。査询错误可包括拼音错误(例如"diagnosed"误写成"diaghoised"),少字(例女口"whorespondtomedication"输入成"whorespondto"),结构次序出错(例如形容词短语在动词短语前出现),或其它语法错误。翻译模块140纠正这些错误,并把其变成正确的査询。在一个布置中,翻译模块140向用户返回检测的错误和提议的纠正的查询,并要求用户确认纠正的查询是否是用户想要的査询。翻译模块把相应的动词短语的形式査询文本与结构化自然语言查询的形容词短语联合起来,以形成转换的形式査询文本,用户指定的指令参数值和条件参数值结合到转换的形式査询文本中。形式査询处理模块150接收翻译的形式査询文本并在基本数据库上处理该文本以得到结果。基本数据库160可以是相关、面向对象或对象相关。对于相关基本数据库,如果翻译的形式査询文本已经是一个或多个SQL查询,那么形式査询处理模块150直接在基本相关数据库上执行SQL查询。如果翻译的形式查询文本不是SQL查询格式,那么,形式査询处理模块150把翻译的查询文本变成一个或多个变换的SQL查询,并在基本相关数据库上执行翻译的查询。同样,对于对象或对象相关基本数据库,査询处理模块150直接执行翻译的查询文本,或把翻译的查询文本变成一个或多个变换的查询,它能直接在基本数据库上执行。如果査询处理模块150不能直接执行翻译的查询文本和不能变换翻译的查询语境,那么查询处理模块150仍然处理翻译的查询文本,以返回从基本数据库160査询的结果。例如,在一个有相关基本数据库的实施例中,用B节描述的改进的对象相关查询语言,第一变量"t"定义作五个多边形对象的第一数据源单元的范围变量,第二变量"s"定义作三个多边形对象的第二数据源单元的范围变量。对于限定"t和s何处相交",翻译的査询文本"t.intersect(s)"不可能直接在相关基本数据库上执行。查询处理模块150例举两种数据源单元的多边形对象的15种组合来确定哪一种限定是真。除了所有可能组合的平滑估计以外,最佳化方法,如重新布置限定中条件的次序,也可被采用。在一个优先例中,结构化自然语言系统100结合改进的对象相关査询语言(B节中所描述的)工作。例如,图IO中用户创建变量定义短语"范围l的范围是情况情况",来作为B节中改进的查询语言的范围变量定义范围1。第一个"情况情况"中的"情况"代表数据类型,第二个"情况"代表数据源单元。另外,系统IOO提示用户从数据类型表,数据源单元表中选择定义变量作为范围,时间,集或元包变量。但是,结构化自然语言系统100也能与一般相关,面向对象,和对象相关数据库一起工作。改进的对象相关査询语言或对象相关代数将扩大允许査询的范围,但不是对结构化自然语言系统的先决条件。规则也可以结构化自然语言形式编排,并用于系统IOO用于数据集成和其它目的。例如,规则可以以这样的形式来表示"On<event>If<qualification>then<command>",On<event>If<qualification>then<qualifcation2>"。作为医疗应用的计算机系统的一个例子,规则可用来保证输入该系统的病人年龄大于零,如果知道病人对青霉素过敏,就不能用青霉素,两种有相反作用的药物不能用于同一病人,等等。规则的范围可定义作应用于单个对象,一类的所有对象,或所有对象。在一个实施例中,结构化自然语言系统ioo允许用户用指定规则的限制和指令来定义规则。当事件发生时(例如,当病人体温变化时),如果限定(例如,病人体温超过102华氏度)被满足,那么指令(例如,发警告给护士或内科医生)按规则激活。在某些实施例中,事件和限制可交互使用。结构化自然语言查询和结构化自然语言规则典型地用于不同的语境中,例如,系统的全天候监视限定和规则的可选事件,并当满足限定和事件时执行规则的指令。另一方面,查询典型地依据用户指令执行。此外,规贝(J总是以"ifqualification.'.thencommand[elsecommand2〗"或"ifqualification1thenqualification2"的开》式显示,而査询总是以"command[qualification]"的形式显示。但是,因为结构化自然语言规则和结构化自然语言查询每个都包括指令和限定,因而交互使用规则和查询是很方便的。在一个实施例中,用户选择定义的查询作为规则,或选择定义的规则作为查询。图12表示以结构化自然语言句子的形式显示规则的屏幕例。规则包括可选的变量定义短语,动词短语(指令)和一个或多个形容词短语(限定)。规则也可包括一个或多个事件。规则可以有相应于当限定为假时行动的第二动词短语。在图12中,部分1220显示限定"anyofPatientCurrentVisittreatmentsinteract",和部分1230显示指令"displaymessagestring'treatmentcheck:interact'"。部分1210显示形式査询文本,它相应于规则。限定和指令不由用户指定,例如图6A—9的屏幕。一组规则可组成称为"宏指令"的逻辑单元。用户或程序员能指定宏指令内规则之间的相关,使用在标号后的"goto"陈述来调用其它规则。标号识别其它要调用的规则,例如,批准或拒绝借款申请的宏指令可包括下列规则。ifhouse-or-rent="house"thengoto(rule-house);elsegoto(rule-rent);rule-house:ifhouse-value〉500,000andincome>40,000thenreturn(true);elsegoto(rule-house2);mle-house2:ifhouse-value>5,000,000thenreturn(true);elsereturn(false).Rule-rent:ifincome〉60,000thenreturn(tme);elsereturn(false).在上面例中,"goto(mle-house)"代表评估由标号"rule-house"识别的另一规则,"Retum(tme),"代表返回批准借款申请的决策。代替返回"真"或"假"逻辑值,规则也可返回对象或数据源单元(DSE)作为输出。在实际应用中,规则可远比上面的例子复杂得多,宏指令和"goto"允许用户或程序员指定规则间的相互关系。用户或程序员被提示对宏观指令签宏观指令名。此外,规则或看指令也可作为条件或查询中的指令或它一组查询,或一个或多个规则和一个或多个査询的联合也可组合到宏指令中。查询可由标号识别,标号后的"goto"可用来调用其它查询或规则,宏指令可与对象或对象类相连系。类似于编排结构化自然语言查询的状态,用户可以以结构化自然语言形式编排规则,类似于查询句子,规则句子有一个或多个形容词短语,来指定规则限定,动词短语,来指定当限定为真时采取的行动。规则句子可有相应于当限定为假时采取行动的第二动词短语。规则句子还有一个或多个可选事件短语,每个相应于一事件。参考图1,规则编排模型131提示用户选择一个或多个形容词短语作为限定,一个或多个运行短语作为指令,和选择性形容词短语作为事件来编排规则。用户也可以指定规则和/或查询的宏指令,并指定宏指令内规则和/或查询之间的相互关系。规则翻译模块141把规则翻译成形式查询文本。在一个实施例中,规则翻译模块141也能直接把规则转换成系统100的主机编程语言中的功能、过程或子程序,这种语言如Java,C,C++,等等。规则处理模块151评估限定并随后执行相应于限定的指令。此外,模块151监视规则可选事件的发生。B.改进的对象相关查询语言在改进的对象相关查询语言下的查询或规则可表示成如下形式Variabkspecifiervariablespecifiercommand对于变量说明符中定义的每一可能变量值,如果它满足限定,那么执行指令。方括号[]指示限定是可选的。限定包括一个或多个条件(每一条件由方法或宏指令代表)和条件的参数。指令包括方法或宏指令和指令的变元。变元可以是常量或变量。返回布尔真或假值的方法是逻辑法。返回布尔真或假值的宏指令是逻辑宏指令。另外,方法/宏指令被称为通用方法或通用宏指令。方法或宏指令可有一个或多个输入参数或输出参数。如果通用方法/宏指令用作条件,那么该条件一旦被执行就被认为是真,与由方法/宏指令返回的值无关。在最简单情况下,限定由一个带有参数的方法或宏指令组成,该限定可循环建立如下如果oc或p是限定,那么(a和P)是限定。如果a和(3是限定,那么(a和p)是限定。如果a是限定,那么(非a)是限定。(a)Rangeof<variable-id>is<data-type>:<DSE>(b)Tempof<variable-id>is<data-type>(c)Setof<variable-id>is<data-type>:<DSE>(d)Bagof<variable-id>is<data-type>:<DSE>(e)SetTempof<variable-id>is<data-type>(f)BagTempof<variable-id〉is<data-type>上述形式中"Data-type"代表数据值的格式,例如整数,浮点,逻辑,文本,日期,和用户定义的数据格式。"DSE"代表"数据源单元"。数据源单元可以是用户定义的对象,表,类,电子表格文件等集,后者包括一组数据行,其值为集的对象的属性,返回对象集的方法,如上面(c)所示的集变量,如上面(d)所示的元组变量,前面查询的结果,如下面C节详细说明的对象相关表达式,等等。此外,DSE可以是一组结构化数据,例如树,不对称图形(DAG)或半结构化数据集,例如扩展的标志语言(XML)文件。数据类型可以各种方法限于DSE。DSE的子集可作为结合数据类型的另一DSE来形成。例如,假定树"T"有两个称为"人"和"组织"的子集,结合人T可定义"T"的人节点的集合作为新DSE。数据类型也可借助于标签的使用限于XML文本。例如,结合类A(a:整数,b:数据串)于下面的XML文件中,导致A型对象Al的DSE,A型对象的值是(10,"America")。标签<八1>和</Al〉可以不管,因为对象A1可以从属性a和b导出。<ROOT><A〉<A1><a>10</a><b>America</b></Al〉</A></ROOT>此外,数据源单元可动态产生,以包含从一个或多个前面的查询中得到的结果。以上述(a)形式定义的变量是范围变量,以(b)形式定义的变量是临时变量,以(c)形式定义的变量是集变量,以(d)形式定义的变量是元组变量,以(e)形式定义的变量是临时集变量,以(f)形式定义的变量是临时元组变量。范围变量从它有关的DSE中获得其可能的值,元组集变量的值是由有关DSE识别的集,与只含有特殊值(如{1,2,3,4})的集不同,元组可包含重复值,例如{1,2,3,4,1,3}。集变量和元组变量可用来建立范围变量域或临时变量域。集和元组变量也可用于聚集对象以形成需要集或元组作为参数的方法的参数。临时变量典型地用作通用方法的输出变量。临时变量的值在相应于对査询的方法或宏指令评估的同时计算,临时集或元组变量的值是由有关的DSE识别的集,并在相应于对査询的方法或宏指令评估的同时计算。上述形式说明改进的对象相关查询语言的优先语法。其它语法形式也可使用而不背离本发明的精神和范围。例如,在其它语法形式中,变量用下列形式说明<variable-id〉datatype:<data-type>,variabletype:<variable-type>,dse:<DSE>〈variable-type〉指示范围、临时,集、元组,临时集或临时元组变量的变量类型。下面的一些例子更清楚地说明本发明。回到优先语法,数据库例以两类定义,"顶点"和"多边形",多边形对象由标点集定义,顶点对象由两个坐标定义。Classvertex(name:string,x:integer,y:integer)key:nameClasspolygon(name:string,vertices:setofvertex)key:name与类多边形有关,定义两个条件,"相交"和"含有"。"相交"条件取两个多边形作为输入,且如果输入多边形对相互相交,则返回真值。"含有"条件取两个多边形作为输入,且如果第一个多边形含有第二个多边形,则返回真值。下面给出了用改进的对象相关查询语言査询的一些例子。下面的査询从数据源单元abc寻找所有多边形的顶点Rangeoftispolygon:abcRetrieve(t.name,t.vertices)(查询B1)下面的査询从数据源单元abc寻找一个多边形包含另一多边形的所有多边形对Rangeoftispolygon:abcRangeofsispolygon:abcRetrieve(t.name,s.name)Wheret.contains(s)(査询B2)在上述査询中,"Wheret.contains(s)"是限定。对于这一限定,"s"是条件"包含"的参数。下面的査询表示数据源单元abc中包含在多边形C内的所有多边形,且它们与多边形E不相交,其大小超过5:Rangeoftispolygon:abcRangeofsispolygon:abcRangeofrispolygon:abcVaruisfloats.show0(査询B3)Wheretname.叫("C")禾口t.contains(s)禾口r.name.eq("E,,)禾卩(notr.intersect(s))禾卩s.size(u)禾口u.gt(5)。下面的查询表示数据源单元abc与多边形E相交的所有多边形,相交点是一个正方形,其大小超过5,顶点包括一个正方形,其大小超过10:Rangeoftispolygon:abc(查询B4)Rangeofsispolygon:abcSetuisvertexSetwisvertex:s.verticesVaruisfloats.show()Wheret.name.eq("E,,)禾卩s,intersection(t,u,v)禾卩is-square(u)禾卩v.gt(5)禾口.is-suqare(w)禾口w.size(x)禾口x.gt(10)。在上面的査询中,交点是与多边形有关的通用方法。它提取另一个多边形作为输入,并返回交点(一组顶点)和交点的区域作为输出。限定"t.name.eq("E,,)禾Qs.intersection(t,u,v)禾卩is-square(u)禾卩v.gt(5)和.is-suqare(w)和w.size(x)和x.gt(10)"包括由逻辑连接符"and"连接的几种条件。条件"is-sqimre"应用到一组顶点,确定顶点的集合是否形成正方形。改善的对象相关语言在某些方面类似于ANSISQL-99。例如,查询3可写成SQL-99的形式Selects.show()Fromtabc,sabc,rabcWheret,name="C"andr.name="E"andtcontains(s)andnotr.intersect(s)ands.sizeO>5.但是,改进的对象相关语言比ANSISQL—99有许多优点,例如,查询B4在SQL—99中不能重写。与改进的对象相关语言相比,ANSISQL一99只允许"范围"型变量,不允许集,元组,临时,临时集或临时元组变量。在SQL—99下,变量范围是由其"范围"类型确定的,且不能是任意数据源单元。此外,SQL—99下的条件不能产生任何不同于逻辑真或假值的值,所以,通用方法不能用作条件或变元。改进的对象相关语言没有了这些限制。改进的对象相关查询语言可表示成如下形式variablespecifiervariablespecifier[ifqualificationthen]command[elsecommand2].Orvariablespecifiervariablespecifierqualification^在第二种形式中表示的规则"[Onevent][ifqualification1then]qualification等效于第一种形式的规则"[Onevent][ifqualificationthen]command[elsecommand2]"。但是,第二种形式在某些情况对用户更友好,例如,第二种形式的下列规则Ifthepatienthasprescriptionxthenthepatientcannothaveprescriptiony等效于第一种形式的规则Ifthepatienthasprescriptionxandthepatienthasprescriptionythenreport("constraintviolation")可选择地,规则也包括标记,它用来识别规则,一个或多个输入参数和一个或多个输出参数。输入参数是其值用在规则限定中的值。输出参数是其值由规则的指令或条件计算返回的值。在改进的对象相关查询语言中宏指令可表示成如下形式[ObjectType]MacroMacro-Name([parameter],…[parameter])globalVariablespecifierglobalvariablespecifier[labell:]rule/query1;rule/query2;在上述例中,"objecttype"涉及可选返回值的数据类型。"parameter"涉及宏指令的输入或输出参数。"labell"代表标号,它识别规则或査询,"mle/queryl","label2"代表识别规则或査询"rule/query2"的标号。事件可以是附加的新对象,对象的删除或修改,或用户定义的事件。由标号识别的规则或査询可被有"goto"陈述的其它规则或查询调用。C.对象相关代数对象相关代数优先具有如下特点1.DSE是对象相关表达式(此后"表达式"用在C节中)2.表达式是"类型约束"的,如果表达式的所有单元具有同样的非原语型的话。另外它是"无类型"的。无类型表达式代表像平面文件或一组记录的关系,其字段是原语值,如整数,浮点数和文本串。3.如果E是类型的约束表达式,那么ap(E)是约束类型表达式,其中P是限定。操作符(J(称为"选择"操作符)返回E中满足P的结果对象。P可包括与表达式类型有关的条件,与表达式对象的属性有关的条件,或两者。如果E是无类型表达式,那么cjp(E)是无类型表达式,其中P是限定。操作符cj(称为"选择"操作符)作为结果返回E中满足P的对象。4.如果E是表式,那么IIs(E)是无类型表达式,其中S是属性集。操作符II(称为"项目"操作符且来自E的项目)把满足S中指定属性的E对象从每个E对象中移走,并作为结果返回不满足S中指定属性的其它E对象。在极少情况下,IIs(E)可以是类型约束表达式5.如果E和F是表达式,那么EXF是表达式。操作符(卡笛尔乘积)计算集((x,y)lxeE,yeF);EuF是表达式,操作符(合并)计算两表达式的合并;和E—F是表达式,操作符(差)计算两表达式之差。6.如果E是表达式,那么sGA(E)是无类型表达式。操作符G(称为"聚合"操作符)根据S中指定的属性集(其形式为attribute,attribute,……)把E对象聚集起来,并对每一聚集以aggregate-function(attribute)或aggregate-function(object)的形式计算聚集功能集。聚集功能可包括原语功能,如最小,最大,平均,方差,中值,和计数,它可用于一组原语值。聚集功能也能包括由用户或程序员定义的通用功能,它可用于非原语对象组。通用功能是用户或程序员定义的非原语功能,在非原语对象集上操作。例如,用户或程序员可定义"最佳图像"普通功能,来处理视觉图像文件的集合,并作为输出返回有最佳信噪比的视觉图像。当通用功能调来操作时,通用功能典型地调用程序,过程,查询。原语功能的集合,原语和通用功能的集合,或其它通用功能的集合。在极少情况下,sGA(E)可以是类型约束表达式。7.如果f是方法或宏指令,它把DES作为其结果返回,那么f(arguments)是表达式。f(arguments)是否是无类型或类型约束的,由DSE中的单元类型确定。如果DSE的所有单元属于同一类型,且该类型不是原语的,则该表达式是类型约束的;否则是无类型的。一些对象相关表达式的例子与对象类别"病人"和被定义的数据源单元"医院"一起表示于下面。为检索要看轻AD病的医院病人和谁负责治疗"Aericept",调用集Sh51aP1(hospital),wherePl=diagnosed("mildAD")andrespond_to("Aericept,,)(査询C1)为了检索要看中度AD病的医院病人和谁负责治疗"Aericept"调用集S252^(hospital),whereP2=diagnosed("moderateAD,,)andrespond—to("Aericept,,)(查询C2)为了计算S1和S2的和,调用结果S:SSluS2为了求S中男、女性病人的平均年龄genderGavg(age)(S)为了提取S1中病人的基因档案,调用GlGlIIgene隱profile(si)(査询C3)(查询C4)(査询C5)为了提取S2中病人的基因档案,调用G2:G2ngene.profile(S2)(查询C6)为了比较G1和G2,并画出结果Compare_profile_and_plot(G1,G2)(査询G7)查询可以以多种方法联合起来,例如,査询Cl至C4可联合成一种査询,如genderGavg(age)(CTp](h0Spita1))(査i旬C8)与一般的相关代数相比,对象相关代表能操作复杂的对象。在相关代数下,数据源单元是简单的相关,例如平面文件或其字段为原语值的记录。此外,如上面
背景技术:
部分所述,"选择"操作符的条件被限于原语值的简单比较。此外,方法不允许是相关代数下的表达式。最后,一般相关代数下的聚集功能限于像最小、最大、中值、方差、禾B、计数等功能,它只可用于原语值。对象相关代数把这些限制取消,并提供比一般相关代数有效的优点。虽然本发明以某些优先例的形式作为描述,业内人士明白还可有其它的实施例。此外,有其它组合、省略、替代和修改也是明显的。例如,结构化自然语言查询系统100的模块可联合起来或分成或多或少的模块,流程图中的某些行为可平行执行、依次执行或不同次序执行。因此,本发明并不限于所描述的实施例,而取决于权利要求书的内容。下表列出了本系统的一个实施例中某些样本方法。应理解,它不是本发明系统中所需的所有方法,并可以定义附加的方法,系统提供的方法样本逻辑方法<table>tableseeoriginaldocumentpage27</column></row><table><table>tableseeoriginaldocumentpage28</column></row><table><table>tableseeoriginaldocumentpage29</column></row><table><table>tableseeoriginaldocumentpage30</column></row><table><table>tableseeoriginaldocumentpage31</column></row><table><table>tableseeoriginaldocumentpage32</column></row><table><table>tableseeoriginaldocumentpage33</column></row><table>EqualsIgnoreCaseStartsWith缀)(第一变元:数据串另一数据串)(第一变元:数据串后缀)布尔布尔缀为数据串结束把数据串与别的数据串比较确定是否从指定后缀为数据串开始。权利要求1.一种在对象相关查询语言中创建查询的计算机实现方法,方法包括从用户接收非简单对象类型的范围变量;从用户接收与作用在范围变量的第一方法相关的指令;从用户接收与作用在范围变量的第二方法相关的条件;把接收的范围变量、指令和条件组合起来,从而创建对象相关形式查询文本,所述形式查询文本包括至少一个与非简单对象类关联的定制的方法。2.根据权利要求1所述的方法,其特征在于还包括从用户接收临时变量,并使用临时变量创建对象相关形式査询文本。3.根据权利要求1所述的方法,其特征在于还包括从用户接收元组变量,并使用元组变量创建对象相关形式查询文本。4.根据权利要求1所述的方法,其特征在于还包括从用户接收临时集变量,并使用临时集变量创建对象相关形式査询文本。5.根据权利要求1所述的方法,其特征在于还包括从用户接收临时元组变量,并使用临时元组变量创建对象相关形式查询文本。6.根据权利要求1所述的方法,其特征在于还包括从用户接收数据源单元,并使用数据源单元进一步限制变量的值。7.根据权利要求2所述的方法,其特征在于还包括从用户接收一组变量,使用这组变量创建对象相关形式査询文本。8.—种将结构化自然语言句子翻译成形式査询文本的计算机实现方法,方法包括分析结构化自然语言数据库查询句子,识别句子的动词短语和句子的一个或多个形容词短语;识别对象相关形式査询文本作为作用在简单、非简单变量和常量上的第一定制的方法,所述对象相关形式査询文本对应分析的动词短语;识别对象相关形式查询文本作为作用在简单、非简单变量和常量上的第二定制的方法,所述对象相关形式查询文本对应分析的形容词短语;将对应分析的动词短语和分析的形容词短语的对象相关形式查询文本组合成翻译的对象相关形式查询文本。9.一种在对象相关代数中创建查询的计算机实现方法,方法包括提示用户选择一个或多个以前定义的对象相关代数通用方法和/或一个或多个对象相关代数操作符,从包括选择操作符、笛卡尔乘积操作符、项目操作符、聚合操作符、合并操作符、差操作符的组中选择一个或多个操作符;提示用户为选择的一个或多个方法和/或选择的一个或多个操作符从定义的数据源单元的列表中选择一个或多个参数;如果用户选择了所述的选择操作符,则提示用户从至少一组定义的条件中选择一个或多个条件,并提示用户为每个选择的条件指定一个或多个参数;如果用户选择了项目操作符,提示用户为项目的目的从参数数据源单元的属性组中选择一个或多个属性;如果用户选择了聚合操作符,提示用户选择一个或多个属性,以将参数数据源单元的成员分成不同的组,并提示用户为每个组指定一个或多个聚合函数;使用对象相关代数创建具有从用户接收的响应的查询。10.根据权利要求9所述的方法,其特征在于还包括定义査询的结果作为数据源单元。全文摘要一种结构化自然语言查询和知识系统,允许缺乏编程经验的用户输入数据库查询或以结构化语言句子的形式输入规则。句子的范围优先由改进的对象相关查询语言,对象相关代数,或两者来定义。在自然语言形式中出现的条件以相应的形式查询文本定义。用户被提示用定义的指令和条件编排结构化自然语言句子。用户选择的指令及其参数作为结构化自然语言句子的动词短语出现。用户选择的条件及其参数作为形容词短语出现。句子被分列并改变成翻译的形式查询文本,用于数据库查询和规则处理。文档编号G06F17/30GK101493830SQ20091000404公开日2009年7月29日申请日期2004年4月29日优先权日2004年4月29日发明者北泽敦,许承瑜申请人:Nec软件有限公司;必茂股份有限公司