CN102262631B - 数据评估方法及其系统 - Google Patents
数据评估方法及其系统 Download PDFInfo
- Publication number
- CN102262631B CN102262631B CN201010188587.5A CN201010188587A CN102262631B CN 102262631 B CN102262631 B CN 102262631B CN 201010188587 A CN201010188587 A CN 201010188587A CN 102262631 B CN102262631 B CN 102262631B
- Authority
- CN
- China
- Prior art keywords
- expression formula
- ocl
- data
- regularization
- ocl expression
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24564—Applying rules; Deductive queries
- G06F16/24565—Triggers; Constraints
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种数据评估方法及其系统,其中该方法包括:接收基于对象约束语言OCL表达式的评估请求;将所述评估请求中至少部分OCL表达式转换为查询请求;基于所述查询请求查询相关数据;以及根据所述评估请求评估所查询得到的数据。本发明能够在大规模数据集上支持复杂的OCL表达式的评估。
Description
技术领域
本发明总体上涉及信息处理技术领域,特别地,涉及一种数据评估方法及其系统。
背景技术
目前软件开发的主流是通过统一建模语言UML(Unified ModelingLanguage)面向对象建模。比如在医疗领域内,HL7(Health Level Seven)作为全球医疗信息标准化组织一直致力于制定医疗系统的建模标准RIM(Reference Information Model)。基于标准化模型,许多应用需要评估表达式,而对象约束语言OCL(Object Constraint Language)是一种通用的UML表达式语言,用来描述UML模型中的约束。比如在医疗领域内,HL7制定了临床指南描述语言GELLO(Guideline Expression Language),用来描述RIM模型中的临床表达式。
此外,在实际应用系统中往往产生大规模数据,这些数据遵循特定的模式(schema)存储在数据库中。根据数据库的不同类型,这些数据可以存成关系型数据(relational data),可扩展标识语言XML(Extensible Markup Language)数据,资源描述框架RDF(Resource Description Framework)数据等。比如在医疗领域内,HL7制定了临床文档架构CDA(Clinical DocumentArchitecture),这是一种指定以交换为目的的临床文档结构和语意的文档标记标准。国内外许多医疗机构都遵循HL7标准,在医疗应用系统中产生了大量的CDA文档。以国内一个典型三甲医院为例,门急诊大约一年有2万个CDA文档,即平均每天有600个CDA文档,而住院部有2000个床位,平均每个床位患者有200个CDA文档,即共计约40万CDA文档。不难想象,百万数量级的CDA文档是司空见惯的。由于对数据采用OCL表达式的评估过程在内存中进行的,则现有技术存在的问题在于无法基于描述标准化模型中的OCL表达式评估如此大规模数据,否则往往会造成内存的溢出或者评估过程的异常终止。因此需要一种可以运用到大规模数据集的数据评估方法或者系统。
发明内容
本发明提供用于数据评估的方法和系统。
本发明一方面提供一种数据评估方法,该方法包括:接收基于对象约束语言OCL表达式的评估请求;将所述评估请求中至少部分OCL表达式转换为查询请求;基于所述查询请求查询相关数据;以及根据所述评估请求评估所查询得到的数据。
本发明另一方面提供一种数据评估系统,该系统包括:接收装置,用于接收基于对象约束语言OCL表达式的评估请求;分析器,用于将所述评估请求中至少部分OCL表达式转换为查询请求;数据查询引擎,用于基于所述查询请求查询相关数据;以及OCL引擎,用于根据所述评估请求评估所查询得到的数据。
优选地,其中所述将所述评估请求中部分OCL表达式转换为查询请求包括:将所述OCL表达式规整化为规整化的OCL表达式;重写至少部分所述规整化的OCL表达式;以及基于转换规则将重写的至少部分所述规整化的OCL表达式转换为查询请求。
本发明能够在大规模数据集上支持复杂的OCL表达式的评估。一方面,本发明超出一般数据查询的能力,能实现复杂的OCL表达式的评估。另一方面,本发明克服了一般OCL引擎的不足,能在大规模数据集上支持复杂的OCL表达式的评估。
附图说明
为了对本发明实施例的特征和优点进行详细说明,将参照以下附图。如果可能的话,在附图和描述中使用相同或者类似的参考标号以指代相同或者类似的部分。其中:
图1示出了本发明用于数据评估的第一具体实施方式;
图2示出了本发明用于数据评估的第二具体实施方式;
图3示出了本发明用于数据评估的第三具体实施方式;
图4示出了本发明用于数据评估的系统框图;
具体实施方式
现在将参考本发明的示例性实施例进行详细的描述,在附图中图解说明了所述实施例的示例,其中相同的参考数字始终指示相同的元件。应当理解,本发明并不限于所公开的示例实施例。还应当理解,并非所述方法和设备的每个特征对于实施任一权利要求所要求保护的本发明都是必要的。此外,在整个公开中,当显示或描述处理或方法时,方法的步骤可以以任何顺序或者同时执行,除非从上下文中能清楚一个步骤依赖于先执行的另一步骤。此外,步骤之间可以有显著的时间间隔。
图1示出了本发明用于数据评估的第一具体实施方式。在步骤101中,接收基于对象约束语言OCL表达式的评估请求。该评估请求可以由用户提出,也可以由系统根据预设的OCL表达式自动地提出。如下给出了一段基于RIM模型的OCL表达式作为示例:
1.package RIM
2.context Organization self.name=‘ABC hospital‘
3.def:allPatients:Set(Patient)=self.scopedRole->select(oclIsTypeOf(Patient)).oclAsType(Patient)
4.let:headache:CD=factory.CD(‘SNOMED CT’,‘25064002’)
5.let:systolicBP_threshold:PQ=factory.PQ(140,′mmHg′)
6.let:diastolicBP_threshold:PQ=factory.PQ(90,′mmHg′)
7.allPatients->select(veryImportantPersonCode=‘VIP’andparticipation.act.oclAsType(Observation)->exists(code.imply(headache)and(outboundRelationship.target.value.greaterThan(systolicBP_threshold)oroutboundRelationship.target.value.greaterThan(diastolicBP_threshold))))
上述OCL表达式中的第1个表达式指明了所遵循的模型是RIM。第2个表达式指明了该上下文是一个医疗机构,即ABC医院。第3个表达式定义了allPatients是指该医院的所有患者。第4个表达式申明了headache是一个概念描述CD(Concept Descriptor),其定义参考了系统化临床医学术语集SNOMEDCT(Systematized Nomenclature of Medicine--Clinical Terms),即头痛对应着SNOMED CT的代码25064002。第5个和第6个表达式分别申明了systolicBP_threshold和diastolicBP_threshold是物理数量PQ(PhysicalQuantity),其定义包括数量值和数量单位,即收缩压阈值为140mmHg,舒张压阈值为90mmHg。最后一个表达式是指在所有患者allPatients中选择VIP患者,并且这些患者有头痛的症状,以及其收缩压高于阈值140mmHg或者其舒张压高于阈值90mmHg。
在步骤103中,将所述评估请求中部分OCL表达式转换为查询请求。由于存在大量的数据,直接基于OCL表达式将这些大量的数据载入到内存中进行评估将会非常困难。正如在背景技术中所指出的,一般的较大的医院有百万数量级的关于患者的CDA文档,而上述第三个表达式就是要求考虑所有这些患者数据,因此直接将这些百万数量级的患者数据载入到内存进行评估是不可行的,也就是说,上述作为示例的OCL表达式在一般的较大的医院的数据量下就无法进行评估。而本实施例中则另辟蹊径将部分OCL表达式转换为查询请求,通过利用数据查询引擎的检索能力来克服对OCL表达式而言被评估的数据量过大的问题。本申请将在后面详细介绍将OCL表达式转换为查询请求的优选实施方式。本领域技术人员基于本申请,也可以利用现有技术采用各种适用的转换实现方法,例如可以参见文献[1]Florian Heidenreich,Christian Wende and BirgitDemuth.A Framework for Generating Query Language Code from OCLInvariants.In Proceedings of the Workshop Ocl4All:Modelling Systemswith OCL co-located with the 10th International Conference on ModelDriven Engineering Languages and Systems(MoDELS 2007),Nashville,Tennessee,October 2007.ECEASST,Volume 9,或者文献[2]Ahmed Gaafar,Sherif Sakr.Towards a Framework for Mapping Between UML/OCL andXML/XQuery.In Proceedings of the Unified Modelling Language:ModellingLanguages and Applications,7th International Conference,Lisbon,Portugal,October 11-15,2004.UML 2004,pp.241-259。上述转换还可以根据用户输入的数据查询引擎的处理能力特点或者限制来进行转换。
在步骤105中,基于所述查询请求查询相关数据。根据转换后的查询请求,可以利用任何适用的现有的数据查询引擎对相关数据进行查询。现有适用的数据查询引擎包括XQuery引擎、SQL引擎、SPARQL引擎等等。通过相关的数据查询引擎就获得了更有针对性的规模更小的数据(集),比如,通过转换后的查询请求,就可以查询出的数据集为VIP的患者,这显然大大地缩小了后续处理的数据规模。则进行到步骤107,根据所述评估请求评估所查询得到的数据。其中采用基于原来OCL表达式的评估请求,对所查询到的数据集进行评估。由于查询到的数据集的规模比原来的原始数据集已经大大地缩小,因此OCL表达式就可以利用基于内存的OCL引擎对载入内存的缩小了规模的数据进行评估,从而准确而快速地得到了用户所需要了解的信息。值得一提的是,有些OCL表达式具有运算操作,超出了数据查询引擎的能力。例如,物理数量PQ的大于运算PQ.greaterThan,这不仅是数量值的大小比较,还包括数量单位的换算操作。以血压测量为例,国际单位是千卡帕kpa,而常用单位是毫米汞柱mmHg,其中1kpa=7.5mmHg。这样,物理数量PQ(20,‘kpa’)经过单位换算操作后可知大于物理数量PQ(140,‘mmHg’)。此外,概念描述CD的蕴含运算CD.imply还涉及到术语推理问题。例如,概念描述“偏头痛”蕴含着概念描述“头痛”;又如,概念描述“左季肋痛”蕴含着“痛”且发生部位在“腹部”的“左侧”。对此,OCL引擎可用来评估这些复杂的OCL表达式,其中很多OCL引擎属于已经商用的工具,比较有名的比如Eclipse MDT/OCL工具(可参见[3]EclipseMDT/OC L.http://www.eclipse.org/modeling/mdt/?project=ocl)。比如基于以上的OCL表达式,在查询出的数据集为VIP的患者中,评估患者有头痛的症状,以及其收缩压高于阈值140mmHg或者其舒张压高于阈值90mmHg。本发明的上述第一具体实施方式能够在大规模数据集上支持复杂的OCL表达式的评估。一方面,本发明超出一般数据查询的能力,能实现复杂的OCL表达式的评估。另一方面,本发明克服了一般OCL引擎的不足,能在大规模数据集上支持复杂的OCL表达式的评估。由此可见,本发明另辟蹊径地解决了现有技术无法解决的问题,具有显著的技术效果。
图2示出了本发明用于数据评估的第二具体实施方式,更具体地,其示出了上述步骤103的优选实施方式。其中在步骤201中,将所述OCL表达式规整化为规整化的OCL表达式。该规整化过程是根据OCL的巴克斯-诺尔BNF(Backus-Naur Form)范式而文法解析所输入的OCL表达式,使得规整化后的OCL表达式满足如下两个规整化要求:其一,所有条件表达式都是合取范式。这是考虑到在下一步重写表达式过程中,相比于析取范式,合取范式能更有效的赋值给相关的条件表达式子句;其二,所有操作数都不允许迭代定义。这通过引入临时变量名使得每一个操作数有且仅有四种可能的形式:1.临时变量名;2.关联操作数;3.集合操作数;4.函数操作数。对于OCL的巴克斯-诺尔BNF(Backus-Naur Form)范式的详细规范可参见OMG OCL specification.http://www.omg.org/technology/documents/modeling_spec_catalog.htm#OCL。如下是输入的OCL表达式所遵循的BNF析取范式的示例片段:
1.Expression::=ConditionalExpression
2.ConditionalExpression::=OrExpression
3.OrExpression::=ConditionalAndExpression(<OR>ConditionalAndExpression)*
4.ConditionalAndExpression::=ComparisonExpression(<AND>ComparisonExpression)*
5.ComparisonExpression::=AddExpression(<EQUAL>AddExpression|<NEQ>AddExpression|<LT>AddExpression|<LEQ>AddExpression|<GT>AddExpression|<GEQ>AddExpression)*
6.AddExpression::=MultiplyExpression(<MINUS>MultiplyExpression|<PLUS>MultiplyExpression)*
7.MultiplyExpression::=UnaryExpression(<TIMES>UnaryExpression|<DIVIDE>UnaryExpression|<MAX>UnaryExpression|<MIN>UnaryExpression|<INTDIV>UnaryExpression|<MOD>UnaryExpression)*
8.UnaryExpression::=PrimaryExpression|<NOT>UnaryExpression|<MINUS>UnaryExpression|<PLUS>UnaryExpression
9.PrimaryExpression::=Literal|Operand|ReferenceToInstance|″(″Expression″)″
10.ReferenceToInstance::=<FACTORY>.ClassName(ParameterList)
11.Operand::=<ID>|Operand″.″<ID>|Operand″→″CollectionBody |Operand″(″ParameterList″)″|<SELF>
12.CollectionBody::=NonParamExp|SingleObjExp|ListObjExp|GetExp|SetExp|IterateExp|JoinExp|SelectionExp|QuantifierExp
13.SelectionExp::=<SELECT>″(″CExp″)″|<REJECT>″(″CExp″)″|<COLLECT>″(″CExp″)″
14.QuantifierExp::=<FORALL>″(″CExp″)″|<EXISTS>″(″CExp″)″
15.CExp::=ConditionalExpression
而规整化后的OCL表达式满足规整化要求,即要求规整化后的OCL表达式遵循下面的BNF合取范式示例片段。具体而言,输入的规整前的OCL条件表达式ConditionalExpression是析取范式OrExpression,而输出的规整化后的OCL条件表达式ConditionalExpression是合取范式AndExpression。此外,输入的OCL操作数Operand是可以迭代定义的,如Operand::=Operand″.″<ID>,而规整化后的OCL操作数Operand是不可以迭代定义的。事实上,通过引入临时变量名tempID使得需规整的OCL操作数Operand有且仅有四种可能,其一是一个临时变量名tempID,其二是一个关联操作数tempID″.″<ID>,其三是一个集合操作数tempID″→″CollectionBody,其四是一个函数操作数tempID″.″funcID″(″ParameterList″)″。
1.ConditionalExpression::=AndExpression
2.AndExpression::=ConditionalOrExpression(<AND>ConditionalOrExpression)*
3.ConditionalOrExpression::=ComparisonExpression(<OR>ComparisonExpression)*
4.Operand::=tempID|tempID″.″<ID>|tempID″→″CollectionBody|
t empID″.″funcID″(″ParameterList″)″
5.tempID::=<SELF>|<ID>
6.funcID::=<oclIsTypeOf>|<oclAsType>|<imply>|<greaterThan>|<ID>
7.CExp::=AndExpression
8.AndExpression::=ConditionalOrExpression(<AND>)*
9.OrExpression::=ConditionalAndExpression(<OR>ConditionalAndExpression)*
10.ConditionalAndExpression::=ComparisonExpression(<AND>ComparisonExpression)*
以最初开始的OCL表达式为例,经过规整后就成为如下的一个一个的OCL单句以方便后续处理:
def:temp1:Set(Role)=self.scopedRole
def:cond11:Boolean=temp1.oclIsTypeOf(Patient)
def:temp2:Set(Role)=temp1->select(cond11)
def:temp3:Set(Patient)=temp2.oclAsType(Patient)
def:temp 31:String=temp3.veryImportantPersonCode
def:cond 31:Boolean=temp31==‘VIP’
def:temp 32:Set(Participation)=temp3.participation
def:temp33:Set(Act)=temp32.act
def:temp34:Set(Observation)=temp33.oclAsType(Observation)
def:temp35:CD=temp34.code
def:cond35:Boolean=temp35.imply(headache)
def:temp36:Set(ActRelationship)=temp34.outboundRelationship
def:temp37:Set(Observation)=temp36.target
def:temp38:PQ=temp37.value
def:cond381:Boolean=temp38.greaterThan(systolicBP_threshold)
def:cond382:Boolean=temp38.greaterThan(diastolicBP_threshold)
def:cond32:Boolean=temp35->exists(cond35 and(cond381 orcond382))
temp3->select(cond31 and cond32)
在步骤203中,重写至少部分所述规整化的OCL表达式。该重写过程主要是考虑到具有运算操作的OCL表达式超出了数据查询引擎的能力。例如,上述OCL表达式中cond35涉及概念描述CD的蕴含运算,即概念描述temp35是否蕴含着概念描述“头痛”。又如,上述OCL表达式中cond381或cond382涉及物理数量PQ的大于运算,即物理数量temp38是否大于物理数量“收缩压的阈值”,或物理数量temp38是否大于物理数量“舒张压的阈值”。这里,大于运算不仅是数量值的大小比较,还包括数量单位的换算操作,比如,物理数量PQ(20,‘kpa’)经过单位换算操作后可知大于物理数量PQ(140,‘mmHg’)。不难发现,上述这些具有运算操作的OCL表达式超出了数据查询引擎的能力。因此,重写器将输入的OCL表达式重写后,使得输出的OCL表达式都能转换为数据查询引擎能处理的表达式。具体而言,对于任一OCL操作数tempID1,如果tempID1的定义涉及到运算操作,即超出了数据查询引擎的能力,型如tempID2.funcID(ParameterList)其中funcID是运算操作符,则采取以下处理方式:
1)如果tempID1是布尔表达式,那么将其重写为真值TRUE。即,如果有定义def:tempID1:Boolean=tempID2.funcID(ParameterList),那么将其重写为定义def:tempID1:Boolean=TRUE
2)否则,删除关于tempID1及其他使用了tempID1定义的操作数的定义,并用tempID2代替所有这些被删除的操作数。即,关于tempID1,tempID1.<ID>,tempID1→CollectionBody,tempID1.funcID(ParameterList)的定义(包括迭代定义)将被全部删除,并用tempID2代替所有这些被删除的操作数。比如说,如下定义了三个时间类型TS和一个物理数量,首先aWeek是指一星期,其次t2是取上述temp34的有效时间,而t1是在t2的基础上加上aWeek,即t1指的是t2的一星期后,最后t0是取t1的时区,并将t0返回。根据t1的定义,即t2.plus(aWeek),其中plus是关于时间的加法运算,超出了数据查询引擎的能力,那么删除关于t1以其使用了t1定义的操作数t0,并用t2代替t0作为结果返回。这样,我们虽然没有得到最初想要的t0值,但我们使得输出的OCL表达式都能转换为数据查询引擎能处理的表达式,而最后OCL引擎将提供对最初所有OCL表达式的评估,从而有效的得到想要的正确结果。
let:aWeek:TS=factory.TS(1,′week′)
def:t2:TS=temp34.effectiveTime
def:t1:TS=t2.plus(aWeek)
def:t0:PQ=t1.timezone
t0
以上处理方式为优选方式,不应该对本申请的保护范围构成限制。本领域技术人员当然也可以基于本申请,采用其它适用的处理方法。经过上述重写步骤后,示例的上述OCL的表达式被重写为:
def:temp1:Set(Role)=self.scopedRole
def:cond11:Boolean=temp1.oclIsTypeOf(Patient)
def:temp2:Set(Role)=temp1->select(cond11)
def:temp3:Set(Patient)=temp2.oclAsType(Patient)
def:temp 31:String=temp3.veryImportantPersonCode
def:cond31:Boolean=temp31==‘VIP’
def:temp32:Set(Participation)=temp3.participation
def:temp33:Set(Act)=temp32.act
def:temp34:Set(Observation)=temp33.oclAsType(Observation)
def:temp35:CD=temp34.code
def:cond35:Boolean=temp35.imply(headache)
def:temp36:Set(ActRelationship)=temp34.outboundRelationship
def:temp37:Set(Observation)=temp36.target
def:temp38:PQ=temp37.value
def:cond381:Boolean=temp38.greaterThan(systolicBP_threshold)
def:cond 382:Boolean=temp38.greaterThan(diastolicBP_threshold)
def:cond 32:Boolean=temp35->exists(TRUE and(TRUE or TRUE))
temp3->select(cond31 and TRUE)
从后往前来看,最后要从temp3中选择满足条件cond31的,因此只需要temp3和cond31的定义,而这两者的定义依次涉及temp31,temp2,temp1和cond11。这样,经过重写后,(对数据查询引擎)有效的OCL表达式就只剩上述加下划线的语句。
在步骤205中,基于转换规则将重写的至少部分所述规整化的OCL表达式转换为查询请求。具体而言,需要根据待评估的数据的存储结构制定转换规则。例如,如果待评估的数据是存储在可扩展标识语言XML(Extensible MarkupLanguage)数据库,则根据表1所示的OCL表达式与XQuery表达式之间的语言对应元素的映射关系,将经过规整化的OCL表达式转换为基于XQuery表达式的查询请求。这些映射关系是示例性,本领域技术人员也可以基于本申请,扩展或改善这些映射关系,例如参考上述文献[1]、[2]。
表1
上述有效的OCL表达式基于上述OCL-XQuery的映射关系进行转换后就获得如下XQuery的表达式:
xquery
for$self in db2-fn:sqlquery(′select doc from RIM where org.name=ABChospital′)/organization
let$temp1:=$self/scopedRole
let$temp2:=$temp1[xsi:type=‘Patient’]
let$temp3:=$temp2
let$temp31:=$temp3/veryImportantPersonCode
let$cond31:=$temp31=‘VIP’
return
if$cond31
then return $temp3
else()
而如果待评估的数据是存储在关系型数据库,则根据表2所示的OCL表达式与SQL之间的语言对应元素的映射关系,将经过规整化的OCL表达式转换为基于SQL(Structured Query Language)表达式的查询请求。同上,这些映射关系是示例性,本领域技术人员也可以基于本申请,扩展或改善这些映射关系,例如参考上述文献[1]、[2]。为节省篇幅,这里略去上述有效的OCL表达式基于上述OCL-SQL的映射关系进行转换后就获得的SQL表达式。上述XQuery和SQL表达式仅仅是示例。本领域技术人员当然可以基于本申请得到任何其他形式的转换表达式。
表2
图3示出了本发明用于数据评估的第三具体实施方式。这里给出用于评估数据的系统300以及具体的操作流程。首先由用户提出或者由系统300根据预设的OCL表达式自动地提出基于OCL表达式的评估请求。则在箭头1所示的步骤中,从所述评估请求中获得OCL表达式,所述OCL表达式被送至分析器301中,所述分析器301包括规整器(Normalizer)302、重写器(Rewriter)303和转换器(Transformer)305。所述OCL表达式经过规整器(Normalizer)302,输出规整化的OCL表达式,将规整化的OCL表达式输入重写器(Rewriter)303,输出重写后的OCL表达式,以及将重写后的OCL表达式输入转换器(Transformer)305,输出对目标数据库309的查询表达式,例如基于XQuery表达式的查询请求。上述规整器、重写器和转换器的功能实现与已经在前面进行了详细的阐述的相应方法类似,在此将不赘述。进行到如箭头2所示的步骤中,将查询表达式交给数据查询引擎对目标数据库309进行检索,例如XQuery引擎。优选地,所述数据库以及数据符合数据模型(即UML模型)和数据模式(例如关系型数据模式或XML数据模式)的相关规范。在如箭头3、4所示的步骤中,数据查询引擎在目标数据库中检索到数据310,可以将该数据310载入到OCL引擎311可以使用的内存中,以便后续评估。在如箭头5所示的步骤中,用户或者系统提交的OCL表达式被送至OCL引擎311,由OCL引擎311如箭头6所示评估数据310。最后将评估得到的结果形成报告或者直接呈现给用户。
图4示出了本发明用于数据评估的系统400的示意性框图。系统400包括接收装置401、分析器301、数据查询引擎405和OCL引擎311。其中所述接收装置401用于接收基于对象约束语言OCL表达式的评估请求;所述分析器301用于将所述评估请求中至少部分OCL表达式转换为查询请求;所述数据查询引擎405用于基于所述查询请求查询相关数据;以及所述OCL引擎311根据所述评估请求评估所查询得到的数据。其中上述相关系统和装置所涉及的方法已经在上面进行了详细的解释,在此不再赘述。
优选地,所述分析器301还包括:用于将所述OCL表达式进行规整化的装置;用于重写至少部分所述规整化的OCL表达式的装置;以及用于基于转换规则将重写的至少部分所述规整化的OCL表达式转换为查询请求的装置。
优选地,其中所述OCL表达式符合BNF范式,所述规整化的OCL表达式的所有条件表达式都是合取范式,以及所述规整化的OCL表达式的所有操作数不存在迭代定义。
优选地,所述用于重写至少部分所述规整化的OCL表达式的装置包括用于从OCL表达式中去除超出数据查询引擎的能力的OCL表达式的装置。
优选地,其中超出数据查询引擎的能力的OCL表达式涉及运算操作,所述用于从OCL表达式中去除超出数据查询引擎的能力的OCL表达式的装置包括:用于如果OCL表达式为布尔表达式,则将其重写为真值TRUE,否则删除该OCL表达式的定义以及那些使用了该表达式定义的其它表达式的定义,并用该OCL表达式的操作数代替这些被删除的表达式的装置。
优选地,其中所述转换规则为OCL语言与查询语言之间的映射关系,所述用于基于转换规则将重写的至少部分所述规整化的OCL表达式转换为查询请求的装置包括:用于基于所述映射关系,将所述重写的部分所述规整化的OCL表达式转换为查询请求的装置。
优选地,还包括用于引入临时变量使得所述规整化的OCL表达式的所有操作数不存在迭代定义的装置。
优选地,其中所述分析器301包括用于将所述评估请求中部分OCL表达式转换为基于数据查询语言的查询请求的装置。
优选地,其中所述数据为关系型数据或者可扩展标识语言XML(ExtensibleMarkup Language)数据或者资源描述框架RDF(Resource DescriptionFramework)数据中任一种类型。
另外,根据本发明的用于评估数据的方法还可以通过计算机程序产品来实施,该计算机程序产品包括用于当在计算机上运行所述计算机程序产品时执行以实施本发明的仿真方法的软件代码部分。
还可以通过在计算机可读记录介质中记录一计算机程序来实施本发明,该计算机程序包括用于当在计算机上运行所述计算机程序时执行以实施根据本发明的仿真方法的软件代码部分。即,根据本发明的仿真方法的过程能够以计算机可读介质中的指令的形式和各种其它形式分发,而不管实际用来执行分发的信号承载介质的特定类型。计算机可读介质的例子包括诸如EPROM、ROM、磁带、纸、软盘、硬盘驱动器、RAM和CD-ROM的介质以及诸如数字和模拟通信链路的传输型介质。
尽管参考本发明的优选实施例具体展示和描述了本发明,但是本领域一般技术人员应该明白,在不脱离所附权利要求限定的本发明的精神和范围的情况下,可以对其进行形式和细节上的各种修改。
Claims (12)
1.一种数据评估方法,包括:
接收基于对象约束语言OCL表达式的评估请求;
将所述评估请求中至少部分OCL表达式转换为查询请求;
基于所述查询请求查询相关数据;以及
根据所述评估请求评估所查询得到的数据,
其中所述将所述评估请求中至少部分OCL表达式转换为查询请求包括:
将所述OCL表达式规整化为规整化的OCL表达式;
重写至少部分所述规整化的OCL表达式;以及
基于转换规则将重写的至少部分所述规整化的OCL表达式转换为查询请求,其中所述重写部分所述规整化的OCL表达式包括从部分所述规整化的OCL表达式中去除超出数据查询引擎的能力的OCL表达式,
其中超出数据查询引擎的能力的OCL表达式涉及运算操作,所述从部分所述规整化的OCL表达式中去除超出数据查询引擎的能力的OCL表达式包括:如果所述规整化的OCL表达式为布尔表达式,则将其重写为真值TRUE;否则删除该OCL表达式的定义以及那些使用了该表达式定义的其它表达式的定义,并用该OCL表达式的操作数代替这些被删除的表达式。
2.如权利要求1所述的方法,其中所述OCL表达式符合巴克斯-诺尔BNF范式,所述规整化的OCL表达式的所有条件表达式都是合取范式,以及所述规整化的OCL表达式的所有操作数不存在迭代定义。
3.如权利要求1所述的方法,其中所述转换规则为OCL语言元素与查询语言的对应元素之间的映射关系。
4.如权利要求2所述的方法,还包括引入临时变量使得所述规整化的OCL表达式的所有操作数不存在迭代定义。
5.如权利要求1所述的方法,其中所述查询请求为基于XQuery的查询请求。
6.如权利要求1所述的方法,其中所述OCL表达式为GELLO,所述数据为XML数据或者关系型数据中任一种类型。
7.一种数据评估系统,包括:
用于接收基于对象约束语言OCL表达式的评估请求的装置;
用于将所述评估请求中至少部分OCL表达式转换为查询请求的装置;
用于基于所述查询请求查询相关数据的装置;以及
用于根据所述评估请求评估所查询得到的数据的装置,
其中所述用于将所述评估请求中部分OCL表达式转换为查询请求的装置包括:
用于将所述OCL表达式规整化为规整化的OCL表达式的装置;
用于重写至少部分所述规整化的OCL表达式的装置;以及
用于基于转换规则将重写的至少部分所述规整化的OCL表达式转换为查询请求的装置,
其中所述用于重写至少部分所述规整化的OCL表达式的装置包括用于从部分所述规整化的OCL表达式中去除超出数据查询引擎的能力的OCL表达式的装置,
其中超出数据查询引擎的能力的OCL表达式涉及运算操作,所述用于从部分所述规整化的OCL表达式中去除超出数据查询引擎的能力的OCL表达式的装置包括:
用于如果所述规整化的OCL表达式为布尔表达式,则将其重写为真值TRUE;否则删除该OCL表达式的定义以及那些使用了该表达式定义的其它表达式的定义,并用该OCL表达式的操作数代替这些被删除的表达式的装置。
8.如权利要求7所述的系统,其中所述OCL表达式符合巴克斯-诺尔BNF范式,所述规整化的OCL表达式的所有条件表达式都是合取范式,以及所述规整化的OCL表达式的所有操作数不存在迭代定义。
9.如权利要求7所述的系统,其中所述转换规则为OCL语言元素与查询语言的对应元素之间的映射关系。
10.如权利要求8所述的系统,还包括用于引入临时变量使得所述规整化的OCL表达式的所有操作数不存在迭代定义的装置。
11.如权利要求7所述的系统,其中所述查询请求为基于XQuery的查询请求。
12.如权利要求7所述的系统,其中所述OCL表达式为GELLO,所述数据为XML数据或者关系型数据中任一种类型。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010188587.5A CN102262631B (zh) | 2010-05-31 | 2010-05-31 | 数据评估方法及其系统 |
US13/116,331 US8639711B2 (en) | 2010-05-31 | 2011-05-26 | Method and system for evaluating data |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010188587.5A CN102262631B (zh) | 2010-05-31 | 2010-05-31 | 数据评估方法及其系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102262631A CN102262631A (zh) | 2011-11-30 |
CN102262631B true CN102262631B (zh) | 2014-03-26 |
Family
ID=45009261
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010188587.5A Expired - Fee Related CN102262631B (zh) | 2010-05-31 | 2010-05-31 | 数据评估方法及其系统 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8639711B2 (zh) |
CN (1) | CN102262631B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9043290B2 (en) * | 2013-01-14 | 2015-05-26 | International Business Machines Corporation | Rewriting relational expressions for different type systems |
US20140280282A1 (en) * | 2013-03-14 | 2014-09-18 | Cray Inc. | Interface between sparql systems and a non-sparql system |
US9442968B2 (en) * | 2014-03-31 | 2016-09-13 | Sap Se | Evaluation of variant configuration using in-memory technology |
US10304007B2 (en) * | 2015-12-08 | 2019-05-28 | International Business Machines Corporation | Using a plurality of heterogeneous decision engines to produce a single decision |
CN107194890B (zh) | 2017-05-18 | 2020-07-28 | 上海兆芯集成电路有限公司 | 使用多分辨率改善图像质量的方法及装置 |
CN110096257B (zh) * | 2019-04-10 | 2023-04-07 | 沈阳哲航信息科技有限公司 | 一种基于智能识别的设计图形自动化评判系统及方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1997995A (zh) * | 2004-06-23 | 2007-07-11 | 甲骨文国际公司 | 使用转换有效评估查询 |
CN101241491A (zh) * | 2007-02-05 | 2008-08-13 | 中兴通讯股份有限公司 | 一种检查数据的方法和系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7333981B2 (en) | 2004-12-17 | 2008-02-19 | International Business Machines Corporation | Transformation of a physical query into an abstract query |
WO2007061430A1 (en) | 2005-11-22 | 2007-05-31 | Bea Systems, Inc. | System and method for translating sql queries into xml query language |
-
2010
- 2010-05-31 CN CN201010188587.5A patent/CN102262631B/zh not_active Expired - Fee Related
-
2011
- 2011-05-26 US US13/116,331 patent/US8639711B2/en not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1997995A (zh) * | 2004-06-23 | 2007-07-11 | 甲骨文国际公司 | 使用转换有效评估查询 |
CN101241491A (zh) * | 2007-02-05 | 2008-08-13 | 中兴通讯股份有限公司 | 一种检查数据的方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
US8639711B2 (en) | 2014-01-28 |
CN102262631A (zh) | 2011-11-30 |
US20110295906A1 (en) | 2011-12-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102262631B (zh) | 数据评估方法及其系统 | |
US7149752B2 (en) | Method for simplifying databinding in application programs | |
CA2602618A1 (en) | Enterprise software system having multidimensional xbrl engine | |
US11688490B2 (en) | Method and module for linking data of a data source to a target database | |
KR20080019439A (ko) | Dbms 기반 지식 확장 및 추론 서비스 시스템 및 그방법 | |
JP2020501267A (ja) | 電子医療レコードからの自動的な知識ベースの特徴抽出 | |
US8219540B2 (en) | Information viewing stem | |
JP2012511767A (ja) | オントロジーから関係データベースを作成するための方法及びモジュール | |
US10360232B2 (en) | Semantic mapping of data from an entity-relationship model to a graph-based data format to facilitate simplified querying | |
Stravoskoufos et al. | SOWL QL: Querying spatio-temporal ontologies in OWL | |
Belghiat et al. | An approach based AToM3 for the generation of OWL ontologies from UML diagrams | |
US9183294B2 (en) | Meta-data approach to querying multiple biomedical ontologies | |
Jafarpour et al. | Exploiting OWL reasoning services to execute ontologically-modeled clinical practice guidelines | |
US20230004574A1 (en) | A system and method for etl pipeline processing | |
Uskenbayeva et al. | Technology of integration of diverse databases on the example of medical records | |
Panawong et al. | An Automatic Database Generation and Ontology Mapping from OWL File. | |
Nikkilä et al. | Spatial inference with an interchangeable rule format | |
Mohanamuraly et al. | Seeding and adjoining zero-halo partitioned parallel scientific codes | |
Analyti et al. | A survey on models and query languages for temporally annotated RDF | |
US11422782B1 (en) | Transforming logic programming language code into structured query language code | |
Sakizloglou et al. | Keeping Pace with the History of Evolving Runtime Models | |
US20160224644A1 (en) | Method of formalizing temporal aspects in events of an electronic patient record | |
Sarnikar et al. | A context-specific mediating schema approach for information exchange between heterogeneous hospital systems | |
Avanavadi | A Mediating Schema Approach to the Data Transfer between Heterogeneous Health Care Systems | |
Wijsen et al. | On query optimization in a temporal SPC algebra |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20140326 |
|
CF01 | Termination of patent right due to non-payment of annual fee |