專利名稱:數(shù)據(jù)評估方法及其系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明總體上涉及信息處理技術(shù)領(lǐng)域,特別地,涉及一種數(shù)據(jù)評估方法及其系統(tǒng)。
背景技術(shù):
目前軟件開發(fā)的主流是通過統(tǒng)一建模語言UML (Unified ModelingLanguage)面向?qū)ο蠼?。比如在醫(yī)療領(lǐng)域內(nèi),HL7 (Health Level kven)作為全球醫(yī)療信息標(biāo)準(zhǔn)化組織一直致力于制定醫(yī)療系統(tǒng)的建模標(biāo)準(zhǔn)RIM(Reference Information Model)?;跇?biāo)準(zhǔn)化模型,許多應(yīng)用需要評估表達(dá)式,而對象約束語言0CL(0bject Constraint Language)是一種通用的UML表達(dá)式語言,用來描述UML模型中的約束。比如在醫(yī)療領(lǐng)域內(nèi),HL7制定了臨床指南描述語言GELLO (Guideline Expression Language),用來描述RIM模型中的臨床表達(dá)式。此外,在實際應(yīng)用系統(tǒng)中往往產(chǎn)生大規(guī)模數(shù)據(jù),這些數(shù)據(jù)遵循特定的模式 (schema)存儲在數(shù)據(jù)庫中。根據(jù)數(shù)據(jù)庫的不同類型,這些數(shù)據(jù)可以存成關(guān)系型數(shù)據(jù) (relational data),可擴展標(biāo)識語言 XML(Extensible Markup Language)數(shù)據(jù),資源描述框架RDF (Resource Description Framework)數(shù)據(jù)等。比如在醫(yī)療領(lǐng)域內(nèi),HL7制定了臨床文檔架構(gòu)CDA(Clinical DocumentArchitecture),這是一種指定以交換為目的的臨床文檔結(jié)構(gòu)和語意的文檔標(biāo)記標(biāo)準(zhǔn)。國內(nèi)外許多醫(yī)療機構(gòu)都遵循HL7標(biāo)準(zhǔn),在醫(yī)療應(yīng)用系統(tǒng)中產(chǎn)生了大量的CDA文檔。以國內(nèi)一個典型三甲醫(yī)院為例,門急診大約一年有2萬個CDA文檔, 即平均每天有600個CDA文檔,而住院部有2000個床位,平均每個床位患者有200個CDA 文檔,即共計約40萬CDA文檔。不難想象,百萬數(shù)量級的CDA文檔是司空見慣的。由于對數(shù)據(jù)采用OCL表達(dá)式的評估過程在內(nèi)存中進(jìn)行的,則現(xiàn)有技術(shù)存在的問題在于無法基于描述標(biāo)準(zhǔn)化模型中的OCL表達(dá)式評估如此大規(guī)模數(shù)據(jù),否則往往會造成內(nèi)存的溢出或者評估過程的異常終止。因此需要一種可以運用到大規(guī)模數(shù)據(jù)集的數(shù)據(jù)評估方法或者系統(tǒng)。
發(fā)明內(nèi)容
本發(fā)明提供用于數(shù)據(jù)評估的方法和系統(tǒng)。本發(fā)明一方面提供一種數(shù)據(jù)評估方法,該方法包括接收基于對象約束語言O(shè)CL 表達(dá)式的評估請求;將所述評估請求中至少部分OCL表達(dá)式轉(zhuǎn)換為查詢請求;基于所述查詢請求查詢相關(guān)數(shù)據(jù);以及根據(jù)所述評估請求評估所查詢得到的數(shù)據(jù)。本發(fā)明另一方面提供一種數(shù)據(jù)評估系統(tǒng),該系統(tǒng)包括接收裝置,用于接收基于對象約束語言O(shè)CL表達(dá)式的評估請求;分析器,用于將所述評估請求中至少部分OCL表達(dá)式轉(zhuǎn)換為查詢請求;數(shù)據(jù)查詢引擎,用于基于所述查詢請求查詢相關(guān)數(shù)據(jù);以及OCL引擎,用于根據(jù)所述評估請求評估所查詢得到的數(shù)據(jù)。優(yōu)選地,其中所述將所述評估請求中部分OCL表達(dá)式轉(zhuǎn)換為查詢請求包括將所述OCL表達(dá)式規(guī)整化為規(guī)整化的OCL表達(dá)式;重寫至少部分所述規(guī)整化的OCL表達(dá)式;以及基于轉(zhuǎn)換規(guī)則將重寫的至少部分所述規(guī)整化的OCL表達(dá)式轉(zhuǎn)換為查詢請求。
本發(fā)明能夠在大規(guī)模數(shù)據(jù)集上支持復(fù)雜的OCL表達(dá)式的評估。一方面,本發(fā)明超出一般數(shù)據(jù)查詢的能力,能實現(xiàn)復(fù)雜的OCL表達(dá)式的評估。另一方面,本發(fā)明克服了一般 OCL引擎的不足,能在大規(guī)模數(shù)據(jù)集上支持復(fù)雜的OCL表達(dá)式的評估。
為了對本發(fā)明實施例的特征和優(yōu)點進(jìn)行詳細(xì)說明,將參照以下附圖。如果可能的話,在附圖和描述中使用相同或者類似的參考標(biāo)號以指代相同或者類似的部分。其中圖1示出了本發(fā)明用于數(shù)據(jù)評估的第一具體實施方式
;圖2示出了本發(fā)明用于數(shù)據(jù)評估的第二具體實施方式
;圖3示出了本發(fā)明用于數(shù)據(jù)評估的第三具體實施方式
;圖4示出了本發(fā)明用于數(shù)據(jù)評估的系統(tǒng)框具體實施例方式現(xiàn)在將參考本發(fā)明的示例性實施例進(jìn)行詳細(xì)的描述,在附圖中圖解說明了所述實施例的示例,其中相同的參考數(shù)字始終指示相同的元件。應(yīng)當(dāng)理解,本發(fā)明并不限于所公開的示例實施例。還應(yīng)當(dāng)理解,并非所述方法和設(shè)備的每個特征對于實施任一權(quán)利要求所要求保護(hù)的本發(fā)明都是必要的。此外,在整個公開中,當(dāng)顯示或描述處理或方法時,方法的步驟可以以任何順序或者同時執(zhí)行,除非從上下文中能清楚一個步驟依賴于先執(zhí)行的另一步驟。此外,步驟之間可以有顯著的時間間隔。圖1示出了本發(fā)明用于數(shù)據(jù)評估的第一具體實施方式
。在步驟101中,接收基于對象約束語言O(shè)CL表達(dá)式的評估請求。該評估請求可以由用戶提出,也可以由系統(tǒng)根據(jù)預(yù)設(shè)的OCL表達(dá)式自動地提出。如下給出了一段基于RIM模型的OCL表達(dá)式作為示例1. package RIM2.context Organization self, name = iABC hospital '3. def:allPatients:Set(Patient) = self. scopedRole->select(oclIsTypeOf( Patient)). oclAsType(Patient)4.let:headache:CD = factory. CD( iSNOMED CT,,‘25064002,)5. let:systolicBP_threshold:PQ = factory. PQ(140, ' mmHg')6. let:diastolicBP_threshold:PQ = factory. PQ(90, ‘ mmHg')7 . al lPatients->select (verylmportantPersonCode = 'VIP,andparticipation. act. oclAsType(Observation)->exists(code, imply(headache) and(outboundReIationship, target, value, greaterThan(systolicBP_threshold) oroutboundRelationship. target, value. greaterThan(diastolicBP_threshold))))上述OCL表達(dá)式中的第1個表達(dá)式指明了所遵循的模型是RIM。第2個表達(dá)式指明了該上下文是一個醫(yī)療機構(gòu),即ABC醫(yī)院。第3個表達(dá)式定義了 alll^atients是指該醫(yī)院的所有患者。第4個表達(dá)式申明了 headache是一個概念描述CD (Concept Descriptor), 其定義參考了系統(tǒng)化臨床醫(yī)學(xué)術(shù)語集SN0MEDCT (Systematized Nomenclature of Medicine—Clinical Terms),即頭痛對應(yīng)著 SNOMED CT 的代碼 25064002。第 5 個和第 6 個表達(dá)式分別申明了 systolicBP_threshold 和 diastolicBP_threshold 是物理數(shù)量PQ(PhysicaIQuantity),其定義包括數(shù)量值和數(shù)量單位,即收縮壓閾值為140mmHg,舒張壓閾值為90mmHg。最后一個表達(dá)式是指在所有患者allPatients中選擇VIP患者,并且這些患者有頭痛的癥狀,以及其收縮壓高于閾值HOmmHg或者其舒張壓高于閾值90mmHg。在步驟103中,將所述評估請求中部分OCL表達(dá)式轉(zhuǎn)換為查詢請求。由于存在大量的數(shù)據(jù),直接基于OCL表達(dá)式將這些大量的數(shù)據(jù)載入到內(nèi)存中進(jìn)行評估將會非常困難。正如在背景技術(shù)中所指出的,一般的較大的醫(yī)院有百萬數(shù)量級的關(guān)于患者的 CDA文檔,而上述第三個表達(dá)式就是要求考慮所有這些患者數(shù)據(jù),因此直接將這些百萬數(shù)量級的患者數(shù)據(jù)載入到內(nèi)存進(jìn)行評估是不可行的,也就是說,上述作為示例的OCL表達(dá)式在一般的較大的醫(yī)院的數(shù)據(jù)量下就無法進(jìn)行評估。而本實施例中則另辟蹊徑將部分OCL表達(dá)式轉(zhuǎn)換為查詢請求,通過利用數(shù)據(jù)查詢引擎的檢索能力來克服對OCL表達(dá)式而言被評估的數(shù)據(jù)量過大的問題。本申請將在后面詳細(xì)介紹將OCL表達(dá)式轉(zhuǎn)換為查詢請求的優(yōu)選實施方式。本領(lǐng)域技術(shù)人員基于本申請,也可以利用現(xiàn)有技術(shù)采用各種適用的轉(zhuǎn)換實現(xiàn)方法,例如可以參見文獻(xiàn)[l]Florian Heidenreich, Christian Wende and BirgitDemuth. A Framework for Generating Query Language Code from OCLInvariants. In Proceedings of the Workshop 0cl4All!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,或者文獻(xiàn)[2]Ahmed Gaafar, Sherif Sakr. Towards a Framework for Mapping Between UML/0CL 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。上述轉(zhuǎn)換還可以根據(jù)用戶輸入的數(shù)據(jù)查詢引擎的處理能力特點或者限制來進(jìn)行轉(zhuǎn)換。在步驟105中,基于所述查詢請求查詢相關(guān)數(shù)據(jù)。根據(jù)轉(zhuǎn)換后的查詢請求,可以利用任何適用的現(xiàn)有的數(shù)據(jù)查詢引擎對相關(guān)數(shù)據(jù)進(jìn)行查詢?,F(xiàn)有適用的數(shù)據(jù)查詢引擎包括 XQuery引擎、SQL引擎、SPARQL引擎等等。通過相關(guān)的數(shù)據(jù)查詢引擎就獲得了更有針對性的規(guī)模更小的數(shù)據(jù)(集),比如,通過轉(zhuǎn)換后的查詢請求,就可以查詢出的數(shù)據(jù)集為VIP的患者,這顯然大大地縮小了后續(xù)處理的數(shù)據(jù)規(guī)模。則進(jìn)行到步驟107,根據(jù)所述評估請求評估所查詢得到的數(shù)據(jù)。其中采用基于原來OCL表達(dá)式的評估請求,對所查詢到的數(shù)據(jù)集進(jìn)行評估。由于查詢到的數(shù)據(jù)集的規(guī)模比原來的原始數(shù)據(jù)集已經(jīng)大大地縮小,因此OCL表達(dá)式就可以利用基于內(nèi)存的OCL引擎對載入內(nèi)存的縮小了規(guī)模的數(shù)據(jù)進(jìn)行評估,從而準(zhǔn)確而快速地得到了用戶所需要了解的信息。值得一提的是,有些OCL表達(dá)式具有運算操作,超出了數(shù)據(jù)查詢引擎的能力。例如,物理數(shù)量PQ的大于運算PQ. greaterThan,這不僅是數(shù)量值的大小比較,還包括數(shù)量單位的換算操作。以血壓測量為例,國際單位是千卡帕kpa,而常用單位是毫米汞柱mmHg,其中Ikpa = 7. 5mmHg。這樣,物理數(shù)量PGK20,‘kpa’)經(jīng)過單位換算操作后可知大于物理數(shù)量PQ(140,‘mmHg’)。此外,概念描述⑶的蘊含運算CD. imply還涉及到術(shù)語推理問題。例如,概念描述“偏頭痛”蘊含著概念描述“頭痛”;又如,概念描述“左季肋痛”蘊含著“痛”且發(fā)生部位在“腹部”的“左側(cè)”。對此,OCL引擎可用來評估這些復(fù)雜的 OCL表達(dá)式,其中很多OCL引擎屬于已經(jīng)商用的工具,比較有名的比如Ec 1 ipse MDT/0CL工具(可參見[3]EclipseMDT/OC L. http://www. eclipse, org/modeling/mdt/ ? project =ocl)。比如基于以上的OCL表達(dá)式,在查詢出的數(shù)據(jù)集為VIP的患者中,評估患者有頭痛的癥狀,以及其收縮壓高于閾值HOmmHg或者其舒張壓高于閾值90mmHg。本發(fā)明的上述第一具體實施方式
能夠在大規(guī)模數(shù)據(jù)集上支持復(fù)雜的OCL表達(dá)式的評估。一方面,本發(fā)明超出一般數(shù)據(jù)查詢的能力,能實現(xiàn)復(fù)雜的OCL表達(dá)式的評估。另一方面,本發(fā)明克服了一般OCL 引擎的不足,能在大規(guī)模數(shù)據(jù)集上支持復(fù)雜的OCL表達(dá)式的評估。由此可見,本發(fā)明另辟蹊徑地解決了現(xiàn)有技術(shù)無法解決的問題,具有顯著的技術(shù)效果。圖2示出了本發(fā)明用于數(shù)據(jù)評估的第二具體實施方式
,更具體地,其示出了上述步驟103的優(yōu)選實施方式。其中在步驟201中,將所述OCL表達(dá)式規(guī)整化為規(guī)整化的OCL 表達(dá)式。該規(guī)整化過程是根據(jù)OCL的巴克斯-諾爾BNF (Backus-Naur Form)范式而文法解析所輸入的OCL表達(dá)式,使得規(guī)整化后的OCL表達(dá)式滿足如下兩個規(guī)整化要求其一,所有條件表達(dá)式都是合取范式。這是考慮到在下一步重寫表達(dá)式過程中,相比于析取范式, 合取范式能更有效的賦值給相關(guān)的條件表達(dá)式子句;其二,所有操作數(shù)都不允許迭代定義。 這通過引入臨時變量名使得每一個操作數(shù)有且僅有四種可能的形式1.臨時變量名;2.關(guān)聯(lián)操作數(shù);3.集合操作數(shù);4.函數(shù)操作數(shù)。對于OCL的巴克斯-諾爾BNF(Backus-Naur Form)范式的詳細(xì)規(guī)范可參見OMG OCL specification. http://www. omg. org/technology/ documents/modeling_spec_catalog. htm#0CL。如下是輸入的 OCL 表達(dá)式所遵循的 BNF 析取范式的示例片段1. Expression: = ConditionalExpression2. ConditionalExpression: = OrExpression3. OrExpression: = ConditionalAndExpression(<OR>ConditionalAndExpress ion)水4.ConditionalAndExpression: = ComparisonExpression(<AND>ComparisonEx pression)水5. ComparisonExpression: = AddExpression (<EQUAL>AddExpression|<NEQ>Ad dExpression|<LT>AddExpression|<LEQ>AddExpression|<GT>AddExpression|<GEQ>AddEx pression)水6. AddExpression = MultiplyExpression (<MINUS>MultiplyExpression|<PLU S>MultipIyExpression)氺7. MultiplyExpression:: = UnaryExpression(<TIMES>UnaryExpression|<DIVI DE>UnaryExpression|<MAX>UnaryExpression|<MIN>UnaryExpression|<INTDIV>UnaryExp ression|<MOD>UnaryExpre s s i on)氺8. UnaryExpression:: = PrimaryExpression|<NOT>UnaryExpression|<MINUS>U naryExpression|<PLUS>UnaryExpression9. PrimaryExpression:: = Literal|Operand|ReferenceToInstance|“ (" Expr ession")"10. ReferenceToInstance:: =〈FACTORY〉· ClassName(ParameterList)11. Operand:: = <ID>I Operand" .〃 <ID>|Operand" —〃 CollectionBody |0p erand" (〃 ParameterList)〃 |〈SELF〉12. CollectionBody:: = NonParamExp|SingleObjExp|ListObjExp|GetExp|SetE
6xpI IterateExp|JoinExp|SelectionExp|QuantifierExp13. SelectionExp: =<SELECT>" (〃 CExp" )〃 |<REJECT>〃(〃 CExp “ )〃 <C0 LLECT>〃(〃 CExp 〃)〃14. QuantifierExp = <F0RALL>" (〃 CExp 〃)〃 |〈EXISTS〉〃(〃 CExp 〃)〃15. CExp = ConditionalExpression而規(guī)整化后的OCL表達(dá)式滿足規(guī)整化要求,即要求規(guī)整化后的OCL表達(dá)式遵循下面的BNF合取范式示例片段。具體而言,輸入的規(guī)整前的OCL條件表達(dá)式 ConditionalExpression是析取范式OrExpression,而輸出的規(guī)整化后的OCL條件表達(dá)式 ConditionalExpression 是合取范式 AndExpression。此夕卜,輸入的 OCL 操作數(shù) Operand 是可以迭代定義的,如Operand: = Operand" ." <ID>,而規(guī)整化后的OCL操作數(shù)Operand 是不可以迭代定義的。事實上,通過引入臨時變量名tempID使得需規(guī)整的OCL操作數(shù)Operand有且僅有四種可能,其一是一個臨時變量名tempID,其二是一個關(guān)聯(lián)操作數(shù) temp ID" .〃 <ID>,其三是一個集合操作數(shù)tempID 〃一 〃 CollectionBody,其四是一個函數(shù)操作數(shù) tempID" ·〃 funcID" (〃 ParameterList")〃。1. ConditionalExpression = AndExpression2. AndExpression: = ConditionalOrExpression(<AND>ConditionalOrExpress ion) *3. ConditionalOrExpression = ComparisonExpression(<OR>ComparisonExpr ession)*4. Operand: = tempID | tempID" . “ <ID> | tempID" ―〃 CollectionBodytempID" ." funcID" (〃 ParameterList")〃5. tempID: : = <SELF> | <ID>6. funcID:: = <oclIsTypeOf>|<oclAsType>|<imply>|<greaterThan>|<ID>7. CExp: : = AndExpression8. AndExpression:: = ConditionalOrExpression(<AND>)*9. OrExpression:: = ConditionalAndExpression(<OR>ConditionalAndExpress ion) *10. ConditionalAndExpression:: = ComparisonExpression(<AND>ComparisonE xpression)氺以最初開始的OCL表達(dá)式為例,經(jīng)過規(guī)整后就成為如下的-方便后續(xù)處理
-個一個的OCL單句以
deftempiSet(Role) = self. scopedRole
defcondl1Boolean = tempi. oclIsTypeOf(Patient)
def:temp2: Set(Role) = templ_>select(condl1)
def:temp3:Set(Patient) = temp2. oclAsType(Patient)
def: temp 31: String = temp3. veryImportantPersonCodedef:cond 31:Boolean = temp31 == iVIP'
def: temp 32: Set (Participation) = temp3. participation def:temp33: Set(Act) = temp32. act
deftemp34:Set(Observation) = temp33. oclAsType(Observation)def :temp35:CD = temp34. codedef:cond35: Boolean = temp35. imply (headache)def:temp36: Set (ActRelationship) = temp34. outboundRelationshipdef:temp37: Set(Observation) = temp36. targetdef :temp38:PQ = temp37. valuedef: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中,重寫至少部分所述規(guī)整化的OCL表達(dá)式。該重寫過程主要是考慮到具有運算操作的OCL表達(dá)式超出了數(shù)據(jù)查詢引擎的能力。例如,上述OCL表達(dá)式中COnd35 涉及概念描述CD的蘊含運算,即概念描述temp35是否蘊含著概念描述“頭痛”。又如,上述OCL表達(dá)式中C0nd381或C0nd382涉及物理數(shù)量PQ的大于運算,即物理數(shù)量temp38是否大于物理數(shù)量“收縮壓的閾值”,或物理數(shù)量temp38是否大于物理數(shù)量“舒張壓的閾值”。 這里,大于運算不僅是數(shù)量值的大小比較,還包括數(shù)量單位的換算操作,比如,物理數(shù)量 PQ(20, ‘kpa’ )經(jīng)過單位換算操作后可知大于物理數(shù)量PQ(140,‘mmHg’)。不難發(fā)現(xiàn),上述這些具有運算操作的OCL表達(dá)式超出了數(shù)據(jù)查詢引擎的能力。因此,重寫器將輸入的OCL表達(dá)式重寫后,使得輸出的OCL表達(dá)式都能轉(zhuǎn)換為數(shù)據(jù)查詢引擎能處理的表達(dá)式。具體而言, 對于任一 OCL操作數(shù)tempIDl,如果tempIDl的定義涉及到運算操作,即超出了數(shù)據(jù)查詢引擎的能力,型如tempID2. funcID(ParameterList)其中funcID是運算操作符,則采取以下處理方式1)如果tempIDl是布爾表達(dá)式,那么將其重寫為真值TRUE。即,如果有定義 def: tempIDl: Boo lean = tempID2. funcID (ParameterList),那么將其重寫為定義 deftempIDlBoolean = TRUE2)否則,刪除關(guān)于tempIDl及其他使用了 tempIDl定義的操作數(shù)的定義, 并用tempID2代替所有這些被刪除的操作數(shù)。即,關(guān)于tempIDl,tempIDl. <ID>, tempIDl ^ CollectionBody, tempIDl. funcID (ParameterList)的定義(包括迭代定義)將被全部刪除,并用tempID2代替所有這些被刪除的操作數(shù)。比如說,如下定義了三個時間類型TS和一個物理數(shù)量,首先aWeek是指一星期,其次t2是取上述temp34的有效時間,而tl 是在t2的基礎(chǔ)上加上aWeek,即tl指的是t2的一星期后,最后tO是取tl的時區(qū),并將tO 返回。根據(jù)tl的定義,即t2.plUS(aWeek),其中plus是關(guān)于時間的加法運算,超出了數(shù)據(jù)查詢引擎的能力,那么刪除關(guān)于tl以其使用了 tl定義的操作數(shù)tO,并用t2代替tO作為結(jié)果返回。這樣,我們雖然沒有得到最初想要的tO值,但我們使得輸出的OCL表達(dá)式都能轉(zhuǎn)換為數(shù)據(jù)查詢引擎能處理的表達(dá)式,而最后OCL引擎將提供對最初所有OCL表達(dá)式的評估, 從而有效的得到想要的正確結(jié)果。letaWeek:TS = factory. TS(1,' week')def:t2:TS = temp34. effectiveTimedef:tl:TS = t2. plus (aWeek)
def :tO:PQ = tl. timezonet0以上處理方式為優(yōu)選方式,不應(yīng)該對本申請的保護(hù)范圍構(gòu)成限制。本領(lǐng)域技術(shù)人員當(dāng)然也可以基于本申請,采用其它適用的處理方法。經(jīng)過上述重寫步驟后,示例的上述 OCL的表達(dá)式被重寫為deftempi:Set(Role) = self. scopedRoledefcondl1Boolean = tempi. oclIsTypeOf(Patient)def:temp2:Set(Role) = templ~>select(condll)def:temp3: Set(Patient) = temp2. oclAsType(Patient)def: temp 31:StrinR = temp3. veryImportantPersonCodedef :cond31 :Boolean = temp31 == ‘VIP def:temp32: Set(Participation) = temp3. participationdef :temp33:Set(Act) = temp32. actdef:temp34: Set(Observation) = temp33. oclAsType(Observation)
def:temp35: CD = temp34. codedef:cond35:Boolean = temp35. imply(headache)def:temp36: Set (ActRelationship) = temp34. outboundRelationshipdef:temp37:Set(Observation) = temp36. targetdef:temp38:PQ = temp37. valuedef: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,tempi和condll。這樣,經(jīng)過重寫后,(對數(shù)據(jù)查詢引擎)有效的OCL表達(dá)式就只剩上述加下劃線的語句。在步驟205中,基于轉(zhuǎn)換規(guī)則將重寫的至少部分所述規(guī)整化的OCL表達(dá)式轉(zhuǎn)換為查詢請求。具體而言,需要根據(jù)待評估的數(shù)據(jù)的存儲結(jié)構(gòu)制定轉(zhuǎn)換規(guī)則。例如,如果待評估的數(shù)據(jù)是存儲在可擴展標(biāo)識語言XML (Extensible MarkupLanguage)數(shù)據(jù)庫,則根據(jù)表1所示的OCL表達(dá)式與XQuery表達(dá)式之間的語言對應(yīng)元素的映射關(guān)系,將經(jīng)過規(guī)整化的OCL表達(dá)式轉(zhuǎn)換為基于XQuery表達(dá)式的查詢請求。這些映射關(guān)系是示例性,本領(lǐng)域技術(shù)人員也可以基于本申請,擴展或改善這些映射關(guān)系,例如參考上述文獻(xiàn)[1]、[2]。表權(quán)利要求
1.一種數(shù)據(jù)評估方法,包括接收基于對象約束語言O(shè)CL表達(dá)式的評估請求; 將所述評估請求中至少部分OCL表達(dá)式轉(zhuǎn)換為查詢請求; 基于所述查詢請求查詢相關(guān)數(shù)據(jù);以及根據(jù)所述評估請求評估所查詢得到的數(shù)據(jù)。
2.如權(quán)利要求1所述的方法,其中所述將所述評估請求中部分OCL表達(dá)式轉(zhuǎn)換為查詢請求包括將所述OCL表達(dá)式規(guī)整化為規(guī)整化的OCL表達(dá)式; 重寫至少部分所述規(guī)整化的OCL表達(dá)式;以及基于轉(zhuǎn)換規(guī)則將重寫的至少部分所述規(guī)整化的OCL表達(dá)式轉(zhuǎn)換為查詢請求。
3.如權(quán)利要求2所述的方法,其中所述OCL表達(dá)式符合巴克斯-諾爾BNF范式,所述規(guī)整化的OCL表達(dá)式的所有條件表達(dá)式都是合取范式,以及所述規(guī)整化的OCL表達(dá)式的所有操作數(shù)不存在迭代定義。
4.如權(quán)利要求2所述的方法,其中所述重寫部分所述規(guī)整化的OCL表達(dá)式包括從所述規(guī)整化的OCL表達(dá)式中去除超出數(shù)據(jù)查詢引擎的能力的OCL表達(dá)式。
5.如權(quán)利要求4所述的方法,其中超出數(shù)據(jù)查詢引擎的能力的OCL表達(dá)式涉及運算操作,所述從部分所述規(guī)整化的OCL表達(dá)式中去除超出數(shù)據(jù)查詢引擎的能力的OCL表達(dá)式包括如果所述規(guī)整化的OCL表達(dá)式為布爾表達(dá)式,則將其重寫為真值TRUE ;否則刪除該OCL 表達(dá)式的定義以及那些使用了該表達(dá)式定義的其它表達(dá)式的定義,并用該OCL表達(dá)式的操作數(shù)代替這些被刪除的表達(dá)式。
6.如權(quán)利要求2所述的方法,其中所述轉(zhuǎn)換規(guī)則為OCL語言元素與查詢語言的對應(yīng)元素之間的映射關(guān)系。
7.如權(quán)利要求3所述的方法,還包括引入臨時變量使得所述規(guī)整化的OCL表達(dá)式的所有操作數(shù)不存在迭代定義。
8.如權(quán)利要求1所述的方法,其中所述查詢請求為基于XQuery的查詢請求。
9.如權(quán)利要求1所述的方法,其中所述OCL表達(dá)式為GELL0,所述數(shù)據(jù)為XML數(shù)據(jù)或者關(guān)系型數(shù)據(jù)中任一種類型。
10.一種數(shù)據(jù)評估系統(tǒng),該系統(tǒng)包括接收裝置,用于接收基于對象約束語言O(shè)CL表達(dá)式的評估請求; 分析器,用于將所述評估請求中至少部分OCL表達(dá)式轉(zhuǎn)換為查詢請求; 數(shù)據(jù)查詢引擎,用于基于所述查詢請求查詢相關(guān)數(shù)據(jù);以及 OCL引擎,用于根據(jù)所述評估請求評估所查詢得到的數(shù)據(jù)。
11.如權(quán)利要求10所述的系統(tǒng),還包括用于執(zhí)行如權(quán)利要求2-9任一項所述的方法中的各個步驟的裝置。
全文摘要
本發(fā)明提供一種數(shù)據(jù)評估方法及其系統(tǒng),其中該方法包括接收基于對象約束語言O(shè)CL表達(dá)式的評估請求;將所述評估請求中至少部分OCL表達(dá)式轉(zhuǎn)換為查詢請求;基于所述查詢請求查詢相關(guān)數(shù)據(jù);以及根據(jù)所述評估請求評估所查詢得到的數(shù)據(jù)。本發(fā)明能夠在大規(guī)模數(shù)據(jù)集上支持復(fù)雜的OCL表達(dá)式的評估。
文檔編號G06F17/30GK102262631SQ20101018858
公開日2011年11月30日 申請日期2010年5月31日 優(yōu)先權(quán)日2010年5月31日
發(fā)明者劉升平, 劉海峰, 李含予, 梅婧, 謝國彤 申請人:國際商業(yè)機器公司